diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..e3697f7 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,11 @@ +.git +.gitignore +node_modules +frontend/node_modules +frontend/dist +frontend/.vite +npm-debug.log* +docker-compose*.yml +README.md +design-qa.md +docs \ No newline at end of file diff --git a/.gitignore b/.gitignore index 36b13f1..afaf213 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,10 @@ __pycache__/ build/ develop-eggs/ dist/ +!frontend/dist/ +!frontend/dist/** +node_modules/ +*.tsbuildinfo downloads/ eggs/ .eggs/ @@ -37,6 +41,15 @@ MANIFEST pip-log.txt pip-delete-this-directory.txt +# Runtime data and logs +runtime/ +backend/runtime/ +logs/ +backend/logs/ +*.db +*.sqlite +*.sqlite3 + # Unit test / coverage reports htmlcov/ .tox/ diff --git a/README.md b/README.md index 31084b3..df42faa 100644 --- a/README.md +++ b/README.md @@ -1,133 +1,162 @@ -# YG_FT +# YG_FT 模型微调平台 -远光微调平台 - 面向大语言模型的微调、评测、推理与对比一体化前端。 +YG_FT 是一个面向企业治理场景的模型微调平台,覆盖用户中心、多租户、项目隔离、数据集管理、模型管理、训练任务、评测、推理、审批流、审计留存、算力调度和训练引擎适配。 -## 技术栈 +当前前端已有基础页面,后端与算力平台已按多人协作开发方式建立工程骨架,并开始实现正式系统主链路能力。当前代码和 SQL 均作为后续生产演进基线维护,不再以一次性演示或静态 Mock 为开发准则。 -| 类别 | 技术 | 版本 | -|------|------|------| -| 框架 | Vue 3 | ^3.5.13 | -| 语言 | TypeScript | ~5.7.2 | -| 构建工具 | Vite | ^6.0.7 | -| 路由 | Vue Router | ^4.5.0 | -| 状态管理 | Pinia | ^2.3.0 | -| UI 组件库 | Element Plus | ^2.9.1 | -| HTTP 客户端 | axios | ^1.7.9 | -| 图表 | ECharts / vue-echarts | ^6.1.0 / ^8.0.1 | -| Markdown | marked + DOMPurify | ^15.0.5 / ^3.2.3 | -| 编辑器 | md-editor-v3 | ^5.1.4 | -| 工具集 | @vueuse/core | ^11.3.0 | -| 样式 | Sass | ^1.83.0 | +## 总体架构 -**项目版本**:1.0.0 +```text +YG_FT/ + frontend/ # 前端控制台 + backend/ # FastAPI 应用平台后端 + app/ + api/v1/ # 对前端暴露的 REST API + core/ # 配置、日志、中间件、权限等基础能力 + db/ # 数据库连接、迁移、事务工具 + modules/ # 业务模块目录 + schemas/ # Pydantic 入参/出参模型 + services/ # 跨模块应用服务 + workers/ # 后台任务入口 + requirements.txt # 后端 Python 第三方依赖 + compute/ # 算力平台与训练框架适配层 + api/ # 内部 Compute API + agent/ # 单机多 GPU 调度与进程管理 + engines/llama_factory/ # LLaMA-Factory 适配器 + file_gateway/ # 本地文件上传、下载、导入、产物管理 + docs/ # 需求、接口、数据库、开发计划和部署文档 + docker/ # 容器化配置 +``` -## 环境要求 +## 平台分层 -- **Node.js** >= 18(推荐 20 LTS) -- **npm** >= 9 -- 后端服务运行于 `http://localhost:7861`(前端通过代理转发,见下文) +| 层级 | 职责 | 主要目录 | +| --- | --- | --- | +| 前端控制台 | 用户操作入口、任务看板、项目/模型/数据集/训练/审批/审计页面 | `frontend/` | +| 应用平台后端 | 用户中心、多租户、RBAC/ABAC、项目隔离、元数据、审批流、审计、API 编排 | `backend/` | +| 算力平台 | GPU 发现、资源锁定、训练进程管理、日志采集、产物归档、任务状态同步 | `compute/` | +| 训练引擎 | 当前固定接入 LLaMA-Factory,预留其他训练平台适配标准 | `compute/engines/` | +| 数据层 | PostgreSQL、Redis、本地文件存储、日志归档 | `docs/postgres-schema.sql` | -## 快速开始 +## 当前开发基线 -### 1. 安装依赖 +- 使用 FastAPI 提供统一 API 响应结构 `{ code, message, data }`。 +- 本地运行阶段统一使用 PostgreSQL,后端启动时会在 PG 中初始化当前运行表和系统内置账号;模型、数据集、算力节点、GPU、微调任务等业务数据必须通过页面、接口或正式导入流程产生。 +- 支持登录、模型管理、数据集管理、微调任务创建/启动/停止/进度轮询。 +- 支持训练日志、loss 指标、checkpoint 和训练产物接口;真实训练执行器接入前,联调状态机必须通过显式环境变量开启。 +- 支持多算力节点、GPU、任务队列、资源副本和资源同步状态接口。 +- 前端新增 `/compute` 算力节点页面,展示节点地址、权重、标签、启用状态、GPU、队列和资源副本。 +- `compute/engines/llama_factory/adapter.py` 提供 LLaMA-Factory 参数校验、命令生成和日志解析基础能力。 + +## 后端启动 + +```bash +cd backend +python -m venv .venv +.venv\Scripts\activate +pip install -r requirements.txt +uvicorn app.main:app --reload --port 17861 +``` + +默认接口前缀为 `/modelTF`,例如: + +```text +GET /modelTF/health +POST /modelTF/login +GET /modelTF/model-manage +GET /modelTF/dataset-manage +GET /modelTF/fine-tune +GET /modelTF/compute/nodes +``` + +本地运行时默认 PostgreSQL 连接: + +```text +DATABASE_URL=postgresql+psycopg://yg_ft:change_me@localhost:15432/yg_ft +``` + +本地启动前需要确保 PostgreSQL 已监听 `localhost:15432`,并已创建 `yg_ft` 数据库和 `yg_ft` 用户。后端启动后会自动创建当前运行表并写入内置管理员账号,运行数据统一写入 PostgreSQL。 + +开发阶段内置登录账号: + +| 角色 | 账号 | 密码 | 说明 | +| --- | --- | --- | --- | +| 超级管理员 | `admin` | `admin123` | 拥有当前全部页面权限 | +| 操作员 | `operator` | `operator123` | 拥有业务操作相关页面权限 | + +以上账号仅用于本地开发和联调。生产环境初始化后应立即修改密码,或改为企业统一身份认证/管理员初始化流程。 + +## 前端启动 ```bash cd frontend npm install -``` - -### 2. 启动开发服务器 - -```bash npm run dev ``` -开发服务器默认运行在 `http://localhost:6801`。 +前端开发服务默认运行在 `http://localhost:16801`,并通过 Vite proxy 将 `/modelTF` 转发到 `http://localhost:17861`。 -### 3. 构建生产包 +## 算力服务启动 ```bash -npm run build # 类型检查 + 生产构建,产物输出到 dist/ -npm run preview # 本地预览构建产物 +cd compute +uvicorn api.main:app --reload --port 19100 ``` -### 4. 类型检查 +默认 `COMPUTE_MODE=real`。真实 GPU 接入时,在每台算力服务器上部署 Compute API、Agent、File Gateway 和 LLaMA-Factory,应用平台通过 `compute_nodes.api_base_url` 和 `compute_nodes.file_gateway_url` 主动轮询。仅在隔离联调环境可显式设置 `COMPUTE_MODE=simulator` 或 `COMPUTE_EXECUTION_MODE=simulator`。 + +## 日志 + +后端日志模块位于 `backend/app/core/logging.py`,说明文档见: + +- `docs/backend-logging.md` + +默认输出: + +```text +logs/backend-YYYY-MM-DD.log +logs/error-YYYY-MM-DD.log +``` + +日志格式为 JSON Lines,单个文件不超过 20MB,只保留最近 10 天。 + +## 主要文档 + +- `docs/platform-architecture-requirements.md`:平台需求、功能模块、页面补全建议。 +- `docs/menu-functional-requirements.md`:当前菜单、二级路由、规划菜单、功能需求、接口和数据库映射。 +- `docs/backend-api-design.md`:FastAPI 接口分组、参数定义、权限说明。 +- `docs/postgres-schema.sql`:PostgreSQL 数据库脚本,包含权限、用户中心、多租户、审批、审计等模型。 +- `docs/system-development-plan.md`:多人协作开发计划,按前端、后端、DB、部署拆分。 +- `docs/team-development-plan.md`:3-4 人并行开发分工计划,按人员边界标注页面、接口、数据库和交付节奏。 +- `docs/first-version-development-plan.md`:当前系统主链路开发计划,覆盖前端、后端、DB、Compute API、GPU 和 LLaMA-Factory 适配。 +- `docs/backend-logging.md`:后端日志模块使用说明。 +- `docs/deployment-plan.md`:后期部署方案,覆盖单机算力服务器部署与应用/算力分离部署。 +- `docker/README.md`:Docker 部署入口,包含应用服务器和算力服务器两套 Compose 使用方式。 + +## Docker 部署入口 + +应用服务器: ```bash -npm run type-check +cd docker/app +cp .env.example .env +docker compose up -d ``` -## 测试 - -内置基于 Playwright 的 UI 回归脚本,首次运行前需安装浏览器: +算力服务器: ```bash -npx playwright install chromium +cd docker/compute +cp .env.example .env +docker compose up -d ``` -执行已注册的回归脚本: +两套 Compose 均采用代码外挂方式运行,镜像只包含运行时环境和第三方依赖。项目根目录不再保留 `Dockerfile` 和 `docker-compose.yml`,部署时统一进入 `docker/app` 或 `docker/compute` 目录执行。 -```bash -npm run test:data-process-wizard # 数据处理向导 -npm run test:model-manage # 模型管理 -npm run test:training-log-layout # 训练日志布局 -npm run test:page-surface # 页面表层级 -``` +## 后续开发原则 -其余脚本可直接运行: - -```bash -node scripts/regression-back-navigation.mjs # 返回导航 -node scripts/regression-fine-tune-create-ui.mjs # 调优创建 UI -``` - -> 回归脚本默认连接 `http://localhost:6801`,需先启动开发服务器。 - -## 目录结构 - -``` -YG-FT/ -├── frontend/ # 前端工程(Vue 3 SPA) -│ ├── src/ -│ │ ├── api/ # axios 封装 + 各业务模块 API -│ │ ├── components/ # 公共组件 -│ │ ├── composables/ # 组合式函数 -│ │ ├── constants/ # 常量与映射表 -│ │ ├── layouts/ # 主布局 -│ │ ├── mock/ # Mock 数据与适配器 -│ │ ├── plugins/ # 第三方插件注册 -│ │ ├── router/ # 路由配置 + 登录守卫 -│ │ ├── stores/ # Pinia 状态 -│ │ ├── styles/ # 全局样式 -│ │ ├── types/ # TypeScript 类型定义 -│ │ └── views/ # 业务页面 -│ ├── scripts/ # UI 回归测试脚本 -│ ├── public/ # 静态资源 -│ └── vite.config.ts # Vite 构建与代理配置 -├── docs/ # 设计文档与视觉走查记录 -└── design-qa.md # 视觉走查汇总 -``` - -## 端口与代理 - -| 服务 | 地址 | -|------|------| -| 前端开发服务器 | `http://localhost:6801` | -| 后端 API | `http://localhost:7861` | - -前端统一使用 `/api` 相对路径发请求,由 Vite 开发代理转发到后端 `http://localhost:7861`(配置见 `frontend/vite.config.ts`)。 - -## 业务模块 - -| 模块 | 说明 | -|------|------| -| 登录 | 用户登录鉴权 | -| 模型调优 | 微调任务创建与管理 | -| 模型评测 | 评测任务与评测维度配置 | -| 模型推理 | 在线推理对话 | -| 模型对比 | 多模型对话与结果对比 | -| 模型管理 | 模型 CRUD 与权重合并 | -| 数据集 | 数据集管理与预览 | -| 数据处理 | 数据处理任务向导 | -| 工具 | 辅助工具集 | -| 系统 | 硬件监控、日志、训练日志 | +- 接口实现优先遵循 `docs/backend-api-design.md`。 +- 数据库实现优先遵循 `docs/postgres-schema.sql`,后续通过 Alembic 迁移管理变更。 +- 前端页面与后端接口、数据库表之间的映射以文档中的“对应页面/功能模块”为准。 +- 训练引擎适配必须通过 `compute/engines/` 下的标准接口,不在应用平台后端直接拼接训练命令。 +- 敏感信息不得写入日志,生产环境密钥通过环境变量或密钥管理系统注入。 diff --git a/backend/.env.example b/backend/.env.example new file mode 100644 index 0000000..436987d --- /dev/null +++ b/backend/.env.example @@ -0,0 +1,9 @@ +APP_NAME=YG Fine-Tune Platform API +APP_ENV=local +API_PREFIX=/api +LOG_LEVEL=INFO +LOG_DIR=./logs +LOG_FILE_PREFIX=backend +LOG_ERROR_FILE_PREFIX=error +LOG_MAX_BYTES=20971520 +LOG_RETENTION_DAYS=10 diff --git a/backend/README.md b/backend/README.md new file mode 100644 index 0000000..a328320 --- /dev/null +++ b/backend/README.md @@ -0,0 +1,65 @@ +# Backend Service + +后端工程使用 FastAPI,定位为模型微调平台的应用平台服务,负责用户中心、多租户、权限隔离、项目、数据集、模型、训练任务、审批、审计和算力平台编排。 + +## 目录结构 + +```text +backend/ + app/ + main.py # FastAPI 应用入口 + api/v1/ # 对前端暴露的 接口路由 + core/ # 配置、日志、中间件、权限等基础能力 + db/ # 数据库连接、迁移集成、事务工具 + modules/ # 业务模块 + auth/ + tenant/ + project/ + model/ + dataset/ + data_process/ + fine_tune/ + eval/ + inference/ + approval/ + audit/ + compute_gateway/ + file_gateway/ + engine_registry/ + retention/ + system/ + schemas/ # Pydantic 入参/出参模型 + services/ # 跨模块应用服务 + workers/ # 后台任务入口 + requirements.txt # 后端第三方依赖 + logs/ # 本地开发日志目录,生产环境建议挂载到独立日志盘 +``` + +## 本地启动 + +```bash +cd backend +python -m venv .venv +.venv\Scripts\activate +pip install -r requirements.txt +uvicorn app.main:app --reload +``` + +健康检查: + +```text +GET /modelTF/health +``` + +## 日志 + +日志模块位于 `app/core/logging.py`,使用说明见 `../docs/backend-logging.md`。 + +默认日志文件: + +```text +logs/backend-YYYY-MM-DD.log +logs/error-YYYY-MM-DD.log +``` + +文件日志为 JSON Lines 格式,单个文件不超过 20MB,只保存最近 10 天,错误日志按 `ERROR` 级别独立拆分,便于 ELK/日志平台采集。 diff --git a/backend/app/__init__.py b/backend/app/__init__.py new file mode 100644 index 0000000..18b665e --- /dev/null +++ b/backend/app/__init__.py @@ -0,0 +1 @@ +"""Application package.""" diff --git a/backend/app/api/__init__.py b/backend/app/api/__init__.py new file mode 100644 index 0000000..dff53e5 --- /dev/null +++ b/backend/app/api/__init__.py @@ -0,0 +1 @@ +"""API package.""" diff --git a/backend/app/api/v1/__init__.py b/backend/app/api/v1/__init__.py new file mode 100644 index 0000000..6d0f325 --- /dev/null +++ b/backend/app/api/v1/__init__.py @@ -0,0 +1 @@ +"""Versioned API package.""" diff --git a/backend/app/api/v1/endpoints/__init__.py b/backend/app/api/v1/endpoints/__init__.py new file mode 100644 index 0000000..1bdb261 --- /dev/null +++ b/backend/app/api/v1/endpoints/__init__.py @@ -0,0 +1 @@ +"""API endpoint modules.""" diff --git a/backend/app/api/v1/endpoints/health.py b/backend/app/api/v1/endpoints/health.py new file mode 100644 index 0000000..c5676c1 --- /dev/null +++ b/backend/app/api/v1/endpoints/health.py @@ -0,0 +1,14 @@ +from fastapi import APIRouter + +from app.core.logging import get_logger +from app.db.platform_store import get_platform_store + +router = APIRouter() +logger = get_logger(__name__) + + +@router.get("/health") +async def health_check() -> dict[str, object]: + logger.info("health check requested") + return {"code": 0, "message": "ok", "data": get_platform_store().health_metrics()} + diff --git a/backend/app/api/v1/endpoints/platform.py b/backend/app/api/v1/endpoints/platform.py new file mode 100644 index 0000000..74ebfd6 --- /dev/null +++ b/backend/app/api/v1/endpoints/platform.py @@ -0,0 +1,457 @@ +from __future__ import annotations + +from typing import Any +import uuid + +from fastapi import APIRouter, Body, File, HTTPException, Query, UploadFile +from fastapi.responses import PlainTextResponse + +from app.db.platform_store import get_platform_store + +router = APIRouter() + + +def ok(data: Any = None, message: str = "ok") -> dict[str, Any]: + return {"code": 0, "message": message, "data": data} + + +def fail(status_code: int, message: str) -> HTTPException: + return HTTPException(status_code=status_code, detail={"code": status_code, "message": message, "data": None}) + + +@router.post("/login") +async def login(payload: dict[str, Any] = Body(...)) -> dict[str, Any]: + user = get_platform_store().login(payload.get("username", ""), payload.get("password", "")) + if not user: + raise fail(401, "invalid username or password") + return ok({"token": f"platform-token-{user['id']}", "user": user}) + + +@router.get("/me") +async def me() -> dict[str, Any]: + return ok(get_platform_store().users()[0]) + + +@router.get("/dashboard/overview") +async def dashboard_overview() -> dict[str, Any]: + store = get_platform_store() + tasks = store.tasks() + return ok( + { + "models": len(store.models()), + "datasets": len(store.datasets()), + "fine_tune_tasks": len(tasks), + "running_tasks": len([t for t in tasks if t["status"] in {"syncing", "queued", "running"}]), + "compute_nodes": len(store.compute_nodes()), + "gpus": len(store.gpus()), + } + ) + + +@router.get("/system-info") +async def system_info() -> dict[str, Any]: + return ok(get_platform_store().system_info()) + + +@router.get("/users") +async def users() -> dict[str, Any]: + return ok(get_platform_store().users()) + + +@router.post("/users") +async def create_user(payload: dict[str, Any] = Body(...)) -> dict[str, Any]: + return ok(get_platform_store().create_user(payload)) + + +@router.put("/users/{user_id}") +async def update_user(user_id: str, payload: dict[str, Any] = Body(...)) -> dict[str, Any]: + try: + return ok(get_platform_store().update_user(user_id, payload)) + except KeyError: + raise fail(404, "user not found") + + +@router.delete("/users/{user_id}") +async def delete_user(user_id: str, current_username: str | None = Query(default=None)) -> dict[str, Any]: + try: + get_platform_store().delete_user(user_id) + return ok({"deleted": user_id, "current_username": current_username}) + except KeyError: + raise fail(404, "user not found") + except ValueError as exc: + raise fail(400, str(exc)) + + +@router.get("/model-manage/local-models") +async def local_models() -> dict[str, Any]: + models = [{"path": item.get("path") or "", "name": item["name"]} for item in get_platform_store().models()] + return ok({"models": models}) + + +@router.get("/model-manage/trained-models") +async def trained_models() -> dict[str, Any]: + return ok({"models": get_platform_store().trained_models()}) + + +@router.delete("/model-manage/trained-models/{model_id}") +async def delete_trained_model(model_id: str, type: str = Query(default="merged")) -> dict[str, Any]: + return ok({"deleted": model_id, "type": type}) + + +@router.get("/model-manage/name/{name}") +async def model_by_name(name: str) -> dict[str, Any]: + try: + return ok(get_platform_store().model_by_name(name)) + except KeyError: + raise fail(404, "model not found") + + +@router.get("/model-manage") +async def model_list() -> dict[str, Any]: + return ok(get_platform_store().models()) + + +@router.post("/model-manage") +async def create_model(payload: dict[str, Any] = Body(...)) -> dict[str, Any]: + return ok(get_platform_store().create_model(payload)) + + +@router.get("/model-manage/{model_id}") +async def model_detail(model_id: str) -> dict[str, Any]: + try: + return ok(get_platform_store().model(model_id)) + except KeyError: + raise fail(404, "model not found") + + +@router.put("/model-manage/{model_id}") +async def update_model(model_id: str, payload: dict[str, Any] = Body(...)) -> dict[str, Any]: + try: + return ok(get_platform_store().update_model(model_id, payload)) + except KeyError: + raise fail(404, "model not found") + + +@router.put("/model-manage/{model_id}/purpose") +async def update_model_purpose(model_id: str, payload: dict[str, Any] = Body(...)) -> dict[str, Any]: + try: + return ok(get_platform_store().update_model(model_id, {"purpose": payload.get("purpose", "training")})) + except KeyError: + raise fail(404, "model not found") + + +@router.delete("/model-manage/{model_id}") +async def delete_model(model_id: str) -> dict[str, Any]: + get_platform_store().delete_model(model_id) + return ok({"deleted": model_id}) + + +@router.post("/model-manage/merge") +async def merge_model(payload: dict[str, Any] = Body(...)) -> dict[str, Any]: + return ok({"job_id": f"merge_{uuid.uuid4().hex[:12]}", "status": "queued", **payload}) + + +@router.get("/dataset-manage/preview/{file_id}") +async def dataset_preview(file_id: str) -> dict[str, Any]: + try: + row = get_platform_store().dataset_file(file_id) + return ok({"content": row["content"]}) + except KeyError: + raise fail(404, "dataset file not found") + + +@router.get("/dataset-manage/versions/{file_id}") +async def dataset_versions(file_id: str) -> dict[str, Any]: + try: + return ok(get_platform_store().file_versions(file_id)) + except KeyError: + raise fail(404, "dataset file not found") + + +@router.get("/dataset-manage/versions/{file_id}/{version_id}") +async def dataset_version_content(file_id: str, version_id: str) -> dict[str, Any]: + try: + row = get_platform_store().dataset_file(file_id) + versions = get_platform_store().file_versions(file_id)["versions"] + version = next((item for item in versions if item["id"] == version_id), None) + if not version: + raise KeyError(version_id) + return ok({"version": version, "content": row["content"]}) + except KeyError: + raise fail(404, "dataset version not found") + + +@router.post("/dataset-manage/versions/{file_id}") +async def create_dataset_version(file_id: str, payload: dict[str, Any] = Body(...)) -> dict[str, Any]: + try: + return ok(get_platform_store().create_file_version(file_id, payload)) + except KeyError: + raise fail(404, "dataset file not found") + + +@router.put("/dataset-manage/versions/{file_id}/active") +async def activate_dataset_version(file_id: str, payload: dict[str, Any] = Body(...)) -> dict[str, Any]: + try: + return ok(get_platform_store().activate_file_version(file_id, payload["version_id"])) + except KeyError: + raise fail(404, "dataset version not found") + + +@router.delete("/dataset-manage/versions/{file_id}/{version_id}") +async def delete_dataset_version(file_id: str, version_id: str) -> dict[str, Any]: + return ok(get_platform_store().file_versions(file_id)) + + +@router.post("/dataset-manage/upload/{dataset_id}") +async def upload_dataset_files(dataset_id: str, files: list[UploadFile] = File(default=[])) -> dict[str, Any]: + created: list[dict[str, Any]] = [] + store = get_platform_store() + try: + store.dataset(dataset_id) + except KeyError: + raise fail(404, "dataset not found") + with store.connect() as conn: + for file in files: + raw = await file.read() + content = raw.decode("utf-8", errors="replace") + created.append(store.add_dataset_file(conn, dataset_id, file.filename or "upload.jsonl", content)) + return ok({"files": created}) + + +@router.get("/dataset-manage/download/{dataset_id}") +async def download_dataset(dataset_id: str) -> PlainTextResponse: + dataset = get_platform_store().dataset(dataset_id) + content = "\n".join([f"{file['name']}" for file in dataset.get("files", [])]) + return PlainTextResponse(content, media_type="text/plain") + + +@router.get("/dataset-manage/download/{dataset_id}/{file_id}") +async def download_dataset_file(dataset_id: str, file_id: str, version_id: str | None = Query(default=None)) -> PlainTextResponse: + row = get_platform_store().dataset_file(file_id) + return PlainTextResponse(row["content"], media_type="text/plain") + + +@router.get("/dataset-manage") +async def dataset_list() -> dict[str, Any]: + return ok(get_platform_store().datasets()) + + +@router.post("/dataset-manage") +async def create_dataset(payload: dict[str, Any] = Body(...)) -> dict[str, Any]: + dataset = get_platform_store().create_dataset(payload) + return ok({"id": dataset["id"]}) + + +@router.get("/dataset-manage/{dataset_id}") +async def dataset_detail(dataset_id: str) -> dict[str, Any]: + try: + return ok(get_platform_store().dataset(dataset_id)) + except KeyError: + raise fail(404, "dataset not found") + + +@router.put("/dataset-manage/{dataset_id}") +async def update_dataset(dataset_id: str, payload: dict[str, Any] = Body(...)) -> dict[str, Any]: + try: + return ok(get_platform_store().update_dataset(dataset_id, payload)) + except KeyError: + raise fail(404, "dataset not found") + + +@router.delete("/dataset-manage/{dataset_id}") +async def delete_dataset(dataset_id: str) -> dict[str, Any]: + get_platform_store().delete_dataset(dataset_id) + return ok({"deleted": dataset_id}) + + +@router.get("/fine-tune/check-name") +async def check_fine_tune_name(name: str = Query(...)) -> dict[str, Any]: + exists = any(task["name"] == name for task in get_platform_store().tasks()) + return ok({"exists": exists}) + + +@router.get("/fine-tune/progress/{task_id}") +async def fine_tune_progress(task_id: str) -> dict[str, Any]: + try: + return ok(get_platform_store().progress(task_id)) + except KeyError: + raise fail(404, "fine tune task not found") + + +@router.post("/fine-tune/tensorboard/start") +async def tensorboard_start() -> dict[str, Any]: + return ok({"status": "running", "url": "http://localhost:6006"}) + + +@router.get("/fine-tune") +async def fine_tune_list() -> dict[str, Any]: + return ok(get_platform_store().tasks()) + + +@router.post("/fine-tune") +async def create_fine_tune(payload: dict[str, Any] = Body(...)) -> dict[str, Any]: + try: + task = get_platform_store().create_task(payload) + return ok({"id": task["id"]}) + except ValueError as exc: + raise fail(400, str(exc)) + + +@router.post("/fine-tune/start") +async def start_fine_tune(payload: dict[str, Any] = Body(...)) -> dict[str, Any]: + try: + return ok(get_platform_store().start_task(payload)) + except KeyError: + raise fail(404, "fine tune task not found") + except RuntimeError as exc: + raise fail(409, str(exc)) + + +@router.get("/fine-tune/{task_id}") +async def fine_tune_detail(task_id: str) -> dict[str, Any]: + try: + return ok(get_platform_store().task(task_id)) + except KeyError: + raise fail(404, "fine tune task not found") + + +@router.put("/fine-tune/{task_id}") +async def update_fine_tune(task_id: str, payload: dict[str, Any] = Body(...)) -> dict[str, Any]: + try: + return ok(get_platform_store().update_task(task_id, payload)) + except KeyError: + raise fail(404, "fine tune task not found") + + +@router.post("/fine-tune/stop/{task_id}") +async def stop_fine_tune(task_id: str) -> dict[str, Any]: + try: + return ok(get_platform_store().stop_task(task_id)) + except KeyError: + raise fail(404, "fine tune task not found") + + +@router.post("/fine-tune/{task_id}/stop") +async def stop_fine_tune_alt(task_id: str) -> dict[str, Any]: + return await stop_fine_tune(task_id) + + +@router.delete("/fine-tune/{task_id}") +async def delete_fine_tune(task_id: str) -> dict[str, Any]: + get_platform_store().delete_task(task_id) + return ok({"deleted": task_id}) + + +@router.get("/fine-tune/{task_id}/overview") +async def fine_tune_overview(task_id: str) -> dict[str, Any]: + task = get_platform_store().task(task_id) + return ok({"task": task, "progress": get_platform_store().progress(task_id)}) + + +@router.get("/fine-tune/{task_id}/checkpoints") +async def fine_tune_checkpoints(task_id: str) -> dict[str, Any]: + task = get_platform_store().task(task_id) + checkpoints = [] + for step in [50, 100, 150]: + if task.get("progress", 0) >= min(100, step // 2): + checkpoints.append({"step": step, "path": f"/data/yg-ft/outputs/{task['name']}/checkpoint-{step}"}) + return ok(checkpoints) + + +@router.get("/compute/nodes") +async def compute_nodes() -> dict[str, Any]: + return ok(get_platform_store().compute_nodes()) + + +@router.post("/compute/nodes") +async def create_compute_node(payload: dict[str, Any] = Body(...)) -> dict[str, Any]: + try: + return ok(get_platform_store().create_compute_node(payload)) + except KeyError as exc: + raise fail(400, f"missing field: {exc}") + + +@router.put("/compute/nodes/{node_id}") +async def update_compute_node(node_id: str, payload: dict[str, Any] = Body(...)) -> dict[str, Any]: + try: + return ok(get_platform_store().update_compute_node(node_id, payload)) + except KeyError: + raise fail(404, "compute node not found") + + +@router.post("/compute/nodes/{node_id}/test-connection") +async def test_compute_node(node_id: str) -> dict[str, Any]: + return ok({"node_id": node_id, "success": True, "latency_ms": 12}) + + +@router.post("/compute/nodes/{node_id}/enable") +async def enable_compute_node(node_id: str) -> dict[str, Any]: + return ok(get_platform_store().update_compute_node(node_id, {"enabled": True, "scheduler_status": "online"})) + + +@router.post("/compute/nodes/{node_id}/disable") +async def disable_compute_node(node_id: str) -> dict[str, Any]: + return ok(get_platform_store().update_compute_node(node_id, {"enabled": False, "scheduler_status": "offline"})) + + +@router.post("/compute/nodes/{node_id}/drain") +async def drain_compute_node(node_id: str) -> dict[str, Any]: + return ok(get_platform_store().update_compute_node(node_id, {"scheduler_status": "draining"})) + + +@router.get("/compute/nodes/{node_id}/replicas") +async def compute_node_replicas(node_id: str) -> dict[str, Any]: + return ok(get_platform_store().replicas(node_id)) + + +@router.get("/compute/gpus") +async def compute_gpus() -> dict[str, Any]: + return ok(get_platform_store().gpus()) + + +@router.get("/compute/queue") +async def compute_queue() -> dict[str, Any]: + return ok(get_platform_store().queue()) + + +@router.post("/internal/compute-sync/resources") +async def create_compute_sync(payload: dict[str, Any] = Body(...)) -> dict[str, Any]: + sync_id = get_platform_store().create_sync_job(payload.get("target_node_id", "node_01"), payload) + return ok(get_platform_store().sync_job(sync_id)) + + +@router.get("/internal/compute-sync/resources/{sync_id}") +async def compute_sync_detail(sync_id: str) -> dict[str, Any]: + try: + return ok(get_platform_store().sync_job(sync_id)) + except KeyError: + raise fail(404, "sync job not found") + + +@router.get("/training-log-files") +async def training_log_files() -> dict[str, Any]: + return ok(get_platform_store().training_log_files()) + + +@router.get("/training-log-content") +async def training_log_content(file: str = Query(...)) -> dict[str, Any]: + try: + return ok(get_platform_store().training_log_content(file)) + except KeyError: + raise fail(404, "training log not found") + + +@router.get("/log-files") +async def log_files(date: str | None = Query(default=None)) -> dict[str, Any]: + return ok(get_platform_store().log_files(date)) + + +@router.get("/log-content") +async def log_content(file: str = Query(...)) -> dict[str, Any]: + return ok(get_platform_store().log_content(file)) + + +@router.post("/web-log") +async def web_log(payload: dict[str, Any] = Body(...)) -> dict[str, Any]: + return ok({"received": True, **payload}) + diff --git a/backend/app/api/v1/router.py b/backend/app/api/v1/router.py new file mode 100644 index 0000000..5a4dbcb --- /dev/null +++ b/backend/app/api/v1/router.py @@ -0,0 +1,9 @@ +from fastapi import APIRouter + +from app.api.v1.endpoints.platform import router as platform_router +from app.api.v1.endpoints.health import router as health_router + +api_router = APIRouter() +api_router.include_router(health_router, tags=["health"]) +api_router.include_router(platform_router, tags=["platform"]) + diff --git a/backend/app/core/__init__.py b/backend/app/core/__init__.py new file mode 100644 index 0000000..5fd6e27 --- /dev/null +++ b/backend/app/core/__init__.py @@ -0,0 +1 @@ +"""Core infrastructure modules.""" diff --git a/backend/app/core/config.py b/backend/app/core/config.py new file mode 100644 index 0000000..926d13e --- /dev/null +++ b/backend/app/core/config.py @@ -0,0 +1,57 @@ +from dataclasses import dataclass +from functools import lru_cache +import os + + +def _int_env(name: str, default: int) -> int: + raw = os.getenv(name) + if raw is None or raw == "": + return default + return int(raw) + + +def _list_env(name: str, default: list[str]) -> list[str]: + raw = os.getenv(name) + if raw is None or raw.strip() == "": + return default + return [item.strip() for item in raw.split(",") if item.strip()] + + +@dataclass(frozen=True) +class Settings: + app_name: str = os.getenv("APP_NAME", "YG Fine-Tune Platform API") + app_env: str = os.getenv("APP_ENV", "local") + route_prefix: str = os.getenv("MODELTF_ROUTE_PREFIX", "/modelTF") + app_mode: str = os.getenv("APP_MODE", "local") + database_url: str = os.getenv("DATABASE_URL", "postgresql+psycopg://yg_ft:change_me@localhost:15432/yg_ft") + cors_allow_origins: list[str] = None # type: ignore[assignment] + compute_mode: str = os.getenv("COMPUTE_MODE", "real") + compute_status_sync_mode: str = os.getenv("COMPUTE_STATUS_SYNC_MODE", "polling") + compute_poll_interval_seconds: int = _int_env("COMPUTE_POLL_INTERVAL_SECONDS", 3) + log_level: str = os.getenv("LOG_LEVEL", "INFO") + log_dir: str = os.getenv("LOG_DIR", "./logs") + log_file_prefix: str = os.getenv("LOG_FILE_PREFIX", "backend") + log_error_file_prefix: str = os.getenv("LOG_ERROR_FILE_PREFIX", "error") + log_max_bytes: int = _int_env("LOG_MAX_BYTES", 20 * 1024 * 1024) + log_retention_days: int = _int_env("LOG_RETENTION_DAYS", 10) + + def __post_init__(self) -> None: + object.__setattr__( + self, + "cors_allow_origins", + _list_env( + "CORS_ALLOW_ORIGINS", + [ + "http://localhost:16801", + "http://127.0.0.1:16801", + "http://localhost:17861", + "http://127.0.0.1:17861", + ], + ), + ) + + +@lru_cache +def get_settings() -> Settings: + return Settings() + diff --git a/backend/app/core/logging.py b/backend/app/core/logging.py new file mode 100644 index 0000000..6332907 --- /dev/null +++ b/backend/app/core/logging.py @@ -0,0 +1,253 @@ +from __future__ import annotations + +from contextvars import ContextVar +from datetime import date, datetime, timedelta +import json +import logging +from logging import Handler, LogRecord +from pathlib import Path +import re +import time +from typing import Any +from uuid import uuid4 + +from fastapi import FastAPI, Request + +from app.core.config import Settings, get_settings + +request_id_var: ContextVar[str] = ContextVar("request_id", default="-") + + +class RequestIdFilter(logging.Filter): + def filter(self, record: LogRecord) -> bool: + record.request_id = request_id_var.get() + return True + + +class JsonLogFormatter(logging.Formatter): + """Format one JSON object per line for ELK/Filebeat collection.""" + + def format(self, record: LogRecord) -> str: + payload: dict[str, Any] = { + "@timestamp": datetime.fromtimestamp(record.created).astimezone().isoformat( + timespec="milliseconds" + ), + "level": record.levelname, + "logger": record.name, + "message": record.getMessage(), + "module": record.module, + "function": record.funcName, + "file": record.pathname, + "line": record.lineno, + "process": record.process, + "thread": record.thread, + "thread_name": record.threadName, + "request_id": getattr(record, "request_id", "-"), + } + if record.exc_info: + payload["exception"] = self.formatException(record.exc_info) + if record.stack_info: + payload["stack"] = self.formatStack(record.stack_info) + return json.dumps(payload, ensure_ascii=False, separators=(",", ":")) + + +class DateSizeRotatingFileHandler(Handler): + """Rotate log files by date and size while keeping date in every file name.""" + + def __init__( + self, + log_dir: str | Path, + file_prefix: str, + max_bytes: int, + retention_days: int, + encoding: str = "utf-8", + ) -> None: + super().__init__() + self.log_dir = Path(log_dir) + self.file_prefix = file_prefix + self.max_bytes = max_bytes + self.retention_days = retention_days + self.encoding = encoding + self._current_date: date | None = None + self._stream: Any | None = None + self._current_path: Path | None = None + self.log_dir.mkdir(parents=True, exist_ok=True) + + def emit(self, record: LogRecord) -> None: + try: + message = self.format(record) + self.terminator + encoded_size = len(message.encode(self.encoding)) + self._ensure_stream() + if self._should_rotate(encoded_size): + self._rotate_by_size() + self._ensure_stream(force=True) + self._stream.write(message) + self.flush() + self._cleanup_expired_files() + except Exception: + self.handleError(record) + + @property + def terminator(self) -> str: + return "\n" + + def flush(self) -> None: + if self._stream and not self._stream.closed: + self._stream.flush() + + def close(self) -> None: + try: + if self._stream and not self._stream.closed: + self._stream.close() + finally: + self._stream = None + super().close() + + def _dated_path(self, target_date: date) -> Path: + return self.log_dir / f"{self.file_prefix}-{target_date.isoformat()}.log" + + def _ensure_stream(self, force: bool = False) -> None: + today = date.today() + if not force and self._stream and self._current_date == today: + return + + if self._stream and not self._stream.closed: + self._stream.close() + + self._current_date = today + self._current_path = self._dated_path(today) + self._stream = self._current_path.open("a", encoding=self.encoding) + + def _should_rotate(self, incoming_size: int) -> bool: + if not self._current_path or self.max_bytes <= 0: + return False + if not self._current_path.exists(): + return False + return self._current_path.stat().st_size + incoming_size > self.max_bytes + + def _rotate_by_size(self) -> None: + if not self._current_path or not self._current_path.exists(): + return + + if self._stream and not self._stream.closed: + self._stream.close() + self._stream = None + + stem = self._current_path.stem + suffix = self._current_path.suffix + index = 1 + while True: + rotated_path = self.log_dir / f"{stem}.{index}{suffix}" + if not rotated_path.exists(): + self._current_path.rename(rotated_path) + return + index += 1 + + def _cleanup_expired_files(self) -> None: + if self.retention_days <= 0: + return + + cutoff = date.today() - timedelta(days=self.retention_days - 1) + pattern = re.compile( + rf"^{re.escape(self.file_prefix)}-(\d{{4}}-\d{{2}}-\d{{2}})(?:\.\d+)?\.log$" + ) + for path in self.log_dir.glob(f"{self.file_prefix}-*.log"): + match = pattern.match(path.name) + if not match: + continue + file_date = datetime.strptime(match.group(1), "%Y-%m-%d").date() + if file_date < cutoff: + path.unlink(missing_ok=True) + + +def configure_logging(settings: Settings | None = None) -> None: + settings = settings or get_settings() + + root_logger = logging.getLogger() + root_logger.handlers.clear() + root_logger.setLevel(settings.log_level.upper()) + + console_formatter = logging.Formatter( + fmt=( + "%(asctime)s | %(levelname)s | pid=%(process)d | %(threadName)s | " + "request_id=%(request_id)s | %(name)s | %(pathname)s:%(lineno)d | %(message)s" + ), + datefmt="%Y-%m-%d %H:%M:%S", + ) + json_formatter = JsonLogFormatter() + request_filter = RequestIdFilter() + + console_handler = logging.StreamHandler() + console_handler.setFormatter(console_formatter) + console_handler.addFilter(request_filter) + + file_handler = DateSizeRotatingFileHandler( + log_dir=settings.log_dir, + file_prefix=settings.log_file_prefix, + max_bytes=settings.log_max_bytes, + retention_days=settings.log_retention_days, + ) + file_handler.setFormatter(json_formatter) + file_handler.addFilter(request_filter) + + error_file_handler = DateSizeRotatingFileHandler( + log_dir=settings.log_dir, + file_prefix=settings.log_error_file_prefix, + max_bytes=settings.log_max_bytes, + retention_days=settings.log_retention_days, + ) + error_file_handler.setLevel(logging.ERROR) + error_file_handler.setFormatter(json_formatter) + error_file_handler.addFilter(request_filter) + + root_logger.addHandler(console_handler) + root_logger.addHandler(file_handler) + root_logger.addHandler(error_file_handler) + + for logger_name in ("uvicorn", "uvicorn.error", "uvicorn.access"): + logger = logging.getLogger(logger_name) + logger.handlers.clear() + logger.propagate = True + + +def get_logger(name: str) -> logging.Logger: + return logging.getLogger(name) + + +def set_request_id(request_id: str) -> None: + request_id_var.set(request_id) + + +def setup_request_logging(app: FastAPI) -> None: + logger = get_logger("app.access") + + @app.middleware("http") + async def request_logging_middleware(request: Request, call_next): # type: ignore[no-untyped-def] + request_id = request.headers.get("X-Request-ID") or str(uuid4()) + token = request_id_var.set(request_id) + started_at = time.perf_counter() + try: + response = await call_next(request) + elapsed_ms = (time.perf_counter() - started_at) * 1000 + logger.info( + "request completed method=%s path=%s status_code=%s duration_ms=%.2f client=%s", + request.method, + request.url.path, + response.status_code, + elapsed_ms, + request.client.host if request.client else "-", + ) + response.headers["X-Request-ID"] = request_id + return response + except Exception: + elapsed_ms = (time.perf_counter() - started_at) * 1000 + logger.exception( + "request failed method=%s path=%s duration_ms=%.2f client=%s", + request.method, + request.url.path, + elapsed_ms, + request.client.host if request.client else "-", + ) + raise + finally: + request_id_var.reset(token) diff --git a/backend/app/db/__init__.py b/backend/app/db/__init__.py new file mode 100644 index 0000000..2a29512 --- /dev/null +++ b/backend/app/db/__init__.py @@ -0,0 +1 @@ +"""Database infrastructure package.""" diff --git a/backend/app/db/platform_store.py b/backend/app/db/platform_store.py new file mode 100644 index 0000000..8f87d8f --- /dev/null +++ b/backend/app/db/platform_store.py @@ -0,0 +1,1150 @@ +from __future__ import annotations + +import json +import hashlib +import hmac +import math +import secrets +import time +import uuid +from contextlib import contextmanager +from datetime import datetime, timezone +from pathlib import Path +from typing import Any, Iterator + +import psycopg + +from app.core.config import get_settings + + +ALL_PERMISSIONS = [ + "dashboard", + "fine-tune", + "model-eval", + "model-inference", + "model-manage", + "dataset", + "data-process", + "data-convert", + "compute", + "hardware", + "logs", + "user-settings", +] + + +def utcnow() -> str: + return datetime.now(timezone.utc).replace(microsecond=0).isoformat().replace("+00:00", "Z") + + +def parse_time(value: str | None) -> datetime | None: + if not value: + return None + return datetime.fromisoformat(value.replace("Z", "+00:00")) + + +def json_loads(value: str | None, default: Any) -> Any: + if not value: + return default + return json.loads(value) + + +def json_dumps(value: Any) -> str: + return json.dumps(value, ensure_ascii=False, separators=(",", ":")) + + +def new_id(prefix: str) -> str: + return f"{prefix}_{uuid.uuid4().hex[:12]}" + + +PASSWORD_HASH_ITERATIONS = 390_000 + + +def hash_password(password: str) -> str: + salt = secrets.token_hex(16) + digest = hashlib.pbkdf2_hmac("sha256", password.encode("utf-8"), salt.encode("utf-8"), PASSWORD_HASH_ITERATIONS) + return f"pbkdf2_sha256${PASSWORD_HASH_ITERATIONS}${salt}${digest.hex()}" + + +def verify_password(password: str, stored: str) -> tuple[bool, bool]: + if not stored.startswith("pbkdf2_sha256$"): + return hmac.compare_digest(password, stored), True + try: + _, iterations, salt, expected = stored.split("$", 3) + digest = hashlib.pbkdf2_hmac("sha256", password.encode("utf-8"), salt.encode("utf-8"), int(iterations)).hex() + return hmac.compare_digest(digest, expected), False + except ValueError: + return False, False + + +def _psycopg_url(database_url: str) -> str: + return database_url.replace("postgresql+psycopg://", "postgresql://") + + +def _pg_sql(sql: str) -> str: + return sql.replace("?", "%s") + + +class PgRow(dict): + def __init__(self, columns: list[str], values: tuple[Any, ...]) -> None: + super().__init__(zip(columns, values)) + self._values = values + + def __getitem__(self, key: str | int) -> Any: + if isinstance(key, int): + return self._values[key] + return super().__getitem__(key) + + +class PgCursor: + def __init__(self, cursor: psycopg.Cursor[Any]) -> None: + self.cursor = cursor + + def execute(self, sql: str, params: tuple[Any, ...] | list[Any] | None = None) -> "PgCursor": + self.cursor.execute(_pg_sql(sql), params) + return self + + def fetchone(self) -> PgRow | None: + row = self.cursor.fetchone() + if row is None: + return None + return PgRow(self._columns(), tuple(row)) + + def fetchall(self) -> list[PgRow]: + columns = self._columns() + return [PgRow(columns, tuple(row)) for row in self.cursor.fetchall()] + + def _columns(self) -> list[str]: + return [col.name for col in self.cursor.description or []] + + +class PgConnection: + def __init__(self, conn: psycopg.Connection[Any]) -> None: + self.conn = conn + + def execute(self, sql: str, params: tuple[Any, ...] | list[Any] | None = None) -> PgCursor: + cursor = PgCursor(self.conn.cursor()) + return cursor.execute(sql, params) + + def executemany(self, sql: str, params_seq: list[tuple[Any, ...]] | list[list[Any]]) -> None: + with self.conn.cursor() as cursor: + cursor.executemany(_pg_sql(sql), params_seq) + + def executescript(self, sql: str) -> None: + with self.conn.cursor() as cursor: + for statement in sql.split(";"): + statement = statement.strip() + if statement: + cursor.execute(statement) + + def commit(self) -> None: + self.conn.commit() + + def rollback(self) -> None: + self.conn.rollback() + + def close(self) -> None: + self.conn.close() + + +class PlatformStore: + """PostgreSQL-backed store for the first runnable platform version. + + This store mirrors the API-facing subset needed by the first system + iteration while using the same PostgreSQL dependency as later production + development. + """ + + def __init__(self, database_url: str | None = None) -> None: + settings = get_settings() + self.database_url = _psycopg_url(database_url or settings.database_url) + self.ensure_schema() + self.ensure_seed_data() + + @contextmanager + def connect(self) -> Iterator["PgConnection"]: + raw_conn = psycopg.connect(self.database_url) + conn = PgConnection(raw_conn) + try: + yield conn + conn.commit() + except Exception: + conn.rollback() + raise + finally: + conn.close() + + def ensure_schema(self) -> None: + schema_path = Path(__file__).with_name("sql") / "001_platform_runtime.sql" + with self.connect() as conn: + conn.executescript(schema_path.read_text(encoding="utf-8")) + columns = conn.execute( + "SELECT column_name FROM information_schema.columns WHERE table_name='users'" + ).fetchall() + column_names = {row["column_name"] for row in columns} + if "password" in column_names and "password_hash" not in column_names: + conn.execute("ALTER TABLE users RENAME COLUMN password TO password_hash") + + def ensure_seed_data(self) -> None: + with self.connect() as conn: + if conn.execute("SELECT COUNT(*) FROM users").fetchone()[0] > 0: + return + + now = utcnow() + users = [ + ("u_admin", "admin", "admin123", "Platform Admin", "admin", "active", ALL_PERMISSIONS, 1), + ( + "u_operator", + "operator", + "operator123", + "Platform Operator", + "operator", + "active", + [p for p in ALL_PERMISSIONS if p != "user-settings"], + 0, + ), + ] + conn.executemany( + """ + INSERT INTO users + (id, username, password_hash, display_name, role, status, permissions, create_time, protected) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) + """, + [(u[0], u[1], hash_password(u[2]), u[3], u[4], u[5], json_dumps(u[6]), now, u[7]) for u in users], + ) + + def _duration(self, start_time: str | None, end_time: str | None = None) -> str: + start = parse_time(start_time) + if not start: + return "" + end = parse_time(end_time) or datetime.now(timezone.utc) + seconds = max(0, int((end - start).total_seconds())) + minutes, sec = divmod(seconds, 60) + hours, minutes = divmod(minutes, 60) + if hours: + return f"{hours}h {minutes}m {sec}s" + if minutes: + return f"{minutes}m {sec}s" + return f"{sec}s" + + def refresh_runtime_state(self) -> None: + if get_settings().compute_mode != "simulator": + return + + with self.connect() as conn: + rows = conn.execute( + "SELECT * FROM fine_tune_tasks WHERE status IN ('syncing','queued','running')" + ).fetchall() + now_dt = datetime.now(timezone.utc) + for row in rows: + start = parse_time(row["start_time"]) + if not start: + continue + age = max(0, int((now_dt - start).total_seconds())) + if age < 4: + status, progress = "syncing", 8 + age + elif age < 8: + status, progress = "queued", 18 + age + elif age < 70: + status = "running" + progress = min(96, 25 + int((age - 8) / 62 * 70)) + else: + status, progress = "completed", 100 + + payload = json_loads(row["payload"], {}) + payload.update( + { + "status": status, + "progress": progress, + "train_duration": self._duration(row["start_time"], utcnow() if status == "completed" else None), + } + ) + completed_at = row["completed_at"] or (utcnow() if status == "completed" else None) + conn.execute( + """ + UPDATE fine_tune_tasks + SET status=?, progress=?, payload=?, completed_at=? + WHERE id=? + """, + (status, progress, json_dumps(payload), completed_at, row["id"]), + ) + if status == "completed": + self._ensure_trained_model(conn, payload) + + sync_rows = conn.execute( + "SELECT * FROM resource_sync_jobs WHERE status IN ('pending','running')" + ).fetchall() + for row in sync_rows: + created = parse_time(row["create_time"]) + age = int((now_dt - created).total_seconds()) if created else 0 + status = "completed" if age >= 6 else "running" + progress = 100 if status == "completed" else min(95, 15 + age * 12) + completed_at = row["completed_at"] or (utcnow() if status == "completed" else None) + conn.execute( + "UPDATE resource_sync_jobs SET status=?, progress=?, completed_at=? WHERE id=?", + (status, progress, completed_at, row["id"]), + ) + + def _ensure_trained_model(self, conn: PgConnection, task: dict[str, Any]) -> None: + name = task.get("output_model_name") or f"{task['name']}-lora" + exists = conn.execute("SELECT id FROM trained_models WHERE name=?", (name,)).fetchone() + if exists: + return + model = conn.execute("SELECT path FROM models WHERE id=?", (task.get("base_model"),)).fetchone() + conn.execute( + """ + INSERT INTO trained_models + (id, name, train_methods, base_model_path, create_time, merged, merging, merged_path) + VALUES (?, ?, ?, ?, ?, ?, ?, ?) + """, + ( + new_id("tm"), + name, + json_dumps([{"name": task.get("train_method", "lora")}]), + model["path"] if model else "", + utcnow(), + 0, + 0, + f"/data/yg-ft/outputs/{task['name']}/adapter", + ), + ) + + def users(self) -> list[dict[str, Any]]: + with self.connect() as conn: + rows = conn.execute("SELECT * FROM users ORDER BY create_time").fetchall() + return [self._user(row) for row in rows] + + def login(self, username: str, password: str) -> dict[str, Any] | None: + with self.connect() as conn: + row = conn.execute("SELECT * FROM users WHERE username=?", (username,)).fetchone() + if not row or row["status"] != "active": + return None + matched, legacy_plaintext = verify_password(password, row["password_hash"]) + if not matched: + return None + last_login = utcnow() + if legacy_plaintext: + conn.execute( + "UPDATE users SET password_hash=?, last_login=? WHERE id=?", + (hash_password(password), last_login, row["id"]), + ) + else: + conn.execute("UPDATE users SET last_login=? WHERE id=?", (last_login, row["id"])) + data = self._user(row) + data["last_login"] = last_login + return data + + def create_user(self, payload: dict[str, Any]) -> dict[str, Any]: + user_id = new_id("u") + permissions = payload.get("permissions") or (ALL_PERMISSIONS if payload.get("role") == "admin" else ["dashboard"]) + with self.connect() as conn: + conn.execute( + """ + INSERT INTO users + (id, username, password_hash, display_name, role, status, permissions, create_time, protected) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, 0) + """, + ( + user_id, + payload["username"], + hash_password(payload.get("password", "platform123")), + payload.get("display_name") or payload["username"], + payload.get("role", "viewer"), + payload.get("status", "active"), + json_dumps(permissions), + utcnow(), + ), + ) + return self._user(conn.execute("SELECT * FROM users WHERE id=?", (user_id,)).fetchone()) + + def update_user(self, user_id: str, payload: dict[str, Any]) -> dict[str, Any]: + with self.connect() as conn: + row = conn.execute("SELECT * FROM users WHERE id=?", (user_id,)).fetchone() + if not row: + raise KeyError(user_id) + values = { + "role": payload.get("role", row["role"]), + "status": payload.get("status", row["status"]), + "permissions": json_dumps(payload.get("permissions", json_loads(row["permissions"], []))), + } + conn.execute( + "UPDATE users SET role=?, status=?, permissions=? WHERE id=?", + (values["role"], values["status"], values["permissions"], user_id), + ) + return self._user(conn.execute("SELECT * FROM users WHERE id=?", (user_id,)).fetchone()) + + def delete_user(self, user_id: str) -> None: + with self.connect() as conn: + row = conn.execute("SELECT protected FROM users WHERE id=?", (user_id,)).fetchone() + if not row: + raise KeyError(user_id) + if row["protected"]: + raise ValueError("protected user cannot be deleted") + conn.execute("DELETE FROM users WHERE id=?", (user_id,)) + + def _user(self, row: PgRow) -> dict[str, Any]: + return { + "id": row["id"], + "username": row["username"], + "display_name": row["display_name"], + "role": row["role"], + "status": row["status"], + "permissions": json_loads(row["permissions"], []), + "create_time": row["create_time"], + "last_login": row["last_login"], + "protected": bool(row["protected"]), + } + + def models(self) -> list[dict[str, Any]]: + with self.connect() as conn: + return [dict(row) for row in conn.execute("SELECT * FROM models ORDER BY create_time DESC").fetchall()] + + def model(self, model_id: str) -> dict[str, Any]: + with self.connect() as conn: + row = conn.execute("SELECT * FROM models WHERE id=?", (model_id,)).fetchone() + if not row: + raise KeyError(model_id) + return dict(row) + + def model_by_name(self, name: str) -> dict[str, Any]: + with self.connect() as conn: + row = conn.execute("SELECT * FROM models WHERE name=?", (name,)).fetchone() + if not row: + raise KeyError(name) + return dict(row) + + def create_model(self, payload: dict[str, Any]) -> dict[str, Any]: + model_id = payload.get("id") or new_id("m") + with self.connect() as conn: + conn.execute( + """ + INSERT INTO models + (id, name, type, purpose, model_source, description, path, api_url, api_key, online_model_name, create_time) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + """, + ( + model_id, + payload["name"], + payload.get("type", "LLM"), + payload.get("purpose", "training"), + payload.get("model_source", "local"), + payload.get("description"), + payload.get("path"), + payload.get("api_url"), + payload.get("api_key"), + payload.get("online_model_name"), + utcnow(), + ), + ) + return self.model(model_id) + + def update_model(self, model_id: str, payload: dict[str, Any]) -> dict[str, Any]: + current = self.model(model_id) + merged = {**current, **payload} + with self.connect() as conn: + conn.execute( + """ + UPDATE models + SET name=?, type=?, purpose=?, model_source=?, description=?, path=?, api_url=?, api_key=?, online_model_name=? + WHERE id=? + """, + ( + merged["name"], + merged.get("type", "LLM"), + merged.get("purpose", "training"), + merged.get("model_source", "local"), + merged.get("description"), + merged.get("path"), + merged.get("api_url"), + merged.get("api_key"), + merged.get("online_model_name"), + model_id, + ), + ) + return self.model(model_id) + + def delete_model(self, model_id: str) -> None: + with self.connect() as conn: + conn.execute("DELETE FROM models WHERE id=?", (model_id,)) + + def trained_models(self) -> list[dict[str, Any]]: + self.refresh_runtime_state() + with self.connect() as conn: + rows = conn.execute("SELECT * FROM trained_models ORDER BY create_time DESC").fetchall() + return [ + { + **dict(row), + "train_methods": json_loads(row["train_methods"], []), + "merged": bool(row["merged"]), + "merging": bool(row["merging"]), + } + for row in rows + ] + + def datasets(self) -> list[dict[str, Any]]: + with self.connect() as conn: + rows = conn.execute("SELECT * FROM datasets ORDER BY create_time DESC").fetchall() + return [self._dataset(conn, row) for row in rows] + + def dataset(self, dataset_id: str) -> dict[str, Any]: + with self.connect() as conn: + row = conn.execute("SELECT * FROM datasets WHERE id=?", (dataset_id,)).fetchone() + if not row: + raise KeyError(dataset_id) + return self._dataset(conn, row) + + def _dataset(self, conn: PgConnection, row: PgRow) -> dict[str, Any]: + files = conn.execute( + "SELECT id, name, size, active_version_id, create_time FROM dataset_files WHERE dataset_id=? ORDER BY create_time", + (row["id"],), + ).fetchall() + return { + **dict(row), + "files": [ + { + "id": f["id"], + "name": f["name"], + "size": f["size"], + "active_version_id": f["active_version_id"], + "create_time": f["create_time"], + } + for f in files + ], + } + + def create_dataset(self, payload: dict[str, Any]) -> dict[str, Any]: + dataset_id = payload.get("id") or new_id("ds") + with self.connect() as conn: + conn.execute( + """ + INSERT INTO datasets + (id, name, type, storage_type, source, task_id, size, count, description, create_time) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + """, + ( + dataset_id, + payload["name"], + payload.get("type", "train"), + payload.get("storage_type", "local"), + payload.get("source", "upload"), + payload.get("task_id"), + payload.get("size", "0 KB"), + payload.get("count", 0), + payload.get("description"), + utcnow(), + ), + ) + return self._dataset(conn, conn.execute("SELECT * FROM datasets WHERE id=?", (dataset_id,)).fetchone()) + + def update_dataset(self, dataset_id: str, payload: dict[str, Any]) -> dict[str, Any]: + current = self.dataset(dataset_id) + merged = {**current, **payload} + with self.connect() as conn: + conn.execute( + """ + UPDATE datasets + SET name=?, type=?, storage_type=?, source=?, task_id=?, size=?, count=?, description=? + WHERE id=? + """, + ( + merged["name"], + merged.get("type", "train"), + merged.get("storage_type", "local"), + merged.get("source", "upload"), + merged.get("task_id"), + merged.get("size", "0 KB"), + merged.get("count", 0), + merged.get("description"), + dataset_id, + ), + ) + return self._dataset(conn, conn.execute("SELECT * FROM datasets WHERE id=?", (dataset_id,)).fetchone()) + + def delete_dataset(self, dataset_id: str) -> None: + with self.connect() as conn: + conn.execute("DELETE FROM dataset_files WHERE dataset_id=?", (dataset_id,)) + conn.execute("DELETE FROM datasets WHERE id=?", (dataset_id,)) + + def add_dataset_file(self, conn: PgConnection, dataset_id: str, name: str, content: str) -> dict[str, Any]: + now = utcnow() + file_id = new_id("file") + version_id = f"{file_id}_v1" + size = f"{max(1, len(content.encode('utf-8')) // 1024)} KB" + conn.execute( + """ + INSERT INTO dataset_files + (id, dataset_id, name, size, content, active_version_id, versions, create_time) + VALUES (?, ?, ?, ?, ?, ?, ?, ?) + """, + ( + file_id, + dataset_id, + name, + size, + content, + version_id, + json_dumps([{"id": version_id, "version": 1, "create_time": now, "description": "uploaded"}]), + now, + ), + ) + count = len([line for line in content.splitlines() if line.strip()]) + conn.execute( + "UPDATE datasets SET count=count+?, size=? WHERE id=?", + (count, size, dataset_id), + ) + return {"id": file_id, "name": name, "size": size} + + def dataset_file(self, file_id: str) -> PgRow: + with self.connect() as conn: + row = conn.execute("SELECT * FROM dataset_files WHERE id=?", (file_id,)).fetchone() + if not row: + raise KeyError(file_id) + return row + + def file_versions(self, file_id: str) -> dict[str, Any]: + row = self.dataset_file(file_id) + versions = json_loads(row["versions"], []) + return { + "versions": versions, + "active_version_id": row["active_version_id"], + "next_version_number": len(versions) + 1, + } + + def create_file_version(self, file_id: str, payload: dict[str, Any]) -> dict[str, Any]: + with self.connect() as conn: + row = conn.execute("SELECT * FROM dataset_files WHERE id=?", (file_id,)).fetchone() + if not row: + raise KeyError(file_id) + versions = json_loads(row["versions"], []) + version = { + "id": f"{file_id}_v{len(versions) + 1}", + "version": len(versions) + 1, + "create_time": utcnow(), + "description": payload.get("description", "online edit"), + } + versions.append(version) + conn.execute( + "UPDATE dataset_files SET content=?, active_version_id=?, versions=? WHERE id=?", + (payload.get("content", ""), version["id"], json_dumps(versions), file_id), + ) + return {"version": version, "content": payload.get("content", "")} + + def activate_file_version(self, file_id: str, version_id: str) -> dict[str, Any]: + with self.connect() as conn: + row = conn.execute("SELECT * FROM dataset_files WHERE id=?", (file_id,)).fetchone() + if not row: + raise KeyError(file_id) + versions = json_loads(row["versions"], []) + version = next((item for item in versions if item["id"] == version_id), None) + if not version: + raise KeyError(version_id) + conn.execute("UPDATE dataset_files SET active_version_id=? WHERE id=?", (version_id, file_id)) + return {"version": version, "content": row["content"]} + + def tasks(self) -> list[dict[str, Any]]: + self.refresh_runtime_state() + with self.connect() as conn: + rows = conn.execute("SELECT * FROM fine_tune_tasks ORDER BY create_time DESC").fetchall() + return [self._task(row) for row in rows] + + def task(self, task_id: str) -> dict[str, Any]: + self.refresh_runtime_state() + with self.connect() as conn: + row = conn.execute("SELECT * FROM fine_tune_tasks WHERE id=?", (task_id,)).fetchone() + if not row: + raise KeyError(task_id) + return self._task(row) + + def _task(self, row: PgRow) -> dict[str, Any]: + payload = json_loads(row["payload"], {}) + payload.update( + { + "id": row["id"], + "status": row["status"], + "progress": row["progress"], + "process_id": row["process_id"], + "create_time": row["create_time"], + "gpus": json_loads(row["gpus"], payload.get("gpus", [])), + "train_duration": self._duration(row["start_time"], row["completed_at"]) if row["start_time"] else "", + "compute_node_id": row["compute_node_id"], + "sync_job_id": row["sync_job_id"], + } + ) + return payload + + def create_task(self, payload: dict[str, Any]) -> dict[str, Any]: + task_id = str(payload.get("task_id") or payload.get("id") or new_id("ft")) + name = payload.get("name") or f"fine-tune-{task_id[-6:]}" + base_model = payload.get("base_model") or payload.get("base_model_id") + train_dataset_id = payload.get("train_dataset_id") + if not base_model: + raise ValueError("base_model or base_model_id is required") + if not train_dataset_id: + raise ValueError("train_dataset_id is required") + now = utcnow() + task = { + "id": task_id, + "name": name, + "description": payload.get("description", ""), + "status": "pending", + "train_type": payload.get("train_type", "SFT"), + "train_method": payload.get("train_method", "lora"), + "template": payload.get("template", "qwen"), + "base_model": base_model, + "train_dataset_id": train_dataset_id, + "auto_merge": bool(payload.get("auto_merge", False)), + "output_model_name": payload.get("output_model_name") or f"{name}-lora", + "gpus": payload.get("gpus") or [], + "batch_size": payload.get("batch_size", 2), + "learning_rate": payload.get("learning_rate", 0.0002), + "n_epochs": payload.get("n_epochs", 3), + "save_steps": payload.get("save_steps", 50), + "lr_scheduler_type": payload.get("lr_scheduler_type", "cosine"), + "max_length": payload.get("max_length", 2048), + "warmup_ratio": payload.get("warmup_ratio", 0.03), + "weight_decay": payload.get("weight_decay", 0.01), + "lora_alpha": payload.get("lora_alpha", 16), + "lora_dropout": payload.get("lora_dropout", 0.05), + "lora_rank": payload.get("lora_rank", 8), + "quantization_bit": payload.get("quantization_bit", 4), + "export_quantized": bool(payload.get("export_quantized", False)), + "quant_method": payload.get("quant_method", "bnb"), + "quant_bits": payload.get("quant_bits", 4), + "quant_group_size": payload.get("quant_group_size", 128), + "export_format": payload.get("export_format", "safetensors"), + "progress": 0, + "process_id": None, + "train_duration": "", + "create_time": now, + } + with self.connect() as conn: + conn.execute( + """ + INSERT INTO fine_tune_tasks + (id, name, payload, status, progress, process_id, create_time, gpus) + VALUES (?, ?, ?, 'pending', 0, NULL, ?, ?) + """, + (task_id, name, json_dumps(task), now, json_dumps(task["gpus"])), + ) + return task + + def update_task(self, task_id: str, payload: dict[str, Any]) -> dict[str, Any]: + current = self.task(task_id) + merged = {**current, **payload, "id": task_id} + with self.connect() as conn: + conn.execute( + "UPDATE fine_tune_tasks SET name=?, payload=?, gpus=? WHERE id=?", + (merged["name"], json_dumps(merged), json_dumps(merged.get("gpus", [])), task_id), + ) + return self.task(task_id) + + def start_task(self, payload: dict[str, Any]) -> dict[str, Any]: + task_id = str(payload.get("task_id") or payload.get("id")) + current = self.task(task_id) + merged = {**current, **payload, "id": task_id, "status": "syncing", "progress": 8} + node = self.schedule_node(payload) + selected_gpus = payload.get("gpus") or merged.get("gpus") or [0] + process_id = int(43000 + (time.time() % 10000)) + sync_job_id = self.create_sync_job(node["id"], current) + with self.connect() as conn: + conn.execute( + """ + UPDATE fine_tune_tasks + SET payload=?, status='syncing', progress=8, process_id=?, start_time=?, + compute_node_id=?, gpus=?, sync_job_id=? + WHERE id=? + """, + ( + json_dumps({**merged, "process_id": process_id, "gpus": selected_gpus}), + process_id, + utcnow(), + node["id"], + json_dumps(selected_gpus), + sync_job_id, + task_id, + ), + ) + return self.task(task_id) + + def stop_task(self, task_id: str) -> dict[str, Any]: + task = self.task(task_id) + task.update({"status": "failed", "progress": min(task.get("progress", 0), 99)}) + with self.connect() as conn: + conn.execute( + "UPDATE fine_tune_tasks SET status='failed', payload=?, completed_at=? WHERE id=?", + (json_dumps(task), utcnow(), task_id), + ) + return self.task(task_id) + + def delete_task(self, task_id: str) -> None: + with self.connect() as conn: + conn.execute("DELETE FROM fine_tune_tasks WHERE id=?", (task_id,)) + + def schedule_node(self, payload: dict[str, Any]) -> dict[str, Any]: + requested = payload.get("requested_node_id") or payload.get("compute_node_id") + nodes = self.compute_nodes() + candidates = [ + n + for n in nodes + if n["enabled"] and n["scheduler_status"] == "online" and n["current_running_jobs"] < n["max_parallel_jobs"] + ] + if requested: + selected = next((n for n in candidates if n["id"] == requested), None) + if selected: + return selected + if not candidates: + raise RuntimeError("no available compute node") + return sorted(candidates, key=lambda n: (-n["scheduler_weight"], n["current_running_jobs"], n["code"]))[0] + + def create_sync_job(self, node_id: str, task: dict[str, Any]) -> str: + sync_id = new_id("sync") + with self.connect() as conn: + conn.execute( + """ + INSERT INTO resource_sync_jobs + (id, target_node_id, resources, status, progress, create_time) + VALUES (?, ?, ?, 'pending', 0, ?) + """, + ( + sync_id, + node_id, + json_dumps( + [ + {"resource_type": "model", "resource_id": task.get("base_model")}, + {"resource_type": "dataset", "resource_id": task.get("train_dataset_id")}, + ] + ), + utcnow(), + ), + ) + return sync_id + + def progress(self, task_id: str) -> dict[str, Any]: + task = self.task(task_id) + status = task.get("status", "pending") + labels = { + "pending": "waiting for start", + "syncing": "syncing model and dataset to compute node", + "queued": "waiting for GPU slot", + "running": "training with LLaMA-Factory", + "completed": "training completed", + "failed": "training stopped", + } + progress = int(task.get("progress", 0) or 0) + eta = "--" if status in {"completed", "failed"} else f"{max(1, math.ceil((100 - progress) / 10))} min" + return { + "status": status, + "progress": progress, + "step": labels.get(status, status), + "speed": task.get("train_speed") or "--", + "eta": eta, + } + + def compute_nodes(self) -> list[dict[str, Any]]: + self.refresh_runtime_state() + with self.connect() as conn: + running = conn.execute( + "SELECT compute_node_id, COUNT(*) AS cnt FROM fine_tune_tasks WHERE status IN ('syncing','queued','running') GROUP BY compute_node_id" + ).fetchall() + running_map = {r["compute_node_id"]: r["cnt"] for r in running} + rows = conn.execute("SELECT * FROM compute_nodes ORDER BY scheduler_weight DESC, code").fetchall() + return [ + { + **dict(row), + "enabled": bool(row["enabled"]), + "tags": json_loads(row["tags"], []), + "health_detail": json_loads(row["health_detail"], {}), + "current_running_jobs": running_map.get(row["id"], 0), + } + for row in rows + ] + + def update_compute_node(self, node_id: str, payload: dict[str, Any]) -> dict[str, Any]: + current = next((n for n in self.compute_nodes() if n["id"] == node_id), None) + if not current: + raise KeyError(node_id) + merged = {**current, **payload} + with self.connect() as conn: + conn.execute( + """ + UPDATE compute_nodes + SET name=?, api_base_url=?, file_gateway_url=?, enabled=?, scheduler_status=?, + scheduler_weight=?, tags=?, max_parallel_jobs=?, last_health_check_at=? + WHERE id=? + """, + ( + merged["name"], + merged["api_base_url"], + merged["file_gateway_url"], + 1 if merged["enabled"] else 0, + merged["scheduler_status"], + merged["scheduler_weight"], + json_dumps(merged["tags"]), + merged["max_parallel_jobs"], + utcnow(), + node_id, + ), + ) + return next(n for n in self.compute_nodes() if n["id"] == node_id) + + def create_compute_node(self, payload: dict[str, Any]) -> dict[str, Any]: + node_id = payload.get("id") or new_id("node") + now = utcnow() + tags = payload.get("tags") or [] + with self.connect() as conn: + conn.execute( + """ + INSERT INTO compute_nodes + (id, code, name, api_base_url, file_gateway_url, enabled, scheduler_status, + scheduler_weight, tags, gpu_count, current_running_jobs, max_parallel_jobs, + data_root, model_root, log_root, last_health_check_at, health_detail) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 0, ?, ?, ?, ?, ?, ?) + """, + ( + node_id, + payload["code"], + payload.get("name") or payload["code"], + payload["api_base_url"], + payload.get("file_gateway_url") or payload["api_base_url"], + 1 if payload.get("enabled", True) else 0, + payload.get("scheduler_status", "offline"), + int(payload.get("scheduler_weight", 100)), + json_dumps(tags), + int(payload.get("gpu_count", 0)), + int(payload.get("max_parallel_jobs", 1)), + payload.get("data_root", "/data/yg-ft"), + payload.get("model_root", "/models"), + payload.get("log_root", "/data/yg-ft/training-logs"), + now, + json_dumps(payload.get("health_detail") or {"status": "registered"}), + ), + ) + return next(node for node in self.compute_nodes() if node["id"] == node_id) + + def gpus(self) -> list[dict[str, Any]]: + self.refresh_runtime_state() + with self.connect() as conn: + rows = conn.execute( + """ + SELECT g.*, n.code AS node_code, n.name AS node_name + FROM gpus g JOIN compute_nodes n ON n.id = g.node_id + ORDER BY n.code, g.gpu_index + """ + ).fetchall() + running_tasks = [ + self._task(row) + for row in conn.execute( + "SELECT * FROM fine_tune_tasks WHERE status IN ('syncing','queued','running')" + ).fetchall() + ] + items = [] + for row in rows: + task = next( + ( + t + for t in running_tasks + if t.get("compute_node_id") == row["node_id"] and row["gpu_index"] in (t.get("gpus") or []) + ), + None, + ) + busy = task is not None and task.get("status") == "running" + reserved = task is not None and task.get("status") in {"syncing", "queued"} + memory_used = round(row["memory_total_gb"] * (0.72 if busy else 0.18 if reserved else 0.04), 1) + gpu_percent = 86 if busy else 22 if reserved else 3 + items.append( + { + "id": row["gpu_index"], + "node_id": row["node_id"], + "node_code": row["node_code"], + "node_name": row["node_name"], + "name": row["name"], + "uuid": row["uuid"], + "gpu_percent": gpu_percent, + "memory_used_gb": memory_used, + "memory_total_gb": row["memory_total_gb"], + "memory_percent": round(memory_used / row["memory_total_gb"] * 100, 1), + "temperature": row["base_temperature"] + (21 if busy else 6 if reserved else 0), + "power_w": round(row["power_limit_w"] * (0.7 if busy else 0.25 if reserved else 0.08), 1), + "power_limit_w": row["power_limit_w"], + "status": "busy" if busy else "reserved" if reserved else "idle", + "processes": [ + { + "pid": task["process_id"], + "name": "llamafactory-cli", + "memory_used_gb": memory_used, + "task_name": task["name"], + "user": "admin", + } + ] + if task + else [], + } + ) + return items + + def system_info(self) -> dict[str, Any]: + gpus = self.gpus() + busy = len([g for g in gpus if g["status"] in {"busy", "reserved"}]) + cpu_percent = 18 + busy * 9 + memory_percent = 37 + busy * 4 + return { + "timestamp": utcnow(), + "cpu": { + "percent": min(cpu_percent, 95), + "cores": 32, + "percents": [min(cpu_percent + (i % 7) - 3, 99) for i in range(32)], + "model": "Platform x86_64 CPU", + "frequency_mhz": 2600, + "load_1m": round(cpu_percent / 10, 2), + }, + "memory": { + "used_gb": round(256 * memory_percent / 100, 1), + "total_gb": 256, + "percent": min(memory_percent, 95), + "available_gb": round(256 * (100 - memory_percent) / 100, 1), + "cached_gb": 32, + }, + "disk": { + "used_gb": 840, + "total_gb": 2048, + "percent": 41, + "read_mb_s": 120 if busy else 8, + "write_mb_s": 95 if busy else 5, + }, + "gpu": gpus, + "network": { + "download_mb_s": 12 if busy else 1.2, + "upload_mb_s": 7 if busy else 0.8, + "download_mb": 8024, + "upload_mb": 1732, + }, + "system": { + "uptime_seconds": int(time.time() % 100000), + "process_count": 248 + busy, + "os": "Linux platform compute image", + }, + } + + def health_metrics(self) -> dict[str, float]: + info = self.system_info() + return { + "cpu_percent": info["cpu"]["percent"], + "memory_percent": info["memory"]["percent"], + "disk_percent": info["disk"]["percent"], + } + + def queue(self) -> list[dict[str, Any]]: + return [ + { + "id": task["id"], + "name": task["name"], + "status": task["status"], + "progress": task.get("progress", 0), + "compute_node_id": task.get("compute_node_id"), + "gpus": task.get("gpus", []), + "create_time": task.get("create_time"), + } + for task in self.tasks() + if task["status"] in {"pending", "syncing", "queued", "running"} + ] + + def replicas(self, node_id: str) -> list[dict[str, Any]]: + with self.connect() as conn: + rows = conn.execute( + "SELECT * FROM resource_replicas WHERE node_id=? ORDER BY create_time DESC", + (node_id,), + ).fetchall() + return [dict(row) for row in rows] + + def sync_job(self, sync_id: str) -> dict[str, Any]: + self.refresh_runtime_state() + with self.connect() as conn: + row = conn.execute("SELECT * FROM resource_sync_jobs WHERE id=?", (sync_id,)).fetchone() + if not row: + raise KeyError(sync_id) + return {**dict(row), "resources": json_loads(row["resources"], [])} + + def training_log_files(self) -> list[dict[str, Any]]: + return [ + { + "file": f"train_{task['id']}_pid{task['process_id'] or 0}.log", + "name": task["name"], + "pid": task.get("process_id") or 0, + "size": f"{max(1, int((task.get('progress', 0) or 0) * 1.5))} KB", + "date": task.get("create_time", "")[:10], + } + for task in self.tasks() + ] + + def training_log_content(self, file_name: str) -> dict[str, Any]: + task = next((t for t in self.tasks() if t["id"] in file_name), None) + if not task: + raise KeyError(file_name) + content = self.generate_training_log(task) + return {"file": file_name, "content": content, "size": f"{max(1, len(content.encode('utf-8')) // 1024)} KB"} + + def generate_training_log(self, task: dict[str, Any]) -> str: + progress = int(task.get("progress", 0) or 0) + points = max(1, min(80, progress)) + lines = [ + f"[INFO] task={task['name']} engine=llama_factory status={task['status']}", + f"[INFO] base_model={task.get('base_model')} dataset={task.get('train_dataset_id')} gpus={task.get('gpus', [])}", + "[INFO] command=llamafactory-cli train --stage sft --finetuning_type lora --do_train true", + ] + for step in range(1, points + 1): + if step % 3 != 0 and step != points: + continue + loss = max(0.12, 2.4 * math.exp(-step / 42)) + grad_norm = 0.45 + (step % 8) * 0.03 + lr = float(task.get("learning_rate") or 0.0002) * max(0.05, 1 - step / 120) + epoch = round(step / max(1, points) * float(task.get("n_epochs") or 3), 4) + lines.append( + "{" + f"'loss': {loss:.4f}, 'grad_norm': {grad_norm:.4f}, " + f"'learning_rate': {lr:.8f}, 'epoch': {epoch:.4f}" + "}" + ) + if task.get("status") == "completed": + lines.extend( + [ + "***** train metrics *****", + f"epoch = {task.get('n_epochs', 3)}", + "train_loss = 0.1248", + f"train_runtime = {task.get('train_duration') or '1m 10s'}", + "***** train metrics end *****", + ] + ) + return "\n".join(lines) + + def log_files(self, date: str | None = None) -> list[dict[str, Any]]: + today = date or utcnow()[:10] + return [ + {"file": f"backend-{today}.log", "name": f"backend-{today}.log", "size": "32 KB", "date": today}, + {"file": f"error-{today}.log", "name": f"error-{today}.log", "size": "1 KB", "date": today}, + ] + + def log_content(self, file_name: str) -> dict[str, Any]: + lines = [ + json_dumps( + { + "timestamp": utcnow(), + "level": "INFO", + "logger": "platform", + "file": "backend/app/api/v1/endpoints/platform.py", + "line": 1, + "message": "Platform log stream is available.", + } + ) + ] + return {"file": file_name, "content": "\n".join(lines), "size": "1 KB"} + + +_store: PlatformStore | None = None + + +def get_platform_store() -> PlatformStore: + global _store + if _store is None: + _store = PlatformStore() + return _store + diff --git a/backend/app/db/session.py b/backend/app/db/session.py new file mode 100644 index 0000000..befe080 --- /dev/null +++ b/backend/app/db/session.py @@ -0,0 +1,40 @@ +from __future__ import annotations + +import os +from collections.abc import Generator +from contextlib import contextmanager + +from sqlalchemy import create_engine +from sqlalchemy.orm import Session, sessionmaker + + +DATABASE_URL = os.getenv("DATABASE_URL", "postgresql+psycopg://yg_ft:change_me@localhost:15432/yg_ft") + +engine = create_engine( + DATABASE_URL, + pool_pre_ping=True, + future=True, +) +SessionLocal = sessionmaker(bind=engine, autoflush=False, autocommit=False, expire_on_commit=False, future=True) + + +def get_db() -> Generator[Session, None, None]: + db = SessionLocal() + try: + yield db + finally: + db.close() + + +@contextmanager +def session_scope() -> Generator[Session, None, None]: + db = SessionLocal() + try: + yield db + db.commit() + except Exception: + db.rollback() + raise + finally: + db.close() + diff --git a/backend/app/db/sql/001_platform_runtime.sql b/backend/app/db/sql/001_platform_runtime.sql new file mode 100644 index 0000000..be7daa5 --- /dev/null +++ b/backend/app/db/sql/001_platform_runtime.sql @@ -0,0 +1,133 @@ +CREATE TABLE IF NOT EXISTS users ( + id TEXT PRIMARY KEY, + username TEXT NOT NULL UNIQUE, + password_hash TEXT NOT NULL, + display_name TEXT NOT NULL, + role TEXT NOT NULL, + status TEXT NOT NULL, + permissions TEXT NOT NULL, + create_time TEXT NOT NULL, + last_login TEXT, + protected INTEGER NOT NULL DEFAULT 0 +); + +CREATE TABLE IF NOT EXISTS models ( + id TEXT PRIMARY KEY, + name TEXT NOT NULL UNIQUE, + type TEXT NOT NULL, + purpose TEXT NOT NULL, + model_source TEXT NOT NULL, + description TEXT, + path TEXT, + api_url TEXT, + api_key TEXT, + online_model_name TEXT, + create_time TEXT NOT NULL +); + +CREATE TABLE IF NOT EXISTS trained_models ( + id TEXT PRIMARY KEY, + name TEXT NOT NULL UNIQUE, + train_methods TEXT NOT NULL, + base_model_path TEXT, + create_time TEXT NOT NULL, + merged INTEGER NOT NULL DEFAULT 0, + merging INTEGER NOT NULL DEFAULT 0, + merged_path TEXT +); + +CREATE TABLE IF NOT EXISTS datasets ( + id TEXT PRIMARY KEY, + name TEXT NOT NULL UNIQUE, + type TEXT NOT NULL, + storage_type TEXT NOT NULL, + source TEXT NOT NULL, + task_id TEXT, + size TEXT, + count INTEGER NOT NULL DEFAULT 0, + description TEXT, + create_time TEXT NOT NULL +); + +CREATE TABLE IF NOT EXISTS dataset_files ( + id TEXT PRIMARY KEY, + dataset_id TEXT NOT NULL REFERENCES datasets(id) ON DELETE CASCADE, + name TEXT NOT NULL, + size TEXT, + content TEXT NOT NULL, + active_version_id TEXT NOT NULL, + versions TEXT NOT NULL, + create_time TEXT NOT NULL +); + +CREATE TABLE IF NOT EXISTS compute_nodes ( + id TEXT PRIMARY KEY, + code TEXT NOT NULL UNIQUE, + name TEXT NOT NULL, + api_base_url TEXT NOT NULL, + file_gateway_url TEXT NOT NULL, + enabled INTEGER NOT NULL DEFAULT 1, + scheduler_status TEXT NOT NULL, + scheduler_weight INTEGER NOT NULL DEFAULT 100, + tags TEXT NOT NULL, + gpu_count INTEGER NOT NULL DEFAULT 0, + current_running_jobs INTEGER NOT NULL DEFAULT 0, + max_parallel_jobs INTEGER NOT NULL DEFAULT 2, + data_root TEXT NOT NULL, + model_root TEXT NOT NULL, + log_root TEXT NOT NULL, + last_health_check_at TEXT, + health_detail TEXT NOT NULL +); + +CREATE TABLE IF NOT EXISTS gpus ( + id TEXT PRIMARY KEY, + node_id TEXT NOT NULL REFERENCES compute_nodes(id) ON DELETE CASCADE, + gpu_index INTEGER NOT NULL, + uuid TEXT NOT NULL, + name TEXT NOT NULL, + memory_total_gb DOUBLE PRECISION NOT NULL, + power_limit_w DOUBLE PRECISION NOT NULL, + base_temperature INTEGER NOT NULL +); + +CREATE TABLE IF NOT EXISTS fine_tune_tasks ( + id TEXT PRIMARY KEY, + name TEXT NOT NULL UNIQUE, + payload TEXT NOT NULL, + status TEXT NOT NULL, + progress INTEGER NOT NULL DEFAULT 0, + process_id INTEGER, + create_time TEXT NOT NULL, + start_time TEXT, + completed_at TEXT, + compute_node_id TEXT REFERENCES compute_nodes(id) ON DELETE SET NULL, + gpus TEXT NOT NULL, + sync_job_id TEXT +); + +CREATE TABLE IF NOT EXISTS resource_replicas ( + id TEXT PRIMARY KEY, + node_id TEXT NOT NULL REFERENCES compute_nodes(id) ON DELETE CASCADE, + resource_type TEXT NOT NULL, + resource_id TEXT NOT NULL, + local_path TEXT NOT NULL, + status TEXT NOT NULL, + sync_status TEXT NOT NULL, + create_time TEXT NOT NULL +); + +CREATE TABLE IF NOT EXISTS resource_sync_jobs ( + id TEXT PRIMARY KEY, + target_node_id TEXT NOT NULL, + resources TEXT NOT NULL, + status TEXT NOT NULL, + progress INTEGER NOT NULL DEFAULT 0, + create_time TEXT NOT NULL, + completed_at TEXT +); + +CREATE INDEX IF NOT EXISTS idx_fine_tune_status ON fine_tune_tasks(status); +CREATE INDEX IF NOT EXISTS idx_dataset_files_dataset ON dataset_files(dataset_id); +CREATE INDEX IF NOT EXISTS idx_gpus_node ON gpus(node_id); +CREATE INDEX IF NOT EXISTS idx_replicas_resource ON resource_replicas(resource_type, resource_id); diff --git a/backend/app/main.py b/backend/app/main.py new file mode 100644 index 0000000..37955e7 --- /dev/null +++ b/backend/app/main.py @@ -0,0 +1,26 @@ +from fastapi import FastAPI +from fastapi.middleware.cors import CORSMiddleware + +from app.api.v1.router import api_router +from app.core.config import get_settings +from app.core.logging import configure_logging, setup_request_logging + + +def create_app() -> FastAPI: + settings = get_settings() + configure_logging(settings) + + app = FastAPI(title=settings.app_name) + app.add_middleware( + CORSMiddleware, + allow_origins=settings.cors_allow_origins, + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], + ) + setup_request_logging(app) + app.include_router(api_router, prefix=settings.route_prefix) + return app + + +app = create_app() diff --git a/backend/app/modules/README.md b/backend/app/modules/README.md new file mode 100644 index 0000000..880ff37 --- /dev/null +++ b/backend/app/modules/README.md @@ -0,0 +1,15 @@ +# Backend Module Convention + +每个业务模块建议保持一致结构: + +```text +module_name/ + __init__.py + router.py # FastAPI router + schemas.py # Pydantic request/response models + service.py # Business orchestration + repository.py # Database access + permissions.py # Optional resource permission checks +``` + +模块边界以 `docs/system-development-plan.md` 的页面模块开发工作包为准。 diff --git a/backend/app/modules/approval/__init__.py b/backend/app/modules/approval/__init__.py new file mode 100644 index 0000000..17daab2 --- /dev/null +++ b/backend/app/modules/approval/__init__.py @@ -0,0 +1 @@ +"""Approval workflow module.""" diff --git a/backend/app/modules/audit/__init__.py b/backend/app/modules/audit/__init__.py new file mode 100644 index 0000000..3202b1e --- /dev/null +++ b/backend/app/modules/audit/__init__.py @@ -0,0 +1 @@ +"""Audit log module.""" diff --git a/backend/app/modules/auth/__init__.py b/backend/app/modules/auth/__init__.py new file mode 100644 index 0000000..53ede25 --- /dev/null +++ b/backend/app/modules/auth/__init__.py @@ -0,0 +1 @@ +"""Authentication and user session module.""" diff --git a/backend/app/modules/compute_gateway/__init__.py b/backend/app/modules/compute_gateway/__init__.py new file mode 100644 index 0000000..70436ed --- /dev/null +++ b/backend/app/modules/compute_gateway/__init__.py @@ -0,0 +1 @@ +"""Application-side compute platform gateway module.""" diff --git a/backend/app/modules/data_process/__init__.py b/backend/app/modules/data_process/__init__.py new file mode 100644 index 0000000..3da002b --- /dev/null +++ b/backend/app/modules/data_process/__init__.py @@ -0,0 +1 @@ +"""Data processing module.""" diff --git a/backend/app/modules/dataset/__init__.py b/backend/app/modules/dataset/__init__.py new file mode 100644 index 0000000..9fbd064 --- /dev/null +++ b/backend/app/modules/dataset/__init__.py @@ -0,0 +1 @@ +"""Dataset management module.""" diff --git a/backend/app/modules/engine_registry/__init__.py b/backend/app/modules/engine_registry/__init__.py new file mode 100644 index 0000000..e5237fe --- /dev/null +++ b/backend/app/modules/engine_registry/__init__.py @@ -0,0 +1 @@ +"""Training engine registry module.""" diff --git a/backend/app/modules/eval/__init__.py b/backend/app/modules/eval/__init__.py new file mode 100644 index 0000000..c7f7436 --- /dev/null +++ b/backend/app/modules/eval/__init__.py @@ -0,0 +1 @@ +"""Evaluation module.""" diff --git a/backend/app/modules/file_gateway/__init__.py b/backend/app/modules/file_gateway/__init__.py new file mode 100644 index 0000000..e5e295c --- /dev/null +++ b/backend/app/modules/file_gateway/__init__.py @@ -0,0 +1 @@ +"""Application-side file gateway module.""" diff --git a/backend/app/modules/fine_tune/__init__.py b/backend/app/modules/fine_tune/__init__.py new file mode 100644 index 0000000..3675f07 --- /dev/null +++ b/backend/app/modules/fine_tune/__init__.py @@ -0,0 +1 @@ +"""Fine-tuning task module.""" diff --git a/backend/app/modules/inference/__init__.py b/backend/app/modules/inference/__init__.py new file mode 100644 index 0000000..be36430 --- /dev/null +++ b/backend/app/modules/inference/__init__.py @@ -0,0 +1 @@ +"""Inference and compare module.""" diff --git a/backend/app/modules/model/__init__.py b/backend/app/modules/model/__init__.py new file mode 100644 index 0000000..bcace02 --- /dev/null +++ b/backend/app/modules/model/__init__.py @@ -0,0 +1 @@ +"""Model registry module.""" diff --git a/backend/app/modules/project/__init__.py b/backend/app/modules/project/__init__.py new file mode 100644 index 0000000..ddcbb9a --- /dev/null +++ b/backend/app/modules/project/__init__.py @@ -0,0 +1 @@ +"""Project workspace and member module.""" diff --git a/backend/app/modules/retention/__init__.py b/backend/app/modules/retention/__init__.py new file mode 100644 index 0000000..22eeffc --- /dev/null +++ b/backend/app/modules/retention/__init__.py @@ -0,0 +1 @@ +"""Retention policy and cleanup module.""" diff --git a/backend/app/modules/system/__init__.py b/backend/app/modules/system/__init__.py new file mode 100644 index 0000000..3f76f43 --- /dev/null +++ b/backend/app/modules/system/__init__.py @@ -0,0 +1 @@ +"""System health, metrics and logs module.""" diff --git a/backend/app/modules/tenant/__init__.py b/backend/app/modules/tenant/__init__.py new file mode 100644 index 0000000..06c6143 --- /dev/null +++ b/backend/app/modules/tenant/__init__.py @@ -0,0 +1 @@ +"""Tenant management module.""" diff --git a/backend/app/schemas/__init__.py b/backend/app/schemas/__init__.py new file mode 100644 index 0000000..8bd66a3 --- /dev/null +++ b/backend/app/schemas/__init__.py @@ -0,0 +1 @@ +"""Shared schemas package.""" diff --git a/backend/app/services/__init__.py b/backend/app/services/__init__.py new file mode 100644 index 0000000..84e9714 --- /dev/null +++ b/backend/app/services/__init__.py @@ -0,0 +1 @@ +"""Cross-module services package.""" diff --git a/backend/app/workers/__init__.py b/backend/app/workers/__init__.py new file mode 100644 index 0000000..d4cb435 --- /dev/null +++ b/backend/app/workers/__init__.py @@ -0,0 +1 @@ +"""Background workers package.""" diff --git a/backend/pyproject.toml b/backend/pyproject.toml new file mode 100644 index 0000000..042a8ab --- /dev/null +++ b/backend/pyproject.toml @@ -0,0 +1,32 @@ +[project] +name = "yg-ft-backend" +version = "0.1.0" +description = "Backend service for the model fine-tuning platform" +requires-python = ">=3.12" +dependencies = [ + "fastapi>=0.111.0", + "uvicorn[standard]>=0.30.0", + "python-multipart>=0.0.9", + "pydantic>=2.7.0", + "sqlalchemy>=2.0.30", + "psycopg[binary]>=3.2.1", + "alembic>=1.13.1", + "redis>=5.0.4", + "httpx>=0.27.0", + "PyJWT>=2.8.0", + "passlib[bcrypt]>=1.7.4", + "python-dotenv>=1.0.1", +] + +[project.optional-dependencies] +dev = [ + "pytest>=8.2.0", + "ruff>=0.5.0", +] + +[tool.ruff] +line-length = 100 +target-version = "py312" + +[tool.pytest.ini_options] +testpaths = ["tests"] diff --git a/backend/requirements.txt b/backend/requirements.txt new file mode 100644 index 0000000..6ef0933 --- /dev/null +++ b/backend/requirements.txt @@ -0,0 +1,12 @@ +fastapi>=0.111.0 +uvicorn[standard]>=0.30.0 +python-multipart>=0.0.9 +pydantic>=2.7.0 +sqlalchemy>=2.0.30 +psycopg[binary]>=3.2.1 +alembic>=1.13.1 +redis>=5.0.4 +httpx>=0.27.0 +PyJWT>=2.8.0 +passlib[bcrypt]>=1.7.4 +python-dotenv>=1.0.1 diff --git a/compute/README.md b/compute/README.md new file mode 100644 index 0000000..ac094ea --- /dev/null +++ b/compute/README.md @@ -0,0 +1,29 @@ +# Compute Platform + +算力平台与应用平台分开部署,本目录用于后续实现单机多 GPU 调度、文件网关和训练引擎适配。 + +## 目录结构 + +```text +compute/ + api/ # 只允许应用平台访问的内部 Compute API + agent/ # 单机 Agent,负责 GPU、进程、工作区管理 + engines/ + llama_factory/ # LLaMA-Factory 训练引擎适配器 + file_gateway/ # 本地磁盘上传、下载、预览、离线导入 + tests/ +``` + +## 开发职责 + +- GPU 发现、状态上报、锁定和释放。 +- 本地磁盘工作区管理。 +- 创建、停止、查询训练/评测/推理/合并任务。 +- LLaMA-Factory 命令生成、日志解析、产物收集。 +- 分片上传、短时下载、离线导入。 +- 通过服务间 token 接受应用平台调用。 + +## 运行模式 + +- 默认 `COMPUTE_EXECUTION_MODE=real`,Compute API 只暴露健康检查和接口契约;真实训练执行器完成前,创建作业会返回未实现错误。 +- 仅隔离联调时可设置 `COMPUTE_EXECUTION_MODE=simulator`,启用内存状态机和合成 GPU/日志数据。该模式不得作为生产运行路径。 diff --git a/compute/__init__.py b/compute/__init__.py new file mode 100644 index 0000000..fe51931 --- /dev/null +++ b/compute/__init__.py @@ -0,0 +1 @@ +"""Compute platform package.""" diff --git a/compute/agent/__init__.py b/compute/agent/__init__.py new file mode 100644 index 0000000..3f8fd74 --- /dev/null +++ b/compute/agent/__init__.py @@ -0,0 +1 @@ +"""Compute agent package.""" diff --git a/compute/api/__init__.py b/compute/api/__init__.py new file mode 100644 index 0000000..4a6735a --- /dev/null +++ b/compute/api/__init__.py @@ -0,0 +1 @@ +"""Compute API package.""" diff --git a/compute/api/main.py b/compute/api/main.py new file mode 100644 index 0000000..b90201a --- /dev/null +++ b/compute/api/main.py @@ -0,0 +1,211 @@ +from __future__ import annotations + +import os +import math +import time +from pathlib import Path +from typing import Any + +from fastapi import FastAPI, HTTPException + +from compute.engines.llama_factory.adapter import build_command, parse_log_line + + +def create_app() -> FastAPI: + app = FastAPI(title="YG Fine-Tune Compute API") + jobs: dict[str, dict[str, Any]] = {} + route_prefix = os.getenv("MODELTF_ROUTE_PREFIX", "/modelTF").rstrip("/") or "/modelTF" + + def now() -> float: + return time.time() + + def host_id() -> str: + return os.getenv("COMPUTE_HOST_ID", "gpu-node-01") + + def execution_mode() -> str: + return os.getenv("COMPUTE_EXECUTION_MODE", os.getenv("COMPUTE_MODE", "real")).lower() + + def job_status(job: dict[str, Any]) -> dict[str, Any]: + if execution_mode() != "simulator": + return job + elapsed = max(0, int(now() - job["created_at"])) + if job["status"] not in {"stopped", "failed", "completed"}: + if elapsed < 5: + job["status"] = "queued" + job["progress"] = 12 + elapsed * 3 + elif elapsed < 60: + job["status"] = "running" + job["progress"] = min(96, 25 + int((elapsed - 5) / 55 * 70)) + else: + job["status"] = "completed" + job["progress"] = 100 + job["logs"] = generate_logs(job) + return job + + def generate_logs(job: dict[str, Any]) -> str: + progress = int(job.get("progress", 0) or 0) + points = max(1, min(80, progress)) + lines = [ + f"[INFO] compute_host_id={host_id()} job_id={job['id']} engine=llama_factory", + f"[INFO] command={' '.join(job['command'])}", + ] + for step in range(1, points + 1): + if step % 4 != 0 and step != points: + continue + loss = max(0.11, 2.5 * math.exp(-step / 40)) + grad_norm = 0.4 + (step % 5) * 0.04 + lr = 0.0002 * max(0.05, 1 - step / 100) + epoch = round(step / points * 3, 4) + lines.append( + "{" + f"'loss': {loss:.4f}, 'grad_norm': {grad_norm:.4f}, " + f"'learning_rate': {lr:.8f}, 'epoch': {epoch:.4f}" + "}" + ) + if job.get("status") == "completed": + lines.extend( + [ + "***** train metrics *****", + "epoch = 3", + "train_loss = 0.1181", + "train_runtime = 1m 0s", + "***** train metrics end *****", + ] + ) + return "\n".join(lines) + + def gpu_resources() -> list[dict[str, Any]]: + if execution_mode() != "simulator": + return [] + active_jobs = [job_status(job) for job in jobs.values() if job["status"] in {"queued", "running"}] + gpus: list[dict[str, Any]] = [] + for idx in range(4): + task = next((job for job in active_jobs if idx in job.get("gpus", [])), None) + busy = task is not None and task["status"] == "running" + reserved = task is not None and task["status"] == "queued" + gpus.append( + { + "id": idx, + "uuid": f"GPU-{host_id().upper()}-{idx}", + "name": os.getenv("COMPUTE_GPU_NAME", "NVIDIA A800-SXM4-80GB"), + "status": "busy" if busy else "reserved" if reserved else "idle", + "gpu_percent": 88 if busy else 25 if reserved else 4, + "memory_used_gb": 58 if busy else 12 if reserved else 2, + "memory_total_gb": 80, + "temperature": 61 if busy else 45 if reserved else 36, + "power_w": 215 if busy else 80 if reserved else 25, + "power_limit_w": 300, + "processes": [ + { + "pid": task["pid"], + "name": "llamafactory-cli", + "task_name": task["name"], + "memory_used_gb": 58 if busy else 12, + } + ] + if task + else [], + } + ) + return gpus + + @app.get(f"{route_prefix}/health") + async def health_check() -> dict[str, str]: + return { + "status": "ok", + "compute_host_id": os.getenv("COMPUTE_HOST_ID", "unknown"), + } + + @app.get(f"{route_prefix}/v1/compute/health") + async def compute_health_check() -> dict[str, str | bool]: + data_root = Path(os.getenv("YG_FT_DATA_ROOT", "/data/yg-ft")) + llama_factory_home = Path(os.getenv("LLAMA_FACTORY_HOME", "/app/LLaMA-Factory")) + return { + "status": "ok", + "compute_host_id": os.getenv("COMPUTE_HOST_ID", "unknown"), + "app_callback_enabled": os.getenv("ENABLE_APP_CALLBACK", "false").lower() == "true", + "data_root": str(data_root), + "data_root_exists": data_root.exists(), + "llama_factory_home": str(llama_factory_home), + "llama_factory_home_exists": llama_factory_home.exists(), + "execution_mode": execution_mode(), + } + + @app.get(f"{route_prefix}/v1/compute/jobs") + async def list_jobs_alias() -> dict[str, list[dict[str, Any]]]: + return {"items": [job_status(job) for job in jobs.values()]} + + @app.get(f"{route_prefix}/compute/resources/gpus") + async def list_gpus() -> dict[str, Any]: + return {"items": gpu_resources(), "compute_host_id": host_id()} + + @app.post(f"{route_prefix}/compute/jobs") + async def create_job(payload: dict[str, Any]) -> dict[str, Any]: + try: + command = build_command(payload, os.getenv("LLAMA_FACTORY_HOME", "/app/LLaMA-Factory")) + except ValueError as exc: + raise HTTPException(status_code=400, detail=str(exc)) + if execution_mode() != "simulator": + raise HTTPException( + status_code=501, + detail="real compute executor is not implemented yet; set COMPUTE_EXECUTION_MODE=simulator only for isolated development", + ) + job_id = str(payload.get("id") or f"job_{int(now() * 1000)}") + job = { + "id": job_id, + "name": payload.get("name", job_id), + "status": "queued", + "progress": 10, + "pid": int(52000 + now() % 10000), + "gpus": payload.get("gpus") or [0], + "created_at": now(), + "command": command.command, + "work_dir": command.work_dir, + "artifacts": [], + "logs": "", + } + jobs[job_id] = job + return job_status(job) + + @app.get(f"{route_prefix}/compute/jobs") + async def list_jobs() -> dict[str, Any]: + return {"items": [job_status(job) for job in jobs.values()]} + + @app.get(f"{route_prefix}/compute/jobs/{{job_id}}") + async def get_job(job_id: str) -> dict[str, Any]: + job = jobs.get(job_id) + if not job: + raise HTTPException(status_code=404, detail="job not found") + return job_status(job) + + @app.post(f"{route_prefix}/compute/jobs/{{job_id}}/stop") + async def stop_job(job_id: str) -> dict[str, Any]: + job = jobs.get(job_id) + if not job: + raise HTTPException(status_code=404, detail="job not found") + job["status"] = "stopped" + job["progress"] = min(job.get("progress", 0), 99) + return job + + @app.get(f"{route_prefix}/compute/jobs/{{job_id}}/logs") + async def job_logs(job_id: str) -> dict[str, Any]: + job = jobs.get(job_id) + if not job: + raise HTTPException(status_code=404, detail="job not found") + job = job_status(job) + metrics = [parse_log_line(line) for line in job["logs"].splitlines()] + return {"job_id": job_id, "content": job["logs"], "metrics": [m for m in metrics if m]} + + @app.post(f"{route_prefix}/compute/files/upload") + async def upload_file(payload: dict[str, Any]) -> dict[str, Any]: + file_id = str(payload.get("id") or f"file_{int(now() * 1000)}") + return {"id": file_id, "status": "available", "local_path": f"/data/yg-ft/uploads/{file_id}"} + + @app.get(f"{route_prefix}/compute/files/{{file_id}}/download") + async def download_file(file_id: str) -> dict[str, Any]: + return {"id": file_id, "status": "ready", "download_url": f"{route_prefix}/compute/files/{file_id}/download"} + + return app + + +app = create_app() diff --git a/compute/engines/__init__.py b/compute/engines/__init__.py new file mode 100644 index 0000000..adb1576 --- /dev/null +++ b/compute/engines/__init__.py @@ -0,0 +1 @@ +"""Training engine adapters package.""" diff --git a/compute/engines/llama_factory/__init__.py b/compute/engines/llama_factory/__init__.py new file mode 100644 index 0000000..eac03ba --- /dev/null +++ b/compute/engines/llama_factory/__init__.py @@ -0,0 +1 @@ +"""LLaMA-Factory engine adapter package.""" diff --git a/compute/engines/llama_factory/adapter.py b/compute/engines/llama_factory/adapter.py new file mode 100644 index 0000000..7e5fc17 --- /dev/null +++ b/compute/engines/llama_factory/adapter.py @@ -0,0 +1,80 @@ +from __future__ import annotations + +import re +from dataclasses import dataclass +from pathlib import Path +from typing import Any + + +@dataclass(frozen=True) +class LlamaFactoryCommand: + command: list[str] + work_dir: str + env: dict[str, str] + + +def validate_config(config: dict[str, Any]) -> list[str]: + errors: list[str] = [] + if not config.get("base_model") and not config.get("model_name_or_path"): + errors.append("base_model or model_name_or_path is required") + if not config.get("dataset") and not config.get("dataset_dir"): + errors.append("dataset or dataset_dir is required") + learning_rate = float(config.get("learning_rate", 0.0002)) + if learning_rate <= 0: + errors.append("learning_rate must be greater than zero") + epochs = int(config.get("n_epochs", config.get("num_train_epochs", 1))) + if epochs <= 0: + errors.append("n_epochs must be greater than zero") + return errors + + +def build_command(config: dict[str, Any], llama_factory_home: str = "/app/LLaMA-Factory") -> LlamaFactoryCommand: + errors = validate_config(config) + if errors: + raise ValueError("; ".join(errors)) + + model_path = config.get("base_model") or config.get("model_name_or_path") + dataset = config.get("dataset") or config.get("dataset_dir") + output_dir = config.get("output_dir") or f"/data/yg-ft/outputs/{config.get('name', 'training-job')}" + command = [ + "llamafactory-cli", + "train", + "--stage", + str(config.get("stage", "sft")).lower(), + "--do_train", + "true", + "--model_name_or_path", + str(model_path), + "--dataset", + str(dataset), + "--template", + str(config.get("template", "qwen")), + "--finetuning_type", + str(config.get("train_method", config.get("finetuning_type", "lora"))), + "--output_dir", + str(output_dir), + "--per_device_train_batch_size", + str(config.get("batch_size", 2)), + "--learning_rate", + str(config.get("learning_rate", 0.0002)), + "--num_train_epochs", + str(config.get("n_epochs", 3)), + "--save_steps", + str(config.get("save_steps", 50)), + ] + quantization_bit = int(config.get("quantization_bit", 0) or 0) + if quantization_bit in {4, 8}: + command.extend(["--quantization_bit", str(quantization_bit)]) + return LlamaFactoryCommand(command=command, work_dir=str(Path(llama_factory_home)), env={}) + + +def parse_log_line(line: str) -> dict[str, float] | None: + if "loss" not in line or "learning_rate" not in line: + return None + result: dict[str, float] = {} + for key in ["loss", "grad_norm", "learning_rate", "epoch"]: + match = re.search(rf"['\"]?{key}['\"]?\s*:\s*([-+]?\d+(?:\.\d+)?(?:[eE][-+]?\d+)?)", line) + if match: + result[key] = float(match.group(1)) + return result or None + diff --git a/compute/file_gateway/__init__.py b/compute/file_gateway/__init__.py new file mode 100644 index 0000000..e781d5e --- /dev/null +++ b/compute/file_gateway/__init__.py @@ -0,0 +1 @@ +"""Local file gateway package.""" diff --git a/compute/requirements.txt b/compute/requirements.txt new file mode 100644 index 0000000..922f92e --- /dev/null +++ b/compute/requirements.txt @@ -0,0 +1,5 @@ +fastapi>=0.111.0 +uvicorn[standard]>=0.30.0 +pydantic>=2.7.0 +python-dotenv>=1.0.1 +httpx>=0.27.0 diff --git a/compute/tests/__init__.py b/compute/tests/__init__.py new file mode 100644 index 0000000..a95c0bf --- /dev/null +++ b/compute/tests/__init__.py @@ -0,0 +1 @@ +"""Compute platform tests package.""" diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 0000000..f41ba59 --- /dev/null +++ b/docker/README.md @@ -0,0 +1,267 @@ +# Docker 部署说明 + +本目录按应用服务器和算力服务器拆分 Dockerfile 与 Docker Compose 文件。Compose 文件不包含 `build:`,不会在 `docker compose up` 时自动构建业务镜像。所有业务镜像需要先通过手动 `docker build` 构建,再由 Compose 启动。 + +## 基础镜像 + +| 镜像 | 用途 | +| --- | --- | +| `python:3.12-slim` | 应用后端基础镜像,后端运行环境要求 Python 3.12 及以上 | +| `nginx:1.27-alpine` | 前端静态资源与 `/modelTF` 反向代理运行镜像 | +| `hiyouga/llamafactory:latest` | 算力服务基础镜像,基于 LLaMA-Factory 官方镜像扩展 Compute API | +| `postgres:16-alpine` | 开发阶段内置 PostgreSQL | +| `redis:7-alpine` | 开发阶段内置 Redis | + +一键拉取基础镜像: + +```bash +docker pull python:3.12-slim && \ +docker pull nginx:1.27-alpine && \ +docker pull hiyouga/llamafactory:latest && \ +docker pull postgres:16-alpine && \ +docker pull redis:7-alpine +``` + +Windows PowerShell: + +```powershell +$images = @( + "python:3.12-slim", + "nginx:1.27-alpine", + "hiyouga/llamafactory:latest", + "postgres:16-alpine", + "redis:7-alpine" +) +$images | ForEach-Object { docker pull $_ } +``` + +如果部署环境不能访问外网,需要提前在可联网环境执行上述拉取命令,再用 `docker save` / `docker load` 导出导入。 + +## 业务镜像 + +| 镜像 | Dockerfile | 构建命令 | +| --- | --- | --- | +| `yg-ft-backend-api:latest` | `docker/app/Dockerfile.backend` | `docker build -f docker/app/Dockerfile.backend -t yg-ft-backend-api:latest .` | +| `yg-ft-frontend-runtime:latest` | `docker/app/Dockerfile.frontend` | `docker build -f docker/app/Dockerfile.frontend -t yg-ft-frontend-runtime:latest .` | +| `yg-ft-compute-api:latest` | `docker/compute/Dockerfile.compute` | `docker build -f docker/compute/Dockerfile.compute -t yg-ft-compute-api:latest .` | + +## 对外端口 + +所有宿主机对外端口统一使用 5 位端口。容器内部端口保持镜像默认端口,便于容器内服务和健康检查稳定。 + +| 服务 | 宿主机对外端口 | 容器内部端口 | 说明 | +| --- | --- | --- | --- | +| 前端 Nginx | `16801` | `80` | 前端页面入口 | +| 后端 API | `17861` | `8000` | FastAPI 服务 | +| PostgreSQL | `15432` | `5432` | 开发阶段内置数据库 | +| Redis | `16379` | `6379` | 开发阶段内置缓存 | +| Compute API | `19100` | `9100` | 算力服务器 API | +| File Gateway | `19101` | 后续服务端口 | 当前预留,后续拆出文件网关服务时使用 | + +注意:`8000` 是后端容器内部端口,不作为宿主机对外访问端口。宿主机或浏览器应访问 `http://:17861/modelTF/health`;前端 Nginx 容器在 Docker 网络内部访问 `http://backend-api:8000/modelTF/...`。 + +对应配置文件: + +- `docker/app/.env.example` + - `FRONTEND_PORT=16801` + - `BACKEND_API_PORT=17861` + - `POSTGRES_PORT=15432` + - `REDIS_PORT=16379` +- `docker/compute/.env.example` + - `COMPUTE_API_PORT=19100` + - `FILE_GATEWAY_PORT=19101` + +## 运行模式 + +- 应用侧默认 `COMPUTE_MODE=real`,任务状态必须由真实算力同步逻辑更新。 +- 算力侧默认 `COMPUTE_EXECUTION_MODE=real`,真实执行器未完成前不会伪造训练作业。 +- 仅隔离联调时可显式设置 `COMPUTE_MODE=simulator` 或 `COMPUTE_EXECUTION_MODE=simulator`,该模式不得用于测试环境、生产环境或生产升级基线。 + +## 应用服务器部署 + +应用服务器包含前端 Nginx、Backend API、PostgreSQL、Redis。 + +当前 Compose 内置 PostgreSQL 使用 `backend/app/db/sql/001_platform_runtime.sql` 初始化运行库。`docs/postgres-schema.sql` 是完整目标架构设计,不应直接挂载为当前运行库初始化脚本,否则会与当前后端代码的运行表结构不兼容。 + +首次部署: + +```bash +cd + +# 1. 使用当前 Windows/宿主机 npm 构建前端静态产物 +cd frontend +npm ci +npm run build +cd .. + +# 2. 手动构建业务镜像 +docker build -f docker/app/Dockerfile.backend -t yg-ft-backend-api:latest . +docker build -f docker/app/Dockerfile.frontend -t yg-ft-frontend-runtime:latest . + +# 3. 启动应用服务 +cd docker/app +cp .env.example .env +docker compose up -d +``` + +后端镜像构建过程中会执行依赖导入自检,确认 `fastapi`、`uvicorn`、`psycopg`、`sqlalchemy`、`redis` 等运行依赖已安装。构建后也可以手动检查: + +```bash +docker run --rm yg-ft-backend-api:latest python -c "import psycopg; print(psycopg.__version__)" +``` + +默认访问地址: + +```text +http://:16801 +``` + +应用侧代码和数据外挂: + +```text +../../backend -> /app +../../frontend/dist -> /usr/share/nginx/html +../../runtime/app/logs/backend -> /opt/yg-ft/logs/backend +../../runtime/app/data -> /data/yg-ft +``` + +前端容器启动前必须确保 `../../frontend/dist/index.html` 已存在。若前端 Nginx 日志出现 `directory index of "/usr/share/nginx/html/" is forbidden` 或 `rewrite or internal redirection cycle while internally redirecting to "/index.html"`,通常表示当前执行 `docker compose` 的项目目录下没有构建好的 `frontend/dist`,或挂载路径不是同一份代码目录。 + +```bash +# 在执行 docker compose 的同一份代码目录中检查 +cd /frontend +npm run build +test -f dist/index.html && ls -lh dist/index.html + +cd ../docker/app +docker compose up -d --force-recreate frontend +docker compose logs --tail=80 frontend +``` + +如果使用 Windows npm 构建、WSL 中运行 Docker Compose,需要确认 Windows 路径和 WSL 路径指向同一份仓库。例如在 `D:\...\YG_FT\frontend` 构建不会自动生成 `/mnt/d/wuyongtao/Code/YG_FT/frontend/dist` 下的产物,除非二者本就是同一个目录。 + +如果使用企业统一 PostgreSQL/Redis,修改 `docker/app/.env`: + +```env +DATABASE_URL=postgresql+psycopg://:@:15432/ +REDIS_URL=redis://:16379/0 +USE_BUILTIN_POSTGRES=false +USE_BUILTIN_REDIS=false +``` + +生产环境如完全使用外部基础设施,可以删除或注释 Compose 中的 `postgres`、`redis` 服务及 `backend-api.depends_on` 中对应依赖。 + +## 算力服务器部署 + +算力服务器包含 Compute API、后续 Compute Agent、File Gateway、GPU runtime、本地训练数据目录和 LLaMA-Factory。`Dockerfile.compute` 基于 LLaMA-Factory 官方镜像: + +```dockerfile +FROM hiyouga/llamafactory:latest +``` + +部署前需要安装: + +- NVIDIA Driver +- NVIDIA Container Toolkit +- Docker Engine 和 Docker Compose Plugin +- 本地训练数据目录,默认 `/data/yg-ft` + +首次部署: + +```bash +cd + +# 手动构建算力业务镜像 +docker build -f docker/compute/Dockerfile.compute -t yg-ft-compute-api:latest . + +# 启动算力服务 +cd docker/compute +cp .env.example .env +docker compose up -d +``` + +健康检查: + +```text +GET http://:19100/modelTF/health +GET http://:19100/modelTF/v1/compute/health +``` + +算力侧代码和数据外挂: + +```text +../../compute -> /app/compute +${YG_FT_DATA_ROOT_HOST} -> /data/yg-ft +../../runtime/compute/logs -> /opt/yg-ft/logs/compute +../../runtime/compute/training-logs -> /opt/yg-ft/logs/training +``` + +## 应用与算力分离部署 + +应用服务器只需要主动访问算力服务器,不要求算力服务器回调应用服务器。 + +在 `docker/app/.env` 中配置: + +```env +COMPUTE_API_BASE_URL=http://:19100 +FILE_GATEWAY_BASE_URL=http://:19101 +COMPUTE_SERVICE_TOKEN=change_me +COMPUTE_STATUS_SYNC_MODE=polling +COMPUTE_POLL_INTERVAL_SECONDS=10 +COMPUTE_POLL_BATCH_SIZE=100 +``` + +交互链路: + +```text +Frontend + -> Backend API + -> Compute API + -> Compute Agent / LLaMA-Factory + -> 本地数据目录 / 模型目录 / 训练产物 + <- Backend Worker 定时轮询 Compute API +``` + +## 多算力节点部署 + +多算力节点仍按“单机多 GPU 节点”部署。每台 GPU 服务器都独立部署一套 `docker/compute`: + +```text +gpu-node-01: docker/compute + /data/yg-ft + 19100/19101 +gpu-node-02: docker/compute + /data/yg-ft + 19100/19101 +gpu-node-03: docker/compute + /data/yg-ft + 19100/19101 +``` + +节点之间默认不互访。应用平台主动访问每个节点的 Compute API/File Gateway,并通过 `compute_nodes`、`resource_replicas`、`resource_sync_jobs` 统一调度和同步。 + +## 常用命令 + +重新构建应用镜像: + +```bash +docker build -f docker/app/Dockerfile.backend -t yg-ft-backend-api:latest . +docker build -f docker/app/Dockerfile.frontend -t yg-ft-frontend-runtime:latest . +``` + +重新构建算力镜像: + +```bash +docker build -f docker/compute/Dockerfile.compute -t yg-ft-compute-api:latest . +``` + +启动服务: + +```bash +cd docker/app +docker compose up -d + +cd ../compute +docker compose up -d +``` + +查看服务: + +```bash +docker compose ps +docker compose logs -f +``` diff --git a/docker/app/.env.example b/docker/app/.env.example new file mode 100644 index 0000000..c4c81a5 --- /dev/null +++ b/docker/app/.env.example @@ -0,0 +1,45 @@ +APP_ENV=prod +APP_NAME=YG Fine-Tune Platform API +MODELTF_ROUTE_PREFIX=/modelTF +CORS_ALLOW_ORIGINS=http://localhost:16801,http://127.0.0.1:16801 + +FRONTEND_IMAGE=yg-ft-frontend-runtime:latest +BACKEND_API_IMAGE=yg-ft-backend-api:latest + +# Five-digit host ports exposed outside the application server. +FRONTEND_PORT=16801 +BACKEND_API_PORT=17861 +POSTGRES_PORT=15432 +REDIS_PORT=16379 + +POSTGRES_DB=yg_ft +POSTGRES_USER=yg_ft +POSTGRES_PASSWORD=change_me +DATABASE_URL=postgresql+psycopg://yg_ft:change_me@postgres:5432/yg_ft + +REDIS_URL=redis://redis:6379/0 + +# Development uses the built-in PostgreSQL/Redis services in docker-compose.yml. +# For enterprise infrastructure, replace DATABASE_URL/REDIS_URL and remove or disable those services. +USE_BUILTIN_POSTGRES=true +USE_BUILTIN_REDIS=true + +LOG_LEVEL=INFO +LOG_DIR=/opt/yg-ft/logs/backend +LOG_FILE_PREFIX=backend +LOG_ERROR_FILE_PREFIX=error +LOG_MAX_BYTES=20971520 +LOG_RETENTION_DAYS=10 + +BACKEND_PROXY_PASS=http://backend-api:8000 + +# Split deployment: set these to the compute server address, for example http://10.10.20.31:19100. +COMPUTE_API_BASE_URL=http://compute-api:9100 +COMPUTE_SERVICE_TOKEN=change_me +FILE_GATEWAY_BASE_URL=http://compute-api:9101 + +# The application side polls Compute API for job state to avoid opening reverse network access. +COMPUTE_MODE=real +COMPUTE_STATUS_SYNC_MODE=polling +COMPUTE_POLL_INTERVAL_SECONDS=10 +COMPUTE_POLL_BATCH_SIZE=100 diff --git a/docker/app/Dockerfile.backend b/docker/app/Dockerfile.backend new file mode 100644 index 0000000..1f03dca --- /dev/null +++ b/docker/app/Dockerfile.backend @@ -0,0 +1,21 @@ +FROM python:3.12-slim + +ENV PYTHONDONTWRITEBYTECODE=1 \ + PYTHONUNBUFFERED=1 \ + PIP_NO_CACHE_DIR=1 + +WORKDIR /app + +COPY backend/requirements.txt /tmp/requirements.txt +RUN pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple \ + && pip install -r /tmp/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple \ + && rm -f /tmp/requirements.txt + +RUN python -c "import fastapi, uvicorn, psycopg, sqlalchemy, redis, jwt, passlib, httpx, alembic; print('backend dependency check ok')" + +RUN mkdir -p /opt/yg-ft/logs/backend /data/yg-ft \ + && chmod -R 0775 /opt/yg-ft /data/yg-ft + +EXPOSE 8000 + +CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"] diff --git a/docker/app/Dockerfile.frontend b/docker/app/Dockerfile.frontend new file mode 100644 index 0000000..3f7dee3 --- /dev/null +++ b/docker/app/Dockerfile.frontend @@ -0,0 +1,9 @@ + +FROM nginx:1.27-alpine + +RUN mkdir -p /usr/share/nginx/html + +EXPOSE 80 + +HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \ + CMD test -f /usr/share/nginx/html/index.html && wget -qO- http://127.0.0.1/index.html >/dev/null || exit 1 diff --git a/docker/app/docker-compose.yml b/docker/app/docker-compose.yml new file mode 100644 index 0000000..29d8b43 --- /dev/null +++ b/docker/app/docker-compose.yml @@ -0,0 +1,123 @@ +services: + frontend: + image: ${FRONTEND_IMAGE:-yg-ft-frontend-runtime:latest} + container_name: yg-ft-frontend + depends_on: + backend-api: + condition: service_started + ports: + - "${FRONTEND_PORT:-16801}:80" + environment: + BACKEND_PROXY_PASS: ${BACKEND_PROXY_PASS:-http://backend-api:8000} + volumes: + - ../../frontend/dist:/usr/share/nginx/html:ro + - ../nginx.conf.template:/etc/nginx/templates/default.conf.template:ro + command: + - /bin/sh + - -c + - | + if [ ! -f /usr/share/nginx/html/index.html ]; then + echo "frontend dist is missing: build frontend first and ensure ../../frontend/dist is mounted"; + ls -la /usr/share/nginx/html; + exit 1; + fi; + nginx -g 'daemon off;' + networks: + - yg-ft-app + restart: unless-stopped + + backend-api: + image: ${BACKEND_API_IMAGE:-yg-ft-backend-api:latest} + container_name: yg-ft-backend-api + depends_on: + postgres: + condition: service_healthy + redis: + condition: service_healthy + expose: + - "8000" + ports: + - "${BACKEND_API_PORT:-17861}:8000" + environment: + APP_ENV: ${APP_ENV:-prod} + APP_NAME: ${APP_NAME:-YG Fine-Tune Platform API} + MODELTF_ROUTE_PREFIX: ${MODELTF_ROUTE_PREFIX:-/modelTF} + CORS_ALLOW_ORIGINS: ${CORS_ALLOW_ORIGINS:-http://localhost:16801,http://127.0.0.1:16801} + DATABASE_URL: ${DATABASE_URL:-postgresql+psycopg://yg_ft:change_me@postgres:5432/yg_ft} + REDIS_URL: ${REDIS_URL:-redis://redis:6379/0} + USE_BUILTIN_POSTGRES: ${USE_BUILTIN_POSTGRES:-true} + USE_BUILTIN_REDIS: ${USE_BUILTIN_REDIS:-true} + LOG_LEVEL: ${LOG_LEVEL:-INFO} + LOG_DIR: ${LOG_DIR:-/opt/yg-ft/logs/backend} + LOG_FILE_PREFIX: ${LOG_FILE_PREFIX:-backend} + LOG_ERROR_FILE_PREFIX: ${LOG_ERROR_FILE_PREFIX:-error} + LOG_MAX_BYTES: ${LOG_MAX_BYTES:-20971520} + LOG_RETENTION_DAYS: ${LOG_RETENTION_DAYS:-10} + COMPUTE_API_BASE_URL: ${COMPUTE_API_BASE_URL:-http://compute-api:9100} + COMPUTE_SERVICE_TOKEN: ${COMPUTE_SERVICE_TOKEN:-change_me} + FILE_GATEWAY_BASE_URL: ${FILE_GATEWAY_BASE_URL:-http://compute-api:9101} + COMPUTE_MODE: ${COMPUTE_MODE:-real} + COMPUTE_STATUS_SYNC_MODE: ${COMPUTE_STATUS_SYNC_MODE:-polling} + COMPUTE_POLL_INTERVAL_SECONDS: ${COMPUTE_POLL_INTERVAL_SECONDS:-10} + COMPUTE_POLL_BATCH_SIZE: ${COMPUTE_POLL_BATCH_SIZE:-100} + PYTHONPATH: /app + volumes: + - ../../backend:/app:ro + - ../../runtime/app/logs/backend:/opt/yg-ft/logs/backend + - ../../runtime/app/data:/data/yg-ft + networks: + - yg-ft-app + healthcheck: + test: ["CMD-SHELL", "python -c \"import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/modelTF/health', timeout=3).read()\""] + interval: 30s + timeout: 5s + retries: 3 + start_period: 20s + restart: unless-stopped + + postgres: + image: postgres:16-alpine + container_name: yg-ft-postgres + environment: + POSTGRES_DB: ${POSTGRES_DB:-yg_ft} + POSTGRES_USER: ${POSTGRES_USER:-yg_ft} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-change_me} + PGDATA: /var/lib/postgresql/data/pgdata + volumes: + - postgres_data:/var/lib/postgresql/data + - ../../backend/app/db/sql/001_platform_runtime.sql:/docker-entrypoint-initdb.d/001-platform-runtime.sql:ro + ports: + - "${POSTGRES_PORT:-15432}:5432" + networks: + - yg-ft-app + healthcheck: + test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] + interval: 10s + timeout: 5s + retries: 5 + restart: unless-stopped + + redis: + image: redis:7-alpine + container_name: yg-ft-redis + command: ["redis-server", "--appendonly", "yes"] + volumes: + - redis_data:/data + ports: + - "${REDIS_PORT:-16379}:6379" + networks: + - yg-ft-app + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 10s + timeout: 3s + retries: 5 + restart: unless-stopped + +networks: + yg-ft-app: + name: yg-ft-app + +volumes: + postgres_data: + redis_data: diff --git a/docker/compute/.env.example b/docker/compute/.env.example new file mode 100644 index 0000000..3106017 --- /dev/null +++ b/docker/compute/.env.example @@ -0,0 +1,23 @@ +COMPUTE_ENV=prod +COMPUTE_HOST_ID=gpu-node-01 +COMPUTE_EXECUTION_MODE=real +MODELTF_ROUTE_PREFIX=/modelTF +# Five-digit host ports exposed outside the compute server. +COMPUTE_API_PORT=19100 +FILE_GATEWAY_PORT=19101 +COMPUTE_API_IMAGE=yg-ft-compute-api:latest + +# The application server actively polls Compute API; compute server does not need reverse access. +COMPUTE_SERVICE_TOKEN=change_me +ENABLE_APP_CALLBACK=false + +# LLaMA-Factory is provided by the official hiyouga/llamafactory base image. +LLAMA_FACTORY_HOME=/app/LLaMA-Factory + +YG_FT_DATA_ROOT=/data/yg-ft +YG_FT_DATA_ROOT_HOST=/data/yg-ft + +LOG_DIR=/opt/yg-ft/logs/compute +CUDA_VISIBLE_DEVICES=all +NVIDIA_VISIBLE_DEVICES=all +NVIDIA_DRIVER_CAPABILITIES=compute,utility diff --git a/docker/compute/Dockerfile.compute b/docker/compute/Dockerfile.compute new file mode 100644 index 0000000..60af155 --- /dev/null +++ b/docker/compute/Dockerfile.compute @@ -0,0 +1,27 @@ + +FROM hiyouga/llamafactory:latest + +ENV DEBIAN_FRONTEND=noninteractive \ + PYTHONDONTWRITEBYTECODE=1 \ + PYTHONUNBUFFERED=1 \ + PIP_NO_CACHE_DIR=1 + +WORKDIR /app + +RUN apt-get update \ + && apt-get install -y --no-install-recommends tini \ + && rm -rf /var/lib/apt/lists/* + +COPY compute/requirements.txt /tmp/requirements.txt +RUN pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple \ + && pip install -r /tmp/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple \ + && rm -f /tmp/requirements.txt + +RUN mkdir -p /opt/yg-ft/logs/compute /opt/yg-ft/logs/training /data/yg-ft /app/LLaMA-Factory \ + && chmod -R 0775 /opt/yg-ft /data/yg-ft /app/LLaMA-Factory + +ENTRYPOINT ["/usr/bin/tini", "--"] + +EXPOSE 9100 + +CMD ["uvicorn", "compute.api.main:app", "--host", "0.0.0.0", "--port", "9100"] diff --git a/docker/compute/docker-compose.yml b/docker/compute/docker-compose.yml new file mode 100644 index 0000000..70f859e --- /dev/null +++ b/docker/compute/docker-compose.yml @@ -0,0 +1,39 @@ +services: + compute-api: + image: ${COMPUTE_API_IMAGE:-yg-ft-compute-api:latest} + container_name: yg-ft-compute-api + gpus: all + ports: + - "${COMPUTE_API_PORT:-19100}:9100" + environment: + COMPUTE_ENV: ${COMPUTE_ENV:-prod} + COMPUTE_HOST_ID: ${COMPUTE_HOST_ID:-gpu-node-01} + COMPUTE_EXECUTION_MODE: ${COMPUTE_EXECUTION_MODE:-real} + MODELTF_ROUTE_PREFIX: ${MODELTF_ROUTE_PREFIX:-/modelTF} + COMPUTE_SERVICE_TOKEN: ${COMPUTE_SERVICE_TOKEN:-change_me} + ENABLE_APP_CALLBACK: ${ENABLE_APP_CALLBACK:-false} + LLAMA_FACTORY_HOME: ${LLAMA_FACTORY_HOME:-/app/LLaMA-Factory} + YG_FT_DATA_ROOT: ${YG_FT_DATA_ROOT:-/data/yg-ft} + LOG_DIR: ${LOG_DIR:-/opt/yg-ft/logs/compute} + CUDA_VISIBLE_DEVICES: ${CUDA_VISIBLE_DEVICES:-all} + NVIDIA_VISIBLE_DEVICES: ${NVIDIA_VISIBLE_DEVICES:-all} + NVIDIA_DRIVER_CAPABILITIES: ${NVIDIA_DRIVER_CAPABILITIES:-compute,utility} + PYTHONPATH: /app + volumes: + - ../../compute:/app/compute:ro + - ${YG_FT_DATA_ROOT_HOST:-/data/yg-ft}:${YG_FT_DATA_ROOT:-/data/yg-ft} + - ../../runtime/compute/logs:/opt/yg-ft/logs/compute + - ../../runtime/compute/training-logs:/opt/yg-ft/logs/training + networks: + - yg-ft-compute + healthcheck: + test: ["CMD-SHELL", "python -c \"import urllib.request; urllib.request.urlopen('http://127.0.0.1:9100/modelTF/health', timeout=3).read()\""] + interval: 30s + timeout: 5s + retries: 3 + start_period: 20s + restart: unless-stopped + +networks: + yg-ft-compute: + name: yg-ft-compute diff --git a/docker/nginx.conf.template b/docker/nginx.conf.template new file mode 100644 index 0000000..1137000 --- /dev/null +++ b/docker/nginx.conf.template @@ -0,0 +1,30 @@ +server { + listen 80; + server_name _; + + root /usr/share/nginx/html; + index index.html; + + client_max_body_size 200m; + + location / { + try_files $uri $uri/ /index.html; + } + + location /modelTF { + proxy_pass ${BACKEND_PROXY_PASS}; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_read_timeout 300s; + proxy_send_timeout 300s; + } + + location ~* \.(?:js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf)$ { + try_files $uri =404; + expires 30d; + add_header Cache-Control "public, immutable"; + } +} diff --git a/docs/backend-api-design.md b/docs/backend-api-design.md new file mode 100644 index 0000000..80da56b --- /dev/null +++ b/docs/backend-api-design.md @@ -0,0 +1,1161 @@ +# 模型微调平台后端接口设计 + +> 后端建议使用 FastAPI,统一挂载 `/modelTF` 前缀。本文根据当前 Vue 前端路由、API 模块和页面交互契约梳理接口,并补充完整微调平台必须具备的用户中心、权限控制、审计、异步任务、文件版本与监控能力。前端 Mock 仅作为隔离开发辅助,不作为接口设计准则。 + +菜单、二级路由、规划菜单、接口和数据库的总览映射见 `docs/menu-functional-requirements.md`。后续新增接口时,必须同步标注对应页面/功能模块。 + +## 1. 通用约定 + +### 1.1 统一响应 + +```json +{ + "code": 0, + "message": "ok", + "data": {} +} +``` + +- `code=0` 成功;非 0 为业务错误。 +- HTTP 状态码仍用于认证失败、权限不足、参数错误、系统异常。 +- 前端当前 axios 已按 `{ code, data, message }` 解包。 + +### 1.2 认证与权限 + +- 登录成功返回 JWT access token,前端后续请求增加 `Authorization: Bearer `。 +- 当前前端权限码:`dashboard`、`fine-tune`、`model-eval`、`model-inference`、`model-manage`、`dataset`、`data-process`、`data-convert`、`hardware`、`logs`、`user-settings`。 +- 后端 RBAC 建议按 `permission.code + role_permission + user_permission_override` 实现。 +- 所有写操作记录审计日志。 + +### 1.3 分页、排序、筛选 + +当前前端大多直接取数组,后端建议同时支持分页,便于数据量增长: + +```text +page=1&page_size=20&keyword=xxx&sort=-created_at +``` + +分页响应: + +```json +{ + "items": [], + "total": 0, + "page": 1, + "page_size": 20 +} +``` + +### 1.4 异步任务 + +训练、评测、模型加载、数据处理、文件转换都应落为异步任务: + +- 创建任务:返回 `task_id`。 +- 查询详情:返回状态、进度、错误信息、运行统计。 +- 实时进度:优先 SSE,必要时 WebSocket。 + +通用状态建议:`pending`、`running`、`completed`、`failed`、`stopped`。 + +## 2. 用户中心与系统权限 + +### 2.1 登录 + +`POST /modelTF/login` + +请求: + +```json +{ + "username": "admin", + "password": "password" +} +``` + +响应: + +```json +{ + "token": "jwt-token", + "user": { + "id": "uuid", + "username": "admin", + "display_name": "系统管理员", + "role": "admin", + "status": "active", + "permissions": ["dashboard", "fine-tune"], + "create_time": "2026-07-16T10:00:00+08:00", + "last_login": "2026-07-16T10:00:00+08:00", + "protected": true + } +} +``` + +说明:前端当前登录接口已经要求返回 `user`,正式后端必须返回完整用户信息。 + +### 2.2 当前用户 + +`GET /modelTF/me` + +用于刷新页面后恢复用户信息和权限,避免完全依赖 localStorage。 + +### 2.3 用户管理 + +| 方法 | 路径 | 说明 | 权限 | +| --- | --- | --- | --- | +| GET | `/modelTF/users` | 用户列表 | `user-settings` | +| POST | `/modelTF/users` | 创建用户 | `user-settings` | +| PUT | `/modelTF/users/{id}` | 更新角色、状态、页面权限 | `user-settings` | +| DELETE | `/modelTF/users/{id}` | 删除用户 | `user-settings` | +| PUT | `/modelTF/users/{id}/password` | 重置密码 | `user-settings` | + +创建用户请求: + +```json +{ + "username": "zhangsan", + "display_name": "张三", + "password": "InitialPass123", + "role": "operator", + "status": "active", + "permissions": ["dashboard", "fine-tune", "dataset"] +} +``` + +更新权限请求: + +```json +{ + "role": "viewer", + "status": "active", + "permissions": ["dashboard", "logs"] +} +``` + +## 3. 服务看板与系统监控 + +### 3.1 首页看板 + +`GET /modelTF/dashboard/overview?period=7d` + +返回: + +```json +{ + "health": { + "state": "normal", + "online_services": 12, + "running_tasks": 5, + "pending_alerts": 2 + }, + "service_statuses": [ + { "name": "模型推理", "state": "normal", "instances_online": 6, "instances_total": 6 } + ], + "training_stats": [ + { "date": "2026-07-16", "train_count": 11, "gpu_count": 5, "avg_score": 89.0 } + ], + "recent_tasks": [], + "operation_distribution": [], + "login_duration_rank": [], + "recent_login_users": [] +} +``` + +说明:首页需要由后端提供正式聚合接口,避免前端拼多接口导致加载慢。 + +### 3.2 健康指标 + +`GET /modelTF/health` + +响应字段兼容前端 `HealthMetrics`: + +```json +{ + "cpu_percent": 32, + "memory_percent": 58, + "disk_percent": 45 +} +``` + +### 3.3 平台性能 + +`GET /modelTF/system-info` + +返回 CPU、内存、磁盘、GPU、网络、系统运行时间。GPU 进程字段建议包含 `pid`、`name`、`memory_used_gb`、`task_name`、`user`。 + +### 3.4 日志 + +| 方法 | 路径 | 说明 | +| --- | --- | --- | +| GET | `/modelTF/log-files?date=2026-07-16` | 系统日志文件列表 | +| GET | `/modelTF/log-content?file=system.log` | 系统日志内容 | +| GET | `/modelTF/training-log-files` | 训练日志文件列表 | +| GET | `/modelTF/training-log-content?file=xxx.log` | 训练日志内容 | +| POST | `/modelTF/web-log` | 前端错误/行为日志 | + +日志内容应支持 `tail`、`offset`、`limit` 参数,避免一次返回超大文件。 + +## 4. 模型管理 + +### 4.1 模型登记 + +| 方法 | 路径 | 说明 | +| --- | --- | --- | +| GET | `/modelTF/model-manage` | 模型列表 | +| GET | `/modelTF/model-manage/{id}` | 模型详情 | +| GET | `/modelTF/model-manage/name/{name}` | 按名称查询 | +| POST | `/modelTF/model-manage` | 创建模型 | +| PUT | `/modelTF/model-manage/{id}` | 编辑模型 | +| DELETE | `/modelTF/model-manage/{id}` | 删除模型 | +| PUT | `/modelTF/model-manage/{id}/purpose` | 修改用途 | +| GET | `/modelTF/model-manage/local-models` | 扫描本地模型目录 | + +创建/编辑请求: + +```json +{ + "name": "Qwen2.5-7B-Instruct", + "type": "LLM", + "purpose": "training", + "model_source": "local", + "description": "训练基座", + "path": "/data/models/qwen2.5-7b", + "api_url": null, + "api_key": null, + "online_model_name": null +} +``` + +字段说明: + +- `type`: `LLM`、`CV`、`NLP`、`Embedding`、`Other`。 +- `purpose`: `training`、`inference`、`evaluation`。 +- `model_source`: `local`、`api`。 +- `api_key` 后端加密存储,列表接口只返回脱敏值。 + +### 4.2 已训练模型与权重合并 + +| 方法 | 路径 | 说明 | +| --- | --- | --- | +| GET | `/modelTF/model-manage/trained-models` | 已训练模型列表 | +| DELETE | `/modelTF/model-manage/trained-models/{id}?type=merged\|lora` | 删除训练产物 | +| POST | `/modelTF/model-manage/merge` | 合并 LoRA 权重 | +| GET | `/modelTF/model-manage/trained-models/{model_name}/export` | 导出模型文件 | + +合并请求: + +```json +{ + "model_name": "qwen-ft-finance-001", + "train_method": "lora", + "base_model_path": "/data/models/qwen2.5-7b" +} +``` + +响应: + +```json +{ + "merge_task_id": "uuid", + "status": "pending" +} +``` + +## 5. 数据集管理 + +### 5.1 数据集 + +| 方法 | 路径 | 说明 | +| --- | --- | --- | +| GET | `/modelTF/dataset-manage` | 数据集列表 | +| GET | `/modelTF/dataset-manage/{id}` | 数据集详情 | +| POST | `/modelTF/dataset-manage` | 创建数据集 | +| PUT | `/modelTF/dataset-manage/{id}` | 更新数据集 | +| DELETE | `/modelTF/dataset-manage/{id}` | 删除数据集 | +| POST | `/modelTF/dataset-manage/upload/{dataset_id}` | 上传文件,字段名 `files` | +| GET | `/modelTF/dataset-manage/download/{dataset_id}` | 打包下载数据集 | +| GET | `/modelTF/dataset-manage/download/{dataset_id}/{file_id}` | 下载单文件 | + +创建数据集: + +```json +{ + "name": "金融问答-训练集", + "type": "train", + "storage_type": "local", + "source": "upload", + "description": "金融领域问答", + "task_id": null +} +``` + +数据集类型: + +- `type`: `train`、`test`、`eval`、`val`、`other`。 +- `storage_type`: `local`、`minio`、`cloud`。 +- `source`: `upload`、`task`。 + +### 5.2 文件预览与版本 + +| 方法 | 路径 | 说明 | +| --- | --- | --- | +| GET | `/modelTF/dataset-manage/preview/{file_id}` | 当前版本内容预览 | +| GET | `/modelTF/dataset-manage/versions/{file_id}` | 文件版本列表 | +| GET | `/modelTF/dataset-manage/versions/{file_id}/{version_id}` | 读取历史版本 | +| POST | `/modelTF/dataset-manage/versions/{file_id}` | 保存为新版本 | +| PUT | `/modelTF/dataset-manage/versions/{file_id}/active` | 切换当前版本 | +| DELETE | `/modelTF/dataset-manage/versions/{file_id}/{version_id}` | 删除非当前、非初始版本 | + +创建新版本: + +```json +{ + "content": "{\"instruction\":\"...\"}\n", + "description": "在线编辑", + "base_version_id": "uuid", + "expected_current_version_id": "uuid" +} +``` + +说明:`expected_current_version_id` 用于乐观锁,防止多人编辑覆盖。 + +## 6. 数据处理 + +当前数据处理页面需要后端正式承接上传、切片、生成、编辑和发布流程,建议实现以下接口。 + +### 6.1 任务列表与详情 + +| 方法 | 路径 | 说明 | +| --- | --- | --- | +| GET | `/modelTF/data-process` | 数据处理任务列表 | +| POST | `/modelTF/data-process` | 创建草稿任务 | +| GET | `/modelTF/data-process/{id}` | 任务详情 | +| PUT | `/modelTF/data-process/{id}` | 更新任务配置 | +| DELETE | `/modelTF/data-process/{id}` | 删除任务 | +| POST | `/modelTF/data-process/{id}/start` | 启动处理 | +| POST | `/modelTF/data-process/{id}/stop` | 停止处理 | +| GET | `/modelTF/data-process/{id}/progress` | 查询进度 | +| GET | `/modelTF/data-process/{id}/events` | SSE 实时进度 | + +创建任务: + +```json +{ + "name": "客服问答数据清洗", + "description": "清洗并生成 SFT 数据", + "process_type": "structured", + "config": { + "preprocess_options": ["clean_invalid", "detect_structure", "deduplicate"], + "dataset_split": { "train": 80, "validation": 10, "test": 10 }, + "generation_model_id": "uuid", + "generation_prompt": "请生成训练数据", + "temperature": 0.7, + "max_tokens": 1024, + "json_mode": false, + "quality_filter_enabled": true + } +} +``` + +### 6.2 源文件与外部数据源 + +| 方法 | 路径 | 说明 | +| --- | --- | --- | +| POST | `/modelTF/data-process/{id}/source-files` | 上传源文件,字段名 `files` | +| DELETE | `/modelTF/data-process/{id}/source-files/{file_id}` | 移除源文件 | +| POST | `/modelTF/data-process/{id}/external/test` | 测试外部数据源连接 | +| POST | `/modelTF/data-process/{id}/external/pull` | 拉取外部数据并生成源文件 | + +外部数据源请求: + +```json +{ + "type": "mysql", + "url": "mysql://host:3306/db", + "auth_mode": "password", + "username": "user", + "password": "secret", + "token": null, + "limit": 1000 +} +``` + +安全要求:连接密码/token 不落明文,任务详情只回显脱敏配置。 + +### 6.3 预览切片 + +| 方法 | 路径 | 说明 | +| --- | --- | --- | +| POST | `/modelTF/data-process/{id}/preview/build` | 根据源文件和配置生成预览切片 | +| GET | `/modelTF/data-process/{id}/preview` | 查询预览切片 | +| PUT | `/modelTF/data-process/{id}/preview/{preview_id}` | 编辑切片内容 | +| POST | `/modelTF/data-process/{id}/preview` | 手动新增切片 | +| DELETE | `/modelTF/data-process/{id}/preview/{preview_id}` | 删除切片 | + +预览切片字段: + +```json +{ + "id": "uuid", + "source_file_id": "uuid", + "original_content": "...", + "edited_content": "...", + "source_start": 0, + "source_end": 100, + "source_start_line": 1, + "source_end_line": 5, + "token_count": 50, + "status": "original" +} +``` + +### 6.4 生成结果与发布数据集 + +| 方法 | 路径 | 说明 | +| --- | --- | --- | +| POST | `/modelTF/data-process/{id}/generate` | 启动 LLM 生成 | +| GET | `/modelTF/data-process/{id}/results` | 查询结果明细 | +| PUT | `/modelTF/data-process/{id}/results/{result_id}` | 编辑结果 | +| POST | `/modelTF/data-process/{id}/results/{result_id}/restore` | 恢复原始结果 | +| POST | `/modelTF/data-process/{id}/publish` | 发布为数据集 | + +结果字段: + +```json +{ + "instruction": "生成简洁客服回复", + "input": "用户反馈页面加载慢", + "output": "已收到反馈,我们正在排查。", + "status": "valid" +} +``` + +发布请求: + +```json +{ + "dataset_name": "客服问答清洗集", + "dataset_type": "train", + "storage_type": "local", + "split": { "train": 80, "validation": 10, "test": 10 }, + "format": "alpaca_jsonl" +} +``` + +## 7. 模型微调 + +### 7.1 训练任务 + +| 方法 | 路径 | 说明 | +| --- | --- | --- | +| GET | `/modelTF/fine-tune` | 训练任务列表 | +| GET | `/modelTF/fine-tune/{id}` | 训练任务详情 | +| GET | `/modelTF/fine-tune/check-name?name=xxx` | 任务名查重 | +| POST | `/modelTF/fine-tune` | 创建训练任务记录 | +| POST | `/modelTF/fine-tune/start` | 启动训练 | +| PUT | `/modelTF/fine-tune/{id}` | 更新任务 | +| POST | `/modelTF/fine-tune/stop/{id}` | 停止任务 | +| DELETE | `/modelTF/fine-tune/{id}` | 删除任务 | +| GET | `/modelTF/fine-tune/progress/{id}` | 获取训练进度 | +| GET | `/modelTF/fine-tune/{id}/events` | SSE 训练日志/进度 | +| POST | `/modelTF/fine-tune/tensorboard/start` | 启动 TensorBoard | + +启动训练请求兼容前端 `FineTuneStartPayload`: + +```json +{ + "task_id": "uuid", + "name": "finance-sft-001", + "description": "金融 SFT", + "train_type": "SFT", + "train_method": "lora", + "template": "qwen", + "base_model": "uuid", + "train_dataset_id": "uuid", + "auto_merge": true, + "output_model_name": "qwen-finance-sft-v1", + "gpus": [0, 1], + "batch_size": 1, + "learning_rate": 0.0001, + "n_epochs": 1, + "save_steps": 100, + "lr_scheduler_type": "cosine", + "max_length": 512, + "warmup_ratio": 0.05, + "weight_decay": 0.01, + "lora_alpha": 16, + "lora_dropout": 0.1, + "lora_rank": 8, + "quantization_bit": 4, + "export_quantized": false, + "quant_method": "", + "quant_bits": 0, + "quant_group_size": 0, + "export_format": "" +} +``` + +### 7.2 训练日志详情页 + +训练日志页还会联合调用: + +- `GET /modelTF/fine-tune/{id}` 获取任务参数。 +- `GET /modelTF/dataset-manage/{id}` 获取训练集信息。 +- `GET /modelTF/system-info` 获取 GPU 状态。 +- `GET /modelTF/training-log-files`、`GET /modelTF/training-log-content` 获取日志。 + +建议新增: + +`GET /modelTF/fine-tune/{id}/overview` + +一次返回任务、数据集、GPU、日志摘要、指标曲线,减少页面聚合复杂度。 + +## 8. 模型评测 + +### 8.1 评测任务 + +| 方法 | 路径 | 说明 | +| --- | --- | --- | +| GET | `/modelTF/model-eval` | 评测任务列表 | +| GET | `/modelTF/model-eval/{id}` | 评测详情 | +| POST | `/modelTF/model-eval/start` | 启动评测 | +| DELETE | `/modelTF/model-eval/{id}` | 删除评测 | +| GET | `/modelTF/model-eval/{id}/events` | SSE 评测进度 | + +启动评测: + +```json +{ + "eval_task_name": "金融模型评测-v1", + "eval_type": "custom", + "model_id": "uuid", + "gpu_id": 0, + "dataset_id": "uuid", + "dimension_id": "uuid", + "data_source": "dataset", + "leaderboard": true, + "basic_metrics": { + "bleu": { "enabled": true, "ngram": 4 }, + "rouge": { "enabled": true, "methods": ["rouge-1", "rouge-l"] }, + "cosine": { "enabled": false }, + "output_precision": 3 + } +} +``` + +详情响应应包含: + +- 综合分数、最大分、总体评价、改进建议。 +- 维度汇总。 +- 样本级输入、参考答案、模型输出、评分、原因、错误类型。 + +### 8.2 评测维度 + +| 方法 | 路径 | 说明 | +| --- | --- | --- | +| GET | `/modelTF/dimension` | 维度列表 | +| GET | `/modelTF/dimension/{id}` | 维度详情 | +| POST | `/modelTF/dimension` | 创建维度 | +| PUT | `/modelTF/dimension/{id}` | 编辑维度 | +| DELETE | `/modelTF/dimension/{id}` | 删除维度 | + +维度请求: + +```json +{ + "name": "回答准确性", + "type": "classification", + "description": "评估回答是否准确", + "eval_model": "uuid", + "eval_method": "standard", + "eval_prompt": "你是专业评测专家...", + "is_active": true, + "bleu_n": null, + "output_precision": 3, + "score_min": 0, + "score_max": 100, + "pass_threshold": 70 +} +``` + +## 9. 模型推理与对比 + +前端将“推理”和“模型对比”共用 `model-compare` 接口。 + +### 9.1 推理/对比任务 + +| 方法 | 路径 | 说明 | +| --- | --- | --- | +| GET | `/modelTF/model-compare` | 推理/对比任务列表 | +| GET | `/modelTF/model-compare/{id}` | 任务详情 | +| POST | `/modelTF/model-compare` | 创建任务 | +| DELETE | `/modelTF/model-compare/{id}` | 删除任务 | +| POST | `/modelTF/model-compare/{id}/load` | 加载任务内模型 | +| POST | `/modelTF/model-compare/{id}/unload` | 卸载任务内模型 | +| GET | `/modelTF/model-compare/{id}/load-status` | 查询加载状态 | +| POST | `/modelTF/model-compare/{id}/load-status` | 更新加载状态 | +| POST | `/modelTF/model-compare/{id}/start-model` | 启动单个模型服务 | +| POST | `/modelTF/model-compare/stop-by-pid` | 按 PID 停止模型 | +| POST | `/modelTF/model-compare/all/stop-all` | 停止全部旧模型服务 | + +创建任务: + +```json +{ + "name": "金融模型对比", + "description": "对比基座与微调模型", + "models": [ + { + "model_id": "uuid", + "model_name": "Qwen2.5-7B-Instruct", + "model_path": "/data/models/qwen2.5-7b", + "gpu_id": 0, + "source": "database" + } + ] +} +``` + +### 9.2 对话接口 + +| 方法 | 路径 | 说明 | +| --- | --- | --- | +| POST | `/modelTF/model-compare/stream-chat` | 流式对话,建议 SSE/chunked | +| POST | `/modelTF/model-compare/chat-with-port` | 指定端口非流式对话 | +| POST | `/modelTF/model-chat/batch` | API 模型批量对话 | +| POST | `/modelTF/model-chat/local/chat` | 本地模型对话 | +| POST | `/modelTF/model-chat/local/preload` | 预加载本地模型 | +| POST | `/modelTF/model-chat/trained/preload` | 预加载已训练模型 | + +流式请求: + +```json +{ + "task_id": "uuid", + "model_id": "uuid", + "messages": [ + { "role": "user", "content": "解释什么是 ROE" } + ], + "temperature": 0.7, + "max_tokens": 1024, + "stream": true +} +``` + +建议落库会话与消息,便于对比结果页查看历史。 + +## 10. 数据转换与工具中心 + +### 10.1 数据转换 + +当前 JSON 转 JSONL 页面是 UI 原型,建议接口: + +| 方法 | 路径 | 说明 | +| --- | --- | --- | +| POST | `/modelTF/data-convert/jobs` | 创建转换任务,multipart 上传源文件 | +| GET | `/modelTF/data-convert/jobs/{id}` | 转换任务详情 | +| GET | `/modelTF/data-convert/jobs/{id}/download` | 下载转换结果 | +| DELETE | `/modelTF/data-convert/jobs/{id}` | 删除转换任务 | + +请求字段: + +- `source_file`: `.json` 文件。 +- `output_name`: 输出文件名。 +- `encoding`: 默认 `UTF-8`。 +- `convert_type`: `json_to_jsonl`。 + +### 10.2 自定义工具 + +当前自定义工具仅 localStorage,若要多用户共享,建议接口: + +| 方法 | 路径 | 说明 | +| --- | --- | --- | +| GET | `/modelTF/tools` | 工具列表 | +| POST | `/modelTF/tools` | 创建工具 | +| GET | `/modelTF/tools/{id}` | 工具详情 | +| PUT | `/modelTF/tools/{id}` | 编辑工具 | +| DELETE | `/modelTF/tools/{id}` | 删除工具 | + +字段:`name`、`description`、`url`、`icon`、`visibility`、`owner_id`。 + +## 11. 后端开发需要补齐的关键点 + +1. 前端路由已有 `user-settings`、`user-create`、`user-permission`、`permission-denied`,但当前仓库缺少对应 Vue 文件;后端仍应先实现用户中心和权限接口。 +2. 数据处理主流程需要后端正式实现上传、切片、LLM 生成、结果编辑、发布数据集。 +3. 训练、评测、数据处理、模型加载都不应同步阻塞 HTTP;建议接 Celery/RQ/Arq 或 FastAPI BackgroundTasks + 独立 worker。 +4. 文件内容不要全部入库;数据库保存元数据、版本、校验和、对象存储路径,内容放本地 NAS/MinIO。 +5. API Key、外部数据源密码必须加密存储,接口只回显脱敏。 +6. 日志和监控数据增长快,需要分区或保留策略。 +7. 建议实现 OpenAPI schema,并用 Pydantic enum 与数据库 enum 对齐。 + +## 12. 仍需确认的问题 + +1. 部署形态已确认:多算力节点仍按“单机多 GPU 节点”管理,不引入 K8s;每台 GPU 服务器独立部署 Compute API/Agent/File Gateway/LLaMA-Factory。 +2. 文件存储:使用本地磁盘、NAS、MinIO,还是对象存储?是否需要断点续传? +3. 训练框架:是否固定使用 LLaMA-Factory?是否还要支持 Transformers 原生、DeepSpeed、Accelerate? +4. 权限粒度:页面级权限是否足够,还是需要到数据集/模型/任务的所有者与项目空间级权限? +5. 多租户/项目空间:是否需要组织、项目、团队隔离? +6. 审批流程:模型发布、数据集删除、停止训练等危险操作是否需要审批? +7. 评测方式:只支持规则指标 + LLM Judge,还是需要人工标注/复核闭环? +8. 推理服务:是否需要长驻服务、自动端口管理、并发限流、会话历史长期保存? +9. 合规安全:数据脱敏、敏感词检测、审计留存周期、模型 API Key 管理是否有公司规范? +10. 数据库规模预期:数据集样本量、日志保留周期、监控采样频率,会影响分区和索引策略。 + +## 13. 企业治理与算力平台补充接口 + +根据 `system-development-plan.md`,以下能力已从待确认项升级为第一版设计范围:单机多 GPU、本地磁盘、应用平台/算力平台分离、多租户、项目级资源隔离、审批流、审计留存、LLaMA-Factory 引擎插件化。原有业务接口需要统一增加 `tenant_id`、`project_id` 上下文,列表接口默认只返回当前用户可访问项目内资源。 + +### 13.1 租户管理 + +| 方法 | 路径 | 说明 | 权限 | +| --- | --- | --- | --- | +| GET | `/modelTF/tenants` | 租户列表 | 平台管理员 | +| POST | `/modelTF/tenants` | 创建租户 | 平台管理员 | +| GET | `/modelTF/tenants/{id}` | 租户详情 | 租户管理员 | +| PUT | `/modelTF/tenants/{id}` | 更新租户 | 平台管理员 | +| PUT | `/modelTF/tenants/{id}/quota` | 设置租户配额 | 平台管理员 | +| PUT | `/modelTF/tenants/{id}/retention-policy` | 设置租户留存策略 | 平台管理员 | + +创建租户: + +```json +{ + "name": "研发一部", + "code": "rd-1", + "status": "active", + "quota": { + "gpu_concurrency": 4, + "storage_bytes": 10995116277760, + "max_projects": 20 + }, + "retention_policy": { + "audit_days": 180, + "training_log_days": 90, + "metric_days": 30, + "temp_file_days": 1 + } +} +``` + +### 13.2 项目空间 + +| 方法 | 路径 | 说明 | +| --- | --- | --- | +| GET | `/modelTF/projects` | 当前用户可访问项目列表 | +| POST | `/modelTF/projects` | 创建项目 | +| GET | `/modelTF/projects/{id}` | 项目详情 | +| PUT | `/modelTF/projects/{id}` | 更新项目 | +| POST | `/modelTF/projects/{id}/archive` | 归档项目 | +| GET | `/modelTF/projects/{id}/members` | 项目成员 | +| POST | `/modelTF/projects/{id}/members` | 添加成员 | +| PUT | `/modelTF/projects/{id}/members/{user_id}` | 修改项目角色 | +| DELETE | `/modelTF/projects/{id}/members/{user_id}` | 移除成员 | + +创建项目: + +```json +{ + "tenant_id": "uuid", + "name": "金融模型微调", + "code": "finance-ft", + "description": "金融问答模型训练与评测", + "quota": { + "gpu_concurrency": 2, + "storage_bytes": 2199023255552, + "max_running_jobs": 3 + } +} +``` + +项目角色建议:`owner`、`maintainer`、`developer`、`reviewer`、`viewer`。 + +### 13.3 资源级授权 + +模型、数据集、训练任务、评测任务、推理任务、数据处理任务都必须支持资源级 ACL。 + +| 方法 | 路径 | 说明 | +| --- | --- | --- | +| GET | `/modelTF/resources/{resource_type}/{resource_id}/acl` | 查询资源授权 | +| PUT | `/modelTF/resources/{resource_type}/{resource_id}/acl` | 覆盖资源授权 | +| POST | `/modelTF/resources/{resource_type}/{resource_id}/share` | 快速分享给用户/项目角色 | + +授权请求: + +```json +{ + "entries": [ + { + "subject_type": "user", + "subject_id": "uuid", + "permissions": ["read", "execute", "download"] + }, + { + "subject_type": "project_role", + "subject_id": "developer", + "permissions": ["read", "write", "execute"] + } + ] +} +``` + +权限码:`read`、`write`、`execute`、`download`、`delete`、`manage_acl`。 + +### 13.4 审批中心 + +| 方法 | 路径 | 说明 | +| --- | --- | --- | +| GET | `/modelTF/approvals` | 审批列表,支持 `type=pending/mine/done` | +| POST | `/modelTF/approvals` | 发起审批 | +| GET | `/modelTF/approvals/{id}` | 审批详情 | +| POST | `/modelTF/approvals/{id}/approve` | 通过 | +| POST | `/modelTF/approvals/{id}/reject` | 驳回 | +| POST | `/modelTF/approvals/{id}/cancel` | 撤回 | +| GET | `/modelTF/approval-templates` | 审批模板列表 | +| PUT | `/modelTF/approval-templates/{id}` | 更新审批模板 | + +发起审批: + +```json +{ + "action": "model_publish", + "resource_type": "trained_model", + "resource_id": "uuid", + "project_id": "uuid", + "reason": "发布金融问答模型测试服务", + "payload": { + "service_level": "production", + "gpu_id": 0, + "max_concurrency": 8 + } +} +``` + +第一版建议触发审批的动作:删除数据集、删除模型、生产服务发布、导出模型、下载敏感数据集、提高 GPU 配额、停止他人任务。 + +### 13.5 算力资源与队列 + +应用平台对前端暴露 `/modelTF/compute/*`,实际由 Compute Gateway 调用算力平台内部接口。 + +| 方法 | 路径 | 说明 | +| --- | --- | --- | +| GET | `/modelTF/compute/nodes` | 算力节点列表 | +| POST | `/modelTF/compute/nodes` | 新增算力节点 | +| GET | `/modelTF/compute/nodes/{id}` | 算力节点详情 | +| PUT | `/modelTF/compute/nodes/{id}` | 编辑节点地址、权重、标签、路径和启用状态 | +| POST | `/modelTF/compute/nodes/{id}/test-connection` | 测试 Compute API/File Gateway 连通性 | +| POST | `/modelTF/compute/nodes/{id}/enable` | 启用节点 | +| POST | `/modelTF/compute/nodes/{id}/disable` | 禁用节点,不接收新任务 | +| POST | `/modelTF/compute/nodes/{id}/drain` | 进入维护模式,已有任务跑完后下线 | +| POST | `/modelTF/compute/nodes/{id}/health-check` | 主动触发节点健康检查 | +| GET | `/modelTF/compute/nodes/{id}/engines` | 节点训练引擎和版本 | +| GET | `/modelTF/compute/nodes/{id}/replicas` | 节点本地资源副本 | +| GET | `/modelTF/compute/gpus` | GPU 状态 | +| GET | `/modelTF/compute/queue` | 任务队列 | +| GET | `/modelTF/compute/jobs/{id}` | 算力任务详情 | +| POST | `/modelTF/compute/jobs/{id}/retry` | 重试任务 | +| POST | `/modelTF/compute/jobs/{id}/priority` | 调整优先级 | +| POST | `/modelTF/internal/compute-sync/jobs/poll` | 应用平台主动轮询并同步算力任务状态 | +| POST | `/modelTF/internal/compute-sync/resources` | 调度前同步数据集/模型到目标节点 | + +算力节点设计说明: + +- 多算力节点仍按“单机多 GPU 节点”管理,每台 GPU 服务器是一条 `compute_nodes` 记录。 +- 每个可执行训练的节点都需要部署 `Compute API`、`Compute Agent`、`File Gateway` 和宿主机挂载的 LLaMA-Factory。 +- 节点之间默认不互相访问,应用平台主动访问所有节点的 Compute API/File Gateway。 +- 调度支持 `auto` 和 `manual`:普通用户默认自动调度,管理员或高级用户可手动指定节点。 + +算力节点响应字段: + +```json +{ + "id": "uuid", + "code": "gpu-node-01", + "name": "A800 Node 01", + "api_base_url": "http://10.10.20.31:19100", + "file_gateway_url": "http://10.10.20.31:19101", + "enabled": true, + "scheduler_status": "online", + "scheduler_weight": 100, + "tags": ["A800", "80GB", "llama_factory"], + "gpu_count": 8, + "current_running_jobs": 2, + "max_parallel_jobs": 8, + "data_root": "/data/yg-ft", + "model_root": "/data/yg-ft/models", + "log_root": "/opt/yg-ft/logs/compute", + "last_health_check_at": "2026-07-20T12:00:00+08:00", + "health_detail": { + "compute_api": "ok", + "file_gateway": "ok", + "llama_factory": "ok" + } +} +``` + +GPU 响应字段: + +```json +{ + "node_id": "uuid", + "gpu_index": 0, + "uuid": "GPU-xxx", + "name": "NVIDIA A800", + "status": "running", + "memory_total_mb": 81920, + "memory_used_mb": 40960, + "utilization_percent": 72, + "temperature": 61, + "current_job_id": "uuid", + "current_project_id": "uuid" +} +``` + +### 13.6 算力平台内部接口 + +以下接口只允许应用平台调用,不直接暴露给浏览器。 + +| 方法 | 路径 | 说明 | +| --- | --- | --- | +| POST | `/modelTF/compute/jobs` | 创建训练/评测/数据处理/推理任务 | +| GET | `/modelTF/compute/jobs/{id}` | 查询任务 | +| POST | `/modelTF/compute/jobs/{id}/stop` | 停止任务 | +| GET | `/modelTF/compute/jobs/{id}/logs` | 拉取日志 | +| GET | `/modelTF/compute/resources/gpus` | 查询 GPU | +| POST | `/modelTF/compute/files/upload` | 上传到算力本地磁盘 | +| GET | `/modelTF/compute/files/{id}/download` | 下载文件 | + +创建算力任务: + +```json +{ + "tenant_id": "uuid", + "project_id": "uuid", + "job_type": "fine_tune", + "engine": "llama_factory", + "priority": "normal", + "scheduler": { + "mode": "auto", + "requested_node_id": null, + "required_tags": ["A800"], + "preferred_tags": ["llama_factory"], + "min_gpu_memory_mb": 40960 + }, + "resource_request": { + "gpu_count": 1, + "gpu_ids": [0], + "memory_gb": 64 + }, + "workspace": { + "root": "/data/ft-platform/tenants/{tenant_id}/projects/{project_id}/jobs/{job_id}" + }, + "payload": { + "model_path": "/data/ft-platform/.../models/base/qwen", + "dataset_path": "/data/ft-platform/.../datasets/train.jsonl", + "training_args": {} + }, + "status_sync_mode": "polling", + "poll_interval_seconds": 10 +} +``` + +手动指定节点时: + +```json +{ + "scheduler": { + "mode": "manual", + "requested_node_id": "uuid", + "gpu_ids": [0, 1] + } +} +``` + +调度前资源副本检查: + +```json +{ + "target_compute_node_id": "uuid", + "resources": [ + { + "resource_type": "model", + "resource_id": "uuid", + "required": true + }, + { + "resource_type": "dataset", + "resource_id": "uuid", + "required": true + } + ], + "sync_if_missing": true +} +``` + +如果目标节点缺少数据集或模型副本,应用平台通过 File Gateway 创建 `resource_sync_jobs`,同步完成后再提交训练任务。 + +### 13.7 文件网关与离线导入 + +| 方法 | 路径 | 说明 | +| --- | --- | --- | +| POST | `/modelTF/files/upload-session` | 创建分片上传会话 | +| PUT | `/modelTF/files/upload-session/{id}/parts/{part_no}` | 上传分片 | +| POST | `/modelTF/files/upload-session/{id}/complete` | 完成上传 | +| GET | `/modelTF/files/{id}/preview` | 文件预览 | +| GET | `/modelTF/files/{id}/download-url` | 获取短时下载链接 | +| POST | `/modelTF/import/local-model` | 从算力节点本地路径导入模型 | +| POST | `/modelTF/import/local-dataset` | 从算力节点本地路径导入数据集 | + +离线导入模型: + +```json +{ + "tenant_id": "uuid", + "project_id": "uuid", + "compute_node_id": "uuid", + "path": "/data/models/qwen2.5-7b", + "name": "Qwen2.5-7B-Instruct", + "purpose": "training" +} +``` + +### 13.8 训练引擎管理 + +| 方法 | 路径 | 说明 | +| --- | --- | --- | +| GET | `/modelTF/training-engines` | 训练引擎列表 | +| GET | `/modelTF/training-engines/{id}` | 引擎详情 | +| GET | `/modelTF/training-engines/{id}/schema` | 参数 schema | +| POST | `/modelTF/training-engines/{id}/health-check` | 健康检查 | + +LLaMA-Factory 引擎声明: + +```json +{ + "code": "llama_factory", + "name": "LLaMA-Factory", + "version": "0.9.x", + "supported_task_types": ["SFT", "DPO", "CPT"], + "supported_methods": ["lora", "qlora", "full"], + "supported_formats": ["alpaca", "sharegpt", "dpo_pair", "pretrain_text"], + "schema": {} +} +``` + +### 13.9 Checkpoint 与恢复训练 + +| 方法 | 路径 | 说明 | +| --- | --- | --- | +| GET | `/modelTF/fine-tune/{id}/checkpoints` | checkpoint 列表 | +| POST | `/modelTF/fine-tune/{id}/retry` | 失败任务重试 | +| POST | `/modelTF/fine-tune/{id}/resume` | 从 checkpoint 恢复训练 | +| DELETE | `/modelTF/fine-tune/{id}/checkpoints/{checkpoint_id}` | 删除 checkpoint,可能触发审批 | +| PUT | `/modelTF/fine-tune/{id}/checkpoint-retention` | 设置 checkpoint 保留策略 | + +默认保留策略:最近 3 个、最优 2 个、已发布模型关联 checkpoint 不自动删除、失败任务保留 14 天。 + +### 13.10 审计、留存、配额和成本统计 + +| 方法 | 路径 | 说明 | +| --- | --- | --- | +| GET | `/modelTF/audit-logs` | 操作审计 | +| GET | `/modelTF/login-logs` | 登录审计 | +| GET | `/modelTF/download-logs` | 下载审计 | +| GET | `/modelTF/retention-policies` | 留存策略 | +| PUT | `/modelTF/retention-policies/{id}` | 更新留存策略 | +| GET | `/modelTF/quotas/usage` | 配额使用 | +| GET | `/modelTF/usage/summary` | GPU 小时、磁盘、推理调用统计 | + +第一版只做用量统计,不做账单计费;第二期可扩展成本核算。 + +## 14. 接口与页面功能模块映射 + +本节用于接口开发和前后端联调。后端开发人员可按页面模块确认接口覆盖范围;前端开发人员可按页面查找需要调用的 API。 + +### 14.1 认证、用户和权限 + +| 页面模块 | 路由/入口 | 接口 | 说明 | +| --- | --- | --- | --- | +| 登录页 | `/login` | `POST /modelTF/login`、`GET /modelTF/me`、`POST /modelTF/logout` | 登录、恢复用户、退出 | +| 用户中心 | `/user-settings` | `GET /modelTF/users` | 用户列表、搜索、状态筛选 | +| 创建用户 | `/user-settings/create` | `POST /modelTF/users` | 创建本地用户 | +| 用户权限 | `/user-settings/:id/permission` | `PUT /modelTF/users/{id}`、`PUT /modelTF/users/{id}/password` | 用户角色、状态、页面权限、重置密码 | +| 无权限页 | `/permission-denied` | 无专属接口,可调用 `GET /modelTF/me` | 展示当前用户权限和返回入口 | + +### 14.2 租户、项目和资源授权 + +| 页面模块 | 路由/入口 | 接口 | 说明 | +| --- | --- | --- | --- | +| 租户管理 | `/tenants` | `GET /modelTF/tenants`、`POST /modelTF/tenants` | 租户列表、创建租户 | +| 租户详情 | `/tenants/:id` | `GET /modelTF/tenants/{id}`、`PUT /modelTF/tenants/{id}`、`PUT /modelTF/tenants/{id}/quota`、`PUT /modelTF/tenants/{id}/retention-policy` | 租户配置、配额、留存 | +| 项目列表 | `/projects` | `GET /modelTF/projects`、`POST /modelTF/projects` | 项目列表、创建项目 | +| 项目详情 | `/projects/:id` | `GET /modelTF/projects/{id}`、`PUT /modelTF/projects/{id}`、`POST /modelTF/projects/{id}/archive` | 项目概览、归档 | +| 项目成员 | `/projects/:id/members` | `GET /modelTF/projects/{id}/members`、`POST /modelTF/projects/{id}/members`、`PUT /modelTF/projects/{id}/members/{user_id}`、`DELETE /modelTF/projects/{id}/members/{user_id}` | 成员和项目角色 | +| 资源授权 | 资源详情弹窗或 `/projects/:id/permissions` | `GET /modelTF/resources/{resource_type}/{resource_id}/acl`、`PUT /modelTF/resources/{resource_type}/{resource_id}/acl`、`POST /modelTF/resources/{resource_type}/{resource_id}/share` | 模型/数据集/任务级 ACL | + +### 14.3 看板、监控和日志 + +| 页面模块 | 路由/入口 | 接口 | 说明 | +| --- | --- | --- | --- | +| 服务看板 | `/dashboard` | `GET /modelTF/dashboard/overview`、`GET /modelTF/health` | 首页聚合、轻量健康指标 | +| 平台性能 | `/hardware` | `GET /modelTF/system-info`、`GET /modelTF/compute/gpus` | CPU、内存、磁盘、GPU、任务占用 | +| 系统日志 | `/logs` | `GET /modelTF/log-files`、`GET /modelTF/log-content` | 系统日志列表和内容 | +| 训练日志页 | `/training-log/:id` | `GET /modelTF/fine-tune/{id}/overview`、`GET /modelTF/training-log-files`、`GET /modelTF/training-log-content` | 训练日志、指标、GPU 状态 | + +### 14.4 模型管理 + +| 页面模块 | 路由/入口 | 接口 | 说明 | +| --- | --- | --- | --- | +| 模型列表 | `/model-manage` | `GET /modelTF/model-manage`、`DELETE /modelTF/model-manage/{id}`、`PUT /modelTF/model-manage/{id}/purpose` | 模型列表、删除审批入口、用途变更 | +| 模型创建/编辑 | `/model-manage/create`、`/model-manage/:id/edit` | `GET /modelTF/model-manage/{id}`、`POST /modelTF/model-manage`、`PUT /modelTF/model-manage/{id}`、`GET /modelTF/model-manage/local-models` | 本地/API 模型登记 | +| 离线导入模型 | 模型创建页或导入弹窗 | `POST /modelTF/import/local-model` | 从算力节点本地路径导入 | +| 已训练模型 | 模型列表/选择弹窗 | `GET /modelTF/model-manage/trained-models`、`DELETE /modelTF/model-manage/trained-models/{id}` | 训练产物列表和删除 | +| 权重合并 | `/model-manage/merge` | `POST /modelTF/model-manage/merge` | LoRA 合并任务 | +| 模型导出 | 模型列表/详情 | `GET /modelTF/model-manage/trained-models/{model_name}/export` | 导出下载,必要时触发审批 | + +### 14.5 数据集与数据处理 + +| 页面模块 | 路由/入口 | 接口 | 说明 | +| --- | --- | --- | --- | +| 数据集列表 | `/dataset` | `GET /modelTF/dataset-manage`、`DELETE /modelTF/dataset-manage/{id}`、`GET /modelTF/dataset-manage/download/{id}` | 数据集列表、删除、打包下载 | +| 数据集创建/编辑 | `/dataset/create`、`/dataset/:id/edit` | `POST /modelTF/dataset-manage`、`PUT /modelTF/dataset-manage/{id}`、`POST /modelTF/dataset-manage/upload/{dataset_id}` | 数据集元数据和文件上传 | +| 离线导入数据集 | 数据集创建页或导入弹窗 | `POST /modelTF/import/local-dataset` | 从算力节点目录导入 | +| 数据集预览 | `/dataset/:id/preview` | `GET /modelTF/dataset-manage/preview/{file_id}`、`GET /modelTF/dataset-manage/versions/{file_id}`、`POST /modelTF/dataset-manage/versions/{file_id}`、`PUT /modelTF/dataset-manage/versions/{file_id}/active`、`DELETE /modelTF/dataset-manage/versions/{file_id}/{version_id}` | 文件预览、版本、在线编辑 | +| 数据处理列表 | `/data-process` | `GET /modelTF/data-process`、`DELETE /modelTF/data-process/{id}` | 处理任务列表 | +| 数据处理创建向导 | `/data-process/create` | `POST /modelTF/data-process`、`POST /modelTF/data-process/{id}/source-files`、`POST /modelTF/data-process/{id}/preview/build`、`POST /modelTF/data-process/{id}/generate`、`POST /modelTF/data-process/{id}/publish` | 创建、上传、预览、生成、发布 | +| 数据处理详情 | `/data-process/:id` | `GET /modelTF/data-process/{id}`、`GET /modelTF/data-process/{id}/results`、`GET /modelTF/data-process/{id}/progress`、`GET /modelTF/data-process/{id}/events` | 详情、结果、进度 | +| 数据转换 | `/data-convert` | `POST /modelTF/data-convert/jobs`、`GET /modelTF/data-convert/jobs/{id}`、`GET /modelTF/data-convert/jobs/{id}/download` | JSON/JSONL 转换 | + +### 14.6 微调训练 + +| 页面模块 | 路由/入口 | 接口 | 说明 | +| --- | --- | --- | --- | +| 微调列表 | `/fine-tune` | `GET /modelTF/fine-tune`、`POST /modelTF/fine-tune/stop/{id}`、`DELETE /modelTF/fine-tune/{id}` | 训练任务列表、停止、删除 | +| 微调创建 | `/fine-tune/create` | `GET /modelTF/fine-tune/check-name`、`POST /modelTF/fine-tune`、`POST /modelTF/fine-tune/start`、`GET /modelTF/model-manage`、`GET /modelTF/dataset-manage`、`GET /modelTF/compute/gpus` | 参数配置、GPU 选择、启动训练 | +| 训练详情/日志 | `/training-log/:id` | `GET /modelTF/fine-tune/{id}`、`GET /modelTF/fine-tune/progress/{id}`、`GET /modelTF/fine-tune/{id}/events`、`GET /modelTF/fine-tune/{id}/checkpoints` | 日志、进度、checkpoint | +| 恢复/重试训练 | 训练详情页 | `POST /modelTF/fine-tune/{id}/retry`、`POST /modelTF/fine-tune/{id}/resume` | 从 checkpoint 重试或恢复 | +| Checkpoint 管理 | 训练详情页、存储管理页 | `DELETE /modelTF/fine-tune/{id}/checkpoints/{checkpoint_id}`、`PUT /modelTF/fine-tune/{id}/checkpoint-retention` | 清理策略和删除 | +| TensorBoard | 训练详情页 | `POST /modelTF/fine-tune/tensorboard/start` | 启动 TensorBoard | + +### 14.7 评测、推理、对比和服务发布 + +| 页面模块 | 路由/入口 | 接口 | 说明 | +| --- | --- | --- | --- | +| 评测列表 | `/model-eval` | `GET /modelTF/model-eval`、`DELETE /modelTF/model-eval/{id}` | 评测任务列表 | +| 评测创建 | `/model-eval/create` | `POST /modelTF/model-eval/start`、`GET /modelTF/dimension`、`GET /modelTF/model-manage/trained-models`、`GET /modelTF/dataset-manage`、`GET /modelTF/compute/gpus` | 选择模型、数据集、维度、GPU | +| 评测详情 | `/model-eval/:id` | `GET /modelTF/model-eval/{id}`、`GET /modelTF/model-eval/{id}/events` | 综合结果、样本评分 | +| 评测维度 | `/model-eval/dimension/:id/edit` | `GET /modelTF/dimension/{id}`、`POST /modelTF/dimension`、`PUT /modelTF/dimension/{id}`、`DELETE /modelTF/dimension/{id}` | 维度和 Prompt 管理 | +| 推理列表 | `/model-inference` | `GET /modelTF/model-compare`、`POST /modelTF/model-compare/{id}/load`、`POST /modelTF/model-compare/{id}/unload` | 推理任务和加载状态 | +| 推理创建 | `/model-inference/create` | `POST /modelTF/model-compare`、`GET /modelTF/model-manage`、`GET /modelTF/model-manage/trained-models`、`GET /modelTF/compute/gpus` | 选择模型和 GPU | +| 推理对话 | `/model-inference/chat/:id` | `GET /modelTF/model-compare/{id}`、`POST /modelTF/model-compare/stream-chat`、`POST /modelTF/model-compare/chat-with-port` | 单模型对话 | +| 模型对比 | `/model-compare/chat/:id`、`/model-compare/result` | `POST /modelTF/model-chat/batch`、`POST /modelTF/model-chat/local/chat`、`POST /modelTF/model-chat/local/preload`、`POST /modelTF/model-chat/trained/preload` | 多模型对比和预加载 | +| 模型服务治理 | `/model-services`、`/model-services/:id` | `POST /modelTF/approvals`、`GET /modelTF/compute/jobs/{id}`、`GET /modelTF/usage/summary` | 测试/生产服务发布、调用统计、下线审批 | + +### 14.8 审批、审计、算力和存储运维 + +| 页面模块 | 路由/入口 | 接口 | 说明 | +| --- | --- | --- | --- | +| 审批中心 | `/approvals`、`/approvals/pending`、`/approvals/mine`、`/approvals/:id` | `GET /modelTF/approvals`、`POST /modelTF/approvals`、`GET /modelTF/approvals/{id}`、`POST /modelTF/approvals/{id}/approve`、`POST /modelTF/approvals/{id}/reject`、`POST /modelTF/approvals/{id}/cancel` | 审批列表和审批动作 | +| 审批设置 | `/approval-settings` | `GET /modelTF/approval-templates`、`PUT /modelTF/approval-templates/{id}` | 审批模板 | +| 算力资源 | `/compute`、`/compute/gpus`、`/compute/queue`、`/compute/nodes` | `GET/POST/PUT /modelTF/compute/nodes`、`POST /modelTF/compute/nodes/{id}/test-connection`、`POST /modelTF/compute/nodes/{id}/enable`、`POST /modelTF/compute/nodes/{id}/disable`、`POST /modelTF/compute/nodes/{id}/drain`、`GET /modelTF/compute/gpus`、`GET /modelTF/compute/queue`、`POST /modelTF/compute/jobs/{id}/retry`、`POST /modelTF/compute/jobs/{id}/priority` | GPU、节点、队列、节点权重、标签、维护状态、资源副本 | +| 存储管理 | `/storage` | `GET /modelTF/quotas/usage`、`GET /modelTF/files/{id}/download-url`、`GET /modelTF/retention-policies`、`PUT /modelTF/retention-policies/{id}` | 磁盘占用、下载、留存 | +| 审计中心 | `/audit-logs`、`/login-logs`、`/download-logs` | `GET /modelTF/audit-logs`、`GET /modelTF/login-logs`、`GET /modelTF/download-logs` | 操作、登录、下载审计 | +| 训练引擎管理 | `/training-engines` | `GET /modelTF/training-engines`、`GET /modelTF/training-engines/{id}`、`GET /modelTF/training-engines/{id}/schema`、`POST /modelTF/training-engines/{id}/health-check` | 引擎能力和健康 | diff --git a/docs/backend-logging.md b/docs/backend-logging.md new file mode 100644 index 0000000..809a64b --- /dev/null +++ b/docs/backend-logging.md @@ -0,0 +1,109 @@ +# 后端日志模块说明 + +本文档对应页面/功能模块:全平台通用能力、系统设置、审计中心、任务详情、训练任务日志、运维监控。 + +## 设计目标 + +- 后端服务统一使用 `backend/app/core/logging.py` 初始化日志。 +- 日志文件按日期命名,单个文件超过 20MB 自动滚动。 +- 日志只保留最近 10 天,过期文件自动清理。 +- 业务日志使用 JSON Lines 格式,便于 Filebeat、Vector、Logstash、ELK、OpenSearch 等日志平台采集。 +- `ERROR` 及以上日志独立写入错误日志文件,便于告警与问题定位。 +- 日志字段必须包含代码文件、行号、函数、日志内容、请求 ID、进程和线程信息。 + +## 文件命名 + +默认日志目录由 `LOG_DIR` 控制,本地默认是 `./logs`。 + +```text +logs/ + backend-2026-07-16.log # INFO/ERROR 等全部应用日志,JSON Lines + backend-2026-07-16.1.log # 当天主日志超过 20MB 后滚动产生 + error-2026-07-16.log # ERROR/CRITICAL 错误日志,JSON Lines + error-2026-07-16.1.log # 当天错误日志超过 20MB 后滚动产生 +``` + +## 环境变量 + +```env +LOG_LEVEL=INFO +LOG_DIR=./logs +LOG_FILE_PREFIX=backend +LOG_ERROR_FILE_PREFIX=error +LOG_MAX_BYTES=20971520 +LOG_RETENTION_DAYS=10 +``` + +## JSON 字段 + +每一行都是一个完整 JSON 对象。 + +```json +{ + "@timestamp": "2026-07-16T13:20:10.123", + "level": "INFO", + "logger": "app.access", + "message": "request completed method=GET path=/modelTF/health status_code=200 duration_ms=3.12 client=127.0.0.1", + "module": "logging", + "function": "request_logging_middleware", + "file": "D:\\AI\\codex-code\\YG_FT\\backend\\app\\core\\logging.py", + "line": 169, + "process": 1234, + "thread": 5678, + "thread_name": "MainThread", + "request_id": "6f9d1c3c-8be0-4c8d-a5b2-18f9d41f9a0c" +} +``` + +异常日志会额外包含: + +```json +{ + "exception": "Traceback ..." +} +``` + +## 使用方式 + +业务代码中不要直接 `print`,统一使用: + +```python +from app.core.logging import get_logger + +logger = get_logger(__name__) + +logger.info("dataset uploaded dataset_id=%s", dataset_id) +logger.warning("gpu queue is busy project_id=%s", project_id) +logger.exception("training job failed job_id=%s", job_id) +``` + +`logger.exception(...)` 只能在 `except` 代码块中使用,它会自动写入堆栈信息,并同时进入主日志和错误日志。 + +## FastAPI 接入 + +应用入口 `backend/app/main.py` 已完成接入: + +```python +settings = get_settings() +configure_logging(settings) +setup_request_logging(app) +``` + +请求日志会自动生成或透传 `X-Request-ID`,并在响应头中返回同一个请求 ID,方便前端、后端、算力服务、日志平台串联排障。 + +## ELK/日志平台采集建议 + +- 采集路径:`/app/logs/*.log` 或生产环境挂载后的日志目录。 +- 解析方式:按行读取,每行作为 JSON 文档解析。 +- 索引建议: + - 主日志:`yg-ft-backend-*` + - 错误日志:`yg-ft-backend-error-*` +- 推荐保留字段:`@timestamp`、`level`、`logger`、`message`、`file`、`line`、`function`、`request_id`、`tenant_id`、`project_id`、`job_id`。 +- 业务开发后续应在关键模块日志中补充 `tenant_id`、`project_id`、`job_id` 等上下文字段,便于企业审计和问题定位。 + +## 注意事项 + +- 当前日志落本地磁盘,生产环境建议把日志目录挂载到独立数据盘。 +- 日志文件保留 10 天是应用侧兜底策略,企业侧长期留存应由 ELK、对象存储或归档服务承担。 +- 敏感字段如 token、密码、密钥、原始用户数据内容不得写入日志。 +- 算力节点和应用节点分开部署时,建议两侧都采用 JSON Lines 格式,并使用统一 `request_id/job_id` 贯穿链路。 diff --git a/docs/deployment-plan.md b/docs/deployment-plan.md new file mode 100644 index 0000000..8a848b8 --- /dev/null +++ b/docs/deployment-plan.md @@ -0,0 +1,406 @@ +# 模型微调平台后期部署方案 + +本文档对应页面/功能模块:系统设置、算力资源、训练任务、任务详情、模型管理、数据集管理、审批中心、审计中心、运维监控。 + +## 1. 部署目标 + +平台需要支持单机多 GPU 训练、本地磁盘文件存储、LLaMA-Factory 训练框架,并预留未来接入其他训练平台的能力。部署设计需要把“应用平台”和“算力平台”边界明确拆开: + +- 应用平台:面向用户、权限、项目、模型、数据集、审批、审计、任务编排和 API。 +- 算力平台:面向 GPU、训练进程、训练框架、本地工作目录、训练日志和产物。 +- 训练框架:当前固定 LLaMA-Factory,后续通过 Engine Adapter 标准接入其他框架。 + +结论:算力平台和训练框架应该部署在 GPU 算力服务器上。原因是训练框架需要直接访问 GPU、CUDA、驱动、模型权重、本地数据集切片、训练工作目录和训练进程。应用平台可以与算力平台同机部署,也可以独立部署,但不建议在无 GPU 的应用服务器上直接运行 LLaMA-Factory。 + +## 2. 服务清单 + +| 服务 | 部署位置 | 职责 | +| --- | --- | --- | +| Nginx | 应用服务器或算力服务器 | 前端静态资源、反向代理、TLS 终止 | +| Frontend | Nginx 静态目录 | 平台控制台 | +| Backend API | 应用服务器 | FastAPI 接口、鉴权、元数据、审批、审计、任务编排 | +| Backend Worker | 应用服务器 | 异步任务、状态同步、通知、审计归档 | +| PostgreSQL | 应用服务器或独立数据库服务器 | 业务元数据、权限、审批、审计 | +| Redis | 应用服务器或独立缓存服务器 | 队列、锁、短期状态、幂等控制 | +| Compute API | GPU 算力服务器 | 只对应用平台开放的内部算力接口 | +| Compute Agent | GPU 算力服务器 | GPU 发现、资源锁定、训练进程管理 | +| File Gateway | GPU 算力服务器 | 本地文件上传、下载、离线导入、产物访问 | +| LLaMA-Factory | GPU 算力服务器 | 实际训练、评测、合并、导出 | +| 日志采集 Agent | 两侧服务器 | 采集应用日志、训练日志、系统日志 | + +## 3. 目录与存储规划 + +建议生产环境把文件、日志、数据库数据分盘挂载: + +```text +/opt/yg-ft/ + app/ # 应用服务代码 + compute/ # 算力服务代码 + config/ # 环境配置和服务配置 + logs/ + backend/ # 后端 JSON Lines 日志 + compute/ # 算力服务日志 + training/ # 训练过程日志 + data/ + datasets/ # 数据集文件 + models/ # 基座模型、微调模型、导出模型 + jobs/ # 训练任务工作目录 + artifacts/ # 评测报告、adapter、checkpoint、导出包 +``` + +本地文件存储建议按租户、项目、资源类型分区: + +```text +/data/yg-ft/ + tenants/{tenant_id}/ + projects/{project_id}/ + datasets/{dataset_id}/ + models/{model_id}/ + jobs/{job_id}/ +``` + +## 4. 方案一:所有服务部署在算力服务器 + +### 4.1 适用场景 + +- 开发联调、单机试运行、资源受限的早期上线环境。 +- 小团队共用一台单机多 GPU 服务器。 +- 网络隔离要求不高,部署资源有限。 + +### 4.2 拓扑 + +```mermaid +flowchart LR + U["用户浏览器"] --> N["Nginx/Frontend"] + N --> B["Backend API"] + B --> DB["PostgreSQL"] + B --> R["Redis"] + B --> C["Compute API"] + C --> A["Compute Agent"] + A --> L["LLaMA-Factory"] + A --> G["GPU/CUDA"] + A --> FS["本地磁盘文件存储"] +``` + +### 4.3 部署方式 + +同一台 GPU 服务器部署: + +- `frontend` 构建后由 Nginx 托管。 +- `backend-api` 使用 Uvicorn/Gunicorn 或容器运行。 +- `backend-worker` 独立进程运行。 +- `postgres` 和 `redis` 可使用 Docker Compose 或系统服务。 +- `compute-api`、`compute-agent`、`file-gateway` 与 LLaMA-Factory 在同机运行。 +- 训练产物、数据集、模型和日志都放在本地数据盘。 + +### 4.4 优点 + +- 部署简单,路径共享容易。 +- 上传数据、训练读取、产物归档都在本机完成,I/O 链路短。 +- 适合快速验证平台功能。 + +### 4.5 风险 + +- 应用服务、数据库、训练任务抢占同一台服务器资源。 +- GPU 训练高负载可能影响 API 响应。 +- 数据库与文件存储容灾能力弱。 +- 安全边界不清晰,企业生产不推荐长期使用。 + +### 4.6 端口建议 + +| 服务 | 端口 | 暴露范围 | +| --- | --- | --- | +| Nginx | 80/443 | 用户网段 | +| Backend API | 17861 | 仅 Nginx、本机 | +| Compute API | 19100 | 仅 Backend API、本机 | +| File Gateway | 19101 | 仅 Backend API、本机 | +| PostgreSQL | 15432 | 本机或内网 | +| Redis | 16379 | 本机或内网 | + +## 5. 方案二:应用服务与算力/训练服务独立部署 + +### 5.1 适用场景 + +- 企业生产环境。 +- 有独立应用服务器、数据库服务器和 GPU 算力服务器。 +- 需要清晰网络边界、权限边界和运维职责。 +- 未来可能扩展多台 GPU 服务器或多种训练框架。 + +### 5.2 拓扑 + +```mermaid +flowchart LR + U["用户浏览器"] --> N["应用区 Nginx/Frontend"] + N --> B["应用区 Backend API"] + B --> DB["PostgreSQL"] + B --> R["Redis"] + B -- "内部 HTTPS/mTLS + 服务 Token" --> C["算力区 Compute API"] + C --> A["Compute Agent"] + A --> L["LLaMA-Factory"] + A --> G["GPU/CUDA"] + A --> FS["算力服务器本地磁盘"] + B -- "定时轮询任务状态/指标/产物索引" --> C +``` + +### 5.3 部署边界 + +应用服务器部署: + +- Nginx。 +- Frontend。 +- Backend API。 +- Backend Worker。 +- PostgreSQL 或数据库连接。 +- Redis 或队列连接。 +- 审批、审计、系统配置、用户中心等应用能力。 + +GPU 算力服务器部署: + +- Compute API。 +- Compute Agent。 +- File Gateway。 +- LLaMA-Factory。 +- CUDA、NVIDIA Driver、NCCL、PyTorch、训练依赖。 +- 本地训练工作目录、模型目录、数据集缓存、产物目录。 + +### 5.4 互通方式 + +应用平台调用算力平台: + +- 协议:内部 HTTPS REST,后续可扩展 gRPC。 +- 鉴权:服务间 Token,生产建议 mTLS + IP 白名单。 +- 幂等:训练任务提交使用 `Idempotency-Key` 或 `job_id`。 +- 状态同步:默认由应用平台定时轮询 Compute API,拉取任务状态、指标摘要和产物索引。 +- 回调策略:第一阶段关闭算力侧回调,避免算力服务器访问应用服务器,减少双向网络策略开通。 + +文件互通: + +- 小文件:前端上传到 Backend API,再由 Backend API 转发或同步到 File Gateway。 +- 大文件:Backend API 创建上传会话,前端通过受控地址分片上传到 File Gateway。 +- 离线数据:管理员把数据放到算力服务器指定目录,应用平台登记离线导入任务。 +- 产物下载:应用平台校验权限后,向 File Gateway 申请短期下载地址。 + +状态互通: + +- Backend API 是业务状态的最终来源。 +- Compute Agent 是训练进程状态的事实来源。 +- Worker 定时对账,把 `queued/running/succeeded/failed/cancelled` 等状态同步回业务库。 + +### 5.5 优点 + +- 应用服务稳定性不受 GPU 训练高负载直接影响。 +- 数据库和审计能力更适合纳入企业基础设施。 +- 算力节点可以逐步扩展,不影响前端和应用后端。 +- 安全边界更清晰,便于设置防火墙、堡垒机、服务账号和审计策略。 + +### 5.6 风险 + +- 文件传输链路比单机部署复杂。 +- 需要处理跨服务器网络失败、轮询延迟、任务状态对账。 +- 需要明确模型、数据集、产物在应用侧和算力侧的索引关系。 + +### 5.7 多算力节点部署约定 + +多算力节点阶段仍然按“单机多 GPU 节点”部署,每台 GPU 服务器都是一个独立算力节点。每个参与调度的节点都必须部署: + +- Compute API。 +- Compute Agent。 +- File Gateway。 +- LLaMA-Factory 宿主机目录和训练依赖。 +- CUDA、NVIDIA Driver、NCCL、PyTorch。 +- 本地数据盘 `/data/yg-ft`。 +- 本地日志和训练产物目录。 + +网络策略保持单向: + +```text +应用服务器 -> 算力节点 A Compute API/File Gateway +应用服务器 -> 算力节点 B Compute API/File Gateway +应用服务器 -> 算力节点 C Compute API/File Gateway +``` + +默认不要求: + +```text +算力节点 -> 应用服务器 +算力节点 A -> 算力节点 B +``` + +多节点任务调度由应用平台统一完成。应用平台从 `compute_nodes` 读取节点地址、权重、标签、启用状态、维护状态和健康检查结果;从 `resource_replicas` 判断目标节点是否已有所需数据集/模型副本;缺失时创建 `resource_sync_jobs`,通过目标节点 File Gateway 同步资源。 + +调度策略: + +- 默认自动调度,按节点健康、标签、GPU 空闲、队列长度、节点权重和资源副本命中率排序。 +- 支持管理员/高级用户手动指定节点或 GPU。 +- `disabled` 节点不参与调度。 +- `draining` 节点不接收新任务,但允许已有任务跑完。 +- `maintenance/offline` 节点只允许查看和清理,不允许提交训练任务。 + +## 6. Compute API 接入标准 + +为预留其他训练平台,应用平台只依赖统一算力接口,不直接依赖 LLaMA-Factory 命令。 + +训练引擎适配器应提供: + +- `validate_config(config)`:校验训练参数和模板。 +- `build_command(job)`:生成训练命令或执行计划。 +- `start(job)`:启动训练进程。 +- `stop(job_id)`:停止训练进程。 +- `status(job_id)`:查询训练状态。 +- `collect_metrics(job_id)`:采集 loss、learning rate、epoch、step 等指标。 +- `collect_artifacts(job_id)`:登记 checkpoint、adapter、导出模型、评测报告。 +- `parse_log(line)`:解析训练日志。 + +第一版适配器: + +```text +compute/engines/llama_factory/ +``` + +后续其他框架: + +```text +compute/engines/xtuner/ +compute/engines/deepspeed_custom/ +compute/engines/openrlhf/ +``` + +## 7. 环境变量建议 + +应用平台: + +```env +APP_ENV=prod +MODELTF_ROUTE_PREFIX=/modelTF +DATABASE_URL=postgresql+psycopg://yg_ft:***@postgres:5432/yg_ft +REDIS_URL=redis://redis:6379/0 +LOG_DIR=/opt/yg-ft/logs/backend +COMPUTE_API_BASE_URL=https://compute.internal:19100 +COMPUTE_SERVICE_TOKEN=*** +FILE_GATEWAY_BASE_URL=https://compute.internal:19101 +COMPUTE_STATUS_SYNC_MODE=polling +COMPUTE_POLL_INTERVAL_SECONDS=10 +COMPUTE_POLL_BATCH_SIZE=100 +``` + +算力平台: + +```env +COMPUTE_ENV=prod +COMPUTE_HOST_ID=gpu-node-01 +COMPUTE_API_PORT=19100 +FILE_GATEWAY_PORT=19101 +COMPUTE_SERVICE_TOKEN=*** +ENABLE_APP_CALLBACK=false +LLAMA_FACTORY_HOME=/app/LLaMA-Factory +YG_FT_DATA_ROOT=/data/yg-ft +LOG_DIR=/opt/yg-ft/logs/compute +CUDA_VISIBLE_DEVICES=0,1,2,3 +``` + +## 8. 日志与监控 + +应用平台: + +- 采集 `backend-YYYY-MM-DD.log` 和 `error-YYYY-MM-DD.log`。 +- 按 `request_id`、`tenant_id`、`project_id`、`job_id` 检索。 +- ERROR 日志触发告警。 + +算力平台: + +- 采集 Compute API 日志、Agent 日志、训练原始日志。 +- 训练日志需要按 `job_id` 独立归档。 +- 关键指标包括 GPU 利用率、显存、磁盘容量、训练队列长度、失败率。 + +## 9. 安全要求 + +- Compute API 不对公网开放。 +- 应用平台和算力平台之间使用服务账号鉴权,生产建议 mTLS。 +- File Gateway 下载地址必须短期有效,并绑定租户、项目、资源权限。 +- 日志不得输出密码、Token、密钥、数据集原文敏感内容。 +- 审计日志留存周期按租户或企业配置执行,应用日志短期留存,长期归档交给日志平台。 + +## 10. 部署检查清单 + +- PostgreSQL 已初始化当前运行脚本 `backend/app/db/sql/001_platform_runtime.sql`;`docs/postgres-schema.sql` 作为目标架构设计,后续通过迁移体系逐步收敛。 +- Redis 可连通。 +- 后端 `GET /modelTF/health` 正常。 +- Compute API 健康检查正常。 +- Compute Agent 能识别 GPU、显存、CUDA 版本。 +- LLaMA-Factory 能在命令行完成最小训练作业。 +- 应用平台能提交训练任务到 Compute API。 +- 任务状态能从算力平台同步回应用平台。 +- 数据集上传、离线导入、产物下载路径权限正确。 +- 后端 JSON 日志可被日志平台解析。 +- ERROR 日志能触发告警。 +- 日志、数据集、模型、产物所在磁盘容量有监控和告警。 + +## 11. Docker Compose 文件规划 + +当前项目按应用服务器和算力服务器拆分了两套 Docker 部署文件,均采用代码外挂方式运行: + +```text +docker/ + app/ + Dockerfile.backend # Backend API 运行时镜像,代码通过 volume 挂载到 /app + Dockerfile.frontend # Nginx 前端运行时镜像,frontend/dist 通过 volume 挂载 + docker-compose.yml # 应用服务器:frontend、backend-api、postgres、redis + .env.example + compute/ + Dockerfile.compute # CUDA + Python + Compute API 运行时镜像 + docker-compose.yml # 算力服务器:compute-api,预留 agent/file gateway 拆分 + .env.example +``` + +项目根目录不再保留 `Dockerfile` 和 `docker-compose.yml`,避免与拆分部署入口混淆。 + +应用服务器启动: + +```bash +cd docker/app +cp .env.example .env +docker compose up -d +``` + +算力服务器启动: + +```bash +cd docker/compute +cp .env.example .env +docker compose up -d +``` + +应用服务器与算力服务器独立部署时,需要在 `docker/app/.env` 中配置: + +```env +COMPUTE_API_BASE_URL=http://:19100 +FILE_GATEWAY_BASE_URL=http://:19101 +COMPUTE_SERVICE_TOKEN=change_me +``` + +这些地址在当前 Docker 阶段通过环境变量动态配置。后续多算力节点阶段建议升级为数据库配置,由应用平台从 `compute_nodes` 表读取节点地址、权重、标签、健康状态和启用状态,并在“算力节点管理”页面维护。 + +多节点后,每台算力服务器各自进入 `docker/compute` 启动一套算力服务,并在应用平台中登记为一条 `compute_nodes` 记录: + +```text +gpu-node-01 -> http://10.10.20.31:19100 / http://10.10.20.31:19101 +gpu-node-02 -> http://10.10.20.32:19100 / http://10.10.20.32:19101 +gpu-node-03 -> http://10.10.20.33:19100 / http://10.10.20.33:19101 +``` + +算力服务器需要在 `docker/compute/.env` 中配置: + +```env +ENABLE_APP_CALLBACK=false +COMPUTE_SERVICE_TOKEN=change_me +YG_FT_DATA_ROOT_HOST=/data/yg-ft +``` + +## 12. 仍需确认的问题 + +- 生产环境是否已有统一 ELK/OpenSearch、Filebeat/Vector 标准配置。 +- PostgreSQL/Redis 开发阶段采用项目自带部署;生产阶段是否切换企业统一基础设施,以及对应 SLA 仍需确认。 +- 是否需要 PostgreSQL 主备、备份恢复、审计日志长期归档的明确 SLA。 +- 大文件上传是否需要断点续传、限速、病毒扫描或 DLP 检测。 +- 应用服务器与算力服务器默认只开通应用侧主动访问算力侧;如后续需要实时回调,再单独评估双向网络策略。 +- 多算力节点已按单机多 GPU 节点扩展设计;仍需确认是否需要节点组、租户绑定节点、同步限速和资源副本清理审批。 diff --git a/docs/first-version-development-plan.md b/docs/first-version-development-plan.md new file mode 100644 index 0000000..db16039 --- /dev/null +++ b/docs/first-version-development-plan.md @@ -0,0 +1,145 @@ +# 当前系统主链路开发计划 + +> 说明:本计划描述当前正在开发的系统能力。代码、接口和 SQL 均按后续生产演进基线维护,不以一次性演示、静态 Mock 或样例数据作为开发准则。联调辅助能力必须显式配置启用,并不得成为默认运行路径。 + +## 1. 阶段目标 + +当前阶段需要完成模型微调平台的主链路工程基础: + +```text +登录 + -> 模型管理 + -> 数据集管理 + -> 创建微调任务 + -> 调度算力节点与 GPU + -> 检查并同步模型/数据集资源 + -> 启动训练任务 + -> 轮询任务状态、GPU 占用、训练日志、loss 曲线 + -> 训练完成后登记训练产物 +``` + +该阶段是正式系统的第一批可运行能力,不再初始化业务样例数据。系统只允许初始化内置管理员/运维账号,模型、数据集、算力节点、GPU、训练任务和资源副本必须通过页面、接口、算力 Agent 扫描或正式导入流程产生。 + +## 2. 运行模式 + +| 模式 | 说明 | 当前要求 | +| --- | --- | --- | +| `real` | 面向真实部署,等待 Compute API、Agent、File Gateway 和 LLaMA-Factory 执行器回写状态 | 默认模式 | +| `simulator` | 仅用于隔离联调,无真实 GPU 时临时推进任务状态、GPU 状态和训练日志 | 必须显式开启,不得用于生产基线 | + +后端默认 `COMPUTE_MODE=real`。在该模式下,任务状态不再按时间自动推进,必须由后续真实算力同步逻辑更新。算力服务默认 `COMPUTE_EXECUTION_MODE=real`,真实训练执行器未完成前,创建训练作业会返回明确的未实现错误,避免误认为已经完成生产训练能力。 + +训练相关能力必须沉淀在 `compute/engines/` 适配层,不允许在应用平台后端直接拼接或执行训练命令。 + +## 3. 当前开发范围 + +### 3.1 应用平台后端 + +对应目录: + +```text +backend/app/ + api/v1/endpoints/platform.py + core/ + db/ +``` + +已建立能力: +- 统一 API 响应结构 `{ code, message, data }`。 +- PostgreSQL 运行表初始化,当前执行脚本位于 `backend/app/db/sql/001_platform_runtime.sql`。 +- 内置管理员账号初始化,业务数据不再自动写入样例记录。 +- 登录、当前用户、用户列表与权限页面接口。 +- 模型管理、训练产物列表、权重合并任务入口。 +- 数据集管理、文件上传、预览、版本管理和下载。 +- 微调任务创建、启动、停止、删除、进度查询、checkpoint 查询。 +- 系统健康指标、系统信息、训练日志、系统日志接口。 +- 算力节点、GPU、队列、资源副本、资源同步任务接口。 + +待继续开发: +- 接入正式 ORM/Repository/Service 分层和 Alembic 迁移。 +- 将任务状态更新改为应用侧定时轮询 Compute API/File Gateway 后落库。 +- 完成项目/模型/数据集级权限隔离校验。 +- 完成审批流、审计留存、配额、资源申请和多租户上下文。 +- 增加正式异常码、接口鉴权、中间件、幂等控制和分页规范。 + +### 3.2 算力平台服务 + +对应目录: + +```text +compute/ + api/main.py + agent/ + engines/llama_factory/ + file_gateway/ +``` + +已建立能力: +- `/modelTF/health` 与 `/modelTF/v1/compute/health` 节点健康检查。 +- LLaMA-Factory 参数校验、命令生成和训练日志指标解析。 +- Compute API 作业、GPU、文件网关接口壳。 +- 显式 `simulator` 模式下的内存状态机,用于隔离联调。 + +待继续开发: +- 真实 GPU 发现:接入 `nvidia-smi` 或 NVML。 +- GPU 锁定与释放:一张 GPU 同一时间只分配给一个训练或推理任务。 +- LLaMA-Factory 真实执行器:生成 YAML/命令、启动进程、停止进程、采集 PID。 +- 训练日志采集:读取宿主机挂载日志文件,解析 loss、learning rate、epoch 等指标。 +- Checkpoint/adapter/merged model 扫描与产物登记。 +- File Gateway:本地磁盘文件上传、下载、校验、导入和跨节点资源同步。 + +### 3.3 前端页面 + +已接入页面: +- `/login`:登录接口。 +- `/model-manage`:模型列表、模型来源、训练产物。 +- `/dataset`、`/dataset/:id/preview`:数据集列表、预览、版本。 +- `/fine-tune`、`/fine-tune/create`:微调任务创建、启动、状态轮询。 +- `/training-log/:id`:训练日志和 loss 曲线。 +- `/hardware`:平台 GPU 与系统性能。 +- `/compute`:算力节点、GPU、队列、资源副本。 + +前端 Mock 默认关闭。仅在隔离前端开发时可设置 `VITE_ENABLE_MOCK=true`,真实联调和后续生产演进均以 `/modelTF` 后端接口为准。 + +待继续开发: +- 补齐多租户、项目管理、审批中心、审计中心、配额管理页面。 +- 完成算力节点管理表单,包括节点地址、权重、标签、启用状态和健康检查结果。 +- 完成模型/数据集导入页面,支持本地路径扫描和归属项目选择。 +- 推理服务页面需接入真实后端任务接口,移除页面内本地假对话路径。 + +### 3.4 数据库 + +当前运行 SQL: + +```text +backend/app/db/sql/001_platform_runtime.sql +``` + +架构目标 SQL: + +```text +docs/postgres-schema.sql +``` + +当前运行 SQL 用于支持已开发接口落库;架构目标 SQL 包含用户中心、多租户、项目隔离、审批、审计、配额、评测等完整模型。后续需要通过 Alembic 将二者收敛为统一迁移体系,生产升级只走迁移脚本,不依赖手工改表。 + +## 4. 验收标准 + +- 启动后端必须连接 PostgreSQL,不允许回退到 SQLite。 +- 后端启动只初始化系统内置账号,不初始化模型、数据集、算力节点、GPU、训练任务等业务样例数据。 +- 前端默认请求真实 `/modelTF` 接口,除非显式设置 `VITE_ENABLE_MOCK=true`。 +- 默认 `real` 模式下任务状态不自动伪造完成,必须等待真实算力同步。 +- 显式 `simulator` 模式只能用于隔离联调,部署文档必须标注不得用于生产。 +- 登录后可以进入主界面,并可通过页面/API 创建真实业务记录。 +- 代码、接口路由、配置项、数据库表名不得使用 `demo` 命名。 + +## 5. 后续开发计划 + +| 阶段 | 重点 | 说明 | +| --- | --- | --- | +| 阶段 1 | 数据库迁移体系 | 将当前运行 SQL 与架构 SQL 收敛到 Alembic 迁移 | +| 阶段 2 | 后端领域分层 | 拆分用户、模型、数据集、训练、算力、审计等模块 | +| 阶段 3 | 真实 Compute Agent | GPU 发现、资源锁定、进程管理、日志采集 | +| 阶段 4 | LLaMA-Factory 训练执行 | YAML/命令生成、进程启动/停止、checkpoint 和 adapter 扫描 | +| 阶段 5 | 企业治理 | 多租户、项目隔离、审批流、审计留存、配额和资源申请 | +| 阶段 6 | 多算力节点调度 | 基于 `compute_nodes`、标签、权重、资源副本和节点健康实现调度策略 | diff --git a/docs/menu-functional-requirements.md b/docs/menu-functional-requirements.md new file mode 100644 index 0000000..e73fdc3 --- /dev/null +++ b/docs/menu-functional-requirements.md @@ -0,0 +1,98 @@ +# 菜单与功能需求总览 + +> 本文根据当前前端侧边栏、路由、需求文档、接口文档、部署文档和 SQL 脚本整理。当前代码和 SQL 均按正式系统开发基线维护;Mock、Simulator 只能作为显式联调能力,不作为默认开发准则。 + +## 1. 菜单分层 + +### 1.1 当前侧边栏菜单 + +| 一级分组 | 菜单 | 路由 | 权限码 | 当前状态 | 主要功能 | +| --- | --- | --- | --- | --- | --- | +| 服务看板 | 服务看板 | `/dashboard` | `dashboard` | 已有页面,接口需继续完善 | 总览指标、服务状态、训练统计、最近任务、健康入口 | +| 模型服务 | 模型训练 | `/fine-tune` | `fine-tune` | 已接入主链路 | 训练任务列表、创建训练、启动/停止、进度、训练日志、checkpoint | +| 模型服务 | 模型评测 | `/model-eval` | `model-eval` | 前端页面已有,后端待完整实现 | 评测任务、评测维度、样本评分、综合结果 | +| 模型服务 | 模型推理 | `/model-inference` | `model-inference` | 前端页面已有,后端待完整实现 | 推理任务、模型加载、单模型对话、模型对比入口 | +| 模型服务 | 模型管理 | `/model-manage` | `model-manage` | 已接入主链路 | 基座模型登记、本地/API 模型、训练产物、权重合并、模型导出 | +| 数据治理 | 数据集管理 | `/dataset` | `dataset` | 已接入主链路 | 数据集列表、上传、预览、在线编辑、版本、下载、删除审批入口 | +| 数据治理 | 数据处理 | `/data-process` | `data-process` | 前端页面已有,后端待完整实现 | 文档上传、切片预览、LLM 生成、结果编辑、发布数据集 | +| 其他工具 | 数据类型转换 | `/data-convert` | `data-convert` | 前端页面已有,后端待实现 | JSON/JSONL/Markdown 等格式转换任务 | +| 算力资源 | 算力节点 | `/compute` | `compute` | 已接入节点管理接口 | 节点地址、权重、标签、启用状态、GPU、队列、资源副本 | +| 系统设置 | 用户设置 | `/user-settings` | `user-settings` | 已接入基础用户接口 | 用户列表、创建用户、启停、页面权限 | +| 系统设置 | 平台性能 | `/hardware` | `hardware` | 已有接口,需接真实采集 | CPU、内存、磁盘、GPU、进程、网络监控 | +| 系统设置 | 查看日志 | `/logs` | `logs` | 已有接口,需接真实日志文件 | 后端日志、error 日志、训练日志索引、日志内容查看 | + +### 1.2 当前二级和隐藏路由 + +| 页面 | 路由 | 归属菜单 | 说明 | +| --- | --- | --- | --- | +| 登录 | `/login` | 独立入口 | 登录后进入主界面 | +| 使用文档 | `/guide` | 独立入口 | 当前系统使用说明 | +| 创建训练任务 | `/fine-tune/create` | 模型训练 | 训练参数、模型/数据集/GPU 选择 | +| 训练日志 | `/training-log/:id` | 模型训练 | 日志、指标、checkpoint、任务概览 | +| 新建评测 | `/model-eval/create` | 模型评测 | 模型、数据集、维度、GPU 选择 | +| 评测详情 | `/model-eval/:id` | 模型评测 | 维度汇总、样本结果、人工复核预留 | +| 评测维度创建/编辑 | `/model-eval/dimension/create`、`/model-eval/dimension/:id/edit` | 模型评测 | 评测规则、Prompt、评分器配置 | +| 新建推理 | `/model-inference/create` | 模型推理 | 推理任务和模型加载配置 | +| 模型对话 | `/model-inference/chat/:id` | 模型推理 | 单模型对话 | +| 模型对比 | `/model-compare/chat/:id`、`/model-compare/result` | 模型推理 | 多模型对比和结果页 | +| 添加/编辑模型 | `/model-manage/create`、`/model-manage/:id/edit` | 模型管理 | 模型登记、用途、来源、路径/API 配置 | +| 合并权重 | `/model-manage/merge` | 模型管理 | LoRA/Adapter 合并任务 | +| 数据处理创建/详情 | `/data-process/create`、`/data-process/:id` | 数据处理 | 数据处理向导和任务详情 | +| 数据集创建/编辑/预览 | `/dataset/create`、`/dataset/:id/edit`、`/dataset/:id/preview` | 数据集管理 | 数据集元数据、文件、版本与内容 | +| 自定义工具 | `/tools`、`/tools/create`、`/tools/:id/edit` | 规划入口 | 路由存在,当前侧边栏未展示,后续可归入“其他工具” | +| 算力子页 | `/compute/gpus`、`/compute/queue`、`/compute/nodes` | 算力节点 | 当前可作为页签或深链 | +| 创建用户/权限设置 | `/user-settings/create`、`/user-settings/:id/permission` | 用户设置 | 用户创建和页面权限 | +| 无权限页 | `/permission-denied` | 系统页 | 路由守卫无权限跳转 | + +### 1.3 企业治理待补菜单 + +| 建议菜单分组 | 菜单 | 建议路由 | 优先级 | 必要性 | +| --- | --- | --- | --- | --- | +| 组织与项目 | 租户管理 | `/tenants`、`/tenants/:id` | P0 | 多租户隔离、配额、留存策略入口 | +| 组织与项目 | 项目空间 | `/projects`、`/projects/:id`、`/projects/:id/members` | P0 | 项目级模型/数据集/任务隔离 | +| 组织与项目 | 资源授权 | `/projects/:id/permissions` 或资源详情弹窗 | P0 | 模型/数据集/任务级 ACL | +| 治理中心 | 审批中心 | `/approvals`、`/approvals/:id` | P0 | 删除、发布、导出、停止他人任务等高风险动作 | +| 治理中心 | 审批设置 | `/approval-settings` | P1 | 审批模板、审批人规则、超时策略 | +| 治理中心 | 审计中心 | `/audit-logs`、`/login-logs`、`/download-logs` | P1 | 操作审计、登录审计、下载审计、导出 | +| 运维中心 | 存储管理 | `/storage` | P1 | 本地磁盘占用、临时文件、checkpoint 清理、留存 | +| 运维中心 | 训练引擎管理 | `/training-engines` | P2 | LLaMA-Factory 和后续引擎能力 schema、健康检查 | +| 模型服务 | 模型服务治理 | `/model-services`、`/model-services/:id` | P1 | 测试/生产服务发布、调用统计、下线审批 | + +## 2. 菜单对应接口和数据库 + +| 菜单/模块 | 主要接口 | 当前运行 SQL | 目标 SQL | +| --- | --- | --- | --- | +| 登录、用户设置 | `/modelTF/login`、`/modelTF/me`、`/modelTF/users` | `users` | `users`、`login_sessions`、`permissions`、`role_permissions`、`user_permission_overrides` | +| 服务看板 | `/modelTF/dashboard/overview`、`/modelTF/health` | 复用模型/数据集/任务/算力表 | `system_metric_snapshots`、`web_logs`、各业务表聚合 | +| 模型管理 | `/modelTF/model-manage`、`/modelTF/model-manage/trained-models`、`/modelTF/model-manage/merge` | `models`、`trained_models` | `models`、`trained_models`、`storage_objects`、`local_import_jobs`、`resource_acl` | +| 数据集管理 | `/modelTF/dataset-manage`、`/modelTF/dataset-manage/upload/{id}`、`/preview`、`/versions` | `datasets`、`dataset_files` | `datasets`、`dataset_files`、`dataset_file_versions`、`dataset_records`、`storage_objects` | +| 模型训练 | `/modelTF/fine-tune`、`/start`、`/progress`、`/checkpoints` | `fine_tune_tasks`、`trained_models` | `fine_tune_tasks`、`fine_tune_metrics`、`fine_tune_checkpoints`、`compute_jobs`、`gpu_allocations` | +| 训练日志 | `/modelTF/training-log-files`、`/modelTF/training-log-content` | 由任务表生成索引 | 日志文件元数据、`fine_tune_metrics`、`audit_logs` | +| 算力节点 | `/modelTF/compute/nodes`、`/compute/gpus`、`/compute/queue`、`/compute/nodes/{id}/replicas` | `compute_nodes`、`gpus`、`resource_replicas`、`resource_sync_jobs` | `compute_nodes`、`gpu_devices`、`compute_node_engines`、`compute_jobs`、`resource_replicas`、`resource_sync_jobs` | +| 平台性能 | `/modelTF/system-info`、`/modelTF/compute/gpus` | `gpus`、任务表 | `system_metric_snapshots`、`gpu_devices`、`compute_jobs` | +| 查看日志 | `/modelTF/log-files`、`/modelTF/log-content`、`/modelTF/web-log` | 文件日志 | `web_logs`、`audit_logs`,大日志进入日志平台 | +| 模型评测 | `/modelTF/model-eval`、`/modelTF/dimension` | 当前运行 SQL 未覆盖 | `eval_tasks`、`eval_dimensions`、`eval_sample_results`、`eval_dimension_summaries` | +| 模型推理/对比 | `/modelTF/model-compare`、`/modelTF/model-chat/*` | 当前运行 SQL 未覆盖 | `inference_tasks`、`inference_task_models`、`chat_sessions`、`chat_messages` | +| 数据处理 | `/modelTF/data-process/*` | 当前运行 SQL 未覆盖 | `data_process_tasks`、`data_process_source_files`、`data_process_preview_items`、`data_process_results` | +| 数据转换/自定义工具 | `/modelTF/data-convert/jobs`、`/modelTF/tools` | 当前运行 SQL 未覆盖 | `data_convert_jobs`、`custom_tools` | +| 租户/项目/资源授权 | `/modelTF/tenants`、`/modelTF/projects`、`/modelTF/resources/{type}/{id}/acl` | 当前运行 SQL 未覆盖 | `tenants`、`tenant_users`、`projects`、`project_members`、`resource_acl` | +| 审批/审计/留存/配额 | `/modelTF/approvals`、`/modelTF/audit-logs`、`/modelTF/retention-policies`、`/modelTF/quotas/usage` | 当前运行 SQL 未覆盖 | `approval_templates`、`approval_instances`、`approval_steps`、`audit_logs`、`retention_policies`、`quotas`、`quota_usage` | + +## 3. 文档和脚本检查结论 + +| 对象 | 当前结论 | 本次补充 | +| --- | --- | --- | +| 需求文档 | `docs/platform-architecture-requirements.md` 和 `docs/system-development-plan.md` 已覆盖多租户、项目隔离、审批、审计、多算力节点、应用/算力分离部署;缺少一份按当前菜单组织的总览 | 新增本文作为菜单和功能需求总览 | +| 接口文档 | `docs/backend-api-design.md` 已统一 `/modelTF`,并已有页面/接口映射;需要明确引用菜单总览,避免开发只看接口不看页面入口 | 在接口文档增加菜单总览引用 | +| 开发计划 | `docs/system-development-plan.md` 已按工作包列出页面、接口和 DB;需要把本文作为任务认领入口 | 在开发计划增加菜单总览引用 | +| 部署文档 | `docs/deployment-plan.md`、`docker/README.md` 已覆盖应用/算力分离、单机多 GPU、本地磁盘、真实模式默认、Docker 拆分 | 暂无新增部署配置要求 | +| 目标 SQL | `docs/postgres-schema.sql` 覆盖完整目标模型,包含用户、权限、多租户、项目、审批、审计、模型、数据集、训练、评测、推理、算力、存储、导入、服务治理 | 暂不需要新增目标表 | +| 当前运行 SQL | `backend/app/db/sql/001_platform_runtime.sql` 只覆盖已接入运行接口的最小表集 | 后续每实现一个 P0/P1 菜单模块,应同步补运行 SQL 或迁移脚本;不能再以样例数据补功能 | + +## 4. 后续补充原则 + +- 新增侧边栏菜单时,必须同步补齐:路由、权限码、接口文档、DB 表/迁移、审计动作、部署依赖。 +- 新增后端接口时,必须在 `docs/backend-api-design.md` 标注对应页面/功能模块。 +- 新增表结构时,目标模型写入 `docs/postgres-schema.sql`,当前可执行落库写入 `backend/app/db/sql/` 或 Alembic 迁移。 +- 与训练、评测、推理、数据处理相关的异步任务必须落库,不能依赖前端本地状态。 +- 与算力相关的功能默认走真实模式;Simulator 只能显式开启用于隔离联调。 diff --git a/docs/platform-architecture-requirements.md b/docs/platform-architecture-requirements.md new file mode 100644 index 0000000..ec756bc --- /dev/null +++ b/docs/platform-architecture-requirements.md @@ -0,0 +1,772 @@ +# 模型训练平台架构与功能需求设计 + +> 本文基于当前前端页面、已有接口/数据库设计,以及用户补充的 6 条约束进行补全。目标是把平台从“单前端原型 + 后端接口草案”扩展为企业可落地的模型训练平台方案。 + +## 1. 补充需求结论 + +### 1.1 已确认约束 + +1. 部署形态:单机多 GPU。 +2. 文件存储:本地磁盘。 +3. 训练框架:当前固定 LLaMA-Factory,但要预留其他训练平台接入标准。 +4. 权限粒度:需要到项目、模型、数据集级隔离。 +5. 企业治理:需要多租户、审批流、审计留存周期。 +6. 部署边界:算力平台与应用平台分开部署。 + +### 1.2 对整体设计的影响 + +- 不能只做页面级 RBAC,需要引入“租户 -> 项目 -> 资源 -> 成员/角色/ACL”的资源权限模型。 +- 单机多 GPU 不等于简单指定 GPU ID,需要有 GPU 资源池、锁定、排队、抢占策略和异常释放机制。 +- 本地磁盘存储与应用/算力分离存在天然冲突:文件不能只存应用服务器本地,也不能让应用直接读算力服务器目录。建议将训练文件、模型文件、日志文件统一落在算力节点本地磁盘,由算力平台提供文件网关 API;应用平台只保存元数据和访问路径。 +- LLaMA-Factory 应作为第一个训练引擎插件,而不是写死到业务流程里。后续接入其他平台时只需实现同一套训练引擎协议。 +- 审批流、审计和保留策略必须从第一版进入数据模型和接口,否则后期补会牵动大量资源表。 + +## 2. 总体架构设计 + +### 2.1 逻辑分层 + +```mermaid +flowchart LR + U["用户浏览器"] --> APP["应用平台 Web / FastAPI"] + APP --> DB["PostgreSQL"] + APP --> REDIS["Redis / 任务队列"] + APP --> CPAPI["算力平台 API"] + CPAPI --> AGENT["算力节点 Agent"] + AGENT --> GPU["单机多 GPU"] + AGENT --> DISK["本地磁盘工作区"] + AGENT --> LF["LLaMA-Factory 引擎"] +``` + +### 2.2 应用平台职责 + +应用平台负责业务编排和企业治理,不直接执行训练命令: + +- 用户、租户、项目、权限、审批、审计。 +- 模型、数据集、任务、评测、推理任务元数据。 +- 前端 API、OpenAPI、统一认证、统一响应。 +- 训练/评测/数据处理任务创建、状态查询、审批校验。 +- 与算力平台通信,下发任务、查询进度、拉取日志、下载产物。 + +建议部署组件: + +- Nginx:静态前端与反向代理。 +- FastAPI:业务 API。 +- PostgreSQL:业务元数据。 +- Redis:缓存、任务队列、SSE 状态缓存、分布式锁。 +- Worker:审批通知、审计归档、周期清理、异步导出。 + +### 2.3 算力平台职责 + +算力平台负责“实际占用 GPU 和磁盘”的事情: + +- GPU 发现、资源上报、锁定、释放。 +- 本地磁盘工作区管理。 +- 数据集文件接收、校验、解压、版本目录管理。 +- LLaMA-Factory 命令生成、执行、停止、日志采集。 +- 训练产物、LoRA adapter、merged model、checkpoint 管理。 +- 推理服务进程管理、端口分配、健康检查。 +- 系统/GPU 监控指标采集。 + +建议部署组件: + +- Compute API:只暴露给应用平台访问。 +- Compute Agent:本机服务,具备启动/停止进程权限。 +- 本地文件网关:上传、下载、预览、断点续传、文件校验。 +- Engine Adapter:LLaMA-Factory 适配器,后续扩展其他训练引擎。 + +### 2.4 应用与算力平台通信 + +建议统一使用内部 HTTP/gRPC API,并配置服务间认证: + +- 应用平台调用算力平台必须携带 `X-Service-Token` 或 mTLS 证书。 +- 算力平台不信任前端用户身份,只信任应用平台下发的租户、项目、任务和资源上下文。 +- 第一阶段不默认启用算力侧回调,应用平台通过定时轮询 Compute API 同步任务状态;如未来启用回调,必须带签名,避免伪造状态。 + +核心通信接口: + +| 方向 | 接口 | 说明 | +| --- | --- | --- | +| 应用 -> 算力 | `POST /modelTF/compute/jobs` | 创建训练/评测/数据处理/推理任务 | +| 应用 -> 算力 | `POST /modelTF/compute/jobs/{id}/stop` | 停止任务 | +| 应用 -> 算力 | `GET /modelTF/compute/jobs/{id}` | 查询任务状态 | +| 应用 -> 算力 | `GET /modelTF/compute/jobs/{id}/logs` | 拉取日志 | +| 应用 -> 算力 | `GET /modelTF/compute/resources/gpus` | 查询 GPU 状态 | +| 应用 -> 算力 | `POST /modelTF/compute/files/upload` | 上传文件到算力本地磁盘 | +| 应用 -> 算力 | `GET /modelTF/compute/files/{object_id}/download` | 下载文件 | +| 应用 -> 算力 | `GET /modelTF/compute/jobs?status=running` | 定时轮询任务状态、指标、产物索引 | + +## 3. 本地磁盘存储设计 + +### 3.1 存储根目录 + +由于算力和应用分离,建议文件主存储放在算力节点本地磁盘: + +```text +/data/ft-platform/ + tenants/{tenant_id}/ + projects/{project_id}/ + datasets/{dataset_id}/ + models/base/{model_id}/ + models/trained/{trained_model_id}/ + jobs/{job_id}/ + input/ + output/ + logs/ + checkpoints/ + tmp/ +``` + +应用平台数据库保存: + +- `storage_type=local`。 +- `storage_node_id`。 +- `relative_path`。 +- `checksum_sha256`。 +- `byte_size`。 +- `tenant_id/project_id/resource_id`。 + +### 3.2 文件访问原则 + +- 前端不直接访问磁盘路径。 +- 应用平台生成短时下载凭证,转发或重定向到算力文件网关。 +- 预览内容只读取前 N 行或指定区间,避免大文件撑爆 API。 +- 大文件上传必须支持分片上传、校验、断点续传。 +- 删除操作采用软删除 + 延迟清理,等待审计留存和审批结果。 + +### 3.3 磁盘配额 + +配额应分三层: + +- 租户配额:总容量、模型容量、数据容量、日志容量。 +- 项目配额:可用容量、最大文件大小、最大任务产物保留数。 +- 用户配额:可上传文件总量、并发任务产物占用。 + +超过配额时: + +- 禁止新建任务或上传文件。 +- 允许下载和清理。 +- 提示可清理的 checkpoint、过期日志、失败任务临时目录。 + +## 4. 单机多 GPU 资源调度 + +第一版可以先以单个算力节点跑通主链路,但数据模型、接口和页面需要按多算力节点预留。多节点阶段仍然采用“每台 GPU 服务器 = 一个单机多 GPU 节点”的模式,不引入 Kubernetes。 + +### 4.1 GPU 资源模型 + +每张 GPU 需要记录: + +- `gpu_index`、`uuid`、型号、显存、驱动版本。 +- 当前利用率、显存占用、温度、功耗。 +- 当前锁定任务、进程 PID、端口。 +- 状态:`idle`、`reserved`、`running`、`draining`、`offline`、`error`。 + +### 4.2 调度策略 + +第一版建议支持三种模式: + +- 手动指定 GPU:兼容当前前端选择 GPU 的模式。 +- 自动选择 GPU:按空闲显存、温度、任务队列选择。 +- 项目配额调度:项目最多可占用 N 张 GPU,避免单项目占满机器。 + +训练任务启动流程: + +1. 应用平台校验权限、配额、审批状态。 +2. 生成任务,状态为 `pending`。 +3. 算力平台尝试锁定 GPU。 +4. 锁定成功后创建工作区并启动 LLaMA-Factory。 +5. Agent 持续上报进度、日志、指标。 +6. 任务完成后释放 GPU,登记模型产物。 + +### 4.3 并发与排队 + +- 同一 GPU 同时只允许一个训练任务。 +- 推理服务可与训练互斥,默认不允许混跑;如后续允许,需要显存保留策略。 +- 数据处理如果只调用 API 模型,可以不占 GPU;如果调用本地模型生成,需要占用 GPU。 +- 支持任务队列优先级:`low`、`normal`、`high`、`urgent`。 +- 高优任务是否可抢占低优任务,需要审批或管理员权限。 + +### 4.4 多算力节点升级策略 + +多算力节点阶段的推荐决策: + +- 每个可执行训练任务的 GPU 节点都部署 `Compute API`、`Compute Agent`、`File Gateway`、LLaMA-Factory、CUDA/PyTorch 训练环境和本地数据盘。 +- 应用服务器可以主动访问所有算力节点的 `Compute API/File Gateway`。 +- 算力节点之间默认不互相访问,不做节点间点对点同步;所有调度、状态同步和资源分发由应用平台统一编排。 +- 长期坚持每台算力服务器本地磁盘,因此需要 `resource_replicas` 记录数据集、基座模型、checkpoint、adapter、导出模型在哪些节点已有本地副本。 +- 调度前必须检查目标节点是否已有模型和数据集副本;缺失时由应用平台通过目标节点 File Gateway 创建同步任务,完成后再启动训练。 +- 调度支持自动和手动两种模式:普通用户默认自动调度,管理员/高级用户可手动指定节点、GPU、标签或节点组。 + +多节点自动调度建议: + +1. 过滤 `enabled = true` 且 `scheduler_status = online` 的节点。 +2. 按训练引擎、GPU 型号、显存、节点标签、租户/项目配额过滤。 +3. 优先选择已存在所需模型/数据集副本的节点,减少跨节点复制。 +4. 同等条件下按空闲 GPU、队列长度、节点权重和最近健康检查排序。 +5. `draining` 节点不接收新任务,但允许已有任务完成。 + +## 5. 训练引擎接入标准 + +### 5.1 引擎抽象 + +LLaMA-Factory 是第一实现,但业务系统只依赖统一训练引擎接口: + +```text +TrainingEngine + validate_config(config) + prepare_workspace(job_context) + build_command(job_context) + start(job_context) + stop(job_id) + parse_progress(log_line) + collect_artifacts(job_id) + export_model(job_id, export_config) +``` + +### 5.2 引擎注册信息 + +每个训练引擎需要声明: + +- 引擎编码:`llama_factory`。 +- 支持任务:`SFT`、`DPO`、`CPT`。 +- 支持方法:`lora`、`qlora`、`full`。 +- 支持模型模板:`qwen`、`llama3` 等。 +- 支持数据格式:Alpaca、ShareGPT、DPO pair、pretrain text。 +- 支持量化和导出格式。 +- 参数 schema。 +- 命令模板或启动方式。 + +### 5.3 LLaMA-Factory 适配要求 + +LLaMA-Factory 适配器负责: + +- 将平台训练参数转换为 YAML/CLI 参数。 +- 根据项目工作区生成数据集配置。 +- 自动设置 `CUDA_VISIBLE_DEVICES`。 +- 解析训练日志中的 loss、epoch、learning_rate、ETA。 +- 收集 checkpoint、adapter、merged model、training_args、trainer_state。 +- 支持训练停止和失败恢复。 + +### 5.4 后续接入其他平台的标准 + +其他训练平台只要实现以下契约即可接入: + +- 输入:模型引用、数据集引用、训练配置、资源需求、输出目录。 +- 输出:任务状态、进度、日志、指标、产物清单、失败原因。 +- 生命周期:`prepare`、`start`、`running`、`stop`、`complete`、`cleanup`。 +- 安全:不能越权访问其他租户/项目目录。 +- 可观测:必须输出结构化事件和日志。 + +## 6. 多租户与项目级隔离 + +### 6.1 租户模型 + +需要新增租户管理: + +- 租户名称、编码、状态。 +- 租户管理员。 +- 租户资源配额:GPU 并发数、磁盘容量、最大项目数。 +- 租户审计策略、保留周期、审批策略。 + +### 6.2 项目空间 + +所有业务资源必须归属项目: + +- 数据集。 +- 模型。 +- 训练任务。 +- 评测任务。 +- 推理任务。 +- 数据处理任务。 +- 自定义工具。 + +项目字段: + +- 项目名称、描述、所属租户。 +- 项目管理员、成员。 +- 默认资源权限。 +- GPU/磁盘/任务并发配额。 +- 项目状态:启用、归档、禁用。 + +### 6.3 资源级权限 + +建议采用 RBAC + ACL 混合: + +- RBAC 决定用户是否能访问模块,例如能否进入模型管理。 +- 项目角色决定用户是否能管理项目内资源。 +- 资源 ACL 处理特殊授权,例如某个数据集只给指定成员可读。 + +项目角色建议: + +| 角色 | 权限 | +| --- | --- | +| Project Owner | 项目设置、成员、资源、审批策略全权限 | +| Project Maintainer | 创建/编辑模型、数据集、任务,可发起发布和删除 | +| Developer | 创建训练、评测、推理、数据处理任务 | +| Reviewer | 审批、复核、查看评测结果 | +| Viewer | 只读查看 | + +资源权限建议: + +- `read`:查看资源。 +- `write`:编辑元数据和内容。 +- `execute`:用于训练/评测/推理。 +- `download`:下载文件和模型。 +- `delete`:删除或申请删除。 +- `manage_acl`:管理资源授权。 + +### 6.4 数据隔离要求 + +- API 查询必须默认带 `tenant_id` 和用户可访问项目范围。 +- 数据库所有核心资源表增加 `tenant_id`、`project_id`。 +- 本地磁盘路径包含租户和项目 ID,防止路径混用。 +- 算力任务上下文必须携带租户/项目,Agent 只允许访问对应工作区。 +- 日志、审计、下载链接也必须按租户隔离。 + +## 7. 企业治理设计 + +### 7.1 审批流 + +建议第一版支持可配置审批模板: + +| 场景 | 是否建议审批 | 原因 | +| --- | --- | --- | +| 删除数据集 | 是 | 数据不可逆风险高 | +| 删除模型 | 是 | 影响训练/推理依赖 | +| 模型发布为可推理服务 | 是 | 影响生产资源 | +| 停止他人训练任务 | 是或管理员直通 | 影响计算成本和他人工作 | +| 导出模型 | 可配置 | 涉及资产外流 | +| 下载敏感数据集 | 可配置 | 涉及数据安全 | +| 提高 GPU 配额 | 是 | 涉及资源竞争 | + +审批流能力: + +- 发起审批。 +- 指定审批人/审批组。 +- 多级审批。 +- 通过、驳回、撤回、转交。 +- 审批超时提醒。 +- 审批结果回写原业务动作。 + +### 7.2 审计留存周期 + +建议支持租户级配置: + +- 操作审计:默认 180 天,可配置 90/180/365/永久。 +- 登录审计:默认 180 天。 +- 训练日志:默认 90 天。 +- 系统监控:原始采样默认 30 天,聚合指标保留 1 年。 +- 模型产物:默认长期保留,删除需审批。 +- 临时文件:默认 7 天清理。 +- 失败任务工作区:默认 14 天清理。 + +审计不可被普通管理员物理删除,只能由系统归档任务按策略处理。 + +### 7.3 安全策略 + +需要补充: + +- API Key 加密存储和脱敏展示。 +- 外部数据源密码加密存储或不落库。 +- 下载链接短时有效。 +- 敏感操作二次确认。 +- 审批通过后动作有效期,例如 24 小时内执行。 +- IP 白名单和服务间 token。 +- 操作审计记录 before/after 数据。 + +## 8. 需要补全的页面和功能 + +### 8.1 租户与项目页面 + +当前前端缺失,建议新增: + +1. 租户管理页 + - 租户列表、创建、禁用、配额设置、审计策略。 + - 仅平台管理员可见。 + +2. 项目空间页 + - 项目列表、创建项目、归档项目。 + - 展示项目资源概览:模型数、数据集数、任务数、磁盘占用、GPU 使用。 + +3. 项目成员页 + - 添加/移除成员。 + - 设置项目角色。 + - 查看成员最近操作。 + +4. 项目资源权限页 + - 模型/数据集/任务级授权。 + - 支持按用户、用户组、项目角色授权。 + +### 8.2 用户中心补全 + +前端路由已有但页面文件缺失或未完成: + +- `PermissionDeniedView.vue` +- `UserSettingsView.vue` +- `UserCreateView.vue` +- `UserPermissionView.vue` + +建议功能: + +- 用户列表、创建、禁用、重置密码。 +- 角色管理。 +- 页面权限管理。 +- 用户所属租户/项目。 +- 用户可用 GPU/磁盘配额查看。 +- 登录记录和操作审计入口。 + +### 8.3 审批中心 + +新增页面: + +- 我的申请。 +- 待我审批。 +- 已办审批。 +- 审批详情。 +- 审批模板配置。 + +审批详情需要展示: + +- 申请人、申请时间、动作类型、目标资源。 +- 变更前后信息。 +- 风险提示。 +- 审批记录。 +- 通过/驳回意见。 + +### 8.4 算力资源中心 + +当前只有硬件监控页,建议扩展为算力资源中心: + +- GPU 拓扑和状态。 +- GPU 当前任务占用。 +- GPU 锁定/释放记录。 +- 队列中的任务。 +- 资源配额:租户/项目/用户维度。 +- 算力节点 Agent 状态。 +- 算力节点新增/编辑、连接测试、启用/禁用、维护模式。 +- 节点权重、标签、训练引擎版本、LLaMA-Factory 健康状态。 +- 节点本地资源副本:数据集、模型、checkpoint、adapter 和导出模型缓存。 +- 训练引擎健康状态。 + +### 8.5 文件与存储管理 + +新增页面: + +- 存储总览。 +- 租户/项目磁盘占用。 +- 大文件列表。 +- 临时文件清理。 +- Checkpoint 管理。 +- 日志保留策略。 +- 文件下载审计。 + +### 8.6 训练引擎管理 + +新增页面: + +- 引擎列表。 +- LLaMA-Factory 版本和路径。 +- 引擎能力声明。 +- 参数 schema 管理。 +- 引擎健康检查。 +- 引擎接入文档。 + +### 8.7 任务队列与运行控制 + +新增页面: + +- 全局任务队列。 +- 项目任务队列。 +- 任务优先级调整。 +- 任务重试。 +- 任务停止审批。 +- 失败任务诊断。 + +### 8.8 模型发布与服务治理 + +当前推理/对比页面已有基础能力,但缺少企业化发布能力: + +- 模型发布申请。 +- 推理服务实例配置。 +- 端口、GPU、并发、超时、最大上下文限制。 +- 服务启停记录。 +- 调用统计。 +- 服务下线审批。 + +## 9. 后端模块补全 + +### 9.1 新增核心模块 + +| 模块 | 职责 | +| --- | --- | +| tenant | 租户管理、租户配额、租户策略 | +| project | 项目空间、成员、项目角色 | +| resource_acl | 模型/数据集/任务级资源授权 | +| approval | 审批模板、审批实例、审批动作 | +| quota | GPU、磁盘、任务并发配额 | +| compute_gateway | 应用平台与算力平台通信 | +| file_gateway | 本地磁盘文件上传、下载、预览 | +| engine_registry | 训练引擎注册与能力发现 | +| retention | 审计、日志、临时文件保留策略 | + +### 9.2 数据模型补充 + +在前一版 SQL 基础上,应新增或调整: + +- `tenants` +- `tenant_users` +- `projects` +- `project_members` +- `resource_acl` +- `approval_templates` +- `approval_instances` +- `approval_steps` +- `quotas` +- `quota_usage` +- `compute_nodes` +- `gpu_devices` +- `gpu_allocations` +- `compute_jobs` +- `training_engines` +- `retention_policies` + +核心资源表需要补充字段: + +- `tenant_id` +- `project_id` +- `visibility` +- `owner_id` +- `approval_status` +- `storage_node_id` + +需要调整的已有表: + +- `models` +- `trained_models` +- `datasets` +- `dataset_files` +- `data_process_tasks` +- `fine_tune_tasks` +- `eval_tasks` +- `inference_tasks` +- `custom_tools` +- `audit_logs` +- `storage_objects` + +### 9.3 接口补充 + +租户: + +- `GET /modelTF/tenants` +- `POST /modelTF/tenants` +- `GET /modelTF/tenants/{id}` +- `PUT /modelTF/tenants/{id}` +- `PUT /modelTF/tenants/{id}/quota` +- `PUT /modelTF/tenants/{id}/retention-policy` + +项目: + +- `GET /modelTF/projects` +- `POST /modelTF/projects` +- `GET /modelTF/projects/{id}` +- `PUT /modelTF/projects/{id}` +- `POST /modelTF/projects/{id}/archive` +- `GET /modelTF/projects/{id}/members` +- `POST /modelTF/projects/{id}/members` +- `PUT /modelTF/projects/{id}/members/{user_id}` +- `DELETE /modelTF/projects/{id}/members/{user_id}` + +资源授权: + +- `GET /modelTF/resources/{resource_type}/{resource_id}/acl` +- `PUT /modelTF/resources/{resource_type}/{resource_id}/acl` +- `POST /modelTF/resources/{resource_type}/{resource_id}/share` + +审批: + +- `GET /modelTF/approvals` +- `POST /modelTF/approvals` +- `GET /modelTF/approvals/{id}` +- `POST /modelTF/approvals/{id}/approve` +- `POST /modelTF/approvals/{id}/reject` +- `POST /modelTF/approvals/{id}/cancel` + +算力: + +- `GET /modelTF/compute/nodes` +- `GET /modelTF/compute/gpus` +- `GET /modelTF/compute/queue` +- `POST /modelTF/compute/jobs/{id}/retry` +- `POST /modelTF/compute/jobs/{id}/priority` + +训练引擎: + +- `GET /modelTF/training-engines` +- `GET /modelTF/training-engines/{id}` +- `POST /modelTF/training-engines/{id}/health-check` +- `GET /modelTF/training-engines/{id}/schema` + +## 10. 端到端业务流程 + +### 10.1 数据集上传 + +1. 用户进入项目空间。 +2. 用户创建数据集。 +3. 应用平台校验项目写权限和磁盘配额。 +4. 前端上传文件到应用平台。 +5. 应用平台转发到算力文件网关,保存到项目目录。 +6. 算力平台返回文件元数据和 checksum。 +7. 应用平台登记数据集文件版本。 +8. 审计记录上传行为。 + +### 10.2 微调训练 + +1. 用户选择项目、模型、数据集、训练参数和 GPU。 +2. 应用平台检查模型/数据集 `execute` 权限。 +3. 检查项目 GPU 并发配额。 +4. 如果策略要求审批,先创建审批单。 +5. 审批通过后创建 compute job。 +6. 算力平台锁定 GPU,生成 LLaMA-Factory 配置,启动训练。 +7. 训练日志和指标实时回传。 +8. 完成后登记 trained model。 +9. 如启用自动合并,进入合并任务。 +10. 审计记录任务全生命周期。 + +### 10.3 模型发布 + +1. 用户选择训练产物。 +2. 提交发布申请。 +3. 审批通过后算力平台启动推理服务。 +4. 分配端口和 GPU。 +5. 应用平台登记服务实例。 +6. 前端推理页面调用服务。 +7. 监控调用量、延迟、错误率、GPU 占用。 + +## 11. 当前功能完整性评估 + +补充 6 条需求后,平台设计已经覆盖完整模型训练平台的主链路: + +- 数据准备。 +- 数据处理。 +- 模型登记。 +- 微调训练。 +- 训练日志和指标。 +- 模型合并和导出。 +- 模型评测。 +- 推理服务。 +- 模型对比。 +- 用户、权限、租户、项目隔离。 +- 审批、审计、保留策略。 +- 算力资源调度。 + +但如果目标是企业级生产平台,还建议继续确认以下缺口。 + +## 12. 仍需确认的问题 + +1. 本地磁盘是否在算力服务器上,应用服务器是否完全不保存训练文件?如果应用服务器也要保存上传临时文件,需要确认临时文件保留周期和容量。 +2. 单机多 GPU 是否需要支持 MIG、GPU 分片或多进程共享,还是一张 GPU 同一时间只给一个任务? +3. 是否允许训练任务抢占?高优先级任务是否能停止低优先级任务? +4. 是否需要离线导入已有模型和已有数据集目录,还是所有文件都必须从平台上传? +5. 模型发布是否区分“测试服务”和“生产服务”?生产发布是否必须审批? +6. 是否需要数据集脱敏、敏感字段识别和数据质量评分作为内置流程? +7. 是否需要人工评测/人工复核结果沉淀为新数据集? +8. 是否需要训练任务失败后的断点续训? +9. 是否需要 checkpoint 自动清理策略,例如只保留最近 N 个或最好 N 个? +10. 是否需要对外提供标准 API 给其他系统调用训练、评测、推理能力? +11. 是否需要接入企业统一身份认证,例如 LDAP、OIDC、企业微信、钉钉? +12. 是否需要成本核算:按租户/项目统计 GPU 小时、磁盘占用、模型调用量? +13. 多算力节点是否需要节点组、租户绑定节点或项目绑定节点策略? +14. 跨节点资源同步是否需要限速、同步窗口和管理员审批? + +## 13. 推荐决策补充 + +`system-development-plan.md` 已对上述问题给出第一版建议,需求设计以以下决策为准。 + +1. 本地磁盘主存储放在算力服务器,应用服务器只保留上传临时文件。临时文件默认保留 24 小时,成功转发到算力文件网关后可立即进入清理队列。 +2. 第一版不支持 MIG、GPU 分片和多任务共享同一张 GPU。一张 GPU 同一时间只分配给一个训练任务或一个推理服务。GPU 数据模型预留 `partition_type`、`parent_gpu_uuid`、`memory_total_mb`,便于后续扩展 MIG。 +3. 第一版不做自动抢占。支持任务优先级和排队;停止他人任务需要审批或平台管理员权限。 +4. 多算力节点仍按“单机多 GPU 节点”管理,每个节点独立部署算力服务和 LLaMA-Factory;节点之间不互相访问,由应用平台统一调度和资源同步。 +5. 多节点调度默认自动选择节点,同时支持管理员/高级用户手动指定节点;调度优先考虑节点健康、标签、权重、空闲 GPU、队列长度和资源副本是否已存在。 +6. 第一版必须支持离线导入已有模型和数据集目录。导入由算力 Agent 扫描、校验、登记,并归属指定租户和项目。 +7. 模型发布区分测试服务和生产服务。测试服务项目内可启动并默认限流;生产服务必须审批。 +8. 数据脱敏和数据质量评分作为数据处理模块的一等能力进入第一期,先实现规则版脱敏、格式校验、重复率、完整性、长度分布等指标。 +9. 人工评测/复核作为第二期功能,但第一期需在数据库和页面入口预留人工复核状态与修订字段。 +10. 第一版支持从 checkpoint 手动恢复训练,不做自动失败续训。失败任务可选择 checkpoint 重试。 +11. 第一版必须支持 checkpoint 自动清理策略:默认保留最近 3 个、最优 2 个;已发布模型关联 checkpoint 不自动删除;失败任务 checkpoint 默认保留 14 天。 +12. 第一版提供内部 API,第二期再开放面向其他系统的标准 API、API Key、限流和 Webhook。 +13. 第一版使用本地账号,预留 OIDC/LDAP 字段和认证 provider 抽象;第二期接入企业统一身份认证。 +14. 第一版做 GPU 小时、磁盘占用、任务时长、推理调用量等用量统计;第二期再做成本单价和账单核算。 + +以上决策需要同步反映在接口文档、数据库 SQL、前端页面和部署方案中。第一版实现不再阻塞于这些问题的反复确认,除非实际部署环境与假设明显冲突。 + +## 14. 页面功能模块映射 + +本节用于帮助前端、后端、DB 和测试人员理解需求对应到哪些页面与功能模块。页面路径以当前 Vue 路由和新增规划路由为准。 + +### 14.1 平台入口与全局能力 + +| 页面模块 | 路由/入口 | 对应需求 | 主要功能 | +| --- | --- | --- | --- | +| 登录页 | `/login` | 用户认证、本地账号、后续预留 OIDC/LDAP | 登录、会话创建、权限加载 | +| 主布局 | `/` | 全局项目上下文、权限控制 | 菜单、顶部状态、项目切换器、用户信息 | +| 无权限页 | `/permission-denied` | 页面权限和资源权限兜底 | 展示无权限原因、返回可访问页面 | +| 服务看板 | `/dashboard` | 平台运行总览 | 服务健康、任务概览、训练统计、用户操作分布 | + +### 14.2 租户、项目与权限治理 + +| 页面模块 | 建议路由 | 对应需求 | 主要功能 | +| --- | --- | --- | --- | +| 租户管理 | `/tenants`、`/tenants/:id` | 多租户、租户配额、留存策略 | 租户列表、创建/禁用租户、配额、审计留存策略 | +| 项目空间 | `/projects`、`/projects/:id` | 项目级隔离、项目资源聚合 | 项目列表、项目概览、资源统计、项目归档 | +| 项目成员 | `/projects/:id/members` | 项目角色 | 添加成员、移除成员、设置 owner/maintainer/developer/reviewer/viewer | +| 资源授权 | `/projects/:id/permissions` 或资源详情弹窗 | 模型/数据集/任务级 ACL | 按用户、项目角色授权 read/write/execute/download/delete/manage_acl | +| 用户中心 | `/user-settings`、`/user-settings/create`、`/user-settings/:id/permission` | 用户、角色、页面权限 | 用户列表、创建用户、禁用、重置密码、分配页面权限和项目 | + +### 14.3 数据链路 + +| 页面模块 | 路由/入口 | 对应需求 | 主要功能 | +| --- | --- | --- | --- | +| 数据集列表 | `/dataset` | 数据集管理、项目隔离 | 列表、搜索、下载、删除审批入口 | +| 数据集创建/编辑 | `/dataset/create`、`/dataset/:id/edit` | 上传、本地磁盘、文件网关 | 创建数据集、上传文件、离线导入、元数据编辑 | +| 数据集预览 | `/dataset/:id/preview` | 文件版本、在线编辑、乐观锁 | 文件预览、版本切换、保存新版本、下载 | +| 数据处理列表 | `/data-process` | 数据处理任务管理 | 任务列表、状态、输出数据集跳转、删除审批 | +| 数据处理创建向导 | `/data-process/create` | 清洗、切片、生成、质量评分、脱敏 | 任务配置、模型选择、源文件/外部源、预览切片、生成、结果编辑、发布数据集 | +| 数据处理详情 | `/data-process/:id` | 处理统计和结果追踪 | 运行信息、处理统计、失败原因、结果明细 | +| 数据转换 | `/data-convert` | JSON/JSONL 转换 | 上传 JSON、转换任务、下载结果 | + +### 14.4 模型训练链路 + +| 页面模块 | 路由/入口 | 对应需求 | 主要功能 | +| --- | --- | --- | --- | +| 模型管理 | `/model-manage` | 模型登记、离线导入、资源 ACL | 基座模型/API 模型列表、用途变更、授权、删除审批 | +| 模型创建/编辑 | `/model-manage/create`、`/model-manage/:id/edit` | 本地模型/API 模型登记 | 选择本地路径、填写 API 模型信息、加密 API Key | +| 权重合并 | `/model-manage/merge` | LoRA 合并、产物管理 | 选择训练产物、合并权重、生成 merged model | +| 微调任务列表 | `/fine-tune` | 训练任务管理 | 任务列表、状态、进度、停止/删除审批 | +| 微调创建 | `/fine-tune/create` | LLaMA-Factory 训练配置、GPU 调度 | 选择模型/数据集/GPU、训练参数、量化导出、提交审批或启动 | +| 训练日志详情 | `/training-log/:id` | 日志、指标、checkpoint、恢复训练 | 日志 tail、loss 曲线、GPU 状态、checkpoint 列表、恢复/重试 | +| 训练引擎管理 | `/training-engines` | LLaMA-Factory 插件化和后续引擎接入 | 引擎列表、能力声明、schema、健康检查 | + +### 14.5 评测、推理和发布 + +| 页面模块 | 路由/入口 | 对应需求 | 主要功能 | +| --- | --- | --- | --- | +| 评测列表 | `/model-eval` | 模型评测 | 评测任务列表、状态、分数、删除 | +| 评测创建 | `/model-eval/create` | 自动评测、LLM Judge、基础指标 | 选择模型/数据集/维度/GPU、配置指标、启动评测 | +| 评测详情 | `/model-eval/:id` | 样本级结果、人工复核预留 | 综合评价、维度汇总、样本评分、错误类型 | +| 评测维度 | `/model-eval/dimension/:id/edit` | 维度和评测 Prompt 管理 | 创建/编辑维度、评分范围、Prompt、启用状态 | +| 推理列表 | `/model-inference` | 测试推理服务 | 推理任务列表、加载/卸载、服务状态 | +| 推理创建 | `/model-inference/create` | 模型服务资源申请 | 选择模型、GPU、端口策略、并发参数 | +| 推理对话 | `/model-inference/chat/:id` | 模型对话 | 单模型流式对话、会话记录 | +| 模型对比 | `/model-compare/chat/:id`、`/model-compare/result` | 多模型对比 | 多模型加载、并行对话、对比结果 | +| 模型发布治理 | `/model-services`、`/model-services/:id` | 测试/生产服务、发布审批 | 测试服务启动、生产发布申请、调用统计、下线审批 | + +### 14.6 算力、审批、审计和运维 + +| 页面模块 | 建议路由 | 对应需求 | 主要功能 | +| --- | --- | --- | --- | +| 算力资源中心 | `/compute`、`/compute/gpus` | 单机多 GPU、资源锁定、队列 | GPU 卡片、任务占用、节点状态、队列、优先级 | +| 存储管理 | `/storage` | 本地磁盘、配额、清理 | 租户/项目占用、大文件、临时文件、checkpoint 清理 | +| 审批中心 | `/approvals`、`/approvals/pending`、`/approvals/mine`、`/approvals/:id` | 审批流 | 我的申请、待我审批、审批详情、通过/驳回/撤回 | +| 审批模板 | `/approval-settings` | 审批策略配置 | 按动作配置审批人、超时、风险级别 | +| 审计中心 | `/audit-logs`、`/login-logs`、`/download-logs` | 操作审计和留存 | 操作审计、登录审计、下载审计、筛选导出 | +| 平台性能 | `/hardware` | 系统监控 | CPU、内存、磁盘、GPU、进程 | +| 系统日志 | `/logs` | 日志查看 | 系统日志、训练日志、tail/offset 查询 | diff --git a/docs/postgres-schema.sql b/docs/postgres-schema.sql new file mode 100644 index 0000000..221a475 --- /dev/null +++ b/docs/postgres-schema.sql @@ -0,0 +1,1496 @@ +-- PostgreSQL schema for the model fine-tuning platform. +-- Recommended PostgreSQL version: 14+. + +CREATE EXTENSION IF NOT EXISTS pgcrypto; +CREATE EXTENSION IF NOT EXISTS citext; + +CREATE SCHEMA IF NOT EXISTS ft_platform; +SET search_path TO ft_platform, public; + +-- ========================= +-- Common helpers +-- ========================= + +CREATE OR REPLACE FUNCTION ft_platform.set_updated_at() +RETURNS trigger AS $$ +BEGIN + NEW.updated_at = now(); + RETURN NEW; +END; +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION ft_platform.touch_updated_at(table_name regclass) +RETURNS void AS $$ +BEGIN + EXECUTE format('DROP TRIGGER IF EXISTS trg_set_updated_at ON %s', table_name); + EXECUTE format( + 'CREATE TRIGGER trg_set_updated_at BEFORE UPDATE ON %s + FOR EACH ROW EXECUTE FUNCTION ft_platform.set_updated_at()', + table_name + ); +END; +$$ LANGUAGE plpgsql; + +-- ========================= +-- Enums +-- ========================= + +DO $$ +BEGIN + IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'user_role') THEN + CREATE TYPE user_role AS ENUM ('admin', 'operator', 'viewer'); + END IF; + IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'user_status') THEN + CREATE TYPE user_status AS ENUM ('active', 'disabled'); + END IF; + IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'task_status') THEN + CREATE TYPE task_status AS ENUM ('pending', 'running', 'completed', 'failed', 'stopped'); + END IF; + IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'model_type') THEN + CREATE TYPE model_type AS ENUM ('LLM', 'CV', 'NLP', 'Embedding', 'Other'); + END IF; + IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'model_purpose') THEN + CREATE TYPE model_purpose AS ENUM ('training', 'inference', 'evaluation'); + END IF; + IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'model_source') THEN + CREATE TYPE model_source AS ENUM ('local', 'api'); + END IF; + IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'dataset_type') THEN + CREATE TYPE dataset_type AS ENUM ('train', 'test', 'eval', 'val', 'other'); + END IF; + IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'dataset_storage') THEN + CREATE TYPE dataset_storage AS ENUM ('local', 'minio', 'cloud'); + END IF; + IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'dataset_source') THEN + CREATE TYPE dataset_source AS ENUM ('upload', 'task'); + END IF; + IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'train_type') THEN + CREATE TYPE train_type AS ENUM ('SFT', 'DPO', 'CPT'); + END IF; + IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'train_method') THEN + CREATE TYPE train_method AS ENUM ('lora', 'qlora', 'full', 'prefix', 'adapter', 'peft', 'adalora', 'longlora'); + END IF; + IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'process_type') THEN + CREATE TYPE process_type AS ENUM ('structured', 'unstructured', 'external'); + END IF; + IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'eval_type') THEN + CREATE TYPE eval_type AS ENUM ('custom', 'baseline'); + END IF; + IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'dimension_type') THEN + CREATE TYPE dimension_type AS ENUM ('classification', 'metric', 'text_similarity'); + END IF; + IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'result_status') THEN + CREATE TYPE result_status AS ENUM ('valid', 'modified', 'invalid'); + END IF; +END $$; + +-- ========================= +-- User center and RBAC +-- ========================= + +CREATE TABLE IF NOT EXISTS users ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + username citext NOT NULL UNIQUE, + display_name varchar(100) NOT NULL, + password_hash text NOT NULL, + role user_role NOT NULL DEFAULT 'viewer', + status user_status NOT NULL DEFAULT 'active', + protected boolean NOT NULL DEFAULT false, + last_login_at timestamptz, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now(), + deleted_at timestamptz +); +SELECT touch_updated_at('users'); + +CREATE TABLE IF NOT EXISTS permissions ( + code varchar(64) PRIMARY KEY, + name varchar(100) NOT NULL, + description text, + created_at timestamptz NOT NULL DEFAULT now() +); + +CREATE TABLE IF NOT EXISTS role_permissions ( + role user_role NOT NULL, + permission_code varchar(64) NOT NULL REFERENCES permissions(code) ON DELETE CASCADE, + PRIMARY KEY (role, permission_code) +); + +CREATE TABLE IF NOT EXISTS user_permissions ( + user_id uuid NOT NULL REFERENCES users(id) ON DELETE CASCADE, + permission_code varchar(64) NOT NULL REFERENCES permissions(code) ON DELETE CASCADE, + allowed boolean NOT NULL DEFAULT true, + created_at timestamptz NOT NULL DEFAULT now(), + PRIMARY KEY (user_id, permission_code) +); + +CREATE TABLE IF NOT EXISTS login_sessions ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + user_id uuid NOT NULL REFERENCES users(id) ON DELETE CASCADE, + token_jti uuid NOT NULL UNIQUE DEFAULT gen_random_uuid(), + ip inet, + user_agent text, + expires_at timestamptz NOT NULL, + revoked_at timestamptz, + created_at timestamptz NOT NULL DEFAULT now() +); +CREATE INDEX IF NOT EXISTS idx_login_sessions_user_created ON login_sessions(user_id, created_at DESC); +CREATE INDEX IF NOT EXISTS idx_login_sessions_expires ON login_sessions(expires_at) WHERE revoked_at IS NULL; + +INSERT INTO permissions(code, name, description) VALUES + ('dashboard', '服务看板', '访问服务看板'), + ('fine-tune', '模型训练', '创建和管理微调任务'), + ('model-eval', '模型评测', '创建和管理评测任务'), + ('model-inference', '模型推理', '创建推理与模型对比任务'), + ('model-manage', '模型管理', '登记、编辑、删除模型'), + ('dataset', '数据集管理', '上传、编辑、下载数据集'), + ('data-process', '数据处理', '创建和管理数据处理任务'), + ('data-convert', '数据转换/工具', '使用数据转换和工具中心'), + ('hardware', '平台性能', '查看硬件和系统监控'), + ('logs', '查看日志', '查看系统与训练日志'), + ('user-settings', '用户设置', '管理用户和权限') +ON CONFLICT (code) DO UPDATE SET name = EXCLUDED.name, description = EXCLUDED.description; + +INSERT INTO role_permissions(role, permission_code) +SELECT 'admin'::user_role, code FROM permissions +ON CONFLICT DO NOTHING; + +INSERT INTO role_permissions(role, permission_code) VALUES + ('operator', 'dashboard'), + ('operator', 'fine-tune'), + ('operator', 'model-eval'), + ('operator', 'model-inference'), + ('operator', 'model-manage'), + ('operator', 'dataset'), + ('operator', 'data-process'), + ('operator', 'data-convert'), + ('operator', 'hardware'), + ('operator', 'logs'), + ('viewer', 'dashboard'), + ('viewer', 'model-eval'), + ('viewer', 'model-inference'), + ('viewer', 'dataset'), + ('viewer', 'hardware'), + ('viewer', 'logs') +ON CONFLICT DO NOTHING; + +-- Replace this password hash during deployment. +INSERT INTO users(username, display_name, password_hash, role, status, protected) +VALUES ('admin', '系统管理员', '$argon2id$replace-with-real-hash', 'admin', 'active', true) +ON CONFLICT (username) DO NOTHING; + +-- ========================= +-- Audit and operation logs +-- ========================= + +CREATE TABLE IF NOT EXISTS audit_logs ( + id bigserial PRIMARY KEY, + user_id uuid REFERENCES users(id) ON DELETE SET NULL, + username citext, + action varchar(100) NOT NULL, + resource_type varchar(80) NOT NULL, + resource_id text, + request_method varchar(12), + request_path text, + ip inet, + user_agent text, + success boolean NOT NULL DEFAULT true, + error_message text, + before_data jsonb, + after_data jsonb, + created_at timestamptz NOT NULL DEFAULT now() +); +CREATE INDEX IF NOT EXISTS idx_audit_logs_user_created ON audit_logs(user_id, created_at DESC); +CREATE INDEX IF NOT EXISTS idx_audit_logs_resource ON audit_logs(resource_type, resource_id); +CREATE INDEX IF NOT EXISTS idx_audit_logs_created ON audit_logs(created_at DESC); + +CREATE TABLE IF NOT EXISTS web_logs ( + id bigserial PRIMARY KEY, + user_id uuid REFERENCES users(id) ON DELETE SET NULL, + level varchar(20) NOT NULL, + message text NOT NULL, + page text, + context jsonb NOT NULL DEFAULT '{}'::jsonb, + created_at timestamptz NOT NULL DEFAULT now() +); +CREATE INDEX IF NOT EXISTS idx_web_logs_created ON web_logs(created_at DESC); +CREATE INDEX IF NOT EXISTS idx_web_logs_level_created ON web_logs(level, created_at DESC); + +-- ========================= +-- Files and object storage metadata +-- ========================= + +CREATE TABLE IF NOT EXISTS storage_objects ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + storage_type dataset_storage NOT NULL DEFAULT 'local', + bucket varchar(128), + object_key text NOT NULL, + original_name text, + mime_type varchar(200), + byte_size bigint NOT NULL DEFAULT 0 CHECK (byte_size >= 0), + checksum_sha256 char(64), + metadata jsonb NOT NULL DEFAULT '{}'::jsonb, + created_by uuid REFERENCES users(id) ON DELETE SET NULL, + created_at timestamptz NOT NULL DEFAULT now() +); +CREATE UNIQUE INDEX IF NOT EXISTS uq_storage_object_location + ON storage_objects(storage_type, COALESCE(bucket, ''), object_key); +CREATE INDEX IF NOT EXISTS idx_storage_objects_checksum ON storage_objects(checksum_sha256); + +-- ========================= +-- Model registry +-- ========================= + +CREATE TABLE IF NOT EXISTS models ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + name varchar(150) NOT NULL, + type model_type NOT NULL DEFAULT 'LLM', + purpose model_purpose NOT NULL, + model_source model_source NOT NULL DEFAULT 'local', + description text, + path text, + api_url text, + api_key_encrypted text, + online_model_name varchar(200), + config jsonb NOT NULL DEFAULT '{}'::jsonb, + created_by uuid REFERENCES users(id) ON DELETE SET NULL, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now(), + deleted_at timestamptz, + CONSTRAINT ck_model_local_or_api CHECK ( + (model_source = 'local' AND path IS NOT NULL) + OR + (model_source = 'api' AND api_url IS NOT NULL AND online_model_name IS NOT NULL) + ) +); +SELECT touch_updated_at('models'); +CREATE UNIQUE INDEX IF NOT EXISTS uq_models_name_alive ON models(name) WHERE deleted_at IS NULL; +CREATE INDEX IF NOT EXISTS idx_models_purpose ON models(purpose) WHERE deleted_at IS NULL; +CREATE INDEX IF NOT EXISTS idx_models_type_source ON models(type, model_source) WHERE deleted_at IS NULL; + +CREATE TABLE IF NOT EXISTS trained_models ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + name varchar(150) NOT NULL, + base_model_id uuid REFERENCES models(id) ON DELETE SET NULL, + fine_tune_task_id uuid, + train_method train_method, + adapter_path text, + merged boolean NOT NULL DEFAULT false, + merging boolean NOT NULL DEFAULT false, + merged_path text, + export_object_id uuid REFERENCES storage_objects(id) ON DELETE SET NULL, + metrics jsonb NOT NULL DEFAULT '{}'::jsonb, + created_by uuid REFERENCES users(id) ON DELETE SET NULL, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now(), + deleted_at timestamptz +); +SELECT touch_updated_at('trained_models'); +CREATE UNIQUE INDEX IF NOT EXISTS uq_trained_models_name_alive ON trained_models(name) WHERE deleted_at IS NULL; +CREATE INDEX IF NOT EXISTS idx_trained_models_task ON trained_models(fine_tune_task_id); +CREATE INDEX IF NOT EXISTS idx_trained_models_base ON trained_models(base_model_id); + +-- ========================= +-- Datasets and versions +-- ========================= + +CREATE TABLE IF NOT EXISTS datasets ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + name varchar(150) NOT NULL, + type dataset_type NOT NULL, + storage_type dataset_storage NOT NULL DEFAULT 'local', + source dataset_source NOT NULL DEFAULT 'upload', + source_task_id uuid, + size_bytes bigint NOT NULL DEFAULT 0 CHECK (size_bytes >= 0), + record_count bigint NOT NULL DEFAULT 0 CHECK (record_count >= 0), + description text, + metadata jsonb NOT NULL DEFAULT '{}'::jsonb, + created_by uuid REFERENCES users(id) ON DELETE SET NULL, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now(), + deleted_at timestamptz +); +SELECT touch_updated_at('datasets'); +CREATE UNIQUE INDEX IF NOT EXISTS uq_datasets_name_alive ON datasets(name) WHERE deleted_at IS NULL; +CREATE INDEX IF NOT EXISTS idx_datasets_type_created ON datasets(type, created_at DESC) WHERE deleted_at IS NULL; +CREATE INDEX IF NOT EXISTS idx_datasets_source_task ON datasets(source_task_id) WHERE source = 'task'; + +CREATE TABLE IF NOT EXISTS dataset_files ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + dataset_id uuid NOT NULL REFERENCES datasets(id) ON DELETE CASCADE, + name text NOT NULL, + storage_object_id uuid REFERENCES storage_objects(id) ON DELETE SET NULL, + current_version_id uuid, + size_bytes bigint NOT NULL DEFAULT 0 CHECK (size_bytes >= 0), + record_count bigint NOT NULL DEFAULT 0 CHECK (record_count >= 0), + file_format varchar(40), + created_by uuid REFERENCES users(id) ON DELETE SET NULL, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now(), + deleted_at timestamptz +); +SELECT touch_updated_at('dataset_files'); +CREATE UNIQUE INDEX IF NOT EXISTS uq_dataset_files_name_alive + ON dataset_files(dataset_id, name) WHERE deleted_at IS NULL; +CREATE INDEX IF NOT EXISTS idx_dataset_files_dataset ON dataset_files(dataset_id) WHERE deleted_at IS NULL; + +CREATE TABLE IF NOT EXISTS dataset_file_versions ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + dataset_file_id uuid NOT NULL REFERENCES dataset_files(id) ON DELETE CASCADE, + version_no integer NOT NULL CHECK (version_no > 0), + storage_object_id uuid REFERENCES storage_objects(id) ON DELETE SET NULL, + content_preview text, + description text, + base_version_id uuid REFERENCES dataset_file_versions(id) ON DELETE SET NULL, + size_bytes bigint NOT NULL DEFAULT 0 CHECK (size_bytes >= 0), + record_count bigint NOT NULL DEFAULT 0 CHECK (record_count >= 0), + checksum_sha256 char(64), + created_by uuid REFERENCES users(id) ON DELETE SET NULL, + created_at timestamptz NOT NULL DEFAULT now() +); +CREATE UNIQUE INDEX IF NOT EXISTS uq_dataset_file_versions_no + ON dataset_file_versions(dataset_file_id, version_no); +CREATE INDEX IF NOT EXISTS idx_dataset_file_versions_file_created + ON dataset_file_versions(dataset_file_id, created_at DESC); + +ALTER TABLE dataset_files + DROP CONSTRAINT IF EXISTS fk_dataset_files_current_version; +ALTER TABLE dataset_files + ADD CONSTRAINT fk_dataset_files_current_version + FOREIGN KEY (current_version_id) REFERENCES dataset_file_versions(id) ON DELETE SET NULL; + +CREATE TABLE IF NOT EXISTS dataset_records ( + id bigserial PRIMARY KEY, + dataset_id uuid NOT NULL REFERENCES datasets(id) ON DELETE CASCADE, + dataset_file_id uuid REFERENCES dataset_files(id) ON DELETE CASCADE, + version_id uuid REFERENCES dataset_file_versions(id) ON DELETE CASCADE, + line_no integer, + split varchar(20), + instruction text, + input text, + output text, + raw jsonb NOT NULL DEFAULT '{}'::jsonb, + status result_status NOT NULL DEFAULT 'valid', + created_at timestamptz NOT NULL DEFAULT now() +); +CREATE INDEX IF NOT EXISTS idx_dataset_records_dataset_id ON dataset_records(dataset_id, id); +CREATE INDEX IF NOT EXISTS idx_dataset_records_file_version ON dataset_records(dataset_file_id, version_id, line_no); +CREATE INDEX IF NOT EXISTS idx_dataset_records_split ON dataset_records(dataset_id, split); +CREATE INDEX IF NOT EXISTS idx_dataset_records_raw_gin ON dataset_records USING gin(raw); + +-- ========================= +-- Data processing +-- ========================= + +CREATE TABLE IF NOT EXISTS data_process_tasks ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + name varchar(150) NOT NULL, + description text, + status task_status NOT NULL DEFAULT 'pending', + process_type process_type NOT NULL, + source_dataset_id uuid REFERENCES datasets(id) ON DELETE SET NULL, + output_dataset_id uuid REFERENCES datasets(id) ON DELETE SET NULL, + config jsonb NOT NULL DEFAULT '{}'::jsonb, + progress numeric(5,2) NOT NULL DEFAULT 0 CHECK (progress >= 0 AND progress <= 100), + input_count bigint NOT NULL DEFAULT 0, + output_count bigint NOT NULL DEFAULT 0, + filtered_count bigint NOT NULL DEFAULT 0, + duplicate_count bigint NOT NULL DEFAULT 0, + error_count bigint NOT NULL DEFAULT 0, + failure_reason text, + created_by uuid REFERENCES users(id) ON DELETE SET NULL, + started_at timestamptz, + completed_at timestamptz, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now(), + deleted_at timestamptz +); +SELECT touch_updated_at('data_process_tasks'); +CREATE UNIQUE INDEX IF NOT EXISTS uq_data_process_tasks_name_alive + ON data_process_tasks(name) WHERE deleted_at IS NULL; +CREATE INDEX IF NOT EXISTS idx_data_process_tasks_status_created + ON data_process_tasks(status, created_at DESC) WHERE deleted_at IS NULL; +CREATE INDEX IF NOT EXISTS idx_data_process_tasks_creator_created + ON data_process_tasks(created_by, created_at DESC) WHERE deleted_at IS NULL; + +CREATE TABLE IF NOT EXISTS data_process_source_files ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + task_id uuid NOT NULL REFERENCES data_process_tasks(id) ON DELETE CASCADE, + storage_object_id uuid REFERENCES storage_objects(id) ON DELETE SET NULL, + name text NOT NULL, + size_bytes bigint NOT NULL DEFAULT 0, + record_count bigint NOT NULL DEFAULT 0, + content_preview text, + metadata jsonb NOT NULL DEFAULT '{}'::jsonb, + created_at timestamptz NOT NULL DEFAULT now() +); +CREATE INDEX IF NOT EXISTS idx_data_process_source_files_task ON data_process_source_files(task_id); + +CREATE TABLE IF NOT EXISTS data_process_preview_items ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + task_id uuid NOT NULL REFERENCES data_process_tasks(id) ON DELETE CASCADE, + source_file_id uuid REFERENCES data_process_source_files(id) ON DELETE CASCADE, + original_content text NOT NULL DEFAULT '', + edited_content text NOT NULL DEFAULT '', + source_start integer, + source_end integer, + source_start_line integer, + source_end_line integer, + token_count integer NOT NULL DEFAULT 0, + status varchar(20) NOT NULL DEFAULT 'original', + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now() +); +SELECT touch_updated_at('data_process_preview_items'); +CREATE INDEX IF NOT EXISTS idx_data_process_preview_task_file + ON data_process_preview_items(task_id, source_file_id, created_at); + +CREATE TABLE IF NOT EXISTS data_process_results ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + task_id uuid NOT NULL REFERENCES data_process_tasks(id) ON DELETE CASCADE, + preview_item_id uuid REFERENCES data_process_preview_items(id) ON DELETE SET NULL, + instruction text NOT NULL, + input text NOT NULL DEFAULT '', + output text NOT NULL, + original_instruction text, + original_input text, + original_output text, + status result_status NOT NULL DEFAULT 'valid', + error text, + split varchar(20), + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now() +); +SELECT touch_updated_at('data_process_results'); +CREATE INDEX IF NOT EXISTS idx_data_process_results_task_status + ON data_process_results(task_id, status, id); +CREATE INDEX IF NOT EXISTS idx_data_process_results_task_split + ON data_process_results(task_id, split); + +-- ========================= +-- Fine-tune tasks +-- ========================= + +CREATE TABLE IF NOT EXISTS fine_tune_tasks ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + name varchar(150) NOT NULL, + description text, + status task_status NOT NULL DEFAULT 'pending', + train_type train_type NOT NULL, + train_method train_method NOT NULL DEFAULT 'lora', + template varchar(80) NOT NULL DEFAULT 'qwen', + base_model_id uuid NOT NULL REFERENCES models(id) ON DELETE RESTRICT, + train_dataset_id uuid REFERENCES datasets(id) ON DELETE SET NULL, + auto_merge boolean NOT NULL DEFAULT false, + output_model_name varchar(150), + gpus integer[] NOT NULL DEFAULT '{}', + params jsonb NOT NULL DEFAULT '{}'::jsonb, + progress numeric(5,2) NOT NULL DEFAULT 0 CHECK (progress >= 0 AND progress <= 100), + process_id integer, + command text, + output_dir text, + log_file text, + train_duration_seconds integer, + failure_reason text, + created_by uuid REFERENCES users(id) ON DELETE SET NULL, + started_at timestamptz, + completed_at timestamptz, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now(), + deleted_at timestamptz +); +SELECT touch_updated_at('fine_tune_tasks'); +CREATE UNIQUE INDEX IF NOT EXISTS uq_fine_tune_tasks_name_alive + ON fine_tune_tasks(name) WHERE deleted_at IS NULL; +CREATE INDEX IF NOT EXISTS idx_fine_tune_tasks_status_created + ON fine_tune_tasks(status, created_at DESC) WHERE deleted_at IS NULL; +CREATE INDEX IF NOT EXISTS idx_fine_tune_tasks_dataset ON fine_tune_tasks(train_dataset_id); +CREATE INDEX IF NOT EXISTS idx_fine_tune_tasks_base_model ON fine_tune_tasks(base_model_id); + +ALTER TABLE trained_models + DROP CONSTRAINT IF EXISTS fk_trained_models_fine_tune_task; +ALTER TABLE trained_models + ADD CONSTRAINT fk_trained_models_fine_tune_task + FOREIGN KEY (fine_tune_task_id) REFERENCES fine_tune_tasks(id) ON DELETE SET NULL; + +CREATE TABLE IF NOT EXISTS fine_tune_metrics ( + id bigserial PRIMARY KEY, + task_id uuid NOT NULL REFERENCES fine_tune_tasks(id) ON DELETE CASCADE, + step integer, + epoch numeric(10,4), + loss numeric(18,8), + learning_rate numeric(18,12), + grad_norm numeric(18,8), + metrics jsonb NOT NULL DEFAULT '{}'::jsonb, + created_at timestamptz NOT NULL DEFAULT now() +); +CREATE INDEX IF NOT EXISTS idx_fine_tune_metrics_task_step ON fine_tune_metrics(task_id, step); +CREATE INDEX IF NOT EXISTS idx_fine_tune_metrics_task_created ON fine_tune_metrics(task_id, created_at); + +-- ========================= +-- Inference and compare +-- ========================= + +CREATE TABLE IF NOT EXISTS inference_tasks ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + name varchar(150) NOT NULL, + description text, + status task_status NOT NULL DEFAULT 'pending', + load_status jsonb NOT NULL DEFAULT '{"loaded_models":[]}'::jsonb, + created_by uuid REFERENCES users(id) ON DELETE SET NULL, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now(), + deleted_at timestamptz +); +SELECT touch_updated_at('inference_tasks'); +CREATE INDEX IF NOT EXISTS idx_inference_tasks_status_created + ON inference_tasks(status, created_at DESC) WHERE deleted_at IS NULL; + +CREATE TABLE IF NOT EXISTS inference_task_models ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + task_id uuid NOT NULL REFERENCES inference_tasks(id) ON DELETE CASCADE, + model_id uuid REFERENCES models(id) ON DELETE SET NULL, + trained_model_id uuid REFERENCES trained_models(id) ON DELETE SET NULL, + model_name varchar(150) NOT NULL, + model_path text, + gpu_id integer, + source varchar(40), + port integer, + pid integer, + status varchar(40) NOT NULL DEFAULT 'pending', + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now() +); +SELECT touch_updated_at('inference_task_models'); +CREATE INDEX IF NOT EXISTS idx_inference_task_models_task ON inference_task_models(task_id); +CREATE INDEX IF NOT EXISTS idx_inference_task_models_pid ON inference_task_models(pid) WHERE pid IS NOT NULL; +CREATE UNIQUE INDEX IF NOT EXISTS uq_inference_task_models_port_alive + ON inference_task_models(port) WHERE port IS NOT NULL AND status IN ('loading', 'ready'); + +CREATE TABLE IF NOT EXISTS chat_sessions ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + inference_task_id uuid REFERENCES inference_tasks(id) ON DELETE SET NULL, + title varchar(200), + created_by uuid REFERENCES users(id) ON DELETE SET NULL, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now() +); +SELECT touch_updated_at('chat_sessions'); +CREATE INDEX IF NOT EXISTS idx_chat_sessions_task_created ON chat_sessions(inference_task_id, created_at DESC); + +CREATE TABLE IF NOT EXISTS chat_messages ( + id bigserial PRIMARY KEY, + session_id uuid NOT NULL REFERENCES chat_sessions(id) ON DELETE CASCADE, + model_id uuid REFERENCES models(id) ON DELETE SET NULL, + trained_model_id uuid REFERENCES trained_models(id) ON DELETE SET NULL, + role varchar(20) NOT NULL, + content text NOT NULL, + latency_ms integer, + token_usage jsonb NOT NULL DEFAULT '{}'::jsonb, + metadata jsonb NOT NULL DEFAULT '{}'::jsonb, + created_at timestamptz NOT NULL DEFAULT now() +); +CREATE INDEX IF NOT EXISTS idx_chat_messages_session_id ON chat_messages(session_id, id); + +-- ========================= +-- Evaluation +-- ========================= + +CREATE TABLE IF NOT EXISTS eval_dimensions ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + name varchar(150) NOT NULL, + type dimension_type NOT NULL, + description text, + eval_model_id uuid REFERENCES models(id) ON DELETE SET NULL, + eval_method jsonb NOT NULL DEFAULT '[]'::jsonb, + eval_prompt text, + is_active boolean NOT NULL DEFAULT true, + is_default boolean NOT NULL DEFAULT false, + bleu_n integer, + output_precision integer NOT NULL DEFAULT 3, + score_min numeric(12,4), + score_max numeric(12,4), + pass_threshold numeric(12,4), + created_by uuid REFERENCES users(id) ON DELETE SET NULL, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now(), + deleted_at timestamptz +); +SELECT touch_updated_at('eval_dimensions'); +CREATE UNIQUE INDEX IF NOT EXISTS uq_eval_dimensions_name_alive + ON eval_dimensions(name) WHERE deleted_at IS NULL; +CREATE INDEX IF NOT EXISTS idx_eval_dimensions_active ON eval_dimensions(is_active) WHERE deleted_at IS NULL; + +CREATE TABLE IF NOT EXISTS eval_tasks ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + eval_task_name varchar(150) NOT NULL, + eval_type eval_type NOT NULL DEFAULT 'custom', + model_id uuid REFERENCES models(id) ON DELETE SET NULL, + trained_model_id uuid REFERENCES trained_models(id) ON DELETE SET NULL, + dataset_id uuid REFERENCES datasets(id) ON DELETE SET NULL, + dimension_id uuid REFERENCES eval_dimensions(id) ON DELETE SET NULL, + gpu_id integer, + data_source varchar(40) NOT NULL DEFAULT 'dataset', + leaderboard boolean NOT NULL DEFAULT false, + basic_metrics jsonb NOT NULL DEFAULT '{}'::jsonb, + status task_status NOT NULL DEFAULT 'pending', + metric varchar(80), + score numeric(12,4), + overall_score numeric(12,4), + overall_score_max numeric(12,4), + overall_evaluation text, + improvement_suggestions jsonb NOT NULL DEFAULT '[]'::jsonb, + sample_count integer NOT NULL DEFAULT 0, + completed_count integer NOT NULL DEFAULT 0, + passed_count integer NOT NULL DEFAULT 0, + failure_reason text, + created_by uuid REFERENCES users(id) ON DELETE SET NULL, + started_at timestamptz, + completed_at timestamptz, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now(), + deleted_at timestamptz +); +SELECT touch_updated_at('eval_tasks'); +CREATE UNIQUE INDEX IF NOT EXISTS uq_eval_tasks_name_alive + ON eval_tasks(eval_task_name) WHERE deleted_at IS NULL; +CREATE INDEX IF NOT EXISTS idx_eval_tasks_status_created ON eval_tasks(status, created_at DESC) WHERE deleted_at IS NULL; +CREATE INDEX IF NOT EXISTS idx_eval_tasks_model_dataset ON eval_tasks(model_id, dataset_id); + +CREATE TABLE IF NOT EXISTS eval_dimension_summaries ( + id bigserial PRIMARY KEY, + eval_task_id uuid NOT NULL REFERENCES eval_tasks(id) ON DELETE CASCADE, + name varchar(150) NOT NULL, + score numeric(12,4), + max_score numeric(12,4), + pass_rate numeric(6,2), + created_at timestamptz NOT NULL DEFAULT now() +); +CREATE INDEX IF NOT EXISTS idx_eval_dimension_summaries_task ON eval_dimension_summaries(eval_task_id); + +CREATE TABLE IF NOT EXISTS eval_sample_results ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + eval_task_id uuid NOT NULL REFERENCES eval_tasks(id) ON DELETE CASCADE, + sample_index integer NOT NULL, + input text NOT NULL, + reference_answer text, + model_output text NOT NULL DEFAULT '', + score numeric(12,4), + max_score numeric(12,4), + passed boolean, + status task_status NOT NULL DEFAULT 'pending', + judgement varchar(40), + evaluation_reason text, + error_type varchar(80), + dimension_scores jsonb NOT NULL DEFAULT '[]'::jsonb, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now() +); +SELECT touch_updated_at('eval_sample_results'); +CREATE UNIQUE INDEX IF NOT EXISTS uq_eval_sample_results_task_index + ON eval_sample_results(eval_task_id, sample_index); +CREATE INDEX IF NOT EXISTS idx_eval_sample_results_task_status + ON eval_sample_results(eval_task_id, status); + +-- ========================= +-- Data convert and custom tools +-- ========================= + +CREATE TABLE IF NOT EXISTS data_convert_jobs ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + convert_type varchar(40) NOT NULL DEFAULT 'json_to_jsonl', + status task_status NOT NULL DEFAULT 'pending', + output_name varchar(200) NOT NULL, + encoding varchar(40) NOT NULL DEFAULT 'UTF-8', + source_object_id uuid REFERENCES storage_objects(id) ON DELETE SET NULL, + result_object_id uuid REFERENCES storage_objects(id) ON DELETE SET NULL, + error_message text, + created_by uuid REFERENCES users(id) ON DELETE SET NULL, + started_at timestamptz, + completed_at timestamptz, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now() +); +SELECT touch_updated_at('data_convert_jobs'); +CREATE INDEX IF NOT EXISTS idx_data_convert_jobs_user_created ON data_convert_jobs(created_by, created_at DESC); +CREATE INDEX IF NOT EXISTS idx_data_convert_jobs_status ON data_convert_jobs(status, created_at DESC); + +CREATE TABLE IF NOT EXISTS custom_tools ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + name varchar(100) NOT NULL, + description text, + url text NOT NULL, + icon varchar(80) NOT NULL DEFAULT 'fa-cog', + visibility varchar(20) NOT NULL DEFAULT 'private', + owner_id uuid REFERENCES users(id) ON DELETE CASCADE, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now(), + deleted_at timestamptz +); +SELECT touch_updated_at('custom_tools'); +CREATE INDEX IF NOT EXISTS idx_custom_tools_owner ON custom_tools(owner_id) WHERE deleted_at IS NULL; +CREATE INDEX IF NOT EXISTS idx_custom_tools_visibility ON custom_tools(visibility) WHERE deleted_at IS NULL; + +-- ========================= +-- Metrics snapshots +-- ========================= + +CREATE TABLE IF NOT EXISTS system_metric_snapshots ( + id bigserial PRIMARY KEY, + cpu jsonb NOT NULL DEFAULT '{}'::jsonb, + memory jsonb NOT NULL DEFAULT '{}'::jsonb, + disk jsonb NOT NULL DEFAULT '{}'::jsonb, + gpu jsonb NOT NULL DEFAULT '[]'::jsonb, + network jsonb NOT NULL DEFAULT '{}'::jsonb, + system jsonb NOT NULL DEFAULT '{}'::jsonb, + created_at timestamptz NOT NULL DEFAULT now() +); +CREATE INDEX IF NOT EXISTS idx_system_metric_snapshots_created ON system_metric_snapshots(created_at DESC); + +CREATE TABLE IF NOT EXISTS service_status_snapshots ( + id bigserial PRIMARY KEY, + service_name varchar(100) NOT NULL, + state varchar(30) NOT NULL, + instances_online integer NOT NULL DEFAULT 0, + instances_total integer NOT NULL DEFAULT 0, + detail jsonb NOT NULL DEFAULT '{}'::jsonb, + created_at timestamptz NOT NULL DEFAULT now() +); +CREATE INDEX IF NOT EXISTS idx_service_status_snapshots_name_created + ON service_status_snapshots(service_name, created_at DESC); + +-- ========================= +-- Useful views +-- ========================= + +CREATE OR REPLACE VIEW v_user_effective_permissions AS +SELECT + u.id AS user_id, + u.username, + p.code AS permission_code, + COALESCE(up.allowed, rp.permission_code IS NOT NULL, false) AS allowed +FROM users u +CROSS JOIN permissions p +LEFT JOIN role_permissions rp + ON rp.role = u.role AND rp.permission_code = p.code +LEFT JOIN user_permissions up + ON up.user_id = u.id AND up.permission_code = p.code +WHERE u.deleted_at IS NULL; + +CREATE OR REPLACE VIEW v_dataset_summary AS +SELECT + d.id, + d.name, + d.type, + d.storage_type, + d.source, + d.source_task_id, + d.size_bytes, + d.record_count, + d.description, + count(df.id) FILTER (WHERE df.deleted_at IS NULL) AS file_count, + d.created_at, + d.updated_at +FROM datasets d +LEFT JOIN dataset_files df ON df.dataset_id = d.id +WHERE d.deleted_at IS NULL +GROUP BY d.id; + +-- ========================= +-- Maintenance notes +-- ========================= + +-- 1. For very large installations, convert audit_logs, web_logs, +-- system_metric_snapshots, fine_tune_metrics and eval_sample_results to +-- monthly/range partitions. +-- 2. Keep large file bodies in storage_objects, not in relational rows. +-- 3. Encrypt api_key_encrypted and external source secrets at the application layer +-- with KMS or a deployment secret. +-- 4. Use soft delete for user-facing resources to preserve audit trails. + +-- ========================= +-- Enterprise governance and compute extension +-- ========================= + +DO $$ +BEGIN + IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'tenant_status') THEN + CREATE TYPE tenant_status AS ENUM ('active', 'disabled'); + END IF; + IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'project_status') THEN + CREATE TYPE project_status AS ENUM ('active', 'archived', 'disabled'); + END IF; + IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'project_role') THEN + CREATE TYPE project_role AS ENUM ('owner', 'maintainer', 'developer', 'reviewer', 'viewer'); + END IF; + IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'approval_status') THEN + CREATE TYPE approval_status AS ENUM ('not_required', 'pending', 'approved', 'rejected', 'cancelled', 'expired'); + END IF; + IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'compute_job_type') THEN + CREATE TYPE compute_job_type AS ENUM ('fine_tune', 'eval', 'data_process', 'inference', 'merge', 'convert', 'import'); + END IF; + IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'job_priority') THEN + CREATE TYPE job_priority AS ENUM ('low', 'normal', 'high', 'urgent'); + END IF; + IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'gpu_status') THEN + CREATE TYPE gpu_status AS ENUM ('idle', 'reserved', 'running', 'draining', 'offline', 'error'); + END IF; + IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'service_level') THEN + CREATE TYPE service_level AS ENUM ('test', 'production'); + END IF; +END $$; + +CREATE TABLE IF NOT EXISTS tenants ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + code citext NOT NULL UNIQUE, + name varchar(150) NOT NULL, + status tenant_status NOT NULL DEFAULT 'active', + owner_id uuid REFERENCES users(id) ON DELETE SET NULL, + quota_config jsonb NOT NULL DEFAULT '{}'::jsonb, + retention_config jsonb NOT NULL DEFAULT '{}'::jsonb, + metadata jsonb NOT NULL DEFAULT '{}'::jsonb, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now(), + deleted_at timestamptz +); +SELECT touch_updated_at('tenants'); +CREATE INDEX IF NOT EXISTS idx_tenants_status ON tenants(status) WHERE deleted_at IS NULL; + +CREATE TABLE IF NOT EXISTS tenant_users ( + tenant_id uuid NOT NULL REFERENCES tenants(id) ON DELETE CASCADE, + user_id uuid NOT NULL REFERENCES users(id) ON DELETE CASCADE, + role user_role NOT NULL DEFAULT 'viewer', + is_tenant_admin boolean NOT NULL DEFAULT false, + created_at timestamptz NOT NULL DEFAULT now(), + PRIMARY KEY (tenant_id, user_id) +); +CREATE INDEX IF NOT EXISTS idx_tenant_users_user ON tenant_users(user_id); + +CREATE TABLE IF NOT EXISTS projects ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + tenant_id uuid NOT NULL REFERENCES tenants(id) ON DELETE CASCADE, + code citext NOT NULL, + name varchar(150) NOT NULL, + description text, + status project_status NOT NULL DEFAULT 'active', + owner_id uuid REFERENCES users(id) ON DELETE SET NULL, + quota_config jsonb NOT NULL DEFAULT '{}'::jsonb, + default_acl jsonb NOT NULL DEFAULT '{}'::jsonb, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now(), + archived_at timestamptz, + deleted_at timestamptz, + UNIQUE (tenant_id, code) +); +SELECT touch_updated_at('projects'); +CREATE INDEX IF NOT EXISTS idx_projects_tenant_status ON projects(tenant_id, status) WHERE deleted_at IS NULL; +CREATE INDEX IF NOT EXISTS idx_projects_owner ON projects(owner_id) WHERE deleted_at IS NULL; + +CREATE TABLE IF NOT EXISTS project_members ( + project_id uuid NOT NULL REFERENCES projects(id) ON DELETE CASCADE, + user_id uuid NOT NULL REFERENCES users(id) ON DELETE CASCADE, + role project_role NOT NULL DEFAULT 'viewer', + created_by uuid REFERENCES users(id) ON DELETE SET NULL, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now(), + PRIMARY KEY (project_id, user_id) +); +SELECT touch_updated_at('project_members'); +CREATE INDEX IF NOT EXISTS idx_project_members_user ON project_members(user_id); + +CREATE TABLE IF NOT EXISTS storage_nodes ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + code citext NOT NULL UNIQUE, + name varchar(150) NOT NULL, + node_type varchar(40) NOT NULL DEFAULT 'compute_local', + base_path text NOT NULL, + total_bytes bigint, + used_bytes bigint NOT NULL DEFAULT 0, + status varchar(40) NOT NULL DEFAULT 'online', + metadata jsonb NOT NULL DEFAULT '{}'::jsonb, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now() +); +SELECT touch_updated_at('storage_nodes'); + +CREATE TABLE IF NOT EXISTS training_engines ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + code citext NOT NULL UNIQUE, + name varchar(150) NOT NULL, + version varchar(80), + engine_type varchar(60) NOT NULL DEFAULT 'llama_factory', + executable_path text, + python_env_path text, + supported_task_types jsonb NOT NULL DEFAULT '[]'::jsonb, + supported_methods jsonb NOT NULL DEFAULT '[]'::jsonb, + supported_formats jsonb NOT NULL DEFAULT '[]'::jsonb, + schema jsonb NOT NULL DEFAULT '{}'::jsonb, + status varchar(40) NOT NULL DEFAULT 'enabled', + last_health_check_at timestamptz, + metadata jsonb NOT NULL DEFAULT '{}'::jsonb, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now() +); +SELECT touch_updated_at('training_engines'); + +INSERT INTO training_engines( + code, name, engine_type, supported_task_types, supported_methods, supported_formats, status +) VALUES ( + 'llama_factory', + 'LLaMA-Factory', + 'llama_factory', + '["SFT", "DPO", "CPT"]'::jsonb, + '["lora", "qlora", "full"]'::jsonb, + '["alpaca", "sharegpt", "dpo_pair", "pretrain_text"]'::jsonb, + 'enabled' +) ON CONFLICT (code) DO NOTHING; + +CREATE TABLE IF NOT EXISTS quotas ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + tenant_id uuid REFERENCES tenants(id) ON DELETE CASCADE, + project_id uuid REFERENCES projects(id) ON DELETE CASCADE, + subject_type varchar(40) NOT NULL, + subject_id uuid, + gpu_concurrency integer NOT NULL DEFAULT 0, + storage_bytes bigint NOT NULL DEFAULT 0, + max_running_jobs integer NOT NULL DEFAULT 0, + max_projects integer NOT NULL DEFAULT 0, + max_upload_file_bytes bigint NOT NULL DEFAULT 0, + config jsonb NOT NULL DEFAULT '{}'::jsonb, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now(), + UNIQUE (subject_type, subject_id) +); +SELECT touch_updated_at('quotas'); +CREATE INDEX IF NOT EXISTS idx_quotas_tenant_project ON quotas(tenant_id, project_id); + +CREATE TABLE IF NOT EXISTS quota_usage ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + tenant_id uuid REFERENCES tenants(id) ON DELETE CASCADE, + project_id uuid REFERENCES projects(id) ON DELETE CASCADE, + subject_type varchar(40) NOT NULL, + subject_id uuid, + gpu_running integer NOT NULL DEFAULT 0, + storage_used_bytes bigint NOT NULL DEFAULT 0, + running_jobs integer NOT NULL DEFAULT 0, + usage_detail jsonb NOT NULL DEFAULT '{}'::jsonb, + measured_at timestamptz NOT NULL DEFAULT now(), + UNIQUE (subject_type, subject_id) +); +CREATE INDEX IF NOT EXISTS idx_quota_usage_tenant_project ON quota_usage(tenant_id, project_id); + +CREATE TABLE IF NOT EXISTS retention_policies ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + tenant_id uuid REFERENCES tenants(id) ON DELETE CASCADE, + project_id uuid REFERENCES projects(id) ON DELETE CASCADE, + audit_days integer NOT NULL DEFAULT 180, + login_log_days integer NOT NULL DEFAULT 180, + training_log_days integer NOT NULL DEFAULT 90, + metric_raw_days integer NOT NULL DEFAULT 30, + temp_file_days integer NOT NULL DEFAULT 1, + failed_job_workspace_days integer NOT NULL DEFAULT 14, + checkpoint_policy jsonb NOT NULL DEFAULT '{"keep_last":3,"keep_best":2,"failed_job_days":14}'::jsonb, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now(), + UNIQUE (tenant_id, project_id) +); +SELECT touch_updated_at('retention_policies'); + +CREATE TABLE IF NOT EXISTS approval_templates ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + tenant_id uuid REFERENCES tenants(id) ON DELETE CASCADE, + project_id uuid REFERENCES projects(id) ON DELETE CASCADE, + action varchar(80) NOT NULL, + name varchar(150) NOT NULL, + enabled boolean NOT NULL DEFAULT true, + approver_rules jsonb NOT NULL DEFAULT '[]'::jsonb, + risk_level varchar(40) NOT NULL DEFAULT 'medium', + expire_hours integer NOT NULL DEFAULT 24, + created_by uuid REFERENCES users(id) ON DELETE SET NULL, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now() +); +SELECT touch_updated_at('approval_templates'); +CREATE INDEX IF NOT EXISTS idx_approval_templates_scope_action + ON approval_templates(tenant_id, project_id, action); + +CREATE TABLE IF NOT EXISTS approval_instances ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + tenant_id uuid REFERENCES tenants(id) ON DELETE CASCADE, + project_id uuid REFERENCES projects(id) ON DELETE CASCADE, + template_id uuid REFERENCES approval_templates(id) ON DELETE SET NULL, + action varchar(80) NOT NULL, + resource_type varchar(80) NOT NULL, + resource_id text NOT NULL, + reason text, + payload jsonb NOT NULL DEFAULT '{}'::jsonb, + status approval_status NOT NULL DEFAULT 'pending', + requested_by uuid REFERENCES users(id) ON DELETE SET NULL, + decided_by uuid REFERENCES users(id) ON DELETE SET NULL, + decided_at timestamptz, + expires_at timestamptz, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now() +); +SELECT touch_updated_at('approval_instances'); +CREATE INDEX IF NOT EXISTS idx_approval_instances_status_created + ON approval_instances(status, created_at DESC); +CREATE INDEX IF NOT EXISTS idx_approval_instances_scope + ON approval_instances(tenant_id, project_id, action, created_at DESC); +CREATE INDEX IF NOT EXISTS idx_approval_instances_resource + ON approval_instances(resource_type, resource_id); + +CREATE TABLE IF NOT EXISTS approval_steps ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + approval_id uuid NOT NULL REFERENCES approval_instances(id) ON DELETE CASCADE, + step_no integer NOT NULL, + approver_user_id uuid REFERENCES users(id) ON DELETE SET NULL, + approver_role varchar(80), + status approval_status NOT NULL DEFAULT 'pending', + comment text, + decided_at timestamptz, + created_at timestamptz NOT NULL DEFAULT now(), + UNIQUE (approval_id, step_no) +); +CREATE INDEX IF NOT EXISTS idx_approval_steps_approver + ON approval_steps(approver_user_id, status); + +CREATE TABLE IF NOT EXISTS compute_nodes ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + code citext NOT NULL UNIQUE, + name varchar(150) NOT NULL, + host varchar(200) NOT NULL, + api_base_url text NOT NULL, + storage_node_id uuid REFERENCES storage_nodes(id) ON DELETE SET NULL, + status varchar(40) NOT NULL DEFAULT 'online', + agent_version varchar(80), + gpu_count integer NOT NULL DEFAULT 0, + last_heartbeat_at timestamptz, + metadata jsonb NOT NULL DEFAULT '{}'::jsonb, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now() +); +SELECT touch_updated_at('compute_nodes'); +CREATE INDEX IF NOT EXISTS idx_compute_nodes_status ON compute_nodes(status); + +CREATE TABLE IF NOT EXISTS gpu_devices ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + compute_node_id uuid NOT NULL REFERENCES compute_nodes(id) ON DELETE CASCADE, + gpu_index integer NOT NULL, + uuid varchar(120) NOT NULL, + name varchar(150) NOT NULL, + status gpu_status NOT NULL DEFAULT 'idle', + memory_total_mb integer NOT NULL DEFAULT 0, + memory_used_mb integer NOT NULL DEFAULT 0, + utilization_percent numeric(5,2) NOT NULL DEFAULT 0, + temperature numeric(5,2), + power_w numeric(8,2), + driver_version varchar(80), + partition_type varchar(40) NOT NULL DEFAULT 'full', + parent_gpu_uuid varchar(120), + current_job_id uuid, + last_seen_at timestamptz, + metadata jsonb NOT NULL DEFAULT '{}'::jsonb, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now(), + UNIQUE (compute_node_id, gpu_index), + UNIQUE (uuid) +); +SELECT touch_updated_at('gpu_devices'); +CREATE INDEX IF NOT EXISTS idx_gpu_devices_node_status ON gpu_devices(compute_node_id, status); + +CREATE TABLE IF NOT EXISTS compute_jobs ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + app_task_type varchar(80) NOT NULL, + app_task_id uuid, + tenant_id uuid REFERENCES tenants(id) ON DELETE SET NULL, + project_id uuid REFERENCES projects(id) ON DELETE SET NULL, + compute_node_id uuid REFERENCES compute_nodes(id) ON DELETE SET NULL, + engine_id uuid REFERENCES training_engines(id) ON DELETE SET NULL, + job_type compute_job_type NOT NULL, + status task_status NOT NULL DEFAULT 'pending', + priority job_priority NOT NULL DEFAULT 'normal', + resource_request jsonb NOT NULL DEFAULT '{}'::jsonb, + workspace_root text, + payload jsonb NOT NULL DEFAULT '{}'::jsonb, + result jsonb NOT NULL DEFAULT '{}'::jsonb, + progress numeric(5,2) NOT NULL DEFAULT 0 CHECK (progress >= 0 AND progress <= 100), + pid integer, + port integer, + failure_reason text, + requested_by uuid REFERENCES users(id) ON DELETE SET NULL, + started_at timestamptz, + completed_at timestamptz, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now() +); +SELECT touch_updated_at('compute_jobs'); +CREATE INDEX IF NOT EXISTS idx_compute_jobs_scope_status + ON compute_jobs(tenant_id, project_id, status, created_at DESC); +CREATE INDEX IF NOT EXISTS idx_compute_jobs_node_status + ON compute_jobs(compute_node_id, status, priority, created_at); +CREATE INDEX IF NOT EXISTS idx_compute_jobs_app_task + ON compute_jobs(app_task_type, app_task_id); + +CREATE TABLE IF NOT EXISTS gpu_allocations ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + compute_job_id uuid NOT NULL REFERENCES compute_jobs(id) ON DELETE CASCADE, + gpu_device_id uuid NOT NULL REFERENCES gpu_devices(id) ON DELETE RESTRICT, + tenant_id uuid REFERENCES tenants(id) ON DELETE SET NULL, + project_id uuid REFERENCES projects(id) ON DELETE SET NULL, + status varchar(40) NOT NULL DEFAULT 'reserved', + allocated_at timestamptz NOT NULL DEFAULT now(), + released_at timestamptz +); +CREATE INDEX IF NOT EXISTS idx_gpu_allocations_job ON gpu_allocations(compute_job_id); +CREATE INDEX IF NOT EXISTS idx_gpu_allocations_scope ON gpu_allocations(tenant_id, project_id, allocated_at DESC); +CREATE UNIQUE INDEX IF NOT EXISTS uq_gpu_allocations_active_gpu + ON gpu_allocations(gpu_device_id) WHERE released_at IS NULL; + +-- Multi compute-node scheduling and local-cache metadata. +-- Each GPU server is modeled as one compute node. Nodes do not call each other; +-- the application platform schedules jobs and syncs resources through each node's File Gateway. +ALTER TABLE compute_nodes ADD COLUMN IF NOT EXISTS file_gateway_url text; +ALTER TABLE compute_nodes ADD COLUMN IF NOT EXISTS enabled boolean NOT NULL DEFAULT true; +ALTER TABLE compute_nodes ADD COLUMN IF NOT EXISTS scheduler_status varchar(40) NOT NULL DEFAULT 'online'; +ALTER TABLE compute_nodes ADD COLUMN IF NOT EXISTS scheduler_weight integer NOT NULL DEFAULT 100 CHECK (scheduler_weight >= 0); +ALTER TABLE compute_nodes ADD COLUMN IF NOT EXISTS tags text[] NOT NULL DEFAULT '{}'; +ALTER TABLE compute_nodes ADD COLUMN IF NOT EXISTS service_token_encrypted text; +ALTER TABLE compute_nodes ADD COLUMN IF NOT EXISTS data_root text NOT NULL DEFAULT '/data/yg-ft'; +ALTER TABLE compute_nodes ADD COLUMN IF NOT EXISTS model_root text NOT NULL DEFAULT '/data/yg-ft/models'; +ALTER TABLE compute_nodes ADD COLUMN IF NOT EXISTS log_root text NOT NULL DEFAULT '/opt/yg-ft/logs/compute'; +ALTER TABLE compute_nodes ADD COLUMN IF NOT EXISTS max_parallel_jobs integer NOT NULL DEFAULT 1 CHECK (max_parallel_jobs >= 0); +ALTER TABLE compute_nodes ADD COLUMN IF NOT EXISTS current_running_jobs integer NOT NULL DEFAULT 0 CHECK (current_running_jobs >= 0); +ALTER TABLE compute_nodes ADD COLUMN IF NOT EXISTS last_health_check_at timestamptz; +ALTER TABLE compute_nodes ADD COLUMN IF NOT EXISTS health_detail jsonb NOT NULL DEFAULT '{}'::jsonb; +ALTER TABLE compute_nodes ADD COLUMN IF NOT EXISTS drain_reason text; +CREATE INDEX IF NOT EXISTS idx_compute_nodes_scheduler + ON compute_nodes(enabled, scheduler_status, scheduler_weight DESC, last_health_check_at DESC); +CREATE INDEX IF NOT EXISTS idx_compute_nodes_tags_gin + ON compute_nodes USING gin(tags); + +ALTER TABLE compute_jobs ADD COLUMN IF NOT EXISTS scheduler_mode varchar(40) NOT NULL DEFAULT 'auto'; +ALTER TABLE compute_jobs ADD COLUMN IF NOT EXISTS requested_node_id uuid REFERENCES compute_nodes(id) ON DELETE SET NULL; +ALTER TABLE compute_jobs ADD COLUMN IF NOT EXISTS assigned_at timestamptz; +ALTER TABLE compute_jobs ADD COLUMN IF NOT EXISTS scheduler_reason text; +CREATE INDEX IF NOT EXISTS idx_compute_jobs_requested_node + ON compute_jobs(requested_node_id, status, created_at DESC); + +CREATE TABLE IF NOT EXISTS compute_node_engines ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + compute_node_id uuid NOT NULL REFERENCES compute_nodes(id) ON DELETE CASCADE, + engine_id uuid REFERENCES training_engines(id) ON DELETE SET NULL, + engine_code varchar(80) NOT NULL, + engine_version varchar(80), + home_path text, + status varchar(40) NOT NULL DEFAULT 'available', + capability jsonb NOT NULL DEFAULT '{}'::jsonb, + last_health_check_at timestamptz, + health_detail jsonb NOT NULL DEFAULT '{}'::jsonb, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now(), + UNIQUE (compute_node_id, engine_code) +); +SELECT touch_updated_at('compute_node_engines'); +CREATE INDEX IF NOT EXISTS idx_compute_node_engines_node_status + ON compute_node_engines(compute_node_id, status, engine_code); + +CREATE TABLE IF NOT EXISTS resource_replicas ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + tenant_id uuid REFERENCES tenants(id) ON DELETE SET NULL, + project_id uuid REFERENCES projects(id) ON DELETE SET NULL, + resource_type varchar(80) NOT NULL, + resource_id uuid NOT NULL, + storage_object_id uuid REFERENCES storage_objects(id) ON DELETE SET NULL, + compute_node_id uuid NOT NULL REFERENCES compute_nodes(id) ON DELETE CASCADE, + local_path text NOT NULL, + status varchar(40) NOT NULL DEFAULT 'available', + sync_status varchar(40) NOT NULL DEFAULT 'synced', + checksum_sha256 char(64), + byte_size bigint NOT NULL DEFAULT 0 CHECK (byte_size >= 0), + version varchar(120), + pinned boolean NOT NULL DEFAULT false, + last_verified_at timestamptz, + expires_at timestamptz, + failure_reason text, + metadata jsonb NOT NULL DEFAULT '{}'::jsonb, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now(), + UNIQUE (resource_type, resource_id, compute_node_id) +); +SELECT touch_updated_at('resource_replicas'); +CREATE INDEX IF NOT EXISTS idx_resource_replicas_resource + ON resource_replicas(resource_type, resource_id, status); +CREATE INDEX IF NOT EXISTS idx_resource_replicas_node_status + ON resource_replicas(compute_node_id, status, sync_status, updated_at DESC); +CREATE INDEX IF NOT EXISTS idx_resource_replicas_scope + ON resource_replicas(tenant_id, project_id, resource_type, updated_at DESC); + +CREATE TABLE IF NOT EXISTS resource_sync_jobs ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + tenant_id uuid REFERENCES tenants(id) ON DELETE SET NULL, + project_id uuid REFERENCES projects(id) ON DELETE SET NULL, + target_compute_node_id uuid NOT NULL REFERENCES compute_nodes(id) ON DELETE CASCADE, + source_compute_node_id uuid REFERENCES compute_nodes(id) ON DELETE SET NULL, + resource_type varchar(80) NOT NULL, + resource_id uuid NOT NULL, + storage_object_id uuid REFERENCES storage_objects(id) ON DELETE SET NULL, + status task_status NOT NULL DEFAULT 'pending', + transfer_mode varchar(40) NOT NULL DEFAULT 'app_proxy', + source_uri text, + target_path text NOT NULL, + byte_size bigint NOT NULL DEFAULT 0 CHECK (byte_size >= 0), + checksum_sha256 char(64), + progress numeric(5,2) NOT NULL DEFAULT 0 CHECK (progress >= 0 AND progress <= 100), + failure_reason text, + requested_by uuid REFERENCES users(id) ON DELETE SET NULL, + started_at timestamptz, + completed_at timestamptz, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now() +); +SELECT touch_updated_at('resource_sync_jobs'); +CREATE INDEX IF NOT EXISTS idx_resource_sync_jobs_status + ON resource_sync_jobs(status, created_at DESC); +CREATE INDEX IF NOT EXISTS idx_resource_sync_jobs_target + ON resource_sync_jobs(target_compute_node_id, status, created_at DESC); +CREATE INDEX IF NOT EXISTS idx_resource_sync_jobs_resource + ON resource_sync_jobs(resource_type, resource_id, status); + +CREATE TABLE IF NOT EXISTS resource_acl ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + tenant_id uuid REFERENCES tenants(id) ON DELETE CASCADE, + project_id uuid REFERENCES projects(id) ON DELETE CASCADE, + resource_type varchar(80) NOT NULL, + resource_id text NOT NULL, + subject_type varchar(40) NOT NULL, + subject_id text NOT NULL, + permissions text[] NOT NULL DEFAULT '{}', + created_by uuid REFERENCES users(id) ON DELETE SET NULL, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now(), + UNIQUE (resource_type, resource_id, subject_type, subject_id) +); +SELECT touch_updated_at('resource_acl'); +CREATE INDEX IF NOT EXISTS idx_resource_acl_resource + ON resource_acl(resource_type, resource_id); +CREATE INDEX IF NOT EXISTS idx_resource_acl_subject + ON resource_acl(subject_type, subject_id); + +CREATE TABLE IF NOT EXISTS file_upload_sessions ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + tenant_id uuid REFERENCES tenants(id) ON DELETE CASCADE, + project_id uuid REFERENCES projects(id) ON DELETE CASCADE, + storage_node_id uuid REFERENCES storage_nodes(id) ON DELETE SET NULL, + original_name text NOT NULL, + byte_size bigint NOT NULL DEFAULT 0, + checksum_sha256 char(64), + part_size_bytes integer NOT NULL DEFAULT 8388608, + uploaded_parts jsonb NOT NULL DEFAULT '[]'::jsonb, + status varchar(40) NOT NULL DEFAULT 'uploading', + created_by uuid REFERENCES users(id) ON DELETE SET NULL, + expires_at timestamptz NOT NULL DEFAULT now() + interval '1 day', + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now() +); +SELECT touch_updated_at('file_upload_sessions'); +CREATE INDEX IF NOT EXISTS idx_file_upload_sessions_scope_status + ON file_upload_sessions(tenant_id, project_id, status, created_at DESC); + +CREATE TABLE IF NOT EXISTS local_import_jobs ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + tenant_id uuid REFERENCES tenants(id) ON DELETE CASCADE, + project_id uuid REFERENCES projects(id) ON DELETE CASCADE, + compute_node_id uuid REFERENCES compute_nodes(id) ON DELETE SET NULL, + import_type varchar(40) NOT NULL, + source_path text NOT NULL, + target_resource_id uuid, + status task_status NOT NULL DEFAULT 'pending', + scan_result jsonb NOT NULL DEFAULT '{}'::jsonb, + failure_reason text, + created_by uuid REFERENCES users(id) ON DELETE SET NULL, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now() +); +SELECT touch_updated_at('local_import_jobs'); +CREATE INDEX IF NOT EXISTS idx_local_import_jobs_scope_status + ON local_import_jobs(tenant_id, project_id, status, created_at DESC); + +CREATE TABLE IF NOT EXISTS fine_tune_checkpoints ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + fine_tune_task_id uuid NOT NULL REFERENCES fine_tune_tasks(id) ON DELETE CASCADE, + storage_object_id uuid REFERENCES storage_objects(id) ON DELETE SET NULL, + checkpoint_name varchar(200) NOT NULL, + step integer, + metric_name varchar(80), + metric_value numeric(18,8), + is_best boolean NOT NULL DEFAULT false, + protected boolean NOT NULL DEFAULT false, + size_bytes bigint NOT NULL DEFAULT 0, + created_at timestamptz NOT NULL DEFAULT now() +); +CREATE INDEX IF NOT EXISTS idx_fine_tune_checkpoints_task_step + ON fine_tune_checkpoints(fine_tune_task_id, step DESC); +CREATE INDEX IF NOT EXISTS idx_fine_tune_checkpoints_best + ON fine_tune_checkpoints(fine_tune_task_id, is_best) WHERE is_best; + +CREATE TABLE IF NOT EXISTS model_services ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + tenant_id uuid REFERENCES tenants(id) ON DELETE CASCADE, + project_id uuid REFERENCES projects(id) ON DELETE CASCADE, + model_id uuid REFERENCES models(id) ON DELETE SET NULL, + trained_model_id uuid REFERENCES trained_models(id) ON DELETE SET NULL, + compute_job_id uuid REFERENCES compute_jobs(id) ON DELETE SET NULL, + name varchar(150) NOT NULL, + service_level service_level NOT NULL DEFAULT 'test', + status task_status NOT NULL DEFAULT 'pending', + gpu_device_id uuid REFERENCES gpu_devices(id) ON DELETE SET NULL, + port integer, + max_concurrency integer NOT NULL DEFAULT 1, + timeout_seconds integer NOT NULL DEFAULT 120, + max_context_tokens integer, + approval_id uuid REFERENCES approval_instances(id) ON DELETE SET NULL, + created_by uuid REFERENCES users(id) ON DELETE SET NULL, + started_at timestamptz, + stopped_at timestamptz, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now(), + deleted_at timestamptz +); +SELECT touch_updated_at('model_services'); +CREATE INDEX IF NOT EXISTS idx_model_services_scope_status + ON model_services(tenant_id, project_id, status, created_at DESC) WHERE deleted_at IS NULL; + +CREATE TABLE IF NOT EXISTS cleanup_jobs ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + tenant_id uuid REFERENCES tenants(id) ON DELETE CASCADE, + project_id uuid REFERENCES projects(id) ON DELETE CASCADE, + cleanup_type varchar(80) NOT NULL, + status task_status NOT NULL DEFAULT 'pending', + target jsonb NOT NULL DEFAULT '{}'::jsonb, + result jsonb NOT NULL DEFAULT '{}'::jsonb, + failure_reason text, + created_at timestamptz NOT NULL DEFAULT now(), + started_at timestamptz, + completed_at timestamptz +); +CREATE INDEX IF NOT EXISTS idx_cleanup_jobs_status_created ON cleanup_jobs(status, created_at DESC); + +-- User identity provider extension. First release uses local accounts; +-- OIDC/LDAP can be enabled later without changing resource ownership tables. +ALTER TABLE users ADD COLUMN IF NOT EXISTS auth_provider varchar(40) NOT NULL DEFAULT 'local'; +ALTER TABLE users ADD COLUMN IF NOT EXISTS external_id text; +ALTER TABLE users ADD COLUMN IF NOT EXISTS default_tenant_id uuid REFERENCES tenants(id) ON DELETE SET NULL; +CREATE INDEX IF NOT EXISTS idx_users_external_provider ON users(auth_provider, external_id); +CREATE INDEX IF NOT EXISTS idx_users_default_tenant ON users(default_tenant_id); + +-- Add tenant/project/resource governance columns to existing resource tables. +ALTER TABLE storage_objects ADD COLUMN IF NOT EXISTS tenant_id uuid REFERENCES tenants(id) ON DELETE SET NULL; +ALTER TABLE storage_objects ADD COLUMN IF NOT EXISTS project_id uuid REFERENCES projects(id) ON DELETE SET NULL; +ALTER TABLE storage_objects ADD COLUMN IF NOT EXISTS storage_node_id uuid REFERENCES storage_nodes(id) ON DELETE SET NULL; +ALTER TABLE storage_objects ADD COLUMN IF NOT EXISTS visibility varchar(40) NOT NULL DEFAULT 'project'; +ALTER TABLE storage_objects ADD COLUMN IF NOT EXISTS deleted_at timestamptz; +CREATE INDEX IF NOT EXISTS idx_storage_objects_scope + ON storage_objects(tenant_id, project_id, created_at DESC) WHERE deleted_at IS NULL; + +ALTER TABLE models ADD COLUMN IF NOT EXISTS tenant_id uuid REFERENCES tenants(id) ON DELETE SET NULL; +ALTER TABLE models ADD COLUMN IF NOT EXISTS project_id uuid REFERENCES projects(id) ON DELETE SET NULL; +ALTER TABLE models ADD COLUMN IF NOT EXISTS owner_id uuid REFERENCES users(id) ON DELETE SET NULL; +ALTER TABLE models ADD COLUMN IF NOT EXISTS visibility varchar(40) NOT NULL DEFAULT 'project'; +ALTER TABLE models ADD COLUMN IF NOT EXISTS approval_status approval_status NOT NULL DEFAULT 'not_required'; +CREATE INDEX IF NOT EXISTS idx_models_scope_status + ON models(tenant_id, project_id, approval_status, created_at DESC) WHERE deleted_at IS NULL; + +ALTER TABLE trained_models ADD COLUMN IF NOT EXISTS tenant_id uuid REFERENCES tenants(id) ON DELETE SET NULL; +ALTER TABLE trained_models ADD COLUMN IF NOT EXISTS project_id uuid REFERENCES projects(id) ON DELETE SET NULL; +ALTER TABLE trained_models ADD COLUMN IF NOT EXISTS owner_id uuid REFERENCES users(id) ON DELETE SET NULL; +ALTER TABLE trained_models ADD COLUMN IF NOT EXISTS visibility varchar(40) NOT NULL DEFAULT 'project'; +ALTER TABLE trained_models ADD COLUMN IF NOT EXISTS approval_status approval_status NOT NULL DEFAULT 'not_required'; +CREATE INDEX IF NOT EXISTS idx_trained_models_scope + ON trained_models(tenant_id, project_id, created_at DESC) WHERE deleted_at IS NULL; + +ALTER TABLE datasets ADD COLUMN IF NOT EXISTS tenant_id uuid REFERENCES tenants(id) ON DELETE SET NULL; +ALTER TABLE datasets ADD COLUMN IF NOT EXISTS project_id uuid REFERENCES projects(id) ON DELETE SET NULL; +ALTER TABLE datasets ADD COLUMN IF NOT EXISTS owner_id uuid REFERENCES users(id) ON DELETE SET NULL; +ALTER TABLE datasets ADD COLUMN IF NOT EXISTS visibility varchar(40) NOT NULL DEFAULT 'project'; +ALTER TABLE datasets ADD COLUMN IF NOT EXISTS approval_status approval_status NOT NULL DEFAULT 'not_required'; +CREATE INDEX IF NOT EXISTS idx_datasets_scope_status + ON datasets(tenant_id, project_id, type, created_at DESC) WHERE deleted_at IS NULL; + +ALTER TABLE dataset_files ADD COLUMN IF NOT EXISTS tenant_id uuid REFERENCES tenants(id) ON DELETE SET NULL; +ALTER TABLE dataset_files ADD COLUMN IF NOT EXISTS project_id uuid REFERENCES projects(id) ON DELETE SET NULL; +CREATE INDEX IF NOT EXISTS idx_dataset_files_scope + ON dataset_files(tenant_id, project_id, created_at DESC) WHERE deleted_at IS NULL; + +ALTER TABLE data_process_tasks ADD COLUMN IF NOT EXISTS tenant_id uuid REFERENCES tenants(id) ON DELETE SET NULL; +ALTER TABLE data_process_tasks ADD COLUMN IF NOT EXISTS project_id uuid REFERENCES projects(id) ON DELETE SET NULL; +ALTER TABLE data_process_tasks ADD COLUMN IF NOT EXISTS owner_id uuid REFERENCES users(id) ON DELETE SET NULL; +ALTER TABLE data_process_tasks ADD COLUMN IF NOT EXISTS approval_status approval_status NOT NULL DEFAULT 'not_required'; +ALTER TABLE data_process_tasks ADD COLUMN IF NOT EXISTS compute_job_id uuid REFERENCES compute_jobs(id) ON DELETE SET NULL; +CREATE INDEX IF NOT EXISTS idx_data_process_tasks_scope_status + ON data_process_tasks(tenant_id, project_id, status, created_at DESC) WHERE deleted_at IS NULL; + +ALTER TABLE fine_tune_tasks ADD COLUMN IF NOT EXISTS tenant_id uuid REFERENCES tenants(id) ON DELETE SET NULL; +ALTER TABLE fine_tune_tasks ADD COLUMN IF NOT EXISTS project_id uuid REFERENCES projects(id) ON DELETE SET NULL; +ALTER TABLE fine_tune_tasks ADD COLUMN IF NOT EXISTS owner_id uuid REFERENCES users(id) ON DELETE SET NULL; +ALTER TABLE fine_tune_tasks ADD COLUMN IF NOT EXISTS approval_status approval_status NOT NULL DEFAULT 'not_required'; +ALTER TABLE fine_tune_tasks ADD COLUMN IF NOT EXISTS compute_job_id uuid REFERENCES compute_jobs(id) ON DELETE SET NULL; +ALTER TABLE fine_tune_tasks ADD COLUMN IF NOT EXISTS resume_checkpoint_id uuid REFERENCES fine_tune_checkpoints(id) ON DELETE SET NULL; +CREATE INDEX IF NOT EXISTS idx_fine_tune_tasks_scope_status + ON fine_tune_tasks(tenant_id, project_id, status, created_at DESC) WHERE deleted_at IS NULL; + +ALTER TABLE inference_tasks ADD COLUMN IF NOT EXISTS tenant_id uuid REFERENCES tenants(id) ON DELETE SET NULL; +ALTER TABLE inference_tasks ADD COLUMN IF NOT EXISTS project_id uuid REFERENCES projects(id) ON DELETE SET NULL; +ALTER TABLE inference_tasks ADD COLUMN IF NOT EXISTS owner_id uuid REFERENCES users(id) ON DELETE SET NULL; +ALTER TABLE inference_tasks ADD COLUMN IF NOT EXISTS approval_status approval_status NOT NULL DEFAULT 'not_required'; +ALTER TABLE inference_tasks ADD COLUMN IF NOT EXISTS compute_job_id uuid REFERENCES compute_jobs(id) ON DELETE SET NULL; +CREATE INDEX IF NOT EXISTS idx_inference_tasks_scope_status + ON inference_tasks(tenant_id, project_id, status, created_at DESC) WHERE deleted_at IS NULL; + +ALTER TABLE eval_tasks ADD COLUMN IF NOT EXISTS tenant_id uuid REFERENCES tenants(id) ON DELETE SET NULL; +ALTER TABLE eval_tasks ADD COLUMN IF NOT EXISTS project_id uuid REFERENCES projects(id) ON DELETE SET NULL; +ALTER TABLE eval_tasks ADD COLUMN IF NOT EXISTS owner_id uuid REFERENCES users(id) ON DELETE SET NULL; +ALTER TABLE eval_tasks ADD COLUMN IF NOT EXISTS approval_status approval_status NOT NULL DEFAULT 'not_required'; +ALTER TABLE eval_tasks ADD COLUMN IF NOT EXISTS compute_job_id uuid REFERENCES compute_jobs(id) ON DELETE SET NULL; +CREATE INDEX IF NOT EXISTS idx_eval_tasks_scope_status + ON eval_tasks(tenant_id, project_id, status, created_at DESC) WHERE deleted_at IS NULL; + +ALTER TABLE data_convert_jobs ADD COLUMN IF NOT EXISTS tenant_id uuid REFERENCES tenants(id) ON DELETE SET NULL; +ALTER TABLE data_convert_jobs ADD COLUMN IF NOT EXISTS project_id uuid REFERENCES projects(id) ON DELETE SET NULL; +ALTER TABLE data_convert_jobs ADD COLUMN IF NOT EXISTS owner_id uuid REFERENCES users(id) ON DELETE SET NULL; +ALTER TABLE data_convert_jobs ADD COLUMN IF NOT EXISTS compute_job_id uuid REFERENCES compute_jobs(id) ON DELETE SET NULL; +CREATE INDEX IF NOT EXISTS idx_data_convert_jobs_scope_status + ON data_convert_jobs(tenant_id, project_id, status, created_at DESC); + +ALTER TABLE custom_tools ADD COLUMN IF NOT EXISTS tenant_id uuid REFERENCES tenants(id) ON DELETE SET NULL; +ALTER TABLE custom_tools ADD COLUMN IF NOT EXISTS project_id uuid REFERENCES projects(id) ON DELETE SET NULL; +CREATE INDEX IF NOT EXISTS idx_custom_tools_scope + ON custom_tools(tenant_id, project_id, visibility, created_at DESC) WHERE deleted_at IS NULL; + +ALTER TABLE audit_logs ADD COLUMN IF NOT EXISTS tenant_id uuid REFERENCES tenants(id) ON DELETE SET NULL; +ALTER TABLE audit_logs ADD COLUMN IF NOT EXISTS project_id uuid REFERENCES projects(id) ON DELETE SET NULL; +ALTER TABLE audit_logs ADD COLUMN IF NOT EXISTS approval_id uuid REFERENCES approval_instances(id) ON DELETE SET NULL; +CREATE INDEX IF NOT EXISTS idx_audit_logs_scope_created + ON audit_logs(tenant_id, project_id, created_at DESC); + +ALTER TABLE web_logs ADD COLUMN IF NOT EXISTS tenant_id uuid REFERENCES tenants(id) ON DELETE SET NULL; +ALTER TABLE web_logs ADD COLUMN IF NOT EXISTS project_id uuid REFERENCES projects(id) ON DELETE SET NULL; +CREATE INDEX IF NOT EXISTS idx_web_logs_scope_created + ON web_logs(tenant_id, project_id, created_at DESC); + +CREATE OR REPLACE VIEW v_project_member_permissions AS +SELECT + p.tenant_id, + pm.project_id, + pm.user_id, + pm.role, + CASE pm.role + WHEN 'owner' THEN ARRAY['read','write','execute','download','delete','manage_acl'] + WHEN 'maintainer' THEN ARRAY['read','write','execute','download','delete'] + WHEN 'developer' THEN ARRAY['read','write','execute','download'] + WHEN 'reviewer' THEN ARRAY['read','download'] + ELSE ARRAY['read'] + END AS permissions +FROM project_members pm +JOIN projects p ON p.id = pm.project_id +WHERE p.deleted_at IS NULL; diff --git a/docs/superpowers/plans/2026-07-10-data-process-create-wizard.md b/docs/superpowers/plans/2026-07-10-data-process-create-wizard.md index 166d3f1..9a1f8e6 100644 --- a/docs/superpowers/plans/2026-07-10-data-process-create-wizard.md +++ b/docs/superpowers/plans/2026-07-10-data-process-create-wizard.md @@ -431,9 +431,9 @@ Expected: 三项检查全部 PASS。 - [ ] **Step 3: 启动页面并逐步验证四步交互** -Run: `cd frontend && npm run dev -- --host 0.0.0.0 --port 6801` +Run: `cd frontend && npm run dev -- --host 0.0.0.0 --port 16801` -Browser checks at `http://localhost:6801/data-process/create`: +Browser checks at `http://localhost:16801/data-process/create`: 1. 第一步上传文本并选择非结构化数据。 2. 第二步点击至少三个右侧切片,确认左侧滚动目标和高亮范围变化。 diff --git a/docs/system-development-plan.md b/docs/system-development-plan.md new file mode 100644 index 0000000..073e6b0 --- /dev/null +++ b/docs/system-development-plan.md @@ -0,0 +1,1118 @@ +# 模型训练平台整体架构与开发计划 + +> 本文衔接 `docs/backend-api-design.md`、`docs/postgres-schema.sql`、`docs/platform-architecture-requirements.md`,用于多人并行开发。文档给出关键未决问题建议、整体架构、模块边界、开发拆分、交付计划和联调顺序。 + +## 1. 关键问题建议 + +### 1.1 文件存储位置 + +建议:训练相关文件主存储放在算力服务器本地磁盘,应用服务器只保留上传临时文件。 + +原因: + +- 算力服务器需要高频读取数据集、模型、checkpoint,本地磁盘性能和路径稳定性更好。 +- 应用平台与算力平台分离后,应用服务器不应直接持有长期训练资产。 +- 应用服务器临时文件建议保留 24 小时,上传成功转发到算力文件网关后立即标记可清理。 + +落地要求: + +- 算力平台提供文件网关 API。 +- 数据库保存 `storage_node_id`、`relative_path`、`checksum_sha256`、`byte_size`。 +- 前端下载通过应用平台申请短时链接,不暴露真实磁盘路径。 + +### 1.2 GPU 共享/MIG + +建议:第一版不支持 MIG 和 GPU 分片,一张 GPU 同一时间只分配给一个训练/推理服务。 + +原因: + +- 当前目标是单机多 GPU,先保证调度稳定、日志可追踪、资源不冲突。 +- 训练任务显存波动较大,共享会增加失败和排障成本。 + +预留: + +- GPU 表中保留 `partition_type`、`parent_gpu_uuid`、`memory_total_mb` 字段。 +- 后续如需要 MIG,可扩展为 GPU slice 资源。 + +### 1.3 任务抢占 + +建议:第一版不做自动抢占,仅支持管理员手动停止或审批后停止。 + +原因: + +- 自动抢占需要 checkpoint 恢复、优先级策略、资源补偿,复杂度较高。 +- 训练任务被抢占可能导致用户产物损坏或成本浪费。 + +落地: + +- 支持任务优先级和排队。 +- 高优先级任务可排在队列前。 +- 停止他人任务需要审批或平台管理员权限。 + +### 1.4 离线导入已有模型和数据集 + +建议:必须支持离线导入。 + +原因: + +- 训练平台通常会接入已有 `/data/models`、`/data/datasets`。 +- 只允许网页上传会影响大模型和大数据集迁移效率。 + +功能: + +- 管理员填写算力节点上的路径。 +- 算力 Agent 扫描目录、校验大小、格式、checksum。 +- 应用平台登记为模型或数据集。 +- 导入资源默认归属指定租户和项目。 + +### 1.5 测试服务与生产服务 + +建议:模型发布区分测试服务和生产服务。 + +规则: + +- 测试服务:项目内成员可创建,默认限流,允许短期运行。 +- 生产服务:必须审批,记录发布版本,支持下线审批。 + +页面: + +- 模型服务列表。 +- 测试服务启动。 +- 生产发布申请。 +- 服务调用统计。 + +### 1.6 数据脱敏与质量评分 + +建议:作为数据处理模块的一等能力纳入第一期,但可以先实现规则版。 + +第一期: + +- 手机号、身份证、邮箱、银行卡、地址等规则脱敏。 +- 空值、重复、过短、JSON 格式错误、字段缺失检测。 +- 数据质量分:完整性、重复率、格式正确率、长度分布。 + +后续: + +- LLM 敏感内容识别。 +- 行业词表。 +- 人工复核闭环。 + +### 1.7 人工评测/复核沉淀 + +建议:第二期实现,但第一期数据库和页面入口预留。 + +原因: + +- 人工评测会引入标注任务、分配、复核、一致性统计。 +- 第一版可以先完成自动评测和样本级结果展示。 + +预留: + +- `eval_sample_results` 支持人工修订字段。 +- 新增人工复核状态:`unreviewed`、`reviewed`、`disputed`。 + +### 1.8 断点续训 + +建议:第一版支持“从 checkpoint 手动恢复”,暂不做自动失败续训。 + +功能: + +- 训练详情展示 checkpoint 列表。 +- 新建训练任务可选择 checkpoint 作为恢复点。 +- 失败任务允许一键重试,重试时选择最近 checkpoint。 + +后续: + +- 自动失败检测。 +- 按错误类型决定是否自动恢复。 + +### 1.9 Checkpoint 清理 + +建议:必须支持自动清理策略。 + +默认策略: + +- 保留最近 3 个 checkpoint。 +- 保留指标最优 2 个 checkpoint。 +- 已发布模型对应 checkpoint 不自动删除。 +- 失败任务 checkpoint 保留 14 天。 + +页面: + +- 任务详情 checkpoint 管理。 +- 存储管理页查看可清理空间。 + +### 1.10 对外标准 API + +建议:第一版提供内部 API,第二期开放外部 API。 + +第一版: + +- 使用 JWT + 服务 token。 +- 面向前端和算力平台。 + +第二期: + +- API Key 管理。 +- OpenAPI 文档。 +- 请求限流。 +- Webhook 回调作为外部系统集成的可选能力,不作为算力状态同步默认方案。 +- 外部系统发起训练、评测、推理。 + +### 1.11 企业统一身份认证 + +建议:第一版使用本地账号,预留 OIDC/LDAP;第二期接入企业统一认证。 + +落地: + +- 用户表增加 `auth_provider`、`external_id`。 +- 登录模块抽象 provider。 +- 支持本地用户和外部用户共存。 + +### 1.12 成本核算 + +建议:第一版做资源用量统计,第二期做成本核算。 + +第一版统计: + +- GPU 小时。 +- 磁盘占用。 +- 任务运行时长。 +- 推理调用次数、token 量。 + +第二期核算: + +- 租户/项目账单。 +- GPU 小时单价。 +- 存储单价。 +- 模型服务调用成本。 + +## 2. 总体目标范围 + +### 2.1 第一版目标 + +交付一个可在企业内使用的单机多 GPU 模型训练平台: + +- 支持多租户、多项目。 +- 支持项目级资源隔离和模型/数据集级授权。 +- 支持本地磁盘文件管理。 +- 支持 LLaMA-Factory 微调训练。 +- 支持数据集上传、预览、版本、处理和发布。 +- 支持训练任务、日志、指标、产物登记。 +- 支持模型评测、推理服务和模型对比。 +- 支持审批、审计、基础保留策略。 +- 支持应用平台和算力平台分离部署。 + +### 2.2 第一版不做或仅预留 + +- 自动任务抢占。 +- MIG/GPU 分片。 +- 自动断点续训。 +- 完整人工评测生产线。 +- 外部开放 API 市场化管理。 +- 精细成本计费。 + +## 3. 系统整体架构 + +### 3.1 架构分层 + +```mermaid +flowchart TB + FE["前端 Vue 应用"] + API["应用平台 FastAPI"] + DB["PostgreSQL 元数据"] + REDIS["Redis 队列/缓存/锁"] + WORKER["应用平台 Worker"] + COMPUTE["算力平台 Compute API"] + AGENT["Compute Agent"] + FILE["本地文件网关"] + ENGINE["LLaMA-Factory Adapter"] + GPU["单机多 GPU"] + DISK["算力节点本地磁盘"] + + FE --> API + API --> DB + API --> REDIS + WORKER --> DB + WORKER --> REDIS + API --> COMPUTE + COMPUTE --> AGENT + AGENT --> FILE + AGENT --> ENGINE + ENGINE --> GPU + FILE --> DISK + ENGINE --> DISK +``` + +### 3.2 仓库建议结构 + +```text +YG_FT/ + frontend/ + backend/ + app/ + api/ + core/ + modules/ + auth/ + tenant/ + project/ + model/ + dataset/ + data_process/ + fine_tune/ + eval/ + inference/ + approval/ + audit/ + compute_gateway/ + db/ + schemas/ + services/ + workers/ + migrations/ + tests/ + compute/ + api/ + agent/ + engines/ + llama_factory/ + file_gateway/ + tests/ + docs/ + deploy/ + app/ + compute/ + nginx/ + systemd/ +``` + +## 4. 开发内容总览 + +### 4.1 前端开发 + +现有前端已有基础页面: + +- 服务看板。 +- 模型训练列表/创建。 +- 评测列表/创建/详情。 +- 推理列表/创建/对话。 +- 模型对比。 +- 模型管理。 +- 数据处理列表/创建/详情。 +- 数据集管理/上传/预览。 +- 工具和数据转换原型。 +- 硬件和日志。 + +需要补全: + +| 模块 | 页面 | 优先级 | +| --- | --- | --- | +| 用户中心 | 用户列表、创建用户、权限设置、无权限页 | P0 | +| 租户项目 | 租户管理、项目列表、项目详情、成员管理 | P0 | +| 项目上下文 | 顶部项目切换器、项目权限提示 | P0 | +| 审批中心 | 我的申请、待我审批、审批详情、模板配置 | P0 | +| 算力资源 | GPU 状态、任务队列、节点 Agent 状态、资源配额 | P0 | +| 存储管理 | 磁盘占用、大文件、checkpoint、清理策略 | P1 | +| 训练增强 | checkpoint、恢复训练、产物管理、训练引擎选择 | P1 | +| 模型服务 | 测试服务、生产发布、服务实例、调用统计 | P1 | +| 数据治理 | 脱敏规则、质量评分、数据处理结果发布 | P1 | +| 审计中心 | 操作审计、登录审计、下载审计 | P1 | +| 引擎管理 | LLaMA-Factory 健康、参数 schema、接入标准 | P2 | + +### 4.2 后端接口开发 + +第一批必须完成: + +- Auth / RBAC / 项目 ACL。 +- Tenant / Project。 +- Model / Dataset。 +- Data Process。 +- Fine Tune。 +- Compute Gateway。 +- Approval / Audit。 +- System Monitor / Logs。 + +第二批完成: + +- Eval。 +- Inference / Compare。 +- File cleanup / retention。 +- Checkpoint management。 +- Model service governance。 + +第三批完成: + +- External API。 +- OIDC/LDAP。 +- Cost accounting。 +- Human review。 + +### 4.3 DB 开发 + +在 `postgres-schema.sql` 基础上新增企业治理和隔离模型: + +- 租户、项目、成员。 +- 资源 ACL。 +- 审批。 +- 配额和用量。 +- 算力节点、GPU、分配记录。 +- 训练引擎。 +- 保留策略。 + +同时调整已有资源表: + +- 增加 `tenant_id`、`project_id`、`owner_id`。 +- 增加 `approval_status`。 +- 增加 `storage_node_id`。 +- 增加资源可见性字段。 + +### 4.4 系统部署开发 + +需要拆成应用平台部署包和算力平台部署包: + +应用平台: + +- Nginx。 +- Frontend 静态资源。 +- FastAPI。 +- PostgreSQL。 +- Redis。 +- App Worker。 + +算力平台: + +- Compute API。 +- Compute Agent。 +- File Gateway。 +- LLaMA-Factory 环境。 +- GPU 监控采集。 +- 本地磁盘目录初始化。 + +## 5. 前端开发计划 + +### 5.1 P0 页面 + +#### 用户中心 + +路由: + +- `/user-settings` +- `/user-settings/create` +- `/user-settings/:id/permission` +- `/permission-denied` + +功能: + +- 用户列表、搜索、角色筛选、状态筛选。 +- 创建用户、禁用用户、重置密码。 +- 页面权限分配。 +- 租户和项目关联展示。 +- 无权限页友好提示。 + +联调接口: + +- `GET /modelTF/users` +- `POST /modelTF/users` +- `PUT /modelTF/users/{id}` +- `DELETE /modelTF/users/{id}` +- `PUT /modelTF/users/{id}/password` + +#### 项目空间 + +路由: + +- `/projects` +- `/projects/create` +- `/projects/:id` +- `/projects/:id/members` +- `/projects/:id/permissions` + +功能: + +- 项目列表。 +- 创建项目。 +- 项目概览。 +- 成员管理。 +- 项目配额查看。 +- 项目切换器。 + +联调接口: + +- `GET /modelTF/projects` +- `POST /modelTF/projects` +- `GET /modelTF/projects/{id}` +- `PUT /modelTF/projects/{id}` +- `GET /modelTF/projects/{id}/members` +- `POST /modelTF/projects/{id}/members` + +#### 审批中心 + +路由: + +- `/approvals` +- `/approvals/pending` +- `/approvals/mine` +- `/approvals/:id` +- `/approval-settings` + +功能: + +- 待审批。 +- 我的申请。 +- 审批详情。 +- 通过、驳回、撤回。 +- 审批模板配置。 + +联调接口: + +- `GET /modelTF/approvals` +- `POST /modelTF/approvals/{id}/approve` +- `POST /modelTF/approvals/{id}/reject` +- `POST /modelTF/approvals/{id}/cancel` + +#### 算力资源中心 + +路由: + +- `/compute` +- `/compute/gpus` +- `/compute/queue` +- `/compute/nodes` + +功能: + +- GPU 卡片状态。 +- GPU 进程和任务占用。 +- 任务队列。 +- Agent 健康状态。 +- 租户/项目配额。 +- 算力节点新增、编辑、连接测试、启用、禁用、维护模式。 +- 节点权重、标签、训练引擎版本和本地资源副本。 +- 自动调度和手动指定节点入口。 + +联调接口: + +- `GET /modelTF/compute/gpus` +- `GET /modelTF/compute/queue` +- `GET /modelTF/compute/nodes` +- `GET /modelTF/quotas/usage` + +### 5.2 现有页面改造 + +所有资源列表页需要增加项目上下文: + +- 数据集列表按项目过滤。 +- 模型列表按项目过滤。 +- 训练任务按项目过滤。 +- 评测任务按项目过滤。 +- 推理任务按项目过滤。 + +通用改造: + +- 请求自动带 `project_id`。 +- 顶部项目切换后刷新数据。 +- 无项目权限时进入无权限页。 +- 删除、导出、发布等危险动作走审批。 + +## 6. 后端开发计划 + +### 6.1 P0 模块 + +#### Auth 模块 + +开发内容: + +- 登录、登出、当前用户。 +- JWT 生成和校验。 +- 密码 hash。 +- 页面权限。 +- 项目权限。 +- 服务间 token。 + +交付接口: + +- `POST /modelTF/login` +- `POST /modelTF/logout` +- `GET /modelTF/me` + +#### Tenant / Project 模块 + +开发内容: + +- 租户 CRUD。 +- 项目 CRUD。 +- 项目成员。 +- 项目角色。 +- 项目配额读取。 + +交付接口: + +- `/modelTF/tenants` +- `/modelTF/projects` +- `/modelTF/projects/{id}/members` + +#### Resource ACL 模块 + +开发内容: + +- 资源授权。 +- 权限校验依赖。 +- 数据查询作用域过滤。 + +交付接口: + +- `GET /modelTF/resources/{resource_type}/{resource_id}/acl` +- `PUT /modelTF/resources/{resource_type}/{resource_id}/acl` + +#### Compute Gateway 模块 + +开发内容: + +- 算力平台客户端。 +- 算力节点管理:地址、File Gateway、权重、标签、启用状态、维护状态。 +- 自动/手动调度策略。 +- 调度前检查模型/数据集在目标节点的资源副本。 +- 缺失资源时创建同步任务,通过目标节点 File Gateway 写入本地磁盘。 +- 创建 compute job。 +- 查询状态和日志。 +- 应用侧定时轮询 Compute API,同步任务状态、日志摘要和产物索引。 +- 任务状态映射。 + +交付接口: + +- `GET /modelTF/compute/gpus` +- `GET /modelTF/compute/queue` +- `GET/POST/PUT /modelTF/compute/nodes` +- `POST /modelTF/compute/nodes/{id}/test-connection` +- `POST /modelTF/compute/nodes/{id}/enable` +- `POST /modelTF/compute/nodes/{id}/disable` +- `POST /modelTF/compute/nodes/{id}/drain` +- `GET /modelTF/compute/nodes/{id}/replicas` +- `POST /modelTF/internal/compute-sync/jobs/poll` +- `POST /modelTF/internal/compute-sync/resources` + +#### Fine Tune 模块 + +开发内容: + +- 训练任务创建。 +- 参数校验。 +- 审批校验。 +- GPU 配额校验。 +- 下发算力任务。 +- 进度和日志。 +- 产物登记。 + +交付接口: + +- 沿用 `docs/backend-api-design.md` 的 `/modelTF/fine-tune` 系列。 + +#### Approval 模块 + +开发内容: + +- 审批模板。 +- 审批实例。 +- 审批动作。 +- 审批通过后触发原业务。 + +交付接口: + +- `/modelTF/approvals` +- `/modelTF/approval-templates` + +#### Audit 模块 + +开发内容: + +- 请求审计中间件。 +- 操作前后数据记录。 +- 登录审计。 +- 下载审计。 +- 审计查询。 + +交付接口: + +- `GET /modelTF/audit-logs` +- `GET /modelTF/login-logs` + +### 6.2 P1 模块 + +- 数据处理后端化。 +- 数据脱敏和质量评分。 +- Checkpoint 管理。 +- 模型服务治理。 +- 存储清理策略。 +- 评测详情增强。 + +### 6.3 P2 模块 + +- 外部 API Key。 +- OIDC/LDAP。 +- 成本核算。 +- 人工评测。 +- 多训练引擎接入。 + +## 7. 算力平台开发计划 + +### 7.1 Compute API + +接口: + +- `POST /modelTF/compute/jobs` +- `GET /modelTF/compute/jobs/{id}` +- `POST /modelTF/compute/jobs/{id}/stop` +- `GET /modelTF/compute/jobs/{id}/logs` +- `GET /modelTF/compute/resources/gpus` +- `POST /modelTF/compute/files/upload` +- `GET /modelTF/compute/files/{id}/download` + +职责: + +- 接收应用平台任务。 +- 校验服务 token。 +- 调用 Agent。 +- 聚合状态。 +- 提供任务状态查询接口,供应用平台定时轮询。 +- 每个单机多 GPU 算力节点都部署一套 Compute API,不依赖其他算力节点。 +- 暴露节点健康、GPU、训练引擎、资源副本和文件网关状态。 + +### 7.2 Compute Agent + +职责: + +- 发现 GPU。 +- 采集 GPU 指标。 +- 锁定/释放 GPU。 +- 管理任务进程。 +- 管理端口。 +- 管理工作区。 +- 上传日志和任务事件。 + +关键要求: + +- Agent 重启后能恢复正在运行的任务状态。 +- 任务异常退出要释放 GPU 锁。 +- 停止任务要先 graceful stop,再强制 kill。 + +### 7.3 LLaMA-Factory Adapter + +职责: + +- 生成训练 YAML 或 CLI。 +- 生成 dataset_info。 +- 设置 `CUDA_VISIBLE_DEVICES`。 +- 启动训练。 +- 解析日志。 +- 收集产物。 +- 合并 LoRA。 +- 导出量化模型。 + +### 7.4 File Gateway + +职责: + +- 分片上传。 +- 文件校验。 +- 文件预览。 +- 文件下载。 +- 目录扫描导入。 +- 短时下载令牌。 + +## 8. 数据库开发计划 + +### 8.1 迁移顺序 + +1. 基础扩展和枚举。 +2. 用户、角色、权限。 +3. 租户、项目、成员。 +4. 资源 ACL。 +5. 文件对象和存储节点。 +6. 模型、数据集。 +7. 数据处理、训练、评测、推理。 +8. 审批、审计。 +9. 算力节点、GPU、队列、配额。 +10. 保留策略和清理记录。 + +### 8.2 新增表清单 + +| 表 | 说明 | +| --- | --- | +| `tenants` | 租户 | +| `tenant_users` | 租户用户 | +| `projects` | 项目 | +| `project_members` | 项目成员 | +| `resource_acl` | 资源级授权 | +| `approval_templates` | 审批模板 | +| `approval_instances` | 审批单 | +| `approval_steps` | 审批步骤 | +| `quotas` | 配额 | +| `quota_usage` | 配额使用 | +| `storage_nodes` | 存储节点 | +| `compute_nodes` | 算力节点 | +| `compute_node_engines` | 算力节点训练引擎能力 | +| `gpu_devices` | GPU 设备 | +| `gpu_allocations` | GPU 分配记录 | +| `compute_jobs` | 算力任务 | +| `resource_replicas` | 数据集/模型/产物在算力节点的本地副本 | +| `resource_sync_jobs` | 应用平台编排的资源同步任务 | +| `training_engines` | 训练引擎 | +| `retention_policies` | 保留策略 | +| `cleanup_jobs` | 清理任务 | + +### 8.3 索引原则 + +- 所有租户资源表建立 `(tenant_id, project_id, created_at desc)` 索引。 +- 列表页常用状态字段建立 `(tenant_id, project_id, status, created_at desc)` 索引。 +- 审计日志按时间分区。 +- 指标数据按时间分区。 +- 数据集样本大表按 `dataset_id` 和 `version_id` 建索引。 +- JSONB 配置只对高频查询字段做表达式索引。 + +## 9. 部署计划 + +### 9.1 应用平台部署 + +组件: + +- `frontend-nginx` +- `backend-api` +- `backend-worker` +- `postgres` +- `redis` + +配置: + +- `DATABASE_URL` +- `REDIS_URL` +- `JWT_SECRET` +- `SERVICE_TOKEN` +- `COMPUTE_API_BASE_URL` +- `FILE_UPLOAD_TEMP_DIR` +- `AUDIT_RETENTION_DAYS` + +### 9.2 算力平台部署 + +组件: + +- `compute-api` +- `compute-agent` +- `file-gateway` +- `llama-factory-env` + +多算力节点阶段,每台单机多 GPU 服务器都部署以上组件和宿主机挂载的 LLaMA-Factory。算力节点之间默认不互相访问,由应用平台统一调度和同步资源。 + +配置: + +- `COMPUTE_NODE_ID` +- `SERVICE_TOKEN` +- `ENABLE_APP_CALLBACK=false` +- `DATA_ROOT=/data/yg-ft` +- `LLAMA_FACTORY_PATH` +- `PYTHON_ENV_PATH` +- `GPU_VISIBLE_DEVICES` +- `PORT_RANGE_START` +- `PORT_RANGE_END` + +### 9.3 网络要求 + +- 前端只访问应用平台。 +- 应用平台可访问算力平台内部 API。 +- 第一阶段只开通应用平台主动访问算力平台内部 API,状态同步采用应用侧轮询。 +- 算力平台不直接暴露给公网。 +- 文件下载通过应用平台签发令牌。 + +### 9.4 运维脚本 + +需要提供: + +- 应用平台启动/停止。 +- 算力平台启动/停止。 +- 数据库初始化。 +- 默认管理员初始化。 +- 本地磁盘目录初始化。 +- LLaMA-Factory 健康检查。 +- GPU 诊断脚本。 +- 日志清理脚本。 + +## 10. 联调顺序 + +### 阶段 1:基础框架 + +目标:前后端登录、项目上下文、权限校验跑通。 + +交付: + +- 登录。 +- 用户列表。 +- 项目列表。 +- 页面权限。 +- 当前项目切换。 + +参与: + +- 前端 1 人。 +- 后端 1 人。 +- DB 1 人。 + +### 阶段 2:资源管理 + +目标:模型、数据集、文件上传、离线导入跑通。 + +交付: + +- 模型管理。 +- 数据集管理。 +- 文件版本。 +- 算力文件网关。 + +参与: + +- 前端 1 人。 +- 后端 2 人。 +- 算力 1 人。 + +### 阶段 3:训练链路 + +目标:创建训练任务并在单机多 GPU 上执行 LLaMA-Factory。 + +交付: + +- GPU 状态。 +- 训练创建。 +- 训练启动。 +- 训练日志。 +- 指标曲线。 +- 产物登记。 + +参与: + +- 前端 1 人。 +- 后端 2 人。 +- 算力 2 人。 + +### 阶段 4:数据处理与评测 + +目标:训练前数据处理、训练后评测闭环。 + +交付: + +- 数据处理任务。 +- 脱敏和质量评分。 +- 发布数据集。 +- 自动评测。 +- 评测详情。 + +参与: + +- 前端 1 人。 +- 后端 2 人。 + +### 阶段 5:推理服务与发布治理 + +目标:训练产物可发布为测试/生产服务。 + +交付: + +- 推理服务启动。 +- 对话和对比。 +- 发布审批。 +- 服务监控。 + +参与: + +- 前端 1 人。 +- 后端 1 人。 +- 算力 1 人。 + +### 阶段 6:企业治理 + +目标:审批、审计、保留、清理、配额完善。 + +交付: + +- 审批中心。 +- 审计中心。 +- 配额管理。 +- 存储清理。 +- 保留策略。 + +参与: + +- 前端 1 人。 +- 后端 2 人。 +- DB 1 人。 + +## 11. 人员分工建议 + +### 前端组 + +- FE-A:基础布局、用户中心、项目空间。 +- FE-B:模型、数据集、数据处理。 +- FE-C:训练、评测、推理、算力监控。 + +### 后端应用组 + +- BE-A:认证、租户、项目、权限、审计。 +- BE-B:模型、数据集、数据处理、文件元数据。 +- BE-C:训练、评测、推理、审批、任务编排。 + +### 算力组 + +- CE-A:Compute API、Agent、GPU 调度、多节点健康检查。 +- CE-B:LLaMA-Factory Adapter、日志解析、产物管理。 +- CE-C:File Gateway、本地磁盘、离线导入、资源副本同步。 + +### 数据库/部署组 + +- DB-A:迁移脚本、索引、分区、种子数据。 +- OPS-A:Docker/systemd、Nginx、环境变量、健康检查。 + +## 12. 里程碑计划 + +| 里程碑 | 时间建议 | 目标 | +| --- | --- | --- | +| M1 基础治理 | 第 1-2 周 | 登录、用户、租户、项目、权限 | +| M2 资源管理 | 第 3-4 周 | 模型、数据集、文件网关、离线导入 | +| M3 训练主链路 | 第 5-7 周 | GPU 调度、LLaMA-Factory 训练、日志指标、产物、资源副本检查 | +| M3.5 多节点预留 | 第 7-8 周 | compute_nodes 管理、节点权重/标签、自动/手动调度、资源同步任务 | +| M4 数据处理和评测 | 第 8-9 周 | 数据处理、质量评分、自动评测 | +| M5 推理发布 | 第 10-11 周 | 推理服务、模型对比、生产发布审批 | +| M6 企业治理收口 | 第 12 周 | 审批、审计、配额、清理、部署文档 | + +## 13. 验收标准 + +### 13.1 功能验收 + +- 不同租户用户不能看到彼此资源。 +- 项目成员只能访问授权项目资源。 +- 模型和数据集支持资源级授权。 +- 上传数据集后可预览、编辑版本、用于训练。 +- 训练任务可自动调度节点/GPU,也可由管理员手动指定节点/GPU 并成功运行。 +- 调度前可识别目标节点是否已有数据集和模型副本,缺失时能创建同步任务。 +- 训练日志和指标实时可见。 +- 训练产物可登记、合并、发布测试服务。 +- 评测任务可生成样本级结果。 +- 删除数据集、模型发布等动作可触发审批。 +- 审计日志能追踪关键操作。 + +### 13.2 性能验收 + +- 常规列表接口 P95 小于 500ms。 +- GPU 状态刷新周期 5-10 秒。 +- 训练日志拉取支持 tail,不一次加载全文件。 +- 大文件上传支持分片。 +- 数据集样本超过百万行时列表和预览仍可用。 + +### 13.3 安全验收 + +- API Key 和外部数据源密码不明文存储。 +- 文件下载链接短时有效。 +- 服务间接口不能被前端直接调用。 +- 用户越权访问返回 403。 +- 审计日志不可由普通用户删除。 + +## 14. 开发风险和应对 + +| 风险 | 影响 | 应对 | +| --- | --- | --- | +| 应用/算力分离导致文件路径复杂 | 上传、下载、训练失败 | 统一文件网关,不暴露真实路径 | +| GPU 锁释放异常 | 资源被占用 | Agent 心跳和任务恢复扫描 | +| LLaMA-Factory 参数变化 | 训练失败 | 训练引擎 schema 和版本管理 | +| 权限模型过复杂 | 开发慢、容易越权 | RBAC + 项目角色 + ACL 三层固定规则 | +| 审批流影响体验 | 用户觉得操作慢 | 只对高风险动作审批,低风险动作直通 | +| 本地磁盘爆满 | 训练失败 | 配额、清理策略、checkpoint 保留策略 | + +## 15. 文档交付关系 + +- `docs/backend-api-design.md`:接口定义基础版本。 +- `docs/postgres-schema.sql`:初始数据库模型。 +- `docs/platform-architecture-requirements.md`:架构与功能需求补充。 +- `docs/system-development-plan.md`:多人开发拆分和实施计划。 +- `docs/team-development-plan.md`:3-4 人并行开发人员分工、模块边界、接口范围和里程碑。 + +后续建议再补两份执行文档: + +- `docs/compute-platform-api.md`:算力平台内部 API 细节。 +- `docs/db-migration-v2.sql`:多租户、项目、审批、算力调度的数据库增量脚本。 + +## 16. 页面模块开发工作包 + +本节用于多人并行开发时认领任务。每个工作包都标明对应页面、前端内容、后端接口、DB 表和部署/算力依赖。当前菜单、二级路由、规划菜单和接口/数据库映射总览见 `docs/menu-functional-requirements.md`;按 3-4 人落地的具体人员边界和开发节奏见 `docs/team-development-plan.md`。 + +### 16.1 基础入口与用户权限 + +| 工作包 | 页面/路由 | 前端开发 | 后端开发 | DB 关联 | 依赖 | +| --- | --- | --- | --- | --- | --- | +| 登录和会话 | `/login` | 登录表单、错误提示、登录后跳转、会话过期处理 | `POST /modelTF/login`、`GET /modelTF/me`、JWT 中间件 | `users`、`login_sessions`、`v_user_effective_permissions` | 无 | +| 主布局和权限菜单 | `/` | 菜单按权限过滤、用户信息、项目切换器 | 当前用户权限、当前项目上下文 | `permissions`、`role_permissions`、`project_members` | 登录 | +| 用户中心 | `/user-settings`、`/user-settings/create`、`/user-settings/:id/permission` | 用户列表、创建、禁用、重置密码、页面权限 | `/modelTF/users` 系列 | `users`、`user_permissions`、`tenant_users` | 租户/项目 | +| 无权限页 | `/permission-denied` | 无权限说明、返回入口 | 权限异常返回统一错误码 | 无新增 | 主布局 | + +### 16.2 租户和项目空间 + +| 工作包 | 页面/路由 | 前端开发 | 后端开发 | DB 关联 | 依赖 | +| --- | --- | --- | --- | --- | --- | +| 租户管理 | `/tenants`、`/tenants/:id` | 租户列表、创建/禁用、配额、留存策略 | `/modelTF/tenants` 系列 | `tenants`、`tenant_users`、`quotas`、`retention_policies` | 用户中心 | +| 项目列表和详情 | `/projects`、`/projects/:id` | 项目列表、创建、归档、资源概览 | `/modelTF/projects` 系列 | `projects`、`quota_usage` | 租户 | +| 项目成员 | `/projects/:id/members` | 成员列表、添加成员、角色选择 | `/modelTF/projects/{id}/members` 系列 | `project_members` | 项目 | +| 资源授权 | `/projects/:id/permissions`、资源详情弹窗 | ACL 表格、用户/角色授权 | `/modelTF/resources/{type}/{id}/acl` | `resource_acl` | 项目、资源表 | + +### 16.3 数据集和数据处理 + +| 工作包 | 页面/路由 | 前端开发 | 后端开发 | DB 关联 | 依赖 | +| --- | --- | --- | --- | --- | --- | +| 数据集列表 | `/dataset` | 列表、搜索、项目过滤、下载、删除审批入口 | `GET/DELETE /modelTF/dataset-manage` | `datasets`、`resource_acl`、`approval_instances` | 项目上下文 | +| 数据集创建/上传 | `/dataset/create`、`/dataset/:id/edit` | 表单、分片上传、离线导入弹窗 | `POST /modelTF/dataset-manage`、`POST /modelTF/files/upload-session`、`POST /modelTF/import/local-dataset` | `datasets`、`dataset_files`、`storage_objects`、`file_upload_sessions`、`local_import_jobs` | 文件网关 | +| 数据集预览/版本 | `/dataset/:id/preview` | 文件列表、内容预览、版本栏、在线编辑 | `/modelTF/dataset-manage/preview`、`/versions` 系列 | `dataset_file_versions`、`dataset_records` | 数据集上传 | +| 数据处理列表 | `/data-process` | 任务列表、状态、输出数据集跳转 | `/modelTF/data-process` 系列 | `data_process_tasks` | 数据集 | +| 数据处理创建向导 | `/data-process/create` | 任务配置、模型选择、源文件、预览切片、生成、结果编辑、发布 | `/modelTF/data-process/{id}/source-files`、`preview/build`、`generate`、`publish` | `data_process_source_files`、`data_process_preview_items`、`data_process_results` | 数据集、模型、文件网关 | +| 数据处理详情 | `/data-process/:id` | 运行统计、失败原因、结果表格 | `GET /modelTF/data-process/{id}`、`results`、`events` | `data_process_tasks`、`data_process_results` | 数据处理任务 | +| 数据转换 | `/data-convert` | 文件上传、转换状态、下载 | `/modelTF/data-convert/jobs` 系列 | `data_convert_jobs`、`storage_objects` | 文件网关 | + +### 16.4 模型管理和训练 + +| 工作包 | 页面/路由 | 前端开发 | 后端开发 | DB 关联 | 依赖 | +| --- | --- | --- | --- | --- | --- | +| 模型列表 | `/model-manage` | 列表、用途标签、授权、导出、删除审批 | `/modelTF/model-manage` 系列 | `models`、`trained_models`、`resource_acl` | 项目上下文 | +| 模型创建/离线导入 | `/model-manage/create`、`/model-manage/:id/edit` | 本地/API 模型表单、离线导入 | `POST/PUT /modelTF/model-manage`、`POST /modelTF/import/local-model` | `models`、`storage_objects`、`local_import_jobs` | 文件网关 | +| 权重合并 | `/model-manage/merge` | 选择训练产物、合并状态 | `POST /modelTF/model-manage/merge`、`GET /modelTF/compute/jobs/{id}` | `trained_models`、`compute_jobs` | 算力平台 | +| 微调列表 | `/fine-tune` | 任务列表、停止、删除、日志入口 | `/modelTF/fine-tune` 系列 | `fine_tune_tasks` | 模型、数据集 | +| 微调创建 | `/fine-tune/create` | 训练参数、GPU 选择、命令预览、审批提示 | `POST /modelTF/fine-tune`、`POST /modelTF/fine-tune/start`、`GET /modelTF/compute/gpus` | `fine_tune_tasks`、`compute_jobs`、`gpu_allocations` | 算力平台、审批 | +| 训练日志和 checkpoint | `/training-log/:id` | 日志 tail、指标曲线、checkpoint、恢复/重试 | `GET /modelTF/fine-tune/{id}/overview`、`checkpoints`、`resume`、`retry` | `fine_tune_metrics`、`fine_tune_checkpoints` | 训练任务 | +| 训练引擎管理 | `/training-engines` | 引擎列表、schema、健康检查 | `/modelTF/training-engines` 系列 | `training_engines` | 算力 Agent | + +### 16.5 评测、推理和发布 + +| 工作包 | 页面/路由 | 前端开发 | 后端开发 | DB 关联 | 依赖 | +| --- | --- | --- | --- | --- | --- | +| 评测列表 | `/model-eval` | 列表、分数、状态、删除 | `/modelTF/model-eval` 系列 | `eval_tasks` | 模型、数据集 | +| 评测创建 | `/model-eval/create` | 模型/数据集/维度/GPU 选择、指标配置 | `POST /modelTF/model-eval/start`、`GET /modelTF/dimension` | `eval_tasks`、`eval_dimensions`、`compute_jobs` | 算力平台 | +| 评测详情 | `/model-eval/:id` | 综合评价、维度汇总、样本结果、人工复核预留 | `GET /modelTF/model-eval/{id}`、`events` | `eval_sample_results`、`eval_dimension_summaries` | 评测任务 | +| 评测维度 | `/model-eval/dimension/:id/edit` | 维度表单、Prompt 编辑 | `/modelTF/dimension` 系列 | `eval_dimensions` | 模型管理 | +| 推理列表/创建 | `/model-inference`、`/model-inference/create` | 任务列表、模型选择、GPU 选择、加载状态 | `/modelTF/model-compare`、`load/unload` | `inference_tasks`、`inference_task_models` | 算力平台 | +| 推理对话 | `/model-inference/chat/:id` | 单模型流式对话、历史消息 | `stream-chat`、`chat-with-port` | `chat_sessions`、`chat_messages` | 推理服务 | +| 模型对比 | `/model-compare/chat/:id`、`/model-compare/result` | 多模型对话、结果对比 | `/modelTF/model-chat/*` | `chat_sessions`、`chat_messages` | 推理任务 | +| 模型服务治理 | `/model-services`、`/model-services/:id` | 测试/生产服务、发布申请、下线、调用统计 | `POST /modelTF/approvals`、`GET /modelTF/usage/summary` | `model_services`、`approval_instances` | 审批、算力平台 | + +### 16.6 审批、审计、算力和存储运维 + +| 工作包 | 页面/路由 | 前端开发 | 后端开发 | DB 关联 | 依赖 | +| --- | --- | --- | --- | --- | --- | +| 审批中心 | `/approvals`、`/approvals/pending`、`/approvals/mine`、`/approvals/:id` | 审批列表、详情、通过/驳回/撤回 | `/modelTF/approvals` 系列 | `approval_instances`、`approval_steps` | 用户、项目 | +| 审批模板 | `/approval-settings` | 动作策略、审批人规则、超时配置 | `/modelTF/approval-templates` 系列 | `approval_templates` | 租户/项目 | +| 算力资源中心 | `/compute`、`/compute/gpus`、`/compute/queue`、`/compute/nodes` | GPU 卡片、节点状态、队列、优先级、节点新增/编辑、连接测试、启用/禁用、维护模式、节点权重/标签、本地资源副本 | `/modelTF/compute/*`、`/modelTF/compute/*` 内部接口 | `compute_nodes`、`compute_node_engines`、`gpu_devices`、`compute_jobs`、`gpu_allocations`、`resource_replicas`、`resource_sync_jobs` | Compute API/Agent/File Gateway | +| 存储管理 | `/storage` | 磁盘占用、大文件、临时文件、checkpoint 清理 | `GET /modelTF/quotas/usage`、`GET/PUT /modelTF/retention-policies` | `storage_nodes`、`storage_objects`、`cleanup_jobs`、`retention_policies` | 文件网关 | +| 审计中心 | `/audit-logs`、`/login-logs`、`/download-logs` | 筛选、详情、导出 | `GET /modelTF/audit-logs`、`GET /modelTF/login-logs`、`GET /modelTF/download-logs` | `audit_logs`、`login_sessions` | 审计中间件 | + +### 16.7 页面开发优先级建议 + +| 优先级 | 页面模块 | 原因 | +| --- | --- | --- | +| P0 | 登录、主布局、用户中心、租户、项目、项目成员、资源授权 | 所有资源隔离和接口过滤依赖这些基础能力 | +| P0 | 模型、数据集、文件上传、算力资源、微调创建、训练日志 | 训练主链路必须先跑通 | +| P0 | 审批中心基础能力 | 删除、发布、导出、停止任务等高风险动作依赖审批 | +| P1 | 数据处理、评测、推理、模型服务治理 | 形成训练前后闭环 | +| P1 | 存储管理、checkpoint、审计中心 | 企业治理和运维收口 | +| P2 | 训练引擎管理、外部 API、OIDC/LDAP、成本核算、人工评测 | 扩展能力,第一版可预留 | diff --git a/docs/team-development-plan.md b/docs/team-development-plan.md new file mode 100644 index 0000000..d77ca6d --- /dev/null +++ b/docs/team-development-plan.md @@ -0,0 +1,208 @@ +# 多人并行开发分工计划 + +> 本文基于 `docs/menu-functional-requirements.md`、`docs/backend-api-design.md`、`docs/postgres-schema.sql`、`docs/system-development-plan.md` 和当前前端路由整理,用于 3-4 人并行开发。开发口径以正式系统演进为准,不以临时演示或静态 Mock 作为交付标准。 + +## 1. 分工原则 + +- 每位开发尽量独立负责一组页面、后端模块、数据库表和联调脚本,避免多人同时改同一个业务文件。 +- 公共接口契约先在 `docs/backend-api-design.md` 更新,再进入代码实现。 +- 前端 API 模块按业务域维护:`system.ts`、`model.ts`、`dataset.ts`、`fineTune.ts`、`compute.ts`、`eval.ts`、`log.ts`。 +- 后端业务代码按 `backend/app/modules//` 拆分,路由统一挂载 `/modelTF`。 +- 数据库按迁移脚本推进,目标模型以 `docs/postgres-schema.sql` 为准,当前运行库脚本以 `backend/app/db/sql/` 为准。 +- 所有写操作必须预留审计;涉及删除、导出、发布、停止他人任务等高风险动作必须预留审批入口。 + +## 2. 4 人开发拆分 + +### A. 平台基础与企业治理 + +负责人边界: + +- 前端目录:`frontend/src/views/login/`、`frontend/src/views/system/`,后续新增 `tenants`、`projects`、`approvals`、`audit` 页面目录。 +- 前端 API:`frontend/src/api/modules/system.ts`、`frontend/src/api/modules/log.ts`。 +- 后端模块:`auth`、`tenant`、`project`、`approval`、`audit`、`retention`、`system`。 +- 数据库表:`users`、`permissions`、`roles`、`role_permissions`、`user_permission_overrides`、`tenants`、`tenant_users`、`projects`、`project_members`、`resource_acl`、`approval_templates`、`approval_instances`、`approval_steps`、`audit_logs`、`retention_policies`。 + +对应页面和功能: + +| 页面/模块 | 路由 | 功能点 | 接口 | +| --- | --- | --- | --- | +| 登录 | `/login` | 登录、Token 写入、登录失败提示、会话恢复 | `POST /modelTF/login`、`GET /modelTF/me` | +| 用户设置 | `/user-settings`、`/user-settings/create`、`/user-settings/:id/permission` | 用户列表、创建、启停、重置密码、页面权限 | `/modelTF/users/*`、`/modelTF/permissions` | +| 平台性能 | `/hardware` | 系统资源、进程、GPU 摘要 | `/modelTF/system-info`、`/modelTF/compute/gpus` | +| 查看日志 | `/logs`、`/training-log/:id` | 后端日志、error 日志、训练日志索引和内容 | `/modelTF/log-files`、`/modelTF/log-content`、`/modelTF/training-log-*` | +| 租户管理 | `/tenants`、`/tenants/:id` | 租户、配额、留存策略 | `/modelTF/tenants/*`、`/modelTF/retention-policies/*` | +| 项目空间 | `/projects`、`/projects/:id`、`/projects/:id/members` | 项目、成员、项目角色 | `/modelTF/projects/*` | +| 资源授权 | `/resources/:type/:id/acl` 或弹窗 | 模型/数据集/任务 ACL | `/modelTF/resources/{type}/{id}/acl` | +| 审批中心 | `/approvals`、`/approval-settings` | 审批待办、审批历史、审批模板 | `/modelTF/approvals/*`、`/modelTF/approval-templates/*` | +| 审计中心 | `/audit-logs` | 操作审计、登录审计、导出 | `/modelTF/audit-logs` | + +开发计划: + +| 阶段 | 交付内容 | +| --- | --- | +| 第 1 周 | 完成登录、当前用户、用户列表、权限码、日志查询接口;完善当前运行 SQL。 | +| 第 2 周 | 完成租户、项目、项目成员、资源 ACL 后端和基础页面。 | +| 第 3 周 | 完成审批实例、审批模板、审计日志查询和导出。 | +| 第 4 周 | 接入其他模块写操作审计和审批拦截,补充权限测试。 | + +验收标准: + +- 所有业务列表按租户、项目、资源 ACL 过滤。 +- 普通用户无法访问未授权项目、模型和数据集。 +- 高风险动作有审批或管理员旁路规则。 +- 日志文件和审计日志可按时间、用户、动作、资源筛选。 + +### B. 模型资产、训练与 LLaMA-Factory 任务 + +负责人边界: + +- 前端目录:`frontend/src/views/model/`、`frontend/src/views/fine-tune/`。 +- 前端 API:`frontend/src/api/modules/model.ts`、`frontend/src/api/modules/fineTune.ts`。 +- 后端模块:`model`、`fine_tune`、`engine_registry`、`compute_gateway` 中的训练编排部分。 +- 数据库表:`models`、`trained_models`、`fine_tune_tasks`、`fine_tune_metrics`、`fine_tune_checkpoints`、`training_engines`、`training_engine_capabilities`、`compute_jobs`、`gpu_allocations`。 + +对应页面和功能: + +| 页面/模块 | 路由 | 功能点 | 接口 | +| --- | --- | --- | --- | +| 模型管理 | `/model-manage` | 基座模型、API 模型、训练产物列表、筛选、删除审批入口 | `/modelTF/model-manage`、`/modelTF/model-manage/trained-models` | +| 添加/编辑模型 | `/model-manage/create`、`/model-manage/:id/edit` | 模型登记、本地路径/API 配置、能力标签 | `/modelTF/model-manage`、`/modelTF/model-manage/{id}` | +| 合并权重 | `/model-manage/merge` | LoRA/Adapter 合并、产物登记 | `/modelTF/model-manage/merge` | +| 模型训练 | `/fine-tune` | 训练任务列表、状态、启动、停止、删除审批入口 | `/modelTF/fine-tune`、`/modelTF/fine-tune/{id}/start`、`/stop` | +| 创建训练任务 | `/fine-tune/create` | 选择模型、数据集、超参、GPU、节点策略 | `/modelTF/fine-tune`、`/modelTF/model-manage`、`/modelTF/dataset-manage`、`/modelTF/compute/*` | +| 训练日志 | `/training-log/:id` | 实时日志、loss 曲线、checkpoint、产物 | `/modelTF/fine-tune/{id}/progress`、`/metrics`、`/checkpoints`、`/modelTF/training-log-*` | + +开发计划: + +| 阶段 | 交付内容 | +| --- | --- | +| 第 1 周 | 完成模型 CRUD、训练任务 CRUD、训练参数校验和接口联调。 | +| 第 2 周 | 完成训练启动、停止、状态轮询、日志和指标落库。 | +| 第 3 周 | 完成 LLaMA-Factory 参数映射、checkpoint 列表、训练产物登记。 | +| 第 4 周 | 完成权重合并、失败恢复、权限隔离和审计接入。 | + +验收标准: + +- 训练任务不能绕过项目、模型、数据集权限。 +- 训练任务状态以应用侧轮询 Compute API 为主。 +- 训练命令只能由训练引擎适配层生成,不在页面或应用 API 中拼命令。 +- checkpoint、日志、产物均可追溯到任务、节点、GPU 和项目。 + +### C. 数据集、数据处理、评测与推理 + +负责人边界: + +- 前端目录:`frontend/src/views/dataset/`、`frontend/src/views/data-process/`、`frontend/src/views/data-convert/`、`frontend/src/views/eval/`、`frontend/src/views/inference/`、`frontend/src/views/compare/`、`frontend/src/views/tools/`。 +- 前端 API:`dataset.ts`、`eval.ts`、`compare.ts`,必要时新增 `dataProcess.ts`、`dataConvert.ts`、`inference.ts`。 +- 后端模块:`dataset`、`data_process`、`eval`、`inference`、`file_gateway` 中的数据资产登记部分。 +- 数据库表:`datasets`、`dataset_files`、`dataset_file_versions`、`dataset_records`、`data_process_tasks`、`data_process_source_files`、`data_process_preview_items`、`data_process_results`、`data_convert_jobs`、`eval_tasks`、`eval_dimensions`、`eval_sample_results`、`inference_tasks`、`chat_sessions`、`chat_messages`、`custom_tools`。 + +对应页面和功能: + +| 页面/模块 | 路由 | 功能点 | 接口 | +| --- | --- | --- | --- | +| 数据集管理 | `/dataset` | 数据集列表、搜索、版本、下载、删除审批入口 | `/modelTF/dataset-manage` | +| 数据集创建/编辑 | `/dataset/create`、`/dataset/:id/edit` | 元数据、文件上传、格式识别、项目归属 | `/modelTF/dataset-manage`、`/upload/{id}` | +| 数据集预览 | `/dataset/:id/preview` | 分页预览、在线编辑、版本对比 | `/modelTF/dataset-manage/{id}/preview`、`/versions` | +| 数据处理 | `/data-process`、`/data-process/create`、`/data-process/:id` | 文档上传、切片、脱敏、质量评分、发布数据集 | `/modelTF/data-process/*` | +| 数据类型转换 | `/data-convert` | JSON/JSONL/Markdown 转换任务 | `/modelTF/data-convert/jobs/*` | +| 模型评测 | `/model-eval`、`/model-eval/create`、`/model-eval/:id` | 评测任务、维度、样本级结果、人工复核预留 | `/modelTF/model-eval/*`、`/modelTF/dimension/*` | +| 模型推理/对比 | `/model-inference/*`、`/model-compare/*` | 模型加载、对话、对比、结果沉淀 | `/modelTF/model-chat/*`、`/modelTF/model-compare/*` | +| 自定义工具 | `/tools`、`/tools/create`、`/tools/:id/edit` | 工具登记、参数 schema、启停 | `/modelTF/tools/*` | + +开发计划: + +| 阶段 | 交付内容 | +| --- | --- | +| 第 1 周 | 完成数据集 CRUD、上传、预览、版本接口和页面联调。 | +| 第 2 周 | 完成数据处理任务、切片预览、质量评分和发布数据集。 | +| 第 3 周 | 完成评测任务、评测维度、样本结果查询。 | +| 第 4 周 | 完成推理会话、模型对比、数据转换、自定义工具基础能力。 | + +验收标准: + +- 数据文件必须登记存储对象、checksum、版本和项目归属。 +- 数据处理产物发布为数据集时保留来源链路。 +- 评测和推理必须记录使用的模型版本、数据集版本和参数快照。 +- 下载、删除、导出等动作必须接入审计和审批策略。 + +### D. 算力平台、部署与运维 + +负责人边界: + +- 前端目录:`frontend/src/views/compute/`,协助 `system/HardwareView.vue`。 +- 前端 API:`frontend/src/api/modules/compute.ts`。 +- 后端模块:`compute_gateway`、`engine_registry`、`file_gateway`、`system` 中的资源采集部分。 +- 算力目录:`compute/api/`、`compute/agent/`、`compute/engines/llama_factory/`、`compute/file_gateway/`。 +- 部署目录:`docker/app/`、`docker/compute/`、`docker/README.md`、`docs/deployment-plan.md`。 +- 数据库表:`compute_nodes`、`gpu_devices`、`compute_node_engines`、`compute_jobs`、`gpu_allocations`、`resource_replicas`、`resource_sync_jobs`、`system_metric_snapshots`、`storage_objects`。 + +对应页面和功能: + +| 页面/模块 | 路由 | 功能点 | 接口 | +| --- | --- | --- | --- | +| 算力节点 | `/compute`、`/compute?tab=nodes` | 节点地址、File Gateway 地址、权重、标签、启用状态、连接测试 | `/modelTF/compute/nodes/*` | +| GPU 资源 | `/compute?tab=gpus`、`/hardware` | GPU 显存、利用率、温度、分配状态、节点归属 | `/modelTF/compute/gpus`、`/modelTF/system-info` | +| 任务队列 | `/compute?tab=queue` | 队列、优先级、占用 GPU、任务状态 | `/modelTF/compute/queue` | +| 资源副本 | `/compute` 节点详情 | 模型/数据集在算力节点上的同步状态 | `/modelTF/compute/nodes/{id}/replicas` | +| 文件网关 | 无独立页面,供模型/数据/训练调用 | 上传、下载、离线导入、产物归档 | 应用侧 `/modelTF/*` 编排,算力侧内部 File Gateway API | +| 部署运维 | 文档和 Compose | 应用/算力分离部署、端口、镜像、日志、健康检查 | Docker Compose、健康检查接口 | + +开发计划: + +| 阶段 | 交付内容 | +| --- | --- | +| 第 1 周 | 完成 Compute API 健康检查、GPU 发现、节点登记和连接测试。 | +| 第 2 周 | 完成任务状态查询、应用侧轮询、资源副本状态同步。 | +| 第 3 周 | 完成 LLaMA-Factory 容器/宿主机路径适配、日志采集、训练进程管理。 | +| 第 4 周 | 完成应用/算力两套 Docker Compose、部署文档、故障排查脚本。 | + +验收标准: + +- 多算力节点阶段仍按“每台算力服务器 = 单机多 GPU 节点”设计。 +- 每台算力服务器都部署 Compute API、Agent、File Gateway 和 LLaMA-Factory。 +- 应用服务器只需主动访问所有算力节点,不要求算力节点反向访问应用服务器。 +- 节点地址、权重、标签、启用状态必须可动态维护。 + +## 3. 3 人开发合并方案 + +如果团队只有 3 人,建议合并为: + +| 开发人员 | 合并内容 | 不建议合并的原因 | +| --- | --- | --- | +| A | 平台基础与企业治理 | 该部分是所有模块的权限和隔离底座,不宜再叠加训练或数据主链路。 | +| B | 模型资产、训练与 LLaMA-Factory 任务 | 模型和训练强耦合,适合一人端到端打通。 | +| C | 数据集、数据处理、评测、推理、算力部署协同 | 数据链路和评测推理使用相同数据/模型资产;算力底层可先由 C 搭骨架,后续扩人拆出 D。 | + +若进入真实 GPU 联调阶段,必须优先把 D 独立出来,否则训练问题、部署问题和业务问题会混在一起,排障效率会明显下降。 + +## 4. 公共契约和协作节奏 + +公共契约负责人建议由 A 兼任,所有人遵守: + +| 契约 | 文件 | 变更规则 | +| --- | --- | --- | +| 路由前缀 | `backend/app/core/config.py`、`backend/app/api/v1/router.py`、接口文档 | 统一 `/modelTF`,不得新增 `/api` 前缀 | +| 响应结构 | `frontend/src/api/request.ts`、后端 schema | 统一 `{ code, message, data }` | +| 权限码 | `frontend/src/types/index.ts`、`permissions` 表、接口文档 | 新菜单先登记权限码再开发 | +| 项目隔离 | `project_id`、`tenant_id`、`resource_acl` | 所有模型、数据集、任务必须带项目归属 | +| 审计动作 | `audit_logs`、后端审计中间件/服务 | 写操作默认审计 | +| 异步状态 | 任务表、`compute_jobs` | 统一 `pending/running/completed/failed/stopped` | +| 文件存储 | `storage_objects`、File Gateway | 不暴露宿主机绝对路径给前端 | + +建议节奏: + +- 每周一上午同步接口契约和数据库迁移计划。 +- 每天下午固定一次跨模块联调窗口,优先处理阻塞其他人的接口。 +- 每个模块 PR 必须包含页面入口、接口说明、SQL/迁移、最小验证步骤。 +- 公共文件如 `frontend/src/types/index.ts`、`backend/app/core/*`、`docs/backend-api-design.md` 由对应 owner 统一合并,其他人通过小 PR 提交变更。 + +## 5. 里程碑 + +| 里程碑 | 目标 | 必须完成 | +| --- | --- | --- | +| M1 基础可用 | 用户登录、模型/数据集/训练主链路可运行 | A 登录权限,B 模型训练,C 数据集,D 单节点 GPU 状态 | +| M2 企业隔离 | 多租户、项目、资源 ACL 接入主链路 | 所有资源按租户/项目过滤,审计落库 | +| M3 训练闭环 | LLaMA-Factory 真实训练、日志、checkpoint、产物登记 | 应用侧轮询 Compute API,训练产物可在模型管理查看 | +| M4 治理闭环 | 审批、审计、留存、导出、部署文档完善 | 高风险动作审批,审计可检索,应用/算力分离部署可复现 | + diff --git a/frontend/.gitignore b/frontend/.gitignore index 9c757d8..f9b752d 100644 --- a/frontend/.gitignore +++ b/frontend/.gitignore @@ -1,5 +1,7 @@ node_modules dist +!dist/ +!dist/** dist-ssr *.local diff --git a/frontend/README.md b/frontend/README.md index 883fe95..7220265 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -22,18 +22,17 @@ npm install npm run dev ``` -开发服务器默认运行在 `http://localhost:6801`。 +开发服务器默认运行在 `http://localhost:16801`。 -后端 API 默认通过 Vite 代理转发到 `http://localhost:7861`(见 `vite.config.ts`)。 +后端 API 默认通过 Vite 代理转发到 `http://localhost:17861`(见 `vite.config.ts`)。 -开发环境默认启用前端 Mock。如需联调真实后端,使用: +开发环境默认联调真实后端接口。如需进行隔离前端开发,可显式启用 Mock: ```bash -VITE_ENABLE_MOCK=false npm run dev +VITE_ENABLE_MOCK=true npm run dev ``` -生产构建默认不包含 Mock;仅在演示构建中可显式设置 -`VITE_ENABLE_MOCK=true`。 +真实联调、测试环境和生产环境不应启用 Mock。 ## 构建 diff --git a/frontend/dist/assets/AppConfirmDialog-g7rxg-F7.js b/frontend/dist/assets/AppConfirmDialog-g7rxg-F7.js new file mode 100644 index 0000000..38bbba5 --- /dev/null +++ b/frontend/dist/assets/AppConfirmDialog-g7rxg-F7.js @@ -0,0 +1 @@ +import{d as C,bn as g,D as E,H as O,o as _,e as B,s as D,Z as $,w as A,c as I,aL as K,q as a,n as v,aa as r,g as q,bm as M,y as u,z as N,P as k}from"./index-BKKvzUDD.js";import{_ as R}from"./_plugin-vue_export-helper-DlAUqK2U.js";const V={class:"app-confirm-header"},z={class:"app-confirm-heading"},H={class:"app-confirm-icon","aria-hidden":"true"},L={class:"app-confirm-body"},P={class:"app-confirm-actions"},S=C({__name:"AppConfirmDialog",setup(j,{expose:x}){const c=u(!1),m=u(),p=u(),d=`app-confirm-title-${g()}`,y=`app-confirm-message-${g()}`,n=N({title:"请确认操作",message:"",confirmText:"确定",cancelText:"取消",tone:"warning",closeOnOverlay:!1});let o=null,i=null;function s(t){c.value=!1;const e=o;o=null,e==null||e(t)}function h(t){return o&&s(!1),Object.assign(n,{confirmText:"确定",cancelText:"取消",tone:"warning",closeOnOverlay:!1,...t}),c.value=!0,new Promise(e=>{o=e})}function w(){n.closeOnOverlay&&s(!1)}function T(t){var b;if(t.key==="Escape"){t.preventDefault(),s(!1);return}if(t.key!=="Tab")return;const e=Array.from(((b=m.value)==null?void 0:b.querySelectorAll("button:not([disabled])"))??[]),l=e[0],f=e[e.length-1];!l||!f||(t.shiftKey&&document.activeElement===l?(t.preventDefault(),f.focus()):!t.shiftKey&&document.activeElement===f&&(t.preventDefault(),l.focus()))}return E(c,async t=>{var e;if(t){i=document.activeElement instanceof HTMLElement?document.activeElement:null,await k(),(e=p.value)==null||e.focus();return}await k(),i==null||i.focus(),i=null}),O(()=>{o==null||o(!1),o=null}),x({open:h}),(t,e)=>(_(),B(M,{to:"body"},[D($,{name:"app-confirm"},{default:A(()=>[c.value?(_(),I("div",{key:0,class:"app-confirm-overlay",onMousedown:K(w,["self"])},[a("section",{ref_key:"dialogRef",ref:m,class:v(["app-confirm-dialog",`is-${n.tone}`]),role:"alertdialog","aria-modal":!0,"aria-labelledby":d,"aria-describedby":y,onKeydown:T},[a("header",V,[a("div",z,[a("span",H,[a("i",{class:v(n.tone==="primary"?"fa fa-question-circle":"fa fa-exclamation-triangle")},null,2)]),a("h2",{id:d},r(n.title),1)]),a("button",{class:"app-confirm-close",type:"button","aria-label":"关闭确认弹窗",onClick:e[0]||(e[0]=l=>s(!1))},[...e[3]||(e[3]=[a("i",{class:"fa fa-times","aria-hidden":"true"},null,-1)])])]),a("div",L,[a("p",{id:y},r(n.message),1)]),a("footer",P,[a("button",{ref_key:"cancelButtonRef",ref:p,class:"app-confirm-button is-cancel",type:"button",onClick:e[1]||(e[1]=l=>s(!1))},r(n.cancelText),513),a("button",{class:"app-confirm-button is-confirm",type:"button",onClick:e[2]||(e[2]=l=>s(!0))},r(n.confirmText),1)])],34)],32)):q("",!0)]),_:1})]))}}),G=R(S,[["__scopeId","data-v-398df98e"]]);export{G as A}; diff --git a/frontend/dist/assets/AppConfirmDialog-zFD3Iwu_.css b/frontend/dist/assets/AppConfirmDialog-zFD3Iwu_.css new file mode 100644 index 0000000..32badd7 --- /dev/null +++ b/frontend/dist/assets/AppConfirmDialog-zFD3Iwu_.css @@ -0,0 +1 @@ +.app-confirm-overlay[data-v-398df98e]{position:fixed;z-index:2000;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:20px;box-sizing:border-box;background:#0f172a70}.app-confirm-dialog[data-v-398df98e]{position:relative;width:min(480px,100%);overflow:hidden;background:#fff;border:1px solid #dfe3ea;border-radius:8px;box-shadow:0 12px 28px #0f172a29}.app-confirm-header[data-v-398df98e]{display:flex;min-height:52px;align-items:center;justify-content:space-between;gap:16px;padding:0 10px 0 20px;border-bottom:1px solid #e7eaf0}.app-confirm-heading[data-v-398df98e]{display:flex;min-width:0;align-items:center;gap:10px}.app-confirm-heading h2[data-v-398df98e]{margin:0;overflow:hidden;color:#273142;font-size:15px;font-weight:650;line-height:1.4;text-overflow:ellipsis;white-space:nowrap}.app-confirm-close[data-v-398df98e]{display:inline-grid;width:32px;height:32px;flex:0 0 32px;place-items:center;padding:0;color:#7b8495;background:transparent;border:0;border-radius:4px;cursor:pointer;transition:color .18s ease,background-color .18s ease}.app-confirm-close[data-v-398df98e]:hover{color:#273142;background:#f2f4f7}.app-confirm-close[data-v-398df98e]:focus-visible{outline:2px solid rgba(91,80,242,.45);outline-offset:1px}.app-confirm-icon[data-v-398df98e]{display:inline-grid;width:28px;height:28px;flex:0 0 28px;place-items:center;color:#a15c07;background:#fff8e6;border:1px solid #f3dfad;border-radius:6px;font-size:13px}.app-confirm-dialog.is-danger .app-confirm-icon[data-v-398df98e]{color:#c43232;background:#fff1f1;border-color:#f2c7c7}.app-confirm-dialog.is-primary .app-confirm-icon[data-v-398df98e]{color:#4f46e5;background:#f3f2ff;border-color:#d9d6ff}.app-confirm-body[data-v-398df98e]{padding:16px 20px 18px}.app-confirm-body p[data-v-398df98e]{margin:0;color:#5f6878;font-size:13px;line-height:1.7}.app-confirm-actions[data-v-398df98e]{display:flex;justify-content:flex-end;gap:8px;padding:10px 14px;background:#f8f9fb;border-top:1px solid #e7eaf0}.app-confirm-button[data-v-398df98e]{height:34px;min-width:72px;padding:0 13px;color:#344054;font-size:13px;font-weight:500;background:#fff;border:1px solid #cfd5df;border-radius:4px;cursor:pointer;transition:border-color .18s ease,background-color .18s ease,color .18s ease}.app-confirm-button[data-v-398df98e]:hover{color:#273142;background:#f2f4f7;border-color:#b9c1cd}.app-confirm-button[data-v-398df98e]:focus-visible{outline:2px solid rgba(91,80,242,.45);outline-offset:1px}.app-confirm-button.is-confirm[data-v-398df98e]{color:#fff;background:#a15c07;border-color:#a15c07}.app-confirm-button.is-confirm[data-v-398df98e]:hover{background:#844b06;border-color:#844b06}.app-confirm-dialog.is-danger .app-confirm-button.is-confirm[data-v-398df98e]{background:#c43232;border-color:#c43232}.app-confirm-dialog.is-danger .app-confirm-button.is-confirm[data-v-398df98e]:hover{background:#a92828;border-color:#a92828}.app-confirm-dialog.is-primary .app-confirm-button.is-confirm[data-v-398df98e]{background:#4f46e5;border-color:#4f46e5}.app-confirm-dialog.is-primary .app-confirm-button.is-confirm[data-v-398df98e]:hover{background:#4338ca;border-color:#4338ca}.app-confirm-enter-active[data-v-398df98e],.app-confirm-leave-active[data-v-398df98e]{transition:opacity .18s ease}.app-confirm-enter-active .app-confirm-dialog[data-v-398df98e],.app-confirm-leave-active .app-confirm-dialog[data-v-398df98e]{transition:opacity .18s ease,transform .18s ease}.app-confirm-enter-from[data-v-398df98e],.app-confirm-leave-to[data-v-398df98e]{opacity:0}.app-confirm-enter-from .app-confirm-dialog[data-v-398df98e],.app-confirm-leave-to .app-confirm-dialog[data-v-398df98e]{opacity:0;transform:translateY(4px)}@media(max-width:520px){.app-confirm-overlay[data-v-398df98e]{padding:12px}.app-confirm-actions[data-v-398df98e]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.app-confirm-button[data-v-398df98e]{height:auto;min-width:0;min-height:44px}}@media(prefers-reduced-motion:reduce){.app-confirm-enter-active[data-v-398df98e],.app-confirm-leave-active[data-v-398df98e],.app-confirm-enter-active .app-confirm-dialog[data-v-398df98e],.app-confirm-leave-active .app-confirm-dialog[data-v-398df98e]{transition:none}} diff --git a/frontend/dist/assets/CompareChatView-BZJACmmb.js b/frontend/dist/assets/CompareChatView-BZJACmmb.js new file mode 100644 index 0000000..e10ee3a --- /dev/null +++ b/frontend/dist/assets/CompareChatView-BZJACmmb.js @@ -0,0 +1 @@ +import{a as N,E as B}from"./el-form-item-D5kF3B90.js";import{E as K}from"./index-TFUf94PZ.js";import{E as M}from"./index-BjEW7-SA.js";import{E as h}from"./index-BDEF353-.js";import{E as I}from"./el-divider-DjByQoml.js";import{E as R}from"./el-slider-DYENF1-i.js";import{d as F,G as z,e as V,w as l,ac as D,y as L,o as f,s as a,x as p,q as $,c as k,ad as j,aa as E,M as A,g as G,f as J,v as O,z as H,j as _,A as P}from"./index-BKKvzUDD.js";import"./el-popper-D6_hxRbQ.js";import"./el-tooltip-l0sNRNKZ.js";import"./el-input-number-BFR4pu1i.js";/* empty css */import{P as Q}from"./PageCard-BoKXOzst.js";import{u as W}from"./usePolling-C6448AR2.js";import{a as X}from"./compare-CZ4TIoIW.js";import{_ as Y}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./castArray-5uErZEc3.js";import"./_baseClone-B5RBzbh5.js";import"./raf-C-x62Pcl.js";import"./index-DLzof2Fz.js";import"./index-GAnQrJsQ.js";import"./debounce-ByXPNh5F.js";import"./toNumber-Dkj3QRv9.js";import"./clamp-CbbY8h6F.js";import"./index-CWUnzf90.js";import"./index-BENk7lZo.js";import"./el-card-CApHJ1Gj.js";const Z={class:"model-list"},tt={key:0,class:"empty-hint"},et=F({__name:"CompareChatView",setup(ot){const b=D(),y=O(),x=b.params.id,n=L(null),e=H({systemPrompt:"",question:"",temperature:.7,topP:.9,topK:40,maxTokens:2048}),m=_(()=>{var s;if(!((s=n.value)!=null&&s.load_status))return[];try{return(typeof n.value.load_status=="string"?JSON.parse(n.value.load_status):n.value.load_status).loaded_models||[]}catch{return[]}}),T=_(()=>m.value.length>0&&m.value.every(s=>s.status==="ready"||s.status==="running")),g=_(()=>m.value.some(s=>s.status==="starting"));async function c(){try{n.value=await X(x)}catch{}}function C(){var u,i;if(!e.question.trim()){P.warning("请输入问题");return}if(g.value){P.warning("模型仍在启动中,请稍候");return}const s=new URLSearchParams({taskId:x,taskName:((u=n.value)==null?void 0:u.model_name)||((i=n.value)==null?void 0:i.name)||"",question:e.question,systemPrompt:e.systemPrompt,temperature:String(e.temperature),topP:String(e.topP),topK:String(e.topK),maxTokens:String(e.maxTokens)}),t=y.resolve(`/model-compare/result?${s.toString()}`).href;window.open(t,"_blank")}const{start:S}=W(c,5e3,{immediate:!1});return z(async()=>{await c(),S()}),(s,t)=>{const u=I,i=h,v=K,r=N,d=R,w=M,q=B;return f(),V(Q,{title:"模型对比配置"},{default:l(()=>[a(u,{"content-position":"left"},{default:l(()=>[...t[7]||(t[7]=[p("已启动模型",-1)])]),_:1}),$("div",Z,[(f(!0),k(A,null,j(m.value,(o,U)=>(f(),V(i,{key:U,type:o.status==="ready"||o.status==="running"?"success":o.status==="starting"?"warning":"danger",size:"large"},{default:l(()=>[p(E(o.model_name)+" ("+E(o.status)+") ",1)]),_:2},1032,["type"]))),128)),m.value.length?G("",!0):(f(),k("span",tt,"暂无已启动模型"))]),a(u,{"content-position":"left"},{default:l(()=>[...t[8]||(t[8]=[p("对话配置",-1)])]),_:1}),a(q,{"label-width":"120px",style:{"max-width":"700px"}},{default:l(()=>[a(r,{label:"系统提示词"},{default:l(()=>[a(v,{modelValue:e.systemPrompt,"onUpdate:modelValue":t[0]||(t[0]=o=>e.systemPrompt=o),type:"textarea",rows:3,placeholder:"可选"},null,8,["modelValue"])]),_:1}),a(r,{label:"问题"},{default:l(()=>[a(v,{modelValue:e.question,"onUpdate:modelValue":t[1]||(t[1]=o=>e.question=o),type:"textarea",rows:4,placeholder:"请输入要对比的问题"},null,8,["modelValue"])]),_:1}),a(r,{label:"Temperature"},{default:l(()=>[a(d,{modelValue:e.temperature,"onUpdate:modelValue":t[2]||(t[2]=o=>e.temperature=o),min:0,max:2,step:.1,"show-input":"",style:{"max-width":"500px"}},null,8,["modelValue"])]),_:1}),a(r,{label:"Top-p"},{default:l(()=>[a(d,{modelValue:e.topP,"onUpdate:modelValue":t[3]||(t[3]=o=>e.topP=o),min:0,max:1,step:.05,"show-input":"",style:{"max-width":"500px"}},null,8,["modelValue"])]),_:1}),a(r,{label:"Top-k"},{default:l(()=>[a(d,{modelValue:e.topK,"onUpdate:modelValue":t[4]||(t[4]=o=>e.topK=o),min:1,max:100,step:1,"show-input":"",style:{"max-width":"500px"}},null,8,["modelValue"])]),_:1}),a(r,{label:"Max Tokens"},{default:l(()=>[a(d,{modelValue:e.maxTokens,"onUpdate:modelValue":t[5]||(t[5]=o=>e.maxTokens=o),min:256,max:4096,step:128,"show-input":"",style:{"max-width":"500px"}},null,8,["modelValue"])]),_:1}),a(r,null,{default:l(()=>[a(w,{type:"primary",disabled:!T.value||g.value,onClick:C},{default:l(()=>[...t[9]||(t[9]=[p(" 开始对比 ",-1)])]),_:1},8,["disabled"]),a(w,{onClick:t[6]||(t[6]=o=>J(y).back())},{default:l(()=>[...t[10]||(t[10]=[p("返回",-1)])]),_:1})]),_:1})]),_:1})]),_:1})}}}),qt=Y(et,[["__scopeId","data-v-5da55d96"]]);export{qt as default}; diff --git a/frontend/dist/assets/CompareChatView-wm3b2ZD9.css b/frontend/dist/assets/CompareChatView-wm3b2ZD9.css new file mode 100644 index 0000000..607b4ce --- /dev/null +++ b/frontend/dist/assets/CompareChatView-wm3b2ZD9.css @@ -0,0 +1 @@ +.model-list[data-v-5da55d96]{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:12px}.empty-hint[data-v-5da55d96]{color:#909399} diff --git a/frontend/dist/assets/CompareResultView-DlLosvn8.css b/frontend/dist/assets/CompareResultView-DlLosvn8.css new file mode 100644 index 0000000..4474895 --- /dev/null +++ b/frontend/dist/assets/CompareResultView-DlLosvn8.css @@ -0,0 +1 @@ +.compare-result[data-v-4c4e03d7]{max-width:1200px;margin:0 auto}.result-header[data-v-4c4e03d7]{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.result-header h2[data-v-4c4e03d7]{font-size:18px;font-weight:500;margin:0}.question-box[data-v-4c4e03d7]{margin-bottom:20px}.result-grid[data-v-4c4e03d7]{display:grid;grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:16px}.result-card .card-header[data-v-4c4e03d7]{display:flex;align-items:center;justify-content:space-between}.result-card .card-header .model-name[data-v-4c4e03d7]{font-weight:500;color:#303133}.result-card .loading-text[data-v-4c4e03d7],.result-card .error-text[data-v-4c4e03d7]{color:#909399;min-height:80px;display:flex;align-items:center;justify-content:center}.result-card .error-text[data-v-4c4e03d7]{color:#f56c6c}.result-card .streaming-text[data-v-4c4e03d7]{min-height:80px;line-height:1.7;white-space:pre-wrap;word-break:break-word}.result-card .result-stats[data-v-4c4e03d7]{display:flex;gap:16px;margin-top:12px;padding-top:12px;border-top:1px solid #ebeef5;font-size:12px;color:#909399} diff --git a/frontend/dist/assets/CompareResultView-yTJ0EdKT.js b/frontend/dist/assets/CompareResultView-yTJ0EdKT.js new file mode 100644 index 0000000..358881e --- /dev/null +++ b/frontend/dist/assets/CompareResultView-yTJ0EdKT.js @@ -0,0 +1 @@ +import{E as D}from"./el-alert-xVLeNUgJ.js";import{E as $}from"./index-BjEW7-SA.js";import{E as z}from"./index-BDEF353-.js";import{E as F}from"./el-card-CApHJ1Gj.js";import{d as O,G as U,H as J,c as d,q as i,aa as c,f as v,s as N,w as m,M as K,ad as A,ac as G,y as g,o as r,x as p,e as y,g as H}from"./index-BKKvzUDD.js";/* empty css */import{_ as L}from"./MarkdownView.vue_vue_type_style_index_0_lang-BPqmX54I.js";import{a as W,c as j}from"./compare-CZ4TIoIW.js";import{_ as Q}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./vnode-78qeDweP.js";const X={class:"compare-result"},Y={class:"result-header"},Z={class:"header-actions"},tt={class:"result-grid"},et={class:"card-header"},st={class:"model-name"},ot={key:0,class:"error-text"},at={key:1,class:"streaming-text"},nt={key:3,class:"loading-text"},lt={key:4,class:"result-stats"},rt=O({__name:"CompareResultView",setup(it){const u=G(),q=u.query.taskId,k=decodeURIComponent(u.query.question||""),h=decodeURIComponent(u.query.systemPrompt||""),E=Number(u.query.temperature||.7),P=Number(u.query.topP||.9),I=Number(u.query.topK||40),b=Number(u.query.maxTokens||2048),w=u.query.taskName,l=g([]),C=g(!1),x=g([]),f=new Set;async function B(){if(!C.value){C.value=!0;try{const s=await W(q);let t=[];s.load_status&&(t=(typeof s.load_status=="string"?JSON.parse(s.load_status):s.load_status).loaded_models||[]),x.value=t,l.value=t.map(o=>({name:o.model_name||"模型",content:"",displayContent:"",isTyping:!1,status:"loading"})),await Promise.all(t.map((o,e)=>S(o,e)))}catch{}}}async function S(s,t){const o=Date.now();try{const e=await V(j({port:s.port,model_name:s.model_name,messages:[...h?[{role:"system",content:h}]:[],{role:"user",content:k}],temperature:E,top_p:P,top_k:I,max_tokens:b}),3e5),a=(e==null?void 0:e.response)||(e==null?void 0:e.content)||(e==null?void 0:e.data)||JSON.stringify(e),_=(Date.now()-o)/1e3;l.value[t].content=a,l.value[t].status="done",l.value[t].stats={totalTime:_,charsPerSec:_>0?Number((a.length/_).toFixed(1)):0},M(t,a)}catch(e){l.value[t].content="推理失败: "+(e.message||""),l.value[t].status="error"}}async function V(s,t){let o=null;try{return await Promise.race([s,new Promise((e,a)=>{o=setTimeout(()=>a(new Error("推理超时")),t)})])}finally{o&&clearTimeout(o)}}function M(s,t){let o=0;l.value[s].isTyping=!0;const e=Math.max(2,Math.ceil(t.length/30)),a=setInterval(()=>{o+=e,l.value[s].displayContent=t.slice(0,o),o>=t.length&&(clearInterval(a),f.delete(a),l.value[s].displayContent=t,l.value[s].isTyping=!1)},50);f.add(a)}return U(B),J(()=>{f.forEach(clearInterval),f.clear()}),(s,t)=>{const o=$,e=D,a=z,_=F;return r(),d("div",X,[i("div",Y,[i("h2",null,"对比结果"+c(v(w)?` - ${v(w)}`:""),1),i("div",Z,[N(o,{onClick:t[0]||(t[0]=n=>s.$router.push("/model-inference"))},{default:m(()=>[...t[1]||(t[1]=[p("返回列表",-1)])]),_:1})])]),N(e,{type:"info",closable:!1,"show-icon":"",class:"question-box"},{title:m(()=>[t[2]||(t[2]=i("strong",null,"问题:",-1)),p(c(v(k)),1)]),_:1}),i("div",tt,[(r(!0),d(K,null,A(l.value,(n,R)=>(r(),y(_,{key:R,shadow:"hover",class:"result-card"},{header:m(()=>[i("div",et,[i("span",st,c(n.name),1),n.status==="loading"?(r(),y(a,{key:0,type:"warning",size:"small"},{default:m(()=>[...t[3]||(t[3]=[p("生成中...",-1)])]),_:1})):n.status==="done"?(r(),y(a,{key:1,type:"success",size:"small"},{default:m(()=>[...t[4]||(t[4]=[p("完成",-1)])]),_:1})):(r(),y(a,{key:2,type:"danger",size:"small"},{default:m(()=>[...t[5]||(t[5]=[p("失败",-1)])]),_:1}))])]),default:m(()=>{var T;return[n.status==="error"?(r(),d("div",ot,c(n.content),1)):n.isTyping?(r(),d("div",at,c(n.displayContent),1)):n.displayContent?(r(),y(L,{key:2,content:n.displayContent},null,8,["content"])):(r(),d("div",nt,[...t[6]||(t[6]=[i("i",{class:"fa fa-spinner fa-spin"},null,-1),p(" 正在生成回答... ",-1)])])),n.stats?(r(),d("div",lt,[i("span",null,"耗时 "+c((T=n.stats.totalTime)==null?void 0:T.toFixed(1))+"s",1),i("span",null,"速度 "+c(n.stats.charsPerSec)+" 字/秒",1)])):H("",!0)]}),_:2},1024))),128))])])}}}),kt=Q(rt,[["__scopeId","data-v-4c4e03d7"]]);export{kt as default}; diff --git a/frontend/dist/assets/ComputeNodesView-BKuDW-um.css b/frontend/dist/assets/ComputeNodesView-BKuDW-um.css new file mode 100644 index 0000000..d1ff6bc --- /dev/null +++ b/frontend/dist/assets/ComputeNodesView-BKuDW-um.css @@ -0,0 +1 @@ +.compute-page[data-v-daf09639]{display:flex;flex-direction:column;gap:16px;min-height:0;height:100%;padding:24px;background:#fff}.compute-header[data-v-daf09639]{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.compute-header h1[data-v-daf09639]{margin:0;font-size:24px;font-weight:650;color:#111827}.compute-header p[data-v-daf09639]{margin:8px 0 0;color:#64748b}.header-actions[data-v-daf09639]{display:flex;align-items:center;gap:12px}.last-updated[data-v-daf09639],.muted[data-v-daf09639]{color:#64748b;font-size:12px}.summary-grid[data-v-daf09639]{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.summary-tile[data-v-daf09639]{border:1px solid #e5e7eb;border-radius:8px;padding:14px 16px;background:#f8fafc}.summary-tile span[data-v-daf09639]{display:block;color:#64748b;font-size:12px}.summary-tile strong[data-v-daf09639]{display:block;margin-top:8px;color:#111827;font-size:24px}.compute-tabs[data-v-daf09639]{flex:1;min-height:0}.compute-tabs[data-v-daf09639] .el-tabs__content{height:calc(100% - 56px)}.compute-tabs[data-v-daf09639] .el-tab-pane{height:100%}.mono[data-v-daf09639]{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}.replica-toolbar[data-v-daf09639]{display:flex;gap:12px;align-items:center;margin-bottom:12px}.replica-toolbar .el-select[data-v-daf09639]{width:280px}@media(max-width:960px){.compute-header[data-v-daf09639],.header-actions[data-v-daf09639],.replica-toolbar[data-v-daf09639]{flex-direction:column;align-items:stretch}.summary-grid[data-v-daf09639]{grid-template-columns:repeat(2,minmax(0,1fr))}} diff --git a/frontend/dist/assets/ComputeNodesView-Cy5hxd1h.js b/frontend/dist/assets/ComputeNodesView-Cy5hxd1h.js new file mode 100644 index 0000000..0c83e91 --- /dev/null +++ b/frontend/dist/assets/ComputeNodesView-Cy5hxd1h.js @@ -0,0 +1 @@ +import{E as ee}from"./index-BjEW7-SA.js";import{E as te}from"./index-BDEF353-.js";import{E as ae,a as le}from"./el-select-Dl-FRZQd.js";import{E as ne}from"./el-progress-DuOxpLST.js";import{E as se}from"./el-space-Bcqwkggw.js";import{a as oe,E as ie}from"./el-table-D8K5zLyz.js";import{a as ue,E as de}from"./el-tab-pane-DliV6btA.js";import{v as re}from"./directive-DsZckUTJ.js";import{aF as N,aG as T,d as pe,y as c,D as me,G as ce,ah as _e,K as fe,c as _,q as i,aa as o,g as I,s as t,w as a,ac as be,j as k,o as p,x as u,M as B,ad as D,e as E,v as ge}from"./index-BKKvzUDD.js";import"./el-scrollbar-ClJnvz-9.js";import"./el-popper-D6_hxRbQ.js";/* empty css */import"./el-tooltip-l0sNRNKZ.js";import"./el-checkbox-qGZ2-RM2.js";import{_ as ve}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./index-CWUnzf90.js";import"./castArray-5uErZEc3.js";import"./vnode-78qeDweP.js";import"./index-D5ryD3I5.js";import"./raf-C-x62Pcl.js";import"./scroll-BkzZKETR.js";import"./index-DLzof2Fz.js";import"./clamp-CbbY8h6F.js";import"./toNumber-Dkj3QRv9.js";import"./_baseIteratee-BAilevJ_.js";import"./index-GAnQrJsQ.js";import"./_baseClone-B5RBzbh5.js";import"./debounce-ByXPNh5F.js";import"./omit-BTSq4AYh.js";const he=()=>N("/compute/nodes"),ye=m=>T(`/compute/nodes/${m}/test-connection`),we=m=>T(`/compute/nodes/${m}/enable`),Ce=m=>T(`/compute/nodes/${m}/disable`),ke=m=>T(`/compute/nodes/${m}/drain`),Ee=()=>N("/compute/gpus"),Ne=()=>N("/compute/queue"),Te=m=>N(`/compute/nodes/${m}/replicas`),Ge={class:"compute-page"},Ve={class:"compute-header"},Pe={class:"header-actions"},Se={key:0,class:"last-updated"},Ue={class:"summary-grid"},$e={class:"summary-tile"},qe={class:"summary-tile"},xe={class:"summary-tile"},Ie={class:"summary-tile"},Be={class:"mono"},De={class:"muted mono"},Le={class:"muted"},ze={class:"muted"},Re={key:0,class:"muted"},je={class:"muted"},Me={class:"replica-toolbar"},Fe={key:0,class:"muted"},Ae=pe({__name:"ComputeNodesView",setup(m){const L=be(),j=ge(),G=c(String(L.query.tab||"nodes")),V=c(!1),f=c([]),v=c([]),P=c([]),S=c([]),b=c(""),U=c("");let $=null;const z=k(()=>f.value.find(l=>l.id===b.value)),M=k(()=>f.value.filter(l=>l.enabled).length),F=k(()=>v.value.filter(l=>l.status==="busy"||l.status==="reserved").length),A=k(()=>f.value.reduce((l,n)=>l+n.current_running_jobs,0));me(()=>L.query.tab,l=>{G.value=String(l||"nodes")});async function h(){V.value=!0;try{const[l,n,d]=await Promise.all([he(),Ee(),Ne()]);f.value=l,v.value=n,P.value=d,!b.value&&l.length&&(b.value=l[0].id),await R(),U.value=new Date().toLocaleTimeString("zh-CN",{hour12:!1})}finally{V.value=!1}}async function R(){if(!b.value){S.value=[];return}S.value=await Te(b.value)}async function J(l){await j.replace({path:"/compute",query:{tab:String(l)}})}async function y(l,n){const d=String(n.id);l==="enable"&&await we(d),l==="disable"&&await Ce(d),l==="drain"&&await ke(d),l==="test"&&await ye(d),await h()}function K(l){return l==="online"?"success":l==="draining"||l==="maintenance"?"warning":"info"}function O(l){return l==="running"?"success":l==="syncing"||l==="queued"?"warning":l==="failed"?"danger":"info"}function Q(l){return l==="busy"?"success":l==="reserved"?"warning":"info"}return ce(()=>{h(),$=setInterval(h,5e3)}),_e(()=>{$&&clearInterval($)}),(l,n)=>{const d=ee,s=ie,g=te,W=se,w=oe,C=de,q=ne,H=le,X=ae,Y=ue,Z=re;return fe((p(),_("section",Ge,[i("header",Ve,[n[3]||(n[3]=i("div",null,[i("h1",null,"算力节点"),i("p",null,"维护训练算力节点、GPU 状态、任务队列和模型/数据集本地副本。")],-1)),i("div",Pe,[U.value?(p(),_("span",Se,"更新 "+o(U.value),1)):I("",!0),t(d,{onClick:h},{default:a(()=>[...n[2]||(n[2]=[u("刷新",-1)])]),_:1})])]),i("div",Ue,[i("div",$e,[n[4]||(n[4]=i("span",null,"在线节点",-1)),i("strong",null,o(M.value)+" / "+o(f.value.length),1)]),i("div",qe,[n[5]||(n[5]=i("span",null,"GPU 占用",-1)),i("strong",null,o(F.value)+" / "+o(v.value.length),1)]),i("div",xe,[n[6]||(n[6]=i("span",null,"运行任务",-1)),i("strong",null,o(A.value),1)]),i("div",Ie,[n[7]||(n[7]=i("span",null,"队列任务",-1)),i("strong",null,o(P.value.length),1)])]),t(Y,{modelValue:G.value,"onUpdate:modelValue":n[1]||(n[1]=e=>G.value=e),class:"compute-tabs",onTabChange:J},{default:a(()=>[t(C,{label:"节点",name:"nodes"},{default:a(()=>[t(w,{data:f.value,height:"100%"},{default:a(()=>[t(s,{prop:"code",label:"节点编码","min-width":"150"}),t(s,{prop:"name",label:"节点名称","min-width":"150"}),t(s,{label:"状态",width:"120"},{default:a(({row:e})=>[t(g,{type:K(e.scheduler_status)},{default:a(()=>[u(o(e.scheduler_status),1)]),_:2},1032,["type"])]),_:1}),t(s,{label:"启用",width:"90"},{default:a(({row:e})=>[t(g,{type:e.enabled?"success":"info"},{default:a(()=>[u(o(e.enabled?"启用":"停用"),1)]),_:2},1032,["type"])]),_:1}),t(s,{prop:"scheduler_weight",label:"权重",width:"90"}),t(s,{label:"标签","min-width":"220"},{default:a(({row:e})=>[t(W,{wrap:""},{default:a(()=>[(p(!0),_(B,null,D(e.tags,r=>(p(),E(g,{key:r,effect:"plain"},{default:a(()=>[u(o(r),1)]),_:2},1024))),128))]),_:2},1024)]),_:1}),t(s,{label:"任务/GPU",width:"120"},{default:a(({row:e})=>[u(o(e.current_running_jobs)+" / "+o(e.gpu_count),1)]),_:1}),t(s,{label:"服务地址","min-width":"260"},{default:a(({row:e})=>[i("div",Be,o(e.api_base_url),1),i("div",De,o(e.file_gateway_url),1)]),_:1}),t(s,{label:"操作",width:"260",fixed:"right"},{default:a(({row:e})=>[t(d,{size:"small",onClick:r=>y("test",e)},{default:a(()=>[...n[8]||(n[8]=[u("测试",-1)])]),_:1},8,["onClick"]),e.enabled?(p(),E(d,{key:0,size:"small",onClick:r=>y("disable",e)},{default:a(()=>[...n[9]||(n[9]=[u("停用",-1)])]),_:1},8,["onClick"])):(p(),E(d,{key:1,size:"small",type:"primary",onClick:r=>y("enable",e)},{default:a(()=>[...n[10]||(n[10]=[u("启用",-1)])]),_:1},8,["onClick"])),t(d,{size:"small",type:"warning",plain:"",onClick:r=>y("drain",e)},{default:a(()=>[...n[11]||(n[11]=[u("维护",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])]),_:1}),t(C,{label:"GPU",name:"gpus"},{default:a(()=>[t(w,{data:v.value,height:"100%"},{default:a(()=>[t(s,{label:"GPU","min-width":"220"},{default:a(({row:e})=>[i("strong",null,o(e.node_code)+" / GPU "+o(e.id),1),i("div",Le,o(e.name),1)]),_:1}),t(s,{label:"状态",width:"100"},{default:a(({row:e})=>[t(g,{type:Q(e.status)},{default:a(()=>[u(o(e.status),1)]),_:2},1032,["type"])]),_:1}),t(s,{label:"利用率","min-width":"180"},{default:a(({row:e})=>[t(q,{percentage:e.gpu_percent,"stroke-width":8},null,8,["percentage"])]),_:1}),t(s,{label:"显存","min-width":"190"},{default:a(({row:e})=>[t(q,{percentage:Math.round(e.memory_percent),"stroke-width":8},null,8,["percentage"]),i("span",ze,o(e.memory_used_gb)+" / "+o(e.memory_total_gb)+" GB",1)]),_:1}),t(s,{label:"温度/功耗",width:"150"},{default:a(({row:e})=>[u(o(e.temperature)+" C / "+o(e.power_w)+" W",1)]),_:1}),t(s,{label:"进程","min-width":"220"},{default:a(({row:e})=>{var r;return[(r=e.processes)!=null&&r.length?I("",!0):(p(),_("span",Re,"空闲")),(p(!0),_(B,null,D(e.processes,x=>(p(),_("div",{key:x.pid},[u(o(x.task_name)+" ",1),i("span",je,"PID "+o(x.pid),1)]))),128))]}),_:1})]),_:1},8,["data"])]),_:1}),t(C,{label:"队列",name:"queue"},{default:a(()=>[t(w,{data:P.value,height:"100%"},{default:a(()=>[t(s,{prop:"name",label:"任务名称","min-width":"200"}),t(s,{label:"状态",width:"110"},{default:a(({row:e})=>[t(g,{type:O(e.status)},{default:a(()=>[u(o(e.status),1)]),_:2},1032,["type"])]),_:1}),t(s,{label:"进度","min-width":"220"},{default:a(({row:e})=>[t(q,{percentage:e.progress,"stroke-width":8},null,8,["percentage"])]),_:1}),t(s,{prop:"compute_node_id",label:"节点",width:"140"}),t(s,{label:"GPU",width:"120"},{default:a(({row:e})=>{var r;return[u(o(((r=e.gpus)==null?void 0:r.join(", "))||"-"),1)]}),_:1}),t(s,{prop:"create_time",label:"创建时间",width:"190"})]),_:1},8,["data"])]),_:1}),t(C,{label:"资源副本",name:"replicas"},{default:a(()=>[i("div",Me,[t(X,{modelValue:b.value,"onUpdate:modelValue":n[0]||(n[0]=e=>b.value=e),filterable:"",onChange:R},{default:a(()=>[(p(!0),_(B,null,D(f.value,e=>(p(),E(H,{key:e.id,label:`${e.code} - ${e.name}`,value:e.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),z.value?(p(),_("span",Fe,"当前节点 "+o(z.value.api_base_url),1)):I("",!0)]),t(w,{data:S.value,height:"100%"},{default:a(()=>[t(s,{prop:"resource_type",label:"资源类型",width:"110"}),t(s,{prop:"resource_id",label:"资源 ID","min-width":"180"}),t(s,{prop:"local_path",label:"本地路径","min-width":"300"}),t(s,{prop:"status",label:"状态",width:"110"}),t(s,{prop:"sync_status",label:"同步状态",width:"120"}),t(s,{prop:"create_time",label:"创建时间",width:"190"})]),_:1},8,["data"])]),_:1})]),_:1},8,["modelValue"])])),[[Z,V.value]])}}}),yt=ve(Ae,[["__scopeId","data-v-daf09639"]]);export{yt as default}; diff --git a/frontend/dist/assets/DashboardView-BMPZwafh.css b/frontend/dist/assets/DashboardView-BMPZwafh.css new file mode 100644 index 0000000..9ae91fe --- /dev/null +++ b/frontend/dist/assets/DashboardView-BMPZwafh.css @@ -0,0 +1 @@ +.dashboard-view[data-v-30eaacb6]{display:flex;flex-direction:column;min-height:100%;gap:16px;min-width:0;color:#1e293b}.overview-section[data-v-30eaacb6],.chart-section[data-v-30eaacb6],.service-section[data-v-30eaacb6],.stat-card[data-v-30eaacb6],.tasks-section[data-v-30eaacb6]{border:1px solid #e2e8f0;border-radius:10px;background:#fff}.user-stats-row[data-v-30eaacb6]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.stat-card[data-v-30eaacb6]{display:flex;flex-direction:column;padding:16px 18px;min-height:284px;min-width:0}.chart-container[data-v-30eaacb6]{flex:1 1 auto;min-height:224px;margin-top:10px;width:100%;display:flex;align-items:center;justify-content:center}.pie-chart[data-v-30eaacb6]{width:100%;height:224px}.duration-chart[data-v-30eaacb6]{width:100%;height:224px;margin-top:10px}.list-container[data-v-30eaacb6]{display:flex;flex-direction:column;gap:12px;margin-top:16px}.list-item[data-v-30eaacb6]{display:flex;align-items:center;justify-content:space-between}.user-info[data-v-30eaacb6]{display:flex;align-items:center;gap:12px}.user-avatar[data-v-30eaacb6]{font-size:14px;font-weight:600}.username[data-v-30eaacb6]{font-size:13px;font-weight:500;color:#334155}.user-meta[data-v-30eaacb6]{display:flex;flex-direction:column;gap:2px}.login-time[data-v-30eaacb6]{font-size:11px;color:#94a3b8}.recent-user-item[data-v-30eaacb6]{padding:2px 0}.section-title[data-v-30eaacb6]{margin:0;font-size:15px;line-height:1.4;font-weight:600;color:#1e293b}.overview-section[data-v-30eaacb6]{padding:12px 14px 13px}.overview-content[data-v-30eaacb6]{display:grid;grid-template-columns:minmax(300px,1.05fr) minmax(540px,1.75fr);align-items:stretch;margin-top:10px}.health-summary[data-v-30eaacb6]{display:flex;align-items:center;gap:14px;min-height:86px;padding:6px 18px 6px 12px;border-right:1px solid #e2e8f0}.health-summary strong[data-v-30eaacb6]{display:block;color:#10b981;font-size:20px;line-height:1.3;font-weight:700}.health-summary p[data-v-30eaacb6]{margin:5px 0 0;color:#64748b;font-size:13px}.health-icon[data-v-30eaacb6]{display:grid;place-items:center;width:56px;height:56px;flex:0 0 56px;border-radius:50%;background:#10b981;color:#fff;font-size:26px;box-shadow:0 6px 16px #10b98124}.overview-metrics[data-v-30eaacb6]{display:grid;grid-template-columns:repeat(3,1fr)}.overview-metric[data-v-30eaacb6]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-width:0;border-right:1px solid #e2e8f0}.overview-metric[data-v-30eaacb6]:last-child{border-right:none}.overview-metric span[data-v-30eaacb6],.overview-metric small[data-v-30eaacb6]{color:#64748b;font-size:12px}.overview-metric strong[data-v-30eaacb6]{font-size:26px;line-height:1;font-weight:600;font-variant-numeric:tabular-nums}.overview-metric.is-alert strong[data-v-30eaacb6]{color:#ef4444}.dashboard-middle[data-v-30eaacb6]{display:grid;grid-template-columns:minmax(0,1.9fr) minmax(300px,.82fr);flex:0 0 auto;gap:16px;min-height:0}.chart-section[data-v-30eaacb6],.service-section[data-v-30eaacb6]{display:flex;flex-direction:column;min-height:360px;padding:16px 18px}.section-heading-row[data-v-30eaacb6]{display:flex;align-items:center;justify-content:space-between;gap:16px}.period-select[data-v-30eaacb6]{width:94px}.period-select[data-v-30eaacb6] .el-select__wrapper{min-height:30px}.training-chart[data-v-30eaacb6]{flex:1 1 auto;width:100%;height:300px;min-height:300px}.service-table[data-v-30eaacb6]{display:grid;grid-template-rows:36px repeat(4,minmax(48px,1fr));flex:1 1 auto;margin-top:12px;min-height:0}.service-row[data-v-30eaacb6]{display:grid;grid-template-columns:minmax(130px,1.35fr) minmax(72px,.7fr) 72px;align-items:center;min-height:48px;border-top:1px solid #eef2f7;color:#475569;font-size:13px}.service-header[data-v-30eaacb6]{min-height:36px;border-top:none;color:#64748b;font-size:12px;font-weight:600}.service-name[data-v-30eaacb6]{display:flex;align-items:center;gap:10px;color:#334155;font-weight:500}.service-name .fa[data-v-30eaacb6]{width:18px;color:#64748b;text-align:center}.state-pill[data-v-30eaacb6],.task-state[data-v-30eaacb6]{display:inline-flex;align-items:center;justify-content:center;min-height:22px;padding:0 8px;border-radius:6px;font-size:12px;font-weight:600;white-space:nowrap}.is-normal[data-v-30eaacb6],.is-completed[data-v-30eaacb6]{color:#059669;background:#ecfdf5}.is-busy[data-v-30eaacb6],.is-pending[data-v-30eaacb6]{color:#d97706;background:#fffbeb}.is-error[data-v-30eaacb6],.is-failed[data-v-30eaacb6]{color:#dc2626;background:#fef2f2}.is-running[data-v-30eaacb6]{color:#4f46e5;background:#eef2ff}.instance-count[data-v-30eaacb6],.numeric-value[data-v-30eaacb6]{font-variant-numeric:tabular-nums}.tasks-section[data-v-30eaacb6]{padding:12px 0 0;overflow:hidden}.tasks-heading[data-v-30eaacb6]{min-height:32px;padding:0 14px 10px}.tasks-table-wrap[data-v-30eaacb6]{overflow-x:auto}.tasks-table[data-v-30eaacb6]{width:100%;min-width:980px;border-collapse:collapse;table-layout:fixed;color:#475569;font-size:12px}.tasks-table th[data-v-30eaacb6],.tasks-table td[data-v-30eaacb6]{height:50px;padding:8px 10px;border-top:1px solid #eef2f7;text-align:left;vertical-align:middle;white-space:nowrap}.tasks-table th[data-v-30eaacb6]{height:38px;background:#f8fafc;color:#475569;font-weight:600}.tasks-table th[data-v-30eaacb6]:nth-child(1){width:14%}.tasks-table th[data-v-30eaacb6]:nth-child(2){width:10%}.tasks-table th[data-v-30eaacb6]:nth-child(3){width:11%}.tasks-table th[data-v-30eaacb6]:nth-child(4){width:17%}.tasks-table th[data-v-30eaacb6]:nth-child(5){width:17%}.tasks-table th[data-v-30eaacb6]:nth-child(6){width:9%}.tasks-table th[data-v-30eaacb6]:nth-child(7){width:12%}.tasks-table th[data-v-30eaacb6]:nth-child(8){width:10%}.task-name[data-v-30eaacb6]{color:#334155;font-weight:500;overflow:hidden;text-overflow:ellipsis}.progress-cell[data-v-30eaacb6]{display:grid;grid-template-columns:minmax(72px,1fr) 38px;align-items:center;gap:8px;font-variant-numeric:tabular-nums}.progress-cell[data-v-30eaacb6] .el-progress-bar__outer{background:#e2e8f0}@media(max-height:900px)and (min-width:1181px){.section-title[data-v-30eaacb6]{font-size:14px}.overview-section[data-v-30eaacb6]{padding:8px 12px 9px}.overview-content[data-v-30eaacb6]{margin-top:6px}.health-summary[data-v-30eaacb6]{gap:10px;min-height:64px;padding:4px 14px 4px 8px}.health-summary strong[data-v-30eaacb6]{font-size:18px}.health-summary p[data-v-30eaacb6]{margin-top:3px;font-size:12px}.health-icon[data-v-30eaacb6]{width:44px;height:44px;flex-basis:44px;font-size:20px;box-shadow:0 4px 12px #10b9811f}.overview-metric[data-v-30eaacb6]{gap:2px}.overview-metric span[data-v-30eaacb6],.overview-metric small[data-v-30eaacb6]{font-size:11px}.overview-metric strong[data-v-30eaacb6]{font-size:23px}.service-table[data-v-30eaacb6]{grid-template-rows:32px repeat(4,minmax(40px,1fr));margin-top:8px}.service-row[data-v-30eaacb6]{min-height:40px;font-size:12px}.service-header[data-v-30eaacb6]{min-height:32px;font-size:11px}.state-pill[data-v-30eaacb6],.task-state[data-v-30eaacb6]{min-height:20px;padding-inline:7px;font-size:11px}.tasks-section[data-v-30eaacb6]{padding-top:8px}.tasks-heading[data-v-30eaacb6]{min-height:28px;padding:0 12px 8px}.tasks-table th[data-v-30eaacb6],.tasks-table td[data-v-30eaacb6]{height:42px;padding:6px 8px}.tasks-table th[data-v-30eaacb6]{height:34px}}@media(max-width:1180px){.overview-content[data-v-30eaacb6]{grid-template-columns:1fr}.health-summary[data-v-30eaacb6]{border-right:none;border-bottom:1px solid #e2e8f0}.overview-metrics[data-v-30eaacb6]{min-height:94px}.dashboard-middle[data-v-30eaacb6]{grid-template-columns:1fr}.user-stats-row[data-v-30eaacb6]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:720px){.user-stats-row[data-v-30eaacb6]{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){.dashboard-view[data-v-30eaacb6] *{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}} diff --git a/frontend/dist/assets/DashboardView-JKcOpMUU.js b/frontend/dist/assets/DashboardView-JKcOpMUU.js new file mode 100644 index 0000000..a861e7b --- /dev/null +++ b/frontend/dist/assets/DashboardView-JKcOpMUU.js @@ -0,0 +1,2 @@ +import{E as $t}from"./el-avatar-l9IBuq4_.js";import{E as qt}from"./index-BjEW7-SA.js";import{E as jt}from"./index-BDEF353-.js";import{E as Zt,a as Qt}from"./el-select-Dl-FRZQd.js";import{E as Kt}from"./el-progress-DuOxpLST.js";import{d as Jt,c as me,p as ea,q as x,s as H,w as de,f as Oe,M as ke,ad as Re,y as ta,j as Ne,o as be,x as ve,v as aa,n as Ee,aa as U}from"./index-BKKvzUDD.js";/* empty css */import"./el-scrollbar-ClJnvz-9.js";import"./el-popper-D6_hxRbQ.js";import{P as F,D as et,r as tt,a as St,d as ra,S as at,b as rt,l as Ge,c as na,e as ia,p as sa,t as At,f as oa,L as la,i as xt,F as ca,g as ua,h as da,j as va,k as ga,A as fa,m as wt,n as ha,o as pa,q as ma,s as ba,u as Be,v as ya,w as Sa,x as Aa,y as _t,z as nt,C as fe,B as Q,E as $,G as xa,H as Ve,I as ye,_ as ne,J as Lt,K as Xe,M as wa,N as _a,O as La,Q as it,R as $e,T as Dt,U as It,V as Da,W as Ia,X as ae,Y as re,Z as _e,$ as Mt,a0 as Ma,a1 as Ca,a2 as Pa,a3 as qe,a4 as Ct,a5 as De,a6 as Pt,a7 as q,a8 as Tt,a9 as Ot,aa as Ta,ab as Oa,ac as ka,ad as kt,ae as Rt,af as Ra,ag as Na,ah as Ea,ai as Ga,aj as Ba,ak as st,al as Va,am as Wa,an as za,ao as Fa,ap as Nt,aq as Ua,ar as Ya,as as Ha,at as Xa,au as $a,av as qa,aw as ja,ax as Za,ay as Qa,az as Ka,aA as Ja,aB as er,aC as tr,aD as ar,aE as rr,aF as nr,aG as ir,aH as We}from"./install-CZjWaVQv.js";import{S as ot,c as sr}from"./createSeriesDataSimply-DVjwvHot.js";import{_ as or}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./vnode-78qeDweP.js";import"./index-CWUnzf90.js";import"./castArray-5uErZEc3.js";import"./index-D5ryD3I5.js";import"./raf-C-x62Pcl.js";import"./scroll-BkzZKETR.js";import"./index-DLzof2Fz.js";import"./clamp-CbbY8h6F.js";import"./toNumber-Dkj3QRv9.js";import"./_baseIteratee-BAilevJ_.js";import"./index-GAnQrJsQ.js";function Et(r,a,t,e,n,s,i,o){var l=n-r,u=s-a,c=t-r,d=e-a,g=Math.sqrt(c*c+d*d);c/=g,d/=g;var p=l*c+u*d,v=p/g;v*=g;var h=i[0]=r+v*c,f=i[1]=a+v*d;return Math.sqrt((h-n)*(h-n)+(f-s)*(f-s))}var j=new F,B=new F,z=new F,Z=new F,X=new F,Le=[],Y=new F;function lr(r,a){if(a<=180&&a>0){a=a/180*Math.PI,j.fromArray(r[0]),B.fromArray(r[1]),z.fromArray(r[2]),F.sub(Z,j,B),F.sub(X,z,B);var t=Z.len(),e=X.len();if(!(t<.001||e<.001)){Z.scale(1/t),X.scale(1/e);var n=Z.dot(X),s=Math.cos(a);if(s1&&F.copy(Y,z),Y.toArray(r[1])}}}}function cr(r,a,t){if(t<=180&&t>0){t=t/180*Math.PI,j.fromArray(r[0]),B.fromArray(r[1]),z.fromArray(r[2]),F.sub(Z,B,j),F.sub(X,z,B);var e=Z.len(),n=X.len();if(!(e<.001||n<.001)){Z.scale(1/e),X.scale(1/n);var s=Z.dot(a),i=Math.cos(t);if(s=l)F.copy(Y,z);else{Y.scaleAndAdd(X,o/Math.tan(Math.PI/2-c));var d=z.x!==B.x?(Y.x-B.x)/(z.x-B.x):(Y.y-B.y)/(z.y-B.y);if(isNaN(d))return;d<0?F.copy(Y,B):d>1&&F.copy(Y,z)}Y.toArray(r[1])}}}}function ze(r,a,t,e){var n=t==="normal",s=n?r:r.ensureState(t);s.ignore=a;var i=e.get("smooth");i=i===!0?.3:Math.max(+i,0)||0,s.shape=s.shape||{},s.shape.smooth=i;var o=e.getModel("lineStyle").getLineStyle();n?r.useStyle(o):s.style=o}function ur(r,a){var t=a.smooth,e=a.points;if(e)if(r.moveTo(e[0][0],e[0][1]),t>0&&e.length>=3){var n=rt(e[0],e[1]),s=rt(e[1],e[2]);if(!n||!s){r.lineTo(e[1][0],e[1][1]),r.lineTo(e[2][0],e[2][1]);return}var i=Math.min(n,s)*t,o=Ge([],e[1],e[0],i/n),l=Ge([],e[1],e[2],i/s),u=Ge([],o,l,.5);r.bezierCurveTo(o[0],o[1],o[0],o[1],u[0],u[1]),r.bezierCurveTo(l[0],l[1],l[0],l[1],e[2][0],e[2][1])}else for(var c=1;c=0&&b(w,L,A.getStore())})}var p=0;if(g(function(b,L,A){e.set(L.uid,1),(!n||!n.hasKey(L.uid))&&(i=!0),p+=A.count()}),(!n||n.keys().length!==e.keys().length)&&(i=!0),!i&&s!=null){a.liPosMinGap=s;return}At(te,p);var v=0;g(function(b,L,A){for(var w=0,_=A.count();w<_;++w){var y=A.get(b,w);isFinite(y)&&(!c||da(d,y))&&(u&&(y=l.transformIn(y,null)),te.arr[v++]=y)}});var h=te.typed?te.arr.subarray(0,v):(te.arr.length=v,te.arr);te.typed?h.sort():oa(h);for(var f=1/0,m=1;m0&&S0?va:la,t.serUids=e}var te=At({ctor:ca},50);function hr(r){return function(a,t){var e=wt(a,{fromStat:{key:r}});if(xt(e.w2))return[-e.w2/2,e.w2/2]}}function Ie(r,a){return r+fa+a}function pr(r){return gr(),{liPosMinGap:!ga(r.scale)}}var le="bar";function mr(r,a,t,e){ha(r,{key:a,seriesType:t,coordSysType:e,getMetrics:pr})}function br(r){var a=r.scale.rawExtentInfo.makeRenderInfo().startValue;return a}var yr=Sa(),Sr="__ec_stack_";function Gt(r){return r.get("stack")||Sr+r.seriesIndex}function Ar(r,a){var t=xr(r,a);return t.columnMap=wr(t),t}function xr(r,a){var t=Ie(a,fe),e=[],n=wt(r,{fromStat:{key:t},min:1});return _t(r,t,function(s){e.push({barWidth:Q(s.get("barWidth"),n.w),barMaxWidth:Q(s.get("barMaxWidth"),n.w),barMinWidth:Q(s.get("barMinWidth")||(Bt(s)?.5:1),n.w),barGap:s.get("barGap"),barCategoryGap:s.get("barCategoryGap"),defaultBarGap:s.get("defaultBarGap"),stackId:Gt(s)})}),{bandWidthResult:n,seriesInfo:e}}function wr(r){var a=r.bandWidthResult.w,t=a,e=0,n,s,i=[],o={};$(r.seriesInfo,function(h,f){f||(s=h.defaultBarGap||0);var m=h.stackId;xa(o,m)||e++;var S=o[m];S||(S=o[m]={width:0,maxWidth:0},i.push(m));var b=h.barWidth;b&&!S.width&&(S.width=b,b=Ve(t,b),t-=b);var L=h.barMaxWidth;L&&(S.maxWidth=L);var A=h.barMinWidth;A&&(S.minWidth=A);var w=h.barGap;w!=null&&(s=w);var _=h.barCategoryGap;_!=null&&(n=_)}),n==null&&(n=ye(35-i.length*4,15)+"%");var l=Q(n,a),u=Q(s,1),c=(t-l)/(e+(e-1)*u);c=ye(c,0),$(i,function(h){var f=o[h],m=f.maxWidth,S=f.minWidth;if(f.width){var b=f.width;m&&(b=Ve(b,m)),S&&(b=ye(b,S)),f.width=b,t-=b+u*b,e--}else{var b=c;m&&mb&&(b=S),b!==c&&(f.width=b,t-=b+u*b,e--)}}),c=(t-l)/(e+(e-1)*u),c=ye(c,0);var d=0,g;$(i,function(h){var f=o[h];f.width||(f.width=c),g=f,d+=f.width*(1+u)}),g&&(d-=g.width*u);var p={},v=-d/2;return $(i,function(h){var f=o[h];p[h]=p[h]||{bandWidth:a,offset:v,width:f.width},v+=f.width*(1+u)}),p}function _r(r){return{seriesType:r,overallReset:function(a){var t=Ie(r,fe);pa(a,t,function(e){var n=Ar(e,r);_t(e,t,function(s){var i=n.columnMap[Gt(s)];s.getData().setLayout({bandWidth:i.bandWidth,offset:i.offset,size:i.width})})})}}}function Lr(r){return{seriesType:r,plan:ya(),reset:function(a){if(ma(a)){var t=a.getData(),e=a.coordinateSystem,n=e.getBaseAxis(),s=e.getOtherAxis(n),i=t.getDimensionIndex(t.mapDimension(s.dim)),o=t.getDimensionIndex(t.mapDimension(n.dim)),l=a.get("showBackground",!0),u=t.mapDimension(s.dim),c=t.getCalculationInfo("stackResultDimension"),d=ba(t,u)&&!!t.getCalculationInfo("stackedOnSeries"),g=s.isHorizontal(),p=s.toGlobalCoord(s.dataToCoord(br(s))),v=Bt(a),h=a.get("barMinHeight")||0,f=c&&t.getDimensionIndex(c),m=t.getLayout("size"),S=t.getLayout("offset");return{progress:function(b,L){for(var A=b.count,w=v&&Be(A*3),_=v&&l&&Be(A*3),y=v&&Be(A),C=e.master.getRect(),V=g?C.width:C.height,I,T=L.getStore(),M=0;(I=b.next())!=null;){var O=T.get(d?f:i,I),P=T.get(o,I),N=p,W=void 0;d&&(W=+O-T.get(i,I));var D=void 0,k=void 0,R=void 0,E=void 0;if(g){var G=e.dataToPoint([O,P]);d&&(N=e.dataToPoint([W,P])[0]),D=N,k=G[1]+S,R=G[0]-N,E=m,nt(R)f){b=(w+S)/2;break}A===1&&(L=_-v[0].tickValue)}b==null&&(S?S&&(b=v[v.length-1].coord):b=v[0].coord),o[p]=g.toGlobalCoord(b)}});else{var l=this.getData(),u=l.getLayout("offset"),c=l.getLayout("size"),d=s.getBaseAxis().isHorizontal()?0:1;o[d]+=u+c/2}return o}return[NaN,NaN]},a.prototype.__requireStartValue=function(t){return this.getBaseAxis()!==t},a.type="series.__base_bar__",a.defaultOption={z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,barMinHeight:0,barMinAngle:0,large:!1,largeThreshold:400,progressive:3e3,progressiveChunkMode:"mod",defaultBarGap:"10%"},a})(Xe);Xe.registerClass(He);var Mr=(function(r){ne(a,r);function a(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=a.type,t}return a.prototype.getInitialData=function(){return Lt(null,this,{useEncodeDefaulter:!0,createInvertedIndices:!!this.get("realtimeSort",!0)||null})},a.prototype.getProgressive=function(){return this.get("large")?this.get("progressive"):!1},a.prototype.__preparePipelineContext=function(t,e){var n=wa(this,t,e);return n.progressiveRender&&(n.large=!0),n},a.prototype.brushSelector=function(t,e,n){return n.rect(e.getItemLayout(t))},a.type="series."+le,a.dependencies=["grid","polar"],a.defaultOption=_a(He.defaultOption,{clip:!0,roundCap:!1,showBackground:!1,backgroundStyle:{color:"rgba(180, 180, 180, 0.2)",borderColor:null,borderWidth:0,borderType:"solid",borderRadius:0,shadowBlur:0,shadowColor:null,shadowOffsetX:0,shadowOffsetY:0,opacity:1},select:{itemStyle:{borderColor:La.color.primary,borderWidth:2}},realtimeSort:!1}),a})(He);function Cr(r,a){a=a||{};var t=a.isRoundCap;return function(e,n,s){var i=n.position;if(!i||i instanceof Array)return it(e,n,s);var o=r(i),l=n.distance!=null?n.distance:5,u=this.shape,c=u.cx,d=u.cy,g=u.r,p=u.r0,v=(g+p)/2,h=u.startAngle,f=u.endAngle,m=(h+f)/2,S=t?Math.abs(g-p)/2:0,b=Math.cos,L=Math.sin,A=c+g*b(h),w=d+g*L(h),_="left",y="top";switch(o){case"startArc":A=c+(p-l)*b(m),w=d+(p-l)*L(m),_="center",y="top";break;case"insideStartArc":A=c+(p+l)*b(m),w=d+(p+l)*L(m),_="center",y="bottom";break;case"startAngle":A=c+v*b(h)+Se(h,l+S,!1),w=d+v*L(h)+Ae(h,l+S,!1),_="right",y="middle";break;case"insideStartAngle":A=c+v*b(h)+Se(h,-l+S,!1),w=d+v*L(h)+Ae(h,-l+S,!1),_="left",y="middle";break;case"middle":A=c+v*b(m),w=d+v*L(m),_="center",y="middle";break;case"endArc":A=c+(g+l)*b(m),w=d+(g+l)*L(m),_="center",y="bottom";break;case"insideEndArc":A=c+(g-l)*b(m),w=d+(g-l)*L(m),_="center",y="top";break;case"endAngle":A=c+v*b(f)+Se(f,l+S,!0),w=d+v*L(f)+Ae(f,l+S,!0),_="left",y="middle";break;case"insideEndAngle":A=c+v*b(f)+Se(f,-l+S,!0),w=d+v*L(f)+Ae(f,-l+S,!0),_="right",y="middle";break;default:return it(e,n,s)}return e=e||{},e.x=A,e.y=w,e.align=_,e.verticalAlign=y,e}}function Pr(r,a,t,e){if($e(e)){r.setTextConfig({rotation:e});return}else if(Dt(a)){r.setTextConfig({rotation:0});return}var n=r.shape,s=n.clockwise?n.startAngle:n.endAngle,i=n.clockwise?n.endAngle:n.startAngle,o=(s+i)/2,l,u=t(a);switch(u){case"startArc":case"insideStartArc":case"middle":case"insideEndArc":case"endArc":l=o;break;case"startAngle":case"insideStartAngle":l=s;break;case"endAngle":case"insideEndAngle":l=i;break;default:r.setTextConfig({rotation:0});return}var c=Math.PI*1.5-l;u==="middle"&&c>Math.PI/2&&co)return!0;o=d}return!1},a.prototype._isOrderDifferentInView=function(t,e){for(var n=e.scale,s=n.getExtent(),i=Math.max(0,s[0]),o=Math.min(s[1],n.getOrdinalMeta().categories.length-1);i<=o;++i)if(t.ordinalNumbers[i]!==n.getRawOrdinalNumber(i))return!0},a.prototype._updateSortWithinSameData=function(t,e,n,s){if(this._isOrderChangedWithinSameData(t,e,n)){var i=this._dataSort(t,n,e);this._isOrderDifferentInView(i,n)&&(this._removeOnRenderedListener(s),s.dispatchAction({type:"changeAxisOrder",componentType:n.dim+"Axis",axisId:n.index,sortInfo:i}))}},a.prototype._dispatchInitSort=function(t,e,n){var s=e.baseAxis,i=this._dataSort(t,s,function(o){return t.get(t.mapDimension(e.otherAxis.dim),o)});n.dispatchAction({type:"changeAxisOrder",componentType:s.dim+"Axis",isInitSort:!0,axisId:s.index,sortInfo:i})},a.prototype.remove=function(t,e){this._clear(this._model),this._removeOnRenderedListener(e)},a.prototype.dispose=function(t,e){this._removeOnRenderedListener(e)},a.prototype._removeOnRenderedListener=function(t){this._onRendered&&(t.getZr().off("rendered",this._onRendered),this._onRendered=null)},a.prototype._clear=function(t){var e=this.group,n=this._data;t&&t.isAnimationEnabled()&&n&&!this._isLargeDraw?(this._removeBackground(),this._backgroundEls=[],n.eachItemGraphicEl(function(s){_e(s,t,qe(s).dataIndex)})):e.removeAll(),this._data=null,this._isFirstFrame=!0},a.prototype._removeBackground=function(){this.group.remove(this._backgroundGroup),this._backgroundGroup=null},a.type=le,a})(Ct),lt={cartesian2d:function(r,a){var t=a.width<0?-1:1,e=a.height<0?-1:1;t<0&&(a.x+=a.width,a.width=-a.width),e<0&&(a.y+=a.height,a.height=-a.height);var n=r.x+r.width,s=r.y+r.height,i=Fe(a.x,r.x),o=Ue(a.x+a.width,n),l=Fe(a.y,r.y),u=Ue(a.y+a.height,s),c=on?o:i,a.y=d&&l>s?u:l,a.width=c?0:o-i,a.height=d?0:u-l,t<0&&(a.x+=a.width,a.width=-a.width),e<0&&(a.y+=a.height,a.height=-a.height),c||d},polar:function(r,a){var t=a.r0<=a.r?1:-1;if(t<0){var e=a.r;a.r=a.r0,a.r0=e}var n=Ue(a.r,r.r),s=Fe(a.r0,r.r0);a.r=n,a.r0=s;var i=n-s<0;if(t<0){var e=a.r;a.r=a.r0,a.r0=e}return i}},ct={cartesian2d:function(r,a,t,e,n,s,i,o,l){var u=new Pt({shape:q({},e),z2:1});if(u.__dataIndex=t,u.name="item",s){var c=u.shape,d=n?"height":"width";c[d]=0}return u},polar:function(r,a,t,e,n,s,i,o,l){var u=!n&&l?ot:De,c=new u({shape:e,z2:1});c.name="item";var d=Vt(n);if(c.calculateTextPosition=Cr(d,{isRoundCap:u===ot}),s){var g=c.shape,p=n?"r":"endAngle",v={};g[p]=n?e.r0:e.startAngle,v[p]=e[p],(o?re:ae)(c,{shape:v},s)}return c}};function Or(r,a){var t=r.get("realtimeSort",!0),e=a.getBaseAxis();if(t&&e.type==="category"&&a.type==="cartesian2d")return{baseAxis:e,otherAxis:a.getOtherAxis(e)}}function ut(r,a,t,e,n,s,i,o){var l,u;s?(u={x:e.x,width:e.width},l={y:e.y,height:e.height}):(u={y:e.y,height:e.height},l={x:e.x,width:e.width}),o||(i?re:ae)(t,{shape:l},a,n,null);var c=a?r.baseAxis.model:null;(i?re:ae)(t,{shape:u},c,n)}function dt(r,a){for(var t=0;t0?1:-1,i=e.height>0?1:-1;return{x:e.x+s*n/2,y:e.y+i*n/2,width:e.width-s*n,height:e.height-i*n}},polar:function(r,a,t){var e=r.getItemLayout(a);return{cx:e.cx,cy:e.cy,r0:e.r0,r:e.r,startAngle:e.startAngle,endAngle:e.endAngle,clockwise:e.clockwise}}};function Nr(r){return r.startAngle!=null&&r.endAngle!=null&&r.startAngle===r.endAngle}function Vt(r){return(function(a){var t=a?"Arc":"Angle";return function(e){switch(e){case"start":case"insideStart":case"end":case"insideEnd":return e+t;default:return e}}})(r)}function gt(r,a,t,e,n,s,i,o){var l=a.getItemVisual(t,"style");if(o){if(!s.get("roundCap")){var c=r.shape,d=ge(e.getModel("itemStyle"),c,!0);q(c,d),r.setShape(c)}}else{var u=e.get(["itemStyle","borderRadius"])||0;r.setShape("r",u)}r.useStyle(l);var g=e.getShallow("cursor");g&&r.attr("cursor",g);var p=o?i?n.r>=n.r0?"endArc":"startArc":n.endAngle>=n.startAngle?"endAngle":"startAngle":i?Wr(n,s.coordinateSystem):zr(n,s.coordinateSystem),v=Tt(e);Ot(r,v,{labelFetcher:s,labelDataIndex:t,defaultText:Ta(s.getData(),t),inheritColor:l.fill,defaultOpacity:l.opacity,defaultOutsidePosition:p});var h=r.getTextContent();if(o&&h){var f=e.get(["label","position"]);r.textConfig.inside=f==="middle"?!0:null,Pr(r,f==="outside"?p:f,Vt(i),e.get(["label","rotate"]))}Oa(h,v,s.getRawValue(t),function(S){return ka(a,S)});var m=e.getModel(["emphasis"]);kt(r,m.get("focus"),m.get("blurScope"),m.get("disabled")),Rt(r,e),Nr(n)&&(r.style.fill="none",r.style.stroke="none",$(r.states,function(S){S.style&&(S.style.fill=S.style.stroke="none")}))}function Er(r,a){var t=r.get(["itemStyle","borderColor"]);if(!t||t==="none")return 0;var e=r.get(["itemStyle","borderWidth"])||0,n=isNaN(a.width)?Number.MAX_VALUE:Math.abs(a.width),s=isNaN(a.height)?Number.MAX_VALUE:Math.abs(a.height);return Math.min(e,n,s)}var Gr=(function(){function r(){}return r})(),ft=(function(r){ne(a,r);function a(t){var e=r.call(this,t)||this;return e.type="largeBar",e}return a.prototype.getDefaultShape=function(){return new Gr},a.prototype.buildPath=function(t,e){for(var n=e.points,s=this.baseDimIdx,i=1-this.baseDimIdx,o=[],l=[],u=this.barWidth,c=0;c=0?t:null},30,!1);function Br(r,a,t){for(var e=r.baseDimIdx,n=1-e,s=r.shape.points,i=r.largeDataIndices,o=[],l=[],u=r.barWidth,c=0,d=s.length/3;c=o[0]&&a<=o[0]+l[0]&&t>=o[1]&&t<=o[1]+l[1])return i[c]}return-1}function Wt(r,a,t){if(Ra(t,"cartesian2d")){var e=a,n=t.getArea();return{x:r?e.x:n.x,y:r?n.y:e.y,width:r?e.width:n.width,height:r?n.height:e.height}}else{var n=t.getArea(),s=a;return{cx:n.cx,cy:n.cy,r0:r?n.r0:s.r0,r:r?n.r:s.r,startAngle:r?s.startAngle:0,endAngle:r?s.endAngle:Math.PI*2}}}function Vr(r,a,t){var e=r.type==="polar"?De:Pt;return new e({shape:Wt(a,t,r),silent:!0,z2:0})}function Wr(r,a){if(r.height===0){var t=a.getOtherAxis(a.getBaseAxis());return t.inverse?"bottom":"top"}return r.height>0?"bottom":"top"}function zr(r,a){if(r.width===0){var t=a.getOtherAxis(a.getBaseAxis());return t.inverse?"left":"right"}return r.width>=0?"right":"left"}function Fr(r){r.registerChartView(Tr),r.registerSeriesModel(Mr),r.registerLayout(r.PRIORITY.VISUAL.LAYOUT,_r(le)),r.registerLayout(r.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT,Lr(le)),r.registerProcessor(r.PRIORITY.PROCESSOR.STATISTIC,Ba(le)),r.registerAction({type:"changeAxisOrder",event:"changeAxisOrder",update:"update"},function(a,t){var e=a.componentType||"series";t.eachComponent({mainType:e,query:a},function(n){a.sortInfo&&n.axis.setCategorySortInfo(a.sortInfo)})}),Ir(r)}function Ur(r){return{seriesType:r,reset:function(a,t){var e=t.findComponents({mainType:"legend"});if(!(!e||!e.length)){var n=a.getData();n.filterSelf(function(s){for(var i=n.getName(s),o=0;o=0},r.prototype.indexOfName=function(a){var t=this._getDataWithEncodedVisual();return t.indexOfName(a)},r.prototype.getItemVisual=function(a,t){var e=this._getDataWithEncodedVisual();return e.getItemVisual(a,t)},r})(),K="pie",Hr=Nt(),zt=(function(r){ne(a,r);function a(){var t=r!==null&&r.apply(this,arguments)||this;return t.type=a.type,t}return a.prototype.init=function(t){r.prototype.init.apply(this,arguments),this.legendVisualProvider=new Yr(st(this.getData,this),st(this.getRawData,this)),this._defaultLabelLine(t)},a.prototype.mergeOption=function(){r.prototype.mergeOption.apply(this,arguments)},a.prototype.getInitialData=function(){return sr(this,{coordDimensions:["value"],encodeDefaulter:Va(Wa,this)})},a.prototype.getDataParams=function(t){var e=this.getData(),n=Hr(e),s=n.seats;if(!s){var i=[];e.each(e.mapDimension("value"),function(l){i.push(l)}),s=n.seats=za(i,e.hostModel.get("percentPrecision"))}var o=r.prototype.getDataParams.call(this,t);return o.percent=s[t]||0,o.$vars.push("percent"),o},a.prototype._defaultLabelLine=function(t){Fa(t,"labelLine",["show"]);var e=t.labelLine,n=t.emphasis.labelLine;e.show=e.show&&t.label.show,n.show=n.show&&t.emphasis.label.show},a.type="series."+K,a.defaultOption={z:2,legendHoverLink:!0,colorBy:"data",center:["50%","50%"],radius:[0,"50%"],clockwise:!0,startAngle:90,endAngle:"auto",padAngle:0,minAngle:0,minShowLabelAngle:0,selectedOffset:10,percentPrecision:2,stillShowZeroSum:!0,coordinateSystemUsage:"box",left:0,top:0,right:0,bottom:0,width:null,height:null,label:{rotate:0,show:!0,overflow:"truncate",position:"outer",alignTo:"none",edgeDistance:"25%",distanceToLabelLine:5},labelLine:{show:!0,length:15,length2:30,smooth:!1,minTurnAngle:90,maxSurfaceAngle:90,lineStyle:{width:1,type:"solid"}},itemStyle:{borderWidth:1,borderJoin:"round"},showEmptyCircle:!0,emptyCircleStyle:{color:"lightgray",opacity:1},labelLayout:{hideOverlap:!0},emphasis:{scale:!0,scaleSize:5},avoidLabelOverlap:!0,animationType:"expansion",animationDuration:1e3,animationTypeUpdate:"transition",animationEasingUpdate:"cubicInOut",animationDurationUpdate:500,animationEasing:"cubicInOut"},a})(Xe);Ua({fullType:zt.type,getCoord2:function(r){return r.getShallow("center")}});var Xr=Math.PI/180;function mt(r,a,t,e,n,s,i,o,l,u){if(r.length<2)return;function c(h){for(var f=h.rB,m=f*f,S=0;St?m:f,A=Math.abs(b.label.y-t);if(A>=L.maxY){var w=b.label.x-a-b.len2*n,_=e+b.len,y=Math.abs(w)<_?Math.sqrt(A*A/(1-w*w/_/_)):_;L.rB=y,L.maxY=A}L.list.push(b)}c(f),c(m)}for(var g=r.length,p=0;pr.unconstrainedWidth?null:g:null;e.setStyle("width",p)}Ut(s,e)}}}function Ut(r,a){bt.rect=r,Ha(bt,a,qr)}var qr={minMarginForce:[null,0,null,0],marginDefault:[1,0,1,0]},bt={};function Ye(r){return r.position==="center"}function jr(r){var a=r.getData(),t=[],e,n,s=!1,i=(r.get("minShowLabelAngle")||0)*Xr,o=a.getLayout("viewRect"),l=a.getLayout("r"),u=o.width,c=o.x,d=o.y,g=o.height;function p(w){w.ignore=!0}function v(w){if(!w.ignore)return!0;for(var _ in w.states)if(w.states[_].ignore===!1)return!0;return!1}a.each(function(w){var _=a.getItemGraphicEl(w),y=_.shape,C=_.getTextContent(),V=_.getTextGuideLine(),I=a.getItemModel(w),T=I.getModel("label"),M=T.get("position")||I.get(["emphasis","label","position"]),O=T.get("distanceToLabelLine"),P=T.get("alignTo"),N=Q(T.get("edgeDistance"),u),W=T.get("bleedMargin");W==null&&(W=Math.min(u,g)>200?10:2);var D=I.getModel("labelLine"),k=D.get("length");k=Q(k,u);var R=D.get("length2");if(R=Q(R,u),Math.abs(y.endAngle-y.startAngle)0?"right":"left":G>0?"left":"right"}var ue=Math.PI,se=0,ee=T.get("rotate");if($e(ee))se=ee*(ue/180);else if(M==="center")se=0;else if(ee==="radial"||ee===!0){var Ht=G<0?-E+ue:-E;se=Ht}else if(ee==="tangential"||ee==="tangential-noflip"&&M!=="outside"&&M!=="outer"){var oe=Math.atan2(G,J);oe<0&&(oe=ue*2+oe);var Xt=J>0;Xt&&ee!=="tangential-noflip"&&(oe=ue+oe),se=oe-ue}if(s=!!se,C.x=ce,C.y=he,C.rotation=se,C.setStyle({verticalAlign:"middle"}),ie){C.setStyle({align:pe});var Te=C.states.select;Te&&(Te.x+=C.x,Te.y+=C.y)}else{var Pe=new Ya(0,0,0,0);Ut(Pe,C),t.push({label:C,labelLine:V,position:M,len:k,len2:R,minTurnAngle:D.get("minTurnAngle"),maxSurfaceAngle:D.get("maxSurfaceAngle"),surfaceNormal:new F(G,J),linePoints:je,textAlign:pe,labelDistance:O,labelAlignTo:P,edgeDistance:N,bleedMargin:W,rect:Pe,unconstrainedWidth:Pe.width,labelStyleWidth:C.style.width})}_.setTextConfig({inside:ie})}}),!s&&r.get("avoidLabelOverlap")&&$r(t,e,n,l,u,g,c,d);for(var h=0;hD?(R=O+_*D/2,E=R):(R=O+C,E=k-C),e.setItemLayout(W,{angle:D,startAngle:R,endAngle:E,clockwise:b,cx:i,cy:o,r0:u,r:L?Za(N,w,[u,l]):l}),O=k}),T0){for(var c=i.getItemLayout(0),d=1;isNaN(c&&c.startAngle)&&d=s.r0}},a.type=K,a})(Ct);function en(r){return{seriesType:r,reset:function(a,t){var e=a.getData();e.filterSelf(function(n){var s=e.mapDimension("value"),i=e.get(s,n);return!($e(i)&&!isNaN(i)&&i<0)})}}}function tn(r){r.registerChartView(Jr),r.registerSeriesModel(zt),er(K,r.registerAction),r.registerLayout(Zr),r.registerProcessor(Ur(K)),r.registerProcessor(en(K))}tr([ar,Fr,tn,rr,nr,ir]);const an={class:"dashboard-view"},rn={class:"dashboard-middle"},nn={class:"chart-section","aria-labelledby":"chart-title"},sn={class:"section-heading-row"},on={class:"service-section","aria-labelledby":"service-title"},ln={class:"service-table",role:"table","aria-label":"服务状态"},cn={class:"service-name",role:"cell"},un={role:"cell"},dn={class:"instance-count",role:"cell"},vn={class:"user-stats-row"},gn={class:"stat-card","aria-labelledby":"op-dist-title"},fn={class:"chart-container"},hn={class:"stat-card","aria-labelledby":"login-dur-title"},pn={class:"stat-card","aria-labelledby":"recent-login-title"},mn={class:"list-container"},bn={class:"user-info"},yn={class:"user-meta"},Sn={class:"username"},An={class:"login-time"},xn={class:"tasks-section","aria-labelledby":"tasks-title"},wn={class:"section-heading-row tasks-heading"},_n={class:"tasks-table-wrap"},Ln={class:"tasks-table"},Dn={class:"task-name"},In={class:"progress-cell"},Mn={class:"numeric-value"},Cn=Jt({__name:"DashboardView",setup(r){const a=aa(),t=ta("7d"),e=[{name:"模型推理",icon:"fa-cube",state:"normal",instances:"6 / 6"},{name:"模型微调",icon:"fa-sliders",state:"busy",instances:"4 / 6"},{name:"模型评测",icon:"fa-bar-chart",state:"normal",instances:"3 / 3"},{name:"数据处理",icon:"fa-filter",state:"error",instances:"1 / 3"}],n=[{id:103942,name:"finance-sft-003",state:"running",trainType:"SFT",trainMethod:"LoRA",baseModel:"Qwen2.5-7B-Instruct",progress:68,accuracy:89.2,startedAt:"今天 09:18"},{id:593021,name:"legal-eval-008",state:"pending",trainType:"DPO",trainMethod:"LoRA",baseModel:"Qwen2.5-7B-Instruct",progress:0,accuracy:null,startedAt:"今天 08:55"},{id:849301,name:"medical-cpt-002",state:"completed",trainType:"CPT",trainMethod:"Full",baseModel:"Qwen2.5-14B-Instruct",progress:100,accuracy:91.6,startedAt:"07/10 16:20"},{id:201948,name:"finance-sft-002",state:"failed",trainType:"SFT",trainMethod:"LoRA",baseModel:"Qwen2.5-7B-Instruct",progress:42,accuracy:null,startedAt:"07/10 11:08"}],s={normal:{label:"正常",className:"is-normal"},busy:{label:"繁忙",className:"is-busy"},error:{label:"异常",className:"is-error"}},i={running:{label:"训练中",className:"is-running"},pending:{label:"等待中",className:"is-pending"},completed:{label:"已完成",className:"is-completed"},failed:{label:"训练失败",className:"is-failed"}},o={running:"#4f46e5",pending:"#cbd5e1",completed:"#10b981",failed:"#ef4444"},l=Ne(()=>({animationDuration:500,color:["#4f46e5","#10b981","#f59e0b"],grid:{top:50,right:50,bottom:38,left:46,containLabel:!1},legend:{top:4,left:0,itemWidth:12,itemHeight:12,itemGap:22,textStyle:{color:"#64748b",fontSize:11}},tooltip:{trigger:"axis",axisPointer:{type:"shadow"},backgroundColor:"rgba(15, 23, 42, 0.92)",borderWidth:0,padding:[10,12],textStyle:{color:"#ffffff",fontSize:12},valueFormatter:f=>`${f}`},xAxis:{type:"category",data:["07/05","07/06","07/07","07/08","07/09","07/10",`07/11 +今天`],axisLine:{lineStyle:{color:"#e2e8f0"}},axisTick:{show:!1},axisLabel:{color:"#64748b",fontSize:11,lineHeight:16,margin:12}},yAxis:[{type:"value",name:"次数 / GPU 数",min:0,max:20,interval:5,nameTextStyle:{color:"#64748b",fontSize:11,align:"left"},axisLabel:{color:"#64748b",fontSize:11},axisLine:{show:!1},axisTick:{show:!1},splitLine:{lineStyle:{color:"#eef2f7"}}},{type:"value",name:"准确率",min:0,max:100,interval:25,nameTextStyle:{color:"#64748b",fontSize:11,align:"right"},axisLabel:{color:"#64748b",fontSize:11,formatter:"{value}%"},axisLine:{show:!1},axisTick:{show:!1},splitLine:{show:!1}}],series:[{name:"训练次数(次)",type:"bar",data:[8,12,10,15,13,18,11],barMaxWidth:16,itemStyle:{borderRadius:[3,3,0,0]},label:{show:!0,position:"top",color:"#64748b",fontSize:10}},{name:"GPU 使用数(个)",type:"bar",data:[3,4,4,6,5,7,5],barMaxWidth:16,itemStyle:{borderRadius:[3,3,0,0]},label:{show:!0,position:"top",color:"#64748b",fontSize:10}},{name:"平均准确率(%)",type:"bar",yAxisIndex:1,data:[82,85,84,88,87,91,89],barMaxWidth:16,itemStyle:{borderRadius:[3,3,0,0]},label:{show:!0,position:"top",color:"#d97706",fontSize:10}}]})),u=Ne(()=>({animationDuration:500,tooltip:{trigger:"item"},color:["#4f46e5","#10b981","#f59e0b","#3b82f6","#ec4899"],series:[{name:"操作分类",type:"pie",radius:["40%","64%"],center:["50%","50%"],avoidLabelOverlap:!0,itemStyle:{borderRadius:6,borderColor:"#fff",borderWidth:2},label:{show:!0,position:"outside",formatter:"{b}",color:"#475569",fontSize:11,lineHeight:16,width:70,overflow:"truncate"},emphasis:{label:{show:!0,fontSize:12,fontWeight:"bold",color:"#1e293b"}},labelLine:{show:!0,length:10,length2:8,lineStyle:{color:"#94a3b8",width:1}},data:[{value:1048,name:"模型训练"},{value:735,name:"数据处理"},{value:580,name:"模型评测"},{value:484,name:"模型推理"},{value:300,name:"系统设置"}]}]})),c=[{id:1,username:"admin",duration:124},{id:2,username:"zhangsan",duration:86},{id:3,username:"lisi",duration:42},{id:4,username:"wangwu",duration:18}],d=Ne(()=>({animationDuration:500,grid:{top:8,right:12,bottom:6,left:8,containLabel:!0},tooltip:{trigger:"axis",axisPointer:{type:"shadow"},valueFormatter:f=>`${f} 小时`},xAxis:{type:"value",max:Math.ceil(Math.max(...c.map(f=>f.duration))*1.15/10)*10,splitNumber:4,axisLabel:{color:"#94a3b8",fontSize:11,formatter:"{value}h"},axisLine:{show:!1},axisTick:{show:!1},splitLine:{lineStyle:{color:"#eef2f7"}}},yAxis:{type:"category",inverse:!0,data:c.map(f=>f.username),axisLabel:{color:"#475569",fontSize:12},axisLine:{show:!1},axisTick:{show:!1}},series:[{name:"登录时长",type:"bar",data:c.map(f=>f.duration),barMaxWidth:18,barCategoryGap:"34%",itemStyle:{color:"#4f46e5",borderRadius:[0,4,4,0]},label:{show:!0,position:"insideRight",distance:6,color:"#ffffff",fontSize:11,formatter:"{c} 小时"}}]})),g=[{id:1,username:"admin",role:"超级管理员",lastLogin:"10 分钟前"},{id:2,username:"zhangsan",role:"操作员",lastLogin:"2 小时前"},{id:5,username:"zhaoliu",role:"观察员",lastLogin:"5 小时前"},{id:3,username:"lisi",role:"操作员",lastLogin:"昨天 15:30"}],p={超级管理员:"danger",操作员:"primary",观察员:"info"};function v(){a.push("/fine-tune")}function h(f){a.push(`/training-log/${f.id}`)}return(f,m)=>{const S=Qt,b=Zt,L=$t,A=jt,w=qt,_=Kt;return be(),me("div",an,[m[11]||(m[11]=ea('

平台运行状态

整体运行正常

平台运行良好,各项服务稳定

在线服务12全部在线
运行中任务5较昨日 +1
待处理告警2较昨日 -1
',1)),x("div",rn,[x("section",nn,[x("div",sn,[m[1]||(m[1]=x("h2",{id:"chart-title",class:"section-title"},"近 7 天训练统计",-1)),H(b,{modelValue:t.value,"onUpdate:modelValue":m[0]||(m[0]=y=>t.value=y),class:"period-select","aria-label":"统计周期"},{default:de(()=>[H(S,{label:"近7天",value:"7d"})]),_:1},8,["modelValue"])]),H(Oe(We),{class:"training-chart",option:l.value,autoresize:""},null,8,["option"])]),x("section",on,[m[3]||(m[3]=x("h2",{id:"service-title",class:"section-title"},"服务状态",-1)),x("div",ln,[m[2]||(m[2]=x("div",{class:"service-row service-header",role:"row"},[x("span",{role:"columnheader"},"服务名称"),x("span",{role:"columnheader"},"状态"),x("span",{role:"columnheader"},"实例数")],-1)),(be(),me(ke,null,Re(e,y=>x("div",{key:y.name,class:"service-row",role:"row"},[x("span",cn,[x("i",{class:Ee(["fa",y.icon]),"aria-hidden":"true"},null,2),ve(" "+U(y.name),1)]),x("span",un,[x("span",{class:Ee(["state-pill",s[y.state].className])},U(s[y.state].label),3)]),x("span",dn,U(y.instances),1)])),64))])])]),x("div",vn,[x("section",gn,[m[4]||(m[4]=x("h2",{id:"op-dist-title",class:"section-title"},"用户操作分布",-1)),x("div",fn,[H(Oe(We),{class:"pie-chart",option:u.value,autoresize:""},null,8,["option"])])]),x("section",hn,[m[5]||(m[5]=x("h2",{id:"login-dur-title",class:"section-title"},"登录时长排行 (本月)",-1)),H(Oe(We),{class:"duration-chart",option:d.value,autoresize:""},null,8,["option"])]),x("section",pn,[m[6]||(m[6]=x("h2",{id:"recent-login-title",class:"section-title"},"最近登录用户",-1)),x("div",mn,[(be(),me(ke,null,Re(g,y=>x("div",{key:y.id,class:"list-item recent-user-item"},[x("div",bn,[H(L,{size:32,class:"user-avatar",style:{backgroundColor:"#e2e8f0",color:"#475569"}},{default:de(()=>[ve(U(y.username.slice(0,1).toUpperCase()),1)]),_:2},1024),x("div",yn,[x("span",Sn,U(y.username),1),x("span",An,U(y.lastLogin),1)])]),H(A,{type:p[y.role],size:"small"},{default:de(()=>[ve(U(y.role),1)]),_:2},1032,["type"])])),64))])])]),x("section",xn,[x("div",wn,[m[8]||(m[8]=x("h2",{id:"tasks-title",class:"section-title"},"训练任务",-1)),H(w,{link:"",type:"primary",onClick:v},{default:de(()=>[...m[7]||(m[7]=[ve("查看全部任务",-1)])]),_:1})]),x("div",_n,[x("table",Ln,[m[10]||(m[10]=x("thead",null,[x("tr",null,[x("th",null,"任务名称"),x("th",null,"任务状态"),x("th",null,"训练方式"),x("th",null,"基座模型"),x("th",null,"训练进度"),x("th",null,"准确率"),x("th",null,"开始时间"),x("th",null,"操作")])],-1)),x("tbody",null,[(be(),me(ke,null,Re(n,y=>x("tr",{key:y.id},[x("td",Dn,U(y.name),1),x("td",null,[x("span",{class:Ee(["task-state",i[y.state].className])},U(i[y.state].label),3)]),x("td",null,U(y.trainType)+" / "+U(y.trainMethod),1),x("td",null,U(y.baseModel),1),x("td",null,[x("div",In,[H(_,{percentage:y.progress,"stroke-width":6,"show-text":!1,color:o[y.state]},null,8,["percentage","color"]),x("span",null,U(y.progress)+"%",1)])]),x("td",Mn,U(y.accuracy==null?"--":`${y.accuracy}%`),1),x("td",null,U(y.startedAt),1),x("td",null,[H(w,{link:"",type:"primary",onClick:C=>h(y)},{default:de(()=>[...m[9]||(m[9]=[ve("查看详情",-1)])]),_:1},8,["onClick"])])])),64))])])])])])}}}),Jn=or(Cn,[["__scopeId","data-v-30eaacb6"]]);export{Jn as default}; diff --git a/frontend/dist/assets/DataConvertView-DJuX-JIl.css b/frontend/dist/assets/DataConvertView-DJuX-JIl.css new file mode 100644 index 0000000..61a0394 --- /dev/null +++ b/frontend/dist/assets/DataConvertView-DJuX-JIl.css @@ -0,0 +1 @@ +.converter-panel[data-v-fcb69543]{width:100%;min-height:calc(100vh - 220px);border:1px solid #e4e7ed;border-radius:8px;background:#fff;display:flex;flex-direction:column}.panel-header[data-v-fcb69543]{min-height:72px;padding:16px 20px;border-bottom:1px solid #ebeef5;background:#fafafa;display:flex;align-items:center;gap:12px;box-sizing:border-box}.panel-header .tool-icon[data-v-fcb69543]{width:38px;height:38px;flex:0 0 auto;border-radius:6px;background:var(--el-color-primary-light-9);color:var(--primary-color);display:flex;align-items:center;justify-content:center}.panel-header h3[data-v-fcb69543]{margin:0;color:#303133;font-size:15px;font-weight:600}.panel-header p[data-v-fcb69543]{margin:4px 0 0;color:#909399;font-size:12px}.converter-form[data-v-fcb69543]{flex:1;padding:22px 24px 6px}.converter-form[data-v-fcb69543] .el-form-item{margin-bottom:20px}.converter-form[data-v-fcb69543] .el-form-item__label{padding-bottom:8px;color:#606266;font-size:13px}.format-field[data-v-fcb69543]{width:100%;min-height:40px;padding:0 14px;border:1px solid #dcdfe6;border-radius:4px;background:#f5f7fa;color:#303133;display:flex;align-items:center;gap:14px;box-sizing:border-box;font-size:13px;font-weight:500}.format-field i[data-v-fcb69543]{color:#909399}.upload-zone[data-v-fcb69543]{width:100%;min-height:112px;padding:20px;border:1px dashed #b8c4d1;border-radius:6px;background:#fafcff;color:#606266;cursor:pointer;font:inherit;display:flex;align-items:center;gap:14px;text-align:left;transition:border-color .2s ease,background .2s ease}.upload-zone[data-v-fcb69543]:hover,.upload-zone[data-v-fcb69543]:focus-visible{border-color:var(--primary-color);background:var(--el-color-primary-light-9);outline:none}.upload-zone>i[data-v-fcb69543]{color:var(--primary-color);font-size:24px}.upload-zone .upload-content[data-v-fcb69543]{min-width:0;display:flex;flex:1;flex-direction:column;gap:5px}.upload-zone strong[data-v-fcb69543]{color:#303133;font-size:13px;font-weight:500}.upload-zone small[data-v-fcb69543]{color:#909399;font-size:12px}.upload-zone .select-button[data-v-fcb69543]{min-height:32px;padding:0 14px;border:1px solid #dcdfe6;border-radius:4px;background:#fff;color:#606266;display:inline-flex;align-items:center;white-space:nowrap}.form-row[data-v-fcb69543]{display:grid;grid-template-columns:minmax(0,2fr) minmax(180px,1fr);gap:16px}.format-tip[data-v-fcb69543]{min-height:38px;padding:9px 12px;border-radius:4px;background:var(--el-color-primary-light-9);color:#606266;display:flex;align-items:center;gap:8px;box-sizing:border-box;font-size:12px}.format-tip i[data-v-fcb69543]{color:var(--primary-color)}.panel-footer[data-v-fcb69543]{min-height:64px;padding:12px 24px;border-top:1px solid #ebeef5;background:#fafafa;display:flex;align-items:center;justify-content:space-between;gap:20px;box-sizing:border-box}.panel-footer .prototype-label[data-v-fcb69543]{color:#909399;font-size:12px}.panel-footer .actions[data-v-fcb69543]{display:flex;gap:10px}@media(max-width:640px){.converter-form[data-v-fcb69543]{padding:18px 16px 4px}.form-row[data-v-fcb69543]{grid-template-columns:1fr;gap:0}.upload-zone[data-v-fcb69543]{align-items:flex-start;flex-wrap:wrap}.upload-zone .select-button[data-v-fcb69543]{margin-left:38px}.panel-footer[data-v-fcb69543]{padding:12px 16px;align-items:flex-end;flex-direction:column}} diff --git a/frontend/dist/assets/DataConvertView-DYHO4l1y.js b/frontend/dist/assets/DataConvertView-DYHO4l1y.js new file mode 100644 index 0000000..05b81f7 --- /dev/null +++ b/frontend/dist/assets/DataConvertView-DYHO4l1y.js @@ -0,0 +1 @@ +import{a as N,E as v}from"./el-form-item-D5kF3B90.js";import{E as b}from"./el-popper-D6_hxRbQ.js";import{E as O}from"./index-TFUf94PZ.js";import{E as S}from"./index-BjEW7-SA.js";import{E as g,a as E}from"./el-select-Dl-FRZQd.js";import{d as J,e as V,w as e,o as w,q as t,s as l,x as i,z as x,A as C}from"./index-BKKvzUDD.js";import"./el-tooltip-l0sNRNKZ.js";import"./el-scrollbar-ClJnvz-9.js";/* empty css */import{P as U}from"./PageCard-BoKXOzst.js";import{_ as y}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./castArray-5uErZEc3.js";import"./_baseClone-B5RBzbh5.js";import"./index-GAnQrJsQ.js";import"./index-CWUnzf90.js";import"./raf-C-x62Pcl.js";import"./index-DLzof2Fz.js";import"./vnode-78qeDweP.js";import"./index-D5ryD3I5.js";import"./index-BDEF353-.js";import"./scroll-BkzZKETR.js";import"./clamp-CbbY8h6F.js";import"./toNumber-Dkj3QRv9.js";import"./_baseIteratee-BAilevJ_.js";import"./el-card-CApHJ1Gj.js";const F={class:"converter-panel"},L={class:"form-row"},T={class:"panel-footer"},B={class:"actions"},k=J({__name:"DataConvertView",setup(I){const a=x({outputName:"converted-data",encoding:"UTF-8"});function p(){C.info("当前仅完成界面设计,转换功能将在后续接入")}function d(){Object.assign(a,{outputName:"converted-data",encoding:"UTF-8"})}return(j,o)=>{const n=N,m=O,u=E,f=g,c=v,r=S,_=b;return w(),V(U,{class:"data-convert-page",title:"数据类型转换",subtitle:"将 JSON 文件转换为便于训练和评测使用的 JSONL 格式"},{default:e(()=>[t("div",F,[o[9]||(o[9]=t("div",{class:"panel-header"},[t("div",{class:"tool-icon","aria-hidden":"true"},[t("i",{class:"fa fa-exchange"})]),t("div",null,[t("h3",null,"JSON 转 JSONL"),t("p",null,"每条 JSON 数据将输出为 JSONL 文件中的一行记录")])],-1)),l(c,{class:"converter-form","label-position":"top"},{default:e(()=>[l(n,{label:"转换类型"},{default:e(()=>[...o[2]||(o[2]=[t("div",{class:"format-field","aria-label":"JSON 转 JSONL"},[t("span",null,"JSON"),t("i",{class:"fa fa-long-arrow-right","aria-hidden":"true"}),t("span",null,"JSONL")],-1)])]),_:1}),l(n,{label:"源文件",required:""},{default:e(()=>[t("button",{class:"upload-zone",type:"button",onClick:p},[...o[3]||(o[3]=[t("i",{class:"fa fa-cloud-upload","aria-hidden":"true"},null,-1),t("span",{class:"upload-content"},[t("strong",null,"点击选择或拖拽 JSON 文件到此处"),t("small",null,"仅支持 .json 格式,单文件不超过 200 MB")],-1),t("span",{class:"select-button"},"选择文件",-1)])])]),_:1}),t("div",L,[l(n,{label:"输出文件名"},{default:e(()=>[l(m,{modelValue:a.outputName,"onUpdate:modelValue":o[0]||(o[0]=s=>a.outputName=s)},{append:e(()=>[...o[4]||(o[4]=[i(".jsonl",-1)])]),_:1},8,["modelValue"])]),_:1}),l(n,{label:"字符编码"},{default:e(()=>[l(f,{modelValue:a.encoding,"onUpdate:modelValue":o[1]||(o[1]=s=>a.encoding=s),style:{width:"100%"}},{default:e(()=>[l(u,{label:"UTF-8",value:"UTF-8"})]),_:1},8,["modelValue"])]),_:1})]),o[5]||(o[5]=t("div",{class:"format-tip"},[t("i",{class:"fa fa-info-circle","aria-hidden":"true"}),t("span",null,"支持由 JSON 数组转换为 JSONL,每个数组元素输出为一行。")],-1))]),_:1}),t("div",T,[o[8]||(o[8]=t("span",{class:"prototype-label"},"当前为 UI 原型,暂不执行实际转换",-1)),t("div",B,[l(r,{onClick:d},{default:e(()=>[...o[6]||(o[6]=[i("重置",-1)])]),_:1}),l(_,{content:"转换功能将在后续开发中接入",placement:"top"},{default:e(()=>[t("span",null,[l(r,{type:"primary",disabled:""},{default:e(()=>[...o[7]||(o[7]=[i("开始转换",-1)])]),_:1})])]),_:1})])])])]),_:1})}}}),rt=y(k,[["__scopeId","data-v-fcb69543"]]);export{rt as default}; diff --git a/frontend/dist/assets/DataProcessCreateView-BEQjbuB9.js b/frontend/dist/assets/DataProcessCreateView-BEQjbuB9.js new file mode 100644 index 0000000..ab42eb7 --- /dev/null +++ b/frontend/dist/assets/DataProcessCreateView-BEQjbuB9.js @@ -0,0 +1,12 @@ +import{E as ye}from"./index-BjEW7-SA.js";import{d as X,o as g,c as w,q as e,s as k,n as J,aa as C,g as D,j as U,x as L,w as M,M as B,ad as Z,e as z,A,y as V,D as te,t as Re,aL as Me,P as Te,z as Ie,ag as _t,aQ as Et,H as Pt,G as Ut,f as ne,aB as Lt,v as Vt}from"./index-BKKvzUDD.js";import{A as Rt}from"./AppConfirmDialog-g7rxg-F7.js";import{E as ze,a as Ne}from"./el-form-item-D5kF3B90.js";import{E as de}from"./index-TFUf94PZ.js";import{a as Ae,E as Se}from"./el-checkbox-qGZ2-RM2.js";import{E as ke}from"./el-input-number-BFR4pu1i.js";/* empty css */import{_ as Y}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{E as be,a as we}from"./el-select-Dl-FRZQd.js";import{E as Ft}from"./el-slider-DYENF1-i.js";import{E as Dt}from"./el-switch-DbCDiaMc.js";import"./el-popper-D6_hxRbQ.js";import"./el-tooltip-l0sNRNKZ.js";import"./el-scrollbar-ClJnvz-9.js";/* empty css */import{E as Be}from"./el-pagination-DOPYW-qb.js";import{E as qt}from"./el-upload-BtHzuyZ5.js";import{E as zt}from"./el-progress-DuOxpLST.js";import{u as Nt}from"./models-DQoXB8yB.js";import"./castArray-5uErZEc3.js";import"./_baseClone-B5RBzbh5.js";import"./raf-C-x62Pcl.js";import"./index-DLzof2Fz.js";import"./index-GAnQrJsQ.js";import"./omit-BTSq4AYh.js";import"./index-BENk7lZo.js";import"./index-CWUnzf90.js";import"./vnode-78qeDweP.js";import"./index-D5ryD3I5.js";import"./index-BDEF353-.js";import"./scroll-BkzZKETR.js";import"./clamp-CbbY8h6F.js";import"./toNumber-Dkj3QRv9.js";import"./_baseIteratee-BAilevJ_.js";import"./debounce-ByXPNh5F.js";import"./validator-Fn0bm4xU.js";import"./model-gCK34aBo.js";const At={class:"generation-option-row dataset-split-row"},Bt={class:"dataset-split-config"},jt={class:"dataset-split-grid"},Gt={class:"dataset-split-field"},Qt={class:"dataset-split-input"},Jt={class:"dataset-split-field"},Ht={class:"dataset-split-input"},Kt={class:"dataset-split-field"},Zt={class:"dataset-split-input"},Wt={key:0,role:"alert"},Xt=X({__name:"DatasetSplitEditor",props:{modelValue:{},ariaLabelPrefix:{default:""}},emits:["update:modelValue"],setup(t,{emit:l}){const o=t,n=l,s=U(()=>{const{train:S,validation:u,test:a}=o.modelValue;return S+u+a});function d(S,u){n("update:modelValue",{...o.modelValue,[S]:Math.min(100,Math.max(0,Number(u)||0))})}function r(S){return`${o.ariaLabelPrefix}${S}比例`}return(S,u)=>{const a=ke;return g(),w("div",At,[u[9]||(u[9]=e("div",{class:"generation-option-copy"},[e("strong",null,"数据集划分"),e("small",null,"按比例将生成后的问答对随机划分为训练集、验证集和测试集")],-1)),e("div",Bt,[e("div",jt,[e("label",Gt,[u[4]||(u[4]=e("span",null,"训练集",-1)),e("span",Qt,[k(a,{"model-value":t.modelValue.train,min:0,max:100,step:1,precision:0,"controls-position":"right","aria-label":r("训练集"),"onUpdate:modelValue":u[0]||(u[0]=h=>d("train",h))},null,8,["model-value","aria-label"]),u[3]||(u[3]=e("span",null,"%",-1))])]),e("label",Jt,[u[6]||(u[6]=e("span",null,"验证集",-1)),e("span",Ht,[k(a,{"model-value":t.modelValue.validation,min:0,max:100,step:1,precision:0,"controls-position":"right","aria-label":r("验证集"),"onUpdate:modelValue":u[1]||(u[1]=h=>d("validation",h))},null,8,["model-value","aria-label"]),u[5]||(u[5]=e("span",null,"%",-1))])]),e("label",Kt,[u[8]||(u[8]=e("span",null,"测试集",-1)),e("span",Zt,[k(a,{"model-value":t.modelValue.test,min:0,max:100,step:1,precision:0,"controls-position":"right","aria-label":r("测试集"),"onUpdate:modelValue":u[2]||(u[2]=h=>d("test",h))},null,8,["model-value","aria-label"]),u[7]||(u[7]=e("span",null,"%",-1))])])]),e("div",{class:J(["dataset-split-summary",{"is-invalid":s.value!==100}])},[e("span",null,"总计 "+C(s.value)+"%",1),s.value!==100?(g(),w("span",Wt," 训练集、验证集和测试集比例总和必须为 100% ")):D("",!0)],2)])])}}}),je=Y(Xt,[["__scopeId","data-v-8ab33ca4"]]),Yt={key:0,class:"generation-config-group model-config-group"},en={class:"model-field"},tn={class:"model-option"},nn={class:"model-field"},ln={class:"advanced-settings-grid"},sn={class:"config-field"},on={class:"config-field"},an={class:"unit-input"},un={class:"json-mode-row"},rn={key:0,class:"generation-validation-message",role:"alert"},dn={key:1,class:"generation-config-group quality-config-group"},cn={class:"quality-switch-row"},pn={key:0,class:"quality-rule-panel"},mn={key:0,class:"minimum-length-field"},vn={class:"minimum-length-input"},fn={key:1,class:"quality-rule-warning",role:"alert"},gn={key:1,class:"generation-validation-message",role:"alert"},yn=X({__name:"GenerationOptionsPanel",props:{options:{},models:{},section:{},validationMessage:{}},emits:["update:options"],setup(t,{emit:l}){const o=t,n=l;function s(u,a){n("update:options",{...o.options,[u]:a})}function d(u){const a=u.filter(h=>typeof h=="string");n("update:options",{...o.options,filterLowQuality:a.includes("low_quality"),filterShortContent:a.includes("short_content")})}const r=()=>[o.options.filterLowQuality?"low_quality":"",o.options.filterShortContent?"short_content":""].filter(Boolean);function S(){if(!o.validationMessage)return"";const u=o.validationMessage.includes("数据生成模型");return o.section==="model"?u?o.validationMessage:"":u?"":o.validationMessage}return(u,a)=>{const h=we,c=be,p=de,i=Ft,P=ke,$=Dt,b=Se,x=Ae;return t.section==="model"?(g(),w("div",Yt,[e("div",en,[a[8]||(a[8]=e("div",{class:"field-copy"},[e("strong",null,[L("数据生成模型 "),e("em",null,"*")]),e("small",null,"选择负责生成问答、指令或结构化内容的大模型")],-1)),k(c,{class:"model-select","model-value":t.options.generationModelId,filterable:"",placeholder:"请选择用于生成数据的模型","aria-label":"数据生成模型","onUpdate:modelValue":a[0]||(a[0]=O=>s("generationModelId",O))},{empty:M(()=>[...a[7]||(a[7]=[e("div",{class:"model-empty"},"暂无可用的大模型,请先在模型管理中添加",-1)])]),default:M(()=>[(g(!0),w(B,null,Z(t.models||[],O=>(g(),z(h,{key:O.id,label:O.name,value:O.id},{default:M(()=>[e("div",tn,[e("span",null,C(O.name),1),e("small",null,C(O.model_source==="api"?"在线模型":"本地模型"),1)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["model-value"])]),e("div",nn,[a[9]||(a[9]=e("div",{class:"field-copy"},[e("strong",null,"默认提示语"),e("small",null,"用于约束生成内容的格式、语气和完整性,可按任务需要修改")],-1)),k(p,{class:"prompt-input","model-value":t.options.generationPrompt,type:"textarea",rows:4,maxlength:"500","show-word-limit":"",resize:"vertical",placeholder:"请输入模型生成内容时需要遵循的要求","aria-label":"模型默认提示语","onUpdate:modelValue":a[1]||(a[1]=O=>s("generationPrompt",O))},null,8,["model-value"]),a[10]||(a[10]=e("div",{class:"prompt-variables-hint"},[L(" 提示:可在文本中通过 "),e("code",{textContent:"{{ content }}"}),L(" 引用当前正在处理的数据内容。 ")],-1))]),e("div",ln,[e("label",sn,[a[11]||(a[11]=e("span",{class:"config-field-label"},"生成温度 (Temperature)",-1)),k(i,{"model-value":t.options.temperature,min:0,max:1,step:.1,"show-input":"","onUpdate:modelValue":a[2]||(a[2]=O=>s("temperature",Number(O)||0))},null,8,["model-value"]),a[12]||(a[12]=e("small",null,"较低值输出更确定、保守,较高值输出更多样、有创造性",-1))]),e("label",on,[a[14]||(a[14]=e("span",{class:"config-field-label"},"最大输出长度 (Max Tokens)",-1)),e("span",an,[k(P,{"model-value":t.options.maxTokens,min:100,max:8192,step:256,"controls-position":"right","onUpdate:modelValue":a[3]||(a[3]=O=>s("maxTokens",Number(O)||1024))},null,8,["model-value"]),a[13]||(a[13]=e("span",null,"Token",-1))]),a[15]||(a[15]=e("small",null,"限制单次生成的最大内容长度,防止过度发散",-1))])]),e("div",un,[a[16]||(a[16]=e("div",{class:"field-copy"},[e("strong",null,"强制 JSON 格式输出"),e("small",null,"要求大模型返回纯 JSON 对象,有助于提高下游结构化提取的稳定性")],-1)),k($,{"model-value":t.options.jsonMode,"inline-prompt":"","active-text":"开","inactive-text":"关","onUpdate:modelValue":a[4]||(a[4]=O=>s("jsonMode",!!O))},null,8,["model-value"])]),S()?(g(),w("p",rn,C(S()),1)):D("",!0)])):(g(),w("div",dn,[e("div",cn,[a[17]||(a[17]=e("div",{class:"config-group-heading"},[e("div",null,[e("h4",null,"质量筛选"),e("p",null,"生成后自动过滤不符合要求的内容,不影响源数据预处理")])],-1)),k($,{"model-value":t.options.qualityFilterEnabled,"inline-prompt":"","active-text":"开","inactive-text":"关","aria-label":"质量筛选","onUpdate:modelValue":a[5]||(a[5]=O=>s("qualityFilterEnabled",!!O))},null,8,["model-value"])]),t.options.qualityFilterEnabled?(g(),w("div",pn,[k(x,{"model-value":r(),class:"quality-rule-list","onUpdate:modelValue":d},{default:M(()=>[k(b,{value:"low_quality"},{default:M(()=>[...a[18]||(a[18]=[e("span",{class:"rule-copy"},[e("strong",null,"过滤低质量内容"),e("small",null,"按相关性、完整性和可读性过滤明显不合格的生成结果")],-1)])]),_:1}),k(b,{value:"short_content"},{default:M(()=>[...a[19]||(a[19]=[e("span",{class:"rule-copy"},[e("strong",null,"过滤过短内容"),e("small",null,"过滤正文长度低于指定字数的生成结果")],-1)])]),_:1})]),_:1},8,["model-value"]),t.options.filterShortContent?(g(),w("label",mn,[a[21]||(a[21]=e("span",null,"最少字数",-1)),e("span",vn,[k(P,{"model-value":t.options.minOutputLength,min:1,max:1e3,step:5,precision:0,"controls-position":"right","aria-label":"生成内容最少字数","onUpdate:modelValue":a[6]||(a[6]=O=>s("minOutputLength",Number(O)||1))},null,8,["model-value"]),a[20]||(a[20]=e("span",null,"字",-1))]),a[22]||(a[22]=e("small",null,"少于该字数的生成结果将被过滤",-1))])):D("",!0),!t.options.filterLowQuality&&!t.options.filterShortContent?(g(),w("p",fn," 请至少选择一项质量筛选规则 ")):D("",!0)])):D("",!0),S()?(g(),w("p",gn,C(S()),1)):D("",!0)]))}}}),_e=Y(yn,[["__scopeId","data-v-e0d42ecd"]]),kn={class:"form-section structured-options-section"},hn={class:"preprocess-option-copy"},Sn={class:"form-section generation-options-section"},bn={class:"generation-option-list"},wn={class:"generation-option-row"},xn=X({__name:"StructuredOptionsPanel",props:{options:{},validationAttempted:{type:Boolean},qualityValidationMessage:{}},emits:["update:options"],setup(t,{emit:l}){const o=t,n=l,s=[{value:"clean_invalid",label:"清理无效数据",description:"处理空行、空列和残缺行"},{value:"detect_structure",label:"识别表格结构",description:"识别表头、多级表头和合并单元格"},{value:"deduplicate",label:"重复数据去重",description:"删除完全重复或关键字段重复的数据"},{value:"normalize_format",label:"数据格式标准化",description:"统一日期、数字、单位和枚举值格式"},{value:"filter_anomaly",label:"异常数据过滤",description:"过滤乱码、无效内容和异常记录"},{value:"desensitize",label:"敏感信息脱敏",description:"处理姓名、手机号、邮箱等敏感信息"}];function d(u,a){n("update:options",{...o.options,[u]:a})}function r(u){n("update:options",{...o.options,...u})}function S(u){const a=new Set(s.map(c=>c.value)),h=u.filter(c=>typeof c=="string"&&a.has(c));d("preprocessOptions",h)}return(u,a)=>{const h=Se,c=Ae,p=ke;return g(),w(B,null,[e("div",kn,[a[2]||(a[2]=e("div",{class:"section-title-row"},[e("div",null,[e("h3",null,"预处理选项"),e("p",null,"选择在生成问答对之前需要执行的数据处理方式")])],-1)),k(c,{"model-value":t.options.preprocessOptions,class:"preprocess-option-grid","onUpdate:modelValue":S},{default:M(()=>[(g(),w(B,null,Z(s,i=>k(h,{key:i.value,value:i.value,class:"preprocess-option"},{default:M(()=>[e("span",hn,[e("strong",null,C(i.label),1),e("small",null,C(i.description),1)])]),_:2},1032,["value"])),64))]),_:1},8,["model-value"])]),e("div",Sn,[a[4]||(a[4]=e("div",{class:"section-title-row"},[e("div",null,[e("h3",null,"生成选项"),e("p",null,"配置每条结构化记录生成问答对的方式和数量")])],-1)),e("div",bn,[k(_e,{options:t.options,section:"quality","validation-message":t.validationAttempted?t.qualityValidationMessage:"","onUpdate:options":r},null,8,["options","validation-message"]),e("div",wn,[a[3]||(a[3]=e("div",{class:"generation-option-copy"},[e("strong",null,"每行生成数量"),e("small",null,"每行结构化数据生成的问答对数量")],-1)),k(p,{"model-value":t.options.qaPairsPerRow,min:1,max:5,step:1,"controls-position":"right","onUpdate:modelValue":a[0]||(a[0]=i=>d("qaPairsPerRow",Number(i)||1))},null,8,["model-value"])]),k(je,{"model-value":t.options.datasetSplit,"onUpdate:modelValue":a[1]||(a[1]=i=>d("datasetSplit",i))},null,8,["model-value"])])])],64)}}}),$n=Y(xn,[["__scopeId","data-v-c85c39f3"]]),On={class:"form-section unstructured-options-section"},Cn={class:"preprocess-option-grid"},Mn={class:"form-section chunk-options-section"},In={class:"chunk-settings-grid is-basic"},Tn={class:"config-field"},_n={class:"config-field"},En={class:"unit-input"},Pn={class:"config-field"},Un={class:"unit-input"},Ln={class:"config-field"},Vn={class:"unit-input"},Rn={key:0,class:"config-field"},Fn={key:0,class:"option-validation-message",role:"alert"},Dn={class:"form-section generation-options-section"},qn={class:"generation-option-list"},zn={class:"generation-option-row"},Nn=X({__name:"UnstructuredOptionsPanel",props:{options:{},validationAttempted:{type:Boolean},qualityValidationMessage:{},chunkValidationMessage:{}},emits:["update:options"],setup(t,{expose:l,emit:o}){const n=t,s=o,d=["clean_invalid_content","detect_document_structure","merge_short_content","filter_low_quality","deduplicate_content","preserve_context"],r=[{value:"semantic",label:"自动语义切分"},{value:"heading",label:"按标题和段落"},{value:"fixed",label:"按固定长度"},{value:"custom",label:"自定义分隔符"}],S={chunkSize:{min:200,max:2e3},chunkOverlap:{min:0,max:500},minChunkSize:{min:20,max:500},qaPairsPerChunk:{min:1,max:3}},u=U(()=>d.every(O=>n.options.preprocessOptions.includes(O))),a=U(()=>n.options.preprocessOptions.includes("desensitize")),h=U(()=>n.options.preserveTables&&n.options.preserveCodeBlocks&&n.options.preserveLists);function c(O,f){s("update:options",{...n.options,[O]:f})}function p(O){s("update:options",{...n.options,...O})}function i(O){const f=!!O,R=n.options.preprocessOptions.filter(F=>!d.includes(F));c("preprocessOptions",f?[...d,...R]:R)}function P(O){const f=n.options.preprocessOptions.filter(R=>R!=="desensitize");O&&f.push("desensitize"),c("preprocessOptions",f)}function $(O){const f=!!O;s("update:options",{...n.options,preserveTables:f,preserveCodeBlocks:f,preserveLists:f})}function b(O,f){const R=S[O],F=Number(f),W=Number.isFinite(F)?F:R.min;c(O,Math.min(R.max,Math.max(R.min,W)))}function x(){}return l({revealValidation:x}),(O,f)=>{const R=Se,F=we,W=be,m=ke,I=de;return g(),w(B,null,[e("div",On,[f[10]||(f[10]=e("div",{class:"section-title-row"},[e("div",null,[e("h3",null,"预处理选项"),e("p",null,"默认使用推荐策略,只需决定是否需要脱敏")])],-1)),e("div",Cn,[e("label",{class:J(["preprocess-option",{"is-checked":u.value}])},[k(R,{"model-value":u.value,"onUpdate:modelValue":i},null,8,["model-value"]),f[7]||(f[7]=e("span",{class:"preprocess-option-copy"},[e("strong",null,"智能预处理"),e("small",null,"自动清理、解析、去重及保留上下文")],-1))],2),e("label",{class:J(["preprocess-option",{"is-checked":a.value}])},[k(R,{"model-value":a.value,"onUpdate:modelValue":P},null,8,["model-value"]),f[8]||(f[8]=e("span",{class:"preprocess-option-copy"},[e("strong",null,"敏感信息脱敏"),e("small",null,"处理姓名、手机号等隐私信息")],-1))],2),e("label",{class:J(["preprocess-option",{"is-checked":h.value}])},[k(R,{"model-value":h.value,"onUpdate:modelValue":$},null,8,["model-value"]),f[9]||(f[9]=e("span",{class:"preprocess-option-copy"},[e("strong",null,"保护表格、代码和列表"),e("small",null,"避免切分点破坏特殊内容块的完整性")],-1))],2)])]),e("div",Mn,[f[24]||(f[24]=e("div",{class:"section-title-row"},[e("div",null,[e("h3",null,"切分选项"),e("p",null,"以语义完整为优先,将长文档拆成可独立生成问答的内容块")])],-1)),e("div",In,[e("label",Tn,[f[11]||(f[11]=e("span",{class:"config-field-label"},"切分方式",-1)),k(W,{"model-value":t.options.chunkMethod,"aria-label":"切分方式","onUpdate:modelValue":f[0]||(f[0]=T=>c("chunkMethod",T))},{default:M(()=>[(g(),w(B,null,Z(r,T=>k(F,{key:T.value,label:T.label,value:T.value},null,8,["label","value"])),64))]),_:1},8,["model-value"]),f[12]||(f[12]=e("small",null,"推荐使用自动语义切分,在长度限制内优先保留完整句段",-1))]),e("label",_n,[f[14]||(f[14]=e("span",{class:"config-field-label"},"切片长度",-1)),e("span",En,[k(m,{"model-value":t.options.chunkSize,min:200,max:2e3,step:50,precision:0,"controls-position":"right","aria-label":"切片长度","onUpdate:modelValue":f[1]||(f[1]=T=>b("chunkSize",T))},null,8,["model-value"]),f[13]||(f[13]=e("span",null,"Token",-1))]),f[15]||(f[15]=e("small",null,"单个切片的目标上限,默认 800 Token",-1))]),e("label",Pn,[f[17]||(f[17]=e("span",{class:"config-field-label"},"重叠长度",-1)),e("span",Un,[k(m,{"model-value":t.options.chunkOverlap,min:0,max:500,step:10,precision:0,"controls-position":"right","aria-label":"重叠长度","onUpdate:modelValue":f[2]||(f[2]=T=>b("chunkOverlap",T))},null,8,["model-value"]),f[16]||(f[16]=e("span",null,"Token",-1))]),f[18]||(f[18]=e("small",null,"在相邻切片中最多重复保留的上下文,默认 100 Token",-1))]),e("label",Ln,[f[20]||(f[20]=e("span",{class:"config-field-label"},"最小切片长度",-1)),e("span",Vn,[k(m,{"model-value":t.options.minChunkSize,min:20,max:500,step:10,precision:0,"controls-position":"right","aria-label":"最小切片长度","onUpdate:modelValue":f[3]||(f[3]=T=>b("minChunkSize",T))},null,8,["model-value"]),f[19]||(f[19]=e("span",null,"Token",-1))]),f[21]||(f[21]=e("small",null,"过短的尾部内容会尽量并入前一个切片",-1))]),t.options.chunkMethod==="custom"?(g(),w("label",Rn,[f[22]||(f[22]=e("span",{class:"config-field-label"},"自定义分隔符",-1)),k(I,{"model-value":t.options.customDelimiter,maxlength:"40","show-word-limit":"",placeholder:"例如:--- 或 ###","aria-label":"自定义分隔符","onUpdate:modelValue":f[4]||(f[4]=T=>c("customDelimiter",T))},null,8,["model-value"]),f[23]||(f[23]=e("small",null,"系统会优先在分隔符位置结束当前切片",-1))])):D("",!0)]),f[25]||(f[25]=e("p",{class:"chunk-estimation-note"}," Token 数为轻量估算值,实际长度以训练使用的模型分词器为准。 ",-1)),t.chunkValidationMessage?(g(),w("p",Fn,C(t.chunkValidationMessage),1)):D("",!0)]),e("div",Dn,[f[27]||(f[27]=e("div",{class:"section-title-row"},[e("div",null,[e("h3",null,"生成选项"),e("p",null,"只保留会直接影响输出的核心设置")])],-1)),e("div",qn,[k(_e,{options:t.options,section:"quality","validation-message":t.validationAttempted?t.qualityValidationMessage:"","onUpdate:options":p},null,8,["options","validation-message"]),e("div",zn,[f[26]||(f[26]=e("div",{class:"generation-option-copy"},[e("strong",null,"每个切片生成数量"),e("small",null,"每个内容切片最多生成 3 个不同角度的问答对")],-1)),k(m,{"model-value":t.options.qaPairsPerChunk,min:1,max:3,step:1,precision:0,"controls-position":"right","aria-label":"每个切片生成数量","onUpdate:modelValue":f[5]||(f[5]=T=>b("qaPairsPerChunk",T))},null,8,["model-value"])]),k(je,{"model-value":t.options.datasetSplit,"aria-label-prefix":"非结构化","onUpdate:modelValue":f[6]||(f[6]=T=>c("datasetSplit",T))},null,8,["model-value"])])])],64)}}}),An=Y(Nn,[["__scopeId","data-v-1008ff27"]]),Bn={class:"task-setup-step"},jn={class:"form-section"},Gn={class:"basic-grid"},Qn={class:"form-section"},Jn={class:"type-options"},Hn=X({__name:"TaskSetupStep",props:{name:{},description:{},processType:{},structuredOptions:{},unstructuredOptions:{}},emits:["update:name","update:description","update:processType","update:structuredOptions","update:unstructuredOptions"],setup(t,{expose:l,emit:o}){const n=t,s=o,d=V(),r=V(),S=V(!1),u=U(()=>({name:n.name,processType:n.processType})),a=U(()=>{const{train:b,validation:x,test:O}=n.structuredOptions.datasetSplit;return b+x+O}),h=U(()=>{const{train:b,validation:x,test:O}=n.unstructuredOptions.datasetSplit;return b+x+O}),c=U(()=>n.processType==="structured"?n.structuredOptions:n.processType==="unstructured"?n.unstructuredOptions:null),p=U(()=>{const b=c.value;return b?b.qualityFilterEnabled&&!b.filterLowQuality&&!b.filterShortContent?"开启质量筛选后,请至少选择一项筛选规则":b.qualityFilterEnabled&&b.filterShortContent&&b.minOutputLength<1?"最少字数必须大于 0":"":""}),i=U(()=>n.unstructuredOptions.chunkOverlap>=n.unstructuredOptions.chunkSize?"重叠长度必须小于切片长度":n.unstructuredOptions.minChunkSize>n.unstructuredOptions.chunkSize?"最小切片长度不能大于切片长度":n.unstructuredOptions.chunkOverlap+n.unstructuredOptions.minChunkSize>n.unstructuredOptions.chunkSize?"重叠长度与最小切片长度之和不能大于切片长度":n.unstructuredOptions.chunkMethod==="custom"&&!n.unstructuredOptions.customDelimiter.trim()?"请输入自定义分隔符":""),P={name:[{required:!0,message:"请输入任务名称",trigger:"blur"},{max:50,message:"任务名称不能超过 50 个字符",trigger:"blur"}],processType:[{required:!0,message:"请选择数据处理类型",trigger:"change"}]};async function $(){var b;if(S.value=!0,!d.value)return!1;try{if(await d.value.validate(),n.processType==="structured"&&a.value!==100)return A.error("结构化数据处理:数据集划分比例总和必须为 100%"),!1;if(n.processType==="unstructured"){if(h.value!==100)return A.error("非结构化数据处理:数据集划分比例总和必须为 100%"),!1;if(i.value)return(b=r.value)==null||b.revealValidation(),A.error(i.value),!1}return p.value?(A.error(p.value),!1):!0}catch{return A.error("请完善标红的必填项"),!1}}return l({validate:$}),(b,x)=>{const O=de,f=Ne,R=ze;return g(),w("section",Bn,[k(R,{ref_key:"formRef",ref:d,model:u.value,rules:P,"label-position":"top","scroll-to-error":""},{default:M(()=>[e("div",jn,[x[7]||(x[7]=e("h3",null,"基本信息",-1)),e("div",Gn,[k(f,{label:"任务名称",prop:"name",required:""},{default:M(()=>[k(O,{"model-value":t.name,maxlength:"50","show-word-limit":"",placeholder:"例如:金融问答清洗任务","onUpdate:modelValue":x[0]||(x[0]=F=>s("update:name",F))},null,8,["model-value"])]),_:1}),k(f,{label:"任务描述(选填)"},{default:M(()=>[k(O,{"model-value":t.description,type:"textarea",rows:3,maxlength:"200","show-word-limit":"",placeholder:"简要说明本次数据处理目标","onUpdate:modelValue":x[1]||(x[1]=F=>s("update:description",F))},null,8,["model-value"])]),_:1})])]),e("div",Qn,[x[11]||(x[11]=e("div",{class:"section-title-row"},[e("div",null,[e("h3",null,"处理类型"),e("p",null,"类型会影响下一步支持的数据源格式和后续预览方式")])],-1)),k(f,{prop:"processType",class:"type-form-item"},{default:M(()=>[e("div",Jn,[e("button",{type:"button",class:J(["type-option",{"is-active":t.processType==="structured"}]),onClick:x[2]||(x[2]=F=>s("update:processType","structured"))},[...x[8]||(x[8]=[e("span",{class:"type-icon"},[e("i",{class:"fa fa-table"})],-1),e("span",null,[e("strong",null,"结构化数据"),e("small",null,"适用于 CSV、Excel、JSONL 等固定字段数据")],-1),e("i",{class:"fa fa-check-circle selection-mark"},null,-1)])],2),e("button",{type:"button",class:J(["type-option",{"is-active":t.processType==="unstructured"}]),onClick:x[3]||(x[3]=F=>s("update:processType","unstructured"))},[...x[9]||(x[9]=[e("span",{class:"type-icon"},[e("i",{class:"fa fa-file-text-o"})],-1),e("span",null,[e("strong",null,"非结构化数据"),e("small",null,"适用于文档、文本、问答等需要切分的数据")],-1),e("i",{class:"fa fa-check-circle selection-mark"},null,-1)])],2),e("button",{type:"button",class:J(["type-option",{"is-active":t.processType==="external"}]),onClick:x[4]||(x[4]=F=>s("update:processType","external"))},[...x[10]||(x[10]=[e("span",{class:"type-icon"},[e("i",{class:"fa fa-cloud-download"})],-1),e("span",null,[e("strong",null,"外来数据源拉取"),e("small",null,"适用于数据库、API 接口等需远程拉取的外部数据")],-1),e("i",{class:"fa fa-check-circle selection-mark"},null,-1)])],2)])]),_:1})]),t.processType==="structured"?(g(),z($n,{key:0,options:t.structuredOptions,"validation-attempted":S.value,"quality-validation-message":p.value,"onUpdate:options":x[5]||(x[5]=F=>s("update:structuredOptions",F))},null,8,["options","validation-attempted","quality-validation-message"])):D("",!0),t.processType==="unstructured"?(g(),z(An,{key:1,ref_key:"unstructuredOptionsPanelRef",ref:r,options:t.unstructuredOptions,"validation-attempted":S.value,"quality-validation-message":p.value,"chunk-validation-message":i.value,"onUpdate:options":x[6]||(x[6]=F=>s("update:unstructuredOptions",F))},null,8,["options","validation-attempted","quality-validation-message","chunk-validation-message"])):D("",!0)]),_:1},8,["model"])])}}}),Kn=Y(Hn,[["__scopeId","data-v-2c81dd84"]]),Zn={class:"model-selection-step","aria-labelledby":"model-selection-title"},Wn={class:"form-section"},Xn={class:"model-form-content"},Yn=X({__name:"ModelSelectionStep",props:{options:{},models:{}},emits:["update:options"],setup(t,{expose:l,emit:o}){const n=t,s=o,d=V(!1),r=U(()=>n.options.generationModelId===""?"请选择数据生成模型":"");function S(){return d.value=!0,r.value?(A.error(r.value),!1):!0}return l({validate:S}),(u,a)=>(g(),w("section",Zn,[e("div",Wn,[a[1]||(a[1]=e("div",{class:"section-title-row"},[e("div",null,[e("h3",{id:"model-selection-title"},"大模型选择"),e("p",null,"选择本次数据生成使用的模型,并设置统一的输出要求")])],-1)),e("div",Xn,[k(_e,{options:t.options,models:t.models,section:"model","validation-message":d.value?r.value:"","onUpdate:options":a[0]||(a[0]=h=>s("update:options",h))},null,8,["options","models","validation-message"])])])]))}}),el=Y(Yn,[["__scopeId","data-v-2e85e377"]]),tl={class:"source-upload-step","aria-labelledby":"source-upload-title"},nl={key:0,class:"form-section external-section"},ll={class:"external-form"},sl={class:"external-actions"},ol={key:0,class:"external-status is-connected",role:"status"},al={key:0,class:"uploaded-file-list","aria-label":"已拉取数据列表"},il={class:"uploaded-file-list-header"},ul={class:"uploaded-file-items"},rl={class:"file-main"},dl=["title"],cl={key:1,class:"form-section upload-section"},pl={class:"section-title-row"},ml={class:"el-upload__tip"},vl={key:1,class:"uploaded-file-list","aria-label":"已上传文件列表"},fl={class:"uploaded-file-list-header"},gl={class:"continue-upload"},yl={class:"uploaded-file-items"},kl={class:"file-main"},hl=["title"],ae=10,Sl=X({__name:"SourceUploadStep",props:{processType:{},uploadedFiles:{},externalSource:{},externalPulling:{type:Boolean},externalConnected:{type:Boolean}},emits:["update:externalSource","file-change","remove-file","use-sample","test-connection","pull-data"],setup(t,{emit:l}){const o=t,n=l,s=[{value:"mysql",label:"MySQL"},{value:"postgresql",label:"PostgreSQL"},{value:"mongodb",label:"MongoDB"},{value:"api",label:"REST API"}],d=[{value:"none",label:"免鉴权"},{value:"basic",label:"账号密码"},{value:"token",label:"Token"}],r=V(1),S=U(()=>o.processType==="external"),u=U(()=>o.processType==="unstructured"?".txt,.md,.pdf,.docx,.doc,.json,.jsonl":".json,.jsonl,.csv,.xlsx,.xls"),a=U(()=>{const p=(r.value-1)*ae;return o.uploadedFiles.slice(p,p+ae)});te(()=>o.uploadedFiles.length,(p,i)=>{const P=Math.max(1,Math.ceil(p/ae));if(p>i){r.value=P;return}r.value=Math.min(r.value,P)}),te(()=>o.processType,()=>{r.value=1});function h(p,i){n("update:externalSource",{...o.externalSource,[p]:i})}function c(p){return p?p>=1024*1024?`${(p/1024/1024).toFixed(1)} MB`:`${(p/1024).toFixed(1)} KB`:"0 KB"}return(p,i)=>{const P=we,$=be,b=Ne,x=de,O=ke,f=ze,R=ye,F=Be,W=qt;return g(),w("section",tl,[S.value?(g(),w("div",nl,[i[18]||(i[18]=e("div",{class:"section-title-row"},[e("div",null,[e("h3",{id:"source-upload-title"},"数据源配置"),e("p",null,"配置并验证外部数据源,拉取成功后可在下一步预览数据内容")])],-1)),e("div",ll,[k(f,{"label-position":"top",class:"external-grid"},{default:M(()=>[k(b,{label:"数据源类型"},{default:M(()=>[k($,{"model-value":t.externalSource.type,placeholder:"请选择数据源类型","aria-label":"数据源类型","onUpdate:modelValue":i[0]||(i[0]=m=>h("type",m))},{default:M(()=>[(g(),w(B,null,Z(s,m=>k(P,{key:m.value,label:m.label,value:m.value},null,8,["label","value"])),64))]),_:1},8,["model-value"])]),_:1}),k(b,{label:"地址 / URL"},{default:M(()=>[k(x,{"model-value":t.externalSource.url,placeholder:"例如:mysql://host:3306/db 或 https://api.example.com/data","aria-label":"数据源地址或 URL","onUpdate:modelValue":i[1]||(i[1]=m=>h("url",m))},null,8,["model-value"])]),_:1}),k(b,{label:"鉴权方式"},{default:M(()=>[k($,{"model-value":t.externalSource.authMode,"aria-label":"鉴权方式","onUpdate:modelValue":i[2]||(i[2]=m=>h("authMode",m))},{default:M(()=>[(g(),w(B,null,Z(d,m=>k(P,{key:m.value,label:m.label,value:m.value},null,8,["label","value"])),64))]),_:1},8,["model-value"])]),_:1}),t.externalSource.authMode==="basic"?(g(),z(b,{key:0,label:"账号"},{default:M(()=>[k(x,{"model-value":t.externalSource.username,autocomplete:"username",placeholder:"请输入账号","aria-label":"数据源账号","onUpdate:modelValue":i[3]||(i[3]=m=>h("username",m))},null,8,["model-value"])]),_:1})):D("",!0),t.externalSource.authMode==="basic"?(g(),z(b,{key:1,label:"密码"},{default:M(()=>[k(x,{"model-value":t.externalSource.password,type:"password","show-password":"",autocomplete:"current-password",placeholder:"请输入密码","aria-label":"数据源密码","onUpdate:modelValue":i[4]||(i[4]=m=>h("password",m))},null,8,["model-value"])]),_:1})):D("",!0),t.externalSource.authMode==="token"?(g(),z(b,{key:2,label:"Token"},{default:M(()=>[k(x,{"model-value":t.externalSource.token,type:"password","show-password":"",autocomplete:"off",placeholder:"请输入访问 Token","aria-label":"数据源访问 Token","onUpdate:modelValue":i[5]||(i[5]=m=>h("token",m))},null,8,["model-value"])]),_:1})):D("",!0),k(b,{label:"拉取条数"},{default:M(()=>[k(O,{"model-value":t.externalSource.limit,min:1,max:1e5,step:100,"controls-position":"right","aria-label":"数据拉取条数","onUpdate:modelValue":i[6]||(i[6]=m=>h("limit",Number(m)||0))},null,8,["model-value"])]),_:1})]),_:1}),e("div",sl,[k(R,{loading:t.externalPulling&&!t.externalConnected,disabled:t.externalPulling,plain:"",onClick:i[7]||(i[7]=m=>n("test-connection"))},{default:M(()=>[...i[12]||(i[12]=[L(" 测试连接 ",-1)])]),_:1},8,["loading","disabled"]),k(R,{type:"primary",loading:t.externalPulling,disabled:t.externalPulling,onClick:i[8]||(i[8]=m=>n("pull-data"))},{default:M(()=>[...i[13]||(i[13]=[L(" 拉取数据 ",-1)])]),_:1},8,["loading","disabled"]),t.externalConnected?(g(),w("span",ol,[...i[14]||(i[14]=[e("i",{class:"fa fa-check-circle","aria-hidden":"true"},null,-1),L(" 连接正常 ",-1)])])):D("",!0)]),t.uploadedFiles.length?(g(),w("section",al,[e("div",il,[e("span",null,"已拉取 "+C(t.uploadedFiles.length)+" 个数据集",1)]),e("div",ul,[(g(!0),w(B,null,Z(a.value,m=>(g(),w("div",{key:m.uid,class:"uploaded-file"},[i[16]||(i[16]=e("span",{class:"file-icon"},[e("i",{class:"fa fa-cloud-download","aria-hidden":"true"})],-1)),e("div",rl,[e("strong",{title:m.name},C(m.name),9,dl),e("span",null,[L(C(c(m.size))+" ",1),m.count?(g(),w(B,{key:0},[L(" · "+C(m.count.toLocaleString())+" 条",1)],64)):D("",!0)])]),i[17]||(i[17]=e("span",{class:"file-status"},[e("i",{class:"fa fa-check-circle","aria-hidden":"true"}),L(" 拉取成功")],-1)),k(R,{link:"",type:"danger","aria-label":`删除数据集 ${m.name}`,onClick:I=>n("remove-file",m.uid)},{default:M(()=>[...i[15]||(i[15]=[L(" 删除 ",-1)])]),_:1},8,["aria-label","onClick"])]))),128))]),t.uploadedFiles.length>ae?(g(),z(F,{key:0,"current-page":r.value,"onUpdate:currentPage":i[9]||(i[9]=m=>r.value=m),"page-size":ae,total:t.uploadedFiles.length,"pager-count":5,small:"",background:"",layout:"prev, pager, next",class:"uploaded-file-pagination","aria-label":"已拉取数据分页"},null,8,["current-page","total"])):D("",!0)])):D("",!0)])])):(g(),w("div",cl,[e("div",pl,[i[20]||(i[20]=e("div",null,[e("h3",{id:"source-upload-title"},"源数据上传"),e("p",null,"上传后可在下一步检查内容和切分效果,支持同时添加多个文件")],-1)),t.uploadedFiles.length===0?(g(),z(R,{key:0,link:"",type:"primary",onClick:i[10]||(i[10]=m=>n("use-sample"))},{default:M(()=>[...i[19]||(i[19]=[L(" 使用示例数据 ",-1)])]),_:1})):D("",!0)]),t.uploadedFiles.length===0?(g(),z(W,{key:0,drag:"",multiple:"",accept:u.value,"auto-upload":!1,"show-file-list":!1,"on-change":m=>n("file-change",m),"aria-label":"选择或拖拽源数据文件"},{tip:M(()=>[e("div",ml,C(t.processType==="unstructured"?"支持 TXT、Markdown、PDF、Word、JSON、JSONL,单文件不超过 200MB":"支持 JSON、JSONL、CSV、Excel,单文件不超过 200MB"),1)]),default:M(()=>[i[21]||(i[21]=e("i",{class:"fa fa-cloud-upload upload-icon","aria-hidden":"true"},null,-1)),i[22]||(i[22]=e("div",{class:"el-upload__text"},[L("拖拽文件到此处,或"),e("em",null,"点击选择文件")],-1))]),_:1},8,["accept","on-change"])):(g(),w("section",vl,[e("div",fl,[e("span",null,"已添加 "+C(t.uploadedFiles.length)+" 个文件",1),e("div",gl,[k(W,{multiple:"",accept:u.value,"auto-upload":!1,"show-file-list":!1,"on-change":m=>n("file-change",m),"aria-label":"继续添加源数据文件"},{default:M(()=>[k(R,{size:"small",type:"primary"},{default:M(()=>[...i[23]||(i[23]=[L("继续上传",-1)])]),_:1})]),_:1},8,["accept","on-change"])])]),e("div",yl,[(g(!0),w(B,null,Z(a.value,m=>(g(),w("div",{key:m.uid,class:"uploaded-file"},[i[25]||(i[25]=e("span",{class:"file-icon"},[e("i",{class:"fa fa-file-text-o","aria-hidden":"true"})],-1)),e("div",kl,[e("strong",{title:m.name},C(m.name),9,hl),e("span",null,[L(C(c(m.size))+" ",1),m.count?(g(),w(B,{key:0},[L(" · "+C(m.count.toLocaleString())+" 条",1)],64)):D("",!0)])]),i[26]||(i[26]=e("span",{class:"file-status"},[e("i",{class:"fa fa-check-circle","aria-hidden":"true"}),L(" 校验通过")],-1)),k(R,{link:"",type:"danger","aria-label":`删除文件 ${m.name}`,onClick:I=>n("remove-file",m.uid)},{default:M(()=>[...i[24]||(i[24]=[L(" 删除 ",-1)])]),_:1},8,["aria-label","onClick"])]))),128))]),t.uploadedFiles.length>ae?(g(),z(F,{key:0,"current-page":r.value,"onUpdate:currentPage":i[11]||(i[11]=m=>r.value=m),"page-size":ae,total:t.uploadedFiles.length,"pager-count":5,small:"",background:"",layout:"prev, pager, next",class:"uploaded-file-pagination","aria-label":"已上传文件分页"},null,8,["current-page","total"])):D("",!0)]))]))])}}}),bl=Y(Sl,[["__scopeId","data-v-ed273296"]]),pe=["问:如何看待当前的通货膨胀风险?","答:当前通胀水平总体可控,但仍需关注能源价格与供给扰动。","问:美联储下一次议息会议何时召开?","答:会议时间以美联储官方日历为准,市场会重点关注利率路径指引。","问:人民币汇率未来走势如何?","答:人民币汇率取决于中美利差、经济基本面与政策预期。","问:银行理财产品收益率为何持续走低?","答:主要与市场利率下行、资产端收益下降以及风险偏好变化有关。","问:什么是复利?","答:复利是指在计算利息时,将上一期利息加入本金,再计算下一期利息。","问:如何评估股票的投资价值?","答:评估股票投资价值可以从以下几个方面进行:","1. 公司基本面:分析公司的财务状况、盈利能力、成长性等。","2. 行业前景:考察公司所处行业的发展趋势和竞争格局。","3. 估值水平:通过市盈率、市净率等指标判断估值是否合理。","4. 财务健康:关注公司的负债情况、现金流状况等。","5. 管理团队:评估管理层的能力和过往业绩。","此外,还需要关注宏观经济环境、政策变化等因素对股票市场的影响。","问:债券和股票的主要区别是什么?","答:债券收益相对稳定但上行有限,股票波动更大且承担更高风险。","问:什么是市盈率?","答:市盈率是股票价格与每股收益的比值,常用于衡量估值水平。","问:如何进行资产配置?","答:应根据投资目标、风险承受能力和市场环境合理分配资产。"].join(` +`);function Ee(t){const l=t.split(` +`);let o=0;return l.map((n,s)=>{const d=o,r=d+n.length;return o=r+(sn&&/\s/.test(t[s-1]);)s-=1;return{start:n,end:s}}function Cl(t){return(t??"").replace(/\\n/g,` +`).replace(/\\t/g," ")}function Ml(t,l){return t.startl.start}function fe(t,l){return l.some(o=>Ml(t,o))}function Il(t,l){const o=[];let n=null;for(const s of l){const d=s.content.match(/^\s*(`{3,}|~{3,})/);if(!d)continue;const r=d[1][0];if(!n){n={start:s.start,marker:r,length:d[1].length};continue}r===n.marker&&d[1].length>=n.length&&(o.push({start:n.start,end:s.end,kind:"code"}),n=null)}return n&&o.push({start:n.start,end:t.length,kind:"code"}),o}function Tl(t){const o=t.trim().replace(/^\|/,"").replace(/\|$/,"").split("|").map(n=>n.trim());return o.length>=2&&o.every(n=>/^:?-{3,}:?$/.test(n))}function _l(t,l){const o=[];for(let n=0;n=2&&(o.push({start:t[n].start,end:t[s].end,kind:"list"}),n=s)}return o}function Ul(t){return t.sort((l,o)=>l.start-o.start||l.end-o.end).reduce((l,o)=>{const n=l[l.length-1];return n&&o.starto.startl&&s.start>=o?s.start:s.end:t}function Fl(t,l,o,n){const s={...t},d=ge(n,s.start);d&&l<=d.start&&(s.start=d.start);const r=ge(n,s.end);return r&&o>=r.end&&(s.end=r.end),s}function Dl(t,l,o){const n=[];return[` + +`,` +`,"。","!","?",";",".","!","?",";"].forEach(d=>{const r=t.lastIndexOf(d,l-d.length),S=r===-1?-1:r+d.length;S>=o&&S<=l&&n.push(S)}),n.length?Math.max(...n):null}function ql(t,l,o,n){const s=t.slice(l,o),d=/^(?:#{1,6}\s+|第[一二三四五六七八九十百]+[章节篇部分]|\d+(?:\.\d+)*[、.\s])/gm;let r=null,S;for(;S=d.exec(s);){const u=l+S.index;u>=n&&(r=u)}return r}function zl(t,l,o,n,s){const d=(s==null?void 0:s.chunkMethod)??"semantic";if(d==="fixed")return o;if(d==="custom"){const r=Cl(s==null?void 0:s.customDelimiter);if(!r)return o;const S=t.lastIndexOf(r,o-r.length),u=S===-1?-1:S+r.length;return u>=n?u:o}if(d==="heading"){const r=ql(t,l,o,n);if(r!==null)return r}return Dl(t,o,n)??o}function Nl(t,l){const o=ve(l==null?void 0:l.chunkSize,wl,1)*2,n=Math.min(o,ve(l==null?void 0:l.minChunkSize,$l,1)*2),s=ve(l==null?void 0:l.chunkOverlap,xl,0)*2,d=Ll(t,l),r=[];let S=0;for(;S=t.length)break;const a=Math.min(t.length,u+o),h=Math.min(a,u+n);let c=a===t.length?a:zl(t,u,a,h,l);c=Rl(c,u,h,d),c<=u&&(c=Math.min(t.length,u+o));let p=Ol(t,u,c);if(p=Fl(p,u,c,d),c=t.length;if(i&&p.end-p.startu?b:p.end}return r}function De(t,l){if(!t.length)return null;let o=0,n=t.length-1,s=0;for(;o<=n;){const d=Math.floor((o+n)/2);t[d].start<=l?(s=d,o=d+1):n=d-1}return t[s].number}function Al(t,l,o,n,s){const d=t.slice(o.start,o.end);return{id:`preview-${n}-${s+1}`,sourceFileId:n,originalContent:d,editedContent:d,sourceStart:o.start,sourceEnd:o.end,sourceStartLine:De(l,o.start),sourceEndLine:De(l,Math.max(o.start,o.end-1)),tokenCount:Math.max(1,Math.ceil(d.length/2)),status:"original"}}function Bl(t,l,o="default-source",n){const s=Ee(t);if(l==="unstructured")return Nl(t,n).map((u,a)=>Al(t,s,u,o,a));const d=s.filter(u=>u.content.trim()),r=l==="structured"?1:3,S=[];for(let u=0;u{if(l!=null&&l.qualityFilterEnabled&&l.filterLowQuality&&(s.status==="invalid"||!s.editedContent.trim()))return[];const[r="",...S]=s.editedContent.split(` +`),u=S.join(` +`).trim()||s.editedContent.trim(),a=r.replace(/^问[::]\s*/,"").trim()||`数据条目 ${d+1}`;return Array.from({length:o},(h,c)=>{const p=l!=null&&l.semanticEnrichment?`${jl[c]}${a}`:c===0?a:`${a}(问法 ${c+1})`;return{id:o===1?`result-${d+1}`:`result-${d+1}-${c+1}`,instruction:p,input:"",output:u,originalInstruction:p,originalInput:"",originalOutput:u,status:"valid"}})});return l!=null&&l.qualityFilterEnabled?n.filter(s=>!(l.filterLowQuality&&(!s.instruction.trim()||!s.output.trim())||l.filterShortContent&&s.output.trim().lengthEe(o.sourceText)),h=U(()=>o.items.find(m=>m.id===o.selectedId)??o.items[0]),c=U(()=>o.items.find(m=>m.id===S.value)),p=U(()=>o.items.filter((m,I)=>!d.value.trim()||m.editedContent.toLowerCase().includes(d.value.trim().toLowerCase())||String(I+1).includes(d.value.trim()))),i=U(()=>{const m=(r.value-1)*me;return p.value.slice(m,m+me)});function P(m,I){const T=h.value;return!T||T.sourceStart==null||T.sourceEnd==null?!1:I>=T.sourceStart&&m<=T.sourceEnd}function $(m){n("update:selectedId",m)}function b(m){$(m.id),S.value=m.id,u.value=m.editedContent}function x(){S.value=null,u.value=""}function O(){c.value&&(n("update:item-content",c.value.id,u.value),x())}function f(m){$(m.id),n("remove:item",m.id)}function R(){x()}te(d,()=>{r.value=1,x()}),te(()=>o.selectedFileId,x),te(h,async m=>{var j,K;if(!m)return;const I=p.value.findIndex(N=>N.id===m.id);if(I>=0&&(r.value=Math.floor(I/me)+1),m.sourceStart==null)return;await Te();const T=((j=s.value)==null?void 0:j.querySelector(`[data-source-start="${m.sourceStart}"]`))??((K=s.value)==null?void 0:K.querySelector(".source-line.is-highlighted"));T==null||T.scrollIntoView({block:"center",behavior:"smooth"})},{immediate:!0});function F(m){return o.items.findIndex(I=>I.id===m.id)+1}function W(m){return m.sourceStartLine==null||m.sourceEndLine==null?"手动新增,无源文件定位":m.sourceStartLine===m.sourceEndLine?`来源:第 ${m.sourceStartLine} 行`:`来源:第 ${m.sourceStartLine}–${m.sourceEndLine} 行`}return(m,I)=>{const T=we,j=be,K=de,N=ye,ie=Be;return g(),w("section",Ql,[e("div",Jl,[e("div",Hl,[I[4]||(I[4]=e("span",null,"当前文件",-1)),k(j,{"model-value":t.selectedFileId,filterable:"",placeholder:"选择文件","aria-label":"选择当前预览文件","onUpdate:modelValue":I[0]||(I[0]=_=>n("update:selectedFileId",_))},{default:M(()=>[(g(!0),w(B,null,Z(t.files,_=>(g(),z(T,{key:_.id,label:_.name,value:_.id},{default:M(()=>[e("div",Kl,[e("strong",{title:_.name},C(_.name),9,Zl),e("span",null,C(_.count.toLocaleString())+" "+C(t.processType==="unstructured"?"个切片":"条记录"),1),_.modifiedCount?(g(),w("em",Wl,C(_.modifiedCount)+" 处已修改",1)):D("",!0)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["model-value"])]),e("span",Xl,C(t.files.length)+" 个文件 · 当前文件 "+C(t.items.length.toLocaleString())+" "+C(t.processType==="unstructured"?"个切片":"条记录"),1)]),e("div",Yl,[e("div",es,[e("div",ts,[e("div",null,[e("strong",null,"源文件 · "+C(t.fileName),1)])]),e("div",{ref_key:"sourceViewerRef",ref:s,class:"source-viewer",tabindex:"0","aria-label":"源文件内容"},[(g(!0),w(B,null,Z(a.value,_=>(g(),w("div",{key:_.number,class:J(["source-line",{"is-highlighted":P(_.start,_.end)}]),"data-source-start":_.start},[e("span",ls,C(_.number),1),e("span",ss,C(_.content||" "),1)],10,ns))),128))],512)]),e("div",os,[e("div",as,[e("strong",null,C(t.processType==="unstructured"?"切片内容":"记录内容"),1),e("span",null,"共 "+C(t.items.length.toLocaleString())+" 条",1)]),c.value?(g(),w("div",vs,[e("div",fs,[e("div",null,[e("strong",null,C(t.processType==="unstructured"?"切片":"记录")+" #"+C(String(F(c.value)).padStart(3,"0"))+" 正文",1),e("small",null,C(W(c.value)),1)])]),k(K,{modelValue:u.value,"onUpdate:modelValue":I[3]||(I[3]=_=>u.value=_),type:"textarea",rows:7,resize:"none"},null,8,["modelValue"]),e("div",gs,[e("div",null,[k(N,{onClick:x},{default:M(()=>[...I[8]||(I[8]=[L("取消",-1)])]),_:1}),k(N,{type:"primary",onClick:O},{default:M(()=>[...I[9]||(I[9]=[L("保存修改",-1)])]),_:1})])])])):(g(),w(B,{key:0},[e("div",is,[k(K,{modelValue:d.value,"onUpdate:modelValue":I[1]||(I[1]=_=>d.value=_),clearable:"",placeholder:"搜索编号或内容",size:"small"},{prefix:M(()=>[...I[5]||(I[5]=[e("i",{class:"fa fa-search"},null,-1)])]),_:1},8,["modelValue"])]),e("div",us,[(g(!0),w(B,null,Z(i.value,_=>{var H;return g(),w("div",{key:_.id,class:J(["preview-item",{"is-active":_.id===((H=h.value)==null?void 0:H.id)}]),role:"button",tabindex:"0",onClick:ue=>$(_.id),onKeydown:[Re(ue=>$(_.id),["enter"]),Re(Me(ue=>$(_.id),["prevent"]),["space"])]},[e("span",ds,C(t.processType==="unstructured"?"切片":"记录")+" #"+C(String(F(_)).padStart(3,"0")),1),e("span",cs,C(W(_)),1),e("span",ps,[k(N,{link:"","aria-label":"编辑切片",title:"编辑",onClick:Me(ue=>b(_),["stop"])},{default:M(()=>[...I[6]||(I[6]=[e("i",{class:"fa fa-pencil"},null,-1)])]),_:1},8,["onClick"]),k(N,{link:"",type:"danger","aria-label":"删除切片",title:"删除",onClick:Me(ue=>f(_),["stop"])},{default:M(()=>[...I[7]||(I[7]=[e("i",{class:"fa fa-trash-o"},null,-1)])]),_:1},8,["onClick"])])],42,rs)}),128)),p.value.length?D("",!0):(g(),w("div",ms,"没有符合条件的内容"))]),p.value.length>me?(g(),z(ie,{key:0,"current-page":r.value,"onUpdate:currentPage":I[2]||(I[2]=_=>r.value=_),"page-size":me,total:p.value.length,"pager-count":5,small:"",background:"",layout:"prev, pager, next",class:"preview-pagination",onCurrentChange:R},null,8,["current-page","total"])):D("",!0)],64))])])])}}}),ks=Y(ys,[["__scopeId","data-v-3ebb39bd"]]),hs={class:"generation-step"},Ss={class:"generation-layout"},bs={class:"summary-panel"},ws={class:"run-icon"},xs={key:0,class:"fa fa-check"},$s={key:1,class:"fa fa-exclamation"},Os={key:2,class:"fa fa-cog fa-spin"},Cs={key:3,class:"fa fa-play"},Ms=X({__name:"GenerationStep",props:{taskName:{},processType:{},fileName:{},previewCount:{},modifiedCount:{},generation:{}},emits:["stop","retry"],setup(t,{emit:l}){const o=l;return(n,s)=>{const d=zt,r=ye;return g(),w("section",hs,[e("div",Ss,[e("div",bs,[s[7]||(s[7]=e("div",{class:"panel-heading"},[e("strong",null,"任务摘要"),e("span",null,"已完成预览确认")],-1)),e("dl",null,[e("div",null,[s[2]||(s[2]=e("dt",null,"任务名称",-1)),e("dd",null,C(t.taskName),1)]),e("div",null,[s[3]||(s[3]=e("dt",null,"数据类型",-1)),e("dd",null,C(t.processType==="unstructured"?"非结构化数据":t.processType==="external"?"外来数据源拉取":"结构化数据"),1)]),e("div",null,[s[4]||(s[4]=e("dt",null,"源文件",-1)),e("dd",null,C(t.fileName),1)]),e("div",null,[s[5]||(s[5]=e("dt",null,"预览条目",-1)),e("dd",null,C(t.previewCount.toLocaleString())+" 条",1)]),e("div",null,[s[6]||(s[6]=e("dt",null,"已修改",-1)),e("dd",null,C(t.modifiedCount.toLocaleString())+" 条",1)])])]),e("div",{class:J(["run-panel",`is-${t.generation.status}`])},[e("div",ws,[t.generation.status==="success"?(g(),w("i",xs)):t.generation.status==="failed"?(g(),w("i",$s)):t.generation.status==="running"?(g(),w("i",Os)):(g(),w("i",Cs))]),e("h3",null,C(t.generation.status==="idle"?"准备开始处理":t.generation.status==="running"?"正在生成数据":t.generation.status==="success"?"数据生成完成":"生成已停止"),1),e("p",null,C(t.generation.message),1),t.generation.status!=="idle"?(g(),z(d,{key:0,percentage:t.generation.progress,"stroke-width":10,status:t.generation.status==="success"?"success":void 0},null,8,["percentage","status"])):D("",!0),s[10]||(s[10]=e("div",{class:"run-meta"},[e("span",null,"解析源数据"),e("span",null,"应用预览修改"),e("span",null,"生成标准结果")],-1)),t.generation.status==="running"?(g(),z(r,{key:1,plain:"",type:"warning",onClick:s[0]||(s[0]=S=>o("stop"))},{default:M(()=>[...s[8]||(s[8]=[L(" 停止生成 ",-1)])]),_:1})):D("",!0),t.generation.status==="failed"?(g(),z(r,{key:2,plain:"",type:"primary",onClick:s[1]||(s[1]=S=>o("retry"))},{default:M(()=>[...s[9]||(s[9]=[L(" 重新生成 ",-1)])]),_:1})):D("",!0)],2)])])}}}),Is=Y(Ms,[["__scopeId","data-v-9912b685"]]),Ts={class:"result-step"},_s={class:"result-workspace"},Es={class:"result-list-pane"},Ps={class:"pane-header"},Us={class:"result-toolbar"},Ls={class:"result-list"},Vs=["onClick"],Rs={class:"result-index"},Fs={class:"result-copy"},Ds={key:0,class:"result-editor-pane"},qs={class:"pane-header"},zs={key:0,class:"modified-label"},Ns={class:"field-editor"},As={class:"field-editor"},Bs={class:"field-editor"},js={key:0,class:"validation-error"},Gs={key:1,class:"validation-success"},Qs={class:"editor-pagination"},Js=X({__name:"ResultEditorStep",props:{items:{},selectedId:{}},emits:["update:selectedId","update:field","restore:item"],setup(t,{emit:l}){const o=t,n=l,s=V(""),d=V(!1),r=U(()=>o.items.find(h=>h.id===o.selectedId)??o.items[0]),S=U(()=>o.items.findIndex(h=>{var c;return h.id===((c=r.value)==null?void 0:c.id)})),u=U(()=>o.items.filter((h,c)=>{const p=s.value.trim().toLowerCase();return(!p||h.instruction.toLowerCase().includes(p)||h.output.toLowerCase().includes(p)||String(c+1).includes(p))&&(!d.value||h.status==="invalid")}));function a(h){if(!o.items.length)return;const c=Math.min(Math.max(S.value+h,0),o.items.length-1);n("update:selectedId",o.items[c].id)}return(h,c)=>{const p=de,i=Se,P=ye;return g(),w("section",Ts,[e("div",_s,[e("aside",Es,[e("div",Ps,[c[8]||(c[8]=e("strong",null,"生成结果",-1)),e("span",null,"共 "+C(t.items.length)+" 条",1)]),e("div",Us,[k(p,{modelValue:s.value,"onUpdate:modelValue":c[0]||(c[0]=$=>s.value=$),clearable:"",size:"small",placeholder:"搜索结果"},{prefix:M(()=>[...c[9]||(c[9]=[e("i",{class:"fa fa-search"},null,-1)])]),_:1},8,["modelValue"]),k(i,{modelValue:d.value,"onUpdate:modelValue":c[1]||(c[1]=$=>d.value=$)},{default:M(()=>[...c[10]||(c[10]=[L("仅看错误",-1)])]),_:1},8,["modelValue"])]),e("div",Ls,[(g(!0),w(B,null,Z(u.value,$=>{var b;return g(),w("button",{key:$.id,type:"button",class:J(["result-item",{"is-active":$.id===((b=r.value)==null?void 0:b.id)}]),onClick:x=>n("update:selectedId",$.id)},[e("span",Rs,"#"+C(String(t.items.findIndex(x=>x.id===$.id)+1).padStart(3,"0")),1),e("span",Fs,[e("strong",null,C($.instruction||"未填写指令"),1),e("small",null,C($.output||"未填写输出"),1)]),e("i",{class:J(["fa",$.status==="invalid"?"fa-exclamation-circle is-error":"fa-check-circle is-valid"])},null,2)],10,Vs)}),128))])]),r.value?(g(),w("div",Ds,[e("div",qs,[e("div",null,[e("strong",null,"结果 #"+C(String(S.value+1).padStart(3,"0")),1),r.value.status==="modified"?(g(),w("span",zs,"已修改")):D("",!0)]),k(P,{link:"",onClick:c[2]||(c[2]=$=>n("restore:item",r.value.id))},{default:M(()=>[...c[11]||(c[11]=[e("i",{class:"fa fa-undo"},null,-1),L(" 恢复生成结果",-1)])]),_:1})]),e("div",Ns,[c[12]||(c[12]=e("label",null,[L("Instruction "),e("em",null,"必填")],-1)),k(p,{"model-value":r.value.instruction,type:"textarea",rows:3,"onUpdate:modelValue":c[3]||(c[3]=$=>n("update:field",r.value.id,"instruction",$))},null,8,["model-value"])]),e("div",As,[c[13]||(c[13]=e("label",null,[L("Input "),e("span",null,"选填")],-1)),k(p,{"model-value":r.value.input,type:"textarea",rows:2,"onUpdate:modelValue":c[4]||(c[4]=$=>n("update:field",r.value.id,"input",$))},null,8,["model-value"])]),e("div",Bs,[c[14]||(c[14]=e("label",null,[L("Output "),e("em",null,"必填")],-1)),k(p,{"model-value":r.value.output,type:"textarea",rows:7,"onUpdate:modelValue":c[5]||(c[5]=$=>n("update:field",r.value.id,"output",$))},null,8,["model-value"])]),r.value.error?(g(),w("div",js,[c[15]||(c[15]=e("i",{class:"fa fa-exclamation-circle"},null,-1)),L(" "+C(r.value.error),1)])):(g(),w("div",Gs,[...c[16]||(c[16]=[e("i",{class:"fa fa-check-circle"},null,-1),L(" 字段校验通过 ",-1)])])),e("div",Qs,[k(P,{disabled:S.value<=0,onClick:c[6]||(c[6]=$=>a(-1))},{default:M(()=>[...c[17]||(c[17]=[L("上一条",-1)])]),_:1},8,["disabled"]),e("span",null,C(S.value+1)+" / "+C(t.items.length),1),k(P,{disabled:S.value>=t.items.length-1,onClick:c[7]||(c[7]=$=>a(1))},{default:M(()=>[...c[18]||(c[18]=[L("下一条",-1)])]),_:1},8,["disabled"])])])):D("",!0)])])}}}),Hs=Y(Js,[["__scopeId","data-v-ddf55b99"]]),Ge="你是一名专业的数据生成助手。请根据输入内容生成准确、完整、可直接用于模型训练的问答数据。仅输出符合目标格式的内容,答案应事实清晰、语言自然,不要添加分析过程、说明或无关内容。";function Ks(){return{preprocessOptions:["clean_invalid","detect_structure","deduplicate","normalize_format"],semanticEnrichment:!1,qaPairsPerRow:1,datasetSplit:{train:80,validation:10,test:10},generationModelId:"",generationPrompt:Ge,temperature:.7,maxTokens:1024,jsonMode:!1,qualityFilterEnabled:!1,filterLowQuality:!0,filterShortContent:!0,minOutputLength:20}}function Zs(){return{preprocessOptions:["clean_invalid_content","detect_document_structure","merge_short_content","filter_low_quality","deduplicate_content","preserve_context"],chunkMethod:"semantic",chunkSize:800,chunkOverlap:100,minChunkSize:100,customDelimiter:"",preserveTables:!0,preserveCodeBlocks:!0,preserveLists:!0,semanticEnrichment:!1,qaPairsPerChunk:1,datasetSplit:{train:80,validation:10,test:10},generationModelId:"",generationPrompt:Ge,temperature:.7,maxTokens:1024,jsonMode:!1,qualityFilterEnabled:!1,filterLowQuality:!0,filterShortContent:!0,minOutputLength:20}}const he="yg-data-process-create-draft",Ws=6;function qe(t){return{type:typeof t.type=="string"?t.type:"mysql",url:typeof t.url=="string"?t.url:"",authMode:typeof t.authMode=="string"?t.authMode:"none",username:typeof t.username=="string"?t.username:"",limit:Number.isFinite(t.limit)?Number(t.limit):1e3}}function Xs(t){return!!(t&&typeof t=="object")}function Ys(t){function l(){return{schemaVersion:Ws,currentStepId:t.currentStepId.value,task:{...t.task},processType:t.processType.value,structuredOptions:{...t.structuredOptions.value,preprocessOptions:[...t.structuredOptions.value.preprocessOptions],datasetSplit:{...t.structuredOptions.value.datasetSplit}},unstructuredOptions:{...t.unstructuredOptions.value,preprocessOptions:[...t.unstructuredOptions.value.preprocessOptions],datasetSplit:{...t.unstructuredOptions.value.datasetSplit}},externalSource:qe(t.externalSource)}}function o(d){try{localStorage.setItem(he,JSON.stringify(l()))}catch{d&&A.warning("草稿保存失败,请检查浏览器存储空间")}}function n(){t.restoringDraft.value||o(!0)}function s(){var d,r;try{const S=localStorage.getItem(he);if(!S)return;const u=JSON.parse(S);if(!Xs(u))return;t.restoringDraft.value=!0,t.goToStep("create"),t.task.name=((d=u.task)==null?void 0:d.name)||"",t.task.description=((r=u.task)==null?void 0:r.description)||"",t.processType.value=u.processType==="unstructured"||u.processType==="external"?u.processType:"structured",u.structuredOptions&&(t.structuredOptions.value={...t.structuredOptions.value,...u.structuredOptions,preprocessOptions:Array.isArray(u.structuredOptions.preprocessOptions)?u.structuredOptions.preprocessOptions:t.structuredOptions.value.preprocessOptions,datasetSplit:{...t.structuredOptions.value.datasetSplit,...u.structuredOptions.datasetSplit}}),u.unstructuredOptions&&(t.unstructuredOptions.value={...t.unstructuredOptions.value,...u.unstructuredOptions,preprocessOptions:Array.isArray(u.unstructuredOptions.preprocessOptions)?u.unstructuredOptions.preprocessOptions:t.unstructuredOptions.value.preprocessOptions,datasetSplit:{...t.unstructuredOptions.value.datasetSplit,...u.unstructuredOptions.datasetSplit}}),Object.assign(t.externalSource,qe(u.externalSource||{}),{password:"",token:""}),t.dirty.value=!1,Te(()=>{t.restoringDraft.value=!1,o(!1)}),A.info("已恢复上次的任务配置,请重新上传或拉取源数据")}catch{localStorage.removeItem(he)}}return{draftSnapshot:l,persistDraft:n,restoreDraft:s}}function eo(t){const l=V([]),o=V(null),n=Ie({status:"idle",progress:0,message:"确认摘要后即可开始生成,过程中可查看实时进度。"});let s=null;function d(){s&&clearInterval(s),s=null}function r(){d(),n.status="idle",n.progress=0,n.message="确认摘要后即可开始生成,过程中可查看实时进度。",l.value=[],o.value=null}function S(){d(),n.status="running",n.progress=0,n.message="正在应用预览修改并生成标准化结果,请稍候。",s=setInterval(()=>{var p;n.progress=Math.min(100,n.progress+8),!(n.progress<100)&&(d(),n.status="success",l.value=Gl(t.previewItems.value,t.processType.value==="structured"?t.structuredOptions.value:t.processType.value==="unstructured"?t.unstructuredOptions.value:void 0),n.message=`已完成 ${l.value.length.toLocaleString()} 条数据处理,可进入结果页检查。`,o.value=((p=l.value[0])==null?void 0:p.id)??null,t.dirty.value=!0,A.success("数据处理完成"))},180)}function u(){d(),n.status="failed",n.message="任务已停止,预览修改仍然保留,可以重新生成。"}function a(p,i,P){const $=l.value.find(O=>O.id===p);if(!$)return;$[i]=P;const b=$.instruction.trim()&&$.output.trim();$.error=b?void 0:"Instruction 和 Output 不能为空";const x=$.instruction!==$.originalInstruction||$.input!==$.originalInput||$.output!==$.originalOutput;$.status=$.error?"invalid":x?"modified":"valid",t.dirty.value=!0}function h(p){const i=l.value.find(P=>P.id===p);i&&(i.instruction=i.originalInstruction,i.input=i.originalInput,i.output=i.originalOutput,i.error=void 0,i.status="valid",t.dirty.value=!0)}function c(){let p=null;for(const i of l.value)(!i.instruction.trim()||!i.output.trim())&&(i.error="Instruction 和 Output 不能为空",i.status="invalid",p??(p=i.id));return p&&(o.value=p),p==null}return{generation:n,results:l,selectedResultId:o,resetDownstream:r,restoreResult:h,startGeneration:S,stopGeneration:u,stopGenerationTimer:d,updateResultField:a,validateResults:c}}const to={class:"create-wizard-layout"},no={class:"wizard-main"},lo={class:"wizard-main-inner"},so={class:"wizard-steps-container"},oo={class:"custom-wizard-steps"},ao=["aria-current"],io={class:"step-node"},uo={class:"step-icon"},ro={key:0,class:"fa fa-check"},co={key:1},po={class:"step-text"},mo={class:"step-title"},vo={class:"wizard-content"},fo={class:"wizard-footer"},go={class:"footer-left"},yo={class:"footer-right"},ko="document-chunk-v2",ho=X({__name:"DataProcessCreateView",setup(t){const l=Vt(),o=Nt(),{list:n}=_t(o),s=U(()=>n.value.filter(y=>y.type==="LLM")),d=V(),r=V(),S=V(),u=[{id:"create",title:"创建任务",desc:"填写任务信息与处理配置"},{id:"model",title:"大模型选择",desc:"选择生成模型并设置输出要求"},{id:"upload",title:"上传文件",desc:"上传或接入待处理的源数据"},{id:"preview",title:"数据预览",desc:"核对源文件与预览内容"},{id:"generate",title:"开始生成",desc:"确认摘要并启动处理"},{id:"results",title:"结果编辑与保存",desc:"检查、修改并保存结果"}],a=V(0),h=U(()=>{var y;return((y=u[a.value])==null?void 0:y.id)??"create"}),c=Ie({name:"",description:""}),p=V("structured"),i=V(Ks()),P=V(Zs()),$=U(()=>p.value==="unstructured"?P.value:i.value),b=V([]),x=Ie({type:"mysql",url:"",authMode:"none",username:"",password:"",token:"",limit:1e3}),O=V(!1),f=V(!1);let R=null,F=null;const W=U(()=>b.value.map(y=>y.name).join(", ")),m=V(""),I=V([]),T=V(null),j=V(null),K=V({}),N=V(!1),ie=V(!1);let _=!1;const{generation:H,results:ue,selectedResultId:xe,resetDownstream:le,restoreResult:Qe,startGeneration:Pe,stopGeneration:Je,stopGenerationTimer:He,updateResultField:Ke,validateResults:Ze}=eo({previewItems:I,processType:p,structuredOptions:i,unstructuredOptions:P,dirty:N}),We=U(()=>I.value.filter(y=>y.status!=="original").length),Ue=U(()=>{const y=new Map;for(const v of I.value){const E=y.get(v.sourceFileId)||[];E.push(v),y.set(v.sourceFileId,E)}return y}),Le=U(()=>b.value.find(y=>String(y.uid)===T.value)),ce=U(()=>Ue.value.get(T.value||"")||[]),Xe=U(()=>{var y;return((y=Le.value)==null?void 0:y.content)??""}),Ye=U(()=>b.value.map(y=>{const v=Ue.value.get(String(y.uid))||[];return{id:String(y.uid),name:y.name,count:v.length,modifiedCount:v.filter(E=>E.status!=="original").length}})),et=U(()=>h.value==="create"?"继续:选择大模型":h.value==="model"?"继续:上传文件":h.value==="upload"?"继续:数据预览":h.value==="preview"?"确认预览并继续":h.value==="results"?"保存任务":H.status==="running"?"正在生成":H.status==="success"?"查看生成结果":H.status==="failed"?"重新生成":"开始生成"),tt=U(()=>h.value==="results"?"fa-check":h.value==="generate"&&H.status!=="success"?"fa-play":"fa-arrow-right"),nt=U(()=>a.value>0?u[a.value-1].title:"");function re(y){const v=u.findIndex(E=>E.id===y);v>=0&&(a.value=v)}function lt(y){if(p.value==="unstructured"){P.value={...P.value,...y};return}i.value={...i.value,...y}}const{persistDraft:st,restoreDraft:ot}=Ys({currentStepId:h,task:c,processType:p,structuredOptions:i,unstructuredOptions:P,externalSource:x,restoringDraft:ie,dirty:N,goToStep:re});function at(){if(p.value==="structured")return{preprocessOptions:i.value.preprocessOptions};if(p.value==="unstructured"){const{preprocessOptions:y,chunkMethod:v,chunkSize:E,chunkOverlap:G,minChunkSize:q,customDelimiter:Q,preserveTables:oe,preserveCodeBlocks:se,preserveLists:ee}=P.value;return{preprocessOptions:y,chunkMethod:v,chunkSize:E,chunkOverlap:G,minChunkSize:q,customDelimiter:v==="custom"?Q:"",preserveTables:oe,preserveCodeBlocks:se,preserveLists:ee}}return null}function it(){if(p.value==="structured"){const{semanticEnrichment:y,qaPairsPerRow:v,datasetSplit:E,generationModelId:G,generationPrompt:q,temperature:Q,maxTokens:oe,jsonMode:se,qualityFilterEnabled:ee,filterLowQuality:$e,filterShortContent:Oe,minOutputLength:Ce}=i.value;return{semanticEnrichment:y,qaPairsPerRow:v,datasetSplit:E,generationModelId:G,generationPrompt:q,temperature:Q,maxTokens:oe,jsonMode:se,qualityFilterEnabled:ee,filterLowQuality:$e,filterShortContent:Oe,minOutputLength:Ce}}if(p.value==="unstructured"){const{semanticEnrichment:y,qaPairsPerChunk:v,datasetSplit:E,generationModelId:G,generationPrompt:q,temperature:Q,maxTokens:oe,jsonMode:se,qualityFilterEnabled:ee,filterLowQuality:$e,filterShortContent:Oe,minOutputLength:Ce}=P.value;return{semanticEnrichment:y,qaPairsPerChunk:v,datasetSplit:E,generationModelId:G,generationPrompt:q,temperature:Q,maxTokens:oe,jsonMode:se,qualityFilterEnabled:ee,filterLowQuality:$e,filterShortContent:Oe,minOutputLength:Ce}}return null}const ut=U(()=>JSON.stringify(it()));function rt(){const y=b.value.map(v=>`${v.uid}:${v.name}:${v.size}:${v.count}`).join("|");return`${ko}:${p.value}:${JSON.stringify(at())}:${y}`}te([()=>c.name,()=>c.description,p,i,P,x],()=>{ie.value||(N.value=!0)},{deep:!0}),te(p,(y,v)=>{ie.value||y===v||b.value.length===0||(yt(),A.info("处理类型已变更,请重新上传或拉取匹配的源数据"))}),te(ut,(y,v)=>{ie.value||y===v||le()}),te([c,p,i,P,x],st,{deep:!0});function dt(){var y;(y=document.querySelector(".layout-content"))==null||y.scrollTo({top:0,behavior:"smooth"})}te(a,()=>Te(dt));async function ct(y){var se;const v=y.raw;if(!v)return;if(v.size>200*1024*1024){A.warning("单文件不能超过 200MB");return}const E=((se=v.name.split(".").pop())==null?void 0:se.toLowerCase())??"",G=["txt","md","json","jsonl","csv"];let q="";if(G.includes(E))try{q=await v.text()}catch{q=""}const Q=q.trim()?q:pe,oe=Q.split(` +`).filter(ee=>ee.trim()).length;b.value.some(ee=>ee.name===v.name&&ee.size===v.size)||b.value.push({uid:y.uid||Date.now()+Math.random(),name:v.name,size:v.size,count:oe,content:Q}),N.value=!0}function pt(){b.value=[{uid:"sample-1",name:"finance_qa.jsonl",size:128*1024*1024,count:pe.split(` +`).filter(y=>y.trim()).length,content:pe}],N.value=!0}function mt(y){Object.assign(x,y),f.value=!1}function vt(){if(!x.url.trim()){A.warning("请先填写数据源地址");return}R&&clearTimeout(R),O.value=!0,R=setTimeout(()=>{R=null,O.value=!1,f.value=!0,A.success("数据源连接测试成功")},1500)}function ft(){if(!x.url.trim()){A.warning("请先填写数据源地址");return}F&&clearTimeout(F),O.value=!0,F=setTimeout(()=>{F=null,O.value=!1,f.value=!0;const y=x.type.toUpperCase(),v=`external-${Date.now()}`;b.value.push({uid:v,name:`${y} 拉取数据 ${new Date().toLocaleString("zh-CN")}`,size:Math.min(x.limit,5e3)*64,count:Math.min(x.limit,pe.split(` +`).filter(E=>E.trim()).length),content:pe}),N.value=!0,A.success(`已成功拉取 ${b.value[b.value.length-1].count.toLocaleString()} 条数据`)},2e3)}function gt(y){const v=b.value.findIndex(E=>E.uid===y);v>-1&&(b.value.splice(v,1),m.value="",I.value=[],j.value=null,le(),N.value=!0)}function yt(){b.value=[],m.value="",I.value=[],T.value=null,j.value=null,K.value={},f.value=!1,le()}async function kt(){var v;await((v=d.value)==null?void 0:v.validate())&&re("model")}async function ht(){var v;await((v=r.value)==null?void 0:v.validate())&&re("upload")}function St(){var v,E;if(b.value.length===0){A.warning(p.value==="external"?"请先拉取至少一个数据源":"请上传至少一个源数据文件");return}const y=rt();y!==m.value&&(I.value=b.value.flatMap(G=>Bl(G.content,p.value,String(G.uid),p.value==="unstructured"?P.value:void 0)),T.value=String(((v=b.value[0])==null?void 0:v.uid)??"")||null,j.value=((E=ce.value[0])==null?void 0:E.id)??null,K.value=j.value&&T.value?{[T.value]:j.value}:{},m.value=y,le()),re("preview")}function bt(y){var v;T.value&&j.value&&(K.value[T.value]=j.value),T.value=y,j.value=K.value[y]||((v=ce.value[0])==null?void 0:v.id)||null}function Ve(y){j.value=y,T.value&&(K.value[T.value]=y)}function wt(y,v){const E=I.value.find(G=>G.id===y);E&&(E.editedContent=v,E.tokenCount=Math.max(1,Math.ceil(v.length/2)),E.status=v===E.originalContent?"original":E.sourceStart==null?"manual":"modified",le(),N.value=!0)}function xt(y){const v=I.value.find(E=>E.id===y);!v||v.sourceStart==null||(v.editedContent=v.originalContent,v.tokenCount=Math.max(1,Math.ceil(v.originalContent.length/2)),v.status="original",le(),N.value=!0)}function $t(){if(!T.value)return;const y=`manual-${Date.now()}`;I.value.push({id:y,sourceFileId:T.value,originalContent:"",editedContent:"",sourceStart:null,sourceEnd:null,sourceStartLine:null,sourceEndLine:null,tokenCount:1,status:"manual"}),Ve(y),le(),N.value=!0}async function Ot(y){var G,q;if(!await((G=S.value)==null?void 0:G.open({title:"删除预览内容?",message:"删除只影响本次处理,不会修改源文件。删除后可重新从源文件生成预览。",confirmText:"删除",cancelText:"取消",tone:"danger"})))return;const E=I.value.findIndex(Q=>Q.id===y);E<0||(I.value.splice(E,1),j.value=((q=ce.value[Math.min(E,ce.value.length-1)])==null?void 0:q.id)??null,T.value&&j.value&&(K.value[T.value]=j.value),le(),N.value=!0)}async function Ct(){if(h.value==="create"){await kt();return}if(h.value==="model"){await ht();return}if(h.value==="upload"){St();return}if(h.value==="preview"){if(!I.value.length){A.warning("当前没有可生成的预览内容");return}re("generate");return}if(h.value==="generate"){H.status==="success"?re("results"):H.status!=="running"&&Pe();return}await It()}function Mt(){if(H.status==="running"){A.warning("请先停止当前生成任务");return}a.value>0&&(a.value-=1)}async function It(){if(!Ze()){A.warning("请先修正校验失败的结果");return}N.value=!1,localStorage.removeItem(he),_=!0,A.success("数据处理任务已保存"),await l.push("/data-process")}async function Tt(){var v;if(!N.value){_=!0,l.back();return}await((v=S.value)==null?void 0:v.open({title:"确认离开当前页面?",message:"当前存在未保存修改,离开后这些修改将不会保留。",confirmText:"放弃修改",cancelText:"继续编辑",tone:"danger"}))&&(_=!0,l.back())}return Et(async()=>{var v;if(_||!N.value)return!0;const y=await((v=S.value)==null?void 0:v.open({title:"确认离开当前页面?",message:"当前存在未保存修改,离开后这些修改将不会保留。",confirmText:"放弃修改",cancelText:"继续编辑",tone:"danger"}));return y&&(_=!0),!!y}),Pt(()=>{He(),R&&clearTimeout(R),F&&clearTimeout(F)}),Ut(()=>{ot(),o.load()}),(y,v)=>{var G;const E=ye;return g(),w(B,null,[e("div",to,[e("main",no,[e("div",lo,[e("div",so,[e("div",oo,[(g(),w(B,null,Z(u,(q,Q)=>(g(),w(B,{key:q.id},[Q!==0?(g(),w("div",{key:0,class:J(["step-connector",{"is-active":a.value>=Q}])},null,2)):D("",!0),e("div",{class:J(["step-item",{"is-active":a.value===Q,"is-completed":a.value>Q}]),"aria-current":a.value===Q?"step":void 0},[e("div",io,[e("div",uo,[a.value>Q?(g(),w("i",ro)):(g(),w("span",co,C(Q+1),1))]),e("div",po,[e("div",mo,C(q.title),1)])])],10,ao)],64))),64))])]),e("div",vo,[h.value==="create"?(g(),z(Kn,{key:0,ref_key:"taskSetupRef",ref:d,name:c.name,"onUpdate:name":v[0]||(v[0]=q=>c.name=q),description:c.description,"onUpdate:description":v[1]||(v[1]=q=>c.description=q),"process-type":p.value,"onUpdate:processType":v[2]||(v[2]=q=>p.value=q),"structured-options":i.value,"onUpdate:structuredOptions":v[3]||(v[3]=q=>i.value=q),"unstructured-options":P.value,"onUpdate:unstructuredOptions":v[4]||(v[4]=q=>P.value=q)},null,8,["name","description","process-type","structured-options","unstructured-options"])):h.value==="model"?(g(),z(el,{key:1,ref_key:"modelSelectionRef",ref:r,options:$.value,models:s.value,"onUpdate:options":lt},null,8,["options","models"])):h.value==="upload"?(g(),z(bl,{key:2,"process-type":p.value,"uploaded-files":b.value,"external-source":x,"external-pulling":O.value,"external-connected":f.value,"onUpdate:externalSource":mt,onFileChange:ct,onRemoveFile:gt,onUseSample:pt,onTestConnection:vt,onPullData:ft},null,8,["process-type","uploaded-files","external-source","external-pulling","external-connected"])):h.value==="preview"?(g(),z(ks,{key:3,"selected-id":j.value,"selected-file-id":T.value,"source-text":Xe.value,items:ce.value,"process-type":p.value,"file-name":((G=Le.value)==null?void 0:G.name)??"",files:Ye.value,"onUpdate:selectedId":Ve,"onUpdate:selectedFileId":bt,"onUpdate:itemContent":wt,"onRestore:item":xt,"onAdd:item":$t,"onRemove:item":Ot},null,8,["selected-id","selected-file-id","source-text","items","process-type","file-name","files"])):h.value==="generate"?(g(),z(Is,{key:4,"task-name":c.name,"process-type":p.value,"file-name":W.value,"preview-count":I.value.length,"modified-count":We.value,generation:ne(H),onStop:ne(Je),onRetry:ne(Pe)},null,8,["task-name","process-type","file-name","preview-count","modified-count","generation","onStop","onRetry"])):h.value==="results"?(g(),z(Hs,{key:5,"selected-id":ne(xe),"onUpdate:selectedId":v[5]||(v[5]=q=>Lt(xe)?xe.value=q:null),items:ne(ue),"onUpdate:field":ne(Ke),"onRestore:item":ne(Qe)},null,8,["selected-id","items","onUpdate:field","onRestore:item"])):D("",!0)])])]),e("footer",fo,[e("div",go,[a.value>0?(g(),z(E,{key:0,onClick:Mt},{default:M(()=>[v[6]||(v[6]=e("i",{class:"fa fa-arrow-left",style:{"margin-right":"6px"}},null,-1)),L(" 返回:"+C(nt.value),1)]),_:1})):(g(),z(E,{key:1,onClick:Tt},{default:M(()=>[...v[7]||(v[7]=[L("取消",-1)])]),_:1}))]),v[8]||(v[8]=e("div",{class:"footer-center"},null,-1)),e("div",yo,[k(E,{class:"wizard-primary-action",type:"primary",loading:ne(H).status==="running",disabled:h.value==="generate"&&ne(H).status==="running",onClick:Ct},{default:M(()=>[L(C(et.value)+" ",1),e("i",{class:J(["fa",tt.value]),style:{"margin-left":"6px"}},null,2)]),_:1},8,["loading","disabled"])])])]),k(Rt,{ref_key:"confirmDialogRef",ref:S},null,512)],64)}}}),sa=Y(ho,[["__scopeId","data-v-e4c7a5ce"]]);export{sa as default}; diff --git a/frontend/dist/assets/DataProcessCreateView-DyU55R2b.css b/frontend/dist/assets/DataProcessCreateView-DyU55R2b.css new file mode 100644 index 0000000..292d4ca --- /dev/null +++ b/frontend/dist/assets/DataProcessCreateView-DyU55R2b.css @@ -0,0 +1 @@ +.generation-option-row[data-v-8ab33ca4]{display:flex;min-height:64px;align-items:center;justify-content:space-between;gap:24px;padding:12px 14px;box-sizing:border-box;border:1px solid #e2e5ec;border-radius:8px}.generation-option-copy[data-v-8ab33ca4]{display:grid;gap:4px}.generation-option-copy strong[data-v-8ab33ca4]{color:#344054;font-size:13px;font-weight:600}.generation-option-copy small[data-v-8ab33ca4]{color:#8a93a3;font-size:12px;line-height:1.5}.dataset-split-row[data-v-8ab33ca4]{align-items:flex-start}.dataset-split-config[data-v-8ab33ca4]{display:grid;gap:10px;flex:0 0 460px}.dataset-split-grid[data-v-8ab33ca4]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.dataset-split-field[data-v-8ab33ca4]{display:grid;gap:7px;color:#5f6878;font-size:12px}.dataset-split-input[data-v-8ab33ca4]{display:flex;align-items:center;gap:8px}.dataset-split-input[data-v-8ab33ca4] .el-input-number{width:100%}.dataset-split-summary[data-v-8ab33ca4]{display:flex;justify-content:space-between;gap:12px;color:#2ca66a;font-size:12px}.dataset-split-summary.is-invalid[data-v-8ab33ca4]{color:#dc2626}@media(max-width:900px){.dataset-split-row[data-v-8ab33ca4]{flex-direction:column;align-items:stretch}.dataset-split-config[data-v-8ab33ca4]{flex:auto}.dataset-split-grid[data-v-8ab33ca4]{grid-template-columns:minmax(0,1fr)}.dataset-split-summary[data-v-8ab33ca4]{align-items:flex-start;flex-direction:column}}.generation-config-group[data-v-e0d42ecd]{padding:14px;border:1px solid #e2e5ec;border-radius:8px;background:#fff}.config-group-heading[data-v-e0d42ecd]{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.config-group-heading h4[data-v-e0d42ecd]{margin:0;color:#344054;font-size:13px;font-weight:600}.config-group-heading p[data-v-e0d42ecd]{margin:4px 0 0;color:#8a93a3;font-size:12px;line-height:1.5}.model-config-group[data-v-e0d42ecd]{display:flex;flex-direction:column;gap:20px;padding:0;border:0;border-radius:0;background:transparent}.model-config-group .advanced-settings-grid[data-v-e0d42ecd]{grid-template-columns:1fr;gap:20px}.model-config-group .config-field[data-v-e0d42ecd]{padding:0;border:0;border-radius:0}.model-field[data-v-e0d42ecd]{display:flex;flex-direction:column;gap:8px}.field-copy[data-v-e0d42ecd]{display:grid;gap:4px}.field-copy strong[data-v-e0d42ecd]{color:#344054;font-size:13px;font-weight:600}.field-copy small[data-v-e0d42ecd]{color:#8a93a3;font-size:12px;line-height:1.5}.field-copy em[data-v-e0d42ecd]{color:var(--el-color-danger);font-style:normal}.model-select[data-v-e0d42ecd],.prompt-input[data-v-e0d42ecd]{width:100%}.model-option[data-v-e0d42ecd]{width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px}.model-option small[data-v-e0d42ecd]{color:#98a2b3;font-size:11px}.model-empty[data-v-e0d42ecd]{padding:12px;color:#8a93a3;font-size:12px;text-align:center}.prompt-variables-hint[data-v-e0d42ecd]{color:#8a93a3;font-size:12px}.prompt-variables-hint code[data-v-e0d42ecd]{padding:2px 4px;color:#5b50f2;background:#f0f0ff;border-radius:4px;font-family:inherit}.advanced-settings-grid[data-v-e0d42ecd]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.config-field[data-v-e0d42ecd]{display:grid;align-content:start;gap:8px;min-width:0;padding:14px;color:#344054;background:#fff;border:1px solid #e2e5ec;border-radius:8px}.config-field>small[data-v-e0d42ecd]{color:#8a93a3;font-size:12px;line-height:1.5}.config-field[data-v-e0d42ecd] .el-slider{margin:0 8px}.config-field-label[data-v-e0d42ecd]{font-size:13px;font-weight:600}.unit-input[data-v-e0d42ecd]{display:flex;align-items:center;gap:8px;color:#7b8495;font-size:12px}.unit-input[data-v-e0d42ecd] .el-input-number{width:100%}.json-mode-row[data-v-e0d42ecd]{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 14px;background:#fff;border:1px solid #e2e5ec;border-radius:8px}.quality-switch-row[data-v-e0d42ecd]{display:flex;align-items:center;justify-content:space-between;gap:20px}.quality-rule-panel[data-v-e0d42ecd]{margin-top:12px;padding-top:12px;border-top:1px solid #e7eaf0}.quality-rule-list[data-v-e0d42ecd]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.quality-rule-list[data-v-e0d42ecd] .el-checkbox{min-height:62px;height:auto;margin-right:0;padding:10px 12px;align-items:flex-start;border:1px solid #e2e5ec;border-radius:7px;background:#fff}.quality-rule-list[data-v-e0d42ecd] .el-checkbox__input{margin-top:3px}.quality-rule-list[data-v-e0d42ecd] .el-checkbox__label{min-width:0;padding-left:9px;white-space:normal}.rule-copy[data-v-e0d42ecd]{display:grid;gap:3px}.rule-copy strong[data-v-e0d42ecd]{color:#344054;font-size:12px;font-weight:600}.rule-copy small[data-v-e0d42ecd]{color:#8a93a3;font-size:11px;line-height:1.5}.minimum-length-field[data-v-e0d42ecd]{margin-top:12px;display:grid;grid-template-columns:110px 220px minmax(0,1fr);align-items:center;gap:12px;color:#475467;font-size:12px}.minimum-length-input[data-v-e0d42ecd]{display:flex;align-items:center;gap:8px}.minimum-length-input[data-v-e0d42ecd] .el-input-number{width:180px}.minimum-length-field>small[data-v-e0d42ecd]{color:#8a93a3}.quality-rule-warning[data-v-e0d42ecd],.generation-validation-message[data-v-e0d42ecd]{margin:10px 0 0;color:#dc2626;font-size:12px}@media(max-width:900px){.advanced-settings-grid[data-v-e0d42ecd],.quality-rule-list[data-v-e0d42ecd],.minimum-length-field[data-v-e0d42ecd]{grid-template-columns:1fr}}.form-section[data-v-c85c39f3]{padding:0 0 26px;margin-bottom:26px;border-bottom:1px solid #edf0f5}.form-section[data-v-c85c39f3]:last-child{margin-bottom:0;border-bottom:0}.form-section h3[data-v-c85c39f3]{margin:0 0 16px;color:#2f3747;font-size:15px;font-weight:650}.section-title-row[data-v-c85c39f3]{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.section-title-row h3[data-v-c85c39f3]{margin-bottom:5px}.section-title-row p[data-v-c85c39f3]{margin:0;color:#8a93a3;font-size:12px}.preprocess-option-grid[data-v-c85c39f3]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:16px}.preprocess-option[data-v-c85c39f3]{display:flex;gap:10px;width:100%;min-height:64px;margin-right:0;padding:12px 14px;box-sizing:border-box;align-items:flex-start;border:1px solid #e2e5ec;border-radius:8px;transition:border-color .18s ease,background-color .18s ease}.preprocess-option[data-v-c85c39f3]:hover{border-color:#b7b2f7}.preprocess-option.is-checked[data-v-c85c39f3]{background:#fafaff;border-color:#8b82f4}.preprocess-option[data-v-c85c39f3] .el-checkbox__input{margin-top:3px}.preprocess-option[data-v-c85c39f3] .el-checkbox__label{min-width:0;padding-left:10px;white-space:normal}.preprocess-option-copy[data-v-c85c39f3],.generation-option-copy[data-v-c85c39f3]{display:grid;gap:4px}.preprocess-option-copy strong[data-v-c85c39f3],.generation-option-copy strong[data-v-c85c39f3]{color:#344054;font-size:13px;font-weight:600}.preprocess-option-copy small[data-v-c85c39f3],.generation-option-copy small[data-v-c85c39f3]{color:#8a93a3;font-size:12px;line-height:1.5}.generation-option-list[data-v-c85c39f3]{display:grid;gap:12px;margin-top:16px}.generation-option-row[data-v-c85c39f3]{display:flex;min-height:64px;align-items:center;justify-content:space-between;gap:24px;padding:12px 14px;box-sizing:border-box;border:1px solid #e2e5ec;border-radius:8px}@media(max-width:900px){.preprocess-option-grid[data-v-c85c39f3]{grid-template-columns:minmax(0,1fr)}.generation-option-row[data-v-c85c39f3]{align-items:flex-start;flex-direction:column}}.form-section[data-v-1008ff27]{padding:0 0 26px;margin-bottom:26px;border-bottom:1px solid #edf0f5}.form-section[data-v-1008ff27]:last-child{margin-bottom:0;border-bottom:0}.form-section h3[data-v-1008ff27]{margin:0 0 16px;color:#2f3747;font-size:15px;font-weight:650}.section-title-row[data-v-1008ff27]{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.section-title-row h3[data-v-1008ff27]{margin-bottom:5px}.section-title-row p[data-v-1008ff27]{margin:0;color:#8a93a3;font-size:12px}.generation-option-list[data-v-1008ff27]{display:grid;gap:12px;margin-top:16px}.preprocess-option-grid[data-v-1008ff27]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:16px}.preprocess-option[data-v-1008ff27]{display:flex;gap:10px;width:100%;min-height:64px;margin-right:0;padding:12px 14px;box-sizing:border-box;align-items:flex-start;border:1px solid #e2e5ec;border-radius:8px;transition:border-color .18s ease,background-color .18s ease}.preprocess-option[data-v-1008ff27]:hover{border-color:#b7b2f7}.preprocess-option.is-checked[data-v-1008ff27]{background:#fafaff;border-color:#8b82f4}.preprocess-option[data-v-1008ff27] .el-checkbox__input{margin-top:3px}.preprocess-option[data-v-1008ff27] .el-checkbox__label{min-width:0;padding-left:10px;white-space:normal}.preprocess-option-copy[data-v-1008ff27]{display:grid;gap:4px}.preprocess-option-copy strong[data-v-1008ff27]{color:#344054;font-size:13px;font-weight:600}.preprocess-option-copy small[data-v-1008ff27]{color:#8a93a3;font-size:12px;line-height:1.5}.generation-option-row[data-v-1008ff27]{display:flex;min-height:64px;align-items:center;justify-content:space-between;gap:24px;padding:12px 14px;box-sizing:border-box;border:1px solid #e2e5ec;border-radius:8px}.generation-option-copy[data-v-1008ff27]{display:grid;gap:4px}.generation-option-copy strong[data-v-1008ff27]{color:#344054;font-size:13px;font-weight:600}.generation-option-copy small[data-v-1008ff27]{color:#8a93a3;font-size:12px;line-height:1.5}.chunk-settings-grid[data-v-1008ff27]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:16px}.config-field[data-v-1008ff27]{display:grid;align-content:start;gap:8px;min-width:0;padding:14px;color:#344054;background:#fff;border:1px solid #e2e5ec;border-radius:8px}.config-field>small[data-v-1008ff27]{color:#8a93a3;font-size:12px;line-height:1.5}.config-field[data-v-1008ff27] .el-select,.config-field[data-v-1008ff27] .el-input{width:100%}.config-field-label[data-v-1008ff27]{font-size:13px;font-weight:600}.unit-input[data-v-1008ff27]{display:flex;align-items:center;gap:8px;color:#7b8495;font-size:12px}.unit-input[data-v-1008ff27] .el-input-number{width:100%}.option-validation-message[data-v-1008ff27]{display:block;margin:8px 0 0;color:#dc2626;font-size:12px;line-height:1.5}.chunk-estimation-note[data-v-1008ff27]{margin:9px 0 0;color:#8a93a3;font-size:12px;line-height:1.5}@media(max-width:900px){.chunk-settings-grid[data-v-1008ff27]{grid-template-columns:minmax(0,1fr)}.generation-option-row[data-v-1008ff27]{align-items:flex-start;flex-direction:column}.compact-option-list .generation-option-row[data-v-1008ff27]{align-items:center;flex-direction:row}.preprocess-option-grid[data-v-1008ff27]{grid-template-columns:minmax(0,1fr)}}.task-setup-step[data-v-2c81dd84]{width:100%}.form-section[data-v-2c81dd84]{padding:0 0 26px;margin-bottom:26px;border-bottom:1px solid #edf0f5}.form-section h3[data-v-2c81dd84]{margin:0 0 16px;color:#2f3747;font-size:15px;font-weight:650}.basic-grid[data-v-2c81dd84]{display:flex;flex-direction:column;gap:20px}.section-title-row[data-v-2c81dd84]{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.section-title-row h3[data-v-2c81dd84]{margin-bottom:5px}.section-title-row p[data-v-2c81dd84]{margin:0;color:#8a93a3;font-size:12px}.type-form-item[data-v-2c81dd84]{margin-top:16px}.type-options[data-v-2c81dd84]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;width:100%}.type-option[data-v-2c81dd84]{position:relative;display:flex;align-items:center;gap:14px;min-height:96px;padding:18px;color:#4b5563;text-align:left;background:#fff;border:1px solid #dfe3ea;border-radius:9px;cursor:pointer;transition:border-color .18s ease,background-color .18s ease}.type-option[data-v-2c81dd84]:hover{border-color:#a8a3ff}.type-option.is-active[data-v-2c81dd84]{background:#fafaff;border-color:#5b50f2;box-shadow:0 0 0 1px #5b50f214}.type-option strong[data-v-2c81dd84],.type-option small[data-v-2c81dd84]{display:block}.type-option strong[data-v-2c81dd84]{margin-bottom:6px;color:#262d3d;font-size:14px}.type-option small[data-v-2c81dd84]{color:#7b8495;font-size:12px;line-height:1.6}.type-icon[data-v-2c81dd84]{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:40px;height:40px;color:#5b50f2;font-size:18px;background:#f0efff;border-radius:9px}.selection-mark[data-v-2c81dd84]{position:absolute;top:12px;right:12px;color:#5b50f2;opacity:0}.type-option.is-active .selection-mark[data-v-2c81dd84]{opacity:1}@media(max-width:900px){.type-options[data-v-2c81dd84]{grid-template-columns:minmax(0,1fr)}}.model-selection-step[data-v-2e85e377]{width:100%}.form-section[data-v-2e85e377]{padding:0 0 26px;margin-bottom:26px;border-bottom:1px solid #edf0f5}.section-title-row[data-v-2e85e377]{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.section-title-row h3[data-v-2e85e377]{margin:0 0 5px;color:#2f3747;font-size:15px;font-weight:650}.section-title-row p[data-v-2e85e377]{margin:0;color:#8a93a3;font-size:12px;line-height:1.6}.model-form-content[data-v-2e85e377]{margin-top:16px}.source-upload-step[data-v-ed273296]{width:100%}.form-section[data-v-ed273296]{padding:0}.form-section h3[data-v-ed273296]{margin:0 0 5px;color:#2f3747;font-size:15px;font-weight:650}.section-title-row[data-v-ed273296]{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.section-title-row p[data-v-ed273296]{margin:0;color:#8a93a3;font-size:12px;line-height:1.6}.external-section .external-grid[data-v-ed273296]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 20px;margin-top:16px}.external-section[data-v-ed273296] .el-form-item{margin-bottom:0}.external-section[data-v-ed273296] .el-select,.external-section[data-v-ed273296] .el-input,.external-section[data-v-ed273296] .el-input-number{width:100%}.external-actions[data-v-ed273296]{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:22px}.external-status[data-v-ed273296]{display:inline-flex;align-items:center;gap:6px;font-size:12px}.external-status.is-connected[data-v-ed273296]{color:#2ca66a}.upload-section[data-v-ed273296] .el-upload{width:100%;margin-top:16px}.upload-section[data-v-ed273296] .el-upload-dragger{width:100%;min-height:154px;padding:32px 20px;background:#fff;border-color:#dfe3ea;transition:border-color .18s ease,background-color .18s ease}.upload-section[data-v-ed273296] .el-upload-dragger:hover,.upload-section[data-v-ed273296] .el-upload-dragger:focus-visible{background:#fafaff;border-color:#8b82f4}.upload-section[data-v-ed273296] .el-upload-dragger:focus-visible{outline:2px solid #5b50f2;outline-offset:2px}.upload-icon[data-v-ed273296]{margin-bottom:12px;color:#5b50f2;font-size:30px}.uploaded-file-list[data-v-ed273296]{margin-top:20px;overflow:hidden;background:#fff;border:1px solid #dfe3ea;border-radius:8px}.uploaded-file-list-header[data-v-ed273296]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;color:#5f6878;font-size:12px;background:#fff;border-bottom:1px solid #edf0f5}.continue-upload[data-v-ed273296]{flex:0 0 auto}.continue-upload[data-v-ed273296] .el-upload{width:auto;margin-top:0}.uploaded-file-pagination[data-v-ed273296]{display:flex;justify-content:flex-end;padding:10px 14px;border-top:1px solid #edf0f5}.uploaded-file[data-v-ed273296]{display:flex;align-items:center;gap:10px;min-height:48px;padding:8px 14px;border-bottom:1px solid #edf0f5}.uploaded-file[data-v-ed273296]:last-child{border-bottom:0}.file-icon[data-v-ed273296]{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:28px;height:28px;color:#5b50f2;font-size:14px;background:#f0efff;border-radius:7px}.file-main[data-v-ed273296]{display:flex;flex:1;flex-direction:column;gap:5px;min-width:0}.file-main strong[data-v-ed273296]{overflow:hidden;color:#273142;font-size:14px;text-overflow:ellipsis;white-space:nowrap}.file-main span[data-v-ed273296]{color:#8a93a3;font-size:12px}.file-status[data-v-ed273296]{color:#2ca66a;font-size:12px}.uploaded-file[data-v-ed273296] .el-button{flex:0 0 auto}@media(max-width:900px){.external-section .external-grid[data-v-ed273296]{grid-template-columns:minmax(0,1fr)}.uploaded-file[data-v-ed273296]{gap:8px;padding:8px 10px}.file-status[data-v-ed273296]{flex:0 1 auto;line-height:1.4;white-space:normal}.uploaded-file-pagination[data-v-ed273296]{justify-content:center}}@media(max-width:560px){.section-title-row[data-v-ed273296],.uploaded-file-list-header[data-v-ed273296]{align-items:flex-start;flex-direction:column}.uploaded-file[data-v-ed273296]{align-items:flex-start;flex-wrap:wrap}.file-main[data-v-ed273296]{min-width:calc(100% - 40px)}.file-status[data-v-ed273296]{margin-left:38px}}@media(prefers-reduced-motion:reduce){.upload-section[data-v-ed273296] .el-upload-dragger{transition:none}}.preview-step[data-v-3ebb39bd]{min-width:0}.preview-file-switcher[data-v-3ebb39bd]{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:58px;padding:10px 14px;margin-bottom:12px;background:#fff;border:1px solid #e2e5ec;border-radius:9px}.file-switcher-control[data-v-3ebb39bd]{display:flex;align-items:center;min-width:0;gap:10px}.file-switcher-control>span[data-v-3ebb39bd]{flex:none;color:#667085;font-size:12px}.file-switcher-control[data-v-3ebb39bd] .el-select{width:min(360px,42vw)}.file-switcher-summary[data-v-3ebb39bd]{color:#7d8798;font-size:12px;text-align:right;white-space:nowrap}.file-option[data-v-3ebb39bd]{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px;max-width:440px}.file-option strong[data-v-3ebb39bd],.file-option span[data-v-3ebb39bd],.file-option em[data-v-3ebb39bd]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-option strong[data-v-3ebb39bd]{color:#344054;font-size:13px;font-style:normal}.file-option span[data-v-3ebb39bd]{color:#98a2b3;font-size:11px}.file-option em[data-v-3ebb39bd]{color:#5549dc;font-size:11px;font-style:normal}.preview-workspace[data-v-3ebb39bd]{display:grid;grid-template-columns:minmax(0,58fr) minmax(380px,42fr);height:clamp(560px,100vh - 370px,720px);overflow:hidden;border:1px solid #e2e5ec;border-radius:9px}.source-pane[data-v-3ebb39bd],.preview-pane[data-v-3ebb39bd]{display:flex;min-width:0;min-height:0;flex-direction:column;background:#fff}.source-pane[data-v-3ebb39bd]{border-right:1px solid #e5e8ee}.pane-header[data-v-3ebb39bd]{display:flex;align-items:center;justify-content:space-between;min-height:52px;padding:0 15px;color:#313949;background:#fff;border-bottom:1px solid #e8ebf0;font-size:13px}.pane-header>div[data-v-3ebb39bd]{display:flex;align-items:center;gap:10px}.pane-header>span[data-v-3ebb39bd]{color:#8a93a3;font-size:12px}.source-viewer[data-v-3ebb39bd]{flex:1;height:538px;padding:12px 0 24px;overflow:auto;outline:none;background:#fff;scroll-behavior:smooth}.source-line[data-v-3ebb39bd]{display:grid;grid-template-columns:48px minmax(0,1fr);min-height:29px;color:#424b5d;font-size:12px;line-height:1.8;border-left:3px solid transparent;transition:background-color .18s ease,border-color .18s ease}.source-line.is-highlighted[data-v-3ebb39bd]{background:#eeedff;border-left-color:#5b50f2}.line-number[data-v-3ebb39bd]{padding-right:11px;color:#a0a7b4;text-align:right;-webkit-user-select:none;user-select:none}.line-content[data-v-3ebb39bd]{min-width:0;padding:2px 14px 2px 0;white-space:pre-wrap;word-break:break-word}.preview-toolbar[data-v-3ebb39bd]{padding:10px 12px;border-bottom:1px solid #edf0f5}.preview-list[data-v-3ebb39bd]{flex:1 1 auto;min-height:0;padding:8px;overflow:auto;border-bottom:1px solid #e8ebf0}.preview-pagination[data-v-3ebb39bd]{display:flex;justify-content:flex-end;min-height:38px;padding:6px 12px;border-bottom:1px solid #e8ebf0}.preview-item[data-v-3ebb39bd]{display:grid;grid-template-columns:94px minmax(130px,1fr) auto;align-items:center;width:100%;min-height:40px;padding:0 10px;color:#6b7382;text-align:left;background:#fff;border:1px solid transparent;border-bottom-color:#edf0f5;cursor:pointer}.preview-item[data-v-3ebb39bd]:hover{background:#fafaff}.preview-item.is-active[data-v-3ebb39bd]{color:#3f36c8;background:#f6f5ff;border-color:#5b50f2;border-radius:6px}.item-name[data-v-3ebb39bd]{color:#344054;font-size:12px;font-weight:650}.item-source[data-v-3ebb39bd],.item-actions[data-v-3ebb39bd]{overflow:hidden;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.item-actions[data-v-3ebb39bd]{display:flex;align-items:center;gap:2px}.item-actions[data-v-3ebb39bd] .el-button{width:28px;min-height:28px;padding:0;margin:0}.empty-result[data-v-3ebb39bd]{padding:34px 16px;color:#98a2b3;text-align:center;font-size:12px}.preview-editor[data-v-3ebb39bd]{display:flex;min-height:0;flex:1 1 auto;flex-direction:column;padding:13px;overflow-y:auto}.editor-heading[data-v-3ebb39bd]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}.editor-heading strong[data-v-3ebb39bd],.editor-heading small[data-v-3ebb39bd]{display:block}.editor-heading strong[data-v-3ebb39bd]{color:#344054;font-size:12px}.editor-heading small[data-v-3ebb39bd]{margin-top:4px;color:#98a2b3;font-size:10px}.preview-editor[data-v-3ebb39bd] .el-textarea__inner{min-height:260px!important;color:#3f4756;font-size:12px;line-height:1.75}.editor-actions[data-v-3ebb39bd]{display:flex;align-items:center;justify-content:flex-end;gap:12px;margin-top:auto;padding-top:8px}@media(max-width:1100px){.preview-workspace[data-v-3ebb39bd]{grid-template-columns:minmax(0,52fr) minmax(360px,48fr)}.preview-item[data-v-3ebb39bd]{grid-template-columns:88px minmax(0,1fr) auto}}@media(max-width:900px){.preview-file-switcher[data-v-3ebb39bd]{align-items:flex-start;flex-direction:column;gap:8px}.file-switcher-control[data-v-3ebb39bd]{width:100%}.file-switcher-control[data-v-3ebb39bd] .el-select{flex:1;width:auto}.file-switcher-summary[data-v-3ebb39bd]{text-align:left;white-space:normal}.preview-workspace[data-v-3ebb39bd]{grid-template-columns:minmax(0,1fr);height:auto}.source-pane[data-v-3ebb39bd]{border-right:0;border-bottom:1px solid #e5e8ee}.source-viewer[data-v-3ebb39bd]{height:320px;flex:none}}.generation-step[data-v-9912b685]{max-width:1040px;margin:0 auto}.generation-layout[data-v-9912b685]{display:grid;grid-template-columns:minmax(280px,.78fr) minmax(420px,1.22fr);gap:28px}.summary-panel[data-v-9912b685],.run-panel[data-v-9912b685]{border:1px solid #e2e5ec;border-radius:9px}.summary-panel[data-v-9912b685]{overflow:hidden}.panel-heading[data-v-9912b685]{display:flex;align-items:center;justify-content:space-between;padding:15px 17px;background:#fff;border-bottom:1px solid #e8ebf0}.panel-heading strong[data-v-9912b685]{color:#344054;font-size:14px}.panel-heading span[data-v-9912b685]{color:#2ca66a;font-size:11px}dl[data-v-9912b685]{margin:0;padding:8px 17px}dl div[data-v-9912b685]{display:flex;justify-content:space-between;gap:20px;padding:13px 0;border-bottom:1px solid #eef0f5}dl div[data-v-9912b685]:last-child{border-bottom:0}dt[data-v-9912b685],dd[data-v-9912b685]{margin:0;font-size:12px}dt[data-v-9912b685]{color:#8a93a3}dd[data-v-9912b685]{max-width:65%;overflow:hidden;color:#344054;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.run-panel[data-v-9912b685]{display:flex;min-height:360px;align-items:center;flex-direction:column;justify-content:center;padding:34px 48px;text-align:center;background:#fff}.run-panel h3[data-v-9912b685]{margin:18px 0 8px;color:#2e3646;font-size:18px}.run-panel p[data-v-9912b685]{min-height:22px;margin:0 0 24px;color:#7b8495;font-size:12px}.run-panel[data-v-9912b685] .el-progress{width:100%;margin-bottom:18px}.run-icon[data-v-9912b685]{display:inline-flex;align-items:center;justify-content:center;width:58px;height:58px;color:#5b50f2;font-size:22px;background:#f0efff;border-radius:50%}.run-panel.is-success .run-icon[data-v-9912b685]{color:#2ca66a;background:#eaf8f1}.run-panel.is-failed .run-icon[data-v-9912b685]{color:#d97706;background:#fff7e8}.run-meta[data-v-9912b685]{display:flex;justify-content:space-between;width:100%;margin-bottom:24px;color:#98a2b3;font-size:10px}@media(max-width:900px){.generation-layout[data-v-9912b685]{grid-template-columns:minmax(0,1fr)}}.result-step[data-v-ddf55b99]{min-width:0}.result-workspace[data-v-ddf55b99]{display:grid;grid-template-columns:minmax(280px,34fr) minmax(480px,66fr);min-height:clamp(420px,100vh - 500px,590px);overflow:hidden;border:1px solid #e2e5ec;border-radius:9px}.result-list-pane[data-v-ddf55b99]{min-width:0;border-right:1px solid #e5e8ee}.pane-header[data-v-ddf55b99]{display:flex;align-items:center;justify-content:space-between;min-height:52px;padding:0 15px;color:#344054;background:#fff;border-bottom:1px solid #e8ebf0;font-size:13px}.pane-header>div[data-v-ddf55b99]{display:flex;align-items:center;gap:8px}.pane-header>span[data-v-ddf55b99],.pane-header .modified-label[data-v-ddf55b99]{color:#8a93a3;font-size:11px}.result-toolbar[data-v-ddf55b99]{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px;border-bottom:1px solid #edf0f5}.result-list[data-v-ddf55b99]{height:476px;padding:7px;overflow:auto}.result-item[data-v-ddf55b99]{display:grid;grid-template-columns:46px minmax(0,1fr) 18px;align-items:center;gap:8px;width:100%;min-height:62px;padding:9px;text-align:left;background:#fff;border:1px solid transparent;border-bottom-color:#edf0f5;cursor:pointer}.result-item[data-v-ddf55b99]:hover,.result-item.is-active[data-v-ddf55b99]{background:#f7f6ff}.result-item.is-active[data-v-ddf55b99]{border-color:#5b50f2;border-radius:6px}.result-index[data-v-ddf55b99]{color:#667085;font-size:11px}.result-copy[data-v-ddf55b99]{min-width:0}.result-copy strong[data-v-ddf55b99],.result-copy small[data-v-ddf55b99]{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.result-copy strong[data-v-ddf55b99]{color:#344054;font-size:12px}.result-copy small[data-v-ddf55b99]{margin-top:5px;color:#98a2b3;font-size:10px}.is-valid[data-v-ddf55b99]{color:#2ca66a}.is-error[data-v-ddf55b99]{color:#d97706}.result-editor-pane[data-v-ddf55b99]{min-width:0}.field-editor[data-v-ddf55b99]{padding:13px 18px 0}.field-editor label[data-v-ddf55b99]{display:flex;align-items:center;gap:6px;margin-bottom:7px;color:#344054;font-size:12px;font-weight:650}.field-editor em[data-v-ddf55b99]{color:#e05252;font-size:10px;font-style:normal;font-weight:400}.field-editor span[data-v-ddf55b99]{color:#98a2b3;font-size:10px;font-weight:400}.validation-error[data-v-ddf55b99],.validation-success[data-v-ddf55b99]{margin:12px 18px 0;padding:9px 11px;font-size:11px;border-radius:6px}.validation-error[data-v-ddf55b99]{color:#b45309;background:#fff7e8}.validation-success[data-v-ddf55b99]{color:#25895c;background:#edf9f3}.editor-pagination[data-v-ddf55b99]{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:12px 18px}.editor-pagination span[data-v-ddf55b99]{color:#8a93a3;font-size:11px}@media(max-width:900px){.result-workspace[data-v-ddf55b99]{grid-template-columns:minmax(0,1fr)}.result-list-pane[data-v-ddf55b99]{border-right:0;border-bottom:1px solid #e5e8ee}.result-list[data-v-ddf55b99]{height:260px}}.create-wizard-layout[data-v-e4c7a5ce]{display:flex;flex-direction:column;height:100%;border:1px solid #eef0f5;border-radius:8px;background:#fff}.wizard-main[data-v-e4c7a5ce]{flex:1;overflow-y:auto;padding:32px}.wizard-main[data-v-e4c7a5ce]::-webkit-scrollbar{width:6px}.wizard-main[data-v-e4c7a5ce]::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}.wizard-main-inner[data-v-e4c7a5ce]{min-height:100%;box-sizing:border-box}.wizard-steps-container[data-v-e4c7a5ce]{margin-bottom:32px;padding-bottom:24px;border-bottom:1px dashed #e2e8f0}.custom-wizard-steps[data-v-e4c7a5ce]{display:flex;align-items:center;justify-content:space-between;max-width:1040px;margin:0 auto;padding:0 20px}.step-item[data-v-e4c7a5ce]{display:flex;align-items:center;flex:none}.step-connector[data-v-e4c7a5ce]{flex:1;height:2px;margin:0 16px;background-color:#e2e8f0;transition:background-color .3s}.step-connector.is-active[data-v-e4c7a5ce]{background-color:#5146e5}.step-node[data-v-e4c7a5ce]{display:flex;align-items:center;flex-shrink:0;gap:10px}.step-icon[data-v-e4c7a5ce]{display:flex;align-items:center;justify-content:center;width:28px;height:28px;color:#64748b;font-size:13px;font-weight:650;background-color:#fff;border:2px solid #cbd5e1;border-radius:50%;transition:all .3s}.step-title[data-v-e4c7a5ce]{color:#64748b;font-size:14px;font-weight:600;white-space:nowrap}.step-item.is-active .step-icon[data-v-e4c7a5ce]{color:#5146e5;background-color:#eef2ff;border-color:#5146e5}.step-item.is-active .step-title[data-v-e4c7a5ce]{color:#1e293b}.step-item.is-completed .step-icon[data-v-e4c7a5ce]{color:#fff;background-color:#5146e5;border-color:#5146e5}.step-item.is-completed .step-title[data-v-e4c7a5ce]{color:#1e293b}.wizard-content[data-v-e4c7a5ce]{min-height:400px}.wizard-footer[data-v-e4c7a5ce]{display:grid;flex-shrink:0;grid-template-columns:1fr auto 1fr;align-items:center;height:64px;padding:0 32px;background:#fff;border-top:1px solid #e2e8f0;box-shadow:0 -4px 6px -1px #00000005}.wizard-footer .footer-left[data-v-e4c7a5ce]{justify-self:start}.wizard-footer .footer-center[data-v-e4c7a5ce]{justify-self:center}.wizard-footer .footer-right[data-v-e4c7a5ce]{justify-self:end}.wizard-primary-action[data-v-e4c7a5ce]{min-width:160px}@media(max-width:1100px){.custom-wizard-steps[data-v-e4c7a5ce]{padding:0}.step-connector[data-v-e4c7a5ce]{margin:0 8px}.step-node[data-v-e4c7a5ce]{gap:7px}.step-title[data-v-e4c7a5ce]{display:none}.step-item.is-active .step-title[data-v-e4c7a5ce]{display:block;font-size:12px;white-space:nowrap}}@media(max-width:760px){.wizard-main[data-v-e4c7a5ce]{padding:24px 20px}.custom-wizard-steps[data-v-e4c7a5ce]{padding:0}.step-connector[data-v-e4c7a5ce]{margin:0 8px}.step-node[data-v-e4c7a5ce]{gap:6px}.step-title[data-v-e4c7a5ce]{max-width:72px;line-height:1.35}.wizard-footer[data-v-e4c7a5ce]{padding:0 20px}}@media(max-width:600px){.step-title[data-v-e4c7a5ce]{display:none}.step-connector[data-v-e4c7a5ce]{margin:0 6px}.wizard-primary-action[data-v-e4c7a5ce]{min-width:0}} diff --git a/frontend/dist/assets/DataProcessDetailView-B1q0P6u8.css b/frontend/dist/assets/DataProcessDetailView-B1q0P6u8.css new file mode 100644 index 0000000..d90e175 --- /dev/null +++ b/frontend/dist/assets/DataProcessDetailView-B1q0P6u8.css @@ -0,0 +1 @@ +.data-process-detail-page[data-v-2959b892]{width:100%;min-width:0}.detail-heading[data-v-2959b892]{width:100%}.detail-heading .heading-row[data-v-2959b892]{display:flex;align-items:center;gap:12px}.detail-heading h1[data-v-2959b892]{margin:0;color:#1f2937;font-size:20px;font-weight:600}.detail-heading>p[data-v-2959b892]{margin:8px 0 0;color:#64748b;font-size:13px}.heading-meta[data-v-2959b892]{margin:16px 0 0;display:flex;flex-wrap:wrap;gap:10px 30px}.heading-meta div[data-v-2959b892]{display:flex;gap:7px;font-size:12px}.heading-meta dt[data-v-2959b892]{color:#94a3b8}.heading-meta dd[data-v-2959b892]{margin:0;color:#475569;font-weight:500}.metric-grid[data-v-2959b892]{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.metric-card[data-v-2959b892]{min-height:116px;padding:18px;border:1px solid #e5e7eb;border-radius:8px;background:#fff;display:flex;flex-direction:column}.metric-card>span[data-v-2959b892]{color:#64748b;font-size:12px}.metric-card>strong[data-v-2959b892]{margin-top:10px;color:#1f2937;font-size:22px;font-weight:600}.metric-card>small[data-v-2959b892]{margin-top:auto;color:#94a3b8;font-size:12px}.metric-card[data-v-2959b892] .el-progress{margin-top:auto}.metric-card.is-primary[data-v-2959b892]{border-color:var(--el-color-primary-light-7);background:var(--el-color-primary-light-9)}.metric-card.is-primary>strong[data-v-2959b892]{color:var(--primary-color)}.failure-alert[data-v-2959b892]{margin-top:16px;padding:14px 16px;border:1px solid #fecaca;border-radius:8px;background:#fef2f2;color:#b91c1c;display:flex;gap:12px}.failure-alert>i[data-v-2959b892]{margin-top:2px}.failure-alert strong[data-v-2959b892]{font-size:13px}.failure-alert p[data-v-2959b892]{margin:4px 0 0;color:#7f1d1d;font-size:12px}.detail-grid[data-v-2959b892]{margin-top:16px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.detail-section[data-v-2959b892]{border:1px solid #e5e7eb;border-radius:8px;background:#fff;overflow:hidden}.section-heading[data-v-2959b892]{padding:16px 18px;border-bottom:1px solid #eef0f3}.section-heading h2[data-v-2959b892]{margin:0;color:#1f2937;font-size:15px;font-weight:600}.section-heading p[data-v-2959b892]{margin:4px 0 0;color:#94a3b8;font-size:12px}.info-list[data-v-2959b892]{margin:0;padding:4px 18px 12px}.info-list>div[data-v-2959b892]{min-height:44px;border-bottom:1px solid #f1f5f9;display:grid;grid-template-columns:100px minmax(0,1fr);align-items:center}.info-list>div[data-v-2959b892]:last-child{border-bottom:0}.info-list>div dt[data-v-2959b892]{color:#64748b;font-size:12px}.info-list>div dd[data-v-2959b892]{margin:0;color:#334155;font-size:13px;text-align:right}.info-list>div[data-v-2959b892] .el-button{height:auto;padding:0}.statistics-grid[data-v-2959b892]{padding:18px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.statistics-grid>div[data-v-2959b892]{min-height:78px;padding:13px;border-radius:6px;background:#f8fafc;display:flex;flex-direction:column;gap:8px}.statistics-grid>div span[data-v-2959b892]{color:#64748b;font-size:12px}.statistics-grid>div strong[data-v-2959b892]{color:#1f2937;font-size:18px;font-weight:600}.config-section[data-v-2959b892],.result-section[data-v-2959b892]{margin-top:16px}.config-grid[data-v-2959b892]{margin:0;padding:8px 18px 16px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:40px}.config-grid>div[data-v-2959b892]{min-height:48px;border-bottom:1px solid #f1f5f9;display:flex;align-items:center;justify-content:space-between;gap:20px}.config-grid dt[data-v-2959b892]{color:#64748b;font-size:12px}.config-grid dd[data-v-2959b892]{margin:0;color:#334155;font-size:13px;text-align:right}.result-toolbar[data-v-2959b892]{display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid #eef0f3}.result-toolbar .section-heading[data-v-2959b892]{border-bottom:0}.result-filters[data-v-2959b892]{padding-right:18px;display:flex;gap:10px}.result-filters[data-v-2959b892] .el-input{width:250px}.result-filters[data-v-2959b892] .el-select{width:120px}.result-section[data-v-2959b892] .el-table{border-radius:0}.result-empty[data-v-2959b892],.not-found-state[data-v-2959b892]{min-height:220px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#94a3b8}.result-empty>i[data-v-2959b892],.not-found-state>i[data-v-2959b892]{margin-bottom:12px;color:var(--el-color-primary-light-5);font-size:30px}.result-empty strong[data-v-2959b892],.result-empty h2[data-v-2959b892],.not-found-state strong[data-v-2959b892],.not-found-state h2[data-v-2959b892]{margin:0;color:#475569;font-size:14px;font-weight:500}.result-empty span[data-v-2959b892],.result-empty p[data-v-2959b892],.not-found-state span[data-v-2959b892],.not-found-state p[data-v-2959b892]{margin:6px 0 16px;font-size:12px}.result-pagination[data-v-2959b892]{min-height:56px;padding:0 18px;border-top:1px solid #eef0f3;display:flex;align-items:center;justify-content:space-between}.result-pagination>span[data-v-2959b892]{color:#94a3b8;font-size:12px}.result-pagination[data-v-2959b892] .el-pagination{margin-top:0}@media(max-width:1100px){.metric-grid[data-v-2959b892]{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-grid[data-v-2959b892]{grid-template-columns:1fr}}@media(max-width:720px){.metric-grid[data-v-2959b892],.config-grid[data-v-2959b892]{grid-template-columns:1fr}.result-toolbar[data-v-2959b892]{align-items:stretch;flex-direction:column}.result-filters[data-v-2959b892]{padding:0 16px 16px;flex-direction:column}.result-filters[data-v-2959b892] .el-input,.result-filters[data-v-2959b892] .el-select{width:100%}.heading-meta[data-v-2959b892]{flex-direction:column;gap:6px}} diff --git a/frontend/dist/assets/DataProcessDetailView-DrQeE7-I.js b/frontend/dist/assets/DataProcessDetailView-DrQeE7-I.js new file mode 100644 index 0000000..b07949c --- /dev/null +++ b/frontend/dist/assets/DataProcessDetailView-DrQeE7-I.js @@ -0,0 +1 @@ +import{E as J}from"./index-TFUf94PZ.js";import{E as K}from"./index-BjEW7-SA.js";import{E as M}from"./index-BDEF353-.js";import{a as j,E as q}from"./el-select-Dl-FRZQd.js";import{E as A}from"./el-pagination-DOPYW-qb.js";import{E as G}from"./el-progress-DuOxpLST.js";import{a as H,E as Q}from"./el-table-D8K5zLyz.js";import{d as W,e as T,a$ as X,w as i,j as c,o as u,q as t,aa as a,s as o,c as r,x as _,f as x,g as k,M as L,ad as Y,n as Z,v as h,y as C,ac as tt}from"./index-BKKvzUDD.js";import"./el-scrollbar-ClJnvz-9.js";import"./el-popper-D6_hxRbQ.js";/* empty css */import"./el-tooltip-l0sNRNKZ.js";import"./el-checkbox-qGZ2-RM2.js";import{P as lt}from"./PageCard-BoKXOzst.js";import{_ as et}from"./ModelStatusTag.vue_vue_type_script_setup_true_lang-VFIQNBU2.js";import{_ as at}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./raf-C-x62Pcl.js";import"./index-DLzof2Fz.js";import"./index-GAnQrJsQ.js";import"./index-CWUnzf90.js";import"./castArray-5uErZEc3.js";import"./vnode-78qeDweP.js";import"./index-D5ryD3I5.js";import"./scroll-BkzZKETR.js";import"./clamp-CbbY8h6F.js";import"./toNumber-Dkj3QRv9.js";import"./_baseIteratee-BAilevJ_.js";import"./_baseClone-B5RBzbh5.js";import"./debounce-ByXPNh5F.js";import"./omit-BTSq4AYh.js";import"./el-card-CApHJ1Gj.js";const st={class:"detail-heading"},nt={class:"heading-row"},ot={class:"heading-meta"},ut={key:0,class:"not-found-state"},it={class:"metric-grid","aria-label":"处理结果概览"},rt={class:"metric-card"},dt={class:"metric-card"},pt={class:"metric-card"},vt={class:"metric-card is-primary"},mt={key:0,class:"failure-alert",role:"alert"},ct={class:"detail-grid"},gt={class:"detail-section","aria-labelledby":"runtime-title"},ft={class:"info-list"},bt={key:1},Ct={class:"detail-section","aria-labelledby":"statistics-title"},yt={class:"statistics-grid"},wt={class:"detail-section config-section","aria-labelledby":"config-title"},Dt={class:"config-grid"},Tt={class:"detail-section result-section","aria-labelledby":"result-title"},_t={class:"result-toolbar"},kt={key:0,class:"result-filters"},Et={key:1,class:"result-empty"},St={key:2,class:"result-pagination"},xt=W({__name:"DataProcessDetailView",setup(Lt){const V={183921:{id:"183921",name:"客服问答数据清洗",status:"completed",description:"清洗客服对话中的无效记录、重复问答和格式异常内容,生成可用于模型训练的标准数据集。",processType:"结构化数据",sourceDataset:"客服对话原始集",outputDataset:"客服对话清洗集",outputDatasetId:7,creator:"管理员",createTime:"2026-07-08 14:23:00",startTime:"2026-07-08 14:23:18",completeTime:"2026-07-08 14:28:42",duration:"5 分 24 秒",progress:100,inputCount:19068,outputCount:18240,filteredCount:186,duplicateCount:642,errorCount:0,config:[{label:"预处理规则",value:"清理无效数据、结构检测、内容去重、格式标准化"},{label:"输出格式",value:"Alpaca JSONL"},{label:"数据集划分",value:"训练集 80% / 验证集 10% / 测试集 10%"},{label:"处理引擎",value:"DataFlow Engine v2.3"}],results:[{id:"result-001",instruction:"用户询问如何修改订单收货地址,应如何回复?",input:"订单已经提交,但还没有发货。",output:"您好,订单发货前可以在订单详情中申请修改收货地址,提交后请等待系统审核。",status:"valid"},{id:"result-002",instruction:"概括用户的退款诉求。",input:"商品收到后发现破损,希望尽快退货退款。",output:"用户因商品破损申请退货退款,并希望尽快处理。",status:"modified"},{id:"result-003",instruction:"判断咨询所属业务类型。",input:"会员积分什么时候到账?",output:"会员权益 / 积分到账咨询",status:"valid"},{id:"result-004",instruction:"生成简洁的客服回复。",input:"优惠券显示已过期,但昨天还能使用。",output:"您好,请提供优惠券名称和订单信息,我们将为您核实有效期及使用记录。",status:"valid"}]},492015:{id:"492015",name:"指令微调数据构造",status:"running",description:"从通用语料中构造指令微调训练样本。",processType:"非结构化数据",sourceDataset:"通用语料库",outputDataset:"SFT 指令集",outputDatasetId:8,creator:"管理员",createTime:"2026-07-09 09:10:00",startTime:"2026-07-09 09:10:21",duration:"处理中",progress:68,inputCount:18500,outputCount:8568,filteredCount:425,duplicateCount:192,errorCount:8,config:[{label:"切分方式",value:"语义切分"},{label:"切片长度",value:"800 Tokens,重叠 80 Tokens"},{label:"生成数量",value:"每个切片生成 2 组问答"},{label:"处理引擎",value:"DataFlow Engine v2.3"}],results:[]},731948:{id:"731948",name:"敏感信息脱敏处理",status:"pending",description:"识别并脱敏用户反馈数据中的敏感字段。",processType:"结构化数据",sourceDataset:"用户反馈数据",outputDataset:"用户反馈脱敏集",outputDatasetId:9,creator:"管理员",createTime:"2026-07-09 16:45:00",duration:"等待执行",progress:0,inputCount:9340,outputCount:0,filteredCount:0,duplicateCount:0,errorCount:0,config:[{label:"脱敏范围",value:"姓名、手机号、身份证号、地址"},{label:"替换方式",value:"掩码替换"},{label:"输出格式",value:"JSONL"},{label:"处理引擎",value:"DataFlow Engine v2.3"}],results:[]},582012:{id:"582012",name:"多轮对话拼接",status:"failed",description:"将单轮问答按会话标识拼接为多轮对话数据。",processType:"结构化数据",sourceDataset:"单轮问答集",creator:"管理员",createTime:"2026-07-10 08:30:00",startTime:"2026-07-10 08:30:16",completeTime:"2026-07-10 08:31:04",duration:"48 秒",progress:37,inputCount:7520,outputCount:2780,filteredCount:24,duplicateCount:0,errorCount:1,config:[{label:"会话字段",value:"conversation_id"},{label:"排序字段",value:"message_time"},{label:"最大轮次",value:"20 轮"},{label:"处理引擎",value:"DataFlow Engine v2.3"}],results:[],failureReason:"第 2 个源文件缺少 conversation_id 字段,无法继续执行会话拼接。"}},R=tt(),E=h(),y=C(""),g=C(""),f=C(1),b=C(10),I=c(()=>String(R.params.id||"")),e=c(()=>V[I.value]),P=c(()=>{var n;return(n=e.value)!=null&&n.inputCount?Number((e.value.outputCount/e.value.inputCount*100).toFixed(1)):0}),p=c(()=>{var l;const n=y.value.trim().toLowerCase();return(((l=e.value)==null?void 0:l.results)||[]).filter(d=>{const w=!g.value||d.status===g.value,D=!n||[d.instruction,d.input,d.output].some(v=>v.toLowerCase().includes(n));return w&&D})}),$=c(()=>{const n=(f.value-1)*b.value;return p.value.slice(n,n+b.value)});function F(n){return n==="valid"?"有效":n==="modified"?"已修改":"无效"}function z(n){return n==="valid"?"success":n==="modified"?"warning":"danger"}function S(){f.value=1}return(n,l)=>{const d=K,w=G,D=J,v=j,N=q,m=Q,B=M,U=H,O=A;return u(),T(lt,{class:"data-process-detail-page"},X({default:i(()=>[e.value?(u(),r(L,{key:1},[t("section",it,[t("div",rt,[l[13]||(l[13]=t("span",null,"处理耗时",-1)),t("strong",null,a(e.value.duration||"尚未开始"),1),t("small",null,a(e.value.completeTime?`完成于 ${e.value.completeTime}`:`当前进度 ${e.value.progress}%`),1)]),t("div",dt,[l[14]||(l[14]=t("span",null,"输入数据",-1)),t("strong",null,a(e.value.inputCount.toLocaleString()),1),t("small",null,"来源:"+a(e.value.sourceDataset),1)]),t("div",pt,[l[15]||(l[15]=t("span",null,"输出结果",-1)),t("strong",null,a(e.value.outputCount.toLocaleString()),1),t("small",null,a(e.value.outputDataset||"尚未生成输出数据集"),1)]),t("div",vt,[l[16]||(l[16]=t("span",null,"数据保留率",-1)),t("strong",null,a(e.value.inputCount?`${P.value}%`:"-"),1),o(w,{percentage:e.value.progress,"show-text":!1,"stroke-width":5},null,8,["percentage"])])]),e.value.failureReason?(u(),r("div",mt,[l[18]||(l[18]=t("i",{class:"fa fa-exclamation-triangle","aria-hidden":"true"},null,-1)),t("div",null,[l[17]||(l[17]=t("strong",null,"处理任务执行失败",-1)),t("p",null,a(e.value.failureReason),1)])])):k("",!0),t("div",ct,[t("section",gt,[l[26]||(l[26]=t("div",{class:"section-heading"},[t("div",null,[t("h2",{id:"runtime-title"},"运行信息"),t("p",null,"查看任务执行时间与数据流向")])],-1)),t("dl",ft,[t("div",null,[l[19]||(l[19]=t("dt",null,"创建时间",-1)),t("dd",null,a(e.value.createTime),1)]),t("div",null,[l[20]||(l[20]=t("dt",null,"开始时间",-1)),t("dd",null,a(e.value.startTime||"尚未开始"),1)]),t("div",null,[l[21]||(l[21]=t("dt",null,"完成时间",-1)),t("dd",null,a(e.value.completeTime||"尚未完成"),1)]),t("div",null,[l[22]||(l[22]=t("dt",null,"处理耗时",-1)),t("dd",null,a(e.value.duration||"-"),1)]),t("div",null,[l[23]||(l[23]=t("dt",null,"源数据集",-1)),t("dd",null,a(e.value.sourceDataset),1)]),t("div",null,[l[25]||(l[25]=t("dt",null,"输出数据集",-1)),t("dd",null,[e.value.outputDataset&&e.value.status==="completed"?(u(),T(d,{key:0,type:"primary",link:"",onClick:l[1]||(l[1]=s=>x(E).push(`/dataset/${e.value.outputDatasetId}/preview`))},{default:i(()=>[_(a(e.value.outputDataset)+" ",1),l[24]||(l[24]=t("i",{class:"fa fa-external-link"},null,-1))]),_:1})):(u(),r("span",bt,a(e.value.outputDataset||"尚未生成"),1))])])])]),t("section",Ct,[l[33]||(l[33]=t("div",{class:"section-heading"},[t("div",null,[t("h2",{id:"statistics-title"},"处理统计"),t("p",null,"查看数据清洗、过滤和输出情况")])],-1)),t("div",yt,[t("div",null,[l[27]||(l[27]=t("span",null,"原始数据",-1)),t("strong",null,a(e.value.inputCount.toLocaleString()),1)]),t("div",null,[l[28]||(l[28]=t("span",null,"成功输出",-1)),t("strong",null,a(e.value.outputCount.toLocaleString()),1)]),t("div",null,[l[29]||(l[29]=t("span",null,"过滤数据",-1)),t("strong",null,a(e.value.filteredCount.toLocaleString()),1)]),t("div",null,[l[30]||(l[30]=t("span",null,"重复数据",-1)),t("strong",null,a(e.value.duplicateCount.toLocaleString()),1)]),t("div",null,[l[31]||(l[31]=t("span",null,"异常数据",-1)),t("strong",null,a(e.value.errorCount.toLocaleString()),1)]),t("div",null,[l[32]||(l[32]=t("span",null,"执行进度",-1)),t("strong",null,a(e.value.progress)+"%",1)])])])]),t("section",wt,[l[34]||(l[34]=t("div",{class:"section-heading"},[t("div",null,[t("h2",{id:"config-title"},"处理配置"),t("p",null,"任务执行时使用的规则与参数")])],-1)),t("dl",Dt,[(u(!0),r(L,null,Y(e.value.config,s=>(u(),r("div",{key:s.label},[t("dt",null,a(s.label),1),t("dd",null,a(s.value),1)]))),128))])]),t("section",Tt,[t("div",_t,[l[36]||(l[36]=t("div",{class:"section-heading"},[t("div",null,[t("h2",{id:"result-title"},"结果明细"),t("p",null,"查看处理完成后的数据内容与校验状态")])],-1)),e.value.results.length?(u(),r("div",kt,[o(D,{modelValue:y.value,"onUpdate:modelValue":l[2]||(l[2]=s=>y.value=s),clearable:"",placeholder:"搜索指令、输入或输出",onInput:S},{prefix:i(()=>[...l[35]||(l[35]=[t("i",{class:"fa fa-search","aria-hidden":"true"},null,-1)])]),_:1},8,["modelValue"]),o(N,{modelValue:g.value,"onUpdate:modelValue":l[3]||(l[3]=s=>g.value=s),clearable:"",placeholder:"全部状态",onChange:S},{default:i(()=>[o(v,{label:"有效",value:"valid"}),o(v,{label:"已修改",value:"modified"}),o(v,{label:"无效",value:"invalid"})]),_:1},8,["modelValue"])])):k("",!0)]),p.value.length?(u(),T(U,{key:0,data:$.value,"row-key":"id","table-layout":"fixed"},{default:i(()=>[o(m,{type:"index",label:"#",width:"56",align:"center"}),o(m,{label:"指令","min-width":"210","show-overflow-tooltip":"",prop:"instruction"}),o(m,{label:"输入","min-width":"190","show-overflow-tooltip":"",prop:"input"}),o(m,{label:"输出","min-width":"260","show-overflow-tooltip":"",prop:"output"}),o(m,{label:"状态",width:"90",align:"center"},{default:i(({row:s})=>[o(B,{type:z(s.status),size:"small"},{default:i(()=>[_(a(F(s.status)),1)]),_:2},1032,["type"])]),_:1})]),_:1},8,["data"])):(u(),r("div",Et,[t("i",{class:Z(["fa",e.value.status==="failed"?"fa-exclamation-circle":"fa-hourglass-half"]),"aria-hidden":"true"},null,2),t("strong",null,a(e.value.status==="completed"?"没有符合条件的结果":e.value.status==="failed"?"任务失败,未生成结果明细":"处理完成后将在这里展示结果明细"),1),t("span",null,a(e.value.status==="completed"?"请调整搜索或筛选条件":`当前任务状态:${e.value.status==="running"?"运行中":"等待中"}`),1)])),p.value.length?(u(),r("div",St,[t("span",null,"共 "+a(p.value.length)+" 条结果",1),o(O,{"current-page":f.value,"onUpdate:currentPage":l[4]||(l[4]=s=>f.value=s),"page-size":b.value,"onUpdate:pageSize":l[5]||(l[5]=s=>b.value=s),layout:"prev, pager, next",total:p.value.length},null,8,["current-page","page-size","total"])])):k("",!0)])],64)):(u(),r("div",ut,[l[10]||(l[10]=t("i",{class:"fa fa-exclamation-circle","aria-hidden":"true"},null,-1)),l[11]||(l[11]=t("h2",null,"未找到数据处理任务",-1)),l[12]||(l[12]=t("p",null,"任务可能已被删除,或当前链接已失效。",-1)),o(d,{type:"primary",onClick:l[0]||(l[0]=s=>x(E).push("/data-process"))},{default:i(()=>[...l[9]||(l[9]=[_("返回任务列表",-1)])]),_:1})]))]),_:2},[e.value?{name:"header",fn:i(()=>[t("div",st,[t("div",nt,[t("h1",null,a(e.value.name),1),o(et,{status:e.value.status},null,8,["status"])]),t("p",null,a(e.value.description),1),t("dl",ot,[t("div",null,[l[6]||(l[6]=t("dt",null,"任务 ID",-1)),t("dd",null,a(e.value.id),1)]),t("div",null,[l[7]||(l[7]=t("dt",null,"处理类型",-1)),t("dd",null,a(e.value.processType),1)]),t("div",null,[l[8]||(l[8]=t("dt",null,"创建人",-1)),t("dd",null,a(e.value.creator),1)])])])]),key:"0"}:void 0]),1024)}}}),ul=at(xt,[["__scopeId","data-v-2959b892"]]);export{ul as default}; diff --git a/frontend/dist/assets/DataProcessListView-D6X_r5Q_.css b/frontend/dist/assets/DataProcessListView-D6X_r5Q_.css new file mode 100644 index 0000000..93e2137 --- /dev/null +++ b/frontend/dist/assets/DataProcessListView-D6X_r5Q_.css @@ -0,0 +1 @@ +.action-buttons[data-v-c0da9336]{display:flex;justify-content:center;gap:8px} diff --git a/frontend/dist/assets/DataProcessListView-Ds7sKAJx.js b/frontend/dist/assets/DataProcessListView-Ds7sKAJx.js new file mode 100644 index 0000000..a0f37f8 --- /dev/null +++ b/frontend/dist/assets/DataProcessListView-Ds7sKAJx.js @@ -0,0 +1 @@ +import{E as b}from"./index-BjEW7-SA.js";import{E as k}from"./index-BDEF353-.js";import{E as x}from"./el-table-D8K5zLyz.js";import{d as v,c as m,s as e,w as a,y as D,o as l,q as p,x as i,e as C,aa as n,A as E,v as T}from"./index-BKKvzUDD.js";/* empty css */import"./el-checkbox-qGZ2-RM2.js";import{D as z}from"./DataTablePage-C-EM-7-s.js";import{_ as B}from"./ModelStatusTag.vue_vue_type_script_setup_true_lang-VFIQNBU2.js";import{_ as V}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./el-scrollbar-ClJnvz-9.js";import"./index-GAnQrJsQ.js";import"./el-popper-D6_hxRbQ.js";import"./index-CWUnzf90.js";import"./_baseClone-B5RBzbh5.js";import"./_baseIteratee-BAilevJ_.js";import"./castArray-5uErZEc3.js";import"./debounce-ByXPNh5F.js";import"./toNumber-Dkj3QRv9.js";import"./raf-C-x62Pcl.js";import"./omit-BTSq4AYh.js";import"./index-TFUf94PZ.js";import"./index-DLzof2Fz.js";import"./el-card-CApHJ1Gj.js";import"./el-pagination-DOPYW-qb.js";import"./el-select-Dl-FRZQd.js";import"./vnode-78qeDweP.js";import"./index-D5ryD3I5.js";import"./scroll-BkzZKETR.js";import"./clamp-CbbY8h6F.js";import"./directive-DsZckUTJ.js";import"./index-dNo5H1ie.js";import"./validator-Fn0bm4xU.js";import"./index-CQXVR1Ud.js";import"./index-DfyOU94W.js";import"./el-tooltip-l0sNRNKZ.js";const L={class:"data-process-page",style:{height:"100%"}},N={key:1},I={class:"action-buttons"},P=v({__name:"DataProcessListView",setup(S){const u={structured:"结构化数据",unstructured:"非结构化数据",external:"外来数据源拉取"},d=T(),_=D([{id:183921,name:"客服问答数据清洗",status:"completed",process_type:"structured",source_dataset:"客服对话原始集",output_dataset:"客服对话清洗集",create_time:"2026-07-08 14:23:00"},{id:492015,name:"指令微调数据构造",status:"running",process_type:"unstructured",source_dataset:"通用语料库",output_dataset:"SFT 指令集",create_time:"2026-07-09 09:10:00"},{id:731948,name:"敏感信息脱敏处理",status:"pending",process_type:"structured",source_dataset:"用户反馈数据",create_time:"2026-07-09 16:45:00"},{id:582012,name:"多轮对话拼接",status:"failed",process_type:"structured",source_dataset:"单轮问答集",create_time:"2026-07-10 08:30:00"}]);function f(s){const r=s.id;d.push({name:"data-process-detail",params:{id:r}})}function g(s){E.info("删除功能开发中...")}function y(s){return s?new Date(s).toLocaleString("zh-CN",{hour12:!1}):"-"}return(s,r)=>{const o=x,h=k,c=b;return l(),m("div",L,[e(z,{title:"",data:_.value,searchable:"","search-fields":["name"],"create-text":"新建数据处理","create-to":"/data-process/create","row-key":"id","page-size":10},{columns:a(()=>[e(o,{label:"任务ID",prop:"id",align:"center",width:"100"}),e(o,{label:"任务名称",prop:"name",align:"center","show-overflow-tooltip":""}),e(o,{label:"任务状态",align:"center",width:"110"},{default:a(({row:t})=>[e(B,{status:t.status},null,8,["status"])]),_:1}),e(o,{label:"处理类型",align:"center",width:"140"},{default:a(({row:t})=>[t.process_type?(l(),C(h,{key:0,size:"small",type:"info",effect:"plain"},{default:a(()=>[i(n(u[t.process_type]||t.process_type),1)]),_:2},1024)):(l(),m("span",N,"-"))]),_:1}),e(o,{label:"源数据集",align:"center","show-overflow-tooltip":""},{default:a(({row:t})=>[i(n(t.source_dataset||"-"),1)]),_:1}),e(o,{label:"输出数据集",align:"center","show-overflow-tooltip":""},{default:a(({row:t})=>[i(n(t.output_dataset||"-"),1)]),_:1}),e(o,{label:"创建时间",align:"center",width:"190"},{default:a(({row:t})=>[i(n(y(t.create_time)),1)]),_:1})]),actions:a(({row:t})=>[p("div",I,[e(c,{type:"primary",link:"",size:"small",onClick:w=>f(t)},{default:a(()=>[...r[0]||(r[0]=[p("i",{class:"fa fa-file-text-o",style:{"margin-right":"4px"}},null,-1),i("详情 ",-1)])]),_:1},8,["onClick"]),e(c,{type:"danger",link:"",size:"small",onClick:w=>g(t)},{default:a(()=>[...r[1]||(r[1]=[p("i",{class:"fa fa-trash-o",style:{"margin-right":"4px"}},null,-1),i("删除 ",-1)])]),_:1},8,["onClick"])])]),_:1},8,["data"])])}}}),yt=V(P,[["__scopeId","data-v-c0da9336"]]);export{yt as default}; diff --git a/frontend/dist/assets/DataTablePage-C-EM-7-s.js b/frontend/dist/assets/DataTablePage-C-EM-7-s.js new file mode 100644 index 0000000..a76ce27 --- /dev/null +++ b/frontend/dist/assets/DataTablePage-C-EM-7-s.js @@ -0,0 +1 @@ +import{E as M}from"./index-TFUf94PZ.js";import{E as Z}from"./index-BjEW7-SA.js";import{E as A}from"./el-card-CApHJ1Gj.js";import{E as G}from"./el-pagination-DOPYW-qb.js";import{E as H,a as J}from"./el-table-D8K5zLyz.js";import{v as O}from"./directive-DsZckUTJ.js";import{E as b}from"./index-dNo5H1ie.js";import{d as Q,y as f,D as _,c as D,s as p,w as r,o as u,q as s,h as w,e as g,g as v,x as y,aa as k,Z as W,K as X,j as $,v as Y}from"./index-BKKvzUDD.js";import"./el-scrollbar-ClJnvz-9.js";import"./el-popper-D6_hxRbQ.js";/* empty css */import"./el-select-Dl-FRZQd.js";import"./el-tooltip-l0sNRNKZ.js";import"./el-checkbox-qGZ2-RM2.js";import{_ as ee}from"./_plugin-vue_export-helper-DlAUqK2U.js";const te={class:"data-table-page"},ae={class:"table-toolbar"},le={class:"table-title"},oe={class:"toolbar-actions"},se={key:0,class:"batch-bar"},ne={class:"batch-info"},re={class:"table-body"},ie={class:"table-pagination"},ce=Q({__name:"DataTablePage",props:{title:{},data:{},loading:{type:Boolean,default:!1},searchable:{type:Boolean,default:!1},searchFields:{},multiSelect:{type:Boolean,default:!1},createText:{},createTo:{},deleteFn:{},rowKey:{default:"id"},emptyText:{default:"暂无数据"},pageSize:{default:10},pageSizes:{default:()=>[10,20,50,100]}},emits:["create","refresh"],setup(l,{expose:F,emit:V}){const a=l,x=V,P=Y(),S=f(),o=f(new Set),d=f(""),m=f(1),h=f(a.pageSize);function z(t){return t[a.rowKey]??t.name??t.id}const T=$(()=>{var e;if(!d.value.trim()||!((e=a.searchFields)!=null&&e.length))return a.data;const t=d.value.toLowerCase().trim();return a.data.filter(i=>a.searchFields.some(n=>String(i[n]??"").toLowerCase().includes(t)))}),I=$(()=>{const t=(m.value-1)*h.value;return T.value.slice(t,t+h.value)});function K(t){o.value=new Set(t.map(z))}async function E(t,e="确定要删除这条记录吗?"){if(a.deleteFn)try{await b.confirm(e,"确认删除",{type:"warning",confirmButtonText:"确定",cancelButtonText:"取消"}),await a.deleteFn(t),x("refresh")}catch{}}async function N(){if(!(o.value.size===0||!a.deleteFn))try{await b.confirm(`确定要删除选中的 ${o.value.size} 条记录吗?`,"批量删除",{type:"warning"});const t=a.data.filter(n=>o.value.has(z(n)));let e=0,i=0;for(const n of t)try{await a.deleteFn(n),e++}catch{i++}o.value.clear(),x("refresh"),i===0?b.alert(`成功删除 ${e} 条记录`,"成功",{type:"success"}):b.alert(`成功 ${e} 条,失败 ${i} 条`,"部分失败",{type:"warning"})}catch{}}function C(){var t;o.value.clear(),(t=S.value)==null||t.clearSelection()}function L(){a.createTo?P.push(a.createTo):x("create")}return _(()=>a.data,()=>{var t;o.value.clear(),m.value=1,(t=S.value)==null||t.clearSelection()}),_(()=>d.value,()=>{m.value=1}),F({handleDelete:E,clearSelection:C}),(t,e)=>{const i=M,n=Z,B=H,R=J,U=G,j=A,q=O;return u(),D("div",te,[p(j,{shadow:"never",class:"table-card"},{default:r(()=>[s("div",ae,[w(t.$slots,"title",{},()=>[s("h2",le,k(l.title),1)],!0),s("div",oe,[l.searchable?(u(),g(i,{key:0,modelValue:d.value,"onUpdate:modelValue":e[0]||(e[0]=c=>d.value=c),placeholder:`搜索${l.title}...`,clearable:"",class:"search-input"},{prefix:r(()=>[...e[3]||(e[3]=[s("i",{class:"fa fa-search"},null,-1)])]),_:1},8,["modelValue","placeholder"])):v("",!0),l.createText?(u(),g(n,{key:1,type:"primary",onClick:L},{default:r(()=>[e[4]||(e[4]=s("i",{class:"fa fa-plus",style:{"margin-right":"4px"}},null,-1)),y(" "+k(l.createText),1)]),_:1})):v("",!0),w(t.$slots,"toolbar-extra",{},void 0,!0)])]),p(W,{name:"el-zoom-in-top"},{default:r(()=>[l.multiSelect&&o.value.size>0?(u(),D("div",se,[s("span",ne,[e[6]||(e[6]=y(" 已选择 ",-1)),s("strong",null,k(o.value.size),1),e[7]||(e[7]=y(" 项 ",-1)),p(n,{link:"",type:"primary",onClick:C},{default:r(()=>[...e[5]||(e[5]=[y("取消选择",-1)])]),_:1})]),p(n,{type:"danger",size:"small",onClick:N},{default:r(()=>[e[8]||(e[8]=s("i",{class:"fa fa-trash",style:{"margin-right":"4px"}},null,-1)),y(" 批量删除 ("+k(o.value.size)+") ",1)]),_:1})])):v("",!0)]),_:1}),s("div",re,[X((u(),g(R,{ref_key:"tableRef",ref:S,data:I.value,"row-key":l.rowKey,height:"100%",style:{width:"100%"},"empty-text":l.emptyText,onSelectionChange:K},{default:r(()=>[l.multiSelect?(u(),g(B,{key:0,type:"selection",width:"50",align:"center","reserve-selection":"",fixed:"left"})):v("",!0),w(t.$slots,"columns",{},void 0,!0),t.$slots.actions?(u(),g(B,{key:1,label:"操作",align:"center",width:"220",fixed:"right"},{default:r(({row:c})=>[w(t.$slots,"actions",{row:c,handleDelete:E},void 0,!0)]),_:3})):v("",!0)]),_:3},8,["data","row-key","empty-text"])),[[q,l.loading]])]),s("div",ie,[p(U,{"current-page":m.value,"onUpdate:currentPage":e[1]||(e[1]=c=>m.value=c),"page-size":h.value,"onUpdate:pageSize":e[2]||(e[2]=c=>h.value=c),background:"",layout:"total, sizes, prev, pager, next, jumper","page-sizes":l.pageSizes,total:T.value.length},null,8,["current-page","page-size","page-sizes","total"])])]),_:3})])}}}),Te=ee(ce,[["__scopeId","data-v-e6e41965"]]);export{Te as D}; diff --git a/frontend/dist/assets/DataTablePage-CHPswbwi.css b/frontend/dist/assets/DataTablePage-CHPswbwi.css new file mode 100644 index 0000000..f743ac9 --- /dev/null +++ b/frontend/dist/assets/DataTablePage-CHPswbwi.css @@ -0,0 +1 @@ +@charset "UTF-8";.data-table-page[data-v-e6e41965]{width:100%;height:100%;box-sizing:border-box;display:flex;flex-direction:column;min-height:0}.data-table-page .table-card[data-v-e6e41965]{margin-bottom:0;width:100%;flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.data-table-page .table-toolbar[data-v-e6e41965]{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;padding:0 12px;flex-wrap:wrap;gap:12px}.data-table-page .table-title[data-v-e6e41965]{font-size:18px;font-weight:600;color:#1e293b;margin:0;letter-spacing:-.3px}.data-table-page .toolbar-actions[data-v-e6e41965]{display:flex;align-items:center;gap:12px}.data-table-page .search-input[data-v-e6e41965]{width:280px}.data-table-page .search-input[data-v-e6e41965] .el-input__wrapper{border-radius:8px;box-shadow:0 0 0 1px #e2e8f0 inset;transition:all .2s}.data-table-page .search-input[data-v-e6e41965] .el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--primary-color) inset}.data-table-page .batch-bar[data-v-e6e41965]{display:flex;align-items:center;justify-content:space-between;background:#4f46e50d;border:1px solid rgba(79,70,229,.1);border-radius:8px;padding:10px 16px;margin:0 24px 16px}.data-table-page .batch-bar .batch-info[data-v-e6e41965]{font-size:13px;color:var(--primary-color)}.data-table-page .batch-bar .batch-info strong[data-v-e6e41965]{font-weight:600;margin:0 4px}.data-table-page .table-body[data-v-e6e41965]{flex:1;min-height:0}.data-table-page .table-pagination[data-v-e6e41965]{display:flex;justify-content:flex-end;align-items:center;padding:16px 24px;border-top:1px solid #f1f5f9}.data-table-page .table-pagination[data-v-e6e41965] .el-pagination{margin-top:0}.data-table-page[data-v-e6e41965] .el-card__body{display:flex;flex-direction:column;padding:12px 0 0;flex:1;min-height:0}.data-table-page[data-v-e6e41965] .el-table__inner-wrapper:before{display:none}.data-table-page[data-v-e6e41965] .el-table td.el-table__cell{padding:18px 0!important}.data-table-page[data-v-e6e41965] .el-table__cell .cell{line-height:22px;white-space:nowrap}.data-table-page[data-v-e6e41965] .el-table .action-buttons{display:flex;align-items:center;justify-content:center;flex-wrap:nowrap;gap:8px} diff --git a/frontend/dist/assets/DatasetCreateView-ChBCun2m.js b/frontend/dist/assets/DatasetCreateView-ChBCun2m.js new file mode 100644 index 0000000..1b1d314 --- /dev/null +++ b/frontend/dist/assets/DatasetCreateView-ChBCun2m.js @@ -0,0 +1,2 @@ +import{E as H}from"./el-alert-xVLeNUgJ.js";import{a as Q,E as W}from"./el-form-item-D5kF3B90.js";import{E as X}from"./index-TFUf94PZ.js";import{E as Y}from"./index-BjEW7-SA.js";import{E as Z,b as ee}from"./el-radio-group-BkCoTeQL.js";import{E as te}from"./el-switch-DbCDiaMc.js";import{E as ae}from"./el-upload-BtHzuyZ5.js";import{v as le}from"./directive-DsZckUTJ.js";import{d as oe,G as se,K as ne,e as U,w as l,y as f,j,z as ie,o as _,s as a,x as m,c as V,M as z,g as k,q as u,ad as ue,aa as b,A as g,v as re,ac as de}from"./index-BKKvzUDD.js";import"./el-progress-DuOxpLST.js";import{P as me}from"./PageCard-BoKXOzst.js";import{b as pe,u as A,c as F,e as ce}from"./dataset-BJ2ikehQ.js";import{_ as fe}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./vnode-78qeDweP.js";import"./castArray-5uErZEc3.js";import"./_baseClone-B5RBzbh5.js";import"./raf-C-x62Pcl.js";import"./index-DLzof2Fz.js";import"./index-GAnQrJsQ.js";import"./omit-BTSq4AYh.js";import"./validator-Fn0bm4xU.js";import"./el-card-CApHJ1Gj.js";const _e={style:{width:"100%"}},ve={class:"file-info"},ye={class:"file-name"},ge={class:"file-size"},we={key:1,class:"record-count"},Ve=".json,.jsonl",ke=oe({__name:"DatasetCreateView",setup(be){const D=de(),N=re(),x=f(),E=f(!1),C=f(!1),w=j(()=>!!D.params.id),y=j(()=>D.params.id),t=ie({name:"",description:"",dataset_type:"train",storage:"local",minio_endpoint:"",minio_bucket:"",minio_access_key:"",minio_secret_key:"",minio_ssl:!1}),r=f([]),d=f(0),v=f(null),p=f(""),M={name:[{required:!0,message:"请输入数据集名称",trigger:"blur"},{max:20,message:"不超过 20 字符",trigger:"blur"}],description:[{max:50,message:"不超过 50 字符",trigger:"blur"}]};async function O(i){var o;const e=i.raw;if(!e)return;const n=(o=e.name.split(".").pop())==null?void 0:o.toLowerCase();if(n!=="json"&&n!=="jsonl"){g.warning("仅支持 JSON/JSONL 格式");return}if(e.size>200*1024*1024){g.warning("单文件不能超过 200MB");return}r.value=[e],await R(e)}async function R(i){try{const n=(await i.text()).trim().split(` +`).filter(Boolean);d.value=n.length;let o=0;for(const c of n)try{JSON.parse(c).instruction!==void 0&&o++}catch{}o>0&&o===n.length?(v.value=!0,p.value="符合 Alpaca 格式(含 instruction 字段)"):o>0?(v.value=!0,p.value=`部分符合 Alpaca 格式(${o}/${n.length})`):(v.value=!1,p.value="未检测到标准 Alpaca 格式(缺少 instruction 字段),仍可上传")}catch{d.value=0,v.value=null,p.value="文件解析失败"}}function I(){return Promise.resolve()}function K(){r.value=[],d.value=0,v.value=null,p.value=""}async function L(){if(y.value){E.value=!0;try{const i=await pe(y.value);Object.assign(t,{name:i.name||"",description:i.description||"",dataset_type:i.type==="eval"?"eval":"train",storage:i.storage_type||"local"}),d.value=i.count||0}catch{}finally{E.value=!1}}}async function h(){x.value&&await x.value.validate(async i=>{if(i){if(!w.value&&r.value.length===0){g.warning("请至少上传一个数据集文件");return}C.value=!0;try{const e={name:t.name,type:t.dataset_type,storage_type:t.storage,description:t.description,count:d.value};if(t.storage==="minio"&&(e.minio_config={endpoint:t.minio_endpoint,bucket:t.minio_bucket,access_key:t.minio_access_key,secret_key:t.minio_secret_key,ssl:t.minio_ssl}),w.value&&y.value)await A(y.value,e),r.value.length>0&&await F(y.value,r.value),g.success("更新成功");else{const n=await ce(e),o=(n==null?void 0:n.id)||n;r.value.length>0&&(await F(o,r.value),await A(o,{count:d.value})),g.success("上传成功")}N.push("/dataset")}catch{}finally{C.value=!1}}})}function J(){N.back()}return se(L),(i,e)=>{const n=X,o=Q,c=ee,S=Z,q=te,P=ae,B=Y,G=H,T=W,$=le;return ne((_(),U(me,{title:w.value?"编辑数据集":"上传数据集"},{default:l(()=>[a(T,{ref_key:"formRef",ref:x,model:t,rules:M,"label-width":"120px",style:{"max-width":"640px"}},{default:l(()=>[a(o,{label:"数据集名称",prop:"name"},{default:l(()=>[a(n,{modelValue:t.name,"onUpdate:modelValue":e[0]||(e[0]=s=>t.name=s),placeholder:"请输入数据集名称",maxlength:"20","show-word-limit":""},null,8,["modelValue"])]),_:1}),a(o,{label:"数据集描述"},{default:l(()=>[a(n,{modelValue:t.description,"onUpdate:modelValue":e[1]||(e[1]=s=>t.description=s),type:"textarea",rows:2,maxlength:"50","show-word-limit":"",placeholder:"选填"},null,8,["modelValue"])]),_:1}),a(o,{label:"数据集类型"},{default:l(()=>[a(S,{modelValue:t.dataset_type,"onUpdate:modelValue":e[2]||(e[2]=s=>t.dataset_type=s)},{default:l(()=>[a(c,{value:"train"},{default:l(()=>[...e[9]||(e[9]=[m("训练集",-1)])]),_:1}),a(c,{value:"eval"},{default:l(()=>[...e[10]||(e[10]=[m("评测集",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(o,{label:"上传方式"},{default:l(()=>[a(S,{modelValue:t.storage,"onUpdate:modelValue":e[3]||(e[3]=s=>t.storage=s)},{default:l(()=>[a(c,{value:"local"},{default:l(()=>[...e[11]||(e[11]=[m("本地",-1)])]),_:1}),a(c,{value:"cloud"},{default:l(()=>[...e[12]||(e[12]=[m("云平台",-1)])]),_:1}),a(c,{value:"minio"},{default:l(()=>[...e[13]||(e[13]=[m("MinIO",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),t.storage==="minio"?(_(),V(z,{key:0},[a(o,{label:"Endpoint"},{default:l(()=>[a(n,{modelValue:t.minio_endpoint,"onUpdate:modelValue":e[4]||(e[4]=s=>t.minio_endpoint=s),placeholder:"如:http://minio:9000"},null,8,["modelValue"])]),_:1}),a(o,{label:"Bucket"},{default:l(()=>[a(n,{modelValue:t.minio_bucket,"onUpdate:modelValue":e[5]||(e[5]=s=>t.minio_bucket=s),placeholder:"请输入 Bucket 名称"},null,8,["modelValue"])]),_:1}),a(o,{label:"Access Key"},{default:l(()=>[a(n,{modelValue:t.minio_access_key,"onUpdate:modelValue":e[6]||(e[6]=s=>t.minio_access_key=s),placeholder:"请输入 Access Key"},null,8,["modelValue"])]),_:1}),a(o,{label:"Secret Key"},{default:l(()=>[a(n,{modelValue:t.minio_secret_key,"onUpdate:modelValue":e[7]||(e[7]=s=>t.minio_secret_key=s),type:"password","show-password":"",placeholder:"请输入 Secret Key"},null,8,["modelValue"])]),_:1}),a(o,{label:"启用 SSL"},{default:l(()=>[a(q,{modelValue:t.minio_ssl,"onUpdate:modelValue":e[8]||(e[8]=s=>t.minio_ssl=s)},null,8,["modelValue"])]),_:1})],64)):k("",!0),t.storage==="local"?(_(),U(o,{key:1,label:"上传文件"},{default:l(()=>[u("div",_e,[a(P,{drag:"",accept:Ve,"auto-upload":!1,"show-file-list":!1,"http-request":I,"on-change":O},{tip:l(()=>[...e[14]||(e[14]=[u("div",{class:"el-upload__tip"},"仅支持 JSON/JSONL 格式,单文件不超过 200MB",-1)])]),default:l(()=>[e[15]||(e[15]=u("i",{class:"fa fa-cloud-upload",style:{"font-size":"32px",color:"#1890ff"}},null,-1)),e[16]||(e[16]=u("div",{class:"el-upload__text"},[m(" 将文件拖到此处,或"),u("em",null,"点击上传")],-1))]),_:1}),(_(!0),V(z,null,ue(r.value,s=>(_(),V("div",{key:s.name,class:"file-item"},[u("div",ve,[e[17]||(e[17]=u("i",{class:"fa fa-file-code-o"},null,-1)),u("span",ye,b(s.name),1),u("span",ge,b((s.size/1024).toFixed(1))+" KB",1)]),a(B,{link:"",type:"danger",size:"small",onClick:K},{default:l(()=>[...e[18]||(e[18]=[u("i",{class:"fa fa-times"},null,-1)])]),_:1})]))),128)),p.value?(_(),U(G,{key:0,title:p.value,type:v.value?"success":"warning",closable:!1,"show-icon":"",style:{"margin-top":"8px"}},null,8,["title","type"])):k("",!0),d.value?(_(),V("div",we,"解析到 "+b(d.value)+" 条记录",1)):k("",!0)])]),_:1})):k("",!0),a(o,null,{default:l(()=>[a(B,{type:"primary",loading:C.value,onClick:h},{default:l(()=>[m(b(w.value?"保存":"上传"),1)]),_:1},8,["loading"]),a(B,{onClick:J},{default:l(()=>[...e[19]||(e[19]=[m("取消",-1)])]),_:1})]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])),[[$,E.value]])}}}),Ge=fe(ke,[["__scopeId","data-v-85ac7099"]]);export{Ge as default}; diff --git a/frontend/dist/assets/DatasetCreateView-D2g2qvbH.css b/frontend/dist/assets/DatasetCreateView-D2g2qvbH.css new file mode 100644 index 0000000..5d534a5 --- /dev/null +++ b/frontend/dist/assets/DatasetCreateView-D2g2qvbH.css @@ -0,0 +1 @@ +.file-item[data-v-85ac7099]{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border:1px solid #ebeef5;border-radius:4px;margin-top:8px}.file-info[data-v-85ac7099]{display:flex;align-items:center;gap:8px}.file-name[data-v-85ac7099]{color:#303133}.file-size[data-v-85ac7099]{color:#909399;font-size:12px}.record-count[data-v-85ac7099]{margin-top:8px;font-size:13px;color:#909399} diff --git a/frontend/dist/assets/DatasetListView-BD0YX55E.js b/frontend/dist/assets/DatasetListView-BD0YX55E.js new file mode 100644 index 0000000..7798634 --- /dev/null +++ b/frontend/dist/assets/DatasetListView-BD0YX55E.js @@ -0,0 +1 @@ +import{E as z}from"./index-BjEW7-SA.js";import{E}from"./index-BDEF353-.js";import{E as T}from"./el-table-D8K5zLyz.js";import{d as L,G as A,e as b,w as e,y as u,j as V,o as k,q as r,s as a,x as s,g as $,aa as p,f as y,b1 as B,b2 as N,n as w,v as P,A as S}from"./index-BKKvzUDD.js";/* empty css */import"./el-checkbox-qGZ2-RM2.js";import{D as M}from"./DataTablePage-C-EM-7-s.js";import{g as R,d as G,a as I}from"./dataset-BJ2ikehQ.js";import{_ as j}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./el-scrollbar-ClJnvz-9.js";import"./index-GAnQrJsQ.js";import"./el-popper-D6_hxRbQ.js";import"./index-CWUnzf90.js";import"./_baseClone-B5RBzbh5.js";import"./_baseIteratee-BAilevJ_.js";import"./castArray-5uErZEc3.js";import"./debounce-ByXPNh5F.js";import"./toNumber-Dkj3QRv9.js";import"./raf-C-x62Pcl.js";import"./omit-BTSq4AYh.js";import"./index-TFUf94PZ.js";import"./index-DLzof2Fz.js";import"./el-card-CApHJ1Gj.js";import"./el-pagination-DOPYW-qb.js";import"./el-select-Dl-FRZQd.js";import"./vnode-78qeDweP.js";import"./index-D5ryD3I5.js";import"./scroll-BkzZKETR.js";import"./clamp-CbbY8h6F.js";import"./directive-DsZckUTJ.js";import"./index-dNo5H1ie.js";import"./validator-Fn0bm4xU.js";import"./index-CQXVR1Ud.js";import"./index-DfyOU94W.js";import"./el-tooltip-l0sNRNKZ.js";const q={class:"capsule-tabs"},O={class:"action-buttons"},U=L({__name:"DatasetListView",setup(Y){const C=P(),c=u(!1),m=u([]),n=u("upload"),D=V(()=>n.value==="task"?m.value.filter(l=>l.source==="task"):m.value.filter(l=>l.source!=="task"));async function f(){c.value=!0;try{m.value=await R()||[]}catch{}finally{c.value=!1}}async function _(l){await G(l.id),S.success("删除成功")}function h(l){C.push(`/dataset/${l.id}/preview`)}function x(l){window.open(I(l.id),"_blank")}return A(f),(l,i)=>{const o=T,g=E,d=z;return k(),b(M,{title:"数据集管理",data:D.value,loading:c.value,searchable:"","search-fields":["name","description"],"create-text":n.value==="upload"?"上传数据集":"","create-to":"/dataset/create","delete-fn":_,"row-key":"id",onRefresh:f},{title:e(()=>[r("div",q,[r("button",{class:w(["capsule-tab-item",{active:n.value==="upload"}]),onClick:i[0]||(i[0]=t=>n.value="upload")}," 上传任务 ",2),r("button",{class:w(["capsule-tab-item",{active:n.value==="task"}]),onClick:i[1]||(i[1]=t=>n.value="task")}," 数据任务 ",2)])]),columns:e(()=>[n.value==="task"?(k(),b(o,{key:0,label:"任务ID",prop:"task_id",align:"center",width:"100"})):$("",!0),a(o,{label:"数据集名称",prop:"name",align:"center"}),a(o,{label:"数据类型",align:"center",width:"110"},{default:e(({row:t})=>[a(g,{type:"primary",size:"small"},{default:e(()=>[s(p(y(B)[String(t.type).toLowerCase()]||t.type||"-"),1)]),_:2},1024)]),_:1}),a(o,{label:"存储位置",align:"center",width:"110"},{default:e(({row:t})=>[a(g,{type:"success",size:"small"},{default:e(()=>[s(p(y(N)[t.storage_type]||t.storage_type||"-"),1)]),_:2},1024)]),_:1}),a(o,{label:"大小",align:"center",width:"100"},{default:e(({row:t})=>[s(p(t.size&&t.size!=="0 B"&&t.size!=="0"?t.size:"-"),1)]),_:1}),a(o,{label:"数据条数",align:"center",width:"100"},{default:e(({row:t})=>[s(p(t.count||0),1)]),_:1}),a(o,{label:"描述",align:"center","show-overflow-tooltip":""},{default:e(({row:t})=>[s(p(t.description||"-"),1)]),_:1}),a(o,{label:"创建时间",align:"center",width:"180"},{default:e(({row:t})=>[s(p(t.create_time?new Date(t.create_time).toLocaleString("zh-CN"):"-"),1)]),_:1})]),actions:e(({row:t})=>[r("div",O,[a(d,{type:"primary",link:"",size:"small",onClick:v=>h(t)},{default:e(()=>[...i[2]||(i[2]=[r("i",{class:"fa fa-eye",style:{"margin-right":"4px"}},null,-1),s("详情 ",-1)])]),_:1},8,["onClick"]),a(d,{type:"success",link:"",size:"small",onClick:v=>x(t)},{default:e(()=>[...i[3]||(i[3]=[r("i",{class:"fa fa-download",style:{"margin-right":"4px"}},null,-1),s("下载 ",-1)])]),_:1},8,["onClick"]),a(d,{type:"danger",link:"",size:"small",onClick:v=>_(t)},{default:e(()=>[...i[4]||(i[4]=[r("i",{class:"fa fa-trash-o",style:{"margin-right":"4px"}},null,-1),s("删除 ",-1)])]),_:1},8,["onClick"])])]),_:1},8,["data","loading","create-text"])}}}),Et=j(U,[["__scopeId","data-v-a2aaedec"]]);export{Et as default}; diff --git a/frontend/dist/assets/DatasetListView-BZ24MdYw.css b/frontend/dist/assets/DatasetListView-BZ24MdYw.css new file mode 100644 index 0000000..dfb29c6 --- /dev/null +++ b/frontend/dist/assets/DatasetListView-BZ24MdYw.css @@ -0,0 +1 @@ +@charset "UTF-8";.capsule-tabs[data-v-a2aaedec]{display:flex;background:#f1f5f9;padding:3px;border-radius:8px;gap:2px;border:1px solid #e2e8f0}.capsule-tab-item[data-v-a2aaedec]{border:0;background:transparent;padding:6px 20px;font-size:13px;font-weight:500;color:#64748b;cursor:pointer;border-radius:6px;transition:all .2s ease;outline:none}.capsule-tab-item[data-v-a2aaedec]:hover{color:#1e293b}.capsule-tab-item.active[data-v-a2aaedec]{background:#fff;color:#4f46e5;box-shadow:0 1px 3px #0000000f,0 1px 2px #0000000a;font-weight:600} diff --git a/frontend/dist/assets/DatasetPreviewView-CVHwvkKZ.js b/frontend/dist/assets/DatasetPreviewView-CVHwvkKZ.js new file mode 100644 index 0000000..070efc2 --- /dev/null +++ b/frontend/dist/assets/DatasetPreviewView-CVHwvkKZ.js @@ -0,0 +1,6 @@ +import{E as Tn}from"./el-alert-xVLeNUgJ.js";import{O as Rn,E as Re}from"./el-popper-D6_hxRbQ.js";import{f as He,E as le,e as Sn}from"./index-BjEW7-SA.js";import{E as Se}from"./index-BDEF353-.js";import{v as On}from"./directive-DsZckUTJ.js";import{d as j,h as z,B as Y,G as Ye,f as U,H as We,y as _,F as ae,b as Nn,R as ke,V as _e,bf as W,D as qe,aS as Fn,a9 as ce,j as E,bg as Dn,P as Bn,ai as J,o as c,e as D,w as v,s as k,bh as Pn,bi as An,W as ve,S as Ln,E as Qe,a as Oe,aW as Mn,am as Kn,N as Xe,c as O,a$ as Ze,Y as ye,n as fe,g as K,q as l,r as Jn,aL as Te,M as ne,bj as Je,al as jn,l as zn,ab as xe,ad as he,x as P,aa as N,aQ as Gn,K as je,ac as Un,A as oe,b1 as Hn,b2 as Yn}from"./index-BKKvzUDD.js";import{E as $e}from"./index-dNo5H1ie.js";import"./el-tooltip-l0sNRNKZ.js";/* empty css */import{A as Wn}from"./AppConfirmDialog-g7rxg-F7.js";import{P as qn}from"./PageCard-BoKXOzst.js";import{b as Qn,f as Xn,h as Ve,i as Zn,j as xn,k as et,l as nt}from"./dataset-BJ2ikehQ.js";import{E as tt,a as ot}from"./el-select-Dl-FRZQd.js";import{_ as X}from"./index-CWUnzf90.js";import{E as at}from"./el-scrollbar-ClJnvz-9.js";import{d as lt,a as en,b as rt}from"./dropdown-Cy5g1tjO.js";import{c as st}from"./castArray-5uErZEc3.js";import{c as nn,E as it}from"./el-dialog-X3Nt8ib9.js";import{_ as pe}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{E as tn}from"./index-TFUf94PZ.js";import{E as ut}from"./el-pagination-DOPYW-qb.js";import{E as dt,a as ct}from"./el-table-D8K5zLyz.js";import"./el-checkbox-qGZ2-RM2.js";import{E as vt,a as ft}from"./el-form-item-D5kF3B90.js";import"./vnode-78qeDweP.js";import"./index-GAnQrJsQ.js";import"./validator-Fn0bm4xU.js";import"./index-CQXVR1Ud.js";import"./clamp-CbbY8h6F.js";import"./toNumber-Dkj3QRv9.js";import"./index-DfyOU94W.js";import"./scroll-BkzZKETR.js";import"./raf-C-x62Pcl.js";import"./el-card-CApHJ1Gj.js";import"./index-D5ryD3I5.js";import"./index-DLzof2Fz.js";import"./_baseIteratee-BAilevJ_.js";import"./use-dialog-DmridEEy.js";import"./_baseClone-B5RBzbh5.js";import"./debounce-ByXPNh5F.js";import"./omit-BTSq4AYh.js";const Ee=Symbol("elDropdown"),on="elDropdown";var pt=j({inheritAttrs:!1});function mt(e,a,r,n,p,s){return z(e.$slots,"default")}var gt=X(pt,[["render",mt]]),wt=j({name:"ElCollectionItem",inheritAttrs:!1});function bt(e,a,r,n,p,s){return z(e.$slots,"default")}var yt=X(wt,[["render",bt]]);const an="data-el-collection-item",_t=e=>{const a=`El${e}Collection`,r=`${a}Item`,n=Symbol(a),p=Symbol(r);return{COLLECTION_INJECTION_KEY:n,COLLECTION_ITEM_INJECTION_KEY:p,ElCollection:Object.assign({},gt,{name:a,setup(){const s=_(),t=new Map;ae(n,{itemMap:t,getItems:(()=>{const w=U(s);if(!w)return[];const f=Array.from(w.querySelectorAll(`[${an}]`));return[...t.values()].sort((b,y)=>f.indexOf(b.ref)-f.indexOf(y.ref))}),collectionRef:s})}}),ElCollectionItem:Object.assign({},yt,{name:r,setup(s,{attrs:t}){const m=_(),w=Y(n,void 0);ae(p,{collectionItemRef:m}),Ye(()=>{const f=U(m);f&&w.itemMap.set(f,{ref:f,...t})}),We(()=>{const f=U(m);w.itemMap.delete(f)})}})}},ht=Nn({style:{type:ke([String,Array,Object,Boolean]),default:void 0},currentTabId:{type:ke(String)},defaultCurrentTabId:String,loop:Boolean,dir:{type:String,values:["ltr","rtl"],default:"ltr"},orientation:{type:ke(String)},onBlur:Function,onFocus:Function,onMousedown:Function}),{ElCollection:Et,ElCollectionItem:Ct,COLLECTION_INJECTION_KEY:ln,COLLECTION_ITEM_INJECTION_KEY:It}=_t("RovingFocusGroup"),Ne=Symbol("elRovingFocusGroup"),rn=Symbol("elRovingFocusGroupItem"),kt={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"},$t=(e,a)=>e,Vt=(e,a,r)=>{const n=$t(_e(e));return kt[n]},Tt=(e,a)=>e.map((r,n)=>e[(n+a)%e.length]),ze=e=>{const{activeElement:a}=document;for(const r of e)if(r===a||(r.focus(),a!==document.activeElement))return},Ge="currentTabIdChange",Ue="rovingFocusGroup.entryFocus",Rt={bubbles:!1,cancelable:!0};var St=j({name:"ElRovingFocusGroupImpl",inheritAttrs:!1,props:ht,emits:[Ge,"entryFocus"],setup(e,{emit:a}){const r=_((e.currentTabId||e.defaultCurrentTabId)??null),n=_(!1),p=_(!1),s=_(),{getItems:t}=Y(ln,void 0),m=E(()=>[{outline:"none"},e.style]),w=T=>{a(Ge,T)},f=()=>{n.value=!0},b=W(T=>{var S;(S=e.onMousedown)==null||S.call(e,T)},()=>{p.value=!0}),y=W(T=>{var S;(S=e.onFocus)==null||S.call(e,T)},T=>{const S=!U(p),{target:g,currentTarget:d}=T;if(g===d&&S&&!U(n)){const $=new Event(Ue,Rt);if(d==null||d.dispatchEvent($),!$.defaultPrevented){const C=t().filter(I=>I.focusable);ze([C.find(I=>I.active),C.find(I=>I.id===U(r)),...C].filter(Boolean).map(I=>I.ref))}}p.value=!1}),u=W(T=>{var S;(S=e.onBlur)==null||S.call(e,T)},()=>{n.value=!1}),R=(...T)=>{a("entryFocus",...T)},F=T=>{const S=Vt(T);if(S){T.preventDefault();let g=t().filter(d=>d.focusable).map(d=>d.ref);switch(S){case"last":g.reverse();break;case"prev":case"next":{S==="prev"&&g.reverse();const d=g.indexOf(T.currentTarget);g=e.loop?Tt(g,d+1):g.slice(d+1);break}}Bn(()=>{ze(g)})}};ae(Ne,{currentTabbedId:Dn(r),loop:ce(e,"loop"),tabIndex:E(()=>U(n)?-1:0),rovingFocusGroupRef:s,rovingFocusGroupRootStyle:m,orientation:ce(e,"orientation"),dir:ce(e,"dir"),onItemFocus:w,onItemShiftTab:f,onBlur:u,onFocus:y,onMousedown:b,onKeydown:F}),qe(()=>e.currentTabId,T=>{r.value=T??null}),Fn(s,Ue,R)}});function Ot(e,a,r,n,p,s){return z(e.$slots,"default")}var Nt=X(St,[["render",Ot]]),Ft=j({name:"ElRovingFocusGroup",components:{ElFocusGroupCollection:Et,ElRovingFocusGroupImpl:Nt}});function Dt(e,a,r,n,p,s){const t=J("el-roving-focus-group-impl"),m=J("el-focus-group-collection");return c(),D(m,null,{default:v(()=>[k(t,Pn(An(e.$attrs)),{default:v(()=>[z(e.$slots,"default")]),_:3},16)]),_:3})}var Bt=X(Ft,[["render",Dt]]),Pt=j({components:{ElRovingFocusCollectionItem:Ct},props:{focusable:{type:Boolean,default:!0},active:Boolean},emits:["mousedown","focus","keydown"],setup(e,{emit:a}){const{currentTabbedId:r,onItemFocus:n,onItemShiftTab:p,onKeydown:s}=Y(Ne,void 0),t=He(),m=_(),w=W(u=>{a("mousedown",u)},u=>{e.focusable?n(U(t)):u.preventDefault()}),f=W(u=>{a("focus",u)},()=>{n(U(t))}),b=W(u=>{a("keydown",u)},u=>{const{shiftKey:R,target:F,currentTarget:T}=u;if(_e(u)===ve.tab&&R){p();return}F===T&&s(u)}),y=E(()=>r.value===U(t));return ae(rn,{rovingFocusGroupItemRef:m,tabIndex:E(()=>U(y)?0:-1),handleMousedown:w,handleFocus:f,handleKeydown:b}),{id:t,handleKeydown:b,handleFocus:f,handleMousedown:w}}});function At(e,a,r,n,p,s){const t=J("el-roving-focus-collection-item");return c(),D(t,{id:e.id,focusable:e.focusable,active:e.active},{default:v(()=>[z(e.$slots,"default")]),_:3},8,["id","focusable","active"])}var Lt=X(Pt,[["render",At]]),Mt=Bt;const{ButtonGroup:Kt}=le;var Jt=j({name:"ElDropdown",components:{ElButton:le,ElButtonGroup:Kt,ElScrollbar:at,ElTooltip:Re,ElRovingFocusGroup:Mt,ElOnlyChild:Rn,ElIcon:Qe,ArrowDown:Ln},props:lt,emits:["visible-change","click","command"],setup(e,{emit:a}){const r=Xe(),n=Oe("dropdown"),{t:p}=Mn(),s=_(),t=_(),m=_(),w=_(),f=_(null),b=_(null),y=_(!1),u=E(()=>({maxHeight:Kn(e.maxHeight)})),R=E(()=>[n.m(C.value)]),F=E(()=>st(e.trigger)),T=He().value,S=E(()=>e.id||T);function g(){var B;(B=m.value)==null||B.onClose(void 0,0)}function d(){var B;(B=m.value)==null||B.onClose()}function $(){var B;(B=m.value)==null||B.onOpen()}const C=Sn();function I(...B){a("command",...B)}function L(){}function G(){const B=U(w);F.value.includes("hover")&&(B==null||B.focus({preventScroll:!0})),b.value=null}function Z(B){b.value=B}function x(){a("visible-change",!0)}function V(B){var re;y.value=(B==null?void 0:B.type)==="keydown",(re=w.value)==null||re.focus()}function Q(){a("visible-change",!1)}return ae(Ee,{contentRef:w,role:E(()=>e.role),triggerId:S,isUsingKeyboard:y,onItemEnter:L,onItemLeave:G,handleClose:d}),ae(on,{instance:r,dropdownSize:C,handleClick:g,commandHandler:I,trigger:ce(e,"trigger"),hideOnClick:ce(e,"hideOnClick")}),{t:p,ns:n,scrollbar:f,wrapStyle:u,dropdownTriggerKls:R,dropdownSize:C,triggerId:S,currentTabId:b,handleCurrentTabIdChange:Z,handlerMainButtonClick:B=>{a("click",B)},handleClose:d,handleOpen:$,handleBeforeShowTooltip:x,handleShowTooltip:V,handleBeforeHideTooltip:Q,popperRef:m,contentRef:w,triggeringElementRef:s,referenceElementRef:t}}});function jt(e,a,r,n,p,s){const t=J("el-roving-focus-group"),m=J("el-scrollbar"),w=J("el-only-child"),f=J("el-tooltip"),b=J("el-button"),y=J("arrow-down"),u=J("el-icon"),R=J("el-button-group");return c(),O("div",{class:fe([e.ns.b(),e.ns.is("disabled",e.disabled)])},[k(f,{ref:"popperRef",role:e.role,effect:e.effect,"fallback-placements":["bottom","top"],"popper-options":e.popperOptions,"gpu-acceleration":!1,placement:e.placement,"popper-class":[e.ns.e("popper"),e.popperClass],"popper-style":e.popperStyle,trigger:e.trigger,"trigger-keys":e.triggerKeys,"trigger-target-el":e.contentRef,"show-arrow":e.showArrow,"show-after":e.trigger==="hover"?e.showTimeout:0,"hide-after":e.trigger==="hover"?e.hideTimeout:0,"virtual-ref":e.virtualRef??e.triggeringElementRef,"virtual-triggering":e.virtualTriggering||e.splitButton,disabled:e.disabled,transition:`${e.ns.namespace.value}-zoom-in-top`,teleported:e.teleported,"append-to":e.appendTo,pure:"","focus-on-target":"",persistent:e.persistent,onBeforeShow:e.handleBeforeShowTooltip,onShow:e.handleShowTooltip,onBeforeHide:e.handleBeforeHideTooltip},Ze({content:v(()=>[k(m,{ref:"scrollbar","wrap-style":e.wrapStyle,tag:"div","view-class":e.ns.e("list")},{default:v(()=>[k(t,{loop:e.loop,"current-tab-id":e.currentTabId,orientation:"horizontal",onCurrentTabIdChange:e.handleCurrentTabIdChange},{default:v(()=>[z(e.$slots,"dropdown")]),_:3},8,["loop","current-tab-id","onCurrentTabIdChange"])]),_:3},8,["wrap-style","view-class"])]),_:2},[e.splitButton?void 0:{name:"default",fn:v(()=>[k(w,{id:e.triggerId,ref:"triggeringElementRef",role:"button",tabindex:e.tabindex},{default:v(()=>[z(e.$slots,"default")]),_:3},8,["id","tabindex"])]),key:"0"}]),1032,["role","effect","popper-options","placement","popper-class","popper-style","trigger","trigger-keys","trigger-target-el","show-arrow","show-after","hide-after","virtual-ref","virtual-triggering","disabled","transition","teleported","append-to","persistent","onBeforeShow","onShow","onBeforeHide"]),e.splitButton?(c(),D(R,{key:0},{default:v(()=>[k(b,ye({ref:"referenceElementRef"},e.buttonProps,{size:e.dropdownSize,type:e.type,disabled:e.disabled,tabindex:e.tabindex,onClick:e.handlerMainButtonClick}),{default:v(()=>[z(e.$slots,"default")]),_:3},16,["size","type","disabled","tabindex","onClick"]),k(b,ye({id:e.triggerId,ref:"triggeringElementRef"},e.buttonProps,{role:"button",size:e.dropdownSize,type:e.type,class:e.ns.e("caret-button"),disabled:e.disabled,tabindex:e.tabindex,"aria-label":e.t("el.dropdown.toggleDropdown")}),{default:v(()=>[k(u,{class:fe(e.ns.e("icon"))},{default:v(()=>[k(y)]),_:1},8,["class"])]),_:1},16,["id","size","type","class","disabled","tabindex","aria-label"])]),_:3})):K("v-if",!0)],2)}var zt=X(Jt,[["render",jt]]),Gt=j({name:"DropdownItemImpl",components:{ElIcon:Qe},props:en,emits:["pointermove","pointerleave","click","clickimpl"],setup(e,{emit:a}){const r=Oe("dropdown"),{role:n}=Y(Ee,void 0),{collectionItemRef:p}=Y(It,void 0),{rovingFocusGroupItemRef:s,tabIndex:t,handleFocus:m,handleKeydown:w,handleMousedown:f}=Y(rn,void 0),b=nn(p,s),y=E(()=>n.value==="menu"?"menuitem":n.value==="navigation"?"link":"button"),u=W(R=>{const F=_e(R);if([ve.enter,ve.numpadEnter,ve.space].includes(F))return R.preventDefault(),R.stopImmediatePropagation(),a("clickimpl",R),!0},w);return{ns:r,itemRef:b,dataset:{[an]:""},role:y,tabIndex:t,handleFocus:m,handleKeydown:u,handleMousedown:f}}});const Ut=["aria-disabled","tabindex","role"];function Ht(e,a,r,n,p,s){const t=J("el-icon");return c(),O(ne,null,[e.divided?(c(),O("li",{key:0,role:"separator",class:fe(e.ns.bem("menu","item","divided"))},null,2)):K("v-if",!0),l("li",ye({ref:e.itemRef},{...e.dataset,...e.$attrs},{"aria-disabled":e.disabled,class:[e.ns.be("menu","item"),e.ns.is("disabled",e.disabled)],tabindex:e.tabIndex,role:e.role,onClick:a[0]||(a[0]=m=>e.$emit("clickimpl",m)),onFocus:a[1]||(a[1]=(...m)=>e.handleFocus&&e.handleFocus(...m)),onKeydown:a[2]||(a[2]=Te((...m)=>e.handleKeydown&&e.handleKeydown(...m),["self"])),onMousedown:a[3]||(a[3]=(...m)=>e.handleMousedown&&e.handleMousedown(...m)),onPointermove:a[4]||(a[4]=m=>e.$emit("pointermove",m)),onPointerleave:a[5]||(a[5]=m=>e.$emit("pointerleave",m))}),[e.icon||e.$slots.icon?(c(),D(t,{key:0},{default:v(()=>[z(e.$slots,"icon",{},()=>[(c(),D(Jn(e.icon)))])]),_:3})):K("v-if",!0),z(e.$slots,"default")],16,Ut)],64)}var Yt=X(Gt,[["render",Ht]]);const sn=()=>{const e=Y(on,{});return{elDropdown:e,_elDropdownSize:E(()=>e==null?void 0:e.dropdownSize)}};var Wt=j({name:"ElDropdownItem",components:{ElRovingFocusItem:Lt,ElDropdownItemImpl:Yt},inheritAttrs:!1,props:en,emits:["pointermove","pointerleave","click"],setup(e,{emit:a,attrs:r}){const{elDropdown:n}=sn(),p=Xe(),{onItemEnter:s,onItemLeave:t}=Y(Ee,void 0),m=W(f=>(a("pointermove",f),f.defaultPrevented),Je(f=>{if(e.disabled){t(f);return}const b=f.currentTarget;b===document.activeElement||b.contains(document.activeElement)||(s(f),f.defaultPrevented||b==null||b.focus({preventScroll:!0}))})),w=W(f=>(a("pointerleave",f),f.defaultPrevented),Je(t));return{handleClick:W(f=>{if(!e.disabled)return a("click",f),f.type!=="keydown"&&f.defaultPrevented},f=>{var b,y,u;if(e.disabled){f.stopImmediatePropagation();return}(b=n==null?void 0:n.hideOnClick)!=null&&b.value&&((y=n.handleClick)==null||y.call(n)),(u=n.commandHandler)==null||u.call(n,e.command,p,f)}),handlePointerMove:m,handlePointerLeave:w,propsAndAttrs:E(()=>({...e,...r}))}}});function qt(e,a,r,n,p,s){const t=J("el-dropdown-item-impl"),m=J("el-roving-focus-item");return c(),D(m,{focusable:!e.disabled},{default:v(()=>[k(t,ye(e.propsAndAttrs,{onPointerleave:e.handlePointerLeave,onPointermove:e.handlePointerMove,onClickimpl:e.handleClick}),Ze({default:v(()=>[z(e.$slots,"default")]),_:2},[e.$slots.icon?{name:"icon",fn:v(()=>[z(e.$slots,"icon")]),key:"0"}:void 0]),1040,["onPointerleave","onPointermove","onClickimpl"])]),_:3},8,["focusable"])}var un=X(Wt,[["render",qt]]),Qt=j({name:"ElDropdownMenu",props:rt,setup(e){const a=Oe("dropdown"),{_elDropdownSize:r}=sn(),n=r.value,{contentRef:p,role:s,triggerId:t,isUsingKeyboard:m,handleClose:w}=Y(Ee,void 0),{rovingFocusGroupRef:f,rovingFocusGroupRootStyle:b,onBlur:y,onFocus:u,onKeydown:R,onMousedown:F}=Y(Ne,void 0),{collectionRef:T}=Y(ln,void 0),S=E(()=>[a.b("menu"),a.bm("menu",n==null?void 0:n.value)]),g=nn(p,f,T),d=W(C=>{var I;(I=e.onKeydown)==null||I.call(e,C)},C=>{const{currentTarget:I,target:L}=C,G=_e(C);if(I.contains(L),ve.tab===G)return w();R(C)});function $(C){m.value&&u(C)}return{size:n,rovingFocusGroupRootStyle:b,dropdownKls:S,role:s,triggerId:t,dropdownListWrapperRef:g,handleKeydown:d,onBlur:y,handleFocus:$,onMousedown:F}}});const Xt=["role","aria-labelledby"];function Zt(e,a,r,n,p,s){return c(),O("ul",{ref:e.dropdownListWrapperRef,class:fe(e.dropdownKls),style:jn(e.rovingFocusGroupRootStyle),tabindex:-1,role:e.role,"aria-labelledby":e.triggerId,onFocusin:a[0]||(a[0]=(...t)=>e.handleFocus&&e.handleFocus(...t)),onFocusout:a[1]||(a[1]=(...t)=>e.onBlur&&e.onBlur(...t)),onKeydown:a[2]||(a[2]=Te((...t)=>e.handleKeydown&&e.handleKeydown(...t),["self"])),onMousedown:a[3]||(a[3]=Te((...t)=>e.onMousedown&&e.onMousedown(...t),["self"]))},[z(e.$slots,"default")],46,Xt)}var dn=X(Qt,[["render",Zt]]);const xt=zn(zt,{DropdownItem:un,DropdownMenu:dn}),eo=xe(un),no=xe(dn);function cn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function to(e,a,r){try{const n=JSON.parse(e);return{sourceIndex:a,displayIndex:r,raw:e,kind:cn(n)?"object":"primitive",value:n}}catch(n){return{sourceIndex:a,displayIndex:r,raw:e,kind:"invalid",value:e,error:n instanceof Error?n.message:"JSON 格式不正确"}}}function oo(e,a){const r=a.toLowerCase();if(r.endsWith(".jsonl")){const n=[];return e.split(` +`).forEach((p,s)=>{p.trim()&&n.push(to(p,s,n.length+1))}),{supported:!0,records:n}}if(r.endsWith(".json"))try{const n=JSON.parse(e);return{supported:!0,records:(Array.isArray(n)?n:[n]).map((s,t)=>({sourceIndex:t,displayIndex:t+1,raw:JSON.stringify(s),kind:cn(s)?"object":"primitive",value:s}))}}catch(n){return{supported:!0,records:[{sourceIndex:0,displayIndex:1,raw:e,kind:"invalid",value:e,error:n instanceof Error?n.message:"JSON 格式不正确"}]}}return{supported:!1,records:[]}}function ao(e,a,r,n){const p=a.toLowerCase();if(p.endsWith(".jsonl")){const s=e.split(` +`);if(r<0||r>=s.length)throw new Error("目标样本不存在");return s[r]=JSON.stringify(n),s.join(` +`)}if(p.endsWith(".json")){let s;try{s=JSON.parse(e)}catch{if(r!==0)throw new Error("目标样本不存在");return JSON.stringify(n,null,2)}if(Array.isArray(s)){if(r<0||r>=s.length)throw new Error("目标样本不存在");return s[r]=n,JSON.stringify(s,null,2)}if(r!==0)throw new Error("目标样本不存在");return JSON.stringify(n,null,2)}throw new Error("当前文件不支持逐条编辑")}const lo={class:"version-control-bar","aria-label":"数据集版本控制"},ro={class:"version-selector-group"},so={class:"version-status",role:"status","aria-live":"polite"},io={key:0,class:"fa fa-ellipsis-h","aria-hidden":"true"},uo=j({__name:"DatasetVersionBar",props:{modelValue:{},versions:{},viewedVersion:{},activeVersionId:{},isViewingActiveVersion:{type:Boolean},hasPendingVersionChanges:{type:Boolean},versionLoading:{type:Boolean},savingRecord:{type:Boolean},activatingVersion:{type:Boolean},deletingVersion:{type:Boolean}},emits:["update:modelValue","change","activate","delete"],setup(e,{emit:a}){const r=e,n=a,p=E(()=>r.versionLoading||r.savingRecord||r.activatingVersion||r.deletingVersion),s=E(()=>{var y;return((y=r.viewedVersion)==null?void 0:y.version)===1?"初始版本不可删除":r.versions.length<=1?"至少需要保留一个版本":""}),t=E(()=>p.value||!!s.value);function m(y){return new Date(y).toLocaleString("zh-CN",{hour12:!1})}function w(y){const u=y.id===r.activeVersionId?"当前版本":"历史版本";return`V${y.version} · ${u} · ${m(y.create_time)}`}function f(y){n("update:modelValue",y),n("change",y)}function b(y){if(!p.value){if(y==="activate"){n("activate");return}t.value||n("delete")}}return(y,u)=>{const R=ot,F=tt,T=Se,S=le,g=eo,d=no,$=xt;return c(),O("section",lo,[l("div",ro,[u[0]||(u[0]=l("label",{for:"dataset-version-select"},"数据版本",-1)),k(F,{id:"dataset-version-select","model-value":e.modelValue,class:"version-select",loading:e.versionLoading,disabled:e.versionLoading||e.savingRecord,"aria-label":"选择要查看的数据集版本",onChange:f},{default:v(()=>[(c(!0),O(ne,null,he(e.versions,C=>(c(),D(R,{key:C.id,label:w(C),value:C.id},null,8,["label","value"]))),128))]),_:1},8,["model-value","loading","disabled"])]),l("div",so,[e.viewedVersion?(c(),O(ne,{key:0},[e.isViewingActiveVersion?(c(),D(T,{key:0,type:"success"},{default:v(()=>[P(" V"+N(e.viewedVersion.version)+" · 当前版本 ",1)]),_:1})):(c(),D(T,{key:1,type:"info"},{default:v(()=>[P("V"+N(e.viewedVersion.version)+" · 历史版本(只读)",1)]),_:1})),e.hasPendingVersionChanges?(c(),D(T,{key:2,type:"warning"},{default:v(()=>[...u[1]||(u[1]=[P("有待保存修改",-1)])]),_:1})):K("",!0),l("span",null,N(e.viewedVersion.description||"无版本说明")+" · "+N(m(e.viewedVersion.create_time)),1)],64)):K("",!0)]),e.viewedVersion&&!e.isViewingActiveVersion?(c(),D($,{key:0,class:"version-actions",trigger:"click",placement:"bottom-end","popper-class":"version-actions-popper",disabled:p.value,onCommand:b},{dropdown:v(()=>[k(d,null,{default:v(()=>[k(g,{command:"activate",class:"version-action-primary",disabled:p.value},{default:v(()=>[...u[2]||(u[2]=[l("i",{class:"fa fa-check-circle","aria-hidden":"true"},null,-1),P(" 设为当前版本 ",-1)])]),_:1},8,["disabled"]),k(g,{command:"delete",class:"version-action-danger",disabled:t.value,title:s.value||void 0,divided:""},{default:v(()=>[...u[3]||(u[3]=[l("i",{class:"fa fa-trash-o","aria-hidden":"true"},null,-1),P(" 删除版本 ",-1)])]),_:1},8,["disabled","title"])]),_:1})]),default:v(()=>[k(S,{class:"version-actions-button",loading:e.activatingVersion||e.deletingVersion,disabled:p.value,"aria-label":"打开历史版本操作菜单"},{default:v(()=>[!e.activatingVersion&&!e.deletingVersion?(c(),O("i",io)):K("",!0)]),_:1},8,["loading","disabled"])]),_:1},8,["disabled"])):K("",!0)])}}}),co=pe(uo,[["__scopeId","data-v-e51d9b4f"]]),vo={class:"records-viewer"},fo={class:"records-toolbar"},po={key:0,class:"viewer-state record-empty-state"},mo={key:1,class:"record-table-shell","aria-label":"数据样本表格"},go={class:"table-index"},wo={class:"table-cell-text"},bo={class:"table-cell-text"},yo={key:2,class:"records-pagination"},be=10,_o=j({__name:"DatasetRecordTable",props:{records:{},isViewingActiveVersion:{type:Boolean},versionId:{}},emits:["edit"],setup(e,{emit:a}){const r=e,n=a,p=_(""),s=_(1),t=E(()=>{const g=new Set;r.records.forEach($=>{$.kind==="object"&&Object.keys($.value).forEach(C=>g.add(C))});const d=["instruction","question","prompt","input","context","output","answer","response"];return[...g].sort(($,C)=>{const I=L=>{const G=d.indexOf(L);return G===-1?d.length:G};return I($)-I(C)})}),m=E(()=>t.value.slice(0,6)),w=E(()=>r.records.filter(g=>g.kind==="invalid").length),f=E(()=>t.value.length>m.value.length),b=E(()=>{const g=p.value.trim().toLowerCase();return g?r.records.filter(d=>JSON.stringify(d.value).toLowerCase().includes(g)):r.records}),y=E(()=>{const g=(s.value-1)*be;return b.value.slice(g,g+be)});qe(()=>r.versionId,()=>{p.value="",s.value=1});function u(g){return g}function R(g){return typeof g=="string"?g||"(空)":JSON.stringify(g)}function F(g,d){if(g.kind!=="object")return g.kind==="invalid"?g.raw:R(g.value);const $=g.value;return Object.prototype.hasOwnProperty.call($,d)?R($[d]):"-"}function T(g){if(g.kind!=="object")return"-";const d=g.value;return t.value.filter($=>!m.value.includes($)&&Object.prototype.hasOwnProperty.call(d,$)).map($=>`${$}: ${R(d[$])}`).join(";")||"-"}function S({row:g}){return g.kind==="invalid"?"record-table-row-invalid":""}return(g,d)=>{const $=Se,C=tn,I=dt,L=Re,G=le,Z=ct,x=ut;return c(),O("div",vo,[l("div",fo,[l("div",null,[d[3]||(d[3]=l("strong",null,"样本数据",-1)),l("span",null,"共 "+N(e.records.length.toLocaleString())+" 条",1),w.value?(c(),D($,{key:0,size:"small",type:"danger"},{default:v(()=>[P(N(w.value)+" 条格式错误 ",1)]),_:1})):K("",!0)]),k(C,{modelValue:p.value,"onUpdate:modelValue":d[0]||(d[0]=V=>p.value=V),class:"record-search",clearable:"",placeholder:"搜索样本内容","aria-label":"搜索样本内容",onInput:d[1]||(d[1]=V=>s.value=1)},{prefix:v(()=>[...d[4]||(d[4]=[l("i",{class:"fa fa-search"},null,-1)])]),_:1},8,["modelValue"])]),b.value.length?(c(),O("div",mo,[k(Z,{data:y.value,"row-key":"sourceIndex",stripe:"",border:"",class:"record-table","row-class-name":S},{default:v(()=>[k(I,{label:"序号",width:"76",align:"center"},{default:v(({row:V})=>[l("div",go,[l("strong",null,N(V.displayIndex),1),l("small",null,"第 "+N(V.sourceIndex+1)+" 行",1)])]),_:1}),(c(!0),O(ne,null,he(m.value,V=>(c(),D(I,{key:V,label:V,"min-width":"220"},{default:v(({row:Q})=>[k(L,{content:F(Q,V),placement:"top","show-after":400},{default:v(()=>[l("div",wo,N(F(Q,V)),1)]),_:2},1032,["content"])]),_:2},1032,["label"]))),128)),f.value?(c(),D(I,{key:0,label:"其他字段","min-width":"240"},{default:v(({row:V})=>[k(L,{content:T(V),placement:"top","show-after":400},{default:v(()=>[l("div",bo,N(T(V)),1)]),_:2},1032,["content"])]),_:1})):K("",!0),k(I,{label:"状态",width:"96",align:"center"},{default:v(({row:V})=>[V.kind==="invalid"?(c(),D($,{key:0,size:"small",type:"danger"},{default:v(()=>[...d[6]||(d[6]=[P(" 格式错误 ",-1)])]),_:1})):V.kind==="primitive"?(c(),D($,{key:1,size:"small",type:"warning"},{default:v(()=>[...d[7]||(d[7]=[P(" 非对象 ",-1)])]),_:1})):(c(),D($,{key:2,size:"small",type:"success"},{default:v(()=>[...d[8]||(d[8]=[P("正常",-1)])]),_:1}))]),_:1}),k(I,{label:"操作",width:"96",align:"center",fixed:"right"},{default:v(({row:V})=>[k(G,{type:"primary",link:"",disabled:!e.isViewingActiveVersion,title:e.isViewingActiveVersion?"":"历史版本为只读,请先设为当前版本","aria-label":`${V.kind==="invalid"?"修复":"编辑"}第 ${V.displayIndex} 条数据`,onClick:Q=>n("edit",V)},{default:v(()=>[l("i",{class:fe(V.kind==="invalid"?"fa fa-wrench":"fa fa-pencil")},null,2),P(" "+N(V.kind==="invalid"?"修复":"编辑"),1)]),_:2},1032,["disabled","title","aria-label","onClick"])]),_:1})]),_:1},8,["data"])])):(c(),O("div",po,[...d[5]||(d[5]=[l("i",{class:"fa fa-search","aria-hidden":"true"},null,-1),l("span",null,"没有找到匹配的样本",-1)])])),b.value.length>be?(c(),O("div",yo,[k(x,{"current-page":s.value,"onUpdate:currentPage":d[2]||(d[2]=V=>s.value=V),"page-size":be,total:b.value.length,layout:"prev, pager, next",background:""},null,8,["current-page","total"])])):K("",!0)])}}}),ho=pe(_o,[["__scopeId","data-v-cc5ff1bc"]]),Eo={class:"editor-hint"},Co={key:0,class:"field-helper"},Io={key:1,class:"raw-record-editor"},ko={for:"raw-record-draft"},$o={class:"record-editor-actions"},Vo=j({__name:"DatasetRecordEditorDialog",props:{modelValue:{type:Boolean},record:{},editFields:{},rawDraft:{},savingRecord:{type:Boolean},hasDraftChanges:{type:Boolean},nextVersionNumber:{}},emits:["close","save","update:field","update:rawDraft"],setup(e,{emit:a}){const r=a;function n(s){r("close",s)}function p(s){(s.ctrlKey||s.metaKey)&&s.key.toLowerCase()==="s"&&(s.preventDefault(),r("save"))}return(s,t)=>{const m=tn,w=ft,f=vt,b=le,y=it;return c(),D(y,{"model-value":e.modelValue,class:"record-editor-dialog",width:"min(720px, 92vw)",title:e.record?`编辑第 ${e.record.displayIndex} 条数据`:"编辑数据","close-on-click-modal":!1,"close-on-press-escape":!e.savingRecord,"show-close":!e.savingRecord,"before-close":n,"destroy-on-close":""},{footer:v(()=>[l("div",$o,[l("span",null,N(e.hasDraftChanges?"有未暂存修改":"尚未修改")+" · Ctrl/⌘ + S 暂存",1),l("div",null,[k(b,{disabled:e.savingRecord,onClick:t[1]||(t[1]=u=>r("close"))},{default:v(()=>[...t[4]||(t[4]=[P("取消",-1)])]),_:1},8,["disabled"]),k(b,{type:"primary",loading:e.savingRecord,disabled:!e.hasDraftChanges,onClick:t[2]||(t[2]=u=>r("save"))},{default:v(()=>[...t[5]||(t[5]=[P(" 暂存修改 ",-1)])]),_:1},8,["loading","disabled"])])])]),default:v(()=>[e.record?(c(),O("div",{key:0,class:"record-editor",onKeydown:p},[l("div",Eo,[t[3]||(t[3]=l("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)),P(" 当前修改会先暂存;完成多条修改后,点击文件工具栏中的“保存版本”创建 V"+N(e.nextVersionNumber)+"。 ",1)]),e.record.kind==="object"?(c(),D(f,{key:0,"label-position":"top"},{default:v(()=>[(c(!0),O(ne,null,he(e.editFields,(u,R)=>(c(),D(w,{key:u.key,label:u.key},{default:v(()=>[k(m,{"model-value":u.value,type:"textarea",rows:u.isJson?5:3,"aria-label":`编辑字段 ${u.key}`,placeholder:u.isJson?"请输入合法 JSON":`请输入 ${u.key}`,"onUpdate:modelValue":F=>r("update:field",R,F)},null,8,["model-value","rows","aria-label","placeholder","onUpdate:modelValue"]),u.isJson?(c(),O("small",Co," 该字段为对象、数组或数值,请保持合法 JSON 格式。 ")):K("",!0)]),_:2},1032,["label"]))),128))]),_:1})):(c(),O("div",Io,[l("label",ko,N(e.record.kind==="invalid"?"修复 JSON 内容":"JSON 内容"),1),k(m,{id:"raw-record-draft","model-value":e.rawDraft,type:"textarea",rows:10,"aria-label":"编辑当前条 JSON 内容",placeholder:"请输入合法 JSON","onUpdate:modelValue":t[0]||(t[0]=u=>r("update:rawDraft",u))},null,8,["model-value"])]))],32)):K("",!0)]),_:1},8,["model-value","title","close-on-press-escape","show-close"])}}}),To=pe(Vo,[["__scopeId","data-v-745108eb"]]),Ro=["aria-label"],So={class:"line-number","aria-hidden":"true"},Oo=j({__name:"DatasetRawPreview",props:{content:{},fileName:{}},setup(e){const a=e,r=E(()=>a.content.split(` +`).slice(0,100));return(n,p)=>(c(),O("div",{class:"code-viewer",tabindex:"0","aria-label":`${e.fileName||""} 文件内容`},[(c(!0),O(ne,null,he(r.value,(s,t)=>(c(),O("div",{key:t,class:"code-line"},[l("span",So,N(t+1),1),l("code",null,N(s||" "),1)]))),128))],8,Ro))}}),No=pe(Oo,[["__scopeId","data-v-6d3466ce"]]),Fo={class:"page-header"},Do={class:"page-heading"},Bo={class:"heading-row"},Po={class:"dataset-overview","aria-label":"数据集概览"},Ao={class:"overview-item"},Lo={class:"overview-item"},Mo={class:"overview-item overview-item-wide"},Ko={key:1,class:"preview-workspace","aria-label":"数据集文件详情"},Jo={class:"content-pane"},jo={class:"content-toolbar"},zo={class:"content-title"},Go={class:"toolbar-actions"},Uo=["aria-busy"],Ho={key:0,class:"viewer-state"},Yo={key:1,class:"viewer-state viewer-state-error",role:"alert"},Wo={key:2,class:"viewer-state"},qo={class:"viewer-footer"},Qo={key:0},Xo={key:1},Zo={key:2,class:"empty-files","aria-label":"空文件列表"},xo=j({__name:"DatasetPreviewView",setup(e){const r=Un().params.id,n=_(),p=_(!1),s=_(!1),t=_(null),m=_(""),w=_(""),f=_(""),b=_(""),y=_(!1),u=_(null),R=_([]),F=_(""),T=_(""),S=_(!1),g=_(!1),d=_([]),$=_(""),C=_(""),I=_(""),L=_(!1),G=_(!1),Z=_(!1),x=_(1);let V=0;const Q=E(()=>{var o;return((o=t.value)==null?void 0:o.files)||[]}),A=E(()=>Q.value.find(o=>q(o)===m.value)),B=E(()=>w.value?w.value.split(` +`).length:0),re=E(()=>{var o;return oo(w.value,((o=A.value)==null?void 0:o.name)||"")}),Ce=E(()=>re.value.supported),Fe=E(()=>re.value.records),te=E(()=>d.value.find(o=>o.id===I.value)),ee=E(()=>!!I.value&&I.value===C.value),vn=E(()=>{var o;return((o=u.value)==null?void 0:o.kind)==="object"?JSON.stringify(R.value):F.value}),Ie=E(()=>y.value&&vn.value!==T.value),me=E(()=>w.value!==f.value),De=E(()=>Ie.value||me.value),fn=E(()=>{var i,h;const o=String(((i=t.value)==null?void 0:i.type)||"").toLowerCase();return Hn[o]||((h=t.value)==null?void 0:h.type)||"-"}),pn=E(()=>{var i;const o=((i=t.value)==null?void 0:i.storage_type)||"";return Yn[o]||o||"-"}),mn=E(()=>{var o;return(o=t.value)!=null&&o.create_time?new Date(t.value.create_time).toLocaleString("zh-CN"):"-"});function q(o){return String(o.id||o.name)}async function gn(){p.value=!0;try{t.value=await Qn(r);const o=Q.value[0];o&&(m.value=q(o),await Be(o))}finally{p.value=!1}}async function Be(o){s.value=!0,b.value="";const i=++V;try{const h=await Xn(q(o)),H=await Ve(q(o),h.active_version_id);if(i!==V)return;d.value=h.versions,x.value=h.next_version_number??Math.max(0,...h.versions.map(M=>M.version))+1,C.value=h.active_version_id,$.value=h.active_version_id,I.value=h.active_version_id,w.value=H.content,f.value=H.content,se()}catch{i===V&&(b.value="版本内容加载失败,请稍后重试")}finally{i===V&&(s.value=!1)}}async function wn(o){if(!A.value||o===I.value)return;const i=I.value;if(!await Pe("切换版本后,当前样本的未保存修改将丢失。")){$.value=i;return}L.value=!0;const h=++V;try{const H=await Ve(q(A.value),o);if(h!==V)return;w.value=H.content,f.value=H.content,I.value=H.version.id,se()}catch{h===V&&($.value=i)}finally{h===V&&(L.value=!1)}}async function bn(){if(!(!A.value||!te.value||ee.value)){try{await $e.confirm(`确定将 V${te.value.version} 设为当前版本吗?后续任务将使用该版本。`,"切换当前版本",{type:"warning",confirmButtonText:"设为当前版本",cancelButtonText:"取消"})}catch{return}G.value=!0;try{const o=await et(q(A.value),te.value.id,C.value);C.value=o.version.id,w.value=o.content,f.value=o.content,oe.success(`已将 V${o.version.version} 设为当前版本`)}finally{G.value=!1}}}async function yn(){var h,H;if(!A.value||!te.value||ee.value||Z.value)return;const o=te.value;if(await((H=n.value)==null?void 0:H.open({title:`删除 V${o.version} 版本?`,message:`删除后无法恢复。当前版本 V${((h=d.value.find(M=>M.id===C.value))==null?void 0:h.version)||"-"} 不受影响。`,confirmText:"删除版本",cancelText:"取消",tone:"danger"}))){Z.value=!0,L.value=!0;try{const M=await nt(q(A.value),o.id,C.value),ge=await Ve(q(A.value),M.active_version_id);d.value=M.versions,x.value=M.next_version_number??Math.max(0,...M.versions.map(we=>we.version))+1,C.value=M.active_version_id,$.value=M.active_version_id,I.value=M.active_version_id,w.value=ge.content,f.value=ge.content,se(),oe.success(`V${o.version} 版本已删除`)}finally{L.value=!1,Z.value=!1}}}function _n(o){if(!ee.value){oe.warning("历史版本为只读,请先设为当前版本");return}u.value=o,o.kind==="object"?(R.value=Object.entries(o.value).map(([i,h])=>({key:i,value:typeof h=="string"?h:JSON.stringify(h,null,2),isJson:typeof h!="string"})),F.value=""):(R.value=[],F.value=o.raw),y.value=!0,T.value=o.kind==="object"?JSON.stringify(R.value):F.value}function se(){y.value=!1,u.value=null,R.value=[],F.value="",T.value=""}function hn(o,i){const h=R.value[o];h&&(h.value=i)}async function Pe(o="当前存在尚未保存为版本的修改,放弃后将无法恢复。"){if(!De.value)return!0;try{return await $e.confirm(o,"确认放弃修改?",{type:"warning",confirmButtonText:"放弃修改",cancelButtonText:"继续编辑"}),!0}catch{return!1}}async function En(){if(!Ie.value)return!0;try{return await $e.confirm("当前样本存在未暂存修改,放弃后将无法恢复。","确认放弃修改?",{type:"warning",confirmButtonText:"放弃修改",cancelButtonText:"继续编辑"}),!0}catch{return!1}}async function Cn(o){S.value||await En()&&(se(),o==null||o())}function In(){var i;if(((i=u.value)==null?void 0:i.kind)!=="object")return JSON.parse(F.value);const o={};for(const h of R.value)o[h.key]=h.isJson?JSON.parse(h.value):h.value;return o}async function kn(){if(!A.value||!u.value||S.value)return;const o=u.value;let i;try{i=In()}catch(h){oe.error(`JSON 格式校验失败:${h instanceof Error?h.message:"内容格式不正确"}`);return}S.value=!0;try{const h=ao(w.value,A.value.name,o.sourceIndex,i);w.value=h,se(),oe.success(`第 ${o.displayIndex} 条修改已暂存`)}finally{S.value=!1}}async function $n(){if(!(!A.value||!me.value||!ee.value||g.value)){g.value=!0;try{const o=await Zn(q(A.value),w.value,{description:"在线编辑数据样本",baseVersionId:I.value,expectedCurrentVersionId:C.value});w.value=o.content,f.value=o.content,d.value=[o.version,...d.value],x.value=o.version.version+1,C.value=o.version.id,$.value=o.version.id,I.value=o.version.id,oe.success(`V${o.version.version} 创建成功,已设为当前版本`)}finally{g.value=!1}}}function Ae(o){De.value&&(o.preventDefault(),o.returnValue="")}function Vn(o){window.open(xn(r,q(o),I.value),"_blank")}return Gn(()=>Pe()),Ye(()=>{window.addEventListener("beforeunload",Ae),gn()}),We(()=>window.removeEventListener("beforeunload",Ae)),(o,i)=>{const h=Se,H=Tn,M=le,ge=Re,we=On;return je((c(),D(qn,{class:"dataset-preview-page"},{header:v(()=>{var ie,ue;return[l("div",Fo,[l("div",Do,[i[4]||(i[4]=l("div",{class:"heading-icon","aria-hidden":"true"},[l("i",{class:"fa fa-database"})],-1)),l("div",null,[l("div",Bo,[l("h1",null,N(((ie=t.value)==null?void 0:ie.name)||"数据集详情"),1),k(h,{size:"small",type:"primary"},{default:v(()=>[P(N(fn.value),1)]),_:1}),k(h,{size:"small",type:"success"},{default:v(()=>[P(N(pn.value),1)]),_:1})]),l("p",null,N(((ue=t.value)==null?void 0:ue.description)||"逐条查看和修改数据样本"),1)])])])]}),default:v(()=>{var ie,ue,Le,Me,Ke;return[l("section",Po,[l("div",Ao,[i[5]||(i[5]=l("span",null,"数据条数",-1)),l("strong",null,N((((ie=t.value)==null?void 0:ie.count)||0).toLocaleString()),1)]),l("div",Lo,[i[6]||(i[6]=l("span",null,"数据大小",-1)),l("strong",null,N(((ue=t.value)==null?void 0:ue.size)||"-"),1)]),l("div",Mo,[i[7]||(i[7]=l("span",null,"创建时间",-1)),l("strong",null,N(mn.value),1)])]),k(co,{modelValue:$.value,"onUpdate:modelValue":i[0]||(i[0]=de=>$.value=de),versions:d.value,"viewed-version":te.value,"active-version-id":C.value,"is-viewing-active-version":ee.value,"has-pending-version-changes":me.value,"version-loading":L.value,"saving-record":S.value,"activating-version":G.value,"deleting-version":Z.value,onChange:wn,onActivate:bn,onDelete:yn},null,8,["modelValue","versions","viewed-version","active-version-id","is-viewing-active-version","has-pending-version-changes","version-loading","saving-record","activating-version","deleting-version"]),te.value&&!ee.value?(c(),D(H,{key:0,class:"historical-version-alert",type:"info",closable:!1,"show-icon":"",title:"你正在查看历史版本,数据默认只读;设为当前版本后才可编辑。"})):K("",!0),Q.value.length?(c(),O("section",Ko,[l("div",Jo,[l("div",jo,[l("div",zo,[i[9]||(i[9]=l("span",{class:"file-icon","aria-hidden":"true"},[l("i",{class:"fa fa-file-text-o"})],-1)),l("div",null,[l("h2",null,N((Le=A.value)==null?void 0:Le.name),1),l("p",null,[P(N(((Me=A.value)==null?void 0:Me.size)||"未知大小")+" ",1),i[8]||(i[8]=l("span",{"aria-hidden":"true"},"·",-1)),Ce.value?(c(),O(ne,{key:0},[P(N(Fe.value.length.toLocaleString())+" 条记录",1)],64)):(c(),O(ne,{key:1},[P(N(B.value.toLocaleString())+" 行",1)],64))])])]),l("div",Go,[me.value&&ee.value?(c(),D(M,{key:0,type:"primary",loading:g.value,onClick:$n},{default:v(()=>[...i[10]||(i[10]=[l("i",{class:"fa fa-save"},null,-1),P("保存版本 ",-1)])]),_:1},8,["loading"])):K("",!0),k(ge,{content:"下载当前文件",placement:"top"},{default:v(()=>[k(M,{class:"download-button","aria-label":"下载当前文件",disabled:!A.value,onClick:i[1]||(i[1]=de=>A.value&&Vn(A.value))},{default:v(()=>[...i[11]||(i[11]=[l("i",{class:"fa fa-download"},null,-1),P("下载文件 ",-1)])]),_:1},8,["disabled"])]),_:1})])]),je((c(),O("div",{class:"viewer-shell","aria-busy":s.value||L.value},[s.value?(c(),O("div",Ho,[...i[12]||(i[12]=[l("i",{class:"fa fa-circle-o-notch fa-spin","aria-hidden":"true"},null,-1),l("span",null,"正在加载文件内容…",-1)])])):b.value?(c(),O("div",Yo,[i[14]||(i[14]=l("i",{class:"fa fa-exclamation-circle","aria-hidden":"true"},null,-1)),l("strong",null,N(b.value),1),k(M,{size:"small",onClick:i[2]||(i[2]=de=>A.value&&Be(A.value))},{default:v(()=>[...i[13]||(i[13]=[P("重新加载",-1)])]),_:1})])):w.value?Ce.value?(c(),D(ho,{key:3,records:Fe.value,"is-viewing-active-version":ee.value,"version-id":I.value,onEdit:_n},null,8,["records","is-viewing-active-version","version-id"])):(c(),D(No,{key:4,content:w.value,"file-name":(Ke=A.value)==null?void 0:Ke.name},null,8,["content","file-name"])):(c(),O("div",Wo,[...i[15]||(i[15]=[l("i",{class:"fa fa-file-o","aria-hidden":"true"},null,-1),l("span",null,"当前文件暂无可预览内容",-1)])]))],8,Uo)),[[we,L.value]]),l("div",qo,[Ce.value?(c(),O("span",Qo,[...i[16]||(i[16]=[l("i",{class:"fa fa-list-alt","aria-hidden":"true"},null,-1),P(" 逐条查看与编辑",-1)])])):(c(),O("span",Xo,[...i[17]||(i[17]=[l("i",{class:"fa fa-eye","aria-hidden":"true"},null,-1),P(" 文本预览",-1)])])),i[18]||(i[18]=l("span",null,"UTF-8",-1))])])])):p.value?K("",!0):(c(),O("section",Zo,[...i[19]||(i[19]=[l("span",{class:"empty-icon","aria-hidden":"true"},[l("i",{class:"fa fa-folder-open-o"})],-1),l("h2",null,"暂无数据文件",-1),l("p",null,"该数据集还没有可供预览的文件。",-1)])])),k(To,{"model-value":y.value,record:u.value,"edit-fields":R.value,"raw-draft":F.value,"saving-record":S.value,"has-draft-changes":Ie.value,"next-version-number":x.value,onClose:Cn,onSave:kn,"onUpdate:field":hn,"onUpdate:rawDraft":i[3]||(i[3]=de=>F.value=de)},null,8,["model-value","record","edit-fields","raw-draft","saving-record","has-draft-changes","next-version-number"]),k(Wn,{ref_key:"confirmDialogRef",ref:n},null,512)]}),_:1})),[[we,p.value]])}}}),Ja=pe(xo,[["__scopeId","data-v-a92162ce"]]);export{Ja as default}; diff --git a/frontend/dist/assets/DatasetPreviewView-DO7Vb8Tp.css b/frontend/dist/assets/DatasetPreviewView-DO7Vb8Tp.css new file mode 100644 index 0000000..1ef6782 --- /dev/null +++ b/frontend/dist/assets/DatasetPreviewView-DO7Vb8Tp.css @@ -0,0 +1 @@ +.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button:first-child:last-child{border-top-right-radius:var(--el-border-radius-base);border-bottom-right-radius:var(--el-border-radius-base);border-top-left-radius:var(--el-border-radius-base);border-bottom-left-radius:var(--el-border-radius-base)}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:var(--el-border-radius-round)}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:hover,.el-button-group>.el-button:focus,.el-button-group>.el-button:active,.el-button-group>.el-button.is-active{z-index:1}.el-button-group--horizontal{vertical-align:middle;display:inline-block}.el-button-group--horizontal:before,.el-button-group--horizontal:after{content:"";display:table}.el-button-group--horizontal:after{clear:both}.el-button-group--horizontal>.el-button{float:left;position:relative}.el-button-group--horizontal>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group--horizontal>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group--horizontal>.el-button:not(:last-child){margin-right:-1px}.el-button-group--horizontal .el-button--primary:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--primary:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--primary:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--success:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--success:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--success:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--warning:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--warning:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--warning:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--danger:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--danger:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--danger:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--info:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--info:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--info:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal>.el-dropdown>.el-button{border-left-color:var(--el-button-divide-border-color);border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group--vertical{flex-direction:column;align-items:stretch;display:inline-flex}.el-button-group--vertical>.el-button{margin-top:-1px}.el-button-group--vertical>.el-button:first-child{border-bottom-right-radius:0;border-bottom-left-radius:0}.el-button-group--vertical>.el-button:last-child{border-top-left-radius:0;border-top-right-radius:0}.el-button-group--vertical>.el-dropdown{margin-top:-1px}.el-button-group--vertical>.el-dropdown>.el-button{border-left-color:var(--el-button-divide-border-color);border-top-left-radius:0;border-top-right-radius:0}.el-button-group--vertical .el-button--primary:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--primary:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--primary:not(:first-child):not(:last-child){border-top-color:var(--el-button-divide-border-color);border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--success:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--success:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--success:not(:first-child):not(:last-child){border-top-color:var(--el-button-divide-border-color);border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--warning:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--warning:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--warning:not(:first-child):not(:last-child){border-top-color:var(--el-button-divide-border-color);border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--danger:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--danger:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--danger:not(:first-child):not(:last-child){border-top-color:var(--el-button-divide-border-color);border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--info:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--info:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--info:not(:first-child):not(:last-child){border-top-color:var(--el-button-divide-border-color);border-bottom-color:var(--el-button-divide-border-color)}.el-dropdown{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10;color:var(--el-text-color-regular);font-size:var(--el-font-size-base);vertical-align:top;line-height:1;display:inline-flex;position:relative}.el-dropdown.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-dropdown__popper{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10}.el-dropdown__popper.el-popper{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);box-shadow:var(--el-dropdown-menu-box-shadow)}.el-dropdown__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-dropdown__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-top-color:#0000;border-left-color:#0000}.el-dropdown__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:#0000;border-right-color:#0000}.el-dropdown__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:#0000;border-left-color:#0000}.el-dropdown__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-top-color:#0000;border-right-color:#0000}.el-dropdown__popper .el-dropdown-menu{border:none}.el-dropdown__popper .el-dropdown__popper-selfdefine{outline:none}.el-dropdown__popper .el-scrollbar__bar{z-index:calc(var(--el-dropdown-menu-index) + 1)}.el-dropdown__popper .el-dropdown__list{box-sizing:border-box;margin:0;padding:0;list-style:none}.el-dropdown .el-dropdown__caret-button{border-left:none;justify-content:center;align-items:center;width:32px;padding-left:0;padding-right:0;display:inline-flex}.el-dropdown .el-dropdown__caret-button>span{display:inline-flex}.el-dropdown .el-dropdown__caret-button:before{content:"";background:var(--el-overlay-color-lighter);width:1px;display:block;position:absolute;top:-1px;bottom:-1px;left:0}.el-dropdown .el-dropdown__caret-button.el-button:before{background:var(--el-border-color);opacity:.5}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{font-size:inherit;padding-left:0}.el-dropdown .el-dropdown-selfdefine{outline:none}.el-dropdown--large .el-dropdown__caret-button{width:40px}.el-dropdown--small .el-dropdown__caret-button{width:24px}.el-dropdown-menu{z-index:var(--el-dropdown-menu-index);background-color:var(--el-bg-color-overlay);border-radius:var(--el-border-radius-base);box-shadow:none;border:none;margin:0;padding:5px 0;list-style:none;position:relative;top:0;left:0}.el-dropdown-menu__item{white-space:nowrap;line-height:22px;font-size:var(--el-font-size-base);color:var(--el-text-color-regular);cursor:pointer;outline:none;align-items:center;margin:0;padding:5px 16px;list-style:none;display:flex}.el-dropdown-menu__item:not(.is-disabled):hover,.el-dropdown-menu__item:not(.is-disabled):focus{background-color:var(--el-dropdown-menuItem-hover-fill);color:var(--el-dropdown-menuItem-hover-color)}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{border-top:1px solid var(--el-border-color-lighter);margin:6px 0}.el-dropdown-menu__item.is-disabled{cursor:not-allowed;color:var(--el-text-color-disabled)}.el-dropdown-menu--large{padding:7px 0}.el-dropdown-menu--large .el-dropdown-menu__item{padding:7px 20px;font-size:14px;line-height:22px}.el-dropdown-menu--large .el-dropdown-menu__item--divided{margin:8px 0}.el-dropdown-menu--small{padding:3px 0}.el-dropdown-menu--small .el-dropdown-menu__item{padding:2px 12px;font-size:12px;line-height:20px}.el-dropdown-menu--small .el-dropdown-menu__item--divided{margin:4px 0}.version-control-bar[data-v-e51d9b4f]{display:flex;align-items:center;gap:16px;min-height:64px;margin-bottom:12px;padding:10px 14px;box-sizing:border-box;border:1px solid #dfe5ee;border-radius:10px;background:#fff}.version-selector-group[data-v-e51d9b4f]{display:flex;align-items:center;gap:10px;flex:0 0 auto}.version-selector-group label[data-v-e51d9b4f]{color:#344054;font-size:13px;font-weight:600}.version-select[data-v-e51d9b4f]{width:300px}.version-status[data-v-e51d9b4f]{display:flex;align-items:center;flex:1;gap:10px;min-width:0}.version-status>span[data-v-e51d9b4f]{overflow:hidden;color:#7c8799;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.version-actions[data-v-e51d9b4f]{flex:0 0 auto;line-height:1}.version-actions-button[data-v-e51d9b4f]{width:40px;height:40px;flex:0 0 auto;padding:0;border-radius:10px}.version-actions-button i[data-v-e51d9b4f]{font-size:16px}.version-actions-popper .el-dropdown-menu__item{gap:8px;min-height:40px}.version-actions-popper .el-dropdown-menu{min-width:168px}.version-actions-popper .version-action-primary:not(.is-disabled) i{color:var(--primary-color)}.version-actions-popper .version-action-danger:not(.is-disabled){color:var(--el-color-danger)}.version-actions-popper .version-action-danger:not(.is-disabled):hover{color:var(--el-color-danger);background:var(--el-color-danger-light-9)}@media(max-width:680px){.version-control-bar[data-v-e51d9b4f],.version-selector-group[data-v-e51d9b4f],.version-status[data-v-e51d9b4f]{align-items:stretch;flex-direction:column}.version-select[data-v-e51d9b4f],.version-selector-group[data-v-e51d9b4f]{width:100%}.version-status[data-v-e51d9b4f]{width:100%;min-width:0}.version-status>span[data-v-e51d9b4f]{white-space:normal;overflow-wrap:anywhere}.version-actions[data-v-e51d9b4f]{align-self:flex-end}}.records-viewer[data-v-cc5ff1bc]{min-height:468px;padding:16px;box-sizing:border-box}.records-toolbar[data-v-cc5ff1bc]{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px}.records-toolbar>div[data-v-cc5ff1bc]{display:flex;align-items:center;gap:8px;min-width:0}.records-toolbar strong[data-v-cc5ff1bc]{color:#253047;font-size:14px}.records-toolbar span[data-v-cc5ff1bc]{color:#8a94a6;font-size:12px}.record-search[data-v-cc5ff1bc]{width:240px}.record-table-shell[data-v-cc5ff1bc]{overflow:hidden;border:1px solid #e4e9f1;border-radius:8px}.record-table[data-v-cc5ff1bc]{width:100%}.record-table[data-v-cc5ff1bc] .el-table__header th{height:44px;background:#f5f7fa;color:#475467;font-size:12px;font-weight:600}.record-table[data-v-cc5ff1bc] .el-table__cell{padding:10px 0}.record-table[data-v-cc5ff1bc] .record-table-row-invalid td{background:#fff7f7!important}.table-index[data-v-cc5ff1bc]{display:flex;align-items:center;flex-direction:column;gap:1px;color:#667085;font-variant-numeric:tabular-nums}.table-index strong[data-v-cc5ff1bc]{font-size:13px;font-weight:600}.table-index small[data-v-cc5ff1bc]{color:#98a2b3;font-size:10px}.table-cell-text[data-v-cc5ff1bc]{display:-webkit-box;overflow:hidden;color:#526076;font-size:12px;line-height:1.6;overflow-wrap:anywhere;-webkit-box-orient:vertical;-webkit-line-clamp:2}.record-table .el-button i[data-v-cc5ff1bc]{margin-right:5px}.records-pagination[data-v-cc5ff1bc]{display:flex;justify-content:flex-end;margin-top:16px}.viewer-state[data-v-cc5ff1bc]{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:10px;height:100%;min-height:400px;color:#8b96a8;font-size:13px}.viewer-state>i[data-v-cc5ff1bc]{color:#aeb7c5;font-size:24px}.record-empty-state[data-v-cc5ff1bc]{min-height:320px}@media(max-width:680px){.records-toolbar[data-v-cc5ff1bc]{align-items:stretch;flex-direction:column}.record-search[data-v-cc5ff1bc]{width:100%}}@media(prefers-reduced-motion:reduce){.record-table[data-v-cc5ff1bc] .el-table__row{transition:none}}.editor-hint[data-v-745108eb]{margin-bottom:18px;padding:10px 12px;border:1px solid #dbe2ff;border-radius:8px;background:#f5f7ff;color:#56627a;font-size:13px}.editor-hint i[data-v-745108eb]{margin-right:6px;color:var(--primary-color)}.field-helper[data-v-745108eb]{margin-top:5px;color:#8a94a6;line-height:1.5}.raw-record-editor label[data-v-745108eb]{display:block;margin-bottom:8px;color:#344054;font-size:13px;font-weight:600}.record-editor-actions[data-v-745108eb]{display:flex;align-items:center;justify-content:space-between;gap:16px}.record-editor-actions>span[data-v-745108eb]{color:#8a94a6;font-size:12px}@media(max-width:680px){.record-editor-actions[data-v-745108eb]{align-items:stretch;flex-direction:column}.record-editor-actions>div[data-v-745108eb]{display:grid;grid-template-columns:1fr 1fr;gap:8px}}.code-viewer[data-v-6d3466ce]{height:100%;max-height:468px;overflow:auto;padding:12px 0 18px;outline:none}.code-viewer[data-v-6d3466ce]:focus-visible{box-shadow:inset 0 0 0 2px var(--el-color-primary-light-5)}.code-line[data-v-6d3466ce]{display:grid;grid-template-columns:54px minmax(0,1fr);min-height:25px;color:#344054;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:12px;line-height:1.65}.code-line[data-v-6d3466ce]:hover{background:#f4f6fa}.line-number[data-v-6d3466ce]{padding-right:14px;border-right:1px solid #edf0f5;color:#a4adbc;font-variant-numeric:tabular-nums;text-align:right;-webkit-user-select:none;user-select:none}.code-line code[data-v-6d3466ce]{display:block;min-width:max-content;padding:0 18px;white-space:pre}.dataset-preview-page[data-v-a92162ce]{min-width:0}.page-header[data-v-a92162ce]{display:flex;align-items:center;justify-content:space-between;gap:20px;width:100%;min-width:0}.page-heading[data-v-a92162ce]{display:flex;align-items:center;gap:14px;min-width:0}.heading-icon[data-v-a92162ce]{display:grid;flex:0 0 44px;width:44px;height:44px;place-items:center;border-radius:12px;background:linear-gradient(145deg,#eef2ff,#e0e7ff);color:var(--primary-color);font-size:18px}.heading-row[data-v-a92162ce]{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.heading-row h1[data-v-a92162ce]{margin:0 4px 0 0;color:#172033;font-size:20px;font-weight:650;line-height:1.35}.page-heading p[data-v-a92162ce]{margin:4px 0 0;color:#7c8799;font-size:13px;line-height:1.5}.dataset-overview[data-v-a92162ce]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:20px;padding:16px 20px;border:1px solid #edf0f5;border-radius:12px;background:#fbfcfe}.overview-item[data-v-a92162ce]{display:flex;flex-direction:column;gap:5px;min-width:0;padding:0 20px;border-right:1px solid #e9edf4}.overview-item[data-v-a92162ce]:first-child{padding-left:0}.overview-item[data-v-a92162ce]:last-child{padding-right:0;border-right:0}.overview-item span[data-v-a92162ce]{color:#8a94a6;font-size:12px}.overview-item strong[data-v-a92162ce]{overflow:hidden;color:#283347;font-size:15px;font-variant-numeric:tabular-nums;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.historical-version-alert[data-v-a92162ce]{margin-bottom:12px}.preview-workspace[data-v-a92162ce]{min-height:520px;overflow:hidden;border:1px solid #e5eaf2;border-radius:12px;background:#fff}.content-title h2[data-v-a92162ce]{margin:0;color:#263146;font-size:14px;font-weight:600}.content-pane[data-v-a92162ce]{display:flex;flex-direction:column;min-width:0;background:#fff}.content-toolbar[data-v-a92162ce]{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:68px;padding:10px 16px;border-bottom:1px solid #e5eaf2}.content-title[data-v-a92162ce]{display:flex;align-items:center;gap:10px;min-width:0}.content-title>div[data-v-a92162ce]{min-width:0}.content-title h2[data-v-a92162ce]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.content-title p[data-v-a92162ce]{display:flex;gap:6px;margin:3px 0 0;color:#8a94a6;font-size:11px;font-variant-numeric:tabular-nums}.file-icon[data-v-a92162ce]{display:grid;flex:0 0 34px;height:34px;place-items:center;border-radius:8px;background:#f1f5f9;color:#69768b}.download-button[data-v-a92162ce]{min-height:36px}.download-button i[data-v-a92162ce]{margin-right:6px}.toolbar-actions[data-v-a92162ce]{display:flex;align-items:center;flex:0 0 auto}.toolbar-actions i[data-v-a92162ce]{margin-right:6px}.viewer-shell[data-v-a92162ce]{position:relative;flex:1;min-height:400px;overflow:hidden;background:#fbfcfe}.viewer-state[data-v-a92162ce]{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:10px;height:100%;min-height:400px;color:#8b96a8;font-size:13px}.viewer-state>i[data-v-a92162ce]{color:#aeb7c5;font-size:24px}.viewer-state-error>i[data-v-a92162ce],.viewer-state-error strong[data-v-a92162ce]{color:#d14343}.viewer-state-error strong[data-v-a92162ce]{font-weight:500}.viewer-footer[data-v-a92162ce]{display:flex;align-items:center;justify-content:space-between;min-height:34px;padding:6px 14px;border-top:1px solid #e5eaf2;background:#f8fafc;color:#8a94a6;font-size:11px}.viewer-footer i[data-v-a92162ce]{margin-right:5px}.empty-files[data-v-a92162ce]{display:flex;align-items:center;justify-content:center;flex-direction:column;min-height:420px;border:1px dashed #dce2eb;border-radius:12px;background:#fbfcfe;text-align:center}.empty-icon[data-v-a92162ce]{display:grid;width:54px;height:54px;margin-bottom:14px;place-items:center;border-radius:14px;background:#eef2f7;color:#8a96a8;font-size:22px}.empty-files h2[data-v-a92162ce]{margin:0;color:#354056;font-size:15px}.empty-files p[data-v-a92162ce]{margin:6px 0 0;color:#929daf;font-size:13px}@media(max-width:900px){.dataset-overview[data-v-a92162ce]{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:680px){.page-header[data-v-a92162ce]{align-items:flex-start}.dataset-overview[data-v-a92162ce]{grid-template-columns:1fr}.overview-item[data-v-a92162ce]{padding:0 0 12px;border-right:0;border-bottom:1px solid #e9edf4}.overview-item[data-v-a92162ce]:last-child{padding-bottom:0;border-bottom:0}.content-toolbar[data-v-a92162ce]{align-items:flex-start}.download-button[data-v-a92162ce]{width:44px;padding:8px;font-size:0}.download-button i[data-v-a92162ce]{margin:0;font-size:14px}} diff --git a/frontend/dist/assets/DimensionCreateView-DvcDsfrQ.js b/frontend/dist/assets/DimensionCreateView-DvcDsfrQ.js new file mode 100644 index 0000000..8fadd50 --- /dev/null +++ b/frontend/dist/assets/DimensionCreateView-DvcDsfrQ.js @@ -0,0 +1 @@ +import{a as k,E as M}from"./el-form-item-D5kF3B90.js";import{E as q}from"./index-TFUf94PZ.js";import{E as R}from"./index-BjEW7-SA.js";import{d as S,G as B,e as F,w as i,j as y,y as _,z as I,o as O,s as r,f as m,aB as P,x as h,aa as j,A as x,v as A,ac as L}from"./index-BKKvzUDD.js";import{P as N}from"./PageCard-BoKXOzst.js";import{E as T,D as U}from"./DimensionFormFields-Bhy2Lp-a.js";import{b as z,u as G,c as H}from"./eval-D3O1S_j5.js";import{g as J}from"./model-gCK34aBo.js";import"./castArray-5uErZEc3.js";import"./_baseClone-B5RBzbh5.js";import"./raf-C-x62Pcl.js";import"./index-DLzof2Fz.js";import"./index-GAnQrJsQ.js";import"./el-card-CApHJ1Gj.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";import"./el-select-Dl-FRZQd.js";import"./index-CWUnzf90.js";import"./vnode-78qeDweP.js";import"./el-popper-D6_hxRbQ.js";import"./el-scrollbar-ClJnvz-9.js";import"./index-D5ryD3I5.js";import"./index-BDEF353-.js";import"./scroll-BkzZKETR.js";import"./clamp-CbbY8h6F.js";import"./toNumber-Dkj3QRv9.js";import"./_baseIteratee-BAilevJ_.js";import"./el-checkbox-qGZ2-RM2.js";import"./omit-BTSq4AYh.js";import"./el-radio-group-BkCoTeQL.js";import"./el-input-number-BFR4pu1i.js";import"./index-BENk7lZo.js";import"./el-slider-DYENF1-i.js";import"./debounce-ByXPNh5F.js";import"./el-switch-DbCDiaMc.js";import"./validator-Fn0bm4xU.js";import"./el-tooltip-l0sNRNKZ.js";/* empty css *//* empty css */const Be=S({__name:"DimensionCreateView",setup(K){const c=L(),f=A(),n=_(),p=_(!1),u=y(()=>!!c.params.id),s=y(()=>c.params.id),d=_([]);let e=I({name:"",type:"",description:"",eval_model:"",eval_method:"",eval_prompt:"",is_active:!0,is_default:!1,bleu_n:1,output_precision:3,score_min:0,score_max:5,pass_threshold:3});const b={name:[{required:!0,message:"请输入维度名称",trigger:"blur"},{max:50,message:"不超过 50 字符",trigger:"blur"}],type:[{required:!0,message:"请选择指标类型",trigger:"change"}],eval_model:[{required:!0,message:"请选择大模型",trigger:"change"}],eval_method:[{required:!0,message:"请选择评估方式",trigger:"change"}],eval_prompt:[{required:!0,message:"请填写评估 Prompt",trigger:"blur"}]};async function w(){var o,t;if(s.value)try{const a=await z(s.value);Object.assign(e,{name:a.name||"",type:a.type||"",description:a.description||"",eval_model:a.eval_model||"",eval_method:a.eval_method||(a.type?(t=(o=T[a.type])==null?void 0:o[0])==null?void 0:t.value:""),eval_prompt:a.eval_prompt||"",is_active:a.is_active!==!1,is_default:!!a.is_default,bleu_n:a.bleu_n??1,output_precision:a.output_precision??3,score_min:a.score_min??0,score_max:a.score_max??5,pass_threshold:a.pass_threshold??3})}catch{}}async function E(){try{const o=await J()||[];d.value=o.filter(t=>t.purpose==="evaluation")}catch{d.value=[]}}async function D(){n.value&&await n.value.validate(async o=>{if(o){p.value=!0;try{const t={name:e.name,type:e.type,description:e.description,eval_model:e.type==="text_similarity"?null:e.eval_model,eval_method:e.eval_method,eval_prompt:e.type==="text_similarity"?null:e.eval_prompt,is_active:e.is_active,is_default:e.is_default,create_time:new Date().toISOString()};e.type==="text_similarity"&&(t.bleu_n=e.bleu_n,t.output_precision=e.output_precision),e.type==="metric"&&(t.score_min=e.score_min,t.score_max=e.score_max,t.pass_threshold=e.pass_threshold),u.value&&s.value?(await G(s.value,t),x.success("更新成功")):(await H(t),x.success("创建成功")),f.push("/model-eval")}catch{}finally{p.value=!1}}})}function V(){f.back()}return B(()=>{E(),w()}),(o,t)=>{const a=q,v=k,g=R,C=M;return O(),F(N,{title:u.value?"编辑评测维度":"添加评测维度"},{default:i(()=>[r(C,{ref_key:"formRef",ref:n,model:m(e),rules:b,"label-width":"130px",style:{"max-width":"760px"}},{default:i(()=>[r(v,{label:"维度名称",prop:"name"},{default:i(()=>[r(a,{modelValue:m(e).name,"onUpdate:modelValue":t[0]||(t[0]=l=>m(e).name=l),placeholder:"请输入维度名称",maxlength:"50","show-word-limit":""},null,8,["modelValue"])]),_:1}),r(U,{modelValue:m(e),"onUpdate:modelValue":t[1]||(t[1]=l=>P(e)?e.value=l:e=l),"eval-models":d.value},null,8,["modelValue","eval-models"]),r(v,null,{default:i(()=>[r(g,{type:"primary",loading:p.value,onClick:D},{default:i(()=>[h(j(u.value?"保存":"创建"),1)]),_:1},8,["loading"]),r(g,{onClick:V},{default:i(()=>[...t[2]||(t[2]=[h("取消",-1)])]),_:1})]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])}}});export{Be as default}; diff --git a/frontend/dist/assets/DimensionFormFields-Bhy2Lp-a.js b/frontend/dist/assets/DimensionFormFields-Bhy2Lp-a.js new file mode 100644 index 0000000..6045cd9 --- /dev/null +++ b/frontend/dist/assets/DimensionFormFields-Bhy2Lp-a.js @@ -0,0 +1,70 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/style-CLmeZurA.css","assets/index--cDK8lVp.js","assets/index-BKKvzUDD.js","assets/index-BrKMLqs4.css"])))=>i.map(i=>d[i]); +import{d as R,az as B,D as b,o as m,c as r,M as d,s as t,w as o,ad as f,e as v,g as _,x as w,aa as V,q as E,f as I,aA as L,aC as G,j as U,aD as k,aE as j}from"./index-BKKvzUDD.js";import{a as q}from"./el-form-item-D5kF3B90.js";import{E as z}from"./index-TFUf94PZ.js";import{E as H,a as Y}from"./el-select-Dl-FRZQd.js";import{a as J,E as K}from"./el-checkbox-qGZ2-RM2.js";import{E as Q,b as W}from"./el-radio-group-BkCoTeQL.js";import{E as X}from"./el-input-number-BFR4pu1i.js";import{E as Z}from"./el-slider-DYENF1-i.js";import{E as $}from"./el-switch-DbCDiaMc.js";import"./el-popper-D6_hxRbQ.js";import"./el-tooltip-l0sNRNKZ.js";/* empty css */import"./el-scrollbar-ClJnvz-9.js";/* empty css */import{_ as ee}from"./_plugin-vue_export-helper-DlAUqK2U.js";const M={classification:[{value:"standard",name:"标准匹配",desc:"根据预设标准评估"},{value:"sentiment",name:"情感分析",desc:"识别文本情感倾向"},{value:"custom",name:"自定义评分器",desc:"自定义评估规则"}],metric:[{value:"metric_standard",name:"综合评测",desc:"根据预设标准评分"},{value:"semantic",name:"语义相似度",desc:"计算语义相似程度"},{value:"custom",name:"自定义评分器",desc:"自定义评估规则"}],text_similarity:[{value:"bleu_4",name:"BLEU-4",desc:"N-gram 精确度评估"},{value:"cosine",name:"Cosine",desc:"余弦相似度"},{value:"rouge_1",name:"ROUGE-1",desc:"unigram 重叠评估"},{value:"rouge_2",name:"ROUGE-2",desc:"bigram 重叠评估"},{value:"rouge_4",name:"ROUGE-4",desc:"4-gram 重叠评估"}]},y={standard:`# 角色 +你是一位专业的对话评估专家,擅长根据提供的标准对助理在对话中的最终反应进行评估,并确定其是否[[Pass]]或[[Fail]]。 + +## 技能 +### 技能 1: 对话回顾 +- 通读整个对话以理解上下文和背景信息。 +- 确保全面理解对话的意图和用户的需求。 + +### 技能 2: 最终回答识别 +- 从对话中准确识别出助理给出的最后一个回答。 +- 确保关注的是最终的回答,而不是中间的部分。 + +### 技能 3: 标准应用 +- 仔细审查每个评价标准。 +- 将助理的最终回答与标准的各个方面进行详细比较。 + +### 技能 4: 逐步推理 +- 记录每个标准以及最终响应如何满足或不满足该标准。 +- 提供详细的证据,并解释为什么最终答复满足或不满足期望。 + +### 技能 5: 结果判定 +- 根据逐步推理的结果,判断最终回答是[[Pass]]或[[Fail]] +- 提供明确的结论并解释理由。 + +## 输出格式 +以下列格式提供结果: +- **分步推理:**[详细推理在这里] +- **最终结果:**[[Pass]]或[[Fail]] + +## 限制 +- 只针对对话中的最终回答进行评估。 +- 在评估过程中,确保遵循提供的标准,避免主观判断。`,sentiment:`# 角色 +你是一位专业的情感分析专家,擅长识别文本中的情感倾向,并给出[[Positive]]、[[Neutral]]或[[Negative]]的判断。 + +## 技能 +### 技能 1: 文本理解 +- 通读输入文本,理解其内容和语境。 + +### 技能 2: 情感识别 +- 识别文本中表达的情感词汇、语气和情感强度。 +- 分析上下文中的情感线索。 + +### 技能 3: 情感判定 +- 根据识别到的情感信息,判断整体情感倾向。 + +## 输出格式 +- **情感分析:**[分析过程] +- **最终结果:**[[Positive]]/[[Neutral]]/[[Negative]]`,metric_standard:`# 角色 +你是一位专业的模型评估专家,擅长根据预设标准对模型输出进行综合评分(0-5分)。 + +## 评估标准 +请从以下维度对模型输出进行评分: +1. 准确性:回答是否准确无误 +2. 完整性:是否完整覆盖了问题的各个方面 +3. 连贯性:回答是否逻辑清晰、结构合理 +4. 可读性:语言表达是否流畅、易懂 + +## 输出格式 +- **评分理由:**[详细说明] +- **最终评分:**[0-5 的分数]`,semantic:`# 角色 +你是一位专业的语义相似度评估专家,擅长计算两段文本之间的语义相似程度。 + +## 任务 +请评估生成文本与参考文本在语义上的相似程度,给出 0-1 之间的分数。 + +## 输出格式 +- **相似度分析:**[分析过程] +- **相似度分数:**[0-1 的分数]`,custom:`# 自定义评估器 +请在此编写您的自定义评估 Prompt...`},le={class:"method-desc"},ae={class:"method-desc"},te={style:{width:"100%"}},c=.5,oe=R({__name:"DimensionFormFields",props:L({evalModels:{},showDescription:{type:Boolean,default:!0},showStatusSettings:{type:Boolean,default:!0},allowedTypes:{default:()=>["classification","metric","text_similarity"]}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(p){const P=G(async()=>(await k(()=>Promise.resolve({}),__vite__mapDeps([0])),(await k(()=>import("./index--cDK8lVp.js").then(l=>l.w),__vite__mapDeps([1,2,3]))).MdEditor)),D=p,e=B(p,"modelValue"),N=U(()=>Object.entries(j).filter(([u])=>D.allowedTypes.includes(u)).map(([u,l])=>({value:u,label:l}))),x=U(()=>e.value.type?M[e.value.type]||[]:[]);return b(()=>e.value.type,u=>{var s,i;if(!u)return;const l=((i=(s=M[u])==null?void 0:s[0])==null?void 0:i.value)||"";e.value.eval_method=u==="text_similarity"?[l]:l,u!=="text_similarity"&&y[l]&&(e.value.eval_prompt=y[l])},{flush:"sync"}),b(()=>e.value.eval_method,u=>{if(e.value.type==="text_similarity"||!u)return;const l=Array.isArray(u)?u[0]:u;l&&y[l]&&(e.value.eval_prompt=y[l])},{flush:"sync"}),b(()=>[e.value.type,e.value.score_min,e.value.score_max],([u,l,s])=>{if(u==="metric"){if(s<=l){e.value.score_max=l+c;return}e.value.pass_threshold=Math.min(Math.max(e.value.pass_threshold,l),s)}},{flush:"sync"}),(u,l)=>{const s=Y,i=H,n=q,O=z,S=W,C=Q,T=K,A=J,h=X,F=Z,g=$;return m(),r(d,null,[t(n,{label:"指标类型",prop:"type"},{default:o(()=>[t(i,{modelValue:e.value.type,"onUpdate:modelValue":l[0]||(l[0]=a=>e.value.type=a),placeholder:"请选择指标类型",style:{width:"100%"}},{default:o(()=>[(m(!0),r(d,null,f(N.value,a=>(m(),v(s,{key:a.value,label:a.label,value:a.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),p.showDescription?(m(),v(n,{key:0,label:"描述"},{default:o(()=>[t(O,{modelValue:e.value.description,"onUpdate:modelValue":l[1]||(l[1]=a=>e.value.description=a),type:"textarea",rows:2,maxlength:"200","show-word-limit":""},null,8,["modelValue"])]),_:1})):_("",!0),e.value.type==="classification"||e.value.type==="metric"?(m(),r(d,{key:1},[t(n,{label:"选择大模型",prop:"eval_model"},{default:o(()=>[t(i,{modelValue:e.value.eval_model,"onUpdate:modelValue":l[2]||(l[2]=a=>e.value.eval_model=a),placeholder:"请选择评测模型",filterable:"",style:{width:"100%"}},{default:o(()=>[(m(!0),r(d,null,f(p.evalModels,a=>(m(),v(s,{key:a.id,label:a.name,value:a.name},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),t(n,{label:"评估方式",prop:"eval_method"},{default:o(()=>[t(C,{modelValue:e.value.eval_method,"onUpdate:modelValue":l[3]||(l[3]=a=>e.value.eval_method=a)},{default:o(()=>[(m(!0),r(d,null,f(x.value,a=>(m(),v(S,{key:a.value,value:a.value},{default:o(()=>[w(V(a.name)+" ",1),E("span",le,V(a.desc),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])]),_:1}),t(n,{label:"评估 Prompt",prop:"eval_prompt"},{default:o(()=>[t(I(P),{modelValue:e.value.eval_prompt,"onUpdate:modelValue":l[4]||(l[4]=a=>e.value.eval_prompt=a),language:"zh-CN","toolbars-exclude":["github","save"],style:{height:"320px"}},null,8,["modelValue"])]),_:1})],64)):_("",!0),e.value.type==="text_similarity"?(m(),r(d,{key:2},[t(n,{label:"评估方式",prop:"eval_method"},{default:o(()=>[t(A,{modelValue:e.value.eval_method,"onUpdate:modelValue":l[5]||(l[5]=a=>e.value.eval_method=a)},{default:o(()=>[(m(!0),r(d,null,f(x.value,a=>(m(),v(T,{key:a.value,value:a.value},{default:o(()=>[w(V(a.name)+" ",1),E("span",ae,V(a.desc),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])]),_:1}),t(n,{label:"BLEU n-gram"},{default:o(()=>[t(i,{modelValue:e.value.bleu_n,"onUpdate:modelValue":l[6]||(l[6]=a=>e.value.bleu_n=a),style:{width:"160px"}},{default:o(()=>[t(s,{value:1,label:"1-gram"}),t(s,{value:2,label:"2-gram"}),t(s,{value:3,label:"3-gram"}),t(s,{value:4,label:"4-gram"})]),_:1},8,["modelValue"])]),_:1}),t(n,{label:"输出精度"},{default:o(()=>[t(i,{modelValue:e.value.output_precision,"onUpdate:modelValue":l[7]||(l[7]=a=>e.value.output_precision=a),style:{width:"160px"}},{default:o(()=>[t(s,{value:1,label:"1 位小数"}),t(s,{value:2,label:"2 位小数"}),t(s,{value:3,label:"3 位小数"}),t(s,{value:4,label:"4 位小数"})]),_:1},8,["modelValue"])]),_:1})],64)):_("",!0),e.value.type==="metric"?(m(),r(d,{key:3},[t(n,{label:"评分最小值",prop:"score_min"},{default:o(()=>[t(h,{modelValue:e.value.score_min,"onUpdate:modelValue":l[8]||(l[8]=a=>e.value.score_min=a),min:0,max:Math.max(e.value.score_max-c,0),step:c,style:{width:"160px"}},null,8,["modelValue","max"])]),_:1}),t(n,{label:"评分最大值",prop:"score_max"},{default:o(()=>[t(h,{modelValue:e.value.score_max,"onUpdate:modelValue":l[9]||(l[9]=a=>e.value.score_max=a),min:e.value.score_min+c,step:c,style:{width:"160px"}},null,8,["modelValue","min"])]),_:1}),t(n,{label:"通过阈值",prop:"pass_threshold"},{default:o(()=>[E("div",te,[t(F,{modelValue:e.value.pass_threshold,"onUpdate:modelValue":l[10]||(l[10]=a=>e.value.pass_threshold=a),min:e.value.score_min,max:e.value.score_max,step:.5,"show-input":"","show-input-controls":!1},null,8,["modelValue","min","max"])])]),_:1})],64)):_("",!0),p.showStatusSettings?(m(),r(d,{key:4},[t(n,{label:"启用该维度"},{default:o(()=>[t(g,{modelValue:e.value.is_active,"onUpdate:modelValue":l[11]||(l[11]=a=>e.value.is_active=a)},null,8,["modelValue"])]),_:1}),t(n,{label:"设为默认"},{default:o(()=>[t(g,{modelValue:e.value.is_default,"onUpdate:modelValue":l[12]||(l[12]=a=>e.value.is_default=a)},null,8,["modelValue"])]),_:1})],64)):_("",!0)],64)}}}),Ee=ee(oe,[["__scopeId","data-v-c192dba1"]]);export{Ee as D,M as E}; diff --git a/frontend/dist/assets/DimensionFormFields-jElmd60O.css b/frontend/dist/assets/DimensionFormFields-jElmd60O.css new file mode 100644 index 0000000..4773e55 --- /dev/null +++ b/frontend/dist/assets/DimensionFormFields-jElmd60O.css @@ -0,0 +1 @@ +.method-desc[data-v-c192dba1]{color:#909399;font-size:12px;margin-left:6px} diff --git a/frontend/dist/assets/EvalCreateView-DT45yzX7.js b/frontend/dist/assets/EvalCreateView-DT45yzX7.js new file mode 100644 index 0000000..02a5fa2 --- /dev/null +++ b/frontend/dist/assets/EvalCreateView-DT45yzX7.js @@ -0,0 +1 @@ +import{E as Q}from"./index-BjEW7-SA.js";import{v as X}from"./directive-DsZckUTJ.js";import{d as $,az as O,D as A,o as s,e as _,w as l,s as o,c as S,M as q,ad as F,q as k,x as f,aA as T,y,g as G,aa as E,G as ee,at as ae,A as I,K as le,n as N,v as te}from"./index-BKKvzUDD.js";import{P as oe}from"./PageCard-BoKXOzst.js";import{E as se}from"./el-alert-xVLeNUgJ.js";import{E as z,a as j}from"./el-form-item-D5kF3B90.js";import{E as ie}from"./index-TFUf94PZ.js";import{E as re,a as de}from"./el-select-Dl-FRZQd.js";import{E as ue,b as ne}from"./el-radio-group-BkCoTeQL.js";import{E as K}from"./el-switch-DbCDiaMc.js";import"./el-scrollbar-ClJnvz-9.js";import"./el-popper-D6_hxRbQ.js";/* empty css */import{_ as L}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{D as me}from"./DimensionFormFields-Bhy2Lp-a.js";import{E as _e,a as ce}from"./el-checkbox-qGZ2-RM2.js";import{E as pe}from"./el-input-number-BFR4pu1i.js";/* empty css */import{E as ve}from"./index-BDEF353-.js";import{E as fe,a as be}from"./el-descriptions-3GOD-6nw.js";import{E as ge}from"./el-space-Bcqwkggw.js";import{s as Ve,c as ye}from"./eval-D3O1S_j5.js";import{a as ke,g as Ee}from"./model-gCK34aBo.js";import{g as we}from"./dataset-BJ2ikehQ.js";import"./el-card-CApHJ1Gj.js";import"./vnode-78qeDweP.js";import"./castArray-5uErZEc3.js";import"./_baseClone-B5RBzbh5.js";import"./raf-C-x62Pcl.js";import"./index-DLzof2Fz.js";import"./index-GAnQrJsQ.js";import"./index-CWUnzf90.js";import"./index-D5ryD3I5.js";import"./scroll-BkzZKETR.js";import"./clamp-CbbY8h6F.js";import"./toNumber-Dkj3QRv9.js";import"./_baseIteratee-BAilevJ_.js";import"./omit-BTSq4AYh.js";import"./validator-Fn0bm4xU.js";import"./el-slider-DYENF1-i.js";import"./debounce-ByXPNh5F.js";import"./el-tooltip-l0sNRNKZ.js";import"./index-BENk7lZo.js";const Me=$({__name:"EvalTaskSetupStep",props:T({trainedModels:{},evalDatasets:{},gpus:{},loading:{type:Boolean},disabled:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(b,{expose:u}){const e=O(b,"modelValue"),r=y(),i={eval_task_name:[{required:!0,message:"请输入任务名称",trigger:"blur"},{max:50,message:"任务名称不超过 50 个字符",trigger:"blur"}],model_id:[{required:!0,message:"请选择评测模型",trigger:"change"}],gpu_id:[{required:!0,message:"请选择 GPU",trigger:"change"}],dataset_id:[{validator:(g,a,p)=>{if(e.value.data_source==="dataset"&&(a===""||a===null||a===void 0)){p(new Error("请选择评测数据集"));return}p()},trigger:"change"}]};A(()=>e.value.data_source,g=>{var a;g!=="dataset"&&(e.value.dataset_id="",(a=r.value)==null||a.clearValidate("dataset_id"))});async function c(){if(!r.value)return!1;try{return!!await r.value.validate()}catch{return!1}}return u({validate:c}),(g,a)=>{const p=ie,v=j,w=de,M=re,R=ne,D=ue,n=se,C=K,h=z;return s(),_(h,{ref_key:"formRef",ref:r,model:e.value,rules:i,"label-width":"120px",class:"step-form",disabled:b.disabled,"scroll-to-error":""},{default:l(()=>[o(v,{label:"任务名称",prop:"eval_task_name"},{default:l(()=>[o(p,{modelValue:e.value.eval_task_name,"onUpdate:modelValue":a[0]||(a[0]=m=>e.value.eval_task_name=m),placeholder:"请输入任务名称",maxlength:"50","show-word-limit":""},null,8,["modelValue"])]),_:1}),o(v,{label:"评测模型",prop:"model_id"},{default:l(()=>[o(M,{modelValue:e.value.model_id,"onUpdate:modelValue":a[1]||(a[1]=m=>e.value.model_id=m),placeholder:"请选择已训练且已合并的模型",filterable:"",style:{width:"100%"},loading:b.loading},{default:l(()=>[(s(!0),S(q,null,F(b.trainedModels,m=>(s(),_(w,{key:m.id,label:m.name,value:m.id,disabled:!m.merged},null,8,["label","value","disabled"]))),128))]),_:1},8,["modelValue","loading"]),a[6]||(a[6]=k("div",{class:"field-tip"},"未完成合并的模型不可用于评测。",-1))]),_:1}),o(v,{label:"选择 GPU",prop:"gpu_id"},{default:l(()=>[o(M,{modelValue:e.value.gpu_id,"onUpdate:modelValue":a[2]||(a[2]=m=>e.value.gpu_id=m),placeholder:"请选择 GPU",style:{width:"100%"},loading:b.loading},{default:l(()=>[(s(!0),S(q,null,F(b.gpus,(m,P)=>(s(),_(w,{key:P,label:`${m.name} (GPU ${P})`,value:P},null,8,["label","value"]))),128))]),_:1},8,["modelValue","loading"])]),_:1}),o(v,{label:"数据来源"},{default:l(()=>[o(D,{modelValue:e.value.data_source,"onUpdate:modelValue":a[3]||(a[3]=m=>e.value.data_source=m)},{default:l(()=>[o(R,{value:"dataset"},{default:l(()=>[...a[7]||(a[7]=[f("评测数据集",-1)])]),_:1}),o(R,{value:"inference"},{default:l(()=>[...a[8]||(a[8]=[f("推理结果集",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),e.value.data_source==="dataset"?(s(),_(v,{key:0,label:"评测数据集",prop:"dataset_id"},{default:l(()=>[o(M,{modelValue:e.value.dataset_id,"onUpdate:modelValue":a[4]||(a[4]=m=>e.value.dataset_id=m),placeholder:"请选择评测数据集",filterable:"",style:{width:"100%"},loading:b.loading},{default:l(()=>[(s(!0),S(q,null,F(b.evalDatasets,m=>(s(),_(w,{key:m.id,label:m.name,value:m.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue","loading"])]),_:1})):(s(),_(n,{key:1,title:"将使用该模型最近一次可用的推理结果集。",type:"info",closable:!1,"show-icon":"",class:"source-alert"})),o(v,{label:"加入排行榜"},{default:l(()=>[o(C,{modelValue:e.value.leaderboard,"onUpdate:modelValue":a[5]||(a[5]=m=>e.value.leaderboard=m)},null,8,["modelValue"])]),_:1})]),_:1},8,["model","disabled"])}}}),he=L(Me,[["__scopeId","data-v-41b02b05"]]),Se={class:"rule-step"},Ue=$({__name:"EvalRuleSetupStep",props:T({evalModels:{},disabled:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(b,{expose:u}){const e=O(b,"modelValue"),r=y(),i=["classification","metric"],c={type:[{required:!0,message:"请选择大模型评测指标类型",trigger:"change"}],eval_model:[{required:!0,message:"请选择评测大模型",trigger:"change"}],eval_method:[{required:!0,message:"请选择评估方式",trigger:"change"}],eval_prompt:[{required:!0,message:"请填写评估 Prompt",trigger:"blur"}]};async function g(){if(!r.value)return!1;try{return!!await r.value.validate()}catch{return!1}}return u({validate:g}),(a,p)=>{const v=z;return s(),S("div",Se,[o(v,{ref_key:"newFormRef",ref:r,model:e.value,rules:c,"label-width":"130px",class:"step-form step-form-wide",disabled:b.disabled,"scroll-to-error":""},{default:l(()=>[o(me,{modelValue:e.value,"onUpdate:modelValue":p[0]||(p[0]=w=>e.value=w),"eval-models":b.evalModels,"show-description":!1,"show-status-settings":!1,"allowed-types":i},null,8,["modelValue","eval-models"])]),_:1},8,["model","disabled"])])}}}),Re=L(Ue,[["__scopeId","data-v-4a03e7a1"]]),De=$({__name:"BasicMetricSetupStep",props:T({disabled:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(b,{expose:u}){const e=O(b,"modelValue"),r=y(),i={bleu_n:[{required:!0,type:"number",min:1,max:8,message:"BLEU ngram must be between 1 and 8",trigger:"change"}],output_precision:[{required:!0,type:"number",min:0,max:8,message:"Precision must be between 0 and 8",trigger:"change"}]};async function c(){if(!r.value)return!1;try{return!!await r.value.validate()}catch{return!1}}return u({validate:c}),(g,a)=>{const p=K,v=j,w=pe,M=_e,R=ce,D=z;return s(),_(D,{ref_key:"formRef",ref:r,model:e.value,rules:i,"label-width":"140px",class:"basic-metric-form",disabled:b.disabled},{default:l(()=>[o(v,{label:"BLEU"},{default:l(()=>[o(p,{modelValue:e.value.bleu_enabled,"onUpdate:modelValue":a[0]||(a[0]=n=>e.value.bleu_enabled=n)},null,8,["modelValue"])]),_:1}),e.value.bleu_enabled?(s(),_(v,{key:0,label:"BLEU ngram",prop:"bleu_n"},{default:l(()=>[o(w,{modelValue:e.value.bleu_n,"onUpdate:modelValue":a[1]||(a[1]=n=>e.value.bleu_n=n),min:1,max:8},null,8,["modelValue"])]),_:1})):G("",!0),o(v,{label:"ROUGE"},{default:l(()=>[o(p,{modelValue:e.value.rouge_enabled,"onUpdate:modelValue":a[2]||(a[2]=n=>e.value.rouge_enabled=n)},null,8,["modelValue"])]),_:1}),e.value.rouge_enabled?(s(),_(v,{key:1,label:"ROUGE methods"},{default:l(()=>[o(R,{modelValue:e.value.rouge_methods,"onUpdate:modelValue":a[3]||(a[3]=n=>e.value.rouge_methods=n)},{default:l(()=>[o(M,{value:"rouge_1"},{default:l(()=>[...a[6]||(a[6]=[f("ROUGE-1",-1)])]),_:1}),o(M,{value:"rouge_2"},{default:l(()=>[...a[7]||(a[7]=[f("ROUGE-2",-1)])]),_:1}),o(M,{value:"rouge_l"},{default:l(()=>[...a[8]||(a[8]=[f("ROUGE-L",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})):G("",!0),o(v,{label:"Cosine"},{default:l(()=>[o(p,{modelValue:e.value.cosine_enabled,"onUpdate:modelValue":a[4]||(a[4]=n=>e.value.cosine_enabled=n)},null,8,["modelValue"])]),_:1}),o(v,{label:"Output precision",prop:"output_precision"},{default:l(()=>[o(w,{modelValue:e.value.output_precision,"onUpdate:modelValue":a[5]||(a[5]=n=>e.value.output_precision=n),min:0,max:8},null,8,["modelValue"])]),_:1})]),_:1},8,["model","disabled"])}}}),xe=L(De,[["__scopeId","data-v-55c3e9f0"]]),Ce={class:"start-eval-step"},Be=$({__name:"StartEvalStep",props:{task:{},llmMetric:{},basicMetrics:{},trainedModels:{},evalDatasets:{},evalModels:{},gpus:{}},setup(b){const u=b;function e(r,i){var c;return((c=r.find(g=>g.id===i))==null?void 0:c.name)||String(i||"-")}return(r,i)=>{const c=fe,g=ve,a=ge,p=be;return s(),S("div",Ce,[o(p,{column:2,border:""},{default:l(()=>[o(c,{label:"Task"},{default:l(()=>[f(E(u.task.eval_task_name||"-"),1)]),_:1}),o(c,{label:"Model"},{default:l(()=>[f(E(e(u.trainedModels,u.task.model_id)),1)]),_:1}),o(c,{label:"GPU"},{default:l(()=>[f("GPU "+E(u.task.gpu_id||0),1)]),_:1}),o(c,{label:"Dataset"},{default:l(()=>[f(E(u.task.data_source==="dataset"?e(u.evalDatasets,u.task.dataset_id):"Inference results"),1)]),_:1}),o(c,{label:"Eval model"},{default:l(()=>[f(E(e(u.evalModels,u.llmMetric.eval_model||"")),1)]),_:1}),o(c,{label:"Eval method"},{default:l(()=>[f(E(u.llmMetric.eval_method||"-"),1)]),_:1}),o(c,{label:"Basic metrics",span:2},{default:l(()=>[o(a,{wrap:""},{default:l(()=>[u.basicMetrics.bleu_enabled?(s(),_(g,{key:0},{default:l(()=>[f("BLEU-"+E(u.basicMetrics.bleu_n),1)]),_:1})):G("",!0),u.basicMetrics.rouge_enabled?(s(),_(g,{key:1},{default:l(()=>[f(E(u.basicMetrics.rouge_methods.join(", ")),1)]),_:1})):G("",!0),u.basicMetrics.cosine_enabled?(s(),_(g,{key:2},{default:l(()=>[...i[0]||(i[0]=[f("Cosine",-1)])]),_:1})):G("",!0),o(g,{effect:"plain"},{default:l(()=>[f("Precision "+E(u.basicMetrics.output_precision),1)]),_:1})]),_:1})]),_:1})]),_:1})])}}}),Ie=L(Be,[["__scopeId","data-v-1470a4e6"]]),Ge={class:"create-wizard-layout"},Pe={class:"wizard-main"},qe={class:"wizard-steps-container","aria-label":"评测任务创建步骤"},$e={class:"custom-wizard-steps"},Le=["aria-current","aria-label"],Fe={class:"step-node"},Oe={class:"step-icon","aria-hidden":"true"},Te={key:0,class:"fa fa-check"},ze={key:1},Ne={class:"step-text"},Ae={class:"step-title"},je={class:"step-description"},Ke={class:"wizard-content"},We={class:"wizard-footer"},Ye=$({__name:"EvalCreateView",setup(b){const u=te(),e=y(!1),r=y(!1),i=y(0),c=y(),g=y(),a=y(),p=[{title:"任务配置",description:"选择模型、算力与评测数据"},{title:"大模型评测指标",description:"配置评测模型、方式与标准"},{title:"基础评测指标",description:"选择 BLEU、ROUGE 等参考指标"},{title:"开始评测",description:"确认配置并启动评测任务"}],v=y([]),w=y([]),M=y([]),R=y([]),D=y(""),n=y({eval_task_name:"",model_id:"",gpu_id:"",data_source:"dataset",dataset_id:"",leaderboard:!1}),C=y({type:"",description:"",eval_model:"",eval_method:"",eval_prompt:"",is_active:!0,is_default:!1,bleu_n:1,output_precision:3,score_min:0,score_max:5,pass_threshold:3}),h=y({bleu_enabled:!1,bleu_n:4,rouge_enabled:!1,rouge_methods:["rouge_1","rouge_2"],cosine_enabled:!1,output_precision:3});A(C,()=>{D.value=""},{deep:!0});async function m(){var U,B;e.value=!0;const t=await Promise.allSettled([ke(),we(),ae(),Ee()]);t[0].status==="fulfilled"&&(v.value=((U=t[0].value)==null?void 0:U.models)||[]),t[1].status==="fulfilled"&&(w.value=(t[1].value||[]).filter(V=>V.type==="eval")),t[2].status==="fulfilled"&&(R.value=((B=t[2].value)==null?void 0:B.gpu)||[]),t[3].status==="fulfilled"&&(M.value=(t[3].value||[]).filter(V=>V.purpose==="evaluation"));const d=t.filter(V=>V.status==="rejected").length;d>0&&I.error(`部分基础数据加载失败(${d} 项),请刷新页面后重试`),e.value=!1}function P(){const t=C.value,d={name:`Custom_Dim_${Date.now()}`,type:t.type,description:t.description,eval_model:t.eval_model,eval_method:t.eval_method,eval_prompt:t.eval_prompt,is_active:t.is_active,is_default:t.is_default,create_time:new Date().toISOString()};return t.type==="metric"&&(d.score_min=t.score_min,d.score_max=t.score_max,d.pass_threshold=t.pass_threshold),d}async function W(){if(D.value!=="")return D.value;const t=await ye(P());if((t==null?void 0:t.id)===void 0||t.id===null||t.id==="")throw new Error("评测维度已提交,但未返回维度 ID,无法启动评测任务");return D.value=t.id,t.id}async function Y(){if(!(e.value||r.value)){r.value=!0;try{const t=await W();await Ve({eval_task_name:n.value.eval_task_name,eval_type:"custom",model_id:n.value.model_id,gpu_id:n.value.gpu_id,dataset_id:n.value.data_source==="dataset"?n.value.dataset_id:"",dimension_id:t,data_source:n.value.data_source,leaderboard:n.value.leaderboard,basic_metrics:{bleu:{enabled:h.value.bleu_enabled,ngram:h.value.bleu_n},rouge:{enabled:h.value.rouge_enabled,methods:h.value.rouge_methods},cosine:{enabled:h.value.cosine_enabled},output_precision:h.value.output_precision}}),I.success("评测任务已创建并启动"),u.push("/model-eval")}catch(t){const d=t instanceof Error?t.message:"创建评测任务失败,请稍后重试";I.error(d)}finally{r.value=!1}}}async function Z(){var t,d,U;if(!(e.value||r.value)){if(i.value===0&&!await((t=c.value)==null?void 0:t.validate())){I.warning("请检查并完善任务配置");return}if(i.value===1&&!await((d=g.value)==null?void 0:d.validate())){I.warning("请检查并完善大模型评测指标");return}if(i.value===2&&!await((U=a.value)==null?void 0:U.validate())){I.warning("请检查并完善基础评测指标");return}i.value=Math.min(i.value+1,p.length-1)}}function H(){r.value||(i.value=Math.max(i.value-1,0))}function J(){u.back()}return ee(m),(t,d)=>{const U=Q,B=X;return s(),_(oe,{title:"新建评测任务",subtitle:"依次配置任务、大模型评测指标与基础评测指标,确认后开始评测"},{default:l(()=>[k("div",Ge,[le((s(),S("main",Pe,[k("div",qe,[k("div",$e,[(s(),S(q,null,F(p,(V,x)=>(s(),S(q,{key:V.title},[x!==0?(s(),S("div",{key:0,class:N(["step-connector",{"is-active":i.value>=x}])},null,2)):G("",!0),k("div",{class:N(["step-item",{"is-active":i.value===x,"is-completed":i.value>x}]),"aria-current":i.value===x?"step":void 0,"aria-label":`${x+1}. ${V.title}:${V.description}`},[k("div",Fe,[k("div",Oe,[i.value>x?(s(),S("i",Te)):(s(),S("span",ze,E(x+1),1))]),k("div",Ne,[k("div",Ae,E(V.title),1),k("div",je,E(V.description),1)])])],10,Le)],64))),64))])]),k("div",Ke,[i.value===0?(s(),_(he,{key:0,ref_key:"taskStepRef",ref:c,modelValue:n.value,"onUpdate:modelValue":d[0]||(d[0]=V=>n.value=V),"trained-models":v.value,"eval-datasets":w.value,gpus:R.value,loading:e.value,disabled:r.value},null,8,["modelValue","trained-models","eval-datasets","gpus","loading","disabled"])):i.value===1?(s(),_(Re,{key:1,ref_key:"ruleStepRef",ref:g,modelValue:C.value,"onUpdate:modelValue":d[1]||(d[1]=V=>C.value=V),"eval-models":M.value,disabled:r.value},null,8,["modelValue","eval-models","disabled"])):i.value===2?(s(),_(xe,{key:2,ref_key:"basicMetricStepRef",ref:a,modelValue:h.value,"onUpdate:modelValue":d[2]||(d[2]=V=>h.value=V),disabled:r.value},null,8,["modelValue","disabled"])):(s(),_(Ie,{key:3,task:n.value,"llm-metric":C.value,"basic-metrics":h.value,"trained-models":v.value,"eval-datasets":w.value,"eval-models":M.value,gpus:R.value},null,8,["task","llm-metric","basic-metrics","trained-models","eval-datasets","eval-models","gpus"]))])])),[[B,e.value]]),k("footer",We,[i.value>0?(s(),_(U,{key:0,class:"footer-back",disabled:r.value,onClick:H},{default:l(()=>[d[3]||(d[3]=k("i",{class:"fa fa-arrow-left footer-button-icon"},null,-1)),f("返回:"+E(p[i.value-1].title),1)]),_:1},8,["disabled"])):(s(),_(U,{key:1,class:"footer-back",disabled:r.value,onClick:J},{default:l(()=>[...d[4]||(d[4]=[f(" 取消 ",-1)])]),_:1},8,["disabled"])),i.value[f(" 下一步:"+E(p[i.value+1].title),1),d[5]||(d[5]=k("i",{class:"fa fa-arrow-right footer-button-icon is-right"},null,-1))]),_:1},8,["disabled"])):(s(),_(U,{key:3,type:"primary",loading:r.value,disabled:e.value||r.value,onClick:Y},{default:l(()=>[...d[6]||(d[6]=[f(" 开始评测 ",-1)])]),_:1},8,["loading","disabled"]))])])]),_:1})}}}),La=L(Ye,[["__scopeId","data-v-63694ec5"]]);export{La as default}; diff --git a/frontend/dist/assets/EvalCreateView-DW15zgvp.css b/frontend/dist/assets/EvalCreateView-DW15zgvp.css new file mode 100644 index 0000000..9bbf5f1 --- /dev/null +++ b/frontend/dist/assets/EvalCreateView-DW15zgvp.css @@ -0,0 +1 @@ +.step-form[data-v-41b02b05]{max-width:760px}.field-tip[data-v-41b02b05]{color:#909399;font-size:12px;line-height:20px}.source-alert[data-v-41b02b05]{margin:-4px 0 20px 120px;max-width:640px}.step-form[data-v-4a03e7a1]{max-width:760px}.step-form-wide[data-v-4a03e7a1]{max-width:920px}.basic-metric-form[data-v-55c3e9f0]{max-width:760px}.start-eval-step[data-v-1470a4e6]{max-width:920px}.create-wizard-layout[data-v-63694ec5]{display:flex;flex-direction:column;min-height:620px;margin:-20px;background:#fff}.wizard-main[data-v-63694ec5]{flex:1;padding:32px}.wizard-steps-container[data-v-63694ec5]{margin-bottom:32px;padding-bottom:24px;border-bottom:1px dashed #e2e8f0}.custom-wizard-steps[data-v-63694ec5]{display:flex;align-items:center;justify-content:space-between;max-width:1120px;margin:0 auto;padding:0 20px}.step-item[data-v-63694ec5]{display:flex;flex:none;align-items:center}.step-connector[data-v-63694ec5]{flex:1;height:2px;margin:0 12px;background:#e2e8f0;transition:background-color .2s ease}.step-connector.is-active[data-v-63694ec5]{background:#5146e5}.step-node[data-v-63694ec5]{display:flex;align-items:center;gap:12px}.step-icon[data-v-63694ec5]{display:flex;width:30px;height:30px;flex:0 0 30px;align-items:center;justify-content:center;box-sizing:border-box;border:2px solid #cbd5e1;border-radius:50%;background:#fff;color:#64748b;font-size:13px;font-weight:650;transition:all .2s ease}.step-title[data-v-63694ec5]{color:#64748b;font-size:15px;font-weight:600;white-space:nowrap}.step-description[data-v-63694ec5]{margin-top:3px;color:#94a3b8;font-size:12px;white-space:nowrap}.step-item.is-active .step-icon[data-v-63694ec5]{border-color:#5146e5;background:#eef2ff;color:#5146e5}.step-item.is-active .step-title[data-v-63694ec5],.step-item.is-completed .step-title[data-v-63694ec5]{color:#1e293b}.step-item.is-completed .step-icon[data-v-63694ec5]{border-color:#5146e5;background:#5146e5;color:#fff}.wizard-content[data-v-63694ec5]{max-width:920px;min-height:400px;margin:0 auto}.wizard-footer[data-v-63694ec5]{display:flex;min-height:64px;flex-shrink:0;align-items:center;justify-content:flex-end;gap:12px;padding:0 32px;border-top:1px solid #e2e8f0;background:#fff;box-shadow:0 -4px 6px -1px #0f172a05}.footer-back[data-v-63694ec5]{margin-right:auto}.footer-button-icon[data-v-63694ec5]{margin-right:6px}.footer-button-icon.is-right[data-v-63694ec5]{margin-right:0;margin-left:6px}@media(max-width:1100px){.step-description[data-v-63694ec5]{display:none}}@media(max-width:760px){.wizard-main[data-v-63694ec5]{padding:24px 20px}.custom-wizard-steps[data-v-63694ec5]{padding:0}.step-connector[data-v-63694ec5]{margin:0 8px}.step-text[data-v-63694ec5]{display:none}.wizard-footer[data-v-63694ec5]{padding:0 20px}} diff --git a/frontend/dist/assets/EvalDetailView-Clfyt0He.css b/frontend/dist/assets/EvalDetailView-Clfyt0He.css new file mode 100644 index 0000000..2ffeedd --- /dev/null +++ b/frontend/dist/assets/EvalDetailView-Clfyt0He.css @@ -0,0 +1 @@ +.eval-detail-page[data-v-a33421f6]{min-width:0}.page-heading[data-v-a33421f6],.heading-row[data-v-a33421f6],.section-heading[data-v-a33421f6],.sample-toolbar[data-v-a33421f6],.sample-filters[data-v-a33421f6],.dimension-label[data-v-a33421f6]{display:flex;align-items:center}.heading-copy[data-v-a33421f6]{width:100%;min-width:0}.heading-row[data-v-a33421f6]{gap:10px;flex-wrap:wrap}.heading-row h1[data-v-a33421f6]{margin:0;color:#303133;font-size:18px;font-weight:600;line-height:1.4}.task-meta[data-v-a33421f6]{display:flex;flex-wrap:wrap;gap:8px 24px;margin:10px 0 0}.task-meta>div[data-v-a33421f6]{display:flex;gap:6px;min-width:0}.task-meta dt[data-v-a33421f6],.task-meta dd[data-v-a33421f6]{margin:0;font-size:13px}.task-meta dt[data-v-a33421f6]{color:#909399}.task-meta dd[data-v-a33421f6]{color:#606266;font-weight:500}.overview-grid[data-v-a33421f6]{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border:1px solid #e4e7ed;border-radius:8px;overflow:hidden;background:#fff}.overview-item[data-v-a33421f6]{min-width:0;min-height:92px;padding:16px 20px;border-right:1px solid #e4e7ed}.overview-item[data-v-a33421f6]:last-child{border-right:0}.overview-item>span[data-v-a33421f6],.evaluation-reason>span[data-v-a33421f6],.error-type>span[data-v-a33421f6],.sample-dimensions>span[data-v-a33421f6]{display:block;margin-bottom:8px;color:#606266;font-size:13px;font-weight:500}.overview-item>strong[data-v-a33421f6]{display:block;color:#303133;font-size:22px;font-weight:600;line-height:1.3;font-variant-numeric:tabular-nums}.score-hero>strong[data-v-a33421f6]{color:var(--primary-color)}.overview-item small[data-v-a33421f6]{display:block;margin-top:5px;color:#909399;font-size:12px}.overview-item[data-v-a33421f6] .el-progress{margin-top:8px}.overview-time>strong[data-v-a33421f6]{font-size:14px;font-weight:500;line-height:1.6}.overall-review[data-v-a33421f6]{margin-top:16px;border:1px solid #e4e7ed;border-radius:8px;background:#fff}.review-copy[data-v-a33421f6]{padding:18px 20px}.section-heading[data-v-a33421f6],.sample-toolbar[data-v-a33421f6]{justify-content:space-between;gap:16px}.section-heading h2[data-v-a33421f6],.sample-toolbar h2[data-v-a33421f6]{margin:0;color:#303133;font-size:16px;font-weight:600}.section-heading p[data-v-a33421f6],.sample-toolbar p[data-v-a33421f6]{margin:5px 0 0;color:#909399;font-size:13px}.review-text[data-v-a33421f6]{max-width:1100px;margin:16px 0;color:#606266;font-size:14px;line-height:1.75}.suggestion-block[data-v-a33421f6]{padding:14px 16px;border:1px solid #ebeef5;border-radius:6px;background:#f8f9fb}.suggestion-block h3[data-v-a33421f6]{margin:0 0 8px;color:#303133;font-size:14px;font-weight:600}.improvement-list[data-v-a33421f6]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 24px;margin:0;padding-left:18px;color:#606266;font-size:13px;line-height:1.6}.dimension-summary[data-v-a33421f6],.sample-section[data-v-a33421f6]{margin-top:16px;padding:18px 20px;border:1px solid #e4e7ed;border-radius:8px;background:#fff}.compact-heading[data-v-a33421f6]{align-items:center}.dimension-grid[data-v-a33421f6]{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin-top:16px;border:1px solid #ebeef5;border-radius:6px;overflow:hidden}.dimension-item[data-v-a33421f6]{min-width:0;padding:14px 16px;border-right:1px solid #ebeef5;background:#fafafa}.dimension-item[data-v-a33421f6]:last-child{border-right:0}.dimension-label[data-v-a33421f6]{justify-content:space-between;margin-bottom:8px;gap:8px;color:#606266;font-size:13px}.dimension-label strong[data-v-a33421f6]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dimension-label span[data-v-a33421f6]{flex:0 0 auto;color:#303133;font-weight:600;font-variant-numeric:tabular-nums}.sample-toolbar[data-v-a33421f6]{align-items:center;margin-bottom:14px}.sample-filters[data-v-a33421f6]{flex:0 1 450px;justify-content:flex-end;gap:10px}.sample-filters[data-v-a33421f6] .el-input{width:min(260px,100%)}.sample-filters[data-v-a33421f6] .el-select{width:130px}.sample-results-table[data-v-a33421f6]{width:100%;border:1px solid #ebeef5;border-radius:6px}.cell-copy[data-v-a33421f6]{display:-webkit-box;overflow:hidden;margin:0;color:#606266;font-size:13px;line-height:1.55;-webkit-box-orient:vertical;-webkit-line-clamp:2}.sample-score[data-v-a33421f6]{color:#303133;font-weight:600;font-variant-numeric:tabular-nums}.sample-detail-grid[data-v-a33421f6]{display:grid;grid-template-columns:minmax(140px,.35fr) minmax(320px,1fr);gap:14px 24px;padding:16px 48px;background:#f7f8fa}.evaluation-reason[data-v-a33421f6]{grid-column:1/-1}.evaluation-reason p[data-v-a33421f6]{margin:0;color:#606266;font-size:13px;line-height:1.7}.dimension-score-list[data-v-a33421f6]{display:flex;flex-wrap:wrap;gap:8px}.dimension-score-list>span[data-v-a33421f6]{color:#606266;font-size:12px}.dimension-score-list>span[data-v-a33421f6]:not(:last-child):after{margin-left:8px;color:#c0c4cc;content:"/"}.dimension-score-list strong[data-v-a33421f6]{margin-left:4px;color:#303133;font-variant-numeric:tabular-nums}.load-state[data-v-a33421f6]{min-height:280px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px;color:#909399;text-align:center}.load-state>i[data-v-a33421f6]{margin-bottom:12px;color:#c0c4cc;font-size:30px}.load-state h2[data-v-a33421f6],.load-state h3[data-v-a33421f6]{margin:0;color:#303133}.load-state p[data-v-a33421f6],.empty-copy[data-v-a33421f6]{margin:8px 0 16px;color:#909399;font-size:13px}.load-state.is-error>i[data-v-a33421f6]{color:#ef4444}.sample-empty[data-v-a33421f6]{min-height:210px;border:1px dashed #dcdfe6;border-radius:6px;background:#fafafa}@media(max-width:1100px){.overview-grid[data-v-a33421f6]{grid-template-columns:repeat(2,minmax(0,1fr))}.overview-item[data-v-a33421f6]:nth-child(2){border-right:0}.overview-item[data-v-a33421f6]:nth-child(-n+2){border-bottom:1px solid #e4e7ed}.dimension-grid[data-v-a33421f6]{grid-template-columns:repeat(2,minmax(0,1fr))}.dimension-item[data-v-a33421f6]:nth-child(2){border-right:0}.dimension-item[data-v-a33421f6]:nth-child(-n+2){border-bottom:1px solid #ebeef5}.sample-toolbar[data-v-a33421f6]{align-items:stretch;flex-direction:column}.sample-filters[data-v-a33421f6]{flex:1;justify-content:flex-start}.sample-detail-grid[data-v-a33421f6]{padding:16px 24px}}@media(max-width:720px){.task-meta[data-v-a33421f6]{flex-direction:column;gap:5px}.overview-grid[data-v-a33421f6]{grid-template-columns:repeat(2,minmax(0,1fr))}.overview-item[data-v-a33421f6]{padding:14px}.review-copy[data-v-a33421f6],.dimension-summary[data-v-a33421f6],.sample-section[data-v-a33421f6]{padding:16px}.dimension-grid[data-v-a33421f6],.improvement-list[data-v-a33421f6],.sample-detail-grid[data-v-a33421f6]{grid-template-columns:minmax(0,1fr)}.dimension-item[data-v-a33421f6],.dimension-item[data-v-a33421f6]:nth-child(2){border-right:0;border-bottom:1px solid #ebeef5}.dimension-item[data-v-a33421f6]:last-child{border-bottom:0}.sample-filters[data-v-a33421f6]{flex-direction:column;align-items:stretch}.sample-filters[data-v-a33421f6] .el-input,.sample-filters[data-v-a33421f6] .el-select{width:100%}.evaluation-reason[data-v-a33421f6]{grid-column:auto}} diff --git a/frontend/dist/assets/EvalDetailView-DJayGyvy.js b/frontend/dist/assets/EvalDetailView-DJayGyvy.js new file mode 100644 index 0000000..1d1ab83 --- /dev/null +++ b/frontend/dist/assets/EvalDetailView-DJayGyvy.js @@ -0,0 +1 @@ +import{E as H}from"./index-TFUf94PZ.js";import{E as Q}from"./index-BjEW7-SA.js";import{E as W}from"./index-BDEF353-.js";import{a as X,E as Y}from"./el-select-Dl-FRZQd.js";import{E as Z}from"./el-pagination-DOPYW-qb.js";import{E as ee}from"./el-progress-DuOxpLST.js";import{a as le,E as te}from"./el-table-D8K5zLyz.js";import{v as ae}from"./directive-DsZckUTJ.js";import{d as se,G as oe,K as ne,e as w,w as u,ac as ie,y as v,o as n,c as d,q as e,aa as s,s as i,x as k,g as c,M as N,ad as B,f as re,j as E}from"./index-BKKvzUDD.js";import"./el-scrollbar-ClJnvz-9.js";import"./el-popper-D6_hxRbQ.js";/* empty css */import"./el-tooltip-l0sNRNKZ.js";import"./el-checkbox-qGZ2-RM2.js";import{P as ue}from"./PageCard-BoKXOzst.js";import{_ as de}from"./ModelStatusTag.vue_vue_type_script_setup_true_lang-VFIQNBU2.js";import{a as me}from"./eval-D3O1S_j5.js";import{_ as pe}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./raf-C-x62Pcl.js";import"./index-DLzof2Fz.js";import"./index-GAnQrJsQ.js";import"./index-CWUnzf90.js";import"./castArray-5uErZEc3.js";import"./vnode-78qeDweP.js";import"./index-D5ryD3I5.js";import"./scroll-BkzZKETR.js";import"./clamp-CbbY8h6F.js";import"./toNumber-Dkj3QRv9.js";import"./_baseIteratee-BAilevJ_.js";import"./_baseClone-B5RBzbh5.js";import"./debounce-ByXPNh5F.js";import"./omit-BTSq4AYh.js";import"./el-card-CApHJ1Gj.js";const ve={class:"page-heading"},ce={class:"heading-copy"},_e={class:"heading-row"},ge={class:"task-meta"},fe={key:0,class:"load-state is-error",role:"alert"},ye={class:"overview-grid","aria-label":"评测概览"},be={class:"overview-item score-hero"},he={class:"overview-item"},we={class:"overview-item"},ke={class:"overview-item overview-time"},Ee={class:"overall-review","aria-labelledby":"overall-review-title"},xe={class:"review-copy"},Ve={class:"section-heading"},ze={class:"review-text"},Ce={class:"suggestion-block"},De={key:0,class:"improvement-list"},Ne={key:1,class:"empty-copy"},Te={key:0,class:"dimension-summary","aria-labelledby":"dimension-title"},Se={class:"dimension-grid"},Pe={class:"dimension-label"},Be={class:"sample-section","aria-labelledby":"sample-results-title"},Ie={class:"sample-toolbar"},$e={class:"sample-filters","aria-label":"样本筛选"},je={class:"sample-detail-grid"},Le={class:"evaluation-reason"},Me={key:0,class:"error-type"},Ue={key:1,class:"sample-dimensions"},Fe={class:"dimension-score-list"},Re={class:"cell-copy"},Ke={class:"cell-copy"},qe={class:"cell-copy"},Ge={class:"sample-score"},Je={key:1,class:"load-state sample-empty"},Oe=se({__name:"EvalDetailView",setup(Ae){const I=ie().params.id,T=v(!0),x=v(""),a=v(null),S=v(""),V=v(""),z=v(1),_=v(10),g=E(()=>{var l;const o=S.value.trim().toLowerCase();return(((l=a.value)==null?void 0:l.samples)||[]).filter(r=>{const D=!V.value||r.judgement===V.value,f=[r.input,r.reference_answer,r.model_output,r.evaluation_reason,r.error_type].filter(Boolean).join(" ").toLowerCase();return D&&(!o||f.includes(o))})}),M=E(()=>{const o=(z.value-1)*_.value;return g.value.slice(o,o+_.value)}),$=E(()=>{var l,r;const o=((l=a.value)==null?void 0:l.sample_count)||0;return o?Math.round((((r=a.value)==null?void 0:r.completed_count)||0)/o*100):0}),U=E(()=>{var l,r;const o=((l=a.value)==null?void 0:l.completed_count)||0;return o?Math.round((((r=a.value)==null?void 0:r.passed_count)||0)/o*100):0}),F=E(()=>{var o,l;return C((o=a.value)==null?void 0:o.overall_score,(l=a.value)==null?void 0:l.overall_score_max)});function R(o){if(!o)return"-";const l=new Date(o);return Number.isNaN(l.getTime())?o:l.toLocaleString("zh-CN",{hour12:!1})}function C(o,l){if(o==null)return"-";const r=Number.isInteger(o)?0:2;return`${o.toFixed(r)}${l!=null?` / ${l}`:""}`}function K(o){return o==="正确"?"success":o==="部分正确"?"warning":o==="错误"?"danger":"info"}function j(){z.value=1}async function L(){T.value=!0,x.value="";try{a.value=await me(I)}catch{a.value=null,x.value="评测详情加载失败,请稍后重试。"}finally{T.value=!1}}return oe(L),(o,l)=>{const r=Q,D=ee,f=W,q=H,P=X,G=Y,m=te,J=le,O=Z,A=ae;return ne((n(),w(ue,{class:"eval-detail-page"},{header:u(()=>{var y,b,t,h,p;return[e("div",ve,[e("div",ce,[e("div",_e,[e("h1",null,s(((y=a.value)==null?void 0:y.eval_task_name)||"评测任务详情"),1),a.value?(n(),w(de,{key:0,status:a.value.status},null,8,["status"])):c("",!0)]),e("dl",ge,[e("div",null,[l[4]||(l[4]=e("dt",null,"任务 ID",-1)),e("dd",null,s(((b=a.value)==null?void 0:b.id)||re(I)),1)]),e("div",null,[l[5]||(l[5]=e("dt",null,"评测模型",-1)),e("dd",null,s(((t=a.value)==null?void 0:t.model_name)||"-"),1)]),e("div",null,[l[6]||(l[6]=e("dt",null,"测试集",-1)),e("dd",null,s(((h=a.value)==null?void 0:h.dataset)||"-"),1)]),e("div",null,[l[7]||(l[7]=e("dt",null,"评测指标",-1)),e("dd",null,s(((p=a.value)==null?void 0:p.metric)||"-"),1)])])])])]}),default:u(()=>{var y,b;return[x.value?(n(),d("div",fe,[l[9]||(l[9]=e("i",{class:"fa fa-exclamation-circle","aria-hidden":"true"},null,-1)),l[10]||(l[10]=e("h2",null,"无法加载评测详情",-1)),e("p",null,s(x.value),1),i(r,{type:"primary",onClick:L},{default:u(()=>[...l[8]||(l[8]=[k("重新加载",-1)])]),_:1})])):a.value?(n(),d(N,{key:1},[e("section",ye,[e("div",be,[l[11]||(l[11]=e("span",null,"综合得分",-1)),e("strong",null,s(F.value),1),l[12]||(l[12]=e("small",null,"大模型综合评分",-1))]),e("div",he,[l[13]||(l[13]=e("span",null,"样本通过率",-1)),e("strong",null,s(a.value.completed_count?`${U.value}%`:"-"),1),e("small",null,"通过 "+s(a.value.passed_count||0)+" / 已评测 "+s(a.value.completed_count),1)]),e("div",we,[l[14]||(l[14]=e("span",null,"评测进度",-1)),e("strong",null,s(a.value.completed_count)+" / "+s(a.value.sample_count),1),i(D,{percentage:$.value,"show-text":!1,"stroke-width":5},null,8,["percentage"])]),e("div",ke,[e("span",null,s(a.value.completed_time?"完成时间":"创建时间"),1),e("strong",null,s(R(a.value.completed_time||a.value.create_time)),1),e("small",null,s(a.value.completed_time?"评测任务已完成":`当前进度 ${$.value}%`),1)])]),e("section",Ee,[e("div",xe,[e("div",Ve,[l[15]||(l[15]=e("div",null,[e("h2",{id:"overall-review-title"},"大模型综合评价"),e("p",null,"基于全部已评测样本生成的总体结论")],-1)),a.value.evaluator_model?(n(),w(f,{key:0,type:"primary",size:"small"},{default:u(()=>[k(" 评审模型:"+s(a.value.evaluator_model),1)]),_:1})):c("",!0)]),e("p",ze,s(a.value.overall_evaluation||(a.value.status==="running"?"评测仍在进行,综合评价将在样本评分完成后生成。":"暂无综合评价。")),1),e("div",Ce,[l[16]||(l[16]=e("h3",null,"改进建议",-1)),(y=a.value.improvement_suggestions)!=null&&y.length?(n(),d("ul",De,[(n(!0),d(N,null,B(a.value.improvement_suggestions,t=>(n(),d("li",{key:t},s(t),1))),128))])):(n(),d("p",Ne,"暂无改进建议。"))])])]),(b=a.value.dimension_summary)!=null&&b.length?(n(),d("section",Te,[l[17]||(l[17]=e("div",{class:"section-heading compact-heading"},[e("div",null,[e("h2",{id:"dimension-title"},"维度表现"),e("p",null,"查看各评测维度的得分与样本通过率")])],-1)),e("div",Se,[(n(!0),d(N,null,B(a.value.dimension_summary,t=>(n(),d("div",{key:t.name,class:"dimension-item"},[e("div",Pe,[e("strong",null,s(t.name),1),e("span",null,s(C(t.score,t.max_score)),1)]),i(D,{percentage:t.pass_rate,"stroke-width":7},null,8,["percentage"])]))),128))])])):c("",!0),e("section",Be,[e("div",Ie,[e("div",null,[l[18]||(l[18]=e("h2",{id:"sample-results-title"},"测试集样本评测结果",-1)),e("p",null,"共 "+s(g.value.length)+" 条结果,展开行可查看评分依据与子维度分数",1)]),e("div",$e,[i(q,{modelValue:S.value,"onUpdate:modelValue":l[0]||(l[0]=t=>S.value=t),clearable:"",placeholder:"搜索问题、回答或评价","aria-label":"搜索样本",onInput:j},{prefix:u(()=>[...l[19]||(l[19]=[e("i",{class:"fa fa-search","aria-hidden":"true"},null,-1)])]),_:1},8,["modelValue"]),i(G,{modelValue:V.value,"onUpdate:modelValue":l[1]||(l[1]=t=>V.value=t),clearable:"",placeholder:"全部判定","aria-label":"按判定筛选",onChange:j},{default:u(()=>[i(P,{label:"正确",value:"正确"}),i(P,{label:"部分正确",value:"部分正确"}),i(P,{label:"错误",value:"错误"})]),_:1},8,["modelValue"])])]),g.value.length?(n(),w(J,{key:0,class:"sample-results-table",data:M.value,"row-key":"id","table-layout":"fixed"},{default:u(()=>[i(m,{type:"expand",width:"48"},{default:u(({row:t})=>{var h;return[e("div",je,[e("div",Le,[l[20]||(l[20]=e("span",null,"大模型评分依据",-1)),e("p",null,s(t.evaluation_reason||"暂无评分依据。"),1)]),t.error_type?(n(),d("div",Me,[l[21]||(l[21]=e("span",null,"错误类型",-1)),i(f,{type:"danger",size:"small"},{default:u(()=>[k(s(t.error_type),1)]),_:2},1024)])):c("",!0),(h=t.dimension_scores)!=null&&h.length?(n(),d("div",Ue,[l[22]||(l[22]=e("span",null,"子维度评分",-1)),e("div",Fe,[(n(!0),d(N,null,B(t.dimension_scores,p=>(n(),d("span",{key:p.name},[k(s(p.name)+" ",1),e("strong",null,s(C(p.score,p.max_score)),1)]))),128))])])):c("",!0)])]}),_:1}),i(m,{label:"#",prop:"index",width:"56",align:"center"}),i(m,{label:"问题 / 输入","min-width":"180"},{default:u(({row:t})=>[e("p",Re,s(t.input),1)]),_:1}),i(m,{label:"标准答案","min-width":"170"},{default:u(({row:t})=>[e("p",Ke,s(t.reference_answer||"-"),1)]),_:1}),i(m,{label:"模型回答","min-width":"190"},{default:u(({row:t})=>[e("p",qe,s(t.model_output||"等待生成"),1)]),_:1}),i(m,{label:"得分",width:"90",align:"center"},{default:u(({row:t})=>[e("span",Ge,s(C(t.score,t.max_score)),1)]),_:1}),i(m,{label:"判定",width:"96",align:"center"},{default:u(({row:t})=>[i(f,{type:K(t.judgement),size:"small"},{default:u(()=>[k(s(t.judgement||(t.status==="pending"?"待评测":"-")),1)]),_:2},1032,["type"])]),_:1})]),_:1},8,["data"])):(n(),d("div",Je,[l[23]||(l[23]=e("i",{class:"fa fa-list-alt","aria-hidden":"true"},null,-1)),e("h3",null,s(a.value.samples.length?"没有符合筛选条件的样本":"暂无样本评测结果"),1),e("p",null,s(a.value.status==="running"?"任务正在运行,结果生成后会显示在这里。":"请调整筛选条件或稍后重试。"),1)])),g.value.length>_.value?(n(),w(O,{key:2,"current-page":z.value,"onUpdate:currentPage":l[2]||(l[2]=t=>z.value=t),"page-size":_.value,"onUpdate:pageSize":l[3]||(l[3]=t=>_.value=t),background:"",layout:"total, sizes, prev, pager, next","page-sizes":[10,20,50],total:g.value.length,"aria-label":"样本结果分页"},null,8,["current-page","page-size","total"])):c("",!0)])],64)):c("",!0)]}),_:1})),[[A,T.value]])}}}),Dl=pe(Oe,[["__scopeId","data-v-a33421f6"]]);export{Dl as default}; diff --git a/frontend/dist/assets/EvalView-CfhhxItX.css b/frontend/dist/assets/EvalView-CfhhxItX.css new file mode 100644 index 0000000..1f020b2 --- /dev/null +++ b/frontend/dist/assets/EvalView-CfhhxItX.css @@ -0,0 +1 @@ +@charset "UTF-8";.eval-page[data-v-8012e1f7]{width:100%;height:100%;display:flex;flex-direction:column;min-height:0}.capsule-tabs[data-v-8012e1f7]{display:flex;background:#f1f5f9;padding:3px;border-radius:8px;gap:2px;border:1px solid #e2e8f0}.capsule-tab-item[data-v-8012e1f7]{border:0;background:transparent;padding:6px 20px;font-size:13px;font-weight:500;color:#64748b;cursor:pointer;border-radius:6px;transition:all .2s ease;outline:none}.capsule-tab-item[data-v-8012e1f7]:hover{color:#1e293b}.capsule-tab-item.active[data-v-8012e1f7]{background:#fff;color:#4f46e5;box-shadow:0 1px 3px #0000000f,0 1px 2px #0000000a;font-weight:600} diff --git a/frontend/dist/assets/EvalView-EyPQOCUX.js b/frontend/dist/assets/EvalView-EyPQOCUX.js new file mode 100644 index 0000000..2fe8220 --- /dev/null +++ b/frontend/dist/assets/EvalView-EyPQOCUX.js @@ -0,0 +1 @@ +import{E as V}from"./index-BjEW7-SA.js";import{E as B}from"./el-table-D8K5zLyz.js";import{d as D,G as T,c as $,e as _,w as o,g as C,y as p,o as v,s as a,q as i,x as b,aa as L,n as m,v as N,A as z}from"./index-BKKvzUDD.js";import{E as M}from"./index-dNo5H1ie.js";/* empty css */import"./el-checkbox-qGZ2-RM2.js";import{D as y}from"./DataTablePage-C-EM-7-s.js";import{g as A,d as G}from"./eval-D3O1S_j5.js";import{_ as P}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./el-scrollbar-ClJnvz-9.js";import"./index-GAnQrJsQ.js";import"./el-popper-D6_hxRbQ.js";import"./index-CWUnzf90.js";import"./_baseClone-B5RBzbh5.js";import"./_baseIteratee-BAilevJ_.js";import"./castArray-5uErZEc3.js";import"./debounce-ByXPNh5F.js";import"./toNumber-Dkj3QRv9.js";import"./raf-C-x62Pcl.js";import"./validator-Fn0bm4xU.js";import"./index-CQXVR1Ud.js";import"./clamp-CbbY8h6F.js";import"./index-DfyOU94W.js";import"./scroll-BkzZKETR.js";import"./index-TFUf94PZ.js";import"./index-DLzof2Fz.js";import"./omit-BTSq4AYh.js";import"./el-card-CApHJ1Gj.js";import"./el-pagination-DOPYW-qb.js";import"./el-select-Dl-FRZQd.js";import"./vnode-78qeDweP.js";import"./index-D5ryD3I5.js";import"./index-BDEF353-.js";import"./directive-DsZckUTJ.js";import"./el-tooltip-l0sNRNKZ.js";const R={class:"eval-page"},S={class:"capsule-tabs"},q={class:"capsule-tabs"},I=D({__name:"EvalView",setup(Q){const f=N(),r=p("tasks"),c=p(!1),d=p([]),w=p([{rank:1,name:"GPT-4",score:92.5},{rank:2,name:"Claude-3",score:90.1},{rank:3,name:"Qwen-Max",score:85.3}]);async function u(){c.value=!0;try{d.value=await A()||[]}catch{d.value=[]}finally{c.value=!1}}async function k(s){await M.confirm("确定要删除这个评测任务吗?","确认删除",{type:"warning"}),await G(s.id),z.success("删除成功"),u()}function E(){f.push("/model-eval/create")}function n(s){return r.value===s}function x(s){f.push({name:"model-eval-detail",params:{id:s.id}})}return T(()=>{u()}),(s,e)=>{const t=B,g=V;return v(),$("div",R,[r.value==="tasks"?(v(),_(y,{key:0,title:"",data:d.value,loading:c.value,"delete-fn":k,"create-text":"创建评测任务",onCreate:E,"row-key":"id",onRefresh:u},{title:o(()=>[i("div",S,[i("button",{class:m(["capsule-tab-item",{active:n("tasks")}]),onClick:e[0]||(e[0]=l=>r.value="tasks")},"评测任务",2),i("button",{class:m(["capsule-tab-item",{active:n("leaderboard")}]),onClick:e[1]||(e[1]=l=>r.value="leaderboard")},"排行榜",2)])]),columns:o(()=>[a(t,{label:"任务名称",prop:"eval_task_name",align:"center"}),a(t,{label:"评测模型",prop:"model_name",align:"center"}),a(t,{label:"数据集",prop:"dataset",align:"center"}),a(t,{label:"指标",prop:"metric",align:"center"}),a(t,{label:"评分",prop:"score",width:"100",align:"center"}),a(t,{label:"状态",prop:"status",width:"100",align:"center"}),a(t,{label:"创建时间",align:"center",width:"180"},{default:o(({row:l})=>[b(L(l.create_time?new Date(l.create_time).toLocaleString("zh-CN"):"-"),1)]),_:1})]),actions:o(({row:l})=>[a(g,{link:"",type:"primary",size:"small",onClick:h=>x(l)},{default:o(()=>[...e[4]||(e[4]=[i("i",{class:"fa fa-file-text-o",style:{"margin-right":"4px"}},null,-1),b("详情 ",-1)])]),_:1},8,["onClick"]),a(g,{link:"",type:"danger",size:"small",onClick:h=>k(l)},{default:o(()=>[...e[5]||(e[5]=[i("i",{class:"fa fa-trash-o",style:{"margin-right":"4px"}},null,-1),b("删除 ",-1)])]),_:1},8,["onClick"])]),_:1},8,["data","loading"])):C("",!0),r.value==="leaderboard"?(v(),_(y,{key:1,title:"",data:w.value,"row-key":"rank"},{title:o(()=>[i("div",q,[i("button",{class:m(["capsule-tab-item",{active:n("tasks")}]),onClick:e[2]||(e[2]=l=>r.value="tasks")},"评测任务",2),i("button",{class:m(["capsule-tab-item",{active:n("leaderboard")}]),onClick:e[3]||(e[3]=l=>r.value="leaderboard")},"排行榜",2)])]),columns:o(()=>[a(t,{label:"排名",prop:"rank",width:"80",align:"center"}),a(t,{label:"模型名称",prop:"name",align:"center"}),a(t,{label:"综合评分",prop:"score",align:"center"})]),_:1},8,["data"])):C("",!0)])}}}),xe=P(I,[["__scopeId","data-v-8012e1f7"]]);export{xe as default}; diff --git a/frontend/dist/assets/FineTuneCreateView-B4Xgm6l7.js b/frontend/dist/assets/FineTuneCreateView-B4Xgm6l7.js new file mode 100644 index 0000000..7c495f5 --- /dev/null +++ b/frontend/dist/assets/FineTuneCreateView-B4Xgm6l7.js @@ -0,0 +1,2 @@ +import{E as ve,a as fe}from"./el-form-item-D5kF3B90.js";import{E as ge}from"./el-popper-D6_hxRbQ.js";import{E as ne}from"./index-TFUf94PZ.js";import{E as se}from"./index-BjEW7-SA.js";import{E as be,a as ye,b as he}from"./el-select-Dl-FRZQd.js";import{E as xe,a as ke,b as we}from"./el-radio-group-BkCoTeQL.js";import{E as Ve}from"./el-divider-DjByQoml.js";import{E as qe}from"./el-input-number-BFR4pu1i.js";import{d as ie,D as oe,e as y,w as n,o as u,q as l,s as o,c as _,ad as q,n as H,aa as f,M as w,g as $,x as v,y as V,j as M,G as $e,z as Ee,at as ze,al as Te,f as Q,au as Ce,av as Me,aw as Ue,ax as Se,A as F,v as Pe,ay as Ie}from"./index-BKKvzUDD.js";import"./el-tooltip-l0sNRNKZ.js";import"./el-scrollbar-ClJnvz-9.js";/* empty css */import{P as Fe}from"./PageCard-BoKXOzst.js";import{E as De}from"./el-dialog-X3Nt8ib9.js";import{E as Oe}from"./el-empty-B4M99-0a.js";import{E as Re,a as Ae}from"./el-tab-pane-DliV6btA.js";import{_ as ue}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{c as Ne,e as Ge,f as Le,u as Be}from"./fineTune-BsSQAQBF.js";import{g as je}from"./model-gCK34aBo.js";import{g as Qe}from"./dataset-BJ2ikehQ.js";import"./castArray-5uErZEc3.js";import"./_baseClone-B5RBzbh5.js";import"./index-GAnQrJsQ.js";import"./index-CWUnzf90.js";import"./raf-C-x62Pcl.js";import"./index-DLzof2Fz.js";import"./vnode-78qeDweP.js";import"./index-D5ryD3I5.js";import"./index-BDEF353-.js";import"./scroll-BkzZKETR.js";import"./clamp-CbbY8h6F.js";import"./toNumber-Dkj3QRv9.js";import"./_baseIteratee-BAilevJ_.js";import"./omit-BTSq4AYh.js";import"./index-BENk7lZo.js";import"./el-card-CApHJ1Gj.js";import"./index-DfyOU94W.js";import"./use-dialog-DmridEEy.js";import"./index-CQXVR1Ud.js";const He={class:"model-dialog-body"},Ke={class:"model-dialog-toolbar"},We={class:"model-dialog-content"},Ze={class:"model-series-list"},Je=["onClick"],Xe={class:"model-version-list"},Ye=["onClick"],et={class:"model-version-main"},tt={class:"model-dialog-footer"},at={class:"selected-model-summary"},lt={key:0,class:"selected-model-pill"},ot={class:"model-dialog-actions"},nt=ie({__name:"ModelSelectDialog",props:{modelValue:{type:Boolean},models:{},currentModelId:{}},emits:["update:modelValue","confirm"],setup(a,{emit:U}){const x=a,E=U,g=V("official"),z=V(""),h=V(""),k=V("");function D(p){return p.replace(/-\d+(?:\.\d+)?B.*$/i,"").replace(/-\d+(?:\.\d+)?b.*$/i,"").replace(/-\d{4}.*$/,"")}const s=M(()=>{const p=k.value.trim().toLowerCase(),i=x.models.filter(d=>g.value==="official"?d.model_source!=="api":d.model_source==="api");return p?i.filter(d=>[d.name,d.description,d.path,d.online_model_name].filter(Boolean).some(S=>String(S).toLowerCase().includes(p))):i}),I=M(()=>{const p=new Map;return s.value.forEach(i=>{const d=D(i.name),S=p.get(d)||[];S.push(i),p.set(d,S)}),Array.from(p.entries()).map(([i,d])=>({name:i,count:d.length,models:d}))}),N=M(()=>{var p;return((p=I.value.find(i=>i.name===z.value))==null?void 0:p.models)||[]}),O=M(()=>x.models.find(p=>p.id===h.value));function G(){var i;const p=((i=I.value[0])==null?void 0:i.name)||"";(!z.value||!I.value.some(d=>d.name===z.value))&&(z.value=p)}oe(()=>x.modelValue,p=>{if(p){const i=x.models.find(d=>d.id===x.currentModelId);g.value=(i==null?void 0:i.model_source)==="api"?"mine":"official",h.value=x.currentModelId,G()}}),oe([g,k],()=>{G()});function K(p){z.value=p}function W(p){h.value=p.id}function L(){E("update:modelValue",!1)}function Z(){h.value!==""&&h.value!==void 0&&h.value!==null&&E("confirm",h.value),E("update:modelValue",!1)}return(p,i)=>{const d=Re,S=Ae,J=ne,R=Oe,A=se,X=De;return u(),y(X,{"model-value":a.modelValue,class:"model-select-dialog",width:"860px",top:"10vh","show-close":!1,"append-to-body":"","onUpdate:modelValue":i[2]||(i[2]=m=>E("update:modelValue",m))},{header:n(()=>[l("div",{class:"model-dialog-header"},[i[4]||(i[4]=l("div",{class:"model-dialog-title"},[l("span",null,"选择模型"),l("em",null,"仅可选 1 个模型")],-1)),l("button",{class:"model-dialog-close",type:"button",onClick:L},[...i[3]||(i[3]=[l("i",{class:"fa fa-close"},null,-1)])])])]),footer:n(()=>[l("div",tt,[l("div",at,[l("span",null,"已选 "+f(O.value?1:0)+"/1",1),O.value?(u(),_("div",lt,[i[10]||(i[10]=l("i",{class:"fa fa-star-o"},null,-1)),v(" "+f(O.value.name),1)])):$("",!0)]),l("div",ot,[o(A,{onClick:L},{default:n(()=>[...i[11]||(i[11]=[v("取消",-1)])]),_:1}),o(A,{type:"primary",onClick:Z},{default:n(()=>[...i[12]||(i[12]=[v("确定",-1)])]),_:1})])])]),default:n(()=>[l("div",He,[l("div",Ke,[o(S,{modelValue:g.value,"onUpdate:modelValue":i[0]||(i[0]=m=>g.value=m),class:"model-tabs"},{default:n(()=>[o(d,{label:"官方模型",name:"official"}),o(d,{label:"我的模型",name:"mine"})]),_:1},8,["modelValue"]),o(J,{modelValue:k.value,"onUpdate:modelValue":i[1]||(i[1]=m=>k.value=m),class:"model-search",placeholder:"从全部模型中搜索",clearable:""},{suffix:n(()=>[...i[5]||(i[5]=[l("i",{class:"fa fa-search"},null,-1)])]),_:1},8,["modelValue"])]),l("div",We,[l("aside",Ze,[i[7]||(i[7]=l("div",{class:"column-title"},"模型系列",-1)),(u(!0),_(w,null,q(I.value,m=>(u(),_("button",{key:m.name,class:H(["model-series-item",{active:z.value===m.name}]),type:"button",onClick:Y=>K(m.name)},[i[6]||(i[6]=l("i",{class:"fa fa-star-o"},null,-1)),l("span",null,f(m.name),1),l("em",null,f(m.count),1)],10,Je))),128)),I.value.length?$("",!0):(u(),y(R,{key:0,description:"暂无模型","image-size":80}))]),l("section",Xe,[i[9]||(i[9]=l("div",{class:"column-title"},"快照版本",-1)),(u(!0),_(w,null,q(N.value,m=>(u(),_("button",{key:m.id,class:H(["model-version-item",{active:h.value===m.id}]),type:"button",onClick:Y=>W(m)},[l("div",et,[l("strong",null,f(m.name),1),l("span",null,f(m.description||m.path||m.online_model_name||"暂无模型描述"),1)]),i[8]||(i[8]=l("span",{class:"model-radio-dot"},null,-1))],10,Ye))),128)),N.value.length?$("",!0):(u(),y(R,{key:0,description:"暂无快照版本","image-size":80}))])])])]),_:1},8,["model-value"])}}}),st=ue(nt,[["__scopeId","data-v-9028e87c"]]),de={batch_size:1,learning_rate:1e-4,n_epochs:1,save_steps:100,lr_scheduler_type:"cosine",max_length:512,warmup_ratio:.05,weight_decay:.01,lora_alpha:16,lora_dropout:.1,lora_rank:8,quantization_bit:0,export_quantized:!1,quant_method:"bnb",quant_bits:4,quant_group_size:128,export_format:"Q4_K_M"};function it(){return{name:"",description:"",train_type:"SFT",base_model:"",template:"qwen",train_method:"lora",train_dataset_id:"",auto_merge:!1,...de}}function ut(a,U){return{name:a.name,description:a.description,base_model:a.base_model,template:a.template,train_type:a.train_type,train_method:a.train_method,gpus:[...U],train_dataset_id:a.train_dataset_id,auto_merge:a.train_type==="SFT"&&a.auto_merge,output_model_name:a.name,batch_size:a.batch_size,learning_rate:a.learning_rate,n_epochs:a.n_epochs,save_steps:a.save_steps,lr_scheduler_type:a.lr_scheduler_type,max_length:a.max_length,warmup_ratio:a.warmup_ratio,weight_decay:a.weight_decay,lora_alpha:a.lora_alpha,lora_dropout:a.lora_dropout,lora_rank:a.lora_rank,quantization_bit:a.train_method==="lora"?a.quantization_bit:0,export_quantized:a.export_quantized,quant_method:a.export_quantized?a.quant_method:"",quant_bits:a.export_quantized?a.quant_bits:0,quant_group_size:a.export_quantized?a.quant_group_size:0,export_format:a.export_quantized&&a.quant_method==="gguf"?a.export_format:""}}function dt(a,U){const x=U.length?U.join(","):"0",E=a.train_type==="DPO"?"dpo":a.train_type==="CPT"?"cpt":"sft",g=[`CUDA_VISIBLE_DEVICES=${x} llamafactory-cli train`,` --stage ${E}`," --do_train"," --model_name_or_path "," --dataset ",` --template ${a.template}`,` --finetuning_type ${a.train_method}`,` --output_dir ./saves/${a.name||"output"}`,` --per_device_train_batch_size ${a.batch_size}`,` --learning_rate ${a.learning_rate}`,` --num_train_epochs ${a.n_epochs}`,` --save_steps ${a.save_steps}`,` --lr_scheduler_type ${a.lr_scheduler_type}`,` --cutoff_len ${a.max_length}`,` --warmup_ratio ${a.warmup_ratio}`,` --weight_decay ${a.weight_decay}`];return a.train_method==="lora"&&(g.push(` --lora_alpha ${a.lora_alpha}`,` --lora_dropout ${a.lora_dropout}`,` --lora_rank ${a.lora_rank}`),a.quantization_bit&&g.push(` --quantization_bit ${a.quantization_bit}`)),a.export_quantized&&(g.push(` # 训练后导出量化模型:${a.quant_method} ${a.quant_bits}bit`),a.quant_method==="gguf"&&g.push(` # export_format=${a.export_format}`),(a.quant_method==="gptq"||a.quant_method==="awq")&&g.push(` # group_size=${a.quant_group_size}`)),g.join(` \\ +`)}function rt(a){return{...a,status:"pending",progress:0}}const pt={class:"fine-tune-create page-card-host has-fixed-footer"},mt={class:"gpu-list"},_t=["onClick"],ct={class:"gpu-card-top"},vt={class:"gpu-title"},ft={class:"gpu-index"},gt={class:"gpu-name"},bt={class:"gpu-usage"},yt={class:"gpu-usage-bar"},ht={class:"gpu-meta"},xt={key:0,class:"gpu-empty"},kt={class:"hyperparam-section"},wt={class:"param-table-wrapper"},Vt={class:"param-table"},qt={class:"param-col name"},$t={class:"param-col config"},Et={key:2,class:"param-hint"},zt={class:"param-col desc"},Tt={class:"desc-text"},Ct={class:"param-footer"},Mt={class:"command-preview-wrapper"},Ut={class:"command-preview"},St={class:"form-actions-wrapper"},Pt=ie({__name:"FineTuneCreateView",setup(a){const U=Pe(),x=V(),E=V(!1),g=V([]),z=V([]),h=V([]),k=V([]),D=V(!1),s=Ee(it()),I={name:[{required:!0,message:"请输入任务名称",trigger:"blur"},{pattern:/^[a-zA-Z0-9_]+$/,message:"仅支持字母、数字、下划线",trigger:"blur"},{max:50,message:"不超过 50 字符",trigger:"blur"}],base_model:[{required:!0,message:"请选择模型",trigger:"change"}],template:[{required:!0,message:"请选择训练模板",trigger:"change"}],train_dataset_id:[{required:!0,message:"请选择训练数据集",trigger:"change"}]},N=M(()=>s.train_method==="lora"),O=M(()=>g.value.find(r=>r.id===s.base_model)),G=M(()=>{var r;return((r=O.value)==null?void 0:r.name)||""}),K=M(()=>dt(s,k.value));function W(r){const e=k.value.indexOf(r);e===-1?k.value.push(r):k.value.splice(e,1)}function L(r){return`${Math.max(0,Math.min(r,100))}%`}function Z(){D.value=!0}function p(r){var e;s.base_model=r,(e=x.value)==null||e.validateField("base_model")}function i(){Object.assign(s,de)}const d=V(!1),S=M(()=>{const r=[{key:"batch_size",name:"batch_size",desc:"批次大小,代表模型训练过程中,模型更新一次参数所需要的数据样本数。",hint:"[1, 64], step:1",type:"number",min:1,max:64,step:1},{key:"learning_rate",name:"learning_rate",desc:"学习率,代表每次更新数据的增量参数权重比例。",hint:"[0.000001, 1]",type:"number",min:1e-6,max:1,step:1e-5,precision:6},{key:"n_epochs",name:"n_epochs",desc:"循环次数,代表模型训练过程中模型学习数据集的次数,可理解为看几遍数据,一般建议的范围是 1-3 遍即可,可依据需求进行调整",hint:"[1, 100], step:1",type:"number",min:1,max:100,step:1},{key:"save_steps",name:"save_steps",desc:"保存步数,训练阶段模型保存的间隔步长。",hint:"[10, 10000]",type:"number",min:10,max:1e4,step:1},{key:"lr_scheduler_type",name:"lr_scheduler_type",desc:"学习率调整策略,选择不同的学习率策略。",hint:"",type:"select",options:Ie},{key:"max_length",name:"max_length",desc:"序列长度,单个训练数据样本的最大长度。",hint:"[64, 4096]",type:"number",min:64,max:4096,step:1},{key:"warmup_ratio",name:"warmup_ratio",desc:"学习率预热比例,学习率预热阶段占总训练步数的比例。",hint:"[0, 1]",type:"number",min:0,max:1,step:.01,precision:2},{key:"weight_decay",name:"weight_decay",desc:"权重衰减,用于在优化过程中对模型参数施加惩罚,防止过拟合。",hint:"[0, 1]",type:"number",min:0,max:1,step:.01,precision:2}];return N.value&&r.push({key:"lora_alpha",name:"lora_alpha",desc:"LoRA 缩放系数。",hint:"16/32/64/128",type:"select",options:[{label:"16",value:16},{label:"32",value:32},{label:"64",value:64},{label:"128",value:128}]},{key:"lora_rank",name:"lora_rank",desc:"LoRA 秩大小,控制低秩矩阵的维度。",hint:"8/16/32/64",type:"select",options:[{label:"8",value:8},{label:"16",value:16},{label:"32",value:32},{label:"64",value:64}]},{key:"lora_dropout",name:"lora_dropout",desc:"LoRA 层的 dropout 比例。",hint:"[0, 1]",type:"number",min:0,max:1,step:.05,precision:2}),r}),J=M(()=>d.value?S.value:S.value.slice(0,3));function R(r){const e=s[r];return typeof e=="boolean"?Number(e):e}function A(r,e){e!==void 0&&Reflect.set(s,r,e)}async function X(){try{g.value=await je()||[]}catch{g.value=[]}}async function m(){try{z.value=await Qe()||[]}catch{z.value=[]}}async function Y(){try{const r=await ze();h.value=(r==null?void 0:r.gpu)||[],h.value.length>0&&(k.value=[0])}catch{h.value=[]}}async function re(){x.value&&await x.value.validate(async r=>{if(r){if(k.value.length===0){F.warning("请至少选择一个 GPU");return}E.value=!0;try{let e;try{e=await Ne(s.name)}catch{F.error("任务名校验失败,请稍后重试");return}if(e.exists){F.error("任务名称已存在,请更换");return}const T=ut(s,k.value),c=(await Ge(rt(T))).id;try{await Le({...T,task_id:c}),F.success("训练任务已创建并启动")}catch{await Be(c,{status:"failed"}),F.error("任务已创建,但训练启动失败")}U.push("/fine-tune")}catch{F.error("训练任务创建失败,请稍后重试")}finally{E.value=!1}}})}function pe(){U.back()}return $e(()=>{X(),m(),Y()}),(r,e)=>{const T=Ve,B=ne,c=fe,ee=ke,ae=xe,C=ye,me=he,P=be,le=we,j=se,te=qe,_e=ge,ce=ve;return u(),_("div",pt,[o(Fe,{title:"创建训练任务"},{default:n(()=>[o(ce,{ref_key:"formRef",ref:x,model:s,rules:I,"label-width":"140px","label-position":"left"},{default:n(()=>[o(T,{"content-position":"left"},{default:n(()=>[...e[15]||(e[15]=[v("基本信息",-1)])]),_:1}),o(c,{label:"任务名称",prop:"name"},{default:n(()=>[o(B,{modelValue:s.name,"onUpdate:modelValue":e[0]||(e[0]=t=>s.name=t),placeholder:"字母、数字、下划线",maxlength:"50","show-word-limit":"",style:{width:"420px"}},null,8,["modelValue"])]),_:1}),o(c,{label:"任务描述"},{default:n(()=>[o(B,{modelValue:s.description,"onUpdate:modelValue":e[1]||(e[1]=t=>s.description=t),type:"textarea",rows:4,maxlength:"200","show-word-limit":"",style:{width:"600px"}},null,8,["modelValue"])]),_:1}),o(T,{"content-position":"left"},{default:n(()=>[...e[16]||(e[16]=[v("训练配置",-1)])]),_:1}),o(c,{label:"GPU 硬件"},{default:n(()=>[l("div",mt,[(u(!0),_(w,null,q(h.value,(t,b)=>(u(),_("div",{key:b,class:H(["gpu-card",{active:k.value.includes(b),"is-busy":t.gpu_percent>80}]),onClick:It=>W(b)},[l("div",ct,[l("div",vt,[l("span",ft,"GPU-"+f(b),1),l("span",gt,f(t.name),1)]),l("span",bt,f(t.gpu_percent)+"%",1)]),l("div",yt,[l("span",{style:Te({width:L(t.gpu_percent)})},null,4)]),l("div",ht,[l("span",null,"显存 "+f(t.memory_used_gb)+"/"+f(t.memory_total_gb)+"GB",1),l("span",null,f(t.temperature)+"°C",1),l("span",null,f(t.power_w)+"W",1)])],10,_t))),128)),h.value.length?$("",!0):(u(),_("div",xt,"暂无 GPU 信息"))])]),_:1}),o(c,{label:"训练方式"},{default:n(()=>[o(ae,{modelValue:s.train_type,"onUpdate:modelValue":e[2]||(e[2]=t=>s.train_type=t)},{default:n(()=>[o(ee,{value:"SFT"},{default:n(()=>[...e[17]||(e[17]=[v("SFT 微调训练",-1)])]),_:1}),o(ee,{value:"DPO"},{default:n(()=>[...e[18]||(e[18]=[v("DPO 偏好训练",-1)])]),_:1}),o(ee,{value:"CPT"},{default:n(()=>[...e[19]||(e[19]=[v("CPT 继续预训练",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),o(c,{label:"选择模型",prop:"base_model"},{default:n(()=>[o(B,{class:"model-picker-input","model-value":G.value,placeholder:"请选择基座模型",readonly:"",onClick:Z,style:{width:"420px"}},{suffix:n(()=>[...e[20]||(e[20]=[l("i",{class:"fa fa-angle-right"},null,-1)])]),_:1},8,["model-value"])]),_:1}),o(c,{label:"训练模板",prop:"template"},{default:n(()=>[o(P,{modelValue:s.template,"onUpdate:modelValue":e[3]||(e[3]=t=>s.template=t),placeholder:"请选择训练模板",filterable:"",style:{width:"420px"}},{default:n(()=>[(u(!0),_(w,null,q(Q(Ce),t=>(u(),y(me,{key:t.label,label:t.label},{default:n(()=>[(u(!0),_(w,null,q(t.options,b=>(u(),y(C,{key:b.value,label:b.label,value:b.value},null,8,["label","value"]))),128))]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(c,{label:"训练方法"},{default:n(()=>[o(ae,{modelValue:s.train_method,"onUpdate:modelValue":e[4]||(e[4]=t=>s.train_method=t)},{default:n(()=>[o(le,{value:"lora"},{default:n(()=>[...e[21]||(e[21]=[v("LoRA(高效微调)",-1)])]),_:1}),o(le,{value:"full"},{default:n(()=>[...e[22]||(e[22]=[v("全参微调",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),o(T,{"content-position":"left"},{default:n(()=>[e[24]||(e[24]=l("span",{style:{"font-size":"15px","font-weight":"600",color:"#1f2937","margin-right":"12px"}},"超参配置",-1)),o(j,{link:"",type:"primary",size:"small",onClick:i},{default:n(()=>[...e[23]||(e[23]=[l("i",{class:"fa fa-refresh",style:{"margin-right":"4px"}},null,-1),v(" 恢复默认配置 ",-1)])]),_:1})]),_:1}),l("div",kt,[l("div",wt,[l("div",Vt,[e[25]||(e[25]=l("div",{class:"param-header"},[l("div",{class:"param-col name"},"参数名称"),l("div",{class:"param-col config"},"配置"),l("div",{class:"param-col desc"},"说明")],-1)),(u(!0),_(w,null,q(J.value,t=>(u(),_("div",{class:"param-row",key:t.key},[l("div",qt,f(t.name),1),l("div",$t,[t.type==="number"?(u(),y(te,{key:0,"model-value":Number(R(t.key)),min:t.min,max:t.max,step:t.step,precision:t.precision,"controls-position":"right",style:{width:"200px"},"onUpdate:modelValue":b=>A(t.key,b)},null,8,["model-value","min","max","step","precision","onUpdate:modelValue"])):t.type==="select"?(u(),y(P,{key:1,"model-value":R(t.key),style:{width:"200px"},"onUpdate:modelValue":b=>A(t.key,b)},{default:n(()=>[(u(!0),_(w,null,q(t.options,b=>(u(),y(C,{key:b.value,label:b.label,value:b.value},null,8,["label","value"]))),128))]),_:2},1032,["model-value","onUpdate:modelValue"])):$("",!0),t.hint?(u(),_("span",Et,f(t.hint),1)):$("",!0)]),l("div",zt,[o(_e,{content:t.desc,placement:"top",effect:"dark","show-after":200},{default:n(()=>[l("span",Tt,f(t.desc),1)]),_:2},1032,["content"])])]))),128))]),l("div",Ct,[o(j,{link:"",type:"primary",onClick:e[5]||(e[5]=t=>d.value=!d.value)},{default:n(()=>[l("i",{class:H(d.value?"fa fa-angle-up":"fa fa-angle-down"),style:{"margin-right":"4px"}},null,2),v(" "+f(d.value?"收起配置":"展开配置"),1)]),_:1})])])]),o(T,{"content-position":"left"},{default:n(()=>[...e[26]||(e[26]=[v("数据配置",-1)])]),_:1}),o(c,{label:"训练数据集",prop:"train_dataset_id"},{default:n(()=>[o(P,{modelValue:s.train_dataset_id,"onUpdate:modelValue":e[6]||(e[6]=t=>s.train_dataset_id=t),placeholder:"请选择训练数据集",filterable:"",style:{width:"420px"}},{default:n(()=>[(u(!0),_(w,null,q(z.value,t=>(u(),y(C,{key:t.id,label:t.name,value:t.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),s.train_type==="SFT"?(u(),_(w,{key:0},[o(T,{"content-position":"left"},{default:n(()=>[...e[27]||(e[27]=[v("合并模型",-1)])]),_:1}),o(c,{label:"自动合并权重并保存"},{default:n(()=>[o(P,{modelValue:s.auto_merge,"onUpdate:modelValue":e[7]||(e[7]=t=>s.auto_merge=t),style:{width:"420px"}},{default:n(()=>[o(C,{label:"否",value:!1}),o(C,{label:"是",value:!0})]),_:1},8,["modelValue"])]),_:1})],64)):$("",!0),o(T,{"content-position":"left"},{default:n(()=>[...e[28]||(e[28]=[v("模型量化",-1)])]),_:1}),s.train_method==="lora"?(u(),y(c,{key:1,label:"训练时量化"},{default:n(()=>[o(P,{modelValue:s.quantization_bit,"onUpdate:modelValue":e[8]||(e[8]=t=>s.quantization_bit=t),style:{width:"420px"}},{default:n(()=>[(u(!0),_(w,null,q(Q(Me),t=>(u(),y(C,{key:t.value,label:t.label,value:t.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1})):$("",!0),o(c,{label:"导出量化模型"},{default:n(()=>[o(P,{modelValue:s.export_quantized,"onUpdate:modelValue":e[9]||(e[9]=t=>s.export_quantized=t),style:{width:"420px"}},{default:n(()=>[o(C,{label:"否",value:!1}),o(C,{label:"是",value:!0})]),_:1},8,["modelValue"])]),_:1}),s.export_quantized?(u(),_(w,{key:2},[o(c,{label:"量化方法"},{default:n(()=>[o(P,{modelValue:s.quant_method,"onUpdate:modelValue":e[10]||(e[10]=t=>s.quant_method=t),style:{width:"420px"}},{default:n(()=>[(u(!0),_(w,null,q(Q(Ue),t=>(u(),y(C,{key:t.value,label:t.label,value:t.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(c,{label:"量化位数"},{default:n(()=>[o(te,{modelValue:s.quant_bits,"onUpdate:modelValue":e[11]||(e[11]=t=>s.quant_bits=t),min:s.quant_method==="bnb"?4:2,max:s.quant_method==="bnb"?8:16,step:1,"controls-position":"right",style:{width:"200px"}},null,8,["modelValue","min","max"])]),_:1}),s.quant_method==="gptq"||s.quant_method==="awq"?(u(),y(c,{key:0,label:"分组大小"},{default:n(()=>[o(te,{modelValue:s.quant_group_size,"onUpdate:modelValue":e[12]||(e[12]=t=>s.quant_group_size=t),min:32,max:1024,step:32,"controls-position":"right",style:{width:"200px"}},null,8,["modelValue"])]),_:1})):$("",!0),s.quant_method==="gguf"?(u(),y(c,{key:1,label:"导出格式"},{default:n(()=>[o(P,{modelValue:s.export_format,"onUpdate:modelValue":e[13]||(e[13]=t=>s.export_format=t),style:{width:"420px"}},{default:n(()=>[(u(!0),_(w,null,q(Q(Se),t=>(u(),y(C,{key:t.value,label:t.label,value:t.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1})):$("",!0)],64)):$("",!0),o(T,{"content-position":"left"},{default:n(()=>[...e[29]||(e[29]=[v("训练命令预览",-1)])]),_:1}),l("div",Mt,[l("pre",Ut,f(K.value),1)]),l("div",St,[o(j,{type:"primary",loading:E.value,onClick:re},{default:n(()=>[...e[30]||(e[30]=[v("创建并启动训练",-1)])]),_:1},8,["loading"]),o(j,{onClick:pe},{default:n(()=>[...e[31]||(e[31]=[v("取消",-1)])]),_:1})])]),_:1},8,["model"])]),_:1}),o(st,{modelValue:D.value,"onUpdate:modelValue":e[14]||(e[14]=t=>D.value=t),models:g.value,"current-model-id":s.base_model,onConfirm:p},null,8,["modelValue","models","current-model-id"])])}}}),xa=ue(Pt,[["__scopeId","data-v-e759555b"]]);export{xa as default}; diff --git a/frontend/dist/assets/FineTuneCreateView-Dbr8mf56.css b/frontend/dist/assets/FineTuneCreateView-Dbr8mf56.css new file mode 100644 index 0000000..bcb2a3a --- /dev/null +++ b/frontend/dist/assets/FineTuneCreateView-Dbr8mf56.css @@ -0,0 +1 @@ +@charset "UTF-8";.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light);outline:none;display:inline-block;position:relative}.el-radio-button__inner{white-space:nowrap;vertical-align:middle;background:var(--el-button-bg-color,var(--el-fill-color-blank));outline:var(--el-border);line-height:1;font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));color:var(--el-button-text-color,var(--el-text-color-regular));-webkit-appearance:none;text-align:center;box-sizing:border-box;cursor:pointer;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;font-size:var(--el-font-size-base);border-radius:0;margin:0;padding:8px 15px;display:inline-block;position:relative}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{color:var(--el-radio-button-checked-text-color,var(--el-color-white));background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary))}.el-radio-button__original-radio{opacity:0;z-index:-1;outline:none;position:absolute}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2;border-radius:var(--el-border-radius-base);box-shadow:none}.el-radio-button__original-radio:disabled+.el-radio-button__inner{color:var(--el-disabled-text-color);cursor:not-allowed;background-image:none;background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{font-size:var(--el-font-size-base);border-radius:0;padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;padding:5px 11px;font-size:12px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}[data-v-9028e87c] .model-select-dialog{max-width:calc(100vw - 48px);border-radius:6px;box-shadow:0 18px 46px #0f172a2e}[data-v-9028e87c] .model-select-dialog .el-dialog__header{padding:0;margin:0}[data-v-9028e87c] .model-select-dialog .el-dialog__body,[data-v-9028e87c] .model-select-dialog .el-dialog__footer{padding:0}.model-dialog-header[data-v-9028e87c]{height:56px;padding:0 20px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #eef0f5}.model-dialog-title[data-v-9028e87c]{display:flex;align-items:baseline;gap:12px}.model-dialog-title span[data-v-9028e87c]{font-size:16px;font-weight:700;color:#1f2937}.model-dialog-title em[data-v-9028e87c]{font-style:normal;font-size:13px;color:#94a3b8}.model-dialog-close[data-v-9028e87c]{width:30px;height:30px;border:0;background:transparent;color:#64748b;cursor:pointer;font-size:16px;border-radius:6px}.model-dialog-close[data-v-9028e87c]:hover{background:#f5f6fb}.model-dialog-body[data-v-9028e87c]{height:452px}.model-dialog-toolbar[data-v-9028e87c]{height:76px;padding:14px 20px 0;display:flex;align-items:flex-start;justify-content:space-between;gap:18px;border-bottom:1px solid #eef0f5}.model-tabs[data-v-9028e87c]{min-width:210px}.model-tabs[data-v-9028e87c] .el-tabs__item{height:42px;padding:0 18px 0 0;font-size:14px;font-weight:600;color:#475569}.model-tabs[data-v-9028e87c] .el-tabs__active-bar{height:2px;background:#2563eb}.model-tabs[data-v-9028e87c] .el-tabs__nav-wrap:after{display:none}.model-search[data-v-9028e87c]{width:280px}.model-search[data-v-9028e87c] .el-input__wrapper{border-radius:6px;min-height:36px}.model-dialog-content[data-v-9028e87c]{display:grid;grid-template-columns:280px 1fr;height:376px;min-height:0}.model-series-list[data-v-9028e87c],.model-version-list[data-v-9028e87c]{padding:16px 20px;overflow:auto}.model-series-list[data-v-9028e87c]{border-right:1px solid #eef0f5}.column-title[data-v-9028e87c]{font-size:13px;font-weight:600;color:#64748b;margin-bottom:12px}.model-series-item[data-v-9028e87c],.model-version-item[data-v-9028e87c]{width:100%;border:1px solid #e5e7eb;background:#fff;border-radius:6px;cursor:pointer;transition:all .2s;color:#1f2937}.model-series-item[data-v-9028e87c]:hover,.model-version-item[data-v-9028e87c]:hover{border-color:#94a3b8;background:#f8fafc}.model-series-item.active[data-v-9028e87c],.model-version-item.active[data-v-9028e87c]{border-color:#2563eb;background:#eff6ff;box-shadow:inset 0 0 0 1px #2563eb}.model-series-item[data-v-9028e87c]{height:44px;padding:0 12px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;margin-bottom:8px;text-align:left}.model-series-item i[data-v-9028e87c]{color:#2563eb}.model-series-item span[data-v-9028e87c]{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.model-series-item em[data-v-9028e87c]{font-style:normal;color:#777b92}.model-version-item[data-v-9028e87c]{min-height:64px;padding:12px 14px;display:grid;grid-template-columns:1fr auto;align-items:center;gap:14px;margin-bottom:8px;text-align:left}.model-version-main[data-v-9028e87c]{display:grid;gap:6px;min-width:0}.model-version-main strong[data-v-9028e87c]{color:#1f2937;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.model-version-main span[data-v-9028e87c]{color:#64748b;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.model-radio-dot[data-v-9028e87c]{width:16px;height:16px;border:1px solid #cbd5e1;border-radius:50%;position:relative}.model-version-item.active .model-radio-dot[data-v-9028e87c]{border-color:#2563eb}.model-version-item.active .model-radio-dot[data-v-9028e87c]:after{content:"";position:absolute;top:3px;right:3px;bottom:3px;left:3px;border-radius:50%;background:#2563eb}.model-dialog-footer[data-v-9028e87c]{height:60px;padding:0 20px;border-top:1px solid #eef0f5;display:flex;align-items:center;justify-content:space-between}.selected-model-summary[data-v-9028e87c]{display:flex;align-items:center;gap:10px;color:#475569;font-size:13px}.selected-model-pill[data-v-9028e87c]{max-width:300px;height:28px;display:flex;align-items:center;gap:8px;padding:0 10px;border:1px solid #dbeafe;border-radius:4px;background:#eff6ff;color:#1f2937;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.selected-model-pill i[data-v-9028e87c]{color:#2563eb}.model-dialog-actions[data-v-9028e87c]{display:flex;gap:10px}@media(max-width:900px){.model-dialog-toolbar[data-v-9028e87c],.model-dialog-footer[data-v-9028e87c]{height:auto;align-items:flex-start;flex-direction:column;padding:18px}.model-search[data-v-9028e87c]{width:100%}.model-dialog-content[data-v-9028e87c]{grid-template-columns:1fr}.model-series-list[data-v-9028e87c]{border-right:0;border-bottom:1px solid #eef0f5}}.fine-tune-create[data-v-e759555b] .page-card{margin-bottom:0}.gpu-list[data-v-e759555b]{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;width:100%}.gpu-card[data-v-e759555b]{border:1px solid #e5e7eb;border-radius:6px;padding:9px 12px;cursor:pointer;transition:border-color .2s,box-shadow .2s,background .2s;background:#fff}.gpu-card[data-v-e759555b]:hover{border-color:#94a3b8;box-shadow:0 4px 12px #0f172a0f}.gpu-card.active[data-v-e759555b]{border-color:#2563eb;background:#f8fbff;box-shadow:inset 0 0 0 1px #2563eb}.gpu-card.is-busy[data-v-e759555b]{border-color:#f59e0b;background:#fffaf0}.gpu-card.is-busy .gpu-usage[data-v-e759555b]{color:#b45309;background:#fffbeb;border-color:#fcd34d}.gpu-card.is-busy .gpu-usage-bar span[data-v-e759555b]{background:#f59e0b}.gpu-card.is-busy.active[data-v-e759555b]{border-color:#dc2626;background:#fff7f7;box-shadow:inset 0 0 0 1px #dc2626}.gpu-card.is-busy.active .gpu-usage[data-v-e759555b]{color:#dc2626;background:#fef2f2;border-color:#fecaca}.gpu-card.is-busy.active .gpu-usage-bar span[data-v-e759555b]{background:#dc2626}.gpu-card-top[data-v-e759555b]{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.gpu-title[data-v-e759555b]{min-width:0;display:grid;gap:2px}.gpu-index[data-v-e759555b]{font-size:11px;line-height:1;font-weight:600;letter-spacing:.04em;color:#64748b}.gpu-name[data-v-e759555b]{font-size:13px;font-weight:600;color:#1f2937;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gpu-usage[data-v-e759555b]{height:20px;min-width:40px;padding:0 6px;display:inline-flex;align-items:center;justify-content:center;border:1px solid #bfdbfe;border-radius:4px;background:#eff6ff;color:#2563eb;font-size:11px;font-weight:700;white-space:nowrap}.gpu-usage-bar[data-v-e759555b]{height:3px;margin:7px 0 6px;overflow:hidden;border-radius:999px;background:#eef2f7}.gpu-usage-bar span[data-v-e759555b]{display:block;height:100%;border-radius:inherit;background:#2563eb}.gpu-meta[data-v-e759555b]{display:flex;flex-wrap:nowrap;gap:10px;font-size:11px;color:#64748b;line-height:1.4;white-space:nowrap;overflow:hidden}.gpu-empty[data-v-e759555b]{color:#909399;font-size:13px}.command-preview-wrapper[data-v-e759555b]{margin-left:80px;margin-bottom:22px}.field-tip[data-v-e759555b]{color:#909399;font-size:12px;line-height:20px;margin-top:4px}.form-actions-wrapper[data-v-e759555b]{position:fixed;bottom:0;left:240px;right:0;height:56px;background:#fff;border-top:1px solid #eef0f5;display:flex;align-items:center;padding-left:112px;z-index:1000;box-shadow:0 -4px 12px #0000000d}.command-preview[data-v-e759555b]{background:#1e1e1e;color:#d4d4d4;padding:12px 16px;border-radius:6px;font-family:SFMono-Regular,Consolas,monospace;font-size:12px;line-height:1.6;overflow-x:auto;width:100%;margin:0}.model-picker-input[data-v-e759555b],.model-picker-input[data-v-e759555b] .el-input__wrapper,.model-picker-input[data-v-e759555b] .el-input__inner{cursor:pointer}.hyperparam-section[data-v-e759555b]{margin:32px 0 20px}.hyperparam-title[data-v-e759555b]{font-size:16px;font-weight:700;color:#1f2937;margin-bottom:24px}.param-config-header[data-v-e759555b]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.param-config-title[data-v-e759555b]{font-size:14px;color:#475569;font-weight:600}.param-table-wrapper[data-v-e759555b]{margin-left:80px;border:1px solid #eef0f5;border-radius:6px;overflow:hidden;background:#fff}[data-v-e759555b] .el-form-item{margin-left:80px}[data-v-e759555b] .el-form-item .el-form-item__label{position:relative;padding-left:0}[data-v-e759555b] .el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before{position:absolute;left:-10px;margin-right:0}.param-header[data-v-e759555b],.param-row[data-v-e759555b]{display:grid;grid-template-columns:140px 420px 1fr;align-items:center}.param-header[data-v-e759555b]{background:#f8fafc;border-bottom:1px solid #eef0f5;color:#64748b;font-size:13px;font-weight:600}.param-row[data-v-e759555b]{border-bottom:1px solid #eef0f5}.param-col[data-v-e759555b]{padding:16px 20px}.param-col.name[data-v-e759555b]{font-weight:600;color:#475569;font-size:14px;text-align:left}.param-col.config[data-v-e759555b]{display:flex;align-items:center;gap:12px}.param-col.desc[data-v-e759555b]{color:#64748b;font-size:13px;min-width:0}.desc-text[data-v-e759555b]{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:default}.param-hint[data-v-e759555b]{color:#94a3b8;font-size:13px}.param-footer[data-v-e759555b]{padding:12px 20px}@media(min-width:1280px){.gpu-list[data-v-e759555b]{grid-template-columns:repeat(4,minmax(0,1fr))}} diff --git a/frontend/dist/assets/FineTuneListView-DB12Hfwf.css b/frontend/dist/assets/FineTuneListView-DB12Hfwf.css new file mode 100644 index 0000000..164746f --- /dev/null +++ b/frontend/dist/assets/FineTuneListView-DB12Hfwf.css @@ -0,0 +1 @@ +.el-popover{--el-popover-bg-color:var(--el-bg-color-overlay);--el-popover-font-size:var(--el-font-size-base);--el-popover-border-color:var(--el-border-color-lighter);--el-popover-padding:12px;--el-popover-padding-large:18px 20px;--el-popover-title-font-size:16px;--el-popover-title-text-color:var(--el-text-color-primary);--el-popover-border-radius:4px}.el-popover.el-popper{background:var(--el-popover-bg-color);border-radius:var(--el-popover-border-radius);border:1px solid var(--el-popover-border-color);min-width:150px;padding:var(--el-popover-padding);z-index:var(--el-index-popper);color:var(--el-text-color-regular);line-height:1.4;font-size:var(--el-popover-font-size);box-shadow:var(--el-box-shadow-light);overflow-wrap:break-word;box-sizing:border-box}.el-popover.el-popper--plain{padding:var(--el-popover-padding-large)}.el-popover__title{color:var(--el-popover-title-text-color);font-size:var(--el-popover-title-font-size);margin-bottom:12px;line-height:1}.el-popover__reference:focus:not(.focusing),.el-popover__reference:focus:hover{outline-width:0}.el-popover.el-popper.is-dark{--el-popover-bg-color:var(--el-text-color-primary);--el-popover-border-color:var(--el-text-color-primary);--el-popover-title-text-color:var(--el-bg-color);color:var(--el-bg-color)}.el-popover.el-popper:focus:active,.el-popover.el-popper:focus{outline-width:0}.progress-value[data-v-5c76183f]{color:var(--primary-color);font-weight:600}.filter-header[data-v-5c76183f]{display:inline-flex;align-items:center;gap:6px}.filter-badge[data-v-5c76183f]{line-height:1}.filter-icon[data-v-5c76183f]{cursor:pointer;font-size:12px;color:#c0c4cc;transition:color .2s}.filter-icon[data-v-5c76183f]:hover,.filter-icon.active[data-v-5c76183f]{color:#1890ff}.filter-options[data-v-5c76183f]{display:flex;flex-direction:column;gap:8px;max-height:240px;overflow-y:auto}.filter-actions[data-v-5c76183f]{text-align:right;margin-top:8px;border-top:1px solid #ebeef5;padding-top:8px} diff --git a/frontend/dist/assets/FineTuneListView-DJrDesBG.js b/frontend/dist/assets/FineTuneListView-DJrDesBG.js new file mode 100644 index 0000000..1316652 --- /dev/null +++ b/frontend/dist/assets/FineTuneListView-DJrDesBG.js @@ -0,0 +1 @@ +import{k as Q,b as W,d as J,a as X,o as v,e as E,w as r,h as K,g as L,c as F,n as z,f as b,aa as f,x as p,Y as Z,j as w,y as P,am as ee,l as te,ap as ae,aq as j,ar as oe,G as re,q as s,s as i,ad as H,M as q,as as ie,A as G,v as ne}from"./index-BKKvzUDD.js";import{E as le}from"./index-BjEW7-SA.js";import{a as se,E as pe}from"./el-checkbox-qGZ2-RM2.js";import{E as ue}from"./el-table-D8K5zLyz.js";import{u as m,b as D,E as de}from"./el-popper-D6_hxRbQ.js";import{d as R}from"./dropdown-Cy5g1tjO.js";/* empty css *//* empty css */import{D as fe}from"./DataTablePage-C-EM-7-s.js";import{_ as ce}from"./ModelStatusTag.vue_vue_type_script_setup_true_lang-VFIQNBU2.js";import{u as me}from"./usePolling-C6448AR2.js";import{u as ve}from"./models-DQoXB8yB.js";import{g as ge,a as be,b as he,s as ye,d as we}from"./fineTune-BsSQAQBF.js";import{_ as ke}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./raf-C-x62Pcl.js";import"./index-GAnQrJsQ.js";import"./omit-BTSq4AYh.js";import"./_baseClone-B5RBzbh5.js";import"./el-scrollbar-ClJnvz-9.js";import"./_baseIteratee-BAilevJ_.js";import"./castArray-5uErZEc3.js";import"./debounce-ByXPNh5F.js";import"./toNumber-Dkj3QRv9.js";import"./index-CWUnzf90.js";import"./index-TFUf94PZ.js";import"./index-DLzof2Fz.js";import"./el-card-CApHJ1Gj.js";import"./el-pagination-DOPYW-qb.js";import"./el-select-Dl-FRZQd.js";import"./vnode-78qeDweP.js";import"./index-D5ryD3I5.js";import"./index-BDEF353-.js";import"./scroll-BkzZKETR.js";import"./clamp-CbbY8h6F.js";import"./directive-DsZckUTJ.js";import"./index-dNo5H1ie.js";import"./validator-Fn0bm4xU.js";import"./index-CQXVR1Ud.js";import"./index-DfyOU94W.js";import"./el-tooltip-l0sNRNKZ.js";import"./model-gCK34aBo.js";const Te=W({trigger:D.trigger,triggerKeys:D.triggerKeys,placement:R.placement,disabled:D.disabled,visible:m.visible,transition:m.transition,popperOptions:R.popperOptions,tabindex:R.tabindex,content:m.content,popperStyle:m.popperStyle,popperClass:m.popperClass,enterable:{...m.enterable,default:!0},effect:{...m.effect,default:"light"},teleported:m.teleported,appendTo:m.appendTo,title:String,width:{type:[String,Number],default:150},offset:{type:Number,default:void 0},showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0},showArrow:{type:Boolean,default:!0},persistent:{type:Boolean,default:!0},"onUpdate:visible":{type:Function}}),_e={"update:visible":t=>Q(t),"before-enter":()=>!0,"before-leave":()=>!0,"after-enter":()=>!0,"after-leave":()=>!0},Ce="onUpdate:visible";var Ee=J({name:"ElPopover",__name:"popover",props:Te,emits:_e,setup(t,{expose:d,emit:g}){const l=t,c=g,x=w(()=>l[Ce]),h=X("popover"),k=P(),n=w(()=>{var o;return(o=b(k))==null?void 0:o.popperRef}),V=w(()=>[{width:ee(l.width)},l.popperStyle]),T=w(()=>[h.b(),l.popperClass,{[h.m("plain")]:!!l.content}]),M=w(()=>l.transition===`${h.namespace.value}-fade-in-linear`),N=()=>{var o;(o=k.value)==null||o.hide()},S=()=>{c("before-enter")},A=()=>{c("before-leave")},$=()=>{c("after-enter")},B=()=>{c("update:visible",!1),c("after-leave")};return d({popperRef:n,hide:N}),(o,e)=>(v(),E(b(de),Z({ref_key:"tooltipRef",ref:k},o.$attrs,{trigger:t.trigger,"trigger-keys":t.triggerKeys,placement:t.placement,disabled:t.disabled,visible:t.visible,transition:t.transition,"popper-options":t.popperOptions,tabindex:t.tabindex,content:t.content,offset:t.offset,"show-after":t.showAfter,"hide-after":t.hideAfter,"auto-close":t.autoClose,"show-arrow":t.showArrow,"aria-label":t.title,effect:t.effect,enterable:t.enterable,"popper-class":T.value,"popper-style":V.value,teleported:t.teleported,"append-to":t.appendTo,persistent:t.persistent,"gpu-acceleration":M.value,"onUpdate:visible":x.value,onBeforeShow:S,onBeforeHide:A,onShow:$,onHide:B}),{content:r(()=>[t.title?(v(),F("div",{key:0,class:z(b(h).e("title")),role:"title"},f(t.title),3)):L("v-if",!0),K(o.$slots,"default",{hide:N},()=>[p(f(t.content),1)])]),default:r(()=>[o.$slots.reference?K(o.$slots,"reference",{key:0}):L("v-if",!0)]),_:3},16,["trigger","trigger-keys","placement","disabled","visible","transition","popper-options","tabindex","content","offset","show-after","hide-after","auto-close","show-arrow","aria-label","effect","enterable","popper-class","popper-style","teleported","append-to","persistent","gpu-acceleration","onUpdate:visible"]))}}),Pe=Ee;const Y=(t,d)=>{var l;const g=(l=d.arg||d.value)==null?void 0:l.popperRef;g&&(g.triggerRef=t)};var xe={mounted(t,d){Y(t,d)},updated(t,d){Y(t,d)}};const Me="popover",Ne=ae(xe,Me),Ve=te(Pe,{directive:Ne}),Se={class:"filter-header"},Ae={class:"filter-actions"},$e={class:"filter-header"},Be={class:"filter-actions"},De={class:"progress-value"},Re={class:"action-buttons"},Le=J({__name:"FineTuneListView",setup(t){const d=ne(),g=ve(),l=P(!1),c=P([]),x=P({}),h=Object.entries(j).map(([o,e])=>({value:o,label:e})),k=Object.entries(oe).map(([o,e])=>({value:o,label:e})),n=P({trainType:[],trainMethod:[]}),V=w(()=>c.value.filter(o=>!(n.value.trainType.length&&!n.value.trainType.includes(o.train_type)||n.value.trainMethod.length&&(!o.train_method||!n.value.trainMethod.includes(o.train_method)))));async function T(){l.value=!0;try{c.value=await ge()||[]}catch{}finally{l.value=!1}}async function M(){const o=c.value.filter(e=>e.status==="running"||e.status==="pending");for(const e of o)try{const[u,y]=await Promise.all([be(e.id),he(e.id)]);x.value[e.id]=u,y.status&&y.status!==e.status&&(e.status=y.status)}catch{}}async function N(o){await we(o.id),G.success("删除成功")}async function S(o){await ye(o.id),G.success("训练任务已停止"),T()}function A(o){d.push(`/training-log/${o.id}`)}function $(o){return o?new Date(o).toLocaleString("zh-CN",{hour12:!1}):"-"}const{start:B}=me(M,5e3,{immediate:!1});return re(async()=>{g.load(),await T(),await M(),B()}),(o,e)=>{const u=ue,y=ie,O=pe,U=se,_=le,I=Ve;return v(),E(fe,{title:"模型微调",data:V.value,loading:l.value,searchable:"","search-fields":["name"],"create-text":"创建训练任务","create-to":"/fine-tune/create","row-key":"id","page-size":10,onRefresh:T},{columns:r(()=>[i(u,{label:"任务ID",prop:"id",align:"center",width:"100"}),i(u,{label:"任务名称",prop:"name",align:"center",width:"180","show-overflow-tooltip":""}),i(u,{label:"任务状态",align:"center",width:"110"},{default:r(({row:a})=>[i(ce,{status:a.status},null,8,["status"])]),_:1}),i(u,{align:"center",width:"140"},{header:r(()=>[s("div",Se,[e[5]||(e[5]=s("span",null,"训练方式",-1)),i(I,{trigger:"click",placement:"bottom",width:160},{reference:r(()=>[i(y,{"is-dot":n.value.trainType.length>0,class:"filter-badge"},{default:r(()=>[s("i",{class:z(["fa fa-filter filter-icon",{active:n.value.trainType.length>0}])},null,2)]),_:1},8,["is-dot"])]),default:r(()=>[i(U,{modelValue:n.value.trainType,"onUpdate:modelValue":e[0]||(e[0]=a=>n.value.trainType=a),class:"filter-options"},{default:r(()=>[(v(!0),F(q,null,H(b(h),a=>(v(),E(O,{key:a.value,value:a.value},{default:r(()=>[p(f(a.label),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"]),s("div",Ae,[i(_,{size:"small",link:"",onClick:e[1]||(e[1]=a=>n.value.trainType=[])},{default:r(()=>[...e[4]||(e[4]=[p("清除",-1)])]),_:1})])]),_:1})])]),default:r(({row:a})=>[p(f(b(j)[a.train_type]||"-"),1)]),_:1}),i(u,{align:"center",width:"120"},{header:r(()=>[s("div",$e,[e[7]||(e[7]=s("span",null,"训练方法",-1)),i(I,{trigger:"click",placement:"bottom",width:160},{reference:r(()=>[i(y,{"is-dot":n.value.trainMethod.length>0,class:"filter-badge"},{default:r(()=>[s("i",{class:z(["fa fa-filter filter-icon",{active:n.value.trainMethod.length>0}])},null,2)]),_:1},8,["is-dot"])]),default:r(()=>[i(U,{modelValue:n.value.trainMethod,"onUpdate:modelValue":e[2]||(e[2]=a=>n.value.trainMethod=a),class:"filter-options"},{default:r(()=>[(v(!0),F(q,null,H(b(k),a=>(v(),E(O,{key:a.value,value:a.value},{default:r(()=>[p(f(a.label),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"]),s("div",Be,[i(_,{size:"small",link:"",onClick:e[3]||(e[3]=a=>n.value.trainMethod=[])},{default:r(()=>[...e[6]||(e[6]=[p("清除",-1)])]),_:1})])]),_:1})])]),default:r(({row:a})=>[p(f(a.train_method||"-"),1)]),_:1}),i(u,{label:"基座模型",align:"center",width:"190","show-overflow-tooltip":""},{default:r(({row:a})=>[p(f(b(g).getModelName(a.base_model)),1)]),_:1}),i(u,{label:"训练开始时间",align:"center",width:"190"},{default:r(({row:a})=>[p(f($(a.create_time)),1)]),_:1}),i(u,{label:"训练时长",align:"center",width:"130"},{default:r(({row:a})=>[p(f(a.train_duration||"-"),1)]),_:1}),i(u,{label:"进度",align:"center",width:"140"},{default:r(({row:a})=>{var C;return[s("span",De,f(((C=x.value[a.id])==null?void 0:C.progress)??a.progress??0)+"% ",1)]}),_:1})]),actions:r(({row:a})=>[s("div",Re,[a.status==="running"?(v(),E(_,{key:0,type:"warning",link:"",size:"small",onClick:C=>S(a)},{default:r(()=>[...e[8]||(e[8]=[s("i",{class:"fa fa-stop-circle-o",style:{"margin-right":"4px"}},null,-1),p(" 停止 ",-1)])]),_:1},8,["onClick"])):L("",!0),i(_,{type:"primary",link:"",size:"small",onClick:C=>A(a)},{default:r(()=>[...e[9]||(e[9]=[s("i",{class:"fa fa-file-text-o",style:{"margin-right":"4px"}},null,-1),p(" 日志 ",-1)])]),_:1},8,["onClick"]),i(_,{type:"danger",link:"",size:"small",onClick:C=>N(a)},{default:r(()=>[...e[10]||(e[10]=[s("i",{class:"fa fa-trash-o",style:{"margin-right":"4px"}},null,-1),p(" 删除 ",-1)])]),_:1},8,["onClick"])])]),_:1},8,["data","loading"])}}}),Et=ke(Le,[["__scopeId","data-v-5c76183f"]]);export{Et as default}; diff --git a/frontend/dist/assets/GuideView-B0JJuoOs.js b/frontend/dist/assets/GuideView-B0JJuoOs.js new file mode 100644 index 0000000..f0a60fc --- /dev/null +++ b/frontend/dist/assets/GuideView-B0JJuoOs.js @@ -0,0 +1 @@ +import{_ as s}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{o as t,c,q as o}from"./index-BKKvzUDD.js";const n={},r={class:"simple-page"};function a(_,e){return t(),c("section",r,[...e[0]||(e[0]=[o("h1",null,"使用文档",-1),o("p",null,"第一版系统已接入后端、数据集、模型、微调任务、算力节点和训练日志主链路。",-1)])])}const p=s(n,[["render",a],["__scopeId","data-v-87551c13"]]);export{p as default}; diff --git a/frontend/dist/assets/GuideView-CaCcm19L.css b/frontend/dist/assets/GuideView-CaCcm19L.css new file mode 100644 index 0000000..c0fe523 --- /dev/null +++ b/frontend/dist/assets/GuideView-CaCcm19L.css @@ -0,0 +1 @@ +.simple-page[data-v-87551c13]{padding:24px} diff --git a/frontend/dist/assets/HardwareView-B7yq-27k.js b/frontend/dist/assets/HardwareView-B7yq-27k.js new file mode 100644 index 0000000..4af4f86 --- /dev/null +++ b/frontend/dist/assets/HardwareView-B7yq-27k.js @@ -0,0 +1 @@ +import{E as lt}from"./el-alert-xVLeNUgJ.js";import{E as rt}from"./index-BjEW7-SA.js";import{E as nt,a as it}from"./el-select-Dl-FRZQd.js";import{E as st}from"./el-drawer-BbN11Mg2.js";import{E as ot}from"./el-empty-B4M99-0a.js";import{E as ut}from"./el-progress-DuOxpLST.js";import{E as dt}from"./el-switch-DbCDiaMc.js";import{a as vt,E as mt}from"./el-table-D8K5zLyz.js";import{v as ct}from"./directive-DsZckUTJ.js";import{d as pt,G as Oe,ah as gt,c as ae,s as D,w as le,M as ye,y as Z,at as ft,o as J,e as Re,g as me,K as ht,q as e,aa as s,x as F,f as He,ad as yt,n as ce,j,P as wt}from"./index-BKKvzUDD.js";import"./el-scrollbar-ClJnvz-9.js";import"./el-popper-D6_hxRbQ.js";import"./el-tooltip-l0sNRNKZ.js";import"./el-checkbox-qGZ2-RM2.js";/* empty css */import{_ as we,ah as bt,aw as _t,a5 as We,E as kt,B as R,aI as Ke,aJ as St,az as pe,aK as ge,X as Fe,aL as Ie,Y as qe,ax as se,aM as xt,a7 as Pt,ae as Xe,ad as Ye,aN as Ze,a1 as Je,ab as Et,aO as Ct,a4 as Mt,aP as At,aQ as Nt,aR as Gt,R as Lt,O as Q,K as Dt,aC as Vt,aD as Tt,aE as Ut,aF as zt,aG as $t,aH as Qe}from"./install-CZjWaVQv.js";import{P as Bt}from"./PageCard-BoKXOzst.js";import{i as Ot}from"./install-BQfh6E0c.js";import{S as je,c as Rt}from"./createSeriesDataSimply-DVjwvHot.js";import{_ as Ht}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./vnode-78qeDweP.js";import"./index-CWUnzf90.js";import"./castArray-5uErZEc3.js";import"./index-D5ryD3I5.js";import"./index-BDEF353-.js";import"./raf-C-x62Pcl.js";import"./scroll-BkzZKETR.js";import"./index-DLzof2Fz.js";import"./clamp-CbbY8h6F.js";import"./toNumber-Dkj3QRv9.js";import"./_baseIteratee-BAilevJ_.js";import"./index-GAnQrJsQ.js";import"./index-DfyOU94W.js";import"./use-dialog-DmridEEy.js";import"./validator-Fn0bm4xU.js";import"./_baseClone-B5RBzbh5.js";import"./debounce-ByXPNh5F.js";import"./omit-BTSq4AYh.js";import"./el-card-CApHJ1Gj.js";var Wt=(function(){function E(){this.angle=0,this.width=10,this.r=10,this.x=0,this.y=0}return E})(),Kt=(function(E){we(r,E);function r(l){var v=E.call(this,l)||this;return v.type="pointer",v}return r.prototype.getDefaultShape=function(){return new Wt},r.prototype.buildPath=function(l,v){var k=Math.cos,w=Math.sin,n=v.r,b=v.width,u=v.angle,N=v.x-k(u)*b*(b>=n/3?1:2),_=v.y-w(u)*b*(b>=n/3?1:2);u=v.angle-Math.PI/2,l.moveTo(N,_),l.lineTo(v.x+k(u)*b,v.y+w(u)*b),l.lineTo(v.x+k(v.angle)*n,v.y+w(v.angle)*n),l.lineTo(v.x-k(u)*b,v.y-w(u)*b),l.lineTo(N,_)},r})(bt);function Ft(E,r){var l=E.get("center"),v=r.getWidth(),k=r.getHeight(),w=Math.min(v,k),n=R(l[0],r.getWidth()),b=R(l[1],r.getHeight()),u=R(E.get("radius"),w/2);return{cx:n,cy:b,r:u}}function fe(E,r){var l=E==null?"":E+"";return r&&(At(r)?l=r.replace("{value}",l):Nt(r)&&(l=r(E))),l}var It=(function(E){we(r,E);function r(){var l=E!==null&&E.apply(this,arguments)||this;return l.type=r.type,l}return r.prototype.render=function(l,v,k){this.group.removeAll();var w=l.get(["axisLine","lineStyle","color"]),n=Ft(l,k);this._renderMain(l,v,k,w,n),this._data=l.getData()},r.prototype.dispose=function(){},r.prototype._renderMain=function(l,v,k,w,n){var b=this.group,u=l.get("clockwise"),N=-l.get("startAngle")/180*Math.PI,_=-l.get("endAngle")/180*Math.PI,V=l.getModel("axisLine"),z=V.get("roundCap"),T=z?je:We,m=V.get("show"),c=V.getModel("lineStyle"),$=c.get("width"),S=[N,_];_t(S,!u),N=S[0],_=S[1];for(var f=_-N,G=N,L=[],H=0;m&&H=B&&(i===0?0:w[i-1][0])Math.PI/2&&(X+=Math.PI)):ne==="tangential"?X=-o-Math.PI/2:Lt(ne)&&(X=ne*Math.PI/180),X===0?V.add(new pe({style:ge(G,{text:K,x:g,y:re,verticalAlign:p<-.8?"top":p>.8?"bottom":"middle",align:y<-.4?"left":y>.4?"right":"center"},{inheritColor:W}),silent:!0})):V.add(new pe({style:ge(G,{text:K,x:g,y:re,verticalAlign:"middle",align:"center"},{inheritColor:W}),silent:!0,originX:g,originY:re,rotation:X}))}if(f.get("show")&&A!==L){var d=f.get("distance");d=d?d+_:_;for(var a=0;a<=H;a++){y=Math.cos(o),p=Math.sin(o);var t=new Ke({shape:{x1:y*(m-d)+z,y1:p*(m-d)+T,x2:y*(m-C-d)+z,y2:p*(m-C-d)+T},silent:!0,style:M});M.stroke==="auto"&&t.setStyle({stroke:w((A+a/H)/L)}),V.add(t),o+=i}o-=i}else o+=B}},r.prototype._renderPointer=function(l,v,k,w,n,b,u,N,_){var V=this.group,z=this._data,T=this._progressEls,m=[],c=l.get(["pointer","show"]),$=l.getModel("progress"),S=$.get("show"),f=l.getData(),G=f.mapDimension("value"),L=+l.get("min"),H=+l.get("max"),U=[L,H],C=[b,u];function o(i,h){var M=f.getItemModel(i),x=M.getModel("pointer"),y=R(x.get("width"),n.r),p=R(x.get("length"),n.r),A=l.get(["pointer","icon"]),d=x.get("offsetCenter"),P=R(d[0],n.r),K=R(d[1],n.r),W=x.get("keepAspect"),g;return A?g=Ze(A,P-y/2,K-p,y,p,null,W):g=new Kt({shape:{angle:-Math.PI/2,width:y,r:p,x:P,y:K}}),g.rotation=-(h+Math.PI/2),g.x=n.cx,g.y=n.cy,g}function B(i,h){var M=$.get("roundCap"),x=M?je:We,y=$.get("overlap"),p=y?$.get("width"):_/f.count(),A=y?n.r-p:n.r-(i+1)*p,d=y?n.r:n.r-i*p,P=new x({shape:{startAngle:b,endAngle:h,cx:n.cx,cy:n.cy,clockwise:N,r0:A,r:d}});return y&&(P.z2=se(f.get(G,i),[L,H],[100,0],!0)),P}(S||c)&&(f.diff(z).add(function(i){var h=f.get(G,i);if(c){var M=o(i,b);Fe(M,{rotation:-((isNaN(+h)?C[0]:se(h,U,C,!0))+Math.PI/2)},l),V.add(M),f.setItemGraphicEl(i,M)}if(S){var x=B(i,b),y=$.get("clip");Fe(x,{shape:{endAngle:se(h,U,C,y)}},l),V.add(x),Ie(l.seriesIndex,f.dataType,i,x),m[i]=x}}).update(function(i,h){var M=f.get(G,i);if(c){var x=z.getItemGraphicEl(h),y=x?x.rotation:b,p=o(i,y);p.rotation=y,qe(p,{rotation:-((isNaN(+M)?C[0]:se(M,U,C,!0))+Math.PI/2)},l),V.add(p),f.setItemGraphicEl(i,p)}if(S){var A=T[h],d=A?A.shape.endAngle:b,P=B(i,d),K=$.get("clip");qe(P,{shape:{endAngle:se(M,U,C,K)}},l),V.add(P),Ie(l.seriesIndex,f.dataType,i,P),m[i]=P}}).execute(),f.each(function(i){var h=f.getItemModel(i),M=h.getModel("emphasis"),x=M.get("focus"),y=M.get("blurScope"),p=M.get("disabled"),A=w(se(f.get(G,i),U,[0,1],!0));if(c){var d=f.getItemGraphicEl(i),P=f.getItemVisual(i,"style"),K=P.fill;if(d instanceof xt){var W=d.style;d.useStyle(Pt({image:W.image,x:W.x,y:W.y,width:W.width,height:W.height},P))}else d.useStyle(P),d.type!=="pointer"&&d.setColor(K);d.setStyle(h.getModel(["pointer","itemStyle"]).getItemStyle()),d.style.fill==="auto"&&d.setStyle("fill",A),d.z2EmphasisLift=0,Xe(d,h),Ye(d,x,y,p)}if(S){var g=m[i];g.useStyle(f.getItemVisual(i,"style")),g.setStyle(h.getModel(["progress","itemStyle"]).getItemStyle()),g.style.fill==="auto"&&g.setStyle("fill",A),g.z2EmphasisLift=0,Xe(g,h),Ye(g,x,y,p)}}),this._progressEls=m)},r.prototype._renderAnchor=function(l,v){var k=l.getModel("anchor"),w=k.get("show");if(w){var n=k.get("size"),b=k.get("icon"),u=k.get("offsetCenter"),N=k.get("keepAspect"),_=Ze(b,v.cx-n/2+R(u[0],v.r),v.cy-n/2+R(u[1],v.r),n,n,null,N);_.z2=k.get("showAbove")?1:0,_.setStyle(k.getModel("itemStyle").getItemStyle()),this.group.add(_)}},r.prototype._renderTitleAndDetail=function(l,v,k,w,n){var b=this,u=l.getData(),N=u.mapDimension("value"),_=+l.get("min"),V=+l.get("max"),z=new Je,T=[],m=[],c=l.isAnimationEnabled(),$=l.get(["pointer","showAbove"]);u.diff(this._data).add(function(S){T[S]=new pe({silent:!0}),m[S]=new pe({silent:!0})}).update(function(S,f){T[S]=b._titleEls[f],m[S]=b._detailEls[f]}).execute(),u.each(function(S){var f=u.getItemModel(S),G=u.get(N,S),L=new Je,H=w(se(G,[_,V],[0,1],!0)),U=f.getModel("title");if(U.get("show")){var C=U.get("offsetCenter"),o=n.cx+R(C[0],n.r),B=n.cy+R(C[1],n.r),i=T[S];i.attr({z2:$?0:2,style:ge(U,{x:o,y:B,text:u.getName(S),align:"center",verticalAlign:"middle"},{inheritColor:H})}),L.add(i)}var h=f.getModel("detail");if(h.get("show")){var M=h.get("offsetCenter"),x=n.cx+R(M[0],n.r),y=n.cy+R(M[1],n.r),p=R(h.get("width"),n.r),A=R(h.get("height"),n.r),d=l.get(["progress","show"])?u.getItemVisual(S,"style").fill:H,i=m[S],P=h.get("formatter");i.attr({z2:$?0:2,style:ge(h,{x,y,text:fe(G,P),width:isNaN(p)?null:p,height:isNaN(A)?null:A,align:"center",verticalAlign:"middle"},{inheritColor:d})}),Et(i,{normal:h},G,function(W){return fe(W,P)}),c&&Ct(i,S,u,l,{getFormattedLabel:function(W,g,re,ne,X,a){return fe(a?a.interpolatedValue:G,P)}}),L.add(i)}z.add(L)}),this.group.add(z),this._titleEls=T,this._detailEls=m},r.type="gauge",r})(Mt),qt=(function(E){we(r,E);function r(){var l=E!==null&&E.apply(this,arguments)||this;return l.type=r.type,l.visualStyleAccessPath="itemStyle",l}return r.prototype.getInitialData=function(l,v){return Rt(this,["value"])},r.type="series.gauge",r.defaultOption={z:2,colorBy:"data",center:["50%","50%"],legendHoverLink:!0,radius:"75%",startAngle:225,endAngle:-45,clockwise:!0,min:0,max:100,splitNumber:10,axisLine:{show:!0,roundCap:!1,lineStyle:{color:[[1,Q.color.neutral10]],width:10}},progress:{show:!1,overlap:!0,width:10,roundCap:!1,clip:!0},splitLine:{show:!0,length:10,distance:10,lineStyle:{color:Q.color.axisTick,width:3,type:"solid"}},axisTick:{show:!0,splitNumber:5,length:6,distance:10,lineStyle:{color:Q.color.axisTickMinor,width:1,type:"solid"}},axisLabel:{show:!0,distance:15,color:Q.color.axisLabel,fontSize:12,rotate:0},pointer:{icon:null,offsetCenter:[0,0],show:!0,showAbove:!0,length:"60%",width:6,keepAspect:!1},anchor:{show:!1,showAbove:!1,size:6,icon:"circle",offsetCenter:[0,0],keepAspect:!1,itemStyle:{color:Q.color.neutral00,borderWidth:0,borderColor:Q.color.theme[0]}},title:{show:!0,offsetCenter:[0,"20%"],color:Q.color.secondary,fontSize:16,valueAnimation:!1},detail:{show:!0,backgroundColor:Q.color.transparent,borderWidth:0,borderColor:Q.color.neutral40,width:100,height:null,padding:[5,10],offsetCenter:[0,"40%"],color:Q.color.primary,fontSize:30,fontWeight:"bold",lineHeight:30,valueAnimation:!1}},r})(Dt);function Xt(E){E.registerChartView(It),E.registerSeriesModel(qt)}Vt([Tt,Ot,Xt,Ut,zt,$t]);const Yt={class:"monitor-actions"},Zt={class:"update-time"},Jt={class:"performance-content"},Qt={class:"overview-grid","aria-label":"硬件资源概览"},jt={class:"overview-card"},ea={class:"metric-heading"},ta={class:"metric-number"},aa={class:"overview-card"},la={class:"metric-heading"},ra={class:"metric-number"},na={class:"overview-card"},ia={class:"metric-heading"},sa={class:"metric-number"},oa={class:"overview-card"},ua={class:"network-values"},da={class:"panel resource-panel","aria-labelledby":"resource-trend-title"},va={class:"panel-heading"},ma={class:"sample-count"},ca={class:"gpu-section","aria-labelledby":"gpu-pool-title"},pa={class:"section-heading"},ga={class:"gpu-summary"},fa={key:1,class:"gpu-grid"},ha=["aria-label","onClick","onKeydown"],ya={class:"gpu-card-heading"},wa={class:"gpu-identity"},ba={class:"gpu-index"},_a={class:"gpu-primary"},ka={class:"gpu-metrics"},Sa={class:"panel host-panel","aria-labelledby":"host-info-title"},xa={class:"host-info-grid"},Pa={key:0,class:"drawer-heading"},Ea={class:"gpu-index"},Ca={class:"drawer-metrics","aria-label":"GPU 关键指标"},Ma={key:0},Aa={class:"drawer-section","aria-labelledby":"gpu-trend-title"},Na={class:"drawer-section","aria-labelledby":"gpu-process-title"},Ga={class:"drawer-section-heading"},La={class:"drawer-section device-properties","aria-labelledby":"gpu-property-title"},Da=pt({__name:"HardwareView",setup(E){const r=Z({}),l=Z(!0),v=Z(!1),k=Z(""),w=Z(null),n=Z(!0),b=Z(5e3),u=Z([]),N=Z(!1),_=Z(0);let V=null,z=!1,T=!1;const m=j(()=>r.value.gpu??[]),c=j(()=>m.value[_.value]),$=j(()=>m.value.length?Math.round(m.value.reduce((a,t)=>a+o(t.gpu_percent),0)/m.value.length):0),S=j(()=>m.value.reduce((a,t)=>a+Number(t.memory_total_gb||0),0)),f=j(()=>m.value.reduce((a,t)=>a+Number(t.memory_used_gb||0),0)),G=j(()=>m.value.filter(a=>i(a).key==="busy").length),L=j(()=>{var ee,I,ie;const a=m.value.some(te=>i(te).key==="offline"),t=o((ee=r.value.cpu)==null?void 0:ee.percent)>=90||o((I=r.value.memory)==null?void 0:I.percent)>=90||o((ie=r.value.disk)==null?void 0:ie.percent)>=90||m.value.some(te=>i(te).key==="warning");return a?{label:"存在离线设备",className:"is-danger"}:t?{label:"资源需要关注",className:"is-warning"}:{label:"平台运行正常",className:"is-healthy"}}),H=j(()=>({animationDuration:300,color:["#4f46e5","#0ea5e9","#10b981","#f59e0b"],tooltip:{trigger:"axis",valueFormatter:a=>`${a}%`},legend:{top:0,right:0,itemWidth:10,itemHeight:10,textStyle:{color:"#606266"}},grid:{left:14,right:14,top:42,bottom:8,containLabel:!0},xAxis:{type:"category",boundaryGap:!1,data:u.value.map(a=>a.time),axisLine:{lineStyle:{color:"#dcdfe6"}},axisLabel:{color:"#909399",hideOverlap:!0}},yAxis:{type:"value",min:0,max:100,axisLabel:{formatter:"{value}%",color:"#909399"},splitLine:{lineStyle:{color:"#ebeef5",type:"dashed"}}},series:[C("CPU",u.value.map(a=>a.cpu)),C("内存",u.value.map(a=>a.memory)),C("磁盘",u.value.map(a=>a.disk)),C("GPU 平均",u.value.map(a=>a.gpuAverage))]})),U=j(()=>{const a=u.value.map(t=>({time:t.time,gpu:t.gpu[_.value]})).filter(t=>t.gpu);return{animationDuration:300,color:["#4f46e5","#0ea5e9","#f59e0b"],tooltip:{trigger:"axis",valueFormatter:t=>`${t}%`},legend:{top:0,right:0,itemWidth:10,itemHeight:10},grid:{left:12,right:12,top:40,bottom:6,containLabel:!0},xAxis:{type:"category",boundaryGap:!1,data:a.map(t=>t.time),axisLine:{lineStyle:{color:"#dcdfe6"}},axisLabel:{color:"#909399",hideOverlap:!0}},yAxis:{type:"value",min:0,max:100,axisLabel:{formatter:"{value}%",color:"#909399"},splitLine:{lineStyle:{color:"#ebeef5",type:"dashed"}}},series:[C("利用率",a.map(t=>t.gpu.usage)),C("显存",a.map(t=>t.gpu.memory))]}});function C(a,t){return{name:a,type:"line",data:t,showSymbol:!1,smooth:!0,lineStyle:{width:2},areaStyle:{opacity:.05}}}function o(a){return Math.min(100,Math.max(0,Number(a||0)))}function B(a){return a?a.memory_percent!=null?o(a.memory_percent):a.memory_total_gb?Math.round(a.memory_used_gb/a.memory_total_gb*100):0:0}function i(a){return a.status==="offline"?{key:"offline",label:"离线",className:"is-danger"}:a.status==="warning"||a.temperature>=80||B(a)>=90?{key:"warning",label:"需关注",className:"is-warning"}:a.status==="busy"||a.gpu_percent>=10?{key:"busy",label:"运行中",className:"is-busy"}:{key:"idle",label:"空闲",className:"is-idle"}}function h(a){return a>=90?"#f56c6c":a>=75?"#e6a23c":"#4f46e5"}function M(a){var ie,te,ve;const t=a.gpu??[],ee=t.length?Math.round(t.reduce((Y,he)=>Y+o(he.gpu_percent),0)/t.length):0,I=new Date;u.value=[...u.value,{time:I.toLocaleTimeString("zh-CN",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"}),cpu:o((ie=a.cpu)==null?void 0:ie.percent),memory:o((te=a.memory)==null?void 0:te.percent),disk:o((ve=a.disk)==null?void 0:ve.percent),gpuAverage:ee,gpu:t.map(Y=>({usage:o(Y.gpu_percent),memory:B(Y),temperature:o(Y.temperature)}))}].slice(-60)}async function x(){if(!(T||z)){T=!0,v.value=!0,p();try{const a=await ft();r.value=a,w.value=new Date,k.value="",M(a)}catch(a){k.value=a instanceof Error?a.message:"监控数据更新失败,请稍后重试"}finally{l.value=!1,v.value=!1,T=!1,y()}}}function y(){p(),!z&&n.value&&document.visibilityState==="visible"&&(V=setTimeout(x,b.value))}function p(){V&&(clearTimeout(V),V=null)}function A(){y()}function d(){n.value?y():p()}function P(){document.visibilityState==="hidden"?p():n.value&&x()}function K(a){_.value=a,N.value=!0,wt(()=>{var t;return(t=document.querySelector(".gpu-detail-drawer .el-drawer__body"))==null?void 0:t.focus()})}function W(a,t){(a.key==="Enter"||a.key===" ")&&(a.preventDefault(),K(t))}function g(a,t=1){return Number(a||0).toFixed(t).replace(/\.0$/,"")}function re(a){return a==null?"--":g(a)}function ne(a){if(!a)return"-";const t=Math.floor(a/86400),ee=Math.floor(a%86400/3600),I=Math.floor(a%3600/60);return`${t?`${t}天 `:""}${ee}小时 ${I}分钟`}function X(a){return a?a.toLocaleTimeString("zh-CN",{hour12:!1}):"等待首次更新"}return Oe(x),Oe(()=>document.addEventListener("visibilitychange",P)),gt(()=>{z=!0,p(),document.removeEventListener("visibilitychange",P)}),(a,t)=>{const ee=dt,I=it,ie=nt,te=rt,ve=lt,Y=ut,he=ot,oe=mt,et=vt,tt=st,at=ct;return J(),ae(ye,null,[D(Bt,{title:"平台性能",subtitle:"实时监控计算、存储、网络与 GPU 资源池状态"},{extra:le(()=>[e("div",Yt,[e("div",{class:ce(["health-state",L.value.className])},[t[3]||(t[3]=e("span",{class:"health-dot","aria-hidden":"true"},null,-1)),F(" "+s(L.value.label),1)],2),e("span",Zt,"更新于 "+s(X(w.value)),1),D(ee,{modelValue:n.value,"onUpdate:modelValue":t[0]||(t[0]=q=>n.value=q),"inline-prompt":"","active-text":"自动","inactive-text":"暂停","aria-label":"自动刷新",onChange:d},null,8,["modelValue"]),D(ie,{modelValue:b.value,"onUpdate:modelValue":t[1]||(t[1]=q=>b.value=q),class:"interval-select",size:"small","aria-label":"刷新频率",disabled:!n.value,onChange:A},{default:le(()=>[D(I,{value:1e3,label:"1 秒"}),D(I,{value:3e3,label:"3 秒"}),D(I,{value:5e3,label:"5 秒"}),D(I,{value:1e4,label:"10 秒"})]),_:1},8,["modelValue","disabled"]),D(te,{loading:v.value,"aria-label":"立即刷新平台性能数据",onClick:x},{default:le(()=>[...t[4]||(t[4]=[e("i",{class:"fa fa-refresh","aria-hidden":"true"},null,-1),F(" 刷新 ",-1)])]),_:1},8,["loading"])])]),default:le(()=>{var q,ue,be,_e,ke,Se,xe,Pe,Ee,Ce,Me,Ae,Ne,Ge,Le,De,Ve,Te,Ue,ze,$e;return[k.value?(J(),Re(ve,{key:0,class:"load-alert",type:"warning",closable:!1,"show-icon":"",title:"最新数据获取失败,当前仍展示上一次成功采集的数据",description:k.value},null,8,["description"])):me("",!0),ht((J(),ae("div",Jt,[e("section",Qt,[e("article",jt,[e("div",ea,[t[6]||(t[6]=e("span",{class:"metric-icon is-cpu"},[e("i",{class:"fa fa-microchip"})],-1)),e("div",null,[t[5]||(t[5]=e("h3",null,"CPU",-1)),e("p",null,s(((q=r.value.cpu)==null?void 0:q.model)||`${((ue=r.value.cpu)==null?void 0:ue.cores)||0} 个逻辑核心`),1)])]),e("strong",ta,[F(s(o((be=r.value.cpu)==null?void 0:be.percent)),1),t[7]||(t[7]=e("small",null,"%",-1))]),D(Y,{percentage:o((_e=r.value.cpu)==null?void 0:_e.percent),"stroke-width":6,"show-text":!1,color:h(o((ke=r.value.cpu)==null?void 0:ke.percent))},null,8,["percentage","color"])]),e("article",aa,[e("div",la,[t[9]||(t[9]=e("span",{class:"metric-icon is-memory"},[e("i",{class:"fa fa-database"})],-1)),e("div",null,[t[8]||(t[8]=e("h3",null,"内存",-1)),e("p",null,s(g((Se=r.value.memory)==null?void 0:Se.used_gb))+" / "+s(g((xe=r.value.memory)==null?void 0:xe.total_gb))+" GB",1)])]),e("strong",ra,[F(s(o((Pe=r.value.memory)==null?void 0:Pe.percent)),1),t[10]||(t[10]=e("small",null,"%",-1))]),D(Y,{percentage:o((Ee=r.value.memory)==null?void 0:Ee.percent),"stroke-width":6,"show-text":!1,color:h(o((Ce=r.value.memory)==null?void 0:Ce.percent))},null,8,["percentage","color"])]),e("article",na,[e("div",ia,[t[12]||(t[12]=e("span",{class:"metric-icon is-disk"},[e("i",{class:"fa fa-hdd-o"})],-1)),e("div",null,[t[11]||(t[11]=e("h3",null,"磁盘",-1)),e("p",null,s(g((Me=r.value.disk)==null?void 0:Me.used_gb))+" / "+s(g((Ae=r.value.disk)==null?void 0:Ae.total_gb))+" GB",1)])]),e("strong",sa,[F(s(o((Ne=r.value.disk)==null?void 0:Ne.percent)),1),t[13]||(t[13]=e("small",null,"%",-1))]),D(Y,{percentage:o((Ge=r.value.disk)==null?void 0:Ge.percent),"stroke-width":6,"show-text":!1,color:h(o((Le=r.value.disk)==null?void 0:Le.percent))},null,8,["percentage","color"])]),e("article",oa,[t[18]||(t[18]=e("div",{class:"metric-heading"},[e("span",{class:"metric-icon is-network"},[e("i",{class:"fa fa-exchange"})]),e("div",null,[e("h3",null,"网络吞吐"),e("p",null,"实时接收 / 发送")])],-1)),e("div",ua,[e("strong",null,[t[14]||(t[14]=e("i",{class:"fa fa-arrow-down"},null,-1)),F(" "+s(re((De=r.value.network)==null?void 0:De.download_mb_s))+" ",1),t[15]||(t[15]=e("small",null,"MB/s",-1))]),e("strong",null,[t[16]||(t[16]=e("i",{class:"fa fa-arrow-up"},null,-1)),F(" "+s(re((Ve=r.value.network)==null?void 0:Ve.upload_mb_s))+" ",1),t[17]||(t[17]=e("small",null,"MB/s",-1))])])])]),e("section",da,[e("div",va,[t[19]||(t[19]=e("div",null,[e("h2",{id:"resource-trend-title"},"系统资源趋势"),e("p",null,"展示最近 60 次前端采集快照")],-1)),e("span",ma,s(u.value.length)+" / 60 个采样点",1)]),D(He(Qe),{class:"resource-chart",option:H.value,autoresize:"","aria-label":"CPU、内存、磁盘和GPU平均利用率趋势图"},null,8,["option"])]),e("section",ca,[e("div",pa,[e("div",null,[t[20]||(t[20]=e("h2",{id:"gpu-pool-title"},"GPU 资源池",-1)),e("p",null,"共 "+s(m.value.length)+" 张卡,"+s(G.value)+" 张运行中 · 显存 "+s(g(f.value))+" / "+s(g(S.value))+" GB",1)]),e("div",ga,[t[21]||(t[21]=e("span",null,"平均利用率",-1)),e("strong",null,s($.value)+"%",1)])]),!m.value.length&&!l.value?(J(),Re(he,{key:0,description:"当前未检测到 GPU 设备"})):(J(),ae("div",fa,[(J(!0),ae(ye,null,yt(m.value,(O,de)=>(J(),ae("article",{key:O.uuid||O.id||de,class:"gpu-card",role:"button",tabindex:"0","aria-label":`查看 GPU ${de} 详情`,onClick:Be=>K(de),onKeydown:Be=>W(Be,de)},[e("div",ya,[e("div",wa,[e("span",ba,"GPU "+s(de),1),e("h3",null,s(O.name),1)]),e("span",{class:ce(["status-pill",i(O).className])},[t[22]||(t[22]=e("i",null,null,-1)),F(s(i(O).label),1)],2)]),e("div",_a,[e("strong",null,[F(s(o(O.gpu_percent)),1),t[23]||(t[23]=e("small",null,"%",-1))]),t[24]||(t[24]=e("span",null,"计算利用率",-1))]),D(Y,{percentage:o(O.gpu_percent),"stroke-width":7,"show-text":!1,color:h(o(O.gpu_percent))},null,8,["percentage","color"]),e("dl",ka,[e("div",null,[t[25]||(t[25]=e("dt",null,"显存",-1)),e("dd",null,s(g(O.memory_used_gb))+" / "+s(g(O.memory_total_gb))+" GB",1)]),e("div",null,[t[26]||(t[26]=e("dt",null,"温度",-1)),e("dd",{class:ce({"is-hot":O.temperature>=80,"is-warm":O.temperature>=70&&O.temperature<80})},s(O.temperature)+"°C",3)]),e("div",null,[t[27]||(t[27]=e("dt",null,"功耗",-1)),e("dd",null,s(g(O.power_w,0))+" W",1)]),e("div",null,[t[28]||(t[28]=e("dt",null,"风扇",-1)),e("dd",null,s(O.fan_speed??"-")+s(O.fan_speed!=null?"%":""),1)])]),t[29]||(t[29]=e("div",{class:"gpu-card-footer"},[F("查看设备详情 "),e("i",{class:"fa fa-angle-right"})],-1))],40,ha))),128))]))]),e("section",Sa,[t[34]||(t[34]=e("div",{class:"panel-heading compact"},[e("div",null,[e("h2",{id:"host-info-title"},"主机信息"),e("p",null,"节点运行环境与基础状态")])],-1)),e("dl",xa,[e("div",null,[t[30]||(t[30]=e("dt",null,"操作系统",-1)),e("dd",null,s(((Te=r.value.system)==null?void 0:Te.os)||"-"),1)]),e("div",null,[t[31]||(t[31]=e("dt",null,"运行时长",-1)),e("dd",null,s(ne((Ue=r.value.system)==null?void 0:Ue.uptime_seconds)),1)]),e("div",null,[t[32]||(t[32]=e("dt",null,"运行进程",-1)),e("dd",null,s(((ze=r.value.system)==null?void 0:ze.process_count)??"-"),1)]),e("div",null,[t[33]||(t[33]=e("dt",null,"GPU 驱动",-1)),e("dd",null,s((($e=m.value[0])==null?void 0:$e.driver_version)||"-"),1)])])])])),[[at,l.value]])]}),_:1}),D(tt,{modelValue:N.value,"onUpdate:modelValue":t[2]||(t[2]=q=>N.value=q),class:"gpu-detail-drawer",size:"min(720px, 92vw)","destroy-on-close":""},{header:le(()=>[c.value?(J(),ae("div",Pa,[e("span",Ea,"GPU "+s(_.value),1),e("div",null,[e("h2",null,s(c.value.name),1),e("p",null,s(c.value.uuid||"设备详细运行信息"),1)]),e("span",{class:ce(["status-pill",i(c.value).className])},[t[35]||(t[35]=e("i",null,null,-1)),F(s(i(c.value).label),1)],2)])):me("",!0)]),default:le(()=>{var q;return[c.value?(J(),ae(ye,{key:0},[e("section",Ca,[e("div",null,[t[36]||(t[36]=e("span",null,"计算利用率",-1)),e("strong",null,s(o(c.value.gpu_percent))+"%",1)]),e("div",null,[t[37]||(t[37]=e("span",null,"显存占用",-1)),e("strong",null,s(B(c.value))+"%",1),e("small",null,s(g(c.value.memory_used_gb))+" / "+s(g(c.value.memory_total_gb))+" GB",1)]),e("div",null,[t[38]||(t[38]=e("span",null,"温度",-1)),e("strong",null,s(c.value.temperature)+"°C",1)]),e("div",null,[t[39]||(t[39]=e("span",null,"实时功耗",-1)),e("strong",null,s(g(c.value.power_w,0))+" W",1),c.value.power_limit_w?(J(),ae("small",Ma,"上限 "+s(c.value.power_limit_w)+" W",1)):me("",!0)])]),e("section",Aa,[t[40]||(t[40]=e("div",{class:"drawer-section-heading"},[e("h3",{id:"gpu-trend-title"},"设备趋势"),e("span",null,"最近 60 次采样")],-1)),D(He(Qe),{class:"gpu-detail-chart",option:U.value,autoresize:"","aria-label":"单卡利用率和显存占用趋势图"},null,8,["option"])]),e("section",Na,[e("div",Ga,[t[41]||(t[41]=e("h3",{id:"gpu-process-title"},"GPU 进程",-1)),e("span",null,s(((q=c.value.processes)==null?void 0:q.length)||0)+" 个",1)]),D(et,{data:c.value.processes||[],stripe:"","empty-text":"当前没有占用此 GPU 的进程"},{default:le(()=>[D(oe,{prop:"pid",label:"PID",width:"90"}),D(oe,{prop:"task_name",label:"任务","min-width":"130","show-overflow-tooltip":""}),D(oe,{prop:"name",label:"进程","min-width":"130","show-overflow-tooltip":""}),D(oe,{prop:"user",label:"用户",width:"100"}),D(oe,{label:"显存",width:"110",align:"right"},{default:le(({row:ue})=>[F(s(ue.memory_used_gb!=null?`${g(ue.memory_used_gb)} GB`:"-"),1)]),_:1})]),_:1},8,["data"])]),e("section",La,[t[46]||(t[46]=e("div",{class:"drawer-section-heading"},[e("h3",{id:"gpu-property-title"},"设备属性")],-1)),e("dl",null,[e("div",null,[t[42]||(t[42]=e("dt",null,"风扇转速",-1)),e("dd",null,s(c.value.fan_speed!=null?`${c.value.fan_speed}%`:"-"),1)]),e("div",null,[t[43]||(t[43]=e("dt",null,"核心频率",-1)),e("dd",null,s(c.value.clock_mhz?`${c.value.clock_mhz} MHz`:"-"),1)]),e("div",null,[t[44]||(t[44]=e("dt",null,"驱动版本",-1)),e("dd",null,s(c.value.driver_version||"-"),1)]),e("div",null,[t[45]||(t[45]=e("dt",null,"设备标识",-1)),e("dd",null,s(c.value.uuid||c.value.id||`GPU-${_.value}`),1)])])])],64)):me("",!0)]}),_:1},8,["modelValue"])],64)}}}),wl=Ht(Da,[["__scopeId","data-v-37c93228"]]);export{wl as default}; diff --git a/frontend/dist/assets/HardwareView-DcounnQ-.css b/frontend/dist/assets/HardwareView-DcounnQ-.css new file mode 100644 index 0000000..55ac482 --- /dev/null +++ b/frontend/dist/assets/HardwareView-DcounnQ-.css @@ -0,0 +1 @@ +.monitor-actions[data-v-37c93228]{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:10px}.health-state[data-v-37c93228]{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:500;color:#606266}.health-dot[data-v-37c93228]{width:8px;height:8px;border-radius:50%;background:#10b981;box-shadow:0 0 0 3px #10b9811f}.health-state.is-warning .health-dot[data-v-37c93228]{background:#f59e0b;box-shadow:0 0 0 3px #f59e0b1f}.health-state.is-danger .health-dot[data-v-37c93228]{background:#ef4444;box-shadow:0 0 0 3px #ef44441f}.update-time[data-v-37c93228]{color:#909399;font-size:12px}.interval-select[data-v-37c93228]{width:78px}.load-alert[data-v-37c93228]{margin-bottom:16px}.performance-content[data-v-37c93228]{min-height:320px}.overview-grid[data-v-37c93228]{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:16px}.overview-card[data-v-37c93228],.panel[data-v-37c93228],.gpu-card[data-v-37c93228]{border:1px solid #e4e7ed;border-radius:8px;background:#fff}.overview-card[data-v-37c93228]{position:relative;padding:18px;overflow:hidden}.metric-heading[data-v-37c93228]{display:flex;align-items:center;gap:10px;margin-bottom:14px}.metric-heading h3[data-v-37c93228],.metric-heading p[data-v-37c93228]{margin:0}.metric-heading h3[data-v-37c93228]{color:#303133;font-size:14px;font-weight:600}.metric-heading p[data-v-37c93228]{margin-top:2px;color:#909399;font-size:12px}.metric-icon[data-v-37c93228]{display:grid;width:34px;height:34px;place-items:center;border-radius:7px;font-size:15px}.metric-icon.is-cpu[data-v-37c93228]{color:#4f46e5;background:#eef2ff}.metric-icon.is-memory[data-v-37c93228]{color:#0ea5e9;background:#ecfeff}.metric-icon.is-disk[data-v-37c93228]{color:#10b981;background:#ecfdf5}.metric-icon.is-network[data-v-37c93228]{color:#f59e0b;background:#fffbeb}.metric-number[data-v-37c93228]{display:block;margin-bottom:10px;color:#1f2937;font-size:29px;line-height:1}.metric-number small[data-v-37c93228],.network-values small[data-v-37c93228],.gpu-primary small[data-v-37c93228]{margin-left:2px;color:#909399;font-size:13px;font-weight:500}.network-values[data-v-37c93228]{display:flex;flex-wrap:wrap;gap:12px 18px;min-height:38px;align-items:center}.network-values strong[data-v-37c93228]{color:#374151;font-size:17px}.network-values i[data-v-37c93228]{margin-right:3px;color:#10b981;font-size:12px}.network-values strong:last-child i[data-v-37c93228]{color:#f59e0b}.panel[data-v-37c93228]{padding:18px 20px}.resource-panel[data-v-37c93228]{margin-bottom:24px}.panel-heading[data-v-37c93228],.section-heading[data-v-37c93228]{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.panel-heading h2[data-v-37c93228],.panel-heading p[data-v-37c93228],.section-heading h2[data-v-37c93228],.section-heading p[data-v-37c93228]{margin:0}.panel-heading h2[data-v-37c93228],.section-heading h2[data-v-37c93228]{color:#303133;font-size:15px;font-weight:600}.panel-heading p[data-v-37c93228],.section-heading p[data-v-37c93228]{margin-top:4px;color:#909399;font-size:12px}.sample-count[data-v-37c93228]{color:#909399;font-size:12px}.resource-chart[data-v-37c93228]{height:260px;margin-top:8px}.gpu-section[data-v-37c93228]{margin-bottom:24px}.gpu-summary[data-v-37c93228]{min-width:100px;text-align:right}.gpu-summary span[data-v-37c93228]{display:block;color:#909399;font-size:12px}.gpu-summary strong[data-v-37c93228]{color:#303133;font-size:22px}.gpu-grid[data-v-37c93228]{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:14px}.gpu-card[data-v-37c93228]{padding:16px;cursor:pointer;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.gpu-card[data-v-37c93228]:hover,.gpu-card[data-v-37c93228]:focus-visible{border-color:#a5b4fc;box-shadow:0 5px 16px #4f46e514;outline:none;transform:translateY(-1px)}.gpu-card-heading[data-v-37c93228]{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.gpu-identity[data-v-37c93228]{min-width:0}.gpu-index[data-v-37c93228]{display:inline-block;margin-bottom:4px;padding:2px 7px;border-radius:4px;color:#4338ca;background:#eef2ff;font-size:11px;font-weight:600}.gpu-identity h3[data-v-37c93228]{overflow:hidden;margin:0;color:#303133;font-size:13px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.status-pill[data-v-37c93228]{display:inline-flex;flex:none;align-items:center;gap:5px;padding:3px 7px;border-radius:999px;color:#047857;background:#ecfdf5;font-size:11px}.status-pill i[data-v-37c93228]{width:6px;height:6px;border-radius:50%;background:currentColor}.status-pill.is-busy[data-v-37c93228]{color:#4338ca;background:#eef2ff}.status-pill.is-warning[data-v-37c93228]{color:#b45309;background:#fffbeb}.status-pill.is-danger[data-v-37c93228]{color:#b91c1c;background:#fef2f2}.gpu-primary[data-v-37c93228]{display:flex;align-items:baseline;justify-content:space-between;margin:17px 0 8px}.gpu-primary strong[data-v-37c93228]{color:#1f2937;font-size:25px}.gpu-primary span[data-v-37c93228]{color:#909399;font-size:11px}.gpu-metrics[data-v-37c93228]{display:grid;grid-template-columns:1fr 1fr;gap:10px 16px;margin:15px 0 0}.gpu-metrics div[data-v-37c93228]{min-width:0}.gpu-metrics dt[data-v-37c93228]{margin-bottom:2px;color:#909399;font-size:11px}.gpu-metrics dd[data-v-37c93228]{overflow:hidden;margin:0;color:#606266;font-size:12px;font-weight:500;text-overflow:ellipsis;white-space:nowrap}.gpu-metrics dd.is-warm[data-v-37c93228]{color:#b45309}.gpu-metrics dd.is-hot[data-v-37c93228]{color:#dc2626}.gpu-card-footer[data-v-37c93228]{margin:14px -16px -16px;padding:9px 16px;border-top:1px solid #f0f2f5;color:#909399;font-size:11px;text-align:right}.host-panel[data-v-37c93228]{padding-bottom:4px}.host-info-grid[data-v-37c93228]{display:grid;grid-template-columns:2fr 1.2fr 1fr 1fr;margin:15px 0 0}.host-info-grid>div[data-v-37c93228]{min-width:0;padding:0 18px 14px;border-left:1px solid #ebeef5}.host-info-grid>div[data-v-37c93228]:first-child{padding-left:0;border-left:0}.host-info-grid dt[data-v-37c93228]{margin-bottom:5px;color:#909399;font-size:12px}.host-info-grid dd[data-v-37c93228]{overflow:hidden;margin:0;color:#303133;font-size:13px;font-weight:500;text-overflow:ellipsis;white-space:nowrap}.drawer-heading[data-v-37c93228]{display:flex;width:100%;align-items:center;gap:12px}.drawer-heading .gpu-index[data-v-37c93228]{margin:0}.drawer-heading div[data-v-37c93228]{min-width:0;flex:1}.drawer-heading h2[data-v-37c93228],.drawer-heading p[data-v-37c93228]{margin:0}.drawer-heading h2[data-v-37c93228]{color:#303133;font-size:16px}.drawer-heading p[data-v-37c93228]{overflow:hidden;margin-top:3px;color:#909399;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.drawer-metrics[data-v-37c93228]{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.drawer-metrics>div[data-v-37c93228]{min-width:0;padding:13px;border:1px solid #e4e7ed;border-radius:7px;background:#fafafa}.drawer-metrics span[data-v-37c93228],.drawer-metrics small[data-v-37c93228]{display:block;overflow:hidden;color:#909399;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.drawer-metrics strong[data-v-37c93228]{display:block;margin:6px 0 2px;color:#303133;font-size:20px}.drawer-section[data-v-37c93228]{margin-top:22px}.drawer-section-heading[data-v-37c93228]{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.drawer-section-heading h3[data-v-37c93228]{margin:0;color:#303133;font-size:14px}.drawer-section-heading span[data-v-37c93228]{color:#909399;font-size:11px}.gpu-detail-chart[data-v-37c93228]{height:230px;border:1px solid #ebeef5;border-radius:7px}.device-properties dl[data-v-37c93228]{display:grid;grid-template-columns:1fr 1fr;margin:0;border:1px solid #ebeef5;border-radius:7px}.device-properties dl>div[data-v-37c93228]{display:flex;min-width:0;justify-content:space-between;gap:14px;padding:11px 13px;border-bottom:1px solid #ebeef5}.device-properties dl>div[data-v-37c93228]:nth-last-child(-n+2){border-bottom:0}.device-properties dt[data-v-37c93228]{color:#909399;font-size:12px}.device-properties dd[data-v-37c93228]{overflow:hidden;margin:0;color:#303133;font-size:12px;text-overflow:ellipsis;white-space:nowrap}[data-v-37c93228] .gpu-detail-drawer .el-drawer__header{margin-bottom:0;padding-bottom:17px;border-bottom:1px solid #ebeef5}[data-v-37c93228] .gpu-detail-drawer .el-drawer__body{outline:none}@media(max-width:1280px){.overview-grid[data-v-37c93228],.gpu-grid[data-v-37c93228]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:860px){.monitor-actions[data-v-37c93228]{justify-content:flex-start}.update-time[data-v-37c93228]{width:100%}.host-info-grid[data-v-37c93228]{grid-template-columns:repeat(2,minmax(0,1fr))}.host-info-grid>div[data-v-37c93228]:nth-child(3){padding-left:0;border-left:0}.drawer-metrics[data-v-37c93228]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:620px){.overview-grid[data-v-37c93228],.gpu-grid[data-v-37c93228]{grid-template-columns:1fr}.resource-chart[data-v-37c93228]{height:230px}.section-heading[data-v-37c93228]{flex-direction:column}.gpu-summary[data-v-37c93228]{text-align:left}.host-info-grid[data-v-37c93228],.device-properties dl[data-v-37c93228]{grid-template-columns:1fr}.host-info-grid>div[data-v-37c93228]{padding-left:0;border-left:0}.device-properties dl>div[data-v-37c93228]{border-bottom:1px solid #ebeef5!important}.device-properties dl>div[data-v-37c93228]:last-child{border-bottom:0!important}} diff --git a/frontend/dist/assets/InferenceChatView-BP3Wudle.js b/frontend/dist/assets/InferenceChatView-BP3Wudle.js new file mode 100644 index 0000000..7cb8852 --- /dev/null +++ b/frontend/dist/assets/InferenceChatView-BP3Wudle.js @@ -0,0 +1,12 @@ +import{E as he,a as _e}from"./el-form-item-D5kF3B90.js";import{E as be}from"./index-TFUf94PZ.js";import{a as ke,E as ye}from"./index-BjEW7-SA.js";import{ak as Ce,J as ge,a6 as we,b as Y,R as H,a5 as xe,T as Te,i as Ee,y as b,D as Z,a as L,j as T,F as Ie,aJ as W,k as Ve,C as Se,aK as Ke,d as O,o as g,c as E,h as R,n as K,f as s,B as Ne,q as l,x as ee,aa as A,s as _,w as x,e as te,r as $e,E as Pe,t as se,aL as ae,K as ne,L as Ae,ab as De,l as Be,G as Me,g as F,M as Fe,ad as He,aM as Re,ac as Ue,P as M,A as qe,z as Le,v as Oe}from"./index-BKKvzUDD.js";import{C as oe,U as le}from"./raf-C-x62Pcl.js";import{c as G}from"./castArray-5uErZEc3.js";import{E as ze}from"./index-AGby9JM1.js";import{E as je}from"./el-drawer-BbN11Mg2.js";import{E as Je}from"./el-slider-DYENF1-i.js";import"./el-popper-D6_hxRbQ.js";import"./el-tooltip-l0sNRNKZ.js";import"./el-input-number-BFR4pu1i.js";import{_ as We}from"./MarkdownView.vue_vue_type_style_index_0_lang-BPqmX54I.js";import{b as Ge,a as Qe}from"./compare-CZ4TIoIW.js";import{_ as Xe}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./_baseClone-B5RBzbh5.js";import"./index-DLzof2Fz.js";import"./index-GAnQrJsQ.js";import"./index-CWUnzf90.js";import"./index-DfyOU94W.js";import"./scroll-BkzZKETR.js";import"./use-dialog-DmridEEy.js";import"./debounce-ByXPNh5F.js";import"./toNumber-Dkj3QRv9.js";import"./clamp-CbbY8h6F.js";import"./index-BENk7lZo.js";const Q=t=>Ce(t)||ge(t)||we(t),Ye=Y({accordion:Boolean,modelValue:{type:H([Array,String,Number]),default:()=>xe([])},expandIconPosition:{type:H([String]),default:"right"},beforeCollapse:{type:H(Function)}}),Ze={[le]:Q,[oe]:Q},ie=Symbol("collapseContextKey"),et=Y({title:{type:String,default:""},name:{type:H([String,Number]),default:void 0},icon:{type:Ee,default:Te},disabled:Boolean}),X="ElCollapse",tt=(t,i)=>{const d=b(G(t.modelValue)),p=o=>{d.value=o;const r=t.accordion?d.value[0]:d.value;i(le,r),i(oe,r)},n=o=>{if(t.accordion)p([d.value[0]===o?"":o]);else{const r=[...d.value],c=r.indexOf(o);c>-1?r.splice(c,1):r.push(o),p(r)}},a=async o=>{const{beforeCollapse:r}=t;if(!r){n(o);return}const c=r(o);[W(c),Ve(c)].includes(!0)||Se(X,"beforeCollapse must return type `Promise` or `boolean`"),W(c)?c.then(f=>{f!==!1&&n(o)}).catch(f=>{Ke(X,`some error occurred: ${f}`)}):c&&n(o)};return Z(()=>t.modelValue,()=>d.value=G(t.modelValue),{deep:!0}),Ie(ie,{activeNames:d,handleItemClick:a}),{activeNames:d,setActiveNames:p}},st=t=>{const i=L("collapse");return{rootKls:T(()=>[i.b(),i.b(`icon-position-${t.expandIconPosition}`)])}};var at=O({name:"ElCollapse",__name:"collapse",props:Ye,emits:Ze,setup(t,{expose:i,emit:d}){const p=t,{activeNames:n,setActiveNames:a}=tt(p,d),{rootKls:o}=st(p);return i({activeNames:n,setActiveNames:a}),(r,c)=>(g(),E("div",{class:K(s(o))},[R(r.$slots,"default")],2))}}),nt=at;const ot=t=>{const i=Ne(ie),{namespace:d}=L("collapse"),p=b(!1),n=b(!1),a=ke(),o=T(()=>a.current++),r=T(()=>t.name??`${d.value}-id-${a.prefix}-${s(o)}`),c=T(()=>i==null?void 0:i.activeNames.value.includes(s(r)));return{focusing:p,id:o,isActive:c,handleFocus:()=>{setTimeout(()=>{n.value?n.value=!1:p.value=!0},50)},handleHeaderClick:v=>{var y;t.disabled||(y=v.target)!=null&&y.closest("input, textarea, select")||(i==null||i.handleItemClick(s(r)),p.value=!1,n.value=!0)},handleEnterClick:v=>{var y;(y=v.target)!=null&&y.closest("input, textarea, select")||(v.preventDefault(),i==null||i.handleItemClick(s(r)))}}},lt=(t,{focusing:i,isActive:d,id:p})=>{const n=L("collapse"),a=T(()=>[n.b("item"),n.is("active",s(d)),n.is("disabled",t.disabled)]),o=T(()=>[n.be("item","header"),n.is("active",s(d)),{focusing:s(i)&&!t.disabled}]),r=T(()=>[n.be("item","arrow"),n.is("active",s(d))]);return{itemTitleKls:T(()=>[n.be("item","title")]),arrowKls:r,headKls:o,rootKls:a,itemWrapperKls:T(()=>n.be("item","wrap")),itemContentKls:T(()=>n.be("item","content")),scopedContentId:T(()=>n.b(`content-${s(p)}`)),scopedHeadId:T(()=>n.b(`head-${s(p)}`))}},it=["id","aria-expanded","aria-controls","aria-describedby","tabindex","aria-disabled"],rt=["id","aria-hidden","aria-labelledby"];var ut=O({name:"ElCollapseItem",__name:"collapse-item",props:et,setup(t,{expose:i}){const d=t,{focusing:p,id:n,isActive:a,handleFocus:o,handleHeaderClick:r,handleEnterClick:c}=ot(d),{arrowKls:f,headKls:k,rootKls:C,itemTitleKls:v,itemWrapperKls:y,itemContentKls:$,scopedContentId:V,scopedHeadId:I}=lt(d,{focusing:p,isActive:a,id:n});return i({isActive:a}),(h,w)=>(g(),E("div",{class:K(s(C))},[l("div",{id:s(I),class:K(s(k)),"aria-expanded":s(a),"aria-controls":s(V),"aria-describedby":s(V),tabindex:t.disabled?void 0:0,"aria-disabled":t.disabled,role:"button",onClick:w[0]||(w[0]=(...N)=>s(r)&&s(r)(...N)),onKeydown:w[1]||(w[1]=se(ae((...N)=>s(c)&&s(c)(...N),["stop"]),["space","enter"])),onFocus:w[2]||(w[2]=(...N)=>s(o)&&s(o)(...N)),onBlur:w[3]||(w[3]=N=>p.value=!1)},[l("span",{class:K(s(v))},[R(h.$slots,"title",{isActive:s(a)},()=>[ee(A(t.title),1)])],2),R(h.$slots,"icon",{isActive:s(a)},()=>[_(s(Pe),{class:K(s(f))},{default:x(()=>[(g(),te($e(t.icon)))]),_:1},8,["class"])])],42,it),_(s(ze),null,{default:x(()=>[ne(l("div",{id:s(V),role:"region",class:K(s(y)),"aria-hidden":!s(a),"aria-labelledby":s(I)},[l("div",{class:K(s($))},[R(h.$slots,"default")],2)],10,rt),[[Ae,s(a)]])]),_:3})],2))}}),re=ut;const dt=Be(nt,{CollapseItem:re}),ct=De(re);function mt(){const t=b({question:"",fullContent:"",displayContent:"",thinkContent:"",isThinking:!1,isStreaming:!1,done:!1}),i=b(!1);function d(a){const o=/([\s\S]*?)(<\/think>)?/g;let r="",c=a,f=!1,k;const C=(a.match(//g)||[]).length,v=(a.match(/<\/think>/g)||[]).length;for(f=C>v;(k=o.exec(a))!==null;)r+=k[1];return c=a.replace(/[\s\S]*?(<\/think>|$)/g,"").trim(),{think:r.trim(),display:c,isThinking:f}}async function p(a){var c;i.value=!0,t.value={question:a.user_question||"",fullContent:"",displayContent:"",thinkContent:"",isThinking:!1,isStreaming:!0,done:!1};let o=0;const r=50;try{const f=await Ge(a);if(!f.ok)throw new Error(`HTTP ${f.status}`);const k=(c=f.body)==null?void 0:c.getReader();if(!k)throw new Error("无法读取响应流");const C=new TextDecoder("utf-8");let v="";for(;;){const{done:$,value:V}=await k.read();if($)break;v+=C.decode(V,{stream:!0}),t.value.fullContent=v;const I=Date.now();if(I-o>=r){o=I;const h=d(v);t.value.thinkContent=h.think,t.value.displayContent=h.display,t.value.isThinking=h.isThinking}}const y=d(v);t.value.thinkContent=y.think,t.value.displayContent=y.display,t.value.isThinking=!1,t.value.isStreaming=!1,t.value.done=!0}catch(f){t.value.isStreaming=!1,t.value.done=!0,t.value.error=f.message||"流式请求失败",t.value.displayContent=t.value.fullContent||t.value.error||"请求失败"}finally{i.value=!1}}function n(){t.value={question:"",fullContent:"",displayContent:"",thinkContent:"",isThinking:!1,isStreaming:!1,done:!1}}return{message:t,loading:i,send:p,reset:n}}const pt={class:"chat-wrap"},ft={class:"chat-header"},vt={class:"header-left"},ht={class:"header-title"},_t={class:"title-text"},bt={key:0,class:"mock-badge"},kt={class:"chat-body-inner"},yt={key:0,class:"empty-hint"},Ct={key:0,class:"avatar assistant"},gt={class:"bubble-wrap"},wt={class:"think-content"},xt={key:1,class:"bubble user-bubble"},Tt={key:2,class:"bubble ai-bubble markdown"},Et={key:3,class:"bubble ai-bubble streaming"},It={class:"chat-input-container"},Vt={class:"chat-input-inner"},St={class:"input-wrapper"},Kt=["disabled","onKeydown"],Nt=["disabled"],$t=O({__name:"InferenceChatView",setup(t){const i=Ue();Oe();const d=i.params.id,p=d==="mock",n=b(i.query.model||""),{message:a,loading:o,send:r,reset:c}=mt(),f=b(null),k=b([]),C=b(""),v=b(""),y=b(.7),$=b(.95),V=b(2048),I=b();let h=null;const w=b(!1);async function N(){var u;if(!p)try{f.value=await Qe(d);const e=z(f.value);(u=e[0])!=null&&u.model_name&&(n.value=e[0].model_name)}catch{}}function z(u){if(!(u!=null&&u.load_status))return[];try{return(typeof u.load_status=="string"?JSON.parse(u.load_status):u.load_status).loaded_models||[]}catch{return[]}}async function j(){const u=C.value.trim();if(!u||o.value)return;k.value.push({role:"user",content:u,done:!0});const e=Le({role:"assistant",content:"",think:"",isThinking:!1,isStreaming:!0,done:!1});if(k.value.push(e),C.value="",await M(),ce(),D(),p){await ue(e,u);return}const S=z(f.value)[0];if(!S){qe.error("未找到已启动的模型"),e.content="未找到已启动的模型,请先返回列表加载模型",e.done=!0,e.isStreaming=!1;return}h=e,await r({port:S.port,model_name:S.model_name,model_path:"",system_prompt:v.value,user_question:u,temperature:y.value,top_p:$.value,max_tokens:V.value}),e.content=a.value.displayContent||a.value.error||"(无回复)",e.think=a.value.thinkContent,e.isThinking=!1,e.isStreaming=!1,e.done=!0,h=null,c(),await M(),D()}async function ue(u,e){const P=`你好!我是 **${n.value||"示例模型"}**(mock 演示)。 + +你刚才问的是: + +> ${e} + +这是一段模拟回复,用于演示对话界面。接入真实模型后,这里会展示模型的真实推理输出。 + +## 说明 +- 当前为前端 mock 环境 +- 回复内容由本地生成 +- 流式打字效果为前端模拟`;for(const S of P)u.content+=S,await M(),D(),u.content.length%3===0&&await new Promise(U=>setTimeout(U,16));u.isStreaming=!1,u.done=!0,await M(),D()}Z(()=>[a.value.displayContent,a.value.thinkContent,a.value.isThinking,a.value.done],async([u,e,P,S])=>{h&&(h.content=u,h.think=e,h.isThinking=P,h.isStreaming=!S,await M(),D())},{flush:"post"});function D(){I.value&&(I.value.scrollTop=I.value.scrollHeight)}function J(){h=null,k.value=[],c()}function de(u){const e=u.target;e.style.height="auto",e.style.height=Math.min(e.scrollHeight,120)+"px"}function ce(){const u=document.querySelector(".input-box");u&&(u.style.height="auto")}return Me(N),(u,e)=>{const P=ct,S=dt,U=be,B=_e,q=Je,me=ye,pe=he,fe=je;return g(),E("div",pt,[l("header",ft,[l("div",vt,[l("div",ht,[l("span",_t,A(n.value||"模型对话"),1),p?(g(),E("span",bt,"mock")):F("",!0)])]),l("button",{class:"header-btn",title:"设置",onClick:e[0]||(e[0]=m=>w.value=!0)},[...e[7]||(e[7]=[l("i",{class:"fa fa-sliders"},null,-1)])])]),l("div",{ref_key:"contentRef",ref:I,class:"chat-body"},[l("div",kt,[k.value.length===0?(g(),E("div",yt,[e[8]||(e[8]=l("div",{class:"empty-logo"},[l("i",{class:"fa fa-cube"})],-1)),e[9]||(e[9]=l("h2",null,"有什么我可以帮你的吗?",-1)),l("p",null,"开始与 "+A(n.value||"模型")+" 对话",1)])):F("",!0),(g(!0),E(Fe,null,He(k.value,(m,ve)=>(g(),E("div",{key:ve,class:K(["msg-row",m.role])},[m.role==="assistant"?(g(),E("div",Ct,[...e[10]||(e[10]=[l("i",{class:"fa fa-robot"},null,-1)])])):F("",!0),l("div",gt,[m.think?(g(),te(S,{key:0,class:"think-collapse"},{default:x(()=>[_(P,{title:"思考过程",name:"think"},{default:x(()=>[l("div",wt,A(m.think),1)]),_:2},1024)]),_:2},1024)):F("",!0),m.role==="user"?(g(),E("div",xt,A(m.content),1)):m.done?(g(),E("div",Tt,[_(We,{content:m.content},null,8,["content"])])):(g(),E("div",Et,[l("span",null,A(m.content||(m.isThinking?"思考中...":"生成中")),1),e[11]||(e[11]=l("span",{class:"typing-cursor"},null,-1))]))])],2))),128))])],512),l("footer",It,[l("div",Vt,[l("button",{class:"clear-btn",title:"清空对话",onClick:J},[...e[12]||(e[12]=[l("i",{class:"fa fa-eraser"},null,-1)])]),l("div",St,[ne(l("textarea",{"onUpdate:modelValue":e[1]||(e[1]=m=>C.value=m),class:"input-box",rows:"1",disabled:s(o),placeholder:"给模型发送消息...",onKeydown:se(ae(j,["exact","prevent"]),["enter"]),onInput:de},null,40,Kt),[[Re,C.value]]),l("button",{class:K(["send-btn",{active:C.value.trim()&&!s(o)}]),disabled:!C.value.trim()||s(o),onClick:j},[...e[13]||(e[13]=[l("i",{class:"fa fa-arrow-up"},null,-1)])],10,Nt)])]),e[14]||(e[14]=l("div",{class:"footer-hint"},"内容由 AI 生成,请仔细甄别。",-1))]),_(fe,{modelValue:w.value,"onUpdate:modelValue":e[6]||(e[6]=m=>w.value=m),title:"对话设置",size:"360px"},{default:x(()=>[_(pe,{"label-position":"top"},{default:x(()=>[_(B,{label:"系统提示词"},{default:x(()=>[_(U,{modelValue:v.value,"onUpdate:modelValue":e[2]||(e[2]=m=>v.value=m),type:"textarea",rows:6,placeholder:"设置模型角色/约束(可选)",resize:"none"},null,8,["modelValue"])]),_:1}),_(B,{label:"Temperature (温度)"},{default:x(()=>[_(q,{modelValue:y.value,"onUpdate:modelValue":e[3]||(e[3]=m=>y.value=m),min:0,max:2,step:.1,"show-input":""},null,8,["modelValue"])]),_:1}),_(B,{label:"Top P (核心采样)"},{default:x(()=>[_(q,{modelValue:$.value,"onUpdate:modelValue":e[4]||(e[4]=m=>$.value=m),min:0,max:1,step:.05,"show-input":""},null,8,["modelValue"])]),_:1}),_(B,{label:"Max Tokens (最大生成长度)"},{default:x(()=>[_(q,{modelValue:V.value,"onUpdate:modelValue":e[5]||(e[5]=m=>V.value=m),min:128,max:8192,step:128,"show-input":""},null,8,["modelValue"])]),_:1}),_(B,null,{default:x(()=>[_(me,{type:"danger",plain:"",onClick:J,style:{width:"100%","margin-top":"20px"}},{default:x(()=>[...e[15]||(e[15]=[l("i",{class:"fa fa-trash-o",style:{"margin-right":"4px"}},null,-1),ee("清空当前对话 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"])])}}}),os=Xe($t,[["__scopeId","data-v-9d0a3d84"]]);export{os as default}; diff --git a/frontend/dist/assets/InferenceChatView-dVyzm1FM.css b/frontend/dist/assets/InferenceChatView-dVyzm1FM.css new file mode 100644 index 0000000..c5664b9 --- /dev/null +++ b/frontend/dist/assets/InferenceChatView-dVyzm1FM.css @@ -0,0 +1 @@ +@charset "UTF-8";.el-collapse{--el-collapse-border-color:var(--el-border-color-lighter);--el-collapse-header-height:48px;--el-collapse-header-bg-color:var(--el-fill-color-blank);--el-collapse-header-text-color:var(--el-text-color-primary);--el-collapse-header-font-size:13px;--el-collapse-content-bg-color:var(--el-fill-color-blank);--el-collapse-content-font-size:13px;--el-collapse-content-text-color:var(--el-text-color-primary);border-top:1px solid var(--el-collapse-border-color);border-bottom:1px solid var(--el-collapse-border-color)}.el-collapse-icon-position-left .el-collapse-item__header{gap:8px}.el-collapse-icon-position-left .el-collapse-item__title{order:1}.el-collapse-icon-position-right .el-collapse-item__header{padding-right:8px}.el-collapse-item.is-disabled .el-collapse-item__header{color:var(--el-text-color-disabled);cursor:not-allowed}.el-collapse-item__header{width:100%;min-height:var(--el-collapse-header-height);line-height:var(--el-collapse-header-height);background-color:var(--el-collapse-header-bg-color);color:var(--el-collapse-header-text-color);cursor:pointer;border:none;border-bottom:1px solid var(--el-collapse-border-color);font-size:var(--el-collapse-header-font-size);transition:border-bottom-color var(--el-transition-duration);box-sizing:border-box;outline:none;align-items:center;padding:0;font-weight:500;display:flex}.el-collapse-item__arrow{transition:transform var(--el-transition-duration);font-weight:300}.el-collapse-item__arrow.is-active{transform:rotate(90deg)}.el-collapse-item__title{text-align:left;flex:auto}.el-collapse-item__header.focusing:focus:not(:hover){color:var(--el-color-primary)}.el-collapse-item__header.is-active{border-bottom-color:#0000}.el-collapse-item__wrap{will-change:height;background-color:var(--el-collapse-content-bg-color);box-sizing:border-box;border-bottom:1px solid var(--el-collapse-border-color);overflow:hidden}.el-collapse-item__content{font-size:var(--el-collapse-content-font-size);color:var(--el-collapse-content-text-color);padding-bottom:25px;line-height:1.76923}.el-collapse-item:last-child{margin-bottom:-1px}.chat-wrap[data-v-9d0a3d84]{height:calc(100vh - 80px);box-sizing:border-box;display:flex;flex-direction:column;background:#fff;border-radius:12px;box-shadow:0 4px 6px -1px #0000000d,0 2px 4px -1px #00000008;overflow:hidden;border:1px solid #f3f4f6}.chat-header[data-v-9d0a3d84]{flex-shrink:0;height:60px;display:flex;align-items:center;justify-content:space-between;padding:0 20px;background:#fff;border-bottom:1px solid #f3f4f6}.chat-header .header-left[data-v-9d0a3d84]{display:flex;align-items:center;gap:12px}.chat-header .header-title[data-v-9d0a3d84]{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:600;color:#111827}.chat-header .header-title .title-text[data-v-9d0a3d84]{max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-header .header-title .mock-badge[data-v-9d0a3d84]{padding:2px 6px;font-size:11px;font-weight:600;color:#b45309;background:#fef3c7;border-radius:4px;text-transform:uppercase}.chat-header .header-btn[data-v-9d0a3d84]{width:36px;height:36px;border:none;background:transparent;border-radius:8px;font-size:18px;color:#6b7280;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.chat-header .header-btn[data-v-9d0a3d84]:hover{background:#f3f4f6;color:#111827}.chat-body[data-v-9d0a3d84]{flex:1;overflow-y:auto;padding:24px 0;scroll-behavior:smooth}.chat-body[data-v-9d0a3d84]::-webkit-scrollbar{width:6px}.chat-body[data-v-9d0a3d84]::-webkit-scrollbar-thumb{background:#e5e7eb;border-radius:3px}.chat-body[data-v-9d0a3d84]::-webkit-scrollbar-track{background:transparent}.chat-body-inner[data-v-9d0a3d84]{max-width:800px;margin:0 auto;padding:0 20px;display:flex;flex-direction:column;gap:32px}.empty-hint[data-v-9d0a3d84]{margin-top:10vh;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#6b7280}.empty-hint .empty-logo[data-v-9d0a3d84]{width:64px;height:64px;border-radius:16px;background:#f3f4f6;display:flex;align-items:center;justify-content:center;margin-bottom:24px}.empty-hint .empty-logo i[data-v-9d0a3d84]{font-size:32px;color:#9ca3af}.empty-hint h2[data-v-9d0a3d84]{font-size:24px;font-weight:600;color:#111827;margin:0 0 8px}.empty-hint p[data-v-9d0a3d84]{margin:0;font-size:15px}.msg-row[data-v-9d0a3d84]{display:flex;gap:16px;align-items:flex-start;width:100%}.msg-row.user[data-v-9d0a3d84]{flex-direction:row-reverse}.msg-row.assistant[data-v-9d0a3d84]{flex-direction:row}.avatar[data-v-9d0a3d84]{flex-shrink:0;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:16px}.avatar.assistant[data-v-9d0a3d84]{background:#111827}.bubble-wrap[data-v-9d0a3d84]{max-width:85%;min-width:0}.bubble[data-v-9d0a3d84]{font-size:15px;line-height:1.6;word-break:break-word;white-space:pre-wrap}.user-bubble[data-v-9d0a3d84]{background:#f3f4f6;color:#111827;padding:12px 20px;border-radius:20px 4px 20px 20px}.ai-bubble[data-v-9d0a3d84]{color:#111827;padding:4px 0}.ai-bubble.markdown[data-v-9d0a3d84]{white-space:normal}.ai-bubble.markdown[data-v-9d0a3d84] .markdown-view p:last-child{margin-bottom:0}.ai-bubble.markdown[data-v-9d0a3d84] pre{border-radius:8px;background:#f9fafb!important;border:1px solid #e5e7eb;margin:12px 0}.ai-bubble.markdown[data-v-9d0a3d84] code{background:#f3f4f6;padding:2px 6px;border-radius:4px;font-size:.9em}.think-collapse[data-v-9d0a3d84]{margin-bottom:12px;max-width:100%;border:1px solid #e5e7eb;border-radius:8px;background:#f9fafb;overflow:hidden}.think-collapse[data-v-9d0a3d84] .el-collapse-item__header{padding:0 16px;font-size:13px;font-weight:500;color:#6b7280;height:36px;background:transparent;border-bottom:none}.think-collapse[data-v-9d0a3d84] .el-collapse-item__wrap{border-bottom:none;background:transparent}.think-collapse .think-content[data-v-9d0a3d84]{padding:12px 16px;font-size:13px;color:#4b5563;line-height:1.6;white-space:pre-wrap;border-top:1px dashed #e5e7eb;margin-top:4px}.streaming .typing-cursor[data-v-9d0a3d84]{display:inline-block;width:4px;height:16px;background:#111827;border-radius:2px;margin-left:4px;vertical-align:middle;animation:blink-9d0a3d84 1s steps(1) infinite}@keyframes blink-9d0a3d84{0%,50%{opacity:1}51%,to{opacity:0}}.chat-input-container[data-v-9d0a3d84]{flex-shrink:0;padding:16px 20px 24px;background:linear-gradient(180deg,#fff0,#fff 20%);display:flex;flex-direction:column;align-items:center}.chat-input-inner[data-v-9d0a3d84]{width:100%;max-width:800px;display:flex;align-items:flex-end;gap:12px}.clear-btn[data-v-9d0a3d84]{flex-shrink:0;width:40px;height:40px;margin-bottom:4px;border:1px solid #e5e7eb;background:#fff;border-radius:50%;font-size:16px;color:#6b7280;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;box-shadow:0 1px 2px #0000000d}.clear-btn[data-v-9d0a3d84]:hover{background:#f9fafb;color:#ef4444;border-color:#fca5a5}.input-wrapper[data-v-9d0a3d84]{flex:1;position:relative;background:#f4f4f5;border-radius:24px;padding:8px 16px;display:flex;align-items:flex-end;transition:all .2s;border:1px solid transparent}.input-wrapper[data-v-9d0a3d84]:focus-within{background:#fff;border-color:#d1d5db;box-shadow:0 4px 6px -1px #0000000d,0 2px 4px -1px #00000008}.input-box[data-v-9d0a3d84]{flex:1;max-height:200px;padding:4px 44px 4px 0;border:none;background:transparent;font-size:15px;line-height:1.5;color:#111827;resize:none;outline:none;font-family:inherit}.input-box[data-v-9d0a3d84]::placeholder{color:#9ca3af}.send-btn[data-v-9d0a3d84]{position:absolute;right:12px;bottom:8px;width:32px;height:32px;border:none;border-radius:50%;background:#e5e7eb;color:#fff;font-size:14px;cursor:not-allowed;display:flex;align-items:center;justify-content:center;transition:all .2s}.send-btn.active[data-v-9d0a3d84]{background:#111827;cursor:pointer}.send-btn.active[data-v-9d0a3d84]:hover{background:#374151;transform:translateY(-1px)}.send-btn.active[data-v-9d0a3d84]:active{transform:translateY(1px)}.footer-hint[data-v-9d0a3d84]{margin-top:12px;font-size:12px;color:#9ca3af} diff --git a/frontend/dist/assets/InferenceCreateView-DrIqOCaE.js b/frontend/dist/assets/InferenceCreateView-DrIqOCaE.js new file mode 100644 index 0000000..25839ba --- /dev/null +++ b/frontend/dist/assets/InferenceCreateView-DrIqOCaE.js @@ -0,0 +1 @@ +import{E as T}from"./el-alert-xVLeNUgJ.js";import{a as A,E as D}from"./el-form-item-D5kF3B90.js";import{E as L}from"./index-TFUf94PZ.js";import{E as j}from"./index-BjEW7-SA.js";import{E as z,b as H,a as J}from"./el-select-Dl-FRZQd.js";import{E as K}from"./el-divider-DjByQoml.js";import{d as Q,G as W,e as u,w as o,at as X,y as i,z as Y,o as s,s as a,x as b,c as v,ad as k,M as w,g as Z,j as p,A as B,v as ee}from"./index-BKKvzUDD.js";import"./el-scrollbar-ClJnvz-9.js";import"./el-popper-D6_hxRbQ.js";/* empty css */import{P as te}from"./PageCard-BoKXOzst.js";import{g as le,a as ae}from"./model-gCK34aBo.js";import"./vnode-78qeDweP.js";import"./castArray-5uErZEc3.js";import"./_baseClone-B5RBzbh5.js";import"./raf-C-x62Pcl.js";import"./index-DLzof2Fz.js";import"./index-GAnQrJsQ.js";import"./index-CWUnzf90.js";import"./index-D5ryD3I5.js";import"./index-BDEF353-.js";import"./scroll-BkzZKETR.js";import"./clamp-CbbY8h6F.js";import"./toNumber-Dkj3QRv9.js";import"./_baseIteratee-BAilevJ_.js";import"./el-card-CApHJ1Gj.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";const Ie=Q({__name:"InferenceCreateView",setup(oe){const E=ee(),f=i(),c=i(!1),m=i(""),V=i([]),h=i([]),_=i([]),x=p(()=>V.value.map(t=>({key:`db-${t.id}`,id:t.id,name:t.name,source:"database",model_path:t.path||""}))),M=p(()=>h.value.map(t=>({key:`trained-${t.id}`,id:t.id,name:t.name,source:"trained",model_path:t.merged_path||t.base_model_path||"",merged:t.merged,merging:t.merging,disabled:t.merged===!1}))),G=p(()=>{const t={};for(const e of[...x.value,...M.value])t[e.key]=e;return t}),n=Y({name:"",description:"",model_key:"",gpu_id:0}),I={name:[{required:!0,message:"请输入推理名称",trigger:"blur"}],model_key:[{required:!0,message:"请选择模型",trigger:"change"}]},O=p(()=>G.value[n.model_key]);async function S(){f.value&&await f.value.validate(async t=>{if(!t)return;const e=O.value;if(!e){B.warning("请选择模型");return}c.value=!0,m.value="正在启动模型服务...";try{await new Promise(r=>setTimeout(r,1200)),B.success("模型已启动"),E.push({path:"/model-inference/chat/mock",query:{model:e.name}})}finally{c.value=!1,m.value=""}})}function $(){E.back()}async function q(){try{const[t,e,r]=await Promise.all([le(),ae(),X()]);V.value=t||[],h.value=(e==null?void 0:e.models)||[],_.value=(r==null?void 0:r.gpu)||[],_.value.length>0&&(n.gpu_id=0)}catch{}}return W(q),(t,e)=>{const r=L,d=A,F=K,g=J,C=H,P=z,N=T,U=j,R=D;return s(),u(te,{title:"新建推理"},{default:o(()=>[a(R,{ref_key:"formRef",ref:f,model:n,rules:I,"label-width":"100px"},{default:o(()=>[a(d,{label:"推理名称",prop:"name"},{default:o(()=>[a(r,{modelValue:n.name,"onUpdate:modelValue":e[0]||(e[0]=l=>n.name=l),placeholder:"请输入推理名称",maxlength:"50","show-word-limit":"",style:{"max-width":"400px"}},null,8,["modelValue"])]),_:1}),a(d,{label:"描述"},{default:o(()=>[a(r,{modelValue:n.description,"onUpdate:modelValue":e[1]||(e[1]=l=>n.description=l),type:"textarea",rows:2,maxlength:"200","show-word-limit":"",style:{"max-width":"400px"}},null,8,["modelValue"])]),_:1}),a(F,{"content-position":"left"},{default:o(()=>[...e[4]||(e[4]=[b("选择模型",-1)])]),_:1}),a(d,{label:"选择模型",prop:"model_key"},{default:o(()=>[a(P,{modelValue:n.model_key,"onUpdate:modelValue":e[2]||(e[2]=l=>n.model_key=l),placeholder:"请选择模型",filterable:"",style:{width:"400px"}},{default:o(()=>[a(C,{label:"本地模型"},{default:o(()=>[(s(!0),v(w,null,k(x.value,l=>(s(),u(g,{key:l.key,label:l.name,value:l.key},null,8,["label","value"]))),128))]),_:1}),a(C,{label:"已训练模型"},{default:o(()=>[(s(!0),v(w,null,k(M.value,l=>(s(),u(g,{key:l.key,label:l.name+(l.disabled?"(未合并)":""),value:l.key,disabled:l.disabled},null,8,["label","value","disabled"]))),128))]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(d,{label:"GPU"},{default:o(()=>[a(P,{modelValue:n.gpu_id,"onUpdate:modelValue":e[3]||(e[3]=l=>n.gpu_id=l),style:{width:"400px"}},{default:o(()=>[(s(!0),v(w,null,k(_.value,(l,y)=>(s(),u(g,{key:y,label:`${l.name} (GPU${y})`,value:y},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),m.value?(s(),u(d,{key:0,label:"启动状态"},{default:o(()=>[a(N,{title:m.value,type:"info",closable:!1,"show-icon":""},null,8,["title"])]),_:1})):Z("",!0),a(d,null,{default:o(()=>[a(U,{type:"primary",loading:c.value,onClick:S},{default:o(()=>[...e[5]||(e[5]=[b("开始推理",-1)])]),_:1},8,["loading"]),a(U,{onClick:$},{default:o(()=>[...e[6]||(e[6]=[b("取消",-1)])]),_:1})]),_:1})]),_:1},8,["model"])]),_:1})}}});export{Ie as default}; diff --git a/frontend/dist/assets/InferenceListView-mZ19jYab.js b/frontend/dist/assets/InferenceListView-mZ19jYab.js new file mode 100644 index 0000000..7d188bb --- /dev/null +++ b/frontend/dist/assets/InferenceListView-mZ19jYab.js @@ -0,0 +1 @@ +import{E as D}from"./index-BjEW7-SA.js";import{E as L}from"./index-BDEF353-.js";import{E as A}from"./el-table-D8K5zLyz.js";import{d as S,G as $,ah as w,e as m,w as i,y as x,o as n,q as c,x as l,c as P,s as o,M as R,aa as f,A as C,v as V}from"./index-BKKvzUDD.js";import{E as J}from"./index-dNo5H1ie.js";/* empty css */import"./el-checkbox-qGZ2-RM2.js";import{D as O}from"./DataTablePage-C-EM-7-s.js";import{u as U}from"./usePolling-C6448AR2.js";import{g as j,l as q,u as F,a as G,s as I,d as H}from"./compare-CZ4TIoIW.js";import"./el-scrollbar-ClJnvz-9.js";import"./index-GAnQrJsQ.js";import"./el-popper-D6_hxRbQ.js";import"./index-CWUnzf90.js";import"./_baseClone-B5RBzbh5.js";import"./_baseIteratee-BAilevJ_.js";import"./castArray-5uErZEc3.js";import"./debounce-ByXPNh5F.js";import"./toNumber-Dkj3QRv9.js";import"./raf-C-x62Pcl.js";import"./validator-Fn0bm4xU.js";import"./index-CQXVR1Ud.js";import"./clamp-CbbY8h6F.js";import"./index-DfyOU94W.js";import"./scroll-BkzZKETR.js";import"./index-TFUf94PZ.js";import"./index-DLzof2Fz.js";import"./omit-BTSq4AYh.js";import"./el-card-CApHJ1Gj.js";import"./el-pagination-DOPYW-qb.js";import"./el-select-Dl-FRZQd.js";import"./vnode-78qeDweP.js";import"./index-D5ryD3I5.js";import"./directive-DsZckUTJ.js";import"./el-tooltip-l0sNRNKZ.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";const K={class:"action-buttons"},Ae=S({__name:"InferenceListView",setup(Q){const E=V(),y=x(!1),h=x([]);let d=null;async function p(t=!1){t||(y.value=!0);try{h.value=await j()||[]}catch{}finally{t||(y.value=!1)}}function g(t){const e=_(t);return e.length>0&&e.some(s=>s.status==="starting")}function v(t){const e=_(t);return e.length===0?t.status==="loaded"||t.status==="ready":e.every(s=>s.status==="ready"||s.status==="running")&&!g(t)}function _(t){if(!t.load_status)return[];try{return(typeof t.load_status=="string"?JSON.parse(t.load_status):t.load_status).loaded_models||[]}catch{return[]}}function z(t){if(!t.models)return[];if(Array.isArray(t.models))return t.models.map(e=>e.model_name||e.name).filter(Boolean);try{const e=JSON.parse(t.models);if(Array.isArray(e))return e.map(s=>s.model_name||s.name).filter(Boolean)}catch{}return[]}async function B(t){await q(t.id),C.info("正在加载模型,请稍候..."),d&&clearTimeout(d),d=setTimeout(p,1e3)}async function T(t){await J.confirm("确定要停止模型服务吗?","确认停止",{type:"warning"}),await F(t.id),C.success("已停止模型服务"),p()}async function b(t){const e=await G(t.id).catch(()=>null);if(e!=null&&e.load_status){const s=_(e);for(const r of s)r.pid&&await I(r.pid).catch(()=>{})}await H(t.id),C.success("删除成功")}function M(t){E.push(`/model-inference/chat/${t.id}`)}const{start:N}=U(()=>p(!0),3e3,{immediate:!1});return $(async()=>{await p(),N()}),w(()=>{d&&clearTimeout(d)}),(t,e)=>{const s=A,r=L,u=D;return n(),m(O,{title:"模型推理",data:h.value,loading:y.value,searchable:"","search-fields":["name","model_name","description"],"create-text":"新建推理","create-to":"/model-inference/create","delete-fn":b,"row-key":"id",onRefresh:p},{columns:i(()=>[o(s,{label:"推理名称",align:"center"},{default:i(({row:a})=>[l(f(a.model_name||a.name||"-"),1)]),_:1}),o(s,{label:"描述",align:"center","show-overflow-tooltip":""},{default:i(({row:a})=>[l(f(a.description||"-"),1)]),_:1}),o(s,{label:"状态",align:"center",width:"120"},{default:i(({row:a})=>[g(a)?(n(),m(r,{key:0,type:"warning",size:"small"},{default:i(()=>[...e[0]||(e[0]=[l("启动中",-1)])]),_:1})):v(a)?(n(),m(r,{key:1,type:"success",size:"small"},{default:i(()=>[...e[1]||(e[1]=[l("已就绪",-1)])]),_:1})):(n(),m(r,{key:2,type:"info",size:"small"},{default:i(()=>[l(f(a.status||"未启动"),1)]),_:2},1024))]),_:1}),o(s,{label:"相关模型",align:"center","show-overflow-tooltip":""},{default:i(({row:a})=>[l(f(z(a).join(",")||"-"),1)]),_:1}),o(s,{label:"创建时间",align:"center",width:"180"},{default:i(({row:a})=>[l(f(a.create_time?new Date(a.create_time).toLocaleString("zh-CN"):"-"),1)]),_:1})]),actions:i(({row:a})=>[c("div",K,[g(a)?(n(),m(u,{key:0,type:"warning",link:"",size:"small",loading:!0,disabled:""},{default:i(()=>[...e[2]||(e[2]=[l(" 加载中 ",-1)])]),_:1})):v(a)?(n(),P(R,{key:1},[o(u,{type:"success",link:"",size:"small",onClick:k=>M(a)},{default:i(()=>[...e[3]||(e[3]=[c("i",{class:"fa fa-comments-o",style:{"margin-right":"4px"}},null,-1),l("对话 ",-1)])]),_:1},8,["onClick"]),o(u,{type:"warning",link:"",size:"small",onClick:k=>T(a)},{default:i(()=>[...e[4]||(e[4]=[c("i",{class:"fa fa-stop-circle-o",style:{"margin-right":"4px"}},null,-1),l("停止 ",-1)])]),_:1},8,["onClick"])],64)):(n(),m(u,{key:2,type:"primary",link:"",size:"small",onClick:k=>B(a)},{default:i(()=>[...e[5]||(e[5]=[c("i",{class:"fa fa-play-circle-o",style:{"margin-right":"4px"}},null,-1),l("加载 ",-1)])]),_:1},8,["onClick"])),o(u,{type:"danger",link:"",size:"small",onClick:k=>b(a)},{default:i(()=>[...e[6]||(e[6]=[c("i",{class:"fa fa-trash-o",style:{"margin-right":"4px"}},null,-1),l("删除 ",-1)])]),_:1},8,["onClick"])])]),_:1},8,["data","loading"])}}});export{Ae as default}; diff --git a/frontend/dist/assets/LoginView-BkI86ygw.js b/frontend/dist/assets/LoginView-BkI86ygw.js new file mode 100644 index 0000000..acc3d62 --- /dev/null +++ b/frontend/dist/assets/LoginView-BkI86ygw.js @@ -0,0 +1 @@ +import{E as $,a as q}from"./el-form-item-D5kF3B90.js";import{E as z}from"./index-TFUf94PZ.js";import{u as K,E as P}from"./index-BjEW7-SA.js";import{E as R}from"./el-checkbox-qGZ2-RM2.js";import{b as T,i as U,d as N,u as A,a as D,o as u,c as k,e as h,w as t,r as M,f as w,E as j,g,n as E,h as V,j as b,k as C,l as G,m as H,p as J,q as n,s,t as O,v as Q,x as y,y as B,z as W,A as X}from"./index-BKKvzUDD.js";import{_ as S}from"./logo-CxXS7KxG.js";import{_ as Y}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./castArray-5uErZEc3.js";import"./_baseClone-B5RBzbh5.js";import"./raf-C-x62Pcl.js";import"./index-DLzof2Fz.js";import"./index-GAnQrJsQ.js";import"./omit-BTSq4AYh.js";const Z=T({type:{type:String,values:["primary","success","warning","info","danger","default"],default:void 0},underline:{type:[Boolean,String],values:[!0,!1,"always","never","hover"],default:void 0},disabled:Boolean,href:{type:String,default:""},target:{type:String,default:"_self"},icon:{type:U}}),ee={click:l=>l instanceof MouseEvent},ae=["href","target"];var ne=N({name:"ElLink",__name:"link",props:Z,emits:ee,setup(l,{emit:m}){const o=l,i=m,r=A("link");K({scope:"el-link",from:"The underline option (boolean)",replacement:"'always' | 'hover' | 'never'",version:"3.0.0",ref:"https://element-plus.org/en-US/component/link.html#underline"},b(()=>C(o.underline)));const a=D("link"),c=b(()=>{var e;return[a.b(),a.m(o.type??((e=r.value)==null?void 0:e.type)??"default"),a.is("disabled",o.disabled),a.is("underline",d.value==="always"),a.is("hover-underline",d.value==="hover"&&!o.disabled)]}),d=b(()=>{var e;return C(o.underline)?o.underline?"hover":"never":o.underline??((e=r.value)==null?void 0:e.underline)??"hover"});function p(e){o.disabled||i("click",e)}return(e,f)=>(u(),k("a",{class:E(c.value),href:l.disabled||!l.href?void 0:l.href,target:l.disabled||!l.href?void 0:l.target,onClick:p},[l.icon?(u(),h(w(j),{key:0},{default:t(()=>[(u(),h(M(l.icon)))]),_:1})):g("v-if",!0),e.$slots.default?(u(),k("span",{key:1,class:E(w(a).e("inner"))},[V(e.$slots,"default")],2)):g("v-if",!0),e.$slots.icon?V(e.$slots,"icon",{key:2}):g("v-if",!0)],10,ae))}}),le=ne;const oe=G(le),se={class:"login-page"},te={class:"login-panel"},re={class:"login-form-wrap"},ie={class:"login-options"},de=N({__name:"LoginView",setup(l){const m=Q(),o=H(),i=B(),r=B(!1),a=W({username:"",password:""}),c={username:[{required:!0,message:"请输入账号",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"}]};async function d(){i.value&&await i.value.validate(async p=>{if(p){r.value=!0;try{await o.login(a.username,a.password),X.success("登录成功"),m.push("/dashboard")}catch{}finally{r.value=!1}}})}return(p,e)=>{const f=z,_=q,x=R,F=oe,I=P,L=$;return u(),k("div",se,[e[8]||(e[8]=J('',1)),n("main",te,[e[6]||(e[6]=n("div",{class:"brand-lockup",role:"img","aria-label":"远光软件"},[n("span",{class:"brand-logo-crop brand-logo-crop-mark","aria-hidden":"true"},[n("img",{src:S,alt:""})]),n("span",{class:"brand-logo-crop brand-logo-crop-wordmark","aria-hidden":"true"},[n("img",{src:S,alt:""})])],-1)),n("div",re,[e[5]||(e[5]=n("div",{class:"login-heading"},[n("span",null,"账号登录"),n("h2",null,"欢迎回来"),n("p",null,"登录后继续使用微调平台")],-1)),s(L,{ref_key:"loginFormRef",ref:i,model:a,rules:c,"label-position":"top",size:"large",onKeyup:O(d,["enter"])},{default:t(()=>[s(_,{label:"账号",prop:"username"},{default:t(()=>[s(f,{modelValue:a.username,"onUpdate:modelValue":e[0]||(e[0]=v=>a.username=v),placeholder:"请输入账号",clearable:""},null,8,["modelValue"])]),_:1}),s(_,{label:"密码",prop:"password"},{default:t(()=>[s(f,{modelValue:a.password,"onUpdate:modelValue":e[1]||(e[1]=v=>a.password=v),type:"password",placeholder:"请输入密码","show-password":""},null,8,["modelValue"])]),_:1}),n("div",ie,[s(x,null,{default:t(()=>[...e[2]||(e[2]=[y("记住密码",-1)])]),_:1}),s(F,{type:"primary",underline:!1},{default:t(()=>[...e[3]||(e[3]=[y("忘记密码?",-1)])]),_:1})]),s(I,{type:"primary",class:"login-btn",loading:r.value,onClick:d},{default:t(()=>[...e[4]||(e[4]=[y(" 登录 ",-1)])]),_:1},8,["loading"])]),_:1},8,["model"])]),e[7]||(e[7]=n("footer",null,"© 2026 远光软件",-1))])])}}}),Ee=Y(de,[["__scopeId","data-v-713185bd"]]);export{Ee as default}; diff --git a/frontend/dist/assets/LoginView-BnSabjr1.css b/frontend/dist/assets/LoginView-BnSabjr1.css new file mode 100644 index 0000000..f5ac23a --- /dev/null +++ b/frontend/dist/assets/LoginView-BnSabjr1.css @@ -0,0 +1 @@ +.el-link{--el-link-font-size:var(--el-font-size-base);--el-link-font-weight:var(--el-font-weight-primary);--el-link-text-color:var(--el-text-color-regular);--el-link-hover-text-color:var(--el-color-primary);--el-link-disabled-text-color:var(--el-text-color-placeholder);vertical-align:middle;cursor:pointer;font-size:var(--el-link-font-size);font-weight:var(--el-link-font-weight);color:var(--el-link-text-color);outline:none;flex-direction:row;justify-content:center;align-items:center;padding:0;text-decoration:none;display:inline-flex;position:relative}.el-link.is-hover-underline:hover:after{content:"";border-bottom:1px solid var(--el-link-hover-text-color);height:0;position:absolute;bottom:0;left:0;right:0}.el-link.is-underline:after{content:"";border-bottom:1px solid var(--el-link-text-color);height:0;position:absolute;bottom:0;left:0;right:0}.el-link:hover{color:var(--el-link-hover-text-color)}.el-link:hover:after{border-color:var(--el-link-hover-text-color)}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link__inner{justify-content:center;align-items:center;display:inline-flex}.el-link.el-link--primary{--el-link-text-color:var(--el-color-primary);--el-link-hover-text-color:var(--el-color-primary-light-3);--el-link-disabled-text-color:var(--el-color-primary-light-5)}.el-link.el-link--success{--el-link-text-color:var(--el-color-success);--el-link-hover-text-color:var(--el-color-success-light-3);--el-link-disabled-text-color:var(--el-color-success-light-5)}.el-link.el-link--warning{--el-link-text-color:var(--el-color-warning);--el-link-hover-text-color:var(--el-color-warning-light-3);--el-link-disabled-text-color:var(--el-color-warning-light-5)}.el-link.el-link--danger{--el-link-text-color:var(--el-color-danger);--el-link-hover-text-color:var(--el-color-danger-light-3);--el-link-disabled-text-color:var(--el-color-danger-light-5)}.el-link.el-link--error{--el-link-text-color:var(--el-color-error);--el-link-hover-text-color:var(--el-color-error-light-3);--el-link-disabled-text-color:var(--el-color-error-light-5)}.el-link.el-link--info{--el-link-text-color:var(--el-color-info);--el-link-hover-text-color:var(--el-color-info-light-3);--el-link-disabled-text-color:var(--el-color-info-light-5)}.el-link.is-disabled{color:var(--el-link-disabled-text-color);cursor:not-allowed}.el-link.is-disabled:after{border-color:var(--el-link-disabled-text-color)}.login-page[data-v-713185bd]{height:100vh;height:100dvh;display:grid;grid-template-columns:minmax(0,58fr) minmax(500px,42fr);overflow:hidden;background:#fcfcfe}.login-visual[data-v-713185bd]{min-height:0;height:100%;position:relative;color:#fff;background-color:#121127;background-image:url(/assets/login-hero-flow-cfjqVyxM.jpg);background-size:cover;background-position:center;overflow:hidden}.login-visual[data-v-713185bd]:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,rgba(12,12,35,.2),transparent 36%,rgba(12,12,35,.2));pointer-events:none}.login-visual-content[data-v-713185bd]{min-height:0;height:100%;position:relative;z-index:1;display:flex;flex-direction:column;padding:clamp(80px,10vh,132px) clamp(56px,6vw,112px) clamp(56px,7vh,84px)}.login-visual-copy[data-v-713185bd]{max-width:680px;margin-top:clamp(80px,11vh,136px)}.login-visual-copy h1[data-v-713185bd]{margin:0;font-size:clamp(38px,3.8vw,62px);line-height:1.2;letter-spacing:-.035em;font-weight:700;text-wrap:balance}.login-visual-copy p[data-v-713185bd]{margin:22px 0 0;color:#e2e8f0c2;font-size:clamp(17px,1.5vw,24px);line-height:1.6;letter-spacing:.01em}.login-visual-footer[data-v-713185bd]{width:min(100%,640px);margin-top:auto;display:grid;grid-template-columns:1fr auto 1fr auto 1fr;align-items:center;gap:24px;color:#e2e8f0b8;font-size:16px;letter-spacing:.04em}.login-visual-footer span[data-v-713185bd]:nth-child(3),.login-visual-footer span[data-v-713185bd]:nth-child(5){text-align:center}.login-visual-footer span[data-v-713185bd]:nth-child(2n){color:#c7d2fecc}.login-panel[data-v-713185bd]{min-height:0;height:100%;position:relative;display:grid;place-items:center;padding:120px clamp(48px,5vw,88px) 96px;border-left:1px solid #e8eaf1;background:#fcfcfe}.brand-lockup[data-v-713185bd]{position:absolute;top:42px;right:clamp(36px,4vw,64px);display:flex;align-items:center;gap:9px}.brand-logo-crop[data-v-713185bd]{position:relative;display:block;overflow:hidden}.brand-logo-crop img[data-v-713185bd]{position:absolute;left:0;width:100%;max-width:none}.brand-logo-crop-mark[data-v-713185bd]{width:40px;height:38px}.brand-logo-crop-mark img[data-v-713185bd]{top:0}.brand-logo-crop-wordmark[data-v-713185bd]{width:96px;height:25px}.brand-logo-crop-wordmark img[data-v-713185bd]{bottom:0}.login-form-wrap[data-v-713185bd]{width:min(100%,480px)}.login-heading[data-v-713185bd]{margin-bottom:42px}.login-heading>span[data-v-713185bd]{display:block;margin-bottom:24px;color:#4f46e5;font-size:16px;line-height:1;font-weight:600}.login-heading h2[data-v-713185bd]{margin:0;color:#17182c;font-size:clamp(38px,3vw,48px);line-height:1.15;letter-spacing:-.035em;font-weight:700}.login-heading p[data-v-713185bd]{margin:14px 0 0;color:#8a93a6;font-size:16px;line-height:1.6}[data-v-713185bd] .el-form-item{margin-bottom:26px}[data-v-713185bd] .el-form-item__label{height:auto;margin-bottom:10px;padding:0;color:#272a3a;font-size:15px;line-height:1.4;font-weight:600}[data-v-713185bd] .el-input__wrapper{min-height:54px;padding:0 18px;border-radius:8px;background:#fff;box-shadow:0 0 0 1px #cfd4df inset;transition:box-shadow .16s ease,background-color .16s ease}[data-v-713185bd] .el-input__wrapper:hover{box-shadow:0 0 0 1px #aeb6c6 inset}[data-v-713185bd] .el-input__wrapper.is-focus{box-shadow:0 0 0 1px #4f46e5 inset,0 0 0 3px #4f46e51f}[data-v-713185bd] .el-input__inner{font-size:15px;color:#1e293b}[data-v-713185bd] .el-input__inner::placeholder{color:#a4acba}.login-options[data-v-713185bd]{display:flex;align-items:center;justify-content:space-between;margin:-2px 0 30px}.login-options[data-v-713185bd] .el-checkbox__label{color:#556070;font-size:14px}.login-options[data-v-713185bd] .el-link{font-weight:500;color:#4f46e5}.login-options[data-v-713185bd] .el-link:hover{color:#4338ca}.login-btn[data-v-713185bd]{width:100%;height:54px;font-size:16px;font-weight:600;border-radius:8px;border:none;background:linear-gradient(135deg,#4f46e5,#6366f1);color:#fff;box-shadow:0 10px 22px #4f46e52e;transition:transform .16s ease,box-shadow .16s ease,background .16s ease}.login-btn[data-v-713185bd]:hover{transform:translateY(-1px);box-shadow:0 14px 26px #4f46e53d;background:linear-gradient(135deg,#4338ca,#4f46e5)}.login-btn[data-v-713185bd]:active{transform:translateY(0);box-shadow:0 6px 14px #4f46e533}.login-panel footer[data-v-713185bd]{position:absolute;right:clamp(36px,4vw,64px);bottom:34px;color:#9aa2b2;font-size:13px}@media(max-width:1440px){.login-page[data-v-713185bd]{grid-template-columns:minmax(0,55fr) minmax(500px,45fr)}.login-visual-content[data-v-713185bd]{padding-inline:clamp(52px,5vw,72px)}.login-visual-copy[data-v-713185bd]{max-width:580px}.login-visual-copy h1[data-v-713185bd]{font-size:clamp(42px,3.6vw,52px)}.login-visual-copy p[data-v-713185bd]{font-size:clamp(16px,1.45vw,20px)}.login-panel[data-v-713185bd]{padding-inline:clamp(44px,4.2vw,64px)}.login-form-wrap[data-v-713185bd]{max-width:440px}}@media(max-width:1180px){.login-page[data-v-713185bd]{grid-template-columns:minmax(0,52fr) minmax(470px,48fr)}.login-visual-content[data-v-713185bd]{padding-inline:48px}.login-visual-copy h1[data-v-713185bd]{font-size:42px}.login-visual-footer[data-v-713185bd]{gap:14px;font-size:14px}}@media(max-height:820px)and (min-width:901px){.login-visual[data-v-713185bd]{background-position:center 54%}.login-visual-content[data-v-713185bd]{padding-top:48px;padding-bottom:38px}.login-visual-copy[data-v-713185bd]{max-width:560px;margin-top:clamp(52px,9vh,72px)}.login-visual-copy h1[data-v-713185bd]{font-size:clamp(38px,3.4vw,46px)}.login-visual-copy p[data-v-713185bd]{margin-top:14px;font-size:clamp(15px,1.35vw,18px)}.login-visual-footer[data-v-713185bd]{gap:14px;font-size:14px}.login-panel[data-v-713185bd]{padding-top:78px;padding-bottom:56px}.brand-lockup[data-v-713185bd]{top:24px}.login-heading[data-v-713185bd]{margin-bottom:26px}.login-heading>span[data-v-713185bd]{margin-bottom:16px;font-size:15px}.login-heading h2[data-v-713185bd]{font-size:38px}.login-heading p[data-v-713185bd]{margin-top:8px;font-size:15px}[data-v-713185bd] .el-form-item{margin-bottom:18px}[data-v-713185bd] .el-form-item__label{margin-bottom:7px;font-size:14px}[data-v-713185bd] .el-input__wrapper{min-height:48px}.login-options[data-v-713185bd]{margin-bottom:20px}.login-btn[data-v-713185bd]{height:50px}.login-panel footer[data-v-713185bd]{bottom:18px}}@media(max-width:900px){.login-page[data-v-713185bd]{display:block;height:auto;min-height:100vh;min-height:100dvh;overflow:auto}.login-visual[data-v-713185bd]{display:none}.login-panel[data-v-713185bd]{height:auto;min-height:100vh;min-height:100dvh;padding:116px 32px 84px;border-left:0}.login-panel footer[data-v-713185bd]{right:50%;transform:translate(50%);white-space:nowrap}}@media(max-width:560px){.login-panel[data-v-713185bd]{display:flex;align-items:center;padding:100px 24px 72px}.brand-lockup[data-v-713185bd]{top:28px;right:24px;transform:scale(.88);transform-origin:top right}.login-heading[data-v-713185bd]{margin-bottom:32px}.login-heading>span[data-v-713185bd]{margin-bottom:18px}.login-heading h2[data-v-713185bd]{font-size:36px}[data-v-713185bd] .el-form-item{margin-bottom:22px}.login-options[data-v-713185bd]{margin-bottom:26px}} diff --git a/frontend/dist/assets/LogsView-Bt-ZCtJy.js b/frontend/dist/assets/LogsView-Bt-ZCtJy.js new file mode 100644 index 0000000..48c1cee --- /dev/null +++ b/frontend/dist/assets/LogsView-Bt-ZCtJy.js @@ -0,0 +1,3 @@ +import{u as rn,E as la}from"./index-TFUf94PZ.js";import{b as Bt,d as on,c as Ya,e as un,E as Ma}from"./index-BjEW7-SA.js";import{E as dn,a as cn}from"./el-select-Dl-FRZQd.js";import{a6 as Ce,bM as Lt,bN as ae,bO as Pt,b as De,R as de,bP as fn,aR as vn,bQ as mn,aW as Ee,j as E,y as Z,bb as Wt,d as Re,z as ft,a as Oe,o as $,c as q,h as he,q as H,Y as ba,f as e,al as rt,n as S,bR as vt,B as $e,bS as pn,aU as Ta,D as Se,bT as hn,H as Ut,e as ve,w as le,aL as Je,E as be,r as xa,g as se,aa as me,V as mt,W as Pe,P as Ye,a2 as bn,bU as yn,bV as gn,F as ya,bW as St,bL as kn,G as Kt,M as ge,ad as Ve,x as Xe,K as Ie,s as W,aZ as wn,S as Cn,ak as Pn,Z as Sn,U as jt,bX as sa,J as Dn,t as Ze,$ as qa,bl as pt,a9 as je,L as Qe,bo as fa,bs as ot,T as Ea,bq as va,bd as it,N as Ht,aV as Mn,an as zt,l as qt,ah as Vn}from"./index-BKKvzUDD.js";import{U as Va,C as Ga,r as $n}from"./raf-C-x62Pcl.js";import{u as Gt}from"./index-DLzof2Fz.js";import{a as _n,u as Dt,E as On,c as Ne,e as Pa}from"./el-popper-D6_hxRbQ.js";import{u as Yn,f as Rn}from"./index-GAnQrJsQ.js";import{C as ut}from"./index-D5ryD3I5.js";import{E as In}from"./el-scrollbar-ClJnvz-9.js";import{v as Mt}from"./index-BENk7lZo.js";import{d as Tn}from"./debounce-ByXPNh5F.js";import{o as xn}from"./omit-BTSq4AYh.js";import{E as Fn,a as Nn}from"./el-tab-pane-DliV6btA.js";/* empty css */import{P as En}from"./PageCard-BoKXOzst.js";import{u as An}from"./usePolling-C6448AR2.js";import{g as Bn,a as Ln,b as Wn,c as Un}from"./log-C_tWKzjC.js";import{_ as Kn}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./index-CWUnzf90.js";import"./castArray-5uErZEc3.js";import"./vnode-78qeDweP.js";import"./index-BDEF353-.js";import"./scroll-BkzZKETR.js";import"./clamp-CbbY8h6F.js";import"./toNumber-Dkj3QRv9.js";import"./_baseIteratee-BAilevJ_.js";import"./_baseClone-B5RBzbh5.js";import"./el-card-CApHJ1Gj.js";const jn=["year","years","month","months","date","dates","week","datetime","datetimerange","daterange","monthrange","yearrange"];const Vt=["hours","minutes","seconds"],ea="EP_PICKER_BASE",Zt="ElPopperOptions",Jt=Symbol("commonPickerContextKey"),$t="HH:mm:ss",Sa="YYYY-MM-DD",Hn={date:Sa,dates:Sa,week:"gggg[w]ww",year:"YYYY",years:"YYYY",month:"YYYY-MM",months:"YYYY-MM",datetime:`${Sa} ${$t}`,monthrange:"YYYY-MM",yearrange:"YYYY",daterange:Sa,datetimerange:`${Sa} ${$t}`},nt=(t,i)=>[t>0?t-1:void 0,t,tArray.from(Array.from({length:t}).keys()),Xt=t=>t.replace(/\W?m{1,2}|\W?ZZ/g,"").replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi,"").trim(),en=t=>t.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?Y{2,4}/g,"").trim(),_t=function(t,i){const l=Pt(t),a=Pt(i);return l&&a?t.getTime()===i.getTime():!l&&!a?t===i:!1},an=function(t,i){const l=Ce(t),a=Ce(i);return l&&a?t.length!==i.length?!1:t.every((n,p)=>_t(n,i[p])):!l&&!a?_t(t,i):!1},Ot=function(t,i,l){const a=Lt(i)||i==="x"?ae(t).locale(l):ae(t,i).locale(l);return a.isValid()?a:void 0},Yt=function(t,i,l){return Lt(i)?t:i==="x"?+t:ae(t).locale(l).format(i)},lt=(t,i)=>{const l=[],a=i==null?void 0:i();for(let n=0;nCe(t)?t.map(i=>i.toDate()):t.toDate(),ht=De({disabledHours:{type:de(Function)},disabledMinutes:{type:de(Function)},disabledSeconds:{type:de(Function)}}),zn=De({visible:Boolean,actualVisible:{type:Boolean,default:void 0},format:{type:String,default:""}}),tn=De({automaticDropdown:{type:Boolean,default:!0},id:{type:de([Array,String])},name:{type:de([Array,String])},popperClass:Dt.popperClass,popperStyle:Dt.popperStyle,format:String,valueFormat:String,dateFormat:String,timeFormat:String,type:{type:String,default:""},clearable:{type:Boolean,default:!0},clearIcon:{type:de([String,Object]),default:mn},editable:{type:Boolean,default:!0},saveOnBlur:{type:Boolean,default:!0},prefixIcon:{type:de([String,Object]),default:""},size:vn,readonly:Boolean,disabled:{type:Boolean,default:void 0},placeholder:{type:String,default:""},popperOptions:{type:de(Object),default:()=>({})},modelValue:{type:de([Date,Array,String,Number]),default:""},rangeSeparator:{type:String,default:"-"},startPlaceholder:String,endPlaceholder:String,defaultValue:{type:de([Date,Array])},defaultTime:{type:de([Date,Array])},isRange:Boolean,...ht,disabledDate:{type:Function},cellClassName:{type:Function},shortcuts:{type:Array,default:()=>[]},arrowControl:Boolean,tabindex:{type:de([String,Number]),default:0},validateEvent:{type:Boolean,default:!0},unlinkPanels:Boolean,singlePanel:Boolean,placement:{type:de(String),values:_n,default:"bottom"},fallbackPlacements:{type:de(Array),default:["bottom","top","right","left"]},...fn,...Yn(["ariaLabel"]),showNow:{type:Boolean,default:!0},showConfirm:{type:Boolean,default:!0},showFooter:{type:Boolean,default:!0},showWeekNumber:Boolean}),qn=De({id:{type:de(Array)},name:{type:de(Array)},modelValue:{type:de([Array,String])},startPlaceholder:String,endPlaceholder:String,disabled:Boolean}),nn=(t,i)=>{const{lang:l}=Ee(),a=Z(!1),n=Z(!1),p=Z(null),r=E(()=>{const{modelValue:o}=t;return!o||Ce(o)&&!o.filter(Boolean).length}),g=o=>{if(!an(t.modelValue,o)){let M;Ce(o)?M=o.map(d=>Yt(d,t.valueFormat,l.value)):o&&(M=Yt(o,t.valueFormat,l.value)),i(Va,o&&M,l.value)}},_=E(()=>{let o;if(r.value?C.value.getDefaultValue&&(o=C.value.getDefaultValue()):Ce(t.modelValue)?o=t.modelValue.map(M=>Ot(M,t.valueFormat,l.value)):o=Ot(t.modelValue??"",t.valueFormat,l.value),C.value.getRangeAvailableTime){const M=C.value.getRangeAvailableTime(o);Wt(M,o)||(o=M,r.value||g(Aa(o)))}return Ce(o)&&o.some(M=>!M)&&(o=[]),o}),C=Z({});return{parsedValue:_,pickerActualVisible:n,pickerOptions:C,pickerVisible:a,userInput:p,valueIsEmpty:r,emitInput:g,onCalendarChange:o=>{i("calendar-change",o)},onPanelChange:(o,M,d)=>{i("panel-change",o,M,d)},onPick:(o="",M=!1)=>{a.value=M;let d;Ce(o)?d=o.map(m=>m.toDate()):d=o&&o.toDate(),p.value=null,g(d)},onSetPickerOption:o=>{C.value[o[0]]=o[1],C.value.panelReady=!0}}},Gn=["id","name","placeholder","value","disabled"],Zn=["id","name","placeholder","value","disabled"];var Jn=Re({name:"PickerRangeTrigger",inheritAttrs:!1,__name:"picker-range-trigger",props:qn,emits:["mouseenter","mouseleave","click","touchstart","focus","blur","startInput","endInput","startChange","endChange"],setup(t,{expose:i,emit:l}){const a=t,n=l,{formItem:p}=Bt(),{inputId:r}=on(ft({id:E(()=>{var c;return(c=a.id)==null?void 0:c[0]})}),{formItemContext:p}),g=rn(),_=Oe("date"),C=Oe("range"),P=Z(),D=Z(),{wrapperRef:F,isFocused:R}=Gt(P,{disabled:E(()=>a.disabled)}),o=c=>{n("click",c)},M=c=>{n("mouseenter",c)},d=c=>{n("mouseleave",c)},m=c=>{n("touchstart",c)},L=c=>{n("startInput",c)},b=c=>{n("endInput",c)},k=c=>{n("startChange",c)},u=c=>{n("endChange",c)};return i({focus:()=>{var c;(c=P.value)==null||c.focus()},blur:()=>{var c,O;(c=P.value)==null||c.blur(),(O=D.value)==null||O.blur()}}),(c,O)=>($(),q("div",{ref_key:"wrapperRef",ref:F,class:S([e(_).is("active",e(R)),c.$attrs.class]),style:rt(c.$attrs.style),onClick:o,onMouseenter:M,onMouseleave:d,onTouchstartPassive:m},[he(c.$slots,"prefix"),H("input",ba(e(g),{id:e(r),ref_key:"inputRef",ref:P,name:c.name&&c.name[0],placeholder:c.startPlaceholder,value:c.modelValue&&c.modelValue[0],class:e(C).b("input"),disabled:c.disabled,onInput:L,onChange:k}),null,16,Gn),he(c.$slots,"range-separator"),H("input",ba(e(g),{id:c.id&&c.id[1],ref_key:"endInputRef",ref:D,name:c.name&&c.name[1],placeholder:c.endPlaceholder,value:c.modelValue&&c.modelValue[1],class:e(C).b("input"),disabled:c.disabled,onInput:b,onChange:u}),null,16,Zn),he(c.$slots,"suffix")],38))}}),Qn=Jn,Xn=Re({name:"Picker",__name:"picker",props:tn,emits:[Va,Ga,"focus","blur","clear","calendar-change","panel-change","visible-change","keydown"],setup(t,{expose:i,emit:l}){const a=t,n=l,p=vt(),r=Oe("date"),g=Oe("input"),_=Oe("range"),{formItem:C}=Bt(),P=$e(Zt,{}),D=pn(a,null),F=Z(),R=Z(),o=Z(null);let M=!1;const d=Ya(),m=nn(a,n),{parsedValue:L,pickerActualVisible:b,userInput:k,pickerVisible:u,pickerOptions:h,valueIsEmpty:I,emitInput:c,onPick:O,onSetPickerOption:V,onCalendarChange:T,onPanelChange:B}=m,{isFocused:J,handleFocus:z,handleBlur:te}=Gt(R,{disabled:d,beforeFocus(){return a.readonly},afterFocus(){a.automaticDropdown&&(u.value=!0)},beforeBlur(s){var N;return!M&&((N=F.value)==null?void 0:N.isFocusInsideContent(s))},afterBlur(){var s,N;ye.value&&!a.saveOnBlur?I.value||(N=(s=h.value).handleCancel)==null||N.call(s):ua(),u.value=!1,M=!1,a.validateEvent&&(C==null||C.validate("blur").catch(Ta))}}),ne=Z(!1),ce=E(()=>[r.b("editor"),r.bm("editor",a.type),g.e("wrapper"),r.is("disabled",d.value),r.is("active",u.value),_.b("editor"),ra?_.bm("editor",ra.value):"",p.class]),U=E(()=>[g.e("icon"),_.e("close-icon"),Be.value?"":_.em("close-icon","hidden")]);Se(u,s=>{s?Ye(()=>{s&&(o.value=a.modelValue)}):(k.value=null,Ye(()=>{f(a.modelValue)}))});const f=(s,N)=>{(N||!an(s,o.value))&&(n(Ga,s),N&&(o.value=s),a.validateEvent&&(C==null||C.validate("change").catch(Ta)))},G=s=>{n("keydown",s)},v=E(()=>R.value?Array.from(R.value.$el.querySelectorAll("input")):[]),Y=(s,N,oe)=>{const we=v.value;we.length&&(!oe||oe==="min"?(we[0].setSelectionRange(s,N),we[0].focus()):oe==="max"&&(we[1].setSelectionRange(s,N),we[1].focus()))},w=()=>{b.value=!0},A=()=>{n("visible-change",!0)},Q=()=>{b.value=!1,u.value=!1,n("visible-change",!1)},ie=()=>{u.value=!0},ee=()=>{u.value=!1},re=E(()=>{const s=Ge(L.value);return Ce(k.value)?[k.value[0]??(s&&s[0])??"",k.value[1]??(s&&s[1])??""]:k.value!==null?k.value:ye.value&&I.value&&!a.saveOnBlur||!ye.value&&I.value||!u.value&&I.value?"":s?Ae.value||He.value||ze.value?s.join(", "):s:""}),ue=E(()=>a.type.includes("time")),ye=E(()=>a.type.startsWith("time")),Ae=E(()=>a.type==="dates"),He=E(()=>a.type==="months"),ze=E(()=>a.type==="years"),Te=E(()=>a.prefixIcon||(ue.value?yn:gn)),Be=E(()=>a.clearable&&!d.value&&!a.readonly&&!I.value&&(ne.value||J.value)),Me=s=>{a.readonly||d.value||(Be.value&&(s==null||s.stopPropagation(),h.value.handleClear?h.value.handleClear():c(D.valueOnClear.value),f(D.valueOnClear.value,!0),Q()),n("clear"))},_e=async s=>{var N;a.readonly||d.value||(((N=s.target)==null?void 0:N.tagName)!=="INPUT"||J.value||!a.automaticDropdown)&&(u.value=!0)},Ue=()=>{a.readonly||d.value||!I.value&&a.clearable&&(ne.value=!0)},qe=()=>{ne.value=!1},Le=s=>{var N;a.readonly||d.value||(((N=s.touches[0].target)==null?void 0:N.tagName)!=="INPUT"||J.value||!a.automaticDropdown)&&(u.value=!0)},wa=E(()=>a.type.includes("range")),ra=un(),oa=E(()=>{var s,N;return(N=(s=e(F))==null?void 0:s.popperRef)==null?void 0:N.contentRef}),ia=hn(R,s=>{const N=e(oa),oe=bn(R);N&&(s.target===N||s.composedPath().includes(N))||s.target===oe||oe&&s.composedPath().includes(oe)||(u.value=!1)});Ut(()=>{ia==null||ia()});const ua=()=>{if(ye.value&&!a.saveOnBlur)return;const s=Ce(k.value)&&k.value.every(N=>N==="");if(k.value&&!s){const N=aa(re.value);N&&(Ke(N)&&c(Aa(N)),k.value=null)}(k.value===""||s)&&(c(D.valueOnClear.value),f(D.valueOnClear.value,!0),k.value=null)},aa=s=>s?h.value.parseUserInput(s):null,Ge=s=>s?Ce(s)?s.map(N=>N.format(a.format)):s.format(a.format):null,Ke=s=>h.value.isValidValue(s),fe=async s=>{if(a.readonly||d.value)return;const N=mt(s);if(G(s),N===Pe.esc){u.value===!0&&(u.value=!1,s.preventDefault(),s.stopPropagation());return}if(N===Pe.down&&(h.value.handleFocusPicker&&(s.preventDefault(),s.stopPropagation()),u.value===!1&&(u.value=!0,await Ye()),h.value.handleFocusPicker)){h.value.handleFocusPicker();return}if(N===Pe.tab){M=!0;return}if(N===Pe.enter||N===Pe.numpadEnter){u.value?(k.value===null||k.value===""||Ke(aa(re.value)))&&(ua(),u.value=!1):u.value=!0,s.preventDefault(),s.stopPropagation();return}if(k.value){s.stopPropagation();return}h.value.handleKeydownInput&&h.value.handleKeydownInput(s)},ta=s=>{k.value=s,u.value||(u.value=!0)},na=s=>{const N=s.target;k.value?k.value=[N.value,k.value[1]]:k.value=[N.value,null]},ma=s=>{const N=s.target;k.value?k.value=[k.value[0],N.value]:k.value=[null,N.value]},da=()=>{var we;const s=k.value,N=aa(s&&s[0]),oe=e(L);if(N&&N.isValid()){k.value=[Ge(N),((we=re.value)==null?void 0:we[1])||null];const Fe=[N,oe&&(oe[1]||null)];Ke(Fe)&&(c(Aa(Fe)),k.value=null)}},xe=()=>{var we;const s=e(k),N=aa(s&&s[1]),oe=e(L);if(N&&N.isValid()){k.value=[((we=e(re))==null?void 0:we[0])||null,Ge(N)];const Fe=[oe&&oe[0],N];Ke(Fe)&&(c(Aa(Fe)),k.value=null)}},y=()=>{var s;(s=R.value)==null||s.focus()},j=()=>{var s;(s=R.value)==null||s.blur()};return ya(ea,{props:a,emptyValues:D}),ya(Jt,m),i({focus:y,blur:j,handleOpen:ie,handleClose:ee,onPick:O}),(s,N)=>($(),ve(e(On),ba({ref_key:"refPopper",ref:F,visible:e(u),effect:"light",pure:"",trigger:"click"},s.$attrs,{role:"dialog",teleported:"",transition:`${e(r).namespace.value}-zoom-in-top`,"popper-class":[`${e(r).namespace.value}-picker__popper`,s.popperClass],"popper-style":s.popperStyle,"popper-options":e(P),"fallback-placements":s.fallbackPlacements,"gpu-acceleration":!1,placement:s.placement,"stop-popper-mouse-event":!1,"hide-after":0,persistent:"",onBeforeShow:w,onShow:A,onHide:Q}),{default:le(()=>[wa.value?($(),ve(Qn,{key:1,id:s.id,ref_key:"inputRef",ref:R,"model-value":re.value,name:s.name,disabled:e(d),readonly:!s.editable||s.readonly,"start-placeholder":s.startPlaceholder,"end-placeholder":s.endPlaceholder,class:S(ce.value),style:rt(s.$attrs.style),"aria-label":s.ariaLabel,tabindex:s.tabindex,autocomplete:"off",role:"combobox",onClick:_e,onFocus:e(z),onBlur:e(te),onStartInput:na,onStartChange:da,onEndInput:ma,onEndChange:xe,onMousedown:_e,onMouseenter:Ue,onMouseleave:qe,onTouchstartPassive:Le,onKeydown:fe},{prefix:le(()=>[Te.value?($(),ve(e(be),{key:0,class:S([e(g).e("icon"),e(_).e("icon")])},{default:le(()=>[($(),ve(xa(Te.value)))]),_:1},8,["class"])):se("v-if",!0)]),"range-separator":le(()=>[he(s.$slots,"range-separator",{},()=>[H("span",{class:S(e(_).b("separator"))},me(s.rangeSeparator),3)])]),suffix:le(()=>[s.clearIcon?($(),ve(e(be),{key:0,class:S(U.value),onMousedown:Je(e(Ta),["prevent"]),onClick:Me},{default:le(()=>[($(),ve(xa(s.clearIcon)))]),_:1},8,["class","onMousedown"])):se("v-if",!0)]),_:3},8,["id","model-value","name","disabled","readonly","start-placeholder","end-placeholder","class","style","aria-label","tabindex","onFocus","onBlur"])):($(),ve(e(la),{key:0,id:s.id,ref_key:"inputRef",ref:R,"container-role":"combobox","model-value":re.value,name:s.name,size:e(ra),disabled:e(d),placeholder:s.placeholder,class:S([e(r).b("editor"),e(r).bm("editor",s.type),e(r).is("focus",e(u)),s.$attrs.class]),style:rt(s.$attrs.style),readonly:!s.editable||s.readonly||Ae.value||He.value||ze.value||s.type==="week","aria-label":s.ariaLabel,tabindex:s.tabindex,"validate-event":!1,onInput:ta,onFocus:e(z),onBlur:e(te),onKeydown:fe,onChange:ua,onMousedown:_e,onMouseenter:Ue,onMouseleave:qe,onTouchstartPassive:Le,onClick:N[0]||(N[0]=Je(()=>{},["stop"]))},{prefix:le(()=>[Te.value?($(),ve(e(be),{key:0,class:S(e(g).e("icon")),onMousedown:Je(_e,["prevent"]),onTouchstartPassive:Le},{default:le(()=>[($(),ve(xa(Te.value)))]),_:1},8,["class"])):se("v-if",!0)]),suffix:le(()=>[Be.value&&s.clearIcon?($(),ve(e(be),{key:0,class:S(`${e(g).e("icon")} clear-icon`),onMousedown:Je(e(Ta),["prevent"]),onClick:Me},{default:le(()=>[($(),ve(xa(s.clearIcon)))]),_:1},8,["class","onMousedown"])):se("v-if",!0)]),_:1},8,["id","model-value","name","size","disabled","placeholder","class","style","readonly","aria-label","tabindex","onFocus","onBlur"]))]),content:le(()=>[he(s.$slots,"default",{visible:e(u),actualVisible:e(b),parsedValue:e(L),format:s.format,dateFormat:s.dateFormat,timeFormat:s.timeFormat,unlinkPanels:s.unlinkPanels,type:s.type,defaultValue:s.defaultValue,showNow:s.showNow,showConfirm:s.showConfirm,showFooter:s.showFooter,showWeekNumber:s.showWeekNumber,singlePanel:s.singlePanel,onPick:N[1]||(N[1]=(...oe)=>e(O)&&e(O)(...oe)),onSelectRange:Y,onSetPickerOption:N[2]||(N[2]=(...oe)=>e(V)&&e(V)(...oe)),onCalendarChange:N[3]||(N[3]=(...oe)=>e(T)&&e(T)(...oe)),onClear:Me,onPanelChange:N[4]||(N[4]=(...oe)=>e(B)&&e(B)(...oe)),onMousedown:N[5]||(N[5]=Je(()=>{},["stop"]))})]),_:3},16,["visible","transition","popper-class","popper-style","popper-options","fallback-placements","placement"]))}}),el=Xn;const al=De({...zn,datetimeRole:String,parsedValue:{type:de(Object)}}),tl=({getAvailableHours:t,getAvailableMinutes:i,getAvailableSeconds:l})=>{const a=(r,g,_,C)=>{const P={hour:t,minute:i,second:l};let D=r;return["hour","minute","second"].forEach(F=>{if(P[F]){let R;const o=P[F];switch(F){case"minute":R=o(D.hour(),g,C);break;case"second":R=o(D.hour(),D.minute(),g,C);break;default:R=o(g,C);break}if(R!=null&&R.length&&!R.includes(D[F]())){const M=_?0:R.length-1;D=D[F](R[M])}}}),D},n={};return{timePickerOptions:n,getAvailableTime:a,onSetOption:([r,g])=>{n[r]=g}}},st=t=>{const i=(a,n)=>a||n,l=a=>a!==!0;return t.map(i).filter(l)},ln=(t,i,l)=>({getHoursList:(r,g)=>lt(24,t&&(()=>t==null?void 0:t(r,g))),getMinutesList:(r,g,_)=>lt(60,i&&(()=>i==null?void 0:i(r,g,_))),getSecondsList:(r,g,_,C)=>lt(60,l&&(()=>l==null?void 0:l(r,g,_,C)))}),nl=(t,i,l)=>{const{getHoursList:a,getMinutesList:n,getSecondsList:p}=ln(t,i,l);return{getAvailableHours:(C,P)=>st(a(C,P)),getAvailableMinutes:(C,P,D)=>st(n(C,P,D)),getAvailableSeconds:(C,P,D,F)=>st(p(C,P,D,F))}},ll=(t,i)=>{const l=Z(t.parsedValue);return Se(()=>t.visible,a=>{const n=St(i.modelValue),p=St(i.valueOnClear);if(a&&n===p){l.value=p;return}a||(l.value=t.parsedValue)}),l},sl=De({role:{type:String,required:!0},spinnerDate:{type:de(Object),required:!0},showSeconds:{type:Boolean,default:!0},arrowControl:Boolean,amPmMode:{type:de(String),default:""},...ht}),rl=["onClick"],ol=["onMouseenter"];var il=Re({__name:"basic-time-spinner",props:sl,emits:[Ga,"select-range","set-option"],setup(t,{emit:i}){const l=t,{isRange:a,format:n,saveOnBlur:p}=$e(ea).props,r=i,g=Oe("time"),{getHoursList:_,getMinutesList:C,getSecondsList:P}=ln(l.disabledHours,l.disabledMinutes,l.disabledSeconds);let D=!1;const F={hours:!1,minutes:!1,seconds:!1},R=Z(),o={hours:Z(),minutes:Z(),seconds:Z()},M=E(()=>l.showSeconds?Vt:Vt.slice(0,2)),d=E(()=>{const{spinnerDate:v}=l;return{hours:v.hour(),minutes:v.minute(),seconds:v.second()}}),m=E(()=>{const{hours:v,minutes:Y}=e(d),{role:w,spinnerDate:A}=l,Q=a?void 0:A;return{hours:_(w,Q),minutes:C(v,w,Q),seconds:P(v,Y,w,Q)}}),L=E(()=>{const{hours:v,minutes:Y,seconds:w}=e(d);return{hours:nt(v,23),minutes:nt(Y,59),seconds:nt(w,59)}}),b=Tn(v=>{D=!1,h(v)},200),k=v=>{if(!l.amPmMode)return"";const Y=l.amPmMode==="A";let w=v<12?" am":" pm";return Y&&(w=w.toUpperCase()),w},u=v=>{let Y=[0,0];const w=n||"HH:mm:ss",A=w.indexOf("HH"),Q=w.indexOf("mm"),ie=w.indexOf("ss");switch(v){case"hours":A!==-1&&(Y=[A,A+2]);break;case"minutes":Q!==-1&&(Y=[Q,Q+2]);break;case"seconds":ie!==-1&&(Y=[ie,ie+2]);break}const[ee,re]=Y;r("select-range",ee,re),R.value=v},h=v=>{O(v,e(d)[v])},I=()=>{h("hours"),h("minutes"),h("seconds")},c=v=>v.querySelector(`.${g.namespace.value}-scrollbar__wrap`),O=(v,Y)=>{if(l.arrowControl)return;const w=e(o[v]);w&&w.$el&&(p||(F[v]=!0,$n(()=>{F[v]=!1})),c(w.$el).scrollTop=Math.max(0,Y*V(v)))},V=v=>{var w;const Y=(w=e(o[v]))==null?void 0:w.$el.querySelector("li");return Y&&Number.parseFloat(kn(Y,"height"))||0},T=()=>{J(1)},B=()=>{J(-1)},J=v=>{R.value||u("hours");const Y=R.value,w=e(d)[Y],A=z(Y,w,v,R.value==="hours"?24:60);te(Y,A),O(Y,A),Ye(()=>u(Y))},z=(v,Y,w,A)=>{let Q=(Y+w+A)%A;const ie=e(m)[v];for(;ie[Q]&&Q!==Y;)Q=(Q+w+A)%A;return Q},te=(v,Y)=>{if(e(m)[v][Y])return;const{hours:w,minutes:A,seconds:Q}=e(d);let ie;switch(v){case"hours":ie=l.spinnerDate.hour(Y).minute(A).second(Q);break;case"minutes":ie=l.spinnerDate.hour(w).minute(Y).second(Q);break;case"seconds":ie=l.spinnerDate.hour(w).minute(A).second(Y);break}r(Ga,ie)},ne=(v,{value:Y,disabled:w})=>{w||(te(v,Y),u(v),O(v,Y))},ce=v=>{if(!p&&F[v])return;const Y=e(o[v]);Y&&(D=!0,b(v),te(v,Math.min(Math.round((c(Y.$el).scrollTop-(U(v)*.5-10)/V(v)+3)/V(v)),v==="hours"?23:59)))},U=v=>e(o[v]).$el.offsetHeight,f=()=>{const v=Y=>{const w=e(o[Y]);w&&w.$el&&(c(w.$el).onscroll=()=>{ce(Y)})};v("hours"),v("minutes"),v("seconds")};Kt(()=>{Ye(()=>{!l.arrowControl&&f(),I(),l.role==="start"&&u("hours")})});const G=(v,Y)=>{o[Y].value=v??void 0};return r("set-option",[`${l.role}_scrollDown`,J]),r("set-option",[`${l.role}_emitSelectRange`,u]),Se(()=>l.spinnerDate,()=>{D||I()}),(v,Y)=>($(),q("div",{class:S([e(g).b("spinner"),{"has-seconds":v.showSeconds}])},[v.arrowControl?se("v-if",!0):($(!0),q(ge,{key:0},Ve(M.value,w=>($(),ve(e(In),{key:w,ref_for:!0,ref:A=>G(A,w),class:S(e(g).be("spinner","wrapper")),"wrap-style":"max-height: inherit;","view-class":e(g).be("spinner","list"),noresize:"",tag:"ul",onMouseenter:A=>u(w),onMousemove:A=>h(w)},{default:le(()=>[($(!0),q(ge,null,Ve(m.value[w],(A,Q)=>($(),q("li",{key:Q,class:S([e(g).be("spinner","item"),e(g).is("active",Q===d.value[w]),e(g).is("disabled",A)]),onClick:ie=>ne(w,{value:Q,disabled:A})},[w==="hours"?($(),q(ge,{key:0},[Xe(me(("0"+(v.amPmMode?Q%12||12:Q)).slice(-2))+me(k(Q)),1)],64)):($(),q(ge,{key:1},[Xe(me(("0"+Q).slice(-2)),1)],64))],10,rl))),128))]),_:2},1032,["class","view-class","onMouseenter","onMousemove"]))),128)),v.arrowControl?($(!0),q(ge,{key:1},Ve(M.value,w=>($(),q("div",{key:w,class:S([e(g).be("spinner","wrapper"),e(g).is("arrow")]),onMouseenter:A=>u(w)},[Ie(($(),ve(e(be),{class:S(["arrow-up",e(g).be("spinner","arrow")])},{default:le(()=>[W(e(wn))]),_:1},8,["class"])),[[e(Mt),B]]),Ie(($(),ve(e(be),{class:S(["arrow-down",e(g).be("spinner","arrow")])},{default:le(()=>[W(e(Cn))]),_:1},8,["class"])),[[e(Mt),T]]),H("ul",{class:S(e(g).be("spinner","list"))},[($(!0),q(ge,null,Ve(L.value[w],(A,Q)=>($(),q("li",{key:Q,class:S([e(g).be("spinner","item"),e(g).is("active",A===d.value[w]),e(g).is("disabled",m.value[w][A])])},[e(Pn)(A)?($(),q(ge,{key:0},[w==="hours"?($(),q(ge,{key:0},[Xe(me(("0"+(v.amPmMode?A%12||12:A)).slice(-2))+me(k(A)),1)],64)):($(),q(ge,{key:1},[Xe(me(("0"+A).slice(-2)),1)],64))],64)):se("v-if",!0)],2))),128))],2)],42,ol))),128)):se("v-if",!0)],2))}}),ul=il,dl=Re({__name:"panel-time-pick",props:al,emits:["pick","select-range","set-picker-option"],setup(t,{emit:i}){const l=t,a=i,n=$e(ea),{arrowControl:p,disabledHours:r,disabledMinutes:g,disabledSeconds:_,defaultValue:C}=n.props,{getAvailableHours:P,getAvailableMinutes:D,getAvailableSeconds:F}=nl(r,g,_),R=Oe("time"),{t:o,lang:M}=Ee(),d=Z([0,2]),m=ll(l,{modelValue:E(()=>n.props.modelValue),valueOnClear:E(()=>n!=null&&n.emptyValues?n.emptyValues.valueOnClear.value:null)}),L=E(()=>jt(l.actualVisible)?`${R.namespace.value}-zoom-in-top`:""),b=E(()=>l.format.includes("ss")),k=E(()=>l.format.includes("A")?"A":l.format.includes("a")?"a":""),u=U=>{const f=ae(U).locale(M.value),G=te(f);return f.isSame(G)},h=()=>{const U=m.value;a("pick",U,!1),Ye(()=>{m.value=U})},I=(U=!1,f=!1)=>{f||a("pick",l.parsedValue,U)},c=U=>{l.visible&&a("pick",te(U).millisecond(0),!0)},O=(U,f)=>{a("select-range",U,f),d.value=[U,f]},V=U=>{const f=l.format,G=f.indexOf("HH"),v=f.indexOf("mm"),Y=f.indexOf("ss"),w=[],A=[];G!==-1&&(w.push(G),A.push("hours")),v!==-1&&(w.push(v),A.push("minutes")),Y!==-1&&b.value&&(w.push(Y),A.push("seconds"));const Q=(w.indexOf(d.value[0])+U+w.length)%w.length;B.start_emitSelectRange(A[Q])},T=U=>{const f=mt(U),{left:G,right:v,up:Y,down:w}=Pe;if([G,v].includes(f)){V(f===G?-1:1),U.preventDefault();return}if([Y,w].includes(f)){const A=f===Y?-1:1;B.start_scrollDown(A),U.preventDefault();return}},{timePickerOptions:B,onSetOption:J,getAvailableTime:z}=tl({getAvailableHours:P,getAvailableMinutes:D,getAvailableSeconds:F}),te=U=>z(U,l.datetimeRole||"",!0),ne=U=>U?ae(U,l.format).locale(M.value):null,ce=()=>ae(C).locale(M.value);return a("set-picker-option",["isValidValue",u]),a("set-picker-option",["parseUserInput",ne]),a("set-picker-option",["handleKeydownInput",T]),a("set-picker-option",["getRangeAvailableTime",te]),a("set-picker-option",["getDefaultValue",ce]),a("set-picker-option",["handleCancel",h]),(U,f)=>($(),ve(Sn,{name:L.value},{default:le(()=>[U.actualVisible||U.visible?($(),q("div",{key:0,class:S(e(R).b("panel"))},[H("div",{class:S([e(R).be("panel","content"),{"has-seconds":b.value}])},[W(ul,{ref:"spinner",role:U.datetimeRole||"start","arrow-control":e(p),"show-seconds":b.value,"am-pm-mode":k.value,"spinner-date":U.parsedValue,"disabled-hours":e(r),"disabled-minutes":e(g),"disabled-seconds":e(_),onChange:c,onSetOption:e(J),onSelectRange:O},null,8,["role","arrow-control","show-seconds","am-pm-mode","spinner-date","disabled-hours","disabled-minutes","disabled-seconds","onSetOption"])],2),H("div",{class:S(e(R).be("panel","footer"))},[H("button",{type:"button",class:S([e(R).be("panel","btn"),"cancel"]),onClick:h},me(e(o)("el.datepicker.cancel")),3),H("button",{type:"button",class:S([e(R).be("panel","btn"),"confirm"]),onClick:f[0]||(f[0]=G=>I())},me(e(o)("el.datepicker.confirm")),3)],2)],2)):se("v-if",!0)]),_:1},8,["name"]))}}),dt=dl,Ba={exports:{}},cl=Ba.exports,Rt;function fl(){return Rt||(Rt=1,(function(t,i){(function(l,a){t.exports=a()})(cl,(function(){var l={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},a=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\d/,p=/\d\d/,r=/\d\d?/,g=/\d*[^-_:/,()\s\d]+/,_={},C=function(d){return(d=+d)+(d>68?1900:2e3)},P=function(d){return function(m){this[d]=+m}},D=[/[+-]\d\d:?(\d\d)?|Z/,function(d){(this.zone||(this.zone={})).offset=(function(m){if(!m||m==="Z")return 0;var L=m.match(/([+-]|\d\d)/g),b=60*L[1]+(+L[2]||0);return b===0?0:L[0]==="+"?-b:b})(d)}],F=function(d){var m=_[d];return m&&(m.indexOf?m:m.s.concat(m.f))},R=function(d,m){var L,b=_.meridiem;if(b){for(var k=1;k<=24;k+=1)if(d.indexOf(b(k,0,m))>-1){L=k>12;break}}else L=d===(m?"pm":"PM");return L},o={A:[g,function(d){this.afternoon=R(d,!1)}],a:[g,function(d){this.afternoon=R(d,!0)}],Q:[n,function(d){this.month=3*(d-1)+1}],S:[n,function(d){this.milliseconds=100*+d}],SS:[p,function(d){this.milliseconds=10*+d}],SSS:[/\d{3}/,function(d){this.milliseconds=+d}],s:[r,P("seconds")],ss:[r,P("seconds")],m:[r,P("minutes")],mm:[r,P("minutes")],H:[r,P("hours")],h:[r,P("hours")],HH:[r,P("hours")],hh:[r,P("hours")],D:[r,P("day")],DD:[p,P("day")],Do:[g,function(d){var m=_.ordinal,L=d.match(/\d+/);if(this.day=L[0],m)for(var b=1;b<=31;b+=1)m(b).replace(/\[|\]/g,"")===d&&(this.day=b)}],w:[r,P("week")],ww:[p,P("week")],M:[r,P("month")],MM:[p,P("month")],MMM:[g,function(d){var m=F("months"),L=(F("monthsShort")||m.map((function(b){return b.slice(0,3)}))).indexOf(d)+1;if(L<1)throw new Error;this.month=L%12||L}],MMMM:[g,function(d){var m=F("months").indexOf(d)+1;if(m<1)throw new Error;this.month=m%12||m}],Y:[/[+-]?\d+/,P("year")],YY:[p,function(d){this.year=C(d)}],YYYY:[/\d{4}/,P("year")],Z:D,ZZ:D};function M(d){var m,L;m=d,L=_&&_.formats;for(var b=(d=m.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(V,T,B){var J=B&&B.toUpperCase();return T||L[B]||l[B]||L[J].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(z,te,ne){return te||ne.slice(1)}))}))).match(a),k=b.length,u=0;u-1)return new Date((U==="X"?1e3:1)*ce);var v=M(U)(ce),Y=v.year,w=v.month,A=v.day,Q=v.hours,ie=v.minutes,ee=v.seconds,re=v.milliseconds,ue=v.zone,ye=v.week,Ae=new Date,He=A||(Y||w?1:Ae.getDate()),ze=Y||Ae.getFullYear(),Te=0;Y&&!w||(Te=w>0?w-1:Ae.getMonth());var Be,Me=Q||0,_e=ie||0,Ue=ee||0,qe=re||0;return ue?new Date(Date.UTC(ze,Te,He,Me,_e,Ue,qe+60*ue.offset*1e3)):f?new Date(Date.UTC(ze,Te,He,Me,_e,Ue,qe)):(Be=new Date(ze,Te,He,Me,_e,Ue,qe),ye&&(Be=G(Be).week(ye).toDate()),Be)}catch{return new Date("")}})(h,O,I,L),this.init(),J&&J!==!0&&(this.$L=this.locale(J).$L),B&&h!=this.format(O)&&(this.$d=new Date("")),_={}}else if(O instanceof Array)for(var z=O.length,te=1;te<=z;te+=1){c[1]=O[te-1];var ne=L.apply(this,c);if(ne.isValid()){this.$d=ne.$d,this.$L=ne.$L,this.init();break}te===z&&(this.$d=new Date(""))}else k.call(this,u)}}}))})(Ba)),Ba.exports}var vl=fl();const ml=sa(vl);var La={exports:{}},pl=La.exports,It;function hl(){return It||(It=1,(function(t,i){(function(l,a){t.exports=a()})(pl,(function(){return function(l,a,n){var p=a.prototype,r=function(D){return D&&(D.indexOf?D:D.s)},g=function(D,F,R,o,M){var d=D.name?D:D.$locale(),m=r(d[F]),L=r(d[R]),b=m||L.map((function(u){return u.slice(0,o)}));if(!M)return b;var k=d.weekStart;return b.map((function(u,h){return b[(h+(k||0))%7]}))},_=function(){return n.Ls[n.locale()]},C=function(D,F){return D.formats[F]||(function(R){return R.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(o,M,d){return M||d.slice(1)}))})(D.formats[F.toUpperCase()])},P=function(){var D=this;return{months:function(F){return F?F.format("MMMM"):g(D,"months")},monthsShort:function(F){return F?F.format("MMM"):g(D,"monthsShort","months",3)},firstDayOfWeek:function(){return D.$locale().weekStart||0},weekdays:function(F){return F?F.format("dddd"):g(D,"weekdays")},weekdaysMin:function(F){return F?F.format("dd"):g(D,"weekdaysMin","weekdays",2)},weekdaysShort:function(F){return F?F.format("ddd"):g(D,"weekdaysShort","weekdays",3)},longDateFormat:function(F){return C(D.$locale(),F)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};p.localeData=function(){return P.bind(this)()},n.localeData=function(){var D=_();return{firstDayOfWeek:function(){return D.weekStart||0},weekdays:function(){return n.weekdays()},weekdaysShort:function(){return n.weekdaysShort()},weekdaysMin:function(){return n.weekdaysMin()},months:function(){return n.months()},monthsShort:function(){return n.monthsShort()},longDateFormat:function(F){return C(D,F)},meridiem:D.meridiem,ordinal:D.ordinal}},n.months=function(){return g(_(),"months")},n.monthsShort=function(){return g(_(),"monthsShort","months",3)},n.weekdays=function(D){return g(_(),"weekdays",null,null,D)},n.weekdaysShort=function(D){return g(_(),"weekdaysShort","weekdays",3,D)},n.weekdaysMin=function(D){return g(_(),"weekdaysMin","weekdays",2,D)}}}))})(La)),La.exports}var bl=hl();const yl=sa(bl),gl=De({valueFormat:String,dateFormat:String,timeFormat:String,disabled:{type:Boolean,default:void 0},modelValue:{type:de([Date,Array,String,Number]),default:""},defaultValue:{type:de([Date,Array])},defaultTime:{type:de([Date,Array])},isRange:Boolean,...ht,disabledDate:{type:Function},cellClassName:{type:Function},shortcuts:{type:Array,default:()=>[]},arrowControl:Boolean,unlinkPanels:Boolean,showNow:{type:Boolean,default:!0},showConfirm:Boolean,showFooter:Boolean,showWeekNumber:Boolean,type:{type:de(String),default:"date"},clearable:{type:Boolean,default:!0},border:{type:Boolean,default:!0},editable:{type:Boolean,default:!0}}),bt=Symbol("rootPickerContextKey"),Ra="ElIsDefaultFormat",kl=["date","dates","year","years","month","months","week","range"],yt=De({cellClassName:{type:de(Function)},disabledDate:{type:de(Function)},date:{type:de(Object),required:!0},minDate:{type:de(Object)},maxDate:{type:de(Object)},parsedValue:{type:de([Object,Array])},rangeState:{type:de(Object),default:()=>({endDate:null,selecting:!1})},disabled:Boolean}),sn=De({type:{type:de(String),required:!0,values:jn},dateFormat:String,timeFormat:String,showNow:{type:Boolean,default:!0},showConfirm:Boolean,showFooter:{type:Boolean,default:!0},showWeekNumber:Boolean,border:Boolean,disabled:Boolean,editable:{type:Boolean,default:!0}}),gt=De({unlinkPanels:Boolean,visible:{type:Boolean,default:!0},showConfirm:Boolean,showFooter:{type:Boolean,default:!0},border:Boolean,disabled:Boolean,parsedValue:{type:de(Array)},singlePanel:Boolean}),kt=t=>({type:String,values:kl,default:t}),wl=De({...sn,parsedValue:{type:de([Object,Array])},visible:{type:Boolean,default:!0},format:{type:String,default:""}}),$a=t=>{if(!Ce(t))return!1;const[i,l]=t;return ae.isDayjs(i)&&ae.isDayjs(l)&&ae(i).isValid()&&ae(l).isValid()&&i.isSameOrBefore(l)},Xa=(t,{lang:i,step:l=1,unit:a,unlinkPanels:n})=>{let p;if(Ce(t)){let[r,g]=t.map(_=>ae(_).locale(i));return n||(g=r.add(l,a)),[r,g]}else t?p=ae(t):p=ae();return p=p.locale(i),[p,p.add(l,a)]},Cl=(t,i,{columnIndexOffset:l,startDate:a,nextEndDate:n,now:p,unit:r,relativeDateGetter:g,setCellMetadata:_,setRowMetadata:C})=>{for(let P=0;P{const n=ae().locale(a).startOf("month").month(l).year(i).hour(t.hour()).minute(t.minute()).second(t.second());return Qt(n.daysInMonth()).map(p=>n.add(p,"day").toDate())},ga=(t,i,l,a,n)=>{const p=ae().year(i).month(l).startOf("month").hour(t.hour()).minute(t.minute()).second(t.second()),r=Za(t,i,l,a).find(g=>!(n!=null&&n(g)));return r?ae(r).locale(a):p.locale(a)},Ja=(t,i,l)=>{const a=t.year();if(!(l!=null&&l(t.toDate())))return t.locale(i);const n=t.month();if(!Za(t,a,n,i).every(l))return ga(t,a,n,i,l);for(let p=0;p<12;p++)if(!Za(t,a,p,i).every(l))return ga(t,a,p,i,l);return t},ka=(t,i,l,a)=>{if(Ce(t))return t.map(n=>ka(n,i,l,a));if(Dn(t)){const n=a!=null&&a.value?ae(t):ae(t,i);if(!n.isValid())return n}return ae(t,i).locale(l)},Pl=De({...yt,showWeekNumber:Boolean,selectionMode:kt("date")}),Sl=["changerange","pick","select"],Qa=(t="")=>["normal","today"].includes(t),Dl=(t,i)=>{const{lang:l}=Ee(),a=Z(),n=Z(),p=Z(),r=Z(),g=Z([[],[],[],[],[],[]]);let _=!1;const C=t.date.$locale().weekStart||7,P=t.date.locale("en").localeData().weekdaysShort().map(f=>f.toLowerCase()),D=E(()=>C>3?7-C:-C),F=E(()=>{const f=t.date.startOf("month");return f.subtract(f.day()||7,"day")}),R=E(()=>P.concat(P).slice(C,C+7)),o=E(()=>Rn(e(k)).some(f=>f.isCurrent)),M=E(()=>{const f=t.date.startOf("month");return{startOfMonthDay:f.day()||7,dateCountOfMonth:f.daysInMonth(),dateCountOfLastMonth:f.subtract(1,"month").daysInMonth()}}),d=E(()=>t.selectionMode==="dates"?Ne(t.parsedValue):[]),m=(f,{count:G,rowIndex:v,columnIndex:Y})=>{const{startOfMonthDay:w,dateCountOfMonth:A,dateCountOfLastMonth:Q}=e(M),ie=e(D);if(v>=0&&v<=1){const ee=w+ie<0?7+w+ie:w+ie;if(Y+v*7>=ee)return f.text=G,!0;f.text=Q-(ee-Y%7)+1+v*7,f.type="prev-month"}else return G<=A?f.text=G:(f.text=G-A,f.type="next-month"),!0;return!1},L=(f,{columnIndex:G,rowIndex:v},Y)=>{const{disabledDate:w,cellClassName:A}=t,Q=e(d),ie=m(f,{count:Y,rowIndex:v,columnIndex:G}),ee=f.dayjs.toDate();return f.selected=Q.find(re=>re.isSame(f.dayjs,"day")),f.isSelected=!!f.selected,f.isCurrent=h(f),f.disabled=w==null?void 0:w(ee),f.customClass=A==null?void 0:A(ee),ie},b=f=>{if(t.selectionMode==="week"){const[G,v]=t.showWeekNumber?[1,7]:[0,6],Y=U(f[G+1]);f[G].inRange=Y,f[G].start=Y,f[v].inRange=Y,f[v].end=Y}},k=E(()=>{const{minDate:f,maxDate:G,rangeState:v,showWeekNumber:Y}=t,w=e(D),A=e(g),Q="day";let ie=1;if(Cl({row:6,column:7},A,{startDate:f,columnIndexOffset:Y?1:0,nextEndDate:v.endDate||G||v.selecting&&f||null,now:ae().locale(e(l)).startOf(Q),unit:Q,relativeDateGetter:ee=>e(F).add(ee-w,Q),setCellMetadata:(...ee)=>{L(...ee,ie)&&(ie+=1)},setRowMetadata:b}),Y)for(let ee=0;ee<6;ee++)A[ee][1].dayjs&&(A[ee][0]={type:"week",text:A[ee][1].dayjs.week()});return A});Se(()=>t.date,async()=>{var f;(f=e(a))!=null&&f.contains(document.activeElement)&&(await Ye(),await u())});const u=async()=>{var f;return(f=e(n))==null?void 0:f.focus()},h=f=>t.selectionMode==="date"&&Qa(f.type)&&I(f,t.parsedValue),I=(f,G)=>G?ae(G).locale(e(l)).isSame(t.date.date(Number(f.text)),"day"):!1,c=(f,G)=>{const v=e(M).startOfMonthDay,Y=e(D),w=v+Y<0?7+v+Y:v+Y,A=f*7+(G-(t.showWeekNumber?1:0));return t.date.startOf("month").subtract(w,"day").add(A,"day")},O=f=>{var w;if(!t.rangeState.selecting)return;let G=f.target;if(G.tagName==="SPAN"&&(G=(w=G.parentNode)==null?void 0:w.parentNode),G.tagName==="DIV"&&(G=G.parentNode),G.tagName!=="TD")return;const v=G.parentNode.rowIndex-1,Y=G.cellIndex;e(k)[v][Y].disabled||(v!==e(p)||Y!==e(r))&&(p.value=v,r.value=Y,i("changerange",{selecting:!0,endDate:c(v,Y)}))},V=f=>!e(o)&&(f==null?void 0:f.text)===1&&Qa(f.type)||f.isCurrent,T=f=>{_||e(o)||t.selectionMode!=="date"||ce(f,!0)},B=f=>{f.target.closest("td")&&(_=!0)},J=f=>{f.target.closest("td")&&(_=!1)},z=f=>{!t.rangeState.selecting||!t.minDate?(i("pick",{minDate:f,maxDate:null}),i("select",!0)):(f>=t.minDate?i("pick",{minDate:t.minDate,maxDate:f}):i("pick",{minDate:f,maxDate:t.minDate}),i("select",!1))},te=f=>{const G=f.week(),v=`${f.year()}w${G}`;i("pick",{year:f.year(),week:G,value:v,date:f.startOf("week")})},ne=(f,G)=>{i("pick",G?Ne(t.parsedValue).filter(v=>(v==null?void 0:v.valueOf())!==f.valueOf()):Ne(t.parsedValue).concat([f]))},ce=(f,G=!1)=>{if(t.disabled)return;const v=f.target.closest("td");if(!v)return;const Y=v.parentNode.rowIndex-1,w=v.cellIndex,A=e(k)[Y][w];if(A.disabled||A.type==="week")return;const Q=c(Y,w);switch(t.selectionMode){case"range":z(Q);break;case"date":i("pick",Q,G);break;case"week":te(Q);break;case"dates":ne(Q,!!A.selected);break}},U=f=>{if(t.selectionMode!=="week")return!1;let G=t.date.startOf("day");if(f.type==="prev-month"&&(G=G.subtract(1,"month")),f.type==="next-month"&&(G=G.add(1,"month")),G=G.date(Number.parseInt(f.text,10)),t.parsedValue&&!Ce(t.parsedValue)){const v=(t.parsedValue.day()-C+7)%7-1;return t.parsedValue.subtract(v,"day").isSame(G,"day")}return!1};return{WEEKS:R,rows:k,tbodyRef:a,currentCellRef:n,focus:u,isCurrent:h,isWeekActive:U,isSelectedCell:V,handlePickDate:ce,handleMouseUp:J,handleMouseDown:B,handleMouseMove:O,handleFocus:T}},Ml=(t,{isCurrent:i,isWeekActive:l})=>{const a=Oe("date-table"),{t:n}=Ee(),p=E(()=>[a.b(),a.is("week-mode",t.selectionMode==="week"&&!t.disabled)]),r=E(()=>n("el.datepicker.dateTablePrompt")),g=C=>{const P=[];return Qa(C.type)&&!C.disabled?(P.push("available"),C.type==="today"&&P.push("today")):P.push(C.type),i(C)&&P.push("current"),C.inRange&&(Qa(C.type)||t.selectionMode==="week")&&(P.push("in-range"),C.start&&P.push("start-date"),C.end&&P.push("end-date")),(C.disabled||t.disabled)&&P.push("disabled"),C.selected&&P.push("selected"),C.customClass&&P.push(C.customClass),P.join(" ")},_=C=>[a.e("row"),{current:l(C)}];return{tableKls:p,tableLabel:r,weekHeaderClass:a.e("week-header"),getCellClasses:g,getRowKls:_,t:n}},Vl=De({cell:{type:de(Object)}});var wt=Re({name:"ElDatePickerCell",props:Vl,setup(t){const i=Oe("date-table-cell"),{slots:l}=$e(bt);return()=>{const{cell:a}=t;return he(l,"default",{...a},()=>[W("div",{class:i.b()},[W("span",{class:i.e("text")},[(a==null?void 0:a.renderText)??(a==null?void 0:a.text)])])])}}});const $l=["aria-label"],_l=["aria-label"],Ol=["aria-current","aria-selected","tabindex","aria-disabled"];var Yl=Re({__name:"basic-date-table",props:Pl,emits:Sl,setup(t,{expose:i,emit:l}){const a=t,{WEEKS:n,rows:p,tbodyRef:r,currentCellRef:g,focus:_,isCurrent:C,isWeekActive:P,isSelectedCell:D,handlePickDate:F,handleMouseUp:R,handleMouseDown:o,handleMouseMove:M,handleFocus:d}=Dl(a,l),{tableLabel:m,tableKls:L,getCellClasses:b,getRowKls:k,weekHeaderClass:u,t:h}=Ml(a,{isCurrent:C,isWeekActive:P});let I=!1;return Ut(()=>{I=!0}),i({focus:_}),(c,O)=>($(),q("table",{"aria-label":e(m),class:S(e(L)),cellspacing:"0",cellpadding:"0",role:"grid",onClick:O[1]||(O[1]=(...V)=>e(F)&&e(F)(...V)),onMousemove:O[2]||(O[2]=(...V)=>e(M)&&e(M)(...V)),onMousedown:O[3]||(O[3]=(...V)=>e(o)&&e(o)(...V)),onMouseup:O[4]||(O[4]=(...V)=>e(R)&&e(R)(...V))},[H("tbody",{ref_key:"tbodyRef",ref:r},[H("tr",null,[c.showWeekNumber?($(),q("th",{key:0,scope:"col",class:S(e(u))},null,2)):se("v-if",!0),($(!0),q(ge,null,Ve(e(n),(V,T)=>($(),q("th",{key:T,"aria-label":e(h)("el.datepicker.weeksFull."+V),scope:"col"},me(e(h)("el.datepicker.weeks."+V)),9,_l))),128))]),($(!0),q(ge,null,Ve(e(p),(V,T)=>($(),q("tr",{key:T,class:S(e(k)(c.showWeekNumber?V[2]:V[1]))},[($(!0),q(ge,null,Ve(V,(B,J)=>($(),q("td",{key:`${T}.${J}`,ref_for:!0,ref:z=>!e(I)&&e(D)(B)&&(g.value=z),class:S(e(b)(B)),"aria-current":B.isCurrent?"date":void 0,"aria-selected":B.isCurrent,tabindex:c.disabled?void 0:e(D)(B)?0:-1,"aria-disabled":c.disabled,onFocus:O[0]||(O[0]=(...z)=>e(d)&&e(d)(...z))},[W(e(wt),{cell:B},null,8,["cell"])],42,Ol))),128))],2))),128))],512)],42,$l))}}),ct=Yl;const Rl=De({...yt,selectionMode:kt("month")}),Il=["aria-label"],Tl=["aria-selected","aria-label","tabindex","onKeydown"];var xl=Re({__name:"basic-month-table",props:Rl,emits:["changerange","pick","select"],setup(t,{expose:i,emit:l}){const a=t,n=l,p=Oe("month-table"),{t:r,lang:g}=Ee(),_=Z(),C=Z(),P=Z(a.date.locale("en").localeData().monthsShort().map(k=>k.toLowerCase())),D=Z([[],[],[]]),F=Z(),R=Z(),o=E(()=>{var h,I,c;const k=D.value,u=ae().locale(g.value).startOf("month");for(let O=0;O<3;O++){const V=k[O];for(let T=0;T<4;T++){const B=V[T]||(V[T]={row:O,column:T,type:"normal",inRange:!1,start:!1,end:!1,text:-1,disabled:!1,isSelected:!1,customClass:void 0,date:void 0,dayjs:void 0,isCurrent:void 0,selected:void 0,renderText:void 0,timestamp:void 0});B.type="normal";const J=O*4+T,z=a.date.startOf("year").month(J),te=a.rangeState.endDate||a.maxDate||a.rangeState.selecting&&a.minDate||null;B.inRange=!!(a.minDate&&z.isSameOrAfter(a.minDate,"month")&&te&&z.isSameOrBefore(te,"month"))||!!(a.minDate&&z.isSameOrBefore(a.minDate,"month")&&te&&z.isSameOrAfter(te,"month")),(h=a.minDate)!=null&&h.isSameOrAfter(te)?(B.start=!!(te&&z.isSame(te,"month")),B.end=a.minDate&&z.isSame(a.minDate,"month")):(B.start=!!(a.minDate&&z.isSame(a.minDate,"month")),B.end=!!(te&&z.isSame(te,"month"))),u.isSame(z)&&(B.type="today");const ne=z.toDate();B.text=J,B.disabled=((I=a.disabledDate)==null?void 0:I.call(a,ne))||!1,B.date=ne,B.customClass=(c=a.cellClassName)==null?void 0:c.call(a,ne),B.dayjs=z,B.timestamp=z.valueOf(),B.isSelected=m(B)}}return k}),M=()=>{var k;(k=C.value)==null||k.focus()},d=k=>{const u={},h=a.date.year(),I=new Date,c=k.text;return u.disabled=a.disabled||(a.disabledDate?Za(a.date,h,c,g.value).every(a.disabledDate):!1),u.current=Ne(a.parsedValue).some(O=>ae.isDayjs(O)&&O.year()===h&&O.month()===c),u.today=I.getFullYear()===h&&I.getMonth()===c,k.customClass&&(u[k.customClass]=!0),k.inRange&&(u["in-range"]=!0,k.start&&(u["start-date"]=!0),k.end&&(u["end-date"]=!0)),u},m=k=>{const u=a.date.year(),h=k.text;return Ne(a.date).some(I=>I.year()===u&&I.month()===h)},L=k=>{var c;if(!a.rangeState.selecting)return;let u=k.target;if(u.tagName==="SPAN"&&(u=(c=u.parentNode)==null?void 0:c.parentNode),u.tagName==="DIV"&&(u=u.parentNode),u.tagName!=="TD")return;const h=u.parentNode.rowIndex,I=u.cellIndex;o.value[h][I].disabled||(h!==F.value||I!==R.value)&&(F.value=h,R.value=I,n("changerange",{selecting:!0,endDate:a.date.startOf("year").month(h*4+I)}))},b=k=>{var O;if(a.disabled)return;const u=(O=k.target)==null?void 0:O.closest("td");if((u==null?void 0:u.tagName)!=="TD"||qa(u,"disabled"))return;const h=u.cellIndex,I=u.parentNode.rowIndex*4+h,c=a.date.startOf("year").month(I);if(a.selectionMode==="months"){if(k.type==="keydown"){n("pick",Ne(a.parsedValue),!1);return}const V=ga(a.date,a.date.year(),I,g.value,a.disabledDate);n("pick",qa(u,"current")?Ne(a.parsedValue).filter(T=>(T==null?void 0:T.year())!==V.year()||(T==null?void 0:T.month())!==V.month()):Ne(a.parsedValue).concat([ae(V)]))}else a.selectionMode==="range"?a.rangeState.selecting?(a.minDate&&c>=a.minDate?n("pick",{minDate:a.minDate,maxDate:c}):n("pick",{minDate:c,maxDate:a.minDate}),n("select",!1)):(n("pick",{minDate:c,maxDate:null}),n("select",!0)):n("pick",I)};return Se(()=>a.date,async()=>{var k,u;(k=_.value)!=null&&k.contains(document.activeElement)&&(await Ye(),(u=C.value)==null||u.focus())}),i({focus:M}),(k,u)=>($(),q("table",{role:"grid","aria-label":e(r)("el.datepicker.monthTablePrompt"),class:S(e(p).b()),onClick:b,onMousemove:L},[H("tbody",{ref_key:"tbodyRef",ref:_},[($(!0),q(ge,null,Ve(o.value,(h,I)=>($(),q("tr",{key:I},[($(!0),q(ge,null,Ve(h,(c,O)=>($(),q("td",{key:O,ref_for:!0,ref:V=>c.isSelected&&(C.value=V),class:S(d(c)),"aria-selected":!!c.isSelected,"aria-label":e(r)(`el.datepicker.month${+c.text+1}`),tabindex:c.isSelected?0:-1,onKeydown:[Ze(Je(b,["prevent","stop"]),["space"]),Ze(Je(b,["prevent","stop"]),["enter"])]},[W(e(wt),{cell:{...c,renderText:e(r)("el.datepicker.months."+P.value[c.text])}},null,8,["cell"])],42,Tl))),128))]))),128))],512)],42,Il))}}),_a=xl;const Fl=De({...yt,selectionMode:kt("year")}),Nl=["aria-label"],El=["aria-selected","aria-label","tabindex","onKeydown"];var Al=Re({__name:"basic-year-table",props:Fl,emits:["changerange","pick","select"],setup(t,{expose:i,emit:l}){const a=(u,h)=>{const I=ae(String(u)).locale(h).startOf("year");return Qt(I.endOf("year").dayOfYear()).map(c=>I.add(c,"day").toDate())},n=t,p=l,r=Oe("year-table"),{t:g,lang:_}=Ee(),C=Z(),P=Z(),D=E(()=>Math.floor(n.date.year()/10)*10),F=Z([[],[],[]]),R=Z(),o=Z(),M=E(()=>{var I,c,O;const u=F.value,h=ae().locale(_.value).startOf("year");for(let V=0;V<3;V++){const T=u[V];for(let B=0;B<4&&!(V*4+B>=10);B++){let J=T[B];J||(J={row:V,column:B,type:"normal",inRange:!1,start:!1,end:!1,text:-1,disabled:!1,isSelected:!1,customClass:void 0,date:void 0,dayjs:void 0,isCurrent:void 0,selected:void 0,renderText:void 0,timestamp:void 0}),J.type="normal";const z=V*4+B+D.value,te=ae().year(z),ne=n.rangeState.endDate||n.maxDate||n.rangeState.selecting&&n.minDate||null;J.inRange=!!(n.minDate&&te.isSameOrAfter(n.minDate,"year")&&ne&&te.isSameOrBefore(ne,"year"))||!!(n.minDate&&te.isSameOrBefore(n.minDate,"year")&&ne&&te.isSameOrAfter(ne,"year")),(I=n.minDate)!=null&&I.isSameOrAfter(ne)?(J.start=!!(ne&&te.isSame(ne,"year")),J.end=!!(n.minDate&&te.isSame(n.minDate,"year"))):(J.start=!!(n.minDate&&te.isSame(n.minDate,"year")),J.end=!!(ne&&te.isSame(ne,"year"))),h.isSame(te)&&(J.type="today"),J.text=z;const ce=te.toDate();J.disabled=((c=n.disabledDate)==null?void 0:c.call(n,ce))||!1,J.date=ce,J.customClass=(O=n.cellClassName)==null?void 0:O.call(n,ce),J.dayjs=te,J.timestamp=te.valueOf(),J.isSelected=L(J),T[B]=J}}return u}),d=()=>{var u;(u=P.value)==null||u.focus()},m=u=>{const h={},I=ae().locale(_.value),c=u.text;return h.disabled=n.disabled||(n.disabledDate?a(c,_.value).every(n.disabledDate):!1),h.today=I.year()===c,h.current=Ne(n.parsedValue).some(O=>O.year()===c),u.customClass&&(h[u.customClass]=!0),u.inRange&&(h["in-range"]=!0,u.start&&(h["start-date"]=!0),u.end&&(h["end-date"]=!0)),h},L=u=>{const h=u.text;return Ne(n.date).some(I=>I.year()===h)},b=u=>{var V;if(n.disabled)return;const h=(V=u.target)==null?void 0:V.closest("td");if(!h||!h.textContent||qa(h,"disabled"))return;const I=h.cellIndex,c=h.parentNode.rowIndex*4+I+D.value,O=ae().year(c);if(n.selectionMode==="range")n.rangeState.selecting?(n.minDate&&O>=n.minDate?p("pick",{minDate:n.minDate,maxDate:O}):p("pick",{minDate:O,maxDate:n.minDate}),p("select",!1)):(p("pick",{minDate:O,maxDate:null}),p("select",!0));else if(n.selectionMode==="years"){if(u.type==="keydown"){p("pick",Ne(n.parsedValue),!1);return}const T=Ja(O.startOf("year"),_.value,n.disabledDate);p("pick",qa(h,"current")?Ne(n.parsedValue).filter(B=>(B==null?void 0:B.year())!==c):Ne(n.parsedValue).concat([T]))}else p("pick",c)},k=u=>{var O;if(!n.rangeState.selecting)return;const h=(O=u.target)==null?void 0:O.closest("td");if(!h)return;const I=h.parentNode.rowIndex,c=h.cellIndex;M.value[I][c].disabled||(I!==R.value||c!==o.value)&&(R.value=I,o.value=c,p("changerange",{selecting:!0,endDate:ae().year(D.value).add(I*4+c,"year")}))};return Se(()=>n.date,async()=>{var u,h;(u=C.value)!=null&&u.contains(document.activeElement)&&(await Ye(),(h=P.value)==null||h.focus())}),i({focus:d}),(u,h)=>($(),q("table",{role:"grid","aria-label":e(g)("el.datepicker.yearTablePrompt"),class:S(e(r).b()),onClick:b,onMousemove:k},[H("tbody",{ref_key:"tbodyRef",ref:C},[($(!0),q(ge,null,Ve(M.value,(I,c)=>($(),q("tr",{key:c},[($(!0),q(ge,null,Ve(I,(O,V)=>($(),q("td",{key:`${c}_${V}`,ref_for:!0,ref:T=>O.isSelected&&(P.value=T),class:S(["available",m(O)]),"aria-selected":O.isSelected,"aria-label":String(O.text),tabindex:O.isSelected?0:-1,onKeydown:[Ze(Je(b,["prevent","stop"]),["space"]),Ze(Je(b,["prevent","stop"]),["enter"])]},[W(e(wt),{cell:O},null,8,["cell"])],42,El))),128))]))),128))],512)],42,Nl))}}),Oa=Al;const Bl=["disabled","onClick"],Ll=["aria-label","disabled"],Wl=["aria-label","disabled"],Ul=["tabindex","aria-disabled"],Kl=["tabindex","aria-disabled"],jl=["aria-label","disabled"],Hl=["aria-label","disabled"];var zl=Re({__name:"panel-date-pick",props:wl,emits:["pick","set-picker-option","panel-change"],setup(t,{emit:i}){const l=(y,j,s)=>!0,a=t,n=i,p=Oe("picker-panel"),r=Oe("date-picker"),g=vt(),_=pt(),{t:C,lang:P}=Ee(),D=$e(ea),F=$e(Ra,void 0),{shortcuts:R,disabledDate:o,cellClassName:M,defaultTime:d}=D.props,m=je(D.props,"defaultValue"),L=Z(),b=Z(ae().locale(P.value)),k=Z(!1);let u=!1;const h=E(()=>ae(d).locale(P.value)),I=E(()=>b.value.month()),c=E(()=>b.value.year()),O=Z([]),V=Z(null),T=Z(null),B=y=>O.value.length>0?l(y,O.value,a.format||"HH:mm:ss"):!0,J=y=>d&&!Ue.value&&!k.value&&!u?h.value.year(y.year()).month(y.month()).date(y.date()):ue.value?y.millisecond(0):y.startOf("day"),z=(y,...j)=>{y?Ce(y)?n("pick",y.map(J),...j):n("pick",J(y),...j):n("pick",y,...j),V.value=null,T.value=null,k.value=!1,u=!1},te=async(y,j)=>{if(v.value==="date"&&ae.isDayjs(y)){const s=Pa(a.parsedValue);let N=s?s.year(y.year()).month(y.month()).date(y.date()):y;B(N),b.value=N,z(N,ue.value||j)}else v.value==="week"?z(y.date):v.value==="dates"&&z(y,!0)},ne=y=>{const j=y?"add":"subtract";b.value=b.value[j](1,"month"),xe("month")},ce=y=>{const j=b.value,s=y?"add":"subtract";b.value=U.value==="year"?j[s](10,"year"):j[s](1,"year"),xe("year")},U=Z("date"),f=E(()=>{const y=C("el.datepicker.year");if(U.value==="year"){const j=Math.floor(c.value/10)*10;return y?`${j} ${y} - ${j+9} ${y}`:`${j} - ${j+9}`}return`${c.value} ${y}`}),G=y=>{const j=it(y.value)?y.value():y.value;if(j){u=!0,z(ae(j).locale(P.value));return}y.onClick&&y.onClick({attrs:g,slots:_,emit:n})},v=E(()=>{const{type:y}=a;return["week","month","months","year","years","dates"].includes(y)?y:"date"}),Y=E(()=>v.value==="dates"||v.value==="months"||v.value==="years"),w=E(()=>v.value==="date"?U.value:v.value),A=E(()=>!!R.length),Q=async(y,j)=>{v.value==="month"?(b.value=ga(b.value,b.value.year(),y,P.value,o),z(b.value,!1)):v.value==="months"?z(y,j??!0):(b.value=ga(b.value,b.value.year(),y,P.value,o),U.value="date",["month","year","date","week"].includes(v.value)&&(z(b.value,!0),await Ye(),ta())),xe("month")},ie=async(y,j)=>{v.value==="year"?(b.value=Ja(b.value.startOf("year").year(y),P.value,o),z(b.value,!1)):v.value==="years"?z(y,j??!0):(b.value=Ja(b.value.year(y),P.value,o),U.value="month",["month","year","date","week"].includes(v.value)&&(z(b.value,!0),await Ye(),ta())),xe("year")},ee=Ya(),re=async y=>{ee.value||(U.value=y,await Ye(),ta())},ue=E(()=>a.type==="datetime"||a.type==="datetimerange"),ye=E(()=>{const y=ue.value||v.value==="dates",j=v.value==="years",s=v.value==="months",N=U.value==="date",oe=U.value==="year",we=U.value==="month";return y&&N||j&&oe||s&&we}),Ae=E(()=>!Y.value&&a.showNow||a.showConfirm),He=E(()=>o?a.parsedValue?Ce(a.parsedValue)?o(a.parsedValue[0].toDate()):o(a.parsedValue.toDate()):!0:!1),ze=()=>{if(Y.value)z(a.parsedValue);else{let y=Pa(a.parsedValue);if(!y){const j=ae(d).locale(P.value),s=fe();y=j.year(s.year()).month(s.month()).date(s.date())}b.value=y,z(y)}},Te=E(()=>o?o(ae().locale(P.value).toDate()):!1),Be=()=>{const y=ae().locale(P.value).toDate();k.value=!0,(!o||!o(y))&&B(y)&&(b.value=ae().locale(P.value),z(b.value))},Me=E(()=>a.timeFormat||en(a.format)||"HH:mm:ss"),_e=E(()=>a.dateFormat||Xt(a.format)||"YYYY-MM-DD"),Ue=E(()=>{if(T.value)return T.value;if(!(!a.parsedValue&&!m.value))return(Pa(a.parsedValue)||b.value).format(Me.value)}),qe=E(()=>{if(V.value)return V.value;if(!(!a.parsedValue&&!m.value))return(Pa(a.parsedValue)||b.value).format(_e.value)}),Le=Z(!1),wa=()=>{Le.value=!0},ra=()=>{Le.value=!1},oa=y=>({hour:y.hour(),minute:y.minute(),second:y.second(),year:y.year(),month:y.month(),date:y.date()}),ia=(y,j,s)=>{const{hour:N,minute:oe,second:we}=oa(y),Fe=Pa(a.parsedValue);b.value=Fe?Fe.hour(N).minute(oe).second(we):y,z(b.value,!0),s||(Le.value=j)},ua=y=>{const j=ae(y,Me.value).locale(P.value);if(j.isValid()&&B(j)){const{year:s,month:N,date:oe}=oa(b.value);b.value=j.year(s).month(N).date(oe),T.value=null,Le.value=!1,z(b.value,!0)}},aa=y=>{const j=ka(y,_e.value,P.value,F);if(j.isValid()){if(o&&o(j.toDate()))return;const{hour:s,minute:N,second:oe}=oa(b.value);b.value=j.hour(s).minute(N).second(oe),V.value=null,z(b.value,!0)}},Ge=y=>ae.isDayjs(y)&&y.isValid()&&(o?!o(y.toDate()):!0),Ke=y=>ka(y,a.format,P.value,F),fe=()=>{const y=ae(m.value).locale(P.value);if(!m.value){const j=h.value;return ae().hour(j.hour()).minute(j.minute()).second(j.second()).locale(P.value)}return y},ta=()=>{var y;["week","month","year","date"].includes(v.value)&&((y=L.value)==null||y.focus())},na=()=>{ta(),v.value==="week"&&da(Pe.down)},ma=y=>{const j=mt(y);[Pe.up,Pe.down,Pe.left,Pe.right,Pe.home,Pe.end,Pe.pageUp,Pe.pageDown].includes(j)&&(da(j),y.stopPropagation(),y.preventDefault()),[Pe.enter,Pe.space,Pe.numpadEnter].includes(j)&&V.value===null&&T.value===null&&(y.preventDefault(),z(b.value,!1))},da=y=>{const{up:j,down:s,left:N,right:oe,home:we,end:Fe,pageUp:Ia,pageDown:et}=Pe,at={year:{[j]:-4,[s]:4,[N]:-1,[oe]:1,offset:(pe,We)=>pe.setFullYear(pe.getFullYear()+We)},month:{[j]:-4,[s]:4,[N]:-1,[oe]:1,offset:(pe,We)=>pe.setMonth(pe.getMonth()+We)},week:{[j]:-1,[s]:1,[N]:-1,[oe]:1,offset:(pe,We)=>pe.setDate(pe.getDate()+We*7)},date:{[j]:-7,[s]:7,[N]:-1,[oe]:1,[we]:pe=>-pe.getDay(),[Fe]:pe=>-pe.getDay()+6,[Ia]:pe=>-new Date(pe.getFullYear(),pe.getMonth(),0).getDate(),[et]:pe=>new Date(pe.getFullYear(),pe.getMonth()+1,0).getDate(),offset:(pe,We)=>pe.setDate(pe.getDate()+We)}},ca=b.value.toDate();for(;Math.abs(b.value.diff(ca,"year",!0))<1;){const pe=at[w.value];if(!pe)return;if(pe.offset(ca,it(pe[y])?pe[y](ca):pe[y]??0),o&&o(ca))break;const We=ae(ca).locale(P.value);b.value=We,n("pick",We,!0);break}},xe=y=>{n("panel-change",b.value.toDate(),y,U.value)};return Se(()=>v.value,y=>{if(["month","year"].includes(y)){U.value=y;return}else if(y==="years"){U.value="year";return}else if(y==="months"){U.value="month";return}U.value="date"},{immediate:!0}),Se(()=>m.value,y=>{y&&(b.value=fe())},{immediate:!0}),Se(()=>a.parsedValue,y=>{if(y){if(Y.value||Ce(y))return;b.value=y}else b.value=fe()},{immediate:!0}),n("set-picker-option",["isValidValue",Ge]),n("set-picker-option",["parseUserInput",Ke]),n("set-picker-option",["handleFocusPicker",na]),(y,j)=>($(),q("div",{class:S([e(p).b(),e(r).b(),e(p).is("border",y.border),e(p).is("disabled",e(ee)),{"has-sidebar":y.$slots.sidebar||A.value,"has-time":ue.value}])},[H("div",{class:S(e(p).e("body-wrapper"))},[he(y.$slots,"sidebar",{class:S(e(p).e("sidebar"))}),A.value?($(),q("div",{key:0,class:S(e(p).e("sidebar"))},[($(!0),q(ge,null,Ve(e(R),(s,N)=>($(),q("button",{key:N,type:"button",disabled:e(ee),class:S(e(p).e("shortcut")),onClick:oe=>G(s)},me(s.text),11,Bl))),128))],2)):se("v-if",!0),H("div",{class:S(e(p).e("body"))},[ue.value?($(),q("div",{key:0,class:S(e(r).e("time-header"))},[H("span",{class:S(e(r).e("editor-wrap"))},[W(e(la),{placeholder:e(C)("el.datepicker.selectDate"),"model-value":qe.value,size:"small","validate-event":!1,disabled:e(ee),readonly:!y.editable,onInput:j[0]||(j[0]=s=>V.value=s),onChange:aa},null,8,["placeholder","model-value","disabled","readonly"])],2),Ie(($(),q("span",{class:S(e(r).e("editor-wrap"))},[W(e(la),{placeholder:e(C)("el.datepicker.selectTime"),"model-value":Ue.value,size:"small","validate-event":!1,disabled:e(ee),readonly:!y.editable,onFocus:wa,onInput:j[1]||(j[1]=s=>T.value=s),onChange:ua},null,8,["placeholder","model-value","disabled","readonly"]),W(e(dt),{visible:Le.value,format:Me.value,"parsed-value":b.value,onPick:ia},null,8,["visible","format","parsed-value"])],2)),[[e(ut),ra]])],2)):se("v-if",!0),Ie(H("div",{class:S([e(r).e("header"),(U.value==="year"||U.value==="month")&&e(r).em("header","bordered")])},[H("span",{class:S(e(r).e("prev-btn"))},[H("button",{type:"button","aria-label":e(C)("el.datepicker.prevYear"),class:S(["d-arrow-left",e(p).e("icon-btn")]),disabled:e(ee),onClick:j[2]||(j[2]=s=>ce(!1))},[he(y.$slots,"prev-year",{},()=>[W(e(be),null,{default:le(()=>[W(e(fa))]),_:1})])],10,Ll),Ie(H("button",{type:"button","aria-label":e(C)("el.datepicker.prevMonth"),class:S([e(p).e("icon-btn"),"arrow-left"]),disabled:e(ee),onClick:j[3]||(j[3]=s=>ne(!1))},[he(y.$slots,"prev-month",{},()=>[W(e(be),null,{default:le(()=>[W(e(ot))]),_:1})])],10,Wl),[[Qe,U.value==="date"]])],2),H("span",{role:"button",class:S(e(r).e("header-label")),"aria-live":"polite",tabindex:y.disabled?void 0:0,"aria-disabled":y.disabled,onKeydown:j[4]||(j[4]=Ze(s=>re("year"),["enter"])),onClick:j[5]||(j[5]=s=>re("year"))},me(f.value),43,Ul),Ie(H("span",{role:"button","aria-live":"polite",tabindex:y.disabled?void 0:0,"aria-disabled":y.disabled,class:S([e(r).e("header-label"),{active:U.value==="month"}]),onKeydown:j[6]||(j[6]=Ze(s=>re("month"),["enter"])),onClick:j[7]||(j[7]=s=>re("month"))},me(e(C)(`el.datepicker.month${I.value+1}`)),43,Kl),[[Qe,U.value==="date"]]),H("span",{class:S(e(r).e("next-btn"))},[Ie(H("button",{type:"button","aria-label":e(C)("el.datepicker.nextMonth"),class:S([e(p).e("icon-btn"),"arrow-right"]),disabled:e(ee),onClick:j[8]||(j[8]=s=>ne(!0))},[he(y.$slots,"next-month",{},()=>[W(e(be),null,{default:le(()=>[W(e(Ea))]),_:1})])],10,jl),[[Qe,U.value==="date"]]),H("button",{type:"button","aria-label":e(C)("el.datepicker.nextYear"),class:S([e(p).e("icon-btn"),"d-arrow-right"]),disabled:e(ee),onClick:j[9]||(j[9]=s=>ce(!0))},[he(y.$slots,"next-year",{},()=>[W(e(be),null,{default:le(()=>[W(e(va))]),_:1})])],10,Hl)],2)],2),[[Qe,U.value!=="time"]]),H("div",{class:S(e(p).e("content")),onKeydown:ma},[U.value==="date"?($(),ve(ct,{key:0,ref_key:"currentViewRef",ref:L,"selection-mode":v.value,date:b.value,"parsed-value":y.parsedValue,"disabled-date":e(o),disabled:e(ee),"cell-class-name":e(M),"show-week-number":y.showWeekNumber,onPick:te},null,8,["selection-mode","date","parsed-value","disabled-date","disabled","cell-class-name","show-week-number"])):se("v-if",!0),U.value==="year"?($(),ve(Oa,{key:1,ref_key:"currentViewRef",ref:L,"selection-mode":v.value,date:b.value,"disabled-date":e(o),disabled:e(ee),"parsed-value":y.parsedValue,"cell-class-name":e(M),onPick:ie},null,8,["selection-mode","date","disabled-date","disabled","parsed-value","cell-class-name"])):se("v-if",!0),U.value==="month"?($(),ve(_a,{key:2,ref_key:"currentViewRef",ref:L,"selection-mode":v.value,date:b.value,"parsed-value":y.parsedValue,"disabled-date":e(o),disabled:e(ee),"cell-class-name":e(M),onPick:Q},null,8,["selection-mode","date","parsed-value","disabled-date","disabled","cell-class-name"])):se("v-if",!0)],34)],2)],2),y.showFooter&&ye.value&&Ae.value?($(),q("div",{key:0,class:S(e(p).e("footer"))},[Ie(W(e(Ma),{text:"",size:"small",class:S(e(p).e("link-btn")),disabled:Te.value,onClick:Be},{default:le(()=>[Xe(me(e(C)("el.datepicker.now")),1)]),_:1},8,["class","disabled"]),[[Qe,!Y.value&&y.showNow]]),y.showConfirm?($(),ve(e(Ma),{key:0,plain:"",size:"small",class:S(e(p).e("link-btn")),disabled:He.value,onClick:ze},{default:le(()=>[Xe(me(e(C)("el.datepicker.confirm")),1)]),_:1},8,["class","disabled"])):se("v-if",!0)],2)):se("v-if",!0)],2))}}),ql=zl;const Gl=De({...sn,...gt}),Zl=t=>{const{emit:i}=Ht(),l=vt(),a=pt();return p=>{const r=it(p.value)?p.value():p.value;if(r){i("pick",[ae(r[0]).locale(t.value),ae(r[1]).locale(t.value)]);return}p.onClick&&p.onClick({attrs:l,slots:a,emit:i})}},Ct=(t,{defaultValue:i,defaultTime:l,leftDate:a,rightDate:n,step:p,unit:r,sortDates:g})=>{const{emit:_}=Ht(),{pickerNs:C}=$e(bt),P=Oe("date-range-picker"),{t:D,lang:F}=Ee(),R=Zl(F),o=Z(),M=Z(),d=Z({endDate:null,selecting:!1}),m=h=>{d.value=h},L=(h=!1)=>{const I=e(o),c=e(M);$a([I,c])&&_("pick",[I,c],h)},b=h=>{d.value.selecting=h,h||(d.value.endDate=null)},k=h=>{if(Ce(h)&&h.length===2){const[I,c]=h;o.value=I,a.value=I,M.value=c,g(e(o),e(M))}else u()},u=()=>{let[h,I]=Xa(e(i),{lang:e(F),step:p,unit:r,unlinkPanels:t.unlinkPanels});const c=V=>V.diff(V.startOf("d"),"ms"),O=e(l);if(O){let V=0,T=0;if(Ce(O)){const[B,J]=O.map(ae);V=c(B),T=c(J)}else{const B=c(ae(O));V=B,T=B}h=h.startOf("d").add(V,"ms"),I=I.startOf("d").add(T,"ms")}o.value=void 0,M.value=void 0,a.value=h,n.value=I};return Se(i,h=>{h&&u()},{immediate:!0}),Se(()=>t.parsedValue,h=>{(!(h!=null&&h.length)||!Wt(h,[o.value,M.value]))&&k(h)},{immediate:!0}),Se(()=>t.visible,()=>{t.visible&&k(t.parsedValue)},{immediate:!0}),{minDate:o,maxDate:M,rangeState:d,lang:F,ppNs:C,drpNs:P,handleChangeRange:m,handleRangeConfirm:L,handleShortcutClick:R,onSelect:b,parseValue:k,t:D}},Jl=(t,i,l,a)=>{const n=Z("date"),p=Z(),r=Z("date"),g=Z(),{disabledDate:_}=$e(ea).props,{t:C,lang:P}=Ee(),D=E(()=>l.value.year()),F=E(()=>l.value.month()),R=E(()=>a.value.year()),o=E(()=>a.value.month());function M(u,h){const I=C("el.datepicker.year");if(u.value==="year"){const c=Math.floor(h.value/10)*10;return I?`${c} ${I} - ${c+9} ${I}`:`${c} - ${c+9}`}return`${h.value} ${I}`}function d(u){u==null||u.focus()}async function m(u,h){if(t.disabled)return;const I=u==="left"?n:r,c=u==="left"?p:g;I.value=h,await Ye(),d(c.value)}async function L(u,h,I){if(t.disabled)return;const c=h==="left",O=c?l:a,V=c?a:l,T=c?n:r,B=c?p:g;u==="year"&&(O.value=Ja(O.value.year(I),P.value,_)),u==="month"&&(O.value=ga(O.value,O.value.year(),I,P.value,_)),t.unlinkPanels||(V.value=h==="left"?O.value.add(1,"month"):O.value.subtract(1,"month")),T.value=u==="year"?"month":"date",await Ye(),d(B.value),b(u)}function b(u){i("panel-change",[l.value.toDate(),a.value.toDate()],u)}function k(u,h,I){const c=I?"add":"subtract";return u==="year"?h[c](10,"year"):h[c](1,"year")}return{leftCurrentView:n,rightCurrentView:r,leftCurrentViewRef:p,rightCurrentViewRef:g,leftYear:D,rightYear:R,leftMonth:F,rightMonth:o,leftYearLabel:E(()=>M(n,D)),rightYearLabel:E(()=>M(r,R)),showLeftPicker:u=>m("left",u),showRightPicker:u=>m("right",u),handleLeftYearPick:u=>L("year","left",u),handleRightYearPick:u=>L("year","right",u),handleLeftMonthPick:u=>L("month","left",u),handleRightMonthPick:u=>L("month","right",u),handlePanelChange:b,adjustDateByView:k}},Ql=["disabled","onClick"],Xl=["aria-label","disabled"],es=["aria-label","disabled"],as=["disabled","aria-label"],ts=["disabled","aria-label"],ns=["tabindex","aria-disabled"],ls=["tabindex","aria-disabled"],ss=["disabled","aria-label"],rs=["disabled","aria-label"],os=["aria-label","disabled"],is=["disabled","aria-label"],us=["tabindex","aria-disabled"],ds=["tabindex","aria-disabled"],Fa="month";var cs=Re({__name:"panel-date-range",props:Gl,emits:["pick","set-picker-option","calendar-change","panel-change","clear"],setup(t,{emit:i}){const l=t,a=i,n=$e(ea),p=$e(Ra,void 0),{disabledDate:r,cellClassName:g,defaultTime:_,clearable:C}=n.props,P=je(n.props,"format"),D=je(n.props,"shortcuts"),F=je(n.props,"defaultValue"),{lang:R}=Ee(),o=Z(ae().locale(R.value)),M=Z(ae().locale(R.value).add(1,Fa)),{minDate:d,maxDate:m,rangeState:L,ppNs:b,drpNs:k,handleChangeRange:u,handleRangeConfirm:h,handleShortcutClick:I,onSelect:c,parseValue:O,t:V}=Ct(l,{defaultValue:F,defaultTime:_,leftDate:o,rightDate:M,unit:Fa,sortDates:tt});Se(()=>l.visible,x=>{!x&&L.value.selecting&&(O(l.parsedValue),c(!1))});const T=Z({min:null,max:null}),B=Z({min:null,max:null}),{leftCurrentView:J,rightCurrentView:z,leftCurrentViewRef:te,rightCurrentViewRef:ne,leftYear:ce,rightYear:U,leftMonth:f,rightMonth:G,leftYearLabel:v,rightYearLabel:Y,showLeftPicker:w,showRightPicker:A,handleLeftYearPick:Q,handleRightYearPick:ie,handleLeftMonthPick:ee,handleRightMonthPick:re,handlePanelChange:ue,adjustDateByView:ye}=Jl(l,a,o,M),Ae=E(()=>!!D.value.length),He=E(()=>T.value.min!==null?T.value.min:d.value?d.value.format(_e.value):""),ze=E(()=>T.value.max!==null?T.value.max:m.value||d.value?(m.value||d.value).format(_e.value):""),Te=E(()=>B.value.min!==null?B.value.min:d.value?d.value.format(Me.value):""),Be=E(()=>B.value.max!==null?B.value.max:m.value||d.value?(m.value||d.value).format(Me.value):""),Me=E(()=>l.timeFormat||en(P.value||"")||"HH:mm:ss"),_e=E(()=>l.dateFormat||Xt(P.value||"")||"YYYY-MM-DD"),Ue=x=>$a(x)&&(r?!r(x[0].toDate())&&!r(x[1].toDate()):!0),qe=()=>{o.value=ye(J.value,o.value,!1),l.unlinkPanels||(M.value=o.value.add(1,"month")),ue("year")},Le=()=>{o.value=o.value.subtract(1,"month"),l.unlinkPanels||(M.value=o.value.add(1,"month")),ue("month")},wa=()=>{l.unlinkPanels?M.value=ye(z.value,M.value,!0):(o.value=ye(z.value,o.value,!0),M.value=o.value.add(1,"month")),ue("year")},ra=()=>{l.unlinkPanels?M.value=M.value.add(1,"month"):(o.value=o.value.add(1,"month"),M.value=o.value.add(1,"month")),ue("month")},oa=()=>{o.value=ye(J.value,o.value,!0),ue("year")},ia=()=>{o.value=o.value.add(1,"month"),ue("month")},ua=()=>{M.value=ye(z.value,M.value,!1),ue("year")},aa=()=>{M.value=M.value.subtract(1,"month"),ue("month")},Ge=E(()=>{const x=(f.value+1)%12,K=f.value+1>=12?1:0;return l.singlePanel||l.unlinkPanels&&new Date(ce.value+K,x)l.singlePanel||l.unlinkPanels&&U.value*12+G.value-(ce.value*12+f.value+1)>=12),fe=Ya(),ta=E(()=>!(d.value&&m.value&&!L.value.selecting&&$a([d.value,m.value])&&!fe.value)),na=E(()=>l.type==="datetime"||l.type==="datetimerange"),ma=(x,K)=>{if(x)return _?ae(_[K]||_).locale(R.value).year(x.year()).month(x.month()).date(x.date()):x},da=(x,K=!0)=>{const X=x.minDate,ke=x.maxDate,pa=ma(X,0),Ca=ma(ke,1);m.value===Ca&&d.value===pa||(a("calendar-change",[X.toDate(),ke&&ke.toDate()]),m.value=Ca,d.value=pa,!na.value&&K&&(K=!pa||!Ca),h(K))},xe=Z(!1),y=Z(!1),j=()=>{xe.value=!1},s=()=>{y.value=!1},N=(x,K)=>{if(!r||!r(x.toDate()))return x;const X=x.isBefore(K);let ke=x;for(;X?ke.isBefore(K):ke.isAfter(K);)if(ke=X?ke.add(1,"day"):ke.subtract(1,"day"),!r(ke.toDate()))return ke;return x},oe=(x,K)=>{T.value[K]=x;const X=ae(x,_e.value).locale(R.value);if(X.isValid()){if(r&&r(X.toDate()))return;if(K==="min"){if(o.value=X,d.value=(d.value||o.value).year(X.year()).month(X.month()).date(X.date()),!l.unlinkPanels&&!m.value){const ke=N(d.value.add(1,"month"),d.value);M.value=ke,m.value=ke}}else if(M.value=X,m.value=(m.value||M.value).year(X.year()).month(X.month()).date(X.date()),!l.unlinkPanels&&!d.value){const ke=N(m.value.subtract(1,"month"),m.value);o.value=ke,d.value=ke}tt(d.value,m.value),h(!0)}},we=(x,K)=>{if(T.value[K]=null,K==="min"){if(!l.unlinkPanels&&m.value&&d.value&&m.value.isBefore(d.value)){const X=N(d.value.add(1,"month"),d.value);M.value=X,m.value=X}}else if(!l.unlinkPanels&&d.value&&m.value&&d.value.isAfter(m.value)){const X=N(m.value.subtract(1,"month"),m.value);o.value=X,d.value=X}tt(d.value,m.value),h(!0)},Fe=(x,K)=>{B.value[K]=x;const X=ae(x,Me.value).locale(R.value);X.isValid()&&(K==="min"?(xe.value=!0,d.value=(d.value||o.value).hour(X.hour()).minute(X.minute()).second(X.second()),o.value=d.value):(y.value=!0,m.value=(m.value||M.value).hour(X.hour()).minute(X.minute()).second(X.second()),M.value=m.value))},Ia=(x,K)=>{B.value[K]=null,K==="min"?(o.value=d.value,xe.value=!1,(!m.value||m.value.isBefore(d.value))&&(m.value=d.value)):(M.value=m.value,y.value=!1,m.value&&m.value.isBefore(d.value)&&(d.value=m.value)),h(!0)},et=(x,K,X)=>{B.value.min||(x&&(d.value=(d.value||o.value).hour(x.hour()).minute(x.minute()).second(x.second())),X||(xe.value=K),(!m.value||m.value.isBefore(d.value))&&(m.value=d.value,M.value=x,Ye(()=>{O(l.parsedValue)})),h(!0))},at=(x,K,X)=>{B.value.max||(x&&(m.value=(m.value||M.value).hour(x.hour()).minute(x.minute()).second(x.second())),X||(y.value=K),m.value&&m.value.isBefore(d.value)&&(d.value=m.value),h(!0))},ca=()=>{pe(),a("clear")},pe=()=>{let x=null;n!=null&&n.emptyValues&&(x=n.emptyValues.valueOnClear.value),o.value=Xa(e(F),{lang:e(R),unit:"month",unlinkPanels:l.unlinkPanels})[0],M.value=o.value.add(1,"month"),m.value=void 0,d.value=void 0,h(!0),a("pick",x)},We=x=>ka(x,P.value||"",R.value,p);function tt(x,K){if(l.unlinkPanels&&K){const X=(x==null?void 0:x.year())||0,ke=(x==null?void 0:x.month())||0,pa=K.year(),Ca=K.month();M.value=X===pa&&ke===Ca?K.add(1,Fa):K}else M.value=o.value.add(1,Fa),K&&(M.value=M.value.hour(K.hour()).minute(K.minute()).second(K.second()))}return a("set-picker-option",["isValidValue",Ue]),a("set-picker-option",["parseUserInput",We]),a("set-picker-option",["handleClear",pe]),(x,K)=>($(),q("div",{class:S([e(b).b(),e(k).b(),e(b).is("border",x.border),e(b).is("disabled",e(fe)),{"has-sidebar":x.$slots.sidebar||Ae.value,"has-time":na.value,"single-panel":x.singlePanel}])},[H("div",{class:S(e(b).e("body-wrapper"))},[he(x.$slots,"sidebar",{class:S(e(b).e("sidebar"))}),Ae.value?($(),q("div",{key:0,class:S(e(b).e("sidebar"))},[($(!0),q(ge,null,Ve(D.value,(X,ke)=>($(),q("button",{key:ke,type:"button",disabled:e(fe),class:S(e(b).e("shortcut")),onClick:pa=>e(I)(X)},me(X.text),11,Ql))),128))],2)):se("v-if",!0),H("div",{class:S(e(b).e("body"))},[na.value?($(),q("div",{key:0,class:S(e(k).e("time-header"))},[H("span",{class:S(e(k).e("editors-wrap"))},[H("span",{class:S(e(k).e("time-picker-wrap"))},[W(e(la),{size:"small",disabled:e(L).selecting||e(fe),placeholder:e(V)("el.datepicker.startDate"),class:S(e(k).e("editor")),"model-value":He.value,"validate-event":!1,readonly:!x.editable,onInput:K[0]||(K[0]=X=>oe(X,"min")),onChange:K[1]||(K[1]=X=>we(X,"min"))},null,8,["disabled","placeholder","class","model-value","readonly"])],2),Ie(($(),q("span",{class:S(e(k).e("time-picker-wrap"))},[W(e(la),{size:"small",class:S(e(k).e("editor")),disabled:e(L).selecting||e(fe),placeholder:e(V)("el.datepicker.startTime"),"model-value":Te.value,"validate-event":!1,readonly:!x.editable,onFocus:K[2]||(K[2]=X=>xe.value=!0),onInput:K[3]||(K[3]=X=>Fe(X,"min")),onChange:K[4]||(K[4]=X=>Ia(X,"min"))},null,8,["class","disabled","placeholder","model-value","readonly"]),W(e(dt),{visible:xe.value,format:Me.value,"datetime-role":"start","parsed-value":e(d)||o.value,onPick:et},null,8,["visible","format","parsed-value"])],2)),[[e(ut),j]])],2),H("span",null,[W(e(be),null,{default:le(()=>[W(e(Ea))]),_:1})]),H("span",{class:S([e(k).e("editors-wrap"),"is-right"])},[H("span",{class:S(e(k).e("time-picker-wrap"))},[W(e(la),{size:"small",class:S(e(k).e("editor")),disabled:e(L).selecting||e(fe),placeholder:e(V)("el.datepicker.endDate"),"model-value":ze.value,readonly:!e(d)||!x.editable,"validate-event":!1,onInput:K[5]||(K[5]=X=>oe(X,"max")),onChange:K[6]||(K[6]=X=>we(X,"max"))},null,8,["class","disabled","placeholder","model-value","readonly"])],2),Ie(($(),q("span",{class:S(e(k).e("time-picker-wrap"))},[W(e(la),{size:"small",class:S(e(k).e("editor")),disabled:e(L).selecting||e(fe),placeholder:e(V)("el.datepicker.endTime"),"model-value":Be.value,readonly:!e(d)||!x.editable,"validate-event":!1,onFocus:K[7]||(K[7]=X=>e(d)&&(y.value=!0)),onInput:K[8]||(K[8]=X=>Fe(X,"max")),onChange:K[9]||(K[9]=X=>Ia(X,"max"))},null,8,["class","disabled","placeholder","model-value","readonly"]),W(e(dt),{"datetime-role":"end",visible:y.value,format:Me.value,"parsed-value":e(m)||M.value,onPick:at},null,8,["visible","format","parsed-value"])],2)),[[e(ut),s]])],2)],2)):se("v-if",!0),H("div",{class:S([e(b).e("content"),e(k).e("content"),e(k).is("left",!x.singlePanel)])},[H("div",{class:S(e(k).e("header"))},[H("button",{type:"button",class:S([e(b).e("icon-btn"),"d-arrow-left"]),"aria-label":e(V)("el.datepicker.prevYear"),disabled:e(fe),onClick:qe},[he(x.$slots,"prev-year",{},()=>[W(e(be),null,{default:le(()=>[W(e(fa))]),_:1})])],10,Xl),Ie(H("button",{type:"button",class:S([e(b).e("icon-btn"),"arrow-left"]),"aria-label":e(V)("el.datepicker.prevMonth"),disabled:e(fe),onClick:Le},[he(x.$slots,"prev-month",{},()=>[W(e(be),null,{default:le(()=>[W(e(ot))]),_:1})])],10,es),[[Qe,e(J)==="date"]]),x.unlinkPanels||x.singlePanel?($(),q("button",{key:0,type:"button",disabled:!Ke.value||e(fe),class:S([[e(b).e("icon-btn"),e(b).is("disabled",!Ke.value||e(fe))],"d-arrow-right"]),"aria-label":e(V)("el.datepicker.nextYear"),onClick:oa},[he(x.$slots,"next-year",{},()=>[W(e(be),null,{default:le(()=>[W(e(va))]),_:1})])],10,as)):se("v-if",!0),x.unlinkPanels&&e(J)==="date"||x.singlePanel?($(),q("button",{key:1,type:"button",disabled:!Ge.value||e(fe),class:S([[e(b).e("icon-btn"),e(b).is("disabled",!Ge.value||e(fe))],"arrow-right"]),"aria-label":e(V)("el.datepicker.nextMonth"),onClick:ia},[he(x.$slots,"next-month",{},()=>[W(e(be),null,{default:le(()=>[W(e(Ea))]),_:1})])],10,ts)):se("v-if",!0),H("div",null,[H("span",{role:"button",class:S(e(k).e("header-label")),"aria-live":"polite",tabindex:x.disabled?void 0:0,"aria-disabled":x.disabled,onKeydown:K[10]||(K[10]=Ze(X=>e(w)("year"),["enter"])),onClick:K[11]||(K[11]=X=>e(w)("year"))},me(e(v)),43,ns),Ie(H("span",{role:"button","aria-live":"polite",tabindex:x.disabled?void 0:0,"aria-disabled":x.disabled,class:S([e(k).e("header-label"),{active:e(J)==="month"}]),onKeydown:K[12]||(K[12]=Ze(X=>e(w)("month"),["enter"])),onClick:K[13]||(K[13]=X=>e(w)("month"))},me(e(V)(`el.datepicker.month${o.value.month()+1}`)),43,ls),[[Qe,e(J)==="date"]])])],2),e(J)==="date"?($(),ve(ct,{key:0,ref_key:"leftCurrentViewRef",ref:te,"selection-mode":"range",date:o.value,"min-date":e(d),"max-date":e(m),"range-state":e(L),"disabled-date":e(r),"cell-class-name":e(g),"show-week-number":x.showWeekNumber,disabled:e(fe),onChangerange:e(u),onPick:da,onSelect:e(c)},null,8,["date","min-date","max-date","range-state","disabled-date","cell-class-name","show-week-number","disabled","onChangerange","onSelect"])):se("v-if",!0),e(J)==="year"?($(),ve(Oa,{key:1,ref_key:"leftCurrentViewRef",ref:te,"selection-mode":"year",date:o.value,"disabled-date":e(r),"parsed-value":x.parsedValue,disabled:e(fe),onPick:e(Q)},null,8,["date","disabled-date","parsed-value","disabled","onPick"])):se("v-if",!0),e(J)==="month"?($(),ve(_a,{key:2,ref_key:"leftCurrentViewRef",ref:te,"selection-mode":"month",date:o.value,"parsed-value":x.parsedValue,"disabled-date":e(r),disabled:e(fe),onPick:e(ee)},null,8,["date","parsed-value","disabled-date","disabled","onPick"])):se("v-if",!0)],2),x.singlePanel?se("v-if",!0):($(),q("div",{key:1,class:S([[e(b).e("content"),e(k).e("content")],"is-right"])},[H("div",{class:S(e(k).e("header"))},[x.unlinkPanels?($(),q("button",{key:0,type:"button",disabled:!Ke.value||e(fe),class:S([[e(b).e("icon-btn"),e(b).is("disabled",!Ke.value||e(fe))],"d-arrow-left"]),"aria-label":e(V)("el.datepicker.prevYear"),onClick:ua},[he(x.$slots,"prev-year",{},()=>[W(e(be),null,{default:le(()=>[W(e(fa))]),_:1})])],10,ss)):se("v-if",!0),x.unlinkPanels&&e(z)==="date"?($(),q("button",{key:1,type:"button",disabled:!Ge.value||e(fe),class:S([[e(b).e("icon-btn"),e(b).is("disabled",!Ge.value||e(fe))],"arrow-left"]),"aria-label":e(V)("el.datepicker.prevMonth"),onClick:aa},[he(x.$slots,"prev-month",{},()=>[W(e(be),null,{default:le(()=>[W(e(ot))]),_:1})])],10,rs)):se("v-if",!0),H("button",{type:"button","aria-label":e(V)("el.datepicker.nextYear"),class:S([e(b).e("icon-btn"),"d-arrow-right"]),disabled:e(fe),onClick:wa},[he(x.$slots,"next-year",{},()=>[W(e(be),null,{default:le(()=>[W(e(va))]),_:1})])],10,os),Ie(H("button",{type:"button",class:S([e(b).e("icon-btn"),"arrow-right"]),disabled:e(fe),"aria-label":e(V)("el.datepicker.nextMonth"),onClick:ra},[he(x.$slots,"next-month",{},()=>[W(e(be),null,{default:le(()=>[W(e(Ea))]),_:1})])],10,is),[[Qe,e(z)==="date"]]),H("div",null,[H("span",{role:"button",class:S(e(k).e("header-label")),"aria-live":"polite",tabindex:x.disabled?void 0:0,"aria-disabled":x.disabled,onKeydown:K[14]||(K[14]=Ze(X=>e(A)("year"),["enter"])),onClick:K[15]||(K[15]=X=>e(A)("year"))},me(e(Y)),43,us),Ie(H("span",{role:"button","aria-live":"polite",tabindex:x.disabled?void 0:0,"aria-disabled":x.disabled,class:S([e(k).e("header-label"),{active:e(z)==="month"}]),onKeydown:K[16]||(K[16]=Ze(X=>e(A)("month"),["enter"])),onClick:K[17]||(K[17]=X=>e(A)("month"))},me(e(V)(`el.datepicker.month${M.value.month()+1}`)),43,ds),[[Qe,e(z)==="date"]])])],2),e(z)==="date"?($(),ve(ct,{key:0,ref_key:"rightCurrentViewRef",ref:ne,"selection-mode":"range",date:M.value,"min-date":e(d),"max-date":e(m),"range-state":e(L),"disabled-date":e(r),"cell-class-name":e(g),"show-week-number":x.showWeekNumber,disabled:e(fe),onChangerange:e(u),onPick:da,onSelect:e(c)},null,8,["date","min-date","max-date","range-state","disabled-date","cell-class-name","show-week-number","disabled","onChangerange","onSelect"])):se("v-if",!0),e(z)==="year"?($(),ve(Oa,{key:1,ref_key:"rightCurrentViewRef",ref:ne,"selection-mode":"year",date:M.value,"disabled-date":e(r),"parsed-value":x.parsedValue,disabled:e(fe),onPick:e(ie)},null,8,["date","disabled-date","parsed-value","disabled","onPick"])):se("v-if",!0),e(z)==="month"?($(),ve(_a,{key:2,ref_key:"rightCurrentViewRef",ref:ne,"selection-mode":"month",date:M.value,"parsed-value":x.parsedValue,"disabled-date":e(r),disabled:e(fe),onPick:e(re)},null,8,["date","parsed-value","disabled-date","disabled","onPick"])):se("v-if",!0)],2))],2)],2),x.showFooter&&na.value&&(x.showConfirm||e(C))?($(),q("div",{key:0,class:S(e(b).e("footer"))},[e(C)?($(),ve(e(Ma),{key:0,text:"",size:"small",class:S(e(b).e("link-btn")),onClick:ca},{default:le(()=>[Xe(me(e(V)("el.datepicker.clear")),1)]),_:1},8,["class"])):se("v-if",!0),x.showConfirm?($(),ve(e(Ma),{key:1,plain:"",size:"small",class:S(e(b).e("link-btn")),disabled:ta.value,onClick:K[18]||(K[18]=X=>e(h)(!1))},{default:le(()=>[Xe(me(e(V)("el.datepicker.confirm")),1)]),_:1},8,["class","disabled"])):se("v-if",!0)],2)):se("v-if",!0)],2))}}),fs=cs;const vs=De({...gt}),ms=["pick","set-picker-option","calendar-change"],ps=({unlinkPanels:t,leftDate:i,rightDate:l})=>{const{t:a}=Ee();return{leftPrevYear:()=>{i.value=i.value.subtract(1,"year"),t.value||(l.value=l.value.subtract(1,"year"))},rightNextYear:()=>{t.value||(i.value=i.value.add(1,"year")),l.value=l.value.add(1,"year")},leftNextYear:()=>{i.value=i.value.add(1,"year")},rightPrevYear:()=>{l.value=l.value.subtract(1,"year")},leftLabel:E(()=>`${i.value.year()} ${a("el.datepicker.year")}`),rightLabel:E(()=>`${l.value.year()} ${a("el.datepicker.year")}`),leftYear:E(()=>i.value.year()),rightYear:E(()=>l.value.year()===i.value.year()?i.value.year()+1:l.value.year())}},hs=["disabled","onClick"],bs=["disabled"],ys=["disabled"],gs=["disabled"],ks=["disabled"],Na="year";var ws=Re({name:"DatePickerMonthRange",__name:"panel-month-range",props:vs,emits:ms,setup(t,{emit:i}){const l=t,a=i,{lang:n}=Ee(),p=$e(ea),r=$e(Ra,void 0),{shortcuts:g,disabledDate:_,cellClassName:C}=p.props,P=je(p.props,"format"),D=je(p.props,"defaultValue"),F=Z(ae().locale(n.value)),R=Z(ae().locale(n.value).add(1,Na)),{minDate:o,maxDate:M,rangeState:d,ppNs:m,drpNs:L,handleChangeRange:b,handleRangeConfirm:k,handleShortcutClick:u,onSelect:h,parseValue:I}=Ct(l,{defaultValue:D,leftDate:F,rightDate:R,unit:Na,sortDates:v}),c=E(()=>!!g.length),{leftPrevYear:O,rightNextYear:V,leftNextYear:T,rightPrevYear:B,leftLabel:J,rightLabel:z,leftYear:te,rightYear:ne}=ps({unlinkPanels:je(l,"unlinkPanels"),leftDate:F,rightDate:R}),ce=E(()=>l.singlePanel||l.unlinkPanels&&ne.value>te.value+1),U=(w,A=!0)=>{const Q=w.minDate,ie=w.maxDate;M.value===ie&&o.value===Q||(a("calendar-change",[Q.toDate(),ie&&ie.toDate()]),M.value=ie,o.value=Q,A&&k())},f=()=>{let w=null;p!=null&&p.emptyValues&&(w=p.emptyValues.valueOnClear.value),F.value=Xa(e(D),{lang:e(n),unit:"year",unlinkPanels:l.unlinkPanels})[0],R.value=F.value.add(1,"year"),a("pick",w)},G=w=>ka(w,P.value,n.value,r);function v(w,A){l.unlinkPanels&&A?R.value=((w==null?void 0:w.year())||0)===A.year()?A.add(1,Na):A:R.value=F.value.add(1,Na)}const Y=Ya();return Se(()=>l.visible,w=>{!w&&d.value.selecting&&(I(l.parsedValue),h(!1))}),a("set-picker-option",["isValidValue",$a]),a("set-picker-option",["parseUserInput",G]),a("set-picker-option",["handleClear",f]),(w,A)=>($(),q("div",{class:S([e(m).b(),e(L).b(),e(m).is("border",w.border),e(m).is("disabled",e(Y)),{"has-sidebar":!!w.$slots.sidebar||c.value,"single-panel":w.singlePanel}])},[H("div",{class:S(e(m).e("body-wrapper"))},[he(w.$slots,"sidebar",{class:S(e(m).e("sidebar"))}),c.value?($(),q("div",{key:0,class:S(e(m).e("sidebar"))},[($(!0),q(ge,null,Ve(e(g),(Q,ie)=>($(),q("button",{key:ie,type:"button",class:S(e(m).e("shortcut")),disabled:e(Y),onClick:ee=>e(u)(Q)},me(Q.text),11,hs))),128))],2)):se("v-if",!0),H("div",{class:S(e(m).e("body"))},[H("div",{class:S([e(m).e("content"),e(L).e("content"),e(L).is("left",!w.singlePanel)])},[H("div",{class:S(e(L).e("header"))},[H("button",{type:"button",class:S([e(m).e("icon-btn"),"d-arrow-left"]),disabled:e(Y),onClick:A[0]||(A[0]=(...Q)=>e(O)&&e(O)(...Q))},[he(w.$slots,"prev-year",{},()=>[W(e(be),null,{default:le(()=>[W(e(fa))]),_:1})])],10,bs),w.unlinkPanels||w.singlePanel?($(),q("button",{key:0,type:"button",disabled:!ce.value||e(Y),class:S([[e(m).e("icon-btn"),e(m).is("disabled",!ce.value||e(Y))],"d-arrow-right"]),onClick:A[1]||(A[1]=(...Q)=>e(T)&&e(T)(...Q))},[he(w.$slots,"next-year",{},()=>[W(e(be),null,{default:le(()=>[W(e(va))]),_:1})])],10,ys)):se("v-if",!0),H("div",null,me(e(J)),1)],2),W(_a,{"selection-mode":"range",date:F.value,"min-date":e(o),"max-date":e(M),"range-state":e(d),"disabled-date":e(_),disabled:e(Y),"cell-class-name":e(C),onChangerange:e(b),onPick:U,onSelect:e(h)},null,8,["date","min-date","max-date","range-state","disabled-date","disabled","cell-class-name","onChangerange","onSelect"])],2),w.singlePanel?se("v-if",!0):($(),q("div",{key:0,class:S([[e(m).e("content"),e(L).e("content")],"is-right"])},[H("div",{class:S(e(L).e("header"))},[w.unlinkPanels?($(),q("button",{key:0,type:"button",disabled:!ce.value||e(Y),class:S([[e(m).e("icon-btn"),e(m).is("disabled",!ce.value||e(Y))],"d-arrow-left"]),onClick:A[2]||(A[2]=(...Q)=>e(B)&&e(B)(...Q))},[he(w.$slots,"prev-year",{},()=>[W(e(be),null,{default:le(()=>[W(e(fa))]),_:1})])],10,gs)):se("v-if",!0),H("button",{type:"button",class:S([e(m).e("icon-btn"),"d-arrow-right"]),disabled:e(Y),onClick:A[3]||(A[3]=(...Q)=>e(V)&&e(V)(...Q))},[he(w.$slots,"next-year",{},()=>[W(e(be),null,{default:le(()=>[W(e(va))]),_:1})])],10,ks),H("div",null,me(e(z)),1)],2),W(_a,{"selection-mode":"range",date:R.value,"min-date":e(o),"max-date":e(M),"range-state":e(d),"disabled-date":e(_),disabled:e(Y),"cell-class-name":e(C),onChangerange:e(b),onPick:U,onSelect:e(h)},null,8,["date","min-date","max-date","range-state","disabled-date","disabled","cell-class-name","onChangerange","onSelect"])],2))],2)],2)],2))}}),Cs=ws;const Ps=De({...gt}),Ss=["pick","set-picker-option","calendar-change"],Ds=({unlinkPanels:t,leftDate:i,rightDate:l})=>({leftPrevYear:()=>{i.value=i.value.subtract(10,"year"),t.value||(l.value=l.value.subtract(10,"year"))},rightNextYear:()=>{t.value||(i.value=i.value.add(10,"year")),l.value=l.value.add(10,"year")},leftNextYear:()=>{i.value=i.value.add(10,"year")},rightPrevYear:()=>{l.value=l.value.subtract(10,"year")},leftLabel:E(()=>{const g=Math.floor(i.value.year()/10)*10;return`${g}-${g+9}`}),rightLabel:E(()=>{const g=Math.floor(l.value.year()/10)*10;return`${g}-${g+9}`}),leftYear:E(()=>Math.floor(i.value.year()/10)*10+9),rightYear:E(()=>Math.floor(l.value.year()/10)*10)}),Ms=["disabled","onClick"],Vs=["disabled"],$s=["disabled"],_s=["disabled"],Os=["disabled"],ha=10,Da="year";var Ys=Re({name:"DatePickerYearRange",__name:"panel-year-range",props:Ps,emits:Ss,setup(t,{emit:i}){const l=t,a=i,{lang:n}=Ee(),p=Z(ae().locale(n.value)),r=Z(ae().locale(n.value).add(ha,Da)),g=$e(Ra,void 0),_=$e(ea),{shortcuts:C,disabledDate:P,cellClassName:D}=_.props,F=je(_.props,"format"),R=je(_.props,"defaultValue"),{minDate:o,maxDate:M,rangeState:d,ppNs:m,drpNs:L,handleChangeRange:b,handleRangeConfirm:k,handleShortcutClick:u,onSelect:h,parseValue:I}=Ct(l,{defaultValue:R,leftDate:p,rightDate:r,step:ha,unit:Da,sortDates:ie}),{leftPrevYear:c,rightNextYear:O,leftNextYear:V,rightPrevYear:T,leftLabel:B,rightLabel:J,leftYear:z,rightYear:te}=Ds({unlinkPanels:je(l,"unlinkPanels"),leftDate:p,rightDate:r}),ne=Ya(),ce=E(()=>!!C.length),U=E(()=>[m.b(),L.b(),m.is("border",l.border),m.is("disabled",ne.value),{"has-sidebar":!!pt().sidebar||ce.value,"single-panel":l.singlePanel}]),f=E(()=>({content:[m.e("content"),L.e("content"),L.is("left",!l.singlePanel)],arrowLeftBtn:[m.e("icon-btn"),"d-arrow-left"],arrowRightBtn:[m.e("icon-btn"),m.is("disabled",!v.value||ne.value),"d-arrow-right"]})),G=E(()=>({content:[m.e("content"),L.e("content"),"is-right"],arrowLeftBtn:[m.e("icon-btn"),m.is("disabled",!v.value||ne.value),"d-arrow-left"],arrowRightBtn:[m.e("icon-btn"),"d-arrow-right"]})),v=E(()=>l.singlePanel||l.unlinkPanels&&te.value>z.value+1),Y=(ee,re=!0)=>{const ue=ee.minDate,ye=ee.maxDate;M.value===ye&&o.value===ue||(a("calendar-change",[ue.toDate(),ye&&ye.toDate()]),M.value=ye,o.value=ue,re&&k())},w=ee=>ka(ee,F.value,n.value,g),A=ee=>$a(ee)&&(P?!P(ee[0].toDate())&&!P(ee[1].toDate()):!0),Q=()=>{let ee=null;_!=null&&_.emptyValues&&(ee=_.emptyValues.valueOnClear.value);const re=Xa(e(R),{lang:e(n),step:ha,unit:Da,unlinkPanels:l.unlinkPanels});p.value=re[0],r.value=re[1],a("pick",ee)};function ie(ee,re){if(l.unlinkPanels&&re){const ue=(ee==null?void 0:ee.year())||0,ye=re.year();r.value=ue+ha>ye?re.add(ha,Da):re}else r.value=p.value.add(ha,Da)}return Se(()=>l.visible,ee=>{!ee&&d.value.selecting&&(I(l.parsedValue),h(!1))}),a("set-picker-option",["isValidValue",A]),a("set-picker-option",["parseUserInput",w]),a("set-picker-option",["handleClear",Q]),(ee,re)=>($(),q("div",{class:S(U.value)},[H("div",{class:S(e(m).e("body-wrapper"))},[he(ee.$slots,"sidebar",{class:S(e(m).e("sidebar"))}),ce.value?($(),q("div",{key:0,class:S(e(m).e("sidebar"))},[($(!0),q(ge,null,Ve(e(C),(ue,ye)=>($(),q("button",{key:ye,type:"button",class:S(e(m).e("shortcut")),disabled:e(ne),onClick:Ae=>e(u)(ue)},me(ue.text),11,Ms))),128))],2)):se("v-if",!0),H("div",{class:S(e(m).e("body"))},[H("div",{class:S(f.value.content)},[H("div",{class:S(e(L).e("header"))},[H("button",{type:"button",class:S(f.value.arrowLeftBtn),disabled:e(ne),onClick:re[0]||(re[0]=(...ue)=>e(c)&&e(c)(...ue))},[he(ee.$slots,"prev-year",{},()=>[W(e(be),null,{default:le(()=>[W(e(fa))]),_:1})])],10,Vs),ee.unlinkPanels||ee.singlePanel?($(),q("button",{key:0,type:"button",disabled:!v.value||e(ne),class:S(f.value.arrowRightBtn),onClick:re[1]||(re[1]=(...ue)=>e(V)&&e(V)(...ue))},[he(ee.$slots,"next-year",{},()=>[W(e(be),null,{default:le(()=>[W(e(va))]),_:1})])],10,$s)):se("v-if",!0),H("div",null,me(e(B)),1)],2),W(Oa,{"selection-mode":"range",date:p.value,"min-date":e(o),"max-date":e(M),"range-state":e(d),"disabled-date":e(P),disabled:e(ne),"cell-class-name":e(D),onChangerange:e(b),onPick:Y,onSelect:e(h)},null,8,["date","min-date","max-date","range-state","disabled-date","disabled","cell-class-name","onChangerange","onSelect"])],2),ee.singlePanel?se("v-if",!0):($(),q("div",{key:0,class:S(G.value.content)},[H("div",{class:S(e(L).e("header"))},[ee.unlinkPanels?($(),q("button",{key:0,type:"button",disabled:!v.value||e(ne),class:S(G.value.arrowLeftBtn),onClick:re[2]||(re[2]=(...ue)=>e(T)&&e(T)(...ue))},[he(ee.$slots,"prev-year",{},()=>[W(e(be),null,{default:le(()=>[W(e(fa))]),_:1})])],10,_s)):se("v-if",!0),H("button",{type:"button",class:S(G.value.arrowRightBtn),disabled:e(ne),onClick:re[3]||(re[3]=(...ue)=>e(O)&&e(O)(...ue))},[he(ee.$slots,"next-year",{},()=>[W(e(be),null,{default:le(()=>[W(e(va))]),_:1})])],10,Os),H("div",null,me(e(J)),1)],2),W(Oa,{"selection-mode":"range",date:r.value,"min-date":e(o),"max-date":e(M),"range-state":e(d),"disabled-date":e(P),disabled:e(ne),"cell-class-name":e(D),onChangerange:e(b),onPick:Y,onSelect:e(h)},null,8,["date","min-date","max-date","range-state","disabled-date","disabled","cell-class-name","onChangerange","onSelect"])],2))],2)],2)],2))}}),Rs=Ys;const Is=function(t){switch(t){case"daterange":case"datetimerange":return fs;case"monthrange":return Cs;case"yearrange":return Rs;default:return ql}};var Wa={exports:{}},Ts=Wa.exports,Tt;function xs(){return Tt||(Tt=1,(function(t,i){(function(l,a){t.exports=a()})(Ts,(function(){return function(l,a){var n=a.prototype,p=n.format;n.format=function(r){var g=this,_=this.$locale();if(!this.isValid())return p.bind(this)(r);var C=this.$utils(),P=(r||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(D){switch(D){case"Q":return Math.ceil((g.$M+1)/3);case"Do":return _.ordinal(g.$D);case"gggg":return g.weekYear();case"GGGG":return g.isoWeekYear();case"wo":return _.ordinal(g.week(),"W");case"w":case"ww":return C.s(g.week(),D==="w"?1:2,"0");case"W":case"WW":return C.s(g.isoWeek(),D==="W"?1:2,"0");case"k":case"kk":return C.s(String(g.$H===0?24:g.$H),D==="k"?1:2,"0");case"X":return Math.floor(g.$d.getTime()/1e3);case"x":return g.$d.getTime();case"z":return"["+g.offsetName()+"]";case"zzz":return"["+g.offsetName("long")+"]";default:return D}}));return p.bind(this)(P)}}}))})(Wa)),Wa.exports}var Fs=xs();const Ns=sa(Fs);var Ua={exports:{}},Es=Ua.exports,xt;function As(){return xt||(xt=1,(function(t,i){(function(l,a){t.exports=a()})(Es,(function(){var l="week",a="year";return function(n,p,r){var g=p.prototype;g.week=function(_){if(_===void 0&&(_=null),_!==null)return this.add(7*(_-this.week()),"day");var C=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var P=r(this).startOf(a).add(1,a).date(C),D=r(this).endOf(l);if(P.isBefore(D))return 1}var F=r(this).startOf(a).date(C).startOf(l).subtract(1,"millisecond"),R=this.diff(F,l,!0);return R<0?r(this).startOf("week").week():Math.ceil(R)},g.weeks=function(_){return _===void 0&&(_=null),this.week(_)}}}))})(Ua)),Ua.exports}var Bs=As();const Ls=sa(Bs);var Ka={exports:{}},Ws=Ka.exports,Ft;function Us(){return Ft||(Ft=1,(function(t,i){(function(l,a){t.exports=a()})(Ws,(function(){return function(l,a){a.prototype.weekYear=function(){var n=this.month(),p=this.week(),r=this.year();return p===1&&n===11?r+1:n===0&&p>=52?r-1:r}}}))})(Ka)),Ka.exports}var Ks=Us();const js=sa(Ks);var ja={exports:{}},Hs=ja.exports,Nt;function zs(){return Nt||(Nt=1,(function(t,i){(function(l,a){t.exports=a()})(Hs,(function(){return function(l,a,n){a.prototype.dayOfYear=function(p){var r=Math.round((n(this).startOf("day")-n(this).startOf("year"))/864e5)+1;return p==null?r:this.add(p-r,"day")}}}))})(ja)),ja.exports}var qs=zs();const Gs=sa(qs);var Ha={exports:{}},Zs=Ha.exports,Et;function Js(){return Et||(Et=1,(function(t,i){(function(l,a){t.exports=a()})(Zs,(function(){return function(l,a){a.prototype.isSameOrAfter=function(n,p){return this.isSame(n,p)||this.isAfter(n,p)}}}))})(Ha)),Ha.exports}var Qs=Js();const Xs=sa(Qs);var za={exports:{}},er=za.exports,At;function ar(){return At||(At=1,(function(t,i){(function(l,a){t.exports=a()})(er,(function(){return function(l,a){a.prototype.isSameOrBefore=function(n,p){return this.isSame(n,p)||this.isBefore(n,p)}}}))})(za)),za.exports}var tr=ar();const nr=sa(tr);function lr(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!zt(t)}ae.extend(yl);ae.extend(Ns);ae.extend(ml);ae.extend(Ls);ae.extend(js);ae.extend(Gs);ae.extend(Xs);ae.extend(nr);var sr=Re({name:"ElDatePickerPanel",install:null,inheritAttrs:!1,props:gl,emits:[Va,"calendar-change","panel-change","visible-change","clear"],setup(t,{slots:i,emit:l,attrs:a}){const n=Oe("picker-panel");jt($e("EP_PICKER_BASE",void 0))&&ya(ea,{props:ft({...Mn(t)})}),ya(bt,{slots:i,pickerNs:n});const{parsedValue:p,onCalendarChange:r,onPanelChange:g,onSetPickerOption:_,onPick:C}=$e(Jt,()=>nn(t,l),!0);return()=>W(Is(t.type),ba(xn(a,"onPick"),t,{parsedValue:p.value,"onSet-picker-option":_,"onCalendar-change":r,"onPanel-change":g,onClear:()=>l("clear"),onPick:C}),lr(i)?i:{default:()=>[i]})}});const rr=qt(sr),or=De({...tn,type:{type:de(String),default:"date"}});function ir(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!zt(t)}var ur=Re({name:"ElDatePicker",install:null,props:or,emits:[Va],setup(t,{expose:i,emit:l,slots:a}){ya(Ra,E(()=>!t.format)),ya(Zt,ft(je(t,"popperOptions")));const n=Z();i({focus:()=>{var r;(r=n.value)==null||r.focus()},blur:()=>{var r;(r=n.value)==null||r.blur()},handleOpen:()=>{var r;(r=n.value)==null||r.handleOpen()},handleClose:()=>{var r;(r=n.value)==null||r.handleClose()}});const p=r=>{l(Va,r)};return()=>W(el,ba(t,{format:t.format??(Hn[t.type]||"YYYY-MM-DD"),type:t.type,ref:n,"onUpdate:modelValue":p}),{default:r=>W(rr,ba({disabled:t.disabled,editable:t.editable,border:!1},r),ir(a)?a:{default:()=>[a]}),"range-separator":a["range-separator"]})}});const dr=qt(ur);function cr(t){const i=Z(t);let l=null;function a(){p(),i.value=t,l=setInterval(()=>{i.value--,i.value<=0&&(i.value=t)},1e3)}function n(){i.value=t}function p(){l&&(clearInterval(l),l=null)}return Vn(p),{remaining:i,start:a,stop:p,reset:n}}const fr={key:0,class:"log-options"},vr={class:"option-group"},mr={class:"option-group"},pr={class:"option-group"},hr={key:0,class:"countdown"},br={class:"log-content-box"},yr={class:"log-toolbar"},gr={key:0,class:"match-count"},kr={class:"log-pre"},wr=Re({__name:"LogsView",setup(t){const i=Z("system"),l=Z(new Date().toISOString().split("T")[0]),a=Z([]),n=Z(""),p=Z(""),r=Z([]),g=Z(""),_=Z(""),C=Z(""),P=Z(""),D=Z(10),{remaining:F,start:R,stop:o}=cr(10),M=E(()=>{if(!C.value.trim())return{content:P.value,count:0};const V=C.value.toLowerCase().trim(),T=P.value.split(` +`).filter(B=>B.toLowerCase().includes(V));return{content:T.join(` +`),count:T.length}}),d=E(()=>M.value.content),m=E(()=>M.value.count);async function L(){try{if(a.value=await Bn(l.value)||[],a.value.length>0){const V=a.value[0].file;n.value===V?b():n.value=V}else p.value="该日期暂无日志文件"}catch{a.value=[]}}async function b(){if(n.value)try{const V=await Ln(n.value);P.value=V.content||"",p.value=P.value}catch{}}async function k(){try{if(r.value=await Un()||[],r.value.length>0){const V=r.value[0].file;g.value===V?u():g.value=V}else _.value="暂无训练日志"}catch{r.value=[]}}async function u(){if(g.value)try{const V=await Wn(g.value);P.value=V.content||"",_.value=P.value}catch{}}async function h(){i.value==="system"?await b():await u()}const{start:I,stop:c}=An(h,()=>D.value*1e3,{immediate:!1});function O(){if(c(),D.value===0){o();return}R(),I()}return Se(D,O),Se(i,()=>{C.value="",i.value==="system"?L():k()}),Se(n,b),Se(g,u),Kt(()=>{L(),O()}),(V,T)=>{const B=Fn,J=Nn,z=dr,te=cn,ne=dn,ce=Ma,U=la;return $(),ve(En,{title:"查看日志"},{default:le(()=>[W(J,{modelValue:i.value,"onUpdate:modelValue":T[0]||(T[0]=f=>i.value=f),style:{"margin-bottom":"16px"}},{default:le(()=>[W(B,{label:"系统日志",name:"system"}),W(B,{label:"训练日志",name:"training"})]),_:1},8,["modelValue"]),i.value==="system"?($(),q("div",fr,[H("div",vr,[T[6]||(T[6]=H("span",{class:"option-label"},"选择日期:",-1)),W(z,{modelValue:l.value,"onUpdate:modelValue":T[1]||(T[1]=f=>l.value=f),type:"date","value-format":"YYYY-MM-DD",style:{width:"160px"},onChange:L},null,8,["modelValue"])])])):se("",!0),H("div",mr,[T[7]||(T[7]=H("span",{class:"option-label"},"日志类型:",-1)),i.value==="system"?($(),ve(ne,{key:0,modelValue:n.value,"onUpdate:modelValue":T[2]||(T[2]=f=>n.value=f),placeholder:"请选择日志文件",style:{width:"320px"}},{default:le(()=>[($(!0),q(ge,null,Ve(a.value,f=>($(),ve(te,{key:f.file,label:`${f.name} (${f.size})`,value:f.file},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])):($(),ve(ne,{key:1,modelValue:g.value,"onUpdate:modelValue":T[3]||(T[3]=f=>g.value=f),placeholder:"请选择训练日志",style:{width:"320px"}},{default:le(()=>[($(!0),q(ge,null,Ve(r.value,f=>($(),ve(te,{key:f.file,label:`${f.name} (PID: ${f.pid})`,value:f.file},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]))]),H("div",pr,[T[9]||(T[9]=H("span",{class:"option-label"},"自动刷新:",-1)),W(ne,{modelValue:D.value,"onUpdate:modelValue":T[4]||(T[4]=f=>D.value=f),style:{width:"100px"}},{default:le(()=>[W(te,{value:0,label:"关闭"}),W(te,{value:5,label:"5秒"}),W(te,{value:10,label:"10秒"}),W(te,{value:30,label:"30秒"}),W(te,{value:60,label:"60秒"})]),_:1},8,["modelValue"]),D.value>0?($(),q("span",hr,"下次刷新: "+me(e(F))+"秒",1)):se("",!0),W(ce,{onClick:h},{default:le(()=>[...T[8]||(T[8]=[Xe("立即刷新",-1)])]),_:1})]),H("div",br,[H("div",yr,[W(U,{modelValue:C.value,"onUpdate:modelValue":T[5]||(T[5]=f=>C.value=f),placeholder:"搜索日志...",size:"small",clearable:"",style:{width:"240px"}},{prefix:le(()=>[...T[10]||(T[10]=[H("i",{class:"fa fa-search"},null,-1)])]),_:1},8,["modelValue"]),C.value?($(),q("span",gr,me(m.value)+" 条匹配",1)):se("",!0)]),H("pre",kr,me(d.value||(i.value==="system"?p.value:_.value)||"日志内容将在这里显示..."),1)])]),_:1})}}}),Jr=Kn(wr,[["__scopeId","data-v-155e9805"]]);export{Jr as default}; diff --git a/frontend/dist/assets/LogsView-Np1qgq3l.css b/frontend/dist/assets/LogsView-Np1qgq3l.css new file mode 100644 index 0000000..9dadf05 --- /dev/null +++ b/frontend/dist/assets/LogsView-Np1qgq3l.css @@ -0,0 +1 @@ +.el-date-table{-webkit-user-select:none;user-select:none;font-size:12px}.el-date-table.is-week-mode .el-date-table__row:hover .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:var(--el-datepicker-text-color)}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child .el-date-table-cell{border-top-left-radius:15px;border-bottom-left-radius:15px;margin-left:5px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child .el-date-table-cell{border-top-right-radius:15px;border-bottom-right-radius:15px;margin-right:5px}.el-date-table.is-week-mode .el-date-table__row.current .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td{box-sizing:border-box;text-align:center;cursor:pointer;width:32px;height:30px;padding:4px 0;position:relative}.el-date-table td .el-date-table-cell{box-sizing:border-box;height:30px;padding:3px 0}.el-date-table td .el-date-table-cell .el-date-table-cell__text{border-radius:50%;width:24px;height:24px;margin:0 auto;line-height:24px;display:block;position:absolute;left:50%;transform:translate(-50%)}.el-date-table td.next-month,.el-date-table td.prev-month{color:var(--el-datepicker-off-text-color)}.el-date-table td.today{position:relative}.el-date-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-date-table td.today.start-date .el-date-table-cell__text,.el-date-table td.today.end-date .el-date-table-cell__text{color:#fff}.el-date-table td.available:hover{color:var(--el-datepicker-hover-text-color)}.el-date-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-date-table td.current:not(.disabled) .el-date-table-cell__text{color:#fff;background-color:var(--el-datepicker-active-color)}.el-date-table td.current:not(.disabled):focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-date-table td.start-date .el-date-table-cell,.el-date-table td.end-date .el-date-table-cell{color:#fff}.el-date-table td.start-date .el-date-table-cell__text,.el-date-table td.end-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color)}.el-date-table td.start-date .el-date-table-cell{border-top-left-radius:15px;border-bottom-left-radius:15px;margin-left:5px}.el-date-table td.end-date .el-date-table-cell{border-top-right-radius:15px;border-bottom-right-radius:15px;margin-right:5px}.el-date-table td.disabled .el-date-table-cell{background-color:var(--el-fill-color-light);opacity:1;cursor:not-allowed;color:var(--el-text-color-placeholder)}.el-date-table td.selected .el-date-table-cell{border-radius:15px;margin-left:5px;margin-right:5px}.el-date-table td.selected .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff;border-radius:15px}.el-date-table td.week{color:var(--el-datepicker-off-text-color);cursor:default;font-size:80%}.el-date-table td:focus{outline:none}.el-date-table th{color:var(--el-datepicker-header-text-color);border-bottom:solid 1px var(--el-border-color-lighter);padding:5px;font-weight:400}.el-date-table th.el-date-table__week-header{width:24px;padding:0}.el-month-table{border-collapse:collapse;margin:-1px;font-size:12px}.el-month-table td{text-align:center;cursor:pointer;width:68px;padding:8px 0;position:relative}.el-month-table td .el-date-table-cell{box-sizing:border-box;height:48px;padding:6px 0}.el-month-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-month-table td.today.start-date .el-date-table-cell__text,.el-month-table td.today.end-date .el-date-table-cell__text{color:#fff}.el-month-table td.disabled .el-date-table-cell__text{background-color:var(--el-fill-color-light);cursor:not-allowed;color:var(--el-text-color-placeholder)}.el-month-table td.disabled .el-date-table-cell__text:hover{color:var(--el-text-color-placeholder)}.el-month-table td .el-date-table-cell__text{width:54px;height:36px;color:var(--el-datepicker-text-color);border-radius:18px;margin:0 auto;line-height:36px;display:block;position:absolute;left:50%;transform:translate(-50%)}.el-month-table td .el-date-table-cell__text:hover{color:var(--el-datepicker-hover-text-color)}.el-month-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-month-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-month-table td.start-date .el-date-table-cell,.el-month-table td.end-date .el-date-table-cell{color:#fff}.el-month-table td.start-date .el-date-table-cell__text,.el-month-table td.end-date .el-date-table-cell__text{color:#fff;background-color:var(--el-datepicker-active-color)}.el-month-table td.start-date .el-date-table-cell{border-top-left-radius:24px;border-bottom-left-radius:24px;margin-left:3px}.el-month-table td.end-date .el-date-table-cell{border-top-right-radius:24px;border-bottom-right-radius:24px;margin-right:3px}.el-month-table td.current:not(.disabled) .el-date-table-cell{border-radius:24px;margin-left:3px;margin-right:3px}.el-month-table td.current:not(.disabled) .el-date-table-cell__text{color:#fff;background-color:var(--el-datepicker-active-color)}.el-month-table td:focus-visible{outline:none}.el-month-table td:focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-year-table{border-collapse:collapse;margin:-1px;font-size:12px}.el-year-table .el-icon{color:var(--el-datepicker-icon-color)}.el-year-table td{text-align:center;cursor:pointer;width:68px;padding:8px 0;position:relative}.el-year-table td .el-date-table-cell{box-sizing:border-box;height:48px;padding:6px 0}.el-year-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-year-table td.today.start-date .el-date-table-cell__text,.el-year-table td.today.end-date .el-date-table-cell__text{color:#fff}.el-year-table td.disabled .el-date-table-cell__text{background-color:var(--el-fill-color-light);cursor:not-allowed;color:var(--el-text-color-placeholder)}.el-year-table td.disabled .el-date-table-cell__text:hover{color:var(--el-text-color-placeholder)}.el-year-table td .el-date-table-cell__text{width:60px;height:36px;color:var(--el-datepicker-text-color);border-radius:18px;margin:0 auto;line-height:36px;display:block;position:absolute;left:50%;transform:translate(-50%)}.el-year-table td .el-date-table-cell__text:hover{color:var(--el-datepicker-hover-text-color)}.el-year-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-year-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-year-table td.start-date .el-date-table-cell,.el-year-table td.end-date .el-date-table-cell{color:#fff}.el-year-table td.start-date .el-date-table-cell__text,.el-year-table td.end-date .el-date-table-cell__text{color:#fff;background-color:var(--el-datepicker-active-color)}.el-year-table td.start-date .el-date-table-cell{border-top-left-radius:24px;border-bottom-left-radius:24px}.el-year-table td.end-date .el-date-table-cell{border-top-right-radius:24px;border-bottom-right-radius:24px}.el-year-table td.current:not(.disabled) .el-date-table-cell__text{color:#fff;background-color:var(--el-datepicker-active-color)}.el-year-table td:focus-visible{outline:none}.el-year-table td:focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{vertical-align:top;width:50%;max-height:192px;display:inline-block;position:relative;overflow:auto}.el-time-spinner__wrapper.el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__wrapper.is-arrow{box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:default}.el-time-spinner__arrow{color:var(--el-text-color-secondary);width:100%;z-index:var(--el-index-normal);text-align:center;cursor:pointer;height:30px;font-size:12px;line-height:30px;position:absolute;left:0}.el-time-spinner__arrow:hover{color:var(--el-color-primary)}.el-time-spinner__arrow.arrow-up{top:10px}.el-time-spinner__arrow.arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__input.el-input .el-input__inner{text-align:center;padding:0}.el-time-spinner__list{text-align:center;margin:0;padding:0;list-style:none}.el-time-spinner__list:after,.el-time-spinner__list:before{content:"";width:100%;height:80px;display:block}.el-time-spinner__item{height:32px;color:var(--el-text-color-regular);font-size:12px;line-height:32px}.el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:pointer}.el-time-spinner__item.is-active:not(.is-disabled){color:var(--el-text-color-primary);font-weight:700}.el-time-spinner__item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:top;transform:scaleY(1)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:bottom;transform:scaleY(1)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:0 0;transform:scale(1)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-leave-active,.el-collapse-transition-enter-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-picker__popper{--el-datepicker-border-color:var(--el-disabled-border-color)}.el-picker__popper.el-popper{background:var(--el-bg-color-overlay);border:1px solid var(--el-datepicker-border-color);box-shadow:var(--el-box-shadow-light)}.el-picker__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-datepicker-border-color)}.el-picker__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-top-color:#0000;border-left-color:#0000}.el-picker__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:#0000;border-right-color:#0000}.el-picker__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:#0000;border-left-color:#0000}.el-picker__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-top-color:#0000;border-right-color:#0000}.el-date-editor{--el-date-editor-width:220px;--el-date-editor-monthrange-width:300px;--el-date-editor-daterange-width:350px;--el-date-editor-datetimerange-width:400px;--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;text-align:left;vertical-align:middle;position:relative}.el-date-editor.el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset}.el-date-editor.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-date-editor.is-focus .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-date-editor.el-input,.el-date-editor.el-input__wrapper{width:var(--el-date-editor-width);height:var(--el-input-height,var(--el-component-size))}.el-date-editor--monthrange{--el-date-editor-width:var(--el-date-editor-monthrange-width)}.el-date-editor--daterange,.el-date-editor--timerange{--el-date-editor-width:var(--el-date-editor-daterange-width)}.el-date-editor--datetimerange{--el-date-editor-width:var(--el-date-editor-datetimerange-width)}.el-date-editor--dates .el-input__wrapper{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .close-icon,.el-date-editor .clear-icon{cursor:pointer}.el-date-editor .clear-icon:hover{color:var(--el-input-clear-hover-color)}.el-date-editor .el-range__icon{height:inherit;color:var(--el-text-color-placeholder);float:left;font-size:14px}.el-date-editor .el-range__icon svg{vertical-align:middle}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;text-align:center;width:39%;height:30px;line-height:30px;font-size:var(--el-font-size-base);color:var(--el-text-color-regular);background-color:#0000;border:none;outline:none;margin:0;padding:0;display:inline-block}.el-date-editor .el-range-input::placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-separator{overflow-wrap:break-word;height:100%;color:var(--el-text-color-primary);flex:1;justify-content:center;align-items:center;margin:0;padding:0 5px;font-size:14px;display:inline-flex}.el-date-editor .el-range__close-icon{color:var(--el-text-color-placeholder);height:inherit;width:unset;cursor:pointer;font-size:14px}.el-date-editor .el-range__close-icon:hover{color:var(--el-input-clear-hover-color)}.el-date-editor .el-range__close-icon svg{vertical-align:middle}.el-date-editor .el-range__close-icon--hidden{opacity:0;visibility:hidden}.el-range-editor.el-input__wrapper{vertical-align:middle;align-items:center;padding:0 10px;display:inline-flex}.el-range-editor.is-active,.el-range-editor.is-active:hover{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-range-editor--large{line-height:var(--el-component-size-large)}.el-range-editor--large.el-input__wrapper{height:var(--el-component-size-large)}.el-range-editor--large .el-range-separator{font-size:14px;line-height:40px}.el-range-editor--large .el-range-input{height:38px;font-size:14px;line-height:38px}.el-range-editor--small{line-height:var(--el-component-size-small)}.el-range-editor--small.el-input__wrapper{height:var(--el-component-size-small)}.el-range-editor--small .el-range-separator{font-size:12px;line-height:24px}.el-range-editor--small .el-range-input{height:22px;font-size:12px;line-height:22px}.el-range-editor.is-disabled{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled:hover,.el-range-editor.is-disabled:focus{border-color:var(--el-disabled-border-color)}.el-range-editor.is-disabled input{background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled input::placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled .el-range-separator{color:var(--el-disabled-text-color)}.el-picker-panel{color:var(--el-text-color-regular);background:var(--el-datepicker-bg-color);border-radius:var(--el-popper-border-radius,var(--el-border-radius-base));line-height:30px}.el-picker-panel .el-time-panel{border:solid 1px var(--el-datepicker-border-color);background-color:var(--el-datepicker-bg-color);box-shadow:var(--el-box-shadow-light);margin:5px 0}.el-picker-panel__body:after,.el-picker-panel__body-wrapper:after{content:"";clear:both;display:table}.el-picker-panel__content{margin:15px;position:relative}.el-picker-panel__footer{border-top:1px solid var(--el-datepicker-inner-border-color);text-align:right;background-color:var(--el-datepicker-bg-color);padding:4px 12px;font-size:0;position:relative}.el-picker-panel__shortcut{width:100%;color:var(--el-datepicker-text-color);text-align:left;cursor:pointer;background-color:#0000;border:0;outline:none;padding-left:12px;font-size:14px;line-height:28px;display:block}.el-picker-panel__shortcut:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__shortcut.active{color:var(--el-datepicker-active-color);background-color:#e6f1fe}.el-picker-panel__btn{border:1px solid var(--el-fill-color-darker);color:var(--el-text-color-primary);cursor:pointer;background-color:#0000;border-radius:2px;outline:none;padding:0 20px;font-size:12px;line-height:24px}.el-picker-panel__btn[disabled]{color:var(--el-text-color-disabled);cursor:not-allowed}.el-picker-panel__icon-btn{color:var(--el-datepicker-icon-color);cursor:pointer;background:0 0;border:0;outline:none;margin-top:8px;padding:1px 6px;font-size:12px;line-height:1}.el-picker-panel__icon-btn:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn:focus-visible{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn.is-disabled{color:var(--el-text-color-disabled)}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__icon-btn.is-disabled .el-icon{cursor:inherit}.el-picker-panel__icon-btn .el-icon{cursor:pointer;font-size:inherit}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel.is-disabled .el-picker-panel__prev-btn{color:var(--el-text-color-disabled)}.el-picker-panel.is-disabled .el-picker-panel__prev-btn:hover{cursor:not-allowed}.el-picker-panel.is-disabled .el-picker-panel__prev-btn .el-icon{cursor:inherit}.el-picker-panel.is-disabled .el-picker-panel__next-btn{color:var(--el-text-color-disabled)}.el-picker-panel.is-disabled .el-picker-panel__next-btn:hover{cursor:not-allowed}.el-picker-panel.is-disabled .el-picker-panel__next-btn .el-icon{cursor:inherit}.el-picker-panel.is-disabled .el-picker-panel__icon-btn{color:var(--el-text-color-disabled)}.el-picker-panel.is-disabled .el-picker-panel__icon-btn:hover{cursor:not-allowed}.el-picker-panel.is-disabled .el-picker-panel__icon-btn .el-icon{cursor:inherit}.el-picker-panel.is-disabled .el-picker-panel__shortcut{color:var(--el-text-color-disabled)}.el-picker-panel.is-disabled .el-picker-panel__shortcut:hover{cursor:not-allowed}.el-picker-panel.is-disabled .el-picker-panel__shortcut .el-icon{cursor:inherit}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{border-right:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;width:110px;padding-top:6px;position:absolute;top:0;bottom:0;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-date-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary);--el-datepicker-bg-color:var(--el-bg-color-overlay);--el-fill-color-blank:var(--el-datepicker-bg-color);width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{padding:0 5px;display:table-cell;position:relative}.el-date-picker__time-header{border-bottom:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;width:100%;padding:8px 5px 5px;font-size:12px;display:table;position:relative}.el-date-picker__header{text-align:center;padding:12px 12px 0}.el-date-picker__header--bordered{border-bottom:solid 1px var(--el-border-color-lighter);margin-bottom:0;padding-bottom:12px}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{text-align:center;cursor:pointer;color:var(--el-text-color-regular);padding:0 5px;font-size:16px;font-weight:500;line-height:22px}.el-date-picker__header-label:hover{color:var(--el-datepicker-hover-text-color)}.el-date-picker__header-label:focus-visible{color:var(--el-datepicker-hover-text-color);outline:none}.el-date-picker__header-label.active{color:var(--el-datepicker-active-color)}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{text-align:center;padding:10px}.el-date-picker__time-label{float:left;cursor:pointer;margin-left:10px;line-height:30px}.el-date-picker .el-time-panel{position:absolute}.el-date-picker.is-disabled .el-date-picker__header-label{color:var(--el-text-color-disabled)}.el-date-picker.is-disabled .el-date-picker__header-label:hover{cursor:not-allowed}.el-date-picker.is-disabled .el-date-picker__header-label .el-icon{cursor:inherit}.el-date-range-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary);--el-datepicker-bg-color:var(--el-bg-color-overlay);width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker.single-panel{width:322px}.el-date-range-picker.single-panel .el-picker-panel__body{min-width:322px}.el-date-range-picker.single-panel.has-sidebar.has-time{width:434px}.el-date-range-picker.single-panel.has-sidebar{width:438px}.el-date-range-picker.single-panel .el-picker-panel__content{width:292px;margin:15px;padding:0;display:block;position:relative}.el-date-range-picker__header{text-align:center;height:28px;position:relative}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{margin-right:50px;font-size:16px;font-weight:500}.el-date-range-picker__header-label{text-align:center;cursor:pointer;color:var(--el-text-color-regular);padding:0 5px;font-size:16px;font-weight:500;line-height:22px}.el-date-range-picker__header-label:hover{color:var(--el-datepicker-hover-text-color)}.el-date-range-picker__header-label:focus-visible{color:var(--el-datepicker-hover-text-color);outline:none}.el-date-range-picker__header-label.active{color:var(--el-datepicker-active-color)}.el-date-range-picker__content{box-sizing:border-box;width:50%;margin:0;padding:16px;display:table-cell}.el-date-range-picker__content.is-left{border-right:1px solid var(--el-datepicker-inner-border-color)}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{border-bottom:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;width:100%;padding:8px 5px 5px;font-size:12px;display:table;position:relative}.el-date-range-picker__time-header>.el-icon-arrow-right{vertical-align:middle;color:var(--el-datepicker-icon-color);font-size:20px;display:table-cell}.el-date-range-picker__time-picker-wrap{padding:0 5px;display:table-cell;position:relative}.el-date-range-picker__time-picker-wrap .el-picker-panel{z-index:1;background:#fff;position:absolute;top:13px;right:0}.el-date-range-picker__time-picker-wrap .el-time-panel{position:absolute}.el-date-range-picker.is-disabled .el-date-range-picker__header-label{color:var(--el-text-color-disabled)}.el-date-range-picker.is-disabled .el-date-range-picker__header-label:hover{cursor:not-allowed}.el-date-range-picker.is-disabled .el-date-range-picker__header-label .el-icon{cursor:inherit}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{text-align:center;z-index:1;padding:10px;position:relative}.el-time-range-picker__cell{box-sizing:border-box;width:50%;margin:0;padding:4px 7px 7px;display:inline-block}.el-time-range-picker__header{text-align:center;margin-bottom:5px;font-size:14px}.el-time-range-picker__body{border:1px solid var(--el-datepicker-border-color);border-radius:2px}.el-time-panel{width:180px;z-index:var(--el-index-top);-webkit-user-select:none;user-select:none;box-sizing:content-box;border-radius:2px;position:relative;left:0}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content:after,.el-time-panel__content:before{content:"";z-index:-1;box-sizing:border-box;text-align:left;height:32px;margin-top:-16px;padding-top:6px;position:absolute;top:50%;left:0;right:0}.el-time-panel__content:after{margin-left:12%;margin-right:12%;left:50%}.el-time-panel__content:before{border-top:1px solid var(--el-border-color-light);border-bottom:1px solid var(--el-border-color-light);margin-left:12%;margin-right:12%;padding-left:50%}.el-time-panel__content.has-seconds:after{left:66.6667%}.el-time-panel__content.has-seconds:before{padding-left:33.3333%}.el-time-panel__footer{border-top:1px solid var(--el-timepicker-inner-border-color,var(--el-border-color-light));text-align:right;box-sizing:border-box;height:36px;padding:4px;line-height:25px}.el-time-panel__btn{cursor:pointer;color:var(--el-text-color-primary);background-color:#0000;border:none;outline:none;margin:0 5px;padding:0 5px;font-size:12px;line-height:28px}.el-time-panel__btn.confirm{color:var(--el-timepicker-active-color,var(--el-color-primary));font-weight:800}.el-picker-panel.is-border{border:solid 1px var(--el-border-color-lighter)}.el-picker-panel.is-border .el-picker-panel__body-wrapper{position:relative}.el-picker-panel.is-border.el-picker-panel [slot=sidebar],.el-picker-panel.is-border.el-picker-panel__sidebar{border-right:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;width:110px;height:100%;padding-top:6px;position:absolute;top:0;overflow:auto}.log-options[data-v-155e9805]{margin-bottom:16px}.option-group[data-v-155e9805]{display:flex;align-items:center;gap:12px;margin-bottom:16px}.option-group .option-label[data-v-155e9805]{font-size:13px;color:#606266;white-space:nowrap}.option-group .countdown[data-v-155e9805]{font-size:12px;color:#909399}.log-content-box[data-v-155e9805]{border:1px solid #ebeef5;border-radius:6px;overflow:hidden}.log-toolbar[data-v-155e9805]{display:flex;align-items:center;gap:12px;padding:8px 16px;background:#f5f7fa;border-bottom:1px solid #ebeef5}.log-toolbar .match-count[data-v-155e9805]{font-size:12px;color:#909399}.log-pre[data-v-155e9805]{margin:0;padding:16px;background:#1e1e1e;color:#d4d4d4;font-family:SFMono-Regular,Consolas,monospace;font-size:12px;line-height:1.6;max-height:600px;overflow:auto;white-space:pre-wrap;word-wrap:break-word} diff --git a/frontend/dist/assets/MainLayout-C4Xu6RsD.css b/frontend/dist/assets/MainLayout-C4Xu6RsD.css new file mode 100644 index 0000000..9dfe595 --- /dev/null +++ b/frontend/dist/assets/MainLayout-C4Xu6RsD.css @@ -0,0 +1,4 @@ +@charset "UTF-8";/*! +* Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome +* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) +*/@font-face{font-family:FontAwesome;src:url(../fonts/fontawesome-webfont.eot?v=4.7.0);src:url(../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0) format("embedded-opentype"),url(/assets/fontawesome-webfont-B-jkhYfk.woff2?v=4.7.0) format("woff2"),url(/assets/fontawesome-webfont-CDK5bt4p.woff?v=4.7.0) format("woff"),url(/assets/fontawesome-webfont-CQDK8MU3.ttf?v=4.7.0) format("truetype"),url(../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa{display:inline-block;font: 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scaleY(-1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-remove:before,.fa-close:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-gear:before,.fa-cog:before{content:""}.fa-trash-o:before{content:""}.fa-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-rotate-right:before,.fa-repeat:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before{content:""}.fa-check-circle:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-warning:before,.fa-exclamation-triangle:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-gears:before,.fa-cogs:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before{content:""}.fa-arrow-circle-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-save:before,.fa-floppy-o:before{content:""}.fa-square:before{content:""}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-unsorted:before,.fa-sort:before{content:""}.fa-sort-down:before,.fa-sort-desc:before{content:""}.fa-sort-up:before,.fa-sort-asc:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-legal:before,.fa-gavel:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-flash:before,.fa-bolt:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-paste:before,.fa-clipboard:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-unlink:before,.fa-chain-broken:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:""}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:""}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:""}.fa-euro:before,.fa-eur:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-rupee:before,.fa-inr:before{content:""}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:""}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:""}.fa-won:before,.fa-krw:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-turkish-lira:before,.fa-try:before{content:""}.fa-plus-square-o:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-institution:before,.fa-bank:before,.fa-university:before{content:""}.fa-mortar-board:before,.fa-graduation-cap:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:""}.fa-file-zip-o:before,.fa-file-archive-o:before{content:""}.fa-file-sound-o:before,.fa-file-audio-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:""}.fa-ge:before,.fa-empire:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-send:before,.fa-paper-plane:before{content:""}.fa-send-o:before,.fa-paper-plane-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-hotel:before,.fa-bed:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-yc:before,.fa-y-combinator:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-tv:before,.fa-television:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:""}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-signing:before,.fa-sign-language:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-vcard:before,.fa-address-card:before{content:""}.fa-vcard-o:before,.fa-address-card-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:top;transform:scaleY(1)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:bottom;transform:scaleY(1)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:0 0;transform:scale(1)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-leave-active,.el-collapse-transition-enter-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}:root{--el-menu-active-color:var(--el-color-primary);--el-menu-text-color:var(--el-text-color-primary);--el-menu-hover-text-color:var(--el-color-primary);--el-menu-bg-color:var(--el-fill-color-blank);--el-menu-hover-bg-color:var(--el-color-primary-light-9);--el-menu-item-height:56px;--el-menu-sub-item-height:calc(var(--el-menu-item-height) - 6px);--el-menu-horizontal-height:60px;--el-menu-horizontal-sub-item-height:36px;--el-menu-item-font-size:var(--el-font-size-base);--el-menu-item-hover-fill:var(--el-color-primary-light-9);--el-menu-border-color:var(--el-border-color);--el-menu-base-level-padding:20px;--el-menu-level-padding:20px;--el-menu-icon-width:24px}.el-menu{border-right:solid 1px var(--el-menu-border-color);background-color:var(--el-menu-bg-color);box-sizing:border-box;margin:0;padding-left:0;list-style:none;position:relative}.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-sub-menu__title,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item-group__title{white-space:nowrap;padding-left:calc(var(--el-menu-base-level-padding) + var(--el-menu-level) * var(--el-menu-level-padding))}.el-menu:not(.el-menu--collapse) .el-sub-menu__title{padding-right:calc(var(--el-menu-base-level-padding) + var(--el-menu-icon-width))}.el-menu--horizontal{height:var(--el-menu-horizontal-height);border-right:none;flex-wrap:nowrap;display:flex}.el-menu--horizontal.el-menu--popup-container{height:unset}.el-menu--horizontal.el-menu{border-bottom:solid 1px var(--el-menu-border-color)}.el-menu--horizontal>.el-menu-item{height:100%;color:var(--el-menu-text-color);border-bottom:2px solid #0000;justify-content:center;align-items:center;margin:0;display:inline-flex}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-sub-menu:focus,.el-menu--horizontal>.el-sub-menu:hover{outline:none}.el-menu--horizontal>.el-sub-menu:hover .el-sub-menu__title{color:var(--el-menu-hover-text-color)}.el-menu--horizontal>.el-sub-menu.is-active .el-sub-menu__title{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title{height:100%;color:var(--el-menu-text-color);border-bottom:2px solid #0000}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title:hover{background-color:var(--el-menu-bg-color)}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-sub-menu__title{background-color:var(--el-menu-bg-color);height:var(--el-menu-horizontal-sub-item-height);line-height:var(--el-menu-horizontal-sub-item-height);color:var(--el-menu-text-color);align-items:center;padding:0 10px;display:flex}.el-menu--horizontal .el-menu .el-sub-menu__title{padding-right:40px}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-menu-item.is-active:hover,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title:hover{color:var(--el-menu-active-color)}.el-menu--horizontal .el-menu-item:not(.is-disabled):hover,.el-menu--horizontal .el-menu-item:not(.is-disabled):focus{color:var(--el-menu-active-color,var(--el-menu-hover-text-color));background-color:var(--el-menu-hover-bg-color);outline:none}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)!important}.el-menu--collapse{width:calc(var(--el-menu-icon-width) + var(--el-menu-base-level-padding) * 2)}.el-menu--collapse>.el-menu-item [class^=el-icon],.el-menu--collapse>.el-sub-menu>.el-sub-menu__title [class^=el-icon],.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title [class^=el-icon]{vertical-align:middle;width:var(--el-menu-icon-width);text-align:center;margin:0}.el-menu--collapse>.el-menu-item .el-sub-menu__icon-arrow,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow,.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item>span,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title>span,.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title>span{visibility:hidden;width:0;height:0;display:inline-block;overflow:hidden}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-menu .el-sub-menu{min-width:200px}.el-menu--collapse .el-sub-menu.is-active .el-sub-menu__title{color:var(--el-menu-active-color)}.el-menu--popup{z-index:100;border-radius:var(--el-border-radius-small);min-width:200px;box-shadow:var(--el-box-shadow-light);border:none;padding:5px 0}.el-menu .el-icon{flex-shrink:0}.el-menu-item{height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);font-size:var(--el-menu-item-font-size);color:var(--el-menu-text-color);padding:0 var(--el-menu-base-level-padding);cursor:pointer;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);box-sizing:border-box;white-space:nowrap;align-items:center;list-style:none;display:flex;position:relative}.el-menu-item *{vertical-align:bottom}.el-menu-item i{color:inherit}.el-menu-item:hover,.el-menu-item:focus{outline:none}.el-menu-item:hover{background-color:var(--el-menu-hover-bg-color)}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon]{width:var(--el-menu-icon-width);text-align:center;vertical-align:middle;margin-right:5px;font-size:18px}.el-menu-item.is-active{color:var(--el-menu-active-color)}.el-menu-item.is-active i{color:inherit}.el-menu-item .el-menu-tooltip__trigger{box-sizing:border-box;width:100%;height:100%;padding:0 var(--el-menu-base-level-padding);align-items:center;display:inline-flex;position:absolute;top:0;left:0}.el-sub-menu{margin:0;padding-left:0;list-style:none}.el-sub-menu__title{height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);font-size:var(--el-menu-item-font-size);color:var(--el-menu-text-color);padding:0 var(--el-menu-base-level-padding);cursor:pointer;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);box-sizing:border-box;white-space:nowrap;align-items:center;list-style:none;display:flex;position:relative}.el-sub-menu__title *{vertical-align:bottom}.el-sub-menu__title i{color:inherit}.el-sub-menu__title:hover,.el-sub-menu__title:focus{outline:none}.el-sub-menu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-sub-menu__title:hover{background-color:var(--el-menu-hover-bg-color)}.el-sub-menu .el-menu{border:none}.el-sub-menu .el-menu-item{height:var(--el-menu-sub-item-height);line-height:var(--el-menu-sub-item-height)}.el-sub-menu.el-sub-menu__hide-arrow .el-sub-menu__title{padding-right:var(--el-menu-base-level-padding)}.el-sub-menu__hide-arrow .el-sub-menu__icon-arrow{display:none!important}.el-sub-menu.is-active .el-sub-menu__title{border-bottom-color:var(--el-menu-active-color)}.el-sub-menu.is-disabled .el-sub-menu__title,.el-sub-menu.is-disabled .el-menu-item{opacity:.25;cursor:not-allowed;background:0 0!important}.el-sub-menu .el-icon{vertical-align:middle;width:var(--el-menu-icon-width);text-align:center;margin-right:5px;font-size:18px}.el-sub-menu .el-icon.el-sub-menu__icon-more{margin-right:0!important}.el-sub-menu .el-sub-menu__icon-arrow{top:50%;right:var(--el-menu-base-level-padding);transition:transform var(--el-transition-duration);width:inherit;margin-top:-6px;margin-right:0;font-size:12px;position:absolute}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px var(--el-menu-base-level-padding);color:var(--el-text-color-secondary);font-size:12px;line-height:normal}.horizontal-collapse-transition .el-sub-menu__title .el-sub-menu__icon-arrow{transition:var(--el-transition-duration-fast);opacity:0}.el-popper,.el-menu--popup-container,.el-menu{outline:none}.app-sidebar[data-v-79462f28]{width:240px;flex-shrink:0;height:100vh;background-color:var(--sidebar-bg);display:flex;flex-direction:column;color:var(--sidebar-text);box-shadow:4px 0 24px #00000005;z-index:100;border-right:1px solid #e2e8f0}.sidebar-logo[data-v-79462f28]{display:flex;align-items:center;padding:24px 20px;margin-bottom:8px}.sidebar-logo .sidebar-logo-img[data-v-79462f28]{width:36px;height:36px;object-fit:contain;margin-right:12px}.sidebar-logo .logo-text[data-v-79462f28]{color:#334155;font-weight:600;font-size:16px;letter-spacing:.5px;white-space:nowrap}.sidebar-nav[data-v-79462f28]{flex:1;min-height:0;padding:0 12px}[data-v-79462f28] .nav-scrollbar-wrap{overflow-x:hidden}.sidebar-menu[data-v-79462f28]{border-right:none;background:transparent}.sidebar-menu[data-v-79462f28] .el-menu-item{height:46px;line-height:46px;margin-bottom:4px;border-radius:8px;padding:0 16px!important;transition:all .3s ease}.sidebar-menu[data-v-79462f28] .el-menu-item .fa{width:20px;text-align:center;margin-right:10px;font-size:16px;transition:transform .2s}.sidebar-menu[data-v-79462f28] .el-menu-item:hover{background-color:#00000008!important;color:var(--sidebar-active-text)!important}.sidebar-menu[data-v-79462f28] .el-menu-item:hover .fa{transform:scale(1.1)}.sidebar-menu[data-v-79462f28] .el-menu-item.is-active{background-color:var(--sidebar-active-bg)!important;color:var(--sidebar-active-text)!important;font-weight:600}.sidebar-menu[data-v-79462f28] .el-menu-item.is-active .fa{color:inherit}.sidebar-section-title[data-v-79462f28]{padding:16px 16px 8px;font-size:11px;color:#64748b;font-weight:600;text-transform:uppercase;letter-spacing:1px}.sidebar-footer[data-v-79462f28]{padding:20px;background:transparent;border-top:1px solid #e2e8f0}.sidebar-footer .footer-user[data-v-79462f28]{display:flex;align-items:center;background:#fff;padding:10px;border-radius:12px;border:1px solid #e2e8f0}.sidebar-footer .footer-user .user-avatar[data-v-79462f28]{border:2px solid #e2e8f0}.sidebar-footer .footer-user .user-info[data-v-79462f28]{flex:1;margin-left:12px;display:flex;flex-direction:column;overflow:hidden}.sidebar-footer .footer-user .user-info .user-name[data-v-79462f28]{color:#334155;font-size:14px;font-weight:600;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.sidebar-footer .footer-user .user-info .user-role[data-v-79462f28]{color:#64748b;font-size:11px;margin-top:2px}.sidebar-footer .footer-user .logout-btn[data-v-79462f28]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:8px;color:#94a3b8;cursor:pointer;transition:all .2s}.sidebar-footer .footer-user .logout-btn[data-v-79462f28]:hover{background:#ef44441a;color:var(--danger-color)}.app-header[data-v-f7c0063e]{height:var(--header-height);background:#ffffffd9;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid rgba(0,0,0,.04);box-shadow:0 1px 12px #00000005;display:flex;align-items:center;justify-content:space-between;padding:0 24px;flex-shrink:0;position:sticky;top:0;z-index:50}.header-left .back-btn[data-v-f7c0063e]{display:flex;align-items:center;color:#64748b;font-weight:500;transition:all .2s}.header-left .back-btn .back-icon-wrap[data-v-f7c0063e]{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:#f1f5f9;border-radius:8px;margin-right:8px;transition:all .2s}.header-left .back-btn[data-v-f7c0063e]:hover{color:var(--primary-color)}.header-left .back-btn:hover .back-icon-wrap[data-v-f7c0063e]{background:#4f46e51a;color:var(--primary-color)}.header-right[data-v-f7c0063e]{display:flex;align-items:center;gap:20px}.metrics-dashboard[data-v-f7c0063e]{display:flex;align-items:center;gap:12px;cursor:pointer;padding:4px 6px;border-radius:12px;transition:background .2s}.metrics-dashboard[data-v-f7c0063e]:hover{background:#f8fafc}.metrics-dashboard .metric-badge[data-v-f7c0063e]{display:flex;align-items:center;background:#f1f5f9;padding:4px 10px;border-radius:8px;font-size:13px;font-weight:600;color:#475569;border:1px solid transparent;transition:all .2s}.metrics-dashboard .metric-badge[data-v-f7c0063e]:hover{background:#fff;border-color:#e2e8f0;box-shadow:0 2px 8px #0000000a}.metrics-dashboard .metric-badge .icon[data-v-f7c0063e]{margin-right:6px;font-size:14px}.metrics-dashboard .metric-badge .icon.cpu[data-v-f7c0063e]{color:var(--primary-color)}.metrics-dashboard .metric-badge .icon.mem[data-v-f7c0063e]{color:var(--success-color)}.metrics-dashboard .metric-badge .icon.disk[data-v-f7c0063e]{color:var(--warning-color)}.metrics-dashboard .metric-badge .value small[data-v-f7c0063e]{font-size:10px;color:#94a3b8;margin-left:2px}.metrics-dashboard .metric-badge .value.is-danger[data-v-f7c0063e]{color:var(--danger-color);animation:pulse-f7c0063e 2s infinite}@keyframes pulse-f7c0063e{0%{opacity:1}50%{opacity:.6}to{opacity:1}}.divider[data-v-f7c0063e]{width:1px;height:24px;background-color:#e2e8f0}.system-info[data-v-f7c0063e]{display:flex;align-items:center;gap:16px;color:#64748b;font-size:13px;font-weight:500;background:#f8fafc;padding:6px 12px;border-radius:8px;border:1px solid #f1f5f9}.system-info .info-item[data-v-f7c0063e]{display:flex;align-items:center;gap:6px}.system-info .info-item i[data-v-f7c0063e]{color:#94a3b8}.system-info .time-item[data-v-f7c0063e]{color:#475569;font-weight:600;min-width:80px;font-variant-numeric:tabular-nums}.system-info .time-item i[data-v-f7c0063e]{color:var(--primary-color)}.documentation-btn[data-v-f7c0063e]{width:40px;height:40px;padding:0;border:1px solid #e2e8f0;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;background:#fff;color:#64748b;cursor:pointer;font-size:17px;transition:color .18s ease,border-color .18s ease,background-color .18s ease,box-shadow .18s ease}.documentation-btn[data-v-f7c0063e]:hover{border-color:#4f46e547;background:#eef2ff;color:var(--primary-color);box-shadow:0 4px 12px #4f46e51a}.documentation-btn[data-v-f7c0063e]:focus-visible{outline:3px solid rgba(79,70,229,.2);outline-offset:2px}@media(max-width:1280px){.header-right[data-v-f7c0063e]{gap:12px}.system-info .info-item[data-v-f7c0063e]:first-child{display:none}}@media(max-width:1040px){.system-info[data-v-f7c0063e],.header-right>.divider[data-v-f7c0063e]:not(.document-divider){display:none}}.main-layout[data-v-250aaaa6]{display:flex;height:100vh;overflow:hidden}.layout-main[data-v-250aaaa6]{flex:1;display:flex;flex-direction:column;min-width:0;height:100vh}.layout-content[data-v-250aaaa6]{flex:1;overflow-y:auto;padding:8px 8px 16px;background-color:var(--app-shell-bg);display:flex;flex-direction:column;min-height:0}.layout-content[data-v-250aaaa6]:has(.data-table-page),.layout-content[data-v-250aaaa6]:has(.eval-page),.layout-content[data-v-250aaaa6]:has(.manage-card-container){overflow-y:hidden}.layout-content[data-v-250aaaa6]:has(.create-wizard-layout){overflow-y:hidden}.layout-content:has(.create-wizard-layout) .page-canvas[data-v-250aaaa6]{flex:1 1 auto;min-height:0}@media(min-width:1181px){.layout-content[data-v-250aaaa6]:has(.dashboard-view){overflow-y:auto}.layout-content:has(.dashboard-view) .page-canvas[data-v-250aaaa6]{flex:1 0 auto;min-height:0;padding:16px;overflow:visible}}.page-canvas[data-v-250aaaa6]{flex:1 0 auto;display:flex;flex-direction:column;width:100%;min-width:0;padding:24px;border-radius:16px;background-color:var(--app-page-bg);box-shadow:var(--card-shadow)}.page-canvas.is-self-surface[data-v-250aaaa6]{padding:0;border-radius:0;background-color:transparent;box-shadow:none}.page-canvas[data-v-250aaaa6]:has(.has-fixed-footer){margin-bottom:56px}.page-canvas[data-v-250aaaa6]:not(.is-self-surface)>.page-card,.page-canvas[data-v-250aaaa6]:not(.is-self-surface)>.page-card-host>.page-card{margin-bottom:0;background-color:transparent;border-radius:0!important;box-shadow:none!important} diff --git a/frontend/dist/assets/MainLayout-D_KBFIU-.js b/frontend/dist/assets/MainLayout-D_KBFIU-.js new file mode 100644 index 0000000..8cabd3c --- /dev/null +++ b/frontend/dist/assets/MainLayout-D_KBFIU-.js @@ -0,0 +1 @@ +import{j as b,a as j,d as V,B as de,C as pe,z as Se,D as X,F as Ie,G as te,H as ze,I as E,J as K,E as De,K as Re,L as Ye,M as Y,N as xe,y as S,O as Pe,P as Ce,Q as Ze,b as Ee,i as Q,R as ee,S as Qe,T as Xe,U as We,V as je,W as B,X as ue,o as w,e as ne,w as $,h as F,Y as et,Z as tt,_ as re,$ as nt,a0 as ge,a1 as st,a2 as at,a3 as ot,a4 as lt,a5 as it,a6 as Ue,a7 as rt,a8 as Be,c as L,f as g,q as o,n as W,a9 as ut,x as ce,aa as z,l as ct,ab as we,ac as Te,v as Ve,m as dt,s as D,ad as Le,g as ke,ae as pt,af as mt,ag as ft,ah as Fe,ai as vt,r as ht}from"./index-BKKvzUDD.js";import{E as fe}from"./el-popper-D6_hxRbQ.js";import{E as bt}from"./el-scrollbar-ClJnvz-9.js";import{E as gt}from"./el-avatar-l9IBuq4_.js";import{E as _t}from"./index-AGby9JM1.js";import{T as yt,E as Mt}from"./index-BjEW7-SA.js";import{f as It}from"./vnode-78qeDweP.js";import{C as kt}from"./index-D5ryD3I5.js";import"./el-tooltip-l0sNRNKZ.js";import{_ as St}from"./logo-CxXS7KxG.js";import{_ as Ne}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{u as xt}from"./models-DQoXB8yB.js";import"./index-GAnQrJsQ.js";import"./index-CWUnzf90.js";import"./model-gCK34aBo.js";const Oe="rootMenu",me="subMenu:";function qe(e,n){const l=b(()=>{let t=e.parent;const c=[n.value];for(;t.type.name!=="ElMenu";)t.props.index&&c.unshift(t.props.index),t=t.parent;return c});return{parentMenu:b(()=>{let t=e.parent;for(;t&&!["ElMenu","ElSubMenu"].includes(t.type.name);)t=t.parent;return t}),indexPath:l}}function Ct(e){return b(()=>{const n=e.backgroundColor;return n?new yt(n).shade(20).toString():""})}const Ge=(e,n)=>{const l=j("menu");return b(()=>l.cssVarBlock({"text-color":e.textColor||"","hover-text-color":e.textColor||"","bg-color":e.backgroundColor||"","hover-bg-color":Ct(e).value||"","active-color":e.activeTextColor||"",level:`${n}`}))},Et=Ee({index:{type:String,required:!0},showTimeout:Number,hideTimeout:Number,popperClass:String,popperStyle:{type:ee([String,Object])},disabled:Boolean,teleported:{type:Boolean,default:void 0},popperOffset:Number,expandCloseIcon:{type:Q},expandOpenIcon:{type:Q},collapseCloseIcon:{type:Q},collapseOpenIcon:{type:Q}}),_e="ElSubMenu";var $e=V({name:_e,props:Et,setup(e,{slots:n,expose:l}){const t=xe(),{indexPath:c,parentMenu:T}=qe(t,b(()=>e.index)),u=j("menu"),y=j("sub-menu"),i=de(Oe);i||pe(_e,"can not inject root menu");const v=de(`${me}${T.value.uid}`);v||pe(_e,"can not inject sub menu");const M=S({}),h=S({});let p;const m=S(!1),s=S(),k=S(),N=b(()=>v.level===0),P=b(()=>U.value==="horizontal"&&N.value?"bottom-start":"right-start"),O=b(()=>U.value==="horizontal"&&N.value||U.value==="vertical"&&!i.props.collapse?e.expandCloseIcon&&e.expandOpenIcon?R.value?e.expandOpenIcon:e.expandCloseIcon:Qe:e.collapseCloseIcon&&e.collapseOpenIcon?R.value?e.collapseOpenIcon:e.collapseCloseIcon:Xe),q=b(()=>{const d=e.teleported;return We(d)?N.value:d}),se=b(()=>i.props.collapse?`${u.namespace.value}-zoom-in-left`:`${u.namespace.value}-zoom-in-top`),ve=b(()=>U.value==="horizontal"&&N.value?["bottom-start","bottom-end","top-start","top-end","right-start","left-start"]:["right-start","right","right-end","left-start","bottom-start","bottom-end","top-start","top-end"]),R=b(()=>i.openedMenus.includes(e.index)),G=b(()=>[...Object.values(M.value),...Object.values(h.value)].some(({active:d})=>d)),U=b(()=>i.props.mode),ae=b(()=>i.props.persistent),H=Se({index:e.index,indexPath:c,active:G}),oe=Ge(i.props,v.level+1),le=b(()=>e.popperOffset??i.props.popperOffset),Z=b(()=>e.popperClass??i.props.popperClass),J=b(()=>e.popperStyle??i.props.popperStyle),ie=b(()=>e.showTimeout??i.props.showTimeout),he=b(()=>e.hideTimeout??i.props.hideTimeout),a=()=>{var d,C,_;return(_=(C=(d=k.value)==null?void 0:d.popperRef)==null?void 0:C.popperInstanceRef)==null?void 0:_.destroy()},r=d=>{d||a()},f=()=>{i.props.menuTrigger==="hover"&&i.props.mode==="horizontal"||i.props.collapse&&i.props.mode==="vertical"||e.disabled||i.handleSubMenuClick({index:e.index,indexPath:c.value,active:G.value})},x=(d,C=ie.value)=>{var _;if(d.type!=="focus"){if(i.props.menuTrigger==="click"&&i.props.mode==="horizontal"||!i.props.collapse&&i.props.mode==="vertical"||e.disabled){v.mouseInChild.value=!0;return}v.mouseInChild.value=!0,p==null||p(),{stop:p}=Pe(()=>{i.openMenu(e.index,c.value)},C),q.value&&((_=T.value.vnode.el)==null||_.dispatchEvent(new MouseEvent("mouseenter"))),d.type==="mouseenter"&&d.target&&Ce(()=>{Ze(d.target,{preventScroll:!0})})}},I=(d=!1)=>{var C;if(i.props.menuTrigger==="click"&&i.props.mode==="horizontal"||!i.props.collapse&&i.props.mode==="vertical"){v.mouseInChild.value=!1;return}p==null||p(),v.mouseInChild.value=!1,{stop:p}=Pe(()=>!m.value&&i.closeMenu(e.index,c.value),he.value),q.value&&d&&((C=v.handleMouseleave)==null||C.call(v,!0))};X(()=>i.props.collapse,d=>r(!!d));{const d=_=>{h.value[_.index]=_},C=_=>{delete h.value[_.index]};Ie(`${me}${t.uid}`,{addSubMenu:d,removeSubMenu:C,handleMouseleave:I,mouseInChild:m,level:v.level+1})}return l({opened:R}),te(()=>{i.addSubMenu(H),v.addSubMenu(H)}),ze(()=>{v.removeSubMenu(H),i.removeSubMenu(H)}),()=>{var _;const d=[(_=n.title)==null?void 0:_.call(n),E(De,{class:y.e("icon-arrow"),style:{transform:R.value?e.expandCloseIcon&&e.expandOpenIcon||e.collapseCloseIcon&&e.collapseOpenIcon&&i.props.collapse?"none":"rotateZ(180deg)":"none"}},{default:()=>K(O.value)?E(t.appContext.components[O.value]):E(O.value)})],C=i.isMenuPopup?E(fe,{ref:k,visible:R.value,effect:"light",pure:!0,offset:le.value,showArrow:!1,persistent:ae.value,popperClass:Z.value,popperStyle:J.value,placement:P.value,teleported:q.value,fallbackPlacements:ve.value,transition:se.value,gpuAcceleration:!1},{content:()=>{var A;return E("div",{class:[u.m(U.value),u.m("popup-container"),Z.value],onMouseenter:be=>x(be,100),onMouseleave:()=>I(!0),onFocus:be=>x(be,100)},[E("ul",{class:[u.b(),u.m("popup"),u.m(`popup-${P.value}`)],style:oe.value},[(A=n.default)==null?void 0:A.call(n)])])},default:()=>E("div",{class:y.e("title"),onClick:f},d)}):E(Y,{},[E("div",{class:y.e("title"),ref:s,onClick:f},d),E(_t,{},{default:()=>{var A;return Re(E("ul",{role:"menu",class:[u.b(),u.m("inline")],style:oe.value},[(A=n.default)==null?void 0:A.call(n)]),[[Ye,R.value]])}})]);return E("li",{class:[y.b(),y.is("active",G.value),y.is("opened",R.value),y.is("disabled",e.disabled)],role:"menuitem",ariaHaspopup:!0,ariaExpanded:R.value,onMouseenter:x,onMouseleave:()=>I(),onFocus:x},[C])}}}),wt=class{constructor(e,n){this.parent=e,this.domNode=n,this.subIndex=0,this.subMenuItems=this.domNode.querySelectorAll("li"),this.addListeners()}gotoSubIndex(e){e===this.subMenuItems.length?e=0:e<0&&(e=this.subMenuItems.length-1),this.subMenuItems[e].focus(),this.subIndex=e}addListeners(){const e=this.parent.domNode;this.subMenuItems.forEach(n=>{n.addEventListener("keydown",l=>{const t=je(l);let c=!1;switch(t){case B.down:this.gotoSubIndex(this.subIndex+1),c=!0;break;case B.up:this.gotoSubIndex(this.subIndex-1),c=!0;break;case B.tab:ue(e,"mouseleave");break;case B.enter:case B.numpadEnter:case B.space:c=!0,l.currentTarget.click();break}return c&&(l.preventDefault(),l.stopPropagation()),!1})})}},Tt=class{constructor(e,n){this.domNode=e,this.submenu=null,this.init(n)}init(e){this.domNode.setAttribute("tabindex","0");const n=this.domNode.querySelector(`.${e}-menu`);n&&(this.submenu=new wt(this,n)),this.addListeners()}addListeners(){this.domNode.addEventListener("keydown",e=>{var t,c;const n=je(e);let l=!1;switch(n){case B.down:ue(e.currentTarget,"mouseenter"),(t=this.submenu)==null||t.gotoSubIndex(0),l=!0;break;case B.up:ue(e.currentTarget,"mouseenter"),(c=this.submenu)==null||c.gotoSubIndex(this.submenu.subMenuItems.length-1),l=!0;break;case B.tab:ue(e.currentTarget,"mouseleave");break;case B.enter:case B.numpadEnter:case B.space:l=!0,e.currentTarget.click();break}l&&e.preventDefault()})}},Nt=class{constructor(e,n){this.domNode=e,this.init(n)}init(e){const n=this.domNode.childNodes;Array.from(n).forEach(l=>{l.nodeType===1&&new Tt(l,e)})}},Ot=V({name:"ElMenuCollapseTransition",__name:"menu-collapse-transition",setup(e){const n=j("menu"),l={onBeforeEnter:t=>t.style.opacity="0.2",onEnter(t,c){re(t,`${n.namespace.value}-opacity-transition`),t.style.opacity="1",c()},onAfterEnter(t){ge(t,`${n.namespace.value}-opacity-transition`),t.style.opacity=""},onBeforeLeave(t){t.dataset||(t.dataset={}),nt(t,n.m("collapse"))?(ge(t,n.m("collapse")),t.dataset.oldOverflow=t.style.overflow,t.dataset.scrollWidth=t.clientWidth.toString(),re(t,n.m("collapse"))):(re(t,n.m("collapse")),t.dataset.oldOverflow=t.style.overflow,t.dataset.scrollWidth=t.clientWidth.toString(),ge(t,n.m("collapse"))),t.style.width=`${t.scrollWidth}px`,t.style.overflow="hidden"},onLeave(t){re(t,"horizontal-collapse-transition"),t.style.width=`${t.dataset.scrollWidth}px`}};return(t,c)=>(w(),ne(tt,et({mode:"out-in"},l),{default:$(()=>[F(t.$slots,"default")]),_:3},16))}}),$t=Ot;const Pt=Ee({mode:{type:String,values:["horizontal","vertical"],default:"vertical"},defaultActive:{type:String,default:""},defaultOpeneds:{type:ee(Array),default:()=>it([])},uniqueOpened:Boolean,router:Boolean,menuTrigger:{type:String,values:["hover","click"],default:"hover"},collapse:Boolean,backgroundColor:String,textColor:String,activeTextColor:String,closeOnClickOutside:Boolean,collapseTransition:{type:Boolean,default:!0},ellipsis:{type:Boolean,default:!0},popperOffset:{type:Number,default:6},ellipsisIcon:{type:Q,default:()=>lt},popperEffect:{type:ee(String),default:"dark"},popperClass:String,popperStyle:{type:ee([String,Object])},showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300},persistent:{type:Boolean,default:!0}}),ye=e=>Ue(e)&&e.every(n=>K(n)),Bt={close:(e,n)=>K(e)&&ye(n),open:(e,n)=>K(e)&&ye(n),select:(e,n,l,t)=>K(e)&&ye(n)&&ot(l)&&(We(t)||t instanceof Promise)},Ae=64;var Lt=V({name:"ElMenu",props:Pt,emits:Bt,setup(e,{emit:n,slots:l,expose:t}){const c=xe(),T=c.appContext.config.globalProperties.$router,u=S(),y=S(),i=j("menu"),v=j("sub-menu");let M=Ae;const h=S(-1),p=S(e.defaultOpeneds&&!e.collapse?e.defaultOpeneds.slice(0):[]),m=S(e.defaultActive),s=S({}),k=S({}),N=b(()=>e.mode==="horizontal"||e.mode==="vertical"&&e.collapse),P=()=>{const a=m.value&&s.value[m.value];!a||e.mode==="horizontal"||e.collapse||a.indexPath.forEach(r=>{const f=k.value[r];f&&O(r,f.indexPath)})},O=(a,r)=>{p.value.includes(a)||(e.uniqueOpened&&(p.value=p.value.filter(f=>r.includes(f))),p.value.push(a),n("open",a,r))},q=a=>{const r=p.value.indexOf(a);r!==-1&&p.value.splice(r,1)},se=(a,r)=>{q(a),n("close",a,r)},ve=({index:a,indexPath:r})=>{p.value.includes(a)?se(a,r):O(a,r)},R=a=>{(e.mode==="horizontal"||e.collapse)&&(p.value=[]);const{index:r,indexPath:f}=a;if(!(Be(r)||Be(f)))if(e.router&&T){const x=a.route||r,I=T.push(x).then(d=>(d||(m.value=r),d));n("select",r,f,{index:r,indexPath:f,route:x},I)}else m.value=r,n("select",r,f,{index:r,indexPath:f})},G=a=>{var f;const r=s.value;m.value=((f=r[a]||m.value&&r[m.value]||r[e.defaultActive])==null?void 0:f.index)??a},U=a=>{const r=getComputedStyle(a),f=Number.parseInt(r.marginLeft,10),x=Number.parseInt(r.marginRight,10);return a.offsetWidth+f+x||0},ae=()=>{if(!u.value)return-1;const a=Array.from(u.value.childNodes).filter(_=>_.nodeName!=="#comment"&&(_.nodeName!=="#text"||_.nodeValue)),r=getComputedStyle(u.value),f=Number.parseInt(r.paddingLeft,10),x=Number.parseInt(r.paddingRight,10),I=u.value.clientWidth-f-x;let d=0,C=0;return a.forEach((_,A)=>{d+=U(_),d<=I-M&&(C=A+1)}),C===a.length?-1:C},H=a=>k.value[a].indexPath,oe=(a,r=33.34)=>{let f;return()=>{f&&clearTimeout(f),f=setTimeout(()=>{a()},r)}};let le=!0;const Z=()=>{const a=at(y);if(a&&(M=U(a)||Ae),h.value===ae())return;const r=()=>{h.value=-1,Ce(()=>{h.value=ae()})};le?r():oe(r)(),le=!1};X(()=>e.defaultActive,a=>{s.value[a]||(m.value=""),G(a)}),X(()=>e.collapse,a=>{a&&(p.value=[])}),X(s.value,P);let J;st(()=>{e.mode==="horizontal"&&e.ellipsis?J=rt(u,Z).stop:J==null||J()});const ie=S(!1);{const a=I=>{k.value[I.index]=I},r=I=>{delete k.value[I.index]};Ie(Oe,Se({props:e,openedMenus:p,items:s,subMenus:k,activeIndex:m,isMenuPopup:N,addMenuItem:I=>{s.value[I.index]=I},removeMenuItem:I=>{delete s.value[I.index]},addSubMenu:a,removeSubMenu:r,openMenu:O,closeMenu:se,handleMenuItemClick:R,handleSubMenuClick:ve})),Ie(`${me}${c.uid}`,{addSubMenu:a,removeSubMenu:r,mouseInChild:ie,level:0})}te(()=>{e.mode==="horizontal"&&new Nt(c.vnode.el,i.namespace.value)}),t({open:r=>{const{indexPath:f}=k.value[r];f.forEach(x=>O(x,f))},close:q,updateActiveIndex:G,handleResize:Z});const he=Ge(e,0);return()=>{var I;let a=((I=l.default)==null?void 0:I.call(l))??[];const r=[];if(e.mode==="horizontal"&&u.value){const d=It(a).filter(A=>(A==null?void 0:A.shapeFlag)!==8),C=h.value===-1?d:d.slice(0,h.value),_=h.value===-1?[]:d.slice(h.value);_!=null&&_.length&&e.ellipsis&&(a=C,r.push(E($e,{ref:y,index:"sub-menu-more",class:v.e("hide-arrow"),popperOffset:e.popperOffset},{title:()=>E(De,{class:v.e("icon-more")},{default:()=>E(e.ellipsisIcon)}),default:()=>_})))}const f=e.closeOnClickOutside?[[kt,()=>{p.value.length&&(ie.value||(p.value.forEach(d=>n("close",d,H(d))),p.value=[]))}]]:[],x=Re(E("ul",{key:String(e.collapse),role:"menubar",ref:u,style:he.value,class:{[i.b()]:!0,[i.m(e.mode)]:!0,[i.m("collapse")]:e.collapse}},[...a,...r]),f);return e.collapseTransition&&e.mode==="vertical"?E($t,()=>x):x}}});const At=Ee({index:{type:String,required:!0},route:{type:ee([String,Object])},disabled:Boolean}),zt={click:e=>K(e.index)&&Ue(e.indexPath)},Dt={title:String},Me="ElMenuItem";var Rt=V({name:Me,__name:"menu-item",props:At,emits:zt,setup(e,{expose:n,emit:l}){const t=e,c=l,T=xe(),u=de(Oe),y=j("menu"),i=j("menu-item");u||pe(Me,"can not inject root menu");const{parentMenu:v,indexPath:M}=qe(T,ut(t,"index")),h=de(`${me}${v.value.uid}`);h||pe(Me,"can not inject sub menu");const p=b(()=>t.index===u.activeIndex),m=Se({index:t.index,indexPath:M,active:p}),s=()=>{t.disabled||(u.handleMenuItemClick({index:t.index,indexPath:M.value,route:t.route}),c("click",m))};return te(()=>{h.addSubMenu(m),u.addMenuItem(m)}),ze(()=>{h.removeSubMenu(m),u.removeMenuItem(m)}),n({parentMenu:v,rootMenu:u,active:p,nsMenu:y,nsMenuItem:i,handleClick:s}),(k,N)=>(w(),L("li",{class:W([g(i).b(),g(i).is("active",p.value),g(i).is("disabled",e.disabled)]),role:"menuitem",tabindex:"-1",onClick:s},[g(v).type.name==="ElMenu"&&g(u).props.collapse&&k.$slots.title?(w(),ne(g(fe),{key:0,effect:g(u).props.popperEffect,placement:"right","fallback-placements":["left"],"popper-class":g(u).props.popperClass,"popper-style":g(u).props.popperStyle,persistent:g(u).props.persistent,"focus-on-target":""},{content:$(()=>[F(k.$slots,"title")]),default:$(()=>[o("div",{class:W(g(y).be("tooltip","trigger"))},[F(k.$slots,"default")],2)]),_:3},8,["effect","popper-class","popper-style","persistent"])):(w(),L(Y,{key:1},[F(k.$slots,"default"),F(k.$slots,"title")],64))],2))}}),He=Rt,Wt=V({name:"ElMenuItemGroup",__name:"menu-item-group",props:Dt,setup(e){const n=j("menu-item-group");return(l,t)=>(w(),L("li",{class:W(g(n).b())},[o("div",{class:W(g(n).e("title"))},[l.$slots.title?F(l.$slots,"title",{key:1}):(w(),L(Y,{key:0},[ce(z(e.title),1)],64))],2),o("ul",null,[F(l.$slots,"default")])],2))}}),Je=Wt;const jt=ct(Lt,{MenuItem:He,MenuItemGroup:Je,SubMenu:$e}),Ut=we(He);we(Je);we($e);const Vt={class:"app-sidebar"},Ft={key:0,class:"sidebar-section-title"},qt={class:"sidebar-footer"},Gt={key:0,class:"footer-user"},Ht={class:"user-info"},Jt={class:"user-name"},Kt={class:"user-role"},Yt=V({__name:"AppSidebar",setup(e){const n=Te(),l=Ve(),t=dt(),c=b(()=>{const M=n.path.split("/")[1]||"dashboard";return M==="training-log"?"fine-tune":n.path.includes("model-eval/dimension")?"model-eval":n.path.startsWith("/model-compare/chat")?"model-inference":n.path==="/model-manage/merge"||n.path.match(/^\/model-manage\/\d+\/edit/)?"model-manage":n.path.match(/^\/dataset\/(\d+)/)?"dataset":n.path.match(/^\/tools\/[^/]+\/edit/)?"tools":M}),T=[{showTitle:!1,items:[{key:"dashboard",label:"服务看板",icon:"fa-tachometer",to:"/dashboard",permission:"dashboard"}]},{title:"模型服务",items:[{key:"fine-tune",label:"模型训练",icon:"fa-cogs",to:"/fine-tune",permission:"fine-tune"},{key:"model-eval",label:"模型评测",icon:"fa-line-chart",to:"/model-eval",permission:"model-eval"},{key:"model-inference",label:"模型推理",icon:"fa-server",to:"/model-inference",permission:"model-inference"},{key:"model-manage",label:"模型管理",icon:"fa-cube",to:"/model-manage",permission:"model-manage"}]},{title:"数据治理",items:[{key:"dataset",label:"数据集管理",icon:"fa-file-text",to:"/dataset",permission:"dataset"},{key:"data-process",label:"数据处理",icon:"fa-filter",to:"/data-process",permission:"data-process"}]},{title:"其他工具",items:[{key:"data-convert",label:"数据类型转换",icon:"fa-exchange",to:"/data-convert",permission:"data-convert"}]},{title:"算力资源",items:[{key:"compute",label:"算力节点",icon:"fa-microchip",to:"/compute",permission:"compute"}]},{title:"系统设置",items:[{key:"user-settings",label:"用户设置",icon:"fa-users",to:"/user-settings",permission:"user-settings"},{key:"hardware",label:"平台性能",icon:"fa-bar-chart",to:"/hardware",permission:"hardware"},{key:"logs",label:"查看日志",icon:"fa-file-text",to:"/logs",permission:"logs"}]}],u=b(()=>T.map(M=>({...M,items:M.items.filter(h=>t.hasPermission(h.permission))})).filter(M=>M.items.length>0)),y=S(c.value);X(c,M=>{y.value=M});async function i(M){const p=u.value.flatMap(s=>s.items).find(s=>s.key===M);if(!p)return;await l.push(p.to)&&(y.value="",await Ce(),y.value=c.value)}function v(){t.logout(),l.push("/login")}return(M,h)=>{const p=Ut,m=jt,s=bt,k=gt,N=fe;return w(),L("aside",Vt,[h[1]||(h[1]=o("div",{class:"sidebar-logo"},[o("img",{src:St,alt:"Logo",class:"sidebar-logo-img"}),o("span",{class:"logo-text"},"远光软件微调平台")],-1)),D(s,{class:"sidebar-nav","wrap-class":"nav-scrollbar-wrap"},{default:$(()=>[D(m,{"default-active":y.value,class:"sidebar-menu","background-color":"transparent","text-color":"var(--sidebar-text)","active-text-color":"var(--sidebar-active-text)",onSelect:i},{default:$(()=>[(w(!0),L(Y,null,Le(u.value,P=>(w(),L(Y,{key:P.title||P.items[0].key},[P.title?(w(),L("div",Ft,z(P.title),1)):ke("",!0),(w(!0),L(Y,null,Le(P.items,O=>(w(),ne(p,{key:O.key,index:O.key},{default:$(()=>[o("i",{class:W(["fa",O.icon])},null,2),o("span",null,z(O.label),1)]),_:2},1032,["index"]))),128))],64))),128))]),_:1},8,["default-active"])]),_:1}),o("div",qt,[g(t).username?(w(),L("div",Gt,[D(k,{size:36,src:"https://picsum.photos/id/1005/36/36",class:"user-avatar"}),o("div",Ht,[o("span",Jt,z(g(t).displayName),1),o("span",Kt,z(g(t).roleLabel),1)]),D(N,{content:"退出登录",placement:"top"},{default:$(()=>[o("div",{class:"logout-btn",onClick:v},[...h[0]||(h[0]=[o("i",{class:"fa fa-sign-out"},null,-1)])])]),_:1})])):ke("",!0)])])}}}),Zt=Ne(Yt,[["__scopeId","data-v-79462f28"]]),Ke=pt("system",()=>{const e=S({});let n=null,l=!1;async function t(){if(!(l||document.hidden)){l=!0;try{e.value=await mt()}catch{}finally{l=!1}}}function c(){document.hidden||t()}function T(){n||(t(),n=setInterval(t,3e4),document.addEventListener("visibilitychange",c))}function u(){n&&(clearInterval(n),n=null),document.removeEventListener("visibilitychange",c)}return{metrics:e,fetchMetrics:t,start:T,stop:u}}),Qt={class:"app-header"},Xt={class:"header-left"},en={class:"header-right"},tn={class:"metric-badge"},nn={class:"metric-badge"},sn={class:"metric-badge"},an={class:"system-info"},on={class:"info-item"},ln={class:"info-item"},rn={class:"info-item time-item"},un=V({__name:"AppHeader",setup(e){const n=Ke(),{metrics:l}=ft(n),t=Te(),c=Ve(),T=b(()=>t.path.split("/").filter(Boolean).length>1);function u(m){return m!=null&&m>80?"is-danger":""}const y=S(""),i=S("");let v=null;function M(){const m=new Date;y.value=m.toLocaleTimeString("zh-CN",{hour12:!1}),i.value=m.toLocaleDateString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit"}).replace(/\//g,"-")}function h(){const m=c.resolve({name:"guide"}).href;window.open(m,"_blank","noopener,noreferrer")}const p=S(window.location.hostname);return te(()=>{M(),v=setInterval(M,1e3)}),Fe(()=>{v&&clearInterval(v)}),(m,s)=>{const k=Mt,N=fe;return w(),L("header",Qt,[o("div",Xt,[T.value?(w(),ne(k,{key:0,class:"back-btn",link:"",onClick:s[0]||(s[0]=P=>g(c).back())},{default:$(()=>[...s[2]||(s[2]=[o("div",{class:"back-icon-wrap"},[o("i",{class:"fa fa-arrow-left"})],-1),o("span",{class:"back-text"},"返回上一页",-1)])]),_:1})):ke("",!0)]),o("div",en,[o("div",{class:"metrics-dashboard",onClick:s[1]||(s[1]=P=>g(c).push("/hardware"))},[D(N,{content:"CPU 使用率",placement:"bottom"},{default:$(()=>[o("div",tn,[s[4]||(s[4]=o("i",{class:"fa fa-microchip icon cpu"},null,-1)),o("span",{class:W(["value",u(g(l).cpu_percent)])},[ce(z(g(l).cpu_percent??"--"),1),s[3]||(s[3]=o("small",null,"%",-1))],2)])]),_:1}),D(N,{content:"内存 使用率",placement:"bottom"},{default:$(()=>[o("div",nn,[s[6]||(s[6]=o("i",{class:"fa fa-database icon mem"},null,-1)),o("span",{class:W(["value",u(g(l).memory_percent)])},[ce(z(g(l).memory_percent??"--"),1),s[5]||(s[5]=o("small",null,"%",-1))],2)])]),_:1}),D(N,{content:"磁盘 使用率",placement:"bottom"},{default:$(()=>[o("div",sn,[s[8]||(s[8]=o("i",{class:"fa fa-hdd-o icon disk"},null,-1)),o("span",{class:W(["value",u(g(l).disk_percent)])},[ce(z(g(l).disk_percent??"--"),1),s[7]||(s[7]=o("small",null,"%",-1))],2)])]),_:1})]),s[13]||(s[13]=o("div",{class:"divider"},null,-1)),o("div",an,[o("div",on,[s[9]||(s[9]=o("i",{class:"fa fa-server"},null,-1)),o("span",null,z(p.value),1)]),o("div",ln,[s[10]||(s[10]=o("i",{class:"fa fa-calendar"},null,-1)),o("span",null,z(i.value),1)]),o("div",rn,[s[11]||(s[11]=o("i",{class:"fa fa-clock-o"},null,-1)),o("span",null,z(y.value),1)])]),s[14]||(s[14]=o("div",{class:"divider document-divider"},null,-1)),D(N,{content:"使用文档",placement:"bottom"},{default:$(()=>[o("button",{type:"button",class:"documentation-btn","aria-label":"打开使用文档",onClick:h},[...s[12]||(s[12]=[o("i",{class:"fa fa-book","aria-hidden":"true"},null,-1)])])]),_:1})])])}}}),cn=Ne(un,[["__scopeId","data-v-f7c0063e"]]),dn={class:"main-layout"},pn={class:"layout-main"},mn={class:"layout-content"},fn=V({__name:"MainLayout",setup(e){const n=Ke(),l=xt(),t=Te();return te(()=>{n.start(),l.load()}),Fe(()=>{n.stop()}),(c,T)=>{const u=vt("router-view");return w(),L("div",dn,[D(Zt),o("div",pn,[D(cn),o("main",mn,[o("div",{class:W(["page-canvas",{"is-self-surface":g(t).meta.pageSurface==="self"}])},[D(u,null,{default:$(({Component:y})=>[(w(),ne(ht(y)))]),_:1})],2)])])])}}}),Nn=Ne(fn,[["__scopeId","data-v-250aaaa6"]]);export{Nn as default}; diff --git a/frontend/dist/assets/MarkdownView-C0RlwvJo.css b/frontend/dist/assets/MarkdownView-C0RlwvJo.css new file mode 100644 index 0000000..df76127 --- /dev/null +++ b/frontend/dist/assets/MarkdownView-C0RlwvJo.css @@ -0,0 +1 @@ +.markdown-view{line-height:1.7;word-break:break-word}.markdown-view p{margin:0 0 8px}.markdown-view h1,.markdown-view h2,.markdown-view h3,.markdown-view h4{margin:16px 0 8px;font-weight:600}.markdown-view ul,.markdown-view ol{padding-left:24px;margin:0 0 8px}.markdown-view code{background:#0000000f;padding:2px 6px;border-radius:4px;font-family:SFMono-Regular,Consolas,monospace;font-size:.9em}.markdown-view pre{background:#1e1e1e;color:#d4d4d4;padding:12px 16px;border-radius:6px;overflow-x:auto;margin:0 0 8px}.markdown-view pre code{background:none;padding:0;color:inherit}.markdown-view table{border-collapse:collapse;margin:0 0 8px}.markdown-view table th,.markdown-view table td{border:1px solid #dcdfe6;padding:6px 12px}.markdown-view blockquote{border-left:4px solid #dcdfe6;padding-left:12px;color:#909399;margin:0 0 8px}.markdown-view a{color:#1890ff} diff --git a/frontend/dist/assets/MarkdownView.vue_vue_type_style_index_0_lang-BPqmX54I.js b/frontend/dist/assets/MarkdownView.vue_vue_type_style_index_0_lang-BPqmX54I.js new file mode 100644 index 0000000..bb2ea8d --- /dev/null +++ b/frontend/dist/assets/MarkdownView.vue_vue_type_style_index_0_lang-BPqmX54I.js @@ -0,0 +1,58 @@ +var xr=Object.defineProperty;var wr=(t,e,n)=>e in t?xr(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var S=(t,e,n)=>wr(t,typeof e!="symbol"?e+"":e,n);import{d as yr,o as Sr,c as Ar,j as Er}from"./index-BKKvzUDD.js";function Lt(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var fe=Lt();function Dn(t){fe=t}var Pe={exec:()=>null};function w(t,e=""){let n=typeof t=="string"?t:t.source;const i={replace:(s,o)=>{let u=typeof o=="string"?o:o.source;return u=u.replace(G.caret,"$1"),n=n.replace(s,u),i},getRegex:()=>new RegExp(n,e)};return i}var G={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:t=>new RegExp(`^( {0,3}${t})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}#`),htmlBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}<(?:[a-z].*>|!--)`,"i")},Rr=/^(?:[ \t]*(?:\n|$))+/,Ir=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Lr=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Me=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Or=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Ot=/(?:[*+-]|\d{1,9}[.)])/,vn=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Pn=w(vn).replace(/bull/g,Ot).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),Nr=w(vn).replace(/bull/g,Ot).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Nt=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Cr=/^[^\n]+/,Ct=/(?!\s*\])(?:\\.|[^\[\]\\])+/,Dr=w(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Ct).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),vr=w(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Ot).getRegex(),Qe="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Dt=/|$))/,Pr=w("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",Dt).replace("tag",Qe).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Mn=w(Nt).replace("hr",Me).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Qe).getRegex(),Mr=w(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",Mn).getRegex(),vt={blockquote:Mr,code:Ir,def:Dr,fences:Lr,heading:Or,hr:Me,html:Pr,lheading:Pn,list:vr,newline:Rr,paragraph:Mn,table:Pe,text:Cr},dn=w("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",Me).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Qe).getRegex(),zr={...vt,lheading:Nr,table:dn,paragraph:w(Nt).replace("hr",Me).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",dn).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Qe).getRegex()},$r={...vt,html:w(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Dt).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Pe,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:w(Nt).replace("hr",Me).replace("heading",` *#{1,6} *[^ +]`).replace("lheading",Pn).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Ur=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Fr=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,zn=/^( {2,}|\\)\n(?!\s*$)/,Br=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\]*?>/g,Fn=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,qr=w(Fn,"u").replace(/punct/g,Ke).getRegex(),Yr=w(Fn,"u").replace(/punct/g,Un).getRegex(),Bn="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Zr=w(Bn,"gu").replace(/notPunctSpace/g,$n).replace(/punctSpace/g,Pt).replace(/punct/g,Ke).getRegex(),Xr=w(Bn,"gu").replace(/notPunctSpace/g,Wr).replace(/punctSpace/g,Gr).replace(/punct/g,Un).getRegex(),Vr=w("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,$n).replace(/punctSpace/g,Pt).replace(/punct/g,Ke).getRegex(),Qr=w(/\\(punct)/,"gu").replace(/punct/g,Ke).getRegex(),Kr=w(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Jr=w(Dt).replace("(?:-->|$)","-->").getRegex(),ei=w("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",Jr).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Ze=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,ti=w(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",Ze).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Hn=w(/^!?\[(label)\]\[(ref)\]/).replace("label",Ze).replace("ref",Ct).getRegex(),Gn=w(/^!?\[(ref)\](?:\[\])?/).replace("ref",Ct).getRegex(),ni=w("reflink|nolink(?!\\()","g").replace("reflink",Hn).replace("nolink",Gn).getRegex(),Mt={_backpedal:Pe,anyPunctuation:Qr,autolink:Kr,blockSkip:jr,br:zn,code:Fr,del:Pe,emStrongLDelim:qr,emStrongRDelimAst:Zr,emStrongRDelimUnd:Vr,escape:Ur,link:ti,nolink:Gn,punctuation:Hr,reflink:Hn,reflinkSearch:ni,tag:ei,text:Br,url:Pe},ri={...Mt,link:w(/^!?\[(label)\]\((.*?)\)/).replace("label",Ze).getRegex(),reflink:w(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Ze).getRegex()},St={...Mt,emStrongRDelimAst:Xr,emStrongLDelim:Yr,url:w(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\.|[^\\])*?(?:\\.|[^\s~\\]))\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},gn=t=>si[t];function Q(t,e){if(e){if(G.escapeTest.test(t))return t.replace(G.escapeReplace,gn)}else if(G.escapeTestNoEncode.test(t))return t.replace(G.escapeReplaceNoEncode,gn);return t}function mn(t){try{t=encodeURI(t).replace(G.percentDecode,"%")}catch{return null}return t}function bn(t,e){var o;const n=t.replace(G.findPipe,(u,l,h)=>{let c=!1,p=l;for(;--p>=0&&h[p]==="\\";)c=!c;return c?"|":" |"}),i=n.split(G.splitPipe);let s=0;if(i[0].trim()||i.shift(),i.length>0&&!((o=i.at(-1))!=null&&o.trim())&&i.pop(),e)if(i.length>e)i.splice(e);else for(;i.length0?-2:-1}function Tn(t,e,n,i,s){const o=e.href,u=e.title||null,l=t[1].replace(s.other.outputLinkReplace,"$1");i.state.inLink=!0;const h={type:t[0].charAt(0)==="!"?"image":"link",raw:n,href:o,title:u,text:l,tokens:i.inlineTokens(l)};return i.state.inLink=!1,h}function ai(t,e,n){const i=t.match(n.other.indentCodeCompensation);if(i===null)return e;const s=i[1];return e.split(` +`).map(o=>{const u=o.match(n.other.beginningSpace);if(u===null)return o;const[l]=u;return l.length>=s.length?o.slice(s.length):o}).join(` +`)}var Xe=class{constructor(t){S(this,"options");S(this,"rules");S(this,"lexer");this.options=t||fe}space(t){const e=this.rules.block.newline.exec(t);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(t){const e=this.rules.block.code.exec(t);if(e){const n=e[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?n:Oe(n,` +`)}}}fences(t){const e=this.rules.block.fences.exec(t);if(e){const n=e[0],i=ai(n,e[3]||"",this.rules);return{type:"code",raw:n,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:i}}}heading(t){const e=this.rules.block.heading.exec(t);if(e){let n=e[2].trim();if(this.rules.other.endingHash.test(n)){const i=Oe(n,"#");(this.options.pedantic||!i||this.rules.other.endingSpaceChar.test(i))&&(n=i.trim())}return{type:"heading",raw:e[0],depth:e[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(t){const e=this.rules.block.hr.exec(t);if(e)return{type:"hr",raw:Oe(e[0],` +`)}}blockquote(t){const e=this.rules.block.blockquote.exec(t);if(e){let n=Oe(e[0],` +`).split(` +`),i="",s="";const o=[];for(;n.length>0;){let u=!1;const l=[];let h;for(h=0;h1,s={type:"list",raw:"",ordered:i,start:i?+n.slice(0,-1):"",loose:!1,items:[]};n=i?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=i?n:"[*+-]");const o=this.rules.other.listItemRegex(n);let u=!1;for(;t;){let h=!1,c="",p="";if(!(e=o.exec(t))||this.rules.block.hr.test(t))break;c=e[0],t=t.substring(c.length);let x=e[2].split(` +`,1)[0].replace(this.rules.other.listReplaceTabs,J=>" ".repeat(3*J.length)),g=t.split(` +`,1)[0],C=!x.trim(),_=0;if(this.options.pedantic?(_=2,p=x.trimStart()):C?_=e[1].length+1:(_=e[2].search(this.rules.other.nonSpaceChar),_=_>4?1:_,p=x.slice(_),_+=e[1].length),C&&this.rules.other.blankLine.test(g)&&(c+=g+` +`,t=t.substring(g.length+1),h=!0),!h){const J=this.rules.other.nextBulletRegex(_),ye=this.rules.other.hrRegex(_),de=this.rules.other.fencesBeginRegex(_),F=this.rules.other.headingBeginRegex(_),Y=this.rules.other.htmlBeginRegex(_);for(;t;){const D=t.split(` +`,1)[0];let W;if(g=D,this.options.pedantic?(g=g.replace(this.rules.other.listReplaceNesting," "),W=g):W=g.replace(this.rules.other.tabCharGlobal," "),de.test(g)||F.test(g)||Y.test(g)||J.test(g)||ye.test(g))break;if(W.search(this.rules.other.nonSpaceChar)>=_||!g.trim())p+=` +`+W.slice(_);else{if(C||x.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||de.test(x)||F.test(x)||ye.test(x))break;p+=` +`+g}!C&&!g.trim()&&(C=!0),c+=D+` +`,t=t.substring(D.length+1),x=W.slice(_)}}s.loose||(u?s.loose=!0:this.rules.other.doubleBlankLine.test(c)&&(u=!0));let U=null,re;this.options.gfm&&(U=this.rules.other.listIsTask.exec(p),U&&(re=U[0]!=="[ ] ",p=p.replace(this.rules.other.listReplaceTask,""))),s.items.push({type:"list_item",raw:c,task:!!U,checked:re,loose:!1,text:p,tokens:[]}),s.raw+=c}const l=s.items.at(-1);if(l)l.raw=l.raw.trimEnd(),l.text=l.text.trimEnd();else return;s.raw=s.raw.trimEnd();for(let h=0;hx.type==="space"),p=c.length>0&&c.some(x=>this.rules.other.anyLine.test(x.raw));s.loose=p}if(s.loose)for(let h=0;h({text:h,tokens:this.lexer.inline(h),header:!1,align:o.align[c]})));return o}}lheading(t){const e=this.rules.block.lheading.exec(t);if(e)return{type:"heading",raw:e[0],depth:e[2].charAt(0)==="="?1:2,text:e[1],tokens:this.lexer.inline(e[1])}}paragraph(t){const e=this.rules.block.paragraph.exec(t);if(e){const n=e[1].charAt(e[1].length-1)===` +`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:n,tokens:this.lexer.inline(n)}}}text(t){const e=this.rules.block.text.exec(t);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(t){const e=this.rules.inline.escape.exec(t);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(t){const e=this.rules.inline.tag.exec(t);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(t){const e=this.rules.inline.link.exec(t);if(e){const n=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;const o=Oe(n.slice(0,-1),"\\");if((n.length-o.length)%2===0)return}else{const o=oi(e[2],"()");if(o===-2)return;if(o>-1){const l=(e[0].indexOf("!")===0?5:4)+e[1].length+o;e[2]=e[2].substring(0,o),e[0]=e[0].substring(0,l).trim(),e[3]=""}}let i=e[2],s="";if(this.options.pedantic){const o=this.rules.other.pedanticHrefTitle.exec(i);o&&(i=o[1],s=o[3])}else s=e[3]?e[3].slice(1,-1):"";return i=i.trim(),this.rules.other.startAngleBracket.test(i)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?i=i.slice(1):i=i.slice(1,-1)),Tn(e,{href:i&&i.replace(this.rules.inline.anyPunctuation,"$1"),title:s&&s.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(t,e){let n;if((n=this.rules.inline.reflink.exec(t))||(n=this.rules.inline.nolink.exec(t))){const i=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," "),s=e[i.toLowerCase()];if(!s){const o=n[0].charAt(0);return{type:"text",raw:o,text:o}}return Tn(n,s,n[0],this.lexer,this.rules)}}emStrong(t,e,n=""){let i=this.rules.inline.emStrongLDelim.exec(t);if(!i||i[3]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(i[1]||i[2]||"")||!n||this.rules.inline.punctuation.exec(n)){const o=[...i[0]].length-1;let u,l,h=o,c=0;const p=i[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(p.lastIndex=0,e=e.slice(-1*t.length+o);(i=p.exec(e))!=null;){if(u=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!u)continue;if(l=[...u].length,i[3]||i[4]){h+=l;continue}else if((i[5]||i[6])&&o%3&&!((o+l)%3)){c+=l;continue}if(h-=l,h>0)continue;l=Math.min(l,l+h+c);const x=[...i[0]][0].length,g=t.slice(0,o+i.index+x+l);if(Math.min(o,l)%2){const _=g.slice(1,-1);return{type:"em",raw:g,text:_,tokens:this.lexer.inlineTokens(_)}}const C=g.slice(2,-2);return{type:"strong",raw:g,text:C,tokens:this.lexer.inlineTokens(C)}}}}codespan(t){const e=this.rules.inline.code.exec(t);if(e){let n=e[2].replace(this.rules.other.newLineCharGlobal," ");const i=this.rules.other.nonSpaceChar.test(n),s=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return i&&s&&(n=n.substring(1,n.length-1)),{type:"codespan",raw:e[0],text:n}}}br(t){const e=this.rules.inline.br.exec(t);if(e)return{type:"br",raw:e[0]}}del(t){const e=this.rules.inline.del.exec(t);if(e)return{type:"del",raw:e[0],text:e[2],tokens:this.lexer.inlineTokens(e[2])}}autolink(t){const e=this.rules.inline.autolink.exec(t);if(e){let n,i;return e[2]==="@"?(n=e[1],i="mailto:"+n):(n=e[1],i=n),{type:"link",raw:e[0],text:n,href:i,tokens:[{type:"text",raw:n,text:n}]}}}url(t){var n;let e;if(e=this.rules.inline.url.exec(t)){let i,s;if(e[2]==="@")i=e[0],s="mailto:"+i;else{let o;do o=e[0],e[0]=((n=this.rules.inline._backpedal.exec(e[0]))==null?void 0:n[0])??"";while(o!==e[0]);i=e[0],e[1]==="www."?s="http://"+e[0]:s=e[0]}return{type:"link",raw:e[0],text:i,href:s,tokens:[{type:"text",raw:i,text:i}]}}}inlineText(t){const e=this.rules.inline.text.exec(t);if(e){const n=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:n}}}},te=class At{constructor(e){S(this,"tokens");S(this,"options");S(this,"state");S(this,"tokenizer");S(this,"inlineQueue");this.tokens=[],this.tokens.links=Object.create(null),this.options=e||fe,this.options.tokenizer=this.options.tokenizer||new Xe,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};const n={other:G,block:je.normal,inline:Le.normal};this.options.pedantic?(n.block=je.pedantic,n.inline=Le.pedantic):this.options.gfm&&(n.block=je.gfm,this.options.breaks?n.inline=Le.breaks:n.inline=Le.gfm),this.tokenizer.rules=n}static get rules(){return{block:je,inline:Le}}static lex(e,n){return new At(n).lex(e)}static lexInline(e,n){return new At(n).inlineTokens(e)}lex(e){e=e.replace(G.carriageReturn,` +`),this.blockTokens(e,this.tokens);for(let n=0;n(l=c.call({lexer:this},e,n))?(e=e.substring(l.raw.length),n.push(l),!0):!1))continue;if(l=this.tokenizer.space(e)){e=e.substring(l.raw.length);const c=n.at(-1);l.raw.length===1&&c!==void 0?c.raw+=` +`:n.push(l);continue}if(l=this.tokenizer.code(e)){e=e.substring(l.raw.length);const c=n.at(-1);(c==null?void 0:c.type)==="paragraph"||(c==null?void 0:c.type)==="text"?(c.raw+=` +`+l.raw,c.text+=` +`+l.text,this.inlineQueue.at(-1).src=c.text):n.push(l);continue}if(l=this.tokenizer.fences(e)){e=e.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.heading(e)){e=e.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.hr(e)){e=e.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.blockquote(e)){e=e.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.list(e)){e=e.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.html(e)){e=e.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.def(e)){e=e.substring(l.raw.length);const c=n.at(-1);(c==null?void 0:c.type)==="paragraph"||(c==null?void 0:c.type)==="text"?(c.raw+=` +`+l.raw,c.text+=` +`+l.raw,this.inlineQueue.at(-1).src=c.text):this.tokens.links[l.tag]||(this.tokens.links[l.tag]={href:l.href,title:l.title});continue}if(l=this.tokenizer.table(e)){e=e.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.lheading(e)){e=e.substring(l.raw.length),n.push(l);continue}let h=e;if((u=this.options.extensions)!=null&&u.startBlock){let c=1/0;const p=e.slice(1);let x;this.options.extensions.startBlock.forEach(g=>{x=g.call({lexer:this},p),typeof x=="number"&&x>=0&&(c=Math.min(c,x))}),c<1/0&&c>=0&&(h=e.substring(0,c+1))}if(this.state.top&&(l=this.tokenizer.paragraph(h))){const c=n.at(-1);i&&(c==null?void 0:c.type)==="paragraph"?(c.raw+=` +`+l.raw,c.text+=` +`+l.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=c.text):n.push(l),i=h.length!==e.length,e=e.substring(l.raw.length);continue}if(l=this.tokenizer.text(e)){e=e.substring(l.raw.length);const c=n.at(-1);(c==null?void 0:c.type)==="text"?(c.raw+=` +`+l.raw,c.text+=` +`+l.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=c.text):n.push(l);continue}if(e){const c="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(c);break}else throw new Error(c)}}return this.state.top=!0,n}inline(e,n=[]){return this.inlineQueue.push({src:e,tokens:n}),n}inlineTokens(e,n=[]){var l,h,c;let i=e,s=null;if(this.tokens.links){const p=Object.keys(this.tokens.links);if(p.length>0)for(;(s=this.tokenizer.rules.inline.reflinkSearch.exec(i))!=null;)p.includes(s[0].slice(s[0].lastIndexOf("[")+1,-1))&&(i=i.slice(0,s.index)+"["+"a".repeat(s[0].length-2)+"]"+i.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(s=this.tokenizer.rules.inline.anyPunctuation.exec(i))!=null;)i=i.slice(0,s.index)+"++"+i.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;(s=this.tokenizer.rules.inline.blockSkip.exec(i))!=null;)i=i.slice(0,s.index)+"["+"a".repeat(s[0].length-2)+"]"+i.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);let o=!1,u="";for(;e;){o||(u=""),o=!1;let p;if((h=(l=this.options.extensions)==null?void 0:l.inline)!=null&&h.some(g=>(p=g.call({lexer:this},e,n))?(e=e.substring(p.raw.length),n.push(p),!0):!1))continue;if(p=this.tokenizer.escape(e)){e=e.substring(p.raw.length),n.push(p);continue}if(p=this.tokenizer.tag(e)){e=e.substring(p.raw.length),n.push(p);continue}if(p=this.tokenizer.link(e)){e=e.substring(p.raw.length),n.push(p);continue}if(p=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(p.raw.length);const g=n.at(-1);p.type==="text"&&(g==null?void 0:g.type)==="text"?(g.raw+=p.raw,g.text+=p.text):n.push(p);continue}if(p=this.tokenizer.emStrong(e,i,u)){e=e.substring(p.raw.length),n.push(p);continue}if(p=this.tokenizer.codespan(e)){e=e.substring(p.raw.length),n.push(p);continue}if(p=this.tokenizer.br(e)){e=e.substring(p.raw.length),n.push(p);continue}if(p=this.tokenizer.del(e)){e=e.substring(p.raw.length),n.push(p);continue}if(p=this.tokenizer.autolink(e)){e=e.substring(p.raw.length),n.push(p);continue}if(!this.state.inLink&&(p=this.tokenizer.url(e))){e=e.substring(p.raw.length),n.push(p);continue}let x=e;if((c=this.options.extensions)!=null&&c.startInline){let g=1/0;const C=e.slice(1);let _;this.options.extensions.startInline.forEach(U=>{_=U.call({lexer:this},C),typeof _=="number"&&_>=0&&(g=Math.min(g,_))}),g<1/0&&g>=0&&(x=e.substring(0,g+1))}if(p=this.tokenizer.inlineText(x)){e=e.substring(p.raw.length),p.raw.slice(-1)!=="_"&&(u=p.raw.slice(-1)),o=!0;const g=n.at(-1);(g==null?void 0:g.type)==="text"?(g.raw+=p.raw,g.text+=p.text):n.push(p);continue}if(e){const g="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(g);break}else throw new Error(g)}}return n}},Ve=class{constructor(t){S(this,"options");S(this,"parser");this.options=t||fe}space(t){return""}code({text:t,lang:e,escaped:n}){var o;const i=(o=(e||"").match(G.notSpaceStart))==null?void 0:o[0],s=t.replace(G.endingNewline,"")+` +`;return i?'
'+(n?s:Q(s,!0))+`
+`:"
"+(n?s:Q(s,!0))+`
+`}blockquote({tokens:t}){return`
+${this.parser.parse(t)}
+`}html({text:t}){return t}heading({tokens:t,depth:e}){return`${this.parser.parseInline(t)} +`}hr(t){return`
+`}list(t){const e=t.ordered,n=t.start;let i="";for(let u=0;u +`+i+" +`}listitem(t){var n;let e="";if(t.task){const i=this.checkbox({checked:!!t.checked});t.loose?((n=t.tokens[0])==null?void 0:n.type)==="paragraph"?(t.tokens[0].text=i+" "+t.tokens[0].text,t.tokens[0].tokens&&t.tokens[0].tokens.length>0&&t.tokens[0].tokens[0].type==="text"&&(t.tokens[0].tokens[0].text=i+" "+Q(t.tokens[0].tokens[0].text),t.tokens[0].tokens[0].escaped=!0)):t.tokens.unshift({type:"text",raw:i+" ",text:i+" ",escaped:!0}):e+=i+" "}return e+=this.parser.parse(t.tokens,!!t.loose),`
  • ${e}
  • +`}checkbox({checked:t}){return"'}paragraph({tokens:t}){return`

    ${this.parser.parseInline(t)}

    +`}table(t){let e="",n="";for(let s=0;s${i}`),` + +`+e+` +`+i+`
    +`}tablerow({text:t}){return` +${t} +`}tablecell(t){const e=this.parser.parseInline(t.tokens),n=t.header?"th":"td";return(t.align?`<${n} align="${t.align}">`:`<${n}>`)+e+` +`}strong({tokens:t}){return`${this.parser.parseInline(t)}`}em({tokens:t}){return`${this.parser.parseInline(t)}`}codespan({text:t}){return`${Q(t,!0)}`}br(t){return"
    "}del({tokens:t}){return`${this.parser.parseInline(t)}`}link({href:t,title:e,tokens:n}){const i=this.parser.parseInline(n),s=mn(t);if(s===null)return i;t=s;let o='
    ",o}image({href:t,title:e,text:n,tokens:i}){i&&(n=this.parser.parseInline(i,this.parser.textRenderer));const s=mn(t);if(s===null)return Q(n);t=s;let o=`${n}{const h=u[l].flat(1/0);n=n.concat(this.walkTokens(h,e))}):u.tokens&&(n=n.concat(this.walkTokens(u.tokens,e)))}}return n}use(...t){const e=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(n=>{const i={...n};if(i.async=this.defaults.async||i.async||!1,n.extensions&&(n.extensions.forEach(s=>{if(!s.name)throw new Error("extension name required");if("renderer"in s){const o=e.renderers[s.name];o?e.renderers[s.name]=function(...u){let l=s.renderer.apply(this,u);return l===!1&&(l=o.apply(this,u)),l}:e.renderers[s.name]=s.renderer}if("tokenizer"in s){if(!s.level||s.level!=="block"&&s.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");const o=e[s.level];o?o.unshift(s.tokenizer):e[s.level]=[s.tokenizer],s.start&&(s.level==="block"?e.startBlock?e.startBlock.push(s.start):e.startBlock=[s.start]:s.level==="inline"&&(e.startInline?e.startInline.push(s.start):e.startInline=[s.start]))}"childTokens"in s&&s.childTokens&&(e.childTokens[s.name]=s.childTokens)}),i.extensions=e),n.renderer){const s=this.defaults.renderer||new Ve(this.defaults);for(const o in n.renderer){if(!(o in s))throw new Error(`renderer '${o}' does not exist`);if(["options","parser"].includes(o))continue;const u=o,l=n.renderer[u],h=s[u];s[u]=(...c)=>{let p=l.apply(s,c);return p===!1&&(p=h.apply(s,c)),p||""}}i.renderer=s}if(n.tokenizer){const s=this.defaults.tokenizer||new Xe(this.defaults);for(const o in n.tokenizer){if(!(o in s))throw new Error(`tokenizer '${o}' does not exist`);if(["options","rules","lexer"].includes(o))continue;const u=o,l=n.tokenizer[u],h=s[u];s[u]=(...c)=>{let p=l.apply(s,c);return p===!1&&(p=h.apply(s,c)),p}}i.tokenizer=s}if(n.hooks){const s=this.defaults.hooks||new Ye;for(const o in n.hooks){if(!(o in s))throw new Error(`hook '${o}' does not exist`);if(["options","block"].includes(o))continue;const u=o,l=n.hooks[u],h=s[u];Ye.passThroughHooks.has(o)?s[u]=c=>{if(this.defaults.async)return Promise.resolve(l.call(s,c)).then(x=>h.call(s,x));const p=l.call(s,c);return h.call(s,p)}:s[u]=(...c)=>{let p=l.apply(s,c);return p===!1&&(p=h.apply(s,c)),p}}i.hooks=s}if(n.walkTokens){const s=this.defaults.walkTokens,o=n.walkTokens;i.walkTokens=function(u){let l=[];return l.push(o.call(this,u)),s&&(l=l.concat(s.call(this,u))),l}}this.defaults={...this.defaults,...i}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,e){return te.lex(t,e??this.defaults)}parser(t,e){return ne.parse(t,e??this.defaults)}parseMarkdown(t){return(n,i)=>{const s={...i},o={...this.defaults,...s},u=this.onError(!!o.silent,!!o.async);if(this.defaults.async===!0&&s.async===!1)return u(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof n>"u"||n===null)return u(new Error("marked(): input parameter is undefined or null"));if(typeof n!="string")return u(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(n)+", string expected"));o.hooks&&(o.hooks.options=o,o.hooks.block=t);const l=o.hooks?o.hooks.provideLexer():t?te.lex:te.lexInline,h=o.hooks?o.hooks.provideParser():t?ne.parse:ne.parseInline;if(o.async)return Promise.resolve(o.hooks?o.hooks.preprocess(n):n).then(c=>l(c,o)).then(c=>o.hooks?o.hooks.processAllTokens(c):c).then(c=>o.walkTokens?Promise.all(this.walkTokens(c,o.walkTokens)).then(()=>c):c).then(c=>h(c,o)).then(c=>o.hooks?o.hooks.postprocess(c):c).catch(u);try{o.hooks&&(n=o.hooks.preprocess(n));let c=l(n,o);o.hooks&&(c=o.hooks.processAllTokens(c)),o.walkTokens&&this.walkTokens(c,o.walkTokens);let p=h(c,o);return o.hooks&&(p=o.hooks.postprocess(p)),p}catch(c){return u(c)}}}onError(t,e){return n=>{if(n.message+=` +Please report this to https://github.com/markedjs/marked.`,t){const i="

    An error occurred:

    "+Q(n.message+"",!0)+"
    ";return e?Promise.resolve(i):i}if(e)return Promise.reject(n);throw n}}},he=new li;function y(t,e){return he.parse(t,e)}y.options=y.setOptions=function(t){return he.setOptions(t),y.defaults=he.defaults,Dn(y.defaults),y};y.getDefaults=Lt;y.defaults=fe;y.use=function(...t){return he.use(...t),y.defaults=he.defaults,Dn(y.defaults),y};y.walkTokens=function(t,e){return he.walkTokens(t,e)};y.parseInline=he.parseInline;y.Parser=ne;y.parser=ne.parse;y.Renderer=Ve;y.TextRenderer=zt;y.Lexer=te;y.lexer=te.lex;y.Tokenizer=Xe;y.Hooks=Ye;y.parse=y;y.options;y.setOptions;y.use;y.walkTokens;y.parseInline;ne.parse;te.lex;/*! @license DOMPurify 3.4.11 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.11/LICENSE */function kn(t,e){(e==null||e>t.length)&&(e=t.length);for(var n=0,i=Array(e);n2?i-2:0),o=2;o1?n-1:0),s=1;s"u"?null:N(BigInt.prototype.toString),An=typeof Symbol>"u"?null:N(Symbol.prototype.toString),P=N(Object.prototype.hasOwnProperty),De=N(Object.prototype.toString),M=N(RegExp.prototype.test),pe=wi(TypeError);function N(t){return function(e){e instanceof RegExp&&(e.lastIndex=0);for(var n=arguments.length,i=new Array(n>1?n-1:0),s=1;s2&&arguments[2]!==void 0?arguments[2]:ve;if(_n&&_n(t,null),!le(e))return t;let i=e.length;for(;i--;){let s=e[i];if(typeof s=="string"){const o=n(s);o!==s&&(di(e)||(e[i]=o),s=o)}t[s]=!0}return t}function yi(t){for(let e=0;e/g),Oi=$(/\${[\w\W]*/g),Ni=$(/^data-[\-\w.\u00B7-\uFFFF]+$/),Ci=$(/^aria-[\-\w]+$/),On=$(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Di=$(/^(?:\w+script|data):/i),vi=$(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Pi=$(/^html$/i),Mi=$(/^[a-z][.\w]*(-[.\w]+)+$/i),Nn=$(/<[/\w!]/g),zi=$(/<[/\w]/g),$i=$(/<\/no(script|embed|frames)/i),Ui=$(/\/>/i),V={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},Fi=function(){return typeof window>"u"?null:window},Bi=function(e,n){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let i=null;const s="data-tt-policy-suffix";n&&n.hasAttribute(s)&&(i=n.getAttribute(s));const o="dompurify"+(i?"#"+i:"");try{return e.createPolicy(o,{createHTML(u){return u},createScriptURL(u){return u}})}catch{return console.warn("TrustedTypes policy "+o+" could not be created."),null}},Cn=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},ae=function(e,n,i,s){return P(e,n)&&le(e[n])?T(s.base?H(s.base):{},e[n],s.transform):i};function qn(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Fi();const e=d=>qn(d);if(e.version="3.4.11",e.removed=[],!t||!t.document||t.document.nodeType!==V.document||!t.Element)return e.isSupported=!1,e;let n=t.document;const i=n,s=i.currentScript;t.DocumentFragment;const o=t.HTMLTemplateElement,u=t.Node,l=t.Element,h=t.NodeFilter,c=t.NamedNodeMap;c===void 0&&(t.NamedNodeMap||t.MozNamedAttrMap),t.HTMLFormElement;const p=t.DOMParser,x=t.trustedTypes,g=l.prototype,C=K(g,"cloneNode"),_=K(g,"remove"),U=K(g,"nextSibling"),re=K(g,"childNodes"),J=K(g,"parentNode"),ye=K(g,"shadowRoot"),de=K(g,"attributes"),F=u&&u.prototype?K(u.prototype,"nodeType"):null,Y=u&&u.prototype?K(u.prototype,"nodeName"):null;if(typeof o=="function"){const d=n.createElement("template");d.content&&d.content.ownerDocument&&(n=d.content.ownerDocument)}let D,W="",Je,$t=!1,Se=0;const Ut=function(){if(Se>0)throw pe('A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.')},ge=function(r){Ut(),Se++;try{return D.createHTML(r)}finally{Se--}},Yn=function(r){Ut(),Se++;try{return D.createScriptURL(r)}finally{Se--}},Zn=function(){return $t||(Je=Bi(x,s),$t=!0),Je},ze=n,et=ze.implementation,Ft=ze.createNodeIterator,Xn=ze.createDocumentFragment,Vn=ze.getElementsByTagName,Qn=i.importNode;let L=Cn();e.isSupported=typeof Wn=="function"&&typeof J=="function"&&et&&et.createHTMLDocument!==void 0;const Kn=Ii,Jn=Li,er=Oi,tr=Ni,nr=Ci,rr=Di,Bt=vi,ir=Mi;let Ht=On,A=null;const Gt=T({},[...En,...kt,..._t,...xt,...Rn]);let E=null;const Wt=T({},[...In,...wt,...Ln,...qe]);let R=Object.seal(we(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Ae=null,jt=null;const ie=Object.seal(we(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let qt=!0,tt=!0,Yt=!1,Zt=!0,se=!1,Ee=!0,ce=!1,nt=!1,rt=null,it=null,st=!1,me=!1,$e=!1,Ue=!1,Xt=!0,Vt=!1;const Qt="user-content-";let ot=!0,at=!1,be={},Z=null;const lt=T({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","selectedcontent","style","svg","template","thead","title","video","xmp"]);let Kt=null;const Jt=T({},["audio","video","img","source","image","track"]);let ct=null;const en=T({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Fe="http://www.w3.org/1998/Math/MathML",Be="http://www.w3.org/2000/svg",X="http://www.w3.org/1999/xhtml";let Te=X,ut=!1,pt=null;const sr=T({},[Fe,Be,X],Tt),tn=z(["mi","mo","mn","ms","mtext"]);let ht=T({},tn);const nn=z(["annotation-xml"]);let ft=T({},nn);const or=T({},["title","style","font","a","script"]);let Re=null;const ar=["application/xhtml+xml","text/html"],lr="text/html";let I=null,ke=null;const cr=n.createElement("form"),rn=function(r){return r instanceof RegExp||r instanceof Function},dt=function(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(ke&&ke===r)return;(!r||typeof r!="object")&&(r={}),r=H(r),Re=ar.indexOf(r.PARSER_MEDIA_TYPE)===-1?lr:r.PARSER_MEDIA_TYPE,I=Re==="application/xhtml+xml"?Tt:ve,A=ae(r,"ALLOWED_TAGS",Gt,{transform:I}),E=ae(r,"ALLOWED_ATTR",Wt,{transform:I}),pt=ae(r,"ALLOWED_NAMESPACES",sr,{transform:Tt}),ct=ae(r,"ADD_URI_SAFE_ATTR",en,{transform:I,base:en}),Kt=ae(r,"ADD_DATA_URI_TAGS",Jt,{transform:I,base:Jt}),Z=ae(r,"FORBID_CONTENTS",lt,{transform:I}),Ae=ae(r,"FORBID_TAGS",H({}),{transform:I}),jt=ae(r,"FORBID_ATTR",H({}),{transform:I}),be=P(r,"USE_PROFILES")?r.USE_PROFILES&&typeof r.USE_PROFILES=="object"?H(r.USE_PROFILES):r.USE_PROFILES:!1,qt=r.ALLOW_ARIA_ATTR!==!1,tt=r.ALLOW_DATA_ATTR!==!1,Yt=r.ALLOW_UNKNOWN_PROTOCOLS||!1,Zt=r.ALLOW_SELF_CLOSE_IN_ATTR!==!1,se=r.SAFE_FOR_TEMPLATES||!1,Ee=r.SAFE_FOR_XML!==!1,ce=r.WHOLE_DOCUMENT||!1,me=r.RETURN_DOM||!1,$e=r.RETURN_DOM_FRAGMENT||!1,Ue=r.RETURN_TRUSTED_TYPE||!1,st=r.FORCE_BODY||!1,Xt=r.SANITIZE_DOM!==!1,Vt=r.SANITIZE_NAMED_PROPS||!1,ot=r.KEEP_CONTENT!==!1,at=r.IN_PLACE||!1,Ht=Ai(r.ALLOWED_URI_REGEXP)?r.ALLOWED_URI_REGEXP:On,Te=typeof r.NAMESPACE=="string"?r.NAMESPACE:X,ht=P(r,"MATHML_TEXT_INTEGRATION_POINTS")&&r.MATHML_TEXT_INTEGRATION_POINTS&&typeof r.MATHML_TEXT_INTEGRATION_POINTS=="object"?H(r.MATHML_TEXT_INTEGRATION_POINTS):T({},tn),ft=P(r,"HTML_INTEGRATION_POINTS")&&r.HTML_INTEGRATION_POINTS&&typeof r.HTML_INTEGRATION_POINTS=="object"?H(r.HTML_INTEGRATION_POINTS):T({},nn);const a=P(r,"CUSTOM_ELEMENT_HANDLING")&&r.CUSTOM_ELEMENT_HANDLING&&typeof r.CUSTOM_ELEMENT_HANDLING=="object"?H(r.CUSTOM_ELEMENT_HANDLING):we(null);if(R=we(null),P(a,"tagNameCheck")&&rn(a.tagNameCheck)&&(R.tagNameCheck=a.tagNameCheck),P(a,"attributeNameCheck")&&rn(a.attributeNameCheck)&&(R.attributeNameCheck=a.attributeNameCheck),P(a,"allowCustomizedBuiltInElements")&&typeof a.allowCustomizedBuiltInElements=="boolean"&&(R.allowCustomizedBuiltInElements=a.allowCustomizedBuiltInElements),$(R),se&&(tt=!1),$e&&(me=!0),be&&(A=T({},Rn),E=we(null),be.html===!0&&(T(A,En),T(E,In)),be.svg===!0&&(T(A,kt),T(E,wt),T(E,qe)),be.svgFilters===!0&&(T(A,_t),T(E,wt),T(E,qe)),be.mathMl===!0&&(T(A,xt),T(E,Ln),T(E,qe))),ie.tagCheck=null,ie.attributeCheck=null,P(r,"ADD_TAGS")&&(typeof r.ADD_TAGS=="function"?ie.tagCheck=r.ADD_TAGS:le(r.ADD_TAGS)&&(A===Gt&&(A=H(A)),T(A,r.ADD_TAGS,I))),P(r,"ADD_ATTR")&&(typeof r.ADD_ATTR=="function"?ie.attributeCheck=r.ADD_ATTR:le(r.ADD_ATTR)&&(E===Wt&&(E=H(E)),T(E,r.ADD_ATTR,I))),P(r,"ADD_URI_SAFE_ATTR")&&le(r.ADD_URI_SAFE_ATTR)&&T(ct,r.ADD_URI_SAFE_ATTR,I),P(r,"FORBID_CONTENTS")&&le(r.FORBID_CONTENTS)&&(Z===lt&&(Z=H(Z)),T(Z,r.FORBID_CONTENTS,I)),P(r,"ADD_FORBID_CONTENTS")&&le(r.ADD_FORBID_CONTENTS)&&(Z===lt&&(Z=H(Z)),T(Z,r.ADD_FORBID_CONTENTS,I)),ot&&(A["#text"]=!0),ce&&T(A,["html","head","body"]),A.table&&(T(A,["tbody"]),delete Ae.tbody),r.TRUSTED_TYPES_POLICY){if(typeof r.TRUSTED_TYPES_POLICY.createHTML!="function")throw pe('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof r.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw pe('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');const f=D;D=r.TRUSTED_TYPES_POLICY;try{W=ge("")}catch(m){throw D=f,m}}else r.TRUSTED_TYPES_POLICY===null?(D=void 0,W=""):(D===void 0&&(D=Zn()),D&&typeof W=="string"&&(W=ge("")));z&&z(r),ke=r},sn=T({},[...kt,..._t,...Ei]),on=T({},[...xt,...Ri]),ur=function(r,a,f){return a.namespaceURI===X?r==="svg":a.namespaceURI===Fe?r==="svg"&&(f==="annotation-xml"||ht[f]):!!sn[r]},pr=function(r,a,f){return a.namespaceURI===X?r==="math":a.namespaceURI===Be?r==="math"&&ft[f]:!!on[r]},hr=function(r,a,f){return a.namespaceURI===Be&&!ft[f]||a.namespaceURI===Fe&&!ht[f]?!1:!on[r]&&(or[r]||!sn[r])},fr=function(r){let a=J(r);(!a||!a.tagName)&&(a={namespaceURI:Te,tagName:"template"});const f=ve(r.tagName),m=ve(a.tagName);return pt[r.namespaceURI]?r.namespaceURI===Be?ur(f,a,m):r.namespaceURI===Fe?pr(f,a,m):r.namespaceURI===X?hr(f,a,m):!!(Re==="application/xhtml+xml"&&pt[r.namespaceURI]):!1},oe=function(r){xe(e.removed,{element:r});try{J(r).removeChild(r)}catch{if(_(r),!J(r))throw pe("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place")}},an=function(r){const a=re(r);if(a){const m=[];Ne(a,b=>{xe(m,b)}),Ne(m,b=>{try{_(b)}catch{}})}const f=de(r);if(f)for(let m=f.length-1;m>=0;--m){const b=f[m],k=b&&b.name;if(typeof k=="string")try{r.removeAttribute(k)}catch{}}},ue=function(r,a){try{xe(e.removed,{attribute:a.getAttributeNode(r),from:a})}catch{xe(e.removed,{attribute:null,from:a})}if(a.removeAttribute(r),r==="is")if(me||$e)try{oe(a)}catch{}else try{a.setAttribute(r,"")}catch{}},dr=function(r){const a=de(r);if(a)for(let f=a.length-1;f>=0;--f){const m=a[f],b=m&&m.name;if(!(typeof b!="string"||E[I(b)]))try{r.removeAttribute(b)}catch{}}},gr=function(r){const a=[r];for(;a.length>0;){const f=a.pop();(F?F(f):f.nodeType)===V.element&&dr(f);const b=re(f);if(b)for(let k=b.length-1;k>=0;--k)a.push(b[k])}},ln=function(r){let a=null,f=null;if(st)r=""+r;else{const k=wn(r,/^[\r\n\t ]+/);f=k&&k[0]}Re==="application/xhtml+xml"&&Te===X&&(r=''+r+"");const m=D?ge(r):r;if(Te===X)try{a=new p().parseFromString(m,Re)}catch{}if(!a||!a.documentElement){a=et.createDocument(Te,"template",null);try{a.documentElement.innerHTML=ut?W:m}catch{}}const b=a.body||a.documentElement;return r&&f&&b.insertBefore(n.createTextNode(f),b.childNodes[0]||null),Te===X?Vn.call(a,ce?"html":"body")[0]:ce?a.documentElement:b},cn=function(r){return Ft.call(r.ownerDocument||r,r,h.SHOW_ELEMENT|h.SHOW_COMMENT|h.SHOW_TEXT|h.SHOW_PROCESSING_INSTRUCTION|h.SHOW_CDATA_SECTION,null)},He=function(r){return r=Ce(r,Kn," "),r=Ce(r,Jn," "),r=Ce(r,er," "),r},gt=function(r){var a;r.normalize();const f=Ft.call(r.ownerDocument||r,r,h.SHOW_TEXT|h.SHOW_COMMENT|h.SHOW_CDATA_SECTION|h.SHOW_PROCESSING_INSTRUCTION,null);let m=f.nextNode();for(;m;)m.data=He(m.data),m=f.nextNode();const b=(a=r.querySelectorAll)===null||a===void 0?void 0:a.call(r,"template");b&&Ne(b,k=>{_e(k.content)&>(k.content)})},Ge=function(r){const a=Y?Y(r):null;return typeof a!="string"||I(a)!=="form"?!1:typeof r.nodeName!="string"||typeof r.textContent!="string"||typeof r.removeChild!="function"||r.attributes!==de(r)||typeof r.removeAttribute!="function"||typeof r.setAttribute!="function"||typeof r.namespaceURI!="string"||typeof r.insertBefore!="function"||typeof r.hasChildNodes!="function"||r.nodeType!==F(r)||r.childNodes!==re(r)},_e=function(r){if(!F||typeof r!="object"||r===null)return!1;try{return F(r)===V.documentFragment}catch{return!1}},Ie=function(r){if(!F||typeof r!="object"||r===null)return!1;try{return typeof F(r)=="number"}catch{return!1}};function ee(d,r,a){d.length!==0&&Ne(d,f=>{f.call(e,r,a,ke)})}const mr=function(r,a){return!!(Ee&&r.hasChildNodes()&&!Ie(r.firstElementChild)&&M(Nn,r.textContent)&&M(Nn,r.innerHTML)||Ee&&r.namespaceURI===X&&a==="style"&&Ie(r.firstElementChild)||r.nodeType===V.processingInstruction||Ee&&r.nodeType===V.comment&&M(zi,r.data))},br=function(r,a){if(!Ae[a]&&hn(a)&&(R.tagNameCheck instanceof RegExp&&M(R.tagNameCheck,a)||R.tagNameCheck instanceof Function&&R.tagNameCheck(a)))return!1;if(ot&&!Z[a]){const f=J(r),m=re(r);if(m&&f){const b=m.length;for(let k=b-1;k>=0;--k){const v=at?m[k]:C(m[k],!0);f.insertBefore(v,U(r))}}}return oe(r),!0},un=function(r){if(ee(L.beforeSanitizeElements,r,null),Ge(r))return oe(r),!0;const a=I(Y?Y(r):r.nodeName);if(ee(L.uponSanitizeElement,r,{tagName:a,allowedTags:A}),mr(r,a))return oe(r),!0;if(Ae[a]||!(ie.tagCheck instanceof Function&&ie.tagCheck(a))&&!A[a])return br(r,a);if((F?F(r):r.nodeType)===V.element&&!fr(r)||(a==="noscript"||a==="noembed"||a==="noframes")&&M($i,r.innerHTML))return oe(r),!0;if(se&&r.nodeType===V.text){const m=He(r.textContent);r.textContent!==m&&(xe(e.removed,{element:r.cloneNode()}),r.textContent=m)}return ee(L.afterSanitizeElements,r,null),!1},pn=function(r,a,f){if(jt[a]||Xt&&(a==="id"||a==="name")&&(f in n||f in cr))return!1;const m=E[a]||ie.attributeCheck instanceof Function&&ie.attributeCheck(a,r);if(!(tt&&M(tr,a))){if(!(qt&&M(nr,a))){if(m){if(!ct[a]){if(!M(Ht,Ce(f,Bt,""))){if(!((a==="src"||a==="xlink:href"||a==="href")&&r!=="script"&&yn(f,"data:")===0&&Kt[r])){if(!(Yt&&!M(rr,Ce(f,Bt,"")))){if(f)return!1}}}}}else if(!(hn(r)&&(R.tagNameCheck instanceof RegExp&&M(R.tagNameCheck,r)||R.tagNameCheck instanceof Function&&R.tagNameCheck(r))&&(R.attributeNameCheck instanceof RegExp&&M(R.attributeNameCheck,a)||R.attributeNameCheck instanceof Function&&R.attributeNameCheck(a,r))||a==="is"&&R.allowCustomizedBuiltInElements&&(R.tagNameCheck instanceof RegExp&&M(R.tagNameCheck,f)||R.tagNameCheck instanceof Function&&R.tagNameCheck(f))))return!1}}return!0},Tr=T({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),hn=function(r){return!Tr[ve(r)]&&M(ir,r)},kr=function(r,a,f,m){if(D&&typeof x=="object"&&typeof x.getAttributeType=="function"&&!f)switch(x.getAttributeType(r,a)){case"TrustedHTML":return ge(m);case"TrustedScriptURL":return Yn(m)}return m},_r=function(r,a,f,m){try{f?r.setAttributeNS(f,a,m):r.setAttribute(a,m),Ge(r)?oe(r):xn(e.removed)}catch{ue(a,r)}},fn=function(r){ee(L.beforeSanitizeAttributes,r,null);const a=r.attributes;if(!a||Ge(r))return;const f={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:E,forceKeepAttr:void 0};let m=a.length;const b=I(r.nodeName);for(;m--;){const k=a[m],v=k.name,O=k.namespaceURI,j=k.value,q=I(v),bt=j;let B=v==="value"?bt:ki(bt);if(f.attrName=q,f.attrValue=B,f.keepAttr=!0,f.forceKeepAttr=void 0,ee(L.uponSanitizeAttribute,r,f),B=f.attrValue,Vt&&(q==="id"||q==="name")&&yn(B,Qt)!==0&&(ue(v,r),B=Qt+B),Ee&&M(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,B)){ue(v,r);continue}if(q==="attributename"&&wn(B,"href")){ue(v,r);continue}if(!f.forceKeepAttr){if(!f.keepAttr){ue(v,r);continue}if(!Zt&&M(Ui,B)){ue(v,r);continue}if(se&&(B=He(B)),!pn(b,q,B)){ue(v,r);continue}B=kr(b,q,O,B),B!==bt&&_r(r,v,O,B)}}ee(L.afterSanitizeAttributes,r,null)},We=function(r){let a=null;const f=cn(r);for(ee(L.beforeSanitizeShadowDOM,r,null);a=f.nextNode();)if(ee(L.uponSanitizeShadowNode,a,null),un(a),fn(a),_e(a.content)&&We(a.content),(F?F(a):a.nodeType)===V.element){const b=ye(a);_e(b)&&(mt(b),We(b))}ee(L.afterSanitizeShadowDOM,r,null)},mt=function(r){const a=[{node:r,shadow:null}];for(;a.length>0;){const f=a.pop();if(f.shadow){We(f.shadow);continue}const m=f.node,k=(F?F(m):m.nodeType)===V.element,v=re(m);if(v)for(let O=v.length-1;O>=0;--O)a.push({node:v[O],shadow:null});if(k){const O=Y?Y(m):null;if(typeof O=="string"&&I(O)==="template"){const j=m.content;_e(j)&&a.push({node:j,shadow:null})}}if(k){const O=ye(m);_e(O)&&a.push({node:null,shadow:O},{node:O,shadow:null})}}};return e.sanitize=function(d){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=null,f=null,m=null,b=null;if(ut=!d,ut&&(d=""),typeof d!="string"&&!Ie(d)&&(d=Si(d),typeof d!="string"))throw pe("dirty is not a string, aborting");if(!e.isSupported)return d;nt?(A=rt,E=it):dt(r),(L.uponSanitizeElement.length>0||L.uponSanitizeAttribute.length>0)&&(A=H(A)),L.uponSanitizeAttribute.length>0&&(E=H(E)),e.removed=[];const k=at&&typeof d!="string"&&Ie(d);if(k){const j=Y?Y(d):d.nodeName;if(typeof j=="string"){const q=I(j);if(!A[q]||Ae[q])throw pe("root node is forbidden and cannot be sanitized in-place")}if(Ge(d))throw pe("root node is clobbered and cannot be sanitized in-place");try{mt(d)}catch(q){throw an(d),q}}else if(Ie(d))a=ln(""),f=a.ownerDocument.importNode(d,!0),f.nodeType===V.element&&f.nodeName==="BODY"||f.nodeName==="HTML"?a=f:a.appendChild(f),mt(f);else{if(!me&&!se&&!ce&&d.indexOf("<")===-1)return D&&Ue?ge(d):d;if(a=ln(d),!a)return me?null:Ue?W:""}a&&st&&oe(a.firstChild);const v=cn(k?d:a);try{for(;m=v.nextNode();)un(m),fn(m),_e(m.content)&&We(m.content)}catch(j){throw k&&an(d),j}if(k)return Ne(e.removed,j=>{j.element&&gr(j.element)}),se&>(d),d;if(me){if(se&>(a),$e)for(b=Xn.call(a.ownerDocument);a.firstChild;)b.appendChild(a.firstChild);else b=a;return(E.shadowroot||E.shadowrootmode)&&(b=Qn.call(i,b,!0)),b}let O=ce?a.outerHTML:a.innerHTML;return ce&&A["!doctype"]&&a.ownerDocument&&a.ownerDocument.doctype&&a.ownerDocument.doctype.name&&M(Pi,a.ownerDocument.doctype.name)&&(O=" +`+O),se&&(O=He(O)),D&&Ue?ge(O):O},e.setConfig=function(){let d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};dt(d),nt=!0,rt=A,it=E},e.clearConfig=function(){ke=null,nt=!1,rt=null,it=null,D=Je,W=""},e.isValidAttribute=function(d,r,a){ke||dt({});const f=I(d),m=I(r);return pn(f,m,a)},e.addHook=function(d,r){typeof r=="function"&&P(L,d)&&xe(L[d],r)},e.removeHook=function(d,r){if(P(L,d)){if(r!==void 0){const a=bi(L[d],r);return a===-1?void 0:Ti(L[d],a,1)[0]}return xn(L[d])}},e.removeHooks=function(d){P(L,d)&&(L[d]=[])},e.removeAllHooks=function(){L=Cn()},e}var Hi=qn();const Gi=["innerHTML"],qi=yr({__name:"MarkdownView",props:{content:{}},setup(t){const e=t,n=Er(()=>{if(!e.content)return"";try{const i=y.parse(e.content,{async:!1});return Hi.sanitize(i)}catch{return e.content}});return(i,s)=>(Sr(),Ar("div",{class:"markdown-view",innerHTML:n.value},null,8,Gi))}});export{qi as _}; diff --git a/frontend/dist/assets/MergeWeightsView-B8jVfM-U.css b/frontend/dist/assets/MergeWeightsView-B8jVfM-U.css new file mode 100644 index 0000000..96d1a00 --- /dev/null +++ b/frontend/dist/assets/MergeWeightsView-B8jVfM-U.css @@ -0,0 +1 @@ +.model-status[data-v-2e30aa99]{margin-top:20px} diff --git a/frontend/dist/assets/MergeWeightsView-D_WkK77Q.js b/frontend/dist/assets/MergeWeightsView-D_WkK77Q.js new file mode 100644 index 0000000..2ce2586 --- /dev/null +++ b/frontend/dist/assets/MergeWeightsView-D_WkK77Q.js @@ -0,0 +1 @@ +import{E as A}from"./el-alert-xVLeNUgJ.js";import{a as N,E as T}from"./el-form-item-D5kF3B90.js";import{E as B}from"./index-TFUf94PZ.js";import{E as I}from"./index-BjEW7-SA.js";import{E as R}from"./index-BDEF353-.js";import{d as P,z as q,G as D,e as d,w as o,j as y,y as E,o as n,s as t,f as F,ar as U,x as m,aa as W,c as j,g as z,A as M,v as G,ac as H}from"./index-BKKvzUDD.js";/* empty css */import{P as L}from"./PageCard-BoKXOzst.js";import{a as O,m as S}from"./model-gCK34aBo.js";import{_ as J}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./vnode-78qeDweP.js";import"./castArray-5uErZEc3.js";import"./_baseClone-B5RBzbh5.js";import"./raf-C-x62Pcl.js";import"./index-DLzof2Fz.js";import"./index-GAnQrJsQ.js";import"./el-card-CApHJ1Gj.js";const K={key:0,class:"model-status"},Q=P({__name:"MergeWeightsView",setup(X){const v=H(),b=G(),s=E(!1),u=y(()=>v.query.model||""),w=y(()=>v.query.method||"lora"),i=E([]),_=y(()=>i.value.find(l=>l.name===u.value)),a=q({model_name:u.value,train_method:w.value,base_model_path:""});async function V(){try{const l=await O();i.value=(l==null?void 0:l.models)||[];const e=i.value.find(p=>p.name===u.value);a.base_model_path=(e==null?void 0:e.base_model_path)||""}catch{}}async function k(){if(!a.model_name||!a.base_model_path){M.warning("缺少模型信息");return}s.value=!0;try{await S({model_name:a.model_name,train_method:a.train_method,base_model_path:a.base_model_path}),M.success("合并成功"),b.push("/model-manage")}catch{}finally{s.value=!1}}function x(){b.back()}return D(V),(l,e)=>{const p=A,f=B,r=N,h=I,C=T,c=R;return n(),d(L,{title:"合并权重"},{default:o(()=>[t(p,{type:"info",closable:!1,"show-icon":"",title:"将 LoRA 适配器权重合并到基座模型,合并后可直接用于推理部署。",style:{"margin-bottom":"20px"}}),t(C,{"label-width":"120px",style:{"max-width":"600px"}},{default:o(()=>[t(r,{label:"模型名称"},{default:o(()=>[t(f,{modelValue:a.model_name,"onUpdate:modelValue":e[0]||(e[0]=g=>a.model_name=g),disabled:""},null,8,["modelValue"])]),_:1}),t(r,{label:"训练方法"},{default:o(()=>[t(f,{"model-value":F(U)[a.train_method]||a.train_method,disabled:""},null,8,["model-value"])]),_:1}),t(r,{label:"基座模型路径"},{default:o(()=>[t(f,{modelValue:a.base_model_path,"onUpdate:modelValue":e[1]||(e[1]=g=>a.base_model_path=g),placeholder:"基座模型路径"},null,8,["modelValue"])]),_:1}),t(r,null,{default:o(()=>[t(h,{type:"primary",loading:s.value,onClick:k},{default:o(()=>[m(W(s.value?"合并中...":"开始合并"),1)]),_:1},8,["loading"]),t(h,{onClick:x},{default:o(()=>[...e[2]||(e[2]=[m("取消",-1)])]),_:1})]),_:1})]),_:1}),_.value?(n(),j("div",K,[_.value.merging?(n(),d(c,{key:0,type:"warning"},{default:o(()=>[...e[3]||(e[3]=[m("合并中",-1)])]),_:1})):_.value.merged?(n(),d(c,{key:1,type:"success"},{default:o(()=>[...e[4]||(e[4]=[m("已合并",-1)])]),_:1})):(n(),d(c,{key:2,type:"info"},{default:o(()=>[...e[5]||(e[5]=[m("未合并",-1)])]),_:1}))])):z("",!0)]),_:1})}}}),fe=J(Q,[["__scopeId","data-v-2e30aa99"]]);export{fe as default}; diff --git a/frontend/dist/assets/ModelCreateView-Np2j_mdr.js b/frontend/dist/assets/ModelCreateView-Np2j_mdr.js new file mode 100644 index 0000000..5e57ef0 --- /dev/null +++ b/frontend/dist/assets/ModelCreateView-Np2j_mdr.js @@ -0,0 +1 @@ +import{a as S,E as j}from"./el-form-item-D5kF3B90.js";import{E as F}from"./index-TFUf94PZ.js";import{E as N}from"./index-BjEW7-SA.js";import{E as G,a as T}from"./el-select-Dl-FRZQd.js";import{E as $,b as z}from"./el-radio-group-BkCoTeQL.js";import{v as Y}from"./directive-DsZckUTJ.js";import{d as H,aN as J,G as Q,K as W,e as m,w as t,y as _,j as P,z as X,o as n,s as o,c as V,ad as U,f as Z,M as b,x as i,aa as ee,A as w,v as le,ac as ae}from"./index-BKKvzUDD.js";import"./el-scrollbar-ClJnvz-9.js";import"./el-popper-D6_hxRbQ.js";/* empty css */import{P as oe}from"./PageCard-BoKXOzst.js";import{c as te,f as re,u as ue,h as ne}from"./model-gCK34aBo.js";import"./castArray-5uErZEc3.js";import"./_baseClone-B5RBzbh5.js";import"./raf-C-x62Pcl.js";import"./index-DLzof2Fz.js";import"./index-GAnQrJsQ.js";import"./index-CWUnzf90.js";import"./vnode-78qeDweP.js";import"./index-D5ryD3I5.js";import"./index-BDEF353-.js";import"./scroll-BkzZKETR.js";import"./clamp-CbbY8h6F.js";import"./toNumber-Dkj3QRv9.js";import"./_baseIteratee-BAilevJ_.js";import"./omit-BTSq4AYh.js";import"./el-card-CApHJ1Gj.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";const De=H({__name:"ModelCreateView",setup(ie){const k=ae(),E=le(),f=_(),c=_(!1),g=_(!1),y=P(()=>!!k.params.id),d=P(()=>k.params.id),v=_([]),l=X({name:"",type:"LLM",purpose:"inference",model_source:"local",description:"",path:"",api_url:"",api_key:"",online_model_name:""}),q={name:[{required:!0,message:"请输入模型名称",trigger:"blur"},{max:100,message:"不超过 100 字符",trigger:"blur"}],type:[{required:!0,message:"请选择模型类型",trigger:"change"}],purpose:[{required:!0,message:"请选择模型用途",trigger:"change"}]};function I(){return l.model_source==="local"?{path:[{required:!0,message:"请选择本地模型路径",trigger:"change"}]}:{api_url:[{required:!0,message:"请输入 API 地址",trigger:"blur"}],api_key:[{required:!0,message:"请输入 API Key",trigger:"blur"}],online_model_name:[{required:!0,message:"请输入模型名称",trigger:"blur"}]}}const A=Object.entries(J).map(([r,e])=>({value:r,label:e}));async function C(){if(d.value){c.value=!0;try{const r=await te(d.value),e=r.model_source==="online"?"api":r.model_source||"local";Object.assign(l,{name:r.name||"",type:r.type||"LLM",purpose:r.purpose||"inference",model_source:e,description:r.description||"",path:r.path||"",api_url:r.api_url||"",api_key:r.api_key||"",online_model_name:r.model_name||""})}catch{}finally{c.value=!1}}}async function R(){try{const r=await re();v.value=(r==null?void 0:r.models)||[]}catch{v.value=[]}}async function O(){f.value&&await f.value.validate(async r=>{if(r){if(l.model_source==="local"&&!l.path){w.warning("请选择本地模型路径");return}g.value=!0;try{const e={name:l.name,type:l.type,purpose:l.purpose,model_source:l.model_source,description:l.description};l.model_source==="local"?e.path=l.path:(e.api_url=l.api_url,e.api_key=l.api_key,e.online_model_name=l.online_model_name),y.value&&d.value?(await ue(d.value,e),w.success("更新成功")):(await ne(e),w.success("创建成功")),E.push("/model-manage")}catch{}finally{g.value=!1}}})}function B(){E.back()}return Q(()=>{R(),C()}),(r,e)=>{const p=F,u=S,M=T,h=G,s=z,x=$,L=N,D=j,K=Y;return W((n(),m(oe,{title:y.value?"编辑模型":"添加模型"},{default:t(()=>[o(D,{ref_key:"formRef",ref:f,model:l,rules:{...q,...I()},"label-width":"120px",style:{"max-width":"640px"}},{default:t(()=>[o(u,{label:"模型名称",prop:"name"},{default:t(()=>[o(p,{modelValue:l.name,"onUpdate:modelValue":e[0]||(e[0]=a=>l.name=a),placeholder:"请输入模型名称",maxlength:"100","show-word-limit":""},null,8,["modelValue"])]),_:1}),o(u,{label:"模型类型",prop:"type"},{default:t(()=>[o(h,{modelValue:l.type,"onUpdate:modelValue":e[1]||(e[1]=a=>l.type=a),placeholder:"请选择模型类型",style:{width:"100%"}},{default:t(()=>[(n(!0),V(b,null,U(Z(A),a=>(n(),m(M,{key:a.value,label:a.label,value:a.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(u,{label:"模型用途",prop:"purpose"},{default:t(()=>[o(x,{modelValue:l.purpose,"onUpdate:modelValue":e[2]||(e[2]=a=>l.purpose=a)},{default:t(()=>[o(s,{value:"training"},{default:t(()=>[...e[9]||(e[9]=[i("训练基座",-1)])]),_:1}),o(s,{value:"inference"},{default:t(()=>[...e[10]||(e[10]=[i("推理对比",-1)])]),_:1}),o(s,{value:"evaluation"},{default:t(()=>[...e[11]||(e[11]=[i("评测",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),o(u,{label:"模型来源",prop:"model_source"},{default:t(()=>[o(x,{modelValue:l.model_source,"onUpdate:modelValue":e[3]||(e[3]=a=>l.model_source=a)},{default:t(()=>[o(s,{value:"local"},{default:t(()=>[...e[12]||(e[12]=[i("本地模型",-1)])]),_:1}),o(s,{value:"api"},{default:t(()=>[...e[13]||(e[13]=[i("在线模型",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),l.model_source==="local"?(n(),m(u,{key:0,label:"本地模型路径",prop:"path"},{default:t(()=>[o(h,{modelValue:l.path,"onUpdate:modelValue":e[4]||(e[4]=a=>l.path=a),placeholder:"请选择本地模型路径",filterable:"",style:{width:"100%"}},{default:t(()=>[(n(!0),V(b,null,U(v.value,a=>(n(),m(M,{key:a.path,label:`${a.name} (${a.path})`,value:a.path},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1})):(n(),V(b,{key:1},[o(u,{label:"API 地址",prop:"api_url"},{default:t(()=>[o(p,{modelValue:l.api_url,"onUpdate:modelValue":e[5]||(e[5]=a=>l.api_url=a),placeholder:"如:https://api.openai.com/v1"},null,8,["modelValue"])]),_:1}),o(u,{label:"API Key",prop:"api_key"},{default:t(()=>[o(p,{modelValue:l.api_key,"onUpdate:modelValue":e[6]||(e[6]=a=>l.api_key=a),type:"password","show-password":"",placeholder:"请输入 API Key"},null,8,["modelValue"])]),_:1}),o(u,{label:"模型名称",prop:"online_model_name"},{default:t(()=>[o(p,{modelValue:l.online_model_name,"onUpdate:modelValue":e[7]||(e[7]=a=>l.online_model_name=a),placeholder:"如:gpt-4、qwen-turbo"},null,8,["modelValue"])]),_:1})],64)),o(u,{label:"模型描述"},{default:t(()=>[o(p,{modelValue:l.description,"onUpdate:modelValue":e[8]||(e[8]=a=>l.description=a),type:"textarea",rows:3,maxlength:"500","show-word-limit":"",placeholder:"选填"},null,8,["modelValue"])]),_:1}),o(u,null,{default:t(()=>[o(L,{type:"primary",loading:g.value,onClick:O},{default:t(()=>[i(ee(y.value?"保存":"创建"),1)]),_:1},8,["loading"]),o(L,{onClick:B},{default:t(()=>[...e[14]||(e[14]=[i("取消",-1)])]),_:1})]),_:1})]),_:1},8,["model","rules"])]),_:1},8,["title"])),[[K,c.value]])}}});export{De as default}; diff --git a/frontend/dist/assets/ModelManageView-B__x03pD.css b/frontend/dist/assets/ModelManageView-B__x03pD.css new file mode 100644 index 0000000..b5610c9 --- /dev/null +++ b/frontend/dist/assets/ModelManageView-B__x03pD.css @@ -0,0 +1 @@ +@charset "UTF-8";.capsule-tabs[data-v-f06fa847]{display:flex;background:#f1f5f9;padding:3px;border-radius:8px;gap:2px;border:1px solid #e2e8f0}.capsule-tab-item[data-v-f06fa847]{border:0;background:transparent;padding:6px 20px;font-size:13px;font-weight:500;color:#64748b;cursor:pointer;border-radius:6px;transition:all .2s ease;outline:none}.capsule-tab-item[data-v-f06fa847]:hover{color:#1e293b}.capsule-tab-item.active[data-v-f06fa847]{background:#fff;color:#4f46e5;box-shadow:0 1px 3px #0000000f,0 1px 2px #0000000a;font-weight:600}.action-buttons[data-v-f06fa847]{display:flex;justify-content:center;gap:8px} diff --git a/frontend/dist/assets/ModelManageView-Dju1g8Ja.js b/frontend/dist/assets/ModelManageView-Dju1g8Ja.js new file mode 100644 index 0000000..dee17da --- /dev/null +++ b/frontend/dist/assets/ModelManageView-Dju1g8Ja.js @@ -0,0 +1 @@ +import{E as V}from"./index-BjEW7-SA.js";import{E as O}from"./index-BDEF353-.js";import{E as R}from"./el-table-D8K5zLyz.js";import{d as S,D as A,G as U,c as q,e as p,w as a,y as _,o as m,s as n,q as s,x as l,aa as u,f as v,aN as G,aO as w,aP as I,g as z,v as W,A as D}from"./index-BKKvzUDD.js";import{E as Y}from"./index-dNo5H1ie.js";/* empty css */import"./el-checkbox-qGZ2-RM2.js";import{D as $}from"./DataTablePage-C-EM-7-s.js";import{g as j,a as F,e as H,d as J,b as K}from"./model-gCK34aBo.js";import{_ as Q}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./el-scrollbar-ClJnvz-9.js";import"./index-GAnQrJsQ.js";import"./el-popper-D6_hxRbQ.js";import"./index-CWUnzf90.js";import"./_baseClone-B5RBzbh5.js";import"./_baseIteratee-BAilevJ_.js";import"./castArray-5uErZEc3.js";import"./debounce-ByXPNh5F.js";import"./toNumber-Dkj3QRv9.js";import"./raf-C-x62Pcl.js";import"./validator-Fn0bm4xU.js";import"./index-CQXVR1Ud.js";import"./clamp-CbbY8h6F.js";import"./index-DfyOU94W.js";import"./scroll-BkzZKETR.js";import"./index-TFUf94PZ.js";import"./index-DLzof2Fz.js";import"./omit-BTSq4AYh.js";import"./el-card-CApHJ1Gj.js";import"./el-pagination-DOPYW-qb.js";import"./el-select-Dl-FRZQd.js";import"./vnode-78qeDweP.js";import"./index-D5ryD3I5.js";import"./directive-DsZckUTJ.js";import"./el-tooltip-l0sNRNKZ.js";const X={class:"model-manage-page",style:{height:"100%"}},Z={class:"capsule-tabs"},ee={class:"capsule-tabs"},te={class:"action-buttons"},ae=S({__name:"ModelManageView",setup(le){const k=W(),d=_("config"),c=_(!1),C=_([]),h=_([]);async function M(){c.value=!0;try{C.value=await j()||[]}catch{}finally{c.value=!1}}async function b(){c.value=!0;try{const i=await F();h.value=(i==null?void 0:i.models)||[]}catch{}finally{c.value=!1}}function x(){d.value==="config"?M():b()}async function E(i){await J(i.id),D.success("删除成功")}async function T(i){await Y.confirm(`确定要删除模型 "${i.name}" 的权重文件吗?合并模型不受影响。`,"确认删除",{type:"warning"}),await K(i.name,"lora"),D.success("权重已删除"),b()}async function P(i){var t,o;await k.push({path:"/model-manage/merge",query:{model:i.name,method:((o=(t=i.train_methods)==null?void 0:t[0])==null?void 0:o.name)||"lora"}})}function L(i){window.open(H(i.name),"_blank")}function N(i){k.push(`/model-manage/${i.id}/edit`)}function B(){d.value==="config"&&k.push("/model-manage/create")}return A(d,()=>{x()}),U(x),(i,t)=>{const o=R,g=O,f=V;return m(),q("div",X,[d.value==="config"?(m(),p($,{key:0,title:"",data:C.value,loading:c.value,searchable:"","search-fields":["name","description"],"create-text":"添加模型",onCreate:B,"delete-fn":E,"row-key":"id",onRefresh:M},{title:a(()=>[s("div",Z,[s("button",{class:"capsule-tab-item active",onClick:t[0]||(t[0]=e=>d.value="config")},"配置模型"),s("button",{class:"capsule-tab-item",onClick:t[1]||(t[1]=e=>d.value="trained")},"训练模型")])]),columns:a(()=>[n(o,{label:"模型名称",prop:"name",align:"center"}),n(o,{label:"模型类型",align:"center",width:"140"},{default:a(({row:e})=>[n(g,{type:"primary",size:"small"},{default:a(()=>[l(u(v(G)[e.type]||e.type||"-"),1)]),_:2},1024)]),_:1}),n(o,{label:"用途",align:"center",width:"100"},{default:a(({row:e})=>{var r;return[n(g,{type:((r=v(w)[e.purpose])==null?void 0:r.type)||"info",size:"small"},{default:a(()=>{var y;return[l(u(((y=v(w)[e.purpose])==null?void 0:y.text)||e.purpose||"-"),1)]}),_:2},1032,["type"])]}),_:1}),n(o,{label:"模型来源",align:"center",width:"110"},{default:a(({row:e})=>[l(u(v(I)[e.model_source]||e.model_source||"-"),1)]),_:1}),n(o,{label:"描述",align:"center","show-overflow-tooltip":""},{default:a(({row:e})=>[l(u(e.description||"-"),1)]),_:1}),n(o,{label:"创建时间",align:"center",width:"180"},{default:a(({row:e})=>[l(u(e.create_time?new Date(e.create_time).toLocaleString("zh-CN"):"-"),1)]),_:1})]),actions:a(({row:e})=>[n(f,{type:"primary",link:"",size:"small",onClick:r=>N(e)},{default:a(()=>[...t[4]||(t[4]=[s("i",{class:"fa fa-edit",style:{"margin-right":"4px"}},null,-1),l("编辑 ",-1)])]),_:1},8,["onClick"]),n(f,{type:"danger",link:"",size:"small",onClick:r=>E(e)},{default:a(()=>[...t[5]||(t[5]=[s("i",{class:"fa fa-trash-o",style:{"margin-right":"4px"}},null,-1),l("删除 ",-1)])]),_:1},8,["onClick"])]),_:1},8,["data","loading"])):(m(),p($,{key:1,title:"",data:h.value,loading:c.value,searchable:"","search-fields":["name"],"row-key":"name",onRefresh:b},{title:a(()=>[s("div",ee,[s("button",{class:"capsule-tab-item",onClick:t[2]||(t[2]=e=>d.value="config")},"配置模型"),s("button",{class:"capsule-tab-item active",onClick:t[3]||(t[3]=e=>d.value="trained")},"训练模型")])]),columns:a(()=>[n(o,{label:"模型名称",prop:"name",align:"center"}),n(o,{label:"训练方法",align:"center"},{default:a(({row:e})=>{var r,y;return[l(u(((y=(r=e.train_methods)==null?void 0:r[0])==null?void 0:y.name)||"-"),1)]}),_:1}),n(o,{label:"基座模型",align:"center","show-overflow-tooltip":""},{default:a(({row:e})=>[l(u(e.base_model_path||"-"),1)]),_:1}),n(o,{label:"合并状态",align:"center",width:"110"},{default:a(({row:e})=>[e.merging?(m(),p(g,{key:0,type:"warning",size:"small"},{default:a(()=>[...t[6]||(t[6]=[l("合并中",-1)])]),_:1})):e.merged?(m(),p(g,{key:1,type:"success",size:"small"},{default:a(()=>[...t[7]||(t[7]=[l("已合并",-1)])]),_:1})):(m(),p(g,{key:2,type:"info",size:"small"},{default:a(()=>[...t[8]||(t[8]=[l("未合并",-1)])]),_:1}))]),_:1}),n(o,{label:"创建时间",align:"center",width:"180"},{default:a(({row:e})=>[l(u(e.create_time?new Date(e.create_time).toLocaleString("zh-CN"):"-"),1)]),_:1})]),actions:a(({row:e})=>[s("div",te,[!e.merged&&!e.merging?(m(),p(f,{key:0,type:"primary",link:"",size:"small",onClick:r=>P(e)},{default:a(()=>[...t[9]||(t[9]=[s("i",{class:"fa fa-code-fork",style:{"margin-right":"4px"}},null,-1),l("合并权重 ",-1)])]),_:1},8,["onClick"])):e.merging?(m(),p(f,{key:1,type:"info",link:"",size:"small",loading:!0,disabled:""},{default:a(()=>[...t[10]||(t[10]=[l(" 合并中 ",-1)])]),_:1})):z("",!0),n(f,{type:"warning",link:"",size:"small",onClick:r=>T(e)},{default:a(()=>[...t[11]||(t[11]=[s("i",{class:"fa fa-eraser",style:{"margin-right":"4px"}},null,-1),l("删除权重 ",-1)])]),_:1},8,["onClick"]),e.merged?(m(),p(f,{key:2,type:"success",link:"",size:"small",onClick:r=>L(e)},{default:a(()=>[...t[12]||(t[12]=[s("i",{class:"fa fa-download",style:{"margin-right":"4px"}},null,-1),l("导出 ",-1)])]),_:1},8,["onClick"])):z("",!0)])]),_:1},8,["data","loading"]))])}}}),Ae=Q(ae,[["__scopeId","data-v-f06fa847"]]);export{Ae as default}; diff --git a/frontend/dist/assets/ModelStatusTag.vue_vue_type_script_setup_true_lang-VFIQNBU2.js b/frontend/dist/assets/ModelStatusTag.vue_vue_type_script_setup_true_lang-VFIQNBU2.js new file mode 100644 index 0000000..8567155 --- /dev/null +++ b/frontend/dist/assets/ModelStatusTag.vue_vue_type_script_setup_true_lang-VFIQNBU2.js @@ -0,0 +1 @@ +import{E as r}from"./index-BDEF353-.js";import{d as o,e as c,w as p,j as u,o as i,x as d,aa as l}from"./index-BKKvzUDD.js";/* empty css */const m=o({__name:"ModelStatusTag",props:{status:{}},setup(a){const s=a,t=u(()=>{const e=s.status||"";switch(e){case"running":case"ready":case"loaded":return{text:e==="ready"||e==="loaded"?"已就绪":"运行中",type:"success"};case"pending":return{text:"等待中",type:"info"};case"failed":return{text:"失败",type:"danger"};case"starting":case"loading":return{text:"加载中",type:"warning"};case"completed":return{text:"已完成",type:"success"};case"stopped":return{text:"已停止",type:"info"};default:return{text:e||"未知",type:"info"}}});return(e,f)=>{const n=r;return i(),c(n,{type:t.value.type,size:"small",effect:"light"},{default:p(()=>[d(l(t.value.text),1)]),_:1},8,["type"])}}});export{m as _}; diff --git a/frontend/dist/assets/PageCard-BoKXOzst.js b/frontend/dist/assets/PageCard-BoKXOzst.js new file mode 100644 index 0000000..6da9a9b --- /dev/null +++ b/frontend/dist/assets/PageCard-BoKXOzst.js @@ -0,0 +1 @@ +import{E as i}from"./el-card-CApHJ1Gj.js";import{d as n,e as u,w as p,o as a,c as s,h as o,g as r,q as d,aa as l}from"./index-BKKvzUDD.js";import{_}from"./_plugin-vue_export-helper-DlAUqK2U.js";const h={key:0,class:"page-card-header"},m={class:"page-card-title"},f={key:0,class:"page-card-subtitle"},g={key:0,class:"page-card-extra"},v={class:"page-card-body"},b=n({__name:"PageCard",props:{title:{},subtitle:{},bordered:{type:Boolean,default:!1}},setup(t){return(e,k)=>{const c=i;return a(),u(c,{shadow:"never",class:"page-card"},{default:p(()=>[t.title||e.$slots.header?(a(),s("div",h,[o(e.$slots,"header",{},()=>[d("div",null,[d("h2",m,l(t.title),1),t.subtitle?(a(),s("p",f,l(t.subtitle),1)):r("",!0)])],!0),e.$slots.extra?(a(),s("div",g,[o(e.$slots,"extra",{},void 0,!0)])):r("",!0)])):r("",!0),d("div",v,[o(e.$slots,"default",{},void 0,!0)])]),_:3})}}}),$=_(b,[["__scopeId","data-v-05c37e8a"]]);export{$ as P}; diff --git a/frontend/dist/assets/PageCard-D_q9xBAd.css b/frontend/dist/assets/PageCard-D_q9xBAd.css new file mode 100644 index 0000000..40e4556 --- /dev/null +++ b/frontend/dist/assets/PageCard-D_q9xBAd.css @@ -0,0 +1 @@ +.page-card[data-v-05c37e8a]{border-radius:8px;margin-bottom:24px}.page-card .page-card-header[data-v-05c37e8a]{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:20px}.page-card .page-card-title[data-v-05c37e8a]{font-size:16px;font-weight:500;color:#303133;margin:0}.page-card .page-card-subtitle[data-v-05c37e8a]{font-size:13px;color:#909399;margin:4px 0 0}.page-card[data-v-05c37e8a] .el-card__body{padding:24px} diff --git a/frontend/dist/assets/PermissionDeniedView-BtkZoqYQ.js b/frontend/dist/assets/PermissionDeniedView-BtkZoqYQ.js new file mode 100644 index 0000000..29d1e59 --- /dev/null +++ b/frontend/dist/assets/PermissionDeniedView-BtkZoqYQ.js @@ -0,0 +1 @@ +import{_ as o}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{o as c,c as t,q as s}from"./index-BKKvzUDD.js";const n={},r={class:"simple-page"};function a(i,e){return c(),t("section",r,[...e[0]||(e[0]=[s("h1",null,"无权访问",-1),s("p",null,"当前账号没有访问该页面的权限,请联系管理员调整角色或页面权限。",-1)])])}const p=o(n,[["render",a],["__scopeId","data-v-cc370c43"]]);export{p as default}; diff --git a/frontend/dist/assets/PermissionDeniedView-DWdcJnMf.css b/frontend/dist/assets/PermissionDeniedView-DWdcJnMf.css new file mode 100644 index 0000000..6d492bc --- /dev/null +++ b/frontend/dist/assets/PermissionDeniedView-DWdcJnMf.css @@ -0,0 +1 @@ +.simple-page[data-v-cc370c43]{padding:24px} diff --git a/frontend/dist/assets/ToolCreateView-ClRXoWew.css b/frontend/dist/assets/ToolCreateView-ClRXoWew.css new file mode 100644 index 0000000..4e69bf6 --- /dev/null +++ b/frontend/dist/assets/ToolCreateView-ClRXoWew.css @@ -0,0 +1 @@ +.icon-grid[data-v-9116c5de]{display:grid;grid-template-columns:repeat(auto-fill,minmax(44px,1fr));gap:8px;max-width:500px}.icon-option[data-v-9116c5de]{width:44px;height:44px;border:1px solid #dcdfe6;border-radius:6px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s;font-size:16px;color:#606266}.icon-option[data-v-9116c5de]:hover{border-color:#1890ff;color:#1890ff}.icon-option.selected[data-v-9116c5de]{border-color:#1890ff;background:#1890ff1a;color:#1890ff} diff --git a/frontend/dist/assets/ToolCreateView-Dyu4KgOC.js b/frontend/dist/assets/ToolCreateView-Dyu4KgOC.js new file mode 100644 index 0000000..bbd75ac --- /dev/null +++ b/frontend/dist/assets/ToolCreateView-Dyu4KgOC.js @@ -0,0 +1 @@ +import{a as y,E as h}from"./el-form-item-D5kF3B90.js";import{E as B}from"./index-TFUf94PZ.js";import{E as R}from"./index-BjEW7-SA.js";import{d as S,G as I,e as N,w as l,j as g,z as O,o as m,s as o,q as v,c as V,ad as U,n as b,f as q,bE as F,M as L,x,aa as M,A as w,y as j,v as z,ac as D}from"./index-BKKvzUDD.js";import{P}from"./PageCard-BoKXOzst.js";import{u as A}from"./tools-BSjcVinb.js";import{_ as G}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./castArray-5uErZEc3.js";import"./_baseClone-B5RBzbh5.js";import"./raf-C-x62Pcl.js";import"./index-DLzof2Fz.js";import"./index-GAnQrJsQ.js";import"./el-card-CApHJ1Gj.js";const $={class:"icon-grid"},H=["onClick"],J=S({__name:"ToolCreateView",setup(K){const d=D(),p=z(),n=A(),i=j(),s=g(()=>d.params.id!=null),c=g(()=>s.value?n.getTool(d.params.id):void 0),e=O({id:"",name:"",description:"",url:"",icon:"fa-cog"}),C={name:[{required:!0,message:"请输入工具名称",trigger:"blur"},{max:30,message:"不超过 30 字符",trigger:"blur"}],url:[{required:!0,message:"请输入跳转地址",trigger:"blur"}]};function E(){i.value&&i.value.validate(f=>{f&&(s.value?(n.updateTool(e.id,{...e}),w.success("更新成功")):(n.addTool({...e,id:"custom_"+Date.now()}),w.success("添加成功")),p.push("/tools"))})}function k(){p.back()}return I(()=>{c.value&&Object.assign(e,c.value)}),(f,a)=>{const u=B,r=y,_=R,T=h;return m(),N(P,{title:s.value?"编辑自定义工具":"添加自定义工具"},{default:l(()=>[o(T,{ref_key:"formRef",ref:i,model:e,rules:C,"label-width":"100px",style:{"max-width":"600px"}},{default:l(()=>[o(r,{label:"工具名称",prop:"name"},{default:l(()=>[o(u,{modelValue:e.name,"onUpdate:modelValue":a[0]||(a[0]=t=>e.name=t),placeholder:"请输入工具名称",maxlength:"30","show-word-limit":""},null,8,["modelValue"])]),_:1}),o(r,{label:"工具描述"},{default:l(()=>[o(u,{modelValue:e.description,"onUpdate:modelValue":a[1]||(a[1]=t=>e.description=t),type:"textarea",rows:2,maxlength:"100","show-word-limit":""},null,8,["modelValue"])]),_:1}),o(r,{label:"跳转地址",prop:"url"},{default:l(()=>[o(u,{modelValue:e.url,"onUpdate:modelValue":a[2]||(a[2]=t=>e.url=t),placeholder:"相对路径或完整 URL"},null,8,["modelValue"])]),_:1}),o(r,{label:"图标"},{default:l(()=>[v("div",$,[(m(!0),V(L,null,U(q(F),t=>(m(),V("div",{key:t,class:b(["icon-option",{selected:e.icon===t}]),onClick:Q=>e.icon=t},[v("i",{class:b(["fa",t])},null,2)],10,H))),128))])]),_:1}),o(r,null,{default:l(()=>[o(_,{type:"primary",onClick:E},{default:l(()=>[x(M(s.value?"保存":"添加"),1)]),_:1}),o(_,{onClick:k},{default:l(()=>[...a[3]||(a[3]=[x("取消",-1)])]),_:1})]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])}}}),ue=G(J,[["__scopeId","data-v-9116c5de"]]);export{ue as default}; diff --git a/frontend/dist/assets/ToolsView-CTjLaJbw.js b/frontend/dist/assets/ToolsView-CTjLaJbw.js new file mode 100644 index 0000000..6af6b96 --- /dev/null +++ b/frontend/dist/assets/ToolsView-CTjLaJbw.js @@ -0,0 +1 @@ +import{E as I}from"./index-BjEW7-SA.js";import{E as q}from"./el-card-CApHJ1Gj.js";import{b as L,a5 as g,R as v,d as E,a as M,o as p,e as d,w as r,h as P,al as V,n as w,r as D,j as _,F as J,l as K,B as U,ak as T,a3 as W,ag as G,q as n,s as m,c as S,ad as O,aa as b,f as h,bt as H,M as R,aL as B,x as Q,v as X,A as C}from"./index-BKKvzUDD.js";import{E as Y}from"./el-empty-B4M99-0a.js";import{E as Z}from"./index-dNo5H1ie.js";import{P as z}from"./PageCard-BoKXOzst.js";import{u as tt}from"./tools-BSjcVinb.js";import{_ as et}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./index-CWUnzf90.js";import"./validator-Fn0bm4xU.js";import"./index-CQXVR1Ud.js";import"./clamp-CbbY8h6F.js";import"./toNumber-Dkj3QRv9.js";import"./index-DfyOU94W.js";import"./scroll-BkzZKETR.js";import"./raf-C-x62Pcl.js";import"./index-TFUf94PZ.js";import"./index-DLzof2Fz.js";import"./index-GAnQrJsQ.js";const st=L({tag:{type:String,default:"div"},span:{type:Number,default:24},offset:{type:Number,default:0},pull:{type:Number,default:0},push:{type:Number,default:0},xs:{type:v([Number,Object]),default:()=>g({})},sm:{type:v([Number,Object]),default:()=>g({})},md:{type:v([Number,Object]),default:()=>g({})},lg:{type:v([Number,Object]),default:()=>g({})},xl:{type:v([Number,Object]),default:()=>g({})}}),ot=["start","center","end","space-around","space-between","space-evenly"],at=["top","middle","bottom"],lt=L({tag:{type:String,default:"div"},gutter:{type:Number,default:0},justify:{type:String,values:ot,default:"start"},align:{type:String,values:at}}),A=Symbol("rowContextKey");var nt=E({name:"ElRow",__name:"row",props:lt,setup(f){const t=f,u=M("row");J(A,{gutter:_(()=>t.gutter)});const i=_(()=>{const c={};return t.gutter&&(c.marginRight=c.marginLeft=`-${t.gutter/2}px`),c}),y=_(()=>[u.b(),u.is(`justify-${t.justify}`,t.justify!=="start"),u.is(`align-${t.align}`,!!t.align)]);return(c,o)=>(p(),d(D(f.tag),{class:w(y.value),style:V(i.value)},{default:r(()=>[P(c.$slots,"default")]),_:3},8,["class","style"]))}}),rt=nt;const it=K(rt);var ut=E({name:"ElCol",__name:"col",props:st,setup(f){const t=f,{gutter:u}=U(A,{gutter:_(()=>0)}),i=M("col"),y=_(()=>{const o={};return u.value&&(o.paddingLeft=o.paddingRight=`${u.value/2}px`),o}),c=_(()=>{const o=[];return["span","offset","pull","push"].forEach(s=>{const e=t[s];T(e)&&(s==="span"?o.push(i.b(`${t[s]}`)):e>0&&o.push(i.b(`${s}-${t[s]}`)))}),["xs","sm","md","lg","xl"].forEach(s=>{T(t[s])?o.push(i.b(`${s}-${t[s]}`)):W(t[s])&&Object.entries(t[s]).forEach(([e,a])=>{o.push(e!=="span"?i.b(`${s}-${e}-${a}`):i.b(`${s}-${a}`))})}),u.value&&o.push(i.is("guttered")),[i.b(),o]});return(o,s)=>(p(),d(D(f.tag),{class:w(c.value),style:V(y.value)},{default:r(()=>[P(o.$slots,"default")]),_:3},8,["class","style"]))}}),ct=ut;const pt=K(ct),dt={class:"tool-icon"},ft={class:"tool-name"},mt={class:"tool-desc"},_t={class:"tool-actions"},yt={class:"tool-icon"},gt={class:"tool-name"},vt={class:"tool-desc"},bt=E({__name:"ToolsView",setup(f){const t=X(),u=tt(),{tools:i}=G(u);function y(e){e==="data-generate"?C.info("数据生成工具开发中..."):e==="json2jsonl"?t.push("/data-convert"):e==="md-convert"&&C.info("转换Markdown 工具开发中...")}function c(e){e.url.startsWith("http")?window.open(e.url,"_blank"):t.push(e.url)}function o(e){t.push(`/tools/${e.id}/edit`)}async function s(e){await Z.confirm("确定要删除这个自定义工具吗?","确认删除",{type:"warning"}),u.removeTool(e.id),C.success("删除成功")}return(e,a)=>{const $=I,x=q,j=pt,N=it,F=Y;return p(),d(z,{title:"其他工具"},{extra:r(()=>[m($,{type:"primary",onClick:a[0]||(a[0]=l=>h(t).push("/tools/create"))},{default:r(()=>[...a[1]||(a[1]=[n("i",{class:"fa fa-plus",style:{"margin-right":"4px"}},null,-1),Q("添加自定义工具 ",-1)])]),_:1})]),default:r(()=>[a[4]||(a[4]=n("h3",{class:"section-title"},"默认工具",-1)),m(N,{gutter:16,style:{"margin-bottom":"24px"}},{default:r(()=>[(p(!0),S(R,null,O(h(H),l=>(p(),d(j,{key:l.id,span:8},{default:r(()=>[m(x,{shadow:"hover",class:"tool-card",onClick:k=>y(l.id)},{default:r(()=>[n("div",dt,[n("i",{class:w(["fa",l.icon])},null,2)]),n("h4",ft,b(l.name),1),n("p",mt,b(l.description),1)]),_:2},1032,["onClick"])]),_:2},1024))),128))]),_:1}),a[5]||(a[5]=n("h3",{class:"section-title"},"自定义工具",-1)),h(i).length?(p(),d(N,{key:0,gutter:16},{default:r(()=>[(p(!0),S(R,null,O(h(i),l=>(p(),d(j,{key:l.id,span:8},{default:r(()=>[m(x,{shadow:"hover",class:"tool-card",onClick:k=>c(l)},{default:r(()=>[n("div",_t,[m($,{link:"",size:"small",onClick:B(k=>o(l),["stop"])},{default:r(()=>[...a[2]||(a[2]=[n("i",{class:"fa fa-pencil"},null,-1)])]),_:1},8,["onClick"]),m($,{link:"",type:"danger",size:"small",onClick:B(k=>s(l),["stop"])},{default:r(()=>[...a[3]||(a[3]=[n("i",{class:"fa fa-times"},null,-1)])]),_:1},8,["onClick"])]),n("div",yt,[n("i",{class:w(["fa",l.icon])},null,2)]),n("h4",gt,b(l.name),1),n("p",vt,b(l.description),1)]),_:2},1032,["onClick"])]),_:2},1024))),128))]),_:1})):(p(),d(F,{key:1,description:"暂无自定义工具,点击右上角添加"}))]),_:1})}}}),Kt=et(bt,[["__scopeId","data-v-891c28dc"]]);export{Kt as default}; diff --git a/frontend/dist/assets/ToolsView-CbkbUKba.css b/frontend/dist/assets/ToolsView-CbkbUKba.css new file mode 100644 index 0000000..62a2650 --- /dev/null +++ b/frontend/dist/assets/ToolsView-CbkbUKba.css @@ -0,0 +1 @@ +.el-row{box-sizing:border-box;flex-wrap:wrap;display:flex;position:relative}.el-row.is-justify-center{justify-content:center}.el-row.is-justify-end{justify-content:flex-end}.el-row.is-justify-space-between{justify-content:space-between}.el-row.is-justify-space-around{justify-content:space-around}.el-row.is-justify-space-evenly{justify-content:space-evenly}.el-row.is-align-top{align-items:flex-start}.el-row.is-align-middle{align-items:center}.el-row.is-align-bottom{align-items:flex-end}[class*=el-col-]{box-sizing:border-box}[class*=el-col-].is-guttered{min-height:1px;display:block}.el-col-0{flex:0 0;max-width:0%;display:none}.el-col-0.is-guttered{display:none}.el-col-offset-0{margin-left:0%}.el-col-pull-0{position:relative;right:0%}.el-col-push-0{position:relative;left:0%}.el-col-1{flex:0 0 4.16667%;max-width:4.16667%;display:block}.el-col-1.is-guttered{display:block}.el-col-offset-1{margin-left:4.16667%}.el-col-pull-1{position:relative;right:4.16667%}.el-col-push-1{position:relative;left:4.16667%}.el-col-2{flex:0 0 8.33333%;max-width:8.33333%;display:block}.el-col-2.is-guttered{display:block}.el-col-offset-2{margin-left:8.33333%}.el-col-pull-2{position:relative;right:8.33333%}.el-col-push-2{position:relative;left:8.33333%}.el-col-3{flex:0 0 12.5%;max-width:12.5%;display:block}.el-col-3.is-guttered{display:block}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{position:relative;right:12.5%}.el-col-push-3{position:relative;left:12.5%}.el-col-4{flex:0 0 16.6667%;max-width:16.6667%;display:block}.el-col-4.is-guttered{display:block}.el-col-offset-4{margin-left:16.6667%}.el-col-pull-4{position:relative;right:16.6667%}.el-col-push-4{position:relative;left:16.6667%}.el-col-5{flex:0 0 20.8333%;max-width:20.8333%;display:block}.el-col-5.is-guttered{display:block}.el-col-offset-5{margin-left:20.8333%}.el-col-pull-5{position:relative;right:20.8333%}.el-col-push-5{position:relative;left:20.8333%}.el-col-6{flex:0 0 25%;max-width:25%;display:block}.el-col-6.is-guttered{display:block}.el-col-offset-6{margin-left:25%}.el-col-pull-6{position:relative;right:25%}.el-col-push-6{position:relative;left:25%}.el-col-7{flex:0 0 29.1667%;max-width:29.1667%;display:block}.el-col-7.is-guttered{display:block}.el-col-offset-7{margin-left:29.1667%}.el-col-pull-7{position:relative;right:29.1667%}.el-col-push-7{position:relative;left:29.1667%}.el-col-8{flex:0 0 33.3333%;max-width:33.3333%;display:block}.el-col-8.is-guttered{display:block}.el-col-offset-8{margin-left:33.3333%}.el-col-pull-8{position:relative;right:33.3333%}.el-col-push-8{position:relative;left:33.3333%}.el-col-9{flex:0 0 37.5%;max-width:37.5%;display:block}.el-col-9.is-guttered{display:block}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{position:relative;right:37.5%}.el-col-push-9{position:relative;left:37.5%}.el-col-10{flex:0 0 41.6667%;max-width:41.6667%;display:block}.el-col-10.is-guttered{display:block}.el-col-offset-10{margin-left:41.6667%}.el-col-pull-10{position:relative;right:41.6667%}.el-col-push-10{position:relative;left:41.6667%}.el-col-11{flex:0 0 45.8333%;max-width:45.8333%;display:block}.el-col-11.is-guttered{display:block}.el-col-offset-11{margin-left:45.8333%}.el-col-pull-11{position:relative;right:45.8333%}.el-col-push-11{position:relative;left:45.8333%}.el-col-12{flex:0 0 50%;max-width:50%;display:block}.el-col-12.is-guttered{display:block}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{position:relative;left:50%}.el-col-13{flex:0 0 54.1667%;max-width:54.1667%;display:block}.el-col-13.is-guttered{display:block}.el-col-offset-13{margin-left:54.1667%}.el-col-pull-13{position:relative;right:54.1667%}.el-col-push-13{position:relative;left:54.1667%}.el-col-14{flex:0 0 58.3333%;max-width:58.3333%;display:block}.el-col-14.is-guttered{display:block}.el-col-offset-14{margin-left:58.3333%}.el-col-pull-14{position:relative;right:58.3333%}.el-col-push-14{position:relative;left:58.3333%}.el-col-15{flex:0 0 62.5%;max-width:62.5%;display:block}.el-col-15.is-guttered{display:block}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{position:relative;right:62.5%}.el-col-push-15{position:relative;left:62.5%}.el-col-16{flex:0 0 66.6667%;max-width:66.6667%;display:block}.el-col-16.is-guttered{display:block}.el-col-offset-16{margin-left:66.6667%}.el-col-pull-16{position:relative;right:66.6667%}.el-col-push-16{position:relative;left:66.6667%}.el-col-17{flex:0 0 70.8333%;max-width:70.8333%;display:block}.el-col-17.is-guttered{display:block}.el-col-offset-17{margin-left:70.8333%}.el-col-pull-17{position:relative;right:70.8333%}.el-col-push-17{position:relative;left:70.8333%}.el-col-18{flex:0 0 75%;max-width:75%;display:block}.el-col-18.is-guttered{display:block}.el-col-offset-18{margin-left:75%}.el-col-pull-18{position:relative;right:75%}.el-col-push-18{position:relative;left:75%}.el-col-19{flex:0 0 79.1667%;max-width:79.1667%;display:block}.el-col-19.is-guttered{display:block}.el-col-offset-19{margin-left:79.1667%}.el-col-pull-19{position:relative;right:79.1667%}.el-col-push-19{position:relative;left:79.1667%}.el-col-20{flex:0 0 83.3333%;max-width:83.3333%;display:block}.el-col-20.is-guttered{display:block}.el-col-offset-20{margin-left:83.3333%}.el-col-pull-20{position:relative;right:83.3333%}.el-col-push-20{position:relative;left:83.3333%}.el-col-21{flex:0 0 87.5%;max-width:87.5%;display:block}.el-col-21.is-guttered{display:block}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{position:relative;right:87.5%}.el-col-push-21{position:relative;left:87.5%}.el-col-22{flex:0 0 91.6667%;max-width:91.6667%;display:block}.el-col-22.is-guttered{display:block}.el-col-offset-22{margin-left:91.6667%}.el-col-pull-22{position:relative;right:91.6667%}.el-col-push-22{position:relative;left:91.6667%}.el-col-23{flex:0 0 95.8333%;max-width:95.8333%;display:block}.el-col-23.is-guttered{display:block}.el-col-offset-23{margin-left:95.8333%}.el-col-pull-23{position:relative;right:95.8333%}.el-col-push-23{position:relative;left:95.8333%}.el-col-24{flex:0 0 100%;max-width:100%;display:block}.el-col-24.is-guttered{display:block}.el-col-offset-24{margin-left:100%}.el-col-pull-24{position:relative;right:100%}.el-col-push-24{position:relative;left:100%}@media only screen and (max-width:767px){.el-col-xs-0{flex:0 0;max-width:0%;display:none}.el-col-xs-0.is-guttered{display:none}.el-col-xs-offset-0{margin-left:0%}.el-col-xs-pull-0{position:relative;right:0%}.el-col-xs-push-0{position:relative;left:0%}.el-col-xs-1{flex:0 0 4.16667%;max-width:4.16667%;display:block}.el-col-xs-1.is-guttered{display:block}.el-col-xs-offset-1{margin-left:4.16667%}.el-col-xs-pull-1{position:relative;right:4.16667%}.el-col-xs-push-1{position:relative;left:4.16667%}.el-col-xs-2{flex:0 0 8.33333%;max-width:8.33333%;display:block}.el-col-xs-2.is-guttered{display:block}.el-col-xs-offset-2{margin-left:8.33333%}.el-col-xs-pull-2{position:relative;right:8.33333%}.el-col-xs-push-2{position:relative;left:8.33333%}.el-col-xs-3{flex:0 0 12.5%;max-width:12.5%;display:block}.el-col-xs-3.is-guttered{display:block}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{flex:0 0 16.6667%;max-width:16.6667%;display:block}.el-col-xs-4.is-guttered{display:block}.el-col-xs-offset-4{margin-left:16.6667%}.el-col-xs-pull-4{position:relative;right:16.6667%}.el-col-xs-push-4{position:relative;left:16.6667%}.el-col-xs-5{flex:0 0 20.8333%;max-width:20.8333%;display:block}.el-col-xs-5.is-guttered{display:block}.el-col-xs-offset-5{margin-left:20.8333%}.el-col-xs-pull-5{position:relative;right:20.8333%}.el-col-xs-push-5{position:relative;left:20.8333%}.el-col-xs-6{flex:0 0 25%;max-width:25%;display:block}.el-col-xs-6.is-guttered{display:block}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{flex:0 0 29.1667%;max-width:29.1667%;display:block}.el-col-xs-7.is-guttered{display:block}.el-col-xs-offset-7{margin-left:29.1667%}.el-col-xs-pull-7{position:relative;right:29.1667%}.el-col-xs-push-7{position:relative;left:29.1667%}.el-col-xs-8{flex:0 0 33.3333%;max-width:33.3333%;display:block}.el-col-xs-8.is-guttered{display:block}.el-col-xs-offset-8{margin-left:33.3333%}.el-col-xs-pull-8{position:relative;right:33.3333%}.el-col-xs-push-8{position:relative;left:33.3333%}.el-col-xs-9{flex:0 0 37.5%;max-width:37.5%;display:block}.el-col-xs-9.is-guttered{display:block}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{flex:0 0 41.6667%;max-width:41.6667%;display:block}.el-col-xs-10.is-guttered{display:block}.el-col-xs-offset-10{margin-left:41.6667%}.el-col-xs-pull-10{position:relative;right:41.6667%}.el-col-xs-push-10{position:relative;left:41.6667%}.el-col-xs-11{flex:0 0 45.8333%;max-width:45.8333%;display:block}.el-col-xs-11.is-guttered{display:block}.el-col-xs-offset-11{margin-left:45.8333%}.el-col-xs-pull-11{position:relative;right:45.8333%}.el-col-xs-push-11{position:relative;left:45.8333%}.el-col-xs-12{flex:0 0 50%;max-width:50%;display:block}.el-col-xs-12.is-guttered{display:block}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{flex:0 0 54.1667%;max-width:54.1667%;display:block}.el-col-xs-13.is-guttered{display:block}.el-col-xs-offset-13{margin-left:54.1667%}.el-col-xs-pull-13{position:relative;right:54.1667%}.el-col-xs-push-13{position:relative;left:54.1667%}.el-col-xs-14{flex:0 0 58.3333%;max-width:58.3333%;display:block}.el-col-xs-14.is-guttered{display:block}.el-col-xs-offset-14{margin-left:58.3333%}.el-col-xs-pull-14{position:relative;right:58.3333%}.el-col-xs-push-14{position:relative;left:58.3333%}.el-col-xs-15{flex:0 0 62.5%;max-width:62.5%;display:block}.el-col-xs-15.is-guttered{display:block}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{flex:0 0 66.6667%;max-width:66.6667%;display:block}.el-col-xs-16.is-guttered{display:block}.el-col-xs-offset-16{margin-left:66.6667%}.el-col-xs-pull-16{position:relative;right:66.6667%}.el-col-xs-push-16{position:relative;left:66.6667%}.el-col-xs-17{flex:0 0 70.8333%;max-width:70.8333%;display:block}.el-col-xs-17.is-guttered{display:block}.el-col-xs-offset-17{margin-left:70.8333%}.el-col-xs-pull-17{position:relative;right:70.8333%}.el-col-xs-push-17{position:relative;left:70.8333%}.el-col-xs-18{flex:0 0 75%;max-width:75%;display:block}.el-col-xs-18.is-guttered{display:block}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{flex:0 0 79.1667%;max-width:79.1667%;display:block}.el-col-xs-19.is-guttered{display:block}.el-col-xs-offset-19{margin-left:79.1667%}.el-col-xs-pull-19{position:relative;right:79.1667%}.el-col-xs-push-19{position:relative;left:79.1667%}.el-col-xs-20{flex:0 0 83.3333%;max-width:83.3333%;display:block}.el-col-xs-20.is-guttered{display:block}.el-col-xs-offset-20{margin-left:83.3333%}.el-col-xs-pull-20{position:relative;right:83.3333%}.el-col-xs-push-20{position:relative;left:83.3333%}.el-col-xs-21{flex:0 0 87.5%;max-width:87.5%;display:block}.el-col-xs-21.is-guttered{display:block}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{flex:0 0 91.6667%;max-width:91.6667%;display:block}.el-col-xs-22.is-guttered{display:block}.el-col-xs-offset-22{margin-left:91.6667%}.el-col-xs-pull-22{position:relative;right:91.6667%}.el-col-xs-push-22{position:relative;left:91.6667%}.el-col-xs-23{flex:0 0 95.8333%;max-width:95.8333%;display:block}.el-col-xs-23.is-guttered{display:block}.el-col-xs-offset-23{margin-left:95.8333%}.el-col-xs-pull-23{position:relative;right:95.8333%}.el-col-xs-push-23{position:relative;left:95.8333%}.el-col-xs-24{flex:0 0 100%;max-width:100%;display:block}.el-col-xs-24.is-guttered{display:block}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0{flex:0 0;max-width:0%;display:none}.el-col-sm-0.is-guttered{display:none}.el-col-sm-offset-0{margin-left:0%}.el-col-sm-pull-0{position:relative;right:0%}.el-col-sm-push-0{position:relative;left:0%}.el-col-sm-1{flex:0 0 4.16667%;max-width:4.16667%;display:block}.el-col-sm-1.is-guttered{display:block}.el-col-sm-offset-1{margin-left:4.16667%}.el-col-sm-pull-1{position:relative;right:4.16667%}.el-col-sm-push-1{position:relative;left:4.16667%}.el-col-sm-2{flex:0 0 8.33333%;max-width:8.33333%;display:block}.el-col-sm-2.is-guttered{display:block}.el-col-sm-offset-2{margin-left:8.33333%}.el-col-sm-pull-2{position:relative;right:8.33333%}.el-col-sm-push-2{position:relative;left:8.33333%}.el-col-sm-3{flex:0 0 12.5%;max-width:12.5%;display:block}.el-col-sm-3.is-guttered{display:block}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{flex:0 0 16.6667%;max-width:16.6667%;display:block}.el-col-sm-4.is-guttered{display:block}.el-col-sm-offset-4{margin-left:16.6667%}.el-col-sm-pull-4{position:relative;right:16.6667%}.el-col-sm-push-4{position:relative;left:16.6667%}.el-col-sm-5{flex:0 0 20.8333%;max-width:20.8333%;display:block}.el-col-sm-5.is-guttered{display:block}.el-col-sm-offset-5{margin-left:20.8333%}.el-col-sm-pull-5{position:relative;right:20.8333%}.el-col-sm-push-5{position:relative;left:20.8333%}.el-col-sm-6{flex:0 0 25%;max-width:25%;display:block}.el-col-sm-6.is-guttered{display:block}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{flex:0 0 29.1667%;max-width:29.1667%;display:block}.el-col-sm-7.is-guttered{display:block}.el-col-sm-offset-7{margin-left:29.1667%}.el-col-sm-pull-7{position:relative;right:29.1667%}.el-col-sm-push-7{position:relative;left:29.1667%}.el-col-sm-8{flex:0 0 33.3333%;max-width:33.3333%;display:block}.el-col-sm-8.is-guttered{display:block}.el-col-sm-offset-8{margin-left:33.3333%}.el-col-sm-pull-8{position:relative;right:33.3333%}.el-col-sm-push-8{position:relative;left:33.3333%}.el-col-sm-9{flex:0 0 37.5%;max-width:37.5%;display:block}.el-col-sm-9.is-guttered{display:block}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{flex:0 0 41.6667%;max-width:41.6667%;display:block}.el-col-sm-10.is-guttered{display:block}.el-col-sm-offset-10{margin-left:41.6667%}.el-col-sm-pull-10{position:relative;right:41.6667%}.el-col-sm-push-10{position:relative;left:41.6667%}.el-col-sm-11{flex:0 0 45.8333%;max-width:45.8333%;display:block}.el-col-sm-11.is-guttered{display:block}.el-col-sm-offset-11{margin-left:45.8333%}.el-col-sm-pull-11{position:relative;right:45.8333%}.el-col-sm-push-11{position:relative;left:45.8333%}.el-col-sm-12{flex:0 0 50%;max-width:50%;display:block}.el-col-sm-12.is-guttered{display:block}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{flex:0 0 54.1667%;max-width:54.1667%;display:block}.el-col-sm-13.is-guttered{display:block}.el-col-sm-offset-13{margin-left:54.1667%}.el-col-sm-pull-13{position:relative;right:54.1667%}.el-col-sm-push-13{position:relative;left:54.1667%}.el-col-sm-14{flex:0 0 58.3333%;max-width:58.3333%;display:block}.el-col-sm-14.is-guttered{display:block}.el-col-sm-offset-14{margin-left:58.3333%}.el-col-sm-pull-14{position:relative;right:58.3333%}.el-col-sm-push-14{position:relative;left:58.3333%}.el-col-sm-15{flex:0 0 62.5%;max-width:62.5%;display:block}.el-col-sm-15.is-guttered{display:block}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{flex:0 0 66.6667%;max-width:66.6667%;display:block}.el-col-sm-16.is-guttered{display:block}.el-col-sm-offset-16{margin-left:66.6667%}.el-col-sm-pull-16{position:relative;right:66.6667%}.el-col-sm-push-16{position:relative;left:66.6667%}.el-col-sm-17{flex:0 0 70.8333%;max-width:70.8333%;display:block}.el-col-sm-17.is-guttered{display:block}.el-col-sm-offset-17{margin-left:70.8333%}.el-col-sm-pull-17{position:relative;right:70.8333%}.el-col-sm-push-17{position:relative;left:70.8333%}.el-col-sm-18{flex:0 0 75%;max-width:75%;display:block}.el-col-sm-18.is-guttered{display:block}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{flex:0 0 79.1667%;max-width:79.1667%;display:block}.el-col-sm-19.is-guttered{display:block}.el-col-sm-offset-19{margin-left:79.1667%}.el-col-sm-pull-19{position:relative;right:79.1667%}.el-col-sm-push-19{position:relative;left:79.1667%}.el-col-sm-20{flex:0 0 83.3333%;max-width:83.3333%;display:block}.el-col-sm-20.is-guttered{display:block}.el-col-sm-offset-20{margin-left:83.3333%}.el-col-sm-pull-20{position:relative;right:83.3333%}.el-col-sm-push-20{position:relative;left:83.3333%}.el-col-sm-21{flex:0 0 87.5%;max-width:87.5%;display:block}.el-col-sm-21.is-guttered{display:block}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{flex:0 0 91.6667%;max-width:91.6667%;display:block}.el-col-sm-22.is-guttered{display:block}.el-col-sm-offset-22{margin-left:91.6667%}.el-col-sm-pull-22{position:relative;right:91.6667%}.el-col-sm-push-22{position:relative;left:91.6667%}.el-col-sm-23{flex:0 0 95.8333%;max-width:95.8333%;display:block}.el-col-sm-23.is-guttered{display:block}.el-col-sm-offset-23{margin-left:95.8333%}.el-col-sm-pull-23{position:relative;right:95.8333%}.el-col-sm-push-23{position:relative;left:95.8333%}.el-col-sm-24{flex:0 0 100%;max-width:100%;display:block}.el-col-sm-24.is-guttered{display:block}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0{flex:0 0;max-width:0%;display:none}.el-col-md-0.is-guttered{display:none}.el-col-md-offset-0{margin-left:0%}.el-col-md-pull-0{position:relative;right:0%}.el-col-md-push-0{position:relative;left:0%}.el-col-md-1{flex:0 0 4.16667%;max-width:4.16667%;display:block}.el-col-md-1.is-guttered{display:block}.el-col-md-offset-1{margin-left:4.16667%}.el-col-md-pull-1{position:relative;right:4.16667%}.el-col-md-push-1{position:relative;left:4.16667%}.el-col-md-2{flex:0 0 8.33333%;max-width:8.33333%;display:block}.el-col-md-2.is-guttered{display:block}.el-col-md-offset-2{margin-left:8.33333%}.el-col-md-pull-2{position:relative;right:8.33333%}.el-col-md-push-2{position:relative;left:8.33333%}.el-col-md-3{flex:0 0 12.5%;max-width:12.5%;display:block}.el-col-md-3.is-guttered{display:block}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{flex:0 0 16.6667%;max-width:16.6667%;display:block}.el-col-md-4.is-guttered{display:block}.el-col-md-offset-4{margin-left:16.6667%}.el-col-md-pull-4{position:relative;right:16.6667%}.el-col-md-push-4{position:relative;left:16.6667%}.el-col-md-5{flex:0 0 20.8333%;max-width:20.8333%;display:block}.el-col-md-5.is-guttered{display:block}.el-col-md-offset-5{margin-left:20.8333%}.el-col-md-pull-5{position:relative;right:20.8333%}.el-col-md-push-5{position:relative;left:20.8333%}.el-col-md-6{flex:0 0 25%;max-width:25%;display:block}.el-col-md-6.is-guttered{display:block}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{flex:0 0 29.1667%;max-width:29.1667%;display:block}.el-col-md-7.is-guttered{display:block}.el-col-md-offset-7{margin-left:29.1667%}.el-col-md-pull-7{position:relative;right:29.1667%}.el-col-md-push-7{position:relative;left:29.1667%}.el-col-md-8{flex:0 0 33.3333%;max-width:33.3333%;display:block}.el-col-md-8.is-guttered{display:block}.el-col-md-offset-8{margin-left:33.3333%}.el-col-md-pull-8{position:relative;right:33.3333%}.el-col-md-push-8{position:relative;left:33.3333%}.el-col-md-9{flex:0 0 37.5%;max-width:37.5%;display:block}.el-col-md-9.is-guttered{display:block}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{flex:0 0 41.6667%;max-width:41.6667%;display:block}.el-col-md-10.is-guttered{display:block}.el-col-md-offset-10{margin-left:41.6667%}.el-col-md-pull-10{position:relative;right:41.6667%}.el-col-md-push-10{position:relative;left:41.6667%}.el-col-md-11{flex:0 0 45.8333%;max-width:45.8333%;display:block}.el-col-md-11.is-guttered{display:block}.el-col-md-offset-11{margin-left:45.8333%}.el-col-md-pull-11{position:relative;right:45.8333%}.el-col-md-push-11{position:relative;left:45.8333%}.el-col-md-12{flex:0 0 50%;max-width:50%;display:block}.el-col-md-12.is-guttered{display:block}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{flex:0 0 54.1667%;max-width:54.1667%;display:block}.el-col-md-13.is-guttered{display:block}.el-col-md-offset-13{margin-left:54.1667%}.el-col-md-pull-13{position:relative;right:54.1667%}.el-col-md-push-13{position:relative;left:54.1667%}.el-col-md-14{flex:0 0 58.3333%;max-width:58.3333%;display:block}.el-col-md-14.is-guttered{display:block}.el-col-md-offset-14{margin-left:58.3333%}.el-col-md-pull-14{position:relative;right:58.3333%}.el-col-md-push-14{position:relative;left:58.3333%}.el-col-md-15{flex:0 0 62.5%;max-width:62.5%;display:block}.el-col-md-15.is-guttered{display:block}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{flex:0 0 66.6667%;max-width:66.6667%;display:block}.el-col-md-16.is-guttered{display:block}.el-col-md-offset-16{margin-left:66.6667%}.el-col-md-pull-16{position:relative;right:66.6667%}.el-col-md-push-16{position:relative;left:66.6667%}.el-col-md-17{flex:0 0 70.8333%;max-width:70.8333%;display:block}.el-col-md-17.is-guttered{display:block}.el-col-md-offset-17{margin-left:70.8333%}.el-col-md-pull-17{position:relative;right:70.8333%}.el-col-md-push-17{position:relative;left:70.8333%}.el-col-md-18{flex:0 0 75%;max-width:75%;display:block}.el-col-md-18.is-guttered{display:block}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{flex:0 0 79.1667%;max-width:79.1667%;display:block}.el-col-md-19.is-guttered{display:block}.el-col-md-offset-19{margin-left:79.1667%}.el-col-md-pull-19{position:relative;right:79.1667%}.el-col-md-push-19{position:relative;left:79.1667%}.el-col-md-20{flex:0 0 83.3333%;max-width:83.3333%;display:block}.el-col-md-20.is-guttered{display:block}.el-col-md-offset-20{margin-left:83.3333%}.el-col-md-pull-20{position:relative;right:83.3333%}.el-col-md-push-20{position:relative;left:83.3333%}.el-col-md-21{flex:0 0 87.5%;max-width:87.5%;display:block}.el-col-md-21.is-guttered{display:block}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{flex:0 0 91.6667%;max-width:91.6667%;display:block}.el-col-md-22.is-guttered{display:block}.el-col-md-offset-22{margin-left:91.6667%}.el-col-md-pull-22{position:relative;right:91.6667%}.el-col-md-push-22{position:relative;left:91.6667%}.el-col-md-23{flex:0 0 95.8333%;max-width:95.8333%;display:block}.el-col-md-23.is-guttered{display:block}.el-col-md-offset-23{margin-left:95.8333%}.el-col-md-pull-23{position:relative;right:95.8333%}.el-col-md-push-23{position:relative;left:95.8333%}.el-col-md-24{flex:0 0 100%;max-width:100%;display:block}.el-col-md-24.is-guttered{display:block}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0{flex:0 0;max-width:0%;display:none}.el-col-lg-0.is-guttered{display:none}.el-col-lg-offset-0{margin-left:0%}.el-col-lg-pull-0{position:relative;right:0%}.el-col-lg-push-0{position:relative;left:0%}.el-col-lg-1{flex:0 0 4.16667%;max-width:4.16667%;display:block}.el-col-lg-1.is-guttered{display:block}.el-col-lg-offset-1{margin-left:4.16667%}.el-col-lg-pull-1{position:relative;right:4.16667%}.el-col-lg-push-1{position:relative;left:4.16667%}.el-col-lg-2{flex:0 0 8.33333%;max-width:8.33333%;display:block}.el-col-lg-2.is-guttered{display:block}.el-col-lg-offset-2{margin-left:8.33333%}.el-col-lg-pull-2{position:relative;right:8.33333%}.el-col-lg-push-2{position:relative;left:8.33333%}.el-col-lg-3{flex:0 0 12.5%;max-width:12.5%;display:block}.el-col-lg-3.is-guttered{display:block}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{flex:0 0 16.6667%;max-width:16.6667%;display:block}.el-col-lg-4.is-guttered{display:block}.el-col-lg-offset-4{margin-left:16.6667%}.el-col-lg-pull-4{position:relative;right:16.6667%}.el-col-lg-push-4{position:relative;left:16.6667%}.el-col-lg-5{flex:0 0 20.8333%;max-width:20.8333%;display:block}.el-col-lg-5.is-guttered{display:block}.el-col-lg-offset-5{margin-left:20.8333%}.el-col-lg-pull-5{position:relative;right:20.8333%}.el-col-lg-push-5{position:relative;left:20.8333%}.el-col-lg-6{flex:0 0 25%;max-width:25%;display:block}.el-col-lg-6.is-guttered{display:block}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{flex:0 0 29.1667%;max-width:29.1667%;display:block}.el-col-lg-7.is-guttered{display:block}.el-col-lg-offset-7{margin-left:29.1667%}.el-col-lg-pull-7{position:relative;right:29.1667%}.el-col-lg-push-7{position:relative;left:29.1667%}.el-col-lg-8{flex:0 0 33.3333%;max-width:33.3333%;display:block}.el-col-lg-8.is-guttered{display:block}.el-col-lg-offset-8{margin-left:33.3333%}.el-col-lg-pull-8{position:relative;right:33.3333%}.el-col-lg-push-8{position:relative;left:33.3333%}.el-col-lg-9{flex:0 0 37.5%;max-width:37.5%;display:block}.el-col-lg-9.is-guttered{display:block}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{flex:0 0 41.6667%;max-width:41.6667%;display:block}.el-col-lg-10.is-guttered{display:block}.el-col-lg-offset-10{margin-left:41.6667%}.el-col-lg-pull-10{position:relative;right:41.6667%}.el-col-lg-push-10{position:relative;left:41.6667%}.el-col-lg-11{flex:0 0 45.8333%;max-width:45.8333%;display:block}.el-col-lg-11.is-guttered{display:block}.el-col-lg-offset-11{margin-left:45.8333%}.el-col-lg-pull-11{position:relative;right:45.8333%}.el-col-lg-push-11{position:relative;left:45.8333%}.el-col-lg-12{flex:0 0 50%;max-width:50%;display:block}.el-col-lg-12.is-guttered{display:block}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{flex:0 0 54.1667%;max-width:54.1667%;display:block}.el-col-lg-13.is-guttered{display:block}.el-col-lg-offset-13{margin-left:54.1667%}.el-col-lg-pull-13{position:relative;right:54.1667%}.el-col-lg-push-13{position:relative;left:54.1667%}.el-col-lg-14{flex:0 0 58.3333%;max-width:58.3333%;display:block}.el-col-lg-14.is-guttered{display:block}.el-col-lg-offset-14{margin-left:58.3333%}.el-col-lg-pull-14{position:relative;right:58.3333%}.el-col-lg-push-14{position:relative;left:58.3333%}.el-col-lg-15{flex:0 0 62.5%;max-width:62.5%;display:block}.el-col-lg-15.is-guttered{display:block}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{flex:0 0 66.6667%;max-width:66.6667%;display:block}.el-col-lg-16.is-guttered{display:block}.el-col-lg-offset-16{margin-left:66.6667%}.el-col-lg-pull-16{position:relative;right:66.6667%}.el-col-lg-push-16{position:relative;left:66.6667%}.el-col-lg-17{flex:0 0 70.8333%;max-width:70.8333%;display:block}.el-col-lg-17.is-guttered{display:block}.el-col-lg-offset-17{margin-left:70.8333%}.el-col-lg-pull-17{position:relative;right:70.8333%}.el-col-lg-push-17{position:relative;left:70.8333%}.el-col-lg-18{flex:0 0 75%;max-width:75%;display:block}.el-col-lg-18.is-guttered{display:block}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{flex:0 0 79.1667%;max-width:79.1667%;display:block}.el-col-lg-19.is-guttered{display:block}.el-col-lg-offset-19{margin-left:79.1667%}.el-col-lg-pull-19{position:relative;right:79.1667%}.el-col-lg-push-19{position:relative;left:79.1667%}.el-col-lg-20{flex:0 0 83.3333%;max-width:83.3333%;display:block}.el-col-lg-20.is-guttered{display:block}.el-col-lg-offset-20{margin-left:83.3333%}.el-col-lg-pull-20{position:relative;right:83.3333%}.el-col-lg-push-20{position:relative;left:83.3333%}.el-col-lg-21{flex:0 0 87.5%;max-width:87.5%;display:block}.el-col-lg-21.is-guttered{display:block}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{flex:0 0 91.6667%;max-width:91.6667%;display:block}.el-col-lg-22.is-guttered{display:block}.el-col-lg-offset-22{margin-left:91.6667%}.el-col-lg-pull-22{position:relative;right:91.6667%}.el-col-lg-push-22{position:relative;left:91.6667%}.el-col-lg-23{flex:0 0 95.8333%;max-width:95.8333%;display:block}.el-col-lg-23.is-guttered{display:block}.el-col-lg-offset-23{margin-left:95.8333%}.el-col-lg-pull-23{position:relative;right:95.8333%}.el-col-lg-push-23{position:relative;left:95.8333%}.el-col-lg-24{flex:0 0 100%;max-width:100%;display:block}.el-col-lg-24.is-guttered{display:block}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0{flex:0 0;max-width:0%;display:none}.el-col-xl-0.is-guttered{display:none}.el-col-xl-offset-0{margin-left:0%}.el-col-xl-pull-0{position:relative;right:0%}.el-col-xl-push-0{position:relative;left:0%}.el-col-xl-1{flex:0 0 4.16667%;max-width:4.16667%;display:block}.el-col-xl-1.is-guttered{display:block}.el-col-xl-offset-1{margin-left:4.16667%}.el-col-xl-pull-1{position:relative;right:4.16667%}.el-col-xl-push-1{position:relative;left:4.16667%}.el-col-xl-2{flex:0 0 8.33333%;max-width:8.33333%;display:block}.el-col-xl-2.is-guttered{display:block}.el-col-xl-offset-2{margin-left:8.33333%}.el-col-xl-pull-2{position:relative;right:8.33333%}.el-col-xl-push-2{position:relative;left:8.33333%}.el-col-xl-3{flex:0 0 12.5%;max-width:12.5%;display:block}.el-col-xl-3.is-guttered{display:block}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{flex:0 0 16.6667%;max-width:16.6667%;display:block}.el-col-xl-4.is-guttered{display:block}.el-col-xl-offset-4{margin-left:16.6667%}.el-col-xl-pull-4{position:relative;right:16.6667%}.el-col-xl-push-4{position:relative;left:16.6667%}.el-col-xl-5{flex:0 0 20.8333%;max-width:20.8333%;display:block}.el-col-xl-5.is-guttered{display:block}.el-col-xl-offset-5{margin-left:20.8333%}.el-col-xl-pull-5{position:relative;right:20.8333%}.el-col-xl-push-5{position:relative;left:20.8333%}.el-col-xl-6{flex:0 0 25%;max-width:25%;display:block}.el-col-xl-6.is-guttered{display:block}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{flex:0 0 29.1667%;max-width:29.1667%;display:block}.el-col-xl-7.is-guttered{display:block}.el-col-xl-offset-7{margin-left:29.1667%}.el-col-xl-pull-7{position:relative;right:29.1667%}.el-col-xl-push-7{position:relative;left:29.1667%}.el-col-xl-8{flex:0 0 33.3333%;max-width:33.3333%;display:block}.el-col-xl-8.is-guttered{display:block}.el-col-xl-offset-8{margin-left:33.3333%}.el-col-xl-pull-8{position:relative;right:33.3333%}.el-col-xl-push-8{position:relative;left:33.3333%}.el-col-xl-9{flex:0 0 37.5%;max-width:37.5%;display:block}.el-col-xl-9.is-guttered{display:block}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{flex:0 0 41.6667%;max-width:41.6667%;display:block}.el-col-xl-10.is-guttered{display:block}.el-col-xl-offset-10{margin-left:41.6667%}.el-col-xl-pull-10{position:relative;right:41.6667%}.el-col-xl-push-10{position:relative;left:41.6667%}.el-col-xl-11{flex:0 0 45.8333%;max-width:45.8333%;display:block}.el-col-xl-11.is-guttered{display:block}.el-col-xl-offset-11{margin-left:45.8333%}.el-col-xl-pull-11{position:relative;right:45.8333%}.el-col-xl-push-11{position:relative;left:45.8333%}.el-col-xl-12{flex:0 0 50%;max-width:50%;display:block}.el-col-xl-12.is-guttered{display:block}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{flex:0 0 54.1667%;max-width:54.1667%;display:block}.el-col-xl-13.is-guttered{display:block}.el-col-xl-offset-13{margin-left:54.1667%}.el-col-xl-pull-13{position:relative;right:54.1667%}.el-col-xl-push-13{position:relative;left:54.1667%}.el-col-xl-14{flex:0 0 58.3333%;max-width:58.3333%;display:block}.el-col-xl-14.is-guttered{display:block}.el-col-xl-offset-14{margin-left:58.3333%}.el-col-xl-pull-14{position:relative;right:58.3333%}.el-col-xl-push-14{position:relative;left:58.3333%}.el-col-xl-15{flex:0 0 62.5%;max-width:62.5%;display:block}.el-col-xl-15.is-guttered{display:block}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{flex:0 0 66.6667%;max-width:66.6667%;display:block}.el-col-xl-16.is-guttered{display:block}.el-col-xl-offset-16{margin-left:66.6667%}.el-col-xl-pull-16{position:relative;right:66.6667%}.el-col-xl-push-16{position:relative;left:66.6667%}.el-col-xl-17{flex:0 0 70.8333%;max-width:70.8333%;display:block}.el-col-xl-17.is-guttered{display:block}.el-col-xl-offset-17{margin-left:70.8333%}.el-col-xl-pull-17{position:relative;right:70.8333%}.el-col-xl-push-17{position:relative;left:70.8333%}.el-col-xl-18{flex:0 0 75%;max-width:75%;display:block}.el-col-xl-18.is-guttered{display:block}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{flex:0 0 79.1667%;max-width:79.1667%;display:block}.el-col-xl-19.is-guttered{display:block}.el-col-xl-offset-19{margin-left:79.1667%}.el-col-xl-pull-19{position:relative;right:79.1667%}.el-col-xl-push-19{position:relative;left:79.1667%}.el-col-xl-20{flex:0 0 83.3333%;max-width:83.3333%;display:block}.el-col-xl-20.is-guttered{display:block}.el-col-xl-offset-20{margin-left:83.3333%}.el-col-xl-pull-20{position:relative;right:83.3333%}.el-col-xl-push-20{position:relative;left:83.3333%}.el-col-xl-21{flex:0 0 87.5%;max-width:87.5%;display:block}.el-col-xl-21.is-guttered{display:block}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{flex:0 0 91.6667%;max-width:91.6667%;display:block}.el-col-xl-22.is-guttered{display:block}.el-col-xl-offset-22{margin-left:91.6667%}.el-col-xl-pull-22{position:relative;right:91.6667%}.el-col-xl-push-22{position:relative;left:91.6667%}.el-col-xl-23{flex:0 0 95.8333%;max-width:95.8333%;display:block}.el-col-xl-23.is-guttered{display:block}.el-col-xl-offset-23{margin-left:95.8333%}.el-col-xl-pull-23{position:relative;right:95.8333%}.el-col-xl-push-23{position:relative;left:95.8333%}.el-col-xl-24{flex:0 0 100%;max-width:100%;display:block}.el-col-xl-24.is-guttered{display:block}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}.section-title[data-v-891c28dc]{font-size:14px;font-weight:600;color:#606266;margin:0 0 16px;padding-bottom:8px;border-bottom:1px solid #ebeef5}.tool-card[data-v-891c28dc]{cursor:pointer;transition:all .2s;position:relative}.tool-card[data-v-891c28dc]:hover{border-color:#1890ff}.tool-card .tool-actions[data-v-891c28dc]{position:absolute;top:8px;right:8px;display:flex;gap:4px;opacity:0;transition:opacity .2s}.tool-card:hover .tool-actions[data-v-891c28dc]{opacity:1}.tool-card .tool-icon[data-v-891c28dc]{width:48px;height:48px;border-radius:8px;background:#1890ff1a;display:flex;align-items:center;justify-content:center;margin-bottom:12px}.tool-card .tool-icon i[data-v-891c28dc]{font-size:20px;color:#1890ff}.tool-card .tool-name[data-v-891c28dc]{font-size:15px;font-weight:500;color:#303133;margin:0 0 6px}.tool-card .tool-desc[data-v-891c28dc]{font-size:13px;color:#909399;margin:0} diff --git a/frontend/dist/assets/TrainingLogView-C5lCdvrq.js b/frontend/dist/assets/TrainingLogView-C5lCdvrq.js new file mode 100644 index 0000000..577f5d0 --- /dev/null +++ b/frontend/dist/assets/TrainingLogView-C5lCdvrq.js @@ -0,0 +1 @@ +import{E as sa}from"./index-BjEW7-SA.js";import{E as la}from"./index-BDEF353-.js";import{E as ua}from"./index-AGby9JM1.js";import{E as Pt,a as Et}from"./el-descriptions-3GOD-6nw.js";import{E as ca}from"./el-progress-DuOxpLST.js";import{v as da}from"./directive-DsZckUTJ.js";import{d as Ot,e as pa,w as x,o as H,q as c,s as m,x as A,aa as v,f as j,aq as Be,ar as $e,b1 as ha,b2 as fa,G as va,c as K,K as dt,M as pt,n as ht,ac as ga,y as q,j as O,at as ma,ad as _a,g as ft,L as ya,z as vt}from"./index-BKKvzUDD.js";/* empty css */import{ap as Re,bd as ba,be as xa,bf as He,_ as ae,ak as C,r as Ue,a7 as gt,d as Zt,bg as mt,bh as Se,bi as Ma,aP as zt,bj as ne,e as ee,bk as Sa,bl as Nt,bm as _t,E as T,bn as wa,bo as Fe,bp as Aa,bq as Ra,ay as yt,ax as Z,f as se,br as ke,k as Gt,bs as Vt,z as Ta,bt as Ia,aJ as Bt,H as La,I as Da,bu as Ca,bv as ka,bw as Pa,bx as Ea,U as Oa,w as Za,N as $t,by as Ht,al as bt,O as G,bz as za,a1 as xt,bA as Na,bB as Ga,bC as Va,a6 as xe,bD as Ba,aN as Mt,B as St,bE as $a,az as Ha,aK as Ua,bF as Fa,bG as Wa,bH as wt,P as Xa,bI as Ya,a as Ka,aQ as qa,aC as We,aD as ja,aE as Ja,aF as Qa,aG as er,aH as Pe}from"./install-CZjWaVQv.js";import{P as ge}from"./PageCard-BoKXOzst.js";import{_ as At}from"./ModelStatusTag.vue_vue_type_script_setup_true_lang-VFIQNBU2.js";import{_ as Ut}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{u as tr}from"./usePolling-C6448AR2.js";import{i as ar}from"./install-BQfh6E0c.js";import{u as rr}from"./models-DQoXB8yB.js";import{b as or}from"./fineTune-BsSQAQBF.js";import{c as nr,b as ir}from"./log-C_tWKzjC.js";import{b as sr}from"./dataset-BJ2ikehQ.js";import"./vnode-78qeDweP.js";import"./el-card-CApHJ1Gj.js";import"./model-gCK34aBo.js";var lr=Re();function Rt(i,r){return!!lr(i)[r]}ba({type:"takeGlobalCursor",event:"globalCursorTaken",update:"update"},xa);var ur={axisPointer:1,tooltip:1,brush:1};function cr(i,r,e){var a=r.getComponentByElement(i.topTarget);if(!a||a===e||ur.hasOwnProperty(a.mainType))return!1;var t=a.coordinateSystem;if(!t||t.model===e)return!1;var n=He(a),o=He(e);return!((n.zlevel-o.zlevel||n.z-o.z)<=0)}var dr=(function(i){ae(r,i);function r(e){var a=i.call(this)||this;a._zr=e;var t=C(a._mousedownHandler,a),n=C(a._mousemoveHandler,a),o=C(a._mouseupHandler,a),s=C(a._mousewheelHandler,a),l=C(a._pinchHandler,a);return a.enable=function(u,d){var h=d.zInfo,g=He(h.component),_=g.z,M=g.zlevel,w={component:h.component,z:_,zlevel:M,z2:Ue(h.z2,-1/0)},I=gt({},d.triggerInfo);this._opt=Zt(gt({},d),{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0,zInfoParsed:w,triggerInfo:I,cursorGrab:"grab",cursorGrabbing:"grabbing"}),u==null&&(u=!0),(!this._enabled||this._controlType!==u)&&(this.disable(),this._enabled=!0,(u===!0||u==="move"||u==="pan")&&(pe(e,"mousedown",t,w),pe(e,"mousemove",n,w),pe(e,"mouseup",o,w)),(u===!0||u==="scale"||u==="zoom")&&(pe(e,"mousewheel",s,w),pe(e,"pinch",l,w)))},a.disable=function(){this._enabled&&(this._enabled=!1,he(e,"mousedown",t),he(e,"mousemove",n),he(e,"mouseup",o),he(e,"mousewheel",s),he(e,"pinch",l))},a}return r.prototype.isDragging=function(){return this._dragging},r.prototype.isPinching=function(){return this._pinching},r.prototype._checkPointer=function(e,a,t){var n=this._opt,o=n.zInfoParsed;if(cr(e,n.api,o.component))return!1;var s=n.triggerInfo,l=s.roamTrigger,u=!1;return l==="global"&&(u=!0),u||(u=s.isInSelf(e,a,t)),u&&s.isInClip&&!s.isInClip(e,a,t)&&(u=!1),u},r.prototype._decideCursorStyle=function(e,a,t,n){var o=e.target;if(!o&&this._checkPointer(e,a,t))return this._opt.cursorGrab;if(n)return o&&o.cursor||"default"},r.prototype.dispose=function(){this.disable()},r.prototype._mousedownHandler=function(e){if(!(mt(e)||de(e))){for(var a=e.target;a;){if(a.draggable)return;a=a.__hostTarget||a.parent}var t=e.offsetX,n=e.offsetY;this._checkPointer(e,t,n)&&(this._x=t,this._y=n,this._dragging=!0)}},r.prototype._mousemoveHandler=function(e){var a=this._zr;if(!(e.gestureEvent==="pinch"||Rt(a,"globalPan")||de(e))){var t=e.offsetX,n=e.offsetY;if(!this._dragging||!Me("moveOnMouseMove",e,this._opt)){var o=this._decideCursorStyle(e,t,n,!1);o&&a.setCursorStyle(o);return}a.setCursorStyle(this._opt.cursorGrabbing);var s=this._x,l=this._y,u=t-s,d=n-l;this._x=t,this._y=n,this._opt.preventDefaultMouseMove&&Se(e.event),e.__ecRoamConsumed=!0,Tt(this,"pan","moveOnMouseMove",e,{dx:u,dy:d,oldX:s,oldY:l,newX:t,newY:n,isAvailableBehavior:null})}},r.prototype._mouseupHandler=function(e){if(!de(e)){var a=this._zr;if(!mt(e)){this._dragging=!1;var t=this._decideCursorStyle(e,e.offsetX,e.offsetY,!0);t&&a.setCursorStyle(t)}}},r.prototype._mousewheelHandler=function(e){if(!de(e)){var a=Me("zoomOnMouseWheel",e,this._opt),t=Me("moveOnMouseWheel",e,this._opt),n=e.wheelDelta,o=Math.abs(n),s=e.offsetX,l=e.offsetY;if(!(n===0||!a&&!t)){if(a){var u=o>3?1.4:o>1?1.2:1.1,d=n>0?u:1/u;this._checkTriggerMoveZoom(this,"zoom","zoomOnMouseWheel",e,{scale:d,originX:s,originY:l,isAvailableBehavior:null})}if(t){var h=Math.abs(n),g=(n>0?1:-1)*(h>3?.4:h>1?.15:.05);this._checkTriggerMoveZoom(this,"scrollMove","moveOnMouseWheel",e,{scrollDelta:g,originX:s,originY:l,isAvailableBehavior:null})}}}},r.prototype._pinchHandler=function(e){if(!(Rt(this._zr,"globalPan")||de(e))){var a=e.pinchScale>1?1.1:1/1.1;this._checkTriggerMoveZoom(this,"zoom",null,e,{scale:a,originX:e.pinchX,originY:e.pinchY,isAvailableBehavior:null})}},r.prototype._checkTriggerMoveZoom=function(e,a,t,n,o){e._checkPointer(n,o.originX,o.originY)&&(Se(n.event),n.__ecRoamConsumed=!0,Tt(e,a,t,n,o))},r})(Ma);function de(i){return i.__ecRoamConsumed}var pr=Re();function Te(i){var r=pr(i);return r.roam=r.roam||{},r.uniform=r.uniform||{},r}function pe(i,r,e,a){for(var t=Te(i),n=t.roam,o=n[r]=n[r]||[],s=0;sn&&(r[1-a]=ne(r[a],h.sign*n)),r}function Ee(i,r){var e=i[r]-i[1-r];return{span:Math.abs(e),sign:e>0?-1:e<0?1:r?-1:1}}function ie(i,r){return Math.min(r[1]!=null?r[1]:1/0,Math.max(r[0]!=null?r[0]:-1/0,i))}var It=["x","y","radius","angle","single"],vr=Re(),gr=["cartesian2d","polar","singleAxis"];function mr(i){var r=i.get("coordinateSystem");return Nt(gr,r)>=0}function Q(i){return i+"Axis"}function _r(i,r){var e=ee(),a=[],t=ee();i.eachComponent({mainType:"dataZoom",query:r},function(d){t.get(d.uid)||s(d)});var n;do n=!1,i.eachComponent("dataZoom",o);while(n);function o(d){!t.get(d.uid)&&l(d)&&(s(d),n=!0)}function s(d){t.set(d.uid,!0),a.push(d),u(d)}function l(d){var h=!1;return d.eachTargetAxis(function(g,_){var M=e.get(g);M&&M[_]&&(h=!0)}),h}function u(d){d.eachTargetAxis(function(h,g){(e.get(h)||e.set(h,[]))[g]=!0})}return a}function Ft(i){var r=i.ecModel,e={infoList:[],infoMap:ee()};return i.eachTargetAxis(function(a,t){var n=r.getComponent(Q(a),t);if(n){var o=n.getCoordSysModel();if(o){var s=o.uid,l=e.infoMap.get(s);l||(l={model:o,axisModels:[]},e.infoList.push(l),e.infoMap.set(s,l)),l.axisModels.push(n)}}}),e}function Wt(i){var r=vr(Sa(i));return r.axisProxyMap||(r.axisProxyMap=ee())}function we(i){if(i)return Wt(i.ecModel).get(i.uid)}function yr(i,r){Wt(i.ecModel).set(i.uid,r)}function Xt(i,r){var e=r.getAxisModel().axis.__alignTo;return e&&i.getAxisProxy(e.dim,e.model.componentIndex)?we(e.model):null}var Oe=(function(){function i(){this.indexList=[],this.indexMap=[]}return i.prototype.add=function(r){this.indexMap[r]||(this.indexList.push(r),this.indexMap[r]=!0)},i})(),Ae=(function(i){ae(r,i);function r(){var e=i!==null&&i.apply(this,arguments)||this;return e.type=r.type,e._autoThrottle=!0,e._noTarget=!0,e._rangePropMode=["percent","percent"],e}return r.prototype.init=function(e,a,t){var n=Lt(e);this.settledOption=n,this.mergeDefaultAndTheme(e,t),this._doInit(n)},r.prototype.mergeOption=function(e){var a=Lt(e);_t(this.option,e,!0),_t(this.settledOption,a,!0),this._doInit(a)},r.prototype._doInit=function(e){var a=this.option;this._setDefaultThrottle(e),this._updateRangeUse(e);var t=this.settledOption;T([["start","startValue"],["end","endValue"]],function(n,o){this._rangePropMode[o]==="value"&&(a[n[0]]=t[n[0]]=null)},this),this._resetTarget()},r.prototype._resetTarget=function(){var e=this.get("orient",!0),a=this._targetAxisInfoMap=ee(),t=this._fillSpecifiedTargetAxis(a);t?this._orient=e||this._makeAutoOrientByTargetAxis():(this._orient=e||"horizontal",this._fillAutoTargetAxisByOrient(a,this._orient)),this._noTarget=!0,a.each(function(n){n.indexList.length&&(this._noTarget=!1)},this)},r.prototype._fillSpecifiedTargetAxis=function(e){var a=!1;return T(It,function(t){var n=this.getReferringComponents(Q(t),wa);if(n.specified){a=!0;var o=new Oe;T(n.models,function(s){o.add(s.componentIndex)}),e.set(t,o)}},this),a},r.prototype._fillAutoTargetAxisByOrient=function(e,a){var t=this.ecModel,n=!0;if(n){var o=a==="vertical"?"y":"x",s=t.findComponents({mainType:o+"Axis"});l(s,o)}if(n){var s=t.findComponents({mainType:"singleAxis",filter:function(d){return d.get("orient",!0)===a}});l(s,"single")}function l(u,d){var h=u[0];if(h){var g=new Oe;if(g.add(h.componentIndex),e.set(d,g),n=!1,d==="x"||d==="y"){var _=h.getReferringComponents("grid",Fe).models[0];_&&T(u,function(M){h.componentIndex!==M.componentIndex&&_===M.getReferringComponents("grid",Fe).models[0]&&g.add(M.componentIndex)})}}}n&&T(It,function(u){if(n){var d=t.findComponents({mainType:Q(u),filter:function(g){return g.get("type",!0)==="category"}});if(d[0]){var h=new Oe;h.add(d[0].componentIndex),e.set(u,h),n=!1}}},this)},r.prototype._makeAutoOrientByTargetAxis=function(){var e;return this.eachTargetAxis(function(a){!e&&(e=a)},this),e==="y"?"vertical":"horizontal"},r.prototype._setDefaultThrottle=function(e){if(e.hasOwnProperty("throttle")&&(this._autoThrottle=!1),this._autoThrottle){var a=this.ecModel.option;this.option.throttle=a.animation&&a.animationDurationUpdate>0?100:20}},r.prototype._updateRangeUse=function(e){var a=this._rangePropMode,t=this.get("rangeMode");T([["start","startValue"],["end","endValue"]],function(n,o){var s=e[n[0]]!=null,l=e[n[1]]!=null;s&&!l?a[o]="percent":!s&&l?a[o]="value":t?a[o]=t[o]:s&&(a[o]="percent")})},r.prototype.noTarget=function(){return this._noTarget},r.prototype.getFirstTargetAxisModel=function(){var e;return this.eachTargetAxis(function(a,t){e==null&&(e=this.ecModel.getComponent(Q(a),t))},this),e},r.prototype.eachTargetAxis=function(e,a){this._targetAxisInfoMap.each(function(t,n){T(t.indexList,function(o){e.call(a,n,o)})})},r.prototype.getAxisProxy=function(e,a){return we(this.getAxisModel(e,a))},r.prototype.getAxisModel=function(e,a){var t=this._targetAxisInfoMap.get(e);if(t&&t.indexMap[a])return this.ecModel.getComponent(Q(e),a)},r.prototype.setRawRange=function(e){var a=this.option,t=this.settledOption;T([["start","startValue"],["end","endValue"]],function(n){(e[n[0]]!=null||e[n[1]]!=null)&&(a[n[0]]=t[n[0]]=e[n[0]],a[n[1]]=t[n[1]]=e[n[1]])},this),this._updateRangeUse(e)},r.prototype.setCalculatedRange=function(e){var a=this.option;T(["start","startValue","end","endValue"],function(t){a[t]=e[t]})},r.prototype.getPercentRange=function(){var e=this.findRepresentativeAxisProxy();if(e)return e.getWindow().percent},r.prototype.getValueRange=function(e,a){if(e==null&&a==null){var t=this.findRepresentativeAxisProxy();if(t)return t.getWindow().value}else return this.getAxisProxy(e,a).getWindow().value},r.prototype.findRepresentativeAxisProxy=function(e){if(e)return we(e);for(var a,t=this._targetAxisInfoMap.keys(),n=0;no[1];if(L&&!y&&!S)return!0;L&&(I=!0),y&&(M=!0),S&&(w=!0)}return I&&M&&w})}else T(d,function(_){if(n==="empty")l.setData(u=u.map(_,function(w){return s(w)?w:NaN}));else{var M={};M[_]=o,u.selectRange(M)}});T(d,function(_){u.setApproximateExtent(o,_)})}});function s(l){return l>=o[0]&&l<=o[1]}},i.prototype._updateMinMaxSpan=function(){var r=this._minMaxSpan={},e=this._dataZoomModel,a=this._extent;T(["min","max"],function(t){var n=e.get(t+"Span"),o=e.get(t+"ValueSpan");o!=null&&(o=this.getAxisModel().axis.scale.parse(o)),o!=null?n=Z(a[0]+o,a,[0,100],!0):n!=null&&(o=Z(n,[0,100],a,!0)-a[0]),r[t+"Span"]=n,r[t+"ValueSpan"]=o},this)},i})(),xr={dirtyOnOverallProgress:!0,getTargetSeries:function(i){function r(t){i.eachComponent("dataZoom",function(n){n.eachTargetAxis(function(o,s){var l=i.getComponent(Q(o),s);t(o,s,l,n)})})}var e=[];r(function(t,n,o,s){if(!we(o)){var l=new br(t,n,s,i);e.push(l),yr(o,l)}});var a=ee();return T(e,function(t){T(t.getTargetSeriesModels(),function(n){a.set(n.uid,n)})}),a},overallReset:function(i,r){i.eachComponent("dataZoom",function(e){var a=[];e.eachTargetAxis(function(t,n){var o=e.getAxisProxy(t,n),s=Xt(e,o);s?a.push([o,s]):o.reset(e,null)}),T(a,function(t){t[0].reset(e,t[1].getWindow().percentInverted)}),e.eachTargetAxis(function(t,n){e.getAxisProxy(t,n).filterData(e,r)})}),i.eachComponent("dataZoom",function(e){var a=e.findRepresentativeAxisProxy();if(a){var t=a.getWindow(),n=t.percent,o=t.value;e.setCalculatedRange({start:n[0],end:n[1],startValue:o[0],endValue:o[1]})}})}};function Mr(i){i.registerAction("dataZoom",function(r,e){var a=_r(e,r);T(a,function(t){t.setRawRange({start:r.start,end:r.end,startValue:r.startValue,endValue:r.endValue})})})}var Sr=Za();function Kt(i){Sr(i,function(){i.registerProcessor(i.PRIORITY.PROCESSOR.FILTER,xr),Mr(i),i.registerSubTypeDefaulter("dataZoom",function(){return"slider"})})}var wr=(function(i){ae(r,i);function r(){var e=i!==null&&i.apply(this,arguments)||this;return e.type=r.type,e}return r.type="dataZoom.inside",r.defaultOption=$t(Ae.defaultOption,{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}),r})(Ae),Xe=Re();function Ar(i,r,e){Xe(i).coordSysRecordMap.each(function(a){var t=a.dataZoomInfoMap.get(r.uid);t&&(t.getRange=e)})}function Rr(i,r){for(var e=Xe(i).coordSysRecordMap,a=e.keys(),t=0;tn[t+a]&&(a=h),o=o&&d.get("preventDefaultMouseMove",!0),s=Ue(d.get("cursorGrab",!0),s),l=Ue(d.get("cursorGrabbing",!0),l)}),{controlType:a,opt:{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!0,preventDefaultMouseMove:!!o,api:e,zInfo:{component:r.model},triggerInfo:{roamTrigger:null,isInSelf:r.containsPoint},cursorGrab:s,cursorGrabbing:l}}}function Cr(i){i.registerUpdateLifecycle("coordsys:aftercreate",function(r,e){var a=Xe(e),t=a.coordSysRecordMap||(a.coordSysRecordMap=ee());t.each(function(n){n.dataZoomInfoMap=null}),r.eachComponent({mainType:"dataZoom",subType:"inside"},function(n){var o=Ft(n);T(o.infoList,function(s){var l=s.model.uid,u=t.get(l)||t.set(l,Tr(e,s.model)),d=u.dataZoomInfoMap||(u.dataZoomInfoMap=ee());d.set(n.uid,{dzReferCoordSysInfo:s,model:n,getRange:null})})}),t.each(function(n){var o=n.controller,s,l=n.dataZoomInfoMap;if(l){var u=l.keys()[0];u!=null&&(s=l.get(u))}if(!s){qt(t,n);return}var d=Dr(l,n,e);o.enable(d.controlType,d.opt),Ht(n,"dispatchAction",s.model.get("throttle",!0),"fixRate")})})}var kr=(function(i){ae(r,i);function r(){var e=i!==null&&i.apply(this,arguments)||this;return e.type="dataZoom.inside",e}return r.prototype.render=function(e,a,t){if(i.prototype.render.apply(this,arguments),e.noTarget()){this._clear();return}this.range=e.getPercentRange(),Ar(t,e,{pan:C(Ze.pan,this),zoom:C(Ze.zoom,this),scrollMove:C(Ze.scrollMove,this)})},r.prototype.dispose=function(){this._clear(),i.prototype.dispose.apply(this,arguments)},r.prototype._clear=function(){Rr(this.api,this.dataZoomModel),this.range=null},r.type="dataZoom.inside",r})(Yt),Ze={zoom:function(i,r,e,a){var t=this.range,n=t.slice(),o=i.axisModels[0];if(o){var s=ze[r](null,[a.originX,a.originY],o,e,i),l=(s.signal>0?s.pixelStart+s.pixelLength-s.pixel:s.pixel-s.pixelStart)/s.pixelLength*(n[1]-n[0])+n[0],u=Math.max(1/a.scale,0);n[0]=(n[0]-l)*u+l,n[1]=(n[1]-l)*u+l;var d=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();if(me(0,n,[0,100],0,d.minSpan,d.maxSpan),this.range=n,t[0]!==n[0]||t[1]!==n[1])return n}},pan:Dt(function(i,r,e,a,t,n){var o=ze[a]([n.oldX,n.oldY],[n.newX,n.newY],r,t,e);return o.signal*(i[1]-i[0])*o.pixel/o.pixelLength}),scrollMove:Dt(function(i,r,e,a,t,n){var o=ze[a]([0,0],[n.scrollDelta,n.scrollDelta],r,t,e);return o.signal*(i[1]-i[0])*n.scrollDelta})};function Dt(i){return function(r,e,a,t){var n=this.range,o=n.slice(),s=r.axisModels[0];if(s){var l=i(o,s,r,e,a,t);if(me(l,o,[0,100],"all"),this.range=o,n[0]!==o[0]||n[1]!==o[1])return o}}}var ze={grid:function(i,r,e,a,t){var n=e.axis,o={},s=t.model.coordinateSystem.getRect();return i=i||[0,0],n.dim==="x"?(o.pixel=r[0]-i[0],o.pixelLength=s.width,o.pixelStart=s.x,o.signal=n.inverse?1:-1):(o.pixel=r[1]-i[1],o.pixelLength=s.height,o.pixelStart=s.y,o.signal=n.inverse?-1:1),o},polar:function(i,r,e,a,t){var n=e.axis,o={},s=t.model.coordinateSystem,l=s.getRadiusAxis().getExtent(),u=s.getAngleAxis().getExtent();return i=i?s.pointToCoord(i):[0,0],r=s.pointToCoord(r),e.mainType==="radiusAxis"?(o.pixel=r[0]-i[0],o.pixelLength=l[1]-l[0],o.pixelStart=l[0],o.signal=n.inverse?1:-1):(o.pixel=r[1]-i[1],o.pixelLength=u[1]-u[0],o.pixelStart=u[0],o.signal=n.inverse?-1:1),o},singleAxis:function(i,r,e,a,t){var n=e.axis,o=t.model.coordinateSystem.getRect(),s={};return i=i||[0,0],n.orient==="horizontal"?(s.pixel=r[0]-i[0],s.pixelLength=o.width,s.pixelStart=o.x,s.signal=n.inverse?1:-1):(s.pixel=r[1]-i[1],s.pixelLength=o.height,s.pixelStart=o.y,s.signal=n.inverse?-1:1),s}};function Pr(i){Kt(i),i.registerComponentModel(wr),i.registerComponentView(kr),Cr(i)}var Er=(function(i){ae(r,i);function r(){var e=i!==null&&i.apply(this,arguments)||this;return e.type=r.type,e}return r.type="dataZoom.slider",r.layoutMode="box",r.defaultOption=$t(Ae.defaultOption,{show:!0,right:"ph",top:"ph",width:"ph",height:"ph",left:null,bottom:null,borderColor:G.color.accent10,borderRadius:0,backgroundColor:G.color.transparent,dataBackground:{lineStyle:{color:G.color.accent30,width:.5},areaStyle:{color:G.color.accent20,opacity:.2}},selectedDataBackground:{lineStyle:{color:G.color.accent40,width:.5},areaStyle:{color:G.color.accent20,opacity:.3}},fillerColor:"rgba(135,175,274,0.2)",handleIcon:"path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z",handleSize:"100%",handleStyle:{color:G.color.neutral00,borderColor:G.color.accent20},moveHandleSize:7,moveHandleIcon:"path://M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z",moveHandleStyle:{color:G.color.accent40,opacity:.5},showDetail:!0,showDataShadow:"auto",realtime:!0,zoomLock:!1,textStyle:{color:G.color.tertiary},brushSelect:!0,brushStyle:{color:G.color.accent30,opacity:.3},emphasis:{handleLabel:{show:!0},handleStyle:{borderColor:G.color.accent40},moveHandleStyle:{opacity:.8}},defaultLocationEdgeGap:15}),r})(Ae),fe=xe,Or=1,Ne=30,Zr=7,ve="horizontal",Ct="vertical",zr=5,Nr=["line","bar","candlestick","scatter"],Gr={easing:"cubicOut",duration:100,delay:0},Vr=(function(i){ae(r,i);function r(){var e=i!==null&&i.apply(this,arguments)||this;return e.type=r.type,e._displayables={},e}return r.prototype.init=function(e,a){this.api=a,this._onBrush=C(this._onBrush,this),this._onBrushEnd=C(this._onBrushEnd,this)},r.prototype.render=function(e,a,t,n){if(i.prototype.render.apply(this,arguments),Ht(this,"_dispatchZoomAction",e.get("throttle"),"fixRate"),this._orient=e.getOrient(),e.get("show")===!1){this.group.removeAll();return}if(e.noTarget()){this._clear(),this.group.removeAll();return}(!n||n.type!=="dataZoom"||n.from!==this.uid)&&this._buildView(),this._updateView()},r.prototype.dispose=function(){this._clear(),i.prototype.dispose.apply(this,arguments)},r.prototype._clear=function(){za(this,"_dispatchZoomAction");var e=this.api.getZr();e.off("mousemove",this._onBrush),e.off("mouseup",this._onBrushEnd)},r.prototype._buildView=function(){var e=this.group;e.removeAll(),this._brushing=!1,this._displayables.brushRect=null,this._resetLocation(),this._resetInterval();var a=this._displayables.sliderGroup=new xt;this._renderBackground(),this._renderHandle(),this._renderDataShadow(),e.add(a),this._positionGroup()},r.prototype._resetLocation=function(){var e=this.dataZoomModel,a=this.api,t=e.get("brushSelect"),n=t?Zr:0,o=Na(e,a).refContainer,s=this._findCoordRect(),l=e.get("defaultLocationEdgeGap",!0)||0,u=this._orient===ve?{right:o.width-s.x-s.width,top:o.height-Ne-l-n,width:s.width,height:Ne}:{right:l,top:s.y,width:Ne,height:s.height},d=Ga(e.option);T(["right","top","width","height"],function(g){d[g]==="ph"&&(d[g]=u[g])});var h=Va(d,o);this._location={x:h.x,y:h.y},this._size=[h.width,h.height],this._orient===Ct&&this._size.reverse()},r.prototype._positionGroup=function(){var e=this.group,a=this._location,t=this._orient,n=this.dataZoomModel.getFirstTargetAxisModel(),o=n&&n.get("inverse"),s=this._displayables.sliderGroup,l=(this._dataShadowInfo||{}).otherAxisInverse;s.attr(t===ve&&!o?{scaleY:l?1:-1,scaleX:1}:t===ve&&o?{scaleY:l?1:-1,scaleX:-1}:t===Ct&&!o?{scaleY:l?-1:1,scaleX:1,rotation:Math.PI/2}:{scaleY:l?-1:1,scaleX:-1,rotation:Math.PI/2});var u=e.getBoundingRect([s]),d=isNaN(u.x)?0:u.x,h=isNaN(u.y)?0:u.y;e.x=a.x-d,e.y=a.y-h,e.markRedraw()},r.prototype._getViewExtent=function(){return[0,this._size[0]]},r.prototype._renderBackground=function(){var e=this.dataZoomModel,a=this._size,t=this._displayables.sliderGroup,n=e.get("brushSelect");t.add(new fe({silent:!0,shape:{x:0,y:0,width:a[0],height:a[1]},style:{fill:e.get("backgroundColor")},z2:-40}));var o=new fe({shape:{x:0,y:0,width:a[0],height:a[1]},style:{fill:"transparent"},z2:0,onclick:C(this._onClickPanel,this)}),s=this.api.getZr();n?(o.on("mousedown",this._onBrushStart,this),o.cursor="crosshair",s.on("mousemove",this._onBrush),s.on("mouseup",this._onBrushEnd)):(s.off("mousemove",this._onBrush),s.off("mouseup",this._onBrushEnd)),t.add(o)},r.prototype._renderDataShadow=function(){var e=this._dataShadowInfo=this._prepareDataShadowInfo();if(this._displayables.dataShadowSegs=[],!e)return;var a=this._size,t=this._shadowSize||[],n=e.series,o=n.getRawData(),s=n.getShadowDim&&n.getShadowDim(),l=s&&o.getDimensionInfo(s)?n.getShadowDim():e.otherDim;if(l==null)return;var u=this._shadowPolygonPts,d=this._shadowPolylinePts;if(o!==this._shadowData||l!==this._shadowDim||a[0]!==t[0]||a[1]!==t[1]){var h=o.getDataExtent(e.thisDim),g=o.getDataExtent(l),_=(g[1]-g[0])*.3;g=[g[0]-_,g[1]+_];var M=[0,a[1]],w=[0,a[0]],I=[[a[0],0],[0,0]],R=[],P=w[1]/Math.max(1,o.count()-1),L=a[0]/(h[1]-h[0]),y=e.thisAxis.type==="time",S=-P,D=Math.round(o.count()/a[0]),V;o.each([e.thisDim,l],function(B,F,J){if(D>0&&J%D){y||(S+=P);return}S=y?(+B-h[0])*L:S+P;var W=F==null||isNaN(F)||F==="",oe=W?0:Z(F,g,M,!0);W&&!V&&J?(I.push([I[I.length-1][0],0]),R.push([R[R.length-1][0],0])):!W&&V&&(I.push([S,0]),R.push([S,0])),W||(I.push([S,oe]),R.push([S,oe])),V=W}),u=this._shadowPolygonPts=I,d=this._shadowPolylinePts=R}this._shadowData=o,this._shadowDim=l,this._shadowSize=[a[0],a[1]];var U=this.dataZoomModel;function N(B){var F=U.getModel(B?"selectedDataBackground":"dataBackground"),J=new xt,W=new Ya({shape:{points:u},segmentIgnoreThreshold:1,style:F.getModel("areaStyle").getAreaStyle(),silent:!0,z2:-20}),oe=new Ka({shape:{points:d},segmentIgnoreThreshold:1,style:F.getModel("lineStyle").getLineStyle(),silent:!0,z2:-19});return J.add(W),J.add(oe),J}for(var te=0;te<3;te++){var re=N(te===1);this._displayables.sliderGroup.add(re),this._displayables.dataShadowSegs.push(re)}},r.prototype._prepareDataShadowInfo=function(){var e=this.dataZoomModel,a=e.get("showDataShadow");if(a!==!1){var t,n=this.ecModel;return e.eachTargetAxis(function(o,s){var l=e.getAxisProxy(o,s).getTargetSeriesModels();T(l,function(u){if(!t&&!(a!==!0&&Nt(Nr,u.get("type"))<0)){var d=n.getComponent(Q(o),s).axis,h=Br(o),g,_=u.coordinateSystem;h!=null&&_.getOtherAxis&&(g=_.getOtherAxis(d).inverse),h=u.getData().mapDimension(h);var M=u.getData().mapDimension(o);t={thisAxis:d,series:u,thisDim:M,otherDim:h,otherAxisInverse:g}}},this)},this),t}},r.prototype._renderHandle=function(){var e=this.group,a=this._displayables,t=a.handles=[null,null],n=a.handleLabels=[null,null],o=this._displayables.sliderGroup,s=this._size,l=this.dataZoomModel,u=this.api,d=l.get("borderRadius")||0,h=l.get("brushSelect"),g=a.filler=new fe({silent:h,style:{fill:l.get("fillerColor")},textConfig:{position:"inside"}});o.add(g),o.add(new fe({silent:!0,subPixelOptimize:!0,shape:{x:0,y:0,width:s[0],height:s[1],r:d},style:{stroke:l.get("dataBackgroundColor")||l.get("borderColor"),lineWidth:Or,fill:G.color.transparent}})),T([0,1],function(L){var y=l.get("handleIcon");!Ba[y]&&y.indexOf("path://")<0&&y.indexOf("image://")<0&&(y="path://"+y);var S=Mt(y,-1,0,2,2,null,!0);S.attr({cursor:$r(this._orient),draggable:!0,drift:C(this._onDragMove,this,L),ondragend:C(this._onDragEnd,this),onmouseover:C(this._onOverDataInfoTriggerArea,this,!0),onmouseout:C(this._onOverDataInfoTriggerArea,this,!1),z2:5});var D=S.getBoundingRect(),V=l.get("handleSize");this._handleHeight=St(V,this._size[1]),this._handleWidth=D.width/D.height*this._handleHeight,S.setStyle(l.getModel("handleStyle").getItemStyle()),S.style.strokeNoScale=!0,S.rectHover=!0,S.ensureState("emphasis").style=l.getModel(["emphasis","handleStyle"]).getItemStyle(),$a(S);var U=l.get("handleColor");U!=null&&(S.style.fill=U),o.add(t[L]=S);var N=l.getModel("textStyle"),te=l.get("handleLabel")||{},re=te.show||!1;e.add(n[L]=new Ha({silent:!0,invisible:!re,style:Ua(N,{x:0,y:0,text:"",verticalAlign:"middle",align:"center",fill:N.getTextColor(),font:N.getFont()}),z2:10}))},this);var _=g;if(h){var M=St(l.get("moveHandleSize"),s[1]),w=a.moveHandle=new xe({style:l.getModel("moveHandleStyle").getItemStyle(),silent:!0,shape:{r:[0,0,2,2],y:s[1]-.5,height:M}}),I=M*.8,R=a.moveHandleIcon=Mt(l.get("moveHandleIcon"),-I/2,-I/2,I,I,G.color.neutral00,!0);R.silent=!0,R.y=s[1]+M/2-.5,w.ensureState("emphasis").style=l.getModel(["emphasis","moveHandleStyle"]).getItemStyle();var P=Math.min(s[1]/2,Math.max(M,10));_=a.moveZone=new xe({invisible:!0,shape:{y:s[1]-P,height:M+P}}),_.on("mouseover",function(){u.enterEmphasis(w)}).on("mouseout",function(){u.leaveEmphasis(w)}),o.add(w),o.add(R),o.add(_)}_.attr({draggable:!0,cursor:"grab",drift:C(this._onActualMoveZoneDrift,this),ondragstart:C(this._onActualMoveZoneDragStart,this),ondragend:C(this._onActualMoveZoneDragEnd,this),onmouseover:C(this._onOverDataInfoTriggerArea,this,!0),onmouseout:C(this._onOverDataInfoTriggerArea,this,!1)})},r.prototype._resetInterval=function(){var e=this._range=this.dataZoomModel.getPercentRange(),a=this._getViewExtent();this._handleEnds=[Z(e[0],[0,100],a,!0),Z(e[1],[0,100],a,!0)]},r.prototype._updateInterval=function(e,a){var t=this.dataZoomModel,n=this._handleEnds,o=this._getViewExtent(),s=t.findRepresentativeAxisProxy().getMinMaxSpan(),l=[0,100];me(a,n,o,t.get("zoomLock")?"all":e,s.minSpan!=null?Z(s.minSpan,l,o,!0):null,s.maxSpan!=null?Z(s.maxSpan,l,o,!0):null);var u=this._range,d=this._range=se([Z(n[0],o,l,!0),Z(n[1],o,l,!0)]);return!u||u[0]!==d[0]||u[1]!==d[1]},r.prototype._updateView=function(e){var a=this._displayables,t=this._handleEnds,n=se(t.slice()),o=this._size;T([0,1],function(_){var M=a.handles[_],w=this._handleHeight;M.attr({scaleX:w/2,scaleY:w/2,x:t[_]+(_?-1:1),y:o[1]/2-w/2})},this),a.filler.setShape({x:n[0],y:0,width:n[1]-n[0],height:o[1]});var s={x:n[0],width:n[1]-n[0]};a.moveHandle&&(a.moveHandle.setShape(s),a.moveZone.setShape(s),a.moveZone.getBoundingRect(),a.moveHandleIcon&&a.moveHandleIcon.attr("x",s.x+s.width/2));for(var l=a.dataShadowSegs,u=[0,n[0],n[1],o[0]],d=0;da[0]||t[1]<0||t[1]>a[1])){var n=this._handleEnds,o=(n[0]+n[1])/2,s=this._updateInterval("all",t[0]-o);this._updateView(),s&&this._dispatchZoomAction(!1)}},r.prototype._onBrushStart=function(e){var a=e.offsetX,t=e.offsetY;this._brushStart=new Xa(a,t),this._brushing=!0,this._brushStartTime=+new Date},r.prototype._onBrushEnd=function(e){if(this._brushing){var a=this._displayables.brushRect;if(this._brushing=!1,!!a){a.attr("ignore",!0);var t=a.shape,n=+new Date;if(!(n-this._brushStartTime<200&&Math.abs(t.width)<5)){var o=this._getViewExtent(),s=[0,100],l=this._handleEnds=[t.x,t.x+t.width],u=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();me(0,l,o,0,u.minSpan!=null?Z(u.minSpan,s,o,!0):null,u.maxSpan!=null?Z(u.maxSpan,s,o,!0):null),this._range=se([Z(l[0],o,s,!0),Z(l[1],o,s,!0)]),this._updateView(),this._dispatchZoomAction(!1)}}}},r.prototype._onBrush=function(e){this._brushing&&(Se(e.event),this._updateBrushRect(e.offsetX,e.offsetY))},r.prototype._updateBrushRect=function(e,a){var t=this._displayables,n=this.dataZoomModel,o=t.brushRect;o||(o=t.brushRect=new fe({silent:!0,style:n.getModel("brushStyle").getItemStyle()}),t.sliderGroup.add(o)),o.attr("ignore",!1);var s=this._brushStart,l=this._displayables.sliderGroup,u=l.transformCoordToLocal(e,a),d=l.transformCoordToLocal(s.x,s.y),h=this._size;u[0]=Math.max(Math.min(h[0],u[0]),0),o.setShape({x:d[0],y:0,width:u[0]-d[0],height:h[1]})},r.prototype._dispatchZoomAction=function(e){var a=this._range;this.api.dispatchAction({type:"dataZoom",from:this.uid,dataZoomId:this.dataZoomModel.id,animation:e?Gr:null,start:a[0],end:a[1]})},r.prototype._findCoordRect=function(){var e,a=Ft(this.dataZoomModel).infoList;if(!e&&a.length){var t=a[0].model.coordinateSystem;e=t.getRect&&t.getRect()}if(!e){var n=this.api.getWidth(),o=this.api.getHeight();e={x:n*.2,y:o*.2,width:n*.6,height:o*.6}}return e},r.type="dataZoom.slider",r})(Yt);function kt(i,r,e,a){var t=i.get("labelFormatter"),n=i.get("labelPrecision");(n==null||n==="auto")&&(n=e.valuePrecision);var o=e.value[r],s=o==null||isNaN(o)?"":Gt(a)||Vt(a)?a.getLabel({value:Math.round(o)}):isFinite(n)?Bt(o,n,!0):o+"";return qa(t)?t(o,s):zt(t)?t.replace("{value}",s):s}function Br(i){var r={x:"y",y:"x",radius:"angle",angle:"radius"};return r[i]}function $r(i){return i==="vertical"?"ns-resize":"ew-resize"}function Hr(i){i.registerComponentModel(Er),i.registerComponentView(Vr),Kt(i)}function Ur(i){We(Pr),We(Hr)}const Fr={class:"overview-layout","aria-label":"训练任务信息"},Wr=Ot({__name:"TrainingTaskOverview",props:{task:{},dataset:{},baseModelName:{}},setup(i){function r(e){if(!e)return"-";const a=new Date(e);return Number.isNaN(a.getTime())?e:a.toLocaleString("zh-CN",{hour12:!1})}return(e,a)=>{const t=Pt,n=Et;return H(),pa(ge,{class:"task-overview",title:"任务信息",subtitle:"模型、数据集与运行配置"},{default:x(()=>[c("div",Fr,[m(n,{class:"task-descriptions task-profile",column:2,border:""},{default:x(()=>[m(t,{label:"任务 ID"},{default:x(()=>{var o;return[A(v(((o=i.task)==null?void 0:o.id)??"-"),1)]}),_:1}),m(t,{label:"创建时间"},{default:x(()=>{var o;return[A(v(r((o=i.task)==null?void 0:o.create_time)),1)]}),_:1}),m(t,{label:"基座模型"},{default:x(()=>[A(v(i.baseModelName),1)]),_:1}),m(t,{label:"输出模型"},{default:x(()=>{var o;return[A(v(((o=i.task)==null?void 0:o.output_model_name)||"暂未生成"),1)]}),_:1}),m(t,{label:"训练方式"},{default:x(()=>{var o;return[A(v((o=i.task)!=null&&o.train_type?j(Be)[i.task.train_type]||i.task.train_type:"未配置"),1)]}),_:1}),m(t,{label:"训练方法"},{default:x(()=>{var o;return[A(v((o=i.task)!=null&&o.train_method?j($e)[i.task.train_method]||i.task.train_method:"未配置"),1)]}),_:1}),m(t,{label:"训练数据集","class-name":"dataset-profile"},{default:x(()=>{var o,s;return[A(v(((o=i.dataset)==null?void 0:o.name)||((s=i.task)!=null&&s.train_dataset_id?"正在加载":"未配置")),1)]}),_:1}),m(t,{label:"数据类型"},{default:x(()=>[A(v(i.dataset&&(j(ha)[i.dataset.type]||i.dataset.type)||"未配置"),1)]),_:1}),m(t,{label:"数据条数"},{default:x(()=>{var o,s,l;return[A(v(((s=(o=i.dataset)==null?void 0:o.count)==null?void 0:s.toLocaleString("zh-CN"))??"未配置")+v(((l=i.dataset)==null?void 0:l.count)!=null?" 条":""),1)]}),_:1}),m(t,{label:"数据大小"},{default:x(()=>{var o;return[A(v(((o=i.dataset)==null?void 0:o.size)||"未配置"),1)]}),_:1}),m(t,{label:"训练开始时间","class-name":"runtime-panel"},{default:x(()=>{var o;return[A(v(r((o=i.task)==null?void 0:o.create_time)),1)]}),_:1}),m(t,{label:"训练时长"},{default:x(()=>{var o;return[A(v(((o=i.task)==null?void 0:o.train_duration)||"未配置"),1)]}),_:1}),m(t,{label:"存储位置"},{default:x(()=>{var o,s;return[A(v(j(fa)[((o=i.dataset)==null?void 0:o.storage_type)||""]||((s=i.dataset)==null?void 0:s.storage_type)||"未配置"),1)]}),_:1}),m(t,{label:"使用 GPU"},{default:x(()=>{var o,s;return[A(v((s=(o=i.task)==null?void 0:o.gpus)!=null&&s.length?i.task.gpus.join("、"):"未配置"),1)]}),_:1})]),_:1})])]),_:1})}}}),Xr=Ut(Wr,[["__scopeId","data-v-61ae1f69"]]);We([ja,ar,Ja,Qa,er,Ur]);const jt="[-+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][-+]?\\d+)?";function Jt(i){return i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ye(i,r){const e=i.match(new RegExp(`['"]?${Jt(r)}['"]?\\s*:\\s*(${jt})`,"i"));return e?Number(e[1]):void 0}function Ge(i,r){const e=i.match(new RegExp(`['"]?${Jt(r)}['"]?\\s*(?:=|:)\\s*(${jt})`,"i"));return(e==null?void 0:e[1])||""}function Yr(i,r){const e=r.process_id;if(e!=null){const t=i.find(s=>s.pid===e);if(t)return t;const n=new RegExp(`(?:^|[^0-9])(?:pid)?${e}(?:[^0-9]|$)`,"i"),o=i.find(s=>n.test(s.file));if(o)return o}const a=r.name.trim();if(a)return i.find(t=>t.name.includes(a)||t.file.includes(a))}function Kr(i){const r={loss:[],gradNorm:[],lr:[],epoch:[]},e=i.match(/\{[^{}\r\n]*\}/g)||[];for(const a of e){const t=ye(a,"loss"),n=ye(a,"grad_norm"),o=ye(a,"learning_rate"),s=ye(a,"epoch");t==null||n==null||o==null||(r.loss.push(t),r.gradNorm.push(n),r.lr.push(o),s!=null&&r.epoch.push(s))}return r}function qr(i){const r={epoch:"",trainLoss:"",runtime:""},e=/\*{5}\s*train metrics\s*\*{5}/i.exec(i);if(!e)return r;const a=i.slice(e.index+e[0].length),t=/\*{5}\s*train metrics end\s*\*{5}/i.exec(a),n=t?a.slice(0,t.index):a;return{epoch:Ge(n,"epoch"),trainLoss:Ge(n,"train_loss"),runtime:Ge(n,"train_runtime")}}function jr(i){return{metrics:Kr(i),summary:qr(i)}}function Ve(i,r,e,a=!1){return{grid:{top:24,right:20,bottom:56,left:56},tooltip:{trigger:"axis",axisPointer:{type:"cross"},backgroundColor:"rgba(15, 23, 42, 0.9)",borderWidth:0,textStyle:{color:"#fff",fontSize:12}},xAxis:{type:"category",boundaryGap:!1,name:"Step",nameTextStyle:{color:"#94a3b8",fontSize:11},axisLine:{lineStyle:{color:"#e2e8f0"}},axisLabel:{color:"#94a3b8",fontSize:11},splitLine:{show:!1}},yAxis:{type:a?"log":"value",name:i,nameTextStyle:{color:"#94a3b8",fontSize:11},axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:"#94a3b8",fontSize:11},splitLine:{lineStyle:{color:"#f1f5f9"}}},dataZoom:r.length>30?[{type:"inside",start:0,end:100},{type:"slider",height:16,bottom:8,borderColor:"transparent",fillerColor:"rgba(79,70,229,0.08)",handleStyle:{color:"#4f46e5"}}]:[],series:[{name:i,type:"line",data:r,smooth:!0,symbol:"none",lineStyle:{width:2,color:e},areaStyle:{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:`${e}55`},{offset:1,color:`${e}05`}]}}}]}}const Jr={class:"training-log"},Qr={key:0,"element-loading-text":"正在加载训练详情…",class:"loading-wrap"},eo={class:"task-page-header","aria-labelledby":"task-page-title"},to={class:"task-page-title-row"},ao={id:"task-page-title"},ro={class:"task-page-description"},oo={class:"task-context-row","aria-label":"训练任务关键上下文"},no={class:"task-context-item"},io={class:"task-context-item"},so={class:"task-context-item"},lo={class:"task-context-item"},uo={class:"overview-card-header"},co={class:"overview-monitor-meta"},po={class:"overview-refresh-state"},ho={class:"training-progress-panel","aria-labelledby":"training-progress-title"},fo={class:"training-progress-heading"},vo={class:"training-metric-grid","aria-label":"训练关键指标"},go={class:"training-metric-cell"},mo={class:"training-metric-cell"},_o={class:"training-metric-cell"},yo={class:"gpu-monitor","aria-labelledby":"gpu-monitor-title"},bo={class:"gpu-monitor-heading"},xo={key:0,id:"gpu-device-list",class:"gpu-device-list",role:"table","aria-label":"GPU 设备实时运行状态"},Mo={class:"gpu-device-identity",role:"cell"},So=["title"],wo={class:"gpu-utilization-cell",role:"cell"},Ao={class:"gpu-cell-value"},Ro={class:"gpu-memory-cell",role:"cell"},To={class:"gpu-resource-cell gpu-temperature-cell",role:"cell"},Io={class:"gpu-resource-cell gpu-power-cell",role:"cell"},Lo={key:1,class:"gpu-empty-state"},Do={key:2,class:"gpu-list-footer"},Co={class:"gpu-list-note"},ko={id:"training-parameter-content",class:"params-body"},Po={class:"parameter-groups"},Eo={class:"parameter-group base-parameter-group","aria-label":"基础训练参数"},Oo={key:0,class:"parameter-group lora-parameter-group","aria-labelledby":"lora-params-title"},Zo={class:"parameter-section-heading"},zo={class:"chart-list","aria-label":"训练指标曲线"},No={class:"chart-section"},Go={class:"chart-section-header"},Vo={class:"chart-latest"},Bo={class:"chart-section"},$o={class:"chart-section-header"},Ho={class:"chart-latest"},Uo={class:"chart-section"},Fo={class:"chart-section-header"},Wo={class:"chart-latest"},Xo={class:"log-meta"},Yo={class:"log-pre"},be=4,Ko=Ot({__name:"TrainingLogView",setup(i){const e=ga().params.id,a=rr(),t=q(null),n=q(null),o=q(""),s=q([]),l=q(null),u=q(""),d=q(!0),h=vt({loss:[],gradNorm:[],lr:[],epoch:[]}),g=vt({epoch:"",trainLoss:"",runtime:""}),_=q(!1),M=q(!1);let w=!1;const I=O(()=>Ve("Loss",h.loss,"#4f46e5")),R=O(()=>Ve("Grad Norm",h.gradNorm,"#3b82f6")),P=O(()=>Ve("Learning Rate",h.lr,"#14b8a6",!0)),L=O(()=>{var f;return((f=t.value)==null?void 0:f.base_model)!=null?a.getModelName(t.value.base_model):"未配置"}),y=O(()=>{var f;return(f=t.value)!=null&&f.train_type?Be[t.value.train_type]||t.value.train_type:"未配置"}),S=O(()=>{var f;return(f=t.value)!=null&&f.train_method?$e[t.value.train_method]||t.value.train_method:"未配置"}),D=O(()=>{var f,p;return(p=(f=t.value)==null?void 0:f.gpus)!=null&&p.length?t.value.gpus.map(E=>`GPU ${E}`).join("、"):"未配置"}),V=O(()=>h.loss[h.loss.length-1]),U=O(()=>h.gradNorm[h.gradNorm.length-1]),N=O(()=>h.lr[h.lr.length-1]),te=O(()=>h.epoch[h.epoch.length-1]),re=O(()=>o.value?o.value.split(/\r?\n/).length:0),B=O(()=>{var f;return(((f=t.value)==null?void 0:f.gpus)??[]).map(p=>{const E=Number(p),Y=s.value.find(z=>z.id!=null&&Number(z.id)===E)??s.value[E];return{index:E,gpu:Y}})}),F=O(()=>{const f=B.value;if(!f.length)return"当前任务未配置 GPU";const p=f.filter($=>$.gpu),E=p.length?Math.round(p.reduce(($,Ce)=>{var ce;return $+X((ce=Ce.gpu)==null?void 0:ce.gpu_percent)},0)/p.length):0,Y=f.map($=>_e($.gpu).className),z=Y.filter($=>$==="is-busy").length,ue=Y.filter($=>["is-danger","is-warning","is-unavailable"].includes($)).length,De=ue?` · ${ue} 张需关注`:"";return`${f.length} 张 GPU · ${z} 张运行中${De} · 平均利用率 ${E}%`}),J=O(()=>{const f=B.value;return M.value||f.length<=be?f:[...f].sort((p,E)=>Ke(p.gpu)-Ke(E.gpu)||p.index-E.index).slice(0,be).sort((p,E)=>p.index-E.index)}),W=O(()=>Math.max(0,B.value.length-be)),oe=O(()=>{if(!l.value)return u.value||"正在获取 GPU 状态";const f=l.value.toLocaleTimeString("zh-CN",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"});return u.value?`更新失败 · 最后更新 ${f}`:`${f} 更新 · 每 5 秒刷新`});function le(f,p=!1){return f==null||!Number.isFinite(f)?"-":p?f.toExponential(2):f.toFixed(4).replace(/0+$/,"").replace(/\.$/,"")}function X(f){return Math.round(Math.min(100,Math.max(0,Number(f||0))))}function Ie(f){return f==null||!Number.isFinite(Number(f))?"-":Number(f).toLocaleString("zh-CN",{maximumFractionDigits:1})}function Ye(f){return f?f.memory_percent!=null?X(f.memory_percent):f.memory_total_gb?X(f.memory_used_gb/f.memory_total_gb*100):0:0}function _e(f){return f?f.status==="offline"?{label:"离线",className:"is-danger"}:f.status==="warning"||f.temperature>=80||Ye(f)>=90?{label:"需关注",className:"is-warning"}:f.status==="busy"||f.gpu_percent>=10?{label:"运行中",className:"is-busy"}:{label:"空闲",className:"is-idle"}:{label:"数据不可用",className:"is-unavailable"}}function Ke(f){return{"is-danger":0,"is-warning":1,"is-unavailable":2,"is-busy":3,"is-idle":4}[_e(f).className]??5}function Qt(f){const p=X(f);return p>=90?"var(--el-color-danger)":p>=75?"var(--el-color-warning)":"var(--el-color-primary)"}async function ea(){try{const f=await or(e);return t.value=f,f}catch{return t.value=null,null}}async function ta(f){try{n.value=await sr(f)||null}catch{n.value=null}}async function aa(){try{const f=await ma();s.value=f.gpu??[],l.value=new Date,u.value=""}catch{u.value="GPU 监控数据暂时不可用",l.value||(s.value=[])}}const ra=O(()=>{var f;return String(((f=t.value)==null?void 0:f.train_method)||"").toLowerCase().includes("lora")});function Le(f){const p=jr(f);o.value=f,h.loss=p.metrics.loss,h.gradNorm=p.metrics.gradNorm,h.lr=p.metrics.lr,h.epoch=p.metrics.epoch,Object.assign(g,p.summary)}async function oa(f){try{const p=await nr()||[],E=Yr(p,f);if(E){const Y=await ir(E.file);Le(Y.content||"")}else Le("")}catch{}}async function qe(){if(!w){w=!0;try{const f=await ea();if(!f){n.value=null,Le("");return}f.train_dataset_id||(n.value=null);const p=f.train_dataset_id?ta(f.train_dataset_id):Promise.resolve();await Promise.all([p,oa(f),aa()])}finally{d.value=!1,w=!1}}}const je=()=>{var f;return["completed","failed","stopped","cancelled"].includes(((f=t.value)==null?void 0:f.status)||"")},{start:na,stop:ia}=tr(async()=>{await qe(),je()&&ia()},5e3,{immediate:!1});return va(async()=>{a.load(),await qe(),je()||na()}),(f,p)=>{var ce,Je,Qe,et;const E=ca,Y=sa,z=Pt,ue=Et,De=la,$=ua,Ce=da;return H(),K("div",Jr,[d.value?dt((H(),K("div",Qr,null,512)),[[Ce,!0]]):(H(),K(pt,{key:1},[c("header",eo,[p[9]||(p[9]=c("span",{class:"page-eyebrow"},"模型微调 · 训练任务详情",-1)),c("div",to,[c("h1",ao,v(((ce=t.value)==null?void 0:ce.name)||"训练任务详情"),1),m(At,{status:(Je=t.value)==null?void 0:Je.status},null,8,["status"])]),c("p",ro,v(((Qe=t.value)==null?void 0:Qe.description)||"查看模型微调任务的运行状态、训练指标与日志"),1),c("div",oo,[c("span",no,[p[2]||(p[2]=c("span",null,"任务 ID",-1)),c("strong",null,"#"+v(((et=t.value)==null?void 0:et.id)??"-"),1)]),p[6]||(p[6]=c("i",{class:"task-context-divider","aria-hidden":"true"},null,-1)),c("span",io,[p[3]||(p[3]=c("span",null,"基座模型",-1)),c("strong",null,v(L.value),1)]),p[7]||(p[7]=c("i",{class:"task-context-divider","aria-hidden":"true"},null,-1)),c("span",so,[p[4]||(p[4]=c("span",null,"训练配置",-1)),c("strong",null,v(y.value)+" · "+v(S.value),1)]),p[8]||(p[8]=c("i",{class:"task-context-divider","aria-hidden":"true"},null,-1)),c("span",lo,[p[5]||(p[5]=c("span",null,"计算资源",-1)),c("strong",null,v(D.value),1)])])]),m(ge,{class:"summary-card"},{header:x(()=>{var b;return[c("div",uo,[p[10]||(p[10]=c("div",{class:"overview-card-title"},[c("h2",{id:"training-overview-title"},"训练概览"),c("p",null,"实时监控训练进度、收敛指标与 GPU 资源占用")],-1)),c("div",co,[m(At,{status:(b=t.value)==null?void 0:b.status},null,8,["status"]),c("span",po,v(oe.value),1)])])]}),default:x(()=>{var b,tt,at;return[c("section",ho,[c("div",fo,[p[12]||(p[12]=c("div",null,[c("span",{id:"training-progress-title"},"整体训练进度"),c("small",null,"根据训练任务当前执行进度实时更新")],-1)),c("strong",null,[A(v(X((b=t.value)==null?void 0:b.progress)),1),p[11]||(p[11]=c("small",null,"%",-1))])]),m(E,{percentage:X((tt=t.value)==null?void 0:tt.progress),"show-text":!1,"stroke-width":8,"aria-label":"整体训练进度"},null,8,["percentage"])]),c("section",vo,[c("article",go,[p[13]||(p[13]=c("span",null,"当前 Epoch",-1)),c("strong",null,v(g.epoch||le(te.value)),1),p[14]||(p[14]=c("small",null,"训练轮次",-1))]),c("article",mo,[p[15]||(p[15]=c("span",null,"当前 Loss",-1)),c("strong",null,v(le(V.value)),1),c("small",null,v(h.loss.length)+" 个采样点",1)]),c("article",_o,[p[16]||(p[16]=c("span",null,"运行时长",-1)),c("strong",null,v(g.runtime?`${g.runtime}s`:((at=t.value)==null?void 0:at.train_duration)||"-"),1),p[17]||(p[17]=c("small",null,"任务累计运行时间",-1))])]),c("section",yo,[c("div",bo,[c("div",null,[p[18]||(p[18]=c("h3",{id:"gpu-monitor-title"},"GPU 运行状态",-1)),c("p",null,v(F.value),1)])]),B.value.length?(H(),K("div",xo,[p[24]||(p[24]=c("div",{class:"gpu-list-header",role:"row"},[c("span",{role:"columnheader"},"设备"),c("span",{role:"columnheader"},"状态"),c("span",{role:"columnheader"},"计算利用率"),c("span",{role:"columnheader"},"显存占用"),c("span",{role:"columnheader"},"温度"),c("span",{role:"columnheader"},"功耗")],-1)),(H(!0),K(pt,null,_a(J.value,k=>{var rt,ot,nt,it,st,lt,ut,ct;return H(),K("article",{key:k.index,class:"gpu-device-row",role:"row"},[c("div",Mo,[c("strong",null,"GPU "+v(k.index),1),c("span",{title:((rt=k.gpu)==null?void 0:rt.name)||"未检测到设备信息"},v(((ot=k.gpu)==null?void 0:ot.name)||"未检测到设备信息"),9,So)]),c("span",{class:ht(["gpu-status",_e(k.gpu).className]),role:"cell"},[p[19]||(p[19]=c("i",{"aria-hidden":"true"},null,-1)),A(" "+v(_e(k.gpu).label),1)],2),c("div",wo,[c("div",Ao,[p[20]||(p[20]=c("span",{class:"gpu-mobile-label"},"计算利用率",-1)),c("strong",null,v(X((nt=k.gpu)==null?void 0:nt.gpu_percent))+"%",1)]),m(E,{percentage:X((it=k.gpu)==null?void 0:it.gpu_percent),"show-text":!1,"stroke-width":6,color:Qt((st=k.gpu)==null?void 0:st.gpu_percent),"aria-label":`GPU ${k.index} 计算利用率 ${X((lt=k.gpu)==null?void 0:lt.gpu_percent)}%`},null,8,["percentage","color","aria-label"])]),c("div",Ro,[p[21]||(p[21]=c("span",{class:"gpu-mobile-label"},"显存占用",-1)),c("strong",null,v(Ye(k.gpu))+"%",1),c("small",null,v(Ie((ut=k.gpu)==null?void 0:ut.memory_used_gb))+" / "+v(Ie((ct=k.gpu)==null?void 0:ct.memory_total_gb))+" GB",1)]),c("div",To,[p[22]||(p[22]=c("span",{class:"gpu-mobile-label"},"温度",-1)),c("strong",null,v(k.gpu?`${k.gpu.temperature}°C`:"-"),1)]),c("div",Io,[p[23]||(p[23]=c("span",{class:"gpu-mobile-label"},"功耗",-1)),c("strong",null,v(k.gpu?`${Ie(k.gpu.power_w)} W`:"-"),1)])])}),128))])):(H(),K("div",Lo,"当前训练任务未配置 GPU")),B.value.length>be?(H(),K("div",Do,[c("span",Co,v(M.value?`已展示全部 ${B.value.length} 张 GPU`:`已展示 4 张,另有 ${W.value} 张;异常和运行中设备优先`),1),m(Y,{type:"primary",link:"",class:"gpu-toggle-button","aria-expanded":M.value,"aria-controls":"gpu-device-list",onClick:p[0]||(p[0]=k=>M.value=!M.value)},{default:x(()=>[A(v(M.value?"收起 GPU 列表":`展开全部 ${B.value.length} 张 GPU`),1)]),_:1},8,["aria-expanded"])])):ft("",!0)])]}),_:1}),m(Xr,{task:t.value,dataset:n.value,"base-model-name":L.value},null,8,["task","dataset","base-model-name"]),m(ge,{class:ht(["parameters-card",{"is-collapsed":!_.value}]),title:"训练参数",subtitle:"查看本次模型微调使用的基础参数和 LoRA 配置"},{extra:x(()=>[m(Y,{type:"primary",link:"",class:"params-toggle-button","aria-expanded":_.value,"aria-controls":"training-parameter-content",onClick:p[1]||(p[1]=b=>_.value=!_.value)},{default:x(()=>[A(v(_.value?"收起参数":"展开参数"),1)]),_:1},8,["aria-expanded"])]),default:x(()=>[m($,null,{default:x(()=>[dt(c("div",ko,[c("div",Po,[c("section",Eo,[m(ue,{class:"parameter-descriptions",column:2,border:""},{default:x(()=>[m(z,{label:"训练方式"},{default:x(()=>{var b;return[A(v((b=t.value)!=null&&b.train_type?j(Be)[t.value.train_type]||t.value.train_type:"未配置"),1)]}),_:1}),m(z,{label:"训练方法"},{default:x(()=>{var b;return[A(v((b=t.value)!=null&&b.train_method?j($e)[t.value.train_method]||t.value.train_method:"未配置"),1)]}),_:1}),m(z,{label:"Batch Size"},{default:x(()=>{var b;return[A(v(((b=t.value)==null?void 0:b.batch_size)??"未配置"),1)]}),_:1}),m(z,{label:"Learning Rate"},{default:x(()=>{var b;return[A(v(((b=t.value)==null?void 0:b.learning_rate)??"未配置"),1)]}),_:1}),m(z,{label:"训练轮数"},{default:x(()=>{var b;return[A(v(((b=t.value)==null?void 0:b.n_epochs)??"未配置"),1)]}),_:1}),m(z,{label:"保存间隔"},{default:x(()=>{var b;return[A(v(((b=t.value)==null?void 0:b.save_steps)??"未配置"),1)]}),_:1}),m(z,{label:"学习率调度器"},{default:x(()=>{var b;return[A(v(((b=t.value)==null?void 0:b.lr_scheduler_type)||"未配置"),1)]}),_:1}),m(z,{label:"最大序列长度"},{default:x(()=>{var b;return[A(v(((b=t.value)==null?void 0:b.max_length)??"未配置"),1)]}),_:1}),m(z,{label:"权重衰减"},{default:x(()=>{var b;return[A(v(((b=t.value)==null?void 0:b.weight_decay)??"未配置"),1)]}),_:1})]),_:1})]),ra.value?(H(),K("section",Oo,[c("div",Zo,[p[26]||(p[26]=c("h3",{id:"lora-params-title"},"LoRA 参数",-1)),m(De,{size:"small",type:"primary",effect:"plain"},{default:x(()=>[...p[25]||(p[25]=[A("LoRA",-1)])]),_:1})]),m(ue,{class:"parameter-descriptions",column:2,border:""},{default:x(()=>[m(z,{label:"LoRA Rank"},{default:x(()=>{var b;return[A(v(((b=t.value)==null?void 0:b.lora_rank)??"未配置"),1)]}),_:1}),m(z,{label:"LoRA Alpha"},{default:x(()=>{var b;return[A(v(((b=t.value)==null?void 0:b.lora_alpha)??"未配置"),1)]}),_:1}),m(z,{label:"LoRA Dropout"},{default:x(()=>{var b;return[A(v(((b=t.value)==null?void 0:b.lora_dropout)??"未配置"),1)]}),_:1})]),_:1})])):ft("",!0)])],512),[[ya,_.value]])]),_:1})]),_:1},8,["class"]),m(ge,{class:"metrics-panel",title:"训练曲线",subtitle:"持续监控模型收敛情况与学习率变化"},{extra:x(()=>[...p[27]||(p[27]=[c("span",{class:"refresh-state"},"每 5 秒刷新",-1)])]),default:x(()=>[c("div",zo,[c("section",No,[c("div",Go,[p[28]||(p[28]=c("span",{class:"chart-section-title"},"Loss",-1)),c("span",Vo,"最新 "+v(le(V.value)),1)]),m(j(Pe),{class:"chart-canvas",option:I.value,autoresize:""},null,8,["option"])]),c("section",Bo,[c("div",$o,[p[29]||(p[29]=c("span",{class:"chart-section-title"},"梯度范数",-1)),c("span",Ho,"最新 "+v(le(U.value)),1)]),m(j(Pe),{class:"chart-canvas",option:R.value,autoresize:""},null,8,["option"])]),c("section",Uo,[c("div",Fo,[p[30]||(p[30]=c("span",{class:"chart-section-title"},"学习率",-1)),c("span",Wo,"最新 "+v(le(N.value,!0)),1)]),m(j(Pe),{class:"chart-canvas",option:P.value,autoresize:""},null,8,["option"])])])]),_:1}),m(ge,{class:"log-card",title:"训练日志",subtitle:"查看训练任务的原始运行输出"},{extra:x(()=>[c("span",Xo,v(re.value)+" 行 · 每 5 秒刷新",1)]),default:x(()=>[c("pre",Yo,v(o.value||"暂无日志"),1)]),_:1})],64))])}}}),_n=Ut(Ko,[["__scopeId","data-v-bd9358b2"]]);export{_n as default}; diff --git a/frontend/dist/assets/TrainingLogView-k6dQRm27.css b/frontend/dist/assets/TrainingLogView-k6dQRm27.css new file mode 100644 index 0000000..860cd2e --- /dev/null +++ b/frontend/dist/assets/TrainingLogView-k6dQRm27.css @@ -0,0 +1 @@ +.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:top;transform:scaleY(1)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:bottom;transform:scaleY(1)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:0 0;transform:scale(1)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-leave-active,.el-collapse-transition-enter-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.task-overview[data-v-61ae1f69]{margin-bottom:0;border:1px solid #e4e7ed!important;border-radius:8px!important;background:var(--app-surface-bg);box-shadow:none!important}.overview-layout[data-v-61ae1f69]{width:100%}.task-descriptions[data-v-61ae1f69] .el-descriptions__label{width:132px;color:#606266;font-weight:500;background:#f7f8fa!important}.task-descriptions[data-v-61ae1f69] .el-descriptions__content{color:#303133;font-weight:500;font-variant-numeric:tabular-nums}.task-descriptions[data-v-61ae1f69] .el-descriptions__cell{padding:12px 16px!important}@media(max-width:700px){.task-descriptions[data-v-61ae1f69] .el-descriptions__body,.task-descriptions[data-v-61ae1f69] .el-descriptions__table,.task-descriptions[data-v-61ae1f69] .el-descriptions__tbody,.task-descriptions[data-v-61ae1f69] .el-descriptions__row,.task-descriptions[data-v-61ae1f69] .el-descriptions__cell{display:block;width:100%;box-sizing:border-box}.task-descriptions[data-v-61ae1f69] .el-descriptions__label{width:100%;border-bottom:0!important}}.training-log[data-v-bd9358b2]{display:grid;gap:16px;min-width:0}.loading-wrap[data-v-bd9358b2]{min-height:320px;border:1px solid #e4e7ed;border-radius:8px;background:var(--app-surface-bg)}.task-page-header[data-v-bd9358b2]{min-width:0;padding:2px 0 20px;border-bottom:1px solid #e4e7ed}.page-eyebrow[data-v-bd9358b2]{display:block;color:var(--el-color-primary);font-size:12px;line-height:1.5;font-weight:600}.task-page-title-row[data-v-bd9358b2]{display:flex;align-items:center;gap:12px;margin-top:6px}.task-page-title-row h1[data-v-bd9358b2]{min-width:0;margin:0;color:#303133;font-size:24px;line-height:1.35;font-weight:600;overflow-wrap:anywhere}.task-page-description[data-v-bd9358b2]{max-width:760px;margin:6px 0 0;color:#606266;font-size:13px;line-height:1.6}.task-context-row[data-v-bd9358b2]{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:14px}.task-context-item[data-v-bd9358b2]{display:inline-flex;align-items:baseline;min-width:0;gap:6px;color:#909399;font-size:12px;line-height:1.5}.task-context-item strong[data-v-bd9358b2]{overflow:hidden;max-width:260px;color:#606266;font-weight:500;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums}.task-context-divider[data-v-bd9358b2]{width:1px;height:12px;background:#dcdfe6}.summary-card[data-v-bd9358b2],.parameters-card[data-v-bd9358b2],.metrics-panel[data-v-bd9358b2],.log-card[data-v-bd9358b2]{margin-bottom:0;border:1px solid #e4e7ed!important;border-radius:8px!important;box-shadow:none!important}.overview-card-header[data-v-bd9358b2]{display:flex;align-items:flex-start;justify-content:space-between;width:100%;gap:24px}.overview-card-title h2[data-v-bd9358b2]{margin:0;color:#303133;font-size:16px;font-weight:600}.overview-card-title p[data-v-bd9358b2]{margin:5px 0 0;color:#909399;font-size:13px;line-height:1.5}.overview-monitor-meta[data-v-bd9358b2]{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:10px 14px}.overview-refresh-state[data-v-bd9358b2]{color:#909399;font-size:12px;white-space:nowrap;font-variant-numeric:tabular-nums}.training-progress-panel[data-v-bd9358b2]{padding:18px 20px;border:1px solid var(--el-color-primary-light-7);border-radius:6px;background:var(--el-color-primary-light-9)}.training-progress-heading[data-v-bd9358b2]{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:14px}.training-progress-heading>div>span[data-v-bd9358b2]{display:block;color:#303133;font-size:14px;font-weight:600}.training-progress-heading>div>small[data-v-bd9358b2]{display:block;margin-top:4px;color:#909399;font-size:12px}.training-progress-heading>strong[data-v-bd9358b2]{flex:0 0 auto;color:var(--el-color-primary);font-size:30px;line-height:1;font-weight:600;font-variant-numeric:tabular-nums}.training-progress-heading>strong small[data-v-bd9358b2]{margin-left:2px;font-size:14px;font-weight:500}.training-metric-grid[data-v-bd9358b2]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:14px;overflow:hidden;border:1px solid #ebeef5;border-radius:6px;background:#fafafa}.training-metric-cell[data-v-bd9358b2]{min-width:0;padding:14px 18px}.training-metric-cell+.training-metric-cell[data-v-bd9358b2]{border-left:1px solid #ebeef5}.training-metric-cell>span[data-v-bd9358b2]{display:block;color:#606266;font-size:12px}.training-metric-cell>strong[data-v-bd9358b2]{display:block;margin-top:6px;color:#303133;font-size:20px;line-height:1.25;font-weight:600;font-variant-numeric:tabular-nums}.training-metric-cell>small[data-v-bd9358b2]{display:block;margin-top:4px;color:#909399;font-size:11px}.gpu-monitor[data-v-bd9358b2]{margin-top:18px;padding-top:18px;border-top:1px solid #ebeef5}.gpu-monitor-heading[data-v-bd9358b2]{display:flex;align-items:center;justify-content:space-between;gap:16px}.gpu-monitor-heading[data-v-bd9358b2]{align-items:flex-start;margin-bottom:12px}.gpu-monitor-heading h3[data-v-bd9358b2]{margin:0;color:#303133;font-size:14px;font-weight:600}.gpu-monitor-heading p[data-v-bd9358b2]{margin:4px 0 0;color:#909399;font-size:12px}.gpu-device-list[data-v-bd9358b2]{overflow:hidden;border:1px solid #e4e7ed;border-radius:6px;background:#fff}.gpu-list-header[data-v-bd9358b2],.gpu-device-row[data-v-bd9358b2]{display:grid;grid-template-columns:minmax(150px,1.25fr) 84px minmax(180px,1.35fr) minmax(140px,1fr) 72px 76px;align-items:center;column-gap:18px}.gpu-list-header[data-v-bd9358b2]{min-height:38px;padding:0 16px;color:#909399;font-size:11px;font-weight:500;background:#f7f8fa}.gpu-device-row[data-v-bd9358b2]{min-width:0;min-height:70px;padding:10px 16px;box-sizing:border-box}.gpu-device-row+.gpu-device-row[data-v-bd9358b2]{border-top:1px solid #ebeef5}.gpu-device-identity[data-v-bd9358b2]{display:flex;flex-direction:column;min-width:0;gap:4px}.gpu-device-identity strong[data-v-bd9358b2]{color:#303133;font-size:13px;font-weight:600}.gpu-device-identity span[data-v-bd9358b2]{overflow:hidden;color:#909399;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.gpu-status[data-v-bd9358b2]{display:inline-flex;align-items:center;flex:0 0 auto;gap:6px;color:#606266;font-size:12px;font-weight:500}.gpu-status i[data-v-bd9358b2]{width:7px;height:7px;border-radius:50%;background:#909399}.gpu-status.is-busy[data-v-bd9358b2]{color:var(--el-color-primary)}.gpu-status.is-busy i[data-v-bd9358b2]{background:var(--el-color-primary)}.gpu-status.is-idle[data-v-bd9358b2]{color:var(--el-color-success)}.gpu-status.is-idle i[data-v-bd9358b2]{background:var(--el-color-success)}.gpu-status.is-warning[data-v-bd9358b2]{color:var(--el-color-warning)}.gpu-status.is-warning i[data-v-bd9358b2]{background:var(--el-color-warning)}.gpu-status.is-danger[data-v-bd9358b2]{color:var(--el-color-danger)}.gpu-status.is-danger i[data-v-bd9358b2]{background:var(--el-color-danger)}.gpu-status.is-unavailable[data-v-bd9358b2]{color:#909399}.gpu-utilization-cell[data-v-bd9358b2]{min-width:0}.gpu-cell-value[data-v-bd9358b2]{display:flex;align-items:center;justify-content:flex-end;margin-bottom:7px}.gpu-cell-value strong[data-v-bd9358b2],.gpu-memory-cell strong[data-v-bd9358b2],.gpu-resource-cell strong[data-v-bd9358b2]{color:#303133;font-size:13px;font-weight:600;font-variant-numeric:tabular-nums}.gpu-memory-cell[data-v-bd9358b2]{min-width:0}.gpu-memory-cell strong[data-v-bd9358b2]{display:block}.gpu-memory-cell small[data-v-bd9358b2]{display:block;overflow:hidden;margin-top:3px;color:#909399;font-size:10px;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums}.gpu-resource-cell[data-v-bd9358b2]{min-width:0}.gpu-mobile-label[data-v-bd9358b2]{display:none;color:#909399;font-size:10px;font-weight:400}.gpu-empty-state[data-v-bd9358b2]{padding:20px;border:1px dashed #dcdfe6;border-radius:6px;color:#909399;font-size:13px;text-align:center;background:#fafafa}.gpu-list-footer[data-v-bd9358b2]{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:12px;padding-top:12px;border-top:1px solid #ebeef5}.gpu-list-note[data-v-bd9358b2]{color:#909399;font-size:12px;line-height:1.5}.gpu-toggle-button[data-v-bd9358b2]{flex:0 0 auto;min-height:40px;padding:0 8px;font-size:13px}.parameters-card.is-collapsed[data-v-bd9358b2] .page-card-header{margin-bottom:0}.params-toggle-button[data-v-bd9358b2]{min-height:36px;padding:0 8px;font-size:13px}.params-body[data-v-bd9358b2]{padding-top:2px}.parameter-groups[data-v-bd9358b2]{display:flex;flex-direction:column;gap:20px}.parameter-group+.parameter-group[data-v-bd9358b2]{padding-top:20px;border-top:1px solid #e4e7ed}.parameter-section-heading[data-v-bd9358b2]{display:flex;align-items:center;gap:10px;margin-bottom:12px}.parameter-section-heading h3[data-v-bd9358b2]{margin:0;color:#303133;font-size:14px;font-weight:600}.parameter-descriptions[data-v-bd9358b2] .el-descriptions__label{width:150px;color:#606266;font-weight:500;background:#f7f8fa!important}.parameter-descriptions[data-v-bd9358b2] .el-descriptions__content{color:#303133;font-weight:500;font-variant-numeric:tabular-nums}.parameter-descriptions[data-v-bd9358b2] .el-descriptions__cell{padding:11px 14px!important}.refresh-state[data-v-bd9358b2],.log-meta[data-v-bd9358b2]{color:#909399;font-size:12px;white-space:nowrap;font-variant-numeric:tabular-nums}.chart-list[data-v-bd9358b2]{border-top:1px solid #ebeef5}.chart-section[data-v-bd9358b2]{padding:18px 0 10px}.chart-section+.chart-section[data-v-bd9358b2]{border-top:1px solid #ebeef5}.chart-section-header[data-v-bd9358b2]{display:flex;align-items:center;justify-content:space-between;gap:16px}.chart-section-title[data-v-bd9358b2]{color:#303133;font-size:14px;font-weight:600}.chart-latest[data-v-bd9358b2]{color:#909399;font-size:12px;font-variant-numeric:tabular-nums}.chart-canvas[data-v-bd9358b2]{width:100%;height:260px}.log-pre[data-v-bd9358b2]{margin:0;padding:18px 20px;background:#111827;color:#d1d5db;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:12px;line-height:1.7;max-height:520px;overflow:auto;white-space:pre-wrap;word-wrap:break-word;border-radius:4px;scrollbar-color:#4b5563 #111827}@media(max-width:1100px){.gpu-list-header[data-v-bd9358b2]{display:none}.gpu-device-row[data-v-bd9358b2]{grid-template-columns:minmax(0,1fr) repeat(3,minmax(88px,.5fr));grid-template-areas:"identity status status status" "utilization memory temperature power";row-gap:14px;min-height:104px;padding-top:14px;padding-bottom:14px}.gpu-device-identity[data-v-bd9358b2]{grid-area:identity}.gpu-status[data-v-bd9358b2]{grid-area:status;justify-self:end}.gpu-utilization-cell[data-v-bd9358b2]{grid-area:utilization}.gpu-memory-cell[data-v-bd9358b2]{grid-area:memory}.gpu-temperature-cell[data-v-bd9358b2]{grid-area:temperature}.gpu-power-cell[data-v-bd9358b2]{grid-area:power}.gpu-cell-value[data-v-bd9358b2]{justify-content:space-between}.gpu-mobile-label[data-v-bd9358b2]{display:block;margin-bottom:4px}}@media(max-width:600px){.task-page-header[data-v-bd9358b2]{padding-bottom:16px}.task-page-title-row[data-v-bd9358b2]{align-items:flex-start}.task-page-title-row h1[data-v-bd9358b2]{font-size:21px}.task-context-row[data-v-bd9358b2]{display:grid;grid-template-columns:minmax(0,1fr);gap:7px}.task-context-divider[data-v-bd9358b2]{display:none}.task-context-item[data-v-bd9358b2]{justify-content:space-between;gap:12px}.task-context-item strong[data-v-bd9358b2]{max-width:65%;text-align:right;white-space:normal}.overview-card-header[data-v-bd9358b2]{display:block}.overview-monitor-meta[data-v-bd9358b2]{justify-content:flex-start;margin-top:12px}.overview-refresh-state[data-v-bd9358b2]{white-space:normal}.training-progress-panel[data-v-bd9358b2]{padding:16px}.training-progress-heading[data-v-bd9358b2]{align-items:flex-start;gap:16px}.training-progress-heading>div>small[data-v-bd9358b2]{max-width:210px;line-height:1.5}.training-progress-heading>strong[data-v-bd9358b2]{font-size:26px}.training-metric-grid[data-v-bd9358b2]{grid-template-columns:minmax(0,1fr)}.training-metric-cell+.training-metric-cell[data-v-bd9358b2]{border-top:1px solid #ebeef5;border-left:0}.gpu-device-row[data-v-bd9358b2]{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-areas:"identity identity status" "utilization utilization utilization" "memory temperature power";column-gap:12px}.gpu-device-identity span[data-v-bd9358b2]{white-space:normal}.gpu-list-footer[data-v-bd9358b2]{display:block}.gpu-toggle-button[data-v-bd9358b2]{margin-top:6px}.parameter-descriptions[data-v-bd9358b2] .el-descriptions__body,.parameter-descriptions[data-v-bd9358b2] .el-descriptions__table,.parameter-descriptions[data-v-bd9358b2] .el-descriptions__tbody,.parameter-descriptions[data-v-bd9358b2] .el-descriptions__row,.parameter-descriptions[data-v-bd9358b2] .el-descriptions__cell{display:block;width:100%;box-sizing:border-box}.parameter-descriptions[data-v-bd9358b2] .el-descriptions__label{width:100%;border-bottom:0!important}.chart-canvas[data-v-bd9358b2]{height:220px}} diff --git a/frontend/dist/assets/UserCreateView-BWW-0yZS.css b/frontend/dist/assets/UserCreateView-BWW-0yZS.css new file mode 100644 index 0000000..4d67e25 --- /dev/null +++ b/frontend/dist/assets/UserCreateView-BWW-0yZS.css @@ -0,0 +1 @@ +.user-create[data-v-57777381]{padding:24px}.user-form[data-v-57777381]{max-width:760px} diff --git a/frontend/dist/assets/UserCreateView-y4uo9Eyv.js b/frontend/dist/assets/UserCreateView-y4uo9Eyv.js new file mode 100644 index 0000000..2df93eb --- /dev/null +++ b/frontend/dist/assets/UserCreateView-y4uo9Eyv.js @@ -0,0 +1 @@ +import{E as y,a as x}from"./el-form-item-D5kF3B90.js";import{E as k}from"./index-TFUf94PZ.js";import{E as U}from"./index-BjEW7-SA.js";import{E as C,a as B}from"./el-select-Dl-FRZQd.js";import{a as F,E as I}from"./el-checkbox-qGZ2-RM2.js";import{E as N,b as R}from"./el-radio-group-BkCoTeQL.js";import{d as G,c as _,q as M,s as o,w as l,o as f,x as r,M as O,ad as S,aa as q,f as z,v as A,y as D,z as L,db as T,A as $}from"./index-BKKvzUDD.js";/* empty css */import"./el-scrollbar-ClJnvz-9.js";import"./el-popper-D6_hxRbQ.js";/* empty css */import{_ as j}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./castArray-5uErZEc3.js";import"./_baseClone-B5RBzbh5.js";import"./raf-C-x62Pcl.js";import"./index-DLzof2Fz.js";import"./index-GAnQrJsQ.js";import"./index-CWUnzf90.js";import"./vnode-78qeDweP.js";import"./index-D5ryD3I5.js";import"./index-BDEF353-.js";import"./scroll-BkzZKETR.js";import"./clamp-CbbY8h6F.js";import"./toNumber-Dkj3QRv9.js";import"./_baseIteratee-BAilevJ_.js";import"./omit-BTSq4AYh.js";const H={class:"user-create"},J=G({__name:"UserCreateView",setup(K){const d=A(),n=D(!1),a=L({username:"",display_name:"",password:"platform123",role:"viewer",status:"active",permissions:["dashboard"]}),b=["dashboard","fine-tune","model-eval","model-inference","model-manage","dataset","data-process","data-convert","compute","hardware","logs","user-settings"];async function V(){n.value=!0;try{await T(a),$.success("用户已创建"),d.push("/user-settings")}finally{n.value=!1}}return(P,e)=>{const m=k,s=x,u=B,v=C,p=R,c=N,E=I,w=F,i=U,g=y;return f(),_("section",H,[e[11]||(e[11]=M("h1",null,"创建用户",-1)),o(g,{model:a,"label-width":"110px",class:"user-form"},{default:l(()=>[o(s,{label:"账号"},{default:l(()=>[o(m,{modelValue:a.username,"onUpdate:modelValue":e[0]||(e[0]=t=>a.username=t)},null,8,["modelValue"])]),_:1}),o(s,{label:"显示名称"},{default:l(()=>[o(m,{modelValue:a.display_name,"onUpdate:modelValue":e[1]||(e[1]=t=>a.display_name=t)},null,8,["modelValue"])]),_:1}),o(s,{label:"初始密码"},{default:l(()=>[o(m,{modelValue:a.password,"onUpdate:modelValue":e[2]||(e[2]=t=>a.password=t),type:"password","show-password":""},null,8,["modelValue"])]),_:1}),o(s,{label:"角色"},{default:l(()=>[o(v,{modelValue:a.role,"onUpdate:modelValue":e[3]||(e[3]=t=>a.role=t)},{default:l(()=>[o(u,{label:"管理员",value:"admin"}),o(u,{label:"操作员",value:"operator"}),o(u,{label:"观察员",value:"viewer"})]),_:1},8,["modelValue"])]),_:1}),o(s,{label:"状态"},{default:l(()=>[o(c,{modelValue:a.status,"onUpdate:modelValue":e[4]||(e[4]=t=>a.status=t)},{default:l(()=>[o(p,{value:"active"},{default:l(()=>[...e[7]||(e[7]=[r("启用",-1)])]),_:1}),o(p,{value:"disabled"},{default:l(()=>[...e[8]||(e[8]=[r("禁用",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),o(s,{label:"页面权限"},{default:l(()=>[o(w,{modelValue:a.permissions,"onUpdate:modelValue":e[5]||(e[5]=t=>a.permissions=t)},{default:l(()=>[(f(),_(O,null,S(b,t=>o(E,{key:t,value:t},{default:l(()=>[r(q(t),1)]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"])]),_:1}),o(s,null,{default:l(()=>[o(i,{onClick:e[6]||(e[6]=t=>z(d).back())},{default:l(()=>[...e[9]||(e[9]=[r("返回",-1)])]),_:1}),o(i,{type:"primary",loading:n.value,onClick:V},{default:l(()=>[...e[10]||(e[10]=[r("保存",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"])])}}}),we=j(J,[["__scopeId","data-v-57777381"]]);export{we as default}; diff --git a/frontend/dist/assets/UserPermissionView-B3oCc2mK.js b/frontend/dist/assets/UserPermissionView-B3oCc2mK.js new file mode 100644 index 0000000..7f19a90 --- /dev/null +++ b/frontend/dist/assets/UserPermissionView-B3oCc2mK.js @@ -0,0 +1 @@ +import{_ as o}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{o as t,c as r,q as s}from"./index-BKKvzUDD.js";const c={},n={class:"simple-page"};function a(_,e){return t(),r("section",n,[...e[0]||(e[0]=[s("h1",null,"权限设置",-1),s("p",null,"第一版已支持账号页面权限读取与保存,精细化项目/模型/数据集权限将在后续版本补齐。",-1)])])}const p=o(c,[["render",a],["__scopeId","data-v-608c6e7e"]]);export{p as default}; diff --git a/frontend/dist/assets/UserPermissionView-C2mbs5Zk.css b/frontend/dist/assets/UserPermissionView-C2mbs5Zk.css new file mode 100644 index 0000000..52879d9 --- /dev/null +++ b/frontend/dist/assets/UserPermissionView-C2mbs5Zk.css @@ -0,0 +1 @@ +.simple-page[data-v-608c6e7e]{padding:24px} diff --git a/frontend/dist/assets/UserSettingsView-B2Ro6wyQ.js b/frontend/dist/assets/UserSettingsView-B2Ro6wyQ.js new file mode 100644 index 0000000..b1cfdb4 --- /dev/null +++ b/frontend/dist/assets/UserSettingsView-B2Ro6wyQ.js @@ -0,0 +1 @@ +import{E as v}from"./index-BjEW7-SA.js";import{a as w,E as b}from"./el-table-D8K5zLyz.js";import{v as g}from"./directive-DsZckUTJ.js";import{d as h,G as y,K as E,c as x,q as a,s as t,w as r,y as p,da as V,o as B,x as m,aa as C}from"./index-BKKvzUDD.js";import"./el-scrollbar-ClJnvz-9.js";import"./el-popper-D6_hxRbQ.js";import"./el-tooltip-l0sNRNKZ.js";import"./el-checkbox-qGZ2-RM2.js";/* empty css */import{_ as U}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./_baseClone-B5RBzbh5.js";import"./index-GAnQrJsQ.js";import"./_baseIteratee-BAilevJ_.js";import"./castArray-5uErZEc3.js";import"./debounce-ByXPNh5F.js";import"./toNumber-Dkj3QRv9.js";import"./index-CWUnzf90.js";import"./raf-C-x62Pcl.js";import"./omit-BTSq4AYh.js";const k={class:"user-settings"},N={class:"page-header"},S=h({__name:"UserSettingsView",setup(T){const s=p(!1),i=p([]);async function d(){s.value=!0;try{i.value=await V()}finally{s.value=!1}}return y(d),(u,e)=>{const _=v,o=b,c=w,f=g;return E((B(),x("section",k,[a("header",N,[e[2]||(e[2]=a("div",null,[a("h1",null,"用户设置"),a("p",null,"管理平台账号、角色状态和页面权限。")],-1)),t(_,{type:"primary",onClick:e[0]||(e[0]=l=>u.$router.push("/user-settings/create"))},{default:r(()=>[...e[1]||(e[1]=[m("创建用户",-1)])]),_:1})]),t(c,{data:i.value},{default:r(()=>[t(o,{prop:"username",label:"账号","min-width":"140"}),t(o,{prop:"display_name",label:"显示名称","min-width":"160"}),t(o,{prop:"role",label:"角色",width:"120"}),t(o,{prop:"status",label:"状态",width:"120"}),t(o,{label:"权限数",width:"120"},{default:r(({row:l})=>{var n;return[m(C(((n=l.permissions)==null?void 0:n.length)||0),1)]}),_:1}),t(o,{prop:"create_time",label:"创建时间","min-width":"180"})]),_:1},8,["data"])])),[[f,s.value]])}}}),X=U(S,[["__scopeId","data-v-16caa8c5"]]);export{X as default}; diff --git a/frontend/dist/assets/UserSettingsView-DKVS0cYk.css b/frontend/dist/assets/UserSettingsView-DKVS0cYk.css new file mode 100644 index 0000000..e517a80 --- /dev/null +++ b/frontend/dist/assets/UserSettingsView-DKVS0cYk.css @@ -0,0 +1 @@ +.user-settings[data-v-16caa8c5]{padding:24px}.page-header[data-v-16caa8c5]{display:flex;justify-content:space-between;gap:16px;margin-bottom:18px}.page-header h1[data-v-16caa8c5]{margin:0;font-size:24px}.page-header p[data-v-16caa8c5]{margin:8px 0 0;color:#64748b} diff --git a/frontend/dist/assets/_baseClone-B5RBzbh5.js b/frontend/dist/assets/_baseClone-B5RBzbh5.js new file mode 100644 index 0000000..f7d96c1 --- /dev/null +++ b/frontend/dist/assets/_baseClone-B5RBzbh5.js @@ -0,0 +1 @@ +import{cs as T,ct as Q,cu as U,cv as B,cw as X,cx as Z,cy as M,cz as V,cA as D,cB as z,cj as k,cC as G,cD as ee,cE as m,ch as O,cF as K,cG as d,cH as N,cI as b,cJ as re,cK as te,ce as ne,cL as ae}from"./index-BKKvzUDD.js";var S=Object.create,oe=(function(){function e(){}return function(r){if(!T(r))return{};if(S)return S(r);e.prototype=r;var t=new e;return e.prototype=void 0,t}})();function se(e,r){var t=-1,a=e.length;for(r||(r=Array(a));++t{const o=t.__vccOpts||t;for(const[c,e]of r)o[c]=e;return o};export{s as _}; diff --git a/frontend/dist/assets/apl-B4CMkyY2.js b/frontend/dist/assets/apl-B4CMkyY2.js new file mode 100644 index 0000000..548bbc3 --- /dev/null +++ b/frontend/dist/assets/apl-B4CMkyY2.js @@ -0,0 +1 @@ +var l={"+":["conjugate","add"],"−":["negate","subtract"],"×":["signOf","multiply"],"÷":["reciprocal","divide"],"⌈":["ceiling","greaterOf"],"⌊":["floor","lesserOf"],"∣":["absolute","residue"],"⍳":["indexGenerate","indexOf"],"?":["roll","deal"],"⋆":["exponentiate","toThePowerOf"],"⍟":["naturalLog","logToTheBase"],"○":["piTimes","circularFuncs"],"!":["factorial","binomial"],"⌹":["matrixInverse","matrixDivide"],"<":[null,"lessThan"],"≤":[null,"lessThanOrEqual"],"=":[null,"equals"],">":[null,"greaterThan"],"≥":[null,"greaterThanOrEqual"],"≠":[null,"notEqual"],"≡":["depth","match"],"≢":[null,"notMatch"],"∈":["enlist","membership"],"⍷":[null,"find"],"∪":["unique","union"],"∩":[null,"intersection"],"∼":["not","without"],"∨":[null,"or"],"∧":[null,"and"],"⍱":[null,"nor"],"⍲":[null,"nand"],"⍴":["shapeOf","reshape"],",":["ravel","catenate"],"⍪":[null,"firstAxisCatenate"],"⌽":["reverse","rotate"],"⊖":["axis1Reverse","axis1Rotate"],"⍉":["transpose",null],"↑":["first","take"],"↓":[null,"drop"],"⊂":["enclose","partitionWithAxis"],"⊃":["diclose","pick"],"⌷":[null,"index"],"⍋":["gradeUp",null],"⍒":["gradeDown",null],"⊤":["encode",null],"⊥":["decode",null],"⍕":["format","formatByExample"],"⍎":["execute",null],"⊣":["stop","left"],"⊢":["pass","right"]},t=/[\.\/⌿⍀¨⍣]/,a=/⍬/,i=/[\+−×÷⌈⌊∣⍳\?⋆⍟○!⌹<≤=>≥≠≡≢∈⍷∪∩∼∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⌷⍋⍒⊤⊥⍕⍎⊣⊢]/,u=/←/,o=/[⍝#].*$/,s=function(r){var n;return n=!1,function(e){return n=e,e===r?n==="\\":!0}};const f={name:"apl",startState:function(){return{prev:!1,func:!1,op:!1,string:!1,escape:!1}},token:function(r,n){var e;return r.eatSpace()?null:(e=r.next(),e==='"'||e==="'"?(r.eatWhile(s(e)),r.next(),n.prev=!0,"string"):/[\[{\(]/.test(e)?(n.prev=!1,null):/[\]}\)]/.test(e)?(n.prev=!0,null):a.test(e)?(n.prev=!1,"atom"):/[¯\d]/.test(e)?(n.func?(n.func=!1,n.prev=!1):n.prev=!0,r.eatWhile(/[\w\.]/),"number"):t.test(e)||u.test(e)?"operator":i.test(e)?(n.func=!0,n.prev=!1,l[e]?"variableName.function.standard":"variableName.function"):o.test(e)?(r.skipToEnd(),"comment"):e==="∘"&&r.peek()==="."?(r.next(),"variableName.function"):(r.eatWhile(/[\w\$_]/),n.prev=!0,"keyword"))}};export{f as apl}; diff --git a/frontend/dist/assets/asciiarmor-Df11BRmG.js b/frontend/dist/assets/asciiarmor-Df11BRmG.js new file mode 100644 index 0000000..2df0396 --- /dev/null +++ b/frontend/dist/assets/asciiarmor-Df11BRmG.js @@ -0,0 +1 @@ +function t(e){var r=e.match(/^\s*\S/);return e.skipToEnd(),r?"error":null}const i={name:"asciiarmor",token:function(e,r){var n;if(r.state=="top")return e.sol()&&(n=e.match(/^-----BEGIN (.*)?-----\s*$/))?(r.state="headers",r.type=n[1],"tag"):t(e);if(r.state=="headers"){if(e.sol()&&e.match(/^\w+:/))return r.state="header","atom";var o=t(e);return o&&(r.state="body"),o}else{if(r.state=="header")return e.skipToEnd(),r.state="headers","string";if(r.state=="body")return e.sol()&&(n=e.match(/^-----END (.*)?-----\s*$/))?n[1]!=r.type?"error":(r.state="end","tag"):e.eatWhile(/[A-Za-z0-9+\/=]/)?null:(e.next(),"error");if(r.state=="end")return t(e)}},blankLine:function(e){e.state=="headers"&&(e.state="body")},startState:function(){return{state:"top",type:null}}};export{i as asciiArmor}; diff --git a/frontend/dist/assets/asn1-EdZsLKOL.js b/frontend/dist/assets/asn1-EdZsLKOL.js new file mode 100644 index 0000000..8ec4903 --- /dev/null +++ b/frontend/dist/assets/asn1-EdZsLKOL.js @@ -0,0 +1 @@ +function u(i){for(var s={},c=i.split(" "),T=0;T?$/.test(i)?(n.extenExten=!0,n.extenStart=!1,"strong"):(n.extenStart=!1,e.skipToEnd(),"error");if(n.extenExten)return n.extenExten=!1,n.extenPriority=!0,e.eatWhile(/[^,]/),n.extenInclude&&(e.skipToEnd(),n.extenPriority=!1,n.extenInclude=!1),n.extenSame&&(n.extenPriority=!1,n.extenSame=!1,n.extenApplication=!0),"tag";if(n.extenPriority)return n.extenPriority=!1,n.extenApplication=!0,e.next(),n.extenSame?null:(e.eatWhile(/[^,]/),"number");if(n.extenApplication){if(e.eatWhile(/,/),i=e.current(),i===",")return null;if(e.eatWhile(/\w/),i=e.current().toLowerCase(),n.extenApplication=!1,c.indexOf(i)!==-1)return"def"}else return l(e,n);return null},languageData:{commentTokens:{line:";",block:{open:";--",close:"--;"}}}};export{s as asterisk}; diff --git a/frontend/dist/assets/brainfuck-C4LP7Hcl.js b/frontend/dist/assets/brainfuck-C4LP7Hcl.js new file mode 100644 index 0000000..4d0e4bc --- /dev/null +++ b/frontend/dist/assets/brainfuck-C4LP7Hcl.js @@ -0,0 +1 @@ +var f="><+-.,[]".split("");const r={name:"brainfuck",startState:function(){return{commentLine:!1,left:0,right:0,commentLoop:!1}},token:function(i,n){if(i.eatSpace())return null;i.sol()&&(n.commentLine=!1);var e=i.next().toString();if(f.indexOf(e)!==-1){if(n.commentLine===!0)return i.eol()&&(n.commentLine=!1),"comment";if(e==="]"||e==="[")return e==="["?n.left++:n.right++,"bracket";if(e==="+"||e==="-")return"keyword";if(e==="<"||e===">")return"atom";if(e==="."||e===",")return"def"}else return n.commentLine=!0,i.eol()&&(n.commentLine=!1),"comment";i.eol()&&(n.commentLine=!1)}};export{r as brainfuck}; diff --git a/frontend/dist/assets/castArray-5uErZEc3.js b/frontend/dist/assets/castArray-5uErZEc3.js new file mode 100644 index 0000000..43cca8d --- /dev/null +++ b/frontend/dist/assets/castArray-5uErZEc3.js @@ -0,0 +1 @@ +import{ce as a}from"./index-BKKvzUDD.js";function e(){if(!arguments.length)return[];var r=arguments[0];return a(r)?r:[r]}export{e as c}; diff --git a/frontend/dist/assets/clamp-CbbY8h6F.js b/frontend/dist/assets/clamp-CbbY8h6F.js new file mode 100644 index 0000000..6e28661 --- /dev/null +++ b/frontend/dist/assets/clamp-CbbY8h6F.js @@ -0,0 +1 @@ +import{t as n}from"./toNumber-Dkj3QRv9.js";function t(d,f,i){return d===d&&(i!==void 0&&(d=d<=i?d:i),f!==void 0&&(d=d>=f?d:f)),d}function c(d,f,i){return i===void 0&&(i=f,f=void 0),i!==void 0&&(i=n(i),i=i===i?i:0),f!==void 0&&(f=n(f),f=f===f?f:0),t(n(d),f,i)}export{c}; diff --git a/frontend/dist/assets/clike-B9uivgTg.js b/frontend/dist/assets/clike-B9uivgTg.js new file mode 100644 index 0000000..18846a7 --- /dev/null +++ b/frontend/dist/assets/clike-B9uivgTg.js @@ -0,0 +1 @@ +function O(e,n,t,l,s,d){this.indented=e,this.column=n,this.type=t,this.info=l,this.align=s,this.prev=d}function D(e,n,t,l){var s=e.indented;return e.context&&e.context.type=="statement"&&t!="statement"&&(s=e.context.indented),e.context=new O(s,n,t,l,null,e.context)}function x(e){var n=e.context.type;return(n==")"||n=="]"||n=="}")&&(e.indented=e.context.indented),e.context=e.context.prev}function V(e,n,t){if(n.prevToken=="variable"||n.prevToken=="type"||/\S(?:[^- ]>|[*\]])\s*$|\*$/.test(e.string.slice(0,t))||n.typeAtEndOfLine&&e.column()==e.indentation())return!0}function P(e){for(;;){if(!e||e.type=="top")return!0;if(e.type=="}"&&e.prev.info!="namespace")return!1;e=e.prev}}function h(e){var n=e.statementIndentUnit,t=e.dontAlignCalls,l=e.keywords||{},s=e.types||{},d=e.builtin||{},b=e.blockKeywords||{},_=e.defKeywords||{},w=e.atoms||{},y=e.hooks||{},te=e.multiLineStrings,re=e.indentStatements!==!1,ie=e.indentSwitch!==!1,F=e.namespaceSeparator,oe=e.isPunctuationChar||/[\[\]{}\(\),;\:\.]/,ae=e.numberStart||/[\d\.]/,le=e.number||/^(?:0x[a-f\d]+|0b[01]+|(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?)(u|ll?|l|f)?/i,j=e.isOperatorChar||/[+\-*&%=<>!?|\/]/,B=e.isIdentifierChar||/[\w\$_\xa1-\uffff]/,U=e.isReservedIdentifier||!1,p,E;function K(i,a){var c=i.next();if(y[c]){var o=y[c](i,a);if(o!==!1)return o}if(c=='"'||c=="'")return a.tokenize=ce(c),a.tokenize(i,a);if(ae.test(c)){if(i.backUp(1),i.match(le))return"number";i.next()}if(oe.test(c))return p=c,null;if(c=="/"){if(i.eat("*"))return a.tokenize=A,A(i,a);if(i.eat("/"))return i.skipToEnd(),"comment"}if(j.test(c)){for(;!i.match(/^\/[\/*]/,!1)&&i.eat(j););return"operator"}if(i.eatWhile(B),F)for(;i.match(F);)i.eatWhile(B);var u=i.current();return m(l,u)?(m(b,u)&&(p="newstatement"),m(_,u)&&(E=!0),"keyword"):m(s,u)?"type":m(d,u)||U&&U(u)?(m(b,u)&&(p="newstatement"),"builtin"):m(w,u)?"atom":"variable"}function ce(i){return function(a,c){for(var o=!1,u,v=!1;(u=a.next())!=null;){if(u==i&&!o){v=!0;break}o=!o&&u=="\\"}return(v||!(o||te))&&(c.tokenize=null),"string"}}function A(i,a){for(var c=!1,o;o=i.next();){if(o=="/"&&c){a.tokenize=null;break}c=o=="*"}return"comment"}function $(i,a){e.typeFirstDefinitions&&i.eol()&&P(a.context)&&(a.typeAtEndOfLine=V(i,a,i.pos))}return{name:e.name,startState:function(i){return{tokenize:null,context:new O(-i,0,"top",null,!1),indented:0,startOfLine:!0,prevToken:null}},token:function(i,a){var c=a.context;if(i.sol()&&(c.align==null&&(c.align=!1),a.indented=i.indentation(),a.startOfLine=!0),i.eatSpace())return $(i,a),null;p=E=null;var o=(a.tokenize||K)(i,a);if(o=="comment"||o=="meta")return o;if(c.align==null&&(c.align=!0),p==";"||p==":"||p==","&&i.match(/^\s*(?:\/\/.*)?$/,!1))for(;a.context.type=="statement";)x(a);else if(p=="{")D(a,i.column(),"}");else if(p=="[")D(a,i.column(),"]");else if(p=="(")D(a,i.column(),")");else if(p=="}"){for(;c.type=="statement";)c=x(a);for(c.type=="}"&&(c=x(a));c.type=="statement";)c=x(a)}else p==c.type?x(a):re&&((c.type=="}"||c.type=="top")&&p!=";"||c.type=="statement"&&p=="newstatement")&&D(a,i.column(),"statement",i.current());if(o=="variable"&&(a.prevToken=="def"||e.typeFirstDefinitions&&V(i,a,i.start)&&P(a.context)&&i.match(/^\s*\(/,!1))&&(o="def"),y.token){var u=y.token(i,a,o);u!==void 0&&(o=u)}return o=="def"&&e.styleDefs===!1&&(o="variable"),a.startOfLine=!1,a.prevToken=E?"def":o||p,$(i,a),o},indent:function(i,a,c){if(i.tokenize!=K&&i.tokenize!=null||i.typeAtEndOfLine&&P(i.context))return null;var o=i.context,u=a&&a.charAt(0),v=u==o.type;if(o.type=="statement"&&u=="}"&&(o=o.prev),e.dontIndentStatements)for(;o.type=="statement"&&e.dontIndentStatements.test(o.info);)o=o.prev;if(y.indent){var q=y.indent(i,o,a,c.unit);if(typeof q=="number")return q}var se=o.prev&&o.prev.info=="switch";if(e.allmanIndentation&&/[{(]/.test(u)){for(;o.type!="top"&&o.type!="}";)o=o.prev;return o.indented}return o.type=="statement"?o.indented+(u=="{"?0:n||c.unit):o.align&&(!t||o.type!=")")?o.column+(v?0:1):o.type==")"&&!v?o.indented+(n||c.unit):o.indented+(v?0:c.unit)+(!v&&se&&!/^(?:case|default)\b/.test(a)?c.unit:0)},languageData:{indentOnInput:ie?/^\s*(?:case .*?:|default:|\{\}?|\})$/:/^\s*[{}]$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}},autocomplete:Object.keys(l).concat(Object.keys(s)).concat(Object.keys(d)).concat(Object.keys(w)),...e.languageData}}}function r(e){for(var n={},t=e.split(" "),l=0;l!?|\/#:@]/,hooks:{"@":function(e){return e.eatWhile(/[\w\$_]/),"meta"},'"':function(e,n){return e.match('""')?(n.tokenize=J,n.tokenize(e,n)):!1},"'":function(e){return e.match(/^(\\[^'\s]+|[^\\'])'/)?"character":(e.eatWhile(/[\w\$_\xa1-\uffff]/),"atom")},"=":function(e,n){var t=n.context;return t.type=="}"&&t.align&&e.eat(">")?(n.context=new O(t.indented,t.column,t.type,t.info,null,t.prev),"operator"):!1},"/":function(e,n){return e.eat("*")?(n.tokenize=S(1),n.tokenize(e,n)):!1}},languageData:{closeBrackets:{brackets:["(","[","{","'",'"','"""']}}});function de(e){return function(n,t){for(var l=!1,s,d=!1;!n.eol();){if(!e&&!l&&n.match('"')){d=!0;break}if(e&&n.match('"""')){d=!0;break}s=n.next(),!l&&s=="$"&&n.match("{")&&n.skipTo("}"),l=!l&&s=="\\"&&!e}return(d||!e)&&(t.tokenize=null),"string"}}const _e=h({name:"kotlin",keywords:r("package as typealias class interface this super val operator var fun for is in This throw return annotation break continue object if else while do try when !in !is as? file import where by get set abstract enum open inner override private public internal protected catch finally out final vararg reified dynamic companion constructor init sealed field property receiver param sparam lateinit data inline noinline tailrec external annotation crossinline const operator infix suspend actual expect setparam"),types:r("Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable Compiler Double Exception Float Integer Long Math Number Object Package Pair Process Runtime Runnable SecurityManager Short StackTraceElement StrictMath String StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void Annotation Any BooleanArray ByteArray Char CharArray DeprecationLevel DoubleArray Enum FloatArray Function Int IntArray Lazy LazyThreadSafetyMode LongArray Nothing ShortArray Unit"),indentStatements:!1,multiLineStrings:!0,number:/^(?:0x[a-f\d_]+|0b[01_]+|(?:[\d_]+(\.\d+)?|\.\d+)(?:e[-+]?[\d_]+)?)(ul?|l|f)?/i,blockKeywords:r("catch class do else finally for if where try while enum"),defKeywords:r("class val var object interface fun"),atoms:r("true false null this"),hooks:{"@":function(e){return e.eatWhile(/[\w\$_]/),"meta"},"*":function(e,n){return n.prevToken=="."?"variable":"operator"},'"':function(e,n){return n.tokenize=de(e.match('""')),n.tokenize(e,n)},"/":function(e,n){return e.eat("*")?(n.tokenize=S(1),n.tokenize(e,n)):!1},indent:function(e,n,t,l){var s=t&&t.charAt(0);if((e.prevToken=="}"||e.prevToken==")")&&t=="")return e.indented;if(e.prevToken=="operator"&&t!="}"&&e.context.type!="}"||e.prevToken=="variable"&&s=="."||(e.prevToken=="}"||e.prevToken==")")&&s==".")return l*2+n.indented;if(n.align&&n.type=="}")return n.indented+(e.context.type==(t||"").charAt(0)?0:l)}},languageData:{closeBrackets:{brackets:["(","[","{","'",'"','"""']}}}),xe=h({name:"shader",keywords:r("sampler1D sampler2D sampler3D samplerCube sampler1DShadow sampler2DShadow const attribute uniform varying break continue discard return for while do if else struct in out inout"),types:r("float int bool void vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 mat2 mat3 mat4"),blockKeywords:r("for while do if else struct"),builtin:r("radians degrees sin cos tan asin acos atan pow exp log exp2 sqrt inversesqrt abs sign floor ceil fract mod min max clamp mix step smoothstep length distance dot cross normalize ftransform faceforward reflect refract matrixCompMult lessThan lessThanEqual greaterThan greaterThanEqual equal notEqual any all not texture1D texture1DProj texture1DLod texture1DProjLod texture2D texture2DProj texture2DLod texture2DProjLod texture3D texture3DProj texture3DLod texture3DProjLod textureCube textureCubeLod shadow1D shadow2D shadow1DProj shadow2DProj shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod dFdx dFdy fwidth noise1 noise2 noise3 noise4"),atoms:r("true false gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_FogCoord gl_PointCoord gl_Position gl_PointSize gl_ClipVertex gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor gl_TexCoord gl_FogFragCoord gl_FragCoord gl_FrontFacing gl_FragData gl_FragDepth gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse gl_TextureMatrixTranspose gl_ModelViewMatrixInverseTranspose gl_ProjectionMatrixInverseTranspose gl_ModelViewProjectionMatrixInverseTranspose gl_TextureMatrixInverseTranspose gl_NormalScale gl_DepthRange gl_ClipPlane gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel gl_FrontLightModelProduct gl_BackLightModelProduct gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ gl_FogParameters gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits gl_MaxDrawBuffers"),indentSwitch:!1,hooks:{"#":g}}),Se=h({name:"nesc",keywords:r(T+" as atomic async call command component components configuration event generic implementation includes interface module new norace nx_struct nx_union post provides signal task uses abstract extends"),types:I,blockKeywords:r(N),atoms:r("null true false"),hooks:{"#":g}}),Te=h({name:"objectivec",keywords:r(T+" "+Q),types:X,builtin:r(Z),blockKeywords:r(N+" @synthesize @try @catch @finally @autoreleasepool @synchronized"),defKeywords:r(z+" @interface @implementation @protocol @class"),dontIndentStatements:/^@.*$/,typeFirstDefinitions:!0,atoms:r("YES NO NULL Nil nil true false nullptr"),isReservedIdentifier:C,hooks:{"#":g,"*":M}}),Ie=h({name:"objectivecpp",keywords:r(T+" "+Q+" "+H),types:X,builtin:r(Z),blockKeywords:r(N+" @synthesize @try @catch @finally @autoreleasepool @synchronized class try catch"),defKeywords:r(z+" @interface @implementation @protocol @class class namespace"),dontIndentStatements:/^@.*$|^template$/,typeFirstDefinitions:!0,atoms:r("YES NO NULL Nil nil true false nullptr"),isReservedIdentifier:C,hooks:{"#":g,"*":M,u:k,U:k,L:k,R:k,0:f,1:f,2:f,3:f,4:f,5:f,6:f,7:f,8:f,9:f,token:function(e,n,t){if(t=="variable"&&e.peek()=="("&&(n.prevToken==";"||n.prevToken==null||n.prevToken=="}")&&Y(e.current()))return"def"}},namespaceSeparator:"::"}),Ne=h({name:"squirrel",keywords:r("base break clone continue const default delete enum extends function in class foreach local resume return this throw typeof yield constructor instanceof static"),types:I,blockKeywords:r("case catch class else for foreach if switch try while"),defKeywords:r("function local class"),typeFirstDefinitions:!0,atoms:r("true false null"),hooks:{"#":g}});var L=null;function ee(e){return function(n,t){for(var l=!1,s,d=!1;!n.eol();){if(!l&&n.match('"')&&(e=="single"||n.match('""'))){d=!0;break}if(!l&&n.match("``")){L=ee(e),d=!0;break}s=n.next(),l=e=="single"&&!l&&s=="\\"}return d&&(t.tokenize=null),"string"}}const De=h({name:"ceylon",keywords:r("abstracts alias assembly assert assign break case catch class continue dynamic else exists extends finally for function given if import in interface is let module new nonempty object of out outer package return satisfies super switch then this throw try value void while"),types:function(e){var n=e.charAt(0);return n===n.toUpperCase()&&n!==n.toLowerCase()},blockKeywords:r("case catch class dynamic else finally for function if interface module new object switch try while"),defKeywords:r("class dynamic function interface module object package value"),builtin:r("abstract actual aliased annotation by default deprecated doc final formal late license native optional sealed see serializable shared suppressWarnings tagged throws variable"),isPunctuationChar:/[\[\]{}\(\),;\:\.`]/,isOperatorChar:/[+\-*&%=<>!?|^~:\/]/,numberStart:/[\d#$]/,number:/^(?:#[\da-fA-F_]+|\$[01_]+|[\d_]+[kMGTPmunpf]?|[\d_]+\.[\d_]+(?:[eE][-+]?\d+|[kMGTPmunpf]|)|)/i,multiLineStrings:!0,typeFirstDefinitions:!0,atoms:r("true false null larger smaller equal empty finished"),indentSwitch:!1,styleDefs:!1,hooks:{"@":function(e){return e.eatWhile(/[\w\$_]/),"meta"},'"':function(e,n){return n.tokenize=ee(e.match('""')?"triple":"single"),n.tokenize(e,n)},"`":function(e,n){return!L||!e.match("`")?!1:(n.tokenize=L,L=null,n.tokenize(e,n))},"'":function(e){return e.match(/^(\\[^'\s]+|[^\\'])'/)?"string.special":(e.eatWhile(/[\w\$_\xa1-\uffff]/),"atom")},token:function(e,n,t){if((t=="variable"||t=="type")&&n.prevToken==".")return"variableName.special"}},languageData:{closeBrackets:{brackets:["(","[","{","'",'"','"""']}}});function pe(e){(e.interpolationStack||(e.interpolationStack=[])).push(e.tokenize)}function ne(e){return(e.interpolationStack||(e.interpolationStack=[])).pop()}function he(e){return e.interpolationStack?e.interpolationStack.length:0}function R(e,n,t,l){var s=!1;if(n.eat(e))if(n.eat(e))s=!0;else return"string";function d(b,_){for(var w=!1;!b.eol();){if(!l&&!w&&b.peek()=="$")return pe(_),_.tokenize=ye,"string";var y=b.next();if(y==e&&!w&&(!s||b.match(e+e))){_.tokenize=null;break}w=!l&&!w&&y=="\\"}return"string"}return t.tokenize=d,d(n,t)}function ye(e,n){return e.eat("$"),e.eat("{")?n.tokenize=null:n.tokenize=me,null}function me(e,n){return e.eatWhile(/[\w_]/),n.tokenize=ne(n),"variable"}const Le=h({name:"dart",keywords:r("this super static final const abstract class extends external factory implements mixin get native set typedef with enum throw rethrow assert break case continue default in return new deferred async await covariant try catch finally do else for if switch while import library export part of show hide is as extension on yield late required sealed base interface when inline"),blockKeywords:r("try catch finally do else for if switch while"),builtin:r("void bool num int double dynamic var String Null Never"),atoms:r("true false null"),number:/^(?:0x[a-f\d_]+|(?:[\d_]+\.?[\d_]*|\.[\d_]+)(?:e[-+]?[\d_]+)?)/i,hooks:{"@":function(e){return e.eatWhile(/[\w\$_\.]/),"meta"},"'":function(e,n){return R("'",e,n,!1)},'"':function(e,n){return R('"',e,n,!1)},r:function(e,n){var t=e.peek();return t=="'"||t=='"'?R(e.next(),e,n,!0):!1},"}":function(e,n){return he(n)>0?(n.tokenize=ne(n),null):!1},"/":function(e,n){return e.eat("*")?(n.tokenize=S(1),n.tokenize(e,n)):!1},token:function(e,n,t){if(t=="variable"){var l=RegExp("^[_$]*[A-Z][a-zA-Z0-9_$]*$","g");if(l.test(e.current()))return"type"}}}});export{ke as c,De as ceylon,h as clike,ge as cpp,we as csharp,Le as dart,be as java,_e as kotlin,Se as nesC,Te as objectiveC,Ie as objectiveCpp,ve as scala,xe as shader,Ne as squirrel}; diff --git a/frontend/dist/assets/clojure-BMjYHr_A.js b/frontend/dist/assets/clojure-BMjYHr_A.js new file mode 100644 index 0000000..985d06c --- /dev/null +++ b/frontend/dist/assets/clojure-BMjYHr_A.js @@ -0,0 +1 @@ +var d=["false","nil","true"],l=[".","catch","def","do","if","monitor-enter","monitor-exit","new","quote","recur","set!","throw","try","var"],u=["*","*'","*1","*2","*3","*agent*","*allow-unresolved-vars*","*assert*","*clojure-version*","*command-line-args*","*compile-files*","*compile-path*","*compiler-options*","*data-readers*","*default-data-reader-fn*","*e","*err*","*file*","*flush-on-newline*","*fn-loader*","*in*","*math-context*","*ns*","*out*","*print-dup*","*print-length*","*print-level*","*print-meta*","*print-namespace-maps*","*print-readably*","*read-eval*","*reader-resolver*","*source-path*","*suppress-read*","*unchecked-math*","*use-context-classloader*","*verbose-defrecords*","*warn-on-reflection*","+","+'","-","-'","->","->>","->ArrayChunk","->Eduction","->Vec","->VecNode","->VecSeq","-cache-protocol-fn","-reset-methods","..","/","<","<=","=","==",">",">=","EMPTY-NODE","Inst","StackTraceElement->vec","Throwable->map","accessor","aclone","add-classpath","add-watch","agent","agent-error","agent-errors","aget","alength","alias","all-ns","alter","alter-meta!","alter-var-root","amap","ancestors","and","any?","apply","areduce","array-map","as->","aset","aset-boolean","aset-byte","aset-char","aset-double","aset-float","aset-int","aset-long","aset-short","assert","assoc","assoc!","assoc-in","associative?","atom","await","await-for","await1","bases","bean","bigdec","bigint","biginteger","binding","bit-and","bit-and-not","bit-clear","bit-flip","bit-not","bit-or","bit-set","bit-shift-left","bit-shift-right","bit-test","bit-xor","boolean","boolean-array","boolean?","booleans","bound-fn","bound-fn*","bound?","bounded-count","butlast","byte","byte-array","bytes","bytes?","case","cast","cat","char","char-array","char-escape-string","char-name-string","char?","chars","chunk","chunk-append","chunk-buffer","chunk-cons","chunk-first","chunk-next","chunk-rest","chunked-seq?","class","class?","clear-agent-errors","clojure-version","coll?","comment","commute","comp","comparator","compare","compare-and-set!","compile","complement","completing","concat","cond","cond->","cond->>","condp","conj","conj!","cons","constantly","construct-proxy","contains?","count","counted?","create-ns","create-struct","cycle","dec","dec'","decimal?","declare","dedupe","default-data-readers","definline","definterface","defmacro","defmethod","defmulti","defn","defn-","defonce","defprotocol","defrecord","defstruct","deftype","delay","delay?","deliver","denominator","deref","derive","descendants","destructure","disj","disj!","dissoc","dissoc!","distinct","distinct?","doall","dorun","doseq","dosync","dotimes","doto","double","double-array","double?","doubles","drop","drop-last","drop-while","eduction","empty","empty?","ensure","ensure-reduced","enumeration-seq","error-handler","error-mode","eval","even?","every-pred","every?","ex-data","ex-info","extend","extend-protocol","extend-type","extenders","extends?","false?","ffirst","file-seq","filter","filterv","find","find-keyword","find-ns","find-protocol-impl","find-protocol-method","find-var","first","flatten","float","float-array","float?","floats","flush","fn","fn?","fnext","fnil","for","force","format","frequencies","future","future-call","future-cancel","future-cancelled?","future-done?","future?","gen-class","gen-interface","gensym","get","get-in","get-method","get-proxy-class","get-thread-bindings","get-validator","group-by","halt-when","hash","hash-combine","hash-map","hash-ordered-coll","hash-set","hash-unordered-coll","ident?","identical?","identity","if-let","if-not","if-some","ifn?","import","in-ns","inc","inc'","indexed?","init-proxy","inst-ms","inst-ms*","inst?","instance?","int","int-array","int?","integer?","interleave","intern","interpose","into","into-array","ints","io!","isa?","iterate","iterator-seq","juxt","keep","keep-indexed","key","keys","keyword","keyword?","last","lazy-cat","lazy-seq","let","letfn","line-seq","list","list*","list?","load","load-file","load-reader","load-string","loaded-libs","locking","long","long-array","longs","loop","macroexpand","macroexpand-1","make-array","make-hierarchy","map","map-entry?","map-indexed","map?","mapcat","mapv","max","max-key","memfn","memoize","merge","merge-with","meta","method-sig","methods","min","min-key","mix-collection-hash","mod","munge","name","namespace","namespace-munge","nat-int?","neg-int?","neg?","newline","next","nfirst","nil?","nnext","not","not-any?","not-empty","not-every?","not=","ns","ns-aliases","ns-imports","ns-interns","ns-map","ns-name","ns-publics","ns-refers","ns-resolve","ns-unalias","ns-unmap","nth","nthnext","nthrest","num","number?","numerator","object-array","odd?","or","parents","partial","partition","partition-all","partition-by","pcalls","peek","persistent!","pmap","pop","pop!","pop-thread-bindings","pos-int?","pos?","pr","pr-str","prefer-method","prefers","primitives-classnames","print","print-ctor","print-dup","print-method","print-simple","print-str","printf","println","println-str","prn","prn-str","promise","proxy","proxy-call-with-super","proxy-mappings","proxy-name","proxy-super","push-thread-bindings","pvalues","qualified-ident?","qualified-keyword?","qualified-symbol?","quot","rand","rand-int","rand-nth","random-sample","range","ratio?","rational?","rationalize","re-find","re-groups","re-matcher","re-matches","re-pattern","re-seq","read","read-line","read-string","reader-conditional","reader-conditional?","realized?","record?","reduce","reduce-kv","reduced","reduced?","reductions","ref","ref-history-count","ref-max-history","ref-min-history","ref-set","refer","refer-clojure","reify","release-pending-sends","rem","remove","remove-all-methods","remove-method","remove-ns","remove-watch","repeat","repeatedly","replace","replicate","require","reset!","reset-meta!","reset-vals!","resolve","rest","restart-agent","resultset-seq","reverse","reversible?","rseq","rsubseq","run!","satisfies?","second","select-keys","send","send-off","send-via","seq","seq?","seqable?","seque","sequence","sequential?","set","set-agent-send-executor!","set-agent-send-off-executor!","set-error-handler!","set-error-mode!","set-validator!","set?","short","short-array","shorts","shuffle","shutdown-agents","simple-ident?","simple-keyword?","simple-symbol?","slurp","some","some->","some->>","some-fn","some?","sort","sort-by","sorted-map","sorted-map-by","sorted-set","sorted-set-by","sorted?","special-symbol?","spit","split-at","split-with","str","string?","struct","struct-map","subs","subseq","subvec","supers","swap!","swap-vals!","symbol","symbol?","sync","tagged-literal","tagged-literal?","take","take-last","take-nth","take-while","test","the-ns","thread-bound?","time","to-array","to-array-2d","trampoline","transduce","transient","tree-seq","true?","type","unchecked-add","unchecked-add-int","unchecked-byte","unchecked-char","unchecked-dec","unchecked-dec-int","unchecked-divide-int","unchecked-double","unchecked-float","unchecked-inc","unchecked-inc-int","unchecked-int","unchecked-long","unchecked-multiply","unchecked-multiply-int","unchecked-negate","unchecked-negate-int","unchecked-remainder-int","unchecked-short","unchecked-subtract","unchecked-subtract-int","underive","unquote","unquote-splicing","unreduced","unsigned-bit-shift-right","update","update-in","update-proxy","uri?","use","uuid?","val","vals","var-get","var-set","var?","vary-meta","vec","vector","vector-of","vector?","volatile!","volatile?","vreset!","vswap!","when","when-first","when-let","when-not","when-some","while","with-bindings","with-bindings*","with-in-str","with-loading-context","with-local-vars","with-meta","with-open","with-out-str","with-precision","with-redefs","with-redefs-fn","xml-seq","zero?","zipmap"],p=["->","->>","as->","binding","bound-fn","case","catch","comment","cond","cond->","cond->>","condp","def","definterface","defmethod","defn","defmacro","defprotocol","defrecord","defstruct","deftype","do","doseq","dotimes","doto","extend","extend-protocol","extend-type","fn","for","future","if","if-let","if-not","if-some","let","letfn","locking","loop","ns","proxy","reify","struct-map","some->","some->>","try","when","when-first","when-let","when-not","when-some","while","with-bindings","with-bindings*","with-in-str","with-loading-context","with-local-vars","with-meta","with-open","with-out-str","with-precision","with-redefs","with-redefs-fn"],f=o(d),m=o(l),h=o(u),y=o(p),b=/^(?:[\\\[\]\s"(),;@^`{}~]|$)/,v=/^(?:[+\-]?\d+(?:(?:N|(?:[eE][+\-]?\d+))|(?:\.?\d*(?:M|(?:[eE][+\-]?\d+))?)|\/\d+|[xX][0-9a-fA-F]+|r[0-9a-zA-Z]+)?(?=[\\\[\]\s"#'(),;@^`{}~]|$))/,g=/^(?:\\(?:backspace|formfeed|newline|return|space|tab|o[0-7]{3}|u[0-9A-Fa-f]{4}|x[0-9A-Fa-f]{4}|.)?(?=[\\\[\]\s"(),;@^`{}~]|$))/,k=/^(?:(?:[^\\\/\[\]\d\s"#'(),;@^`{}~.][^\\\[\]\s"(),;@^`{}~.\/]*(?:\.[^\\\/\[\]\d\s"#'(),;@^`{}~.][^\\\[\]\s"(),;@^`{}~.\/]*)*\/)?(?:\/|[^\\\/\[\]\d\s"#'(),;@^`{}~][^\\\[\]\s"(),;@^`{}~]*)*(?=[\\\[\]\s"(),;@^`{}~]|$))/;function s(t,e){if(t.eatSpace()||t.eat(","))return["space",null];if(t.match(v))return[null,"number"];if(t.match(g))return[null,"string.special"];if(t.eat(/^"/))return(e.tokenize=x)(t,e);if(t.eat(/^[(\[{]/))return["open","bracket"];if(t.eat(/^[)\]}]/))return["close","bracket"];if(t.eat(/^;/))return t.skipToEnd(),["space","comment"];if(t.eat(/^[#'@^`~]/))return[null,"meta"];var r=t.match(k),n=r&&r[0];return n?n==="comment"&&e.lastToken==="("?(e.tokenize=w)(t,e):a(n,f)||n.charAt(0)===":"?["symbol","atom"]:a(n,m)||a(n,h)?["symbol","keyword"]:e.lastToken==="("?["symbol","builtin"]:["symbol","variable"]:(t.next(),t.eatWhile(function(i){return!a(i,b)}),[null,"error"])}function x(t,e){for(var r=!1,n;n=t.next();){if(n==='"'&&!r){e.tokenize=s;break}r=!r&&n==="\\"}return[null,"string"]}function w(t,e){for(var r=1,n;n=t.next();)if(n===")"&&r--,n==="("&&r++,r===0){t.backUp(1),e.tokenize=s;break}return["space","comment"]}function o(t){for(var e={},r=0;r >= "),N={digit:/\d/,digit_or_colon:/[\d:]/,hex:/[0-9a-f]/i,sign:/[+-]/,exponent:/e/i,symbol:/[\w*+\-]/};function F(E,T){return E==="0"&&T.eat(/x/i)?(T.eatWhile(N.hex),!0):((E=="+"||E=="-")&&N.digit.test(T.peek())&&(T.eat(N.sign),E=T.next()),N.digit.test(E)?(T.eat(E),T.eatWhile(N.digit),T.peek()=="."&&(T.eat("."),T.eatWhile(N.digit)),T.eat(N.exponent)&&(T.eat(N.sign),T.eatWhile(N.digit)),!0):!1)}const Y={name:"cobol",startState:function(){return{indentStack:null,indentation:0,mode:!1}},token:function(E,T){if(T.indentStack==null&&E.sol()&&(T.indentation=6),E.eatSpace())return null;var I=null;switch(T.mode){case"string":for(var R=!1;(R=E.next())!=null;)if((R=='"'||R=="'")&&!E.match(/['"]/,!1)){T.mode=!1;break}I=C;break;default:var O=E.next(),A=E.column();if(A>=0&&A<=5)I=B;else if(A>=72&&A<=79)E.skipToEnd(),I=i;else if(O=="*"&&A==6)E.skipToEnd(),I=e;else if(O=='"'||O=="'")T.mode="string",I=C;else if(O=="'"&&!N.digit_or_colon.test(E.peek()))I=D;else if(O==".")I=t;else if(F(O,E))I=G;else{if(E.current().match(N.symbol))for(;A<71&&E.eat(N.symbol)!==void 0;)A++;U&&U.propertyIsEnumerable(E.current().toUpperCase())?I=n:P&&P.propertyIsEnumerable(E.current().toUpperCase())?I=M:S&&S.propertyIsEnumerable(E.current().toUpperCase())?I=D:I=null}}return I},indent:function(E){return E.indentStack==null?E.indentation:E.indentStack.indent}};export{Y as cobol}; diff --git a/frontend/dist/assets/coffeescript-S37ZYGWr.js b/frontend/dist/assets/coffeescript-S37ZYGWr.js new file mode 100644 index 0000000..ca71cbf --- /dev/null +++ b/frontend/dist/assets/coffeescript-S37ZYGWr.js @@ -0,0 +1 @@ +var k="error";function p(e){return new RegExp("^(("+e.join(")|(")+"))\\b")}var g=/^(?:->|=>|\+[+=]?|-[\-=]?|\*[\*=]?|\/[\/=]?|[=!]=|<[><]?=?|>>?=?|%=?|&=?|\|=?|\^=?|\~|!|\?|(or|and|\|\||&&|\?)=)/,y=/^(?:[()\[\]{},:`=;]|\.\.?\.?)/,h=/^[_A-Za-z$][_A-Za-z$0-9]*/,w=/^@[_A-Za-z$][_A-Za-z$0-9]*/,z=p(["and","or","not","is","isnt","in","instanceof","typeof"]),l=["for","while","loop","if","unless","else","switch","try","catch","finally","class"],a=["break","by","continue","debugger","delete","do","in","of","new","return","then","this","@","throw","when","until","extends"],x=p(l.concat(a));l=p(l);var b=/^('{3}|\"{3}|['\"])/,A=/^(\/{3}|\/)/,S=["Infinity","NaN","undefined","null","true","false","on","off","yes","no"],O=p(S);function u(e,n){if(e.sol()){n.scope.align===null&&(n.scope.align=!1);var i=n.scope.offset;if(e.eatSpace()){var f=e.indentation();return f>i&&n.scope.type=="coffee"?"indent":f0&&v(e,n)}if(e.eatSpace())return null;var r=e.peek();if(e.match("####"))return e.skipToEnd(),"comment";if(e.match("###"))return n.tokenize=R,n.tokenize(e,n);if(r==="#")return e.skipToEnd(),"comment";if(e.match(/^-?[0-9\.]/,!1)){var c=!1;if(e.match(/^-?\d*\.\d+(e[\+\-]?\d+)?/i)&&(c=!0),e.match(/^-?\d+\.\d*/)&&(c=!0),e.match(/^-?\.\d+/)&&(c=!0),c)return e.peek()=="."&&e.backUp(1),"number";var o=!1;if(e.match(/^-?0x[0-9a-f]+/i)&&(o=!0),e.match(/^-?[1-9]\d*(e[\+\-]?\d+)?/)&&(o=!0),e.match(/^-?0(?![\dx])/i)&&(o=!0),o)return"number"}if(e.match(b))return n.tokenize=t(e.current(),!1,"string"),n.tokenize(e,n);if(e.match(A)){if(e.current()!="/"||e.match(/^.*\//,!1))return n.tokenize=t(e.current(),!0,"string.special"),n.tokenize(e,n);e.backUp(1)}return e.match(g)||e.match(z)?"operator":e.match(y)?"punctuation":e.match(O)?"atom":e.match(w)||n.prop&&e.match(h)?"property":e.match(x)?"keyword":e.match(h)?"variable":(e.next(),k)}function t(e,n,i){return function(f,r){for(;!f.eol();)if(f.eatWhile(/[^'"\/\\]/),f.eat("\\")){if(f.next(),n&&f.eol())return i}else{if(f.match(e))return r.tokenize=u,i;f.eat(/['"\/]/)}return n&&(r.tokenize=u),i}}function R(e,n){for(;!e.eol();){if(e.eatWhile(/[^#]/),e.match("###")){n.tokenize=u;break}e.eatWhile("#")}return"comment"}function d(e,n,i="coffee"){for(var f=0,r=!1,c=null,o=n.scope;o;o=o.prev)if(o.type==="coffee"||o.type=="}"){f=o.offset+e.indentUnit;break}i!=="coffee"?(r=null,c=e.column()+e.current().length):n.scope.align&&(n.scope.align=!1),n.scope={offset:f,type:i,prev:n.scope,align:r,alignOffset:c}}function v(e,n){if(n.scope.prev)if(n.scope.type==="coffee"){for(var i=e.indentation(),f=!1,r=n.scope;r;r=r.prev)if(i===r.offset){f=!0;break}if(!f)return!0;for(;n.scope.prev&&n.scope.offset!==i;)n.scope=n.scope.prev;return!1}else return n.scope=n.scope.prev,!1}function E(e,n){var i=n.tokenize(e,n),f=e.current();f==="return"&&(n.dedent=!0),((f==="->"||f==="=>")&&e.eol()||i==="indent")&&d(e,n);var r="[({".indexOf(f);if(r!==-1&&d(e,n,"])}".slice(r,r+1)),l.exec(f)&&d(e,n),f=="then"&&v(e,n),i==="dedent"&&v(e,n))return k;if(r="])}".indexOf(f),r!==-1){for(;n.scope.type=="coffee"&&n.scope.prev;)n.scope=n.scope.prev;n.scope.type==f&&(n.scope=n.scope.prev)}return n.dedent&&e.eol()&&(n.scope.type=="coffee"&&n.scope.prev&&(n.scope=n.scope.prev),n.dedent=!1),i=="indent"||i=="dedent"?null:i}const Z={name:"coffeescript",startState:function(){return{tokenize:u,scope:{offset:0,type:"coffee",prev:null,align:!1},prop:!1,dedent:0}},token:function(e,n){var i=n.scope.align===null&&n.scope;i&&e.sol()&&(i.align=!1);var f=E(e,n);return f&&f!="comment"&&(i&&(i.align=!0),n.prop=f=="punctuation"&&e.current()=="."),f},indent:function(e,n){if(e.tokenize!=u)return 0;var i=e.scope,f=n&&"])}".indexOf(n.charAt(0))>-1;if(f)for(;i.type=="coffee"&&i.prev;)i=i.prev;var r=f&&i.type===n.charAt(0);return i.align?i.alignOffset-(r?1:0):(r?i.prev:i).offset},languageData:{commentTokens:{line:"#"}}};export{Z as coffeeScript}; diff --git a/frontend/dist/assets/commonlisp-DBKNyK5s.js b/frontend/dist/assets/commonlisp-DBKNyK5s.js new file mode 100644 index 0000000..0273ed2 --- /dev/null +++ b/frontend/dist/assets/commonlisp-DBKNyK5s.js @@ -0,0 +1 @@ +var u=/^(block|let*|return-from|catch|load-time-value|setq|eval-when|locally|symbol-macrolet|flet|macrolet|tagbody|function|multiple-value-call|the|go|multiple-value-prog1|throw|if|progn|unwind-protect|labels|progv|let|quote)$/,c=/^with|^def|^do|^prog|case$|^cond$|bind$|when$|unless$/,f=/^(?:[+\-]?(?:\d+|\d*\.\d+)(?:[efd][+\-]?\d+)?|[+\-]?\d+(?:\/[+\-]?\d+)?|#b[+\-]?[01]+|#o[+\-]?[0-7]+|#x[+\-]?[\da-f]+)/,d=/[^\s'`,@()\[\]";]/,l;function i(e){for(var n;n=e.next();)if(n=="\\")e.next();else if(!d.test(n)){e.backUp(1);break}return e.current()}function o(e,n){if(e.eatSpace())return l="ws",null;if(e.match(f))return"number";var t=e.next();if(t=="\\"&&(t=e.next()),t=='"')return(n.tokenize=p)(e,n);if(t=="(")return l="open","bracket";if(t==")")return l="close","bracket";if(t==";")return e.skipToEnd(),l="ws","comment";if(/['`,@]/.test(t))return null;if(t=="|")return e.skipTo("|")?(e.next(),"variableName"):(e.skipToEnd(),"error");if(t=="#"){var t=e.next();return t=="("?(l="open","bracket"):/[+\-=\.']/.test(t)||/\d/.test(t)&&e.match(/^\d*#/)?null:t=="|"?(n.tokenize=x)(e,n):t==":"?(i(e),"meta"):t=="\\"?(e.next(),i(e),"string.special"):"error"}else{var r=i(e);return r=="."?null:(l="symbol",r=="nil"||r=="t"||r.charAt(0)==":"?"atom":n.lastType=="open"&&(u.test(r)||c.test(r))?"keyword":r.charAt(0)=="&"?"variableName.special":"variableName")}}function p(e,n){for(var t=!1,r;r=e.next();){if(r=='"'&&!t){n.tokenize=o;break}t=!t&&r=="\\"}return"string"}function x(e,n){for(var t,r;t=e.next();){if(t=="#"&&r=="|"){n.tokenize=o;break}r=t}return l="ws","comment"}const s={name:"commonlisp",startState:function(){return{ctx:{prev:null,start:0,indentTo:0},lastType:null,tokenize:o}},token:function(e,n){e.sol()&&typeof n.ctx.indentTo!="number"&&(n.ctx.indentTo=n.ctx.start+1),l=null;var t=n.tokenize(e,n);return l!="ws"&&(n.ctx.indentTo==null?l=="symbol"&&c.test(e.current())?n.ctx.indentTo=n.ctx.start+e.indentUnit:n.ctx.indentTo="next":n.ctx.indentTo=="next"&&(n.ctx.indentTo=e.column()),n.lastType=l),l=="open"?n.ctx={prev:n.ctx,start:e.column(),indentTo:null}:l=="close"&&(n.ctx=n.ctx.prev||n.ctx),t},indent:function(e){var n=e.ctx.indentTo;return typeof n=="number"?n:e.ctx.start+1},languageData:{commentTokens:{line:";;",block:{open:"#|",close:"|#"}},closeBrackets:{brackets:["(","[","{",'"']}}};export{s as commonLisp}; diff --git a/frontend/dist/assets/compare-CZ4TIoIW.js b/frontend/dist/assets/compare-CZ4TIoIW.js new file mode 100644 index 0000000..669608d --- /dev/null +++ b/frontend/dist/assets/compare-CZ4TIoIW.js @@ -0,0 +1 @@ +import{aF as n,aG as t,aI as l}from"./index-BKKvzUDD.js";const p=()=>n("/model-compare"),i=e=>n(`/model-compare/${e}`),u=e=>l(`/model-compare/${e}`),h=e=>t("/model-compare/stop-by-pid",{pid:e}),g=e=>t(`/model-compare/${e}/load`),C=e=>t(`/model-compare/${e}/unload`),y=async e=>{const a=await t("/model-compare/stream-chat",e);return{ok:!0,body:{getReader:()=>{const o=(a==null?void 0:a.response)||"",r=new TextEncoder,s=[o.slice(0,o.length/3),o.slice(o.length/3,2*o.length/3),o.slice(2*o.length/3)];let c=0;return{read:async()=>c>=s.length?{done:!0,value:void 0}:{done:!1,value:r.encode(s[c++])}}}}}},v=e=>t("/model-compare/chat-with-port",e);export{i as a,y as b,v as c,u as d,p as g,g as l,h as s,C as u}; diff --git a/frontend/dist/assets/createSeriesDataSimply-DVjwvHot.js b/frontend/dist/assets/createSeriesDataSimply-DVjwvHot.js new file mode 100644 index 0000000..4d64767 --- /dev/null +++ b/frontend/dist/assets/createSeriesDataSimply-DVjwvHot.js @@ -0,0 +1 @@ +import{_ as M,ah as y,T as A,a7 as D,aS as I,aT as w}from"./install-CZjWaVQv.js";var T=(function(){function s(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=Math.PI*2,this.clockwise=!0}return s})(),x=(function(s){M(r,s);function r(t){var a=s.call(this,t)||this;return a.type="sausage",a}return r.prototype.getDefaultShape=function(){return new T},r.prototype.buildPath=function(t,a){var c=a.cx,e=a.cy,o=Math.max(a.r0||0,0),u=Math.max(a.r,0),l=(u-o)*.5,v=o+l,n=a.startAngle,i=a.endAngle,h=a.clockwise,S=Math.PI*2,d=h?i-n]{2})/,z=/^(?:[=!]~|===|<=>|[<>=!]=?|[|&]{2}|~)/,g=/^(?:\[\][?=]?)/,b=/^(?:\.(?:\.{2})?|->|[?:])/,p=/^[a-z_\u009F-\uFFFF][a-zA-Z0-9_\u009F-\uFFFF]*/,d=/^[A-Z_\u009F-\uFFFF][a-zA-Z0-9_\u009F-\uFFFF]*/,E=l(["abstract","alias","as","asm","begin","break","case","class","def","do","else","elsif","end","ensure","enum","extend","for","fun","if","include","instance_sizeof","lib","macro","module","next","of","out","pointerof","private","protected","rescue","return","require","select","sizeof","struct","super","then","type","typeof","uninitialized","union","unless","until","when","while","with","yield","__DIR__","__END_LINE__","__FILE__","__LINE__"]),S=l(["true","false","nil","self"]),T=["def","fun","macro","class","module","struct","lib","enum","union","do","for"],A=l(T),s=["if","unless","case","while","until","begin","then"],O=l(s),x=["end","else","elsif","rescue","ensure"],K=l(x),I=["\\)","\\}","\\]"],D=new RegExp("^(?:"+I.join("|")+")$"),w={def:y,fun:y,macro:N,class:c,module:c,struct:c,lib:c,enum:c,union:c},k={"[":"]","{":"}","(":")","<":">"};function _(n,e){if(n.eatSpace())return null;if(e.lastToken!="\\"&&n.match("{%",!1))return o(f("%","%"),n,e);if(e.lastToken!="\\"&&n.match("{{",!1))return o(f("{","}"),n,e);if(n.peek()=="#")return n.skipToEnd(),"comment";var r;if(n.match(p))return n.eat(/[?!]/),r=n.current(),n.eat(":")?"atom":e.lastToken=="."?"property":E.test(r)?(A.test(r)?!(r=="fun"&&e.blocks.indexOf("lib")>=0)&&!(r=="def"&&e.lastToken=="abstract")&&(e.blocks.push(r),e.currentIndent+=1):(e.lastStyle=="operator"||!e.lastStyle)&&O.test(r)?(e.blocks.push(r),e.currentIndent+=1):r=="end"&&(e.blocks.pop(),e.currentIndent-=1),w.hasOwnProperty(r)&&e.tokenize.push(w[r]),"keyword"):S.test(r)?"atom":"variable";if(n.eat("@"))return n.peek()=="["?o(h("[","]","meta"),n,e):(n.eat("@"),n.match(p)||n.match(d),"propertyName");if(n.match(d))return"tag";if(n.eat(":"))return n.eat('"')?o(F('"',"atom",!1),n,e):n.match(p)||n.match(d)||n.match(v)||n.match(z)||n.match(g)?"atom":(n.eat(":"),"operator");if(n.eat('"'))return o(F('"',"string",!0),n,e);if(n.peek()=="%"){var t="string",u=!0,i;if(n.match("%r"))t="string.special",i=n.next();else if(n.match("%w"))u=!1,i=n.next();else if(n.match("%q"))u=!1,i=n.next();else if(i=n.match(/^%([^\w\s=])/))i=i[1];else{if(n.match(/^%[a-zA-Z_\u009F-\uFFFF][\w\u009F-\uFFFF]*/))return"meta";if(n.eat("%"))return"operator"}return k.hasOwnProperty(i)&&(i=k[i]),o(F(i,t,u),n,e)}return(r=n.match(/^<<-('?)([A-Z]\w*)\1/))?o(Z(r[2],!r[1]),n,e):n.eat("'")?(n.match(/^(?:[^']|\\(?:[befnrtv0'"]|[0-7]{3}|u(?:[0-9a-fA-F]{4}|\{[0-9a-fA-F]{1,6}\})))/),n.eat("'"),"atom"):n.eat("0")?(n.eat("x")?n.match(/^[0-9a-fA-F_]+/):n.eat("o")?n.match(/^[0-7_]+/):n.eat("b")&&n.match(/^[01_]+/),"number"):n.eat(/^\d/)?(n.match(/^[\d_]*(?:\.[\d_]+)?(?:[eE][+-]?\d+)?/),"number"):n.match(v)?(n.eat("="),"operator"):n.match(z)||n.match(b)?"operator":(r=n.match(/[({[]/,!1))?(r=r[0],o(h(r,k[r],null),n,e)):n.eat("\\")?(n.next(),"meta"):(n.next(),null)}function h(n,e,r,t){return function(u,i){if(!t&&u.match(n))return i.tokenize[i.tokenize.length-1]=h(n,e,r,!0),i.currentIndent+=1,r;var a=_(u,i);return u.current()===e&&(i.tokenize.pop(),i.currentIndent-=1,a=r),a}}function f(n,e,r){return function(t,u){return!r&&t.match("{"+n)?(u.currentIndent+=1,u.tokenize[u.tokenize.length-1]=f(n,e,!0),"meta"):t.match(e+"}")?(u.currentIndent-=1,u.tokenize.pop(),"meta"):_(t,u)}}function N(n,e){if(n.eatSpace())return null;var r;if(r=n.match(p)){if(r=="def")return"keyword";n.eat(/[?!]/)}return e.tokenize.pop(),"def"}function y(n,e){return n.eatSpace()?null:(n.match(p)?n.eat(/[!?]/):n.match(v)||n.match(z)||n.match(g),e.tokenize.pop(),"def")}function c(n,e){return n.eatSpace()?null:(n.match(d),e.tokenize.pop(),"def")}function F(n,e,r){return function(t,u){for(var i=!1;t.peek();)if(i)t.next(),i=!1;else{if(t.match("{%",!1))return u.tokenize.push(f("%","%")),e;if(t.match("{{",!1))return u.tokenize.push(f("{","}")),e;if(r&&t.match("#{",!1))return u.tokenize.push(h("#{","}","meta")),e;var a=t.next();if(a==n)return u.tokenize.pop(),e;i=r&&a=="\\"}return e}}function Z(n,e){return function(r,t){if(r.sol()&&(r.eatSpace(),r.match(n)))return t.tokenize.pop(),"string";for(var u=!1;r.peek();)if(u)r.next(),u=!1;else{if(r.match("{%",!1))return t.tokenize.push(f("%","%")),"string";if(r.match("{{",!1))return t.tokenize.push(f("{","}")),"string";if(e&&r.match("#{",!1))return t.tokenize.push(h("#{","}","meta")),"string";u=r.next()=="\\"&&e}return"string"}}const P={name:"crystal",startState:function(){return{tokenize:[_],currentIndent:0,lastToken:null,lastStyle:null,blocks:[]}},token:function(n,e){var r=e.tokenize[e.tokenize.length-1](n,e),t=n.current();return r&&r!="comment"&&(e.lastToken=t,e.lastStyle=r),r},indent:function(n,e,r){return e=e.replace(/^\s*(?:\{%)?\s*|\s*(?:%\})?\s*$/g,""),K.test(e)||D.test(e)?r.unit*(n.currentIndent-1):r.unit*n.currentIndent},languageData:{indentOnInput:l(I.concat(x),!0),commentTokens:{line:"#"}}};export{P as crystal}; diff --git a/frontend/dist/assets/css-BnMrqG3P.js b/frontend/dist/assets/css-BnMrqG3P.js new file mode 100644 index 0000000..0a0eede --- /dev/null +++ b/frontend/dist/assets/css-BnMrqG3P.js @@ -0,0 +1 @@ +function y(i){i={...ae,...i};var l=i.inline,m=i.tokenHooks,b=i.documentTypes||{},G=i.mediaTypes||{},J=i.mediaFeatures||{},Q=i.mediaValueKeywords||{},O=i.propertyKeywords||{},F=i.nonStandardPropertyKeywords||{},R=i.fontProperties||{},ee=i.counterDescriptors||{},N=i.colorKeywords||{},V=i.valueKeywords||{},g=i.allowNested,re=i.lineComment,oe=i.supportsAtComponent===!0,W=i.highlightNonStandardPropertyKeywords!==!1,w,n;function c(e,o){return w=o,e}function ie(e,o){var r=e.next();if(m[r]){var t=m[r](e,o);if(t!==!1)return t}if(r=="@")return e.eatWhile(/[\w\\\-]/),c("def",e.current());if(r=="="||(r=="~"||r=="|")&&e.eat("="))return c(null,"compare");if(r=='"'||r=="'")return o.tokenize=$(r),o.tokenize(e,o);if(r=="#")return e.eatWhile(/[\w\\\-]/),c("atom","hash");if(r=="!")return e.match(/^\s*\w*/),c("keyword","important");if(/\d/.test(r)||r=="."&&e.eat(/\d/))return e.eatWhile(/[\w.%]/),c("number","unit");if(r==="-"){if(/[\d.]/.test(e.peek()))return e.eatWhile(/[\w.%]/),c("number","unit");if(e.match(/^-[\w\\\-]*/))return e.eatWhile(/[\w\\\-]/),e.match(/^\s*:/,!1)?c("def","variable-definition"):c("variableName","variable");if(e.match(/^\w+-/))return c("meta","meta")}else return/[,+>*\/]/.test(r)?c(null,"select-op"):r=="."&&e.match(/^-?[_a-z][_a-z0-9-]*/i)?c("qualifier","qualifier"):/[:;{}\[\]\(\)]/.test(r)?c(null,r):e.match(/^[\w-.]+(?=\()/)?(/^(url(-prefix)?|domain|regexp)$/i.test(e.current())&&(o.tokenize=te),c("variableName.function","variable")):/[\w\\\-]/.test(r)?(e.eatWhile(/[\w\\\-]/),c("property","word")):c(null,null)}function $(e){return function(o,r){for(var t=!1,d;(d=o.next())!=null;){if(d==e&&!t){e==")"&&o.backUp(1);break}t=!t&&d=="\\"}return(d==e||!t&&e!=")")&&(r.tokenize=null),c("string","string")}}function te(e,o){return e.next(),e.match(/^\s*[\"\')]/,!1)?o.tokenize=null:o.tokenize=$(")"),c(null,"(")}function D(e,o,r){this.type=e,this.indent=o,this.prev=r}function s(e,o,r,t){return e.context=new D(r,o.indentation()+(t===!1?0:o.indentUnit),e.context),r}function u(e){return e.context.prev&&(e.context=e.context.prev),e.context.type}function k(e,o,r){return a[r.context.type](e,o,r)}function h(e,o,r,t){for(var d=t||1;d>0;d--)r.context=r.context.prev;return k(e,o,r)}function L(e){var o=e.current().toLowerCase();V.hasOwnProperty(o)?n="atom":N.hasOwnProperty(o)?n="keyword":n="variable"}var a={};return a.top=function(e,o,r){if(e=="{")return s(r,o,"block");if(e=="}"&&r.context.prev)return u(r);if(oe&&/@component/i.test(e))return s(r,o,"atComponentBlock");if(/^@(-moz-)?document$/i.test(e))return s(r,o,"documentTypes");if(/^@(media|supports|(-moz-)?document|import)$/i.test(e))return s(r,o,"atBlock");if(/^@(font-face|counter-style)/i.test(e))return r.stateArg=e,"restricted_atBlock_before";if(/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(e))return"keyframes";if(e&&e.charAt(0)=="@")return s(r,o,"at");if(e=="hash")n="builtin";else if(e=="word")n="tag";else{if(e=="variable-definition")return"maybeprop";if(e=="interpolation")return s(r,o,"interpolation");if(e==":")return"pseudo";if(g&&e=="(")return s(r,o,"parens")}return r.context.type},a.block=function(e,o,r){if(e=="word"){var t=o.current().toLowerCase();return O.hasOwnProperty(t)?(n="property","maybeprop"):F.hasOwnProperty(t)?(n=W?"string.special":"property","maybeprop"):g?(n=o.match(/^\s*:(?:\s|$)/,!1)?"property":"tag","block"):(n="error","maybeprop")}else return e=="meta"?"block":!g&&(e=="hash"||e=="qualifier")?(n="error","block"):a.top(e,o,r)},a.maybeprop=function(e,o,r){return e==":"?s(r,o,"prop"):k(e,o,r)},a.prop=function(e,o,r){if(e==";")return u(r);if(e=="{"&&g)return s(r,o,"propBlock");if(e=="}"||e=="{")return h(e,o,r);if(e=="(")return s(r,o,"parens");if(e=="hash"&&!/^#([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(o.current()))n="error";else if(e=="word")L(o);else if(e=="interpolation")return s(r,o,"interpolation");return"prop"},a.propBlock=function(e,o,r){return e=="}"?u(r):e=="word"?(n="property","maybeprop"):r.context.type},a.parens=function(e,o,r){return e=="{"||e=="}"?h(e,o,r):e==")"?u(r):e=="("?s(r,o,"parens"):e=="interpolation"?s(r,o,"interpolation"):(e=="word"&&L(o),"parens")},a.pseudo=function(e,o,r){return e=="meta"?"pseudo":e=="word"?(n="variableName.constant",r.context.type):k(e,o,r)},a.documentTypes=function(e,o,r){return e=="word"&&b.hasOwnProperty(o.current())?(n="tag",r.context.type):a.atBlock(e,o,r)},a.atBlock=function(e,o,r){if(e=="(")return s(r,o,"atBlock_parens");if(e=="}"||e==";")return h(e,o,r);if(e=="{")return u(r)&&s(r,o,g?"block":"top");if(e=="interpolation")return s(r,o,"interpolation");if(e=="word"){var t=o.current().toLowerCase();t=="only"||t=="not"||t=="and"||t=="or"?n="keyword":G.hasOwnProperty(t)?n="attribute":J.hasOwnProperty(t)?n="property":Q.hasOwnProperty(t)?n="keyword":O.hasOwnProperty(t)?n="property":F.hasOwnProperty(t)?n=W?"string.special":"property":V.hasOwnProperty(t)?n="atom":N.hasOwnProperty(t)?n="keyword":n="error"}return r.context.type},a.atComponentBlock=function(e,o,r){return e=="}"?h(e,o,r):e=="{"?u(r)&&s(r,o,g?"block":"top",!1):(e=="word"&&(n="error"),r.context.type)},a.atBlock_parens=function(e,o,r){return e==")"?u(r):e=="{"||e=="}"?h(e,o,r,2):a.atBlock(e,o,r)},a.restricted_atBlock_before=function(e,o,r){return e=="{"?s(r,o,"restricted_atBlock"):e=="word"&&r.stateArg=="@counter-style"?(n="variable","restricted_atBlock_before"):k(e,o,r)},a.restricted_atBlock=function(e,o,r){return e=="}"?(r.stateArg=null,u(r)):e=="word"?(r.stateArg=="@font-face"&&!R.hasOwnProperty(o.current().toLowerCase())||r.stateArg=="@counter-style"&&!ee.hasOwnProperty(o.current().toLowerCase())?n="error":n="property","maybeprop"):"restricted_atBlock"},a.keyframes=function(e,o,r){return e=="word"?(n="variable","keyframes"):e=="{"?s(r,o,"top"):k(e,o,r)},a.at=function(e,o,r){return e==";"?u(r):e=="{"||e=="}"?h(e,o,r):(e=="word"?n="tag":e=="hash"&&(n="builtin"),"at")},a.interpolation=function(e,o,r){return e=="}"?u(r):e=="{"||e==";"?h(e,o,r):(e=="word"?n="variable":e!="variable"&&e!="("&&e!=")"&&(n="error"),"interpolation")},{name:i.name,startState:function(){return{tokenize:null,state:l?"block":"top",stateArg:null,context:new D(l?"block":"top",0,null)}},token:function(e,o){if(!o.tokenize&&e.eatSpace())return null;var r=(o.tokenize||ie)(e,o);return r&&typeof r=="object"&&(w=r[1],r=r[0]),n=r,w!="comment"&&(o.state=a[o.state](w,e,o)),n},indent:function(e,o,r){var t=e.context,d=o&&o.charAt(0),q=t.indent;return t.type=="prop"&&(d=="}"||d==")")&&(t=t.prev),t.prev&&(d=="}"&&(t.type=="block"||t.type=="top"||t.type=="interpolation"||t.type=="restricted_atBlock")?(t=t.prev,q=t.indent):(d==")"&&(t.type=="parens"||t.type=="atBlock_parens")||d=="{"&&(t.type=="at"||t.type=="atBlock"))&&(q=Math.max(0,t.indent-r.unit))),q},languageData:{indentOnInput:/^\s*\}$/,commentTokens:{line:re,block:{open:"/*",close:"*/"}},autocomplete:M}}}function p(i){for(var l={},m=0;m=&|~%^]/;const g={name:"cypher",startState:function(){return{tokenize:p,context:null,indent:0,col:0}},token:function(n,e){if(n.sol()&&(e.context&&e.context.align==null&&(e.context.align=!1),e.indent=n.indentation()),n.eatSpace())return null;var t=e.tokenize(n,e);if(t!=="comment"&&e.context&&e.context.align==null&&e.context.type!=="pattern"&&(e.context.align=!0),i==="(")o(e,")",n.column());else if(i==="[")o(e,"]",n.column());else if(i==="{")o(e,"}",n.column());else if(/[\]\}\)]/.test(i)){for(;e.context&&e.context.type==="pattern";)c(e);e.context&&i===e.context.type&&c(e)}else i==="."&&e.context&&e.context.type==="pattern"?c(e):/atom|string|variable/.test(t)&&e.context&&(/[\}\]]/.test(e.context.type)?o(e,"pattern",n.column()):e.context.type==="pattern"&&!e.context.align&&(e.context.align=!0,e.context.col=n.column()));return t},indent:function(n,e,t){var a=e&&e.charAt(0),r=n.context;if(/[\]\}]/.test(a))for(;r&&r.type==="pattern";)r=r.prev;var s=r&&a===r.type;return r?r.type==="keywords"?null:r.align?r.col+(s?0:1):r.indent+(s?0:t.unit):0}};export{g as cypher}; diff --git a/frontend/dist/assets/d-pRatUO7H.js b/frontend/dist/assets/d-pRatUO7H.js new file mode 100644 index 0000000..795e106 --- /dev/null +++ b/frontend/dist/assets/d-pRatUO7H.js @@ -0,0 +1 @@ +function c(e){for(var n={},t=e.split(" "),i=0;i!?|\/]/,o;function m(e,n){var t=e.next();if(p[t]){var i=p[t](e,n);if(i!==!1)return i}if(t=='"'||t=="'"||t=="`")return n.tokenize=z(t),n.tokenize(e,n);if(/[\[\]{}\(\),;\:\.]/.test(t))return o=t,null;if(/\d/.test(t))return e.eatWhile(/[\w\.]/),"number";if(t=="/"){if(e.eat("+"))return n.tokenize=k,k(e,n);if(e.eat("*"))return n.tokenize=y,y(e,n);if(e.eat("/"))return e.skipToEnd(),"comment"}if(h.test(t))return e.eatWhile(h),"operator";e.eatWhile(/[\w\$_\xa1-\uffff]/);var r=e.current();return v.propertyIsEnumerable(r)?(d.propertyIsEnumerable(r)&&(o="newstatement"),"keyword"):x.propertyIsEnumerable(r)?(d.propertyIsEnumerable(r)&&(o="newstatement"),"builtin"):g.propertyIsEnumerable(r)?"atom":"variable"}function z(e){return function(n,t){for(var i=!1,r,u=!1;(r=n.next())!=null;){if(r==e&&!i){u=!0;break}i=!i&&r=="\\"}return(u||!(i||_))&&(t.tokenize=null),"string"}}function y(e,n){for(var t=!1,i;i=e.next();){if(i=="/"&&t){n.tokenize=null;break}t=i=="*"}return"comment"}function k(e,n){for(var t=!1,i;i=e.next();){if(i=="/"&&t){n.tokenize=null;break}t=i=="+"}return"comment"}function b(e,n,t,i,r){this.indented=e,this.column=n,this.type=t,this.align=i,this.prev=r}function f(e,n,t){var i=e.indented;return e.context&&e.context.type=="statement"&&(i=e.context.indented),e.context=new b(i,n,t,null,e.context)}function a(e){var n=e.context.type;return(n==")"||n=="]"||n=="}")&&(e.indented=e.context.indented),e.context=e.context.prev}const E={name:"d",startState:function(e){return{tokenize:null,context:new b(-e,0,"top",!1),indented:0,startOfLine:!0}},token:function(e,n){var t=n.context;if(e.sol()&&(t.align==null&&(t.align=!1),n.indented=e.indentation(),n.startOfLine=!0),e.eatSpace())return null;o=null;var i=(n.tokenize||m)(e,n);if(i=="comment"||i=="meta")return i;if(t.align==null&&(t.align=!0),(o==";"||o==":"||o==",")&&t.type=="statement")a(n);else if(o=="{")f(n,e.column(),"}");else if(o=="[")f(n,e.column(),"]");else if(o=="(")f(n,e.column(),")");else if(o=="}"){for(;t.type=="statement";)t=a(n);for(t.type=="}"&&(t=a(n));t.type=="statement";)t=a(n)}else o==t.type?a(n):((t.type=="}"||t.type=="top")&&o!=";"||t.type=="statement"&&o=="newstatement")&&f(n,e.column(),"statement");return n.startOfLine=!1,i},indent:function(e,n,t){if(e.tokenize!=m&&e.tokenize!=null)return null;var i=e.context,r=n&&n.charAt(0);i.type=="statement"&&r=="}"&&(i=i.prev);var u=r==i.type;return i.type=="statement"?i.indented+(r=="{"?0:w||t.unit):i.align?i.column+(u?0:1):i.indented+(u?0:t.unit)},languageData:{indentOnInput:/^\s*[{}]$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}};export{E as d}; diff --git a/frontend/dist/assets/dataset-BJ2ikehQ.js b/frontend/dist/assets/dataset-BJ2ikehQ.js new file mode 100644 index 0000000..4ac24c2 --- /dev/null +++ b/frontend/dist/assets/dataset-BJ2ikehQ.js @@ -0,0 +1 @@ +import{aF as n,aH as d,aG as o,aI as r}from"./index-BKKvzUDD.js";const c=()=>n("/dataset-manage"),m=e=>n(`/dataset-manage/${e}`),l=e=>o("/dataset-manage",e),p=(e,a)=>d(`/dataset-manage/${e}`,a),g=e=>r(`/dataset-manage/${e}`),$=(e,a)=>{const t=new FormData;return a.forEach(s=>t.append("files",s)),o(`/dataset-manage/upload/${e}`,t,{headers:{"Content-Type":"multipart/form-data"}})},D=e=>n(`/dataset-manage/versions/${encodeURIComponent(e)}`),_=(e,a)=>n(`/dataset-manage/versions/${encodeURIComponent(e)}/${encodeURIComponent(a)}`),u=(e,a,t)=>o(`/dataset-manage/versions/${encodeURIComponent(e)}`,{content:a,description:t.description||"在线编辑",base_version_id:t.baseVersionId,expected_current_version_id:t.expectedCurrentVersionId}),v=(e,a,t)=>d(`/dataset-manage/versions/${encodeURIComponent(e)}/active`,{version_id:a,expected_current_version_id:t}),C=(e,a,t)=>r(`/dataset-manage/versions/${encodeURIComponent(e)}/${encodeURIComponent(a)}`,{expected_current_version_id:t}),F=(e,a,t)=>{const s=`/modelTF/dataset-manage/download/${e}/${a}`;return t?`${s}?version_id=${encodeURIComponent(t)}`:s},U=e=>`/modelTF/dataset-manage/download/${e}`;export{U as a,m as b,$ as c,g as d,l as e,D as f,c as g,_ as h,u as i,F as j,v as k,C as l,p as u}; diff --git a/frontend/dist/assets/debounce-ByXPNh5F.js b/frontend/dist/assets/debounce-ByXPNh5F.js new file mode 100644 index 0000000..8934ec2 --- /dev/null +++ b/frontend/dist/assets/debounce-ByXPNh5F.js @@ -0,0 +1 @@ +import{cz as S,cs as y}from"./index-BKKvzUDD.js";import{t as b}from"./toNumber-Dkj3QRv9.js";var h=function(){return S.Date.now()},R="Expected a function",A=Math.max,F=Math.min;function _(x,i,a){var u,d,m,f,n,r,o=0,E=!1,c=!1,g=!0;if(typeof x!="function")throw new TypeError(R);i=b(i)||0,y(a)&&(E=!!a.leading,c="maxWait"in a,m=c?A(b(a.maxWait)||0,i):m,g="trailing"in a?!!a.trailing:g);function v(e){var t=u,l=d;return u=d=void 0,o=e,f=x.apply(l,t),f}function p(e){return o=e,n=setTimeout(s,i),E?v(e):f}function C(e){var t=e-r,l=e-o,W=i-t;return c?F(W,m-l):W}function k(e){var t=e-r,l=e-o;return r===void 0||t>=i||t<0||c&&l>=m}function s(){var e=h();if(k(e))return I(e);n=setTimeout(s,C(e))}function I(e){return n=void 0,g&&u?v(e):(u=d=void 0,f)}function L(){n!==void 0&&clearTimeout(n),o=0,u=r=d=n=void 0}function M(){return n===void 0?f:I(h())}function T(){var e=h(),t=k(e);if(u=arguments,d=this,r=e,t){if(n===void 0)return p(r);if(c)return clearTimeout(n),n=setTimeout(s,i),v(r)}return n===void 0&&(n=setTimeout(s,i)),f}return T.cancel=L,T.flush=M,T}export{_ as d}; diff --git a/frontend/dist/assets/diff-DbItnlRl.js b/frontend/dist/assets/diff-DbItnlRl.js new file mode 100644 index 0000000..91a492b --- /dev/null +++ b/frontend/dist/assets/diff-DbItnlRl.js @@ -0,0 +1 @@ +var o={"+":"inserted","-":"deleted","@":"meta"};const r={name:"diff",token:function(n){var e=n.string.search(/[\t ]+?$/);if(!n.sol()||e===0)return n.skipToEnd(),("error "+(o[n.string.charAt(0)]||"")).replace(/ $/,"");var i=o[n.peek()]||n.skipToEnd();return e===-1?n.skipToEnd():n.pos=e,i}};export{r as diff}; diff --git a/frontend/dist/assets/directive-DsZckUTJ.js b/frontend/dist/assets/directive-DsZckUTJ.js new file mode 100644 index 0000000..a0f5b0c --- /dev/null +++ b/frontend/dist/assets/directive-DsZckUTJ.js @@ -0,0 +1 @@ +import{z as E,d7 as P,d as O,bw as z,I as g,w as j,K as R,s as K,L as Z,Z as q,aV as D,y as B,a0 as y,bA as F,P as I,J as S,bL as m,_ as k,a3 as _,aB as G,d8 as H}from"./index-BKKvzUDD.js";function J(e,s){let t;const o=B(!1),n=E({...e,originalPosition:"",originalOverflow:"",visible:!1});function r(l){n.text=l}function c(){const l=n.parent,u=f.ns;if(!l.vLoadingAddClassList){let i=l.getAttribute("loading-number");i=Number.parseInt(i)-1,i?l.setAttribute("loading-number",i.toString()):(y(l,u.bm("parent","relative")),l.removeAttribute("loading-number")),y(l,u.bm("parent","hidden"))}v(),C.unmount()}function v(){var l,u;(u=(l=f.$el)==null?void 0:l.parentNode)==null||u.removeChild(f.$el)}function x(){var l;e.beforeClose&&!e.beforeClose()||(o.value=!0,clearTimeout(t),t=setTimeout(a,400),n.visible=!1,(l=e.closed)==null||l.call(e))}function a(){if(!o.value)return;const l=n.parent;o.value=!1,l.vLoadingAddClassList=void 0,c()}const C=P(O({name:"ElLoading",setup(l,{expose:u}){const{ns:i,zIndex:N}=z("loading");return u({ns:i,zIndex:N}),()=>{const L=n.spinner||n.svg,T=g("svg",{class:"circular",viewBox:n.svgViewBox?n.svgViewBox:"0 0 50 50",...L?{innerHTML:L}:{}},[g("circle",{class:"path",cx:"25",cy:"25",r:"20",fill:"none"})]),V=n.text?g("p",{class:i.b("text")},[n.text]):void 0;return g(q,{name:i.b("fade"),onAfterLeave:a},{default:j(()=>[R(K("div",{style:{backgroundColor:n.background||""},class:[i.b("mask"),n.customClass,i.is("fullscreen",n.fullscreen)]},[g("div",{class:i.b("spinner")},[T,V])]),[[Z,n.visible]])])})}}}));Object.assign(C._context,s??{});const f=C.mount(document.createElement("div"));return{...D(n),setText:r,removeElLoadingChild:v,close:x,handleAfterLeave:a,vm:f,get $el(){return f.$el}}}let p;const A=function(e={},s){if(!F)return;const t=M(e);if(t.fullscreen&&p)return p;const o=J({...t,closed:()=>{var r;(r=t.closed)==null||r.call(t),t.fullscreen&&(p=void 0)}},s??A._context);Y(t,t.parent,o),w(t,t.parent,o),t.parent.vLoadingAddClassList=()=>w(t,t.parent,o);let n=t.parent.getAttribute("loading-number");return n?n=`${Number.parseInt(n)+1}`:n="1",t.parent.setAttribute("loading-number",n),t.parent.appendChild(o.$el),I(()=>o.visible.value=t.visible),t.fullscreen&&(p=o),o},M=e=>{let s;return S(e.target)?s=document.querySelector(e.target)??document.body:s=e.target||document.body,{parent:s===document.body||e.body?document.body:s,background:e.background||"",svg:e.svg||"",svgViewBox:e.svgViewBox||"",spinner:e.spinner||!1,text:e.text||"",fullscreen:s===document.body&&(e.fullscreen??!0),lock:e.lock??!1,customClass:e.customClass||"",visible:e.visible??!0,beforeClose:e.beforeClose,closed:e.closed,target:s}},Y=async(e,s,t)=>{const{nextZIndex:o}=t.vm.zIndex||t.vm._.exposed.zIndex,n={};if(e.fullscreen)t.originalPosition.value=m(document.body,"position"),t.originalOverflow.value=m(document.body,"overflow"),n.zIndex=o();else if(e.parent===document.body){t.originalPosition.value=m(document.body,"position"),await I();for(const r of["top","left"]){const c=r==="top"?"scrollTop":"scrollLeft";n[r]=`${e.target.getBoundingClientRect()[r]+document.body[c]+document.documentElement[c]-Number.parseInt(m(document.body,`margin-${r}`),10)}px`}for(const r of["height","width"])n[r]=`${e.target.getBoundingClientRect()[r]}px`}else t.originalPosition.value=m(s,"position");for(const[r,c]of Object.entries(n))t.$el.style[r]=c},w=(e,s,t)=>{const o=t.vm.ns||t.vm._.exposed.ns;["absolute","fixed","sticky"].includes(t.originalPosition.value)?y(s,o.bm("parent","relative")):k(s,o.bm("parent","relative")),e.fullscreen&&e.lock?k(s,o.bm("parent","hidden")):y(s,o.bm("parent","hidden"))};A._context=null;const b=Symbol("ElLoading"),d=e=>`element-loading-${H(e)}`,h=(e,s)=>{const t=s.instance,o=a=>_(s.value)?s.value[a]:void 0,n=a=>B(S(a)&&(t==null?void 0:t[a])||a),r=a=>n(o(a)||e.getAttribute(d(a))),c=o("fullscreen")??s.modifiers.fullscreen,v={text:r("text"),svg:r("svg"),svgViewBox:r("svgViewBox"),spinner:r("spinner"),background:r("background"),customClass:r("customClass"),fullscreen:c,target:o("target")??(c?void 0:e),body:o("body")??s.modifiers.body,lock:o("lock")??s.modifiers.lock},x=A(v);x._context=$._context,e[b]={options:v,instance:x}},Q=(e,s)=>{for(const t of Object.keys(e))G(e[t])&&(e[t].value=s[t])},$={mounted(e,s){s.value&&h(e,s)},updated(e,s){const t=e[b];if(!s.value){t==null||t.instance.close(),e[b]=null;return}t?Q(t.options,_(s.value)?s.value:{text:e.getAttribute(d("text")),svg:e.getAttribute(d("svg")),svgViewBox:e.getAttribute(d("svgViewBox")),spinner:e.getAttribute(d("spinner")),background:e.getAttribute(d("background")),customClass:e.getAttribute(d("customClass"))}):h(e,s)},unmounted(e){var s;(s=e[b])==null||s.instance.close(),e[b]=null}};$._context=null;export{$ as v}; diff --git a/frontend/dist/assets/dockerfile-BKs6k2Af.js b/frontend/dist/assets/dockerfile-BKs6k2Af.js new file mode 100644 index 0000000..3695b4e --- /dev/null +++ b/frontend/dist/assets/dockerfile-BKs6k2Af.js @@ -0,0 +1 @@ +import{s as o}from"./simple-mode-GW_nhZxv.js";var e="from",s=new RegExp("^(\\s*)\\b("+e+")\\b","i"),n=["run","cmd","entrypoint","shell"],l=new RegExp("^(\\s*)("+n.join("|")+")(\\s+\\[)","i"),t="expose",x=new RegExp("^(\\s*)("+t+")(\\s+)","i"),g=["arg","from","maintainer","label","env","add","copy","volume","user","workdir","onbuild","stopsignal","healthcheck","shell"],u=[e,t].concat(n).concat(g),r="("+u.join("|")+")",a=new RegExp("^(\\s*)"+r+"(\\s*)(#.*)?$","i"),k=new RegExp("^(\\s*)"+r+"(\\s+)","i");const m=o({start:[{regex:/^\s*#.*$/,sol:!0,token:"comment"},{regex:s,token:[null,"keyword"],sol:!0,next:"from"},{regex:a,token:[null,"keyword",null,"error"],sol:!0},{regex:l,token:[null,"keyword",null],sol:!0,next:"array"},{regex:x,token:[null,"keyword",null],sol:!0,next:"expose"},{regex:k,token:[null,"keyword",null],sol:!0,next:"arguments"},{regex:/./,token:null}],from:[{regex:/\s*$/,token:null,next:"start"},{regex:/(\s*)(#.*)$/,token:[null,"error"],next:"start"},{regex:/(\s*\S+\s+)(as)/i,token:[null,"keyword"],next:"start"},{token:null,next:"start"}],single:[{regex:/(?:[^\\']|\\.)/,token:"string"},{regex:/'/,token:"string",pop:!0}],double:[{regex:/(?:[^\\"]|\\.)/,token:"string"},{regex:/"/,token:"string",pop:!0}],array:[{regex:/\]/,token:null,next:"start"},{regex:/"(?:[^\\"]|\\.)*"?/,token:"string"}],expose:[{regex:/\d+$/,token:"number",next:"start"},{regex:/[^\d]+$/,token:null,next:"start"},{regex:/\d+/,token:"number"},{regex:/[^\d]+/,token:null},{token:null,next:"start"}],arguments:[{regex:/^\s*#.*$/,sol:!0,token:"comment"},{regex:/"(?:[^\\"]|\\.)*"?$/,token:"string",next:"start"},{regex:/"/,token:"string",push:"double"},{regex:/'(?:[^\\']|\\.)*'?$/,token:"string",next:"start"},{regex:/'/,token:"string",push:"single"},{regex:/[^#"']+[\\`]$/,token:null},{regex:/[^#"']+$/,token:null,next:"start"},{regex:/[^#"']+/,token:null},{token:null,next:"start"}],languageData:{commentTokens:{line:"#"}}});export{m as dockerFile}; diff --git a/frontend/dist/assets/dropdown-Cy5g1tjO.js b/frontend/dist/assets/dropdown-Cy5g1tjO.js new file mode 100644 index 0000000..5388cc2 --- /dev/null +++ b/frontend/dist/assets/dropdown-Cy5g1tjO.js @@ -0,0 +1 @@ +import{b as p,W as o,R as e,i as a}from"./index-BKKvzUDD.js";import{u as t,r as n,b as r}from"./el-popper-D6_hxRbQ.js";const d=p({trigger:{...r.trigger,type:e([String,Array])},triggerKeys:{type:e(Array),default:()=>[o.enter,o.numpadEnter,o.space,o.down]},virtualTriggering:r.virtualTriggering,virtualRef:r.virtualRef,effect:{...t.effect,default:"light"},type:{type:e(String)},placement:{type:e(String),default:"bottom"},popperOptions:{type:e(Object),default:()=>({})},id:String,size:{type:String,default:""},splitButton:Boolean,hideOnClick:{type:Boolean,default:!0},loop:{type:Boolean,default:!0},showArrow:{type:Boolean,default:!0},showTimeout:{type:Number,default:150},hideTimeout:{type:Number,default:150},tabindex:{type:e([Number,String]),default:0},maxHeight:{type:e([Number,String]),default:""},popperClass:t.popperClass,popperStyle:t.popperStyle,disabled:Boolean,role:{type:String,values:n,default:"menu"},buttonProps:{type:e(Object)},teleported:t.teleported,appendTo:t.appendTo,persistent:{type:Boolean,default:!0}}),u=p({command:{type:[Object,String,Number],default:()=>({})},disabled:Boolean,divided:Boolean,textValue:String,icon:{type:a}}),s=p({onKeydown:{type:e(Function)}});export{u as a,s as b,d}; diff --git a/frontend/dist/assets/dtd-DF_7sFjM.js b/frontend/dist/assets/dtd-DF_7sFjM.js new file mode 100644 index 0000000..d0b492f --- /dev/null +++ b/frontend/dist/assets/dtd-DF_7sFjM.js @@ -0,0 +1 @@ +var u;function r(e,n){return u=n,e}function t(e,n){var l=e.next();if(l=="<"&&e.eat("!")){if(e.eatWhile(/[\-]/))return n.tokenize=o,o(e,n);if(e.eatWhile(/[\w]/))return r("keyword","doindent")}else{if(l=="<"&&e.eat("?"))return n.tokenize=a("meta","?>"),r("meta",l);if(l=="#"&&e.eatWhile(/[\w]/))return r("atom","tag");if(l=="|")return r("keyword","separator");if(l.match(/[\(\)\[\]\-\.,\+\?>]/))return r(null,l);if(l.match(/[\[\]]/))return r("rule",l);if(l=='"'||l=="'")return n.tokenize=k(l),n.tokenize(e,n);if(e.eatWhile(/[a-zA-Z\?\+\d]/)){var i=e.current();return i.substr(i.length-1,i.length).match(/\?|\+/)!==null&&e.backUp(1),r("tag","tag")}else return l=="%"||l=="*"?r("number","number"):(e.eatWhile(/[\w\\\-_%.{,]/),r(null,null))}}function o(e,n){for(var l=0,i;(i=e.next())!=null;){if(l>=2&&i==">"){n.tokenize=t;break}l=i=="-"?l+1:0}return r("comment","comment")}function k(e){return function(n,l){for(var i=!1,c;(c=n.next())!=null;){if(c==e&&!i){l.tokenize=t;break}i=!i&&c=="\\"}return r("string","tag")}}function a(e,n){return function(l,i){for(;!l.eol();){if(l.match(n)){i.tokenize=t;break}l.next()}return e}}const f={name:"dtd",startState:function(){return{tokenize:t,baseIndent:0,stack:[]}},token:function(e,n){if(e.eatSpace())return null;var l=n.tokenize(e,n),i=n.stack[n.stack.length-1];return e.current()=="["||u==="doindent"||u=="["?n.stack.push("rule"):u==="endtag"?n.stack[n.stack.length-1]="endtag":e.current()=="]"||u=="]"||u==">"&&i=="rule"?n.stack.pop():u=="["&&n.stack.push("["),l},indent:function(e,n,l){var i=e.stack.length;return n.charAt(0)==="]"?i--:n.substr(n.length-1,n.length)===">"&&(n.substr(0,1)==="<"||u=="doindent"&&n.length>1||(u=="doindent"?i--:u==">"&&n.length>1||u=="tag"&&n!==">"||(u=="tag"&&e.stack[e.stack.length-1]=="rule"?i--:u=="tag"?i++:n===">"&&e.stack[e.stack.length-1]=="rule"&&u===">"?i--:n===">"&&e.stack[e.stack.length-1]=="rule"||(n.substr(0,1)!=="<"&&n.substr(0,1)===">"?i=i-1:n===">"||(i=i-1)))),(u==null||u=="]")&&i--),e.baseIndent+i*l.unit},languageData:{indentOnInput:/^\s*[\]>]$/}};export{f as dtd}; diff --git a/frontend/dist/assets/dylan-DwRh75JA.js b/frontend/dist/assets/dylan-DwRh75JA.js new file mode 100644 index 0000000..58860c5 --- /dev/null +++ b/frontend/dist/assets/dylan-DwRh75JA.js @@ -0,0 +1 @@ +function p(e,i){for(var n=0;n",symbolGlobal:"\\*"+f+"\\*",symbolConstant:"\\$"+f},w={symbolKeyword:"atom",symbolClass:"tag",symbolGlobal:"variableName.standard",symbolConstant:"variableName.constant"};for(var c in a)a.hasOwnProperty(c)&&(a[c]=new RegExp("^"+a[c]));a.keyword=[/^with(?:out)?-[-_a-zA-Z?!*@<>$%]+/];var u={};u.keyword="keyword";u.definition="def";u.simpleDefinition="def";u.signalingCalls="builtin";var y={},k={};p(["keyword","definition","simpleDefinition","signalingCalls"],function(e){p(t[e],function(i){y[i]=e,k[i]=u[e]})});function d(e,i,n){return i.tokenize=n,n(e,i)}function s(e,i){var n=e.peek();if(n=="'"||n=='"')return e.next(),d(e,i,h(n,"string"));if(n=="/"){if(e.next(),e.eat("*"))return d(e,i,D);if(e.eat("/"))return e.skipToEnd(),"comment";e.backUp(1)}else if(/[+\-\d\.]/.test(n)){if(e.match(/^[+-]?[0-9]*\.[0-9]*([esdx][+-]?[0-9]+)?/i)||e.match(/^[+-]?[0-9]+([esdx][+-]?[0-9]+)/i)||e.match(/^[+-]?\d+/))return"number"}else{if(n=="#")return e.next(),n=e.peek(),n=='"'?(e.next(),d(e,i,h('"',"string"))):n=="b"?(e.next(),e.eatWhile(/[01]/),"number"):n=="x"?(e.next(),e.eatWhile(/[\da-f]/i),"number"):n=="o"?(e.next(),e.eatWhile(/[0-7]/),"number"):n=="#"?(e.next(),"punctuation"):n=="["||n=="("?(e.next(),"bracket"):e.match(/f|t|all-keys|include|key|next|rest/i)?"atom":(e.eatWhile(/[-a-zA-Z]/),"error");if(n=="~")return e.next(),n=e.peek(),n=="="?(e.next(),n=e.peek(),n=="="&&e.next(),"operator"):"operator";if(n==":"){if(e.next(),n=e.peek(),n=="=")return e.next(),"operator";if(n==":")return e.next(),"punctuation"}else{if("[](){}".indexOf(n)!=-1)return e.next(),"bracket";if(".,".indexOf(n)!=-1)return e.next(),"punctuation";if(e.match("end"))return"keyword"}}for(var l in a)if(a.hasOwnProperty(l)){var r=a[l];if(r instanceof Array&&x(r,function(o){return e.match(o)})||e.match(r))return w[l]}return/[+\-*\/^=<>&|]/.test(n)?(e.next(),"operator"):e.match("define")?"def":(e.eatWhile(/[\w\-]/),y.hasOwnProperty(e.current())?k[e.current()]:e.current().match(v)?"variable":(e.next(),"variableName.standard"))}function D(e,i){for(var n=!1,l=!1,r=0,o;o=e.next();){if(o=="/"&&n)if(r>0)r--;else{i.tokenize=s;break}else o=="*"&&l&&r++;n=o=="*",l=o=="/"}return"comment"}function h(e,i){return function(n,l){for(var r=!1,o,b=!1;(o=n.next())!=null;){if(o==e&&!r){b=!0;break}r=!r&&o=="\\"}return(b||!r)&&(l.tokenize=s),i}}const g={name:"dylan",startState:function(){return{tokenize:s,currentIndent:0}},token:function(e,i){if(e.eatSpace())return null;var n=i.tokenize(e,i);return n},languageData:{commentTokens:{block:{open:"/*",close:"*/"}}}};export{g as dylan}; diff --git a/frontend/dist/assets/ebnf-CDyGwa7X.js b/frontend/dist/assets/ebnf-CDyGwa7X.js new file mode 100644 index 0000000..0824acd --- /dev/null +++ b/frontend/dist/assets/ebnf-CDyGwa7X.js @@ -0,0 +1 @@ +var i={slash:0,parenthesis:1},n={comment:0,_string:1,characterClass:2};const l={name:"ebnf",startState:function(){return{stringType:null,commentType:null,braced:0,lhs:!0,localState:null,stack:[],inDefinition:!1}},token:function(e,c){if(e){switch(c.stack.length===0&&(e.peek()=='"'||e.peek()=="'"?(c.stringType=e.peek(),e.next(),c.stack.unshift(n._string)):e.match("/*")?(c.stack.unshift(n.comment),c.commentType=i.slash):e.match("(*")&&(c.stack.unshift(n.comment),c.commentType=i.parenthesis)),c.stack[0]){case n._string:for(;c.stack[0]===n._string&&!e.eol();)e.peek()===c.stringType?(e.next(),c.stack.shift()):e.peek()==="\\"?(e.next(),e.next()):e.match(/^.[^\\\"\']*/);return c.lhs?"property":"string";case n.comment:for(;c.stack[0]===n.comment&&!e.eol();)c.commentType===i.slash&&e.match("*/")||c.commentType===i.parenthesis&&e.match("*)")?(c.stack.shift(),c.commentType=null):e.match(/^.[^\*]*/);return"comment";case n.characterClass:for(;c.stack[0]===n.characterClass&&!e.eol();)e.match(/^[^\]\\]+/)||e.match(".")||c.stack.shift();return"operator"}var t=e.peek();switch(t){case"[":return e.next(),c.stack.unshift(n.characterClass),"bracket";case":":case"|":case";":return e.next(),"operator";case"%":if(e.match("%%"))return"header";if(e.match(/[%][A-Za-z]+/))return"keyword";if(e.match(/[%][}]/))return"bracket";break;case"/":if(e.match(/[\/][A-Za-z]+/))return"keyword";case"\\":if(e.match(/[\][a-z]+/))return"string.special";case".":if(e.match("."))return"atom";case"*":case"-":case"+":case"^":if(e.match(t))return"atom";case"$":if(e.match("$$"))return"builtin";if(e.match(/[$][0-9]+/))return"variableName.special";case"<":if(e.match(/<<[a-zA-Z_]+>>/))return"builtin"}return e.match("//")?(e.skipToEnd(),"comment"):e.match("return")?"operator":e.match(/^[a-zA-Z_][a-zA-Z0-9_]*/)?e.match(/(?=[\(.])/)?"variable":e.match(/(?=[\s\n]*[:=])/)?"def":"variableName.special":["[","]","(",")"].indexOf(e.peek())!=-1?(e.next(),"bracket"):(e.eatSpace()||e.next(),null)}}};export{l as ebnf}; diff --git a/frontend/dist/assets/ecl-Cabwm37j.js b/frontend/dist/assets/ecl-Cabwm37j.js new file mode 100644 index 0000000..51f4d3a --- /dev/null +++ b/frontend/dist/assets/ecl-Cabwm37j.js @@ -0,0 +1 @@ +function l(e){for(var n={},t=e.split(" "),r=0;r!?|\/]/,o;function p(e,n){var t=e.next();if(m[t]){var r=m[t](e,n);if(r!==!1)return r}if(t=='"'||t=="'")return n.tokenize=I(t),n.tokenize(e,n);if(/[\[\]{}\(\),;\:\.]/.test(t))return o=t,null;if(/\d/.test(t))return e.eatWhile(/[\w\.]/),"number";if(t=="/"){if(e.eat("*"))return n.tokenize=y,y(e,n);if(e.eat("/"))return e.skipToEnd(),"comment"}if(h.test(t))return e.eatWhile(h),"operator";e.eatWhile(/[\w\$_]/);var i=e.current().toLowerCase();if(g.propertyIsEnumerable(i))return s.propertyIsEnumerable(i)&&(o="newstatement"),"keyword";if(w.propertyIsEnumerable(i))return s.propertyIsEnumerable(i)&&(o="newstatement"),"variable";if(x.propertyIsEnumerable(i))return s.propertyIsEnumerable(i)&&(o="newstatement"),"modifier";if(f.propertyIsEnumerable(i))return s.propertyIsEnumerable(i)&&(o="newstatement"),"type";if(k.propertyIsEnumerable(i))return s.propertyIsEnumerable(i)&&(o="newstatement"),"builtin";for(var a=i.length-1;a>=0&&(!isNaN(i[a])||i[a]=="_");)--a;if(a>0){var d=i.substr(0,a+1);if(f.propertyIsEnumerable(d))return s.propertyIsEnumerable(d)&&(o="newstatement"),"type"}return E.propertyIsEnumerable(i)?"atom":null}function I(e){return function(n,t){for(var r=!1,i,a=!1;(i=n.next())!=null;){if(i==e&&!r){a=!0;break}r=!r&&i=="\\"}return(a||!r)&&(t.tokenize=p),"string"}}function y(e,n){for(var t=!1,r;r=e.next();){if(r=="/"&&t){n.tokenize=p;break}t=r=="*"}return"comment"}function v(e,n,t,r,i){this.indented=e,this.column=n,this.type=t,this.align=r,this.prev=i}function c(e,n,t){return e.context=new v(e.indented,n,t,null,e.context)}function u(e){var n=e.context.type;return(n==")"||n=="]"||n=="}")&&(e.indented=e.context.indented),e.context=e.context.prev}const z={name:"ecl",startState:function(e){return{tokenize:null,context:new v(-e,0,"top",!1),indented:0,startOfLine:!0}},token:function(e,n){var t=n.context;if(e.sol()&&(t.align==null&&(t.align=!1),n.indented=e.indentation(),n.startOfLine=!0),e.eatSpace())return null;o=null;var r=(n.tokenize||p)(e,n);if(r=="comment"||r=="meta")return r;if(t.align==null&&(t.align=!0),(o==";"||o==":")&&t.type=="statement")u(n);else if(o=="{")c(n,e.column(),"}");else if(o=="[")c(n,e.column(),"]");else if(o=="(")c(n,e.column(),")");else if(o=="}"){for(;t.type=="statement";)t=u(n);for(t.type=="}"&&(t=u(n));t.type=="statement";)t=u(n)}else o==t.type?u(n):(t.type=="}"||t.type=="top"||t.type=="statement"&&o=="newstatement")&&c(n,e.column(),"statement");return n.startOfLine=!1,r},indent:function(e,n,t){if(e.tokenize!=p&&e.tokenize!=null)return 0;var r=e.context,i=n&&n.charAt(0);r.type=="statement"&&i=="}"&&(r=r.prev);var a=i==r.type;return r.type=="statement"?r.indented+(i=="{"?0:t.unit):r.align?r.column+(a?0:1):r.indented+(a?0:t.unit)},languageData:{indentOnInput:/^\s*[{}]$/}};export{z as ecl}; diff --git a/frontend/dist/assets/eiffel-CnydiIhH.js b/frontend/dist/assets/eiffel-CnydiIhH.js new file mode 100644 index 0000000..4d0273e --- /dev/null +++ b/frontend/dist/assets/eiffel-CnydiIhH.js @@ -0,0 +1 @@ +function u(e){for(var r={},n=0,t=e.length;n>"]);function f(e,r,n){return n.tokenize.push(e),e(r,n)}function s(e,r){if(e.eatSpace())return null;var n=e.next();return n=='"'||n=="'"?f(p(n,"string"),e,r):n=="-"&&e.eat("-")?(e.skipToEnd(),"comment"):n==":"&&e.eat("=")?"operator":/[0-9]/.test(n)?(e.eatWhile(/[xXbBCc0-9\.]/),e.eat(/[\?\!]/),"variable"):/[a-zA-Z_0-9]/.test(n)?(e.eatWhile(/[a-zA-Z_0-9]/),e.eat(/[\?\!]/),"variable"):/[=+\-\/*^%<>~]/.test(n)?(e.eatWhile(/[=+\-\/*^%<>~]/),"operator"):null}function p(e,r,n){return function(t,o){for(var a=!1,i;(i=t.next())!=null;){if(i==e&&!a){o.tokenize.pop();break}a=!a&&i=="%"}return r}}const d={name:"eiffel",startState:function(){return{tokenize:[s]}},token:function(e,r){var n=r.tokenize[r.tokenize.length-1](e,r);if(n=="variable"){var t=e.current();n=l.propertyIsEnumerable(e.current())?"keyword":c.propertyIsEnumerable(e.current())?"operator":/^[A-Z][A-Z_0-9]*$/g.test(t)?"tag":/^0[bB][0-1]+$/g.test(t)||/^0[cC][0-7]+$/g.test(t)||/^0[xX][a-fA-F0-9]+$/g.test(t)||/^([0-9]+\.[0-9]*)|([0-9]*\.[0-9]+)$/g.test(t)||/^[0-9]+$/g.test(t)?"number":"variable"}return n},languageData:{commentTokens:{line:"--"}}};export{d as eiffel}; diff --git a/frontend/dist/assets/el-alert-B6UgayC7.css b/frontend/dist/assets/el-alert-B6UgayC7.css new file mode 100644 index 0000000..a777c72 --- /dev/null +++ b/frontend/dist/assets/el-alert-B6UgayC7.css @@ -0,0 +1 @@ +.el-alert{--el-alert-padding:8px 16px;--el-alert-border-radius-base:var(--el-border-radius-base);--el-alert-title-font-size:14px;--el-alert-title-with-description-font-size:16px;--el-alert-description-font-size:14px;--el-alert-close-font-size:16px;--el-alert-close-customed-font-size:14px;--el-alert-icon-size:16px;--el-alert-icon-large-size:28px;width:100%;padding:var(--el-alert-padding);box-sizing:border-box;border-radius:var(--el-alert-border-radius-base);background-color:var(--el-color-white);opacity:1;transition:opacity var(--el-transition-duration-fast);align-items:center;margin:0;display:flex;position:relative;overflow:hidden}.el-alert.is-light .el-alert__close-btn{color:var(--el-text-color-placeholder)}.el-alert.is-dark .el-alert__close-btn,.el-alert.is-dark .el-alert__description{color:var(--el-color-white)}.el-alert.is-center{justify-content:center}.el-alert--primary{--el-alert-bg-color:var(--el-color-primary-light-9)}.el-alert--primary.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-primary)}.el-alert--primary.is-light .el-alert__description{color:var(--el-color-primary)}.el-alert--primary.is-dark{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-alert--success{--el-alert-bg-color:var(--el-color-success-light-9)}.el-alert--success.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-success)}.el-alert--success.is-light .el-alert__description{color:var(--el-color-success)}.el-alert--success.is-dark{background-color:var(--el-color-success);color:var(--el-color-white)}.el-alert--info{--el-alert-bg-color:var(--el-color-info-light-9)}.el-alert--info.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-info)}.el-alert--info.is-light .el-alert__description{color:var(--el-color-info)}.el-alert--info.is-dark{background-color:var(--el-color-info);color:var(--el-color-white)}.el-alert--warning{--el-alert-bg-color:var(--el-color-warning-light-9)}.el-alert--warning.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-warning)}.el-alert--warning.is-light .el-alert__description{color:var(--el-color-warning)}.el-alert--warning.is-dark{background-color:var(--el-color-warning);color:var(--el-color-white)}.el-alert--error{--el-alert-bg-color:var(--el-color-error-light-9)}.el-alert--error.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-error)}.el-alert--error.is-light .el-alert__description{color:var(--el-color-error)}.el-alert--error.is-dark{background-color:var(--el-color-error);color:var(--el-color-white)}.el-alert__content{flex-direction:column;gap:4px;display:flex}.el-alert .el-alert__icon{font-size:var(--el-alert-icon-size);width:var(--el-alert-icon-size);margin-right:8px}.el-alert .el-alert__icon.is-big{font-size:var(--el-alert-icon-large-size);width:var(--el-alert-icon-large-size);margin-right:12px}.el-alert__title{font-size:var(--el-alert-title-font-size);line-height:24px}.el-alert__title.with-description{font-size:var(--el-alert-title-with-description-font-size)}.el-alert .el-alert__description{font-size:var(--el-alert-description-font-size);margin:0}.el-alert .el-alert__close-btn{font-size:var(--el-alert-close-font-size);opacity:1;cursor:pointer;position:absolute;top:12px;right:16px}.el-alert .el-alert__close-btn.is-customed{font-style:normal;font-size:var(--el-alert-close-customed-font-size);line-height:24px;top:8px}.el-alert-fade-enter-from,.el-alert-fade-leave-active{opacity:0} diff --git a/frontend/dist/assets/el-alert-xVLeNUgJ.js b/frontend/dist/assets/el-alert-xVLeNUgJ.js new file mode 100644 index 0000000..762f39a --- /dev/null +++ b/frontend/dist/assets/el-alert-xVLeNUgJ.js @@ -0,0 +1 @@ +import{b as $,bJ as D,bz as S,d as I,bl as V,a as x,o as l,e as n,w as d,K as M,q as h,n as o,f as e,E as k,h as m,r as z,g as i,c,x as g,aa as v,M as A,s as P,bv as j,L as q,Z as F,y as J,j as E,l as K}from"./index-BKKvzUDD.js";import{f as L,b as O}from"./vnode-78qeDweP.js";const Z=["light","dark"],G=$({title:{type:String,default:""},description:{type:String,default:""},type:{type:String,values:D(S),default:"info"},closable:{type:Boolean,default:!0},closeText:{type:String,default:""},showIcon:Boolean,center:Boolean,effect:{type:String,values:Z,default:"light"}}),H={close:t=>t instanceof MouseEvent};var Q=I({name:"ElAlert",__name:"alert",props:G,emits:H,setup(t,{emit:w}){const{Close:B}=j,p=t,T=w,r=V(),s=x("alert"),y=J(!0),b=E(()=>S[p.type]),u=E(()=>{var f;if(p.description)return!0;const a=(f=r.default)==null?void 0:f.call(r);return a?L(a).some(N=>!O(N)):!1}),C=a=>{y.value=!1,T("close",a)};return(a,f)=>(l(),n(F,{name:e(s).b("fade"),persisted:""},{default:d(()=>[M(h("div",{class:o([e(s).b(),e(s).m(t.type),e(s).is("center",t.center),e(s).is(t.effect)]),role:"alert"},[t.showIcon&&(a.$slots.icon||b.value)?(l(),n(e(k),{key:0,class:o([e(s).e("icon"),e(s).is("big",u.value)])},{default:d(()=>[m(a.$slots,"icon",{},()=>[(l(),n(z(b.value)))])]),_:3},8,["class"])):i("v-if",!0),h("div",{class:o(e(s).e("content"))},[t.title||a.$slots.title?(l(),c("span",{key:0,class:o([e(s).e("title"),{"with-description":u.value}])},[m(a.$slots,"title",{},()=>[g(v(t.title),1)])],2)):i("v-if",!0),u.value?(l(),c("p",{key:1,class:o(e(s).e("description"))},[m(a.$slots,"default",{},()=>[g(v(t.description),1)])],2)):i("v-if",!0),t.closable?(l(),c(A,{key:2},[t.closeText?(l(),c("div",{key:0,class:o([e(s).e("close-btn"),e(s).is("customed")]),onClick:C},v(t.closeText),3)):(l(),n(e(k),{key:1,class:o(e(s).e("close-btn")),onClick:C},{default:d(()=>[P(e(B))]),_:1},8,["class"]))],64)):i("v-if",!0)],2)],2),[[q,y.value]])]),_:3},8,["name"]))}}),R=Q;const X=K(R);export{X as E}; diff --git a/frontend/dist/assets/el-avatar-DOlF0Z_P.css b/frontend/dist/assets/el-avatar-DOlF0Z_P.css new file mode 100644 index 0000000..d1c6870 --- /dev/null +++ b/frontend/dist/assets/el-avatar-DOlF0Z_P.css @@ -0,0 +1 @@ +.el-avatar{--el-avatar-text-color:var(--el-color-white);--el-avatar-bg-color:var(--el-text-color-disabled);--el-avatar-text-size:14px;--el-avatar-icon-size:18px;--el-avatar-border-radius:var(--el-border-radius-base);--el-avatar-size-large:56px;--el-avatar-size:40px;--el-avatar-size-small:24px;box-sizing:border-box;text-align:center;color:var(--el-avatar-text-color);background:var(--el-avatar-bg-color);width:var(--el-avatar-size);height:var(--el-avatar-size);font-size:var(--el-avatar-text-size);outline:none;justify-content:center;align-items:center;display:inline-flex;overflow:hidden}.el-avatar>img{width:100%;height:100%;display:block}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:var(--el-avatar-border-radius)}.el-avatar--icon{font-size:var(--el-avatar-icon-size)}.el-avatar--small{--el-avatar-size:24px}.el-avatar--large{--el-avatar-size:56px} diff --git a/frontend/dist/assets/el-avatar-l9IBuq4_.js b/frontend/dist/assets/el-avatar-l9IBuq4_.js new file mode 100644 index 0000000..628fe37 --- /dev/null +++ b/frontend/dist/assets/el-avatar-l9IBuq4_.js @@ -0,0 +1 @@ +import{b as j,i as w,aj as z,R as c,ak as m,d as A,B as V,a as E,D as I,o as f,c as y,al as S,e as h,w as _,r as q,f as D,E as F,h as G,n as K,y as L,j as p,J as R,am as J,s as d,an as O,ao as U,x as $,F as H,z as M,a9 as g,l as Q,ab as W}from"./index-BKKvzUDD.js";import{f as X}from"./vnode-78qeDweP.js";import{u as C,a as Y,E as Z}from"./el-popper-D6_hxRbQ.js";const aa=j({size:{type:[Number,String],values:z,validator:a=>m(a)},shape:{type:String,values:["circle","square"]},icon:{type:w},src:{type:String,default:""},alt:String,srcSet:String,fit:{type:c(String),default:"cover"}}),ea={error:a=>a instanceof Event},b=Symbol("avatarGroupContextKey"),ta={size:{type:c([Number,String]),values:z,validator:a=>m(a)},shape:{type:c(String),values:["circle","square"]},collapseAvatars:Boolean,collapseAvatarsTooltip:Boolean,maxCollapseAvatars:{type:Number,default:1},effect:{type:c(String),default:"light"},placement:{type:c(String),values:Y,default:"top"},popperClass:C.popperClass,popperStyle:C.popperStyle,collapseClass:String,collapseStyle:{type:c([String,Array,Object,Boolean]),default:void 0}},sa=["src","alt","srcset"];var la=A({name:"ElAvatar",__name:"avatar",props:aa,emits:ea,setup(a,{emit:n}){const t=a,r=n,e=V(b,void 0),l=E("avatar"),o=L(!1),s=p(()=>t.size??(e==null?void 0:e.size)),v=p(()=>t.shape??(e==null?void 0:e.shape)??"circle"),B=p(()=>{const{icon:i}=t,u=[l.b()];return R(s.value)&&u.push(l.m(s.value)),i&&u.push(l.m("icon")),v.value&&u.push(l.m(v.value)),u}),x=p(()=>m(s.value)?l.cssVarBlock({size:J(s.value)}):void 0),T=p(()=>({objectFit:t.fit}));I(()=>[t.src,t.srcSet],()=>o.value=!1);function P(i){o.value=!0,r("error",i)}return(i,u)=>(f(),y("span",{class:K(B.value),style:S(x.value)},[(a.src||a.srcSet)&&!o.value?(f(),y("img",{key:0,src:a.src,alt:a.alt,srcset:a.srcSet,style:S(T.value),onError:P},null,44,sa)):a.icon?(f(),h(D(F),{key:1},{default:_(()=>[(f(),h(q(a.icon)))]),_:1})):G(i.$slots,"default",{key:2})],6))}}),k=la,N=A({name:"ElAvatarGroup",props:ta,setup(a,{slots:n}){const t=E("avatar-group");return H(b,M({size:g(a,"size"),shape:g(a,"shape")})),()=>{var l;const r=X(((l=n.default)==null?void 0:l.call(n))??[]);let e=r;if(a.collapseAvatars&&r.length>a.maxCollapseAvatars){e=r.slice(0,a.maxCollapseAvatars);const o=r.slice(a.maxCollapseAvatars);e.push(d(Z,{popperClass:a.popperClass,popperStyle:a.popperStyle,placement:a.placement,effect:a.effect,disabled:!a.collapseAvatarsTooltip},{default:()=>d(k,{size:a.size,shape:a.shape,class:a.collapseClass,style:a.collapseStyle},{default:()=>[$("+ "),o.length]}),content:()=>d("div",{class:t.e("collapse-avatars")},[o.map((s,v)=>O(s)?U(s,{key:s.key??v}):s)])}))}return d("div",{class:t.b()},[e])}}});const na=Q(k,{AvatarGroup:N});W(N);export{na as E}; diff --git a/frontend/dist/assets/el-card-BAyktVMS.css b/frontend/dist/assets/el-card-BAyktVMS.css new file mode 100644 index 0000000..38d6d98 --- /dev/null +++ b/frontend/dist/assets/el-card-BAyktVMS.css @@ -0,0 +1 @@ +.el-card{--el-card-border-color:var(--el-border-color-light);--el-card-border-radius:4px;--el-card-padding:20px;--el-card-bg-color:var(--el-fill-color-blank);border-radius:var(--el-card-border-radius);border:1px solid var(--el-card-border-color);background-color:var(--el-card-bg-color);color:var(--el-text-color-primary);transition:var(--el-transition-duration);flex-direction:column;display:flex;overflow:hidden}.el-card.is-always-shadow,.el-card.is-hover-shadow:hover,.el-card.is-hover-shadow:focus{box-shadow:var(--el-box-shadow-light)}.el-card__header{padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding);border-bottom:1px solid var(--el-card-border-color);box-sizing:border-box}.el-card__body{padding:var(--el-card-padding);flex-grow:1;overflow:auto}.el-card__footer{padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding);border-top:1px solid var(--el-card-border-color);box-sizing:border-box} diff --git a/frontend/dist/assets/el-card-CApHJ1Gj.js b/frontend/dist/assets/el-card-CApHJ1Gj.js new file mode 100644 index 0000000..3b68400 --- /dev/null +++ b/frontend/dist/assets/el-card-CApHJ1Gj.js @@ -0,0 +1 @@ +import{b as y,R as h,d as v,u as g,a as C,o as r,c as l,n as o,f as a,h as d,x as i,aa as f,g as c,q as S,al as b,l as m}from"./index-BKKvzUDD.js";const w=y({header:{type:String,default:""},footer:{type:String,default:""},bodyStyle:{type:h([String,Object,Array,Boolean]),default:""},headerClass:String,bodyClass:String,footerClass:String,shadow:{type:String,values:["always","hover","never"],default:void 0}});var $=v({name:"ElCard",__name:"card",props:w,setup(e){const u=g("card"),s=C("card");return(t,p)=>{var n;return r(),l("div",{class:o([a(s).b(),a(s).is(`${e.shadow||((n=a(u))==null?void 0:n.shadow)||"always"}-shadow`)])},[t.$slots.header||e.header?(r(),l("div",{key:0,class:o([a(s).e("header"),e.headerClass])},[d(t.$slots,"header",{},()=>[i(f(e.header),1)])],2)):c("v-if",!0),S("div",{class:o([a(s).e("body"),e.bodyClass]),style:b(e.bodyStyle)},[d(t.$slots,"default")],6),t.$slots.footer||e.footer?(r(),l("div",{key:1,class:o([a(s).e("footer"),e.footerClass])},[d(t.$slots,"footer",{},()=>[i(f(e.footer),1)])],2)):c("v-if",!0)],2)}}}),k=$;const E=m(k);export{E}; diff --git a/frontend/dist/assets/el-checkbox-CzNtyWdF.css b/frontend/dist/assets/el-checkbox-CzNtyWdF.css new file mode 100644 index 0000000..586766b --- /dev/null +++ b/frontend/dist/assets/el-checkbox-CzNtyWdF.css @@ -0,0 +1 @@ +.el-checkbox{--el-checkbox-font-size:14px;--el-checkbox-font-weight:var(--el-font-weight-primary);--el-checkbox-text-color:var(--el-text-color-regular);--el-checkbox-input-height:14px;--el-checkbox-input-width:14px;--el-checkbox-border-radius:var(--el-border-radius-small);--el-checkbox-bg-color:var(--el-fill-color-blank);--el-checkbox-input-border:var(--el-border);--el-checkbox-disabled-border-color:var(--el-border-color);--el-checkbox-disabled-input-fill:var(--el-fill-color-light);--el-checkbox-disabled-icon-color:var(--el-text-color-placeholder);--el-checkbox-disabled-checked-input-fill:var(--el-border-color-extra-light);--el-checkbox-disabled-checked-input-border-color:var(--el-border-color);--el-checkbox-disabled-checked-icon-color:var(--el-text-color-placeholder);--el-checkbox-checked-text-color:var(--el-color-primary);--el-checkbox-checked-input-border-color:var(--el-color-primary);--el-checkbox-checked-bg-color:var(--el-color-primary);--el-checkbox-checked-icon-color:var(--el-color-white);--el-checkbox-input-border-color-hover:var(--el-color-primary);color:var(--el-checkbox-text-color);font-weight:var(--el-checkbox-font-weight);font-size:var(--el-font-size-base);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;height:var(--el-checkbox-height,32px);align-items:center;margin-right:30px;display:inline-flex;position:relative}.el-checkbox.is-disabled{cursor:not-allowed}.el-checkbox.is-bordered{border-radius:var(--el-border-radius-base);border:var(--el-border);box-sizing:border-box;padding:0 15px 0 9px}.el-checkbox.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-checkbox.is-bordered.is-disabled{border-color:var(--el-border-color-lighter)}.el-checkbox.is-bordered.el-checkbox--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__label{font-size:var(--el-font-size-base)}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__inner{width:14px;height:14px}.el-checkbox.is-bordered.el-checkbox--small{border-radius:calc(var(--el-border-radius-base) - 1px);padding:0 11px 0 7px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{width:12px;height:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner:after{width:2px;height:6px}.el-checkbox input:focus-visible+.el-checkbox__inner{outline:2px solid var(--el-checkbox-input-border-color-hover);outline-offset:1px;border-radius:var(--el-checkbox-border-radius)}.el-checkbox__input{white-space:nowrap;cursor:pointer;outline:none;display:inline-flex;position:relative}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:var(--el-checkbox-disabled-input-fill);border-color:var(--el-checkbox-disabled-border-color);cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner:after{cursor:not-allowed;border-color:var(--el-checkbox-disabled-icon-color);will-change:transform}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner:before{background-color:var(--el-checkbox-disabled-checked-icon-color);border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:var(--el-disabled-text-color);cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-checked-icon-color);transform:translate(-45%,-60%)rotate(45deg)scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:var(--el-checkbox-checked-text-color)}.el-checkbox__input.is-focus:not(.is-checked) .el-checkbox__original:not(:focus-visible){border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:before{content:"";background-color:var(--el-checkbox-checked-icon-color);height:2px;display:block;position:absolute;top:5px;left:0;right:0;transform:scale(.5)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:after{display:none}.el-checkbox__inner{border:var(--el-checkbox-input-border);border-radius:var(--el-checkbox-border-radius);box-sizing:border-box;width:var(--el-checkbox-input-width);height:var(--el-checkbox-input-height);background-color:var(--el-checkbox-bg-color);z-index:var(--el-index-normal);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46),outline .25s cubic-bezier(.71,-.46,.29,1.46);display:inline-block;position:relative}.el-checkbox__inner:hover{border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__inner:after{box-sizing:content-box;content:"";transform-origin:50%;border:1px solid #0000;border-top:0;border-left:0;width:3px;height:7px;transition:transform .15s ease-in 50ms;position:absolute;top:50%;left:50%;transform:translate(-45%,-60%)rotate(45deg)scaleY(0)}.el-checkbox__original{opacity:0;z-index:-1;outline:none;width:0;height:0;margin:0;position:absolute}.el-checkbox__label{line-height:1;font-size:var(--el-checkbox-font-size);padding-left:8px;display:inline-block}.el-checkbox.el-checkbox--large{height:40px}.el-checkbox.el-checkbox--large .el-checkbox__label{font-size:14px}.el-checkbox.el-checkbox--large .el-checkbox__inner{width:14px;height:14px}.el-checkbox.el-checkbox--small{height:24px}.el-checkbox.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.el-checkbox--small .el-checkbox__inner{width:12px;height:12px}.el-checkbox.el-checkbox--small .el-checkbox__input.is-indeterminate .el-checkbox__inner:before{top:4px}.el-checkbox.el-checkbox--small .el-checkbox__inner:after{width:2px;height:6px}.el-checkbox:last-of-type{margin-right:0} diff --git a/frontend/dist/assets/el-checkbox-group-D_6SYB2i.css b/frontend/dist/assets/el-checkbox-group-D_6SYB2i.css new file mode 100644 index 0000000..b2a1822 --- /dev/null +++ b/frontend/dist/assets/el-checkbox-group-D_6SYB2i.css @@ -0,0 +1 @@ +.el-checkbox-group{font-size:0;line-height:0} diff --git a/frontend/dist/assets/el-checkbox-qGZ2-RM2.js b/frontend/dist/assets/el-checkbox-qGZ2-RM2.js new file mode 100644 index 0000000..00e2687 --- /dev/null +++ b/frontend/dist/assets/el-checkbox-qGZ2-RM2.js @@ -0,0 +1 @@ +import{aR as X,J,ak as Y,k as P,a6 as B,b as ye,R as D,B as V,j as b,U as w,N as Z,D as _,P as G,aU as ee,y as z,cb as O,a3 as pe,cc as Q,bb as ae,d as K,bl as te,a as M,o as y,e as $,w as le,q as N,n as p,K as ne,Y as T,f as c,aB as se,aL as ue,cd as oe,c as E,h as j,M as ie,x as re,aa as de,g as U,r as A,al as Ve,F as Se,aV as Le,ad as Be,ab as ce,l as Ee}from"./index-BKKvzUDD.js";import{U as I,C as R}from"./raf-C-x62Pcl.js";import{u as be,p as Ne}from"./index-GAnQrJsQ.js";import{g as Ie,c as ve,b as q,e as W,d as me,u as F}from"./index-BjEW7-SA.js";import{o as De}from"./omit-BTSq4AYh.js";const fe={modelValue:{type:[Number,String,Boolean],default:void 0},label:{type:[String,Boolean,Number,Object],default:void 0},value:{type:[String,Boolean,Number,Object],default:void 0},indeterminate:Boolean,disabled:{type:Boolean,default:void 0},checked:Boolean,name:{type:String,default:void 0},trueValue:{type:[String,Number],default:void 0},falseValue:{type:[String,Number],default:void 0},trueLabel:{type:[String,Number],default:void 0},falseLabel:{type:[String,Number],default:void 0},id:{type:String,default:void 0},border:Boolean,size:X,tabindex:[String,Number],validateEvent:{type:Boolean,default:!0},ariaLabel:String,...be(["ariaControls"])},he={[I]:e=>J(e)||Y(e)||P(e),change:e=>J(e)||Y(e)||P(e)},S=Symbol("checkboxGroupContextKey"),Fe=ye({modelValue:{type:D(Array),default:()=>[]},disabled:{type:Boolean,default:void 0},min:Number,max:Number,size:X,fill:String,textColor:String,tag:{type:String,default:"div"},validateEvent:{type:Boolean,default:!0},options:{type:D(Array)},props:{type:D(Object),default:()=>ge},type:{type:String,values:["checkbox","button"],default:"checkbox"},...be(["ariaLabel"])}),Pe={[I]:e=>B(e),change:e=>B(e)},ge={label:"label",value:"value",disabled:"disabled"},we=({model:e,isChecked:t})=>{const s=V(S,void 0),u=V(Ie,void 0),l=b(()=>{var n,v;const r=(n=s==null?void 0:s.max)==null?void 0:n.value,i=(v=s==null?void 0:s.min)==null?void 0:v.value;return!w(r)&&e.value.length>=r&&!t.value||!w(i)&&e.value.length<=i&&t.value});return{isDisabled:ve(b(()=>{var r;return s===void 0?(u==null?void 0:u.disabled)??l.value:((r=s.disabled)==null?void 0:r.value)||l.value})),isLimitDisabled:l}},ze=(e,{model:t,isLimitExceeded:s,hasOwnLabel:u,isDisabled:l,isLabeledByFormItem:r})=>{const i=V(S,void 0),{formItem:n}=q(),{emit:v}=Z();function d(a){return[!0,e.trueValue,e.trueLabel].includes(a)?e.trueValue??e.trueLabel??!0:e.falseValue??e.falseLabel??!1}function f(a,o){v(R,d(a),o)}function m(a){if(s.value)return;const o=a.target;v(R,d(o.checked),a)}async function k(a){s.value||!u.value&&!l.value&&r.value&&(a.composedPath().some(o=>o.tagName==="LABEL")||(t.value=d([!1,e.falseValue,e.falseLabel].includes(t.value)),await G(),f(t.value,a)))}const x=b(()=>(i==null?void 0:i.validateEvent)||e.validateEvent);return _(()=>e.modelValue,()=>{x.value&&(n==null||n.validate("change").catch(ee))}),{handleChange:m,onClickRoot:k}},Oe=e=>{const t=z(!1),{emit:s,vnode:u}=Z(),l=V(S,void 0),r=b(()=>w(l)===!1),i=z(!1),n=b(()=>{const d=u.props??{};return"modelValue"in d||"model-value"in d}),v=b({get(){var d;return r.value?(d=l==null?void 0:l.modelValue)==null?void 0:d.value:n.value?e.modelValue:t.value},set(d){var f,m;r.value&&B(d)?(i.value=((f=l==null?void 0:l.max)==null?void 0:f.value)!==void 0&&d.length>(l==null?void 0:l.max.value)&&d.length>v.value.length,i.value===!1&&((m=l==null?void 0:l.changeEvent)==null||m.call(l,d))):(s(I,d),t.value=d)}});return{model:v,isGroup:r,isLimitExceeded:i}},$e=(e,t,{model:s})=>{const u=V(S,void 0),l=z(!1),r=b(()=>O(e.value)?e.label:e.value),i=b(()=>{const n=s.value;return P(n)?n:B(n)?pe(r.value)?n.map(Q).some(v=>ae(v,r.value)):n.map(Q).includes(r.value):n!=null?n===e.trueValue||n===e.trueLabel:!!n});return{checkboxButtonSize:W(b(()=>{var n;return(n=u==null?void 0:u.size)==null?void 0:n.value}),{prop:!0}),isChecked:i,isFocused:l,checkboxSize:W(b(()=>{var n;return(n=u==null?void 0:u.size)==null?void 0:n.value})),hasOwnLabel:b(()=>!!t.default||!O(r.value)),actualValue:r}},ke=(e,t)=>{const{formItem:s}=q(),{model:u,isGroup:l,isLimitExceeded:r}=Oe(e),{isFocused:i,isChecked:n,checkboxButtonSize:v,checkboxSize:d,hasOwnLabel:f,actualValue:m}=$e(e,t,{model:u}),{isDisabled:k}=we({model:u,isChecked:n}),{inputId:x,isLabeledByFormItem:a}=me(e,{formItemContext:s,disableIdGeneration:f,disableIdManagement:l}),{handleChange:o,onClickRoot:h}=ze(e,{model:u,isLimitExceeded:r,hasOwnLabel:f,isDisabled:k,isLabeledByFormItem:a});return(()=>{function g(){B(u.value)&&!u.value.includes(m.value)?u.value.push(m.value):u.value=e.trueValue??e.trueLabel??!0}e.checked&&g()})(),F({from:"label act as value",replacement:"value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},b(()=>l.value&&O(e.value))),F({from:"true-label",replacement:"true-value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},b(()=>!!e.trueLabel)),F({from:"false-label",replacement:"false-value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},b(()=>!!e.falseLabel)),{inputId:x,isLabeledByFormItem:a,isChecked:n,isDisabled:k,isFocused:i,checkboxButtonSize:v,checkboxSize:d,hasOwnLabel:f,model:u,actualValue:m,handleChange:o,onClickRoot:h}},Ue=["id","indeterminate","name","tabindex","disabled"];var Ae=K({name:"ElCheckbox",__name:"checkbox",props:fe,emits:he,setup(e){const t=e,{inputId:s,isLabeledByFormItem:u,isChecked:l,isDisabled:r,isFocused:i,checkboxSize:n,hasOwnLabel:v,model:d,actualValue:f,handleChange:m,onClickRoot:k}=ke(t,te()),x=b(()=>t.trueValue||t.falseValue||t.trueLabel||t.falseLabel?{"true-value":t.trueValue??t.trueLabel??!0,"false-value":t.falseValue??t.falseLabel??!1}:{value:f.value}),a=M("checkbox"),o=b(()=>[a.b(),a.m(n.value),a.is("disabled",r.value),a.is("bordered",t.border),a.is("checked",l.value)]),h=b(()=>[a.e("input"),a.is("disabled",r.value),a.is("checked",l.value),a.is("indeterminate",t.indeterminate),a.is("focus",i.value)]);return(C,g)=>(y(),$(A(!c(v)&&c(u)?"span":"label"),{for:!c(v)&&c(u)?null:c(s),class:p(o.value),"aria-controls":e.indeterminate?e.ariaControls:null,"aria-checked":e.indeterminate?"mixed":void 0,"aria-label":e.ariaLabel,onClick:c(k)},{default:le(()=>[N("span",{class:p(h.value)},[ne(N("input",T({id:c(s),"onUpdate:modelValue":g[0]||(g[0]=L=>se(d)?d.value=L:null),class:c(a).e("original"),type:"checkbox",indeterminate:e.indeterminate,name:e.name,tabindex:e.tabindex,disabled:c(r)},x.value,{onChange:g[1]||(g[1]=(...L)=>c(m)&&c(m)(...L)),onFocus:g[2]||(g[2]=L=>i.value=!0),onBlur:g[3]||(g[3]=L=>i.value=!1),onClick:g[4]||(g[4]=ue(()=>{},["stop"]))}),null,16,Ue),[[oe,c(d)]]),N("span",{class:p(c(a).e("inner"))},null,2)],2),c(v)?(y(),E("span",{key:0,class:p(c(a).e("label"))},[j(C.$slots,"default"),C.$slots.default?U("v-if",!0):(y(),E(ie,{key:0},[re(de(e.label),1)],64))],2)):U("v-if",!0)]),_:3},8,["for","class","aria-controls","aria-checked","aria-label","onClick"]))}}),xe=Ae;const Re=["name","tabindex","disabled"];var Ke=K({name:"ElCheckboxButton",__name:"checkbox-button",props:fe,emits:he,setup(e){const t=e,{isFocused:s,isChecked:u,isDisabled:l,checkboxButtonSize:r,model:i,actualValue:n,handleChange:v}=ke(t,te()),d=b(()=>t.trueValue||t.falseValue||t.trueLabel||t.falseLabel?{"true-value":t.trueValue??t.trueLabel??!0,"false-value":t.falseValue??t.falseLabel??!1}:{value:n.value}),f=V(S,void 0),m=M("checkbox"),k=b(()=>{var o,h;const a=((o=f==null?void 0:f.fill)==null?void 0:o.value)??"";return{backgroundColor:a,borderColor:a,color:((h=f==null?void 0:f.textColor)==null?void 0:h.value)??"",boxShadow:a?`-1px 0 0 0 ${a}`:void 0}}),x=b(()=>[m.b("button"),m.bm("button",r.value),m.is("disabled",l.value),m.is("checked",u.value),m.is("focus",s.value)]);return(a,o)=>(y(),E("label",{class:p(x.value)},[ne(N("input",T({"onUpdate:modelValue":o[0]||(o[0]=h=>se(i)?i.value=h:null),class:c(m).be("button","original"),type:"checkbox",name:e.name,tabindex:e.tabindex,disabled:c(l)},d.value,{onChange:o[1]||(o[1]=(...h)=>c(v)&&c(v)(...h)),onFocus:o[2]||(o[2]=h=>s.value=!0),onBlur:o[3]||(o[3]=h=>s.value=!1),onClick:o[4]||(o[4]=ue(()=>{},["stop"]))}),null,16,Re),[[oe,c(i)]]),a.$slots.default||e.label?(y(),E("span",{key:0,class:p(c(m).be("button","inner")),style:Ve(c(u)?k.value:void 0)},[j(a.$slots,"default",{},()=>[re(de(e.label),1)])],6)):U("v-if",!0)],2))}}),H=Ke,Me=K({name:"ElCheckboxGroup",__name:"checkbox-group",props:Fe,emits:Pe,setup(e,{emit:t}){const s=e,u=t,l=M("checkbox"),r=ve(),{formItem:i}=q(),{inputId:n,isLabeledByFormItem:v}=me(s,{formItemContext:i}),d=async a=>{u(I,a),await G(),u(R,a)},f=b({get(){return s.modelValue},set(a){d(a)}}),m=b(()=>({...ge,...s.props})),k=a=>{const{label:o,value:h,disabled:C}=m.value,g={label:a[o],value:a[h],disabled:a[C]};return{...De(a,[o,h,C]),...g}},x=b(()=>s.type==="button"?H:xe);return Se(S,{...Ne(Le(s),["size","min","max","validateEvent","fill","textColor"]),disabled:r,modelValue:f,changeEvent:d}),_(()=>s.modelValue,(a,o)=>{s.validateEvent&&!ae(a,o)&&(i==null||i.validate("change").catch(ee))}),(a,o)=>{var h;return y(),$(A(e.tag),{id:c(n),class:p(c(l).b("group")),role:"group","aria-label":c(v)?void 0:e.ariaLabel||"checkbox-group","aria-labelledby":c(v)?(h=c(i))==null?void 0:h.labelId:void 0},{default:le(()=>[j(a.$slots,"default",{},()=>[(y(!0),E(ie,null,Be(e.options,(C,g)=>(y(),$(A(x.value),T({key:g},{ref_for:!0},k(C)),null,16))),128))])]),_:3},8,["id","class","aria-label","aria-labelledby"])}}}),Ce=Me;const Ye=Ee(xe,{CheckboxButton:H,CheckboxGroup:Ce});ce(H);const Qe=ce(Ce);export{Ye as E,Qe as a}; diff --git a/frontend/dist/assets/el-descriptions-3GOD-6nw.js b/frontend/dist/assets/el-descriptions-3GOD-6nw.js new file mode 100644 index 0000000..69b9dfb --- /dev/null +++ b/frontend/dist/assets/el-descriptions-3GOD-6nw.js @@ -0,0 +1 @@ +import{b as B,aR as H,d as P,R as J,am as A,a as L,K as x,I as D,a8 as Q,B as q,f as d,o as c,c as f,q as v,M as g,ad as z,e as I,s as j,bl as T,n as _,h as F,x as K,aa as M,g as X,j as Y,F as Z,ab as ee,l as te}from"./index-BKKvzUDD.js";import{g as se,f as le}from"./vnode-78qeDweP.js";import{e as ae}from"./index-BjEW7-SA.js";const O=["left","center","right"],re=B({border:Boolean,column:{type:Number,default:3},direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},size:H,title:{type:String,default:""},extra:{type:String,default:""},labelWidth:{type:[String,Number]}}),U="ElDescriptionsItem",ne=B({label:{type:String,default:""},span:{type:Number,default:1},rowspan:{type:Number,default:1},width:{type:[String,Number],default:""},minWidth:{type:[String,Number],default:""},labelWidth:{type:[String,Number]},align:{type:String,values:O,default:"left"},labelAlign:{type:String,values:O},className:{type:String,default:""},labelClassName:{type:String,default:""}}),G=P({name:U,props:ne}),R=Symbol("elDescriptions"),ie=B({row:{type:J(Array),default:()=>[]}});var E=P({name:"ElDescriptionsCell",props:{cell:{type:Object},tag:{type:String,default:"td"},type:{type:String}},setup(){return{descriptions:q(R,{})}},render(){var y;const e=se(this.cell),u=(((y=this.cell)==null?void 0:y.dirs)||[]).map(n=>{const{dir:a,arg:l,modifiers:W,value:$}=n;return[a,$,l,W]}),{border:m,direction:C}=this.descriptions,r=C==="vertical",h=()=>{var n,a,l;return((l=(a=(n=this.cell)==null?void 0:n.children)==null?void 0:a.label)==null?void 0:l.call(a))||e.label},k=()=>{var n,a,l;return(l=(a=(n=this.cell)==null?void 0:n.children)==null?void 0:a.default)==null?void 0:l.call(a)},S=e.span,s=e.rowspan,b=e.align?`is-${e.align}`:"",p=e.labelAlign?`is-${e.labelAlign}`:b,i=e.className,w=e.labelClassName,o={width:A(this.type==="label"?e.labelWidth??this.descriptions.labelWidth??e.width:e.width),minWidth:A(e.minWidth)},t=L("descriptions");switch(this.type){case"label":return x(D(this.tag,{style:o,class:[t.e("cell"),t.e("label"),t.is("bordered-label",m),t.is("vertical-label",r),p,w],colSpan:r?S:1,rowspan:r?1:s},h()),u);case"content":return x(D(this.tag,{style:o,class:[t.e("cell"),t.e("content"),t.is("bordered-content",m),t.is("vertical-content",r),b,i],colSpan:r?S:S*2-1,rowspan:r?s*2-1:s},k()),u);default:{const n=h(),a={},l=A(e.labelWidth??this.descriptions.labelWidth);return l&&(a.width=l,a.display="inline-block"),x(D("td",{style:o,class:[t.e("cell"),b],colSpan:S,rowspan:s},[Q(n)?void 0:D("span",{style:a,class:[t.e("label"),w]},n),D("span",{class:[t.e("content"),i]},k())]),u)}}}});const oe={key:1};var ce=P({name:"ElDescriptionsRow",__name:"descriptions-row",props:ie,setup(e){const u=q(R,{});return(m,C)=>d(u).direction==="vertical"?(c(),f(g,{key:0},[v("tr",null,[(c(!0),f(g,null,z(e.row,(r,h)=>(c(),I(d(E),{key:`tr1-${h}`,cell:r,tag:"th",type:"label"},null,8,["cell"]))),128))]),v("tr",null,[(c(!0),f(g,null,z(e.row,(r,h)=>(c(),I(d(E),{key:`tr2-${h}`,cell:r,tag:"td",type:"content"},null,8,["cell"]))),128))])],64)):(c(),f("tr",oe,[(c(!0),f(g,null,z(e.row,(r,h)=>(c(),f(g,{key:`tr3-${h}`},[d(u).border?(c(),f(g,{key:0},[j(d(E),{cell:r,tag:"td",type:"label"},null,8,["cell"]),j(d(E),{cell:r,tag:"td",type:"content"},null,8,["cell"])],64)):(c(),I(d(E),{key:1,cell:r,tag:"td",type:"both"},null,8,["cell"]))],64))),128))]))}}),pe=ce,de=P({name:"ElDescriptions",__name:"description",props:re,setup(e){const u=e,m=L("descriptions"),C=ae(),r=T();Z(R,u);const h=Y(()=>[m.b(),m.m(C.value)]),k=(s,b,p,i=!1)=>(s.props||(s.props={}),b>p&&(s.props.span=p),i&&(s.props.span=b),s),S=()=>{if(!r.default)return[];const s=le(r.default()).filter(t=>{var y;return((y=t==null?void 0:t.type)==null?void 0:y.name)===U}),b=[];let p=[],i=u.column,w=0;const o=[];return s.forEach((t,y)=>{var W,$,V;const n=((W=t.props)==null?void 0:W.span)||1,a=(($=t.props)==null?void 0:$.rowspan)||1,l=b.length;if(o[l]||(o[l]=0),a>1)for(let N=1;N0&&(i-=o[l],o[l]=0),yi?i:n),y===s.length-1){const N=u.column-w%u.column;p.push(k(t,N,i,!0)),b.push(p);return}n(c(),f("div",{class:_(h.value)},[e.title||e.extra||s.$slots.title||s.$slots.extra?(c(),f("div",{key:0,class:_(d(m).e("header"))},[v("div",{class:_(d(m).e("title"))},[F(s.$slots,"title",{},()=>[K(M(e.title),1)])],2),v("div",{class:_(d(m).e("extra"))},[F(s.$slots,"extra",{},()=>[K(M(e.extra),1)])],2)],2)):X("v-if",!0),v("div",{class:_(d(m).e("body"))},[v("table",{class:_([d(m).e("table"),d(m).is("bordered",e.border)])},[v("tbody",null,[(c(!0),f(g,null,z(S(),(p,i)=>(c(),I(pe,{key:i,row:p},null,8,["row"]))),128))])],2)],2)],2))}}),ue=de;const fe=te(ue,{DescriptionsItem:G}),ye=ee(G);export{ye as E,fe as a}; diff --git a/frontend/dist/assets/el-descriptions-BpDzfuC8.css b/frontend/dist/assets/el-descriptions-BpDzfuC8.css new file mode 100644 index 0000000..d5f3a4f --- /dev/null +++ b/frontend/dist/assets/el-descriptions-BpDzfuC8.css @@ -0,0 +1 @@ +.el-descriptions__label.el-descriptions__cell.is-bordered-label{color:var(--el-text-color-regular);background:var(--el-descriptions-item-bordered-label-background);font-weight:700}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;font-size:var(--el-font-size-base);color:var(--el-text-color-primary)}.el-descriptions__header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:700}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;text-align:left;font-size:14px;line-height:23px}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px} diff --git a/frontend/dist/assets/el-dialog-DdHdkgt4.css b/frontend/dist/assets/el-dialog-DdHdkgt4.css new file mode 100644 index 0000000..6b6141f --- /dev/null +++ b/frontend/dist/assets/el-dialog-DdHdkgt4.css @@ -0,0 +1 @@ +:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{width:100%;height:100%;opacity:var(--el-popup-modal-opacity);background:var(--el-popup-modal-bg-color);position:fixed;top:0;left:0}.el-popup-parent--hidden{overflow:hidden}.el-dialog{--el-dialog-width:50%;--el-dialog-margin-top:15vh;--el-dialog-bg-color:var(--el-bg-color);--el-dialog-box-shadow:var(--el-box-shadow);--el-dialog-title-font-size:var(--el-font-size-large);--el-dialog-content-font-size:14px;--el-dialog-font-line-height:var(--el-font-line-height-primary);--el-dialog-padding-primary:16px;--el-dialog-border-radius:var(--el-border-radius-base);margin:var(--el-dialog-margin-top,15vh) auto 50px;background:var(--el-dialog-bg-color);border-radius:var(--el-dialog-border-radius);box-shadow:var(--el-dialog-box-shadow);box-sizing:border-box;padding:var(--el-dialog-padding-primary);width:var(--el-dialog-width,50%);overflow-wrap:break-word;position:relative}.el-dialog:focus{outline:none!important}.el-dialog.is-align-center{margin:auto}.el-dialog.is-fullscreen{--el-dialog-width:100%;--el-dialog-margin-top:0;border-radius:0;height:100%;margin-bottom:0;overflow:auto}.el-dialog__wrapper{margin:0;position:fixed;top:0;bottom:0;left:0;right:0;overflow:auto}.el-dialog.is-draggable .el-dialog__header{cursor:move;-webkit-user-select:none;user-select:none}.el-dialog__header{padding-bottom:var(--el-dialog-padding-primary)}.el-dialog__header.show-close{padding-right:calc(var(--el-dialog-padding-primary) + var(--el-message-close-size,16px))}.el-dialog__headerbtn{cursor:pointer;width:48px;height:48px;font-size:var(--el-message-close-size,16px);background:0 0;border:none;outline:none;padding:0;position:absolute;top:0;right:0}.el-dialog__headerbtn .el-dialog__close{color:var(--el-color-info);font-size:inherit}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:var(--el-color-primary)}.el-dialog__title{line-height:var(--el-dialog-font-line-height);font-size:var(--el-dialog-title-font-size);color:var(--el-text-color-primary)}.el-dialog__body{color:var(--el-text-color-regular);font-size:var(--el-dialog-content-font-size)}.el-dialog__footer{padding-top:var(--el-dialog-padding-primary);text-align:right;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial}.el-dialog--center .el-dialog__footer{text-align:inherit}.el-modal-dialog.is-penetrable{pointer-events:none}.el-modal-dialog.is-penetrable .el-dialog{pointer-events:auto}.el-overlay-dialog{position:fixed;top:0;bottom:0;left:0;right:0;overflow:auto}.el-overlay-dialog.is-closing .el-dialog{pointer-events:none}.dialog-fade-enter-active{animation:modal-fade-in var(--el-transition-duration)}.dialog-fade-enter-active .el-overlay-dialog{animation:dialog-fade-in var(--el-transition-duration)}.dialog-fade-leave-active{animation:modal-fade-out var(--el-transition-duration)}.dialog-fade-leave-active .el-overlay-dialog{animation:dialog-fade-out var(--el-transition-duration)}@keyframes dialog-fade-in{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translate(0)}}@keyframes dialog-fade-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translateY(-20px)}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}} diff --git a/frontend/dist/assets/el-dialog-X3Nt8ib9.js b/frontend/dist/assets/el-dialog-X3Nt8ib9.js new file mode 100644 index 0000000..3d75d9e --- /dev/null +++ b/frontend/dist/assets/el-dialog-X3Nt8ib9.js @@ -0,0 +1 @@ +import{d as L,aW as H,B as q,o as u,c as A,q as R,h as i,n as t,f as e,aa as Q,s as $,w as r,e as B,r as X,bk as x,E as _,g as N,al as O,j as E,bl as ee,a as oe,K as se,Y as K,a$ as ae,L as le,Z as te,bm as ne,y as M,F as re,l as ie}from"./index-BKKvzUDD.js";import{u as de}from"./index-BjEW7-SA.js";import{E as ce,u as ue}from"./index-DfyOU94W.js";import{F as fe,f as ge}from"./index-CWUnzf90.js";import{d as me,a as ve,b as j,c as be,e as ye,u as Ce}from"./use-dialog-DmridEEy.js";import{u as he}from"./index-CQXVR1Ud.js";const pe=(...o)=>f=>{o.forEach(g=>{g.value=f})},ke=["aria-level"],we=["aria-label"],Re=["id"];var $e=L({name:"ElDialogContent",__name:"dialog-content",props:ve,emits:me,setup(o,{expose:f}){const{t:g}=H(),{Close:F}=x,a=o,{dialogRef:m,headerRef:y,bodyId:v,ns:s,style:C}=q(j),{focusTrapRef:h}=q(fe),D=pe(h,m),p=E(()=>!!a.draggable),{resetPosition:k,updatePosition:I,isDragging:P}=he(m,y,p,E(()=>!!a.overflow)),T=E(()=>[s.b(),s.is("fullscreen",a.fullscreen),s.is("draggable",p.value),s.is("dragging",P.value),s.is("align-center",!!a.alignCenter),{[s.m("center")]:a.center}]);return f({resetPosition:k,updatePosition:I}),(n,w)=>(u(),A("div",{ref:e(D),class:t(T.value),style:O(e(C)),tabindex:"-1"},[R("header",{ref_key:"headerRef",ref:y,class:t([e(s).e("header"),o.headerClass,{"show-close":o.showClose}])},[i(n.$slots,"header",{},()=>[R("span",{role:"heading","aria-level":o.ariaLevel,class:t(e(s).e("title"))},Q(o.title),11,ke)]),o.showClose?(u(),A("button",{key:0,"aria-label":e(g)("el.dialog.close"),class:t(e(s).e("headerbtn")),type:"button",onClick:w[0]||(w[0]=z=>n.$emit("close"))},[$(e(_),{class:t(e(s).e("close"))},{default:r(()=>[(u(),B(X(o.closeIcon||e(F))))]),_:1},8,["class"])],10,we)):N("v-if",!0)],2),R("div",{id:e(v),class:t([e(s).e("body"),o.bodyClass])},[i(n.$slots,"default")],10,Re),n.$slots.footer?(u(),A("footer",{key:0,class:t([e(s).e("footer"),o.footerClass])},[i(n.$slots,"footer")],2)):N("v-if",!0)],6))}}),Ee=$e;const Fe=["aria-label","aria-labelledby","aria-describedby"];var De=L({name:"ElDialog",inheritAttrs:!1,__name:"dialog",props:ye,emits:be,setup(o,{expose:f}){const g=o,F=ee();de({scope:"el-dialog",from:"the title slot",replacement:"the header slot",version:"3.0.0",ref:"https://element-plus.org/en-US/component/dialog.html#slots"},E(()=>!!F.title));const a=oe("dialog"),m=M(),y=M(),v=M(),{visible:s,titleId:C,bodyId:h,style:D,overlayDialogStyle:p,rendered:k,transitionConfig:I,zIndex:P,_draggable:T,_alignCenter:n,_overflow:w,penetrable:z,handleClose:S,onModalClick:V,onOpenAutoFocus:U,onCloseAutoFocus:Y,onCloseRequested:J,onFocusoutPrevented:W,bringToFront:Z,closing:G}=Ce(g,m);re(j,{dialogRef:m,headerRef:y,bodyId:h,ns:a,rendered:k,style:D});const d=ue(V);return f({visible:s,dialogContentRef:v,resetPosition:()=>{var l;(l=v.value)==null||l.resetPosition()},handleClose:S}),(l,c)=>(u(),B(ne,{to:o.appendTo,disabled:o.appendTo!=="body"?!1:!o.appendToBody},[$(te,K(e(I),{persisted:""}),{default:r(()=>[se($(e(ce),{"custom-mask-event":"",mask:o.modal,"overlay-class":[o.modalClass??"",`${e(a).namespace.value}-modal-dialog`,e(a).is("penetrable",e(z))],"z-index":e(P)},{default:r(()=>[R("div",{role:"dialog","aria-modal":"true","aria-label":o.title||void 0,"aria-labelledby":o.title?void 0:e(C),"aria-describedby":e(h),class:t([`${e(a).namespace.value}-overlay-dialog`,e(a).is("closing",e(G))]),style:O(e(p)),onClick:c[0]||(c[0]=(...b)=>e(d).onClick&&e(d).onClick(...b)),onMousedown:c[1]||(c[1]=(...b)=>e(d).onMousedown&&e(d).onMousedown(...b)),onMouseup:c[2]||(c[2]=(...b)=>e(d).onMouseup&&e(d).onMouseup(...b))},[$(e(ge),{loop:"",trapped:e(s),"focus-start-el":"container",onFocusAfterTrapped:e(U),onFocusAfterReleased:e(Y),onFocusoutPrevented:e(W),onReleaseRequested:e(J)},{default:r(()=>[e(k)?(u(),B(Ee,K({key:0,ref_key:"dialogContentRef",ref:v},l.$attrs,{center:o.center,"align-center":e(n),"close-icon":o.closeIcon,draggable:e(T),overflow:e(w),fullscreen:o.fullscreen,"header-class":o.headerClass,"body-class":o.bodyClass,"footer-class":o.footerClass,"show-close":o.showClose,title:o.title,"aria-level":o.headerAriaLevel,onClose:e(S),onMousedown:e(Z)}),ae({header:r(()=>[l.$slots.title?i(l.$slots,"title",{key:1}):i(l.$slots,"header",{key:0,close:e(S),titleId:e(C),titleClass:e(a).e("title")})]),default:r(()=>[i(l.$slots,"default")]),_:2},[l.$slots.footer?{name:"footer",fn:r(()=>[i(l.$slots,"footer")]),key:"0"}:void 0]),1040,["center","align-center","close-icon","draggable","overflow","fullscreen","header-class","body-class","footer-class","show-close","title","aria-level","onClose","onMousedown"])):N("v-if",!0)]),_:3},8,["trapped","onFocusAfterTrapped","onFocusAfterReleased","onFocusoutPrevented","onReleaseRequested"])],46,Fe)]),_:3},8,["mask","overlay-class","z-index"]),[[le,e(s)]])]),_:3},16)],8,["to","disabled"]))}}),Ie=De;const ze=ie(Ie);export{ze as E,pe as c}; diff --git a/frontend/dist/assets/el-divider-B0pQhKGi.css b/frontend/dist/assets/el-divider-B0pQhKGi.css new file mode 100644 index 0000000..3b3325b --- /dev/null +++ b/frontend/dist/assets/el-divider-B0pQhKGi.css @@ -0,0 +1 @@ +.el-divider{position:relative}.el-divider--horizontal{border-top:1px var(--el-border-color) var(--el-border-style);width:100%;height:1px;margin:24px 0;display:block}.el-divider--vertical{vertical-align:middle;border-left:1px var(--el-border-color) var(--el-border-style);width:1px;height:1em;margin:0 8px;display:inline-block;position:relative}.el-divider__text{background-color:var(--el-bg-color);color:var(--el-text-color-primary);padding:0 20px;font-size:14px;font-weight:500;position:absolute}.el-divider__text.is-left{left:20px;transform:translateY(-50%)}.el-divider__text.is-center{left:50%;transform:translate(-50%)translateY(-50%)}.el-divider__text.is-right{right:20px;transform:translateY(-50%)} diff --git a/frontend/dist/assets/el-divider-DjByQoml.js b/frontend/dist/assets/el-divider-DjByQoml.js new file mode 100644 index 0000000..38ec1f7 --- /dev/null +++ b/frontend/dist/assets/el-divider-DjByQoml.js @@ -0,0 +1 @@ +import{b as d,R as c,d as u,a as v,o as s,c as i,n as o,f as r,h as p,g as f,al as m,j as y,l as S}from"./index-BKKvzUDD.js";const b=d({direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},contentPosition:{type:String,values:["left","center","right"],default:"center"},borderStyle:{type:c(String),default:"solid"}});var g=u({name:"ElDivider",__name:"divider",props:b,setup(t){const l=t,e=v("divider"),n=y(()=>e.cssVar({"border-style":l.borderStyle}));return(a,P)=>(s(),i("div",{class:o([r(e).b(),r(e).m(t.direction)]),style:m(n.value),role:"separator"},[a.$slots.default&&t.direction!=="vertical"?(s(),i("div",{key:0,class:o([r(e).e("text"),r(e).is(t.contentPosition)])},[p(a.$slots,"default")],2)):f("v-if",!0)],6))}}),h=g;const z=S(h);export{z as E}; diff --git a/frontend/dist/assets/el-drawer-4RO73nWn.css b/frontend/dist/assets/el-drawer-4RO73nWn.css new file mode 100644 index 0000000..cd37044 --- /dev/null +++ b/frontend/dist/assets/el-drawer-4RO73nWn.css @@ -0,0 +1 @@ +.el-overlay.is-drawer{overflow:hidden}.el-drawer{--el-drawer-bg-color:var(--el-dialog-bg-color,var(--el-bg-color));--el-drawer-padding-primary:var(--el-dialog-padding-primary,20px);--el-drawer-dragger-size:8px;box-sizing:border-box;background-color:var(--el-drawer-bg-color);box-shadow:var(--el-box-shadow-dark);transition:all var(--el-transition-duration);flex-direction:column;display:flex;position:absolute}.el-drawer .rtl,.el-drawer .ltr,.el-drawer .ttb,.el-drawer .btt{transform:translate(0)}.el-drawer__sr-focus:focus{outline:none!important}.el-drawer__header{color:var(--el-text-color-primary);padding:var(--el-drawer-padding-primary);align-items:center;margin-bottom:32px;padding-bottom:0;display:flex;overflow:hidden}.el-drawer__header>:first-child{flex:1}.el-drawer__title{line-height:inherit;flex:1;margin:0;font-size:16px}.el-drawer__footer{padding:var(--el-drawer-padding-primary);text-align:right;padding-top:10px;overflow:hidden}.el-drawer__close-btn{cursor:pointer;font-size:var(--el-font-size-extra-large);color:inherit;background-color:#0000;border:none;outline:none;display:inline-flex}.el-drawer__close-btn:focus i,.el-drawer__close-btn:hover i{color:var(--el-color-primary)}.el-drawer__body{padding:var(--el-drawer-padding-primary);flex:1;overflow:auto}.el-drawer__body>*{box-sizing:border-box}.el-drawer.is-dragging{transition:none}.el-drawer__dragger{-webkit-user-select:none;user-select:none;background-color:#0000;transition:all .2s;position:absolute}.el-drawer__dragger:before{content:"";background-color:#0000;transition:all .2s;position:absolute}.el-drawer__dragger:hover:before{background-color:var(--el-color-primary)}.el-drawer.ltr,.el-drawer.rtl{height:100%;top:0;bottom:0}.el-drawer.ltr>.el-drawer__dragger,.el-drawer.rtl>.el-drawer__dragger{height:100%;width:var(--el-drawer-dragger-size);cursor:ew-resize;top:0;bottom:0}.el-drawer.ltr>.el-drawer__dragger:before,.el-drawer.rtl>.el-drawer__dragger:before{width:3px;top:0;bottom:0}.el-drawer.ttb,.el-drawer.btt{width:100%;left:0;right:0}.el-drawer.ttb>.el-drawer__dragger,.el-drawer.btt>.el-drawer__dragger{width:100%;height:var(--el-drawer-dragger-size);cursor:ns-resize;left:0;right:0}.el-drawer.ttb>.el-drawer__dragger:before,.el-drawer.btt>.el-drawer__dragger:before{height:3px;left:0;right:0}.el-drawer.ltr{left:0}.el-drawer.ltr>.el-drawer__dragger{right:0}.el-drawer.ltr>.el-drawer__dragger:before{right:-2px}.el-drawer.rtl{right:0}.el-drawer.rtl>.el-drawer__dragger{left:0}.el-drawer.rtl>.el-drawer__dragger:before{left:-2px}.el-drawer.ttb{top:0}.el-drawer.ttb>.el-drawer__dragger{bottom:0}.el-drawer.ttb>.el-drawer__dragger:before{bottom:-2px}.el-drawer.btt{bottom:0}.el-drawer.btt>.el-drawer__dragger{top:0}.el-drawer.btt>.el-drawer__dragger:before{top:-2px}.el-modal-drawer.is-penetrable{pointer-events:none}.el-modal-drawer.is-penetrable .el-drawer{pointer-events:auto}.el-drawer-fade-enter-active,.el-drawer-fade-leave-active{transition:all var(--el-transition-duration)}.el-drawer-fade-enter-from,.el-drawer-fade-enter-active,.el-drawer-fade-enter-to,.el-drawer-fade-leave-from,.el-drawer-fade-leave-active,.el-drawer-fade-leave-to{overflow:hidden!important}.el-drawer-fade-enter-from,.el-drawer-fade-leave-to{background-color:#0000!important}.el-drawer-fade-enter-from .rtl,.el-drawer-fade-leave-to .rtl{transform:translate(100%)}.el-drawer-fade-enter-from .ltr,.el-drawer-fade-leave-to .ltr{transform:translate(-100%)}.el-drawer-fade-enter-from .ttb,.el-drawer-fade-leave-to .ttb{transform:translateY(-100%)}.el-drawer-fade-enter-from .btt,.el-drawer-fade-leave-to .btt{transform:translateY(100%)} diff --git a/frontend/dist/assets/el-drawer-BbN11Mg2.js b/frontend/dist/assets/el-drawer-BbN11Mg2.js new file mode 100644 index 0000000..74b2c4e --- /dev/null +++ b/frontend/dist/assets/el-drawer-BbN11Mg2.js @@ -0,0 +1 @@ +import{b as V,D as W,aS as I,H as X,j as d,y as u,bG as j,am as G,bH as K,d as Z,bl as J,a as Q,aW as _,o as p,e as ee,s as S,w as D,K as ae,f as e,q as N,Y as te,aL as se,n as r,c as R,h as F,aa as oe,g as z,E as le,b6 as re,al as ne,L as ie,Z as de,bm as ue,l as fe}from"./index-BKKvzUDD.js";import{u as ce}from"./index-BjEW7-SA.js";import{f as ve}from"./index-CWUnzf90.js";import{E as me}from"./index-DfyOU94W.js";import{c as be,e as we,u as ye}from"./use-dialog-DmridEEy.js";const ge=V({...we,direction:{type:String,default:"rtl",values:["ltr","rtl","ttb","btt"]},resizable:Boolean,size:{type:[String,Number],default:"30%"},withHeader:{type:Boolean,default:!0},modalFade:{type:Boolean,default:!0},headerAriaLevel:{type:String,default:"2"}}),he={...be,"resize-start":(a,o)=>a instanceof MouseEvent&&typeof o=="number",resize:(a,o)=>a instanceof MouseEvent&&typeof o=="number","resize-end":(a,o)=>a instanceof MouseEvent&&typeof o=="number"};function pe(a,o,E){const{width:f,height:P}=K(),c=d(()=>["ltr","rtl"].includes(a.direction)),k=d(()=>["ltr","ttb"].includes(a.direction)?1:-1),A=d(()=>c.value?f.value:P.value),v=d(()=>j(t.value+k.value*m.value,4,A.value)),t=u(0),m=u(0),b=u(!1),w=u(!1);let y=[],n=[];const $=()=>{var l;const s=(l=o.value)==null?void 0:l.closest('[aria-modal="true"]');return s?c.value?s.offsetWidth:s.offsetHeight:100};W(()=>[a.size,a.resizable],()=>{w.value=!1,t.value=0,m.value=0,g()});const C=s=>{a.resizable&&(w.value||(t.value=$(),w.value=!0),y=[s.pageX,s.pageY],b.value=!0,E("resize-start",s,t.value),n.push(I(window,"mouseup",g),I(window,"mousemove",L)))},L=s=>{const{pageX:l,pageY:T}=s,H=l-y[0],h=T-y[1];m.value=c.value?H:h,E("resize",s,v.value)},g=s=>{b.value&&(y=[],t.value=v.value,m.value=0,b.value=!1,n.forEach(l=>l==null?void 0:l()),n=[],s&&E("resize-end",s,t.value))},M=I(o,"mousedown",C);return X(()=>{M(),g()}),{size:d(()=>w.value?`${v.value}px`:G(a.size)),isResizing:b,isHorizontal:c}}const ze=["aria-label","aria-labelledby","aria-describedby"],Ee=["id","aria-level"],ke=["aria-label"],Ce=["id"];var Se=Z({name:"ElDrawer",inheritAttrs:!1,__name:"drawer",props:ge,emits:he,setup(a,{expose:o,emit:E}){const f=a,P=E,c=J();ce({scope:"el-drawer",from:"the title slot",replacement:"the header slot",version:"3.0.0",ref:"https://element-plus.org/en-US/component/drawer.html#slots"},d(()=>!!c.title));const k=u(),A=u(),v=u(),t=Q("drawer"),{t:m}=_(),{afterEnter:b,afterLeave:w,beforeLeave:y,visible:n,rendered:$,titleId:C,bodyId:L,zIndex:g,onModalClick:M,onOpenAutoFocus:s,onCloseAutoFocus:l,onFocusoutPrevented:T,onCloseRequested:H,handleClose:h}=ye(f,k),{isHorizontal:q,size:U,isResizing:Y}=pe(f,v,P),x=d(()=>f.modalPenetrable&&!f.modal);return o({handleClose:h}),(i,B)=>(p(),ee(ue,{to:a.appendTo,disabled:a.appendTo!=="body"?!1:!a.appendToBody},[S(de,{name:e(t).b("fade"),onAfterEnter:e(b),onAfterLeave:e(w),onBeforeLeave:e(y),persisted:""},{default:D(()=>[ae(S(e(me),{mask:a.modal,"overlay-class":[e(t).is("drawer"),a.modalClass??"",`${e(t).namespace.value}-modal-drawer`,e(t).is("penetrable",x.value)],"z-index":e(g),onClick:e(M)},{default:D(()=>[S(e(ve),{loop:"",trapped:e(n),"focus-trap-el":k.value,"focus-start-el":A.value,onFocusAfterTrapped:e(s),onFocusAfterReleased:e(l),onFocusoutPrevented:e(T),onReleaseRequested:e(H)},{default:D(()=>[N("div",te({ref_key:"drawerRef",ref:k,"aria-modal":"true","aria-label":a.title||void 0,"aria-labelledby":a.title?void 0:e(C),"aria-describedby":e(L)},i.$attrs,{class:[e(t).b(),a.direction,e(n)&&"open",e(t).is("dragging",e(Y))],style:{[e(q)?"width":"height"]:e(U)},role:"dialog",onClick:B[1]||(B[1]=se(()=>{},["stop"]))}),[N("span",{ref_key:"focusStartRef",ref:A,class:r(e(t).e("sr-focus")),tabindex:"-1"},null,2),a.withHeader?(p(),R("header",{key:0,class:r([e(t).e("header"),a.headerClass])},[i.$slots.title?F(i.$slots,"title",{key:1},()=>[z(" DEPRECATED SLOT ")]):F(i.$slots,"header",{key:0,close:e(h),titleId:e(C),titleClass:e(t).e("title")},()=>[N("span",{id:e(C),role:"heading","aria-level":a.headerAriaLevel,class:r(e(t).e("title"))},oe(a.title),11,Ee)]),a.showClose?(p(),R("button",{key:2,"aria-label":e(m)("el.drawer.close"),class:r(e(t).e("close-btn")),type:"button",onClick:B[0]||(B[0]=(...O)=>e(h)&&e(h)(...O))},[S(e(le),{class:r(e(t).e("close"))},{default:D(()=>[S(e(re))]),_:1},8,["class"])],10,ke)):z("v-if",!0)],2)):z("v-if",!0),e($)?(p(),R("div",{key:1,id:e(L),class:r([e(t).e("body"),a.bodyClass])},[F(i.$slots,"default")],10,Ce)):z("v-if",!0),i.$slots.footer?(p(),R("div",{key:2,class:r([e(t).e("footer"),a.footerClass])},[F(i.$slots,"footer")],2)):z("v-if",!0),a.resizable?(p(),R("div",{key:3,ref_key:"draggerRef",ref:v,style:ne({zIndex:e(g)}),class:r(e(t).e("dragger"))},null,6)):z("v-if",!0)],16,ze)]),_:3},8,["trapped","focus-trap-el","focus-start-el","onFocusAfterTrapped","onFocusAfterReleased","onFocusoutPrevented","onReleaseRequested"])]),_:3},8,["mask","overlay-class","z-index","onClick"]),[[ie,e(n)]])]),_:3},8,["name","onAfterEnter","onAfterLeave","onBeforeLeave"])],8,["to","disabled"]))}}),Re=Se;const Pe=fe(Re);export{Pe as E}; diff --git a/frontend/dist/assets/el-empty-B4M99-0a.js b/frontend/dist/assets/el-empty-B4M99-0a.js new file mode 100644 index 0000000..7c5a7f1 --- /dev/null +++ b/frontend/dist/assets/el-empty-B4M99-0a.js @@ -0,0 +1 @@ +import{b as h,d as p,a as _,o as r,c as n,q as t,f as l,aW as y,h as d,s as g,al as v,n as c,aa as k,g as $,j as f,am as N,l as B}from"./index-BKKvzUDD.js";import{f as w}from"./index-BjEW7-SA.js";const V=h({image:{type:String,default:""},imageSize:Number,description:{type:String,default:""}}),x={viewBox:"0 0 79 86",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},S=["id"],C=["stop-color"],E=["stop-color"],b=["id"],G=["stop-color"],z=["stop-color"],I=["id"],D={stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},P={transform:"translate(-1268.000000, -535.000000)"},j={transform:"translate(1268.000000, 535.000000)"},q=["fill"],L=["fill"],M={transform:"translate(34.500000, 31.500000) scale(-1, 1) rotate(-25.000000) translate(-34.500000, -31.500000) translate(7.000000, 10.000000)"},T=["fill"],U=["fill"],W=["fill"],Z=["fill"],A=["fill"],F={transform:"translate(53.000000, 45.000000)"},H=["fill","xlink:href"],J=["fill","mask"],K=["fill"];var O=p({name:"ImgEmpty",__name:"img-empty",setup(i){const s=_("empty"),e=w();return(o,m)=>(r(),n("svg",x,[t("defs",null,[t("linearGradient",{id:`linearGradient-1-${l(e)}`,x1:"38.8503086%",y1:"0%",x2:"61.1496914%",y2:"100%"},[t("stop",{"stop-color":`var(${l(s).cssVarBlockName("fill-color-1")})`,offset:"0%"},null,8,C),t("stop",{"stop-color":`var(${l(s).cssVarBlockName("fill-color-4")})`,offset:"100%"},null,8,E)],8,S),t("linearGradient",{id:`linearGradient-2-${l(e)}`,x1:"0%",y1:"9.5%",x2:"100%",y2:"90.5%"},[t("stop",{"stop-color":`var(${l(s).cssVarBlockName("fill-color-1")})`,offset:"0%"},null,8,G),t("stop",{"stop-color":`var(${l(s).cssVarBlockName("fill-color-6")})`,offset:"100%"},null,8,z)],8,b),t("rect",{id:`path-3-${l(e)}`,x:"0",y:"0",width:"17",height:"36"},null,8,I)]),t("g",D,[t("g",P,[t("g",j,[t("path",{d:"M39.5,86 C61.3152476,86 79,83.9106622 79,81.3333333 C79,78.7560045 57.3152476,78 35.5,78 C13.6847524,78 0,78.7560045 0,81.3333333 C0,83.9106622 17.6847524,86 39.5,86 Z",fill:`var(${l(s).cssVarBlockName("fill-color-3")})`},null,8,q),t("polygon",{fill:`var(${l(s).cssVarBlockName("fill-color-7")})`,transform:"translate(27.500000, 51.500000) scale(1, -1) translate(-27.500000, -51.500000) ",points:"13 58 53 58 42 45 2 45"},null,8,L),t("g",M,[t("polygon",{fill:`var(${l(s).cssVarBlockName("fill-color-7")})`,transform:"translate(11.500000, 5.000000) scale(1, -1) translate(-11.500000, -5.000000) ",points:"2.84078316e-14 3 18 3 23 7 5 7"},null,8,T),t("polygon",{fill:`var(${l(s).cssVarBlockName("fill-color-5")})`,points:"-3.69149156e-15 7 38 7 38 43 -3.69149156e-15 43"},null,8,U),t("rect",{fill:`url(#linearGradient-1-${l(e)})`,transform:"translate(46.500000, 25.000000) scale(-1, 1) translate(-46.500000, -25.000000) ",x:"38",y:"7",width:"17",height:"36"},null,8,W),t("polygon",{fill:`var(${l(s).cssVarBlockName("fill-color-2")})`,transform:"translate(39.500000, 3.500000) scale(-1, 1) translate(-39.500000, -3.500000) ",points:"24 7 41 7 55 -3.63806207e-12 38 -3.63806207e-12"},null,8,Z)]),t("rect",{fill:`url(#linearGradient-2-${l(e)})`,x:"13",y:"45",width:"40",height:"36"},null,8,A),t("g",F,[t("use",{fill:`var(${l(s).cssVarBlockName("fill-color-8")})`,transform:"translate(8.500000, 18.000000) scale(-1, 1) translate(-8.500000, -18.000000) ","xlink:href":`#path-3-${l(e)}`},null,8,H),t("polygon",{fill:`var(${l(s).cssVarBlockName("fill-color-9")})`,mask:`url(#mask-4-${l(e)})`,transform:"translate(12.000000, 9.000000) scale(-1, 1) translate(-12.000000, -9.000000) ",points:"7 0 24 0 20 18 7 16.5"},null,8,J)]),t("polygon",{fill:`var(${l(s).cssVarBlockName("fill-color-2")})`,transform:"translate(66.000000, 51.500000) scale(-1, 1) translate(-66.000000, -51.500000) ",points:"62 45 79 45 70 58 53 58"},null,8,K)])])])]))}}),Q=O;const R=["src"],X={key:1};var Y=p({name:"ElEmpty",__name:"empty",props:V,setup(i){const s=i,{t:e}=y(),o=_("empty"),m=f(()=>s.description||e("el.table.emptyText")),u=f(()=>({width:N(s.imageSize)}));return(a,l0)=>(r(),n("div",{class:c(l(o).b())},[t("div",{class:c(l(o).e("image")),style:v(u.value)},[i.image?(r(),n("img",{key:0,src:i.image,ondragstart:"return false"},null,8,R)):d(a.$slots,"image",{key:1},()=>[g(Q)])],6),t("div",{class:c(l(o).e("description"))},[a.$slots.description?d(a.$slots,"description",{key:0}):(r(),n("p",X,k(m.value),1))],2),a.$slots.default?(r(),n("div",{key:0,class:c(l(o).e("bottom"))},[d(a.$slots,"default")],2)):$("v-if",!0)],2))}}),t0=Y;const o0=B(t0);export{o0 as E}; diff --git a/frontend/dist/assets/el-empty-S7fQQ3B8.css b/frontend/dist/assets/el-empty-S7fQQ3B8.css new file mode 100644 index 0000000..7947015 --- /dev/null +++ b/frontend/dist/assets/el-empty-S7fQQ3B8.css @@ -0,0 +1 @@ +.el-empty{--el-empty-padding:40px 0;--el-empty-image-width:160px;--el-empty-description-margin-top:20px;--el-empty-bottom-margin-top:20px;--el-empty-fill-color-0:var(--el-color-white);--el-empty-fill-color-1:#fcfcfd;--el-empty-fill-color-2:#f8f9fb;--el-empty-fill-color-3:#f7f8fc;--el-empty-fill-color-4:#eeeff3;--el-empty-fill-color-5:#edeef2;--el-empty-fill-color-6:#e9ebef;--el-empty-fill-color-7:#e5e7e9;--el-empty-fill-color-8:#e0e3e9;--el-empty-fill-color-9:#d5d7de;text-align:center;box-sizing:border-box;padding:var(--el-empty-padding);flex-direction:column;justify-content:center;align-items:center;display:flex}.el-empty__image{width:var(--el-empty-image-width)}.el-empty__image img{-webkit-user-select:none;user-select:none;vertical-align:top;object-fit:contain;width:100%;height:100%}.el-empty__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;vertical-align:top;width:100%;height:100%}.el-empty__description{margin-top:var(--el-empty-description-margin-top)}.el-empty__description p{font-size:var(--el-font-size-base);color:var(--el-text-color-secondary);margin:0}.el-empty__bottom{margin-top:var(--el-empty-bottom-margin-top)} diff --git a/frontend/dist/assets/el-form-item-D5kF3B90.js b/frontend/dist/assets/el-form-item-D5kF3B90.js new file mode 100644 index 0000000..ff31cd7 --- /dev/null +++ b/frontend/dist/assets/el-form-item-D5kF3B90.js @@ -0,0 +1,12 @@ +import{a6 as ee,J as xe,k as Ue,b as Ee,aj as Ge,R as fe,j as A,aK as K,y as B,d as _e,a as Se,D as k,F as Je,z as he,aV as Ke,o as me,c as Ze,h as se,n as X,c2 as Y,bd as Ye,aU as ut,B as ue,C as lt,G as He,H as Xe,aX as dt,a7 as ct,s as le,M as pt,P as Qe,bl as vt,c3 as gt,w as ve,e as ht,r as mt,al as Re,f as T,x as yt,aa as Ie,g as Ne,q as Me,b9 as bt,am as Le,l as wt,ab as Ft}from"./index-BKKvzUDD.js";import{e as ke,g as Pe,h as ye,f as qt}from"./index-BjEW7-SA.js";import{c as de}from"./castArray-5uErZEc3.js";import{b as Ot}from"./_baseClone-B5RBzbh5.js";var Et=1,_t=4;function Z(i){return Ot(i,Et|_t)}const St=Ee({size:{type:String,values:Ge},disabled:Boolean}),Pt=Ee({...St,model:Object,rules:{type:fe(Object)},labelPosition:{type:String,values:["left","right","top"],default:"right"},requireAsteriskPosition:{type:String,values:["left","right"],default:"left"},labelWidth:{type:[String,Number],default:""},labelSuffix:{type:String,default:""},inline:Boolean,inlineMessage:Boolean,statusIcon:Boolean,showMessage:{type:Boolean,default:!0},validateOnRuleChange:{type:Boolean,default:!0},hideRequiredAsterisk:Boolean,scrollToError:Boolean,scrollIntoViewOptions:{type:fe([Object,Boolean]),default:!0}}),At={validate:(i,e,t)=>(ee(i)||xe(i))&&Ue(e)&&xe(t)},jt=["","error","validating","success"],Vt=Ee({label:String,labelWidth:{type:[String,Number]},labelPosition:{type:String,values:["left","right","top",""],default:""},prop:{type:fe([String,Array])},required:{type:Boolean,default:void 0},rules:{type:fe([Object,Array])},error:String,validateStatus:{type:String,values:jt},for:String,inlineMessage:{type:Boolean,default:void 0},showMessage:{type:Boolean,default:!0},size:{type:String,values:Ge}}),xt="ElForm";function Rt(){const i=B([]),e=A(()=>{if(!i.value.length)return"0";const s=Math.max(...i.value);return s?`${s}px`:""});function t(s){const a=i.value.indexOf(s);return a===-1&&e.value==="0"&&K(xt,`unexpected width ${s}`),a}function n(s,a){if(s&&a){const o=t(a);i.value.splice(o,1,s)}else s&&i.value.push(s)}function r(s){const a=t(s);a>-1&&i.value.splice(a,1)}return{autoLabelWidth:e,registerLabelWidth:n,deregisterLabelWidth:r}}const ie=(i,e)=>{const t=de(e).map(n=>ee(n)?n.join("."):n);return t.length>0?i.filter(n=>n.propString&&t.includes(n.propString)):i},G="ElForm";var It=_e({name:G,__name:"form",props:Pt,emits:At,setup(i,{expose:e,emit:t}){const n=i,r=t,s=B(),a=he([]),o=new Map,l=ke(),y=Se("form"),g=A(()=>{const{labelPosition:u,inline:c}=n;return[y.b(),y.m(l.value||"default"),{[y.m(`label-${u}`)]:u,[y.m("inline")]:c}]}),w=u=>ie(a,[u])[0],F=u=>{a.includes(u)||a.push(u),u.propString&&(o.has(u.propString)?u.setInitialValue(o.get(u.propString)):o.set(u.propString,Z(u.fieldValue)))},j=(u,c)=>{if(c){o.delete(c);return}const q=a.indexOf(u);q>-1&&(a.splice(q,1),u.propString&&o.set(u.propString,Z(u.getInitialValue())))},S=u=>{if(!n.model){K(G,"model is required for setInitialValues to work.");return}if(!u){K(G,"initModel is required for setInitialValues to work.");return}for(const c of o.keys())o.set(c,Z(Y(u,c).value));a.forEach(c=>{c.prop&&c.setInitialValue(Y(u,c.prop).value)})},d=(u=[])=>{if(!n.model){K(G,"model is required for resetFields to work.");return}ie(a,u).forEach(E=>E.resetField());const c=new Set(a.map(E=>E.propString).filter(Boolean)),q=u.length>0?de(u).map(E=>ee(E)?E.join("."):E):[...o.keys()];for(const E of q)!c.has(E)&&o.has(E)&&(Y(n.model,E).value=Z(o.get(E)))},b=(u=[])=>{ie(a,u).forEach(c=>c.clearValidate())},f=A(()=>{const u=!!n.model;return u||K(G,"model is required for validate to work."),u}),N=u=>{if(a.length===0)return[];const c=ie(a,u);return c.length?c:(K(G,"please pass correct props!"),[])},h=async u=>P(void 0,u),O=async(u=[])=>{if(!f.value)return!1;const c=N(u);if(c.length===0)return!0;let q={};for(const E of c)try{await E.validate(""),E.validateState==="error"&&!E.error&&E.resetField()}catch(L){q={...q,...L}}return Object.keys(q).length===0?!0:Promise.reject(q)},P=async(u=[],c)=>{var L;let q=!1;const E=!Ye(c);try{return q=await O(u),q===!0&&await(c==null?void 0:c(q)),q}catch(x){if(x instanceof Error)throw x;const R=x;return n.scrollToError&&s.value&&((L=s.value.querySelector(`.${y.b()}-item.is-error`))==null||L.scrollIntoView(n.scrollIntoViewOptions)),!q&&await(c==null?void 0:c(!1,R)),E&&Promise.reject(R)}},_=u=>{var q;const c=w(u);c&&((q=c.$el)==null||q.scrollIntoView(n.scrollIntoViewOptions))};return k(()=>n.rules,()=>{n.validateOnRuleChange&&h().catch(ut)},{deep:!0,flush:"post"}),Je(Pe,he({...Ke(n),emit:r,resetFields:d,clearValidate:b,validateField:P,getField:w,addField:F,removeField:j,setInitialValues:S,...Rt()})),e({validate:h,validateField:P,resetFields:d,clearValidate:b,scrollToField:_,getField:w,fields:a,setInitialValues:S}),(u,c)=>(me(),Ze("form",{ref_key:"formRef",ref:s,class:X(g.value)},[se(u.$slots,"default")],2))}}),Nt=It;const We="ElLabelWrap";var Mt=_e({name:We,props:{isAutoWidth:Boolean,updateAll:Boolean},setup(i,{slots:e}){const t=ue(Pe,void 0),n=ue(ye);n||lt(We,"usage: ");const r=Se("form"),s=B(),a=B(0),o=()=>{var g;if((g=s.value)!=null&&g.firstElementChild){const w=window.getComputedStyle(s.value.firstElementChild).width;return Math.ceil(Number.parseFloat(w))}else return 0},l=(g="update")=>{Qe(()=>{e.default&&i.isAutoWidth&&(g==="update"?a.value=o():g==="remove"&&(t==null||t.deregisterLabelWidth(a.value)))})},y=()=>l("update");return He(()=>{y()}),Xe(()=>{l("remove")}),dt(()=>y()),k(a,(g,w)=>{i.updateAll&&(t==null||t.registerLabelWidth(g,w))}),ct(A(()=>{var g;return((g=s.value)==null?void 0:g.firstElementChild)??null}),y),()=>{var w,F;if(!e)return null;const{isAutoWidth:g}=i;if(g){const j=t==null?void 0:t.autoLabelWidth,S=n==null?void 0:n.hasLabel,d={};if(S&&j&&j!=="auto"){const b=Math.max(0,Number.parseInt(j,10)-a.value),f=(n.labelPosition||t.labelPosition)==="left"?"marginRight":"marginLeft";b&&(d[f]=`${b}px`)}return le("div",{ref:s,class:[r.be("item","label-wrap")],style:d},[(w=e.default)==null?void 0:w.call(e)])}else return le(pt,{ref:s},[(F=e.default)==null?void 0:F.call(e)])}}});function D(){return D=Object.assign?Object.assign.bind():function(i){for(var e=1;e"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function oe(i,e,t){return Wt()?oe=Reflect.construct.bind():oe=function(r,s,a){var o=[null];o.push.apply(o,s);var l=Function.bind.apply(r,o),y=new l;return a&&te(y,a.prototype),y},oe.apply(null,arguments)}function $t(i){return Function.toString.call(i).indexOf("[native code]")!==-1}function we(i){var e=typeof Map=="function"?new Map:void 0;return we=function(n){if(n===null||!$t(n))return n;if(typeof n!="function")throw new TypeError("Super expression must either be null or a function");if(typeof e<"u"){if(e.has(n))return e.get(n);e.set(n,r)}function r(){return oe(n,arguments,be(this).constructor)}return r.prototype=Object.create(n.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),te(r,n)},we(i)}var Bt=/%[sdj%]/g,Tt=function(){};function Fe(i){if(!i||!i.length)return null;var e={};return i.forEach(function(t){var n=t.field;e[n]=e[n]||[],e[n].push(t)}),e}function M(i){for(var e=arguments.length,t=new Array(e>1?e-1:0),n=1;n=s)return o;switch(o){case"%s":return String(t[r++]);case"%d":return Number(t[r++]);case"%j":try{return JSON.stringify(t[r++])}catch{return"[Circular]"}break;default:return o}});return a}return i}function Dt(i){return i==="string"||i==="url"||i==="hex"||i==="email"||i==="date"||i==="pattern"}function V(i,e){return!!(i==null||e==="array"&&Array.isArray(i)&&!i.length||Dt(e)&&typeof i=="string"&&!i)}function zt(i,e,t){var n=[],r=0,s=i.length;function a(o){n.push.apply(n,o||[]),r++,r===s&&t(n)}i.forEach(function(o){e(o,a)})}function $e(i,e,t){var n=0,r=i.length;function s(a){if(a&&a.length){t(a);return}var o=n;n=n+1,o()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},Q={integer:function(e){return Q.number(e)&&parseInt(e,10)===e},float:function(e){return Q.number(e)&&!Q.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch{return!1}},date:function(e){return typeof e.getTime=="function"&&typeof e.getMonth=="function"&&typeof e.getYear=="function"&&!isNaN(e.getTime())},number:function(e){return isNaN(e)?!1:typeof e=="number"},object:function(e){return typeof e=="object"&&!Q.array(e)},method:function(e){return typeof e=="function"},email:function(e){return typeof e=="string"&&e.length<=320&&!!e.match(ze.email)},url:function(e){return typeof e=="string"&&e.length<=2048&&!!e.match(Yt())},hex:function(e){return typeof e=="string"&&!!e.match(ze.hex)}},Ht=function(e,t,n,r,s){if(e.required&&t===void 0){Ce(e,t,n,r,s);return}var a=["integer","float","array","regexp","object","method","email","number","date","url","hex"],o=e.type;a.indexOf(o)>-1?Q[o](t)||r.push(M(s.messages.types[o],e.fullField,e.type)):o&&typeof t!==e.type&&r.push(M(s.messages.types[o],e.fullField,e.type))},Xt=function(e,t,n,r,s){var a=typeof e.len=="number",o=typeof e.min=="number",l=typeof e.max=="number",y=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,g=t,w=null,F=typeof t=="number",j=typeof t=="string",S=Array.isArray(t);if(F?w="number":j?w="string":S&&(w="array"),!w)return!1;S&&(g=t.length),j&&(g=t.replace(y,"_").length),a?g!==e.len&&r.push(M(s.messages[w].len,e.fullField,e.len)):o&&!l&&ge.max?r.push(M(s.messages[w].max,e.fullField,e.max)):o&&l&&(ge.max)&&r.push(M(s.messages[w].range,e.fullField,e.min,e.max))},J="enum",Qt=function(e,t,n,r,s){e[J]=Array.isArray(e[J])?e[J]:[],e[J].indexOf(t)===-1&&r.push(M(s.messages[J],e.fullField,e[J].join(", ")))},kt=function(e,t,n,r,s){if(e.pattern){if(e.pattern instanceof RegExp)e.pattern.lastIndex=0,e.pattern.test(t)||r.push(M(s.messages.pattern.mismatch,e.fullField,t,e.pattern));else if(typeof e.pattern=="string"){var a=new RegExp(e.pattern);a.test(t)||r.push(M(s.messages.pattern.mismatch,e.fullField,t,e.pattern))}}},m={required:Ce,whitespace:Zt,type:Ht,range:Xt,enum:Qt,pattern:kt},Ct=function(e,t,n,r,s){var a=[],o=e.required||!e.required&&r.hasOwnProperty(e.field);if(o){if(V(t,"string")&&!e.required)return n();m.required(e,t,r,a,s,"string"),V(t,"string")||(m.type(e,t,r,a,s),m.range(e,t,r,a,s),m.pattern(e,t,r,a,s),e.whitespace===!0&&m.whitespace(e,t,r,a,s))}n(a)},er=function(e,t,n,r,s){var a=[],o=e.required||!e.required&&r.hasOwnProperty(e.field);if(o){if(V(t)&&!e.required)return n();m.required(e,t,r,a,s),t!==void 0&&m.type(e,t,r,a,s)}n(a)},tr=function(e,t,n,r,s){var a=[],o=e.required||!e.required&&r.hasOwnProperty(e.field);if(o){if(t===""&&(t=void 0),V(t)&&!e.required)return n();m.required(e,t,r,a,s),t!==void 0&&(m.type(e,t,r,a,s),m.range(e,t,r,a,s))}n(a)},rr=function(e,t,n,r,s){var a=[],o=e.required||!e.required&&r.hasOwnProperty(e.field);if(o){if(V(t)&&!e.required)return n();m.required(e,t,r,a,s),t!==void 0&&m.type(e,t,r,a,s)}n(a)},nr=function(e,t,n,r,s){var a=[],o=e.required||!e.required&&r.hasOwnProperty(e.field);if(o){if(V(t)&&!e.required)return n();m.required(e,t,r,a,s),V(t)||m.type(e,t,r,a,s)}n(a)},ir=function(e,t,n,r,s){var a=[],o=e.required||!e.required&&r.hasOwnProperty(e.field);if(o){if(V(t)&&!e.required)return n();m.required(e,t,r,a,s),t!==void 0&&(m.type(e,t,r,a,s),m.range(e,t,r,a,s))}n(a)},ar=function(e,t,n,r,s){var a=[],o=e.required||!e.required&&r.hasOwnProperty(e.field);if(o){if(V(t)&&!e.required)return n();m.required(e,t,r,a,s),t!==void 0&&(m.type(e,t,r,a,s),m.range(e,t,r,a,s))}n(a)},sr=function(e,t,n,r,s){var a=[],o=e.required||!e.required&&r.hasOwnProperty(e.field);if(o){if(t==null&&!e.required)return n();m.required(e,t,r,a,s,"array"),t!=null&&(m.type(e,t,r,a,s),m.range(e,t,r,a,s))}n(a)},or=function(e,t,n,r,s){var a=[],o=e.required||!e.required&&r.hasOwnProperty(e.field);if(o){if(V(t)&&!e.required)return n();m.required(e,t,r,a,s),t!==void 0&&m.type(e,t,r,a,s)}n(a)},fr="enum",ur=function(e,t,n,r,s){var a=[],o=e.required||!e.required&&r.hasOwnProperty(e.field);if(o){if(V(t)&&!e.required)return n();m.required(e,t,r,a,s),t!==void 0&&m[fr](e,t,r,a,s)}n(a)},lr=function(e,t,n,r,s){var a=[],o=e.required||!e.required&&r.hasOwnProperty(e.field);if(o){if(V(t,"string")&&!e.required)return n();m.required(e,t,r,a,s),V(t,"string")||m.pattern(e,t,r,a,s)}n(a)},dr=function(e,t,n,r,s){var a=[],o=e.required||!e.required&&r.hasOwnProperty(e.field);if(o){if(V(t,"date")&&!e.required)return n();if(m.required(e,t,r,a,s),!V(t,"date")){var l;t instanceof Date?l=t:l=new Date(t),m.type(e,l,r,a,s),l&&m.range(e,l.getTime(),r,a,s)}}n(a)},cr=function(e,t,n,r,s){var a=[],o=Array.isArray(t)?"array":typeof t;m.required(e,t,r,a,s,o),n(a)},ge=function(e,t,n,r,s){var a=e.type,o=[],l=e.required||!e.required&&r.hasOwnProperty(e.field);if(l){if(V(t,a)&&!e.required)return n();m.required(e,t,r,o,s,a),V(t,a)||m.type(e,t,r,o,s)}n(o)},pr=function(e,t,n,r,s){var a=[],o=e.required||!e.required&&r.hasOwnProperty(e.field);if(o){if(V(t)&&!e.required)return n();m.required(e,t,r,a,s)}n(a)},C={string:Ct,method:er,number:tr,boolean:rr,regexp:nr,integer:ir,float:ar,array:sr,object:or,enum:ur,pattern:lr,date:dr,url:ge,hex:ge,email:ge,required:cr,any:pr};function qe(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}var Oe=qe(),re=(function(){function i(t){this.rules=null,this._messages=Oe,this.define(t)}var e=i.prototype;return e.define=function(n){var r=this;if(!n)throw new Error("Cannot configure a schema with no rules");if(typeof n!="object"||Array.isArray(n))throw new Error("Rules must be an object");this.rules={},Object.keys(n).forEach(function(s){var a=n[s];r.rules[s]=Array.isArray(a)?a:[a]})},e.messages=function(n){return n&&(this._messages=De(qe(),n)),this._messages},e.validate=function(n,r,s){var a=this;r===void 0&&(r={}),s===void 0&&(s=function(){});var o=n,l=r,y=s;if(typeof l=="function"&&(y=l,l={}),!this.rules||Object.keys(this.rules).length===0)return y&&y(null,o),Promise.resolve(o);function g(d){var b=[],f={};function N(O){if(Array.isArray(O)){var P;b=(P=b).concat.apply(P,O)}else b.push(O)}for(var h=0;ht.labelPosition||(r==null?void 0:r.labelPosition)),f=A(()=>b.value==="top"?{}:{width:Le(t.labelWidth??(r==null?void 0:r.labelWidth))}),N=A(()=>{if(b.value==="top"||r!=null&&r.inline)return{};if(!t.label&&!t.labelWidth&&E)return{};const p=Le(t.labelWidth??(r==null?void 0:r.labelWidth));return!t.label&&!n.label?{marginLeft:p}:{}}),h=A(()=>[o.b(),o.m(a.value),o.is("error",g.value==="error"),o.is("validating",g.value==="validating"),o.is("success",g.value==="success"),o.is("required",tt.value||t.required),o.is("no-asterisk",r==null?void 0:r.hideRequiredAsterisk),(r==null?void 0:r.requireAsteriskPosition)==="right"?"asterisk-right":"asterisk-left",{[o.m("feedback")]:r==null?void 0:r.statusIcon,[o.m(`label-${b.value}`)]:b.value}]),O=A(()=>Ue(t.inlineMessage)?t.inlineMessage:(r==null?void 0:r.inlineMessage)||!1),P=A(()=>[o.e("error"),{[o.em("error","inline")]:O.value}]),_=A(()=>t.prop?ee(t.prop)?t.prop.join("."):t.prop:""),u=A(()=>!!(t.label||n.label)),c=A(()=>t.for??(y.value.length===1?y.value[0]:void 0)),q=A(()=>!c.value&&u.value),E=!!s,L=A(()=>{const p=r==null?void 0:r.model;if(!(!p||!t.prop))return Y(p,t.prop).value}),x=A(()=>{const{required:p}=t,v=[];t.rules&&v.push(...de(t.rules));const I=r==null?void 0:r.rules;if(I&&t.prop){const W=Y(I,t.prop).value;W&&v.push(...de(W))}if(p!==void 0){const W=v.map(($,U)=>[$,U]).filter(([$])=>"required"in $);if(W.length>0)for(const[$,U]of W)$.required!==p&&(v[U]={...$,required:p});else v.push({required:p})}return v}),R=A(()=>x.value.length>0),ce=p=>x.value.filter(v=>!v.trigger||!p?!0:ee(v.trigger)?v.trigger.includes(p):v.trigger===p).map(({trigger:v,...I})=>I),tt=A(()=>x.value.some(p=>p.required)),rt=A(()=>w.value==="error"&&t.showMessage&&((r==null?void 0:r.showMessage)??!0)),Ae=A(()=>`${t.label||""}${(r==null?void 0:r.labelSuffix)||""}`),z=p=>{g.value=p},nt=p=>{var W;const{errors:v,fields:I}=p;(!v||!I)&&console.error(p),z("error"),F.value=v?((W=v==null?void 0:v[0])==null?void 0:W.message)??`${t.prop} is required`:"",r==null||r.emit("validate",t.prop,!1,F.value)},it=()=>{z("success"),r==null||r.emit("validate",t.prop,!0,"")},at=async p=>{const v=_.value;return new re({[v]:p}).validate({[v]:L.value},{firstFields:!0}).then(()=>(it(),!0)).catch(I=>(nt(I),Promise.reject(I)))},je=async(p,v)=>{if(d||!t.prop)return!1;const I=Ye(v);if(!R.value)return v==null||v(!1),!1;const W=ce(p);return W.length===0?(v==null||v(!0),!0):(z("validating"),at(W).then(()=>(v==null||v(!0),!0)).catch($=>{const{fields:U}=$;return v==null||v(!1,U),I?!1:Promise.reject(U)}))},pe=()=>{z(""),F.value="",d=!1},Ve=async()=>{const p=r==null?void 0:r.model;if(!p||!t.prop)return;const v=Y(p,t.prop);d=!0,v.value=Z(S),await Qe(),pe(),d=!1},st=p=>{y.value.includes(p)||y.value.push(p)},ot=p=>{y.value=y.value.filter(v=>v!==p)},ne=p=>{S=Z(p)},ft=()=>S;k(()=>t.error,p=>{F.value=p||"",z(p?"error":"")},{immediate:!0}),k(()=>t.validateStatus,p=>z(p||""));const H=he({...Ke(t),$el:j,size:a,validateMessage:F,validateState:g,labelId:l,inputIds:y,isGroup:q,hasLabel:u,fieldValue:L,addInputId:st,removeInputId:ot,resetField:Ve,clearValidate:pe,validate:je,propString:_,setInitialValue:ne,getInitialValue:ft});return Je(ye,H),k(_,(p,v)=>{!r||!v||(r.removeField(H,v),p&&(ne(L.value),r.addField(H)))}),He(()=>{t.prop&&(ne(L.value),r==null||r.addField(H))}),Xe(()=>{r==null||r.removeField(H)}),e({size:a,validateMessage:F,validateState:g,validate:je,clearValidate:pe,resetField:Ve,setInitialValue:ne}),(p,v)=>{var I;return me(),Ze("div",{ref_key:"formItemRef",ref:j,class:X(h.value),role:q.value?"group":void 0,"aria-labelledby":q.value?T(l):void 0},[le(T(Mt),{"is-auto-width":f.value.width==="auto","update-all":((I=T(r))==null?void 0:I.labelWidth)==="auto"},{default:ve(()=>[i.label||p.$slots.label?(me(),ht(mt(c.value?"label":"div"),{key:0,id:T(l),for:c.value,class:X(T(o).e("label")),style:Re(f.value)},{default:ve(()=>[se(p.$slots,"label",{label:Ae.value},()=>[yt(Ie(Ae.value),1)])]),_:3},8,["id","for","class","style"])):Ne("v-if",!0)]),_:3},8,["is-auto-width","update-all"]),Me("div",{class:X(T(o).e("content")),style:Re(N.value)},[se(p.$slots,"default"),le(bt,{name:`${T(o).namespace.value}-zoom-in-top`},{default:ve(()=>[rt.value?se(p.$slots,"error",{key:0,error:F.value},()=>[Me("div",{class:X(P.value)},Ie(F.value),3)]):Ne("v-if",!0)]),_:3},8,["name"])],6)],10,vr)}}}),et=gr;const wr=wt(Nt,{FormItem:et}),Fr=Ft(et);export{wr as E,Fr as a,Z as c}; diff --git a/frontend/dist/assets/el-form-item-D_relxjU.css b/frontend/dist/assets/el-form-item-D_relxjU.css new file mode 100644 index 0000000..bd1d7c4 --- /dev/null +++ b/frontend/dist/assets/el-form-item-D_relxjU.css @@ -0,0 +1 @@ +.el-form{--el-form-label-font-size:var(--el-font-size-base);--el-form-inline-content-width:220px}.el-form--inline .el-form-item{vertical-align:middle;margin-right:32px;display:inline-flex}.el-form--inline .el-form-item:last-child{margin-right:0}.el-form--inline.el-form--label-top{flex-wrap:wrap;display:flex}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-form-item{--font-size:14px;margin-bottom:18px;display:flex}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--label-left .el-form-item__label{text-align:left;justify-content:flex-start}.el-form-item--label-right .el-form-item__label{text-align:right;justify-content:flex-end}.el-form-item--label-top{display:block}.el-form-item--label-top .el-form-item__label{text-align:left;width:-moz-fit-content;width:fit-content;height:auto;margin-bottom:8px;padding-right:0;line-height:22px;display:block}.el-form-item__label-wrap{display:flex}.el-form-item__label{font-size:var(--el-form-label-font-size);color:var(--el-text-color-regular);box-sizing:border-box;flex:none;align-items:flex-start;height:32px;padding:0 12px 0 0;line-height:32px;display:inline-flex}.el-form-item__content{line-height:32px;font-size:var(--font-size);flex-wrap:wrap;flex:1;align-items:center;min-width:0;display:flex;position:relative}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);padding-top:2px;font-size:12px;line-height:1;position:absolute;top:100%;left:0}.el-form-item__error--inline{margin-left:10px;display:inline-block;position:relative;top:auto;left:auto}.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before{content:"*";color:var(--el-color-danger);margin-right:4px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label:after,.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label-wrap>.el-form-item__label:after{content:"*";color:var(--el-color-danger);margin-left:4px}.el-form-item.is-error .el-form-item__content .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-input__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner,.el-form-item.is-error .el-form-item__content .el-textarea__inner:hover,.el-form-item.is-error .el-form-item__content .el-textarea__inner:focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner.is-focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper,.el-form-item.is-error .el-form-item__content .el-select__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-select__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper.is-focus,.el-form-item.is-error .el-form-item__content :not(.el-input-otp--underlined) .el-input-otp__input-field,.el-form-item.is-error .el-form-item__content :not(.el-input-otp--underlined) .el-input-otp__input-field:hover,.el-form-item.is-error .el-form-item__content :not(.el-input-otp--underlined) .el-input-otp__input-field:focus,.el-form-item.is-error .el-form-item__content :not(.el-input-otp--underlined) .el-input-otp__input-field.is-focus,.el-form-item.is-error .el-form-item__content .el-input-otp--underlined .el-input-otp__input-field:after,.el-form-item.is-error .el-form-item__content .el-input-otp--underlined .el-input-otp__input-field:hover:after,.el-form-item.is-error .el-form-item__content .el-input-otp--underlined .el-input-otp__input-field:focus:after,.el-form-item.is-error .el-form-item__content .el-input-otp--underlined .el-input-otp__input-field.is-focus:after{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px #0000}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-form-item__content .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon{display:inline-flex} diff --git a/frontend/dist/assets/el-input-number-BFR4pu1i.js b/frontend/dist/assets/el-input-number-BFR4pu1i.js new file mode 100644 index 0000000..5534e6f --- /dev/null +++ b/frontend/dist/assets/el-input-number-BFR4pu1i.js @@ -0,0 +1 @@ +import{ak as f,a8 as V,b as fe,aR as be,R as $,d as pe,aW as Ne,a as ve,z as he,D as H,G as Ve,aX as ye,o as N,c as z,K as J,f as i,t as Y,n as K,h as S,s as O,w as x,e as w,S as Ee,aY as ge,E as Z,g as q,aZ as Se,a_ as xe,a$ as we,aL as Ie,y as Fe,j as h,V as Ae,b0 as ke,W as Q,aU as _,aK as R,C as Pe,J as Ce,U as I,l as De}from"./index-BKKvzUDD.js";import{U as F,I as A,C as te}from"./raf-C-x62Pcl.js";import{b as Te,e as Me,c as Be}from"./index-BjEW7-SA.js";import{E as $e}from"./index-TFUf94PZ.js";import{v as ee}from"./index-BENk7lZo.js";import{u as ze}from"./index-GAnQrJsQ.js";const Ke=fe({id:{type:String,default:void 0},step:{type:Number,default:1},stepStrictly:Boolean,max:{type:Number,default:Number.MAX_SAFE_INTEGER},min:{type:Number,default:Number.MIN_SAFE_INTEGER},modelValue:{type:[Number,null]},readonly:Boolean,disabled:{type:Boolean,default:void 0},size:be,controls:{type:Boolean,default:!0},controlsPosition:{type:String,default:"",values:["","right"]},valueOnClear:{type:$([String,Number,null]),validator:a=>a===null||f(a)||["min","max"].includes(a),default:null},name:String,placeholder:String,precision:{type:Number,validator:a=>a>=0&&a===Number.parseInt(`${a}`,10)},validateEvent:{type:Boolean,default:!0},...ze(["ariaLabel"]),inputmode:{type:$(String),default:void 0},align:{type:$(String),default:"center"},disabledScientific:Boolean,formatter:{type:Function},parser:{type:Function},tabindex:{type:[String,Number],default:0}}),Oe={[te]:(a,k)=>k!==a,blur:a=>a instanceof FocusEvent,focus:a=>a instanceof FocusEvent,[A]:a=>f(a)||V(a),[F]:a=>f(a)||V(a)},Re=["aria-label"],Ue=["aria-label"];var Ge=pe({name:"ElInputNumber",__name:"input-number",props:Ke,emits:Oe,setup(a,{expose:k,emit:ae}){const n=a,o=ae,{t:U}=Ne(),d=ve("input-number"),b=Fe(),l=he({currentValue:n.modelValue,userInput:null}),{formItem:m}=Te(),G=h(()=>f(n.modelValue)&&n.modelValue<=n.min),L=h(()=>f(n.modelValue)&&n.modelValue>=n.max),ne=h(()=>{const e=X(n.step);return I(n.precision)?Math.max(X(n.modelValue),e):(e>n.precision&&R("InputNumber","precision should not be less than the decimal places of step"),n.precision)}),P=h(()=>n.controls&&n.controlsPosition==="right"),W=Me(),v=Be(),C=h(()=>{if(l.userInput!==null)return l.userInput;let e=l.currentValue;if(V(e))return"";if(f(e)){if(Number.isNaN(e))return"";I(n.precision)||(e=e.toFixed(n.precision))}return e}),y=(e,t)=>{if(I(t)&&(t=ne.value),t===0)return Math.round(e);let r=String(e);const u=r.indexOf(".");if(u===-1||!r.replace(".","").split("")[u+t])return e;const c=r.length;return r.charAt(c-1)==="5"&&(r=`${r.slice(0,Math.max(0,c-1))}6`),Number.parseFloat(Number(r).toFixed(t))},X=e=>{if(V(e))return 0;const t=e.toString(),r=t.indexOf(".");let u=0;return r!==-1&&(u=t.length-r-1),u},j=(e,t=1)=>f(e)?e>=Number.MAX_SAFE_INTEGER&&t===1?(R("InputNumber","The value has reached the maximum safe integer limit."),e):e<=Number.MIN_SAFE_INTEGER&&t===-1?(R("InputNumber","The value has reached the minimum safe integer limit."),e):y(e+n.step*t):l.currentValue,re=e=>{const t=Ae(e),r=ke(e);if(n.disabledScientific&&["e","E"].includes(r)){e.preventDefault();return}switch(t){case Q.up:e.preventDefault(),D();break;case Q.down:e.preventDefault(),T();break}},D=()=>{n.readonly||v.value||L.value||(E(j(Number(C.value)||0)),o(A,l.currentValue),B())},T=()=>{n.readonly||v.value||G.value||(E(j(Number(C.value)||0,-1)),o(A,l.currentValue),B())},M=(e,t)=>{const{max:r,min:u,step:c,precision:p,stepStrictly:me,valueOnClear:g}=n;rr||sr?r:u,t&&o("update:modelValue",s)),s},E=(e,t=!0)=>{var c;const r=l.currentValue,u=M(e);if(!t){o(F,u);return}l.userInput=null,!(r===u&&e)&&(o(F,u),r!==u&&o(te,u,r),n.validateEvent&&((c=m==null?void 0:m.validate)==null||c.call(m,"change").catch(_)),l.currentValue=u)},ue=e=>{l.userInput=e;let t=e===""?null:Number.parseFloat(e);Number.isNaN(t)&&(t=null),o(A,t),E(t,!1)},ie=e=>{const t=e!==""?Number.parseFloat(e):"";(f(t)&&!Number.isNaN(t)||n.formatter&&Number.isNaN(t)||t==="")&&E(t),B(),l.userInput=null},le=()=>{var e,t;(t=(e=b.value)==null?void 0:e.focus)==null||t.call(e)},se=()=>{var e,t;(t=(e=b.value)==null?void 0:e.blur)==null||t.call(e)},oe=e=>{o("focus",e)},ce=e=>{var t,r,u;l.userInput=null,l.currentValue===null&&((t=b.value)!=null&&t.input)&&(b.value.input.value=((r=n.formatter)==null?void 0:r.call(n,""))??""),o("blur",e),n.validateEvent&&((u=m==null?void 0:m.validate)==null||u.call(m,"blur").catch(_))},B=()=>{l.currentValue!==n.modelValue&&(l.currentValue=n.modelValue)},de=e=>{document.activeElement===e.target&&e.preventDefault()};return H(()=>n.modelValue,(e,t)=>{const r=M(e,!0);l.userInput===null&&r!==t&&(l.currentValue=r)},{immediate:!0}),H(()=>n.precision,()=>{l.currentValue=M(n.modelValue)}),Ve(()=>{var c;const{min:e,max:t,modelValue:r}=n,u=(c=b.value)==null?void 0:c.input;if(u.setAttribute("role","spinbutton"),Number.isFinite(t)?u.setAttribute("aria-valuemax",String(t)):u.removeAttribute("aria-valuemax"),Number.isFinite(e)?u.setAttribute("aria-valuemin",String(e)):u.removeAttribute("aria-valuemin"),u.setAttribute("aria-valuenow",l.currentValue||l.currentValue===0?String(l.currentValue):""),u.setAttribute("aria-disabled",String(v.value)),!f(r)&&r!=null){let p=Number(r);Number.isNaN(p)&&(p=null),o(F,p)}u.addEventListener("wheel",de,{passive:!1})}),ye(()=>{var e,t;(t=(e=b.value)==null?void 0:e.input)==null||t.setAttribute("aria-valuenow",`${l.currentValue??""}`)}),k({focus:le,blur:se}),(e,t)=>(N(),z("div",{class:K([i(d).b(),i(d).m(i(W)),i(d).is("disabled",i(v)),i(d).is("without-controls",!a.controls),i(d).is("controls-right",P.value),i(d).is(a.align,!!a.align)]),onDragstart:t[0]||(t[0]=Ie(()=>{},["prevent"]))},[a.controls?J((N(),z("span",{key:0,role:"button","aria-label":i(U)("el.inputNumber.decrease"),class:K([i(d).e("decrease"),i(d).is("disabled",G.value)]),onKeydown:Y(T,["enter"])},[S(e.$slots,"decrease-icon",{},()=>[O(i(Z),null,{default:x(()=>[P.value?(N(),w(i(Ee),{key:0})):(N(),w(i(ge),{key:1}))]),_:1})])],42,Re)),[[i(ee),T]]):q("v-if",!0),a.controls?J((N(),z("span",{key:1,role:"button","aria-label":i(U)("el.inputNumber.increase"),class:K([i(d).e("increase"),i(d).is("disabled",L.value)]),onKeydown:Y(D,["enter"])},[S(e.$slots,"increase-icon",{},()=>[O(i(Z),null,{default:x(()=>[P.value?(N(),w(i(Se),{key:0})):(N(),w(i(xe),{key:1}))]),_:1})])],42,Ue)),[[i(ee),D]]):q("v-if",!0),O(i($e),{id:a.id,ref_key:"input",ref:b,type:a.formatter?"text":"number",step:a.step,"model-value":C.value,placeholder:a.placeholder,readonly:a.readonly,disabled:i(v),size:i(W),max:a.max,min:a.min,name:a.name,"aria-label":a.ariaLabel,"validate-event":!1,inputmode:a.inputmode,formatter:a.formatter,parser:a.parser,tabindex:a.tabindex,onKeydown:re,onBlur:ce,onFocus:oe,onInput:ue,onChange:ie},we({_:2},[e.$slots.prefix?{name:"prefix",fn:x(()=>[S(e.$slots,"prefix")]),key:"0"}:void 0,e.$slots.suffix?{name:"suffix",fn:x(()=>[S(e.$slots,"suffix")]),key:"1"}:void 0]),1032,["id","type","step","model-value","placeholder","readonly","disabled","size","max","min","name","aria-label","inputmode","formatter","parser","tabindex"])],34))}}),Le=Ge;const Ze=De(Le);export{Ze as E}; diff --git a/frontend/dist/assets/el-input-number-DExoAqKP.css b/frontend/dist/assets/el-input-number-DExoAqKP.css new file mode 100644 index 0000000..45c90c8 --- /dev/null +++ b/frontend/dist/assets/el-input-number-DExoAqKP.css @@ -0,0 +1 @@ +.el-input-number{vertical-align:middle;width:150px;line-height:30px;display:inline-flex;position:relative}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;text-align:center;line-height:1}.el-input-number .el-input__inner::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.el-input-number .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-input-number.is-left .el-input__inner{text-align:left}.el-input-number.is-right .el-input__inner{text-align:right}.el-input-number.is-center .el-input__inner{text-align:center}.el-input-number__increase,.el-input-number__decrease{z-index:1;background:var(--el-fill-color-light);width:32px;height:auto;color:var(--el-text-color-regular);cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;font-size:13px;display:flex;position:absolute;top:1px;bottom:1px}.el-input-number__increase:hover,.el-input-number__decrease:hover{color:var(--el-color-primary)}.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__wrapper,.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__increase.is-disabled,.el-input-number__decrease.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;border-left:var(--el-border);right:1px}.el-input-number__decrease{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border);left:1px}.el-input-number.is-disabled .el-input-number__increase,.el-input-number.is-disabled .el-input-number__decrease{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__increase:hover,.el-input-number.is-disabled .el-input-number__decrease:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{width:180px;line-height:38px}.el-input-number--large .el-input-number__increase,.el-input-number--large .el-input-number__decrease{width:40px;font-size:14px}.el-input-number--large.is-controls-right .el-input--large .el-input__wrapper{padding-right:47px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{width:120px;line-height:22px}.el-input-number--small .el-input-number__increase,.el-input-number--small .el-input-number__decrease{width:24px;font-size:12px}.el-input-number--small.is-controls-right .el-input--small .el-input__wrapper{padding-right:31px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__increase [class*=el-icon],.el-input-number--small .el-input-number__decrease [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__increase,.el-input-number.is-controls-right .el-input-number__decrease{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon],.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 var(--el-border-radius-base) 0 0;border-bottom:var(--el-border);bottom:auto;left:auto}.el-input-number.is-controls-right .el-input-number__decrease{border-right:none;border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0;top:auto;left:auto;right:1px}.el-input-number.is-controls-right[class*=large] [class*=increase],.el-input-number.is-controls-right[class*=large] [class*=decrease]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=increase],.el-input-number.is-controls-right[class*=small] [class*=decrease]{--el-input-number-controls-height:11px} diff --git a/frontend/dist/assets/el-pagination-CDeFZDGO.css b/frontend/dist/assets/el-pagination-CDeFZDGO.css new file mode 100644 index 0000000..92c2dd2 --- /dev/null +++ b/frontend/dist/assets/el-pagination-CDeFZDGO.css @@ -0,0 +1 @@ +.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:2px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-font-size-small:12px;--el-pagination-button-width-small:24px;--el-pagination-button-height-small:24px;--el-pagination-button-width-large:40px;--el-pagination-button-height-large:40px;--el-pagination-item-gap:16px;white-space:nowrap;color:var(--el-pagination-text-color);font-size:var(--el-pagination-font-size);align-items:center;font-weight:400;display:flex}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield}.el-pagination .el-select{width:128px}.el-pagination .btn-prev,.el-pagination .btn-next{font-size:var(--el-pagination-font-size);min-width:var(--el-pagination-button-width);height:var(--el-pagination-button-height);line-height:var(--el-pagination-button-height);color:var(--el-pagination-button-color);background:var(--el-pagination-bg-color);border-radius:var(--el-pagination-border-radius);cursor:pointer;text-align:center;box-sizing:border-box;border:none;justify-content:center;align-items:center;padding:0 4px;display:flex}.el-pagination .btn-prev *,.el-pagination .btn-next *{pointer-events:none}.el-pagination .btn-prev:focus,.el-pagination .btn-next:focus{outline:none}.el-pagination .btn-prev:hover,.el-pagination .btn-next:hover{color:var(--el-pagination-hover-color)}.el-pagination .btn-prev.is-active,.el-pagination .btn-next.is-active{color:var(--el-pagination-hover-color);cursor:default;font-weight:700}.el-pagination .btn-prev.is-active.is-disabled,.el-pagination .btn-next.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pagination .btn-prev:disabled,.el-pagination .btn-prev.is-disabled,.el-pagination .btn-next:disabled,.el-pagination .btn-next.is-disabled{color:var(--el-pagination-button-disabled-color);background-color:var(--el-pagination-button-disabled-bg-color);cursor:not-allowed}.el-pagination .btn-prev:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-next:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-prev .el-icon,.el-pagination .btn-next .el-icon{width:inherit;font-size:12px;font-weight:700;display:block}.el-pagination>.is-first{margin-left:0!important}.el-pagination>.is-last{margin-right:0!important}.el-pagination .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination__sizes,.el-pagination__total{margin-left:var(--el-pagination-item-gap);color:var(--el-text-color-regular);font-weight:400}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{margin-left:var(--el-pagination-item-gap);color:var(--el-text-color-regular);align-items:center;font-weight:400;display:flex}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__goto{margin-right:8px}.el-pagination__editor{text-align:center;box-sizing:border-box}.el-pagination__editor.el-input{width:56px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__classifier{margin-left:8px}.el-pagination__rightwrapper{flex:1;justify-content:flex-end;align-items:center;display:flex}.el-pagination.is-background .btn-prev,.el-pagination.is-background .btn-next,.el-pagination.is-background .el-pager li{background-color:var(--el-pagination-button-bg-color);margin:0 4px}.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .el-pager li.is-active{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .el-pager li:disabled,.el-pagination.is-background .el-pager li.is-disabled{color:var(--el-text-color-placeholder);background-color:var(--el-disabled-bg-color)}.el-pagination.is-background .btn-prev:disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .btn-next:disabled.is-active,.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .el-pager li:disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active{color:var(--el-text-color-secondary);background-color:var(--el-fill-color-dark)}.el-pagination.is-background .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination--small .btn-prev,.el-pagination--small .btn-next,.el-pagination--small .el-pager li{height:var(--el-pagination-button-height-small);line-height:var(--el-pagination-button-height-small);font-size:var(--el-pagination-font-size-small);min-width:var(--el-pagination-button-width-small)}.el-pagination--small span:not([class*=suffix]),.el-pagination--small button{font-size:var(--el-pagination-font-size-small)}.el-pagination--small .el-select{width:100px}.el-pagination--large .btn-prev,.el-pagination--large .btn-next,.el-pagination--large .el-pager li{height:var(--el-pagination-button-height-large);line-height:var(--el-pagination-button-height-large);min-width:var(--el-pagination-button-width-large)}.el-pagination--large .el-select .el-input{width:160px}.el-pager{-webkit-user-select:none;user-select:none;align-items:center;margin:0;padding:0;font-size:0;list-style:none;display:flex}.el-pager li{font-size:var(--el-pagination-font-size);min-width:var(--el-pagination-button-width);height:var(--el-pagination-button-height);line-height:var(--el-pagination-button-height);color:var(--el-pagination-button-color);background:var(--el-pagination-bg-color);border-radius:var(--el-pagination-border-radius);cursor:pointer;text-align:center;box-sizing:border-box;border:none;justify-content:center;align-items:center;padding:0 4px;display:flex}.el-pager li *{pointer-events:none}.el-pager li:focus{outline:none}.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{color:var(--el-pagination-hover-color);cursor:default;font-weight:700}.el-pager li.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pager li:disabled,.el-pager li.is-disabled{color:var(--el-pagination-button-disabled-color);background-color:var(--el-pagination-button-disabled-bg-color);cursor:not-allowed}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px} diff --git a/frontend/dist/assets/el-pagination-DOPYW-qb.js b/frontend/dist/assets/el-pagination-DOPYW-qb.js new file mode 100644 index 0000000..2bd5283 --- /dev/null +++ b/frontend/dist/assets/el-pagination-DOPYW-qb.js @@ -0,0 +1 @@ +import{b as q,i as G,d as A,aW as F,o,c as C,aa as L,e as w,w as X,r as ae,f as i,E as te,j as y,B as oe,aj as ne,R as J,a5 as ie,a as D,y as x,D as O,s as re,M as le,ad as se,n as S,bb as pe,a6 as de,q as Z,g as V,bo as ge,bp as H,bq as ce,t as fe,N as ve,br as be,aK as me,I,ak as T,aR as Pe,T as Ce,bs as ye,F as ze,l as _e}from"./index-BKKvzUDD.js";import{C as R}from"./raf-C-x62Pcl.js";import{u as he}from"./index-BjEW7-SA.js";import{a as Se,E as Ne}from"./el-select-Dl-FRZQd.js";import{E as ke}from"./index-TFUf94PZ.js";const ue=Symbol("elPaginationKey"),xe=q({disabled:Boolean,currentPage:{type:Number,default:1},prevText:{type:String},prevIcon:{type:G}}),Ee={click:e=>e instanceof MouseEvent},Te=["disabled","aria-label","aria-disabled"],we={key:0};var Be=A({name:"ElPaginationPrev",__name:"prev",props:xe,emits:Ee,setup(e){const s=e,{t:n}=F(),f=y(()=>s.disabled||s.currentPage<=1);return(r,p)=>(o(),C("button",{type:"button",class:"btn-prev",disabled:f.value,"aria-label":r.prevText||i(n)("el.pagination.prev"),"aria-disabled":f.value,onClick:p[0]||(p[0]=g=>r.$emit("click",g))},[r.prevText?(o(),C("span",we,L(r.prevText),1)):(o(),w(i(te),{key:1},{default:X(()=>[(o(),w(ae(r.prevIcon)))]),_:1}))],8,Te))}}),Me=Be;const Ie=q({disabled:Boolean,currentPage:{type:Number,default:1},pageCount:{type:Number,default:50},nextText:{type:String},nextIcon:{type:G}}),$e=["disabled","aria-label","aria-disabled"],je={key:0};var Le=A({name:"ElPaginationNext",__name:"next",props:Ie,emits:["click"],setup(e){const s=e,{t:n}=F(),f=y(()=>s.disabled||s.currentPage===s.pageCount||s.pageCount===0);return(r,p)=>(o(),C("button",{type:"button",class:"btn-next",disabled:f.value,"aria-label":r.nextText||i(n)("el.pagination.next"),"aria-disabled":f.value,onClick:p[0]||(p[0]=g=>r.$emit("click",g))},[r.nextText?(o(),C("span",je,L(r.nextText),1)):(o(),w(i(te),{key:1},{default:X(()=>[(o(),w(ae(r.nextIcon)))]),_:1}))],8,$e))}}),qe=Le;const Y=()=>oe(ue,{}),Ae=q({pageSize:{type:Number,required:!0},pageSizes:{type:J(Array),default:()=>ie([10,20,30,40,50,100])},popperClass:{type:String},popperStyle:{type:J([String,Object])},disabled:Boolean,teleported:Boolean,size:{type:String,values:ne},appendSizeTo:String});var Fe=A({name:"ElPaginationSizes",__name:"sizes",props:Ae,emits:["page-size-change"],setup(e,{emit:s}){const n=e,f=s,{t:r}=F(),p=D("pagination"),g=Y(),b=x(n.pageSize);O(()=>n.pageSizes,(u,d)=>{pe(u,d)||de(u)&&f("page-size-change",u.includes(n.pageSize)?n.pageSize:n.pageSizes[0])}),O(()=>n.pageSize,u=>{b.value=u});const E=y(()=>n.pageSizes);function z(u){var d;u!==b.value&&(b.value=u,(d=g.handleSizeChange)==null||d.call(g,Number(u)))}return(u,d)=>(o(),C("span",{class:S(i(p).e("sizes"))},[re(i(Ne),{"model-value":b.value,disabled:u.disabled,"popper-class":u.popperClass,"popper-style":u.popperStyle,size:u.size,teleported:u.teleported,"validate-event":!1,"append-to":u.appendSizeTo,onChange:z},{default:X(()=>[(o(!0),C(le,null,se(E.value,N=>(o(),w(i(Se),{key:N,value:N,label:N+i(r)("el.pagination.pagesize")},null,8,["value","label"]))),128))]),_:1},8,["model-value","disabled","popper-class","popper-style","size","teleported","append-to"])],2))}}),Ke=Fe;const De=q({size:{type:String,values:ne}}),Oe=["disabled"];var Ue=A({name:"ElPaginationJumper",__name:"jumper",props:De,setup(e){const{t:s}=F(),n=D("pagination"),{pageCount:f,disabled:r,currentPage:p,changeEvent:g}=Y(),b=x(),E=y(()=>b.value??(p==null?void 0:p.value));function z(d){b.value=d?+d:""}function u(d){d=Math.trunc(+d),g==null||g(d),b.value=void 0}return(d,N)=>(o(),C("span",{class:S(i(n).e("jump")),disabled:i(r)},[Z("span",{class:S([i(n).e("goto")])},L(i(s)("el.pagination.goto")),3),re(i(ke),{size:d.size,class:S([i(n).e("editor"),i(n).is("in-pagination")]),min:1,max:i(f),disabled:i(r),"model-value":E.value,"validate-event":!1,"aria-label":i(s)("el.pagination.page"),type:"number","onUpdate:modelValue":z,onChange:u},null,8,["size","class","max","disabled","model-value","aria-label"]),Z("span",{class:S([i(n).e("classifier")])},L(i(s)("el.pagination.pageClassifier")),3)],10,Oe))}}),We=Ue;const Ve=q({total:{type:Number,default:1e3}}),Re=["disabled"];var Ge=A({name:"ElPaginationTotal",__name:"total",props:Ve,setup(e){const{t:s}=F(),n=D("pagination"),{disabled:f}=Y();return(r,p)=>(o(),C("span",{class:S(i(n).e("total")),disabled:i(f)},L(i(s)("el.pagination.total",{total:r.total})),11,Re))}}),Je=Ge;const Qe=q({currentPage:{type:Number,default:1},pageCount:{type:Number,required:!0},pagerCount:{type:Number,default:7},disabled:Boolean}),Xe=["aria-current","aria-label","tabindex"],Ye=["tabindex","aria-label"],Ze=["aria-current","aria-label","tabindex"],He=["tabindex","aria-label"],ea=["aria-current","aria-label","tabindex"];var aa=A({name:"ElPaginationPager",__name:"pager",props:Qe,emits:[R],setup(e,{emit:s}){const n=e,f=s,r=D("pager"),p=D("icon"),{t:g}=F(),b=x(!1),E=x(!1),z=x(!1),u=x(!1),d=x(!1),N=x(!1),K=y(()=>{const a=n.pagerCount,t=(a-1)/2,l=Number(n.currentPage),_=Number(n.pageCount);let h=!1,m=!1;_>a&&(l>a-t&&(h=!0),l<_-t&&(m=!0));const M=[];if(h&&!m){const c=_-(a-2);for(let j=c;j<_;j++)M.push(j)}else if(!h&&m)for(let c=2;c["more","btn-quickprev",p.b(),r.is("disabled",n.disabled)]),v=y(()=>["more","btn-quicknext",p.b(),r.is("disabled",n.disabled)]),B=y(()=>n.disabled?-1:0);O(()=>[n.pageCount,n.pagerCount,n.currentPage],([a,t,l])=>{const _=(t-1)/2;let h=!1,m=!1;a>t&&(h=l>t-_,m=l_&&(l=_)),l!==h&&f(R,l)}return(a,t)=>(o(),C("ul",{class:S(i(r).b()),onClick:$,onKeyup:fe(Q,["enter"])},[a.pageCount>0?(o(),C("li",{key:0,class:S([[i(r).is("active",a.currentPage===1),i(r).is("disabled",a.disabled)],"number"]),"aria-current":a.currentPage===1,"aria-label":i(g)("el.pagination.currentPage",{pager:1}),tabindex:B.value}," 1 ",10,Xe)):V("v-if",!0),b.value?(o(),C("li",{key:1,class:S(k.value),tabindex:B.value,"aria-label":i(g)("el.pagination.prevPages",{pager:a.pagerCount-2}),onMouseenter:t[0]||(t[0]=l=>U(!0)),onMouseleave:t[1]||(t[1]=l=>z.value=!1),onFocus:t[2]||(t[2]=l=>W(!0)),onBlur:t[3]||(t[3]=l=>d.value=!1)},[(z.value||d.value)&&!a.disabled?(o(),w(i(ge),{key:0})):(o(),w(i(H),{key:1}))],42,Ye)):V("v-if",!0),(o(!0),C(le,null,se(K.value,l=>(o(),C("li",{key:l,class:S([[i(r).is("active",a.currentPage===l),i(r).is("disabled",a.disabled)],"number"]),"aria-current":a.currentPage===l,"aria-label":i(g)("el.pagination.currentPage",{pager:l}),tabindex:B.value},L(l),11,Ze))),128)),E.value?(o(),C("li",{key:2,class:S(v.value),tabindex:B.value,"aria-label":i(g)("el.pagination.nextPages",{pager:a.pagerCount-2}),onMouseenter:t[4]||(t[4]=l=>U()),onMouseleave:t[5]||(t[5]=l=>u.value=!1),onFocus:t[6]||(t[6]=l=>W()),onBlur:t[7]||(t[7]=l=>N.value=!1)},[(u.value||N.value)&&!a.disabled?(o(),w(i(ce),{key:0})):(o(),w(i(H),{key:1}))],42,He)):V("v-if",!0),a.pageCount>1?(o(),C("li",{key:3,class:S([[i(r).is("active",a.currentPage===a.pageCount),i(r).is("disabled",a.disabled)],"number"]),"aria-current":a.currentPage===a.pageCount,"aria-label":i(g)("el.pagination.currentPage",{pager:a.pageCount}),tabindex:B.value},L(a.pageCount),11,ea)):V("v-if",!0)],34))}}),ta=aa;const P=e=>typeof e!="number",na=q({pageSize:Number,defaultPageSize:Number,total:Number,pageCount:Number,pagerCount:{type:Number,validator:e=>T(e)&&Math.trunc(e)===e&&e>4&&e<22&&e%2===1,default:7},currentPage:Number,defaultCurrentPage:Number,layout:{type:String,default:["prev","pager","next","jumper","->","total"].join(", ")},pageSizes:{type:J(Array),default:()=>ie([10,20,30,40,50,100])},popperClass:{type:String,default:""},popperStyle:{type:J([String,Object])},prevText:{type:String,default:""},prevIcon:{type:G,default:()=>ye},nextText:{type:String,default:""},nextIcon:{type:G,default:()=>Ce},teleported:{type:Boolean,default:!0},small:Boolean,size:Pe,background:Boolean,disabled:Boolean,hideOnSinglePage:Boolean,appendSizeTo:String}),ia={"update:current-page":e=>T(e),"update:page-size":e=>T(e),"size-change":e=>T(e),change:(e,s)=>T(e)&&T(s),"current-change":e=>T(e),"prev-click":e=>T(e),"next-click":e=>T(e)},ee="ElPagination";var ra=A({name:ee,props:na,emits:ia,setup(e,{emit:s,slots:n}){const{t:f}=F(),r=D("pagination"),p=ve().vnode.props||{},g=be(),b=y(()=>e.small?"small":e.size??g.value);he({from:"small",replacement:"size",version:"3.0.0",scope:"el-pagination",ref:"https://element-plus.org/zh-CN/component/pagination.html"},y(()=>!!e.small));const E="onUpdate:currentPage"in p||"onUpdate:current-page"in p||"onCurrentChange"in p,z="onUpdate:pageSize"in p||"onUpdate:page-size"in p||"onSizeChange"in p,u=y(()=>{if(P(e.total)&&P(e.pageCount)||!P(e.currentPage)&&!E)return!1;if(e.layout.includes("sizes")){if(P(e.pageCount)){if(!P(e.total)&&!P(e.pageSize)&&!z)return!1}else if(!z)return!1}return!0}),d=x(P(e.defaultPageSize)?10:e.defaultPageSize),N=x(P(e.defaultCurrentPage)?1:e.defaultCurrentPage),K=y({get(){return P(e.pageSize)?d.value:e.pageSize},set(a){P(e.pageSize)&&(d.value=a),z&&(s("update:page-size",a),s("size-change",a))}}),k=y(()=>{let a=0;return P(e.pageCount)?P(e.total)||(a=Math.max(1,Math.ceil(e.total/K.value))):a=e.pageCount,a}),v=y({get(){return P(e.currentPage)?N.value:e.currentPage},set(a){let t=a;a<1?t=1:a>k.value&&(t=k.value),P(e.currentPage)&&(N.value=t),E&&(s("update:current-page",t),s("current-change",t))}});O(k,a=>{v.value>a&&(v.value=a)}),O([v,K],a=>{s(R,...a)},{flush:"post"});function B(a){v.value=a}function U(a){K.value=a;const t=k.value;v.value>t&&(v.value=t)}function W(){e.disabled||(v.value-=1,s("prev-click",v.value))}function Q(){e.disabled||(v.value+=1,s("next-click",v.value))}function $(a,t){a&&(a.props||(a.props={}),a.props.class=[a.props.class,t].join(" "))}return ze(ue,{pageCount:k,disabled:y(()=>e.disabled),currentPage:v,changeEvent:B,handleSizeChange:U}),()=>{var M;if(!u.value)return me(ee,f("el.pagination.deprecationWarning")),null;if(!e.layout||e.hideOnSinglePage&&k.value<=1)return null;const a=[],t=[],l=I("div",{class:r.e("rightwrapper")},t),_={prev:I(Me,{disabled:e.disabled,currentPage:v.value,prevText:e.prevText,prevIcon:e.prevIcon,onClick:W}),jumper:I(We,{size:b.value}),pager:I(ta,{currentPage:v.value,pageCount:k.value,pagerCount:e.pagerCount,onChange:B,disabled:e.disabled}),next:I(qe,{disabled:e.disabled,currentPage:v.value,pageCount:k.value,nextText:e.nextText,nextIcon:e.nextIcon,onClick:Q}),sizes:I(Ke,{pageSize:K.value,pageSizes:e.pageSizes,popperClass:e.popperClass,popperStyle:e.popperStyle,disabled:e.disabled,teleported:e.teleported,size:b.value,appendSizeTo:e.appendSizeTo}),slot:((M=n==null?void 0:n.default)==null?void 0:M.call(n))??null,total:I(Je,{total:P(e.total)?0:e.total})},h=e.layout.split(",").map(c=>c.trim());let m=!1;return h.forEach(c=>{if(c==="->"){m=!0;return}m?t.push(_[c]):a.push(_[c])}),$(a[0],r.is("first")),$(a[a.length-1],r.is("last")),m&&t.length>0&&($(t[0],r.is("first")),$(t[t.length-1],r.is("last")),a.push(l)),I("div",{class:[r.b(),r.is("background",e.background),r.m(b.value)]},a)}}});const da=_e(ra);export{da as E}; diff --git a/frontend/dist/assets/el-popper-D6_hxRbQ.js b/frontend/dist/assets/el-popper-D6_hxRbQ.js new file mode 100644 index 0000000..267b626 --- /dev/null +++ b/frontend/dist/assets/el-popper-D6_hxRbQ.js @@ -0,0 +1 @@ +import{cM as Ht,R as F,D as $,G as qe,N as En,k as Ge,j as T,bd as Le,bA as Ce,y as N,f as p,H as te,aT as Tn,c4 as Et,cN as Cn,cO as Rn,c8 as An,ak as Je,b as _,F as Pe,d as ne,a as we,B as ue,o as Y,c as $e,al as Pn,n as $t,aU as Qe,aK as Tt,K as Wt,ao as Bn,bF as Ct,a3 as Fn,M as Mn,ca as In,s as Be,bD as ve,e as ge,w as ee,h as se,Y as tt,g as We,a2 as Vt,cf as Rt,a8 as qt,a6 as nt,a7 as Sn,bI as jn,l as Kt,W as Ye,bf as Q,V as Dn,P as kn,Q as Ut,a9 as Te,c9 as Ln,Z as Nn,L as Hn,bm as $n,bT as Wn,cP as Vn,aa as qn,bg as Kn}from"./index-BKKvzUDD.js";import{a as Un,h as At,f as zn}from"./index-BjEW7-SA.js";import{u as zt}from"./index-GAnQrJsQ.js";import{f as Yn}from"./index-CWUnzf90.js";function Zn(e){return e===void 0}const Gn=Ht({type:F(Boolean),default:null}),Jn=Ht({type:F(Function)}),Qn=e=>{const t=`update:${e}`,n=`onUpdate:${e}`,o=[t],r={[e]:Gn,[n]:Jn};return{useModelToggle:({indicator:u,toggleReason:s,shouldHideWhenRouteChanges:a,shouldProceed:l,onShow:c,onHide:f})=>{const v=En(),{emit:g}=v,h=v.props,m=T(()=>Le(h[n])),x=T(()=>h[e]===null),y=O=>{u.value!==!0&&(u.value=!0,s&&(s.value=O),Le(c)&&c(O))},b=O=>{u.value!==!1&&(u.value=!1,s&&(s.value=O),Le(f)&&f(O))},E=O=>{if(h.disabled===!0||Le(l)&&!l())return;const R=m.value&&Ce;R&&g(t,!0),(x.value||!R)&&y(O)},d=O=>{if(h.disabled===!0||!Ce)return;const R=m.value&&Ce;R&&g(t,!1),(x.value||!R)&&b(O)},w=O=>{Ge(O)&&(h.disabled&&O?m.value&&g(t,!1):u.value!==O&&(O?y():b()))},C=()=>{u.value?d():E()};return $(()=>h[e],w),a&&v.appContext.config.globalProperties.$route!==void 0&&$(()=>({...v.proxy.$route}),()=>{a.value&&u.value&&d()}),qe(()=>{w(h[e])}),{hide:d,show:E,toggle:C,hasUpdateHandler:m}},useModelToggleProps:r,useModelToggleEmits:o}};var W="top",U="bottom",z="right",V="left",ot="auto",Ie=[W,U,z,V],me="start",Fe="end",Xn="clippingParents",Yt="viewport",Ee="popper",_n="reference",Pt=Ie.reduce(function(e,t){return e.concat([t+"-"+me,t+"-"+Fe])},[]),rt=[].concat(Ie,[ot]).reduce(function(e,t){return e.concat([t,t+"-"+me,t+"-"+Fe])},[]),eo="beforeRead",to="read",no="afterRead",oo="beforeMain",ro="main",ao="afterMain",io="beforeWrite",so="write",lo="afterWrite",uo=[eo,to,no,oo,ro,ao,io,so,lo];function G(e){return e?(e.nodeName||"").toLowerCase():null}function q(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function le(e){var t=q(e).Element;return e instanceof t||e instanceof Element}function K(e){var t=q(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function at(e){if(typeof ShadowRoot>"u")return!1;var t=q(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function co(e){var t=e.state;Object.keys(t.elements).forEach(function(n){var o=t.styles[n]||{},r=t.attributes[n]||{},i=t.elements[n];!K(i)||!G(i)||(Object.assign(i.style,o),Object.keys(r).forEach(function(u){var s=r[u];s===!1?i.removeAttribute(u):i.setAttribute(u,s===!0?"":s)}))})}function fo(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(o){var r=t.elements[o],i=t.attributes[o]||{},u=Object.keys(t.styles.hasOwnProperty(o)?t.styles[o]:n[o]),s=u.reduce(function(a,l){return a[l]="",a},{});!K(r)||!G(r)||(Object.assign(r.style,s),Object.keys(i).forEach(function(a){r.removeAttribute(a)}))})}}var Zt={name:"applyStyles",enabled:!0,phase:"write",fn:co,effect:fo,requires:["computeStyles"]};function Z(e){return e.split("-")[0]}var ie=Math.max,Ve=Math.min,he=Math.round;function Xe(){var e=navigator.userAgentData;return e!=null&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function Gt(){return!/^((?!chrome|android).)*safari/i.test(Xe())}function ye(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!1);var o=e.getBoundingClientRect(),r=1,i=1;t&&K(e)&&(r=e.offsetWidth>0&&he(o.width)/e.offsetWidth||1,i=e.offsetHeight>0&&he(o.height)/e.offsetHeight||1);var u=le(e)?q(e):window,s=u.visualViewport,a=!Gt()&&n,l=(o.left+(a&&s?s.offsetLeft:0))/r,c=(o.top+(a&&s?s.offsetTop:0))/i,f=o.width/r,v=o.height/i;return{width:f,height:v,top:c,right:l+f,bottom:c+v,left:l,x:l,y:c}}function it(e){var t=ye(e),n=e.offsetWidth,o=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-o)<=1&&(o=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:o}}function Jt(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&at(n)){var o=t;do{if(o&&e.isSameNode(o))return!0;o=o.parentNode||o.host}while(o)}return!1}function X(e){return q(e).getComputedStyle(e)}function po(e){return["table","td","th"].indexOf(G(e))>=0}function oe(e){return((le(e)?e.ownerDocument:e.document)||window.document).documentElement}function Ke(e){return G(e)==="html"?e:e.assignedSlot||e.parentNode||(at(e)?e.host:null)||oe(e)}function Bt(e){return!K(e)||X(e).position==="fixed"?null:e.offsetParent}function vo(e){var t=/firefox/i.test(Xe()),n=/Trident/i.test(Xe());if(n&&K(e)){var o=X(e);if(o.position==="fixed")return null}var r=Ke(e);for(at(r)&&(r=r.host);K(r)&&["html","body"].indexOf(G(r))<0;){var i=X(r);if(i.transform!=="none"||i.perspective!=="none"||i.contain==="paint"||["transform","perspective"].indexOf(i.willChange)!==-1||t&&i.willChange==="filter"||t&&i.filter&&i.filter!=="none")return r;r=r.parentNode}return null}function Se(e){for(var t=q(e),n=Bt(e);n&&po(n)&&X(n).position==="static";)n=Bt(n);return n&&(G(n)==="html"||G(n)==="body"&&X(n).position==="static")?t:n||vo(e)||t}function st(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Re(e,t,n){return ie(e,Ve(t,n))}function go(e,t,n){var o=Re(e,t,n);return o>n?n:o}function Qt(){return{top:0,right:0,bottom:0,left:0}}function Xt(e){return Object.assign({},Qt(),e)}function _t(e,t){return t.reduce(function(n,o){return n[o]=e,n},{})}var mo=function(e,t){return e=typeof e=="function"?e(Object.assign({},t.rects,{placement:t.placement})):e,Xt(typeof e!="number"?e:_t(e,Ie))};function ho(e){var t,n=e.state,o=e.name,r=e.options,i=n.elements.arrow,u=n.modifiersData.popperOffsets,s=Z(n.placement),a=st(s),l=[V,z].indexOf(s)>=0,c=l?"height":"width";if(!(!i||!u)){var f=mo(r.padding,n),v=it(i),g=a==="y"?W:V,h=a==="y"?U:z,m=n.rects.reference[c]+n.rects.reference[a]-u[a]-n.rects.popper[c],x=u[a]-n.rects.reference[a],y=Se(i),b=y?a==="y"?y.clientHeight||0:y.clientWidth||0:0,E=m/2-x/2,d=f[g],w=b-v[c]-f[h],C=b/2-v[c]/2+E,O=Re(d,C,w),R=a;n.modifiersData[o]=(t={},t[R]=O,t.centerOffset=O-C,t)}}function yo(e){var t=e.state,n=e.options,o=n.element,r=o===void 0?"[data-popper-arrow]":o;r!=null&&(typeof r=="string"&&(r=t.elements.popper.querySelector(r),!r)||Jt(t.elements.popper,r)&&(t.elements.arrow=r))}var bo={name:"arrow",enabled:!0,phase:"main",fn:ho,effect:yo,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function be(e){return e.split("-")[1]}var wo={top:"auto",right:"auto",bottom:"auto",left:"auto"};function xo(e,t){var n=e.x,o=e.y,r=t.devicePixelRatio||1;return{x:he(n*r)/r||0,y:he(o*r)/r||0}}function Ft(e){var t,n=e.popper,o=e.popperRect,r=e.placement,i=e.variation,u=e.offsets,s=e.position,a=e.gpuAcceleration,l=e.adaptive,c=e.roundOffsets,f=e.isFixed,v=u.x,g=v===void 0?0:v,h=u.y,m=h===void 0?0:h,x=typeof c=="function"?c({x:g,y:m}):{x:g,y:m};g=x.x,m=x.y;var y=u.hasOwnProperty("x"),b=u.hasOwnProperty("y"),E=V,d=W,w=window;if(l){var C=Se(n),O="clientHeight",R="clientWidth";if(C===q(n)&&(C=oe(n),X(C).position!=="static"&&s==="absolute"&&(O="scrollHeight",R="scrollWidth")),C=C,r===W||(r===V||r===z)&&i===Fe){d=U;var M=f&&C===w&&w.visualViewport?w.visualViewport.height:C[O];m-=M-o.height,m*=a?1:-1}if(r===V||(r===W||r===U)&&i===Fe){E=z;var A=f&&C===w&&w.visualViewport?w.visualViewport.width:C[R];g-=A-o.width,g*=a?1:-1}}var I=Object.assign({position:s},l&&wo),H=c===!0?xo({x:g,y:m},q(n)):{x:g,y:m};if(g=H.x,m=H.y,a){var P;return Object.assign({},I,(P={},P[d]=b?"0":"",P[E]=y?"0":"",P.transform=(w.devicePixelRatio||1)<=1?"translate("+g+"px, "+m+"px)":"translate3d("+g+"px, "+m+"px, 0)",P))}return Object.assign({},I,(t={},t[d]=b?m+"px":"",t[E]=y?g+"px":"",t.transform="",t))}function Oo(e){var t=e.state,n=e.options,o=n.gpuAcceleration,r=o===void 0?!0:o,i=n.adaptive,u=i===void 0?!0:i,s=n.roundOffsets,a=s===void 0?!0:s,l={placement:Z(t.placement),variation:be(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:r,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,Ft(Object.assign({},l,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:u,roundOffsets:a})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,Ft(Object.assign({},l,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:a})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var en={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Oo,data:{}},Ne={passive:!0};function Eo(e){var t=e.state,n=e.instance,o=e.options,r=o.scroll,i=r===void 0?!0:r,u=o.resize,s=u===void 0?!0:u,a=q(t.elements.popper),l=[].concat(t.scrollParents.reference,t.scrollParents.popper);return i&&l.forEach(function(c){c.addEventListener("scroll",n.update,Ne)}),s&&a.addEventListener("resize",n.update,Ne),function(){i&&l.forEach(function(c){c.removeEventListener("scroll",n.update,Ne)}),s&&a.removeEventListener("resize",n.update,Ne)}}var tn={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Eo,data:{}},To={left:"right",right:"left",bottom:"top",top:"bottom"};function He(e){return e.replace(/left|right|bottom|top/g,function(t){return To[t]})}var Co={start:"end",end:"start"};function Mt(e){return e.replace(/start|end/g,function(t){return Co[t]})}function lt(e){var t=q(e),n=t.pageXOffset,o=t.pageYOffset;return{scrollLeft:n,scrollTop:o}}function ut(e){return ye(oe(e)).left+lt(e).scrollLeft}function Ro(e,t){var n=q(e),o=oe(e),r=n.visualViewport,i=o.clientWidth,u=o.clientHeight,s=0,a=0;if(r){i=r.width,u=r.height;var l=Gt();(l||!l&&t==="fixed")&&(s=r.offsetLeft,a=r.offsetTop)}return{width:i,height:u,x:s+ut(e),y:a}}function Ao(e){var t,n=oe(e),o=lt(e),r=(t=e.ownerDocument)==null?void 0:t.body,i=ie(n.scrollWidth,n.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),u=ie(n.scrollHeight,n.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),s=-o.scrollLeft+ut(e),a=-o.scrollTop;return X(r||n).direction==="rtl"&&(s+=ie(n.clientWidth,r?r.clientWidth:0)-i),{width:i,height:u,x:s,y:a}}function ct(e){var t=X(e),n=t.overflow,o=t.overflowX,r=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+r+o)}function nn(e){return["html","body","#document"].indexOf(G(e))>=0?e.ownerDocument.body:K(e)&&ct(e)?e:nn(Ke(e))}function Ae(e,t){var n;t===void 0&&(t=[]);var o=nn(e),r=o===((n=e.ownerDocument)==null?void 0:n.body),i=q(o),u=r?[i].concat(i.visualViewport||[],ct(o)?o:[]):o,s=t.concat(u);return r?s:s.concat(Ae(Ke(u)))}function _e(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function Po(e,t){var n=ye(e,!1,t==="fixed");return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}function It(e,t,n){return t===Yt?_e(Ro(e,n)):le(t)?Po(t,n):_e(Ao(oe(e)))}function Bo(e){var t=Ae(Ke(e)),n=["absolute","fixed"].indexOf(X(e).position)>=0,o=n&&K(e)?Se(e):e;return le(o)?t.filter(function(r){return le(r)&&Jt(r,o)&&G(r)!=="body"}):[]}function Fo(e,t,n,o){var r=t==="clippingParents"?Bo(e):[].concat(t),i=[].concat(r,[n]),u=i[0],s=i.reduce(function(a,l){var c=It(e,l,o);return a.top=ie(c.top,a.top),a.right=Ve(c.right,a.right),a.bottom=Ve(c.bottom,a.bottom),a.left=ie(c.left,a.left),a},It(e,u,o));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}function on(e){var t=e.reference,n=e.element,o=e.placement,r=o?Z(o):null,i=o?be(o):null,u=t.x+t.width/2-n.width/2,s=t.y+t.height/2-n.height/2,a;switch(r){case W:a={x:u,y:t.y-n.height};break;case U:a={x:u,y:t.y+t.height};break;case z:a={x:t.x+t.width,y:s};break;case V:a={x:t.x-n.width,y:s};break;default:a={x:t.x,y:t.y}}var l=r?st(r):null;if(l!=null){var c=l==="y"?"height":"width";switch(i){case me:a[l]=a[l]-(t[c]/2-n[c]/2);break;case Fe:a[l]=a[l]+(t[c]/2-n[c]/2);break}}return a}function Me(e,t){t===void 0&&(t={});var n=t,o=n.placement,r=o===void 0?e.placement:o,i=n.strategy,u=i===void 0?e.strategy:i,s=n.boundary,a=s===void 0?Xn:s,l=n.rootBoundary,c=l===void 0?Yt:l,f=n.elementContext,v=f===void 0?Ee:f,g=n.altBoundary,h=g===void 0?!1:g,m=n.padding,x=m===void 0?0:m,y=Xt(typeof x!="number"?x:_t(x,Ie)),b=v===Ee?_n:Ee,E=e.rects.popper,d=e.elements[h?b:v],w=Fo(le(d)?d:d.contextElement||oe(e.elements.popper),a,c,u),C=ye(e.elements.reference),O=on({reference:C,element:E,placement:r}),R=_e(Object.assign({},E,O)),M=v===Ee?R:C,A={top:w.top-M.top+y.top,bottom:M.bottom-w.bottom+y.bottom,left:w.left-M.left+y.left,right:M.right-w.right+y.right},I=e.modifiersData.offset;if(v===Ee&&I){var H=I[r];Object.keys(A).forEach(function(P){var L=[z,U].indexOf(P)>=0?1:-1,k=[W,U].indexOf(P)>=0?"y":"x";A[P]+=H[k]*L})}return A}function Mo(e,t){t===void 0&&(t={});var n=t,o=n.placement,r=n.boundary,i=n.rootBoundary,u=n.padding,s=n.flipVariations,a=n.allowedAutoPlacements,l=a===void 0?rt:a,c=be(o),f=c?s?Pt:Pt.filter(function(h){return be(h)===c}):Ie,v=f.filter(function(h){return l.indexOf(h)>=0});v.length===0&&(v=f);var g=v.reduce(function(h,m){return h[m]=Me(e,{placement:m,boundary:r,rootBoundary:i,padding:u})[Z(m)],h},{});return Object.keys(g).sort(function(h,m){return g[h]-g[m]})}function Io(e){if(Z(e)===ot)return[];var t=He(e);return[Mt(e),t,Mt(t)]}function So(e){var t=e.state,n=e.options,o=e.name;if(!t.modifiersData[o]._skip){for(var r=n.mainAxis,i=r===void 0?!0:r,u=n.altAxis,s=u===void 0?!0:u,a=n.fallbackPlacements,l=n.padding,c=n.boundary,f=n.rootBoundary,v=n.altBoundary,g=n.flipVariations,h=g===void 0?!0:g,m=n.allowedAutoPlacements,x=t.options.placement,y=Z(x),b=y===x,E=a||(b||!h?[He(x)]:Io(x)),d=[x].concat(E).reduce(function(re,J){return re.concat(Z(J)===ot?Mo(t,{placement:J,boundary:c,rootBoundary:f,padding:l,flipVariations:h,allowedAutoPlacements:m}):J)},[]),w=t.rects.reference,C=t.rects.popper,O=new Map,R=!0,M=d[0],A=0;A=0,k=L?"width":"height",j=Me(t,{placement:I,boundary:c,rootBoundary:f,altBoundary:v,padding:l}),D=L?P?z:V:P?U:W;w[k]>C[k]&&(D=He(D));var B=He(D),S=[];if(i&&S.push(j[H]<=0),s&&S.push(j[D]<=0,j[B]<=0),S.every(function(re){return re})){M=I,R=!1;break}O.set(I,S)}if(R)for(var ce=h?3:1,fe=function(re){var J=d.find(function(De){var Oe=O.get(De);if(Oe)return Oe.slice(0,re).every(function(pe){return pe})});if(J)return M=J,"break"},xe=ce;xe>0;xe--){var je=fe(xe);if(je==="break")break}t.placement!==M&&(t.modifiersData[o]._skip=!0,t.placement=M,t.reset=!0)}}var jo={name:"flip",enabled:!0,phase:"main",fn:So,requiresIfExists:["offset"],data:{_skip:!1}};function St(e,t,n){return n===void 0&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function jt(e){return[W,z,U,V].some(function(t){return e[t]>=0})}function Do(e){var t=e.state,n=e.name,o=t.rects.reference,r=t.rects.popper,i=t.modifiersData.preventOverflow,u=Me(t,{elementContext:"reference"}),s=Me(t,{altBoundary:!0}),a=St(u,o),l=St(s,r,i),c=jt(a),f=jt(l);t.modifiersData[n]={referenceClippingOffsets:a,popperEscapeOffsets:l,isReferenceHidden:c,hasPopperEscaped:f},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":f})}var ko={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:Do};function Lo(e,t,n){var o=Z(e),r=[V,W].indexOf(o)>=0?-1:1,i=typeof n=="function"?n(Object.assign({},t,{placement:e})):n,u=i[0],s=i[1];return u=u||0,s=(s||0)*r,[V,z].indexOf(o)>=0?{x:s,y:u}:{x:u,y:s}}function No(e){var t=e.state,n=e.options,o=e.name,r=n.offset,i=r===void 0?[0,0]:r,u=rt.reduce(function(c,f){return c[f]=Lo(f,t.rects,i),c},{}),s=u[t.placement],a=s.x,l=s.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=a,t.modifiersData.popperOffsets.y+=l),t.modifiersData[o]=u}var Ho={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:No};function $o(e){var t=e.state,n=e.name;t.modifiersData[n]=on({reference:t.rects.reference,element:t.rects.popper,placement:t.placement})}var rn={name:"popperOffsets",enabled:!0,phase:"read",fn:$o,data:{}};function Wo(e){return e==="x"?"y":"x"}function Vo(e){var t=e.state,n=e.options,o=e.name,r=n.mainAxis,i=r===void 0?!0:r,u=n.altAxis,s=u===void 0?!1:u,a=n.boundary,l=n.rootBoundary,c=n.altBoundary,f=n.padding,v=n.tether,g=v===void 0?!0:v,h=n.tetherOffset,m=h===void 0?0:h,x=Me(t,{boundary:a,rootBoundary:l,padding:f,altBoundary:c}),y=Z(t.placement),b=be(t.placement),E=!b,d=st(y),w=Wo(d),C=t.modifiersData.popperOffsets,O=t.rects.reference,R=t.rects.popper,M=typeof m=="function"?m(Object.assign({},t.rects,{placement:t.placement})):m,A=typeof M=="number"?{mainAxis:M,altAxis:M}:Object.assign({mainAxis:0,altAxis:0},M),I=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,H={x:0,y:0};if(C){if(i){var P,L=d==="y"?W:V,k=d==="y"?U:z,j=d==="y"?"height":"width",D=C[d],B=D+x[L],S=D-x[k],ce=g?-R[j]/2:0,fe=b===me?O[j]:R[j],xe=b===me?-R[j]:-O[j],je=t.elements.arrow,re=g&&je?it(je):{width:0,height:0},J=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:Qt(),De=J[L],Oe=J[k],pe=Re(0,O[j],re[j]),mn=E?O[j]/2-ce-pe-De-A.mainAxis:fe-pe-De-A.mainAxis,hn=E?-O[j]/2+ce+pe+Oe+A.mainAxis:xe+pe+Oe+A.mainAxis,Ue=t.elements.arrow&&Se(t.elements.arrow),yn=Ue?d==="y"?Ue.clientTop||0:Ue.clientLeft||0:0,vt=(P=I==null?void 0:I[d])!=null?P:0,bn=D+mn-vt-yn,wn=D+hn-vt,gt=Re(g?Ve(B,bn):B,D,g?ie(S,wn):S);C[d]=gt,H[d]=gt-D}if(s){var mt,xn=d==="x"?W:V,On=d==="x"?U:z,ae=C[w],ke=w==="y"?"height":"width",ht=ae+x[xn],yt=ae-x[On],ze=[W,V].indexOf(y)!==-1,bt=(mt=I==null?void 0:I[w])!=null?mt:0,wt=ze?ht:ae-O[ke]-R[ke]-bt+A.altAxis,xt=ze?ae+O[ke]+R[ke]-bt-A.altAxis:yt,Ot=g&&ze?go(wt,ae,xt):Re(g?wt:ht,ae,g?xt:yt);C[w]=Ot,H[w]=Ot-ae}t.modifiersData[o]=H}}var qo={name:"preventOverflow",enabled:!0,phase:"main",fn:Vo,requiresIfExists:["offset"]};function Ko(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function Uo(e){return e===q(e)||!K(e)?lt(e):Ko(e)}function zo(e){var t=e.getBoundingClientRect(),n=he(t.width)/e.offsetWidth||1,o=he(t.height)/e.offsetHeight||1;return n!==1||o!==1}function Yo(e,t,n){n===void 0&&(n=!1);var o=K(t),r=K(t)&&zo(t),i=oe(t),u=ye(e,r,n),s={scrollLeft:0,scrollTop:0},a={x:0,y:0};return(o||!o&&!n)&&((G(t)!=="body"||ct(i))&&(s=Uo(t)),K(t)?(a=ye(t,!0),a.x+=t.clientLeft,a.y+=t.clientTop):i&&(a.x=ut(i))),{x:u.left+s.scrollLeft-a.x,y:u.top+s.scrollTop-a.y,width:u.width,height:u.height}}function Zo(e){var t=new Map,n=new Set,o=[];e.forEach(function(i){t.set(i.name,i)});function r(i){n.add(i.name);var u=[].concat(i.requires||[],i.requiresIfExists||[]);u.forEach(function(s){if(!n.has(s)){var a=t.get(s);a&&r(a)}}),o.push(i)}return e.forEach(function(i){n.has(i.name)||r(i)}),o}function Go(e){var t=Zo(e);return uo.reduce(function(n,o){return n.concat(t.filter(function(r){return r.phase===o}))},[])}function Jo(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}function Qo(e){var t=e.reduce(function(n,o){var r=n[o.name];return n[o.name]=r?Object.assign({},r,o,{options:Object.assign({},r.options,o.options),data:Object.assign({},r.data,o.data)}):o,n},{});return Object.keys(t).map(function(n){return t[n]})}var Dt={placement:"bottom",modifiers:[],strategy:"absolute"};function kt(){for(var e=arguments.length,t=new Array(e),n=0;n{const o={name:"updateState",enabled:!0,phase:"write",fn:({state:a})=>{const l=nr(a);Object.assign(u.value,l)},requires:["computeStyles"]},r=T(()=>{const{onFirstUpdate:a,placement:l,strategy:c,modifiers:f}=p(n);return{onFirstUpdate:a,placement:l||"bottom",strategy:c||"absolute",modifiers:[...f||[],o,{name:"applyStyles",enabled:!1}]}}),i=Tn(),u=N({styles:{popper:{position:p(r).strategy,left:"0",top:"0"},arrow:{position:"absolute"}},attributes:{}}),s=()=>{i.value&&(i.value.destroy(),i.value=void 0)};return $(r,a=>{const l=p(i);l&&l.setOptions(a)},{deep:!0}),$([e,t],([a,l])=>{s(),!(!a||!l)&&(i.value=er(a,l,p(r)))}),te(()=>{s()}),{state:T(()=>{var a;return{...((a=p(i))==null?void 0:a.state)||{}}}),styles:T(()=>p(u).styles),attributes:T(()=>p(u).attributes),update:()=>{var a;return(a=p(i))==null?void 0:a.update()},forceUpdate:()=>{var a;return(a=p(i))==null?void 0:a.forceUpdate()},instanceRef:T(()=>p(i))}};function nr(e){const t=Object.keys(e.elements);return{styles:Et(t.map(n=>[n,e.styles[n]||{}])),attributes:Et(t.map(n=>[n,e.attributes[n]]))}}function Lt(){let e;const t=(o,r)=>{n(),e=globalThis.setTimeout(o,r)},n=()=>{e!==void 0&&(globalThis.clearTimeout(e),e=void 0)};return Cn(()=>n()),{registerTimeout:t,cancelTimeout:n}}const an=()=>{const e=An(),t=Un(),n=T(()=>`${e.value}-popper-container-${t.prefix}`);return{id:n,selector:T(()=>`#${n.value}`)}},or=e=>{const t=document.createElement("div");return t.id=e,document.body.appendChild(t),t},rr=()=>{const{id:e,selector:t}=an();return Rn(()=>{Ce&&(document.body.querySelector(t.value)||or(e.value))}),{id:e,selector:t}},ar=_({showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0}}),ir=({showAfter:e,hideAfter:t,autoClose:n,open:o,close:r})=>{const{registerTimeout:i}=Lt(),{registerTimeout:u,cancelTimeout:s}=Lt();return{onOpen:(c,f=p(e))=>{i(()=>{o(c);const v=p(n);Je(v)&&v>0&&u(()=>{r(c)},v)},f)},onClose:(c,f=p(t))=>{s(),i(()=>{r(c)},f)}}},sn=Symbol("elForwardRef"),sr=e=>{Pe(sn,{setForwardRef:(n=>{e.value=n})})},lr=e=>({mounted(t){e(t)},updated(t){e(t)},unmounted(){e(null)}}),ur=["dialog","grid","group","listbox","menu","navigation","tooltip","tree"],ln=_({role:{type:String,values:ur,default:"tooltip"}}),pt=Symbol("popper"),un=Symbol("popperContent");var cr=ne({name:"ElPopperArrow",inheritAttrs:!1,__name:"arrow",setup(e,{expose:t}){const n=we("popper"),{arrowRef:o,arrowStyle:r}=ue(un,void 0);return te(()=>{o.value=void 0}),t({arrowRef:o}),(i,u)=>(Y(),$e("span",{ref_key:"arrowRef",ref:o,class:$t(p(n).e("arrow")),style:Pn(p(r)),"data-popper-arrow":""},null,6))}}),fr=cr;const cn=_({virtualRef:{type:F(Object)},virtualTriggering:Boolean,onMouseenter:{type:F(Function)},onMouseleave:{type:F(Function)},onClick:{type:F(Function)},onKeydown:{type:F(Function)},onFocus:{type:F(Function)},onBlur:{type:F(Function)},onContextmenu:{type:F(Function)},id:String,open:Boolean}),Ze="ElOnlyChild",pr=ne({name:Ze,setup(e,{slots:t,attrs:n}){var r;const o=lr(((r=ue(sn))==null?void 0:r.setForwardRef)??Qe);return()=>{var a;const i=(a=t.default)==null?void 0:a.call(t,n);if(!i)return null;const[u,s]=fn(i);return u?(s>1&&Tt(Ze,"requires exact only one valid child."),Wt(Bn(u,n),[[o]])):(Tt(Ze,"no valid child node found"),null)}}});function fn(e){if(!e)return[null,0];const t=e,n=t.filter(o=>o.type!==Ct).length;for(const o of t){if(Fn(o))switch(o.type){case Ct:continue;case In:case"svg":return[Nt(o),n];case Mn:return fn(o.children);default:return[o,n]}return[Nt(o),n]}return[null,0]}function Nt(e){return Be("span",{class:we("only-child").e("content")},[e])}var dr=ne({name:"ElPopperTrigger",inheritAttrs:!1,__name:"trigger",props:cn,setup(e,{expose:t}){const n=e,{role:o,triggerRef:r}=ue(pt,void 0);sr(r);const i=T(()=>s.value?n.id:void 0),u=T(()=>{if(o&&o.value==="tooltip")return n.open&&n.id?n.id:void 0}),s=T(()=>{if(o&&o.value!=="tooltip")return o.value}),a=T(()=>s.value?`${n.open}`:void 0);let l;const c=["onMouseenter","onMouseleave","onClick","onKeydown","onFocus","onBlur","onContextmenu"];return qe(()=>{$(()=>n.virtualRef,f=>{f&&(r.value=Vt(f))},{immediate:!0}),$(r,(f,v)=>{l==null||l(),l=void 0,ve(v)&&c.forEach(g=>{const h=n[g];h&&v.removeEventListener(g.slice(2).toLowerCase(),h,["onFocus","onBlur"].includes(g))}),ve(f)&&(c.forEach(g=>{const h=n[g];h&&f.addEventListener(g.slice(2).toLowerCase(),h,["onFocus","onBlur"].includes(g))}),Rt(f)&&(l=$([i,u,s,a],g=>{["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach((h,m)=>{qt(g[m])?f.removeAttribute(h):f.setAttribute(h,g[m])})},{immediate:!0}))),ve(v)&&Rt(v)&&["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach(g=>v.removeAttribute(g))},{immediate:!0})}),te(()=>{if(l==null||l(),l=void 0,r.value&&ve(r.value)){const f=r.value;c.forEach(v=>{const g=n[v];g&&f.removeEventListener(v.slice(2).toLowerCase(),g,["onFocus","onBlur"].includes(v))}),r.value=void 0}}),t({triggerRef:r}),(f,v)=>e.virtualTriggering?We("v-if",!0):(Y(),ge(p(pr),tt({key:0},f.$attrs,{"aria-controls":i.value,"aria-describedby":u.value,"aria-expanded":a.value,"aria-haspopup":s.value}),{default:ee(()=>[se(f.$slots,"default")]),_:3},16,["aria-controls","aria-describedby","aria-expanded","aria-haspopup"]))}}),vr=dr;const pn=_({arrowOffset:{type:Number,default:5}}),gr=_({boundariesPadding:{type:Number,default:0},fallbackPlacements:{type:F(Array),default:void 0},gpuAcceleration:{type:Boolean,default:!0},offset:{type:Number,default:12},placement:{type:String,values:rt,default:"bottom"},popperOptions:{type:F(Object),default:()=>({})},strategy:{type:String,values:["fixed","absolute"],default:"absolute"}}),dn=_({...gr,...pn,id:String,style:{type:F([String,Array,Object,Boolean]),default:void 0},className:{type:F([String,Array,Object])},effect:{type:F(String),default:"dark"},visible:Boolean,enterable:{type:Boolean,default:!0},pure:Boolean,focusOnShow:Boolean,trapping:Boolean,popperClass:{type:F([String,Array,Object])},popperStyle:{type:F([String,Array,Object,Boolean]),default:void 0},referenceEl:{type:F(Object)},triggerTargetEl:{type:F(Object)},stopPopperMouseEvent:{type:Boolean,default:!0},virtualTriggering:Boolean,zIndex:Number,...zt(["ariaLabel"]),loop:Boolean}),mr={mouseenter:e=>e instanceof MouseEvent,mouseleave:e=>e instanceof MouseEvent,focus:()=>!0,blur:()=>!0,close:()=>!0};const Zr=e=>nt(e)?e[0]:e,hr=e=>!e&&e!==0?[]:nt(e)?e:[e],yr=(e,t=[])=>{const{placement:n,strategy:o,popperOptions:r}=e,i={placement:n,strategy:o,...r,modifiers:[...wr(e),...t]};return xr(i,r==null?void 0:r.modifiers),i},br=e=>{if(Ce)return Vt(e)};function wr(e){const{offset:t,gpuAcceleration:n,fallbackPlacements:o}=e;return[{name:"offset",options:{offset:[0,t??12]}},{name:"preventOverflow",options:{padding:{top:0,bottom:0,left:0,right:0}}},{name:"flip",options:{padding:5,fallbackPlacements:o}},{name:"computeStyles",options:{gpuAcceleration:n}}]}function xr(e,t){t&&(e.modifiers=[...e.modifiers,...t??[]])}const Or=0,Er=e=>{const{popperInstanceRef:t,contentRef:n,triggerRef:o,role:r}=ue(pt,void 0),i=N(),u=T(()=>e.arrowOffset),s=T(()=>({name:"eventListeners",enabled:!!e.visible})),a=T(()=>{const b=p(i),E=p(u)??Or;return{name:"arrow",enabled:!Zn(b),options:{element:b,padding:E}}}),l=T(()=>({onFirstUpdate:()=>{h()},...yr(e,[p(a),p(s)])})),c=T(()=>br(e.referenceEl)||p(o)),{attributes:f,state:v,styles:g,update:h,forceUpdate:m,instanceRef:x}=tr(c,n,l);$(x,b=>t.value=b,{flush:"sync"}),qe(()=>{$(()=>{var b,E;return(E=(b=p(c))==null?void 0:b.getBoundingClientRect)==null?void 0:E.call(b)},()=>{h()})});let y;return $(()=>e.visible,b=>{y==null||y(),y=void 0,b&&(y=Sn(n,h).stop)}),te(()=>{t.value=void 0,y==null||y(),y=void 0}),{attributes:f,arrowRef:i,contentRef:n,instanceRef:x,state:v,styles:g,role:r,forceUpdate:m,update:h}},Tr=(e,{attributes:t,styles:n,role:o})=>{const{nextZIndex:r}=jn(),i=we("popper"),u=T(()=>p(t).popper),s=N(Je(e.zIndex)?e.zIndex:r()),a=T(()=>[i.b(),i.is("pure",e.pure),i.is(e.effect),e.popperClass]),l=T(()=>[{zIndex:p(s)},p(n).popper,e.popperStyle||{}]),c=T(()=>o.value==="dialog"?"false":void 0),f=T(()=>p(n).arrow||{});return{ariaModal:c,arrowStyle:f,contentAttrs:u,contentClass:a,contentStyle:l,contentZIndex:s,updateZIndex:()=>{s.value=Je(e.zIndex)?e.zIndex:r()}}},Cr=(e,t)=>{const n=N(!1),o=N(),r=()=>{t("focus")},i=l=>{var c;((c=l.detail)==null?void 0:c.focusReason)!=="pointer"&&(o.value="first",t("blur"))},u=l=>{e.visible&&!n.value&&(l.target&&(o.value=l.target),n.value=!0)},s=l=>{e.trapping||(l.detail.focusReason==="pointer"&&l.preventDefault(),n.value=!1)},a=()=>{n.value=!1,t("close")};return te(()=>{o.value=void 0}),{focusStartRef:o,trapped:n,onFocusAfterReleased:i,onFocusAfterTrapped:r,onFocusInTrap:u,onFocusoutPrevented:s,onReleaseRequested:a}};var Rr=ne({name:"ElPopperContent",__name:"content",props:dn,emits:mr,setup(e,{expose:t,emit:n}){const o=n,r=e,{focusStartRef:i,trapped:u,onFocusAfterReleased:s,onFocusAfterTrapped:a,onFocusInTrap:l,onFocusoutPrevented:c,onReleaseRequested:f}=Cr(r,o),{attributes:v,arrowRef:g,contentRef:h,styles:m,instanceRef:x,role:y,update:b}=Er(r),{ariaModal:E,arrowStyle:d,contentAttrs:w,contentClass:C,contentStyle:O,updateZIndex:R}=Tr(r,{styles:m,attributes:v,role:y}),M=ue(At,void 0);Pe(un,{arrowStyle:d,arrowRef:g}),M&&Pe(At,{...M,addInputId:Qe,removeInputId:Qe});let A;const I=(P=!0)=>{b(),P&&R()},H=()=>{I(!1),r.visible&&r.focusOnShow?u.value=!0:r.visible===!1&&(u.value=!1)};return qe(()=>{$(()=>r.triggerTargetEl,(P,L)=>{A==null||A(),A=void 0;const k=p(P||h.value),j=p(L||h.value);ve(k)&&(A=$([y,()=>r.ariaLabel,E,()=>r.id],D=>{["role","aria-label","aria-modal","id"].forEach((B,S)=>{qt(D[S])?k.removeAttribute(B):k.setAttribute(B,D[S])})},{immediate:!0})),j!==k&&ve(j)&&["role","aria-label","aria-modal","id"].forEach(D=>{j.removeAttribute(D)})},{immediate:!0}),$(()=>r.visible,H,{immediate:!0})}),te(()=>{A==null||A(),A=void 0,h.value=void 0}),t({popperContentRef:h,popperInstanceRef:x,updatePopper:I,contentStyle:O}),(P,L)=>(Y(),$e("div",tt({ref_key:"contentRef",ref:h},p(w),{style:p(O),class:p(C),tabindex:"-1",onMouseenter:L[0]||(L[0]=k=>P.$emit("mouseenter",k)),onMouseleave:L[1]||(L[1]=k=>P.$emit("mouseleave",k))}),[Be(p(Yn),{loop:e.loop,trapped:p(u),"trap-on-focus-in":!0,"focus-trap-el":p(h),"focus-start-el":p(i),onFocusAfterTrapped:p(a),onFocusAfterReleased:p(s),onFocusin:p(l),onFocusoutPrevented:p(c),onReleaseRequested:p(f)},{default:ee(()=>[se(P.$slots,"default")]),_:3},8,["loop","trapped","focus-trap-el","focus-start-el","onFocusAfterTrapped","onFocusAfterReleased","onFocusin","onFocusoutPrevented","onReleaseRequested"])],16))}}),Ar=Rr,Pr=ne({name:"ElPopper",inheritAttrs:!1,__name:"popper",props:ln,setup(e,{expose:t}){const n=e,o={triggerRef:N(),popperInstanceRef:N(),contentRef:N(),referenceRef:N(),role:T(()=>n.role)};return t(o),Pe(pt,o),(r,i)=>se(r.$slots,"default")}}),Br=Pr;const Fr=Kt(Br),vn=_({...ar,...dn,appendTo:{type:F([String,Object])},content:{type:String,default:""},rawContent:Boolean,persistent:Boolean,visible:{type:F(Boolean),default:null},transition:String,teleported:{type:Boolean,default:!0},disabled:Boolean,...zt(["ariaLabel"])}),gn=_({...cn,disabled:Boolean,trigger:{type:F([String,Array]),default:"hover"},triggerKeys:{type:F(Array),default:()=>[Ye.enter,Ye.numpadEnter,Ye.space]},focusOnTarget:Boolean}),{useModelToggleProps:Mr,useModelToggleEmits:Ir,useModelToggle:Sr}=Qn("visible"),jr=_({...ln,...Mr,...vn,...gn,...pn,showArrow:{type:Boolean,default:!0}}),Dr=[...Ir,"before-show","before-hide","show","hide","open","close"],dt=Symbol("elTooltip"),et=(e,t)=>nt(e)?e.includes(t):e===t,de=(e,t,n)=>o=>{et(p(e),t)&&n(o)};var kr=ne({name:"ElTooltipTrigger",__name:"trigger",props:gn,setup(e,{expose:t}){const n=e,o=we("tooltip"),{controlled:r,id:i,open:u,onOpen:s,onClose:a,onToggle:l}=ue(dt,void 0),c=N(null),f=()=>{if(p(r)||n.disabled)return!0},v=Te(n,"trigger"),g=Q(f,de(v,"hover",d=>{s(d),n.focusOnTarget&&d.target&&kn(()=>{Ut(d.target,{preventScroll:!0})})})),h=Q(f,de(v,"hover",a)),m=Q(f,de(v,"click",d=>{d.button===0&&l(d)})),x=Q(f,de(v,"focus",s)),y=Q(f,de(v,"focus",a)),b=Q(f,de(v,"contextmenu",d=>{d.preventDefault(),l(d)})),E=Q(f,d=>{const w=Dn(d);n.triggerKeys.includes(w)&&(d.preventDefault(),l(d))});return t({triggerRef:c}),(d,w)=>(Y(),ge(p(vr),{id:p(i),"virtual-ref":e.virtualRef,open:p(u),"virtual-triggering":e.virtualTriggering,class:$t(p(o).e("trigger")),onBlur:p(y),onClick:p(m),onContextmenu:p(b),onFocus:p(x),onMouseenter:p(g),onMouseleave:p(h),onKeydown:p(E)},{default:ee(()=>[se(d.$slots,"default")]),_:3},8,["id","virtual-ref","open","virtual-triggering","class","onBlur","onClick","onContextmenu","onFocus","onMouseenter","onMouseleave","onKeydown"]))}}),Lr=kr,Nr=ne({name:"ElTooltipContent",inheritAttrs:!1,__name:"content",props:vn,setup(e,{expose:t}){const n=e,{selector:o}=an(),r=we("tooltip"),i=N(),u=Ln(()=>{var B;return(B=i.value)==null?void 0:B.popperContentRef});let s;const{controlled:a,id:l,open:c,trigger:f,onClose:v,onOpen:g,onShow:h,onHide:m,onBeforeShow:x,onBeforeHide:y}=ue(dt,void 0),b=T(()=>n.transition||`${r.namespace.value}-fade-in-linear`),E=T(()=>n.persistent);te(()=>{s==null||s()});const d=T(()=>p(E)?!0:p(c)),w=T(()=>n.disabled?!1:p(c)),C=T(()=>n.appendTo||o.value),O=T(()=>n.style??{}),R=N(!0),M=()=>{m(),D()&&Ut(document.body,{preventScroll:!0}),R.value=!0},A=()=>{if(p(a))return!0},I=Q(A,()=>{n.enterable&&et(p(f),"hover")&&g()}),H=Q(A,()=>{et(p(f),"hover")&&v()}),P=()=>{var B,S;(S=(B=i.value)==null?void 0:B.updatePopper)==null||S.call(B),x==null||x()},L=()=>{y==null||y()},k=()=>{h()},j=()=>{n.virtualTriggering||v()},D=B=>{var fe;const S=(fe=i.value)==null?void 0:fe.popperContentRef,ce=(B==null?void 0:B.relatedTarget)||document.activeElement;return S==null?void 0:S.contains(ce)};return $(()=>p(c),B=>{B?(R.value=!1,s=Wn(u,()=>{p(a)||hr(p(f)).every(S=>S!=="hover"&&S!=="focus")&&v()},{detectIframe:!0})):s==null||s()},{flush:"post"}),t({contentRef:i,isFocusInsideContent:D}),(B,S)=>(Y(),ge($n,{disabled:!e.teleported,to:C.value},[d.value||!R.value?(Y(),ge(Nn,{key:0,name:b.value,appear:!E.value,onAfterLeave:M,onBeforeEnter:P,onAfterEnter:k,onBeforeLeave:L,persisted:""},{default:ee(()=>[Wt(Be(p(Ar),tt({id:p(l),ref_key:"contentRef",ref:i},B.$attrs,{"aria-label":e.ariaLabel,"aria-hidden":R.value,"boundaries-padding":e.boundariesPadding,"fallback-placements":e.fallbackPlacements,"gpu-acceleration":e.gpuAcceleration,offset:e.offset,placement:e.placement,"popper-options":e.popperOptions,"arrow-offset":e.arrowOffset,strategy:e.strategy,effect:e.effect,enterable:e.enterable,pure:e.pure,"popper-class":e.popperClass,"popper-style":[e.popperStyle,O.value],"reference-el":e.referenceEl,"trigger-target-el":e.triggerTargetEl,visible:w.value,"z-index":e.zIndex,loop:e.loop,onMouseenter:p(I),onMouseleave:p(H),onBlur:j,onClose:p(v)}),{default:ee(()=>[se(B.$slots,"default")]),_:3},16,["id","aria-label","aria-hidden","boundaries-padding","fallback-placements","gpu-acceleration","offset","placement","popper-options","arrow-offset","strategy","effect","enterable","pure","popper-class","popper-style","reference-el","trigger-target-el","visible","z-index","loop","onMouseenter","onMouseleave","onClose"]),[[Hn,w.value]])]),_:3},8,["name","appear"])):We("v-if",!0)],8,["disabled","to"]))}}),Hr=Nr;const $r=["innerHTML"],Wr={key:1};var Vr=ne({name:"ElTooltip",__name:"tooltip",props:jr,emits:Dr,setup(e,{expose:t,emit:n}){const o=e,r=n;rr();const i=we("tooltip"),u=zn(),s=N(),a=N(),l=()=>{var w;const d=p(s);d&&((w=d.popperInstanceRef)==null||w.update())},c=N(!1),f=N(),{show:v,hide:g,hasUpdateHandler:h}=Sr({indicator:c,toggleReason:f}),{onOpen:m,onClose:x}=ir({showAfter:Te(o,"showAfter"),hideAfter:Te(o,"hideAfter"),autoClose:Te(o,"autoClose"),open:v,close:g}),y=T(()=>Ge(o.visible)&&!h.value),b=T(()=>[i.b(),o.popperClass]);Pe(dt,{controlled:y,id:u,open:Kn(c),trigger:Te(o,"trigger"),onOpen:m,onClose:x,onToggle:d=>{p(c)?x(d):m(d)},onShow:()=>{r("show",f.value)},onHide:()=>{r("hide",f.value)},onBeforeShow:()=>{r("before-show",f.value)},onBeforeHide:()=>{r("before-hide",f.value)},updatePopper:l}),$(()=>o.disabled,d=>{d&&c.value&&(c.value=!1),!d&&Ge(o.visible)&&(c.value=o.visible)});const E=d=>{var w;return(w=a.value)==null?void 0:w.isFocusInsideContent(d)};return Vn(()=>c.value&&g()),te(()=>{f.value=void 0}),t({popperRef:s,contentRef:a,isFocusInsideContent:E,updatePopper:l,onOpen:m,onClose:x,hide:g}),(d,w)=>(Y(),ge(p(Fr),{ref_key:"popperRef",ref:s,role:e.role},{default:ee(()=>[Be(Lr,{disabled:e.disabled,trigger:e.trigger,"trigger-keys":e.triggerKeys,"virtual-ref":e.virtualRef,"virtual-triggering":e.virtualTriggering,"focus-on-target":e.focusOnTarget},{default:ee(()=>[d.$slots.default?se(d.$slots,"default",{key:0}):We("v-if",!0)]),_:3},8,["disabled","trigger","trigger-keys","virtual-ref","virtual-triggering","focus-on-target"]),Be(Hr,{ref_key:"contentRef",ref:a,"aria-label":e.ariaLabel,"boundaries-padding":e.boundariesPadding,content:e.content,disabled:e.disabled,effect:e.effect,enterable:e.enterable,"fallback-placements":e.fallbackPlacements,"hide-after":e.hideAfter,"gpu-acceleration":e.gpuAcceleration,offset:e.offset,persistent:e.persistent,"popper-class":b.value,"popper-style":e.popperStyle,placement:e.placement,"popper-options":e.popperOptions,"arrow-offset":e.arrowOffset,pure:e.pure,"raw-content":e.rawContent,"reference-el":e.referenceEl,"trigger-target-el":e.triggerTargetEl,"show-after":e.showAfter,strategy:e.strategy,teleported:e.teleported,transition:e.transition,"virtual-triggering":e.virtualTriggering,"z-index":e.zIndex,"append-to":e.appendTo,loop:e.loop},{default:ee(()=>[se(d.$slots,"content",{},()=>[e.rawContent?(Y(),$e("span",{key:0,innerHTML:e.content},null,8,$r)):(Y(),$e("span",Wr,qn(e.content),1))]),e.showArrow?(Y(),ge(p(fr),{key:0})):We("v-if",!0)]),_:3},8,["aria-label","boundaries-padding","content","disabled","effect","enterable","fallback-placements","hide-after","gpu-acceleration","offset","persistent","popper-class","popper-style","placement","popper-options","arrow-offset","pure","raw-content","reference-el","trigger-target-el","show-after","strategy","teleported","transition","virtual-triggering","z-index","append-to","loop"])]),_:3},8,["role"]))}}),qr=Vr;const Gr=Kt(qr);export{Gr as E,pr as O,rt as a,gn as b,hr as c,Zr as e,Zn as i,ur as r,vn as u}; diff --git a/frontend/dist/assets/el-popper-Wf_ds9r7.css b/frontend/dist/assets/el-popper-Wf_ds9r7.css new file mode 100644 index 0000000..96022dc --- /dev/null +++ b/frontend/dist/assets/el-popper-Wf_ds9r7.css @@ -0,0 +1 @@ +.el-popper{--el-popper-border-radius:var(--el-popover-border-radius,4px);--el-popper-bg-color-light:var(--el-bg-color-overlay);--el-popper-bg-color-dark:var(--el-text-color-primary);border-radius:var(--el-popper-border-radius);z-index:2000;overflow-wrap:break-word;word-break:normal;visibility:visible;min-width:10px;padding:5px 11px;font-size:12px;line-height:20px;position:absolute}.el-popper.is-dark{--el-fill-color-blank:var(--el-popper-bg-color-dark);color:var(--el-bg-color);background:var(--el-popper-bg-color-dark);border:1px solid var(--el-text-color-primary)}.el-popper.is-dark>.el-popper__arrow:before{border:1px solid var(--el-text-color-primary);background:var(--el-popper-bg-color-dark);right:0}.el-popper.is-light{--el-fill-color-blank:var(--el-popper-bg-color-light);background:var(--el-popper-bg-color-light);border:1px solid var(--el-border-color-light)}.el-popper.is-light>.el-popper__arrow:before{border:1px solid var(--el-border-color-light);background:var(--el-popper-bg-color-light);right:0}.el-popper.is-pure{padding:0}.el-popper__arrow{z-index:-1;width:10px;height:10px;position:absolute}.el-popper__arrow:before{z-index:-1;content:" ";background:var(--el-text-color-primary);box-sizing:border-box;width:10px;height:10px;position:absolute;transform:rotate(45deg)}.el-popper[data-popper-placement^=top]>.el-popper__arrow{bottom:-5px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-bottom-right-radius:2px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow{top:-5px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-top-left-radius:2px}.el-popper[data-popper-placement^=left]>.el-popper__arrow{right:-5px}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-top-right-radius:2px}.el-popper[data-popper-placement^=right]>.el-popper__arrow{left:-5px}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-bottom-left-radius:2px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-top-color:#0000!important;border-left-color:#0000!important}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-bottom-color:#0000!important;border-right-color:#0000!important}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-bottom-color:#0000!important;border-left-color:#0000!important}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-top-color:#0000!important;border-right-color:#0000!important} diff --git a/frontend/dist/assets/el-progress-DuOxpLST.js b/frontend/dist/assets/el-progress-DuOxpLST.js new file mode 100644 index 0000000..89d09dc --- /dev/null +++ b/frontend/dist/assets/el-progress-DuOxpLST.js @@ -0,0 +1,6 @@ +import{b as A,R as y,d as M,a as V,o as l,c as d,n as i,f as s,q as p,al as f,h as B,aa as N,g as P,e as D,w as O,r as R,E as j,j as o,cZ as q,b4 as J,bQ as Q,b5 as U,b6 as Z,bd as G,J as I,l as H}from"./index-BKKvzUDD.js";const K=A({type:{type:String,default:"line",values:["line","circle","dashboard"]},percentage:{type:Number,default:0,validator:e=>e>=0&&e<=100},status:{type:String,default:"",values:["","success","exception","warning"]},indeterminate:Boolean,duration:{type:Number,default:3},strokeWidth:{type:Number,default:6},strokeLinecap:{type:y(String),default:"round"},textInside:Boolean,width:{type:Number,default:126},showText:{type:Boolean,default:!0},color:{type:y([String,Array,Function]),default:""},striped:Boolean,stripedFlow:Boolean,format:{type:y(Function),default:e=>`${e}%`}}),X=["aria-valuenow"],Y={viewBox:"0 0 100 100"},_=["d","stroke","stroke-linecap","stroke-width"],ee=["d","stroke","opacity","stroke-linecap","stroke-width"],te={key:0};var ae=M({name:"ElProgress",__name:"progress",props:K,setup(e){const k={success:"#13ce66",exception:"#ff4949",warning:"#e6a23c",default:"#20a0ff"},a=e,r=V("progress"),T=o(()=>{const t={width:`${a.percentage}%`,animationDuration:`${a.duration}s`},n=x(a.percentage);return n.includes("gradient")?t.background=n:t.backgroundColor=n,t}),v=o(()=>(a.strokeWidth/a.width*100).toFixed(1)),b=o(()=>["circle","dashboard"].includes(a.type)?Number.parseInt(`${50-Number.parseFloat(v.value)/2}`,10):0),m=o(()=>{const t=b.value,n=a.type==="dashboard";return` + M 50 50 + m 0 ${n?"":"-"}${t} + a ${t} ${t} 0 1 1 0 ${n?"-":""}${t*2} + a ${t} ${t} 0 1 1 0 ${n?"":"-"}${t*2} + `}),h=o(()=>2*Math.PI*b.value),g=o(()=>a.type==="dashboard"?.75:1),w=o(()=>`${-1*h.value*(1-g.value)/2}px`),C=o(()=>({strokeDasharray:`${h.value*g.value}px, ${h.value}px`,strokeDashoffset:w.value})),F=o(()=>({strokeDasharray:`${h.value*g.value*(a.percentage/100)}px, ${h.value}px`,strokeDashoffset:w.value,transition:"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease, opacity ease 0.6s"})),E=o(()=>{let t;return a.color?t=x(a.percentage):t=k[a.status]||k.default,t}),W=o(()=>a.status==="warning"?q:a.type==="line"?a.status==="success"?J:Q:a.status==="success"?U:Z),z=o(()=>a.type==="line"?12+a.strokeWidth*.4:a.width*.111111+2),$=o(()=>a.format(a.percentage));function L(t){const n=100/t.length;return t.map((c,u)=>I(c)?{color:c,percentage:(u+1)*n}:c).sort((c,u)=>c.percentage-u.percentage)}const x=t=>{var c;const{color:n}=a;if(G(n))return n(t);if(I(n))return n;{const u=L(n);for(const S of u)if(S.percentage>t)return S.color;return(c=u[u.length-1])==null?void 0:c.color}};return(t,n)=>(l(),d("div",{class:i([s(r).b(),s(r).m(e.type),s(r).is(e.status),{[s(r).m("without-text")]:!e.showText,[s(r).m("text-inside")]:e.textInside}]),role:"progressbar","aria-valuenow":e.percentage,"aria-valuemin":"0","aria-valuemax":"100"},[e.type==="line"?(l(),d("div",{key:0,class:i(s(r).b("bar"))},[p("div",{class:i(s(r).be("bar","outer")),style:f({height:`${e.strokeWidth}px`})},[p("div",{class:i([s(r).be("bar","inner"),{[s(r).bem("bar","inner","indeterminate")]:e.indeterminate},{[s(r).bem("bar","inner","striped")]:e.striped},{[s(r).bem("bar","inner","striped-flow")]:e.stripedFlow}]),style:f(T.value)},[(e.showText||t.$slots.default)&&e.textInside?(l(),d("div",{key:0,class:i(s(r).be("bar","innerText"))},[B(t.$slots,"default",{percentage:e.percentage},()=>[p("span",null,N($.value),1)])],2)):P("v-if",!0)],6)],6)],2)):(l(),d("div",{key:1,class:i(s(r).b("circle")),style:f({height:`${e.width}px`,width:`${e.width}px`})},[(l(),d("svg",Y,[p("path",{class:i(s(r).be("circle","track")),d:m.value,stroke:`var(${s(r).cssVarName("fill-color-light")}, #e5e9f2)`,"stroke-linecap":e.strokeLinecap,"stroke-width":v.value,fill:"none",style:f(C.value)},null,14,_),p("path",{class:i(s(r).be("circle","path")),d:m.value,stroke:E.value,fill:"none",opacity:e.percentage?1:0,"stroke-linecap":e.strokeLinecap,"stroke-width":v.value,style:f(F.value)},null,14,ee)]))],6)),(e.showText||t.$slots.default)&&!e.textInside?(l(),d("div",{key:2,class:i(s(r).e("text")),style:f({fontSize:`${z.value}px`})},[B(t.$slots,"default",{percentage:e.percentage},()=>[e.status?(l(),D(s(j),{key:1},{default:O(()=>[(l(),D(R(W.value)))]),_:1})):(l(),d("span",te,N($.value),1))])],6)):P("v-if",!0)],10,X))}}),se=ae;const ne=H(se);export{ne as E}; diff --git a/frontend/dist/assets/el-progress-apgqz2By.css b/frontend/dist/assets/el-progress-apgqz2By.css new file mode 100644 index 0000000..460d16c --- /dev/null +++ b/frontend/dist/assets/el-progress-apgqz2By.css @@ -0,0 +1 @@ +.el-progress{align-items:center;line-height:1;display:flex;position:relative}.el-progress__text{color:var(--el-text-color-regular);min-width:50px;margin-left:5px;font-size:14px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{text-align:center;width:100%;margin:0;position:absolute;top:50%;left:0;transform:translateY(-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{margin-right:0;padding-right:0;display:block}.el-progress--text-inside .el-progress-bar{margin-right:0;padding-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{box-sizing:border-box;flex-grow:1}.el-progress-bar__outer{background-color:var(--el-border-color-lighter);vertical-align:middle;border-radius:100px;height:6px;position:relative;overflow:hidden}.el-progress-bar__inner{background-color:var(--el-color-primary);text-align:right;white-space:nowrap;border-radius:100px;height:100%;line-height:1;transition:width .6s;position:absolute;top:0;left:0}.el-progress-bar__inner:after{content:"";vertical-align:middle;height:100%;display:inline-block}.el-progress-bar__inner--indeterminate{animation:3s infinite indeterminate;transform:translateZ(0)}.el-progress-bar__inner--striped{background-image:linear-gradient(45deg,#0000001a 25%,#0000 25%,#0000 50%,#0000001a 50%,#0000001a 75%,#0000 75%,#0000);background-size:1.25em 1.25em}.el-progress-bar__inner--striped.el-progress-bar__inner--striped-flow{animation:3s linear infinite striped-flow}.el-progress-bar__innerText{vertical-align:middle;color:#fff;margin:0 5px;font-size:12px;display:inline-block}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}@keyframes indeterminate{0%{left:-100%}to{left:100%}}@keyframes striped-flow{0%{background-position:-100%}to{background-position:100%}} diff --git a/frontend/dist/assets/el-radio-group-BkCoTeQL.js b/frontend/dist/assets/el-radio-group-BkCoTeQL.js new file mode 100644 index 0000000..c05710e --- /dev/null +++ b/frontend/dist/assets/el-radio-group-BkCoTeQL.js @@ -0,0 +1 @@ +import{J as D,ak as F,k as h,b as P,aR as L,R as w,B as ae,j as b,y as C,cb as A,d as I,a as N,o as S,c as k,q as R,K as T,d9 as U,f as e,aL as _,n as y,aB as K,h as x,x as M,aa as O,P as j,al as te,G as oe,F as se,z as le,aV as ne,D as re,M as ie,ad as ue,e as de,Y as ce,r as pe,bb as me,aU as be,ab as q,l as fe}from"./index-BKKvzUDD.js";import{C as z,U as G}from"./raf-C-x62Pcl.js";import{e as ve,c as ye,u as ge,f as Be,b as Ee,d as Re}from"./index-BjEW7-SA.js";import{u as Se}from"./index-GAnQrJsQ.js";import{o as Ve}from"./omit-BTSq4AYh.js";const H=P({modelValue:{type:[String,Number,Boolean],default:void 0},size:L,disabled:{type:Boolean,default:void 0},label:{type:[String,Number,Boolean],default:void 0},value:{type:[String,Number,Boolean],default:void 0},name:{type:String,default:void 0}}),ke=P({...H,border:Boolean}),J={[G]:a=>D(a)||F(a)||h(a),[z]:a=>D(a)||F(a)||h(a)},Y=Symbol("radioGroupKey"),_e=P({...H}),Q={label:"label",value:"value",disabled:"disabled"},Pe=P({id:{type:String,default:void 0},size:L,disabled:{type:Boolean,default:void 0},modelValue:{type:[String,Number,Boolean],default:void 0},fill:{type:String,default:""},textColor:{type:String,default:""},name:{type:String,default:void 0},validateEvent:{type:Boolean,default:!0},options:{type:w(Array)},props:{type:w(Object),default:()=>Q},type:{type:String,values:["radio","button"],default:"radio"},...Se(["ariaLabel"])}),Ce=J,W=(a,g)=>{const s=C(),l=ae(Y,void 0),t=b(()=>!!l),v=b(()=>A(a.value)?a.label:a.value),f=b({get(){return t.value?l.modelValue:a.modelValue},set(m){t.value?l.changeEvent(m):g&&g("update:modelValue",m),s.value.checked=a.modelValue===v.value}}),n=ve(b(()=>l==null?void 0:l.size)),o=ye(b(()=>l==null?void 0:l.disabled)),c=C(!1),d=b(()=>o.value||t.value&&f.value!==v.value?-1:0);return ge({from:"label act as value",replacement:"value",version:"3.0.0",scope:"el-radio",ref:"https://element-plus.org/en-US/component/radio.html"},b(()=>t.value&&A(a.value))),{radioRef:s,isGroup:t,radioGroup:l,focus:c,size:n,disabled:o,tabIndex:d,modelValue:f,actualValue:v}},Ie=["value","name","disabled","checked"];var Ne=I({name:"ElRadio",__name:"radio",props:ke,emits:J,setup(a,{emit:g}){const s=a,l=g,t=N("radio"),{radioRef:v,radioGroup:f,focus:n,size:o,disabled:c,modelValue:d,actualValue:m}=W(s,l);function u(){j(()=>l(z,d.value))}return(B,i)=>{var r;return S(),k("label",{class:y([e(t).b(),e(t).is("disabled",e(c)),e(t).is("focus",e(n)),e(t).is("bordered",a.border),e(t).is("checked",e(d)===e(m)),e(t).m(e(o))])},[R("span",{class:y([e(t).e("input"),e(t).is("disabled",e(c)),e(t).is("checked",e(d)===e(m))])},[T(R("input",{ref_key:"radioRef",ref:v,"onUpdate:modelValue":i[0]||(i[0]=p=>K(d)?d.value=p:null),class:y(e(t).e("original")),value:e(m),name:a.name||((r=e(f))==null?void 0:r.name),disabled:e(c),checked:e(d)===e(m),type:"radio",onFocus:i[1]||(i[1]=p=>n.value=!0),onBlur:i[2]||(i[2]=p=>n.value=!1),onChange:u,onClick:i[3]||(i[3]=_(()=>{},["stop"]))},null,42,Ie),[[U,e(d)]]),R("span",{class:y(e(t).e("inner"))},null,2)],2),R("span",{class:y(e(t).e("label")),onKeydown:i[4]||(i[4]=_(()=>{},["stop"]))},[x(B.$slots,"default",{},()=>[M(O(a.label),1)])],34)],2)}}}),X=Ne;const xe=["value","name","disabled"];var ze=I({name:"ElRadioButton",__name:"radio-button",props:_e,setup(a){const g=a,s=N("radio"),{radioRef:l,focus:t,size:v,disabled:f,modelValue:n,radioGroup:o,actualValue:c}=W(g),d=b(()=>({backgroundColor:(o==null?void 0:o.fill)||"",borderColor:(o==null?void 0:o.fill)||"",boxShadow:o!=null&&o.fill?`-1px 0 0 0 ${o.fill}`:"",color:(o==null?void 0:o.textColor)||""}));return(m,u)=>{var B;return S(),k("label",{class:y([e(s).b("button"),e(s).is("active",e(n)===e(c)),e(s).is("disabled",e(f)),e(s).is("focus",e(t)),e(s).bm("button",e(v))])},[T(R("input",{ref_key:"radioRef",ref:l,"onUpdate:modelValue":u[0]||(u[0]=i=>K(n)?n.value=i:null),class:y(e(s).be("button","original-radio")),value:e(c),type:"radio",name:a.name||((B=e(o))==null?void 0:B.name),disabled:e(f),onFocus:u[1]||(u[1]=i=>t.value=!0),onBlur:u[2]||(u[2]=i=>t.value=!1),onClick:u[3]||(u[3]=_(()=>{},["stop"]))},null,42,xe),[[U,e(n)]]),R("span",{class:y(e(s).be("button","inner")),style:te(e(n)===e(c)?d.value:{}),onKeydown:u[4]||(u[4]=_(()=>{},["stop"]))},[x(m.$slots,"default",{},()=>[M(O(a.label),1)])],38)],2)}}}),$=ze;const $e=["id","aria-label","aria-labelledby"];var De=I({name:"ElRadioGroup",__name:"radio-group",props:Pe,emits:Ce,setup(a,{emit:g}){const s=a,l=g,t=N("radio"),v=Be(),f=C(),{formItem:n}=Ee(),{inputId:o,isLabeledByFormItem:c}=Re(s,{formItemContext:n}),d=r=>{l(G,r),j(()=>l(z,r))};oe(()=>{const r=f.value.querySelectorAll("[type=radio]"),p=r[0];!Array.from(r).some(E=>E.checked)&&p&&(p.tabIndex=0)});const m=b(()=>s.name||v.value),u=b(()=>({...Q,...s.props})),B=r=>{const{label:p,value:E,disabled:V}=u.value,ee={label:r[p],value:r[E],disabled:r[V]};return{...Ve(r,[p,E,V]),...ee}},i=b(()=>s.type==="button"?$:X);return se(Y,le({...ne(s),changeEvent:d,name:m})),re(()=>s.modelValue,(r,p)=>{s.validateEvent&&!me(r,p)&&(n==null||n.validate("change").catch(be))}),(r,p)=>(S(),k("div",{id:e(o),ref_key:"radioGroupRef",ref:f,class:y(e(t).b("group")),role:"radiogroup","aria-label":e(c)?void 0:a.ariaLabel||"radio-group","aria-labelledby":e(c)?e(n).labelId:void 0},[x(r.$slots,"default",{},()=>[(S(!0),k(ie,null,ue(a.options,(E,V)=>(S(),de(pe(i.value),ce({key:V},{ref_for:!0},B(E)),null,16))),128))])],10,$e))}}),Z=De;const Te=fe(X,{RadioButton:$,RadioGroup:Z}),Ue=q(Z),Ke=q($);export{Ue as E,Ke as a,Te as b}; diff --git a/frontend/dist/assets/el-radio-group-iy_biC8N.css b/frontend/dist/assets/el-radio-group-iy_biC8N.css new file mode 100644 index 0000000..083ad7c --- /dev/null +++ b/frontend/dist/assets/el-radio-group-iy_biC8N.css @@ -0,0 +1 @@ +.el-radio{--el-radio-font-size:var(--el-font-size-base);--el-radio-text-color:var(--el-text-color-regular);--el-radio-font-weight:var(--el-font-weight-primary);--el-radio-input-height:14px;--el-radio-input-width:14px;--el-radio-input-border-radius:var(--el-border-radius-circle);--el-radio-input-bg-color:var(--el-fill-color-blank);--el-radio-input-border:var(--el-border);--el-radio-input-border-color:var(--el-border-color);--el-radio-input-border-color-hover:var(--el-color-primary);color:var(--el-radio-text-color);font-weight:var(--el-radio-font-weight);cursor:pointer;white-space:nowrap;font-size:var(--el-font-size-base);-webkit-user-select:none;user-select:none;outline:none;align-items:center;height:32px;margin-right:30px;display:inline-flex;position:relative}.el-radio.el-radio--large{height:40px}.el-radio.el-radio--small{height:24px}.el-radio.is-bordered{border-radius:var(--el-border-radius-base);border:var(--el-border);box-sizing:border-box;padding:0 15px 0 9px}.el-radio.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:var(--el-border-color-lighter)}.el-radio.is-bordered.el-radio--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-radio.is-bordered.el-radio--large .el-radio__label{font-size:var(--el-font-size-base)}.el-radio.is-bordered.el-radio--large .el-radio__inner{width:14px;height:14px}.el-radio.is-bordered.el-radio--small{border-radius:var(--el-border-radius-base);padding:0 11px 0 7px}.el-radio.is-bordered.el-radio--small .el-radio__label{font-size:12px}.el-radio.is-bordered.el-radio--small .el-radio__inner{width:12px;height:12px}.el-radio:last-child{margin-right:0}.el-radio__input{white-space:nowrap;cursor:pointer;vertical-align:middle;outline:none;display:inline-flex;position:relative}.el-radio__input.is-disabled .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner:after{cursor:not-allowed;background-color:var(--el-disabled-bg-color)}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:var(--el-text-color-placeholder)}.el-radio__input.is-disabled+span.el-radio__label{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:var(--el-color-primary);background:var(--el-color-primary)}.el-radio__input.is-checked .el-radio__inner:after{background-color:var(--el-color-white);transform:translate(-50%,-50%)scale(1)}.el-radio__input.is-checked+.el-radio__label{color:var(--el-color-primary)}.el-radio__input.is-focus .el-radio__inner{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner{border:var(--el-radio-input-border);border-radius:var(--el-radio-input-border-radius);width:var(--el-radio-input-width);height:var(--el-radio-input-height);background-color:var(--el-radio-input-bg-color);cursor:pointer;box-sizing:border-box;transition:all .3s;display:inline-block;position:relative}.el-radio__inner:hover{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner:after{border-radius:var(--el-radio-input-border-radius);content:"";width:4px;height:4px;transition:transform .15s ease-in;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)}.el-radio__original{opacity:0;z-index:-1;outline:none;margin:0;position:absolute;top:0;bottom:0;left:0;right:0}.el-radio__original:focus-visible+.el-radio__inner{outline:2px solid var(--el-radio-input-border-color-hover);outline-offset:1px;border-radius:var(--el-radio-input-border-radius)}.el-radio:focus:not(:focus-visible):not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px var(--el-radio-input-border-color-hover)}.el-radio__label{font-size:var(--el-radio-font-size);padding-left:8px}.el-radio.el-radio--large .el-radio__label{font-size:14px}.el-radio.el-radio--large .el-radio__inner{width:14px;height:14px}.el-radio.el-radio--small .el-radio__label{font-size:12px}.el-radio.el-radio--small .el-radio__inner{width:12px;height:12px}.el-radio-group{flex-wrap:wrap;align-items:center;font-size:0;display:inline-flex} diff --git a/frontend/dist/assets/el-scrollbar-ClJnvz-9.js b/frontend/dist/assets/el-scrollbar-ClJnvz-9.js new file mode 100644 index 0000000..e0742fa --- /dev/null +++ b/frontend/dist/assets/el-scrollbar-ClJnvz-9.js @@ -0,0 +1 @@ +import{ak as C,b as I,R as Y,d as X,B as ae,a as le,C as re,H as ne,aS as D,a9 as q,o as B,e as K,w as oe,K as ie,q as j,aL as ce,n as P,f as N,al as $,L as ue,Z as fe,y as d,bA as ve,j as _,c as se,s as V,M as de,D as F,cQ as me,G as he,P as G,aX as pe,h as be,r as ge,g as ye,a3 as Se,aK as Q,am as Z,a7 as J,F as we,z as ze,l as Ee}from"./index-BKKvzUDD.js";import{u as xe}from"./index-GAnQrJsQ.js";const He=I({distance:{type:Number,default:0},height:{type:[String,Number],default:""},maxHeight:{type:[String,Number],default:""},native:Boolean,wrapStyle:{type:Y([String,Object,Array,Boolean]),default:""},wrapClass:{type:[String,Array],default:""},viewClass:{type:[String,Array],default:""},viewStyle:{type:Y([String,Object,Array,Boolean]),default:""},noresize:Boolean,tag:{type:String,default:"div"},always:Boolean,minSize:{type:Number,default:20},tabindex:{type:[String,Number],default:void 0},id:String,role:String,...xe(["ariaLabel","ariaOrientation"])}),Te={"end-reached":l=>["left","right","top","bottom"].includes(l),scroll:({scrollTop:l,scrollLeft:u})=>[l,u].every(C)},_e={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}},Le=({move:l,size:u,bar:r})=>({[r.size]:u,transform:`translate${r.axis}(${l}%)`}),ke=I({vertical:Boolean,size:String,move:Number,ratio:{type:Number,required:!0},always:Boolean}),U=Symbol("scrollbarContextKey");function ee(l,u,r=.03){return l-u>r}const Ce=I({always:{type:Boolean,default:!0},minSize:{type:Number,required:!0}}),Ne="Thumb";var Be=X({__name:"thumb",props:ke,setup(l){const u=l,r=ae(U),o=le("scrollbar");r||re(Ne,"can not inject scrollbar context");const m=d(),f=d(),y=d({}),g=d(!1);let h=!1,i=!1,p=0,v=0,s=ve?document.onselectstart:null;const e=_(()=>_e[u.vertical?"vertical":"horizontal"]),t=_(()=>Le({size:u.size,move:u.move,bar:e.value})),w=_(()=>m.value[e.value.offset]**2/r.wrapElement[e.value.scrollSize]/u.ratio/f.value[e.value.offset]),S=c=>{var H;if(c.stopPropagation(),c.ctrlKey||[1,2].includes(c.button))return;(H=window.getSelection())==null||H.removeAllRanges(),x(c);const b=c.currentTarget;b&&(y.value[e.value.axis]=b[e.value.offset]-(c[e.value.client]-b.getBoundingClientRect()[e.value.direction]))},E=c=>{if(!f.value||!m.value||!r.wrapElement)return;const b=(Math.abs(c.target.getBoundingClientRect()[e.value.direction]-c[e.value.client])-f.value[e.value.offset]/2)*100*w.value/m.value[e.value.offset];r.wrapElement[e.value.scroll]=b*r.wrapElement[e.value.scrollSize]/100},x=c=>{c.stopImmediatePropagation(),h=!0,p=r.wrapElement.scrollHeight,v=r.wrapElement.scrollWidth,document.addEventListener("mousemove",R),document.addEventListener("mouseup",L),s=document.onselectstart,document.onselectstart=()=>!1},R=c=>{if(!m.value||!f.value||h===!1)return;const b=y.value[e.value.axis];if(!b)return;const H=((m.value.getBoundingClientRect()[e.value.direction]-c[e.value.client])*-1-(f.value[e.value.offset]-b))*100*w.value/m.value[e.value.offset];e.value.scroll==="scrollLeft"?r.wrapElement[e.value.scroll]=H*v/100:r.wrapElement[e.value.scroll]=H*p/100},L=()=>{h=!1,y.value[e.value.axis]=0,document.removeEventListener("mousemove",R),document.removeEventListener("mouseup",L),k(),i&&(g.value=!1)},A=()=>{i=!1,g.value=!!u.size},W=()=>{i=!0,g.value=h};ne(()=>{k(),document.removeEventListener("mouseup",L)});const k=()=>{document.onselectstart!==s&&(document.onselectstart=s)};return D(q(r,"scrollbarElement"),"mousemove",A),D(q(r,"scrollbarElement"),"mouseleave",W),(c,b)=>(B(),K(fe,{name:N(o).b("fade"),persisted:""},{default:oe(()=>[ie(j("div",{ref_key:"instance",ref:m,class:P([N(o).e("bar"),N(o).is(e.value.key)]),onMousedown:E,onClick:b[0]||(b[0]=ce(()=>{},["stop"]))},[j("div",{ref_key:"thumb",ref:f,class:P(N(o).e("thumb")),style:$(t.value),onMousedown:S},null,38)],34),[[ue,l.always||g.value]])]),_:1},8,["name"]))}}),te=Be,Pe=X({__name:"bar",props:Ce,setup(l,{expose:u}){const r=l,o=ae(U),m=d(0),f=d(0),y=d(""),g=d(""),h=d(1),i=d(1);return u({handleScroll:s=>{if(s){const e=s.offsetHeight-4,t=s.offsetWidth-4;f.value=s.scrollTop*100/e*h.value,m.value=s.scrollLeft*100/t*i.value}},update:()=>{const s=o==null?void 0:o.wrapElement;if(!s)return;const e=s.offsetHeight-4,t=s.offsetWidth-4,w=e**2/s.scrollHeight,S=t**2/s.scrollWidth,E=Math.max(w,r.minSize),x=Math.max(S,r.minSize);h.value=w/(e-w)/(E/(e-E)),i.value=S/(t-S)/(x/(t-x)),g.value=E+4(B(),se(de,null,[V(te,{move:m.value,ratio:i.value,size:y.value,always:l.always},null,8,["move","ratio","size","always"]),V(te,{move:f.value,ratio:h.value,size:g.value,vertical:"",always:l.always},null,8,["move","ratio","size","always"])],64))}}),Re=Pe;const Me=["tabindex"],O="ElScrollbar";var Ae=X({name:O,__name:"scrollbar",props:He,emits:Te,setup(l,{expose:u,emit:r}){const o=l,m=r,f=le("scrollbar");let y,g,h,i=0,p=0,v="";const s={bottom:!1,top:!1,right:!1,left:!1},e=d(),t=d(),w=d(),S=d(),E=_(()=>{const a={},n=Z(o.height),z=Z(o.maxHeight);return n&&(a.height=n),z&&(a.maxHeight=z),[o.wrapStyle,a]}),x=_(()=>[o.wrapClass,f.e("wrap"),{[f.em("wrap","hidden-default")]:!o.native}]),R=_(()=>[f.e("view"),o.viewClass]),L=a=>s[a]??!1,A={top:"bottom",bottom:"top",left:"right",right:"left"},W=a=>{const n=A[v];if(!n)return;const z=a[v],M=a[n];z&&!s[v]&&(s[v]=!0),!M&&s[n]&&(s[n]=!1)},k=()=>{var a;if(t.value){(a=S.value)==null||a.handleScroll(t.value);const n=i,z=p;i=t.value.scrollTop,p=t.value.scrollLeft;const M={bottom:!ee(t.value.scrollHeight-o.distance,t.value.clientHeight+i),top:i<=o.distance&&n!==0,right:!ee(t.value.scrollWidth-o.distance,t.value.clientWidth+p)&&z!==p,left:p<=o.distance&&z!==0};if(m("scroll",{scrollTop:i,scrollLeft:p}),n!==i&&(v=i>n?"bottom":"top"),z!==p&&(v=p>z?"right":"left"),o.distance>0){if(L(v))return;W(M)}M[v]&&m("end-reached",v)}};function c(a,n){Se(a)?t.value.scrollTo(a):C(a)&&C(n)&&t.value.scrollTo(a,n)}const b=a=>{if(!C(a)){Q(O,"value must be a number");return}t.value.scrollTop=a},H=a=>{if(!C(a)){Q(O,"value must be a number");return}t.value.scrollLeft=a},T=()=>{var a,n;(a=S.value)==null||a.update(),s[v]=!1,t.value&&((n=S.value)==null||n.handleScroll(t.value))};return F(()=>o.noresize,a=>{a?(y==null||y(),g==null||g(),h==null||h()):({stop:y}=J(w,T),{stop:g}=J(t,T),h=D("resize",T))},{immediate:!0}),F(()=>[o.maxHeight,o.height],()=>{o.native||G(()=>{T()})}),we(U,ze({scrollbarElement:e,wrapElement:t})),me(()=>{t.value&&(t.value.scrollTop=i,t.value.scrollLeft=p)}),he(()=>{o.native||G(()=>{T()})}),pe(()=>T()),u({wrapRef:t,update:T,scrollTo:c,setScrollTop:b,setScrollLeft:H,handleScroll:k}),(a,n)=>(B(),se("div",{ref_key:"scrollbarRef",ref:e,class:P(N(f).b())},[j("div",{ref_key:"wrapRef",ref:t,class:P(x.value),style:$(E.value),tabindex:l.tabindex,onScroll:k},[(B(),K(ge(l.tag),{id:l.id,ref_key:"resizeRef",ref:w,class:P(R.value),style:$(l.viewStyle),role:l.role,"aria-label":l.ariaLabel,"aria-orientation":l.ariaOrientation},{default:oe(()=>[be(a.$slots,"default")]),_:3},8,["id","class","style","role","aria-label","aria-orientation"]))],46,Me),l.native?ye("v-if",!0):(B(),K(Re,{key:0,ref_key:"barRef",ref:S,always:l.always,"min-size":l.minSize},null,8,["always","min-size"]))],2))}}),We=Ae;const Ke=Ee(We);export{Ke as E,ee as i,Te as s}; diff --git a/frontend/dist/assets/el-scrollbar-GF-yQkxY.css b/frontend/dist/assets/el-scrollbar-GF-yQkxY.css new file mode 100644 index 0000000..99fae7d --- /dev/null +++ b/frontend/dist/assets/el-scrollbar-GF-yQkxY.css @@ -0,0 +1 @@ +.el-scrollbar{--el-scrollbar-opacity:.3;--el-scrollbar-bg-color:var(--el-text-color-secondary);--el-scrollbar-hover-opacity:.5;--el-scrollbar-hover-bg-color:var(--el-text-color-secondary);height:100%;position:relative;overflow:hidden}.el-scrollbar__wrap{height:100%;overflow:auto}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{display:none}.el-scrollbar__thumb{cursor:pointer;border-radius:inherit;background-color:var(--el-scrollbar-bg-color,var(--el-text-color-secondary));width:0;height:0;transition:var(--el-transition-duration) background-color;opacity:var(--el-scrollbar-opacity,.3);display:block;position:relative}.el-scrollbar__thumb:hover{background-color:var(--el-scrollbar-hover-bg-color,var(--el-text-color-secondary));opacity:var(--el-scrollbar-hover-opacity,.5)}.el-scrollbar__bar{z-index:1;border-radius:4px;position:absolute;bottom:2px;right:2px}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-scrollbar-fade-enter-active{transition:opacity .34s ease-out}.el-scrollbar-fade-leave-active{transition:opacity .12s ease-out}.el-scrollbar-fade-enter-from,.el-scrollbar-fade-leave-active{opacity:0} diff --git a/frontend/dist/assets/el-select-CK58rX4v.css b/frontend/dist/assets/el-select-CK58rX4v.css new file mode 100644 index 0000000..ee76fbe --- /dev/null +++ b/frontend/dist/assets/el-select-CK58rX4v.css @@ -0,0 +1 @@ +.el-select-dropdown.is-multiple .el-select-dropdown__item.is-selected:after{content:"";background-position:50%;background-repeat:no-repeat;background-color:var(--el-color-primary);-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") 0 0/100% 100% no-repeat;mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") 0 0/100% 100% no-repeat;border-top:none;border-right:none;width:12px;height:12px;position:absolute;top:50%;right:20px;transform:translateY(-50%);-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") 0 0/100% 100% no-repeat}.el-select-dropdown{z-index:calc(var(--el-index-top) + 1);border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__loading,.el-select-dropdown__empty{text-align:center;color:var(--el-text-color-secondary);font-size:var(--el-select-font-size);margin:0;padding:10px 0}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{box-sizing:border-box;margin:0;padding:6px 0;list-style:none}.el-select-dropdown__list.el-vl__window{margin:6px 0;padding:0}.el-select-dropdown__header{border-bottom:1px solid var(--el-border-color-light);padding:10px}.el-select-dropdown__footer{border-top:1px solid var(--el-border-color-light);padding:10px}.el-select-dropdown__item{font-size:var(--el-font-size-base);white-space:nowrap;text-overflow:ellipsis;color:var(--el-text-color-regular);box-sizing:border-box;cursor:pointer;height:34px;padding:0 32px 0 20px;line-height:34px;position:relative;overflow:hidden}.el-select-dropdown__item.is-hovering{background-color:var(--el-fill-color-light)}.el-select-dropdown__item.is-selected{color:var(--el-color-primary);font-weight:700}.el-select-dropdown__item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed;background-color:unset}.el-select-dropdown.is-multiple .el-select-dropdown__item.is-selected:after{content:"";background-position:50%;background-repeat:no-repeat;background-color:var(--el-color-primary);-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") 0 0/100% 100% no-repeat;mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") 0 0/100% 100% no-repeat;border-top:none;border-right:none;width:12px;height:12px;position:absolute;top:50%;right:20px;transform:translateY(-50%);-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") 0 0/100% 100% no-repeat}.el-select-dropdown.is-multiple .el-select-dropdown__item.is-disabled:after{background-color:var(--el-text-color-placeholder)}.el-select-group{margin:0;padding:0}.el-select-group__wrap{margin:0;padding:0;list-style:none;position:relative}.el-select-group__title{box-sizing:border-box;color:var(--el-color-info);text-overflow:ellipsis;white-space:nowrap;padding:0 20px;font-size:12px;line-height:34px;overflow:hidden}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{--el-select-border-color-hover:var(--el-border-color-hover);--el-select-disabled-color:var(--el-disabled-text-color);--el-select-disabled-border:var(--el-disabled-border-color);--el-select-font-size:var(--el-font-size-base);--el-select-close-hover-color:var(--el-text-color-secondary);--el-select-input-color:var(--el-text-color-placeholder);--el-select-multiple-input-color:var(--el-text-color-regular);--el-select-input-focus-border-color:var(--el-color-primary);--el-select-input-font-size:14px;--el-select-width:100%;vertical-align:middle;width:var(--el-select-width);display:inline-block;position:relative}.el-select__wrapper{box-sizing:border-box;cursor:pointer;text-align:left;border-radius:var(--el-border-radius-base);background-color:var(--el-fill-color-blank);min-height:32px;transition:var(--el-transition-duration);box-shadow:0 0 0 1px var(--el-border-color) inset;align-items:center;gap:6px;padding:4px 12px;font-size:14px;line-height:24px;display:flex;position:relative;transform:translate(0)}.el-select__wrapper.is-filterable{cursor:text}.el-select__wrapper.is-focused{box-shadow:0 0 0 1px var(--el-color-primary) inset}.el-select__wrapper.is-hovering:not(.is-focused){box-shadow:0 0 0 1px var(--el-border-color-hover) inset}.el-select__wrapper.is-disabled{cursor:not-allowed;background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);box-shadow:0 0 0 1px var(--el-select-disabled-border) inset}.el-select__wrapper.is-disabled:hover{box-shadow:0 0 0 1px var(--el-select-disabled-border) inset}.el-select__wrapper.is-disabled.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-select__wrapper.is-disabled .el-select__selected-item{color:var(--el-select-disabled-color)}.el-select__wrapper.is-disabled .el-select__caret,.el-select__wrapper.is-disabled .el-tag,.el-select__wrapper.is-disabled input{cursor:not-allowed}.el-select__wrapper.is-disabled .el-select__prefix,.el-select__wrapper.is-disabled .el-select__suffix{pointer-events:none}.el-select__prefix,.el-select__suffix{color:var(--el-input-icon-color,var(--el-text-color-placeholder));flex-shrink:0;align-items:center;gap:6px;display:flex}.el-select__caret{color:var(--el-select-input-color);font-size:var(--el-select-input-font-size);transition:var(--el-transition-duration);cursor:pointer;transform:rotate(0)}.el-select__caret.is-reverse{transform:rotate(180deg)}.el-select__clear{cursor:pointer}.el-select__clear:hover{color:var(--el-select-close-hover-color)}.el-select__selection{flex-wrap:wrap;flex:1;align-items:center;gap:6px;min-width:0;display:flex;position:relative}.el-select__selection.is-near{margin-left:-8px}.el-select__selection .el-tag{cursor:pointer;border-color:#0000}.el-select__selection .el-tag.el-tag--plain{border-color:var(--el-tag-border-color)}.el-select__selection .el-tag .el-tag__content{min-width:0}.el-select__selected-item{-webkit-user-select:none;user-select:none;flex-wrap:wrap;display:flex}.el-select__tags-text{text-overflow:ellipsis;white-space:nowrap;line-height:normal;display:block;overflow:hidden}.el-select__placeholder{z-index:-1;text-overflow:ellipsis;white-space:nowrap;width:100%;color:var(--el-input-text-color,var(--el-text-color-regular));display:block;position:absolute;top:50%;overflow:hidden;transform:translateY(-50%)}.el-select__placeholder.is-transparent{-webkit-user-select:none;user-select:none;color:var(--el-text-color-placeholder)}.el-select__popper.el-popper{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);box-shadow:var(--el-box-shadow-light)}.el-select__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-select__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-top-color:#0000;border-left-color:#0000}.el-select__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:#0000;border-right-color:#0000}.el-select__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:#0000;border-left-color:#0000}.el-select__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-top-color:#0000;border-right-color:#0000}.el-select__input-wrapper{flex:1}.el-select__input-wrapper.is-hidden{opacity:0;z-index:-1;position:absolute}.el-select__input{color:var(--el-select-multiple-input-color);font-size:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#0000;border:none;outline:none;width:100%;height:24px;padding:0;font-family:inherit}.el-select__input-calculator{visibility:hidden;white-space:pre;max-width:100%;position:absolute;top:0;left:0;overflow:hidden}.el-select--large .el-select__wrapper{gap:6px;min-height:40px;padding:8px 16px;font-size:14px;line-height:24px}.el-select--large .el-select__selection{gap:6px}.el-select--large .el-select__selection.is-near{margin-left:-8px}.el-select--large .el-select__prefix,.el-select--large .el-select__suffix{gap:6px}.el-select--large .el-select__input{height:24px}.el-select--small .el-select__wrapper{gap:4px;min-height:24px;padding:2px 8px;font-size:12px;line-height:20px}.el-select--small .el-select__selection{gap:4px}.el-select--small .el-select__selection.is-near{margin-left:-6px}.el-select--small .el-select__prefix,.el-select--small .el-select__suffix{gap:4px}.el-select--small .el-select__input{height:20px} diff --git a/frontend/dist/assets/el-select-Dl-FRZQd.js b/frontend/dist/assets/el-select-Dl-FRZQd.js new file mode 100644 index 0000000..29e1bfa --- /dev/null +++ b/frontend/dist/assets/el-select-Dl-FRZQd.js @@ -0,0 +1 @@ +import{a7 as ee,aT as vl,j as u,y as M,cT as bl,D as U,bb as te,cU as K,b as Et,bP as gl,S as ml,i as gt,bQ as hl,aR as yl,R as A,B as $e,C as Sl,a3 as Y,N as Be,cc as Ol,d as me,a as ve,aV as Qe,H as Tt,P as Q,f as He,z as be,cf as wl,K as Le,L as qe,o as b,c as k,h as W,q as N,aa as q,Y as Re,aL as ne,cV as Vt,F as It,G as Ye,cW as Cl,an as El,a6 as J,n as S,g as z,al as Me,aW as Tl,bl as Vl,bS as Il,aU as mt,bA as kl,ak as Dl,a1 as Rl,bd as ce,U as ke,ba as Ml,bM as $l,V as ht,W as H,c5 as Ll,a8 as Bl,cX as Nl,J as Pl,E as Wl,ai as X,cY as Fl,s as _,w as F,e as G,M as pe,ad as De,x as yt,r as Ge,l as zl,ab as kt}from"./index-BKKvzUDD.js";import{_ as Ne}from"./index-CWUnzf90.js";import{f as Dt,b as Kl,d as Al,c as Hl,e as Gl}from"./index-BjEW7-SA.js";import{c as Z}from"./castArray-5uErZEc3.js";import{f as Ul}from"./vnode-78qeDweP.js";import{u as St,a as jl,E as Ql}from"./el-popper-D6_hxRbQ.js";import{s as Ot,E as ql}from"./el-scrollbar-ClJnvz-9.js";import{C as Yl}from"./index-D5ryD3I5.js";import{t as wt,E as Jl}from"./index-BDEF353-.js";import{C as Rt,U as fe}from"./raf-C-x62Pcl.js";import{s as Xl}from"./scroll-BkzZKETR.js";import{u as Zl,a as xl}from"./index-DLzof2Fz.js";import{c as _l}from"./clamp-CbbY8h6F.js";import{b as en}from"./_baseIteratee-BAilevJ_.js";import{u as tn}from"./index-GAnQrJsQ.js";function ln(e,n,s,c){for(var p=e.length,d=s+(c?1:-1);c?d--:++d({minWidth:`${Math.max(n.value,11)}px`}));return ee(e,()=>{var p;n.value=((p=e.value)==null?void 0:p.getBoundingClientRect().width)??0}),{calculatorRef:e,calculatorWidth:n,inputStyle:s}}const sn=(e="")=>e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d"),jn=e=>bl(e),Mt=Symbol("ElSelectGroup"),Pe=Symbol("ElSelect"),Ue={label:"label",value:"value",disabled:"disabled",options:"options"};function on(e){const n=M({...Ue,...e.props});let s={...e.props};return U(()=>e.props,l=>{te(l,s)||(n.value={...Ue,...l},s={...l})},{deep:!0}),{aliasProps:n,getLabel:l=>K(l,n.value.label),getValue:l=>K(l,n.value.value),getDisabled:l=>K(l,n.value.disabled),getOptions:l=>K(l,n.value.options)}}const rn=Et({name:String,id:String,modelValue:{type:A([Array,String,Number,Boolean,Object]),default:void 0},autocomplete:{type:String,default:"off"},automaticDropdown:Boolean,size:yl,effect:{type:A(String),default:"light"},disabled:{type:Boolean,default:void 0},clearable:Boolean,filterable:Boolean,allowCreate:Boolean,loading:Boolean,popperClass:{type:String,default:""},popperStyle:{type:A([String,Object])},popperOptions:{type:A(Object),default:()=>({})},remote:Boolean,debounce:{type:Number,default:300},loadingText:String,noMatchText:String,noDataText:String,remoteMethod:{type:A(Function)},filterMethod:{type:A(Function)},multiple:Boolean,multipleLimit:{type:Number,default:0},placeholder:{type:String},defaultFirstOption:Boolean,reserveKeyword:{type:Boolean,default:!0},valueKey:{type:String,default:"value"},collapseTags:Boolean,collapseTagsTooltip:Boolean,tagTooltip:{type:A(Object),default:()=>({})},maxCollapseTags:{type:Number,default:1},teleported:St.teleported,persistent:{type:Boolean,default:!0},clearIcon:{type:gt,default:hl},fitInputWidth:Boolean,suffixIcon:{type:gt,default:ml},tagType:{...wt.type,default:"info"},tagEffect:{...wt.effect,default:"light"},validateEvent:{type:Boolean,default:!0},remoteShowSuffix:Boolean,showArrow:{type:Boolean,default:!0},offset:{type:Number,default:12},placement:{type:A(String),values:jl,default:"bottom-start"},fallbackPlacements:{type:A(Array),default:["bottom-start","top-start","right","left"]},tabindex:{type:[String,Number],default:0},appendTo:St.appendTo,options:{type:A(Array)},props:{type:A(Object),default:()=>Ue},...gl,...tn(["ariaLabel"])}),un={[fe]:e=>!0,[Rt]:e=>!0,"popup-scroll":Ot.scroll,"end-reached":Ot["end-reached"],"remove-tag":e=>!0,"visible-change":e=>!0,focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0},je="ElOption",dn=Et({value:{type:[String,Number,Boolean,Object],required:!0},label:{type:[String,Number]},created:Boolean,disabled:Boolean});function pn(e,n){const s=$e(Pe);s||Sl(je,"usage: ");const c=$e(Mt,{disabled:!1}),p=u(()=>v(Z(s.props.modelValue),e.value)),d=u(()=>{if(s.props.multiple){const h=Z(s.props.modelValue??[]);return!p.value&&h.length>=s.props.multipleLimit&&s.props.multipleLimit>0}else return!1}),g=u(()=>e.label??(Y(e.value)?"":e.value)),l=u(()=>e.value||e.label||""),E=u(()=>e.disabled||n.groupDisabled||d.value),f=Be(),v=(h=[],C)=>{if(Y(e.value)){const O=s.props.valueKey;return h&&h.some(m=>Ol(K(m,O))===K(C,O))}else return h&&h.includes(C)},D=()=>{E.value||(s.states.hoveringIndex=s.optionsArray.indexOf(f.proxy))},w=h=>{n.visible=new RegExp(sn(h),"i").test(String(g.value))||e.created};return U(()=>g.value,()=>{!e.created&&!s.props.remote&&s.setSelected()}),U(()=>e.value,(h,C)=>{const{remote:O,valueKey:m}=s.props;if((O?h!==C:!te(h,C))&&(s.onOptionDestroy(C,f.proxy),s.onOptionCreate(f.proxy)),!e.created&&!O){if(m&&Y(h)&&Y(C)&&h[m]===C[m])return;s.setSelected()}}),U(()=>c.disabled,()=>{n.groupDisabled=c.disabled},{immediate:!0}),{select:s,currentLabel:g,currentValue:l,itemSelected:p,isDisabled:E,hoverItem:D,updateOption:w}}var cn=me({name:je,componentName:je,props:dn,setup(e){const n=ve("select"),s=Dt(),c=u(()=>[n.be("dropdown","item"),n.is("disabled",He(E)),n.is("selected",He(l)),n.is("hovering",He(h))]),p=be({index:-1,groupDisabled:!1,visible:!0,hover:!1}),d="mousemove",{currentLabel:g,itemSelected:l,isDisabled:E,select:f,hoverItem:v,updateOption:D}=pn(e,p),{visible:w,hover:h}=Qe(p),C=Be().proxy;f.onOptionCreate(C),Tt(()=>{const R=C.value;Q(()=>{const{selected:r}=f.states,i=r.some(T=>T.value===C.value);f.states.cachedOptions.get(R)===C&&!i&&f.states.cachedOptions.delete(R)}),f.onOptionDestroy(R,C)});function O(){E.value||f.handleOptionSelect(C)}return{ns:n,id:s,containerKls:c,currentLabel:g,itemSelected:l,isDisabled:E,select:f,visible:w,hover:h,states:p,mouseMoveEventName:d,hoverItem:v,handleMousedown:R=>{let r=R.target;const i=R.currentTarget;for(;r&&r!==i;){if(wl(r))return;r=r.parentElement}R.preventDefault()},updateOption:D,selectOptionClick:O}}});const fn=["id","aria-disabled","aria-selected"];function vn(e,n,s,c,p,d){return Le((b(),k("li",Re({id:e.id,class:e.containerKls,role:"option","aria-disabled":e.isDisabled||void 0,"aria-selected":e.itemSelected},{[Vt(e.mouseMoveEventName)]:n[0]||(n[0]=(...g)=>e.hoverItem&&e.hoverItem(...g))},{onMousedown:n[1]||(n[1]=(...g)=>e.handleMousedown&&e.handleMousedown(...g)),onClick:n[2]||(n[2]=ne((...g)=>e.selectOptionClick&&e.selectOptionClick(...g),["stop"]))}),[W(e.$slots,"default",{},()=>[N("span",null,q(e.currentLabel),1)])],16,fn)),[[qe,e.visible]])}var Je=Ne(cn,[["render",vn]]),bn=me({name:"ElOptionGroup",componentName:"ElOptionGroup",props:{label:String,disabled:Boolean},setup(e){const n=ve("select"),s=M(),c=Be(),p=M([]);It(Mt,be({...Qe(e)}));const d=u(()=>p.value.some(f=>f.visible===!0)),g=f=>{var v;return f.type.name==="ElOption"&&!!((v=f.component)!=null&&v.proxy)},l=f=>{const v=Z(f),D=[];return v.forEach(w=>{var h;El(w)&&(g(w)?D.push(w.component.proxy):J(w.children)&&w.children.length?D.push(...l(w.children)):(h=w.component)!=null&&h.subTree&&D.push(...l(w.component.subTree)))}),D},E=()=>{p.value=l(c.subTree)};return Ye(()=>{E()}),Cl(s,E,{attributes:!0,subtree:!0,childList:!0}),{groupRef:s,visible:d,ns:n}}});function gn(e,n,s,c,p,d){return Le((b(),k("ul",{ref:"groupRef",class:S(e.ns.be("group","wrap"))},[N("li",{class:S(e.ns.be("group","title"))},q(e.label),3),N("li",null,[N("ul",{class:S(e.ns.b("group"))},[W(e.$slots,"default")],2)])],2)),[[qe,e.visible]])}var Xe=Ne(bn,[["render",gn]]),mn=me({name:"ElSelectDropdown",componentName:"ElSelectDropdown",setup(){const e=$e(Pe),n=ve("select"),s=u(()=>e.props.popperClass),c=u(()=>e.props.multiple),p=u(()=>e.props.fitInputWidth),d=M("");function g(){var E;const l=(E=e.selectRef)==null?void 0:E.offsetWidth;l?d.value=`${l-2}px`:d.value=""}return Ye(()=>{g(),ee(e.selectRef,g)}),{ns:n,minWidth:d,popperClass:s,isMultiple:c,isFitInputWidth:p}}});function hn(e,n,s,c,p,d){return b(),k("div",{class:S([e.ns.b("dropdown"),e.ns.is("multiple",e.isMultiple),e.popperClass]),style:Me({[e.isFitInputWidth?"width":"minWidth"]:e.minWidth})},[e.$slots.header?(b(),k("div",{key:0,class:S(e.ns.be("dropdown","header"))},[W(e.$slots,"header")],2)):z("v-if",!0),W(e.$slots,"default"),e.$slots.footer?(b(),k("div",{key:1,class:S(e.ns.be("dropdown","footer"))},[W(e.$slots,"footer")],2)):z("v-if",!0)],6)}var yn=Ne(mn,[["render",hn]]);const Sn=(e,n)=>{const{t:s}=Tl(),c=Vl(),p=Dt(),d=ve("select"),g=ve("input"),l=be({inputValue:"",options:new Map,cachedOptions:new Map,optionValues:[],selected:[],selectionWidth:0,collapseItemWidth:0,selectedLabel:"",hoveringIndex:-1,previousQuery:null,inputHovering:!1,menuVisibleOnFocus:!1,isBeforeHide:!1}),E=M(),f=M(),v=M(),D=M(),w=M(),h=M(),C=M(),O=M(),m=M(),R=M(),r=M(),i=M(!1),T=M(),j=M(!1),{form:$,formItem:P}=Kl(),{inputId:he}=Al(e,{formItemContext:P}),{valueOnClear:ye,isEmptyValue:Se}=Il(e),{isComposing:le,handleCompositionStart:Oe,handleCompositionUpdate:L,handleCompositionEnd:ae}=xl({afterComposition:t=>st(t)}),se=Hl(),{wrapperRef:Ze,isFocused:We,handleBlur:$t}=Zl(w,{disabled:se,afterFocus(){e.automaticDropdown&&!i.value&&(i.value=!0,l.menuVisibleOnFocus=!0)},beforeBlur(t){var a,o;return((a=v.value)==null?void 0:a.isFocusInsideContent(t))||((o=D.value)==null?void 0:o.isFocusInsideContent(t))},afterBlur(){var t;i.value=!1,l.menuVisibleOnFocus=!1,e.validateEvent&&((t=P==null?void 0:P.validate)==null||t.call(P,"blur").catch(mt))}}),Fe=u(()=>J(e.modelValue)?e.modelValue.length>0:!Se(e.modelValue)),Lt=u(()=>($==null?void 0:$.statusIcon)??!1),Bt=u(()=>e.clearable&&!se.value&&Fe.value&&(We.value||l.inputHovering)),xe=u(()=>e.remote&&e.filterable&&!e.remoteShowSuffix?"":e.suffixIcon),Nt=u(()=>d.is("reverse",!!(xe.value&&i.value))),ze=u(()=>(P==null?void 0:P.validateState)||""),Pt=u(()=>ze.value&&Ll[ze.value]),Wt=u(()=>e.remote?e.debounce:0),Ft=u(()=>e.remote&&!l.inputValue&&l.options.size===0),zt=u(()=>e.loading?e.loadingText||s("el.select.loading"):e.filterable&&l.inputValue&&l.options.size>0&&oe.value===0?e.noMatchText||s("el.select.noMatch"):l.options.size===0?e.noDataText||s("el.select.noData"):null),oe=u(()=>B.value.filter(t=>t.visible).length),B=u(()=>{const t=Array.from(l.options.values()),a=[];return l.optionValues.forEach(o=>{const y=t.findIndex(V=>V.value===o);y>-1&&a.push(t[y])}),a.length>=t.length?a:t}),Kt=u(()=>Array.from(l.cachedOptions.values())),At=u(()=>{const t=B.value.filter(a=>!a.created).some(a=>a.currentLabel===l.inputValue);return e.filterable&&e.allowCreate&&l.inputValue!==""&&!t}),_e=()=>{e.filterable&&ce(e.filterMethod)||e.filterable&&e.remote&&ce(e.remoteMethod)||B.value.forEach(t=>{var a;(a=t.updateOption)==null||a.call(t,l.inputValue)})},et=Gl(),Ht=u(()=>["small"].includes(et.value)?"small":"default"),tt=u({get(){return i.value&&(e.loading||!Ft.value||e.remote&&!!c.empty)&&(!j.value||!$l(l.previousQuery)||l.options.size>0)},set(t){i.value=t}}),Gt=u(()=>{if(e.multiple&&!ke(e.modelValue))return Z(e.modelValue).length===0&&!l.inputValue;const t=J(e.modelValue)?e.modelValue[0]:e.modelValue;return e.filterable||ke(t)?!l.inputValue:!0}),Ut=u(()=>{const t=e.placeholder??s("el.select.placeholder");return e.multiple||!Fe.value?t:l.selectedLabel}),jt="mouseenter";U(()=>e.modelValue,(t,a)=>{e.multiple&&e.filterable&&!e.reserveKeyword&&(l.inputValue="",we("")),Ce(),!te(t,a)&&e.validateEvent&&(P==null||P.validate("change").catch(mt))},{flush:"post",deep:!0}),U(()=>i.value,t=>{t?we(l.inputValue):(l.inputValue="",l.previousQuery=null,l.isBeforeHide=!0,l.menuVisibleOnFocus=!1)}),U(()=>l.options.entries(),()=>{kl&&(Ce(),e.defaultFirstOption&&(e.filterable||e.remote)&&oe.value&<())},{flush:"post"}),U([()=>l.hoveringIndex,B],([t])=>{Dl(t)&&t>-1?T.value=B.value[t]||{}:T.value={},B.value.forEach(a=>{a.hover=T.value===a})}),Rl(()=>{l.isBeforeHide||_e()});const we=t=>{l.previousQuery===t||le.value||(l.previousQuery=t,e.filterable&&ce(e.filterMethod)?e.filterMethod(t):e.filterable&&e.remote&&ce(e.remoteMethod)&&e.remoteMethod(t),e.defaultFirstOption&&(e.filterable||e.remote)&&oe.value?Q(lt):Q(Qt))},lt=()=>{const t=B.value.filter(y=>y.visible&&!y.disabled&&!y.states.groupDisabled),a=t.find(y=>y.created),o=t[0];l.hoveringIndex=dt(B.value.map(y=>y.value),a||o)},Ce=()=>{if(e.multiple)l.selectedLabel="";else{const a=Ke(J(e.modelValue)?e.modelValue[0]:e.modelValue);l.selectedLabel=a.currentLabel,l.selected=[a];return}const t=[];ke(e.modelValue)||Z(e.modelValue).forEach(a=>{t.push(Ke(a))}),l.selected=t},Ke=t=>{let a;const o=Ml(t);for(let V=l.cachedOptions.size-1;V>=0;V--){const I=Kt.value[V];if(o?K(I.value,e.valueKey)===K(t,e.valueKey):I.value===t){a={index:B.value.filter(x=>!x.created).indexOf(I),value:t,currentLabel:I.currentLabel,get isDisabled(){return I.isDisabled}};break}}if(a)return a;const y=l.selected.find(V=>o?K(V.value,e.valueKey)===K(t,e.valueKey):V.value===t);return{index:-1,value:t,currentLabel:o?t.label:y?y.currentLabel:t??""}},Qt=()=>{const t=l.selected.length;if(t>0){const a=l.selected[t-1];l.hoveringIndex=B.value.findIndex(o=>Te(a)===Te(o))}else l.hoveringIndex=-1},qt=()=>{l.selectionWidth=Number.parseFloat(window.getComputedStyle(f.value).width)},Yt=()=>{l.collapseItemWidth=R.value.getBoundingClientRect().width},Ae=()=>{var t,a;(a=(t=v.value)==null?void 0:t.updatePopper)==null||a.call(t)},nt=()=>{var t,a;(a=(t=D.value)==null?void 0:t.updatePopper)==null||a.call(t)},at=()=>{l.inputValue.length>0&&!i.value&&(i.value=!0),we(l.inputValue)},st=t=>{if(l.inputValue=t.target.value,e.remote)j.value=!0,ot();else return at()},ot=Nl(()=>{at(),j.value=!1},Wt),ie=t=>{te(e.modelValue,t)||n(Rt,t)},Jt=t=>nn(t,a=>{const o=l.cachedOptions.get(a);return!(o!=null&&o.disabled)&&!(o!=null&&o.states.groupDisabled)}),it=t=>{const a=ht(t);if(e.multiple&&a!==H.delete&&t.target.value.length<=0){const o=Z(e.modelValue).slice(),y=Jt(o);if(y<0)return;const V=o[y];o.splice(y,1),n(fe,o),ie(o),n("remove-tag",V)}},Xt=(t,a)=>{const o=l.selected.indexOf(a);if(o>-1&&!se.value){const y=Z(e.modelValue).slice();y.splice(o,1),n(fe,y),ie(y),n("remove-tag",a.value)}t.stopPropagation(),Ee()},rt=t=>{t.stopPropagation();const a=e.multiple?[]:ye.value;if(e.multiple)for(const o of l.selected)o.isDisabled&&a.push(o.value);n(fe,a),ie(a),l.hoveringIndex=-1,i.value=!1,n("clear"),Ee()},ut=t=>{if(e.multiple){const a=Z(e.modelValue??[]).slice(),o=dt(a,t);o>-1?a.splice(o,1):(e.multipleLimit<=0||a.length{re(t)})},dt=(t,a)=>ke(a)?-1:Y(a.value)?t.findIndex(o=>te(K(o,e.valueKey),Te(a))):t.indexOf(a.value),re=t=>{var y,V,I,x,bt;const a=J(t)?t[t.length-1]:t;let o=null;if(!Bl(a==null?void 0:a.value)){const de=B.value.filter(fl=>fl.value===a.value);de.length>0&&(o=de[0].$el)}if(v.value&&o){const de=(x=(I=(V=(y=v.value)==null?void 0:y.popperRef)==null?void 0:V.contentRef)==null?void 0:I.querySelector)==null?void 0:x.call(I,`.${d.be("dropdown","wrap")}`);de&&Xl(de,o)}(bt=r.value)==null||bt.handleScroll()},Zt=t=>{l.options.set(t.value,t),l.cachedOptions.set(t.value,t)},xt=(t,a)=>{l.options.get(t)===a&&l.options.delete(t)},_t=u(()=>{var t,a;return(a=(t=v.value)==null?void 0:t.popperRef)==null?void 0:a.contentRef}),el=()=>{l.isBeforeHide=!1,Q(()=>{var t;(t=r.value)==null||t.update(),re(l.selected)})},Ee=()=>{var t;(t=w.value)==null||t.focus()},tl=()=>{var t;if(i.value){i.value=!1,Q(()=>{var a;return(a=w.value)==null?void 0:a.blur()});return}(t=w.value)==null||t.blur()},ll=t=>{rt(t)},nl=t=>{if(i.value=!1,We.value){const a=new FocusEvent("blur",t);Q(()=>$t(a))}},pt=()=>{l.inputValue.length>0?l.inputValue="":i.value=!1},ct=t=>{var a;se.value||e.filterable&&i.value&&t&&!((a=C.value)!=null&&a.contains(t.target))||(l.menuVisibleOnFocus?l.menuVisibleOnFocus=!1:i.value=!i.value)},ft=()=>{if(!i.value)ct();else{const t=B.value[l.hoveringIndex];t&&!t.isDisabled&&ut(t)}},Te=t=>Y(t.value)?K(t.value,e.valueKey):t.value,al=u(()=>B.value.filter(t=>t.visible).every(t=>t.isDisabled)),sl=u(()=>e.multiple?e.collapseTags?l.selected.slice(0,e.maxCollapseTags):l.selected:[]),ol=u(()=>e.multiple?e.collapseTags?l.selected.slice(e.maxCollapseTags):[]:[]),Ve=t=>{if(!i.value){i.value=!0;return}if(!(l.options.size===0||oe.value===0||le.value)&&!al.value){t==="next"?(l.hoveringIndex++,l.hoveringIndex===l.options.size&&(l.hoveringIndex=0)):t==="prev"&&(l.hoveringIndex--,l.hoveringIndex<0&&(l.hoveringIndex=l.options.size-1));const a=B.value[l.hoveringIndex];(a.isDisabled||!a.visible)&&Ve(t),Q(()=>re(T.value))}},vt=(t,a,o,y)=>{for(let V=a;V>=0&&V{const o=l.options.size;if(o===0)return;const y=_l(t,0,o-1),V=B.value,I=a==="up"?-1:1,x=vt(V,y,I,o)??vt(V,y-I,-I,o);x!=null&&(l.hoveringIndex=x,Q(()=>re(T.value)))},il=t=>{const a=ht(t);let o=!0;switch(a){case H.up:Ve("prev");break;case H.down:Ve("next");break;case H.enter:case H.numpadEnter:le.value||ft();break;case H.esc:pt();break;case H.backspace:o=!1,it(t);return;case H.home:if(!i.value)return;Ie(0,"down");break;case H.end:if(!i.value)return;Ie(l.options.size-1,"up");break;case H.pageUp:if(!i.value)return;Ie(l.hoveringIndex-10,"up");break;case H.pageDown:if(!i.value)return;Ie(l.hoveringIndex+10,"down");break;default:o=!1;break}o&&(t.preventDefault(),t.stopPropagation())},rl=()=>{if(!f.value)return 0;const t=window.getComputedStyle(f.value);return Number.parseFloat(t.gap||"6px")},ul=u(()=>{const t=rl(),a=e.filterable?t+11:0;return{maxWidth:`${R.value&&e.maxCollapseTags===1?l.selectionWidth-l.collapseItemWidth-t-a:l.selectionWidth-a}px`}}),dl=u(()=>({maxWidth:`${l.selectionWidth}px`})),pl=t=>{n("popup-scroll",t)},cl=t=>{n("end-reached",t)};ee(f,qt),ee(Ze,Ae),ee(m,nt),ee(R,Yt);let ue;return U(()=>tt.value,t=>{t?ue=ee(O,Ae).stop:(ue==null||ue(),ue=void 0),n("visible-change",t)}),Ye(()=>{Ce()}),{inputId:he,contentId:p,nsSelect:d,nsInput:g,states:l,isFocused:We,expanded:i,optionsArray:B,hoverOption:T,selectSize:et,filteredOptionsCount:oe,updateTooltip:Ae,updateTagTooltip:nt,debouncedOnInputChange:ot,onInput:st,deletePrevTag:it,deleteTag:Xt,deleteSelected:rt,handleOptionSelect:ut,scrollToOption:re,hasModelValue:Fe,shouldShowPlaceholder:Gt,currentPlaceholder:Ut,mouseEnterEventName:jt,needStatusIcon:Lt,showClearBtn:Bt,iconComponent:xe,iconReverse:Nt,validateState:ze,validateIcon:Pt,showNewOption:At,updateOptions:_e,collapseTagSize:Ht,setSelected:Ce,selectDisabled:se,emptyText:zt,handleCompositionStart:Oe,handleCompositionUpdate:L,handleCompositionEnd:ae,handleKeydown:il,onOptionCreate:Zt,onOptionDestroy:xt,handleMenuEnter:el,focus:Ee,blur:tl,handleClearClick:ll,handleClickOutside:nl,handleEsc:pt,toggleMenu:ct,selectOption:ft,getValueKey:Te,navigateOptions:Ve,dropdownMenuVisible:tt,showTagList:sl,collapseTagList:ol,popupScroll:pl,getOption:Ke,endReached:cl,tagStyle:ul,collapseTagStyle:dl,popperRef:_t,inputRef:w,tooltipRef:v,tagTooltipRef:D,prefixRef:h,suffixRef:C,selectRef:E,wrapperRef:Ze,selectionRef:f,scrollbarRef:r,menuRef:O,tagMenuRef:m,collapseItemRef:R}};var On=me({name:"ElOptions",setup(e,{slots:n}){const s=$e(Pe);let c=[];return()=>{var l,E;const p=(l=n.default)==null?void 0:l.call(n),d=[];function g(f){J(f)&&f.forEach(v=>{var w,h,C,O;const D=(w=(v==null?void 0:v.type)||{})==null?void 0:w.name;D==="ElOptionGroup"?g(!Pl(v.children)&&!J(v.children)&&ce((h=v.children)==null?void 0:h.default)?(C=v.children)==null?void 0:C.default():v.children):D==="ElOption"?d.push((O=v.props)==null?void 0:O.value):J(v.children)&&g(v.children)})}return p.length&&g((E=p[0])==null?void 0:E.children),te(d,c)||(c=d,s&&(s.states.optionValues=d)),p}}});const Ct="ElSelect",ge=new WeakMap,wn=e=>(...n)=>{var p,d;const s=n[0];if(!s||s.includes('Slot "default" invoked outside of the render function')&&((p=n[2])!=null&&p.includes("ElTreeSelect")))return;const c=(d=ge.get(e))==null?void 0:d.originalWarnHandler;if(c){c(...n);return}console.warn(...n)},Cn=e=>{let n=ge.get(e);return n||(n={originalWarnHandler:e.config.warnHandler,handler:wn(e),count:0},ge.set(e,n)),n};var En=me({name:Ct,componentName:Ct,components:{ElSelectMenu:yn,ElOption:Je,ElOptions:On,ElOptionGroup:Xe,ElTag:Jl,ElScrollbar:ql,ElTooltip:Ql,ElIcon:Wl},directives:{ClickOutside:Yl},props:rn,emits:un,setup(e,{emit:n,slots:s}){const c=Be(),p=Cn(c.appContext);p.count+=1,c.appContext.config.warnHandler=p.handler;const d=u(()=>{const{modelValue:r,multiple:i}=e,T=i?[]:void 0;return J(r)?i?r:T:i?T:r}),g=be({...Qe(e),modelValue:d}),l=Sn(g,n),{calculatorRef:E,inputStyle:f}=an(),{getLabel:v,getValue:D,getOptions:w,getDisabled:h}=on(e),C=r=>({label:v(r),value:D(r),disabled:h(r)}),O=r=>r.reduce((i,T)=>(i.push(T),T.children&&T.children.length>0&&i.push(...O(T.children)),i),[]),m=r=>{Ul(r||[]).forEach(i=>{var T;if(Y(i)&&(i.type.name==="ElOption"||i.type.name==="ElTree")){const j=i.type.name;if(j==="ElTree")O(((T=i.props)==null?void 0:T.data)||[]).forEach($=>{$.currentLabel=$.label??(Y($.value)?"":$.value),l.onOptionCreate($)});else if(j==="ElOption"){const $={...i.props};$.currentLabel=$.label??(Y($.value)?"":$.value),l.onOptionCreate($)}}})};U(()=>{var r;return[e.persistent||l.expanded.value||!s.default||(r=s.default)==null?void 0:r.call(s),d.value]},()=>{var r;e.persistent||l.expanded.value||s.default&&(l.states.options.clear(),m((r=s.default)==null?void 0:r.call(s)))},{immediate:!0}),It(Pe,be({props:g,states:l.states,selectRef:l.selectRef,optionsArray:l.optionsArray,setSelected:l.setSelected,handleOptionSelect:l.handleOptionSelect,onOptionCreate:l.onOptionCreate,onOptionDestroy:l.onOptionDestroy}));const R=u(()=>e.multiple?l.states.selected.map(r=>r.currentLabel):l.states.selectedLabel);return Tt(()=>{const r=ge.get(c.appContext);r&&(r.count-=1,r.count<=0&&(c.appContext.config.warnHandler=r.originalWarnHandler,ge.delete(c.appContext)))}),{...l,modelValue:d,selectedLabel:R,calculatorRef:E,inputStyle:f,getLabel:v,getValue:D,getOptions:w,getDisabled:h,getOptionProps:C}}});const Tn=["id","value","name","disabled","autocomplete","tabindex","readonly","aria-activedescendant","aria-controls","aria-expanded","aria-label"],Vn=["textContent"],In={key:1};function kn(e,n,s,c,p,d){const g=X("el-tag"),l=X("el-tooltip"),E=X("el-icon"),f=X("el-option"),v=X("el-option-group"),D=X("el-options"),w=X("el-scrollbar"),h=X("el-select-menu"),C=Fl("click-outside");return Le((b(),k("div",Re({ref:"selectRef",class:[e.nsSelect.b(),e.nsSelect.m(e.selectSize)]},{[Vt(e.mouseEnterEventName)]:n[11]||(n[11]=O=>e.states.inputHovering=!0)},{onMouseleave:n[12]||(n[12]=O=>e.states.inputHovering=!1)}),[_(l,{ref:"tooltipRef",visible:e.dropdownMenuVisible,placement:e.placement,teleported:e.teleported,"popper-class":[e.nsSelect.e("popper"),e.popperClass],"popper-style":e.popperStyle,"popper-options":e.popperOptions,"fallback-placements":e.fallbackPlacements,effect:e.effect,pure:"",trigger:"click",transition:`${e.nsSelect.namespace.value}-zoom-in-top`,"stop-popper-mouse-event":!1,"gpu-acceleration":!1,persistent:e.persistent,"append-to":e.appendTo,"show-arrow":e.showArrow,offset:e.offset,onBeforeShow:e.handleMenuEnter,onHide:n[10]||(n[10]=O=>e.states.isBeforeHide=!1)},{default:F(()=>{var O;return[N("div",{ref:"wrapperRef",class:S([e.nsSelect.e("wrapper"),e.nsSelect.is("focused",e.isFocused),e.nsSelect.is("hovering",e.states.inputHovering),e.nsSelect.is("filterable",e.filterable),e.nsSelect.is("disabled",e.selectDisabled)]),onClick:n[7]||(n[7]=ne((...m)=>e.toggleMenu&&e.toggleMenu(...m),["prevent"]))},[e.$slots.prefix?(b(),k("div",{key:0,ref:"prefixRef",class:S(e.nsSelect.e("prefix"))},[W(e.$slots,"prefix")],2)):z("v-if",!0),N("div",{ref:"selectionRef",class:S([e.nsSelect.e("selection"),e.nsSelect.is("near",e.multiple&&!e.$slots.prefix&&!!e.states.selected.length)])},[e.multiple?W(e.$slots,"tag",{key:0,data:e.states.selected,deleteTag:e.deleteTag,selectDisabled:e.selectDisabled},()=>{var m,R,r,i,T,j,$,P,he,ye,Se,le,Oe;return[(b(!0),k(pe,null,De(e.showTagList,L=>(b(),k("div",{key:e.getValueKey(L),class:S(e.nsSelect.e("selected-item"))},[_(g,{closable:!e.selectDisabled&&!L.isDisabled,size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,"disable-transitions":"",style:Me(e.tagStyle),onClose:ae=>e.deleteTag(ae,L)},{default:F(()=>[N("span",{class:S(e.nsSelect.e("tags-text"))},[W(e.$slots,"label",{index:L.index,label:L.currentLabel,value:L.value},()=>[yt(q(L.currentLabel),1)])],2)]),_:2},1032,["closable","size","type","effect","style","onClose"])],2))),128)),e.collapseTags&&e.states.selected.length>e.maxCollapseTags?(b(),G(l,{key:0,ref:"tagTooltipRef",disabled:e.dropdownMenuVisible||!e.collapseTagsTooltip,"fallback-placements":((m=e.tagTooltip)==null?void 0:m.fallbackPlacements)??["bottom","top","right","left"],effect:((R=e.tagTooltip)==null?void 0:R.effect)??e.effect,placement:((r=e.tagTooltip)==null?void 0:r.placement)??"bottom","popper-class":((i=e.tagTooltip)==null?void 0:i.popperClass)??e.popperClass,"popper-style":((T=e.tagTooltip)==null?void 0:T.popperStyle)??e.popperStyle,teleported:((j=e.tagTooltip)==null?void 0:j.teleported)??e.teleported,"append-to":(($=e.tagTooltip)==null?void 0:$.appendTo)??e.appendTo,"popper-options":((P=e.tagTooltip)==null?void 0:P.popperOptions)??e.popperOptions,transition:(he=e.tagTooltip)==null?void 0:he.transition,"show-after":(ye=e.tagTooltip)==null?void 0:ye.showAfter,"hide-after":(Se=e.tagTooltip)==null?void 0:Se.hideAfter,"auto-close":(le=e.tagTooltip)==null?void 0:le.autoClose,offset:(Oe=e.tagTooltip)==null?void 0:Oe.offset},{default:F(()=>[N("div",{ref:"collapseItemRef",class:S(e.nsSelect.e("selected-item"))},[_(g,{closable:!1,size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,"disable-transitions":"",style:Me(e.collapseTagStyle)},{default:F(()=>[N("span",{class:S(e.nsSelect.e("tags-text"))}," + "+q(e.states.selected.length-e.maxCollapseTags),3)]),_:1},8,["size","type","effect","style"])],2)]),content:F(()=>[N("div",{ref:"tagMenuRef",class:S(e.nsSelect.e("selection"))},[(b(!0),k(pe,null,De(e.collapseTagList,L=>(b(),k("div",{key:e.getValueKey(L),class:S(e.nsSelect.e("selected-item"))},[_(g,{class:"in-tooltip",closable:!e.selectDisabled&&!L.isDisabled,size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,"disable-transitions":"",onClose:ae=>e.deleteTag(ae,L)},{default:F(()=>[N("span",{class:S(e.nsSelect.e("tags-text"))},[W(e.$slots,"label",{index:L.index,label:L.currentLabel,value:L.value},()=>[yt(q(L.currentLabel),1)])],2)]),_:2},1032,["closable","size","type","effect","onClose"])],2))),128))],2)]),_:3},8,["disabled","fallback-placements","effect","placement","popper-class","popper-style","teleported","append-to","popper-options","transition","show-after","hide-after","auto-close","offset"])):z("v-if",!0)]}):z("v-if",!0),N("div",{class:S([e.nsSelect.e("selected-item"),e.nsSelect.e("input-wrapper"),e.nsSelect.is("hidden",!e.filterable||e.selectDisabled||e.multiple&&!e.states.inputValue&&!e.isFocused)])},[N("input",{id:e.inputId,ref:"inputRef",value:e.states.inputValue,type:"text",name:e.name,class:S([e.nsSelect.e("input"),e.nsSelect.is(e.selectSize)]),disabled:e.selectDisabled,autocomplete:e.autocomplete,style:Me(e.inputStyle),tabindex:e.tabindex,role:"combobox",readonly:!e.filterable,spellcheck:"false","aria-activedescendant":((O=e.hoverOption)==null?void 0:O.id)||"","aria-controls":e.contentId,"aria-expanded":e.dropdownMenuVisible,"aria-label":e.ariaLabel,"aria-autocomplete":"none","aria-haspopup":"listbox",onKeydown:n[0]||(n[0]=(...m)=>e.handleKeydown&&e.handleKeydown(...m)),onCompositionstart:n[1]||(n[1]=(...m)=>e.handleCompositionStart&&e.handleCompositionStart(...m)),onCompositionupdate:n[2]||(n[2]=(...m)=>e.handleCompositionUpdate&&e.handleCompositionUpdate(...m)),onCompositionend:n[3]||(n[3]=(...m)=>e.handleCompositionEnd&&e.handleCompositionEnd(...m)),onInput:n[4]||(n[4]=(...m)=>e.onInput&&e.onInput(...m)),onChange:n[5]||(n[5]=ne(()=>{},["stop"])),onClick:n[6]||(n[6]=ne((...m)=>e.toggleMenu&&e.toggleMenu(...m),["stop"]))},null,46,Tn),e.filterable?(b(),k("span",{key:0,ref:"calculatorRef","aria-hidden":"true",class:S(e.nsSelect.e("input-calculator")),textContent:q(e.states.inputValue)},null,10,Vn)):z("v-if",!0)],2),e.shouldShowPlaceholder?(b(),k("div",{key:1,class:S([e.nsSelect.e("selected-item"),e.nsSelect.e("placeholder"),e.nsSelect.is("transparent",!e.hasModelValue||e.expanded&&!e.states.inputValue)])},[e.hasModelValue?W(e.$slots,"label",{key:0,index:e.getOption(e.modelValue).index,label:e.currentPlaceholder,value:e.modelValue},()=>[N("span",null,q(e.currentPlaceholder),1)]):(b(),k("span",In,q(e.currentPlaceholder),1))],2)):z("v-if",!0)],2),N("div",{ref:"suffixRef",class:S(e.nsSelect.e("suffix"))},[e.iconComponent&&!e.showClearBtn?(b(),G(E,{key:0,class:S([e.nsSelect.e("caret"),e.nsSelect.e("icon"),e.iconReverse])},{default:F(()=>[(b(),G(Ge(e.iconComponent)))]),_:1},8,["class"])):z("v-if",!0),e.showClearBtn&&e.clearIcon?(b(),G(E,{key:1,class:S([e.nsSelect.e("caret"),e.nsSelect.e("icon"),e.nsSelect.e("clear")]),onClick:e.handleClearClick},{default:F(()=>[(b(),G(Ge(e.clearIcon)))]),_:1},8,["class","onClick"])):z("v-if",!0),e.validateState&&e.validateIcon&&e.needStatusIcon?(b(),G(E,{key:2,class:S([e.nsInput.e("icon"),e.nsInput.e("validateIcon"),e.nsInput.is("loading",e.validateState==="validating")])},{default:F(()=>[(b(),G(Ge(e.validateIcon)))]),_:1},8,["class"])):z("v-if",!0)],2)],2)]}),content:F(()=>[_(h,{ref:"menuRef"},{default:F(()=>[e.$slots.header?(b(),k("div",{key:0,class:S(e.nsSelect.be("dropdown","header")),onClick:n[8]||(n[8]=ne(()=>{},["stop"]))},[W(e.$slots,"header")],2)):z("v-if",!0),Le(_(w,{id:e.contentId,ref:"scrollbarRef",tag:"ul","wrap-class":e.nsSelect.be("dropdown","wrap"),"view-class":e.nsSelect.be("dropdown","list"),class:S([e.nsSelect.is("empty",e.filteredOptionsCount===0)]),role:"listbox","aria-label":e.ariaLabel,"aria-orientation":"vertical",onScroll:e.popupScroll,onEndReached:e.endReached},{default:F(()=>[e.showNewOption?(b(),G(f,{key:0,value:e.states.inputValue,created:!0},null,8,["value"])):z("v-if",!0),_(D,null,{default:F(()=>[W(e.$slots,"default",{},()=>[(b(!0),k(pe,null,De(e.options,(O,m)=>{var R;return b(),k(pe,{key:m},[(R=e.getOptions(O))!=null&&R.length?(b(),G(v,{key:0,label:e.getLabel(O),disabled:e.getDisabled(O)},{default:F(()=>[(b(!0),k(pe,null,De(e.getOptions(O),r=>(b(),G(f,Re({key:e.getValue(r)},{ref_for:!0},e.getOptionProps(r)),null,16))),128))]),_:2},1032,["label","disabled"])):(b(),G(f,Re({key:1,ref_for:!0},e.getOptionProps(O)),null,16))],64)}),128))])]),_:3})]),_:3},8,["id","wrap-class","view-class","class","aria-label","onScroll","onEndReached"]),[[qe,e.states.options.size>0&&!e.loading]]),e.$slots.loading&&e.loading?(b(),k("div",{key:1,class:S(e.nsSelect.be("dropdown","loading"))},[W(e.$slots,"loading")],2)):e.loading||e.filteredOptionsCount===0?(b(),k("div",{key:2,class:S(e.nsSelect.be("dropdown","empty"))},[W(e.$slots,"empty",{},()=>[N("span",null,q(e.emptyText),1)])],2)):z("v-if",!0),e.$slots.footer?(b(),k("div",{key:3,class:S(e.nsSelect.be("dropdown","footer")),onClick:n[9]||(n[9]=ne(()=>{},["stop"]))},[W(e.$slots,"footer")],2)):z("v-if",!0)]),_:3},512)]),_:3},8,["visible","placement","teleported","popper-class","popper-style","popper-options","fallback-placements","effect","transition","persistent","append-to","show-arrow","offset","onBeforeShow"])],16)),[[C,e.handleClickOutside,e.popperRef]])}var Dn=Ne(En,[["render",kn]]);const Qn=zl(Dn,{Option:Je,OptionGroup:Xe}),qn=kt(Je),Yn=kt(Xe);export{Qn as E,qn as a,Yn as b,jn as c}; diff --git a/frontend/dist/assets/el-slider-DYENF1-i.js b/frontend/dist/assets/el-slider-DYENF1-i.js new file mode 100644 index 0000000..a3b073d --- /dev/null +++ b/frontend/dist/assets/el-slider-DYENF1-i.js @@ -0,0 +1 @@ +import{ak as K,a6 as se,b as Se,aR as Be,R as Z,G as Ke,aS as ce,P as me,y as te,a1 as Xe,j as f,aK as ye,aT as Ie,D as de,C as We,aU as Me,B as $e,V as Ue,W as F,d as ke,a as Ee,z as Pe,aV as we,o as T,c as $,s as Te,w as pe,q as ee,n as U,f as a,aa as Oe,al as D,I as je,J as Ne,aW as Ae,F as _e,e as be,g as ie,M as ue,ad as he,aL as Fe,l as Ge}from"./index-BKKvzUDD.js";import{b as He,c as qe,d as Je,e as Qe}from"./index-BjEW7-SA.js";import{E as Ze}from"./el-input-number-BFR4pu1i.js";import{C as ze,I as xe,U as re}from"./raf-C-x62Pcl.js";import{u as De}from"./index-GAnQrJsQ.js";import{a as Re,E as et}from"./el-popper-D6_hxRbQ.js";import{d as Ce}from"./debounce-ByXPNh5F.js";import{c as tt}from"./clamp-CbbY8h6F.js";const Ye=Symbol("sliderContextKey"),at=Se({modelValue:{type:Z([Number,Array]),default:0},id:{type:String,default:void 0},min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Z([Number,String]),default:1},showInput:Boolean,showInputControls:{type:Boolean,default:!0},size:Be,inputSize:Be,showStops:Boolean,showTooltip:{type:Boolean,default:!0},formatTooltip:{type:Z(Function),default:void 0},disabled:{type:Boolean,default:void 0},range:Boolean,vertical:Boolean,height:String,rangeStartLabel:{type:String,default:void 0},rangeEndLabel:{type:String,default:void 0},formatValueText:{type:Z(Function),default:void 0},tooltipClass:{type:String,default:void 0},placement:{type:String,values:Re,default:"top"},marks:{type:Z(Object)},validateEvent:{type:Boolean,default:!0},persistent:{type:Boolean,default:!0},...De(["ariaLabel"])}),Ve=e=>K(e)||se(e)&&e.every(K),lt={[re]:Ve,[xe]:Ve,[ze]:Ve},nt=(e,t,u)=>{const l=te();return Ke(async()=>{e.range?(se(e.modelValue)?(t.firstValue=Math.max(e.min,e.modelValue[0]),t.secondValue=Math.min(e.max,e.modelValue[1])):(t.firstValue=e.min,t.secondValue=e.max),t.oldValue=[t.firstValue,t.secondValue]):(!K(e.modelValue)||Number.isNaN(e.modelValue)?t.firstValue=e.min:t.firstValue=Math.min(e.max,Math.max(e.min,e.modelValue)),t.oldValue=t.firstValue),ce(window,"resize",u),await me(),u()}),{sliderWrapper:l}},st=e=>{const t=f(()=>e.marks?Object.keys(e.marks).map(Number.parseFloat).sort((u,l)=>u-l).filter(u=>u<=e.max&&u>=e.min).map(u=>({point:u,position:(u-e.min)*100/(e.max-e.min),mark:e.marks[u]})):[]);return Xe(()=>{if(e.step==="mark"&&!e.marks&&ye("ElSlider","marks prop must be provided when step is mark"),e.marks){const u=Object.keys(e.marks),l=t.value.map(s=>s.point),d=u.filter(s=>{const o=Number.parseFloat(s);return Number.isNaN(o)||!l.includes(o)});d.length>0&&ye("ElSlider",`Some marks keys are invalid (not a number or out of [min, max]): [${d.map(s=>`'${s}'`).join(", ")}] and will be ignored.`)}}),t},rt=(e,t,u)=>{const{formItem:l}=He(),d=Ie(),s=te(),o=te(),h={firstButton:s,secondButton:o},V=qe(),n=f(()=>Math.min(t.firstValue,t.secondValue)),g=f(()=>Math.max(t.firstValue,t.secondValue)),p=f(()=>e.range?`${100*(g.value-n.value)/(e.max-e.min)}%`:`${100*(t.firstValue-e.min)/(e.max-e.min)}%`),w=f(()=>e.range?`${100*(n.value-e.min)/(e.max-e.min)}%`:"0%"),O=f(()=>e.vertical?{height:e.height}:{}),j=f(()=>e.vertical?{height:p.value,bottom:w.value}:{width:p.value,left:w.value}),S=()=>{d.value&&(t.sliderSize=d.value.getBoundingClientRect()[e.vertical?"height":"width"])},z=c=>{const v=e.min+c*(e.max-e.min)/100;if(!e.range)return s;let k;return Math.abs(n.value-v)t.secondValue?"firstButton":"secondButton",h[k]},C=c=>{const v=z(c);return v.value.setPosition(c),v},X=c=>{t.firstValue=c??e.min,I(e.range?[n.value,g.value]:c??e.min)},P=c=>{t.secondValue=c,e.range&&I([n.value,g.value])},I=c=>{u(re,c),u(xe,c)},x=async()=>{await me(),u(ze,e.range?[n.value,g.value]:e.modelValue)},L=c=>{var k,q,_,G;if(V.value||t.dragging)return;S();let v=0;if(e.vertical){const ae=((q=(k=c.touches)==null?void 0:k.item(0))==null?void 0:q.clientY)??c.clientY;v=(d.value.getBoundingClientRect().bottom-ae)/t.sliderSize*100}else v=((((G=(_=c.touches)==null?void 0:_.item(0))==null?void 0:G.clientX)??c.clientX)-d.value.getBoundingClientRect().left)/t.sliderSize*100;if(!(v<0||v>100))return C(v)};return{elFormItem:l,slider:d,firstButton:s,secondButton:o,sliderDisabled:V,minValue:n,maxValue:g,runwayStyle:O,barStyle:j,resetSize:S,setPosition:C,emitChange:x,onSliderWrapperPrevent:c=>{var v,k;((v=h.firstButton.value)!=null&&v.dragging||(k=h.secondButton.value)!=null&&k.dragging)&&c.preventDefault()},onSliderClick:c=>{L(c)&&x()},onSliderDown:async c=>{const v=L(c);v&&(await me(),v.value.onButtonDown(c))},onSliderMarkerDown:c=>{V.value||t.dragging||C(c)&&x()},setFirstValue:X,setSecondValue:P}},ot=(e,t,u,l)=>({stops:f(()=>{if(!e.showStops||e.min>e.max)return[];if(e.step==="mark"||e.step===0)return e.step===0&&ye("ElSlider","step should not be 0."),[];const o=Math.ceil((e.max-e.min)/e.step),h=100*e.step/(e.max-e.min),V=Array.from({length:o-1}).map((n,g)=>(g+1)*h);return e.range?V.filter(n=>n<100*(u.value-e.min)/(e.max-e.min)||n>100*(l.value-e.min)/(e.max-e.min)):V.filter(n=>n>100*(t.firstValue-e.min)/(e.max-e.min))}),getStopStyle:o=>e.vertical?{bottom:`${o}%`}:{left:`${o}%`}}),it=(e,t,u,l,d,s)=>{const o=n=>{d(re,n),d(xe,n)},h=()=>e.range?![u.value,l.value].every((n,g)=>n===t.oldValue[g]):e.modelValue!==t.oldValue,V=()=>{var g,p;e.min>e.max&&We("Slider","min should not be greater than max.");const n=e.modelValue;e.range&&se(n)?n[1]e.max?o([e.max,e.max]):n[0]e.max?o([n[0],e.max]):(t.firstValue=n[0],t.secondValue=n[1],h()&&(e.validateEvent&&((g=s==null?void 0:s.validate)==null||g.call(s,"change").catch(Me)),t.oldValue=n.slice())):!e.range&&K(n)&&!Number.isNaN(n)&&(ne.max?o(e.max):(t.firstValue=n,h()&&(e.validateEvent&&((p=s==null?void 0:s.validate)==null||p.call(s,"change").catch(Me)),t.oldValue=n)))};V(),de(()=>t.dragging,n=>{n||V()}),de(()=>e.modelValue,(n,g)=>{t.dragging||se(n)&&se(g)&&n.every((p,w)=>p===g[w])&&t.firstValue===n[0]&&t.secondValue===n[1]||V()},{deep:!0}),de(()=>[e.min,e.max],()=>{V()})},ut=(e,t,u)=>{const l=te(),d=te(!1),s=f(()=>t.value instanceof Function);return{tooltip:l,tooltipVisible:d,formatValue:f(()=>s.value&&t.value(e.modelValue)||e.modelValue),displayTooltip:Ce(()=>{u.value&&(d.value=!0)},50),hideTooltip:Ce(()=>{u.value&&(d.value=!1)},50)}},dt=(e,t,u)=>{const{disabled:l,min:d,max:s,step:o,showTooltip:h,persistent:V,precision:n,sliderSize:g,formatTooltip:p,emitChange:w,resetSize:O,updateDragging:j,markList:S}=$e(Ye),{tooltip:z,tooltipVisible:C,formatValue:X,displayTooltip:P,hideTooltip:I}=ut(e,p,h),x=te(),L=f(()=>`${(e.modelValue-d.value)/(s.value-d.value)*100}%`),A=f(()=>e.vertical?{bottom:L.value}:{left:L.value}),y=f(()=>o.value==="mark"&&S.value.length>0),B=()=>{t.hovering=!0,P()},H=()=>{t.hovering=!1,t.dragging||I()},c=r=>{l.value||(r.preventDefault(),J(r),window.addEventListener("mousemove",Q),window.addEventListener("touchmove",Q),window.addEventListener("mouseup",W),window.addEventListener("touchend",W),window.addEventListener("contextmenu",W),x.value.focus())},v=r=>{l.value||(t.newPosition=Number.parseFloat(L.value)+r/(s.value-d.value)*100,R(t.newPosition),w())},k=r=>{if(l.value||!S.value.length)return;const m=e.modelValue,b=Number.EPSILON,N=Math.abs(r);let i;if(r>0){const M=S.value.findIndex(E=>E.point>m+b);if(M!==-1){const E=Math.min(M+N-1,S.value.length-1);i=S.value[E].point}}else{let M=-1;for(let E=S.value.length-1;E>=0;E--)if(S.value[E].point{y.value?k(-1):K(o.value)&&v(-o.value)},_=()=>{y.value?k(1):K(o.value)&&v(o.value)},G=()=>{y.value?k(-4):K(o.value)&&v(-o.value*4)},ae=()=>{y.value?k(4):K(o.value)&&v(o.value*4)},ve=()=>{l.value||(R(0),w())},fe=()=>{l.value||(R(100),w())},ge=r=>{const m=Ue(r);let b=!0;switch(m){case F.left:case F.down:q();break;case F.right:case F.up:_();break;case F.home:ve();break;case F.end:fe();break;case F.pageDown:G();break;case F.pageUp:ae();break;default:b=!1;break}b&&r.preventDefault()},oe=r=>{let m,b;return r.type.startsWith("touch")?(b=r.touches[0].clientY,m=r.touches[0].clientX):(b=r.clientY,m=r.clientX),{clientX:m,clientY:b}},J=r=>{t.dragging=!0,t.isClick=!0;const{clientX:m,clientY:b}=oe(r);e.vertical?t.startY=b:t.startX=m,t.startPosition=Number.parseFloat(L.value),t.newPosition=t.startPosition},Q=r=>{if(t.dragging){t.isClick=!1,P(),O();let m;const{clientX:b,clientY:N}=oe(r);e.vertical?(t.currentY=N,m=(t.startY-t.currentY)/g.value*100):(t.currentX=b,m=(t.currentX-t.startX)/g.value*100),t.newPosition=t.startPosition+m,R(t.newPosition)}},W=()=>{t.dragging&&(setTimeout(()=>{t.dragging=!1,t.hovering||I(),t.isClick||R(t.newPosition),w()},0),window.removeEventListener("mousemove",Q),window.removeEventListener("touchmove",Q),window.removeEventListener("mouseup",W),window.removeEventListener("touchend",W),window.removeEventListener("contextmenu",W))},R=async r=>{if(r===null||Number.isNaN(+r))return;r=tt(r,0,100);let m;if(o.value==="mark")S.value.length===0?m=r<=50?d.value:s.value:m=S.value.reduce((b,N)=>Math.abs(N.position-r)t.dragging,r=>{j(r)}),ce(x,"touchstart",c,{passive:!1}),{disabled:l,button:x,tooltip:z,tooltipVisible:C,showTooltip:h,persistent:V,wrapperStyle:A,formatValue:X,handleMouseEnter:B,handleMouseLeave:H,onButtonDown:c,onKeyDown:ge,setPosition:R}},ct=Se({modelValue:{type:Number,default:0},vertical:Boolean,tooltipClass:String,placement:{type:String,values:Re,default:"top"}}),mt={[re]:e=>K(e)},vt=["tabindex"];var ft=ke({name:"ElSliderButton",__name:"button",props:ct,emits:mt,setup(e,{expose:t,emit:u}){const l=e,d=u,s=Ee("slider"),o=Pe({hovering:!1,dragging:!1,isClick:!1,startX:0,currentX:0,startY:0,currentY:0,startPosition:0,newPosition:0,oldValue:l.modelValue}),h=f(()=>p.value?w.value:!1),{disabled:V,button:n,tooltip:g,showTooltip:p,persistent:w,tooltipVisible:O,wrapperStyle:j,formatValue:S,handleMouseEnter:z,handleMouseLeave:C,onButtonDown:X,onKeyDown:P,setPosition:I}=dt(l,o,d),{hovering:x,dragging:L}=we(o);return t({onButtonDown:X,onKeyDown:P,setPosition:I,hovering:x,dragging:L}),(A,y)=>(T(),$("div",{ref_key:"button",ref:n,class:U([a(s).e("button-wrapper"),{hover:a(x),dragging:a(L)}]),style:D(a(j)),tabindex:a(V)?void 0:0,onMouseenter:y[0]||(y[0]=(...B)=>a(z)&&a(z)(...B)),onMouseleave:y[1]||(y[1]=(...B)=>a(C)&&a(C)(...B)),onMousedown:y[2]||(y[2]=(...B)=>a(X)&&a(X)(...B)),onFocus:y[3]||(y[3]=(...B)=>a(z)&&a(z)(...B)),onBlur:y[4]||(y[4]=(...B)=>a(C)&&a(C)(...B)),onKeydown:y[5]||(y[5]=(...B)=>a(P)&&a(P)(...B))},[Te(a(et),{ref_key:"tooltip",ref:g,visible:a(O),placement:A.placement,"fallback-placements":["top","bottom","right","left"],"stop-popper-mouse-event":!1,"popper-class":A.tooltipClass,disabled:!a(p),persistent:h.value},{content:pe(()=>[ee("span",null,Oe(a(S)),1)]),default:pe(()=>[ee("div",{class:U([a(s).e("button"),{hover:a(x),dragging:a(L)}])},null,2)]),_:1},8,["visible","placement","popper-class","disabled","persistent"])],46,vt))}}),Le=ft;const gt=Se({mark:{type:Z([String,Object]),default:void 0}});var bt=ke({name:"ElSliderMarker",props:gt,setup(e){const t=Ee("slider"),u=f(()=>Ne(e.mark)?e.mark:e.mark.label),l=f(()=>Ne(e.mark)?void 0:e.mark.style);return()=>je("div",{class:t.e("marks-text"),style:l.value},u.value)}});const ht=["id","role","aria-label","aria-labelledby"],Vt={key:1};var yt=ke({name:"ElSlider",__name:"slider",props:at,emits:lt,setup(e,{expose:t,emit:u}){const l=e,d=u,s=Ee("slider"),{t:o}=Ae(),h=Pe({firstValue:0,secondValue:0,oldValue:0,dragging:!1,sliderSize:1}),{elFormItem:V,slider:n,firstButton:g,secondButton:p,sliderDisabled:w,minValue:O,maxValue:j,runwayStyle:S,barStyle:z,resetSize:C,emitChange:X,onSliderWrapperPrevent:P,onSliderClick:I,onSliderDown:x,onSliderMarkerDown:L,setFirstValue:A,setSecondValue:y}=rt(l,h,d),{stops:B,getStopStyle:H}=ot(l,h,O,j),{inputId:c,isLabeledByFormItem:v}=Je(l,{formItemContext:V}),k=Qe(),q=f(()=>l.inputSize||k.value),_=f(()=>l.showInput&&!l.range&&l.step!=="mark"),G=f(()=>l.ariaLabel||o("el.slider.defaultLabel",{min:l.min,max:l.max})),ae=f(()=>l.range?l.rangeStartLabel||o("el.slider.defaultRangeStartLabel"):G.value),ve=f(()=>l.formatValueText?l.formatValueText(r.value):`${r.value}`),fe=f(()=>l.rangeEndLabel||o("el.slider.defaultRangeEndLabel")),ge=f(()=>l.formatValueText?l.formatValueText(m.value):`${m.value}`),oe=f(()=>[s.b(),s.m(k.value),s.is("vertical",l.vertical),{[s.m("with-input")]:_.value}]),J=st(l);it(l,h,O,j,d,V);const Q=f(()=>K(l.step)?l.step:1),W=f(()=>{const i=K(l.step)?l.step:1,M=[l.min,l.max,i].map(E=>{const le=`${E}`.split(".")[1];return le?le.length:0});return Math.max.apply(null,M)}),{sliderWrapper:R}=nt(l,h,C),{firstValue:r,secondValue:m,sliderSize:b}=we(h),N=i=>{h.dragging=i};return ce(R,"touchstart",P,{passive:!1}),ce(R,"touchmove",P,{passive:!1}),_e(Ye,{...we(l),sliderSize:b,disabled:w,precision:W,markList:J,emitChange:X,resetSize:C,updateDragging:N}),t({onSliderClick:I}),(i,M)=>{var E,le;return T(),$("div",{id:i.range?a(c):void 0,ref_key:"sliderWrapper",ref:R,class:U(oe.value),role:i.range?"group":void 0,"aria-label":i.range&&!a(v)?G.value:void 0,"aria-labelledby":i.range&&a(v)?(E=a(V))==null?void 0:E.labelId:void 0},[ee("div",{ref_key:"slider",ref:n,class:U([a(s).e("runway"),{"show-input":_.value},a(s).is("disabled",a(w))]),style:D(a(S)),onMousedown:M[0]||(M[0]=(...Y)=>a(x)&&a(x)(...Y)),onTouchstartPassive:M[1]||(M[1]=(...Y)=>a(x)&&a(x)(...Y))},[ee("div",{class:U(a(s).e("bar")),style:D(a(z))},null,6),Te(Le,{id:i.range?void 0:a(c),ref_key:"firstButton",ref:g,"model-value":a(r),vertical:i.vertical,"tooltip-class":i.tooltipClass,placement:i.placement,role:"slider","aria-label":i.range||!a(v)?ae.value:void 0,"aria-labelledby":!i.range&&a(v)?(le=a(V))==null?void 0:le.labelId:void 0,"aria-valuemin":i.min,"aria-valuemax":i.range?a(m):i.max,"aria-valuenow":a(r),"aria-valuetext":ve.value,"aria-orientation":i.vertical?"vertical":"horizontal","aria-disabled":a(w),"onUpdate:modelValue":a(A)},null,8,["id","model-value","vertical","tooltip-class","placement","aria-label","aria-labelledby","aria-valuemin","aria-valuemax","aria-valuenow","aria-valuetext","aria-orientation","aria-disabled","onUpdate:modelValue"]),i.range?(T(),be(Le,{key:0,ref_key:"secondButton",ref:p,"model-value":a(m),vertical:i.vertical,"tooltip-class":i.tooltipClass,placement:i.placement,role:"slider","aria-label":fe.value,"aria-valuemin":a(r),"aria-valuemax":i.max,"aria-valuenow":a(m),"aria-valuetext":ge.value,"aria-orientation":i.vertical?"vertical":"horizontal","aria-disabled":a(w),"onUpdate:modelValue":a(y)},null,8,["model-value","vertical","tooltip-class","placement","aria-label","aria-valuemin","aria-valuemax","aria-valuenow","aria-valuetext","aria-orientation","aria-disabled","onUpdate:modelValue"])):ie("v-if",!0),i.showStops?(T(),$("div",Vt,[(T(!0),$(ue,null,he(a(B),(Y,ne)=>(T(),$("div",{key:ne,class:U(a(s).e("stop")),style:D(a(H)(Y))},null,6))),128))])):ie("v-if",!0),a(J).length>0?(T(),$(ue,{key:2},[ee("div",null,[(T(!0),$(ue,null,he(a(J),(Y,ne)=>(T(),$("div",{key:ne,style:D(a(H)(Y.position)),class:U([a(s).e("stop"),a(s).e("marks-stop")])},null,6))),128))]),ee("div",{class:U(a(s).e("marks"))},[(T(!0),$(ue,null,he(a(J),(Y,ne)=>(T(),be(a(bt),{key:ne,mark:Y.mark,style:D(a(H)(Y.position)),onMousedown:Fe(St=>a(L)(Y.position),["stop"])},null,8,["mark","style","onMousedown"]))),128))],2)],64)):ie("v-if",!0)],38),_.value?(T(),be(a(Ze),{key:0,ref:"input","model-value":a(r),class:U(a(s).e("input")),step:Q.value,disabled:a(w),controls:i.showInputControls,min:i.min,max:i.max,precision:W.value,size:q.value,"onUpdate:modelValue":a(A),onChange:a(X)},null,8,["model-value","class","step","disabled","controls","min","max","precision","size","onUpdate:modelValue","onChange"])):ie("v-if",!0)],10,ht)}}}),wt=yt;const Lt=Ge(wt);export{Lt as E}; diff --git a/frontend/dist/assets/el-slider-KlqpaRgh.css b/frontend/dist/assets/el-slider-KlqpaRgh.css new file mode 100644 index 0000000..cbbc188 --- /dev/null +++ b/frontend/dist/assets/el-slider-KlqpaRgh.css @@ -0,0 +1 @@ +.el-slider{--el-slider-main-bg-color:var(--el-color-primary);--el-slider-runway-bg-color:var(--el-border-color-light);--el-slider-stop-bg-color:var(--el-color-white);--el-slider-disabled-color:var(--el-text-color-placeholder);--el-slider-border-radius:3px;--el-slider-height:6px;--el-slider-button-size:20px;--el-slider-button-wrapper-size:36px;--el-slider-button-wrapper-offset:-15px;align-items:center;width:100%;height:32px;display:flex}.el-slider__runway{height:var(--el-slider-height);background-color:var(--el-slider-runway-bg-color);border-radius:var(--el-slider-border-radius);cursor:pointer;flex:1;position:relative}.el-slider__runway.show-input{width:auto;margin-right:30px}.el-slider__runway.is-disabled{cursor:default}.el-slider__runway.is-disabled .el-slider__bar{background-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button{border-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button-wrapper:hover,.el-slider__runway.is-disabled .el-slider__button-wrapper.hover,.el-slider__runway.is-disabled .el-slider__button-wrapper.dragging{cursor:not-allowed}.el-slider__runway.is-disabled .el-slider__button:hover,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button.dragging{cursor:not-allowed;transform:scale(1)}.el-slider__input{flex-shrink:0;width:130px}.el-slider__bar{height:var(--el-slider-height);background-color:var(--el-slider-main-bg-color);border-top-left-radius:var(--el-slider-border-radius);border-bottom-left-radius:var(--el-slider-border-radius);position:absolute}.el-slider__button-wrapper{height:var(--el-slider-button-wrapper-size);width:var(--el-slider-button-wrapper-size);z-index:1;top:var(--el-slider-button-wrapper-offset);text-align:center;-webkit-user-select:none;user-select:none;background-color:#0000;outline:none;line-height:normal;position:absolute;transform:translate(-50%)}.el-slider__button-wrapper:after{content:"";vertical-align:middle;height:100%;display:inline-block}.el-slider__button-wrapper:hover,.el-slider__button-wrapper.hover{cursor:grab}.el-slider__button-wrapper.dragging{cursor:grabbing}.el-slider__button{width:var(--el-slider-button-size);height:var(--el-slider-button-size);vertical-align:middle;border:solid 2px var(--el-slider-main-bg-color);background-color:var(--el-color-white);box-sizing:border-box;transition:var(--el-transition-duration-fast);-webkit-user-select:none;user-select:none;border-radius:50%;display:inline-block}.el-slider__button:hover,.el-slider__button.hover,.el-slider__button.dragging{transform:scale(1.2)}.el-slider__button:hover,.el-slider__button.hover{cursor:grab}.el-slider__button.dragging{cursor:grabbing}.el-slider__stop{height:var(--el-slider-height);width:var(--el-slider-height);border-radius:var(--el-border-radius-circle);background-color:var(--el-slider-stop-bg-color);position:absolute;transform:translate(-50%)}.el-slider__marks{width:18px;height:100%;top:0;left:12px}.el-slider__marks-text{color:var(--el-color-info);white-space:pre;margin-top:15px;font-size:14px;position:absolute;transform:translate(-50%)}.el-slider.is-vertical{flex:0;width:auto;height:100%;display:inline-flex;position:relative}.el-slider.is-vertical .el-slider__runway{width:var(--el-slider-height);height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:var(--el-slider-height);border-radius:0 0 3px 3px;height:auto}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:var(--el-slider-button-wrapper-offset);transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;transform:translateY(50%)}.el-slider--large{height:40px}.el-slider--small{height:24px} diff --git a/frontend/dist/assets/el-space-Bcqwkggw.js b/frontend/dist/assets/el-space-Bcqwkggw.js new file mode 100644 index 0000000..5e242e4 --- /dev/null +++ b/frontend/dist/assets/el-space-Bcqwkggw.js @@ -0,0 +1 @@ +import{d as N,a as I,I as C,h as $,j as S,b as A,a1 as j,a6 as m,ak as v,y as x,s as d,an as g,x as P,bF as k,aj as V,J as B,R as h,l as G}from"./index-BKKvzUDD.js";import{i as z,a as O}from"./vnode-78qeDweP.js";const R=A({prefixCls:{type:String}}),w=N({name:"ElSpaceItem",props:R,setup(e,{slots:u}){const f=I("space"),i=S(()=>`${e.prefixCls||f.b()}__item`);return()=>C("div",{class:i.value},$(u,"default"))}}),E={small:8,default:12,large:16};function _(e){const u=I("space"),f=S(()=>[u.b(),u.m(e.direction),e.class]),i=x(0),n=x(0),y=S(()=>[e.wrap||e.fill?{flexWrap:"wrap"}:{},{alignItems:e.alignment},{rowGap:`${n.value}px`,columnGap:`${i.value}px`},e.style]),o=S(()=>e.fill?{flexGrow:1,minWidth:`${e.fillRatio}%`}:{});return j(()=>{const{size:t="small",wrap:a,direction:r,fill:c}=e;if(m(t)){const[s=0,l=0]=t;i.value=s,n.value=l}else{let s;v(t)?s=t:s=E[t||"small"]||E.small,(a||c)&&r==="horizontal"?i.value=n.value=s:r==="horizontal"?(i.value=s,n.value=0):(n.value=s,i.value=0)}}),{classes:f,containerStyle:y,itemStyle:o}}const F=A({direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},class:{type:h([String,Object,Array]),default:""},style:{type:h([String,Array,Object,Boolean]),default:""},alignment:{type:h(String),default:"center"},prefixCls:{type:String},spacer:{type:h([Object,String,Number,Array]),default:null,validator:e=>g(e)||v(e)||B(e)},wrap:Boolean,fill:Boolean,fillRatio:{type:Number,default:100},size:{type:[String,Array,Number],values:V,validator:e=>v(e)||m(e)&&e.length===2&&e.every(v)}}),T=N({name:"ElSpace",props:F,setup(e,{slots:u}){const{classes:f,containerStyle:i,itemStyle:n}=_(e);function y(o,t="",a=[]){const{prefixCls:r}=e;return o.forEach((c,s)=>{z(c)?m(c.children)&&c.children.forEach((l,p)=>{z(l)&&m(l.children)?y(l.children,`${t+p}-`,a):g(l)&&(l==null?void 0:l.type)===k?a.push(l):a.push(d(w,{style:n.value,prefixCls:r,key:`nested-${t+p}`},{default:()=>[l]},12,["style","prefixCls"]))}):O(c)&&a.push(d(w,{style:n.value,prefixCls:r,key:`LoopKey${t+s}`},{default:()=>[c]},12,["style","prefixCls"]))}),a}return()=>{const{spacer:o,direction:t}=e,a=$(u,"default",{key:0},()=>[]);if((a.children??[]).length===0)return null;if(m(a.children)){let r=y(a.children);if(o){const c=r.length-1;r=r.reduce((s,l,p)=>{const b=[...s,l];return p!==c&&b.push(d("span",{style:[n.value,t==="vertical"?"width: 100%":null],key:p},[g(o)?o:P(o,1)],4)),b},[])}return d("div",{class:f.value,style:i.value},r,6)}return a.children}}}),L=G(T);export{L as E}; diff --git a/frontend/dist/assets/el-space-CzNlr7lQ.css b/frontend/dist/assets/el-space-CzNlr7lQ.css new file mode 100644 index 0000000..785320f --- /dev/null +++ b/frontend/dist/assets/el-space-CzNlr7lQ.css @@ -0,0 +1 @@ +.el-space{vertical-align:top;display:inline-flex}.el-space__item{flex-wrap:wrap;display:flex}.el-space__item>*{flex:1}.el-space--vertical{flex-direction:column} diff --git a/frontend/dist/assets/el-switch-DbCDiaMc.js b/frontend/dist/assets/el-switch-DbCDiaMc.js new file mode 100644 index 0000000..7fde1f5 --- /dev/null +++ b/frontend/dist/assets/el-switch-DbCDiaMc.js @@ -0,0 +1 @@ +import{k as S,J as N,ak as P,b as Q,i as V,R as X,d as Y,a as Z,y as p,D as F,aK as L,G as _,o as a,c as v,q as x,t as ee,f as i,n as d,h as b,e as o,w as r,r as k,E as f,g as s,aa as T,s as ae,by as te,al as ie,aL as ne,aT as ce,j as m,P as le,aJ as M,C as se,am as oe,aU as ue,l as ve}from"./index-BKKvzUDD.js";import{I as B,C as A,U as $}from"./raf-C-x62Pcl.js";import{b as de,e as re,d as fe,c as me}from"./index-BjEW7-SA.js";import{i as he}from"./validator-Fn0bm4xU.js";import{u as ye}from"./index-GAnQrJsQ.js";const be=Q({modelValue:{type:[Boolean,String,Number],default:!1},disabled:{type:Boolean,default:void 0},loading:Boolean,size:{type:String,validator:he},width:{type:[String,Number],default:""},inlinePrompt:Boolean,inactiveActionIcon:{type:V},activeActionIcon:{type:V},activeIcon:{type:V},inactiveIcon:{type:V},activeText:{type:String,default:""},inactiveText:{type:String,default:""},activeValue:{type:[Boolean,String,Number],default:!0},inactiveValue:{type:[Boolean,String,Number],default:!1},name:{type:String,default:""},validateEvent:{type:Boolean,default:!0},beforeChange:{type:X(Function)},id:String,tabindex:{type:[String,Number]},...ye(["ariaLabel"])}),ke={[$]:e=>S(e)||N(e)||P(e),[A]:e=>S(e)||N(e)||P(e),[B]:e=>S(e)||N(e)||P(e)},ge=["id","aria-checked","aria-disabled","aria-label","name","true-value","false-value","disabled","tabindex"],Ie=["aria-hidden"],we={key:1},Ve={key:1},Te=["aria-hidden"],E="ElSwitch";var Ee=Y({name:E,__name:"switch",props:be,emits:ke,setup(e,{expose:O,emit:U}){const c=e,h=U,{formItem:y}=de(),R=re(),n=Z("switch"),{inputId:G}=fe(c,{formItemContext:y}),I=me(m(()=>{if(c.loading)return!0})),D=p(c.modelValue!==!1),g=ce(),J=m(()=>[n.b(),n.m(R.value),n.is("disabled",I.value),n.is("checked",l.value)]),j=m(()=>[n.e("label"),n.em("label","left"),n.is("active",!l.value)]),q=m(()=>[n.e("label"),n.em("label","right"),n.is("active",l.value)]),H=m(()=>({width:oe(c.width)}));F(()=>c.modelValue,()=>{D.value=!0});const z=m(()=>D.value?c.modelValue:!1),l=m(()=>z.value===c.activeValue);[c.activeValue,c.inactiveValue].includes(z.value)||(L(E,"model-value must be active-value or inactive-value"),h($,c.inactiveValue),h(A,c.inactiveValue),h(B,c.inactiveValue)),F(l,t=>{var u;g.value.checked=t,c.validateEvent&&((u=y==null?void 0:y.validate)==null||u.call(y,"change").catch(ue))});const w=()=>{const t=l.value?c.inactiveValue:c.activeValue;h($,t),h(A,t),h(B,t),le(()=>{g.value.checked=l.value})},K=()=>{if(I.value)return;const{beforeChange:t}=c;if(!t){w();return}const u=t();[M(u),S(u)].includes(!0)||se(E,"beforeChange must return type `Promise` or `boolean`"),M(u)?u.then(C=>{C&&w()}).catch(C=>{L(E,`some error occurred: ${C}`)}):u&&w()},W=()=>{var t,u;(u=(t=g.value)==null?void 0:t.focus)==null||u.call(t)};return _(()=>{g.value.checked=l.value}),O({focus:W,checked:l}),(t,u)=>(a(),v("div",{class:d(J.value),onClick:ne(K,["prevent"])},[x("input",{id:i(G),ref_key:"input",ref:g,class:d(i(n).e("input")),type:"checkbox",role:"switch","aria-checked":l.value,"aria-disabled":i(I),"aria-label":e.ariaLabel,name:e.name,"true-value":e.activeValue,"false-value":e.inactiveValue,disabled:i(I),tabindex:e.tabindex,onChange:w,onKeydown:ee(K,["enter"])},null,42,ge),!e.inlinePrompt&&(e.inactiveIcon||e.inactiveText||t.$slots.inactive)?(a(),v("span",{key:0,class:d(j.value)},[b(t.$slots,"inactive",{},()=>[e.inactiveIcon?(a(),o(i(f),{key:0},{default:r(()=>[(a(),o(k(e.inactiveIcon)))]),_:1})):s("v-if",!0),!e.inactiveIcon&&e.inactiveText?(a(),v("span",{key:1,"aria-hidden":l.value},T(e.inactiveText),9,Ie)):s("v-if",!0)])],2)):s("v-if",!0),x("span",{class:d(i(n).e("core")),style:ie(H.value)},[e.inlinePrompt?(a(),v("div",{key:0,class:d(i(n).e("inner"))},[l.value?(a(),v("div",{key:1,class:d(i(n).e("inner-wrapper"))},[b(t.$slots,"active",{},()=>[e.activeIcon?(a(),o(i(f),{key:0},{default:r(()=>[(a(),o(k(e.activeIcon)))]),_:1})):s("v-if",!0),!e.activeIcon&&e.activeText?(a(),v("span",Ve,T(e.activeText),1)):s("v-if",!0)])],2)):(a(),v("div",{key:0,class:d(i(n).e("inner-wrapper"))},[b(t.$slots,"inactive",{},()=>[e.inactiveIcon?(a(),o(i(f),{key:0},{default:r(()=>[(a(),o(k(e.inactiveIcon)))]),_:1})):s("v-if",!0),!e.inactiveIcon&&e.inactiveText?(a(),v("span",we,T(e.inactiveText),1)):s("v-if",!0)])],2))],2)):s("v-if",!0),x("div",{class:d(i(n).e("action"))},[e.loading?(a(),o(i(f),{key:0,class:d(i(n).is("loading"))},{default:r(()=>[ae(i(te))]),_:1},8,["class"])):l.value?b(t.$slots,"active-action",{key:1},()=>[e.activeActionIcon?(a(),o(i(f),{key:0},{default:r(()=>[(a(),o(k(e.activeActionIcon)))]),_:1})):s("v-if",!0)]):l.value?s("v-if",!0):b(t.$slots,"inactive-action",{key:2},()=>[e.inactiveActionIcon?(a(),o(i(f),{key:0},{default:r(()=>[(a(),o(k(e.inactiveActionIcon)))]),_:1})):s("v-if",!0)])],2)],6),!e.inlinePrompt&&(e.activeIcon||e.activeText||t.$slots.active)?(a(),v("span",{key:1,class:d(q.value)},[b(t.$slots,"active",{},()=>[e.activeIcon?(a(),o(i(f),{key:0},{default:r(()=>[(a(),o(k(e.activeIcon)))]),_:1})):s("v-if",!0),!e.activeIcon&&e.activeText?(a(),v("span",{key:1,"aria-hidden":!l.value},T(e.activeText),9,Te)):s("v-if",!0)])],2)):s("v-if",!0)],2))}}),Se=Ee;const Ae=ve(Se);export{Ae as E}; diff --git a/frontend/dist/assets/el-switch-DpR9-s4E.css b/frontend/dist/assets/el-switch-DpR9-s4E.css new file mode 100644 index 0000000..d74a39f --- /dev/null +++ b/frontend/dist/assets/el-switch-DpR9-s4E.css @@ -0,0 +1 @@ +.el-switch{--el-switch-on-color:var(--el-color-primary);--el-switch-off-color:var(--el-border-color);vertical-align:middle;align-items:center;height:32px;font-size:14px;line-height:20px;display:inline-flex;position:relative}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{transition:var(--el-transition-duration-fast);cursor:pointer;vertical-align:middle;height:20px;color:var(--el-text-color-primary);font-size:14px;font-weight:500;display:inline-block}.el-switch__label.is-active{color:var(--el-color-primary)}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{font-size:14px;line-height:1;display:inline-block}.el-switch__label .el-icon{height:inherit}.el-switch__label .el-icon svg{vertical-align:middle}.el-switch__input{opacity:0;width:0;height:0;margin:0;position:absolute}.el-switch__input:focus-visible~.el-switch__core{outline:2px solid var(--el-switch-on-color);outline-offset:1px}.el-switch__core{border:1px solid var(--el-switch-border-color,var(--el-switch-off-color));box-sizing:border-box;background:var(--el-switch-off-color);cursor:pointer;min-width:40px;height:20px;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration);border-radius:10px;outline:none;align-items:center;display:inline-flex;position:relative}.el-switch__core .el-switch__inner{width:100%;transition:all var(--el-transition-duration);justify-content:center;align-items:center;height:16px;padding:0 4px 0 18px;display:flex;overflow:hidden}.el-switch__core .el-switch__inner-wrapper{color:var(--el-color-white);-webkit-user-select:none;user-select:none;text-overflow:ellipsis;white-space:nowrap;align-items:center;font-size:12px;display:flex;overflow:hidden}.el-switch__core .el-switch__action{border-radius:var(--el-border-radius-circle);transition:all var(--el-transition-duration);background-color:var(--el-color-white);width:16px;height:16px;color:var(--el-switch-off-color);justify-content:center;align-items:center;display:flex;position:absolute;left:1px}.el-switch.is-checked .el-switch__core{border-color:var(--el-switch-border-color,var(--el-switch-on-color));background-color:var(--el-switch-on-color)}.el-switch.is-checked .el-switch__core .el-switch__action{color:var(--el-switch-on-color);left:calc(100% - 17px)}.el-switch.is-checked .el-switch__core .el-switch__inner{padding:0 18px 0 4px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter-from,.el-switch .label-fade-leave-active{opacity:0}.el-switch--large{height:40px;font-size:14px;line-height:24px}.el-switch--large .el-switch__label{height:24px;font-size:14px}.el-switch--large .el-switch__label *{font-size:14px}.el-switch--large .el-switch__core{border-radius:12px;min-width:50px;height:24px}.el-switch--large .el-switch__core .el-switch__inner{height:20px;padding:0 6px 0 22px}.el-switch--large .el-switch__core .el-switch__action{width:20px;height:20px}.el-switch--large.is-checked .el-switch__core .el-switch__action{left:calc(100% - 21px)}.el-switch--large.is-checked .el-switch__core .el-switch__inner{padding:0 22px 0 6px}.el-switch--small{height:24px;font-size:12px;line-height:16px}.el-switch--small .el-switch__label{height:16px;font-size:12px}.el-switch--small .el-switch__label *{font-size:12px}.el-switch--small .el-switch__core{border-radius:8px;min-width:30px;height:16px}.el-switch--small .el-switch__core .el-switch__inner{height:12px;padding:0 2px 0 14px}.el-switch--small .el-switch__core .el-switch__action{width:12px;height:12px}.el-switch--small.is-checked .el-switch__core .el-switch__action{left:calc(100% - 13px)}.el-switch--small.is-checked .el-switch__core .el-switch__inner{padding:0 14px 0 2px} diff --git a/frontend/dist/assets/el-tab-pane-DliV6btA.js b/frontend/dist/assets/el-tab-pane-DliV6btA.js new file mode 100644 index 0000000..3ef54a6 --- /dev/null +++ b/frontend/dist/assets/el-tab-pane-DliV6btA.js @@ -0,0 +1 @@ +import{d as Y,I as Ie,bY as U,G as _e,aT as se,an as Ue,bZ as Ke,b as q,a5 as le,R as j,B as ue,C as de,a as J,D,a7 as oe,H as Re,o as xe,c as Ee,al as He,n as we,f as K,g as Pe,y as _,j as x,U as X,P as G,b_ as ye,aX as je,s as g,E as H,bs as Ge,T as qe,b6 as Je,V as re,W as $,b$ as Ze,c0 as Qe,h as ie,a_ as et,J as tt,ak as at,N as Be,F as nt,bl as st,z as lt,c1 as ot,K as rt,L as it,l as ct,ab as ut}from"./index-BKKvzUDD.js";import{c as dt,r as ce,U as Oe}from"./raf-C-x62Pcl.js";import{f as ft}from"./vnode-78qeDweP.js";import{i as te}from"./el-scrollbar-ClJnvz-9.js";import{c as ae}from"./el-select-Dl-FRZQd.js";import{i as vt}from"./el-popper-D6_hxRbQ.js";import{c as ke}from"./clamp-CbbY8h6F.js";import{o as bt}from"./omit-BTSq4AYh.js";const ht=(e,s,r)=>ft(e.subTree).filter(c=>{var t;return Ue(c)&&((t=c.type)==null?void 0:t.name)===s&&!!c.component}).map(c=>c.component.uid).map(c=>r[c]).filter(c=>!!c),pt=(e,s)=>{const r=se({}),c=se([]),t=new WeakMap,y=u=>{r.value[u.uid]=u,U(r),_e(()=>{const l=u.getVnode().el,i=l.parentNode;if(!t.has(i)){t.set(i,[]);const d=i.insertBefore.bind(i);i.insertBefore=(a,T)=>(t.get(i).some(b=>a===b||T===b)&&U(r),d(a,T))}t.get(i).push(l)})},N=u=>{delete r.value[u.uid],U(r);const l=u.getVnode().el,i=l.parentNode,d=t.get(i),a=d.indexOf(l);d.splice(a,1)},h=()=>{c.value=ht(e,s,r.value)},v=u=>u.render();return{children:c,addChild:y,removeChild:N,ChildrenSorter:Y({setup(u,{slots:l}){return()=>(h(),l.default?Ie(v,{render:l.default}):null)}})}},mt=({atEndEdge:e,atStartEdge:s,layout:r},c)=>{let t,y=0;const N=v=>v<0&&s.value||v>0&&e.value;return{hasReachedEdge:N,onWheel:v=>{dt(t);let{deltaX:u,deltaY:l}=v;v.shiftKey&&l!==0&&(u=l,l=0);const i=r.value==="horizontal"?u:l;N(i)||(y+=i,!Ke()&&i!==0&&v.preventDefault(),t=ce(()=>{c(y),y=0}))}}};const Te=e=>{let s,r;return e.type==="touchend"?(r=e.changedTouches[0].clientY,s=e.changedTouches[0].clientX):e.type.startsWith("touch")?(r=e.touches[0].clientY,s=e.touches[0].clientX):(r=e.clientY,s=e.clientX),{clientX:s,clientY:r}},Z=Symbol("tabsRootContextKey"),gt=q({tabs:{type:j(Array),default:()=>le([])},tabRefs:{type:j(Object),default:()=>le({})}}),Ce="ElTabBar";var yt=Y({name:Ce,__name:"tab-bar",props:gt,setup(e,{expose:s}){const r=e,c=ue(Z);c||de(Ce,"");const t=J("tabs"),y=_(),N=_(),h=x(()=>{var a;return X(c.props.defaultValue)||!!((a=N.value)!=null&&a.transform)}),v=()=>{let a=0,T=0;const b=["top","bottom"].includes(c.props.tabPosition)?"width":"height",E=b==="width"?"x":"y",P=E==="x"?"left":"top";return r.tabs.every(n=>{if(X(n.paneName))return!1;const p=r.tabRefs[n.paneName];if(!p)return!1;if(!n.active)return!0;a=p[`offset${ae(P)}`],T=p[`client${ae(b)}`];const S=window.getComputedStyle(p);return b==="width"&&(T-=Number.parseFloat(S.paddingLeft)+Number.parseFloat(S.paddingRight),a+=Number.parseFloat(S.paddingLeft)),!1}),{[b]:`${T}px`,transform:`translate${ae(E)}(${a}px)`}},u=()=>N.value=v(),l=[],i=()=>{l.forEach(a=>a.stop()),l.length=0,Object.values(r.tabRefs).forEach(a=>{l.push(oe(a,u))})};D(()=>r.tabs,async()=>{await G(),u(),i()},{immediate:!0});const d=oe(y,()=>u());return Re(()=>{l.forEach(a=>a.stop()),l.length=0,d.stop()}),s({ref:y,update:u}),(a,T)=>h.value?(xe(),Ee("div",{key:0,ref_key:"barRef",ref:y,class:we([K(t).e("active-bar"),K(t).is(K(c).props.tabPosition)]),style:He(N.value)},null,6)):Pe("v-if",!0)}}),Tt=yt;const Ct=5,Nt=({scrollable:e,navOffset:s,navSize:r,navContainerSize:c,isHorizontal:t})=>{const y=_(!1),N=x(()=>Math.max(r.value-c.value,0));let h,v;const u=d=>{if(!e.value||d.touches.length!==1)return;const{clientX:a,clientY:T}=Te(d);h={startX:a,startY:T,startOffset:s.value},v=void 0},l=d=>{if(!h||!e.value)return;if(d.touches.length!==1){i();return}const{clientX:a,clientY:T}=Te(d),b=h.startX-a,E=h.startY-T,P=t.value?b:E,n=t.value?E:b,p=Math.abs(P),S=Math.abs(n);if(vt(v)){if(Math.max(p,S)<=Ct)return;v=p>S}if(!v)return;const w=ke(h.startOffset+P,0,N.value);N.value<=0||w===s.value||!d.cancelable||(d.preventDefault(),y.value=!0,s.value=w)},i=()=>{h=void 0,v=void 0,y.value=!1};return{isTouchScrolling:y,handleTouchStart:u,handleTouchMove:l,handleTouchEnd:i}},St=q({panes:{type:j(Array),default:()=>le([])},currentName:{type:[String,Number],default:""},editable:Boolean,type:{type:String,values:["card","border-card",""],default:""},stretch:Boolean,tabindex:{type:[String,Number],default:void 0}}),_t={tabClick:(e,s,r)=>r instanceof Event,tabRemove:(e,s)=>s instanceof Event},Ne="ElTabNav",Rt=Y({name:Ne,props:St,emits:_t,setup(e,{expose:s,emit:r}){const c=ue(Z);c||de(Ne,"");const t=J("tabs"),y=Ze(),N=Qe(),h=_(),v=_(),u=_(),l=_({}),i=_(),d=_(!1),a=_(0),T=_(!1),b=_(!0),E=_(!1),P=se(),n=x(()=>["top","bottom"].includes(c.props.tabPosition)),p=x(()=>n.value?"width":"height"),S=x(()=>{const o=p.value==="width"?"X":"Y";return{transition:E.value||ze.value?"none":void 0,transform:`translate${o}(-${a.value}px)`}}),{width:w,height:z}=ye(h),{width:I,height:L}=ye(v,{width:0,height:0},{box:"border-box"}),B=x(()=>n.value?w.value:z.value),W=x(()=>n.value?I.value:L.value),{onWheel:Ae}=mt({atStartEdge:x(()=>a.value<=0),atEndEdge:x(()=>W.value-a.value<=B.value),layout:x(()=>n.value?"horizontal":"vertical")},o=>{a.value=ke(a.value+o,0,W.value-B.value)}),Me=o=>{E.value=!0,Ae(o),ce(()=>{E.value=!1})},{isTouchScrolling:ze,handleTouchStart:Ve,handleTouchMove:Fe,handleTouchEnd:fe}=Nt({scrollable:d,navOffset:a,navSize:W,navContainerSize:B,isHorizontal:n}),De=()=>{if(!h.value)return;const o=h.value.getBoundingClientRect()[p.value],m=a.value;m&&(a.value=m>o?m-o:0)},Le=()=>{if(!h.value||!v.value)return;const o=v.value.getBoundingClientRect()[p.value],m=h.value.getBoundingClientRect()[p.value],f=a.value;te(o-f,m)&&(a.value=o-f>m*2?f+m:o-m)},ve=async()=>{const o=v.value;if(!d.value||!u.value||!h.value||!o)return;await G();const m=l.value[e.currentName];if(!m)return;const f=h.value,C=m.getBoundingClientRect(),R=f.getBoundingClientRect(),V=R.left+1,A=R.right-1,F=o.getBoundingClientRect(),ee=n.value?F.width-R.width:F.height-R.height,M=a.value;let O=M;n.value?(C.leftA&&(O=M+C.right-A)):(C.topR.bottom&&(O=M+(C.bottom-R.bottom))),O=Math.max(O,0),a.value=Math.min(O,ee)},be=()=>{var C;if(!v.value||!h.value)return;e.stretch&&((C=i.value)==null||C.update());const o=v.value.getBoundingClientRect()[p.value],m=h.value.getBoundingClientRect()[p.value],f=a.value;m0&&(a.value=0))},We=o=>{const m=re(o);let f=0;switch(m){case $.left:case $.up:f=-1;break;case $.right:case $.down:f=1;break;default:return}const C=Array.from(o.currentTarget.querySelectorAll("[role=tab]:not(.is-disabled)"));let R=C.indexOf(o.target)+f;R<0?R=C.length-1:R>=C.length&&(R=0),C[R].focus({preventScroll:!0}),C[R].click(),he()},he=()=>{b.value&&(T.value=!0)},Q=()=>T.value=!1,Xe=(o,m)=>{l.value[m]=o},Ye=async()=>{var o;await G(),(o=l.value[e.currentName])==null||o.focus({preventScroll:!0})};return D(y,o=>{o==="hidden"?b.value=!1:o==="visible"&&setTimeout(()=>b.value=!0,50)}),D(N,o=>{o?setTimeout(()=>b.value=!0,50):b.value=!1}),oe(u,()=>{ce(be)}),_e(()=>setTimeout(()=>ve(),0)),je(()=>be()),s({scrollToActiveTab:ve,removeFocus:Q,focusActiveTab:Ye,tabListRef:v,tabBarRef:i,scheduleRender:()=>U(P)}),()=>{const o=d.value?[g("span",{class:[t.e("nav-prev"),t.is("disabled",!d.value.prev)],onClick:De},[g(H,null,{default:()=>[g(Ge,null,null)]})]),g("span",{class:[t.e("nav-next"),t.is("disabled",!d.value.next)],onClick:Le},[g(H,null,{default:()=>[g(qe,null,null)]})])]:null,m=e.panes.map((f,C)=>{var pe,me;const R=f.uid,V=f.props.disabled,A=f.props.name??f.index??`${C}`,F=!V&&(f.isClosable||f.props.closable!==!1&&e.editable);f.index=`${C}`;const ee=F?g(H,{class:"is-icon-close",onClick:k=>r("tabRemove",f,k)},{default:()=>[g(Je,null,null)]}):null,M=((me=(pe=f.slots).label)==null?void 0:me.call(pe))||f.props.label,O=!V&&f.active?e.tabindex??c.props.tabindex:-1;return g("div",{ref:k=>Xe(k,A),class:[t.e("item"),t.is(c.props.tabPosition),t.is("active",f.active),t.is("disabled",V),t.is("closable",F),t.is("focus",T.value)],id:`tab-${A}`,key:`tab-${R}`,"aria-controls":`pane-${A}`,role:"tab","aria-selected":f.active,tabindex:O,onFocus:()=>he(),onBlur:()=>Q(),onClick:k=>{Q(),r("tabClick",f,A,k)},onKeydown:k=>{const ge=re(k);F&&(ge===$.delete||ge===$.backspace)&&r("tabRemove",f,k)}},[M,ee])});return P.value,g("div",{ref:u,class:[t.e("nav-wrap"),t.is("scrollable",!!d.value),t.is(c.props.tabPosition)]},[o,g("div",{class:t.e("nav-scroll"),ref:h},[e.panes.length>0?g("div",{class:[t.e("nav"),t.is(c.props.tabPosition),t.is("stretch",e.stretch&&["top","bottom"].includes(c.props.tabPosition))],ref:v,style:S.value,role:"tablist",onKeydown:We,onWheel:Me,onTouchstart:Ve,onTouchmove:Fe,onTouchend:fe,onTouchcancel:fe},[e.type?null:g(Tt,{ref:i,tabs:[...e.panes],tabRefs:l.value},null),m]):null])])}}}),xt=q({type:{type:String,values:["card","border-card",""],default:""},closable:Boolean,addable:Boolean,modelValue:{type:[String,Number]},defaultValue:{type:[String,Number]},editable:Boolean,tabPosition:{type:String,values:["top","right","bottom","left"],default:"top"},beforeLeave:{type:j(Function),default:()=>!0},stretch:Boolean,tabindex:{type:[String,Number],default:0}}),ne=e=>tt(e)||at(e),Et={[Oe]:e=>ne(e),tabClick:(e,s)=>s instanceof Event,tabChange:e=>ne(e),edit:(e,s)=>["remove","add"].includes(s),tabRemove:e=>ne(e),tabAdd:()=>!0},wt=Y({name:"ElTabs",props:xt,emits:Et,setup(e,{emit:s,slots:r,expose:c}){const t=J("tabs"),y=x(()=>["left","right"].includes(e.tabPosition)),{children:N,addChild:h,removeChild:v,ChildrenSorter:u}=pt(Be(),"ElTabPane"),l=_(),i=_((X(e.modelValue)?e.defaultValue:e.modelValue)??"0"),d=async(n,p=!1)=>{var S,w,z,I;if(!(i.value===n||X(n)))try{let L;if(e.beforeLeave){const B=e.beforeLeave(n,i.value);L=B instanceof Promise?await B:B}else L=!0;if(L!==!1){const B=(S=N.value.find(W=>W.paneName===i.value))==null?void 0:S.isFocusInsidePane();i.value=n,p&&(s(Oe,n),s("tabChange",n)),(z=(w=l.value)==null?void 0:w.removeFocus)==null||z.call(w),B&&((I=l.value)==null||I.focusActiveTab())}}catch{}},a=(n,p,S)=>{n.props.disabled||(s("tabClick",n,S),d(p,!0))},T=(n,p)=>{n.props.disabled||X(n.props.name)||(p.stopPropagation(),s("edit",n.props.name,"remove"),s("tabRemove",n.props.name))},b=()=>{s("edit",void 0,"add"),s("tabAdd")},E=n=>{const p=re(n);[$.enter,$.numpadEnter].includes(p)&&b()},P=n=>{const p=n.el.firstChild,S=["bottom","right"].includes(e.tabPosition)?n.children[0].el:n.children[1].el;p!==S&&p.before(S)};return D(()=>e.modelValue,n=>d(n)),D(i,async()=>{var n;await G(),(n=l.value)==null||n.scrollToActiveTab()}),nt(Z,{props:e,currentName:i,registerPane:h,unregisterPane:v,nav$:l}),c({currentName:i,get tabNavRef(){return bt(l.value,["scheduleRender"])}}),()=>{const n=r["add-icon"],p=e.editable||e.addable?g("div",{class:[t.e("new-tab"),y.value&&t.e("new-tab-vertical")],tabindex:e.tabindex,onClick:b,onKeydown:E},[n?ie(r,"add-icon"):g(H,{class:t.is("icon-plus")},{default:()=>[g(et,null,null)]})]):null,S=()=>g(Rt,{ref:l,currentName:i.value,editable:e.editable,type:e.type,panes:N.value,stretch:e.stretch,onTabClick:a,onTabRemove:T},null),w=g("div",{class:[t.e("header"),y.value&&t.e("header-vertical"),t.is(e.tabPosition)]},[g(u,null,{default:S,$stable:!0}),p]),z=g("div",{class:t.e("content")},[ie(r,"default")]);return g("div",{class:[t.b(),t.m(e.tabPosition),{[t.m("card")]:e.type==="card",[t.m("border-card")]:e.type==="border-card"}],onVnodeMounted:P,onVnodeUpdated:P},[z,w])}}}),Pt=q({label:{type:String,default:""},name:{type:[String,Number]},closable:{type:Boolean,default:void 0},disabled:Boolean,lazy:Boolean}),Bt=["id","aria-hidden","aria-labelledby"],Se="ElTabPane";var Ot=Y({name:Se,__name:"tab-pane",props:Pt,setup(e){const s=e,r=Be(),c=st(),t=ue(Z);t||de(Se,"usage: ");const y=J("tab-pane"),N=_(),h=_(),v=x(()=>s.closable??t.props.closable),u=x(()=>t.currentName.value===(s.name??h.value)),l=_(u.value),i=x(()=>s.name??h.value),d=x(()=>!s.lazy||l.value||u.value),a=()=>{var b;return(b=N.value)==null?void 0:b.contains(document.activeElement)};D(u,b=>{b&&(l.value=!0)});const T=lt({uid:r.uid,getVnode:()=>r.vnode,slots:c,props:s,paneName:i,active:u,index:h,isClosable:v,isFocusInsidePane:a});return t.registerPane(T),Re(()=>{t.unregisterPane(T)}),ot(()=>{var b;c.label&&((b=t.nav$.value)==null||b.scheduleRender())}),(b,E)=>d.value?rt((xe(),Ee("div",{key:0,id:`pane-${i.value}`,ref_key:"paneRef",ref:N,class:we(K(y).b()),role:"tabpanel","aria-hidden":!u.value,"aria-labelledby":`tab-${i.value}`},[ie(b.$slots,"default")],10,Bt)),[[it,u.value]]):Pe("v-if",!0)}}),$e=Ot;const Lt=ct(wt,{TabPane:$e}),Wt=ut($e);export{Wt as E,Lt as a}; diff --git a/frontend/dist/assets/el-tab-pane-LzsQQ_QK.css b/frontend/dist/assets/el-tab-pane-LzsQQ_QK.css new file mode 100644 index 0000000..8ada4a9 --- /dev/null +++ b/frontend/dist/assets/el-tab-pane-LzsQQ_QK.css @@ -0,0 +1 @@ +.el-tabs{--el-tabs-header-height:40px;display:flex}.el-tabs__header{justify-content:space-between;align-items:center;margin:0 0 15px;padding:0;display:flex;position:relative}.el-tabs__header-vertical{flex-direction:column}.el-tabs__active-bar{background-color:var(--el-color-primary);z-index:1;height:2px;transition:width var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),transform var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);list-style:none;position:absolute;bottom:0;left:0}.el-tabs__active-bar.is-bottom{bottom:auto}.el-tabs__new-tab{border:1px solid var(--el-border-color);text-align:center;width:20px;height:20px;color:var(--el-text-color-primary);cursor:pointer;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;margin:10px 0 10px 10px;font-size:12px;line-height:20px;transition:all .15s;display:flex}.el-tabs__new-tab .is-icon-plus{height:inherit;width:inherit;transform:scale(.8)}.el-tabs__new-tab .is-icon-plus svg{vertical-align:middle}.el-tabs__new-tab:hover{color:var(--el-color-primary)}.el-tabs__new-tab-vertical{margin-left:0}.el-tabs__nav-wrap{flex:auto;margin-bottom:-1px;position:relative;overflow:hidden}.el-tabs__nav-wrap:after{content:"";background-color:var(--el-border-color-light);width:100%;height:2px;z-index:var(--el-index-normal);position:absolute;bottom:0;left:0}.el-tabs__nav-wrap.is-bottom:after{top:0;bottom:auto}.el-tabs__nav-wrap.is-scrollable{box-sizing:border-box;padding:0 20px}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{cursor:pointer;color:var(--el-text-color-secondary);text-align:center;width:20px;font-size:12px;line-height:44px;position:absolute}.el-tabs__nav-next.is-disabled,.el-tabs__nav-prev.is-disabled{color:var(--el-text-color-disabled);cursor:not-allowed}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;transition:transform var(--el-transition-duration);float:left;z-index:calc(var(--el-index-normal) + 1);display:flex;position:relative}.el-tabs__nav.is-stretch{min-width:100%;display:flex}.el-tabs__nav.is-stretch>*{text-align:center;flex:1}.el-tabs__item{height:var(--el-tabs-header-height);box-sizing:border-box;font-size:var(--el-font-size-base);color:var(--el-text-color-primary);justify-content:center;align-items:center;padding:0 20px;font-weight:500;list-style:none;display:flex;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:none}.el-tabs__item:focus-visible{box-shadow:0 0 2px 2px var(--el-color-primary) inset;border-radius:3px}.el-tabs__item .is-icon-close{text-align:center;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);border-radius:50%;margin-left:5px}.el-tabs__item .is-icon-close:before{display:inline-block;transform:scale(.9)}.el-tabs__item .is-icon-close:hover{background-color:var(--el-text-color-placeholder);color:#fff}.el-tabs__item.is-active{color:var(--el-color-primary)}.el-tabs__item:hover{color:var(--el-color-primary);cursor:pointer}.el-tabs__item.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-tabs__content{flex-grow:1;position:relative;overflow:hidden}.el-tabs--top>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:0}.el-tabs--top>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom>.el-tabs__header .el-tabs__item:last-child{padding-right:0}.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--card>.el-tabs__header{border-bottom:1px solid var(--el-border-color-light);height:var(--el-tabs-header-height);box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid var(--el-border-color-light);box-sizing:border-box;border-bottom:none;border-radius:4px 4px 0 0}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .is-icon-close{transform-origin:100%;width:0;height:14px;font-size:12px;position:relative;right:-2px;overflow:hidden}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid #0000;border-left:1px solid var(--el-border-color-light);transition:color var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),padding var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);margin-top:-1px}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .is-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:var(--el-bg-color)}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .is-icon-close{width:14px}.el-tabs--border-card{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-light);margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);color:var(--el-text-color-secondary);border:1px solid #0000;margin-top:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child,.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:var(--el-color-primary);background-color:var(--el-bg-color-overlay);border-right-color:var(--el-border-color);border-left-color:var(--el-border-color)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:var(--el-disabled-text-color)}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom{flex-direction:column}.el-tabs--bottom .el-tabs__header.is-bottom{margin-top:10px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--el-border-color)}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid #0000}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--card>.el-tabs__header.is-left,.el-tabs--card>.el-tabs__header.is-right,.el-tabs--border-card>.el-tabs__header.is-left,.el-tabs--border-card>.el-tabs__header.is-right{border-bottom:none}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-scroll{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{width:2px;height:auto;top:0;bottom:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{text-align:center;cursor:pointer;width:100%;height:30px;line-height:30px}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev.is-disabled,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next.is-disabled,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev.is-disabled,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next.is-disabled,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev.is-disabled,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next.is-disabled,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev.is-disabled,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next.is-disabled{cursor:not-allowed}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{top:0;left:auto}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{bottom:0;right:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{width:2px;height:100%;top:0;bottom:auto}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{flex-direction:column}.el-tabs--left .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-left{justify-content:flex-end}.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-right{justify-content:flex-start}.el-tabs--left{flex-direction:row}.el-tabs--left .el-tabs__header.is-left{margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__active-bar.is-left{left:auto;right:0}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-left:none;border-right:1px solid var(--el-border-color-light);border-bottom:none;border-top:1px solid var(--el-border-color-light);text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid var(--el-border-color-light);border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:none;border-right-color:#fff}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-right:none;border-radius:4px 0 0 4px}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid var(--el-border-color)}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid #0000;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 #0000}.el-tabs--left>.el-tabs__content+.el-tabs__header{order:-1}.el-tabs--right .el-tabs__header.is-right{margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--el-border-color-light)}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid var(--el-border-color-light);border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left-color:#fff;border-right:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-left:none;border-radius:0 4px 4px 0}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid var(--el-border-color)}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid #0000;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 #0000}.el-tabs--top{flex-direction:column}.el-tabs--top>.el-tabs__content+.el-tabs__header{order:-1}.slideInRight-transition,.slideInLeft-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter var(--el-transition-duration)}.slideInRight-leave{animation:slideInRight-leave var(--el-transition-duration);position:absolute;left:0;right:0}.slideInLeft-enter{animation:slideInLeft-enter var(--el-transition-duration)}.slideInLeft-leave{animation:slideInLeft-leave var(--el-transition-duration);position:absolute;left:0;right:0}@keyframes slideInRight-enter{0%{opacity:0;transform-origin:0 0;transform:translate(100%)}to{opacity:1;transform-origin:0 0;transform:translate(0)}}@keyframes slideInRight-leave{0%{transform-origin:0 0;opacity:1;transform:translate(0)}to{transform-origin:0 0;opacity:0;transform:translate(100%)}}@keyframes slideInLeft-enter{0%{opacity:0;transform-origin:0 0;transform:translate(-100%)}to{opacity:1;transform-origin:0 0;transform:translate(0)}}@keyframes slideInLeft-leave{0%{transform-origin:0 0;opacity:1;transform:translate(0)}to{transform-origin:0 0;opacity:0;transform:translate(-100%)}} diff --git a/frontend/dist/assets/el-table-D8K5zLyz.js b/frontend/dist/assets/el-table-D8K5zLyz.js new file mode 100644 index 0000000..7de6d5f --- /dev/null +++ b/frontend/dist/assets/el-table-D8K5zLyz.js @@ -0,0 +1,14 @@ +import{cs as Kt,cw as yt,cn as wn,d4 as xl,cy as Sn,ct as xn,cF as En,cJ as Rn,d5 as Nn,ce as Et,cq as On,ci as al,d6 as Ln,cK as Fn,cr as Tn,aR as Mn,bC as ze,U as be,an as El,bF as Rl,M as Ze,ak as je,J as we,bd as Ce,C as Wn,k as $e,a6 as ie,s as xe,bB as sl,c2 as Nl,a3 as gt,cU as ol,y as O,N as he,f as S,D as ne,j as Y,aV as kn,a as Ee,aW as Ct,P as Ye,aB as Hn,bA as et,B as Le,d as De,aZ as An,S as $n,E as Bt,cb as Je,V as In,W as We,ai as ke,o as te,e as Ke,w as Ae,q as fe,n as G,h as Be,c as ye,ad as rl,x as Dt,aa as Pe,cO as Ol,G as lt,aX as zn,ah as Pt,$ as it,a0 as tt,bD as Kn,_ as vt,I as P,H as Vt,z as Bn,a1 as Rt,aS as il,a7 as ul,u as jt,K as wt,al as Qe,g as He,L as cl,F as Dn,T as Ll,by as Pn,aK as Vn,bl as jn,l as _n,ab as Yn}from"./index-BKKvzUDD.js";import{E as Fl,i as St}from"./el-scrollbar-ClJnvz-9.js";import{E as Tl,u as qn}from"./el-popper-D6_hxRbQ.js";import{c as Xn,k as Ml,a as Un,d as Gn,e as Qn,i as Jn}from"./_baseClone-B5RBzbh5.js";import{s as Zn,o as ea,i as ta,b as la}from"./index-GAnQrJsQ.js";import{b as na}from"./_baseIteratee-BAilevJ_.js";import{c as Wl}from"./castArray-5uErZEc3.js";import{d as pt}from"./debounce-ByXPNh5F.js";import{a as aa,E as mt}from"./el-checkbox-qGZ2-RM2.js";import{_ as sa}from"./index-CWUnzf90.js";import{r as oa}from"./raf-C-x62Pcl.js";import{e as ra}from"./index-BjEW7-SA.js";function ia(e,t){return Zn(ea(e,t,ta),e+"")}function ua(e,t,l){if(!Kt(l))return!1;var n=typeof t;return(n=="number"?yt(l)&&wn(t,l.length):n=="string"&&t in l)?xl(l[t],e):!1}function ca(e){return ia(function(t,l){var n=-1,a=l.length,u=a>1?l[a-1]:void 0,c=a>2?l[2]:void 0;for(u=e.length>3&&typeof u=="function"?(a--,u):void 0,c&&ua(l[0],l[1],c)&&(u=a<3?void 0:u,a=1),t=Object(t);++nIe},ie64:function(){return At.ie()&&zl},firefox:function(){return de()||Lt},opera:function(){return de()||Ft},webkit:function(){return de()||ut},safari:function(){return At.webkit()},chrome:function(){return de()||ct},windows:function(){return de()||Tt},osx:function(){return de()||dt},linux:function(){return de()||Mt},iphone:function(){return de()||kt},mobile:function(){return de()||kt||Ht||Wt||Bl},nativeApp:function(){return de()||Kl},android:function(){return de()||Wt},ipad:function(){return de()||Ht}},ba=At,wa=!!(typeof window<"u"&&window.document&&window.document.createElement),Sa={canUseDOM:wa},Dl=Sa,Pl;Dl.canUseDOM&&(Pl=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("","")!==!0);function xa(e,t){if(!Dl.canUseDOM||t&&!("addEventListener"in document))return!1;var l="on"+e,n=l in document;if(!n){var a=document.createElement("div");a.setAttribute(l,"return;"),n=typeof a[l]=="function"}return!n&&Pl&&e==="wheel"&&(n=document.implementation.hasFeature("Events.wheel","3.0")),n}var Ea=xa,fl=10,hl=40,gl=800;function Vl(e){var t=0,l=0,n=0,a=0;return"detail"in e&&(l=e.detail),"wheelDelta"in e&&(l=-e.wheelDelta/120),"wheelDeltaY"in e&&(l=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=l,l=0),n=t*fl,a=l*fl,"deltaY"in e&&(a=e.deltaY),"deltaX"in e&&(n=e.deltaX),(n||a)&&e.deltaMode&&(e.deltaMode==1?(n*=hl,a*=hl):(n*=gl,a*=gl)),n&&!t&&(t=n<1?-1:1),a&&!l&&(l=a<1?-1:1),{spinX:t,spinY:l,pixelX:n,pixelY:a}}Vl.getEventType=function(){return ba.firefox()?"DOMMouseScroll":Ea("wheel")?"wheel":"mousewheel"};var Ra=Vl;/** +* Checks if an event is supported in the current execution environment. +* +* NOTE: This will not work correctly for non-generic events such as `change`, +* `reset`, `load`, `error`, and `select`. +* +* Borrows from Modernizr. +* +* @param {string} eventNameSuffix Event name, e.g. "click". +* @param {?boolean} capture Check if the capture phase is supported. +* @return {boolean} True if the event is supported. +* @internal +* @license Modernizr 3.0.0pre (Custom Build) | MIT +*/const $t="_Mousewheel",vl=function(e,t){if(e&&e.addEventListener){jl(e);const l=function(n){const a=Ra(n);t&&Reflect.apply(t,this,[n,a])};e[$t]={wheelHandler:l},e.addEventListener("wheel",l,{passive:!0})}},jl=e=>{var t;(t=e._Mousewheel)!=null&&t.wheelHandler&&(e.removeEventListener("wheel",e[$t].wheelHandler),e[$t]=null)},pl={beforeMount(e,t){vl(e,t.value)},unmounted(e){jl(e)},updated(e,t){t.value!==t.oldValue&&vl(e,t.value)}},Na={data:{type:Array,default:()=>[]},size:Mn,width:[String,Number],height:[String,Number],maxHeight:[String,Number],fit:{type:Boolean,default:!0},stripe:Boolean,border:Boolean,rowKey:[String,Function],showHeader:{type:Boolean,default:!0},showSummary:Boolean,sumText:String,summaryMethod:Function,rowClassName:[String,Function],rowStyle:[Object,Function],cellClassName:[String,Function],cellStyle:[Object,Function],headerRowClassName:[String,Function],headerRowStyle:[Object,Function],headerCellClassName:[String,Function],headerCellStyle:[Object,Function],highlightCurrentRow:Boolean,currentRowKey:[String,Number],emptyText:String,expandRowKeys:Array,defaultExpandAll:Boolean,rowExpandable:{type:Function},defaultSort:Object,tooltipEffect:String,tooltipOptions:Object,spanMethod:Function,selectOnIndeterminate:{type:Boolean,default:!0},indent:{type:Number,default:16},treeProps:{type:Object,default:()=>({hasChildren:"hasChildren",children:"children",checkStrictly:!1})},lazy:Boolean,load:Function,style:{type:[String,Object,Array,Boolean],default:()=>({})},className:{type:String,default:""},tableLayout:{type:String,default:"fixed"},scrollbarAlwaysOn:Boolean,flexible:Boolean,showOverflowTooltip:{type:[Boolean,Object],default:void 0},tooltipFormatter:Function,appendFilterPanelTo:String,scrollbarTabindex:{type:[Number,String],default:void 0},allowDragLastColumn:{type:Boolean,default:!0},preserveExpandedContent:Boolean,nativeScrollbar:Boolean};let Oa=1,La=1;const Fa=e=>`${e}-table_${Oa++}`,Ta=e=>`${e}_column_${La++}`,xt=function(e){var t;return(t=e.target)==null?void 0:t.closest("td")},Ma=function(e,t,l,n,a){if(!t&&!n&&(!a||ie(a)&&!a.length))return e;we(l)?l=l==="descending"?-1:1:l=l&&l<0?-1:1;const u=n?null:function(s,o){return a?Al(Wl(a),r=>we(r)?ol(s,r):r(s,o,e)):(t!=="$key"&>(s)&&"$value"in s&&(s=s.$value),[gt(s)?t?ol(s,t):null:s])},c=function(s,o){var r,i,d,p,h;if(n)return n(s.value,o.value);for(let v=0,b=((r=s.key)==null?void 0:r.length)??0;v((h=o.key)==null?void 0:h[v]))return 1}return 0};return e.map((s,o)=>({value:s,index:o,key:u?u(s,o):null})).sort((s,o)=>{let r=c(s,o);return r||(r=s.index-o.index),r*+l}).map(s=>s.value)},_l=function(e,t){let l=null;return e.columns.forEach(n=>{n.id===t&&(l=n)}),l},Wa=function(e,t){let l=null;for(let n=0;n{if(!e)throw new Error("Row is required when get row identity");if(we(t)){if(!t.includes("."))return`${e[t]}`;const l=t.split(".");let n=e;for(const a of l)n=n[a];return`${n}`}else if(Ce(t))return t.call(null,e);return""},_e=function(e,t,l=!1,n="children"){const a=e||[],u={};return a.forEach((c,s)=>{if(u[U(c,t)]={row:c,index:s},l){const o=c[n];ie(o)&&Object.assign(u,_e(o,t,!0,n))}}),u};function ka(e,t){const l={};let n;for(n in e)l[n]=e[n];for(n in t)if(ze(t,n)){const a=t[n];be(a)||(l[n]=a)}return l}function _t(e){return e===""||be(e)||(e=Number.parseInt(e,10),Number.isNaN(e)&&(e="")),e}function Yl(e){return e===""||be(e)||(e=_t(e),Number.isNaN(e)&&(e=80)),e}function Ha(e){return je(e)?e:we(e)?/^\d+(?:px)?$/.test(e)?Number.parseInt(e,10):e:null}function Aa(...e){return e.length===0?t=>t:e.length===1?e[0]:e.reduce((t,l)=>(...n)=>t(l(...n)))}function Ve(e,t,l,n,a,u,c){let s=u??0,o=!1;const i=(()=>{if(!c)return e.indexOf(t);const b=U(t,c);return e.findIndex(w=>U(w,c)===b)})(),d=i!==-1,p=a==null?void 0:a.call(null,t,s),h=b=>{b==="add"?e.push(t):e.splice(i,1),o=!0},v=b=>{let w=0;const T=(n==null?void 0:n.children)&&b[n.children];return T&&ie(T)&&(w+=T.length,T.forEach(L=>{w+=v(L)})),w};return(!a||p)&&($e(l)?l&&!d?h("add"):!l&&d&&h("remove"):h(d?"remove":"add")),!(n!=null&&n.checkStrictly)&&(n!=null&&n.children)&&ie(t[n.children])&&t[n.children].forEach(b=>{const w=Ve(e,b,l??!d,n,a,s+1,c);s+=v(b)+1,w&&(o=w)}),o}function $a(e,t,l="children",n="hasChildren",a=!1){const u=s=>!(ie(s)&&s.length);function c(s,o,r){t(s,o,r),o.forEach(i=>{if(i[n]&&a){t(i,null,r+1);return}const d=i[l];u(d)||c(i,d,r+1)})}e.forEach(s=>{if(s[n]&&a){t(s,null,0);return}const o=s[l];u(o)||c(s,o,0)})}const Ia=(e,t,l,n)=>{const a=Ce(n==null?void 0:n.tooltipFormatter)?n.tooltipFormatter({row:l,column:n,cellValue:Nl(l,n.property).value}):void 0;return El(a)?{slotContent:a,content:null,strategy:"fixed",...e}:{slotContent:null,content:a??t,strategy:"fixed",...e}};let q=null;function za(e,t,l,n,a,u){var h;const c=Ia(e,t,l,n),s={...c,slotContent:void 0};if((q==null?void 0:q.trigger)===a){const v=(h=q.vm)==null?void 0:h.component;$l(v==null?void 0:v.props,s),v&&c.slotContent&&(v.slots.content=()=>[c.slotContent]);return}q==null||q();const o=u==null?void 0:u.refs.tableWrapper,r=o==null?void 0:o.dataset.prefix,i=xe(Tl,{virtualTriggering:!0,virtualRef:a,appendTo:o,placement:"top",transition:"none",offset:0,hideAfter:0,...s},c.slotContent?{content:()=>c.slotContent}:void 0);i.appContext={...u.appContext,...u};const d=document.createElement("div");sl(i,d),i.component.exposed.onOpen();const p=o==null?void 0:o.querySelector(`.${r}-scrollbar__wrap`);q=()=>{var b,w;(w=(b=i.component)==null?void 0:b.exposed)!=null&&w.onClose&&i.component.exposed.onClose(),sl(null,d);const v=q;p==null||p.removeEventListener("scroll",v),v.trigger=void 0,v.vm=void 0,q=null},q.trigger=a??void 0,q.vm=i,p==null||p.addEventListener("scroll",q)}function ql(e){return e.children?Al(e.children,ql):[e]}function yl(e,t){return e+t.colSpan}const Xl=(e,t,l,n)=>{let a=0,u=e;const c=l.states.columns.value;if(n){const o=ql(n[e]);a=c.slice(0,c.indexOf(o[0])).reduce(yl,0),u=a+o.reduce(yl,0)-1}else a=e;let s;switch(t){case"left":u=c.length-l.states.rightFixedLeafColumnsLength.value&&(s="right");break;default:u=c.length-l.states.rightFixedLeafColumnsLength.value&&(s="right")}return s?{direction:s,start:a,after:u}:{}},Yt=(e,t,l,n,a,u=0)=>{const c=[],{direction:s,start:o,after:r}=Xl(t,l,n,a);if(s){const i=s==="left";c.push(`${e}-fixed-column--${s}`),i&&r+u===n.states.fixedLeafColumnsLength.value-1?c.push("is-last-column"):!i&&o-u===n.states.columns.value.length-n.states.rightFixedLeafColumnsLength.value&&c.push("is-first-column")}return c};function Cl(e,t){return e+(bt(t.realWidth)||Number.isNaN(t.realWidth)?Number(t.width):t.realWidth)}const qt=(e,t,l,n)=>{const{direction:a,start:u=0,after:c=0}=Xl(e,t,l,n);if(!a)return;const s={},o=a==="left",r=l.states.columns.value;return o?s.left=r.slice(0,u).reduce(Cl,0):s.right=r.slice(c+1).reverse().reduce(Cl,0),s},qe=(e,t)=>{e&&(Number.isNaN(e[t])||(e[t]=`${e[t]}px`))};function Ul(e){return e.some(t=>El(t)?!(t.type===Rl||t.type===Ze&&!Ul(t.children)):!0)?e:null}function Ka(e){const t=he(),l=O(!1),n=O([]),a=(r,i)=>{const d=t.store.states.rowExpandable.value;return(d==null?void 0:d(r,i))??!0};return{updateExpandRows:()=>{const r=e.data.value||[],i=e.rowKey.value;if(l.value)n.value=t.store.states.rowExpandable.value?r.filter(a):r.slice();else if(i){const d=_e(n.value,i);n.value=r.filter((p,h)=>!!d[U(p,i)]&&a(p,h))}else n.value=[]},toggleRowExpansion:(r,i)=>{const d=(e.data.value||[]).indexOf(r);d>-1&&!a(r,d)||Ve(n.value,r,i,void 0,void 0,void 0,e.rowKey.value)&&t.emit("expand-change",r,n.value.slice())},setExpandRowKeys:r=>{t.store.assertRowKey();const i=e.data.value||[],d=e.rowKey.value,p=_e(i,d);n.value=r.reduce((h,v)=>{const b=p[v];return b&&a(b.row,b.index)&&h.push(b.row),h},[])},isRowExpanded:r=>{const i=e.rowKey.value;return i?!!_e(n.value,i)[U(r,i)]:n.value.includes(r)},states:{expandRows:n,defaultExpandAll:l}}}function Ba(e){const t=he(),l=O(null),n=O(null),a=r=>{t.store.assertRowKey(),l.value=r,c(r)},u=()=>{l.value=null},c=r=>{const{data:i,rowKey:d}=e,p=n.value;let h=null;d.value&&(h=(S(i)||[]).find(v=>U(v,d.value)===r)??null),n.value=h??null,t.emit("current-change",n.value,p)};return{setCurrentRowKey:a,restoreCurrentRowKey:u,setCurrentRowByKey:c,updateCurrentRow:r=>{const i=n.value;if(r&&r!==i){n.value=r,t.emit("current-change",n.value,i);return}!r&&i&&(n.value=null,t.emit("current-change",null,i))},updateCurrentRowData:()=>{const r=e.rowKey.value,i=e.data.value||[],d=n.value;d&&!i.includes(d)?r?c(U(d,r)):(n.value=null,t.emit("current-change",null,d)):l.value&&(c(l.value),u())},states:{_currentRowKey:l,currentRow:n}}}function Da(e){const t=O([]),l=O({}),n=O(16),a=O(!1),u=O({}),c=O("hasChildren"),s=O("children"),o=O(!1),r=he(),i=Y(()=>e.rowKey.value?p(e.data.value||[]):{}),d=Y(()=>{const f=e.rowKey.value,g=Object.keys(u.value),y={};return g.length&&g.forEach(C=>{if(u.value[C].length){const m={children:[]};u.value[C].forEach(x=>{const R=U(x,f);m.children.push(R),x[c.value]&&!y[R]&&(y[R]={children:[]})}),y[C]=m}}),y}),p=f=>{const g=e.rowKey.value,y={};return $a(f,(C,m,x)=>{const R=U(C,g);ie(m)?y[R]={children:m.map(k=>U(k,g)),level:x}:a.value&&(y[R]={children:[],lazy:!0,level:x})},s.value,c.value,a.value),y},h=(f=!1,g)=>{var R,k;g||(g=(R=r.store)==null?void 0:R.states.defaultExpandAll.value);const y=i.value,C=d.value,m=Object.keys(y),x={};if(m.length){const D=S(l),j=[],X=(F,z)=>{if(f)return t.value?g||t.value.includes(z):!!(g||F!=null&&F.expanded);{const $=g||t.value&&t.value.includes(z);return!!(F!=null&&F.expanded||$)}};m.forEach(F=>{const z=D[F],$={...y[F]};if($.expanded=X(z,F),$.lazy){const{loaded:M=!1,loading:V=!1}=z||{};$.loaded=!!M,$.loading=!!V,j.push(F)}x[F]=$});const W=Object.keys(C);a.value&&W.length&&j.length&&W.forEach(F=>{var M;const z=D[F],$=C[F].children;if(j.includes(F)){if(((M=x[F].children)==null?void 0:M.length)!==0)throw new Error("[ElTable]children must be an empty array.");x[F].children=$}else{const{loaded:V=!1,loading:J=!1}=z||{};x[F]={lazy:!0,loaded:!!V,loading:!!J,expanded:X(z,F),children:$,level:void 0}}})}l.value=x,(k=r.store)==null||k.updateTableScrollY()};ne(()=>t.value,()=>{h(!0)},{deep:!0}),ne(()=>i.value,()=>{h()}),ne(()=>d.value,()=>{h()});const v=f=>{t.value=f,h()},b=f=>a.value&&f&&"loaded"in f&&!f.loaded,w=(f,g)=>{r.store.assertRowKey();const y=e.rowKey.value,C=U(f,y),m=C&&l.value[C];if(C&&m&&"expanded"in m){const x=m.expanded;g=be(g)?!m.expanded:g,l.value[C].expanded=g,x!==g&&r.emit("expand-change",f,g),g&&b(m)&&L(f,C,m),r.store.updateTableScrollY()}},T=f=>{r.store.assertRowKey();const g=e.rowKey.value,y=U(f,g),C=l.value[y];b(C)?L(f,y,C):w(f,void 0)},L=(f,g,y)=>{const{load:C}=r.props;C&&!l.value[g].loaded&&(l.value[g].loading=!0,C(f,y,m=>{if(!ie(m))throw new TypeError("[ElTable] data must be an array");l.value[g].loading=!1,l.value[g].loaded=!0,l.value[g].expanded=!0,m.length&&(u.value={...u.value,[g]:m}),r.emit("expand-change",f,!0)}))};return{loadData:L,loadOrToggle:T,toggleTreeExpansion:w,updateTreeExpandKeys:v,updateTreeData:h,updateKeyChildren:(f,g)=>{const{lazy:y,rowKey:C}=r.props;if(y){if(!C)throw new Error("[Table] rowKey is required in updateKeyChild");u.value[f]&&(u.value={...u.value,[f]:g})}},normalize:p,states:{expandRowKeys:t,treeData:l,indent:n,lazy:a,lazyTreeNodeMap:u,lazyColumnIdentifier:c,childrenColumnName:s,checkStrictly:o}}}const Pa=(e,t)=>{const l=t.sortingColumn;return!l||we(l.sortable)?e:Ma(e,t.sortProp,t.sortOrder,l.sortMethod,l.sortBy)},ft=e=>{const t=[];return e.forEach(l=>{l.children&&l.children.length>0?t.push.apply(t,ft(l.children)):t.push(l)}),t};function Va(){var el;const e=he(),{size:t}=kn((el=e.proxy)==null?void 0:el.$props),l=O(null),n=O([]),a=O([]),u=O(!1),c=O([]),s=O([]),o=O([]),r=O([]),i=O([]),d=O([]),p=O([]),h=O([]),v=[],b=O(0),w=O(0),T=O(0),L=O(!1),N=O([]),f=O({}),g=O(!1),y=O(!1),C=O(null),m=O(null),x=O({}),R=O(null),k=O(null),D=O(null),j=O(null),X=O(null);let W=[];const F=Y(()=>l.value?_e(N.value,l.value):void 0),z=E=>{var _;const{childrenColumnName:H,lazyTreeNodeMap:I}=e.store.states,A=E[H.value]??[];if(!l.value)return A;const B=U(E,l.value);return[...((_=I.value)==null?void 0:_[B])??[],...A]};ne(n,()=>{var E;e.state&&(J(!1),e.props.tableLayout==="auto"&&((E=e.refs.tableHeaderRef)==null||E.updateFixedColumnStyle()))},{deep:!0});const $=()=>{if(!l.value)throw new Error("[ElTable] prop row-key is required")},M=E=>{var H;(H=E.children)==null||H.forEach(I=>{I.fixed=E.fixed,M(I)})},V=()=>{c.value.forEach(K=>{M(K)}),r.value=c.value.filter(K=>[!0,"left"].includes(K.fixed));const E=c.value.find(K=>K.type==="selection");let H;E&&E.fixed!=="right"&&!r.value.includes(E)&&c.value.indexOf(E)===0&&r.value.length&&(r.value.unshift(E),H=!0),i.value=c.value.filter(K=>K.fixed==="right");const I=c.value.filter(K=>(H?K.type!=="selection":!0)&&!K.fixed);s.value=Array.from(r.value).concat(I).concat(i.value);const A=ft(I),B=ft(r.value),_=ft(i.value);b.value=A.length,w.value=B.length,T.value=_.length,o.value=Array.from(B).concat(A).concat(_),u.value=r.value.length>0||i.value.length>0},J=(E,H=!1)=>{E&&V(),H?e.state.doLayout():e.state.debouncedUpdateLayout()},Q=E=>F.value?!!F.value[U(E,l.value)]:N.value.includes(E),le=Y(()=>{const E=new Map;if(!l.value||!C.value)return E;let H=0;const I=A=>{ie(A)&&A.forEach(B=>{const _=U(B,l.value);E.set(_,H),H+=1;const K=z(B);K.length&&I(K)})};return I(n.value||[]),E}),Z=(E={})=>{const{emitChange:H=!0}=E;if(ue.checkStrictly.value||!l.value){f.value={},W=[];return}const I=l.value,A=E.rowIndexMap??le.value,B=C.value,_=new WeakMap,K=me=>{const oe=_.get(me);if(oe)return oe;const Oe=U(me,I);return _.set(me,Oe),Oe},ae={},se=[],ee=new Set(N.value.map(me=>K(me))),ce=[];let Ne=!1;const bn=(me,oe,Oe)=>{const Te=ee.has(oe);Oe&&!Te?(ce.push(me),ee.add(oe),Ne=!0):!Oe&&Te&&(ee.delete(oe),Ne=!0)},tl=me=>{let oe=0,Oe=0;return ie(me)?(me.forEach(Te=>{const st=K(Te),ll=z(Te);let ot=0,rt=0;if(ll.length){const Ge=tl(ll);ot=Ge.selectedCount,rt=Ge.selectableCount}const nl=B?B.call(null,Te,A.get(st)??0):!0;if(nl&&rt>0){const Ge=ot===rt;!Ge&&ot!==0&&(ae[st]=!0,se.push(Te)),bn(Te,st,Ge)}nl&&(Oe+=1,ee.has(st)&&(oe+=1)),oe+=ot,Oe+=rt}),{selectedCount:oe,selectableCount:Oe}):{selectedCount:oe,selectableCount:Oe}};if(tl(n.value||[]),Ne){const me=N.value.filter(oe=>ee.has(K(oe)));ce.forEach(oe=>{ee.has(K(oe))&&me.push(oe)}),N.value=me}f.value=ae,W=se,Ne&&H&&e.emit("selection-change",N.value?N.value.slice():[])},re=()=>{L.value=!1;const E=N.value;N.value=[],f.value={},W=[],E.length&&e.emit("selection-change",[])},ge=()=>{var H,I;let E;if(l.value){E=[];const A=(I=(H=e==null?void 0:e.store)==null?void 0:H.states)==null?void 0:I.childrenColumnName.value,B=_e(n.value,l.value,!0,A),{lazyTreeNodeMap:_}=e.store.states;_.value&&Object.entries(_.value).forEach(([K,ae])=>{B[K]&&ae.forEach(se=>{const ee=U(se,l.value);B[ee]||(B[ee]={row:se,index:-1})})});for(const K in F.value)ze(F.value,K)&&!B[K]&&E.push(F.value[K].row)}else E=N.value.filter(A=>!n.value.includes(A));if(E.length){const A=N.value.filter(B=>!E.includes(B));N.value=A,Z({emitChange:!1}),e.emit("selection-change",[...A])}},ve=()=>(N.value||[]).slice(),Se=()=>W.slice(),Fe=(E,H,I)=>{var ee;if(!l.value||ue.checkStrictly.value||!ue.lazy.value)return;const{lazyTreeNodeMap:A,childrenColumnName:B}=e.store.states,_=U(E,l.value),K=((ee=A.value)==null?void 0:ee[_])??[],ae=E[B.value]??[],se={children:B.value,checkStrictly:!1};for(const ce of K){const Ne=I.get(U(ce,l.value))??0;Ve(N.value,ce,H,se,C.value,Ne,l.value),Fe(ce,H,I)}for(const ce of ae)Fe(ce,H,I)},nt=(E,H,I=!0,A=!1)=>{var _,K,ae,se;const B={children:(K=(_=e==null?void 0:e.store)==null?void 0:_.states)==null?void 0:K.childrenColumnName.value,checkStrictly:(se=(ae=e==null?void 0:e.store)==null?void 0:ae.states)==null?void 0:se.checkStrictly.value};if(Ve(N.value,E,H,B,A?void 0:C.value,n.value.indexOf(E),l.value)){ue.lazy.value&&!ue.checkStrictly.value?(Fe(E,H??Q(E),le.value),Z({emitChange:!1,rowIndexMap:le.value})):Z({emitChange:!1});const ee=(N.value||[]).slice();I&&e.emit("select",ee,E),e.emit("selection-change",ee)}},at=()=>{var ae,se;const E=y.value?!L.value:!(L.value||N.value.length);L.value=E;let H=!1,I=0;const A=(se=(ae=e==null?void 0:e.store)==null?void 0:ae.states)==null?void 0:se.rowKey.value,{childrenColumnName:B}=e.store.states,_={children:B.value,checkStrictly:!1};n.value.forEach((ee,ce)=>{const Ne=ce+I;Ve(N.value,ee,E,_,C.value,Ne,A)&&(H=!0),I+=Me(U(ee,A))});const K=le.value;if(ue.lazy.value&&!ue.checkStrictly.value&&A)for(const ee of Object.values(ue.lazyTreeNodeMap.value))for(const ce of ee){const Ne=K.get(U(ce,A))??0;Ve(N.value,ce,E,_,C.value,Ne,A)&&(H=!0),Fe(ce,E,K)}Z({emitChange:!1,rowIndexMap:K}),H&&e.emit("selection-change",N.value?[...N.value]:[]),e.emit("select-all",(N.value||[]).slice())},Xe=()=>{var B;if(((B=n.value)==null?void 0:B.length)===0){L.value=!1;return}let E=0,H=0;const I=_=>{for(const K of _){const ae=C.value&&C.value.call(null,K,E);if(Q(K))H++;else if(!C.value||ae)return!1;E++;const se=z(K);if(se.length&&!I(se))return!1}return!0},A=I(n.value||[]);L.value=H===0?!1:A},pe=E=>{if(!l.value)return!1;const H=U(E,l.value);return!!f.value[H]},Me=E=>{var B;if(!e||!e.store)return 0;const{treeData:H}=e.store.states;let I=0;const A=(B=H.value[E])==null?void 0:B.children;return A&&(I+=A.length,A.forEach(_=>{I+=Me(_)})),I},Ue=(E,H)=>{const I={};return Wl(E).forEach(A=>{x.value[A.id]=H,I[A.columnKey||A.id]=H}),I},Gt=(E,H,I)=>{k.value&&k.value!==E&&(k.value.order=null),k.value=E,D.value=H,j.value=I},Qt=()=>{let E=S(a);Object.keys(x.value).forEach(H=>{const I=x.value[H];if(!I||I.length===0)return;const A=_l({columns:o.value},H);A&&A.filterMethod&&(E=E.filter(B=>I.some(_=>A.filterMethod.call(null,_,B,A))))}),R.value=E},Jt=()=>{n.value=Pa(R.value??[],{sortingColumn:k.value,sortProp:D.value,sortOrder:j.value})},tn=(E=void 0)=>{E!=null&&E.filter||Qt(),Jt()},ln=E=>{const{tableHeaderRef:H}=e.refs;if(!H)return;const I=Object.assign({},H.filterPanels),A=Object.keys(I);if(A.length)if(we(E)&&(E=[E]),ie(E)){const B=E.map(_=>Wa({columns:o.value},_));A.forEach(_=>{const K=B.find(ae=>ae.id===_);K&&(K.filteredValue=[])}),e.store.commit("filterChange",{column:B,values:[],silent:!0,multi:!0})}else A.forEach(B=>{const _=o.value.find(K=>K.id===B);_&&(_.filteredValue=[])}),x.value={},e.store.commit("filterChange",{column:{},values:[],silent:!0})},nn=()=>{k.value&&(Gt(null,null,null),e.store.commit("changeSortCondition",{silent:!0}))},{setExpandRowKeys:an,toggleRowExpansion:Zt,updateExpandRows:sn,states:on,isRowExpanded:rn}=Ka({data:n,rowKey:l}),{updateTreeExpandKeys:un,toggleTreeExpansion:cn,updateTreeData:dn,updateKeyChildren:fn,loadOrToggle:hn,states:ue}=Da({data:n,rowKey:l}),{updateCurrentRowData:gn,updateCurrentRow:vn,setCurrentRowKey:pn,states:mn}=Ba({data:n,rowKey:l}),yn=E=>{an(E),un(E)},Cn=(E,H)=>{o.value.some(({type:I})=>I==="expand")?Zt(E,H):cn(E,H)};return ne(()=>ue.checkStrictly.value,E=>{E?(f.value={},W=[]):Z({emitChange:!1}),Xe()}),ne(()=>ue.lazyTreeNodeMap.value,()=>{var A;if(!ue.lazy.value||ue.checkStrictly.value||!l.value)return;const E=le.value,H=N.value.length;for(const B of Object.keys(ue.lazyTreeNodeMap.value))(A=F.value)!=null&&A[B]&&Fe(F.value[B].row,!0,E);const I=N.value.length!==H;Z({emitChange:!I,rowIndexMap:E}),Xe(),I&&e.emit("selection-change",[...N.value])}),{assertRowKey:$,updateColumns:V,scheduleLayout:J,isSelected:Q,clearSelection:re,cleanSelection:ge,getSelectionRows:ve,getHalfSelectionRows:Se,toggleRowSelection:nt,_toggleAllSelection:at,toggleAllSelection:null,updateAllSelected:Xe,updateSelectionByChildren:Z,getRowIndeterminate:pe,updateFilters:Ue,updateCurrentRow:vn,updateSort:Gt,execFilter:Qt,execSort:Jt,execQuery:tn,clearFilter:ln,clearSort:nn,toggleRowExpansion:Zt,setExpandRowKeysAdapter:yn,setCurrentRowKey:pn,toggleRowExpansionAdapter:Cn,isRowExpanded:rn,updateExpandRows:sn,updateCurrentRowData:gn,loadOrToggle:hn,updateTreeData:dn,updateKeyChildren:fn,states:{tableSize:t,rowKey:l,data:n,_data:a,isComplex:u,_columns:c,originColumns:s,columns:o,fixedColumns:r,rightFixedColumns:i,leafColumns:d,fixedLeafColumns:p,rightFixedLeafColumns:h,updateOrderFns:v,leafColumnsLength:b,fixedLeafColumnsLength:w,rightFixedLeafColumnsLength:T,isAllSelected:L,selection:N,selectionIndeterminate:f,reserveSelection:g,selectOnIndeterminate:y,selectable:C,rowExpandable:m,filters:x,filteredData:R,sortingColumn:k,sortProp:D,sortOrder:j,hoverRow:X,...on,...ue,...mn}}}function It(e,t){return e.map(l=>{var n;return l.id===t.id?t:((n=l.children)!=null&&n.length&&(l.children=It(l.children,t)),l)})}function zt(e){e.forEach(t=>{var l,n;t.no=(l=t.getColumnIndex)==null?void 0:l.call(t),(n=t.children)!=null&&n.length&&zt(t.children)}),e.sort((t,l)=>t.no-l.no)}function ja(){const e=he(),t=Va(),l=Ee("table"),{t:n}=Ct();return{ns:l,t:n,...t,mutations:{setData(s,o){const r=S(s._data)!==o;s.data.value=o,s._data.value=o,e.store.execQuery(),e.store.updateCurrentRowData(),e.store.updateExpandRows(),e.store.updateTreeData(e.store.states.defaultExpandAll.value),S(s.reserveSelection)?e.store.assertRowKey():r?e.store.clearSelection():e.store.cleanSelection(),e.store.updateSelectionByChildren({emitChange:!1}),e.store.updateAllSelected(),e.$ready&&e.store.scheduleLayout()},insertColumn(s,o,r,i){var h;const d=S(s._columns);let p=[];r?(r&&!r.children&&(r.children=[]),(h=r.children)==null||h.push(o),p=It(d,r)):(d.push(o),p=d),zt(p),s._columns.value=p,s.updateOrderFns.push(i),o.type==="selection"&&(s.selectable.value=o.selectable,s.reserveSelection.value=o.reserveSelection),e.$ready&&(e.store.updateColumns(),e.store.scheduleLayout())},updateColumnOrder(s,o){var r;((r=o.getColumnIndex)==null?void 0:r.call(o))!==o.no&&(zt(s._columns.value),e.$ready&&e.store.updateColumns())},removeColumn(s,o,r,i){var h;const d=S(s._columns)||[];if(r)(h=r.children)==null||h.splice(r.children.findIndex(v=>v.id===o.id),1),Ye(()=>{var v;((v=r.children)==null?void 0:v.length)===0&&delete r.children}),s._columns.value=It(d,r);else{const v=d.indexOf(o);v>-1&&(d.splice(v,1),s._columns.value=d)}const p=s.updateOrderFns.indexOf(i);p>-1&&s.updateOrderFns.splice(p,1),e.$ready&&(e.store.updateColumns(),e.store.scheduleLayout())},sort(s,o){const{prop:r,order:i,init:d}=o;if(r){const p=S(s.columns).find(h=>h.property===r);p&&(p.order=i,e.store.updateSort(p,r,i),e.store.commit("changeSortCondition",{init:d}))}},changeSortCondition(s,o){const{sortingColumn:r,sortProp:i,sortOrder:d}=s,p=S(r),h=S(i),v=S(d);bt(v)&&(s.sortingColumn.value=null,s.sortProp.value=null),e.store.execQuery({filter:!0}),(!o||!(o.silent||o.init))&&e.emit("sort-change",{column:p,prop:h,order:v}),e.store.updateTableScrollY()},filterChange(s,o){const{column:r,values:i,silent:d}=o,p=e.store.updateFilters(r,i);e.store.execQuery(),d||e.emit("filter-change",p),e.store.updateTableScrollY()},toggleAllSelection(){var s,o;(o=(s=e.store).toggleAllSelection)==null||o.call(s)},rowSelectedChanged(s,o){e.store.toggleRowSelection(o),e.store.updateAllSelected()},setHoverRow(s,o){s.hoverRow.value=o},setCurrentRow(s,o){e.store.updateCurrentRow(o)}},commit:function(s,...o){const r=e.store.mutations;if(r[s])r[s].apply(e,[e.store.states,...o]);else throw new Error(`Action not found: ${s}`)},updateTableScrollY:function(){Ye(()=>e.layout.updateScrollY.apply(e.layout))}}}const Xt={rowKey:"rowKey",defaultExpandAll:"defaultExpandAll",rowExpandable:"rowExpandable",selectOnIndeterminate:"selectOnIndeterminate",indent:"indent",lazy:"lazy","treeProps.hasChildren":{key:"lazyColumnIdentifier",default:"hasChildren"},"treeProps.children":{key:"childrenColumnName",default:"children"},"treeProps.checkStrictly":{key:"checkStrictly",default:!1}};function _a(e,t){if(!e)throw new Error("Table is required.");const l=ja();return l.toggleAllSelection=pt(l._toggleAllSelection,10),Object.keys(Xt).forEach(n=>{Gl(Ql(t,n),n,l)}),Ya(l,t),l}function Ya(e,t){Object.keys(Xt).forEach(l=>{ne(()=>Ql(t,l),n=>{Gl(n,l,e)})})}function Gl(e,t,l){let n=e,a=Xt[t];gt(a)&&(n=n||a.default,a=a.key),l.states[a].value=n}function Ql(e,t){if(t.includes(".")){const l=t.split(".");let n=e;return l.forEach(a=>{n=n[a]}),n}else return e[t]}var qa=class{constructor(e){this.observers=[],this.table=null,this.store=null,this.columns=[],this.fit=!0,this.showHeader=!0,this.heightMap={},this.height=O(null),this.scrollX=O(!1),this.scrollY=O(!1),this.bodyWidth=O(null),this.fixedWidth=O(null),this.rightFixedWidth=O(null),this.gutterWidth=0;for(const t in e)ze(e,t)&&(Hn(this[t])?this[t].value=e[t]:this[t]=e[t]);if(!this.table)throw new Error("Table is required for Table Layout");if(!this.store)throw new Error("Store is required for Table Layout")}updateScrollY(){const e=this.height.value;if(bt(e))return!1;const t=this.table.refs.scrollBarRef;if(this.table.vnode.el&&(t!=null&&t.wrapRef)){let l=!0;const n=this.scrollY.value;return l=t.wrapRef.scrollHeight>t.wrapRef.clientHeight,this.scrollY.value=l,n!==l}return!1}setHeight(e,t="height"){if(!et)return;const l=this.table.vnode.el;if(e=Ha(e),this.height.value=Number(e),this.heightMap[t]=e,!l&&(e||e===0)){Ye(()=>{this.heightMap[t]===e&&this.setHeight(e,t)});return}l&&je(e)?(l.style[t]=`${e}px`,this.updateElsHeight()):l&&we(e)&&(l.style[t]=e,this.updateElsHeight())}setMaxHeight(e){this.setHeight(e,"max-height")}getFlattenColumns(){const e=[];return this.table.store.states.columns.value.forEach(t=>{t.isColumnGroup?e.push.apply(e,t.columns):e.push(t)}),e}updateElsHeight(){this.updateScrollY(),this.notifyObservers("scrollable")}headerDisplayNone(e){if(!e)return!0;let t=e;for(;t.tagName!=="DIV";){if(getComputedStyle(t).display==="none")return!0;t=t.parentElement}return!1}updateColumnsWidth(){var s;if(!et)return;const e=this.fit,t=(s=this.table.vnode.el)==null?void 0:s.clientWidth;let l=0;const n=this.getFlattenColumns(),a=n.filter(o=>!je(o.width));if(n.forEach(o=>{je(o.width)&&o.realWidth&&(o.realWidth=null)}),a.length>0&&e){if(n.forEach(o=>{l+=Number(o.width||o.minWidth||80)}),l<=t){this.scrollX.value=!1;const o=t-l;if(a.length===1)a[0].realWidth=Number(a[0].minWidth||80)+o;else{const r=o/a.reduce((d,p)=>d+Number(p.minWidth||80),0);let i=0;a.forEach((d,p)=>{if(p===0)return;const h=Math.floor(Number(d.minWidth||80)*r);i+=h,d.realWidth=Number(d.minWidth||80)+h}),a[0].realWidth=Number(a[0].minWidth||80)+o-i}}else this.scrollX.value=!0,a.forEach(o=>{o.realWidth=Number(o.minWidth)});this.bodyWidth.value=Math.max(l,t),this.table.state.resizeState.value.width=this.bodyWidth.value}else n.forEach(o=>{!o.width&&!o.minWidth?o.realWidth=80:o.realWidth=Number(o.width||o.minWidth),l+=o.realWidth}),this.scrollX.value=l>t,this.bodyWidth.value=l;const u=this.store.states.fixedColumns.value;if(u.length>0){let o=0;u.forEach(r=>{o+=Number(r.realWidth||r.width)}),this.fixedWidth.value=o}const c=this.store.states.rightFixedColumns.value;if(c.length>0){let o=0;c.forEach(r=>{o+=Number(r.realWidth||r.width)}),this.rightFixedWidth.value=o}this.notifyObservers("columns")}addObserver(e){this.observers.push(e)}removeObserver(e){const t=this.observers.indexOf(e);t!==-1&&this.observers.splice(t,1)}notifyObservers(e){this.observers.forEach(t=>{var l,n;switch(e){case"columns":(l=t.state)==null||l.onColumnsChange(this);break;case"scrollable":(n=t.state)==null||n.onScrollableChange(this);break;default:throw new Error(`Table Layout don't have event ${e}.`)}})}};const Re=Symbol("ElTable"),Jl=e=>{const t=[];return e.forEach(l=>{l.children?(t.push(l),t.push.apply(t,Jl(l.children))):t.push(l)}),t},Zl=e=>{let t=1;const l=(a,u)=>{if(u&&(a.level=u.level+1,t{l(s,a),c+=s.colSpan}),a.colSpan=c}else a.colSpan=1};e.forEach(a=>{a.level=1,l(a,void 0)});const n=[];for(let a=0;a{a.children?(a.rowSpan=1,a.children.forEach(u=>u.isSubColumn=!0)):a.rowSpan=t-a.level+1,n[a.level-1].push(a)}),n};function Xa(e){const t=Le(Re),l=Y(()=>Zl(e.store.states.originColumns.value));return{isGroup:Y(()=>{const u=l.value.length>1;return u&&t&&(t.state.isGroup.value=!0),u}),toggleAllSelection:u=>{u.stopPropagation(),t==null||t.store.commit("toggleAllSelection")},columnRows:l}}var Ua=De({name:"ElTableFilterPanel",components:{ElCheckbox:mt,ElCheckboxGroup:aa,ElScrollbar:Fl,ElTooltip:Tl,ElIcon:Bt,ArrowDown:$n,ArrowUp:An},props:{placement:{type:String,default:"bottom-start"},store:{type:Object},column:{type:Object},upDataColumn:{type:Function},appendTo:qn.appendTo},setup(e){const t=he(),{t:l}=Ct(),n=Ee("table-filter"),a=t==null?void 0:t.parent;e.column&&!a.filterPanels.value[e.column.id]&&(a.filterPanels.value[e.column.id]=t);const u=O(null),c=O(null),s=O(0),o=Y(()=>e.column&&e.column.filters),r=Y(()=>e.column&&e.column.filterClassName?`${n.b()} ${e.column.filterClassName}`:n.b()),i=Y({get:()=>{var C;return(((C=e.column)==null?void 0:C.filteredValue)||[])[0]},set:C=>{d.value&&(Je(C)?d.value.splice(0,1):d.value.splice(0,1,C))}}),d=Y({get(){return e.column?e.column.filteredValue||[]:[]},set(C){var m;e.column&&((m=e.upDataColumn)==null||m.call(e,"filteredValue",C))}}),p=Y(()=>e.column?e.column.filterMultiple:!0),h=C=>C.value===i.value,v=()=>{var C;(C=u.value)==null||C.onClose()},b=()=>{L(d.value),v()},w=()=>{d.value=[],L(d.value),v()},T=(C,m)=>{i.value=C,s.value=m,Je(C)?L([]):L(d.value),v()},L=C=>{var m,x;(m=e.store)==null||m.commit("filterChange",{column:e.column,values:C}),(x=e.store)==null||x.updateAllSelected()},N=()=>{var C,m;(C=c.value)==null||C.focus(),!p.value&&g(),e.column&&((m=e.upDataColumn)==null||m.call(e,"filterOpened",!0))},f=()=>{var C;e.column&&((C=e.upDataColumn)==null||C.call(e,"filterOpened",!1))},g=()=>{if(Je(i)){s.value=0;return}const C=(o.value||[]).findIndex(m=>m.value===i.value);s.value=C>=0?C+1:0};return{multiple:p,filterClassName:r,filteredValue:d,filterValue:i,filters:o,handleConfirm:b,handleReset:w,handleSelect:T,isPropAbsent:Je,isActive:h,t:l,ns:n,tooltipRef:u,rootRef:c,checkedIndex:s,handleShowTooltip:N,handleHideTooltip:f,handleKeydown:C=>{var D,j;const m=In(C),x=(o.value?o.value.length:0)+1;let R=s.value,k=!0;switch(m){case We.down:case We.right:R=(R+1)%x;break;case We.up:case We.left:R=(R-1+x)%x;break;case We.tab:v(),k=!1;break;case We.enter:case We.space:if(R===0)T(null,0);else{const X=(o.value||[])[R-1];X.value&&T(X.value,R)}break;default:k=!1;break}k&&C.preventDefault(),s.value=R,(j=(D=c.value)==null?void 0:D.querySelector(`.${n.e("list-item")}:nth-child(${R+1})`))==null||j.focus()}}}});const Ga=["disabled"],Qa=["tabindex","aria-checked"],Ja=["tabindex","aria-checked","onClick"],Za=["aria-label"];function es(e,t,l,n,a,u){const c=ke("el-checkbox"),s=ke("el-checkbox-group"),o=ke("el-scrollbar"),r=ke("arrow-up"),i=ke("arrow-down"),d=ke("el-icon"),p=ke("el-tooltip");return te(),Ke(p,{ref:"tooltipRef",offset:0,placement:e.placement,"show-arrow":!1,trigger:"click",role:"dialog",teleported:"",effect:"light",pure:"",loop:"","popper-class":e.filterClassName,persistent:"","append-to":e.appendTo,onShow:e.handleShowTooltip,onHide:e.handleHideTooltip},{content:Ae(()=>[e.multiple?(te(),ye("div",{key:0,ref:"rootRef",tabindex:"-1",class:G(e.ns.e("multiple"))},[fe("div",{class:G(e.ns.e("content"))},[xe(o,{"wrap-class":e.ns.e("wrap")},{default:Ae(()=>[xe(s,{modelValue:e.filteredValue,"onUpdate:modelValue":t[0]||(t[0]=h=>e.filteredValue=h),class:G(e.ns.e("checkbox-group"))},{default:Ae(()=>[(te(!0),ye(Ze,null,rl(e.filters,h=>(te(),Ke(c,{key:h.value,value:h.value},{default:Ae(()=>[Dt(Pe(h.text),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue","class"])]),_:1},8,["wrap-class"])],2),fe("div",{class:G(e.ns.e("bottom"))},[fe("button",{class:G(e.ns.is("disabled",e.filteredValue.length===0)),disabled:e.filteredValue.length===0,type:"button",onClick:t[1]||(t[1]=(...h)=>e.handleConfirm&&e.handleConfirm(...h))},Pe(e.t("el.table.confirmFilter")),11,Ga),fe("button",{type:"button",onClick:t[2]||(t[2]=(...h)=>e.handleReset&&e.handleReset(...h))},Pe(e.t("el.table.resetFilter")),1)],2)],2)):(te(),ye("ul",{key:1,ref:"rootRef",tabindex:"-1",role:"radiogroup",class:G(e.ns.e("list")),onKeydown:t[4]||(t[4]=(...h)=>e.handleKeydown&&e.handleKeydown(...h))},[fe("li",{role:"radio",class:G([e.ns.e("list-item"),e.ns.is("active",e.isPropAbsent(e.filterValue))]),tabindex:e.checkedIndex===0?0:-1,"aria-checked":e.isPropAbsent(e.filterValue),onClick:t[3]||(t[3]=h=>e.handleSelect(null,0))},Pe(e.t("el.table.clearFilter")),11,Qa),(te(!0),ye(Ze,null,rl(e.filters,(h,v)=>(te(),ye("li",{key:h.value,role:"radio",class:G([e.ns.e("list-item"),e.ns.is("active",e.isActive(h))]),tabindex:e.checkedIndex===v+1?0:-1,"aria-checked":e.isActive(h),onClick:b=>e.handleSelect(h.value,v+1)},Pe(h.text),11,Ja))),128))],34))]),default:Ae(()=>{var h;return[fe("button",{type:"button",class:G(`${e.ns.namespace.value}-table__column-filter-trigger`),"aria-label":e.t("el.table.filterLabel",{column:((h=e.column)==null?void 0:h.label)||""})},[xe(d,null,{default:Ae(()=>[Be(e.$slots,"filter-icon",{},()=>{var v;return[(v=e.column)!=null&&v.filterOpened?(te(),Ke(r,{key:0})):(te(),Ke(i,{key:1}))]})]),_:3})],10,Za)]}),_:3},8,["placement","popper-class","append-to","onShow","onHide"])}var ts=sa(Ua,[["render",es]]);function Ut(e){const t=he();Ol(()=>{l.value.addObserver(t)}),lt(()=>{n(l.value),a(l.value)}),zn(()=>{n(l.value),a(l.value)}),Pt(()=>{l.value.removeObserver(t)});const l=Y(()=>{const u=e.layout;if(!u)throw new Error("Can not find table layout.");return u}),n=u=>{var r;const c=((r=e.vnode.el)==null?void 0:r.querySelectorAll("colgroup > col"))||[];if(!c.length)return;const s=u.getFlattenColumns(),o={};s.forEach(i=>{o[i.id]=i});for(let i=0,d=c.length;i{var o,r;const c=((o=e.vnode.el)==null?void 0:o.querySelectorAll("colgroup > col[name=gutter]"))||[];for(let i=0,d=c.length;i{b.stopPropagation()},u=(b,w)=>{!w.filters&&w.sortable?v(b,w,!1):w.filterable&&!w.sortable&&a(b),n==null||n.emit("header-click",w,b)},c=(b,w)=>{n==null||n.emit("header-contextmenu",w,b)},s=O(null),o=O(!1),r=O(),i=(b,w)=>{var T,L,N;if(et&&!(w.children&&w.children.length>0)&&s.value&&e.border&&s.value.id===w.id){o.value=!0;const f=n;t("set-drag-visible",!0);const g=(T=f==null?void 0:f.vnode.el)==null?void 0:T.getBoundingClientRect().left,y=(N=(L=l==null?void 0:l.vnode)==null?void 0:L.el)==null?void 0:N.querySelector(`th.${w.id}`),C=y.getBoundingClientRect(),m=C.left-g+30;vt(y,"noclick"),r.value={startMouseLeft:b.clientX,startLeft:C.right-g,startColumnLeft:C.left-g,tableLeft:g};const x=f==null?void 0:f.refs.resizeProxy;x.style.left=`${r.value.startLeft}px`,document.onselectstart=function(){return!1},document.ondragstart=function(){return!1};const R=D=>{const j=D.clientX-r.value.startMouseLeft,X=r.value.startLeft+j;x.style.left=`${Math.max(m,X)}px`},k=()=>{if(o.value){const{startColumnLeft:D,startLeft:j}=r.value;w.width=w.realWidth=Number.parseInt(x.style.left,10)-D,f==null||f.emit("header-dragend",w.width,j-D,w,b),requestAnimationFrame(()=>{e.store.scheduleLayout(!1,!0)}),document.body.style.cursor="",o.value=!1,s.value=null,r.value=void 0,t("set-drag-visible",!1)}document.removeEventListener("mousemove",R),document.removeEventListener("mouseup",k),document.onselectstart=null,document.ondragstart=null,setTimeout(()=>{tt(y,"noclick")},0)};document.addEventListener("mousemove",R),document.addEventListener("mouseup",k)}},d=(b,w)=>{var x;if(!e.border||w.children&&w.children.length>0)return;const T=b.target,L=Kn(T)?T.closest("th"):null;if(!L)return;const N=it(L,"is-sortable");if(N){const R=o.value?"col-resize":"";L.style.cursor=R;const k=L.querySelector(".caret-wrapper");k&&(k.style.cursor=R)}if(!w.resizable||o.value){s.value=null;return}const f=L.getBoundingClientRect(),g=((x=L.parentNode)==null?void 0:x.lastElementChild)===L,y=e.allowDragLastColumn||!g,C=f.width>12&&f.right-b.clientX<8&&y,m=C?"col-resize":"";document.body.style.cursor=m,s.value=C?w:null,N&&(L.style.cursor=m)},p=()=>{!et||o.value||(document.body.style.cursor="")},h=({order:b,sortOrders:w})=>{if(b==="")return w[0];const T=w.indexOf(b||null);return w[T>w.length-2?0:T+1]},v=(b,w,T)=>{var x;b.stopPropagation();const L=w.order===T?null:T||h(w),N=(x=b.target)==null?void 0:x.closest("th");if(N&&it(N,"noclick")){tt(N,"noclick");return}if(!w.sortable)return;const f=b.currentTarget;if(["ascending","descending"].some(R=>it(f,R)&&!w.sortOrders.includes(R)))return;const g=e.store.states;let y=g.sortProp.value,C;const m=g.sortingColumn.value;(m!==w||m===w&&bt(m.order))&&(m&&(m.order=null),g.sortingColumn.value=w,y=w.property??null),L?C=w.order=L:C=w.order=null,g.sortProp.value=y,g.sortOrder.value=C,n==null||n.store.commit("changeSortCondition")};return{handleHeaderClick:u,handleHeaderContextMenu:c,handleMouseDown:i,handleMouseMove:d,handleMouseOut:p,handleSortClick:v,handleFilterClick:a}}function ns(e){const t=Le(Re),l=Ee("table");return{getHeaderRowStyle:s=>{const o=t==null?void 0:t.props.headerRowStyle;return Ce(o)?o.call(null,{rowIndex:s}):o},getHeaderRowClass:s=>{const o=[],r=t==null?void 0:t.props.headerRowClassName;return we(r)?o.push(r):Ce(r)&&o.push(r.call(null,{rowIndex:s})),o.join(" ")},getHeaderCellStyle:(s,o,r,i)=>{let d=(t==null?void 0:t.props.headerCellStyle)??{};Ce(d)&&(d=d.call(null,{rowIndex:s,columnIndex:o,row:r,column:i}));const p=qt(o,i.fixed,e.store,r);return qe(p,"left"),qe(p,"right"),Object.assign({},d,p)},getHeaderCellClass:(s,o,r,i)=>{const d=Yt(l.b(),o,i.fixed,e.store,r),p=[i.id,i.order,i.headerAlign,i.className,i.labelClassName,...d];i.children||p.push("is-leaf"),i.sortable&&p.push("is-sortable");const h=t==null?void 0:t.props.headerCellClassName;return we(h)?p.push(h):Ce(h)&&p.push(h.call(null,{rowIndex:s,columnIndex:o,row:r,column:i})),p.push(l.e("cell")),p.filter(v=>!!v).join(" ")}}}var bl=De({name:"ElTableHeader",components:{ElCheckbox:mt},props:{fixed:{type:String,default:""},store:{required:!0,type:Object},border:Boolean,defaultSort:{type:Object,default:()=>({prop:"",order:""})},appendFilterPanelTo:{type:String},allowDragLastColumn:{type:Boolean}},setup(e,{emit:t}){const l=he(),n=Le(Re),a=Ee("table"),u=O({}),{onColumnsChange:c,onScrollableChange:s}=Ut(n),o=(n==null?void 0:n.props.tableLayout)==="auto",r=Bn(new Map),i=O();let d;const p=()=>{d=setTimeout(()=>{r.size>0&&(r.forEach((D,j)=>{const X=i.value.querySelector(`.${j.replace(/\s/g,".")}`);X&&(D.width=X.getBoundingClientRect().width||D.width)}),r.clear())})};ne(r,p),Vt(()=>{d&&(clearTimeout(d),d=void 0)}),lt(async()=>{await Ye(),await Ye();const{prop:D,order:j}=e.defaultSort;n==null||n.store.commit("sort",{prop:D,order:j,init:!0}),p()});const{handleHeaderClick:h,handleHeaderContextMenu:v,handleMouseDown:b,handleMouseMove:w,handleMouseOut:T,handleSortClick:L,handleFilterClick:N}=ls(e,t),{getHeaderRowStyle:f,getHeaderRowClass:g,getHeaderCellStyle:y,getHeaderCellClass:C}=ns(e),{isGroup:m,toggleAllSelection:x,columnRows:R}=Xa(e),{t:k}=Ct();return l.state={onColumnsChange:c,onScrollableChange:s},l.filterPanels=u,{ns:a,t:k,filterPanels:u,onColumnsChange:c,onScrollableChange:s,columnRows:R,getHeaderRowClass:g,getHeaderRowStyle:f,getHeaderCellClass:C,getHeaderCellStyle:y,handleHeaderClick:h,handleHeaderContextMenu:v,handleMouseDown:b,handleMouseMove:w,handleMouseOut:T,handleSortClick:L,handleFilterClick:N,isGroup:m,toggleAllSelection:x,saveIndexSelection:r,isTableLayoutAuto:o,theadRef:i,updateFixedColumnStyle:p}},render(){const{ns:e,t,isGroup:l,columnRows:n,getHeaderCellStyle:a,getHeaderCellClass:u,getHeaderRowClass:c,getHeaderRowStyle:s,handleHeaderClick:o,handleHeaderContextMenu:r,handleMouseDown:i,handleMouseMove:d,handleSortClick:p,handleMouseOut:h,store:v,$parent:b,saveIndexSelection:w,isTableLayoutAuto:T}=this;let L=1;return P("thead",{ref:"theadRef",class:e.is("group",l)},n.map((N,f)=>P("tr",{class:c(f),key:f,style:s(f)},N.map((g,y)=>{g.rowSpan>L&&(L=g.rowSpan);const C=u(f,y,N,g);return T&&g.fixed&&w.set(C,g),P("th",{class:C,colspan:g.colSpan,key:`${g.id}-thead`,rowspan:g.rowSpan,scope:g.colSpan>1?"colgroup":"col",ariaSort:g.sortable?g.order:void 0,style:a(f,y,N,g),onClick:m=>{var x;(x=m.currentTarget)!=null&&x.classList.contains("noclick")||o(m,g)},onContextmenu:m=>r(m,g),onMousedown:m=>i(m,g),onMousemove:m=>d(m,g),onMouseout:h},[P("div",{class:["cell",g.filteredValue&&g.filteredValue.length>0?"highlight":""]},[g.renderHeader?g.renderHeader({column:g,$index:y,store:v,_self:b}):g.label,g.sortable&&P("button",{type:"button",class:"caret-wrapper","aria-label":t("el.table.sortLabel",{column:g.label||""}),onClick:m=>p(m,g)},[P("i",{onClick:m=>p(m,g,"ascending"),class:"sort-caret ascending"}),P("i",{onClick:m=>p(m,g,"descending"),class:"sort-caret descending"})]),g.filterable&&P(ts,{store:v,placement:g.filterPlacement||"bottom-start",appendTo:b==null?void 0:b.appendFilterPanelTo,column:g,upDataColumn:(m,x)=>{g[m]=x}},{"filter-icon":()=>g.renderFilterIcon?g.renderFilterIcon({filterOpened:g.filterOpened}):null})])])}))))}});function as(e){const t=Le(Re),l=O(""),n=O(P("div")),a=(v,b,w)=>{var g,y;const T=t,L=xt(v);let N=null;const f=(g=T==null?void 0:T.vnode.el)==null?void 0:g.dataset.prefix;L&&(N=ml({columns:((y=e.store)==null?void 0:y.states.columns.value)??[]},L,f),N&&(T==null||T.emit(`cell-${w}`,b,N,L,v))),T==null||T.emit(`row-${w}`,b,N,v)},u=(v,b)=>{a(v,b,"dblclick")},c=(v,b)=>{var w;(w=e.store)==null||w.commit("setCurrentRow",b),a(v,b,"click")},s=(v,b)=>{a(v,b,"contextmenu")},o=pt(v=>{var b;(b=e.store)==null||b.commit("setHoverRow",v)},30),r=pt(()=>{var v;(v=e.store)==null||v.commit("setHoverRow",null)},30),i=v=>{const b=window.getComputedStyle(v,null);return{left:Number.parseInt(b.paddingLeft,10)||0,right:Number.parseInt(b.paddingRight,10)||0,top:Number.parseInt(b.paddingTop,10)||0,bottom:Number.parseInt(b.paddingBottom,10)||0}},d=(v,b,w)=>{var L;let T=(L=b==null?void 0:b.target)==null?void 0:L.parentNode;for(;v>1&&(T=T==null?void 0:T.nextSibling,!(!T||T.nodeName!=="TR"));)w(T,"hover-row hover-fixed-row"),v--};return{handleDoubleClick:u,handleClick:c,handleContextMenu:s,handleMouseEnter:o,handleMouseLeave:r,handleCellMouseEnter:(v,b,w)=>{var z,$,M;if(!t)return;const T=t,L=xt(v),N=(z=T==null?void 0:T.vnode.el)==null?void 0:z.dataset.prefix;let f=null;if(L){if(f=ml({columns:(($=e.store)==null?void 0:$.states.columns.value)??[]},L,N),!f)return;L.rowSpan>1&&d(L.rowSpan,v,vt);const V=T.hoverState={cell:L,column:f,row:b};T==null||T.emit("cell-mouse-enter",V.row,V.column,V.cell,v)}if(!w){(q==null?void 0:q.trigger)===L&&(q==null||q());return}const g=v.target.querySelector(".cell");if(!(it(g,`${N}-tooltip`)&&g.childNodes.length&&((M=g.textContent)!=null&&M.trim())))return;const y=document.createRange();y.setStart(g,0),y.setEnd(g,g.childNodes.length);const{width:C,height:m}=y.getBoundingClientRect(),{width:x,height:R}=g.getBoundingClientRect(),{top:k,left:D,right:j,bottom:X}=i(g),W=D+j,F=k+X;St(C+W,x)||St(m+F,R)||St(g.scrollWidth,x)?za(w,((L==null?void 0:L.innerText)||(L==null?void 0:L.textContent))??"",b,f,L,T):(q==null?void 0:q.trigger)===L&&(q==null||q())},handleCellMouseLeave:v=>{const b=xt(v);if(!b)return;b.rowSpan>1&&d(b.rowSpan,v,tt);const w=t==null?void 0:t.hoverState;t==null||t.emit("cell-mouse-leave",w==null?void 0:w.row,w==null?void 0:w.column,w==null?void 0:w.cell,v)},tooltipContent:l,tooltipTrigger:n}}function ss(e){const t=Le(Re),l=Ee("table");return{getRowStyle:(r,i)=>{const d=t==null?void 0:t.props.rowStyle;return Ce(d)?d.call(null,{row:r,rowIndex:i}):d||null},getRowClass:(r,i,d)=>{var v;const p=[l.e("row")];t!=null&&t.props.highlightCurrentRow&&r===((v=e.store)==null?void 0:v.states.currentRow.value)&&p.push("current-row"),e.stripe&&d%2===1&&p.push(l.em("row","striped"));const h=t==null?void 0:t.props.rowClassName;return we(h)?p.push(h):Ce(h)&&p.push(h.call(null,{row:r,rowIndex:i})),p},getCellStyle:(r,i,d,p)=>{const h=t==null?void 0:t.props.cellStyle;let v=h??{};Ce(h)&&(v=h.call(null,{rowIndex:r,columnIndex:i,row:d,column:p}));const b=qt(i,e==null?void 0:e.fixed,e.store);return qe(b,"left"),qe(b,"right"),Object.assign({},v,b)},getCellClass:(r,i,d,p,h)=>{const v=Yt(l.b(),i,e==null?void 0:e.fixed,e.store,void 0,h),b=[p.id,p.align,p.className,...v],w=t==null?void 0:t.props.cellClassName;return we(w)?b.push(w):Ce(w)&&b.push(w.call(null,{rowIndex:r,columnIndex:i,row:d,column:p})),b.push(l.e("cell")),b.filter(T=>!!T).join(" ")},getSpan:(r,i,d,p)=>{let h=1,v=1;const b=t==null?void 0:t.props.spanMethod;if(Ce(b)){const w=b({row:r,column:i,rowIndex:d,columnIndex:p});ie(w)?(h=w[0],v=w[1]):gt(w)&&(h=w.rowspan,v=w.colspan)}return{rowspan:h,colspan:v}},getColspanRealWidth:(r,i,d)=>{if(i<1)return r[d].realWidth;const p=r.map(({realWidth:h,width:v})=>h||v).slice(d,d+i);return Number(p.reduce((h,v)=>Number(h)+Number(v),-1))}}}const os=["colspan","rowspan"];var rs=De({name:"TableTdWrapper",__name:"td-wrapper",props:{colspan:{type:Number,default:1},rowspan:{type:Number,default:1}},setup(e){return(t,l)=>(te(),ye("td",{colspan:e.colspan,rowspan:e.rowspan},[Be(t.$slots,"default")],8,os))}}),is=rs;function us(e){const t=Le(Re),l=Ee("table"),{handleDoubleClick:n,handleClick:a,handleContextMenu:u,handleMouseEnter:c,handleMouseLeave:s,handleCellMouseEnter:o,handleCellMouseLeave:r,tooltipContent:i,tooltipTrigger:d}=as(e),{getRowStyle:p,getRowClass:h,getCellStyle:v,getCellClass:b,getSpan:w,getColspanRealWidth:T}=ss(e);let L=-1;const N=Y(()=>{var m;return(m=e.store)==null?void 0:m.states.columns.value.findIndex(({type:x})=>x==="default")}),f=(m,x)=>{var k;const R=(k=t==null?void 0:t.props)==null?void 0:k.rowKey;return R?U(m,R):x},g=(m,x,R,k=!1)=>{const{tooltipEffect:D,tooltipOptions:j,store:X}=e,{indent:W,columns:F}=X.states,z=[];let $=!0;return R&&(z.push(l.em("row",`level-${R.level}`)),$=!!R.display),x===0&&(L=-1),e.stripe&&$&&L++,z.push(...h(m,x,L)),P("tr",{style:[$?null:{display:"none"},p(m,x)],class:z,key:f(m,x),onDblclick:M=>n(M,m),onClick:M=>a(M,m),onContextmenu:M=>u(M,m),onMouseenter:()=>c(x),onMouseleave:s},F.value.map((M,V)=>{const{rowspan:J,colspan:Q}=w(m,M,x,V);if(!J||!Q)return null;const le=Object.assign({},M);le.realWidth=T(F.value,Q,V);const Z={store:X,_self:e.context||t,column:le,row:m,$index:x,cellIndex:V,expanded:k};V===N.value&&R&&(Z.treeNode={indent:R.level&&R.level*W.value,level:R.level},$e(R.expanded)&&(Z.treeNode.expanded=R.expanded,"loading"in R&&(Z.treeNode.loading=R.loading),"noLazyChildren"in R&&(Z.treeNode.noLazyChildren=R.noLazyChildren)));const re=`${f(m,x)},${V}`,ge=le.columnKey||le.rawColumnKey||"",ve=M.showOverflowTooltip&&$l({effect:D},j,M.showOverflowTooltip);return P(is,{style:v(x,V,m,M),class:b(x,V,m,M,Q-1),key:`${ge}${re}`,rowspan:J,colspan:Q,onMouseenter:Se=>o(Se,m,ve),onMouseleave:r},{default:()=>y(V,M,Z)})}))},y=(m,x,R)=>x.renderCell(R);return{wrappedRowRender:(m,x)=>{const R=e.store,{isRowExpanded:k,assertRowKey:D}=R,{treeData:j,lazyTreeNodeMap:X,childrenColumnName:W,rowKey:F}=R.states,z=R.states.columns.value;if(z.some(({type:$})=>$==="expand")){const $=k(m),M=g(m,x,void 0,$),V=t==null?void 0:t.renderExpanded;if(!V)return console.error("[Element Error]renderExpanded is required."),M;const J=[[M]];return(t.props.preserveExpandedContent||$)&&J[0].push(P("tr",{key:`expanded-row__${M.key}`,style:{display:$?"":"none"}},[P("td",{colspan:z.length,class:`${l.e("cell")} ${l.e("expanded-cell")}`},[V({row:m,$index:x,store:R,expanded:$})])])),J}else if(Object.keys(j.value).length){D();const $=U(m,F.value);let M=j.value[$],V=null;M&&(V={expanded:M.expanded,level:M.level,display:!0,noLazyChildren:void 0,loading:void 0},$e(M.lazy)&&(V&&$e(M.loaded)&&M.loaded&&(V.noLazyChildren=!(M.children&&M.children.length)),V.loading=M.loading));const J=[g(m,x,V??void 0)];if(M){let Q=0;const le=(Z,re)=>{Z&&Z.length&&re&&Z.forEach(ge=>{const ve={display:re.display&&re.expanded,level:re.level+1,expanded:!1,noLazyChildren:!1,loading:!1},Se=U(ge,F.value);if(Je(Se))throw new Error("For nested data item, row-key is required.");M={...j.value[Se]},M&&(ve.expanded=M.expanded,M.level=M.level||ve.level,M.display=!!(M.expanded&&ve.display),$e(M.lazy)&&($e(M.loaded)&&M.loaded&&(ve.noLazyChildren=!(M.children&&M.children.length)),ve.loading=M.loading)),Q++,J.push(g(ge,x+Q,ve)),M&&le(X.value[Se]||ge[W.value],M)})};M.display=!0,le(X.value[$]||m[W.value],M)}return J}else return g(m,x,void 0)},tooltipContent:i,tooltipTrigger:d}}const cs={store:{required:!0,type:Object},stripe:Boolean,tooltipEffect:String,tooltipOptions:{type:Object},context:{default:()=>({}),type:Object},rowClassName:[String,Function],rowStyle:[Object,Function],fixed:{type:String,default:""},highlight:Boolean};var ds=De({name:"ElTableBody",props:cs,setup(e){var i;const t=he(),l=Le(Re),n=Ee("table"),{wrappedRowRender:a,tooltipContent:u,tooltipTrigger:c}=us(e),{onColumnsChange:s,onScrollableChange:o}=Ut(l),r=[];return ne((i=e.store)==null?void 0:i.states.hoverRow,(d,p)=>{var T,L;const h=t==null?void 0:t.vnode.el,v=Array.from((h==null?void 0:h.children)||[]).filter(N=>N==null?void 0:N.classList.contains(`${n.e("row")}`));let b=d;const w=(T=v[b])==null?void 0:T.childNodes;if(w!=null&&w.length){let N=0;Array.from(w).reduce((f,g,y)=>{var C,m;return((C=w[y])==null?void 0:C.colSpan)>1&&(N=(m=w[y])==null?void 0:m.colSpan),g.nodeName!=="TD"&&N===0&&f.push(y),N>0&&N--,f},[]).forEach(f=>{var g;for(b=d;b>0;){const y=(g=v[b-1])==null?void 0:g.childNodes;if(y[f]&&y[f].nodeName==="TD"&&y[f].rowSpan>1){vt(y[f],"hover-cell"),r.push(y[f]);break}b--}})}else r.forEach(N=>tt(N,"hover-cell")),r.length=0;!((L=e.store)!=null&&L.states.isComplex.value)||!et||oa(()=>{const N=v[p],f=v[d];N&&!N.classList.contains("hover-fixed-row")&&tt(N,"hover-row"),f&&vt(f,"hover-row")})}),Pt(()=>{q==null||q()}),{ns:n,onColumnsChange:s,onScrollableChange:o,wrappedRowRender:a,tooltipContent:u,tooltipTrigger:c}},render(){const{wrappedRowRender:e,store:t}=this;return P("tbody",{tabIndex:-1},[((t==null?void 0:t.states.data.value)||[]).reduce((l,n)=>l.concat(e(n,l.length)),[])])}});function fs(){var t;const e=(t=Le(Re))==null?void 0:t.store;return{leftFixedLeafCount:Y(()=>(e==null?void 0:e.states.fixedLeafColumnsLength.value)??0),rightFixedLeafCount:Y(()=>(e==null?void 0:e.states.rightFixedColumns.value.length)??0),columnsCount:Y(()=>(e==null?void 0:e.states.columns.value.length)??0),leftFixedCount:Y(()=>(e==null?void 0:e.states.fixedColumns.value.length)??0),rightFixedCount:Y(()=>(e==null?void 0:e.states.rightFixedColumns.value.length)??0),columns:Y(()=>(e==null?void 0:e.states.columns.value)??[])}}function hs(e){const{columns:t}=fs(),l=Ee("table");return{getCellClasses:(u,c)=>{const s=u[c],o=[l.e("cell"),s.id,s.align,s.labelClassName,...Yt(l.b(),c,s.fixed,e.store)];return s.className&&o.push(s.className),s.children||o.push(l.is("leaf")),o},getCellStyles:(u,c)=>{const s=qt(c,u.fixed,e.store);return qe(s,"left"),qe(s,"right"),s},columns:t}}var wl=De({name:"ElTableFooter",props:{fixed:{type:String,default:""},store:{required:!0,type:Object},summaryMethod:Function,sumText:String,border:Boolean,defaultSort:{type:Object,default:()=>({prop:"",order:""})}},setup(e){const t=Le(Re),l=Ee("table"),{getCellClasses:n,getCellStyles:a,columns:u}=hs(e),{onScrollableChange:c,onColumnsChange:s}=Ut(t);return{ns:l,onScrollableChange:c,onColumnsChange:s,getCellClasses:n,getCellStyles:a,columns:u}},render(){const{columns:e,getCellStyles:t,getCellClasses:l,summaryMethod:n,sumText:a}=this,u=this.store.states.data.value;let c=[];return n?c=n({columns:e,data:u}):e.forEach((s,o)=>{if(o===0){c[o]=a;return}const r=u.map(h=>Number(h[s.property])),i=[];let d=!0;r.forEach(h=>{if(!Number.isNaN(+h)){d=!1;const v=`${h}`.split(".")[1];i.push(v?v.length:0)}});const p=Math.max.apply(null,i);d?c[o]="":c[o]=r.reduce((h,v)=>{const b=Number(v);return Number.isNaN(+b)?h:Number.parseFloat((h+v).toFixed(Math.min(p,20)))},0)}),P(P("tfoot",[P("tr",{},[...e.map((s,o)=>P("td",{key:o,colspan:s.colSpan,rowspan:s.rowSpan,class:l(e,o),style:t(s,o)},[P("div",{class:["cell",s.labelClassName]},[c[o]])]))])]))}});function gs(e){return{setCurrentRow:p=>{e.commit("setCurrentRow",p)},getSelectionRows:()=>e.getSelectionRows(),getHalfSelectionRows:()=>e.getHalfSelectionRows(),toggleRowSelection:(p,h,v=!0)=>{e.toggleRowSelection(p,h,!1,v),e.updateAllSelected()},clearSelection:()=>{e.clearSelection()},clearFilter:p=>{e.clearFilter(p)},toggleAllSelection:()=>{e.commit("toggleAllSelection")},toggleRowExpansion:(p,h)=>{e.toggleRowExpansionAdapter(p,h)},clearSort:()=>{e.clearSort()},sort:(p,h)=>{e.commit("sort",{prop:p,order:h})},updateKeyChildren:(p,h)=>{e.updateKeyChildren(p,h)}}}function vs(e,t,l,n){const a=O(!1),u=O(null),c=O(!1),s=W=>{c.value=W},o=O({width:null,height:null,headerHeight:null}),r=O(!1),i={display:"inline-block",verticalAlign:"middle"},d=O(),p=O(0),h=O(0),v=O(0),b=O(0),w=O(0);ne(()=>e.height,W=>{t.setHeight(W??null)},{immediate:!0}),ne(()=>e.maxHeight,W=>{t.setMaxHeight(W??null)},{immediate:!0}),ne(()=>[e.currentRowKey,l.states.rowKey],([W,F])=>{!S(F)||!S(W)||l.setCurrentRowKey(`${W}`)},{immediate:!0}),ne(()=>e.data,W=>{n.store.commit("setData",W)},{immediate:!0,deep:!0}),Rt(()=>{e.expandRowKeys&&l.setExpandRowKeysAdapter(e.expandRowKeys)});const T=()=>{n.store.commit("setHoverRow",null),n.hoverState&&(n.hoverState=null)},L=(W,F)=>{const{pixelX:z,pixelY:$}=F;Math.abs(z)>=Math.abs($)&&(n.refs.bodyWrapper.scrollLeft+=F.pixelX/5)},N=Y(()=>e.height||e.maxHeight||l.states.fixedColumns.value.length>0||l.states.rightFixedColumns.value.length>0),f=Y(()=>({width:t.bodyWidth.value?`${t.bodyWidth.value}px`:""})),g=()=>{N.value&&t.updateElsHeight(),t.updateColumnsWidth(),!(typeof window>"u")&&requestAnimationFrame(x)};lt(async()=>{await Ye(),l.updateColumns(),R(),requestAnimationFrame(g);const W=n.vnode.el,F=n.refs.headerWrapper;e.flexible&&W&&W.parentElement&&(W.parentElement.style.minWidth="0"),o.value={width:d.value=W.offsetWidth,height:W.offsetHeight,headerHeight:e.showHeader&&F?F.offsetHeight:null},l.states.columns.value.forEach(z=>{z.filteredValue&&z.filteredValue.length&&n.store.commit("filterChange",{column:z,values:z.filteredValue,silent:!0})}),n.$ready=!0});const y=(W,F)=>{if(!W)return;const z=Array.from(W.classList).filter($=>!$.startsWith("is-scrolling-"));z.push(t.scrollX.value?F:"is-scrolling-none"),W.className=z.join(" ")},C=W=>{const{tableWrapper:F}=n.refs;y(F,W)},m=W=>{const{tableWrapper:F}=n.refs;return!!(F&&F.classList.contains(W))},x=function(){if(!n.refs.scrollBarRef)return;if(!t.scrollX.value){const J="is-scrolling-none";m(J)||C(J);return}const W=n.refs.scrollBarRef.wrapRef;if(!W)return;const{scrollLeft:F,offsetWidth:z,scrollWidth:$}=W,{headerWrapper:M,footerWrapper:V}=n.refs;M&&(M.scrollLeft=F),V&&(V.scrollLeft=F),F>=$-z-1?C("is-scrolling-right"):C(F===0?"is-scrolling-left":"is-scrolling-middle")},R=()=>{n.refs.scrollBarRef&&(n.refs.scrollBarRef.wrapRef&&il(n.refs.scrollBarRef.wrapRef,"scroll",x,{passive:!0}),e.fit?ul(n.vnode.el,k):il(window,"resize",k),ul(n.refs.tableInnerWrapper,()=>{var W,F;k(),(F=(W=n.refs)==null?void 0:W.scrollBarRef)==null||F.update()}))},k=()=>{var le,Z,re,ge;const W=n.vnode.el;if(!n.$ready||!W)return;let F=!1;const{width:z,height:$,headerHeight:M}=o.value,V=d.value=W.offsetWidth;z!==V&&(F=!0);const J=W.offsetHeight;(e.height||N.value)&&$!==J&&(F=!0);const Q=e.tableLayout==="fixed"?n.refs.headerWrapper:(le=n.refs.tableHeaderRef)==null?void 0:le.$el;e.showHeader&&(Q==null?void 0:Q.offsetHeight)!==M&&(F=!0),p.value=((Z=n.refs.tableWrapper)==null?void 0:Z.scrollHeight)||0,v.value=(Q==null?void 0:Q.scrollHeight)||0,b.value=((re=n.refs.footerWrapper)==null?void 0:re.offsetHeight)||0,w.value=((ge=n.refs.appendWrapper)==null?void 0:ge.offsetHeight)||0,h.value=p.value-v.value-b.value-w.value,F&&(o.value={width:V,height:J,headerHeight:e.showHeader&&(Q==null?void 0:Q.offsetHeight)||0},g())},D=ra(),j=Y(()=>{const{bodyWidth:W,scrollY:F,gutterWidth:z}=t;return W.value?`${W.value-(F.value?z:0)}px`:""}),X=Y(()=>e.maxHeight?"fixed":e.tableLayout);return{isHidden:a,renderExpanded:u,setDragVisible:s,isGroup:r,handleMouseLeave:T,handleHeaderFooterMousewheel:L,tableSize:D,emptyBlockStyle:Y(()=>{if(e.data&&e.data.length)return;let W="100%";e.height&&h.value&&(W=`${h.value}px`);const F=d.value;return{width:F?`${F}px`:"",height:W}}),resizeProxyVisible:c,bodyWidth:j,resizeState:o,doLayout:g,tableBodyStyles:f,tableLayout:X,scrollbarViewStyle:i,scrollbarStyle:Y(()=>e.height?{height:"100%"}:e.maxHeight?Number.isNaN(Number(e.maxHeight))?{maxHeight:`calc(${e.maxHeight} - ${v.value+b.value}px)`}:{maxHeight:`${+e.maxHeight-v.value-b.value}px`}:{})}}function ps(e){let t;const l=()=>{const n=e.vnode.el.querySelector(".hidden-columns"),a={childList:!0,subtree:!0},u=e.store.states.updateOrderFns;t=new MutationObserver(()=>{u.forEach(c=>c())}),t.observe(n,a)};lt(()=>{l()}),Pt(()=>{t==null||t.disconnect()})}function ht(e){const t=e.tableLayout==="auto";let l=e.columns||[];t&&l.every(({width:a})=>be(a))&&(l=[]);const n=a=>{const u={key:`${e.tableLayout}_${a.id}`,style:{},name:void 0};return t?u.style={width:`${a.width}px`}:u.name=a.id,u};return P("colgroup",{},l.map(a=>P("col",n(a))))}ht.props=["columns","tableLayout"];const ms=()=>{const e=O(),t=(u,c)=>{const s=e.value;s&&s.scrollTo(u,c)},l=(u,c)=>{const s=e.value;s&&je(c)&&["Top","Left"].includes(u)&&s[`setScroll${u}`](c)};return{scrollBarRef:e,scrollTo:t,setScrollTop:u=>l("Top",u),setScrollLeft:u=>l("Left",u)}},ys=["data-prefix"],Cs={ref:"hiddenColumns",class:"hidden-columns"};var bs=De({name:"ElTable",__name:"table",props:Na,emits:["select","select-all","selection-change","cell-mouse-enter","cell-mouse-leave","cell-dblclick","cell-contextmenu","cell-click","row-dblclick","row-click","row-contextmenu","header-click","header-contextmenu","sort-change","filter-change","current-change","header-dragend","expand-change","scroll"],setup(e,{expose:t}){const l=e,{t:n}=Ct(),a=Ee("table"),u=jt("table"),c=he();Dn(Re,c);const s=_a(c,l);c.store=s;const o=new qa({store:c.store,table:c,fit:l.fit,showHeader:l.showHeader});c.layout=o;const r=Y(()=>(s.states.data.value||[]).length===0),{setCurrentRow:i,getSelectionRows:d,getHalfSelectionRows:p,toggleRowSelection:h,clearSelection:v,clearFilter:b,toggleAllSelection:w,toggleRowExpansion:T,clearSort:L,sort:N,updateKeyChildren:f}=gs(s),{isHidden:g,renderExpanded:y,setDragVisible:C,isGroup:m,handleMouseLeave:x,handleHeaderFooterMousewheel:R,tableSize:k,emptyBlockStyle:D,resizeProxyVisible:j,bodyWidth:X,resizeState:W,doLayout:F,tableBodyStyles:z,tableLayout:$,scrollbarViewStyle:M,scrollbarStyle:V}=vs(l,o,s,c),{scrollBarRef:J,scrollTo:Q,setScrollLeft:le,setScrollTop:Z}=ms(),re=pt(F,50),ge=Fa(a.namespace.value),ve=c;c.tableId=ge,c.state={isGroup:m,resizeState:W,doLayout:F,debouncedUpdateLayout:re};const Se=Y(()=>l.sumText??n("el.table.sumText")),Fe=Y(()=>l.emptyText??n("el.table.emptyText")),nt=Y(()=>{var pe;return l.tooltipEffect??((pe=u.value)==null?void 0:pe.tooltipEffect)}),at=Y(()=>{var pe;return l.tooltipOptions??((pe=u.value)==null?void 0:pe.tooltipOptions)}),Xe=Y(()=>Zl(s.states.originColumns.value)[0]);return ps(c),Vt(()=>{re.cancel()}),t({ns:a,layout:o,store:s,columns:Xe,handleHeaderFooterMousewheel:R,handleMouseLeave:x,tableId:ge,tableSize:k,isHidden:g,isEmpty:r,renderExpanded:y,resizeProxyVisible:j,resizeState:W,isGroup:m,bodyWidth:X,tableBodyStyles:z,emptyBlockStyle:D,debouncedUpdateLayout:re,setCurrentRow:i,getSelectionRows:d,getHalfSelectionRows:p,toggleRowSelection:h,clearSelection:v,clearFilter:b,toggleAllSelection:w,toggleRowExpansion:T,clearSort:L,doLayout:F,sort:N,updateKeyChildren:f,t:n,setDragVisible:C,context:ve,computedSumText:Se,computedEmptyText:Fe,computedTooltipEffect:nt,computedTooltipOptions:at,tableLayout:$,scrollbarViewStyle:M,scrollbarStyle:V,scrollBarRef:J,scrollTo:Q,setScrollLeft:le,setScrollTop:Z,allowDragLastColumn:l.allowDragLastColumn}),(pe,Me)=>(te(),ye("div",{ref:"tableWrapper",class:G([{[S(a).m("fit")]:e.fit,[S(a).m("striped")]:e.stripe,[S(a).m("border")]:e.border||S(m),[S(a).m("hidden")]:S(g),[S(a).m("group")]:S(m),[S(a).m("fluid-height")]:e.maxHeight,[S(a).m("scrollable-x")]:S(o).scrollX.value,[S(a).m("scrollable-y")]:S(o).scrollY.value,[S(a).m("enable-row-hover")]:!S(s).states.isComplex.value,[S(a).m("enable-row-transition")]:(S(s).states.data.value||[]).length!==0&&(S(s).states.data.value||[]).length<100,"has-footer":e.showSummary},S(a).m(S(k)),e.className,S(a).b(),S(a).m(`layout-${S($)}`)]),style:Qe(e.style),"data-prefix":S(a).namespace.value,onMouseleave:Me[1]||(Me[1]=(...Ue)=>S(x)&&S(x)(...Ue))},[fe("div",{ref:"tableInnerWrapper",class:G(S(a).e("inner-wrapper"))},[fe("div",Cs,[Be(pe.$slots,"default")],512),e.showHeader&&S($)==="fixed"?wt((te(),ye("div",{key:0,ref:"headerWrapper",class:G(S(a).e("header-wrapper"))},[fe("table",{ref:"tableHeader",class:G(S(a).e("header")),style:Qe(S(z)),border:"0",cellpadding:"0",cellspacing:"0"},[xe(S(ht),{columns:S(s).states.columns.value,"table-layout":S($)},null,8,["columns","table-layout"]),xe(S(bl),{ref:"tableHeaderRef",border:e.border,"default-sort":e.defaultSort,store:S(s),"append-filter-panel-to":e.appendFilterPanelTo,"allow-drag-last-column":e.allowDragLastColumn,onSetDragVisible:S(C)},null,8,["border","default-sort","store","append-filter-panel-to","allow-drag-last-column","onSetDragVisible"])],6)],2)),[[S(pl),S(R)]]):He("v-if",!0),fe("div",{ref:"bodyWrapper",class:G(S(a).e("body-wrapper"))},[xe(S(Fl),{ref_key:"scrollBarRef",ref:J,"view-style":S(M),"wrap-style":S(V),always:e.scrollbarAlwaysOn,tabindex:e.scrollbarTabindex,native:e.nativeScrollbar,onScroll:Me[0]||(Me[0]=Ue=>pe.$emit("scroll",Ue))},{default:Ae(()=>[fe("table",{ref:"tableBody",class:G(S(a).e("body")),cellspacing:"0",cellpadding:"0",border:"0",style:Qe({width:S(X),tableLayout:S($)})},[xe(S(ht),{columns:S(s).states.columns.value,"table-layout":S($)},null,8,["columns","table-layout"]),e.showHeader&&S($)==="auto"?(te(),Ke(S(bl),{key:0,ref:"tableHeaderRef",class:G(S(a).e("body-header")),border:e.border,"default-sort":e.defaultSort,store:S(s),"append-filter-panel-to":e.appendFilterPanelTo,onSetDragVisible:S(C)},null,8,["class","border","default-sort","store","append-filter-panel-to","onSetDragVisible"])):He("v-if",!0),xe(S(ds),{context:S(ve),highlight:e.highlightCurrentRow,"row-class-name":e.rowClassName,"tooltip-effect":nt.value,"tooltip-options":at.value,"row-style":e.rowStyle,store:S(s),stripe:e.stripe},null,8,["context","highlight","row-class-name","tooltip-effect","tooltip-options","row-style","store","stripe"]),e.showSummary&&S($)==="auto"?(te(),Ke(S(wl),{key:1,class:G(S(a).e("body-footer")),border:e.border,"default-sort":e.defaultSort,store:S(s),"sum-text":Se.value,"summary-method":e.summaryMethod},null,8,["class","border","default-sort","store","sum-text","summary-method"])):He("v-if",!0)],6),r.value?(te(),ye("div",{key:0,ref:"emptyBlock",style:Qe(S(D)),class:G(S(a).e("empty-block"))},[fe("span",{class:G(S(a).e("empty-text"))},[Be(pe.$slots,"empty",{},()=>[Dt(Pe(Fe.value),1)])],2)],6)):He("v-if",!0),pe.$slots.append?(te(),ye("div",{key:1,ref:"appendWrapper",class:G(S(a).e("append-wrapper"))},[Be(pe.$slots,"append")],2)):He("v-if",!0)]),_:3},8,["view-style","wrap-style","always","tabindex","native"])],2),e.showSummary&&S($)==="fixed"?wt((te(),ye("div",{key:1,ref:"footerWrapper",class:G(S(a).e("footer-wrapper"))},[fe("table",{class:G(S(a).e("footer")),cellspacing:"0",cellpadding:"0",border:"0",style:Qe(S(z))},[xe(S(ht),{columns:S(s).states.columns.value,"table-layout":S($)},null,8,["columns","table-layout"]),xe(S(wl),{border:e.border,"default-sort":e.defaultSort,store:S(s),"sum-text":Se.value,"summary-method":e.summaryMethod},null,8,["border","default-sort","store","sum-text","summary-method"])],6)],2)),[[cl,!r.value],[S(pl),S(R)]]):He("v-if",!0),e.border||S(m)?(te(),ye("div",{key:2,class:G(S(a).e("border-left-patch"))},null,2)):He("v-if",!0)],2),wt(fe("div",{ref:"resizeProxy",class:G(S(a).e("column-resize-proxy"))},null,2),[[cl,S(j)]])],46,ys))}}),ws=bs;const Ss={type:{type:String,default:"default"},label:String,className:String,labelClassName:String,property:String,prop:String,width:{type:[String,Number],default:""},minWidth:{type:[String,Number],default:""},renderHeader:Function,sortable:{type:[Boolean,String],default:!1},sortMethod:Function,sortBy:[String,Function,Array],resizable:{type:Boolean,default:!0},columnKey:String,align:String,headerAlign:String,showOverflowTooltip:{type:[Boolean,Object],default:void 0},tooltipFormatter:Function,fixed:[Boolean,String],formatter:Function,selectable:Function,reserveSelection:Boolean,filterMethod:Function,filteredValue:Array,filters:Array,filterPlacement:String,filterMultiple:{type:Boolean,default:!0},filterClassName:String,index:[Number,Function],sortOrders:{type:Array,default:()=>["ascending","descending",null],validator:e=>e.every(t=>["ascending","descending",null].includes(t))}},xs={selection:"table-column--selection",expand:"table__expand-column"},Es={default:{order:""},selection:{width:48,minWidth:48,realWidth:48,order:""},expand:{width:48,minWidth:48,realWidth:48,order:""},index:{width:48,minWidth:48,realWidth:48,order:""}},Rs=e=>xs[e]||"",Ns={selection:{renderHeader({store:e}){function t(){return e.states.data.value&&e.states.data.value.length===0}return P(mt,{disabled:t(),size:e.states.tableSize.value,indeterminate:e.states.selection.value.length>0&&!e.states.isAllSelected.value,"onUpdate:modelValue":e.toggleAllSelection??void 0,modelValue:e.states.isAllSelected.value,ariaLabel:e.t("el.table.selectAllLabel")})},renderCell({row:e,column:t,store:l,$index:n}){return P(mt,{disabled:t.selectable?!t.selectable.call(null,e,n):!1,size:l.states.tableSize.value,onChange:()=>{l.commit("rowSelectedChanged",e)},onClick:a=>a.stopPropagation(),modelValue:l.isSelected(e),indeterminate:l.getRowIndeterminate(e),ariaLabel:l.t("el.table.selectRowLabel")})},sortable:!1,resizable:!1},index:{renderHeader({column:e}){return e.label||"#"},renderCell({column:e,$index:t}){let l=t+1;const n=e.index;return je(n)?l=t+n:Ce(n)&&(l=n(t)),P("div",{},[l])},sortable:!1},expand:{renderHeader({column:e}){return e.label||""},renderCell({column:e,row:t,store:l,expanded:n,$index:a}){var r,i;const{ns:u}=l,c=[u.e("expand-icon")];!e.renderExpand&&n&&c.push(u.em("expand-icon","expanded"));const s=function(d){d.stopPropagation(),l.toggleRowExpansion(t)},o=((i=(r=l.states.rowExpandable).value)==null?void 0:i.call(r,t,a))??!0;return o||c.push(u.is("disabled")),P("button",{type:"button",disabled:!o,"aria-label":l.t(n?"el.table.collapseRowLabel":"el.table.expandRowLabel"),"aria-expanded":n,class:c,onClick:s},{default:()=>e.renderExpand?[e.renderExpand({expanded:n,expandable:o})]:[P(Bt,null,{default:()=>[P(Ll)]})]})},sortable:!1,resizable:!1}};function Os({row:e,column:t,$index:l}){var u;const n=t.property,a=n&&Nl(e,n).value;return t&&t.formatter?t.formatter(e,t,a,l):((u=a==null?void 0:a.toString)==null?void 0:u.call(a))||""}function Ls({row:e,treeNode:t,store:l},n=!1){const{ns:a}=l;if(!t)return n?[P("span",{class:a.e("placeholder")})]:null;const u=[],c=function(s){s.stopPropagation(),!t.loading&&l.loadOrToggle(e)};if(t.indent&&u.push(P("span",{class:a.e("indent"),style:{"padding-left":`${t.indent}px`}})),$e(t.expanded)&&!t.noLazyChildren){const s=[a.e("expand-icon"),t.expanded?a.em("expand-icon","expanded"):""];let o=Ll;t.loading&&(o=Pn),u.push(P("button",{type:"button","aria-label":l.t(t.expanded?"el.table.collapseRowLabel":"el.table.expandRowLabel"),"aria-expanded":t.expanded,class:s,onClick:c},{default:()=>[P(Bt,{class:a.is("loading",t.loading)},{default:()=>[P(o)]})]}))}else u.push(P("span",{class:a.e("placeholder")}));return u}function Sl(e,t){return e.reduce((l,n)=>(l[n]=n,l),t)}function Fs(e,t){const l=he();return{registerComplexWatchers:()=>{const u=["fixed"],c={realWidth:"width",realMinWidth:"minWidth"},s=Sl(u,c);Object.keys(s).forEach(o=>{const r=c[o];ze(t,r)&&ne(()=>t[r],i=>{let d=i;r==="width"&&o==="realWidth"&&(d=_t(i)),r==="minWidth"&&o==="realMinWidth"&&(d=Yl(i)),l.columnConfig.value[r]=d,l.columnConfig.value[o]=d;const p=r==="fixed";e.value.store.scheduleLayout(p)})})},registerNormalWatchers:()=>{const u=["label","filters","filterMultiple","filteredValue","sortable","index","formatter","className","labelClassName","filterClassName","showOverflowTooltip","tooltipFormatter","resizable"],c=["showOverflowTooltip"],s={property:"prop",align:"realAlign",headerAlign:"realHeaderAlign"},o=Sl(u,s);Object.keys(o).forEach(i=>{const d=s[i];ze(t,d)&&ne(()=>t[d],p=>{l.columnConfig.value[i]=p,(i==="filters"||i==="filterMethod")&&(l.columnConfig.value.filterable=!!(l.columnConfig.value.filters||l.columnConfig.value.filterMethod))})}),c.forEach(i=>{ze(e.value.props,i)&&ne(()=>e.value.props[i],d=>{l.columnConfig.value.type!=="selection"&&be(t[i])&&(l.columnConfig.value[i]=d)})});const r=jt("table");r.value&&ze(r.value,"showOverflowTooltip")&&ne(()=>{var i;return(i=r.value)==null?void 0:i.showOverflowTooltip},i=>{l.columnConfig.value.type!=="selection"&&(!be(t.showOverflowTooltip)||!be(e.value.props.showOverflowTooltip)||(l.columnConfig.value.showOverflowTooltip=i))})}}}function Ts(e,t,l){const n=he(),a=O(""),u=O(!1),c=O(),s=O(),o=Ee("table");Rt(()=>{c.value=e.align?`is-${e.align}`:null,c.value}),Rt(()=>{s.value=e.headerAlign?`is-${e.headerAlign}`:c.value,s.value});const r=Y(()=>{let f=n.vnode.vParent||n.parent;for(;f&&!f.tableId&&!f.columnId;)f=f.vnode.vParent||f.parent;return f}),i=Y(()=>{const{store:f}=n.parent;if(!f)return!1;const{treeData:g}=f.states,y=g.value;return y&&Object.keys(y).length>0}),d=O(_t(e.width)),p=O(Yl(e.minWidth)),h=f=>(d.value&&(f.width=d.value),p.value&&(f.minWidth=p.value),!d.value&&p.value&&(f.width=void 0),f.minWidth||(f.minWidth=80),f.realWidth=Number(be(f.width)?f.minWidth:f.width),f),v=f=>{const g=f.type,y=Ns[g]||{};Object.keys(y).forEach(m=>{const x=y[m];m!=="className"&&!be(x)&&(f[m]=x)});const C=Rs(g);if(C){const m=`${S(o.namespace)}-${C}`;f.className=f.className?`${f.className} ${m}`:m}return f},b=f=>{ie(f)?f.forEach(y=>g(y)):g(f);function g(y){var C;((C=y==null?void 0:y.type)==null?void 0:C.name)==="ElTableColumn"&&(y.vParent=n)}};return{columnId:a,realAlign:c,isSubColumn:u,realHeaderAlign:s,columnOrTableParent:r,setColumnWidth:h,setColumnForcedProps:v,setColumnRenders:f=>{e.renderHeader?Vn("TableColumn","Comparing to render-header, scoped-slot header is easier to use. We recommend users to use scoped-slot header."):f.type!=="selection"&&(f.renderHeader=y=>{if(n.columnConfig.value.label,t.header){const C=t.header(y);if(Ul(C))return P(Ze,C)}return Dt(f.label)}),t["filter-icon"]&&(f.renderFilterIcon=y=>Be(t,"filter-icon",y)),t.expand&&(f.renderExpand=y=>Be(t,"expand",y));let g=f.renderCell;return f.type==="expand"?(f.renderCell=y=>P("div",{class:"cell"},[g(y)]),l.value.renderExpanded=y=>t.default?t.default(y):t.default):(g=g||Os,f.renderCell=y=>{let C=null;if(t.default){const D=t.default(y);C=D.some(j=>j.type!==Rl)?D:g(y)}else C=g(y);const{columns:m}=l.value.store.states,x=m.value.findIndex(D=>D.type==="default"),R=Ls(y,i.value&&y.cellIndex===x),k={class:"cell",style:{}};return f.showOverflowTooltip&&(k.class=`${k.class} ${S(o.namespace)}-tooltip`,k.style={width:`${(y.column.realWidth||Number(y.column.width))-1}px`}),b(C),P("div",k,[R,C])}),f},getPropsData:(...f)=>f.reduce((g,y)=>(ie(y)&&y.forEach(C=>{g[C]=e[C]}),g),{}),getColumnElIndex:(f,g)=>Array.prototype.indexOf.call(f,g),updateColumnOrder:()=>{l.value.store.commit("updateColumnOrder",n.columnConfig.value)}}}var Ms=De({name:"ElTableColumn",__name:"index",props:Ss,setup(e){const t=e,l=jn(),n=he(),a=jt("table"),u=O({}),c=Y(()=>{let y=n.parent;for(;y&&!y.tableId;)y=y.parent;return y}),{registerNormalWatchers:s,registerComplexWatchers:o}=Fs(c,t),{columnId:r,isSubColumn:i,realHeaderAlign:d,columnOrTableParent:p,setColumnWidth:h,setColumnForcedProps:v,setColumnRenders:b,getPropsData:w,getColumnElIndex:T,realAlign:L,updateColumnOrder:N}=Ts(t,l,c),f=p.value;r.value=Ta("tableId"in f?f.tableId:f.columnId),Ol(()=>{var D,j;i.value=c.value!==f;const y=t.type||"default",C=t.sortable===""?!0:t.sortable,m=y==="selection"?!1:be(t.showOverflowTooltip)?f.props.showOverflowTooltip??((D=a.value)==null?void 0:D.showOverflowTooltip):t.showOverflowTooltip,x=be(t.tooltipFormatter)?f.props.tooltipFormatter??((j=a.value)==null?void 0:j.tooltipFormatter):t.tooltipFormatter,R={...Es[y],id:r.value,type:y,property:t.prop||t.property,align:L,headerAlign:d,showOverflowTooltip:m,tooltipFormatter:x,filterable:t.filters||t.filterMethod,filteredValue:[],filterPlacement:"",filterClassName:"",isColumnGroup:!1,isSubColumn:!1,filterOpened:!1,sortable:C,index:t.index,rawColumnKey:n.vnode.key};let k=w(["columnKey","label","className","labelClassName","type","renderHeader","formatter","fixed","resizable"],["sortMethod","sortBy","sortOrders"],["selectable","reserveSelection"],["filterMethod","filters","filterMultiple","filterOpened","filteredValue","filterPlacement","filterClassName"]);k=ka(R,k),k=Aa(b,h,v)(k),u.value=k,s(),o()}),lt(()=>{var x,R;const y=p.value,C=i.value?(x=y.vnode.el)==null?void 0:x.children:(R=y.refs.hiddenColumns)==null?void 0:R.children,m=()=>T(C||[],n.vnode.el);u.value.getColumnIndex=m,m()>-1&&c.value.store.commit("insertColumn",u.value,i.value?"columnConfig"in y&&y.columnConfig.value:null,N)}),Vt(()=>{const y=u.value.getColumnIndex;(y?y():-1)>-1&&c.value.store.commit("removeColumn",u.value,i.value?"columnConfig"in f&&f.columnConfig.value:null,N)}),n.columnId=r.value,n.columnConfig=u;const g=()=>{var y,C;try{const m=(y=l.default)==null?void 0:y.call(l,{row:{},column:{},$index:-1}),x=[];if(ie(m))for(const R of m)((C=R.type)==null?void 0:C.name)==="ElTableColumn"||R.shapeFlag&2?x.push(R):R.type===Ze&&ie(R.children)&&R.children.forEach(k=>{(k==null?void 0:k.patchFlag)!==1024&&!we(k==null?void 0:k.children)&&x.push(k)});return P("div",x)}catch{return P("div",[])}};return(y,C)=>(te(),Ke(g))}}),Ws=Ms,ks=Ws,en=ks;const Ys=_n(ws,{TableColumn:en}),qs=Yn(en);export{qs as E,Ys as a}; diff --git a/frontend/dist/assets/el-table-D97MvEgu.css b/frontend/dist/assets/el-table-D97MvEgu.css new file mode 100644 index 0000000..526fd64 --- /dev/null +++ b/frontend/dist/assets/el-table-D97MvEgu.css @@ -0,0 +1 @@ +.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:solid 1px var(--el-border-color-lighter);box-shadow:var(--el-box-shadow-light);box-sizing:border-box;background-color:#fff;border-radius:2px}.el-table-filter__list{outline:none;min-width:100px;margin:0;padding:5px 0;list-style:none}.el-table-filter__list-item{cursor:pointer;line-height:36px;font-size:var(--el-font-size-base);outline:none;padding:0 10px}.el-table-filter__list-item:hover,.el-table-filter__list-item:focus{background-color:var(--el-color-primary-light-9);color:var(--el-color-primary)}.el-table-filter__list-item.is-active{background-color:var(--el-color-primary);color:#fff}.el-table-filter__multiple{outline:none}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid var(--el-border-color-lighter);padding:8px}.el-table-filter__bottom button{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--el-border-radius-base);transition:transform var(--el-transition-duration-fast) ease-in-out;background-color:#0000;border:none;outline:none;margin:0;padding:0}.el-table-filter__bottom button:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table-filter__bottom button{color:var(--el-text-color-regular);font-size:var(--el-font-size-small);padding:0 3px}.el-table-filter__bottom button:hover{color:var(--el-color-primary)}.el-table-filter__bottom button.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{height:unset;align-items:center;margin-bottom:12px;margin-left:5px;margin-right:5px;display:flex}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-table{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-fill-color-blank);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-fill-color-blank);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px #00000026;--el-table-fixed-right-column:inset -10px 0 10px -10px #00000026;--el-table-index:var(--el-index-normal);box-sizing:border-box;background-color:var(--el-table-bg-color);width:100%;max-width:100%;height:-moz-fit-content;height:fit-content;font-size:var(--el-font-size-base);color:var(--el-table-text-color);position:relative;overflow:hidden}.el-table__inner-wrapper{flex-direction:column;height:100%;display:flex;position:relative}.el-table__inner-wrapper:before{height:1px;bottom:0;left:0}.el-table tbody:focus-visible{outline:none}.el-table.has-footer.el-table--scrollable-y tr:last-child td.el-table__cell,.el-table.has-footer.el-table--fluid-height tr:last-child td.el-table__cell{border-bottom-color:#0000}.el-table__empty-block{text-align:center;justify-content:center;align-items:center;width:100%;min-height:60px;display:flex;position:sticky;left:0}.el-table__empty-text{width:50%;color:var(--el-text-color-secondary);line-height:60px}.el-table__expand-column .cell{text-align:center;-webkit-user-select:none;user-select:none;padding:0}.el-table__expand-icon{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--el-border-radius-base);transition:transform var(--el-transition-duration-fast) ease-in-out;background-color:#0000;border:none;outline:none;margin:0;padding:0}.el-table__expand-icon:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:-2px}.el-table__expand-icon{color:var(--el-text-color-regular);width:min(23px,100%);height:23px;font-size:12px;line-height:12px}.el-table__expand-icon.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-table__expand-icon--expanded{transform:rotate(90deg)}.el-table__expand-icon>.el-icon{font-size:12px}.el-table__expanded-cell{background-color:var(--el-table-expanded-cell-bg-color)}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:#0000!important}.el-table__placeholder{width:20px;display:inline-block}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-bottom:0;border-right:0}.el-table--fit .el-table__cell.gutter{border-right-width:1px}.el-table--fit .el-table__inner-wrapper:before{width:100%}.el-table thead{color:var(--el-table-header-text-color)}.el-table thead th{font-weight:600}.el-table thead.is-group th.el-table__cell{background:var(--el-fill-color-light)}.el-table .el-table__cell{box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;text-align:left;min-width:0;z-index:var(--el-table-index);padding:8px 0;position:relative}.el-table .el-table__cell.is-center{text-align:center}.el-table .el-table__cell.is-right{text-align:right}.el-table .el-table__cell.gutter{border-bottom-width:0;border-right-width:0;width:15px;padding:0}.el-table .el-table__cell.is-hidden>*{visibility:hidden}.el-table .cell{box-sizing:border-box;text-overflow:ellipsis;white-space:normal;overflow-wrap:break-word;padding:0 12px;line-height:23px;overflow:hidden}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--large{font-size:var(--el-font-size-base)}.el-table--large .el-table__cell{padding:12px 0}.el-table--large .cell{padding:0 16px}.el-table--default{font-size:var(--el-font-size-base)}.el-table--default .el-table__cell{padding:8px 0}.el-table--default .cell{padding:0 12px}.el-table--small{font-size:var(--el-font-size-extra-small)}.el-table--small .el-table__cell{padding:4px 0}.el-table--small .cell{padding:0 8px}.el-table tr{background-color:var(--el-table-tr-bg-color)}.el-table tr input[type=checkbox]{margin:0}.el-table th.el-table__cell.is-leaf,.el-table td.el-table__cell{border-bottom:var(--el-table-border)}.el-table th.el-table__cell.is-sortable{cursor:pointer}.el-table th.el-table__cell{background-color:var(--el-table-header-bg-color)}.el-table th.el-table__cell>.cell.highlight{color:var(--el-color-primary)}.el-table th.el-table__cell.required>div:before{content:"";vertical-align:middle;background:#ff4d51;border-radius:50%;width:8px;height:8px;margin-right:5px;display:inline-block}.el-table td.el-table__cell div{box-sizing:border-box}.el-table td.el-table__cell.gutter{width:0}.el-table--border:after,.el-table--border:before,.el-table--border .el-table__inner-wrapper:after,.el-table__inner-wrapper:before{content:"";background-color:var(--el-table-border-color);z-index:calc(var(--el-table-index) + 2);position:absolute}.el-table--border .el-table__inner-wrapper:after{width:100%;height:1px;z-index:calc(var(--el-table-index) + 2);top:0;left:0}.el-table--border:before{width:1px;height:100%;top:-1px;left:0}.el-table--border:after{width:1px;height:100%;top:-1px;right:0}.el-table--border .el-table__inner-wrapper{border-bottom:none;border-right:none}.el-table--border .el-table__footer-wrapper{flex-shrink:0;position:relative}.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table--border th.el-table__cell.gutter:last-of-type{border-bottom:var(--el-table-border);border-bottom-width:1px}.el-table--border th.el-table__cell{border-bottom:var(--el-table-border)}.el-table--hidden{visibility:hidden}.el-table__header-wrapper,.el-table__body-wrapper,.el-table__footer-wrapper{width:100%}.el-table__header-wrapper tr td.el-table-fixed-column--left,.el-table__header-wrapper tr td.el-table-fixed-column--right,.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right,.el-table__body-wrapper tr td.el-table-fixed-column--left,.el-table__body-wrapper tr td.el-table-fixed-column--right,.el-table__body-wrapper tr th.el-table-fixed-column--left,.el-table__body-wrapper tr th.el-table-fixed-column--right,.el-table__footer-wrapper tr td.el-table-fixed-column--left,.el-table__footer-wrapper tr td.el-table-fixed-column--right,.el-table__footer-wrapper tr th.el-table-fixed-column--left,.el-table__footer-wrapper tr th.el-table-fixed-column--right{background:inherit;z-index:calc(var(--el-table-index) + 1);position:sticky!important}.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before{content:"";width:10px;box-shadow:none;touch-action:none;pointer-events:none;position:absolute;top:0;bottom:0;overflow:hidden}.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before{left:-10px}.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before{right:-10px}.el-table__header-wrapper tr td.el-table__fixed-right-patch,.el-table__header-wrapper tr th.el-table__fixed-right-patch,.el-table__body-wrapper tr td.el-table__fixed-right-patch,.el-table__body-wrapper tr th.el-table__fixed-right-patch,.el-table__footer-wrapper tr td.el-table__fixed-right-patch,.el-table__footer-wrapper tr th.el-table__fixed-right-patch{z-index:calc(var(--el-table-index) + 1);background:#fff;right:0;position:sticky!important}.el-table__header-wrapper{flex-shrink:0}.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__header,.el-table__body,.el-table__footer{table-layout:fixed;border-collapse:separate}.el-table__header-wrapper{overflow:hidden}.el-table__header-wrapper tbody td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__footer-wrapper{flex-shrink:0;overflow:hidden}.el-table__footer-wrapper tfoot td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__header-wrapper .el-table-column--selection>.cell,.el-table__body-wrapper .el-table-column--selection>.cell{align-items:center;height:23px;display:inline-flex}.el-table__header-wrapper .el-table-column--selection .el-checkbox,.el-table__body-wrapper .el-table-column--selection .el-checkbox{height:unset}.el-table.is-scrolling-left .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-left.el-table--border .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:var(--el-table-border)}.el-table.is-scrolling-left th.el-table-fixed-column--left{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-right th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-middle .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-none .el-table-fixed-column--left.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--left.is-last-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-last-column:before{box-shadow:none}.el-table.is-scrolling-none th.el-table-fixed-column--left,.el-table.is-scrolling-none th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body-wrapper{flex:1;position:relative;overflow:hidden}.el-table__body-wrapper .el-scrollbar__bar{z-index:calc(var(--el-table-index) + 2)}.el-table .caret-wrapper{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--el-border-radius-base);transition:transform var(--el-transition-duration-fast) ease-in-out;background-color:#0000;border:none;outline:none;margin:0;padding:0}.el-table .caret-wrapper:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table .caret-wrapper{vertical-align:middle;width:24px;height:14px;overflow:initial;flex-direction:column;align-items:center;display:inline-flex;position:relative}.el-table .sort-caret{border:5px solid #0000;width:0;height:0;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:var(--el-text-color-placeholder);top:-5px}.el-table .sort-caret.descending{border-top-color:var(--el-text-color-placeholder);bottom:-3px}.el-table .ascending .sort-caret.ascending{border-bottom-color:var(--el-color-primary)}.el-table .descending .sort-caret.descending{border-top-color:var(--el-color-primary)}.el-table .hidden-columns{visibility:hidden;z-index:-1;position:absolute}.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background:var(--el-fill-color-lighter)}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table__body tr.hover-row>td.el-table__cell,.el-table__body tr.hover-row.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.current-row>td.el-table__cell,.el-table__body tr>td.hover-cell{background-color:var(--el-table-row-hover-bg-color)}.el-table__body tr.current-row>td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table.el-table--scrollable-y .el-table__body-header{z-index:calc(var(--el-table-index) + 2);position:sticky;top:0}.el-table.el-table--scrollable-y .el-table__body-footer{z-index:calc(var(--el-table-index) + 2);position:sticky;bottom:0}.el-table__column-resize-proxy{border-left:var(--el-table-border);width:0;z-index:calc(var(--el-table-index) + 9);position:absolute;top:0;bottom:0;left:200px}.el-table__column-filter-trigger{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--el-border-radius-base);transition:transform var(--el-transition-duration-fast) ease-in-out;background-color:#0000;border:none;outline:none;margin:0;padding:0}.el-table__column-filter-trigger:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table__column-filter-trigger{display:inline-block}.el-table__column-filter-trigger i{color:var(--el-color-info);vertical-align:middle;font-size:14px}.el-table__border-left-patch{width:1px;height:100%;z-index:calc(var(--el-table-index) + 2);background-color:var(--el-table-border-color);position:absolute;top:0;left:0}.el-table__border-bottom-patch{height:1px;z-index:calc(var(--el-table-index) + 2);background-color:var(--el-table-border-color);position:absolute;left:0}.el-table__border-right-patch{width:1px;height:100%;z-index:calc(var(--el-table-index) + 2);background-color:var(--el-table-border-color);position:absolute;top:0}.el-table--enable-row-transition .el-table__body td.el-table__cell{transition:background-color .25s 1ms}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background-color:var(--el-table-row-hover-bg-color)}.el-table [class*=el-table__row--level] .el-table__expand-icon{text-align:center;width:20px;display:inline-block}.el-table .el-table.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table:not(.el-table--border) .el-table__cell{border-right:none}.el-table:not(.el-table--border)>.el-table__inner-wrapper:after{content:none} diff --git a/frontend/dist/assets/el-tag-1VV9QMa7.css b/frontend/dist/assets/el-tag-1VV9QMa7.css new file mode 100644 index 0000000..1b3160f --- /dev/null +++ b/frontend/dist/assets/el-tag-1VV9QMa7.css @@ -0,0 +1 @@ +.el-tag{--el-tag-font-size:12px;--el-tag-border-radius:4px;--el-tag-border-radius-rounded:9999px;background-color:var(--el-tag-bg-color);border-color:var(--el-tag-border-color);color:var(--el-tag-text-color);vertical-align:middle;height:24px;font-size:var(--el-tag-font-size);border-radius:var(--el-tag-border-radius);box-sizing:border-box;white-space:nowrap;--el-icon-size:14px;--el-tag-bg-color:var(--el-color-primary-light-9);--el-tag-border-color:var(--el-color-primary-light-8);--el-tag-hover-color:var(--el-color-primary);border-style:solid;border-width:1px;justify-content:center;align-items:center;padding:0 9px;line-height:1;display:inline-flex}.el-tag.el-tag--primary{--el-tag-bg-color:var(--el-color-primary-light-9);--el-tag-border-color:var(--el-color-primary-light-8);--el-tag-hover-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-bg-color:var(--el-color-success-light-9);--el-tag-border-color:var(--el-color-success-light-8);--el-tag-hover-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-bg-color:var(--el-color-warning-light-9);--el-tag-border-color:var(--el-color-warning-light-8);--el-tag-hover-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-bg-color:var(--el-color-danger-light-9);--el-tag-border-color:var(--el-color-danger-light-8);--el-tag-hover-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-bg-color:var(--el-color-error-light-9);--el-tag-border-color:var(--el-color-error-light-8);--el-tag-hover-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-bg-color:var(--el-color-info-light-9);--el-tag-border-color:var(--el-color-info-light-8);--el-tag-hover-color:var(--el-color-info)}.el-tag.is-hit{border-color:var(--el-color-primary)}.el-tag.is-round{border-radius:var(--el-tag-border-radius-rounded)}.el-tag .el-tag__close{color:var(--el-tag-text-color);flex-shrink:0}.el-tag .el-tag__close:hover{color:var(--el-color-white);background-color:var(--el-tag-hover-color)}.el-tag.el-tag--primary{--el-tag-text-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-text-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-text-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-text-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-text-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-text-color:var(--el-color-info)}.el-tag .el-icon{cursor:pointer;font-size:calc(var(--el-icon-size) - 2px);height:var(--el-icon-size);width:var(--el-icon-size);border-radius:50%}.el-tag .el-tag__close{background-color:#0000;border:none;border-radius:50%;outline:none;margin-left:6px;padding:0;overflow:hidden}.el-tag .el-tag__close:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-tag .el-tag__close .el-icon{display:flex}.el-tag--dark{--el-tag-text-color:var(--el-color-white);--el-tag-bg-color:var(--el-color-primary);--el-tag-border-color:var(--el-color-primary);--el-tag-hover-color:var(--el-color-primary-light-3)}.el-tag--dark.el-tag--primary{--el-tag-bg-color:var(--el-color-primary);--el-tag-border-color:var(--el-color-primary);--el-tag-hover-color:var(--el-color-primary-light-3)}.el-tag--dark.el-tag--success{--el-tag-bg-color:var(--el-color-success);--el-tag-border-color:var(--el-color-success);--el-tag-hover-color:var(--el-color-success-light-3)}.el-tag--dark.el-tag--warning{--el-tag-bg-color:var(--el-color-warning);--el-tag-border-color:var(--el-color-warning);--el-tag-hover-color:var(--el-color-warning-light-3)}.el-tag--dark.el-tag--danger{--el-tag-bg-color:var(--el-color-danger);--el-tag-border-color:var(--el-color-danger);--el-tag-hover-color:var(--el-color-danger-light-3)}.el-tag--dark.el-tag--error{--el-tag-bg-color:var(--el-color-error);--el-tag-border-color:var(--el-color-error);--el-tag-hover-color:var(--el-color-error-light-3)}.el-tag--dark.el-tag--info{--el-tag-bg-color:var(--el-color-info);--el-tag-border-color:var(--el-color-info);--el-tag-hover-color:var(--el-color-info-light-3)}.el-tag--dark.el-tag--primary,.el-tag--dark.el-tag--success,.el-tag--dark.el-tag--warning,.el-tag--dark.el-tag--danger,.el-tag--dark.el-tag--error,.el-tag--dark.el-tag--info{--el-tag-text-color:var(--el-color-white)}.el-tag--plain,.el-tag--plain.el-tag--primary{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-primary-light-5);--el-tag-hover-color:var(--el-color-primary)}.el-tag--plain.el-tag--success{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-success-light-5);--el-tag-hover-color:var(--el-color-success)}.el-tag--plain.el-tag--warning{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-warning-light-5);--el-tag-hover-color:var(--el-color-warning)}.el-tag--plain.el-tag--danger{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-danger-light-5);--el-tag-hover-color:var(--el-color-danger)}.el-tag--plain.el-tag--error{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-error-light-5);--el-tag-hover-color:var(--el-color-error)}.el-tag--plain.el-tag--info{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-info-light-5);--el-tag-hover-color:var(--el-color-info)}.el-tag.is-closable{padding-right:5px}.el-tag--large{--el-icon-size:16px;height:32px;padding:0 11px}.el-tag--large .el-tag__close{margin-left:8px}.el-tag--large.is-closable{padding-right:7px}.el-tag--small{--el-icon-size:12px;height:20px;padding:0 7px}.el-tag--small .el-tag__close{margin-left:4px}.el-tag--small.is-closable{padding-right:3px}.el-tag--small .el-icon-close{transform:scale(.8)}.el-tag.el-tag--primary.is-hit{border-color:var(--el-color-primary)}.el-tag.el-tag--success.is-hit{border-color:var(--el-color-success)}.el-tag.el-tag--warning.is-hit{border-color:var(--el-color-warning)}.el-tag.el-tag--danger.is-hit{border-color:var(--el-color-danger)}.el-tag.el-tag--error.is-hit{border-color:var(--el-color-error)}.el-tag.el-tag--info.is-hit{border-color:var(--el-color-info)} diff --git a/frontend/dist/assets/el-tooltip-l0sNRNKZ.js b/frontend/dist/assets/el-tooltip-l0sNRNKZ.js new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/frontend/dist/assets/el-tooltip-l0sNRNKZ.js @@ -0,0 +1 @@ + diff --git a/frontend/dist/assets/el-upload-Bit6Pm_l.css b/frontend/dist/assets/el-upload-Bit6Pm_l.css new file mode 100644 index 0000000..8759334 --- /dev/null +++ b/frontend/dist/assets/el-upload-Bit6Pm_l.css @@ -0,0 +1 @@ +.el-upload{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;cursor:pointer;outline:none;justify-content:center;align-items:center;display:inline-flex}.el-upload.is-disabled{cursor:not-allowed}.el-upload.is-disabled:focus{border-color:var(--el-border-color-darker);color:inherit}.el-upload.is-disabled:focus .el-upload-dragger{border-color:var(--el-border-color-darker)}.el-upload.is-disabled .el-upload-dragger{cursor:not-allowed;background-color:var(--el-disabled-bg-color)}.el-upload.is-disabled .el-upload-dragger .el-upload__text{color:var(--el-text-color-placeholder)}.el-upload.is-disabled .el-upload-dragger .el-upload__text em{color:var(--el-disabled-text-color)}.el-upload.is-disabled .el-upload-dragger:hover{border-color:var(--el-border-color-darker)}.el-upload__input{display:none}.el-upload__tip{color:var(--el-text-color-regular);margin-top:7px;font-size:12px}.el-upload iframe{z-index:-1;opacity:0;filter:alpha(opacity=0);position:absolute;top:0;left:0}.el-upload--picture-card{background-color:var(--el-fill-color-lighter);border:1px dashed var(--el-border-color-darker);box-sizing:border-box;width:var(--el-upload-picture-card-size);height:var(--el-upload-picture-card-size);cursor:pointer;vertical-align:top;border-radius:6px;justify-content:center;align-items:center;display:inline-flex}.el-upload--picture-card>i{color:var(--el-text-color-secondary);font-size:28px}.el-upload--picture-card:hover{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload.is-drag{display:block}.el-upload:focus{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload:focus .el-upload-dragger{border-color:var(--el-color-primary)}.el-upload-dragger{padding:var(--el-upload-dragger-padding-vertical) var(--el-upload-dragger-padding-horizontal);background-color:var(--el-fill-color-blank);border:1px dashed var(--el-border-color);box-sizing:border-box;text-align:center;cursor:pointer;border-radius:6px;position:relative;overflow:hidden}.el-upload-dragger .el-icon--upload{color:var(--el-text-color-placeholder);margin-bottom:16px;font-size:67px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:var(--el-border);margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:var(--el-text-color-regular);text-align:center;font-size:14px}.el-upload-dragger .el-upload__text em{color:var(--el-color-primary);font-style:normal}.el-upload-dragger:hover{border-color:var(--el-color-primary)}.el-upload-dragger.is-dragover{padding:calc(var(--el-upload-dragger-padding-vertical) - 1px) calc(var(--el-upload-dragger-padding-horizontal) - 1px);background-color:var(--el-color-primary-light-9);border:2px dashed var(--el-color-primary)}.el-upload-list{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;margin:10px 0 0;padding:0;list-style:none;position:relative}.el-upload-list__item{color:var(--el-text-color-regular);box-sizing:border-box;border-radius:4px;width:100%;margin-bottom:5px;font-size:14px;transition:all .5s cubic-bezier(.55,0,.1,1);position:relative}.el-upload-list__item .el-progress{width:100%;position:absolute;top:20px}.el-upload-list__item .el-progress__text{position:absolute;top:-13px;right:0}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item .el-icon--upload-success{color:var(--el-color-success)}.el-upload-list__item .el-icon--close{cursor:pointer;opacity:.75;color:var(--el-text-color-regular);transition:opacity var(--el-transition-duration);display:none;position:absolute;top:50%;right:5px;transform:translateY(-50%)}.el-upload-list__item .el-icon--close:hover{opacity:1;color:var(--el-color-primary)}.el-upload-list__item .el-icon--close-tip{cursor:pointer;opacity:1;color:var(--el-color-primary);font-size:12px;font-style:normal;display:none;position:absolute;top:1px;right:5px}.el-upload-list__item:hover,.el-upload-list__item:focus-within{background-color:var(--el-fill-color-light)}.el-upload-list__item:hover .el-icon--close,.el-upload-list__item:focus-within .el-icon--close{display:inline-flex}.el-upload-list__item:hover .el-icon--close-tip,.el-upload-list__item:focus-within .el-icon--close-tip{right:24px}.el-upload-list__item:hover .el-progress__text,.el-upload-list__item:focus-within .el-progress__text{display:none}.el-upload-list__item .el-upload-list__item-info{flex-direction:column;justify-content:center;width:calc(100% - 30px);margin-left:4px;display:inline-flex}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:inline-flex}.el-upload-list__item.is-success .el-upload-list__item-name:hover,.el-upload-list__item.is-success .el-upload-list__item-name:focus{color:var(--el-color-primary);cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon--close-tip{display:inline-block}.el-upload-list__item.is-success:not(.focusing):focus,.el-upload-list__item.is-success:active{outline-width:0}.el-upload-list__item.is-success:not(.focusing):focus .el-icon--close-tip,.el-upload-list__item.is-success:active .el-icon--close-tip{display:none}.el-upload-list__item.is-success:hover .el-upload-list__item-status-label,.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:focus-within .el-upload-list__item-status-label{opacity:0;display:none}.el-upload-list__item-name{color:var(--el-text-color-regular);text-align:center;transition:color var(--el-transition-duration);font-size:var(--el-font-size-base);align-items:center;padding:0 4px;display:inline-flex}.el-upload-list__item-name .el-icon{color:var(--el-text-color-secondary);margin-right:6px}.el-upload-list__item-file-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.el-upload-list__item-status-label{line-height:inherit;height:100%;transition:opacity var(--el-transition-duration);justify-content:center;align-items:center;display:none;position:absolute;top:0;right:5px}.el-upload-list__item-delete{color:var(--el-text-color-regular);font-size:12px;display:none;position:absolute;top:0;right:10px}.el-upload-list__item-delete:hover{color:var(--el-color-primary)}.el-upload-list--picture-card{flex-wrap:wrap;margin:0;display:inline-flex}.el-upload-list--picture-card .el-upload-list__item{background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);box-sizing:border-box;width:var(--el-upload-list-picture-card-size);height:var(--el-upload-list-picture-card-size);border-radius:6px;margin:0 8px 8px 0;padding:0;display:inline-flex;overflow:hidden}.el-upload-list--picture-card .el-upload-list__item .el-icon--check,.el-upload-list--picture-card .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon--close{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{opacity:0;display:block}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{object-fit:contain;width:100%;height:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{background:var(--el-color-success);text-align:center;width:40px;height:24px;top:-6px;right:-15px;transform:rotate(45deg)}.el-upload-list--picture-card .el-upload-list__item-status-label i{margin-top:11px;font-size:12px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{cursor:default;color:#fff;opacity:0;background-color:var(--el-overlay-color-lighter);width:100%;height:100%;transition:opacity var(--el-transition-duration);justify-content:center;align-items:center;font-size:20px;display:inline-flex;position:absolute;top:0;left:0}.el-upload-list--picture-card .el-upload-list__item-actions span{cursor:pointer;display:none}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:16px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{font-size:inherit;color:inherit;position:static}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-flex}.el-upload-list--picture-card .el-progress{width:126px;top:50%;bottom:auto;left:50%;transform:translate(-50%,-50%)}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{z-index:0;background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);box-sizing:border-box;border-radius:6px;align-items:center;margin-top:10px;padding:10px;display:flex;overflow:hidden}.el-upload-list--picture .el-upload-list__item .el-icon--check,.el-upload-list--picture .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{opacity:0;display:inline-flex}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item .el-icon--close{top:5px;transform:translateY(0)}.el-upload-list--picture .el-upload-list__item-thumbnail{object-fit:contain;z-index:1;background-color:var(--el-color-white);justify-content:center;align-items:center;width:70px;height:70px;display:inline-flex;position:relative}.el-upload-list--picture .el-upload-list__item-status-label{background:var(--el-color-success);text-align:center;width:46px;height:26px;position:absolute;top:-7px;right:-17px;transform:rotate(45deg)}.el-upload-list--picture .el-upload-list__item-status-label i{margin-top:12px;font-size:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{z-index:10;cursor:default;width:100%;height:100%;position:absolute;top:0;left:0;overflow:hidden}.el-upload-cover:after{content:"";vertical-align:middle;height:100%;display:inline-block}.el-upload-cover img{width:100%;height:100%;display:block}.el-upload-cover__label{background:var(--el-color-success);text-align:center;width:40px;height:24px;top:-6px;right:-15px;transform:rotate(45deg)}.el-upload-cover__label i{color:#fff;margin-top:11px;font-size:12px;transform:rotate(-45deg)}.el-upload-cover__progress{vertical-align:middle;width:243px;display:inline-block;position:static}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{width:100%;height:100%;position:absolute;top:0;left:0}.el-upload-cover__interact{background-color:var(--el-overlay-color-light);text-align:center;width:100%;height:100%;position:absolute;bottom:0;left:0}.el-upload-cover__interact .btn{color:#fff;cursor:pointer;vertical-align:middle;transition:var(--el-transition-md-fade);margin-top:60px;font-size:14px;display:inline-block}.el-upload-cover__interact .btn i{margin-top:0}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;font-size:24px;line-height:inherit;margin:0 auto 5px;display:block}.el-upload-cover__title{text-overflow:ellipsis;white-space:nowrap;text-align:left;width:100%;height:36px;color:var(--el-text-color-primary);background-color:#fff;margin:0;padding:0 10px;font-size:14px;font-weight:400;line-height:36px;position:absolute;bottom:0;left:0;overflow:hidden}.el-upload-cover+.el-upload__inner{opacity:0;z-index:1;position:relative} diff --git a/frontend/dist/assets/el-upload-BtHzuyZ5.js b/frontend/dist/assets/el-upload-BtHzuyZ5.js new file mode 100644 index 0000000..d6a416e --- /dev/null +++ b/frontend/dist/assets/el-upload-BtHzuyZ5.js @@ -0,0 +1 @@ +import{C as Y,a6 as ce,J as ke,a8 as fe,b as N,R as f,a5 as X,aU as h,d as q,aW as Ee,a as K,o as b,e as U,w as F,c as T,M as we,ad as Re,t as x,f as o,n as g,h as $,g as k,q as A,aL as B,s as S,E as D,b3 as Pe,aa as Q,al as $e,b4 as Fe,b5 as Ce,b6 as Se,b7 as Te,b8 as Le,b9 as Ue,y as pe,j as G,B as Be,aT as W,ba as Z,bb as De,bc as Oe,bd as je,D as ee,aK as Ae,be as Ke,P as Ne,H as qe,a$ as te,Y as ae,F as Me,a9 as He,l as _e}from"./index-BKKvzUDD.js";import{c as M}from"./index-BjEW7-SA.js";import{E as ze}from"./el-progress-DuOxpLST.js";import{f as se}from"./index-GAnQrJsQ.js";import{c as oe}from"./el-form-item-D5kF3B90.js";const Ie="ElUpload";var Ve=class extends Error{constructor(t,i,n,d){super(t),this.name="UploadAjaxError",this.status=i,this.method=n,this.url=d}};function ne(t,i,n){let d;return n.response?d=`${n.response.error||n.response}`:n.responseText?d=`${n.responseText}`:d=`fail to ${i.method} ${t} ${n.status}`,new Ve(d,n.status,i.method,t)}function Xe(t){const i=t.responseText||t.response;if(!i)return i;try{return JSON.parse(i)}catch{return i}}const xe=t=>{typeof XMLHttpRequest>"u"&&Y(Ie,"XMLHttpRequest is undefined");const i=new XMLHttpRequest,n=t.action;i.upload&&i.upload.addEventListener("progress",r=>{const u=r;u.percent=r.total>0?r.loaded/r.total*100:0,t.onProgress(u)});const d=new FormData;if(t.data)for(const[r,u]of Object.entries(t.data))ce(u)?u.length===2&&u[0]instanceof Blob&&ke(u[1])?d.append(r,u[0],u[1]):u.forEach(w=>{d.append(r,w)}):d.append(r,u);d.append(t.filename,t.file,t.file.name),i.addEventListener("error",()=>{t.onError(ne(n,t,i))}),i.addEventListener("load",()=>{if(i.status<200||i.status>=300)return t.onError(ne(n,t,i));t.onSuccess(Xe(i))}),i.open(t.method,n,!0),t.withCredentials&&"withCredentials"in i&&(i.withCredentials=!0);const p=t.headers||{};if(p instanceof Headers)p.forEach((r,u)=>i.setRequestHeader(u,r));else for(const[r,u]of Object.entries(p))fe(u)||i.setRequestHeader(r,String(u));return i.send(d),i},ve=["text","picture","picture-card"];let Ge=1;const J=()=>Date.now()+Ge++,ye=N({action:{type:String,default:"#"},headers:{type:f(Object)},method:{type:String,default:"post"},data:{type:f([Object,Function,Promise]),default:()=>X({})},multiple:Boolean,name:{type:String,default:"file"},drag:Boolean,withCredentials:Boolean,showFileList:{type:Boolean,default:!0},accept:{type:String,default:""},fileList:{type:f(Array),default:()=>X([])},autoUpload:{type:Boolean,default:!0},listType:{type:String,values:ve,default:"text"},httpRequest:{type:f(Function),default:xe},disabled:{type:Boolean,default:void 0},limit:Number,directory:Boolean}),We=N({...ye,beforeUpload:{type:f(Function),default:h},beforeRemove:{type:f(Function)},onRemove:{type:f(Function),default:h},onChange:{type:f(Function),default:h},onPreview:{type:f(Function),default:h},onSuccess:{type:f(Function),default:h},onProgress:{type:f(Function),default:h},onError:{type:f(Function),default:h},onExceed:{type:f(Function),default:h},crossorigin:{type:f(String)}}),me=Symbol("uploadContextKey"),Je=N({files:{type:f(Array),default:()=>X([])},disabled:{type:Boolean,default:void 0},handlePreview:{type:f(Function),default:h},listType:{type:String,values:ve,default:"text"},crossorigin:{type:f(String)}}),Ye={remove:t=>!!t},Qe=N({...ye,beforeUpload:{type:f(Function),default:h},onRemove:{type:f(Function),default:h},onStart:{type:f(Function),default:h},onSuccess:{type:f(Function),default:h},onProgress:{type:f(Function),default:h},onError:{type:f(Function),default:h},onExceed:{type:f(Function),default:h}}),Ze=N({disabled:{type:Boolean,default:void 0},directory:Boolean}),et={file:t=>ce(t)},tt=["tabindex","aria-disabled","onKeydown"],at=["src","crossorigin"],st=["onClick"],ot=["title"],nt=["onClick"],lt=["onClick"];var rt=q({name:"ElUploadList",__name:"upload-list",props:Je,emits:Ye,setup(t,{emit:i}){const n=t,d=i,{t:p}=Ee(),r=K("upload"),u=K("icon"),w=K("list"),y=M(),P=pe(!1),C=G(()=>[r.b("list"),r.bm("list",n.listType),r.is("disabled",y.value)]),E=c=>{d("remove",c)};return(c,v)=>(b(),U(Ue,{tag:"ul",class:g(C.value),name:o(w).b()},{default:F(()=>[(b(!0),T(we,null,Re(t.files,(s,e)=>(b(),T("li",{key:s.uid||s.name,class:g([o(r).be("list","item"),o(r).is(s.status),{focusing:P.value}]),tabindex:o(y)?void 0:0,"aria-disabled":o(y),role:"button",onKeydown:x(a=>!o(y)&&E(s),["delete"]),onFocus:v[0]||(v[0]=a=>P.value=!0),onBlur:v[1]||(v[1]=a=>P.value=!1),onClick:v[2]||(v[2]=a=>P.value=!1)},[$(c.$slots,"default",{file:s,index:e},()=>[t.listType==="picture"||s.status!=="uploading"&&t.listType==="picture-card"?(b(),T("img",{key:0,class:g(o(r).be("list","item-thumbnail")),src:s.url,crossorigin:t.crossorigin,alt:""},null,10,at)):k("v-if",!0),s.status==="uploading"||t.listType!=="picture-card"?(b(),T("div",{key:1,class:g(o(r).be("list","item-info"))},[A("a",{class:g(o(r).be("list","item-name")),onClick:B(a=>t.handlePreview(s),["prevent"])},[S(o(D),{class:g(o(u).m("document"))},{default:F(()=>[S(o(Pe))]),_:1},8,["class"]),A("span",{class:g(o(r).be("list","item-file-name")),title:s.name},Q(s.name),11,ot)],10,st),s.status==="uploading"?(b(),U(o(ze),{key:0,type:t.listType==="picture-card"?"circle":"line","stroke-width":t.listType==="picture-card"?6:2,percentage:Number(s.percentage),style:$e(t.listType==="picture-card"?"":"margin-top: 0.5rem")},null,8,["type","stroke-width","percentage","style"])):k("v-if",!0)],2)):k("v-if",!0),A("label",{class:g(o(r).be("list","item-status-label"))},[t.listType==="text"?(b(),U(o(D),{key:0,class:g([o(u).m("upload-success"),o(u).m("circle-check")])},{default:F(()=>[S(o(Fe))]),_:1},8,["class"])):["picture-card","picture"].includes(t.listType)?(b(),U(o(D),{key:1,class:g([o(u).m("upload-success"),o(u).m("check")])},{default:F(()=>[S(o(Ce))]),_:1},8,["class"])):k("v-if",!0)],2),o(y)?k("v-if",!0):(b(),U(o(D),{key:2,class:g(o(u).m("close")),"aria-label":o(p)("el.upload.delete"),role:"button",tabindex:"0",onClick:a=>E(s),onKeydown:x(B(a=>E(s),["prevent"]),["enter","space"])},{default:F(()=>[S(o(Se))]),_:1},8,["class","aria-label","onClick","onKeydown"])),o(y)?k("v-if",!0):(b(),T("i",{key:3,class:g(o(u).m("close-tip"))},Q(o(p)("el.upload.deleteTip")),3)),t.listType==="picture-card"?(b(),T("span",{key:4,class:g(o(r).be("list","item-actions"))},[A("span",{class:g(o(r).be("list","item-preview")),onClick:a=>t.handlePreview(s)},[S(o(D),{class:g(o(u).m("zoom-in"))},{default:F(()=>[S(o(Te))]),_:1},8,["class"])],10,nt),o(y)?k("v-if",!0):(b(),T("span",{key:0,class:g(o(r).be("list","item-delete")),onClick:a=>E(s)},[S(o(D),{class:g(o(u).m("delete"))},{default:F(()=>[S(o(Le))]),_:1},8,["class"])],10,lt))],2)):k("v-if",!0)])],42,tt))),128)),$(c.$slots,"append")]),_:3},8,["class","name"]))}}),le=rt;const re="ElUploadDrag";var it=q({name:re,__name:"upload-dragger",props:Ze,emits:et,setup(t,{emit:i}){const n=t,d=i;Be(me)||Y(re,"usage: ");const p=K("upload"),r=pe(!1),u=M(),w=c=>new Promise((v,s)=>c.file(v,s)),y=async c=>{try{if(c.isFile){const v=await w(c);return v.isDirectory=!1,[v]}if(c.isDirectory){const v=c.createReader(),s=()=>new Promise((m,R)=>v.readEntries(m,R)),e=[];let a=await s();for(;a.length>0;)e.push(...a),a=await s();const l=e.map(m=>y(m).catch(()=>[]));return se(await Promise.all(l))}}catch{return[]}return[]},P=async c=>{if(u.value)return;r.value=!1,c.stopPropagation();const v=Array.from(c.dataTransfer.files),s=c.dataTransfer.items||[];if(n.directory){const e=Array.from(s).map(a=>{var l;return(l=a==null?void 0:a.webkitGetAsEntry)==null?void 0:l.call(a)}).filter(a=>a);d("file",se(await Promise.all(e.map(y))));return}v.forEach((e,a)=>{var m,R;const l=(R=(m=s[a])==null?void 0:m.webkitGetAsEntry)==null?void 0:R.call(m);l&&(e.isDirectory=l.isDirectory)}),d("file",v)},C=()=>{u.value||(r.value=!0)},E=c=>{c.currentTarget.contains(c.relatedTarget)||(r.value=!1)};return(c,v)=>(b(),T("div",{class:g([o(p).b("dragger"),o(p).is("dragover",r.value)]),onDrop:B(P,["prevent"]),onDragover:B(C,["prevent"]),onDragleave:B(E,["prevent"])},[$(c.$slots,"default")],34))}}),ut=it;const dt=["tabindex","aria-disabled","onKeydown"],ct=["name","disabled","multiple","accept","webkitdirectory"];var ft=q({name:"ElUploadContent",inheritAttrs:!1,__name:"upload-content",props:Qe,setup(t,{expose:i}){const n=t,d=K("upload"),p=M(),r=W({}),u=W(),w=e=>{if(e.length===0)return;const{autoUpload:a,limit:l,fileList:m,multiple:R,onStart:L,onExceed:H}=n;if(l&&m.length+e.length>l){H(e,m);return}R||(e=e.slice(0,1));for(const _ of e){const O=_;O.uid=J(),L(O),a&&y(O)}},y=async e=>{if(u.value.value="",!n.beforeUpload)return C(e);let a,l={};try{const R=n.data,L=n.beforeUpload(e);l=Z(n.data)?oe(n.data):n.data,a=await L,Z(n.data)&&De(R,l)&&(l=oe(n.data))}catch{a=!1}if(a===!1){n.onRemove(e);return}let m=e;a instanceof Blob&&(a instanceof File?m=a:m=new File([a],e.name,{type:e.type})),C(Object.assign(m,{uid:e.uid}),l)},P=async(e,a)=>je(e)?e(a):e,C=async(e,a)=>{const{headers:l,data:m,method:R,withCredentials:L,name:H,action:_,onProgress:O,onSuccess:ge,onError:be,httpRequest:he}=n;try{a=await P(a??m,e)}catch{n.onRemove(e);return}const{uid:z}=e,I={headers:l||{},withCredentials:L,file:e,data:a,method:R,filename:H,action:_,onProgress:j=>{O(j,e)},onSuccess:j=>{ge(j,e),delete r.value[z]},onError:j=>{be(j,e),delete r.value[z]}},V=he(I);r.value[z]=V,V instanceof Promise&&V.then(I.onSuccess,I.onError)},E=e=>{const a=e.target.files;a&&w(Array.from(a))},c=()=>{p.value||(u.value.value="",u.value.click())},v=()=>{c()};return i({abort:e=>{Oe(r.value).filter(e?([a])=>String(e.uid)===a:()=>!0).forEach(([a,l])=>{l instanceof XMLHttpRequest&&l.abort(),delete r.value[a]})},upload:y}),(e,a)=>(b(),T("div",{class:g([o(d).b(),o(d).m(t.listType),o(d).is("drag",t.drag),o(d).is("disabled",o(p))]),tabindex:o(p)?void 0:0,"aria-disabled":o(p),role:"button",onClick:c,onKeydown:x(B(v,["self"]),["enter","space"])},[t.drag?(b(),U(ut,{key:0,disabled:o(p),directory:t.directory,onFile:w},{default:F(()=>[$(e.$slots,"default")]),_:3},8,["disabled","directory"])):$(e.$slots,"default",{key:1}),A("input",{ref_key:"inputRef",ref:u,class:g(o(d).e("input")),name:t.name,disabled:o(p),multiple:t.multiple,accept:t.accept,webkitdirectory:t.directory||void 0,type:"file",onChange:E,onClick:a[0]||(a[0]=B(()=>{},["stop"]))},null,42,ct)],42,dt))}}),ie=ft;const ue="ElUpload",de=t=>{var i;(i=t.url)!=null&&i.startsWith("blob:")&&URL.revokeObjectURL(t.url)},pt=(t,i)=>{const n=Ke(t,"fileList",void 0,{passive:!0}),d=s=>n.value.find(e=>e.uid===s.uid);function p(s){var e;(e=i.value)==null||e.abort(s)}function r(s=["ready","uploading","success","fail"]){n.value=n.value.filter(e=>!s.includes(e.status))}function u(s){n.value=n.value.filter(e=>e.uid!==s.uid)}const w=s=>{Ne(()=>t.onChange(s,n.value))},y=(s,e)=>{const a=d(e);a&&(console.error(s),a.status="fail",u(a),t.onError(s,a,n.value),w(a))},P=(s,e)=>{const a=d(e);a&&(t.onProgress(s,a,n.value),a.status="uploading",a.percentage=Math.round(s.percent))},C=(s,e)=>{const a=d(e);a&&(a.status="success",a.response=s,t.onSuccess(s,a,n.value),w(a))},E=s=>{fe(s.uid)&&(s.uid=J());const e={name:s.name,percentage:0,status:"ready",size:s.size,raw:s,uid:s.uid};if(t.listType==="picture-card"||t.listType==="picture")try{e.url=URL.createObjectURL(s)}catch(a){Ae(ue,a.message),t.onError(a,e,n.value)}n.value=[...n.value,e],w(e)},c=async s=>{const e=s instanceof File?d(s):s;e||Y(ue,"file to be removed not found");const a=l=>{p(l),u(l),t.onRemove(l,n.value),de(l)};t.beforeRemove?await t.beforeRemove(e,n.value)!==!1&&a(e):a(e)};function v(){n.value.filter(({status:s})=>s==="ready").forEach(({raw:s})=>{var e;return s&&((e=i.value)==null?void 0:e.upload(s))})}return ee(()=>t.listType,s=>{s!=="picture-card"&&s!=="picture"||(n.value=n.value.map(e=>{const{raw:a,url:l}=e;if(!l&&a)try{e.url=URL.createObjectURL(a)}catch(m){t.onError(m,e,n.value)}return e}))}),ee(n,s=>{for(const e of s)e.uid||(e.uid=J()),e.status||(e.status="success")},{immediate:!0,deep:!0}),{uploadFiles:n,abort:p,clearFiles:r,handleError:y,handleProgress:P,handleStart:E,handleSuccess:C,handleRemove:c,submit:v,revokeFileObjectURL:de}};var vt=q({name:"ElUpload",__name:"upload",props:We,setup(t,{expose:i}){const n=t,d=M(),p=W(),{abort:r,submit:u,clearFiles:w,uploadFiles:y,handleStart:P,handleError:C,handleRemove:E,handleSuccess:c,handleProgress:v,revokeFileObjectURL:s}=pt(n,p),e=G(()=>n.listType==="picture-card"),a=G(()=>({...n,fileList:y.value,onStart:P,onProgress:v,onSuccess:c,onError:C,onRemove:E}));return qe(()=>{y.value.forEach(s)}),Me(me,{accept:He(n,"accept")}),i({abort:r,submit:u,clearFiles:w,handleStart:P,handleRemove:E}),(l,m)=>(b(),T("div",null,[e.value&&t.showFileList?(b(),U(le,{key:0,disabled:o(d),"list-type":t.listType,files:o(y),crossorigin:t.crossorigin,"handle-preview":t.onPreview,onRemove:o(E)},te({append:F(()=>[S(ie,ae({ref_key:"uploadRef",ref:p},a.value),{default:F(()=>[l.$slots.trigger?$(l.$slots,"trigger",{key:0}):k("v-if",!0),!l.$slots.trigger&&l.$slots.default?$(l.$slots,"default",{key:1}):k("v-if",!0)]),_:3},16)]),_:2},[l.$slots.file?{name:"default",fn:F(({file:R,index:L})=>[$(l.$slots,"file",{file:R,index:L})]),key:"0"}:void 0]),1032,["disabled","list-type","files","crossorigin","handle-preview","onRemove"])):k("v-if",!0),!e.value||e.value&&!t.showFileList?(b(),U(ie,ae({key:1,ref_key:"uploadRef",ref:p},a.value),{default:F(()=>[l.$slots.trigger?$(l.$slots,"trigger",{key:0}):k("v-if",!0),!l.$slots.trigger&&l.$slots.default?$(l.$slots,"default",{key:1}):k("v-if",!0)]),_:3},16)):k("v-if",!0),l.$slots.trigger?$(l.$slots,"default",{key:2}):k("v-if",!0),$(l.$slots,"tip"),!e.value&&t.showFileList?(b(),U(le,{key:3,disabled:o(d),"list-type":t.listType,files:o(y),crossorigin:t.crossorigin,"handle-preview":t.onPreview,onRemove:o(E)},te({_:2},[l.$slots.file?{name:"default",fn:F(({file:R,index:L})=>[$(l.$slots,"file",{file:R,index:L})]),key:"0"}:void 0]),1032,["disabled","list-type","files","crossorigin","handle-preview","onRemove"])):k("v-if",!0)]))}}),yt=vt;const Et=_e(yt);export{Et as E}; diff --git a/frontend/dist/assets/elm-vLlmbW-K.js b/frontend/dist/assets/elm-vLlmbW-K.js new file mode 100644 index 0000000..7e57009 --- /dev/null +++ b/frontend/dist/assets/elm-vLlmbW-K.js @@ -0,0 +1 @@ +function a(n,t,i){return t(i),i(n,t)}var v=/[a-z]/,g=/[A-Z]/,l=/[a-zA-Z0-9_]/,f=/[0-9]/,o=/[0-9A-Fa-f]/,p=/[-&*+.\\/<>=?^|:]/,w=/[(),[\]{}]/,x=/[ \v\f]/;function r(){return function(n,t){if(n.eatWhile(x))return null;var i=n.next();if(w.test(i))return i==="{"&&n.eat("-")?a(n,t,h(1)):i==="["&&n.match("glsl|")?a(n,t,u):"builtin";if(i==="'")return a(n,t,d);if(i==='"')return n.eat('"')?n.eat('"')?a(n,t,k):"string":a(n,t,E);if(g.test(i))return n.eatWhile(l),"type";if(v.test(i)){var e=n.pos===1;return n.eatWhile(l),e?"def":"variable"}if(f.test(i)){if(i==="0"){if(n.eat(/[xX]/))return n.eatWhile(o),"number"}else n.eatWhile(f);return n.eat(".")&&n.eatWhile(f),n.eat(/[eE]/)&&(n.eat(/[-+]/),n.eatWhile(f)),"number"}return p.test(i)?i==="-"&&n.eat("-")?(n.skipToEnd(),"comment"):(n.eatWhile(p),"keyword"):i==="_"?"keyword":"error"}}function h(n){return n==0?r():function(t,i){for(;!t.eol();){var e=t.next();if(e=="{"&&t.eat("-"))++n;else if(e=="-"&&t.eat("}")&&(--n,n===0))return i(r()),"comment"}return i(h(n)),"comment"}}function k(n,t){for(;!n.eol();){var i=n.next();if(i==='"'&&n.eat('"')&&n.eat('"'))return t(r()),"string"}return"string"}function E(n,t){for(;n.skipTo('\\"');)n.next(),n.next();return n.skipTo('"')?(n.next(),t(r()),"string"):(n.skipToEnd(),t(r()),"error")}function d(n,t){for(;n.skipTo("\\'");)n.next(),n.next();return n.skipTo("'")?(n.next(),t(r()),"string"):(n.skipToEnd(),t(r()),"error")}function u(n,t){for(;!n.eol();){var i=n.next();if(i==="|"&&n.eat("]"))return t(r()),"string"}return"string"}var y={case:1,of:1,as:1,if:1,then:1,else:1,let:1,in:1,type:1,alias:1,module:1,where:1,import:1,exposing:1,port:1};const W={name:"elm",startState:function(){return{f:r()}},copyState:function(n){return{f:n.f}},token:function(n,t){var i=t.f(n,function(m){t.f=m}),e=n.current();return y.hasOwnProperty(e)?"keyword":i},languageData:{commentTokens:{line:"--"}}};export{W as elm}; diff --git a/frontend/dist/assets/erlang-BNw1qcRV.js b/frontend/dist/assets/erlang-BNw1qcRV.js new file mode 100644 index 0000000..d59e853 --- /dev/null +++ b/frontend/dist/assets/erlang-BNw1qcRV.js @@ -0,0 +1 @@ +var S=["-type","-spec","-export_type","-opaque"],x=["after","begin","catch","case","cond","end","fun","if","let","of","query","receive","try","when"],z=/[\->,;]/,E=["->",";",","],T=["and","andalso","band","bnot","bor","bsl","bsr","bxor","div","not","or","orelse","rem","xor"],R=/[\+\-\*\/<>=\|:!]/,A=["=","+","-","*","/",">",">=","<","=<","=:=","==","=/=","/=","||","<-","!"],U=/[<\(\[\{]/,b=["<<","(","[","{"],Z=/[>\)\]\}]/,y=["}","]",")",">>"],m=["is_atom","is_binary","is_bitstring","is_boolean","is_float","is_function","is_integer","is_list","is_number","is_pid","is_port","is_record","is_reference","is_tuple","atom","binary","bitstring","boolean","function","integer","list","number","pid","port","record","reference","tuple"],P=["abs","adler32","adler32_combine","alive","apply","atom_to_binary","atom_to_list","binary_to_atom","binary_to_existing_atom","binary_to_list","binary_to_term","bit_size","bitstring_to_list","byte_size","check_process_code","contact_binary","crc32","crc32_combine","date","decode_packet","delete_module","disconnect_node","element","erase","exit","float","float_to_list","garbage_collect","get","get_keys","group_leader","halt","hd","integer_to_list","internal_bif","iolist_size","iolist_to_binary","is_alive","is_atom","is_binary","is_bitstring","is_boolean","is_float","is_function","is_integer","is_list","is_number","is_pid","is_port","is_process_alive","is_record","is_reference","is_tuple","length","link","list_to_atom","list_to_binary","list_to_bitstring","list_to_existing_atom","list_to_float","list_to_integer","list_to_pid","list_to_tuple","load_module","make_ref","module_loaded","monitor_node","node","node_link","node_unlink","nodes","notalive","now","open_port","pid_to_list","port_close","port_command","port_connect","port_control","pre_loaded","process_flag","process_info","processes","purge_module","put","register","registered","round","self","setelement","size","spawn","spawn_link","spawn_monitor","spawn_opt","split_binary","statistics","term_to_binary","time","throw","tl","trunc","tuple_size","tuple_to_list","unlink","unregister","whereis"],p=/[\w@Ø-ÞÀ-Öß-öø-ÿ]/,q=/[0-7]{1,3}|[bdefnrstv\\"']|\^[a-zA-Z]|x[0-9a-zA-Z]{2}|x{[0-9a-zA-Z]+}/;function j(e,n){if(n.in_string)return n.in_string=!v(e),t(n,e,"string");if(n.in_atom)return n.in_atom=!h(e),t(n,e,"atom");if(e.eatSpace())return t(n,e,"whitespace");if(!_(n)&&e.match(/-\s*[a-zß-öø-ÿ][\wØ-ÞÀ-Öß-öø-ÿ]*/))return u(e.current(),S)?t(n,e,"type"):t(n,e,"attribute");var r=e.next();if(r=="%")return e.skipToEnd(),t(n,e,"comment");if(r==":")return t(n,e,"colon");if(r=="?")return e.eatSpace(),e.eatWhile(p),t(n,e,"macro");if(r=="#")return e.eatSpace(),e.eatWhile(p),t(n,e,"record");if(r=="$")return e.next()=="\\"&&!e.match(q)?t(n,e,"error"):t(n,e,"number");if(r==".")return t(n,e,"dot");if(r=="'"){if(!(n.in_atom=!h(e))){if(e.match(/\s*\/\s*[0-9]/,!1))return e.match(/\s*\/\s*[0-9]/,!0),t(n,e,"fun");if(e.match(/\s*\(/,!1)||e.match(/\s*:/,!1))return t(n,e,"function")}return t(n,e,"atom")}if(r=='"')return n.in_string=!v(e),t(n,e,"string");if(/[A-Z_Ø-ÞÀ-Ö]/.test(r))return e.eatWhile(p),t(n,e,"variable");if(/[a-z_ß-öø-ÿ]/.test(r)){if(e.eatWhile(p),e.match(/\s*\/\s*[0-9]/,!1))return e.match(/\s*\/\s*[0-9]/,!0),t(n,e,"fun");var i=e.current();return u(i,x)?t(n,e,"keyword"):u(i,T)?t(n,e,"operator"):e.match(/\s*\(/,!1)?u(i,P)&&(_(n).token!=":"||_(n,2).token=="erlang")?t(n,e,"builtin"):u(i,m)?t(n,e,"guard"):t(n,e,"function"):Q(e)==":"?i=="erlang"?t(n,e,"builtin"):t(n,e,"function"):u(i,["true","false"])?t(n,e,"boolean"):t(n,e,"atom")}var l=/[0-9]/,o=/[0-9a-zA-Z]/;return l.test(r)?(e.eatWhile(l),e.eat("#")?e.eatWhile(o)||e.backUp(1):e.eat(".")&&(e.eatWhile(l)?e.eat(/[eE]/)&&(e.eat(/[-+]/)?e.eatWhile(l)||e.backUp(2):e.eatWhile(l)||e.backUp(1)):e.backUp(1)),t(n,e,"number")):g(e,U,b)?t(n,e,"open_paren"):g(e,Z,y)?t(n,e,"close_paren"):k(e,z,E)?t(n,e,"separator"):k(e,R,A)?t(n,e,"operator"):t(n,e,null)}function g(e,n,r){if(e.current().length==1&&n.test(e.current())){for(e.backUp(1);n.test(e.peek());)if(e.next(),u(e.current(),r))return!0;e.backUp(e.current().length-1)}return!1}function k(e,n,r){if(e.current().length==1&&n.test(e.current())){for(;n.test(e.peek());)e.next();for(;01&&e[n].type==="fun"&&e[n-1].token==="fun")return e.slice(0,n-1);switch(e[n].token){case"}":return a(e,{g:["{"]});case"]":return a(e,{i:["["]});case")":return a(e,{i:["("]});case">>":return a(e,{i:["<<"]});case"end":return a(e,{i:["begin","case","fun","if","receive","try"]});case",":return a(e,{e:["begin","try","when","->",",","(","[","{","<<"]});case"->":return a(e,{r:["when"],m:["try","if","case","receive"]});case";":return a(e,{E:["case","fun","if","receive","try","when"]});case"catch":return a(e,{e:["try"]});case"of":return a(e,{e:["case"]});case"after":return a(e,{e:["receive","try"]});default:return e}}function a(e,n){for(var r in n)for(var i=e.length-1,l=n[r],o=i-1;-1"?u(c.token,["receive","case","if","try"])?c.column+r.unit+r.unit:c.column+r.unit:u(o.token,b)?o.column+o.token.length:(i=G(e),f(i)?i.column+r.unit:0):0}function C(e){var n=e.match(/,|[a-z]+|\}|\]|\)|>>|\|+|\(/);return f(n)&&n.index===0?n[0]:""}function F(e){var n=e.tokenStack.slice(0,-1),r=d(n,"type",["open_paren"]);return f(n[r])?n[r]:!1}function G(e){var n=e.tokenStack,r=d(n,"type",["open_paren","separator","keyword"]),i=d(n,"type",["operator"]);return f(r)&&f(i)&&rs("/model-eval"),m=a=>s(`/model-eval/${a}`),d=a=>n(`/model-eval/${a}`),c=a=>e("/model-eval/start",a),v=a=>s(`/dimension/${a}`),r=a=>e("/dimension",a),g=(a,t)=>o(`/dimension/${a}`,t);export{m as a,v as b,r as c,d,l as g,c as s,g as u}; diff --git a/frontend/dist/assets/factor-kuTfRLto.js b/frontend/dist/assets/factor-kuTfRLto.js new file mode 100644 index 0000000..70c992b --- /dev/null +++ b/frontend/dist/assets/factor-kuTfRLto.js @@ -0,0 +1 @@ +import{s as e}from"./simple-mode-GW_nhZxv.js";const n=e({start:[{regex:/#?!.*/,token:"comment"},{regex:/"""/,token:"string",next:"string3"},{regex:/(STRING:)(\s)/,token:["keyword",null],next:"string2"},{regex:/\S*?"/,token:"string",next:"string"},{regex:/(?:0x[\d,a-f]+)|(?:0o[0-7]+)|(?:0b[0,1]+)|(?:\-?\d+.?\d*)(?=\s)/,token:"number"},{regex:/((?:GENERIC)|\:?\:)(\s+)(\S+)(\s+)(\()/,token:["keyword",null,"def",null,"bracket"],next:"stack"},{regex:/(M\:)(\s+)(\S+)(\s+)(\S+)/,token:["keyword",null,"def",null,"tag"]},{regex:/USING\:/,token:"keyword",next:"vocabulary"},{regex:/(USE\:|IN\:)(\s+)(\S+)(?=\s|$)/,token:["keyword",null,"tag"]},{regex:/(\S+\:)(\s+)(\S+)(?=\s|$)/,token:["keyword",null,"def"]},{regex:/(?:;|\\|t|f|if|loop|while|until|do|PRIVATE>|\.\*\?]+(?=\s|$)/,token:"builtin"},{regex:/[\)><]+\S+(?=\s|$)/,token:"builtin"},{regex:/(?:[\+\-\=\/\*<>])(?=\s|$)/,token:"keyword"},{regex:/\S+/,token:"variable"},{regex:/\s+|./,token:null}],vocabulary:[{regex:/;/,token:"keyword",next:"start"},{regex:/\S+/,token:"tag"},{regex:/\s+|./,token:null}],string:[{regex:/(?:[^\\]|\\.)*?"/,token:"string",next:"start"},{regex:/.*/,token:"string"}],string2:[{regex:/^;/,token:"keyword",next:"start"},{regex:/.*/,token:"string"}],string3:[{regex:/(?:[^\\]|\\.)*?"""/,token:"string",next:"start"},{regex:/.*/,token:"string"}],stack:[{regex:/\)/,token:"bracket",next:"start"},{regex:/--/,token:"bracket"},{regex:/\S+/,token:"meta"},{regex:/\s+|./,token:null}],languageData:{name:"factor",dontIndentStates:["start","vocabulary","string","string3","stack"],commentTokens:{line:"!"}}});export{n as factor}; diff --git a/frontend/dist/assets/fcl-Kvtd6kyn.js b/frontend/dist/assets/fcl-Kvtd6kyn.js new file mode 100644 index 0000000..45c8ec3 --- /dev/null +++ b/frontend/dist/assets/fcl-Kvtd6kyn.js @@ -0,0 +1 @@ +var d={term:!0,method:!0,accu:!0,rule:!0,then:!0,is:!0,and:!0,or:!0,if:!0,default:!0},f={var_input:!0,var_output:!0,fuzzify:!0,defuzzify:!0,function_block:!0,ruleblock:!0},o={end_ruleblock:!0,end_defuzzify:!0,end_function_block:!0,end_fuzzify:!0,end_var:!0},p={true:!0,false:!0,nan:!0,real:!0,min:!0,max:!0,cog:!0,cogs:!0},l=/[+\-*&^%:=<>!|\/]/;function i(e,n){var t=e.next();if(/[\d\.]/.test(t))return t=="."?e.match(/^[0-9]+([eE][\-+]?[0-9]+)?/):t=="0"?e.match(/^[xX][0-9a-fA-F]+/)||e.match(/^0[0-7]+/):e.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/),"number";if(t=="/"||t=="("){if(e.eat("*"))return n.tokenize=c,c(e,n);if(e.eat("/"))return e.skipToEnd(),"comment"}if(l.test(t))return e.eatWhile(l),"operator";e.eatWhile(/[\w\$_\xa1-\uffff]/);var r=e.current().toLowerCase();return d.propertyIsEnumerable(r)||f.propertyIsEnumerable(r)||o.propertyIsEnumerable(r)?"keyword":p.propertyIsEnumerable(r)?"atom":"variable"}function c(e,n){for(var t=!1,r;r=e.next();){if((r=="/"||r==")")&&t){n.tokenize=i;break}t=r=="*"}return"comment"}function a(e,n,t,r,u){this.indented=e,this.column=n,this.type=t,this.align=r,this.prev=u}function k(e,n,t){return e.context=new a(e.indented,n,t,null,e.context)}function v(e){if(e.context.prev){var n=e.context.type;return n=="end_block"&&(e.indented=e.context.indented),e.context=e.context.prev}}const x={name:"fcl",startState:function(e){return{tokenize:null,context:new a(-e,0,"top",!1),indented:0,startOfLine:!0}},token:function(e,n){var t=n.context;if(e.sol()&&(t.align==null&&(t.align=!1),n.indented=e.indentation(),n.startOfLine=!0),e.eatSpace())return null;var r=(n.tokenize||i)(e,n);if(r=="comment")return r;t.align==null&&(t.align=!0);var u=e.current().toLowerCase();return f.propertyIsEnumerable(u)?k(n,e.column(),"end_block"):o.propertyIsEnumerable(u)&&v(n),n.startOfLine=!1,r},indent:function(e,n,t){if(e.tokenize!=i&&e.tokenize!=null)return 0;var r=e.context,u=o.propertyIsEnumerable(n);return r.align?r.column+(u?0:1):r.indented+(u?0:t.unit)},languageData:{commentTokens:{line:"//",block:{open:"(*",close:"*)"}}}};export{x as fcl}; diff --git a/frontend/dist/assets/fineTune-BsSQAQBF.js b/frontend/dist/assets/fineTune-BsSQAQBF.js new file mode 100644 index 0000000..3a948ae --- /dev/null +++ b/frontend/dist/assets/fineTune-BsSQAQBF.js @@ -0,0 +1 @@ +import{aF as n,aG as t,aH as a,aI as u}from"./index-BKKvzUDD.js";const o=()=>n("/fine-tune"),c=e=>n(`/fine-tune/${e}`),f=e=>n("/fine-tune/check-name",{name:e}),r=e=>t("/fine-tune",e),F=e=>t("/fine-tune/start",e),T=(e,s)=>a(`/fine-tune/${e}`,s),p=e=>t(`/fine-tune/stop/${e}`),g=e=>u(`/fine-tune/${e}`),$=e=>n(`/fine-tune/progress/${e}`);export{$ as a,c as b,f as c,g as d,r as e,F as f,o as g,p as s,T as u}; diff --git a/frontend/dist/assets/fontawesome-webfont-B-jkhYfk.woff2 b/frontend/dist/assets/fontawesome-webfont-B-jkhYfk.woff2 new file mode 100644 index 0000000..4d13fc6 Binary files /dev/null and b/frontend/dist/assets/fontawesome-webfont-B-jkhYfk.woff2 differ diff --git a/frontend/dist/assets/fontawesome-webfont-CDK5bt4p.woff b/frontend/dist/assets/fontawesome-webfont-CDK5bt4p.woff new file mode 100644 index 0000000..400014a Binary files /dev/null and b/frontend/dist/assets/fontawesome-webfont-CDK5bt4p.woff differ diff --git a/frontend/dist/assets/fontawesome-webfont-CQDK8MU3.ttf b/frontend/dist/assets/fontawesome-webfont-CQDK8MU3.ttf new file mode 100644 index 0000000..35acda2 Binary files /dev/null and b/frontend/dist/assets/fontawesome-webfont-CQDK8MU3.ttf differ diff --git a/frontend/dist/assets/forth-Ffai-XNe.js b/frontend/dist/assets/forth-Ffai-XNe.js new file mode 100644 index 0000000..a7a0bd6 --- /dev/null +++ b/frontend/dist/assets/forth-Ffai-XNe.js @@ -0,0 +1 @@ +function t(i){var n=[];return i.split(" ").forEach(function(E){n.push({name:E})}),n}var r=t("INVERT AND OR XOR 2* 2/ LSHIFT RSHIFT 0= = 0< < > U< MIN MAX 2DROP 2DUP 2OVER 2SWAP ?DUP DEPTH DROP DUP OVER ROT SWAP >R R> R@ + - 1+ 1- ABS NEGATE S>D * M* UM* FM/MOD SM/REM UM/MOD */ */MOD / /MOD MOD HERE , @ ! CELL+ CELLS C, C@ C! CHARS 2@ 2! ALIGN ALIGNED +! ALLOT CHAR [CHAR] [ ] BL FIND EXECUTE IMMEDIATE COUNT LITERAL STATE ; DOES> >BODY EVALUATE SOURCE >IN <# # #S #> HOLD SIGN BASE >NUMBER HEX DECIMAL FILL MOVE . CR EMIT SPACE SPACES TYPE U. .R U.R ACCEPT TRUE FALSE <> U> 0<> 0> NIP TUCK ROLL PICK 2>R 2R@ 2R> WITHIN UNUSED MARKER I J TO COMPILE, [COMPILE] SAVE-INPUT RESTORE-INPUT PAD ERASE 2LITERAL DNEGATE D- D+ D0< D0= D2* D2/ D< D= DMAX DMIN D>S DABS M+ M*/ D. D.R 2ROT DU< CATCH THROW FREE RESIZE ALLOCATE CS-PICK CS-ROLL GET-CURRENT SET-CURRENT FORTH-WORDLIST GET-ORDER SET-ORDER PREVIOUS SEARCH-WORDLIST WORDLIST FIND ALSO ONLY FORTH DEFINITIONS ORDER -TRAILING /STRING SEARCH COMPARE CMOVE CMOVE> BLANK SLITERAL"),O=t("IF ELSE THEN BEGIN WHILE REPEAT UNTIL RECURSE [IF] [ELSE] [THEN] ?DO DO LOOP +LOOP UNLOOP LEAVE EXIT AGAIN CASE OF ENDOF ENDCASE");function R(i,n){var E;for(E=i.length-1;E>=0;E--)if(i[E].name===n.toUpperCase())return i[E]}const L={name:"forth",startState:function(){return{state:"",base:10,coreWordList:r,immediateWordList:O,wordList:[]}},token:function(i,n){var E;if(i.eatSpace())return null;if(n.state===""){if(i.match(/^(\]|:NONAME)(\s|$)/i))return n.state=" compilation","builtin";if(E=i.match(/^(\:)\s+(\S+)(\s|$)+/),E)return n.wordList.push({name:E[2].toUpperCase()}),n.state=" compilation","def";if(E=i.match(/^(VARIABLE|2VARIABLE|CONSTANT|2CONSTANT|CREATE|POSTPONE|VALUE|WORD)\s+(\S+)(\s|$)+/i),E)return n.wordList.push({name:E[2].toUpperCase()}),"def";if(E=i.match(/^(\'|\[\'\])\s+(\S+)(\s|$)+/),E)return"builtin"}else{if(i.match(/^(\;|\[)(\s)/))return n.state="",i.backUp(1),"builtin";if(i.match(/^(\;|\[)($)/))return n.state="","builtin";if(i.match(/^(POSTPONE)\s+\S+(\s|$)+/))return"builtin"}if(E=i.match(/^(\S+)(\s+|$)/),E)return R(n.wordList,E[1])!==void 0?"variable":E[1]==="\\"?(i.skipToEnd(),"comment"):R(n.coreWordList,E[1])!==void 0?"builtin":R(n.immediateWordList,E[1])!==void 0?"keyword":E[1]==="("?(i.eatWhile(function(e){return e!==")"}),i.eat(")"),"comment"):E[1]===".("?(i.eatWhile(function(e){return e!==")"}),i.eat(")"),"string"):E[1]==='S"'||E[1]==='."'||E[1]==='C"'?(i.eatWhile(function(e){return e!=='"'}),i.eat('"'),"string"):E[1]-68719476735?"number":"atom"}};export{L as forth}; diff --git a/frontend/dist/assets/fortran-DYz_wnZ1.js b/frontend/dist/assets/fortran-DYz_wnZ1.js new file mode 100644 index 0000000..ef7d705 --- /dev/null +++ b/frontend/dist/assets/fortran-DYz_wnZ1.js @@ -0,0 +1 @@ +function r(t){for(var n={},e=0;e\/\:]/,_=/^\.(and|or|eq|lt|le|gt|ge|ne|not|eqv|neqv)\./i;function u(t,n){if(t.match(_))return"operator";var e=t.next();if(e=="!")return t.skipToEnd(),"comment";if(e=='"'||e=="'")return n.tokenize=m(e),n.tokenize(t,n);if(/[\[\]\(\),]/.test(e))return null;if(/\d/.test(e))return t.eatWhile(/[\w\.]/),"number";if(c.test(e))return t.eatWhile(c),"operator";t.eatWhile(/[\w\$_]/);var i=t.current().toLowerCase();return l.hasOwnProperty(i)?"keyword":s.hasOwnProperty(i)||d.hasOwnProperty(i)?"builtin":"variable"}function m(t){return function(n,e){for(var i=!1,a,o=!1;(a=n.next())!=null;){if(a==t&&!i){o=!0;break}i=!i&&a=="\\"}return(o||!i)&&(e.tokenize=null),"string"}}const p={name:"fortran",startState:function(){return{tokenize:null}},token:function(t,n){if(t.eatSpace())return null;var e=(n.tokenize||u)(t,n);return e=="comment"||e=="meta",e}};export{p as fortran}; diff --git a/frontend/dist/assets/gas-Bneqetm1.js b/frontend/dist/assets/gas-Bneqetm1.js new file mode 100644 index 0000000..d9ffcb7 --- /dev/null +++ b/frontend/dist/assets/gas-Bneqetm1.js @@ -0,0 +1 @@ +function v(r){var u=[],b="",o={".abort":"builtin",".align":"builtin",".altmacro":"builtin",".ascii":"builtin",".asciz":"builtin",".balign":"builtin",".balignw":"builtin",".balignl":"builtin",".bundle_align_mode":"builtin",".bundle_lock":"builtin",".bundle_unlock":"builtin",".byte":"builtin",".cfi_startproc":"builtin",".comm":"builtin",".data":"builtin",".def":"builtin",".desc":"builtin",".dim":"builtin",".double":"builtin",".eject":"builtin",".else":"builtin",".elseif":"builtin",".end":"builtin",".endef":"builtin",".endfunc":"builtin",".endif":"builtin",".equ":"builtin",".equiv":"builtin",".eqv":"builtin",".err":"builtin",".error":"builtin",".exitm":"builtin",".extern":"builtin",".fail":"builtin",".file":"builtin",".fill":"builtin",".float":"builtin",".func":"builtin",".global":"builtin",".gnu_attribute":"builtin",".hidden":"builtin",".hword":"builtin",".ident":"builtin",".if":"builtin",".incbin":"builtin",".include":"builtin",".int":"builtin",".internal":"builtin",".irp":"builtin",".irpc":"builtin",".lcomm":"builtin",".lflags":"builtin",".line":"builtin",".linkonce":"builtin",".list":"builtin",".ln":"builtin",".loc":"builtin",".loc_mark_labels":"builtin",".local":"builtin",".long":"builtin",".macro":"builtin",".mri":"builtin",".noaltmacro":"builtin",".nolist":"builtin",".octa":"builtin",".offset":"builtin",".org":"builtin",".p2align":"builtin",".popsection":"builtin",".previous":"builtin",".print":"builtin",".protected":"builtin",".psize":"builtin",".purgem":"builtin",".pushsection":"builtin",".quad":"builtin",".reloc":"builtin",".rept":"builtin",".sbttl":"builtin",".scl":"builtin",".section":"builtin",".set":"builtin",".short":"builtin",".single":"builtin",".size":"builtin",".skip":"builtin",".sleb128":"builtin",".space":"builtin",".stab":"builtin",".string":"builtin",".struct":"builtin",".subsection":"builtin",".symver":"builtin",".tag":"builtin",".text":"builtin",".title":"builtin",".type":"builtin",".uleb128":"builtin",".val":"builtin",".version":"builtin",".vtable_entry":"builtin",".vtable_inherit":"builtin",".warning":"builtin",".weak":"builtin",".weakref":"builtin",".word":"builtin"},i={};function p(){b="#",i.al="variable",i.ah="variable",i.ax="variable",i.eax="variableName.special",i.rax="variableName.special",i.bl="variable",i.bh="variable",i.bx="variable",i.ebx="variableName.special",i.rbx="variableName.special",i.cl="variable",i.ch="variable",i.cx="variable",i.ecx="variableName.special",i.rcx="variableName.special",i.dl="variable",i.dh="variable",i.dx="variable",i.edx="variableName.special",i.rdx="variableName.special",i.si="variable",i.esi="variableName.special",i.rsi="variableName.special",i.di="variable",i.edi="variableName.special",i.rdi="variableName.special",i.sp="variable",i.esp="variableName.special",i.rsp="variableName.special",i.bp="variable",i.ebp="variableName.special",i.rbp="variableName.special",i.ip="variable",i.eip="variableName.special",i.rip="variableName.special",i.cs="keyword",i.ds="keyword",i.ss="keyword",i.es="keyword",i.fs="keyword",i.gs="keyword"}function f(){b="@",o.syntax="builtin",i.r0="variable",i.r1="variable",i.r2="variable",i.r3="variable",i.r4="variable",i.r5="variable",i.r6="variable",i.r7="variable",i.r8="variable",i.r9="variable",i.r10="variable",i.r11="variable",i.r12="variable",i.sp="variableName.special",i.lr="variableName.special",i.pc="variableName.special",i.r13=i.sp,i.r14=i.lr,i.r15=i.pc,u.push(function(l,n){if(l==="#")return n.eatWhile(/\w/),"number"})}r==="x86"?p():(r==="arm"||r==="armv6")&&f();function d(l,n){for(var e=!1,a;(a=l.next())!=null;){if(a===n&&!e)return!1;e=!e&&a==="\\"}return e}function s(l,n){for(var e=!1,a;(a=l.next())!=null;){if(a==="/"&&e){n.tokenize=null;break}e=a==="*"}return"comment"}return{name:"gas",startState:function(){return{tokenize:null}},token:function(l,n){if(n.tokenize)return n.tokenize(l,n);if(l.eatSpace())return null;var e,a,t=l.next();if(t==="/"&&l.eat("*"))return n.tokenize=s,s(l,n);if(t===b)return l.skipToEnd(),"comment";if(t==='"')return d(l,'"'),"string";if(t===".")return l.eatWhile(/\w/),a=l.current().toLowerCase(),e=o[a],e||null;if(t==="=")return l.eatWhile(/\w/),"tag";if(t==="{"||t==="}")return"bracket";if(/\d/.test(t))return t==="0"&&l.eat("x")?(l.eatWhile(/[0-9a-fA-F]/),"number"):(l.eatWhile(/\d/),"number");if(/\w/.test(t))return l.eatWhile(/\w/),l.eat(":")?"tag":(a=l.current().toLowerCase(),e=i[a],e||null);for(var c=0;c]*>?/)?"variable":(n.next(),n.eatWhile(/[^@"<#]/),null)}};export{a as gherkin}; diff --git a/frontend/dist/assets/groovy-D9Dt4D0W.js b/frontend/dist/assets/groovy-D9Dt4D0W.js new file mode 100644 index 0000000..61d6f4c --- /dev/null +++ b/frontend/dist/assets/groovy-D9Dt4D0W.js @@ -0,0 +1 @@ +function a(e){for(var n={},t=e.split(" "),i=0;i"))return r="->",null;if(/[+\-*&%=<>!?|\/~]/.test(t))return e.eatWhile(/[+\-*&%=<>|~]/),"operator";if(e.eatWhile(/[\w\$_]/),t=="@")return e.eatWhile(/[\w\$_\.]/),"meta";if(n.lastToken==".")return"property";if(e.eat(":"))return r="proplabel","property";var i=e.current();return z.propertyIsEnumerable(i)?"atom":b.propertyIsEnumerable(i)?(g.propertyIsEnumerable(i)?r="newstatement":x.propertyIsEnumerable(i)&&(r="standalone"),"keyword"):"variable"}k.isBase=!0;function y(e,n,t){var i=!1;if(e!="/"&&n.eat(e))if(n.eat(e))i=!0;else return"string";function o(l,d){for(var f=!1,c,s=!i;(c=l.next())!=null;){if(c==e&&!f){if(!i)break;if(l.match(e+e)){s=!0;break}}if(e=='"'&&c=="$"&&!f){if(l.eat("{"))return d.tokenize.push(m()),"string";if(l.match(/^\w/,!1))return d.tokenize.push(E),"string"}f=!f&&c=="\\"}return s&&d.tokenize.pop(),"string"}return t.tokenize.push(o),o(n,t)}function m(){var e=1;function n(t,i){if(t.peek()=="}"){if(e--,e==0)return i.tokenize.pop(),i.tokenize[i.tokenize.length-1](t,i)}else t.peek()=="{"&&e++;return k(t,i)}return n.isBase=!0,n}function E(e,n){var t=e.match(/^(\.|[\w\$_]+)/);return(!t||!e.match(t[0]=="."?/^[\w$_]/:/^\./))&&n.tokenize.pop(),t?t[0]=="."?null:"variable":n.tokenize[n.tokenize.length-1](e,n)}function v(e,n){for(var t=!1,i;i=e.next();){if(i=="/"&&t){n.tokenize.pop();break}t=i=="*"}return"comment"}function h(e,n){return!e||e=="operator"||e=="->"||/[\.\[\{\(,;:]/.test(e)||e=="newstatement"||e=="keyword"||e=="proplabel"||e=="standalone"&&!n}function w(e,n,t,i,o){this.indented=e,this.column=n,this.type=t,this.align=i,this.prev=o}function p(e,n,t){return e.context=new w(e.indented,n,t,null,e.context)}function u(e){var n=e.context.type;return(n==")"||n=="]"||n=="}")&&(e.indented=e.context.indented),e.context=e.context.prev}const T={name:"groovy",startState:function(e){return{tokenize:[k],context:new w(-e,0,"top",!1),indented:0,startOfLine:!0,lastToken:null}},token:function(e,n){var t=n.context;if(e.sol()&&(t.align==null&&(t.align=!1),n.indented=e.indentation(),n.startOfLine=!0,t.type=="statement"&&!h(n.lastToken,!0)&&(u(n),t=n.context)),e.eatSpace())return null;r=null;var i=n.tokenize[n.tokenize.length-1](e,n);if(i=="comment")return i;if(t.align==null&&(t.align=!0),(r==";"||r==":")&&t.type=="statement")u(n);else if(r=="->"&&t.type=="statement"&&t.prev.type=="}")u(n),n.context.align=!1;else if(r=="{")p(n,e.column(),"}");else if(r=="[")p(n,e.column(),"]");else if(r=="(")p(n,e.column(),")");else if(r=="}"){for(;t.type=="statement";)t=u(n);for(t.type=="}"&&(t=u(n));t.type=="statement";)t=u(n)}else r==t.type?u(n):(t.type=="}"||t.type=="top"||t.type=="statement"&&r=="newstatement")&&p(n,e.column(),"statement");return n.startOfLine=!1,n.lastToken=r||i,i},indent:function(e,n,t){if(!e.tokenize[e.tokenize.length-1].isBase)return null;var i=n&&n.charAt(0),o=e.context;o.type=="statement"&&!h(e.lastToken,!0)&&(o=o.prev);var l=i==o.type;return o.type=="statement"?o.indented+(i=="{"?0:t.unit):o.align?o.column+(l?0:1):o.indented+(l?0:t.unit)},languageData:{indentOnInput:/^\s*[{}]$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}},closeBrackets:{brackets:["(","[","{","'",'"',"'''",'"""']}}};export{T as groovy}; diff --git a/frontend/dist/assets/haskell-Cw1EW3IL.js b/frontend/dist/assets/haskell-Cw1EW3IL.js new file mode 100644 index 0000000..b8da2a3 --- /dev/null +++ b/frontend/dist/assets/haskell-Cw1EW3IL.js @@ -0,0 +1 @@ +function f(e,n,t){return n(t),t(e,n)}var g=/[a-z_]/,c=/[A-Z]/,l=/\d/,v=/[0-9A-Fa-f]/,w=/[0-7]/,d=/[a-z_A-Z0-9'\xa1-\uffff]/,o=/[-!#$%&*+.\/<=>?@\\^|~:]/,E=/[(),;[\]`{}]/,h=/[ \t\v\f]/;function i(e,n){if(e.eatWhile(h))return null;var t=e.next();if(E.test(t)){if(t=="{"&&e.eat("-")){var r="comment";return e.eat("#")&&(r="meta"),f(e,n,s(r,1))}return null}if(t=="'")return e.eat("\\"),e.next(),e.eat("'")?"string":"error";if(t=='"')return f(e,n,p);if(c.test(t))return e.eatWhile(d),e.eat(".")?"qualifier":"type";if(g.test(t))return e.eatWhile(d),"variable";if(l.test(t)){if(t=="0"){if(e.eat(/[xX]/))return e.eatWhile(v),"integer";if(e.eat(/[oO]/))return e.eatWhile(w),"number"}e.eatWhile(l);var r="number";return e.match(/^\.\d+/)&&(r="number"),e.eat(/[eE]/)&&(r="number",e.eat(/[-+]/),e.eatWhile(l)),r}return t=="."&&e.eat(".")?"keyword":o.test(t)?t=="-"&&e.eat(/-/)&&(e.eatWhile(/-/),!e.eat(o))?(e.skipToEnd(),"comment"):(e.eatWhile(o),"variable"):"error"}function s(e,n){return n==0?i:function(t,r){for(var a=n;!t.eol();){var u=t.next();if(u=="{"&&t.eat("-"))++a;else if(u=="-"&&t.eat("}")&&(--a,a==0))return r(i),e}return r(s(e,a)),e}}function p(e,n){for(;!e.eol();){var t=e.next();if(t=='"')return n(i),"string";if(t=="\\"){if(e.eol()||e.eat(h))return n(x),"string";e.eat("&")||e.next()}}return n(i),"error"}function x(e,n){return e.eat("\\")?f(e,n,p):(e.next(),n(i),"error")}var m=(function(){var e={};function n(t){return function(){for(var r=0;r","@","~","=>"),n("builtin")("!!","$!","$","&&","+","++","-",".","/","/=","<","<*","<=","<$>","<*>","=<<","==",">",">=",">>",">>=","^","^^","||","*","*>","**"),n("builtin")("Applicative","Bool","Bounded","Char","Double","EQ","Either","Enum","Eq","False","FilePath","Float","Floating","Fractional","Functor","GT","IO","IOError","Int","Integer","Integral","Just","LT","Left","Maybe","Monad","Nothing","Num","Ord","Ordering","Rational","Read","ReadS","Real","RealFloat","RealFrac","Right","Show","ShowS","String","True"),n("builtin")("abs","acos","acosh","all","and","any","appendFile","asTypeOf","asin","asinh","atan","atan2","atanh","break","catch","ceiling","compare","concat","concatMap","const","cos","cosh","curry","cycle","decodeFloat","div","divMod","drop","dropWhile","either","elem","encodeFloat","enumFrom","enumFromThen","enumFromThenTo","enumFromTo","error","even","exp","exponent","fail","filter","flip","floatDigits","floatRadix","floatRange","floor","fmap","foldl","foldl1","foldr","foldr1","fromEnum","fromInteger","fromIntegral","fromRational","fst","gcd","getChar","getContents","getLine","head","id","init","interact","ioError","isDenormalized","isIEEE","isInfinite","isNaN","isNegativeZero","iterate","last","lcm","length","lex","lines","log","logBase","lookup","map","mapM","mapM_","max","maxBound","maximum","maybe","min","minBound","minimum","mod","negate","not","notElem","null","odd","or","otherwise","pi","pred","print","product","properFraction","pure","putChar","putStr","putStrLn","quot","quotRem","read","readFile","readIO","readList","readLn","readParen","reads","readsPrec","realToFrac","recip","rem","repeat","replicate","return","reverse","round","scaleFloat","scanl","scanl1","scanr","scanr1","seq","sequence","sequence_","show","showChar","showList","showParen","showString","shows","showsPrec","significand","signum","sin","sinh","snd","span","splitAt","sqrt","subtract","succ","sum","tail","take","takeWhile","tan","tanh","toEnum","toInteger","toRational","truncate","uncurry","undefined","unlines","until","unwords","unzip","unzip3","userError","words","writeFile","zip","zip3","zipWith","zipWith3"),e})();const F={name:"haskell",startState:function(){return{f:i}},copyState:function(e){return{f:e.f}},token:function(e,n){var t=n.f(e,function(a){n.f=a}),r=e.current();return m.hasOwnProperty(r)?m[r]:t},languageData:{commentTokens:{line:"--",block:{open:"{-",close:"-}"}}}};export{F as haskell}; diff --git a/frontend/dist/assets/haxe-H-WmDvRZ.js b/frontend/dist/assets/haxe-H-WmDvRZ.js new file mode 100644 index 0000000..18be189 --- /dev/null +++ b/frontend/dist/assets/haxe-H-WmDvRZ.js @@ -0,0 +1 @@ +function o(e){return{type:e,style:"keyword"}}var P=o("keyword a"),W=o("keyword b"),g=o("keyword c"),K=o("operator"),z={type:"atom",style:"atom"},y={type:"attribute",style:"attribute"},c=o("typedef"),B={if:P,while:P,else:W,do:W,try:W,return:g,break:g,continue:g,new:g,throw:g,var:o("var"),inline:y,static:y,using:o("import"),public:y,private:y,cast:o("cast"),import:o("import"),macro:o("macro"),function:o("function"),catch:o("catch"),untyped:o("untyped"),callback:o("cb"),for:o("for"),switch:o("switch"),case:o("case"),default:o("default"),in:K,never:o("property_access"),trace:o("trace"),class:c,abstract:c,enum:c,interface:c,typedef:c,extends:c,implements:c,dynamic:c,true:z,false:z,null:z},E=/[+\-*&%=<>!?|]/;function I(e,r,n){return r.tokenize=n,n(e,r)}function L(e,r){for(var n=!1,i;(i=e.next())!=null;){if(i==r&&!n)return!0;n=!n&&i=="\\"}}var c,N;function p(e,r,n){return c=e,N=n,r}function A(e,r){var n=e.next();if(n=='"'||n=="'")return I(e,r,M(n));if(/[\[\]{}\(\),;\:\.]/.test(n))return p(n);if(n=="0"&&e.eat(/x/i))return e.eatWhile(/[\da-f]/i),p("number","number");if(/\d/.test(n)||n=="-"&&e.eat(/\d/))return e.match(/^\d*(?:\.\d*(?!\.))?(?:[eE][+\-]?\d+)?/),p("number","number");if(r.reAllowed&&n=="~"&&e.eat(/\//))return L(e,"/"),e.eatWhile(/[gimsu]/),p("regexp","string.special");if(n=="/")return e.eat("*")?I(e,r,Q):e.eat("/")?(e.skipToEnd(),p("comment","comment")):(e.eatWhile(E),p("operator",null,e.current()));if(n=="#")return e.skipToEnd(),p("conditional","meta");if(n=="@")return e.eat(/:/),e.eatWhile(/[\w_]/),p("metadata","meta");if(E.test(n))return e.eatWhile(E),p("operator",null,e.current());var i;if(/[A-Z]/.test(n))return e.eatWhile(/[\w_<>]/),i=e.current(),p("type","type",i);e.eatWhile(/[\w_]/);var i=e.current(),u=B.propertyIsEnumerable(i)&&B[i];return u&&r.kwAllowed?p(u.type,u.style,i):p("variable","variable",i)}function M(e){return function(r,n){return L(r,e)&&(n.tokenize=A),p("string","string")}}function Q(e,r){for(var n=!1,i;i=e.next();){if(i=="/"&&n){r.tokenize=A;break}n=i=="*"}return p("comment","comment")}var $={atom:!0,number:!0,variable:!0,string:!0,regexp:!0};function j(e,r,n,i,u,s){this.indented=e,this.column=r,this.type=n,this.prev=u,this.info=s,i!=null&&(this.align=i)}function R(e,r){for(var n=e.localVars;n;n=n.next)if(n.name==r)return!0}function X(e,r,n,i,u){var s=e.cc;for(a.state=e,a.stream=u,a.marked=null,a.cc=s,e.lexical.hasOwnProperty("align")||(e.lexical.align=!0);;){var k=s.length?s.pop():x;if(k(n,i)){for(;s.length&&s[s.length-1].lex;)s.pop()();return a.marked?a.marked:n=="variable"&&R(e,i)?"variableName.local":n=="variable"&&Y(e,i)?"variableName.special":r}}}function Y(e,r){if(/[a-z]/.test(r.charAt(0)))return!1;for(var n=e.importedtypes.length,i=0;i=0;e--)a.cc.push(arguments[e])}function t(){return b.apply(null,arguments),!0}function H(e,r){for(var n=r;n;n=n.next)if(n.name==e)return!0;return!1}function S(e){var r=a.state;if(r.context){if(a.marked="def",H(e,r.localVars))return;r.localVars={name:e,next:r.localVars}}else if(r.globalVars){if(H(e,r.globalVars))return;r.globalVars={name:e,next:r.globalVars}}}var ee={name:"this",next:null};function D(){a.state.context||(a.state.localVars=ee),a.state.context={prev:a.state.context,vars:a.state.localVars}}function V(){a.state.localVars=a.state.context.vars,a.state.context=a.state.context.prev}V.lex=!0;function l(e,r){var n=function(){var i=a.state;i.lexical=new j(i.indented,a.stream.column(),e,null,i.lexical,r)};return n.lex=!0,n}function f(){var e=a.state;e.lexical.prev&&(e.lexical.type==")"&&(e.indented=e.lexical.indented),e.lexical=e.lexical.prev)}f.lex=!0;function d(e){function r(n){return n==e?t():e==";"?b():t(r)}return r}function x(e){return e=="@"?t(Z):e=="var"?t(l("vardef"),C,d(";"),f):e=="keyword a"?t(l("form"),h,x,f):e=="keyword b"?t(l("form"),x,f):e=="{"?t(l("}"),D,_,f,V):e==";"?t():e=="attribute"?t(U):e=="function"?t(w):e=="for"?t(l("form"),d("("),l(")"),ae,d(")"),f,x,f):e=="variable"?t(l("stat"),te):e=="switch"?t(l("form"),h,l("}","switch"),d("{"),_,f,f):e=="case"?t(h,d(":")):e=="default"?t(d(":")):e=="catch"?t(l("form"),D,d("("),J,d(")"),x,f,V):e=="import"?t(q,d(";")):e=="typedef"?t(ne):b(l("stat"),h,d(";"),f)}function h(e){return $.hasOwnProperty(e)||e=="type"?t(v):e=="function"?t(w):e=="keyword c"?t(O):e=="("?t(l(")"),O,d(")"),f,v):e=="operator"?t(h):e=="["?t(l("]"),m(O,"]"),f,v):e=="{"?t(l("}"),m(ue,"}"),f,v):t()}function O(e){return e.match(/[;\}\)\],]/)?b():b(h)}function v(e,r){if(e=="operator"&&/\+\+|--/.test(r))return t(v);if(e=="operator"||e==":")return t(h);if(e!=";"){if(e=="(")return t(l(")"),m(h,")"),f,v);if(e==".")return t(ie,v);if(e=="[")return t(l("]"),h,d("]"),f,v)}}function U(e){if(e=="attribute")return t(U);if(e=="function")return t(w);if(e=="var")return t(C)}function Z(e){if(e==":"||e=="variable")return t(Z);if(e=="(")return t(l(")"),m(re,")"),f,x)}function re(e){if(e=="variable")return t()}function q(e,r){if(e=="variable"&&/[A-Z]/.test(r.charAt(0)))return F(r),t();if(e=="variable"||e=="property"||e=="."||r=="*")return t(q)}function ne(e,r){if(e=="variable"&&/[A-Z]/.test(r.charAt(0)))return F(r),t();if(e=="type"&&/[A-Z]/.test(r.charAt(0)))return t()}function te(e){return e==":"?t(f,x):b(v,d(";"),f)}function ie(e){if(e=="variable")return a.marked="property",t()}function ue(e){if(e=="variable"&&(a.marked="property"),$.hasOwnProperty(e))return t(d(":"),h)}function m(e,r){function n(i){return i==","?t(e,n):i==r?t():t(d(r))}return function(i){return i==r?t():b(e,n)}}function _(e){return e=="}"?t():b(x,_)}function C(e,r){return e=="variable"?(S(r),t(T,G)):t()}function G(e,r){if(r=="=")return t(h,G);if(e==",")return t(C)}function ae(e,r){return e=="variable"?(S(r),t(fe,h)):b()}function fe(e,r){if(r=="in")return t()}function w(e,r){if(e=="variable"||e=="type")return S(r),t(w);if(r=="new")return t(w);if(e=="(")return t(l(")"),D,m(J,")"),f,T,x,V)}function T(e){if(e==":")return t(oe)}function oe(e){if(e=="type"||e=="variable")return t();if(e=="{")return t(l("}"),m(le,"}"),f)}function le(e){if(e=="variable")return t(T)}function J(e,r){if(e=="variable")return S(r),t(T)}const ce={name:"haxe",startState:function(e){var r=["Int","Float","String","Void","Std","Bool","Dynamic","Array"],n={tokenize:A,reAllowed:!0,kwAllowed:!0,cc:[],lexical:new j(-e,0,"block",!1),importedtypes:r,context:null,indented:0};return n},token:function(e,r){if(e.sol()&&(r.lexical.hasOwnProperty("align")||(r.lexical.align=!1),r.indented=e.indentation()),e.eatSpace())return null;var n=r.tokenize(e,r);return c=="comment"?n:(r.reAllowed=!!(c=="operator"||c=="keyword c"||c.match(/^[\[{}\(,;:]$/)),r.kwAllowed=c!=".",X(r,n,c,N,e))},indent:function(e,r,n){if(e.tokenize!=A)return 0;var i=r&&r.charAt(0),u=e.lexical;u.type=="stat"&&i=="}"&&(u=u.prev);var s=u.type,k=i==s;return s=="vardef"?u.indented+4:s=="form"&&i=="{"?u.indented:s=="stat"||s=="form"?u.indented+n.unit:u.info=="switch"&&!k?u.indented+(/^(?:case|default)\b/.test(r)?n.unit:2*n.unit):u.align?u.column+(k?0:1):u.indented+(k?0:n.unit)},languageData:{indentOnInput:/^\s*[{}]$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}},se={name:"hxml",startState:function(){return{define:!1,inString:!1}},token:function(e,r){var u=e.peek(),n=e.sol();if(u=="#")return e.skipToEnd(),"comment";if(n&&u=="-"){var i="variable-2";return e.eat(/-/),e.peek()=="-"&&(e.eat(/-/),i="keyword a"),e.peek()=="D"&&(e.eat(/[D]/),i="keyword c",r.define=!0),e.eatWhile(/[A-Z]/i),i}var u=e.peek();return r.inString==!1&&u=="'"&&(r.inString=!0,e.next()),r.inString==!0?(e.skipTo("'")||e.skipToEnd(),e.peek()=="'"&&(e.next(),r.inString=!1),"string"):(e.next(),null)},languageData:{commentTokens:{line:"#"}}};export{ce as haxe,se as hxml}; diff --git a/frontend/dist/assets/http-DBlCnlav.js b/frontend/dist/assets/http-DBlCnlav.js new file mode 100644 index 0000000..7b06438 --- /dev/null +++ b/frontend/dist/assets/http-DBlCnlav.js @@ -0,0 +1 @@ +function u(r,n){return r.skipToEnd(),n.cur=t,"error"}function i(r,n){return r.match(/^HTTP\/\d\.\d/)?(n.cur=f,"keyword"):r.match(/^[A-Z]+/)&&/[ \t]/.test(r.peek())?(n.cur=d,"keyword"):u(r,n)}function f(r,n){var e=r.match(/^\d+/);if(!e)return u(r,n);n.cur=l;var o=Number(e[0]);return o>=100&&o<400?"atom":"error"}function l(r,n){return r.skipToEnd(),n.cur=t,null}function d(r,n){return r.eatWhile(/\S/),n.cur=s,"string.special"}function s(r,n){return r.match(/^HTTP\/\d\.\d$/)?(n.cur=t,"keyword"):u(r,n)}function t(r){return r.sol()&&!r.eat(/[ \t]/)?r.match(/^.*?:/)?"atom":(r.skipToEnd(),"error"):(r.skipToEnd(),"string")}function c(r){return r.skipToEnd(),null}const p={name:"http",token:function(r,n){var e=n.cur;return e!=t&&e!=c&&r.eatSpace()?null:e(r,n)},blankLine:function(r){r.cur=c},startState:function(){return{cur:i}}};export{p as http}; diff --git a/frontend/dist/assets/idl-BEugSyMb.js b/frontend/dist/assets/idl-BEugSyMb.js new file mode 100644 index 0000000..a779fbe --- /dev/null +++ b/frontend/dist/assets/idl-BEugSyMb.js @@ -0,0 +1 @@ +function t(e){return new RegExp("^(("+e.join(")|(")+"))\\b","i")}var r=["a_correlate","abs","acos","adapt_hist_equal","alog","alog2","alog10","amoeba","annotate","app_user_dir","app_user_dir_query","arg_present","array_equal","array_indices","arrow","ascii_template","asin","assoc","atan","axis","axis","bandpass_filter","bandreject_filter","barplot","bar_plot","beseli","beselj","beselk","besely","beta","biginteger","bilinear","bin_date","binary_template","bindgen","binomial","bit_ffs","bit_population","blas_axpy","blk_con","boolarr","boolean","boxplot","box_cursor","breakpoint","broyden","bubbleplot","butterworth","bytarr","byte","byteorder","bytscl","c_correlate","calendar","caldat","call_external","call_function","call_method","call_procedure","canny","catch","cd","cdf","ceil","chebyshev","check_math","chisqr_cvf","chisqr_pdf","choldc","cholsol","cindgen","cir_3pnt","clipboard","close","clust_wts","cluster","cluster_tree","cmyk_convert","code_coverage","color_convert","color_exchange","color_quan","color_range_map","colorbar","colorize_sample","colormap_applicable","colormap_gradient","colormap_rotation","colortable","comfit","command_line_args","common","compile_opt","complex","complexarr","complexround","compute_mesh_normals","cond","congrid","conj","constrained_min","contour","contour","convert_coord","convol","convol_fft","coord2to3","copy_lun","correlate","cos","cosh","cpu","cramer","createboxplotdata","create_cursor","create_struct","create_view","crossp","crvlength","ct_luminance","cti_test","cursor","curvefit","cv_coord","cvttobm","cw_animate","cw_animate_getp","cw_animate_load","cw_animate_run","cw_arcball","cw_bgroup","cw_clr_index","cw_colorsel","cw_defroi","cw_field","cw_filesel","cw_form","cw_fslider","cw_light_editor","cw_light_editor_get","cw_light_editor_set","cw_orient","cw_palette_editor","cw_palette_editor_get","cw_palette_editor_set","cw_pdmenu","cw_rgbslider","cw_tmpl","cw_zoom","db_exists","dblarr","dcindgen","dcomplex","dcomplexarr","define_key","define_msgblk","define_msgblk_from_file","defroi","defsysv","delvar","dendro_plot","dendrogram","deriv","derivsig","determ","device","dfpmin","diag_matrix","dialog_dbconnect","dialog_message","dialog_pickfile","dialog_printersetup","dialog_printjob","dialog_read_image","dialog_write_image","dictionary","digital_filter","dilate","dindgen","dissolve","dist","distance_measure","dlm_load","dlm_register","doc_library","double","draw_roi","edge_dog","efont","eigenql","eigenvec","ellipse","elmhes","emboss","empty","enable_sysrtn","eof","eos","erase","erf","erfc","erfcx","erode","errorplot","errplot","estimator_filter","execute","exit","exp","expand","expand_path","expint","extract","extract_slice","f_cvf","f_pdf","factorial","fft","file_basename","file_chmod","file_copy","file_delete","file_dirname","file_expand_path","file_gunzip","file_gzip","file_info","file_lines","file_link","file_mkdir","file_move","file_poll_input","file_readlink","file_same","file_search","file_tar","file_test","file_untar","file_unzip","file_which","file_zip","filepath","findgen","finite","fix","flick","float","floor","flow3","fltarr","flush","format_axis_values","forward_function","free_lun","fstat","fulstr","funct","function","fv_test","fx_root","fz_roots","gamma","gamma_ct","gauss_cvf","gauss_pdf","gauss_smooth","gauss2dfit","gaussfit","gaussian_function","gaussint","get_drive_list","get_dxf_objects","get_kbrd","get_login_info","get_lun","get_screen_size","getenv","getwindows","greg2jul","grib","grid_input","grid_tps","grid3","griddata","gs_iter","h_eq_ct","h_eq_int","hanning","hash","hdf","hdf5","heap_free","heap_gc","heap_nosave","heap_refcount","heap_save","help","hilbert","hist_2d","hist_equal","histogram","hls","hough","hqr","hsv","i18n_multibytetoutf8","i18n_multibytetowidechar","i18n_utf8tomultibyte","i18n_widechartomultibyte","ibeta","icontour","iconvertcoord","idelete","identity","idl_base64","idl_container","idl_validname","idlexbr_assistant","idlitsys_createtool","idlunit","iellipse","igamma","igetcurrent","igetdata","igetid","igetproperty","iimage","image","image_cont","image_statistics","image_threshold","imaginary","imap","indgen","int_2d","int_3d","int_tabulated","intarr","interpol","interpolate","interval_volume","invert","ioctl","iopen","ir_filter","iplot","ipolygon","ipolyline","iputdata","iregister","ireset","iresolve","irotate","isa","isave","iscale","isetcurrent","isetproperty","ishft","isocontour","isosurface","isurface","itext","itranslate","ivector","ivolume","izoom","journal","json_parse","json_serialize","jul2greg","julday","keyword_set","krig2d","kurtosis","kw_test","l64indgen","la_choldc","la_cholmprove","la_cholsol","la_determ","la_eigenproblem","la_eigenql","la_eigenvec","la_elmhes","la_gm_linear_model","la_hqr","la_invert","la_least_square_equality","la_least_squares","la_linear_equation","la_ludc","la_lumprove","la_lusol","la_svd","la_tridc","la_trimprove","la_triql","la_trired","la_trisol","label_date","label_region","ladfit","laguerre","lambda","lambdap","lambertw","laplacian","least_squares_filter","leefilt","legend","legendre","linbcg","lindgen","linfit","linkimage","list","ll_arc_distance","lmfit","lmgr","lngamma","lnp_test","loadct","locale_get","logical_and","logical_or","logical_true","lon64arr","lonarr","long","long64","lsode","lu_complex","ludc","lumprove","lusol","m_correlate","machar","make_array","make_dll","make_rt","map","mapcontinents","mapgrid","map_2points","map_continents","map_grid","map_image","map_patch","map_proj_forward","map_proj_image","map_proj_info","map_proj_init","map_proj_inverse","map_set","matrix_multiply","matrix_power","max","md_test","mean","meanabsdev","mean_filter","median","memory","mesh_clip","mesh_decimate","mesh_issolid","mesh_merge","mesh_numtriangles","mesh_obj","mesh_smooth","mesh_surfacearea","mesh_validate","mesh_volume","message","min","min_curve_surf","mk_html_help","modifyct","moment","morph_close","morph_distance","morph_gradient","morph_hitormiss","morph_open","morph_thin","morph_tophat","multi","n_elements","n_params","n_tags","ncdf","newton","noise_hurl","noise_pick","noise_scatter","noise_slur","norm","obj_class","obj_destroy","obj_hasmethod","obj_isa","obj_new","obj_valid","objarr","on_error","on_ioerror","online_help","openr","openu","openw","oplot","oploterr","orderedhash","p_correlate","parse_url","particle_trace","path_cache","path_sep","pcomp","plot","plot3d","plot","plot_3dbox","plot_field","ploterr","plots","polar_contour","polar_surface","polyfill","polyshade","pnt_line","point_lun","polarplot","poly","poly_2d","poly_area","poly_fit","polyfillv","polygon","polyline","polywarp","popd","powell","pref_commit","pref_get","pref_set","prewitt","primes","print","printf","printd","pro","product","profile","profiler","profiles","project_vol","ps_show_fonts","psafm","pseudo","ptr_free","ptr_new","ptr_valid","ptrarr","pushd","qgrid3","qhull","qromb","qromo","qsimp","query_*","query_ascii","query_bmp","query_csv","query_dicom","query_gif","query_image","query_jpeg","query_jpeg2000","query_mrsid","query_pict","query_png","query_ppm","query_srf","query_tiff","query_video","query_wav","r_correlate","r_test","radon","randomn","randomu","ranks","rdpix","read","readf","read_ascii","read_binary","read_bmp","read_csv","read_dicom","read_gif","read_image","read_interfile","read_jpeg","read_jpeg2000","read_mrsid","read_pict","read_png","read_ppm","read_spr","read_srf","read_sylk","read_tiff","read_video","read_wav","read_wave","read_x11_bitmap","read_xwd","reads","readu","real_part","rebin","recall_commands","recon3","reduce_colors","reform","region_grow","register_cursor","regress","replicate","replicate_inplace","resolve_all","resolve_routine","restore","retall","return","reverse","rk4","roberts","rot","rotate","round","routine_filepath","routine_info","rs_test","s_test","save","savgol","scale3","scale3d","scatterplot","scatterplot3d","scope_level","scope_traceback","scope_varfetch","scope_varname","search2d","search3d","sem_create","sem_delete","sem_lock","sem_release","set_plot","set_shading","setenv","sfit","shade_surf","shade_surf_irr","shade_volume","shift","shift_diff","shmdebug","shmmap","shmunmap","shmvar","show3","showfont","signum","simplex","sin","sindgen","sinh","size","skewness","skip_lun","slicer3","slide_image","smooth","sobel","socket","sort","spawn","sph_4pnt","sph_scat","spher_harm","spl_init","spl_interp","spline","spline_p","sprsab","sprsax","sprsin","sprstp","sqrt","standardize","stddev","stop","strarr","strcmp","strcompress","streamline","streamline","stregex","stretch","string","strjoin","strlen","strlowcase","strmatch","strmessage","strmid","strpos","strput","strsplit","strtrim","struct_assign","struct_hide","strupcase","surface","surface","surfr","svdc","svdfit","svsol","swap_endian","swap_endian_inplace","symbol","systime","t_cvf","t_pdf","t3d","tag_names","tan","tanh","tek_color","temporary","terminal_size","tetra_clip","tetra_surface","tetra_volume","text","thin","thread","threed","tic","time_test2","timegen","timer","timestamp","timestamptovalues","tm_test","toc","total","trace","transpose","tri_surf","triangulate","trigrid","triql","trired","trisol","truncate_lun","ts_coef","ts_diff","ts_fcast","ts_smooth","tv","tvcrs","tvlct","tvrd","tvscl","typename","uindgen","uint","uintarr","ul64indgen","ulindgen","ulon64arr","ulonarr","ulong","ulong64","uniq","unsharp_mask","usersym","value_locate","variance","vector","vector_field","vel","velovect","vert_t3d","voigt","volume","voronoi","voxel_proj","wait","warp_tri","watershed","wdelete","wf_draw","where","widget_base","widget_button","widget_combobox","widget_control","widget_displaycontextmenu","widget_draw","widget_droplist","widget_event","widget_info","widget_label","widget_list","widget_propertysheet","widget_slider","widget_tab","widget_table","widget_text","widget_tree","widget_tree_move","widget_window","wiener_filter","window","window","write_bmp","write_csv","write_gif","write_image","write_jpeg","write_jpeg2000","write_nrif","write_pict","write_png","write_ppm","write_spr","write_srf","write_sylk","write_tiff","write_video","write_wav","write_wave","writeu","wset","wshow","wtn","wv_applet","wv_cwt","wv_cw_wavelet","wv_denoise","wv_dwt","wv_fn_coiflet","wv_fn_daubechies","wv_fn_gaussian","wv_fn_haar","wv_fn_morlet","wv_fn_paul","wv_fn_symlet","wv_import_data","wv_import_wavelet","wv_plot3d_wps","wv_plot_multires","wv_pwt","wv_tool_denoise","xbm_edit","xdisplayfile","xdxf","xfont","xinteranimate","xloadct","xmanager","xmng_tmpl","xmtool","xobjview","xobjview_rotate","xobjview_write_image","xpalette","xpcolor","xplot3d","xregistered","xroi","xsq_test","xsurface","xvaredit","xvolume","xvolume_rotate","xvolume_write_image","xyouts","zlib_compress","zlib_uncompress","zoom","zoom_24"],a=t(r),i=["begin","end","endcase","endfor","endwhile","endif","endrep","endforeach","break","case","continue","for","foreach","goto","if","then","else","repeat","until","switch","while","do","pro","function"],_=t(i),o=new RegExp("^[_a-z¡-￿][_a-z0-9¡-￿]*","i"),l=/[+\-*&=<>\/@#~$]/,s=new RegExp("(and|or|eq|lt|le|gt|ge|ne|not)","i");function n(e){return e.eatSpace()?null:e.match(";")?(e.skipToEnd(),"comment"):e.match(/^[0-9\.+-]/,!1)&&(e.match(/^[+-]?0x[0-9a-fA-F]+/)||e.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?/)||e.match(/^[+-]?\d+([EeDd][+-]?\d+)?/))?"number":e.match(/^"([^"]|(""))*"/)||e.match(/^'([^']|(''))*'/)?"string":e.match(_)?"keyword":e.match(a)?"builtin":e.match(o)?"variable":e.match(l)||e.match(s)?"operator":(e.next(),null)}const d={name:"idl",token:function(e){return n(e)},languageData:{autocomplete:r.concat(i)}};export{d as idl}; diff --git a/frontend/dist/assets/index--cDK8lVp.js b/frontend/dist/assets/index--cDK8lVp.js new file mode 100644 index 0000000..8f588d8 --- /dev/null +++ b/frontend/dist/assets/index--cDK8lVp.js @@ -0,0 +1,334 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-DXOn8YGL.js","assets/index-BKKvzUDD.js","assets/index-BrKMLqs4.css","assets/index-CfrELZwh.js","assets/index-BElrCJZ7.js","assets/index-DLbKIyY2.js","assets/index-5j7eJv_9.js","assets/index-B15POG28.js","assets/index-CsCXnZZw.js","assets/index-DkIQRIsY.js","assets/index-CBaIyXPw.js","assets/index-BxAjCHOi.js","assets/index-BYOirq2F.js","assets/index-sgHIT8oA.js","assets/index-vozpzIjg.js","assets/index-CSVFdiMT.js","assets/index-DO-kEPEU.js","assets/dockerfile-BKs6k2Af.js","assets/simple-mode-GW_nhZxv.js","assets/factor-kuTfRLto.js","assets/nsis-LdVXkNf5.js","assets/pug-DeIclll2.js","assets/javascript-iXu5QeM3.js","assets/index-CaQ1sOcP.js","assets/index-2rnqZitJ.js"])))=>i.map(i=>d[i]); +var bv=Object.defineProperty;var Ef=t=>{throw TypeError(t)};var vv=(t,e,i)=>e in t?bv(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i;var Ze=(t,e,i)=>vv(t,typeof e!="symbol"?e+"":e,i),va=(t,e,i)=>e.has(t)||Ef("Cannot "+i);var S=(t,e,i)=>(va(t,e,"read from private field"),i?i.call(t):e.get(t)),oe=(t,e,i)=>e.has(t)?Ef("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,i),U=(t,e,i,n)=>(va(t,e,"write to private field"),n?n.call(t,i):e.set(t,i),i),j=(t,e,i)=>(va(t,e,"access private method"),i);var mo=(t,e,i,n)=>({set _(r){U(t,e,r,i)},get _(){return S(t,e,n)}});import{d as Te,B as H,s as $,D as te,G as Ae,H as Mn,ao as ys,z as ct,y as pe,F as Ct,M as Gs,bn as yv,a9 as si,aT as Tn,P as li,j as He,I as xs,bm as xv,aD as A,an as kv}from"./index-BKKvzUDD.js";const Sv=t=>{const e=typeof t;return e!=="function"&&e!=="object"||t===null},wv=t=>{const e=t.flags===""?void 0:t.flags;return new RegExp(t.source,e)},Ur=(t,e=new WeakMap)=>{if(t===null||Sv(t))return t;if(e.has(t))return e.get(t);if(t instanceof RegExp)return wv(t);if(t instanceof Date)return new Date(t.getTime());if(t instanceof Function)return t;if(t instanceof Map){const n=new Map;return e.set(t,n),t.forEach((r,s)=>{n.set(s,Ur(r,e))}),n}if(t instanceof Set){const n=new Set;e.set(t,n);for(const r of t)n.add(Ur(r,e));return n}if(Array.isArray(t)){const n=[];return e.set(t,n),t.forEach(r=>{n.push(Ur(r,e))}),n}const i={};e.set(t,i);for(const n in t)Object.prototype.hasOwnProperty.call(t,n)&&(i[n]=Ur(t[n],e));return i},Kp=(t,e=200)=>{let i=0;return(...n)=>new Promise(r=>{i&&(clearTimeout(i),r("cancel")),i=window.setTimeout(()=>{t.apply(void 0,n),i=0,r("done")},e)})},$v=(t,e={_blank:!0,nofollow:!0})=>{const i=document.createElement("a");i.href=t,e._blank&&(i.target="_blank"),e.nofollow&&(i.rel="noopener noreferrer"),i.click()},Jp=()=>{let t=-1;return(e,i,n,r=100)=>{const s=()=>{n&&(typeof r=="number"?setTimeout(n,r):n())};t!==-1&&(cancelAnimationFrame(t),s());let o=e.scrollTop;const l=()=>{t=-1;const a=i-o;o=o+a/5,Math.abs(a)<1?(e.scrollTo(0,i),s()):(e.scrollTo(0,o),t=requestAnimationFrame(l))};t=requestAnimationFrame(l)}},Qv=(t,e=200)=>{let i=0,n=null;const r=s=>{i===0&&(i=s),s-i>=e?(t.apply(void 0,n),n=null,i=0):window.requestAnimationFrame(r)};return(...s)=>{n===null&&window.requestAnimationFrame(r),n=s}},_v=t=>{const e=i=>{const{scrollHeight:n,scrollWidth:r,offsetHeight:s,offsetWidth:o,scrollLeft:l,scrollTop:a}=t,u=i.x,c=i.y,h=d=>{const p=a+c-d.y,m=l+u-d.x,O=n-s,g=r-o,b={};m>=0&&m<=g&&(b.left=m),p>=0&&p<=O&&(b.top=p),t.scroll(b)};document.addEventListener("mousemove",h);const f=()=>{document.removeEventListener("mousemove",h),document.removeEventListener("mouseup",f)};document.addEventListener("mouseup",f)};return t.addEventListener("mousedown",e),()=>{t.removeEventListener("mousedown",e)}},mu=()=>`${Date.now().toString(36)}${Math.random().toString(36).substring(2)}`,fl=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),Pv=new Set(["__proto__","constructor","prototype"]),Cv=t=>!Pv.has(t),Gl=(t,e,i={})=>{if(Array.isArray(t)&&Array.isArray(e))return Ou(t,e,i);const{excludeKeys:n}=i,r=t,s=e;for(const o of Object.keys(s)){if(!Cv(o))continue;const l=s[o],a=r[o];n&&n(o)?r[o]=l:Array.isArray(l)&&Array.isArray(a)?r[o]=Ou(a,l,i):fl(l)&&fl(a)?r[o]=Gl(a,l,i):r[o]=l}return t},Ou=(t,e,i)=>{const n=t.slice();return e.forEach((r,s)=>{const o=n[s];Array.isArray(r)&&Array.isArray(o)?n[s]=Ou(o,r,i):fl(r)&&fl(o)?n[s]=Gl(o,r,i):n[s]=r}),n},x="md-editor",Pe="https://unpkg.com",Tv=`${Pe}/@highlightjs/cdn-assets@11.10.0/highlight.min.js`,Rf={main:`${Pe}/prettier@3.3.3/standalone.js`,markdown:`${Pe}/prettier@3.3.3/plugins/markdown.js`},Av={css:`${Pe}/cropperjs@1.6.2/dist/cropper.min.css`,js:`${Pe}/cropperjs@1.6.2/dist/cropper.min.js`},Ev=`${Pe}/screenfull@5.2.0/dist/screenfull.js`,Rv=`${Pe}/mermaid@11.9.0/dist/mermaid.min.js`,Dv={js:`${Pe}/katex@0.16.22/dist/katex.min.js`,css:`${Pe}/katex@0.16.22/dist/katex.min.css`},gu={a11y:{light:`${Pe}/@highlightjs/cdn-assets@11.10.0/styles/a11y-light.min.css`,dark:`${Pe}/@highlightjs/cdn-assets@11.10.0/styles/a11y-dark.min.css`},atom:{light:`${Pe}/@highlightjs/cdn-assets@11.10.0/styles/atom-one-light.min.css`,dark:`${Pe}/@highlightjs/cdn-assets@11.10.0/styles/atom-one-dark.min.css`},github:{light:`${Pe}/@highlightjs/cdn-assets@11.10.0/styles/github.min.css`,dark:`${Pe}/@highlightjs/cdn-assets@11.10.0/styles/github-dark.min.css`},gradient:{light:`${Pe}/@highlightjs/cdn-assets@11.10.0/styles/gradient-light.min.css`,dark:`${Pe}/@highlightjs/cdn-assets@11.10.0/styles/gradient-dark.min.css`},kimbie:{light:`${Pe}/@highlightjs/cdn-assets@11.10.0/styles/kimbie-light.min.css`,dark:`${Pe}/@highlightjs/cdn-assets@11.10.0/styles/kimbie-dark.min.css`},paraiso:{light:`${Pe}/@highlightjs/cdn-assets@11.10.0/styles/paraiso-light.min.css`,dark:`${Pe}/@highlightjs/cdn-assets@11.10.0/styles/paraiso-dark.min.css`},qtcreator:{light:`${Pe}/@highlightjs/cdn-assets@11.10.0/styles/qtcreator-light.min.css`,dark:`${Pe}/@highlightjs/cdn-assets@11.10.0/styles/qtcreator-dark.min.css`},stackoverflow:{light:`${Pe}/@highlightjs/cdn-assets@11.10.0/styles/stackoverflow-light.min.css`,dark:`${Pe}/@highlightjs/cdn-assets@11.10.0/styles/stackoverflow-dark.min.css`}},Lv={highlight:{js:{integrity:"sha384-GdEWAbCjn+ghjX0gLx7/N1hyTVmPAjdC2OvoAA0RyNcAOhqwtT8qnbCxWle2+uJX",crossOrigin:"anonymous"},css:{a11y:{light:{integrity:"sha384-qdZDAN3jffvh670RHw1wxLekabidEFaNRninYgIzBvMbL6WlHdXeHS/Bt+vx33lN",crossOrigin:"anonymous"},dark:{integrity:"sha384-2QAAjX8pqaM5azX68KWI2wExF6Q13kY4kEiQFY4b/1zPe6rpgmTByNpDEllH3sb+",crossOrigin:"anonymous"}},atom:{light:{integrity:"sha384-w6Ujm1VWa9HYFqGc89oAPn/DWDi2gUamjNrq9DRvEYm2X3ClItg9Y9xs1ViVo5b5",crossOrigin:"anonymous"},dark:{integrity:"sha384-oaMLBGEzBOJx3UHwac0cVndtX5fxGQIfnAeFZ35RTgqPcYlbprH9o9PUV/F8Le07",crossOrigin:"anonymous"}},github:{light:{integrity:"sha384-eFTL69TLRZTkNfYZOLM+G04821K1qZao/4QLJbet1pP4tcF+fdXq/9CdqAbWRl/L",crossOrigin:"anonymous"},dark:{integrity:"sha384-wH75j6z1lH97ZOpMOInqhgKzFkAInZPPSPlZpYKYTOqsaizPvhQZmAtLcPKXpLyH",crossOrigin:"anonymous"}},gradient:{light:{integrity:"sha384-yErHBR8aEZPxRl3XmR8dGSRAclMlnSRRw8sXQLcmPWzWUvb56BzQmBw3EWHl7QGI",crossOrigin:"anonymous"},dark:{integrity:"sha384-lUCvtSOdvDbp5hLWKgwz/taFu1HxlpqES2OVP5UG2JMTfnU481gXcBhGF9lAGoSr",crossOrigin:"anonymous"}},kimbie:{light:{integrity:"sha384-tloeSLUPczAvoZ48TUz+OxRie0oYLCRwlkadUXovGzzJEIbNQB2TkfUuvJ6SW5Mi",crossOrigin:"anonymous"},dark:{integrity:"sha384-o5F1vUaMNOmou1sQrsWiFo4/QUGSV0svqNZW+EesmKxWC8MpFJcveBhAyfvTHbGb",crossOrigin:"anonymous"}},paraiso:{light:{integrity:"sha384-5j6QHU2Hwg1ehtlIQNDebhETDB8bga3/88hzBFsMRaGmgQHCftqIN7GZNDNw0vTL",crossOrigin:"anonymous"},dark:{integrity:"sha384-I5vnnMQu0LWDQnHpT61xyoMwKarAB8jpZkB2ioFOlmzUFnIFaV4QbUwlBBOMKhTH",crossOrigin:"anonymous"}},qtcreator:{light:{integrity:"sha384-iEBgHrwi8Hv4dSZBz+MOGvS05rF7I7fGKM2fASQyE9jn2Istg9Qd5dSoK18WyRTB",crossOrigin:"anonymous"},dark:{integrity:"sha384-D6LXJGWNR4QV7gnpuP3ccbvOYoR02td3cU0y7lESABPg/tzCSC4m+y+M2TtrmpHc",crossOrigin:"anonymous"}},stackoverflow:{light:{integrity:"sha384-FMwt7cTGo4aLxZnno5k0xTj0W4gmi48Kwept+y/oQmE6cFk36Kr+QJZOKNOQwORe",crossOrigin:"anonymous"},dark:{integrity:"sha384-iL+x+BroCyHm/p2c6sMA9umXhdCWp2cKe4QUjPeMzHgwXAk+ZxHyIGP3NZTZensU",crossOrigin:"anonymous"}}}},prettier:{standaloneJs:{integrity:"sha384-92h6ALm8/lHpNGn6MfGlgZ+I8c/4yn/nSN8dV9ZmDxqbP9L93gk/Jj2i0LtV+AVd",crossOrigin:"anonymous"},parserMarkdownJs:{integrity:"sha384-5ufuUgoSsr/2oihBZ5d+c+yt0qaUmzLtUz41VZNJ4txtyJ6mBve3ZwuKoq/IygYX",crossOrigin:"anonymous"}},cropper:{js:{integrity:"sha384-jrOgQzBlDeUNdmQn3rUt/PZD+pdcRBdWd/HWRqRo+n2OR2QtGyjSaJC0GiCeH+ir",crossOrigin:"anonymous"},css:{integrity:"sha384-6LFfkTKLRlzFtgx8xsWyBdKGpcMMQTkv+dB7rAbugeJAu1Ym2q1Aji1cjHBG12Xh",crossOrigin:"anonymous"}},screenfull:{js:{integrity:"sha384-Qfbv8upMDu/ikv42M0Jnym2hahbDQ77Nm8PGU0G+iA6UIwt1+scE6P1qKXA0anWU",crossOrigin:"anonymous"}},mermaid:{js:{integrity:"sha384-UzWEhMP22MxNnr2bzqAdmtf1FDy5iKDUq6hLXJFLqC7dfGkc6W/hshbx9m71zyt5",crossOrigin:"anonymous"}},katex:{js:{integrity:"sha384-cMkvdD8LoxVzGF/RPUKAcvmm49FQ0oxwDF3BGKtDXcEc+T1b2N+teh/OJfpU0jr6",crossOrigin:"anonymous"},css:{integrity:"sha384-5TcZemv2l/9On385z///+d7MSYlvIEw9FuZTIdZ14vJLqWphw7e7ZPuOiCHJcFCP",crossOrigin:"anonymous"}}},wc=["bold","underline","italic","strikeThrough","-","title","sub","sup","quote","unorderedList","orderedList","task","-","codeRow","code","link","image","table","mermaid","katex","-","revoke","next","save","=","prettier","pageFullscreen","fullscreen","preview","previewOnly","htmlPreview","catalog","github"],$c=["markdownTotal","=","scrollSwitch"],dl={"zh-CN":{toolbarTips:{bold:"加粗",underline:"下划线",italic:"斜体",strikeThrough:"删除线",title:"标题",sub:"下标",sup:"上标",quote:"引用",unorderedList:"无序列表",orderedList:"有序列表",task:"任务列表",codeRow:"行内代码",code:"块级代码",link:"链接",image:"图片",table:"表格",mermaid:"mermaid图",katex:"katex公式",revoke:"后退",next:"前进",save:"保存",prettier:"美化",pageFullscreen:"浏览器全屏",fullscreen:"屏幕全屏",preview:"预览",previewOnly:"仅预览",htmlPreview:"html代码预览",catalog:"目录",github:"源码地址"},titleItem:{h1:"一级标题",h2:"二级标题",h3:"三级标题",h4:"四级标题",h5:"五级标题",h6:"六级标题"},imgTitleItem:{link:"添加链接",upload:"上传图片",clip2upload:"裁剪上传"},linkModalTips:{linkTitle:"添加链接",imageTitle:"添加图片",descLabel:"链接描述:",descLabelPlaceHolder:"请输入描述...",urlLabel:"链接地址:",urlLabelPlaceHolder:"请输入链接...",buttonOK:"确定"},clipModalTips:{title:"裁剪图片上传",buttonUpload:"上传"},copyCode:{text:"复制代码",successTips:"已复制!",failTips:"复制失败!"},mermaid:{flow:"流程图",sequence:"时序图",gantt:"甘特图",class:"类图",state:"状态图",pie:"饼图",relationship:"关系图",journey:"旅程图"},katex:{inline:"行内公式",block:"块级公式"},footer:{markdownTotal:"字数",scrollAuto:"同步滚动"}},"en-US":{toolbarTips:{bold:"bold",underline:"underline",italic:"italic",strikeThrough:"strikeThrough",title:"title",sub:"subscript",sup:"superscript",quote:"quote",unorderedList:"unordered list",orderedList:"ordered list",task:"task list",codeRow:"inline code",code:"block-level code",link:"link",image:"image",table:"table",mermaid:"mermaid",katex:"formula",revoke:"revoke",next:"undo revoke",save:"save",prettier:"prettier",pageFullscreen:"fullscreen in page",fullscreen:"fullscreen",preview:"preview",previewOnly:"preview only",htmlPreview:"html preview",catalog:"catalog",github:"source code"},titleItem:{h1:"Lv1 Heading",h2:"Lv2 Heading",h3:"Lv3 Heading",h4:"Lv4 Heading",h5:"Lv5 Heading",h6:"Lv6 Heading"},imgTitleItem:{link:"Add Image Link",upload:"Upload Images",clip2upload:"Crop And Upload"},linkModalTips:{linkTitle:"Add Link",imageTitle:"Add Image",descLabel:"Desc:",descLabelPlaceHolder:"Enter a description...",urlLabel:"Link:",urlLabelPlaceHolder:"Enter a link...",buttonOK:"OK"},clipModalTips:{title:"Crop Image",buttonUpload:"Upload"},copyCode:{text:"Copy",successTips:"Copied!",failTips:"Copy failed!"},mermaid:{flow:"flow",sequence:"sequence",gantt:"gantt",class:"class",state:"state",pie:"pie",relationship:"relationship",journey:"journey"},katex:{inline:"inline",block:"block"},footer:{markdownTotal:"Character Count",scrollAuto:"Scroll Auto"}}},Me={editorExtensions:{highlight:{js:Tv,css:gu},prettier:{standaloneJs:Rf.main,parserMarkdownJs:Rf.markdown},cropper:{...Av},screenfull:{js:Ev},mermaid:{js:Rv,enableZoom:!0},katex:{...Dv}},editorExtensionsAttrs:{},editorConfig:{languageUserDefined:{},mermaidTemplate:{},renderDelay:500,zIndex:2e4},codeMirrorExtensions:(t,e)=>e,markdownItConfig:()=>{},markdownItPlugins:t=>t,mermaidConfig:t=>t,katexConfig:t=>t},Mv=t=>Gl(Me,t,{excludeKeys(e){return/[iI]{1}nstance/.test(e)}}),Oo=.1,ht=({instance:t,ctx:e,props:i={}},n="default")=>{const r=(t==null?void 0:t.$slots[n])||(e==null?void 0:e.slots[n]);return(r?r(t):"")||i[n]},Zv={overlay:{type:[String,Object],default:""},visible:{type:Boolean,default:!1},onChange:{type:Function,default:()=>{}},relative:{type:String,default:"html"},disabled:{type:Boolean,default:void 0}},Bn=Te({name:`${x}-dropdown`,props:Zv,setup(t,e){const i=`${x}-dropdown-hidden`,n=ct({overlayClass:[i],overlayStyle:{},triggerHover:!1,overlayHover:!1}),r=pe(),s=pe(),o=()=>{var c,h;if(t.disabled)return!1;n.triggerHover=!0;const f=r.value,d=s.value;if(!f||!d)return;const p=f.getBoundingClientRect(),m=f.offsetTop,O=f.offsetLeft,g=p.height,b=p.width,y=f.getRootNode(),w=((c=y.querySelector(t.relative))==null?void 0:c.scrollLeft)||0,v=((h=y.querySelector(t.relative))==null?void 0:h.clientWidth)||0;let Q=O-d.offsetWidth/2+b/2-w;Q+d.offsetWidth>w+v&&(Q=w+v-d.offsetWidth),Q<0&&(Q=0),n.overlayStyle={...n.overlayStyle,top:m+g+"px",left:Q+"px"},t.onChange(!0)},l=()=>{if(t.disabled)return!1;n.overlayHover=!0};te(()=>t.visible,c=>{c?n.overlayClass=n.overlayClass.filter(h=>h!==i):n.overlayClass.push(i)});let a=-1;const u=c=>{r.value===c.target?n.triggerHover=!1:n.overlayHover=!1,clearTimeout(a),a=window.setTimeout(()=>{!n.overlayHover&&!n.triggerHover&&t.onChange(!1)},10)};return Ae(()=>{r.value.addEventListener("mouseenter",o),r.value.addEventListener("mouseleave",u),s.value.addEventListener("mouseenter",l),s.value.addEventListener("mouseleave",u)}),Mn(()=>{r.value.removeEventListener("mouseenter",o),r.value.removeEventListener("mouseleave",u),s.value.removeEventListener("mouseenter",l),s.value.removeEventListener("mouseleave",u)}),()=>{const c=ht({ctx:e}),h=ht({props:t,ctx:e},"overlay"),f=ys(c instanceof Array?c[0]:c,{ref:r,key:"cloned-dropdown-trigger"}),d=$("div",{class:[`${x}-dropdown`,n.overlayClass],style:n.overlayStyle,ref:s},[$("div",{class:`${x}-dropdown-overlay`},[h instanceof Array?h[0]:h])]);return[f,d]}}}),Iv={title:{type:String,default:""},visible:{type:Boolean,default:void 0},trigger:{type:[String,Object],default:void 0},onChange:{type:Function,default:void 0},overlay:{type:[String,Object],default:void 0},insert:{type:Function,default:void 0},language:{type:String,default:void 0},theme:{type:String,default:void 0},previewTheme:{type:String,default:void 0},codeTheme:{type:String,default:void 0},disabled:{type:Boolean,default:void 0},showToolbarName:{type:Boolean,default:void 0}},rs=Te({name:"DropdownToolbar",props:Iv,emits:["onChange"],setup(t,e){const i=H("editorId");return()=>{const n=ht({props:t,ctx:e},"trigger"),r=ht({props:t,ctx:e},"overlay"),s=ht({props:t,ctx:e});return $(Bn,{relative:`#${i}-toolbar-wrapper`,visible:t.visible,onChange:o=>{var l;(l=t.onChange)==null||l.call(t,o),e.emit("onChange",o)},overlay:r,disabled:t.disabled},{default:()=>[$("div",{class:[`${x}-toolbar-item`,t.disabled&&`${x}-disabled`],title:t.title||""},[s||n])]})}}});rs.install=t=>(t.component(rs.name,rs),t);var Xv=Object.defineProperty,zv=(t,e,i)=>e in t?Xv(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i,jv=(t,e,i)=>zv(t,e+"",i);class Fv{constructor(){jv(this,"pools",{})}remove(e,i,n){const s=this.pools[e]&&this.pools[e][i];s&&(this.pools[e][i]=s.filter(o=>o!==n))}clear(e){this.pools[e]={}}on(e,i){return this.pools[e]||(this.pools[e]={}),this.pools[e][i.name]||(this.pools[e][i.name]=[]),this.pools[e][i.name].push(i.callback),this.pools[e][i.name].includes(i.callback)}emit(e,i,...n){this.pools[e]||(this.pools[e]={});const s=this.pools[e][i];s&&s.forEach(o=>{try{o(...n)}catch(l){console.error(`${i} monitor event exception!`,l)}})}}const X=new Fv,Ul="onSave",Qc="changeCatalogVisible",em="changeFullscreen",Df="pageFullscreenChanged",Lf="fullscreenChanged",Mf="previewChanged",Zf="previewOnlyChanged",If="htmlPreviewChanged",Xf="catalogVisibleChanged",Go="buildFinished",hn="errorCatcher",xe="replace",Hl="uploadImage",bu="openModals",tm="ctrlZ",im="ctrlShiftZ",ss="catalogChanged",nm="pushCatalog",_c="rerender",rm="eventListener",sm="taskStateChanged",om="sendEditorView",pl="getEditorView",Bv={copy:``,"collapse-tips":``,pin:'',"pin-off":''},os=(t,e)=>typeof e[t]=="string"?e[t]:Bv[t],zf=(t,e)=>{const i=n=>{const r=t.parentElement||document.body,s=r.offsetWidth,o=r.offsetHeight,{clientWidth:l,clientHeight:a}=document.documentElement,u=n.offsetX,c=n.offsetY,h=d=>{let p=d.x+document.body.scrollLeft-document.body.clientLeft-u,m=d.y+document.body.scrollTop-document.body.clientTop-c;p=p<1?1:p{document.removeEventListener("mousemove",h),document.removeEventListener("mouseup",f)};document.addEventListener("mouseup",f)};return t.addEventListener("mousedown",i),()=>{t.removeEventListener("mousedown",i)}},zt=(t,e,i="")=>{var n;const r=document.getElementById(e.id);if(r)i!==""&&(Reflect.get(window,i)?(n=e.onload)==null||n.call(r,new Event("load")):e.onload&&r.addEventListener("load",e.onload));else{const s={...e};s.onload=null;const o=qv(t,s);e.onload&&o.addEventListener("load",e.onload),document.head.appendChild(o)}},Vv=(t,e)=>{const i=document.getElementById(e.id);i==null||i.remove(),zt(t,e)},qv=(t,e)=>{const i=document.createElement(t);return Object.keys(e).forEach(n=>{e[n]!==void 0&&(i[n]=e[n])}),i},jf=(()=>{const t=i=>{if(!i)return()=>{};const n=i.firstChild;let r=1,s=0,o=0,l=!1,a,u,c,h=1;const f=()=>{n.style.transform=`translate(${s}px, ${o}px) scale(${r})`},d=v=>{v.touches.length===1?(l=!0,a=v.touches[0].clientX-s,u=v.touches[0].clientY-o):v.touches.length===2&&(c=Math.hypot(v.touches[0].clientX-v.touches[1].clientX,v.touches[0].clientY-v.touches[1].clientY),h=r)},p=v=>{if(v.preventDefault(),l&&v.touches.length===1)s=v.touches[0].clientX-a,o=v.touches[0].clientY-u,f();else if(v.touches.length===2){const P=Math.hypot(v.touches[0].clientX-v.touches[1].clientX,v.touches[0].clientY-v.touches[1].clientY)/c,_=r;r=h*(1+(P-1));const R=(v.touches[0].clientX+v.touches[1].clientX)/2,L=(v.touches[0].clientY+v.touches[1].clientY)/2,I=n.getBoundingClientRect(),T=(R-I.left)/_,M=(L-I.top)/_;s-=T*(r-_),o-=M*(r-_),f()}},m=()=>{l=!1},O=v=>{v.preventDefault();const Q=.02,P=r;v.deltaY<0?r+=Q:r=Math.max(.1,r-Q);const _=n.getBoundingClientRect(),R=v.clientX-_.left,L=v.clientY-_.top;s-=R/P*(r-P),o-=L/P*(r-P),f()},g=v=>{l=!0,a=v.clientX-s,u=v.clientY-o},b=v=>{l&&(s=v.clientX-a,o=v.clientY-u,f())},y=()=>{l=!1},w=()=>{l=!1};return i.addEventListener("touchstart",d,{passive:!1}),i.addEventListener("touchmove",p,{passive:!1}),i.addEventListener("touchend",m),i.addEventListener("wheel",O,{passive:!1}),i.addEventListener("mousedown",g),i.addEventListener("mousemove",b),i.addEventListener("mouseup",y),i.addEventListener("mouseleave",w),()=>{i.removeEventListener("touchstart",d),i.removeEventListener("touchmove",p),i.removeEventListener("touchend",m),i.removeEventListener("wheel",O),i.removeEventListener("mousedown",g),i.removeEventListener("mousemove",b),i.removeEventListener("mouseup",y),i.removeEventListener("mouseleave",w)}};return(i,n)=>{const r=new Map;return i==null||i.forEach(s=>{let o=s.querySelector(`.${x}-mermaid-action`);o||(s.insertAdjacentHTML("beforeend",`
    ${os("pin-off",n.customIcon)}
    `),o=s.querySelector(`.${x}-mermaid-action`));const l=()=>{const a=r.get(s);if(a!=null&&a.removeEvent)a.removeEvent(),s.removeAttribute("data-grab"),r.set(s,{removeClick:a.removeClick}),o.innerHTML=os("pin-off",n.customIcon);else{const u=t(s);s.setAttribute("data-grab",""),r.set(s,{removeEvent:u,removeClick:a==null?void 0:a.removeClick}),o.innerHTML=os("pin",n.customIcon)}};o.addEventListener("click",l),r.set(s,{removeClick:()=>o.removeEventListener("click",l)})}),()=>{r.forEach(({removeEvent:s,removeClick:o})=>{s==null||s(),o==null||o()}),r.clear()}}})();/*! medium-zoom 1.1.0 | MIT License | https://github.com/francoischalifour/medium-zoom */var gn=Object.assign||function(t){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:{},n=window.Promise||function(T){function M(){}T(M,M)},r=function(T){var M=T.target;if(M===R){p();return}y.indexOf(M)!==-1&&m({target:M})},s=function(){if(!(v||!_.original)){var T=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(Q-T)>P.scrollOffset&&setTimeout(p,150)}},o=function(T){var M=T.key||T.keyCode;(M==="Escape"||M==="Esc"||M===27)&&p()},l=function(){var T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},M=T;if(T.background&&(R.style.background=T.background),T.container&&T.container instanceof Object&&(M.container=gn({},P.container,T.container)),T.template){var F=Uo(T.template)?T.template:document.querySelector(T.template);M.template=F}return P=gn({},P,M),y.forEach(function(B){B.dispatchEvent(jn("medium-zoom:update",{detail:{zoom:L}}))}),L},a=function(){var T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return t(gn({},P,T))},u=function(){for(var T=arguments.length,M=Array(T),F=0;F0?M.reduce(function(Y,J){return[].concat(Y,Bf(J))},[]):y;return B.forEach(function(Y){Y.classList.remove("medium-zoom-image"),Y.dispatchEvent(jn("medium-zoom:detach",{detail:{zoom:L}}))}),y=y.filter(function(Y){return B.indexOf(Y)===-1}),L},h=function(T,M){var F=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return y.forEach(function(B){B.addEventListener("medium-zoom:"+T,M,F)}),w.push({type:"medium-zoom:"+T,listener:M,options:F}),L},f=function(T,M){var F=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return y.forEach(function(B){B.removeEventListener("medium-zoom:"+T,M,F)}),w=w.filter(function(B){return!(B.type==="medium-zoom:"+T&&B.listener.toString()===M.toString())}),L},d=function(){var T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},M=T.target,F=function(){var Y={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},J=void 0,ee=void 0;if(P.container)if(P.container instanceof Object)Y=gn({},Y,P.container),J=Y.width-Y.left-Y.right-P.margin*2,ee=Y.height-Y.top-Y.bottom-P.margin*2;else{var re=Uo(P.container)?P.container:document.querySelector(P.container),ue=re.getBoundingClientRect(),ye=ue.width,Oe=ue.height,le=ue.left,Se=ue.top;Y=gn({},Y,{width:ye,height:Oe,left:le,top:Se})}J=J||Y.width-P.margin*2,ee=ee||Y.height-P.margin*2;var et=_.zoomedHd||_.original,Pi=Ff(et)?J:et.naturalWidth||J,dn=Ff(et)?ee:et.naturalHeight||ee,pn=et.getBoundingClientRect(),ao=pn.top,uo=pn.left,In=pn.width,Xn=pn.height,co=Math.min(Math.max(In,Pi),J)/In,ho=Math.min(Math.max(Xn,dn),ee)/Xn,zn=Math.min(co,ho),fo=(-uo+(J-In)/2+P.margin+Y.left)/zn,po=(-ao+(ee-Xn)/2+P.margin+Y.top)/zn,zr="scale("+zn+") translate3d("+fo+"px, "+po+"px, 0)";_.zoomed.style.transform=zr,_.zoomedHd&&(_.zoomedHd.style.transform=zr)};return new n(function(B){if(M&&y.indexOf(M)===-1){B(L);return}var Y=function ye(){v=!1,_.zoomed.removeEventListener("transitionend",ye),_.original.dispatchEvent(jn("medium-zoom:opened",{detail:{zoom:L}})),B(L)};if(_.zoomed){B(L);return}if(M)_.original=M;else if(y.length>0){var J=y;_.original=J[0]}else{B(L);return}if(_.original.dispatchEvent(jn("medium-zoom:open",{detail:{zoom:L}})),Q=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,v=!0,_.zoomed=Nv(_.original),document.body.appendChild(R),P.template){var ee=Uo(P.template)?P.template:document.querySelector(P.template);_.template=document.createElement("div"),_.template.appendChild(ee.content.cloneNode(!0)),document.body.appendChild(_.template)}if(_.original.parentElement&&_.original.parentElement.tagName==="PICTURE"&&_.original.currentSrc&&(_.zoomed.src=_.original.currentSrc),document.body.appendChild(_.zoomed),window.requestAnimationFrame(function(){document.body.classList.add("medium-zoom--opened")}),_.original.classList.add("medium-zoom-image--hidden"),_.zoomed.classList.add("medium-zoom-image--opened"),_.zoomed.addEventListener("click",p),_.zoomed.addEventListener("transitionend",Y),_.original.getAttribute("data-zoom-src")){_.zoomedHd=_.zoomed.cloneNode(),_.zoomedHd.removeAttribute("srcset"),_.zoomedHd.removeAttribute("sizes"),_.zoomedHd.removeAttribute("loading"),_.zoomedHd.src=_.zoomed.getAttribute("data-zoom-src"),_.zoomedHd.onerror=function(){clearInterval(re),console.warn("Unable to reach the zoom image target "+_.zoomedHd.src),_.zoomedHd=null,F()};var re=setInterval(function(){_.zoomedHd.complete&&(clearInterval(re),_.zoomedHd.classList.add("medium-zoom-image--opened"),_.zoomedHd.addEventListener("click",p),document.body.appendChild(_.zoomedHd),F())},10)}else if(_.original.hasAttribute("srcset")){_.zoomedHd=_.zoomed.cloneNode(),_.zoomedHd.removeAttribute("sizes"),_.zoomedHd.removeAttribute("loading");var ue=_.zoomedHd.addEventListener("load",function(){_.zoomedHd.removeEventListener("load",ue),_.zoomedHd.classList.add("medium-zoom-image--opened"),_.zoomedHd.addEventListener("click",p),document.body.appendChild(_.zoomedHd),F()})}else F()})},p=function(){return new n(function(T){if(v||!_.original){T(L);return}var M=function F(){_.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(_.zoomed),_.zoomedHd&&document.body.removeChild(_.zoomedHd),document.body.removeChild(R),_.zoomed.classList.remove("medium-zoom-image--opened"),_.template&&document.body.removeChild(_.template),v=!1,_.zoomed.removeEventListener("transitionend",F),_.original.dispatchEvent(jn("medium-zoom:closed",{detail:{zoom:L}})),_.original=null,_.zoomed=null,_.zoomedHd=null,_.template=null,T(L)};v=!0,document.body.classList.remove("medium-zoom--opened"),_.zoomed.style.transform="",_.zoomedHd&&(_.zoomedHd.style.transform=""),_.template&&(_.template.style.transition="opacity 150ms",_.template.style.opacity=0),_.original.dispatchEvent(jn("medium-zoom:close",{detail:{zoom:L}})),_.zoomed.addEventListener("transitionend",M)})},m=function(){var T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},M=T.target;return _.original?p():d({target:M})},O=function(){return P},g=function(){return y},b=function(){return _.original},y=[],w=[],v=!1,Q=0,P=i,_={original:null,zoomed:null,zoomedHd:null,template:null};Object.prototype.toString.call(e)==="[object Object]"?P=e:(e||typeof e=="string")&&u(e),P=gn({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},P);var R=Yv(P.background);document.addEventListener("click",r),document.addEventListener("keyup",o),document.addEventListener("scroll",s),window.addEventListener("resize",p);var L={open:d,close:p,toggle:m,update:l,clone:a,attach:u,detach:c,on:h,off:f,getOptions:O,getImages:g,getZoomedImage:b};return L};function Uv(t,e){e===void 0&&(e={});var i=e.insertAt;if(!(typeof document>"u")){var n=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css",i==="top"&&n.firstChild?n.insertBefore(r,n.firstChild):n.appendChild(r),r.styleSheet?r.styleSheet.cssText=t:r.appendChild(document.createTextNode(t))}}var Hv=".medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{position:relative;cursor:pointer;cursor:zoom-out;will-change:transform}";Uv(Hv);async function Kv(t){if(typeof t=="string"){if(window.isSecureContext&&navigator.clipboard)return await navigator.clipboard.writeText(t);{const e=document.createElement("textarea");let i=!1;if(e.value=t,e.style.position="fixed",e.style.opacity=0,e.style.zIndex="-10000",e.style.top="-10000",document.body.appendChild(e),e.select(),i=document.execCommand("copy"),document.body.removeChild(e),i)return;throw new Error('Failed to copy content via "execCommand"!')}}}const Vf={};function Jv(t){let e=Vf[t];if(e)return e;e=Vf[t]=[];for(let i=0;i<128;i++){const n=String.fromCharCode(i);e.push(n)}for(let i=0;i=55296&&c<=57343?r+="���":r+=String.fromCharCode(c),s+=6;continue}}if((l&248)===240&&s+91114111?r+="����":(h-=65536,r+=String.fromCharCode(55296+(h>>10),56320+(h&1023))),s+=9;continue}}r+="�"}return r})}pr.defaultChars=";/?:@&=+$,#";pr.componentChars="";const qf={};function ey(t){let e=qf[t];if(e)return e;e=qf[t]=[];for(let i=0;i<128;i++){const n=String.fromCharCode(i);/^[0-9a-z]$/i.test(n)?e.push(n):e.push("%"+("0"+i.toString(16).toUpperCase()).slice(-2))}for(let i=0;i"u"&&(i=!0);const n=ey(e);let r="";for(let s=0,o=t.length;s=55296&&l<=57343){if(l>=55296&&l<=56319&&s+1=56320&&a<=57343){r+=encodeURIComponent(t[s]+t[s+1]),s++;continue}}r+="%EF%BF%BD";continue}r+=encodeURIComponent(t[s])}return r}Us.defaultChars=";/?:@&=+$,-_.!~*'()#";Us.componentChars="-_.!~*'()";function Pc(t){let e="";return e+=t.protocol||"",e+=t.slashes?"//":"",e+=t.auth?t.auth+"@":"",t.hostname&&t.hostname.indexOf(":")!==-1?e+="["+t.hostname+"]":e+=t.hostname||"",e+=t.port?":"+t.port:"",e+=t.pathname||"",e+=t.search||"",e+=t.hash||"",e}function ml(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}const ty=/^([a-z0-9.+-]+:)/i,iy=/:[0-9]*$/,ny=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,ry=["<",">",'"',"`"," ","\r",` +`," "],sy=["{","}","|","\\","^","`"].concat(ry),oy=["'"].concat(sy),Wf=["%","/","?",";","#"].concat(oy),Yf=["/","?","#"],ly=255,Nf=/^[+a-z0-9A-Z_-]{0,63}$/,ay=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,Gf={javascript:!0,"javascript:":!0},Uf={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function Cc(t,e){if(t&&t instanceof ml)return t;const i=new ml;return i.parse(t,e),i}ml.prototype.parse=function(t,e){let i,n,r,s=t;if(s=s.trim(),!e&&t.split("#").length===1){const u=ny.exec(s);if(u)return this.pathname=u[1],u[2]&&(this.search=u[2]),this}let o=ty.exec(s);if(o&&(o=o[0],i=o.toLowerCase(),this.protocol=o,s=s.substr(o.length)),(e||o||s.match(/^\/\/[^@\/]+@[^@\/]+/))&&(r=s.substr(0,2)==="//",r&&!(o&&Gf[o])&&(s=s.substr(2),this.slashes=!0)),!Gf[o]&&(r||o&&!Uf[o])){let u=-1;for(let p=0;p127?b+="x":b+=g[y];if(!b.match(Nf)){const y=p.slice(0,m),w=p.slice(m+1),v=g.match(ay);v&&(y.push(v[1]),w.unshift(v[2])),w.length&&(s=w.join(".")+s),this.hostname=y.join(".");break}}}}this.hostname.length>ly&&(this.hostname=""),d&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}const l=s.indexOf("#");l!==-1&&(this.hash=s.substr(l),s=s.slice(0,l));const a=s.indexOf("?");return a!==-1&&(this.search=s.substr(a),s=s.slice(0,a)),s&&(this.pathname=s),Uf[i]&&this.hostname&&!this.pathname&&(this.pathname=""),this};ml.prototype.parseHost=function(t){let e=iy.exec(t);e&&(e=e[0],e!==":"&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)};const uy=Object.freeze(Object.defineProperty({__proto__:null,decode:pr,encode:Us,format:Pc,parse:Cc},Symbol.toStringTag,{value:"Module"})),lm=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,am=/[\0-\x1F\x7F-\x9F]/,cy=/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u0890\u0891\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD80D[\uDC30-\uDC3F]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/,Tc=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1B7D\u1B7E\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E5D\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDEAD\uDF55-\uDF59\uDF86-\uDF89]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDEB9\uDF3C-\uDF3E]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2\uDF00-\uDF09]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDF43-\uDF4F\uDFFF]|\uD809[\uDC70-\uDC74]|\uD80B[\uDFF1\uDFF2]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A\uDFE2]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/,um=/[\$\+<->\^`\|~\xA2-\xA6\xA8\xA9\xAC\xAE-\xB1\xB4\xB8\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u03F6\u0482\u058D-\u058F\u0606-\u0608\u060B\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u07FE\u07FF\u0888\u09F2\u09F3\u09FA\u09FB\u0AF1\u0B70\u0BF3-\u0BFA\u0C7F\u0D4F\u0D79\u0E3F\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u17DB\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2044\u2052\u207A-\u207C\u208A-\u208C\u20A0-\u20C0\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2307\u230C-\u2328\u232B-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u2767\u2794-\u27C4\u27C7-\u27E5\u27F0-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFF\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u309B\u309C\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u31EF\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uAA77-\uAA79\uAB5B\uAB6A\uAB6B\uFB29\uFBB2-\uFBC2\uFD40-\uFD4F\uFDCF\uFDFC-\uFDFF\uFE62\uFE64-\uFE66\uFE69\uFF04\uFF0B\uFF1C-\uFF1E\uFF3E\uFF40\uFF5C\uFF5E\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD]|\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD833[\uDF50-\uDFC3]|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDEA\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838[\uDD4F\uDEFF]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED7\uDEDC-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF76\uDF7B-\uDFD9\uDFE0-\uDFEB\uDFF0]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDE53\uDE60-\uDE6D\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC5\uDECE-\uDEDB\uDEE0-\uDEE8\uDEF0-\uDEF8\uDF00-\uDF92\uDF94-\uDFCA]/,cm=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/,hy=Object.freeze(Object.defineProperty({__proto__:null,Any:lm,Cc:am,Cf:cy,P:Tc,S:um,Z:cm},Symbol.toStringTag,{value:"Module"})),fy=new Uint16Array('ᵁ<Õıʊҝջאٵ۞ޢߖࠏ੊ઑඡ๭༉༦჊ረዡᐕᒝᓃᓟᔥ\0\0\0\0\0\0ᕫᛍᦍᰒᷝ὾⁠↰⊍⏀⏻⑂⠤⤒ⴈ⹈⿎〖㊺㘹㞬㣾㨨㩱㫠㬮ࠀEMabcfglmnoprstu\\bfms„‹•˜¦³¹ÈÏlig耻Æ䃆P耻&䀦cute耻Á䃁reve;䄂Āiyx}rc耻Â䃂;䐐r;쀀𝔄rave耻À䃀pha;䎑acr;䄀d;橓Āgp¡on;䄄f;쀀𝔸plyFunction;恡ing耻Å䃅Ācs¾Ãr;쀀𝒜ign;扔ilde耻Ã䃃ml耻Ä䃄ЀaceforsuåûþėĜĢħĪĀcrêòkslash;或Ŷöø;櫧ed;挆y;䐑ƀcrtąċĔause;戵noullis;愬a;䎒r;쀀𝔅pf;쀀𝔹eve;䋘còēmpeq;扎܀HOacdefhilorsuōőŖƀƞƢƵƷƺǜȕɳɸɾcy;䐧PY耻©䂩ƀcpyŝŢźute;䄆Ā;iŧŨ拒talDifferentialD;慅leys;愭ȀaeioƉƎƔƘron;䄌dil耻Ç䃇rc;䄈nint;戰ot;䄊ĀdnƧƭilla;䂸terDot;䂷òſi;䎧rcleȀDMPTLJNjǑǖot;抙inus;抖lus;投imes;抗oĀcsǢǸkwiseContourIntegral;戲eCurlyĀDQȃȏoubleQuote;思uote;怙ȀlnpuȞȨɇɕonĀ;eȥȦ户;橴ƀgitȯȶȺruent;扡nt;戯ourIntegral;戮ĀfrɌɎ;愂oduct;成nterClockwiseContourIntegral;戳oss;樯cr;쀀𝒞pĀ;Cʄʅ拓ap;才րDJSZacefiosʠʬʰʴʸˋ˗ˡ˦̳ҍĀ;oŹʥtrahd;椑cy;䐂cy;䐅cy;䐏ƀgrsʿ˄ˇger;怡r;憡hv;櫤Āayː˕ron;䄎;䐔lĀ;t˝˞戇a;䎔r;쀀𝔇Āaf˫̧Ācm˰̢riticalȀADGT̖̜̀̆cute;䂴oŴ̋̍;䋙bleAcute;䋝rave;䁠ilde;䋜ond;拄ferentialD;慆Ѱ̽\0\0\0͔͂\0Ѕf;쀀𝔻ƀ;DE͈͉͍䂨ot;惜qual;扐blèCDLRUVͣͲ΂ϏϢϸontourIntegraìȹoɴ͹\0\0ͻ»͉nArrow;懓Āeo·ΤftƀARTΐΖΡrrow;懐ightArrow;懔eåˊngĀLRΫτeftĀARγιrrow;柸ightArrow;柺ightArrow;柹ightĀATϘϞrrow;懒ee;抨pɁϩ\0\0ϯrrow;懑ownArrow;懕erticalBar;戥ǹABLRTaВЪаўѿͼrrowƀ;BUНОТ憓ar;椓pArrow;懵reve;䌑eft˒к\0ц\0ѐightVector;楐eeVector;楞ectorĀ;Bљњ憽ar;楖ightǔѧ\0ѱeeVector;楟ectorĀ;BѺѻ懁ar;楗eeĀ;A҆҇护rrow;憧ĀctҒҗr;쀀𝒟rok;䄐ࠀNTacdfglmopqstuxҽӀӄӋӞӢӧӮӵԡԯԶՒ՝ՠեG;䅊H耻Ð䃐cute耻É䃉ƀaiyӒӗӜron;䄚rc耻Ê䃊;䐭ot;䄖r;쀀𝔈rave耻È䃈ement;戈ĀapӺӾcr;䄒tyɓԆ\0\0ԒmallSquare;旻erySmallSquare;斫ĀgpԦԪon;䄘f;쀀𝔼silon;䎕uĀaiԼՉlĀ;TՂՃ橵ilde;扂librium;懌Āci՗՚r;愰m;橳a;䎗ml耻Ë䃋Āipժկsts;戃onentialE;慇ʀcfiosօֈ֍ֲ׌y;䐤r;쀀𝔉lledɓ֗\0\0֣mallSquare;旼erySmallSquare;斪Ͱֺ\0ֿ\0\0ׄf;쀀𝔽All;戀riertrf;愱cò׋؀JTabcdfgorstר׬ׯ׺؀ؒؖ؛؝أ٬ٲcy;䐃耻>䀾mmaĀ;d׷׸䎓;䏜reve;䄞ƀeiy؇،ؐdil;䄢rc;䄜;䐓ot;䄠r;쀀𝔊;拙pf;쀀𝔾eater̀EFGLSTصلَٖٛ٦qualĀ;Lؾؿ扥ess;招ullEqual;执reater;檢ess;扷lantEqual;橾ilde;扳cr;쀀𝒢;扫ЀAacfiosuڅڋږڛڞڪھۊRDcy;䐪Āctڐڔek;䋇;䁞irc;䄤r;愌lbertSpace;愋ǰگ\0ڲf;愍izontalLine;攀Āctۃۅòکrok;䄦mpńېۘownHumðįqual;扏܀EJOacdfgmnostuۺ۾܃܇܎ܚܞܡܨ݄ݸދޏޕcy;䐕lig;䄲cy;䐁cute耻Í䃍Āiyܓܘrc耻Î䃎;䐘ot;䄰r;愑rave耻Ì䃌ƀ;apܠܯܿĀcgܴܷr;䄪inaryI;慈lieóϝǴ݉\0ݢĀ;eݍݎ戬Āgrݓݘral;戫section;拂isibleĀCTݬݲomma;恣imes;恢ƀgptݿރވon;䄮f;쀀𝕀a;䎙cr;愐ilde;䄨ǫޚ\0ޞcy;䐆l耻Ï䃏ʀcfosuެ޷޼߂ߐĀiyޱ޵rc;䄴;䐙r;쀀𝔍pf;쀀𝕁ǣ߇\0ߌr;쀀𝒥rcy;䐈kcy;䐄΀HJacfosߤߨ߽߬߱ࠂࠈcy;䐥cy;䐌ppa;䎚Āey߶߻dil;䄶;䐚r;쀀𝔎pf;쀀𝕂cr;쀀𝒦րJTaceflmostࠥࠩࠬࡐࡣ঳সে্਷ੇcy;䐉耻<䀼ʀcmnpr࠷࠼ࡁࡄࡍute;䄹bda;䎛g;柪lacetrf;愒r;憞ƀaeyࡗ࡜ࡡron;䄽dil;䄻;䐛Āfsࡨ॰tԀACDFRTUVarࡾࢩࢱࣦ࣠ࣼयज़ΐ४Ānrࢃ࢏gleBracket;柨rowƀ;BR࢙࢚࢞憐ar;懤ightArrow;懆eiling;挈oǵࢷ\0ࣃbleBracket;柦nǔࣈ\0࣒eeVector;楡ectorĀ;Bࣛࣜ懃ar;楙loor;挊ightĀAV࣯ࣵrrow;憔ector;楎Āerँगeƀ;AVउऊऐ抣rrow;憤ector;楚iangleƀ;BEतथऩ抲ar;槏qual;抴pƀDTVषूौownVector;楑eeVector;楠ectorĀ;Bॖॗ憿ar;楘ectorĀ;B॥०憼ar;楒ightáΜs̀EFGLSTॾঋকঝঢভqualGreater;拚ullEqual;扦reater;扶ess;檡lantEqual;橽ilde;扲r;쀀𝔏Ā;eঽা拘ftarrow;懚idot;䄿ƀnpw৔ਖਛgȀLRlr৞৷ਂਐeftĀAR০৬rrow;柵ightArrow;柷ightArrow;柶eftĀarγਊightáοightáϊf;쀀𝕃erĀLRਢਬeftArrow;憙ightArrow;憘ƀchtਾੀੂòࡌ;憰rok;䅁;扪Ѐacefiosuਗ਼੝੠੷੼અઋ઎p;椅y;䐜Ādl੥੯iumSpace;恟lintrf;愳r;쀀𝔐nusPlus;戓pf;쀀𝕄cò੶;䎜ҀJacefostuણધભીଔଙඑ඗ඞcy;䐊cute;䅃ƀaey઴હાron;䅇dil;䅅;䐝ƀgswે૰଎ativeƀMTV૓૟૨ediumSpace;怋hiĀcn૦૘ë૙eryThiî૙tedĀGL૸ଆreaterGreateòٳessLesóੈLine;䀊r;쀀𝔑ȀBnptଢନଷ଺reak;恠BreakingSpace;䂠f;愕ڀ;CDEGHLNPRSTV୕ୖ୪୼஡௫ఄ౞಄ದ೘ൡඅ櫬Āou୛୤ngruent;扢pCap;扭oubleVerticalBar;戦ƀlqxஃஊ஛ement;戉ualĀ;Tஒஓ扠ilde;쀀≂̸ists;戄reater΀;EFGLSTஶஷ஽௉௓௘௥扯qual;扱ullEqual;쀀≧̸reater;쀀≫̸ess;批lantEqual;쀀⩾̸ilde;扵umpń௲௽ownHump;쀀≎̸qual;쀀≏̸eĀfsఊధtTriangleƀ;BEచఛడ拪ar;쀀⧏̸qual;括s̀;EGLSTవశ఼ౄోౘ扮qual;扰reater;扸ess;쀀≪̸lantEqual;쀀⩽̸ilde;扴estedĀGL౨౹reaterGreater;쀀⪢̸essLess;쀀⪡̸recedesƀ;ESಒಓಛ技qual;쀀⪯̸lantEqual;拠ĀeiಫಹverseElement;戌ghtTriangleƀ;BEೋೌ೒拫ar;쀀⧐̸qual;拭ĀquೝഌuareSuĀbp೨೹setĀ;E೰ೳ쀀⊏̸qual;拢ersetĀ;Eഃആ쀀⊐̸qual;拣ƀbcpഓതൎsetĀ;Eഛഞ쀀⊂⃒qual;抈ceedsȀ;ESTലള഻െ抁qual;쀀⪰̸lantEqual;拡ilde;쀀≿̸ersetĀ;E൘൛쀀⊃⃒qual;抉ildeȀ;EFT൮൯൵ൿ扁qual;扄ullEqual;扇ilde;扉erticalBar;戤cr;쀀𝒩ilde耻Ñ䃑;䎝܀Eacdfgmoprstuvලෂ෉෕ෛ෠෧෼ขภยา฿ไlig;䅒cute耻Ó䃓Āiy෎ීrc耻Ô䃔;䐞blac;䅐r;쀀𝔒rave耻Ò䃒ƀaei෮ෲ෶cr;䅌ga;䎩cron;䎟pf;쀀𝕆enCurlyĀDQฎบoubleQuote;怜uote;怘;橔Āclวฬr;쀀𝒪ash耻Ø䃘iŬื฼de耻Õ䃕es;樷ml耻Ö䃖erĀBP๋๠Āar๐๓r;怾acĀek๚๜;揞et;掴arenthesis;揜Ҁacfhilors๿ງຊຏຒດຝະ໼rtialD;戂y;䐟r;쀀𝔓i;䎦;䎠usMinus;䂱Āipຢອncareplanåڝf;愙Ȁ;eio຺ູ໠໤檻cedesȀ;EST່້໏໚扺qual;檯lantEqual;扼ilde;找me;怳Ādp໩໮uct;戏ortionĀ;aȥ໹l;戝Āci༁༆r;쀀𝒫;䎨ȀUfos༑༖༛༟OT耻"䀢r;쀀𝔔pf;愚cr;쀀𝒬؀BEacefhiorsu༾གྷཇའཱིྦྷྪྭ႖ႩႴႾarr;椐G耻®䂮ƀcnrཎནབute;䅔g;柫rĀ;tཛྷཝ憠l;椖ƀaeyཧཬཱron;䅘dil;䅖;䐠Ā;vླྀཹ愜erseĀEUྂྙĀlq྇ྎement;戋uilibrium;懋pEquilibrium;楯r»ཹo;䎡ghtЀACDFTUVa࿁࿫࿳ဢဨၛႇϘĀnr࿆࿒gleBracket;柩rowƀ;BL࿜࿝࿡憒ar;懥eftArrow;懄eiling;按oǵ࿹\0စbleBracket;柧nǔည\0နeeVector;楝ectorĀ;Bဝသ懂ar;楕loor;挋Āerိ၃eƀ;AVဵံြ抢rrow;憦ector;楛iangleƀ;BEၐၑၕ抳ar;槐qual;抵pƀDTVၣၮၸownVector;楏eeVector;楜ectorĀ;Bႂႃ憾ar;楔ectorĀ;B႑႒懀ar;楓Āpuႛ႞f;愝ndImplies;楰ightarrow;懛ĀchႹႼr;愛;憱leDelayed;槴ڀHOacfhimoqstuფჱჷჽᄙᄞᅑᅖᅡᅧᆵᆻᆿĀCcჩხHcy;䐩y;䐨FTcy;䐬cute;䅚ʀ;aeiyᄈᄉᄎᄓᄗ檼ron;䅠dil;䅞rc;䅜;䐡r;쀀𝔖ortȀDLRUᄪᄴᄾᅉownArrow»ОeftArrow»࢚ightArrow»࿝pArrow;憑gma;䎣allCircle;战pf;쀀𝕊ɲᅭ\0\0ᅰt;戚areȀ;ISUᅻᅼᆉᆯ斡ntersection;抓uĀbpᆏᆞsetĀ;Eᆗᆘ抏qual;抑ersetĀ;Eᆨᆩ抐qual;抒nion;抔cr;쀀𝒮ar;拆ȀbcmpᇈᇛሉላĀ;sᇍᇎ拐etĀ;Eᇍᇕqual;抆ĀchᇠህeedsȀ;ESTᇭᇮᇴᇿ扻qual;檰lantEqual;扽ilde;承Tháྌ;我ƀ;esሒሓሣ拑rsetĀ;Eሜም抃qual;抇et»ሓրHRSacfhiorsሾቄ቉ቕ቞ቱቶኟዂወዑORN耻Þ䃞ADE;愢ĀHc቎ቒcy;䐋y;䐦Ābuቚቜ;䀉;䎤ƀaeyብቪቯron;䅤dil;䅢;䐢r;쀀𝔗Āeiቻ኉Dzኀ\0ኇefore;戴a;䎘Ācn኎ኘkSpace;쀀  Space;怉ldeȀ;EFTካኬኲኼ戼qual;扃ullEqual;扅ilde;扈pf;쀀𝕋ipleDot;惛Āctዖዛr;쀀𝒯rok;䅦ૡዷጎጚጦ\0ጬጱ\0\0\0\0\0ጸጽ፷ᎅ\0᏿ᐄᐊᐐĀcrዻጁute耻Ú䃚rĀ;oጇገ憟cir;楉rǣጓ\0጖y;䐎ve;䅬Āiyጞጣrc耻Û䃛;䐣blac;䅰r;쀀𝔘rave耻Ù䃙acr;䅪Ādiፁ፩erĀBPፈ፝Āarፍፐr;䁟acĀekፗፙ;揟et;掵arenthesis;揝onĀ;P፰፱拃lus;抎Āgp፻፿on;䅲f;쀀𝕌ЀADETadps᎕ᎮᎸᏄϨᏒᏗᏳrrowƀ;BDᅐᎠᎤar;椒ownArrow;懅ownArrow;憕quilibrium;楮eeĀ;AᏋᏌ报rrow;憥ownáϳerĀLRᏞᏨeftArrow;憖ightArrow;憗iĀ;lᏹᏺ䏒on;䎥ing;䅮cr;쀀𝒰ilde;䅨ml耻Ü䃜ҀDbcdefosvᐧᐬᐰᐳᐾᒅᒊᒐᒖash;披ar;櫫y;䐒ashĀ;lᐻᐼ抩;櫦Āerᑃᑅ;拁ƀbtyᑌᑐᑺar;怖Ā;iᑏᑕcalȀBLSTᑡᑥᑪᑴar;戣ine;䁼eparator;杘ilde;所ThinSpace;怊r;쀀𝔙pf;쀀𝕍cr;쀀𝒱dash;抪ʀcefosᒧᒬᒱᒶᒼirc;䅴dge;拀r;쀀𝔚pf;쀀𝕎cr;쀀𝒲Ȁfiosᓋᓐᓒᓘr;쀀𝔛;䎞pf;쀀𝕏cr;쀀𝒳ҀAIUacfosuᓱᓵᓹᓽᔄᔏᔔᔚᔠcy;䐯cy;䐇cy;䐮cute耻Ý䃝Āiyᔉᔍrc;䅶;䐫r;쀀𝔜pf;쀀𝕐cr;쀀𝒴ml;䅸ЀHacdefosᔵᔹᔿᕋᕏᕝᕠᕤcy;䐖cute;䅹Āayᕄᕉron;䅽;䐗ot;䅻Dzᕔ\0ᕛoWidtè૙a;䎖r;愨pf;愤cr;쀀𝒵௡ᖃᖊᖐ\0ᖰᖶᖿ\0\0\0\0ᗆᗛᗫᙟ᙭\0ᚕ᚛ᚲᚹ\0ᚾcute耻á䃡reve;䄃̀;Ediuyᖜᖝᖡᖣᖨᖭ戾;쀀∾̳;房rc耻â䃢te肻´̆;䐰lig耻æ䃦Ā;r²ᖺ;쀀𝔞rave耻à䃠ĀepᗊᗖĀfpᗏᗔsym;愵èᗓha;䎱ĀapᗟcĀclᗤᗧr;䄁g;樿ɤᗰ\0\0ᘊʀ;adsvᗺᗻᗿᘁᘇ戧nd;橕;橜lope;橘;橚΀;elmrszᘘᘙᘛᘞᘿᙏᙙ戠;榤e»ᘙsdĀ;aᘥᘦ戡ѡᘰᘲᘴᘶᘸᘺᘼᘾ;榨;榩;榪;榫;榬;榭;榮;榯tĀ;vᙅᙆ戟bĀ;dᙌᙍ抾;榝Āptᙔᙗh;戢»¹arr;捼Āgpᙣᙧon;䄅f;쀀𝕒΀;Eaeiop዁ᙻᙽᚂᚄᚇᚊ;橰cir;橯;扊d;手s;䀧roxĀ;e዁ᚒñᚃing耻å䃥ƀctyᚡᚦᚨr;쀀𝒶;䀪mpĀ;e዁ᚯñʈilde耻ã䃣ml耻ä䃤Āciᛂᛈoninôɲnt;樑ࠀNabcdefiklnoprsu᛭ᛱᜰ᜼ᝃᝈ᝸᝽០៦ᠹᡐᜍ᤽᥈ᥰot;櫭Ācrᛶ᜞kȀcepsᜀᜅᜍᜓong;扌psilon;䏶rime;怵imĀ;e᜚᜛戽q;拍Ŷᜢᜦee;抽edĀ;gᜬᜭ挅e»ᜭrkĀ;t፜᜷brk;掶Āoyᜁᝁ;䐱quo;怞ʀcmprtᝓ᝛ᝡᝤᝨausĀ;eĊĉptyv;榰séᜌnoõēƀahwᝯ᝱ᝳ;䎲;愶een;扬r;쀀𝔟g΀costuvwឍឝឳេ៕៛៞ƀaiuបពរðݠrc;旯p»፱ƀdptឤឨឭot;樀lus;樁imes;樂ɱឹ\0\0ើcup;樆ar;昅riangleĀdu៍្own;施p;斳plus;樄eåᑄåᒭarow;植ƀako៭ᠦᠵĀcn៲ᠣkƀlst៺֫᠂ozenge;槫riangleȀ;dlr᠒᠓᠘᠝斴own;斾eft;旂ight;斸k;搣Ʊᠫ\0ᠳƲᠯ\0ᠱ;斒;斑4;斓ck;斈ĀeoᠾᡍĀ;qᡃᡆ쀀=⃥uiv;쀀≡⃥t;挐Ȁptwxᡙᡞᡧᡬf;쀀𝕓Ā;tᏋᡣom»Ꮜtie;拈؀DHUVbdhmptuvᢅᢖᢪᢻᣗᣛᣬ᣿ᤅᤊᤐᤡȀLRlrᢎᢐᢒᢔ;敗;敔;敖;敓ʀ;DUduᢡᢢᢤᢦᢨ敐;敦;敩;敤;敧ȀLRlrᢳᢵᢷᢹ;敝;敚;敜;教΀;HLRhlrᣊᣋᣍᣏᣑᣓᣕ救;敬;散;敠;敫;敢;敟ox;槉ȀLRlrᣤᣦᣨᣪ;敕;敒;攐;攌ʀ;DUduڽ᣷᣹᣻᣽;敥;敨;攬;攴inus;抟lus;択imes;抠ȀLRlrᤙᤛᤝ᤟;敛;敘;攘;攔΀;HLRhlrᤰᤱᤳᤵᤷ᤻᤹攂;敪;敡;敞;攼;攤;攜Āevģ᥂bar耻¦䂦Ȁceioᥑᥖᥚᥠr;쀀𝒷mi;恏mĀ;e᜚᜜lƀ;bhᥨᥩᥫ䁜;槅sub;柈Ŭᥴ᥾lĀ;e᥹᥺怢t»᥺pƀ;Eeįᦅᦇ;檮Ā;qۜۛೡᦧ\0᧨ᨑᨕᨲ\0ᨷᩐ\0\0᪴\0\0᫁\0\0ᬡᬮ᭍᭒\0᯽\0ᰌƀcpr᦭ᦲ᧝ute;䄇̀;abcdsᦿᧀᧄ᧊᧕᧙戩nd;橄rcup;橉Āau᧏᧒p;橋p;橇ot;橀;쀀∩︀Āeo᧢᧥t;恁îړȀaeiu᧰᧻ᨁᨅǰ᧵\0᧸s;橍on;䄍dil耻ç䃧rc;䄉psĀ;sᨌᨍ橌m;橐ot;䄋ƀdmnᨛᨠᨦil肻¸ƭptyv;榲t脀¢;eᨭᨮ䂢räƲr;쀀𝔠ƀceiᨽᩀᩍy;䑇ckĀ;mᩇᩈ朓ark»ᩈ;䏇r΀;Ecefms᩟᩠ᩢᩫ᪤᪪᪮旋;槃ƀ;elᩩᩪᩭ䋆q;扗eɡᩴ\0\0᪈rrowĀlr᩼᪁eft;憺ight;憻ʀRSacd᪒᪔᪖᪚᪟»ཇ;擈st;抛irc;抚ash;抝nint;樐id;櫯cir;槂ubsĀ;u᪻᪼晣it»᪼ˬ᫇᫔᫺\0ᬊonĀ;eᫍᫎ䀺Ā;qÇÆɭ᫙\0\0᫢aĀ;t᫞᫟䀬;䁀ƀ;fl᫨᫩᫫戁îᅠeĀmx᫱᫶ent»᫩eóɍǧ᫾\0ᬇĀ;dኻᬂot;橭nôɆƀfryᬐᬔᬗ;쀀𝕔oäɔ脀©;sŕᬝr;愗Āaoᬥᬩrr;憵ss;朗Ācuᬲᬷr;쀀𝒸Ābpᬼ᭄Ā;eᭁᭂ櫏;櫑Ā;eᭉᭊ櫐;櫒dot;拯΀delprvw᭠᭬᭷ᮂᮬᯔ᯹arrĀlr᭨᭪;椸;椵ɰ᭲\0\0᭵r;拞c;拟arrĀ;p᭿ᮀ憶;椽̀;bcdosᮏᮐᮖᮡᮥᮨ截rcap;橈Āauᮛᮞp;橆p;橊ot;抍r;橅;쀀∪︀Ȁalrv᮵ᮿᯞᯣrrĀ;mᮼᮽ憷;椼yƀevwᯇᯔᯘqɰᯎ\0\0ᯒreã᭳uã᭵ee;拎edge;拏en耻¤䂤earrowĀlrᯮ᯳eft»ᮀight»ᮽeäᯝĀciᰁᰇoninôǷnt;戱lcty;挭ঀAHabcdefhijlorstuwz᰸᰻᰿ᱝᱩᱵᲊᲞᲬᲷ᳻᳿ᴍᵻᶑᶫᶻ᷆᷍rò΁ar;楥Ȁglrs᱈ᱍ᱒᱔ger;怠eth;愸òᄳhĀ;vᱚᱛ怐»ऊūᱡᱧarow;椏aã̕Āayᱮᱳron;䄏;䐴ƀ;ao̲ᱼᲄĀgrʿᲁr;懊tseq;橷ƀglmᲑᲔᲘ耻°䂰ta;䎴ptyv;榱ĀirᲣᲨsht;楿;쀀𝔡arĀlrᲳᲵ»ࣜ»သʀaegsv᳂͸᳖᳜᳠mƀ;oș᳊᳔ndĀ;ș᳑uit;晦amma;䏝in;拲ƀ;io᳧᳨᳸䃷de脀÷;o᳧ᳰntimes;拇nø᳷cy;䑒cɯᴆ\0\0ᴊrn;挞op;挍ʀlptuwᴘᴝᴢᵉᵕlar;䀤f;쀀𝕕ʀ;emps̋ᴭᴷᴽᵂqĀ;d͒ᴳot;扑inus;戸lus;戔quare;抡blebarwedgåúnƀadhᄮᵝᵧownarrowóᲃarpoonĀlrᵲᵶefôᲴighôᲶŢᵿᶅkaro÷གɯᶊ\0\0ᶎrn;挟op;挌ƀcotᶘᶣᶦĀryᶝᶡ;쀀𝒹;䑕l;槶rok;䄑Ādrᶰᶴot;拱iĀ;fᶺ᠖斿Āah᷀᷃ròЩaòྦangle;榦Āci᷒ᷕy;䑟grarr;柿ऀDacdefglmnopqrstuxḁḉḙḸոḼṉṡṾấắẽỡἪἷὄ὎὚ĀDoḆᴴoôᲉĀcsḎḔute耻é䃩ter;橮ȀaioyḢḧḱḶron;䄛rĀ;cḭḮ扖耻ê䃪lon;払;䑍ot;䄗ĀDrṁṅot;扒;쀀𝔢ƀ;rsṐṑṗ檚ave耻è䃨Ā;dṜṝ檖ot;檘Ȁ;ilsṪṫṲṴ檙nters;揧;愓Ā;dṹṺ檕ot;檗ƀapsẅẉẗcr;䄓tyƀ;svẒẓẕ戅et»ẓpĀ1;ẝẤijạả;怄;怅怃ĀgsẪẬ;䅋p;怂ĀgpẴẸon;䄙f;쀀𝕖ƀalsỄỎỒrĀ;sỊị拕l;槣us;橱iƀ;lvỚớở䎵on»ớ;䏵ȀcsuvỪỳἋἣĀioữḱrc»Ḯɩỹ\0\0ỻíՈantĀglἂἆtr»ṝess»Ṻƀaeiἒ἖Ἒls;䀽st;扟vĀ;DȵἠD;橸parsl;槥ĀDaἯἳot;打rr;楱ƀcdiἾὁỸr;愯oô͒ĀahὉὋ;䎷耻ð䃰Āmrὓὗl耻ë䃫o;悬ƀcipὡὤὧl;䀡sôծĀeoὬὴctatioîՙnentialåչৡᾒ\0ᾞ\0ᾡᾧ\0\0ῆῌ\0ΐ\0ῦῪ \0 ⁚llingdotseñṄy;䑄male;晀ƀilrᾭᾳ῁lig;耀ffiɩᾹ\0\0᾽g;耀ffig;耀ffl;쀀𝔣lig;耀filig;쀀fjƀaltῙ῜ῡt;晭ig;耀flns;斱of;䆒ǰ΅\0ῳf;쀀𝕗ĀakֿῷĀ;vῼ´拔;櫙artint;樍Āao‌⁕Ācs‑⁒ႉ‸⁅⁈\0⁐β•‥‧‪‬\0‮耻½䂽;慓耻¼䂼;慕;慙;慛Ƴ‴\0‶;慔;慖ʴ‾⁁\0\0⁃耻¾䂾;慗;慜5;慘ƶ⁌\0⁎;慚;慝8;慞l;恄wn;挢cr;쀀𝒻ࢀEabcdefgijlnorstv₂₉₟₥₰₴⃰⃵⃺⃿℃ℒℸ̗ℾ⅒↞Ā;lٍ₇;檌ƀcmpₐₕ₝ute;䇵maĀ;dₜ᳚䎳;檆reve;䄟Āiy₪₮rc;䄝;䐳ot;䄡Ȁ;lqsؾق₽⃉ƀ;qsؾٌ⃄lanô٥Ȁ;cdl٥⃒⃥⃕c;檩otĀ;o⃜⃝檀Ā;l⃢⃣檂;檄Ā;e⃪⃭쀀⋛︀s;檔r;쀀𝔤Ā;gٳ؛mel;愷cy;䑓Ȁ;Eajٚℌℎℐ;檒;檥;檤ȀEaesℛℝ℩ℴ;扩pĀ;p℣ℤ檊rox»ℤĀ;q℮ℯ檈Ā;q℮ℛim;拧pf;쀀𝕘Āci⅃ⅆr;愊mƀ;el٫ⅎ⅐;檎;檐茀>;cdlqr׮ⅠⅪⅮⅳⅹĀciⅥⅧ;檧r;橺ot;拗Par;榕uest;橼ʀadelsↄⅪ←ٖ↛ǰ↉\0↎proø₞r;楸qĀlqؿ↖lesó₈ií٫Āen↣↭rtneqq;쀀≩︀Å↪ԀAabcefkosy⇄⇇⇱⇵⇺∘∝∯≨≽ròΠȀilmr⇐⇔⇗⇛rsðᒄf»․ilôکĀdr⇠⇤cy;䑊ƀ;cwࣴ⇫⇯ir;楈;憭ar;意irc;䄥ƀalr∁∎∓rtsĀ;u∉∊晥it»∊lip;怦con;抹r;쀀𝔥sĀew∣∩arow;椥arow;椦ʀamopr∺∾≃≞≣rr;懿tht;戻kĀlr≉≓eftarrow;憩ightarrow;憪f;쀀𝕙bar;怕ƀclt≯≴≸r;쀀𝒽asè⇴rok;䄧Ābp⊂⊇ull;恃hen»ᱛૡ⊣\0⊪\0⊸⋅⋎\0⋕⋳\0\0⋸⌢⍧⍢⍿\0⎆⎪⎴cute耻í䃭ƀ;iyݱ⊰⊵rc耻î䃮;䐸Ācx⊼⊿y;䐵cl耻¡䂡ĀfrΟ⋉;쀀𝔦rave耻ì䃬Ȁ;inoܾ⋝⋩⋮Āin⋢⋦nt;樌t;戭fin;槜ta;愩lig;䄳ƀaop⋾⌚⌝ƀcgt⌅⌈⌗r;䄫ƀelpܟ⌏⌓inåގarôܠh;䄱f;抷ed;䆵ʀ;cfotӴ⌬⌱⌽⍁are;愅inĀ;t⌸⌹戞ie;槝doô⌙ʀ;celpݗ⍌⍐⍛⍡al;抺Āgr⍕⍙eróᕣã⍍arhk;樗rod;樼Ȁcgpt⍯⍲⍶⍻y;䑑on;䄯f;쀀𝕚a;䎹uest耻¿䂿Āci⎊⎏r;쀀𝒾nʀ;EdsvӴ⎛⎝⎡ӳ;拹ot;拵Ā;v⎦⎧拴;拳Ā;iݷ⎮lde;䄩ǫ⎸\0⎼cy;䑖l耻ï䃯̀cfmosu⏌⏗⏜⏡⏧⏵Āiy⏑⏕rc;䄵;䐹r;쀀𝔧ath;䈷pf;쀀𝕛ǣ⏬\0⏱r;쀀𝒿rcy;䑘kcy;䑔Ѐacfghjos␋␖␢␧␭␱␵␻ppaĀ;v␓␔䎺;䏰Āey␛␠dil;䄷;䐺r;쀀𝔨reen;䄸cy;䑅cy;䑜pf;쀀𝕜cr;쀀𝓀஀ABEHabcdefghjlmnoprstuv⑰⒁⒆⒍⒑┎┽╚▀♎♞♥♹♽⚚⚲⛘❝❨➋⟀⠁⠒ƀart⑷⑺⑼rò৆òΕail;椛arr;椎Ā;gঔ⒋;檋ar;楢ॣ⒥\0⒪\0⒱\0\0\0\0\0⒵Ⓔ\0ⓆⓈⓍ\0⓹ute;䄺mptyv;榴raîࡌbda;䎻gƀ;dlࢎⓁⓃ;榑åࢎ;檅uo耻«䂫rЀ;bfhlpst࢙ⓞⓦⓩ⓫⓮⓱⓵Ā;f࢝ⓣs;椟s;椝ë≒p;憫l;椹im;楳l;憢ƀ;ae⓿─┄檫il;椙Ā;s┉┊檭;쀀⪭︀ƀabr┕┙┝rr;椌rk;杲Āak┢┬cĀek┨┪;䁻;䁛Āes┱┳;榋lĀdu┹┻;榏;榍Ȁaeuy╆╋╖╘ron;䄾Ādi═╔il;䄼ìࢰâ┩;䐻Ȁcqrs╣╦╭╽a;椶uoĀ;rนᝆĀdu╲╷har;楧shar;楋h;憲ʀ;fgqs▋▌উ◳◿扤tʀahlrt▘▤▷◂◨rrowĀ;t࢙□aé⓶arpoonĀdu▯▴own»њp»०eftarrows;懇ightƀahs◍◖◞rrowĀ;sࣴࢧarpoonó྘quigarro÷⇰hreetimes;拋ƀ;qs▋ও◺lanôবʀ;cdgsব☊☍☝☨c;檨otĀ;o☔☕橿Ā;r☚☛檁;檃Ā;e☢☥쀀⋚︀s;檓ʀadegs☳☹☽♉♋pproøⓆot;拖qĀgq♃♅ôউgtò⒌ôছiíলƀilr♕࣡♚sht;楼;쀀𝔩Ā;Eজ♣;檑š♩♶rĀdu▲♮Ā;l॥♳;楪lk;斄cy;䑙ʀ;achtੈ⚈⚋⚑⚖rò◁orneòᴈard;楫ri;旺Āio⚟⚤dot;䅀ustĀ;a⚬⚭掰che»⚭ȀEaes⚻⚽⛉⛔;扨pĀ;p⛃⛄檉rox»⛄Ā;q⛎⛏檇Ā;q⛎⚻im;拦Ѐabnoptwz⛩⛴⛷✚✯❁❇❐Ānr⛮⛱g;柬r;懽rëࣁgƀlmr⛿✍✔eftĀar০✇ightá৲apsto;柼ightá৽parrowĀlr✥✩efô⓭ight;憬ƀafl✶✹✽r;榅;쀀𝕝us;樭imes;樴š❋❏st;戗áፎƀ;ef❗❘᠀旊nge»❘arĀ;l❤❥䀨t;榓ʀachmt❳❶❼➅➇ròࢨorneòᶌarĀ;d྘➃;業;怎ri;抿̀achiqt➘➝ੀ➢➮➻quo;怹r;쀀𝓁mƀ;egল➪➬;檍;檏Ābu┪➳oĀ;rฟ➹;怚rok;䅂萀<;cdhilqrࠫ⟒☹⟜⟠⟥⟪⟰Āci⟗⟙;檦r;橹reå◲mes;拉arr;楶uest;橻ĀPi⟵⟹ar;榖ƀ;ef⠀भ᠛旃rĀdu⠇⠍shar;楊har;楦Āen⠗⠡rtneqq;쀀≨︀Å⠞܀Dacdefhilnopsu⡀⡅⢂⢎⢓⢠⢥⢨⣚⣢⣤ઃ⣳⤂Dot;戺Ȁclpr⡎⡒⡣⡽r耻¯䂯Āet⡗⡙;時Ā;e⡞⡟朠se»⡟Ā;sျ⡨toȀ;dluျ⡳⡷⡻owîҌefôएðᏑker;斮Āoy⢇⢌mma;権;䐼ash;怔asuredangle»ᘦr;쀀𝔪o;愧ƀcdn⢯⢴⣉ro耻µ䂵Ȁ;acdᑤ⢽⣀⣄sôᚧir;櫰ot肻·Ƶusƀ;bd⣒ᤃ⣓戒Ā;uᴼ⣘;横ţ⣞⣡p;櫛ò−ðઁĀdp⣩⣮els;抧f;쀀𝕞Āct⣸⣽r;쀀𝓂pos»ᖝƀ;lm⤉⤊⤍䎼timap;抸ఀGLRVabcdefghijlmoprstuvw⥂⥓⥾⦉⦘⧚⧩⨕⨚⩘⩝⪃⪕⪤⪨⬄⬇⭄⭿⮮ⰴⱧⱼ⳩Āgt⥇⥋;쀀⋙̸Ā;v⥐௏쀀≫⃒ƀelt⥚⥲⥶ftĀar⥡⥧rrow;懍ightarrow;懎;쀀⋘̸Ā;v⥻ే쀀≪⃒ightarrow;懏ĀDd⦎⦓ash;抯ash;抮ʀbcnpt⦣⦧⦬⦱⧌la»˞ute;䅄g;쀀∠⃒ʀ;Eiop඄⦼⧀⧅⧈;쀀⩰̸d;쀀≋̸s;䅉roø඄urĀ;a⧓⧔普lĀ;s⧓ସdz⧟\0⧣p肻 ଷmpĀ;e௹ఀʀaeouy⧴⧾⨃⨐⨓ǰ⧹\0⧻;橃on;䅈dil;䅆ngĀ;dൾ⨊ot;쀀⩭̸p;橂;䐽ash;怓΀;Aadqsxஒ⨩⨭⨻⩁⩅⩐rr;懗rĀhr⨳⨶k;椤Ā;oᏲᏰot;쀀≐̸uiöୣĀei⩊⩎ar;椨í஘istĀ;s஠டr;쀀𝔫ȀEest௅⩦⩹⩼ƀ;qs஼⩭௡ƀ;qs஼௅⩴lanô௢ií௪Ā;rஶ⪁»ஷƀAap⪊⪍⪑rò⥱rr;憮ar;櫲ƀ;svྍ⪜ྌĀ;d⪡⪢拼;拺cy;䑚΀AEadest⪷⪺⪾⫂⫅⫶⫹rò⥦;쀀≦̸rr;憚r;急Ȁ;fqs఻⫎⫣⫯tĀar⫔⫙rro÷⫁ightarro÷⪐ƀ;qs఻⪺⫪lanôౕĀ;sౕ⫴»శiíౝĀ;rవ⫾iĀ;eచథiäඐĀpt⬌⬑f;쀀𝕟膀¬;in⬙⬚⬶䂬nȀ;Edvஉ⬤⬨⬮;쀀⋹̸ot;쀀⋵̸ǡஉ⬳⬵;拷;拶iĀ;vಸ⬼ǡಸ⭁⭃;拾;拽ƀaor⭋⭣⭩rȀ;ast୻⭕⭚⭟lleì୻l;쀀⫽⃥;쀀∂̸lint;樔ƀ;ceಒ⭰⭳uåಥĀ;cಘ⭸Ā;eಒ⭽ñಘȀAait⮈⮋⮝⮧rò⦈rrƀ;cw⮔⮕⮙憛;쀀⤳̸;쀀↝̸ghtarrow»⮕riĀ;eೋೖ΀chimpqu⮽⯍⯙⬄୸⯤⯯Ȁ;cerല⯆ഷ⯉uå൅;쀀𝓃ortɭ⬅\0\0⯖ará⭖mĀ;e൮⯟Ā;q൴൳suĀbp⯫⯭å೸åഋƀbcp⯶ⰑⰙȀ;Ees⯿ⰀഢⰄ抄;쀀⫅̸etĀ;eഛⰋqĀ;qണⰀcĀ;eലⰗñസȀ;EesⰢⰣൟⰧ抅;쀀⫆̸etĀ;e൘ⰮqĀ;qൠⰣȀgilrⰽⰿⱅⱇìௗlde耻ñ䃱çృiangleĀlrⱒⱜeftĀ;eచⱚñదightĀ;eೋⱥñ೗Ā;mⱬⱭ䎽ƀ;esⱴⱵⱹ䀣ro;愖p;怇ҀDHadgilrsⲏⲔⲙⲞⲣⲰⲶⳓⳣash;抭arr;椄p;쀀≍⃒ash;抬ĀetⲨⲬ;쀀≥⃒;쀀>⃒nfin;槞ƀAetⲽⳁⳅrr;椂;쀀≤⃒Ā;rⳊⳍ쀀<⃒ie;쀀⊴⃒ĀAtⳘⳜrr;椃rie;쀀⊵⃒im;쀀∼⃒ƀAan⳰⳴ⴂrr;懖rĀhr⳺⳽k;椣Ā;oᏧᏥear;椧ቓ᪕\0\0\0\0\0\0\0\0\0\0\0\0\0ⴭ\0ⴸⵈⵠⵥ⵲ⶄᬇ\0\0ⶍⶫ\0ⷈⷎ\0ⷜ⸙⸫⸾⹃Ācsⴱ᪗ute耻ó䃳ĀiyⴼⵅrĀ;c᪞ⵂ耻ô䃴;䐾ʀabios᪠ⵒⵗLjⵚlac;䅑v;樸old;榼lig;䅓Ācr⵩⵭ir;榿;쀀𝔬ͯ⵹\0\0⵼\0ⶂn;䋛ave耻ò䃲;槁Ābmⶈ෴ar;榵Ȁacitⶕ⶘ⶥⶨrò᪀Āir⶝ⶠr;榾oss;榻nå๒;槀ƀaeiⶱⶵⶹcr;䅍ga;䏉ƀcdnⷀⷅǍron;䎿;榶pf;쀀𝕠ƀaelⷔ⷗ǒr;榷rp;榹΀;adiosvⷪⷫⷮ⸈⸍⸐⸖戨rò᪆Ȁ;efmⷷⷸ⸂⸅橝rĀ;oⷾⷿ愴f»ⷿ耻ª䂪耻º䂺gof;抶r;橖lope;橗;橛ƀclo⸟⸡⸧ò⸁ash耻ø䃸l;折iŬⸯ⸴de耻õ䃵esĀ;aǛ⸺s;樶ml耻ö䃶bar;挽ૡ⹞\0⹽\0⺀⺝\0⺢⺹\0\0⻋ຜ\0⼓\0\0⼫⾼\0⿈rȀ;astЃ⹧⹲຅脀¶;l⹭⹮䂶leìЃɩ⹸\0\0⹻m;櫳;櫽y;䐿rʀcimpt⺋⺏⺓ᡥ⺗nt;䀥od;䀮il;怰enk;怱r;쀀𝔭ƀimo⺨⺰⺴Ā;v⺭⺮䏆;䏕maô੶ne;明ƀ;tv⺿⻀⻈䏀chfork»´;䏖Āau⻏⻟nĀck⻕⻝kĀ;h⇴⻛;愎ö⇴sҀ;abcdemst⻳⻴ᤈ⻹⻽⼄⼆⼊⼎䀫cir;樣ir;樢Āouᵀ⼂;樥;橲n肻±ຝim;樦wo;樧ƀipu⼙⼠⼥ntint;樕f;쀀𝕡nd耻£䂣Ԁ;Eaceinosu່⼿⽁⽄⽇⾁⾉⾒⽾⾶;檳p;檷uå໙Ā;c໎⽌̀;acens່⽙⽟⽦⽨⽾pproø⽃urlyeñ໙ñ໎ƀaes⽯⽶⽺pprox;檹qq;檵im;拨iíໟmeĀ;s⾈ຮ怲ƀEas⽸⾐⽺ð⽵ƀdfp໬⾙⾯ƀals⾠⾥⾪lar;挮ine;挒urf;挓Ā;t໻⾴ï໻rel;抰Āci⿀⿅r;쀀𝓅;䏈ncsp;怈̀fiopsu⿚⋢⿟⿥⿫⿱r;쀀𝔮pf;쀀𝕢rime;恗cr;쀀𝓆ƀaeo⿸〉〓tĀei⿾々rnionóڰnt;樖stĀ;e【】䀿ñἙô༔઀ABHabcdefhilmnoprstux぀けさすムㄎㄫㅇㅢㅲㆎ㈆㈕㈤㈩㉘㉮㉲㊐㊰㊷ƀartぇおがròႳòϝail;検aròᱥar;楤΀cdenqrtとふへみわゔヌĀeuねぱ;쀀∽̱te;䅕iãᅮmptyv;榳gȀ;del࿑らるろ;榒;榥å࿑uo耻»䂻rր;abcfhlpstw࿜ガクシスゼゾダッデナp;極Ā;f࿠ゴs;椠;椳s;椞ë≝ð✮l;楅im;楴l;憣;憝Āaiパフil;椚oĀ;nホボ戶aló༞ƀabrョリヮrò៥rk;杳ĀakンヽcĀekヹ・;䁽;䁝Āes㄂㄄;榌lĀduㄊㄌ;榎;榐Ȁaeuyㄗㄜㄧㄩron;䅙Ādiㄡㄥil;䅗ì࿲âヺ;䑀Ȁclqsㄴㄷㄽㅄa;椷dhar;楩uoĀ;rȎȍh;憳ƀacgㅎㅟངlȀ;ipsླྀㅘㅛႜnåႻarôྩt;断ƀilrㅩဣㅮsht;楽;쀀𝔯ĀaoㅷㆆrĀduㅽㅿ»ѻĀ;l႑ㆄ;楬Ā;vㆋㆌ䏁;䏱ƀgns㆕ㇹㇼht̀ahlrstㆤㆰ㇂㇘㇤㇮rrowĀ;t࿜ㆭaéトarpoonĀduㆻㆿowîㅾp»႒eftĀah㇊㇐rrowó࿪arpoonóՑightarrows;應quigarro÷ニhreetimes;拌g;䋚ingdotseñἲƀahm㈍㈐㈓rò࿪aòՑ;怏oustĀ;a㈞㈟掱che»㈟mid;櫮Ȁabpt㈲㈽㉀㉒Ānr㈷㈺g;柭r;懾rëဃƀafl㉇㉊㉎r;榆;쀀𝕣us;樮imes;樵Āap㉝㉧rĀ;g㉣㉤䀩t;榔olint;樒arò㇣Ȁachq㉻㊀Ⴜ㊅quo;怺r;쀀𝓇Ābu・㊊oĀ;rȔȓƀhir㊗㊛㊠reåㇸmes;拊iȀ;efl㊪ၙᠡ㊫方tri;槎luhar;楨;愞ൡ㋕㋛㋟㌬㌸㍱\0㍺㎤\0\0㏬㏰\0㐨㑈㑚㒭㒱㓊㓱\0㘖\0\0㘳cute;䅛quï➺Ԁ;Eaceinpsyᇭ㋳㋵㋿㌂㌋㌏㌟㌦㌩;檴ǰ㋺\0㋼;檸on;䅡uåᇾĀ;dᇳ㌇il;䅟rc;䅝ƀEas㌖㌘㌛;檶p;檺im;择olint;樓iíሄ;䑁otƀ;be㌴ᵇ㌵担;橦΀Aacmstx㍆㍊㍗㍛㍞㍣㍭rr;懘rĀhr㍐㍒ë∨Ā;oਸ਼਴t耻§䂧i;䀻war;椩mĀin㍩ðnuóñt;朶rĀ;o㍶⁕쀀𝔰Ȁacoy㎂㎆㎑㎠rp;景Āhy㎋㎏cy;䑉;䑈rtɭ㎙\0\0㎜iäᑤaraì⹯耻­䂭Āgm㎨㎴maƀ;fv㎱㎲㎲䏃;䏂Ѐ;deglnprካ㏅㏉㏎㏖㏞㏡㏦ot;橪Ā;q኱ኰĀ;E㏓㏔檞;檠Ā;E㏛㏜檝;檟e;扆lus;樤arr;楲aròᄽȀaeit㏸㐈㐏㐗Āls㏽㐄lsetmé㍪hp;樳parsl;槤Ādlᑣ㐔e;挣Ā;e㐜㐝檪Ā;s㐢㐣檬;쀀⪬︀ƀflp㐮㐳㑂tcy;䑌Ā;b㐸㐹䀯Ā;a㐾㐿槄r;挿f;쀀𝕤aĀdr㑍ЂesĀ;u㑔㑕晠it»㑕ƀcsu㑠㑹㒟Āau㑥㑯pĀ;sᆈ㑫;쀀⊓︀pĀ;sᆴ㑵;쀀⊔︀uĀbp㑿㒏ƀ;esᆗᆜ㒆etĀ;eᆗ㒍ñᆝƀ;esᆨᆭ㒖etĀ;eᆨ㒝ñᆮƀ;afᅻ㒦ְrť㒫ֱ»ᅼaròᅈȀcemt㒹㒾㓂㓅r;쀀𝓈tmîñiì㐕aræᆾĀar㓎㓕rĀ;f㓔ឿ昆Āan㓚㓭ightĀep㓣㓪psiloîỠhé⺯s»⡒ʀbcmnp㓻㕞ሉ㖋㖎Ҁ;Edemnprs㔎㔏㔑㔕㔞㔣㔬㔱㔶抂;櫅ot;檽Ā;dᇚ㔚ot;櫃ult;櫁ĀEe㔨㔪;櫋;把lus;檿arr;楹ƀeiu㔽㕒㕕tƀ;en㔎㕅㕋qĀ;qᇚ㔏eqĀ;q㔫㔨m;櫇Ābp㕚㕜;櫕;櫓c̀;acensᇭ㕬㕲㕹㕻㌦pproø㋺urlyeñᇾñᇳƀaes㖂㖈㌛pproø㌚qñ㌗g;晪ڀ123;Edehlmnps㖩㖬㖯ሜ㖲㖴㗀㗉㗕㗚㗟㗨㗭耻¹䂹耻²䂲耻³䂳;櫆Āos㖹㖼t;檾ub;櫘Ā;dሢ㗅ot;櫄sĀou㗏㗒l;柉b;櫗arr;楻ult;櫂ĀEe㗤㗦;櫌;抋lus;櫀ƀeiu㗴㘉㘌tƀ;enሜ㗼㘂qĀ;qሢ㖲eqĀ;q㗧㗤m;櫈Ābp㘑㘓;櫔;櫖ƀAan㘜㘠㘭rr;懙rĀhr㘦㘨ë∮Ā;oਫ਩war;椪lig耻ß䃟௡㙑㙝㙠ዎ㙳㙹\0㙾㛂\0\0\0\0\0㛛㜃\0㜉㝬\0\0\0㞇ɲ㙖\0\0㙛get;挖;䏄rë๟ƀaey㙦㙫㙰ron;䅥dil;䅣;䑂lrec;挕r;쀀𝔱Ȁeiko㚆㚝㚵㚼Dz㚋\0㚑eĀ4fኄኁaƀ;sv㚘㚙㚛䎸ym;䏑Ācn㚢㚲kĀas㚨㚮pproø዁im»ኬsðኞĀas㚺㚮ð዁rn耻þ䃾Ǭ̟㛆⋧es膀×;bd㛏㛐㛘䃗Ā;aᤏ㛕r;樱;樰ƀeps㛡㛣㜀á⩍Ȁ;bcf҆㛬㛰㛴ot;挶ir;櫱Ā;o㛹㛼쀀𝕥rk;櫚á㍢rime;怴ƀaip㜏㜒㝤dåቈ΀adempst㜡㝍㝀㝑㝗㝜㝟ngleʀ;dlqr㜰㜱㜶㝀㝂斵own»ᶻeftĀ;e⠀㜾ñम;扜ightĀ;e㊪㝋ñၚot;旬inus;樺lus;樹b;槍ime;樻ezium;揢ƀcht㝲㝽㞁Āry㝷㝻;쀀𝓉;䑆cy;䑛rok;䅧Āio㞋㞎xô᝷headĀlr㞗㞠eftarro÷ࡏightarrow»ཝऀAHabcdfghlmoprstuw㟐㟓㟗㟤㟰㟼㠎㠜㠣㠴㡑㡝㡫㢩㣌㣒㣪㣶ròϭar;楣Ācr㟜㟢ute耻ú䃺òᅐrǣ㟪\0㟭y;䑞ve;䅭Āiy㟵㟺rc耻û䃻;䑃ƀabh㠃㠆㠋ròᎭlac;䅱aòᏃĀir㠓㠘sht;楾;쀀𝔲rave耻ù䃹š㠧㠱rĀlr㠬㠮»ॗ»ႃlk;斀Āct㠹㡍ɯ㠿\0\0㡊rnĀ;e㡅㡆挜r»㡆op;挏ri;旸Āal㡖㡚cr;䅫肻¨͉Āgp㡢㡦on;䅳f;쀀𝕦̀adhlsuᅋ㡸㡽፲㢑㢠ownáᎳarpoonĀlr㢈㢌efô㠭ighô㠯iƀ;hl㢙㢚㢜䏅»ᏺon»㢚parrows;懈ƀcit㢰㣄㣈ɯ㢶\0\0㣁rnĀ;e㢼㢽挝r»㢽op;挎ng;䅯ri;旹cr;쀀𝓊ƀdir㣙㣝㣢ot;拰lde;䅩iĀ;f㜰㣨»᠓Āam㣯㣲rò㢨l耻ü䃼angle;榧ހABDacdeflnoprsz㤜㤟㤩㤭㦵㦸㦽㧟㧤㧨㧳㧹㧽㨁㨠ròϷarĀ;v㤦㤧櫨;櫩asèϡĀnr㤲㤷grt;榜΀eknprst㓣㥆㥋㥒㥝㥤㦖appá␕othinçẖƀhir㓫⻈㥙opô⾵Ā;hᎷ㥢ïㆍĀiu㥩㥭gmá㎳Ābp㥲㦄setneqĀ;q㥽㦀쀀⊊︀;쀀⫋︀setneqĀ;q㦏㦒쀀⊋︀;쀀⫌︀Āhr㦛㦟etá㚜iangleĀlr㦪㦯eft»थight»ၑy;䐲ash»ံƀelr㧄㧒㧗ƀ;beⷪ㧋㧏ar;抻q;扚lip;拮Ābt㧜ᑨaòᑩr;쀀𝔳tré㦮suĀbp㧯㧱»ജ»൙pf;쀀𝕧roð໻tré㦴Ācu㨆㨋r;쀀𝓋Ābp㨐㨘nĀEe㦀㨖»㥾nĀEe㦒㨞»㦐igzag;榚΀cefoprs㨶㨻㩖㩛㩔㩡㩪irc;䅵Ādi㩀㩑Ābg㩅㩉ar;機eĀ;qᗺ㩏;扙erp;愘r;쀀𝔴pf;쀀𝕨Ā;eᑹ㩦atèᑹcr;쀀𝓌ૣណ㪇\0㪋\0㪐㪛\0\0㪝㪨㪫㪯\0\0㫃㫎\0㫘ៜ៟tré៑r;쀀𝔵ĀAa㪔㪗ròσrò৶;䎾ĀAa㪡㪤ròθrò৫að✓is;拻ƀdptឤ㪵㪾Āfl㪺ឩ;쀀𝕩imåឲĀAa㫇㫊ròώròਁĀcq㫒ីr;쀀𝓍Āpt៖㫜ré។Ѐacefiosu㫰㫽㬈㬌㬑㬕㬛㬡cĀuy㫶㫻te耻ý䃽;䑏Āiy㬂㬆rc;䅷;䑋n耻¥䂥r;쀀𝔶cy;䑗pf;쀀𝕪cr;쀀𝓎Ācm㬦㬩y;䑎l耻ÿ䃿Ԁacdefhiosw㭂㭈㭔㭘㭤㭩㭭㭴㭺㮀cute;䅺Āay㭍㭒ron;䅾;䐷ot;䅼Āet㭝㭡træᕟa;䎶r;쀀𝔷cy;䐶grarr;懝pf;쀀𝕫cr;쀀𝓏Ājn㮅㮇;怍j;怌'.split("").map(t=>t.charCodeAt(0))),dy=new Uint16Array("Ȁaglq \x1Bɭ\0\0p;䀦os;䀧t;䀾t;䀼uot;䀢".split("").map(t=>t.charCodeAt(0)));var ya;const py=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),my=(ya=String.fromCodePoint)!==null&&ya!==void 0?ya:function(t){let e="";return t>65535&&(t-=65536,e+=String.fromCharCode(t>>>10&1023|55296),t=56320|t&1023),e+=String.fromCharCode(t),e};function Oy(t){var e;return t>=55296&&t<=57343||t>1114111?65533:(e=py.get(t))!==null&&e!==void 0?e:t}var Ye;(function(t){t[t.NUM=35]="NUM",t[t.SEMI=59]="SEMI",t[t.EQUALS=61]="EQUALS",t[t.ZERO=48]="ZERO",t[t.NINE=57]="NINE",t[t.LOWER_A=97]="LOWER_A",t[t.LOWER_F=102]="LOWER_F",t[t.LOWER_X=120]="LOWER_X",t[t.LOWER_Z=122]="LOWER_Z",t[t.UPPER_A=65]="UPPER_A",t[t.UPPER_F=70]="UPPER_F",t[t.UPPER_Z=90]="UPPER_Z"})(Ye||(Ye={}));const gy=32;var en;(function(t){t[t.VALUE_LENGTH=49152]="VALUE_LENGTH",t[t.BRANCH_LENGTH=16256]="BRANCH_LENGTH",t[t.JUMP_TABLE=127]="JUMP_TABLE"})(en||(en={}));function vu(t){return t>=Ye.ZERO&&t<=Ye.NINE}function by(t){return t>=Ye.UPPER_A&&t<=Ye.UPPER_F||t>=Ye.LOWER_A&&t<=Ye.LOWER_F}function vy(t){return t>=Ye.UPPER_A&&t<=Ye.UPPER_Z||t>=Ye.LOWER_A&&t<=Ye.LOWER_Z||vu(t)}function yy(t){return t===Ye.EQUALS||vy(t)}var Be;(function(t){t[t.EntityStart=0]="EntityStart",t[t.NumericStart=1]="NumericStart",t[t.NumericDecimal=2]="NumericDecimal",t[t.NumericHex=3]="NumericHex",t[t.NamedEntity=4]="NamedEntity"})(Be||(Be={}));var Ei;(function(t){t[t.Legacy=0]="Legacy",t[t.Strict=1]="Strict",t[t.Attribute=2]="Attribute"})(Ei||(Ei={}));class xy{constructor(e,i,n){this.decodeTree=e,this.emitCodePoint=i,this.errors=n,this.state=Be.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=Ei.Strict}startEntity(e){this.decodeMode=e,this.state=Be.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1}write(e,i){switch(this.state){case Be.EntityStart:return e.charCodeAt(i)===Ye.NUM?(this.state=Be.NumericStart,this.consumed+=1,this.stateNumericStart(e,i+1)):(this.state=Be.NamedEntity,this.stateNamedEntity(e,i));case Be.NumericStart:return this.stateNumericStart(e,i);case Be.NumericDecimal:return this.stateNumericDecimal(e,i);case Be.NumericHex:return this.stateNumericHex(e,i);case Be.NamedEntity:return this.stateNamedEntity(e,i)}}stateNumericStart(e,i){return i>=e.length?-1:(e.charCodeAt(i)|gy)===Ye.LOWER_X?(this.state=Be.NumericHex,this.consumed+=1,this.stateNumericHex(e,i+1)):(this.state=Be.NumericDecimal,this.stateNumericDecimal(e,i))}addToNumericResult(e,i,n,r){if(i!==n){const s=n-i;this.result=this.result*Math.pow(r,s)+parseInt(e.substr(i,s),r),this.consumed+=s}}stateNumericHex(e,i){const n=i;for(;i>14;for(;i>14,s!==0){if(o===Ye.SEMI)return this.emitNamedEntityData(this.treeIndex,s,this.consumed+this.excess);this.decodeMode!==Ei.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return-1}emitNotTerminatedNamedEntity(){var e;const{result:i,decodeTree:n}=this,r=(n[i]&en.VALUE_LENGTH)>>14;return this.emitNamedEntityData(i,r,this.consumed),(e=this.errors)===null||e===void 0||e.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(e,i,n){const{decodeTree:r}=this;return this.emitCodePoint(i===1?r[e]&~en.VALUE_LENGTH:r[e+1],n),i===3&&this.emitCodePoint(r[e+2],n),n}end(){var e;switch(this.state){case Be.NamedEntity:return this.result!==0&&(this.decodeMode!==Ei.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case Be.NumericDecimal:return this.emitNumericEntity(0,2);case Be.NumericHex:return this.emitNumericEntity(0,3);case Be.NumericStart:return(e=this.errors)===null||e===void 0||e.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case Be.EntityStart:return 0}}}function hm(t){let e="";const i=new xy(t,n=>e+=my(n));return function(r,s){let o=0,l=0;for(;(l=r.indexOf("&",l))>=0;){e+=r.slice(o,l),i.startEntity(s);const u=i.write(r,l+1);if(u<0){o=l+i.end();break}o=l+u,l=u===0?o+1:o}const a=e+r.slice(o);return e="",a}}function ky(t,e,i,n){const r=(e&en.BRANCH_LENGTH)>>7,s=e&en.JUMP_TABLE;if(r===0)return s!==0&&n===s?i:-1;if(s){const a=n-s;return a<0||a>=r?-1:t[i+a]-1}let o=i,l=o+r-1;for(;o<=l;){const a=o+l>>>1,u=t[a];if(un)l=a-1;else return t[a+r]}return-1}const fm=hm(fy);hm(dy);function Sy(t,e=Ei.Legacy){return fm(t,e)}function wy(t){return fm(t,Ei.Strict)}function $y(t){return Object.prototype.toString.call(t)}function Ac(t){return $y(t)==="[object String]"}const Qy=Object.prototype.hasOwnProperty;function _y(t,e){return Qy.call(t,e)}function Kl(t){return Array.prototype.slice.call(arguments,1).forEach(function(i){if(i){if(typeof i!="object")throw new TypeError(i+"must be object");Object.keys(i).forEach(function(n){t[n]=i[n]})}}),t}function dm(t,e,i){return[].concat(t.slice(0,e),i,t.slice(e+1))}function Ec(t){return!(t>=55296&&t<=57343||t>=64976&&t<=65007||(t&65535)===65535||(t&65535)===65534||t>=0&&t<=8||t===11||t>=14&&t<=31||t>=127&&t<=159||t>1114111)}function ks(t){if(t>65535){t-=65536;const e=55296+(t>>10),i=56320+(t&1023);return String.fromCharCode(e,i)}return String.fromCharCode(t)}const pm=/\\([!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~])/g,Py=/&([a-z#][a-z0-9]{1,31});/gi,Cy=new RegExp(pm.source+"|"+Py.source,"gi"),Ty=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i;function Ay(t,e){if(e.charCodeAt(0)===35&&Ty.test(e)){const n=e[1].toLowerCase()==="x"?parseInt(e.slice(2),16):parseInt(e.slice(1),10);return Ec(n)?ks(n):t}const i=Sy(t);return i!==t?i:t}function Ey(t){return t.indexOf("\\")<0?t:t.replace(pm,"$1")}function mr(t){return t.indexOf("\\")<0&&t.indexOf("&")<0?t:t.replace(Cy,function(e,i,n){return i||Ay(e,n)})}const Ry=/[&<>"]/,Dy=/[&<>"]/g,Ly={"&":"&","<":"<",">":">",'"':"""};function My(t){return Ly[t]}function sn(t){return Ry.test(t)?t.replace(Dy,My):t}const Zy=/[.?*+^$[\]\\(){}|-]/g;function Iy(t){return t.replace(Zy,"\\$&")}function Qe(t){switch(t){case 9:case 32:return!0}return!1}function Ss(t){if(t>=8192&&t<=8202)return!0;switch(t){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1}function mm(t){return Tc.test(t)||um.test(t)}function ws(t){return mm(ks(t))}function $s(t){switch(t){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}}function Jl(t){return t=t.trim().replace(/\s+/g," "),"ẞ".toLowerCase()==="Ṿ"&&(t=t.replace(/ẞ/g,"ß")),t.toLowerCase().toUpperCase()}function Hf(t){return t===32||t===9||t===10||t===13}function ea(t){let e=0;for(;e=e&&Hf(t.charCodeAt(i));i--);return t.slice(e,i+1)}const Xy={mdurl:uy,ucmicro:hy},zy=Object.freeze(Object.defineProperty({__proto__:null,arrayReplaceAt:dm,asciiTrim:ea,assign:Kl,escapeHtml:sn,escapeRE:Iy,fromCodePoint:ks,has:_y,isMdAsciiPunct:$s,isPunctChar:mm,isPunctCharCode:ws,isSpace:Qe,isString:Ac,isValidEntityCode:Ec,isWhiteSpace:Ss,lib:Xy,normalizeReference:Jl,unescapeAll:mr,unescapeMd:Ey},Symbol.toStringTag,{value:"Module"}));function jy(t,e,i){let n,r,s,o;const l=t.posMax,a=t.pos;for(t.pos=e+1,n=1;t.pos32))return s;if(n===41){if(o===0)break;o--}r++}return e===r||o!==0||(s.str=mr(t.slice(e,r)),s.pos=r,s.ok=!0),s}function By(t,e,i,n){let r,s=e;const o={ok:!1,can_continue:!1,pos:0,str:"",marker:0};if(n)o.str=n.str,o.marker=n.marker;else{if(s>=i)return o;let l=t.charCodeAt(s);if(l!==34&&l!==39&&l!==40)return o;e++,s++,l===40&&(l=41),o.marker=l}for(;s"+sn(s.content)+""};Qi.code_block=function(t,e,i,n,r){const s=t[e];return""+sn(t[e].content)+` +`};Qi.fence=function(t,e,i,n,r){const s=t[e],o=s.info?mr(s.info).trim():"";let l="",a="";if(o){const c=o.split(/(\s+)/g);l=c[0],a=c.slice(2).join("")}let u;if(i.highlight?u=i.highlight(s.content,l,a)||sn(s.content):u=sn(s.content),u.indexOf("${u} +`}return`
    ${u}
    +`};Qi.image=function(t,e,i,n,r){const s=t[e];return s.attrs[s.attrIndex("alt")][1]=r.renderInlineAsText(s.children,i,n),r.renderToken(t,e,i)};Qi.hardbreak=function(t,e,i){return i.xhtmlOut?`
    +`:`
    +`};Qi.softbreak=function(t,e,i){return i.breaks?i.xhtmlOut?`
    +`:`
    +`:` +`};Qi.text=function(t,e){return sn(t[e].content)};Qi.html_block=function(t,e){return t[e].content};Qi.html_inline=function(t,e){return t[e].content};function Ar(){this.rules=Kl({},Qi)}Ar.prototype.renderAttrs=function(e){let i,n,r;if(!e.attrs)return"";for(r="",i=0,n=e.attrs.length;i +`:">",s};Ar.prototype.renderInline=function(t,e,i){let n="";const r=this.rules;for(let s=0,o=t.length;s=0&&(n=this.attrs[i][1]),n};ui.prototype.attrJoin=function(e,i){const n=this.attrIndex(e);n<0?this.attrPush([e,i]):this.attrs[n][1]=this.attrs[n][1]+" "+i};function Om(t,e,i){this.src=t,this.env=i,this.tokens=[],this.inlineMode=!1,this.md=e}Om.prototype.Token=ui;const qy=/\r\n?|\n/g,Wy=/\0/g;function Yy(t){let e;e=t.src.replace(qy,` +`),e=e.replace(Wy,"�"),t.src=e}function Ny(t){let e;t.inlineMode?(e=new t.Token("inline","",0),e.content=t.src,e.map=[0,1],e.children=[],t.tokens.push(e)):t.md.block.parse(t.src,t.md,t.env,t.tokens)}function Gy(t){const e=t.tokens;for(let i=0,n=e.length;i\s]/i.test(t)}function Hy(t){return/^<\/a\s*>/i.test(t)}function Ky(t){const e=t.tokens;if(t.md.options.linkify)for(let i=0,n=e.length;i=0;o--){const l=r[o];if(l.type==="link_close"){for(o--;r[o].level!==l.level&&r[o].type!=="link_open";)o--;continue}if(l.type==="html_inline"&&(Uy(l.content)&&s>0&&s--,Hy(l.content)&&s++),!(s>0)&&l.type==="text"&&t.md.linkify.test(l.content)){const a=l.content;let u=t.md.linkify.match(a);const c=[];let h=l.level,f=0;u.length>0&&u[0].index===0&&o>0&&r[o-1].type==="text_special"&&(u=u.slice(1));for(let d=0;df){const v=new t.Token("text","",0);v.content=a.slice(f,g),v.level=h,c.push(v)}const b=new t.Token("link_open","a",1);b.attrs=[["href",m]],b.level=h++,b.markup="linkify",b.info="auto",c.push(b);const y=new t.Token("text","",0);y.content=O,y.level=h,c.push(y);const w=new t.Token("link_close","a",-1);w.level=--h,w.markup="linkify",w.info="auto",c.push(w),f=u[d].lastIndex}if(f=0;i--){const n=t[i];n.type==="text"&&!e&&(n.content=n.content.replace(ex,ix)),n.type==="link_open"&&n.info==="auto"&&e--,n.type==="link_close"&&n.info==="auto"&&e++}}function rx(t){let e=0;for(let i=t.length-1;i>=0;i--){const n=t[i];n.type==="text"&&!e&&gm.test(n.content)&&(n.content=n.content.replace(/\+-/g,"±").replace(/\.{2,}/g,"…").replace(/([?!])…/g,"$1..").replace(/([?!]){4,}/g,"$1$1$1").replace(/,{2,}/g,",").replace(/(^|[^-])---(?=[^-]|$)/mg,"$1—").replace(/(^|\s)--(?=\s|$)/mg,"$1–").replace(/(^|[^-\s])--(?=[^-\s]|$)/mg,"$1–")),n.type==="link_open"&&n.info==="auto"&&e--,n.type==="link_close"&&n.info==="auto"&&e++}}function sx(t){let e;if(t.md.options.typographer)for(e=t.tokens.length-1;e>=0;e--)t.tokens[e].type==="inline"&&(Jy.test(t.tokens[e].content)&&nx(t.tokens[e].children),gm.test(t.tokens[e].content)&&rx(t.tokens[e].children))}const ox=/['"]/,Kf=/['"]/g,Jf="’";function bo(t,e,i,n){t[e]||(t[e]=[]),t[e].push({pos:i,ch:n})}function lx(t,e){let i="",n=0;e.sort((r,s)=>r.pos-s.pos);for(let r=0;r=0&&!(n[i].level<=l);i--);if(n.length=i+1,o.type!=="text")continue;const a=o.content;let u=0;const c=a.length;e:for(;u=0)m=a.charCodeAt(h.index-1);else for(i=s-1;i>=0&&!(t[i].type==="softbreak"||t[i].type==="hardbreak");i--)if(t[i].content){m=t[i].content.charCodeAt(t[i].content.length-1);break}let O=32;if(u=48&&m<=57&&(d=f=!1),f&&d&&(f=g,d=b),!f&&!d){p&&bo(r,s,h.index,Jf);continue}if(d)for(i=n.length-1;i>=0;i--){let v=n[i];if(n[i].level=0;e--)t.tokens[e].type!=="inline"||!ox.test(t.tokens[e].content)||ax(t.tokens[e].children,t)}function cx(t){let e,i;const n=t.tokens,r=n.length;for(let s=0;s0&&this.level++,this.tokens.push(n),n};_i.prototype.isEmpty=function(e){return this.bMarks[e]+this.tShift[e]>=this.eMarks[e]};_i.prototype.skipEmptyLines=function(e){for(let i=this.lineMax;ei;)if(!Qe(this.src.charCodeAt(--e)))return e+1;return e};_i.prototype.skipChars=function(e,i){for(let n=this.src.length;en;)if(i!==this.src.charCodeAt(--e))return e+1;return e};_i.prototype.getLines=function(e,i,n,r){if(e>=i)return"";const s=new Array(i-e);for(let o=0,l=e;ln?s[o]=new Array(a-n+1).join(" ")+this.src.slice(c,h):s[o]=this.src.slice(c,h)}return s.join("")};_i.prototype.Token=ui;const hx=65536;function ka(t,e){const i=t.bMarks[e]+t.tShift[e],n=t.eMarks[e];return t.src.slice(i,n)}function ed(t){const e=[],i=t.length;let n=0,r=t.charCodeAt(n),s=!1,o=0,l="";for(;ni)return!1;let r=e+1;if(t.sCount[r]=4)return!1;let s=t.bMarks[r]+t.tShift[r];if(s>=t.eMarks[r])return!1;const o=t.src.charCodeAt(s++);if(o!==124&&o!==45&&o!==58||s>=t.eMarks[r])return!1;const l=t.src.charCodeAt(s++);if(l!==124&&l!==45&&l!==58&&!Qe(l)||o===45&&Qe(l))return!1;for(;s=4)return!1;u=ed(a),u.length&&u[0]===""&&u.shift(),u.length&&u[u.length-1]===""&&u.pop();const h=u.length;if(h===0||h!==c.length)return!1;if(n)return!0;const f=t.parentType;t.parentType="table";const d=t.md.block.ruler.getRules("blockquote"),p=t.push("table_open","table",1),m=[e,0];p.map=m;const O=t.push("thead_open","thead",1);O.map=[e,e+1];const g=t.push("tr_open","tr",1);g.map=[e,e+1];for(let w=0;w=4||(u=ed(a),u.length&&u[0]===""&&u.shift(),u.length&&u[u.length-1]===""&&u.pop(),y+=h-u.length,y>hx))break;if(r===e+2){const Q=t.push("tbody_open","tbody",1);Q.map=b=[e+2,0]}const v=t.push("tr_open","tr",1);v.map=[r,r+1];for(let Q=0;Q=4){n++,r=n;continue}break}t.line=r;const s=t.push("code_block","code",0);return s.content=t.getLines(e,r,4+t.blkIndent,!1)+` +`,s.map=[e,t.line],!0}function px(t,e,i,n){let r=t.bMarks[e]+t.tShift[e],s=t.eMarks[e];if(t.sCount[e]-t.blkIndent>=4||r+3>s)return!1;const o=t.src.charCodeAt(r);if(o!==126&&o!==96)return!1;let l=r;r=t.skipChars(r,o);let a=r-l;if(a<3)return!1;const u=t.src.slice(l,r),c=t.src.slice(r,s);if(o===96&&c.indexOf(String.fromCharCode(o))>=0)return!1;if(n)return!0;let h=e,f=!1;for(;h++,!(h>=i||(r=l=t.bMarks[h]+t.tShift[h],s=t.eMarks[h],r=4)&&(r=t.skipChars(r,o),!(r-l=4||t.src.charCodeAt(r)!==62)return!1;if(n)return!0;const l=[],a=[],u=[],c=[],h=t.md.block.ruler.getRules("blockquote"),f=t.parentType;t.parentType="blockquote";let d=!1,p;for(p=e;p=s)break;if(t.src.charCodeAt(r++)===62&&!y){let v=t.sCount[p]+1,Q,P;t.src.charCodeAt(r)===32?(r++,v++,P=!1,Q=!0):t.src.charCodeAt(r)===9?(Q=!0,(t.bsCount[p]+v)%4===3?(r++,v++,P=!1):P=!0):Q=!1;let _=v;for(l.push(t.bMarks[p]),t.bMarks[p]=r;r=s,a.push(t.bsCount[p]),t.bsCount[p]=t.sCount[p]+1+(Q?1:0),u.push(t.sCount[p]),t.sCount[p]=_-v,c.push(t.tShift[p]),t.tShift[p]=r-t.bMarks[p];continue}if(d)break;let w=!1;for(let v=0,Q=h.length;v";const g=[e,0];O.map=g,t.md.block.tokenize(t,e,p);const b=t.push("blockquote_close","blockquote",-1);b.markup=">",t.lineMax=o,t.parentType=f,g[1]=t.line;for(let y=0;y=4)return!1;let s=t.bMarks[e]+t.tShift[e];const o=t.src.charCodeAt(s++);if(o!==42&&o!==45&&o!==95)return!1;let l=1;for(;s=n)return-1;let s=t.src.charCodeAt(r++);if(s<48||s>57)return-1;for(;;){if(r>=n)return-1;if(s=t.src.charCodeAt(r++),s>=48&&s<=57){if(r-i>=10)return-1;continue}if(s===41||s===46)break;return-1}return r=4||t.listIndent>=0&&t.sCount[a]-t.listIndent>=4&&t.sCount[a]=t.blkIndent&&(c=!0);let h,f,d;if((d=id(t,a))>=0){if(h=!0,o=t.bMarks[a]+t.tShift[a],f=Number(t.src.slice(o,d-1)),c&&f!==1)return!1}else if((d=td(t,a))>=0)h=!1;else return!1;if(c&&t.skipSpaces(d)>=t.eMarks[a])return!1;if(n)return!0;const p=t.src.charCodeAt(d-1),m=t.tokens.length;h?(l=t.push("ordered_list_open","ol",1),f!==1&&(l.attrs=[["start",f]])):l=t.push("bullet_list_open","ul",1);const O=[a,0];l.map=O,l.markup=String.fromCharCode(p);let g=!1;const b=t.md.block.ruler.getRules("list"),y=t.parentType;for(t.parentType="list";a=r?P=1:P=v-w,P>4&&(P=1);const _=w+P;l=t.push("list_item_open","li",1),l.markup=String.fromCharCode(p);const R=[a,0];l.map=R,h&&(l.info=t.src.slice(o,d-1));const L=t.tight,I=t.tShift[a],T=t.sCount[a],M=t.listIndent;if(t.listIndent=t.blkIndent,t.blkIndent=_,t.tight=!0,t.tShift[a]=Q-t.bMarks[a],t.sCount[a]=v,Q>=r&&t.isEmpty(a+1)?t.line=Math.min(t.line+2,i):t.md.block.tokenize(t,a,i,!0),(!t.tight||g)&&(u=!1),g=t.line-a>1&&t.isEmpty(t.line-1),t.blkIndent=t.listIndent,t.listIndent=M,t.tShift[a]=I,t.sCount[a]=T,t.tight=L,l=t.push("list_item_close","li",-1),l.markup=String.fromCharCode(p),a=t.line,R[1]=a,a>=i||t.sCount[a]=4)break;let F=!1;for(let B=0,Y=b.length;B=4||t.src.charCodeAt(r)!==91)return!1;function l(b){const y=t.lineMax;if(b>=y||t.isEmpty(b))return null;let w=!1;if(t.sCount[b]-t.blkIndent>3&&(w=!0),t.sCount[b]<0&&(w=!0),!w){const P=t.md.block.ruler.getRules("reference"),_=t.parentType;t.parentType="reference";let R=!1;for(let L=0,I=P.length;L"u"&&(t.env.references={}),typeof t.env.references[g]>"u"&&(t.env.references[g]={title:O,href:h}),t.line=o),!0):!1}const yx=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],xx="[a-zA-Z_:][a-zA-Z0-9:._-]*",kx="[^\"'=<>`\\x00-\\x20]+",Sx="'[^']*'",wx='"[^"]*"',$x="(?:"+kx+"|"+Sx+"|"+wx+")",Qx="(?:\\s+"+xx+"(?:\\s*=\\s*"+$x+")?)",bm="<[A-Za-z][A-Za-z0-9\\-]*"+Qx+"*\\s*\\/?>",vm="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",_x="",Px="<[?][\\s\\S]*?[?]>",Cx="]*>",Tx="",Ax=new RegExp("^(?:"+bm+"|"+vm+"|"+_x+"|"+Px+"|"+Cx+"|"+Tx+")"),Ex=new RegExp("^(?:"+bm+"|"+vm+")"),mn=[[/^<(script|pre|style|textarea)(?=(\s|>|$))/i,/<\/(script|pre|style|textarea)>/i,!0],[/^/,!0],[/^<\?/,/\?>/,!0],[/^/,!0],[/^/,!0],[new RegExp("^|$))","i"),/^$/,!0],[new RegExp(Ex.source+"\\s*$"),/^$/,!1]];function Rx(t,e,i,n){let r=t.bMarks[e]+t.tShift[e],s=t.eMarks[e];if(t.sCount[e]-t.blkIndent>=4||!t.md.options.html||t.src.charCodeAt(r)!==60)return!1;let o=t.src.slice(r,s),l=0;for(;l=4)return!1;let o=t.src.charCodeAt(r);if(o!==35||r>=s)return!1;let l=1;for(o=t.src.charCodeAt(++r);o===35&&r6||rr&&Qe(t.src.charCodeAt(a-1))&&(s=a),t.line=e+1;const u=t.push("heading_open","h"+String(l),1);u.markup="########".slice(0,l),u.map=[e,t.line];const c=t.push("inline","",0);c.content=ea(t.src.slice(r,s)),c.map=[e,t.line],c.children=[];const h=t.push("heading_close","h"+String(l),-1);return h.markup="########".slice(0,l),!0}function Lx(t,e,i){const n=t.md.block.ruler.getRules("paragraph");if(t.sCount[e]-t.blkIndent>=4)return!1;const r=t.parentType;t.parentType="paragraph";let s=0,o,l=e+1;for(;l3)continue;if(t.sCount[l]>=t.blkIndent){let d=t.bMarks[l]+t.tShift[l];const p=t.eMarks[l];if(d=p))){s=o===61?1:2;break}}if(t.sCount[l]<0)continue;let f=!1;for(let d=0,p=n.length;d3||t.sCount[s]<0)continue;let u=!1;for(let c=0,h=n.length;c=i||t.sCount[o]=s){t.line=i;break}const a=t.line;let u=!1;for(let c=0;c=t.line)throw new Error("block rule didn't increment state.line");break}if(!u)throw new Error("none of the block rules matched");t.tight=!l,t.isEmpty(t.line-1)&&(l=!0),o=t.line,o0&&(this.level++,this._prev_delimiters.push(this.delimiters),this.delimiters=[],r={delimiters:this.delimiters}),this.pendingLevel=this.level,this.tokens.push(n),this.tokens_meta.push(r),n};Hs.prototype.scanDelims=function(t,e){const i=this.posMax,n=this.src.charCodeAt(t);let r;if(t===0)r=32;else if(t===1)r=this.src.charCodeAt(0),(r&63488)===55296&&(r=65533);else if(r=this.src.charCodeAt(t-1),(r&64512)===56320){const O=this.src.charCodeAt(t-2);r=(O&64512)===55296?65536+(O-55296<<10)+(r-56320):65533}else(r&64512)===55296&&(r=65533);let s=t;for(;s0)return!1;const i=t.pos,n=t.posMax;if(i+3>n||t.src.charCodeAt(i)!==58||t.src.charCodeAt(i+1)!==47||t.src.charCodeAt(i+2)!==47)return!1;const r=t.pending.match(Xx);if(!r)return!1;const s=r[1],o=t.md.linkify.matchAtStart(t.src.slice(i-s.length));if(!o)return!1;let l=o.url;if(l.length<=s.length)return!1;let a=l.length;for(;a>0&&l.charCodeAt(a-1)===42;)a--;a!==l.length&&(l=l.slice(0,a));const u=t.md.normalizeLink(l);if(!t.md.validateLink(u))return!1;if(!e){t.pending=t.pending.slice(0,-s.length);const c=t.push("link_open","a",1);c.attrs=[["href",u]],c.markup="linkify",c.info="auto";const h=t.push("text","",0);h.content=t.md.normalizeLinkText(l);const f=t.push("link_close","a",-1);f.markup="linkify",f.info="auto"}return t.pos+=l.length-s.length,!0}function jx(t,e){let i=t.pos;if(t.src.charCodeAt(i)!==10)return!1;const n=t.pending.length-1,r=t.posMax;if(!e)if(n>=0&&t.pending.charCodeAt(n)===32)if(n>=1&&t.pending.charCodeAt(n-1)===32){let s=n-1;for(;s>=1&&t.pending.charCodeAt(s-1)===32;)s--;t.pending=t.pending.slice(0,s),t.push("hardbreak","br",0)}else t.pending=t.pending.slice(0,-1),t.push("softbreak","br",0);else t.push("softbreak","br",0);for(i++;i?@[]^_`{|}~-".split("").forEach(function(t){Dc[t.charCodeAt(0)]=1});function Fx(t,e){let i=t.pos;const n=t.posMax;if(t.src.charCodeAt(i)!==92||(i++,i>=n))return!1;let r=t.src.charCodeAt(i);if(r===10){for(e||t.push("hardbreak","br",0),i++;i=55296&&r<=56319&&i+1=56320&&l<=57343&&(s+=t.src[i+1],i++)}const o="\\"+s;if(!e){const l=t.push("text_special","",0);r<256&&Dc[r]!==0?l.content=s:l.content=o,l.markup=o,l.info="escape"}return t.pos=i+1,!0}function Bx(t,e){let i=t.pos;if(t.src.charCodeAt(i)!==96)return!1;const r=i;i++;const s=t.posMax;for(;i=0;n--){const r=e[n];if(r.marker!==95&&r.marker!==42||r.end===-1)continue;const s=e[r.end],o=n>0&&e[n-1].end===r.end+1&&e[n-1].marker===r.marker&&e[n-1].token===r.token-1&&e[r.end+1].token===s.token+1,l=String.fromCharCode(r.marker),a=t.tokens[r.token];a.type=o?"strong_open":"em_open",a.tag=o?"strong":"em",a.nesting=1,a.markup=o?l+l:l,a.content="";const u=t.tokens[s.token];u.type=o?"strong_close":"em_close",u.tag=o?"strong":"em",u.nesting=-1,u.markup=o?l+l:l,u.content="",o&&(t.tokens[e[n-1].token].content="",t.tokens[e[r.end+1].token].content="",n--)}}function Yx(t){const e=t.tokens_meta,i=t.tokens_meta.length;rd(t,t.delimiters);for(let n=0;n=h)return!1;if(a=p,r=t.md.helpers.parseLinkDestination(t.src,p,t.posMax),r.ok){for(o=t.md.normalizeLink(r.str),t.md.validateLink(o)?p=r.pos:o="",a=p;p=h||t.src.charCodeAt(p)!==41)&&(u=!0),p++}if(u){if(typeof t.env.references>"u")return!1;if(p=0?n=t.src.slice(a,p++):p=d+1):p=d+1,n||(n=t.src.slice(f,d)),s=t.env.references[Jl(n)],!s)return t.pos=c,!1;o=s.href,l=s.title}if(!e){t.pos=f,t.posMax=d;const m=t.push("link_open","a",1),O=[["href",o]];m.attrs=O,l&&O.push(["title",l]),t.linkLevel++,t.md.inline.tokenize(t),t.linkLevel--,t.push("link_close","a",-1)}return t.pos=p,t.posMax=h,!0}function Gx(t,e){let i,n,r,s,o,l,a,u,c="";const h=t.pos,f=t.posMax;if(t.src.charCodeAt(t.pos)!==33||t.src.charCodeAt(t.pos+1)!==91)return!1;const d=t.pos+2,p=t.md.helpers.parseLinkLabel(t,t.pos+1,!1);if(p<0)return!1;if(s=p+1,s=f)return!1;for(u=s,l=t.md.helpers.parseLinkDestination(t.src,s,t.posMax),l.ok&&(c=t.md.normalizeLink(l.str),t.md.validateLink(c)?s=l.pos:c=""),u=s;s=f||t.src.charCodeAt(s)!==41)return t.pos=h,!1;s++}else{if(typeof t.env.references>"u")return!1;if(s=0?r=t.src.slice(u,s++):s=p+1):s=p+1,r||(r=t.src.slice(d,p)),o=t.env.references[Jl(r)],!o)return t.pos=h,!1;c=o.href,a=o.title}if(!e){n=t.src.slice(d,p);const m=[];t.md.inline.parse(n,t.md,t.env,m);const O=t.push("image","img",0),g=[["src",c],["alt",""]];O.attrs=g,O.children=m,O.content=n,a&&g.push(["title",a])}return t.pos=s,t.posMax=f,!0}const Ux=/^([a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/,Hx=/^([a-zA-Z][a-zA-Z0-9+.-]{1,31}):([^<>\x00-\x20]*)$/;function Kx(t,e){let i=t.pos;if(t.src.charCodeAt(i)!==60)return!1;const n=t.pos,r=t.posMax;for(;;){if(++i>=r)return!1;const o=t.src.charCodeAt(i);if(o===60)return!1;if(o===62)break}const s=t.src.slice(n+1,i);if(Hx.test(s)){const o=t.md.normalizeLink(s);if(!t.md.validateLink(o))return!1;if(!e){const l=t.push("link_open","a",1);l.attrs=[["href",o]],l.markup="autolink",l.info="auto";const a=t.push("text","",0);a.content=t.md.normalizeLinkText(s);const u=t.push("link_close","a",-1);u.markup="autolink",u.info="auto"}return t.pos+=s.length+2,!0}if(Ux.test(s)){const o=t.md.normalizeLink("mailto:"+s);if(!t.md.validateLink(o))return!1;if(!e){const l=t.push("link_open","a",1);l.attrs=[["href",o]],l.markup="autolink",l.info="auto";const a=t.push("text","",0);a.content=t.md.normalizeLinkText(s);const u=t.push("link_close","a",-1);u.markup="autolink",u.info="auto"}return t.pos+=s.length+2,!0}return!1}function Jx(t){return/^\s]/i.test(t)}function e2(t){return/^<\/a\s*>/i.test(t)}function t2(t){const e=t|32;return e>=97&&e<=122}function i2(t,e){if(!t.md.options.html)return!1;const i=t.posMax,n=t.pos;if(t.src.charCodeAt(n)!==60||n+2>=i)return!1;const r=t.src.charCodeAt(n+1);if(r!==33&&r!==63&&r!==47&&!t2(r))return!1;const s=t.src.slice(n).match(Ax);if(!s)return!1;if(!e){const o=t.push("html_inline","",0);o.content=s[0],Jx(o.content)&&t.linkLevel++,e2(o.content)&&t.linkLevel--}return t.pos+=s[0].length,!0}const n2=/^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i,r2=/^&([a-z][a-z0-9]{1,31});/i;function s2(t,e){const i=t.pos,n=t.posMax;if(t.src.charCodeAt(i)!==38||i+1>=n)return!1;if(t.src.charCodeAt(i+1)===35){const s=t.src.slice(i).match(n2);if(s){if(!e){const o=s[1][0].toLowerCase()==="x"?parseInt(s[1].slice(1),16):parseInt(s[1],10),l=t.push("text_special","",0);l.content=Ec(o)?ks(o):ks(65533),l.markup=s[0],l.info="entity"}return t.pos+=s[0].length,!0}}else{const s=t.src.slice(i).match(r2);if(s){const o=wy(s[0]);if(o!==s[0]){if(!e){const l=t.push("text_special","",0);l.content=o,l.markup=s[0],l.info="entity"}return t.pos+=s[0].length,!0}}}return!1}function sd(t){const e={},i=t.length;if(!i)return;let n=0,r=-2;const s=[];for(let o=0;oa;u-=s[u]+1){const h=t[u];if(h.marker===l.marker&&h.open&&h.end<0){let f=!1;if((h.close||l.open)&&(h.length+l.length)%3===0&&(h.length%3!==0||l.length%3!==0)&&(f=!0),!f){const d=u>0&&!t[u-1].open?s[u-1]+1:0;s[o]=o-u+d,s[u]=d,l.open=!1,h.end=o,h.close=!1,c=-1,r=-2;break}}}c!==-1&&(e[l.marker][(l.open?3:0)+(l.length||0)%3]=c)}}function o2(t){const e=t.tokens_meta,i=t.tokens_meta.length;sd(t.delimiters);for(let n=0;n0&&n++,r[e].type==="text"&&e+1=t.pos)throw new Error("inline rule didn't increment state.pos");break}}else t.pos=t.posMax;o||t.pos++,s[e]=t.pos};Ks.prototype.tokenize=function(t){const e=this.ruler.getRules(""),i=e.length,n=t.posMax,r=t.md.options.maxNesting;for(;t.pos=t.pos)throw new Error("inline rule didn't increment state.pos");break}}if(o){if(t.pos>=n)break;continue}t.pending+=t.src[t.pos++]}t.pending&&t.pushPending()};Ks.prototype.parse=function(t,e,i,n){const r=new this.State(t,e,i,n);this.tokenize(r);const s=this.ruler2.getRules(""),o=s.length;for(let l=0;l|$))`,e.tpl_email_fuzzy=`(^|${i}|"|\\(|${e.src_ZCc})(${e.src_email_name}@${e.tpl_host_fuzzy_strict})`,e.tpl_link_fuzzy=`(^|(?![.:/\\-_@])(?:[$+<=>^\`||]|${e.src_ZPCc}))((?![$+<=>^\`||])${e.tpl_host_port_fuzzy_strict}${e.src_path})`,e.tpl_link_no_ip_fuzzy=`(^|(?![.:/\\-_@])(?:[$+<=>^\`||]|${e.src_ZPCc}))((?![$+<=>^\`||])${e.tpl_host_port_no_ip_fuzzy_strict}${e.src_path})`,e}function yu(t){return Array.prototype.slice.call(arguments,1).forEach(function(i){i&&Object.keys(i).forEach(function(n){t[n]=i[n]})}),t}function ia(t){return Object.prototype.toString.call(t)}function u2(t){return ia(t)==="[object String]"}function c2(t){return ia(t)==="[object Object]"}function h2(t){return ia(t)==="[object RegExp]"}function od(t){return ia(t)==="[object Function]"}function f2(t){return t.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}const km={fuzzyLink:!0,fuzzyEmail:!0,fuzzyIP:!1};function d2(t){return Object.keys(t||{}).reduce(function(e,i){return e||km.hasOwnProperty(i)},!1)}const p2={"http:":{validate:function(t,e,i){const n=t.slice(e);return i.re.http||(i.re.http=new RegExp(`^\\/\\/${i.re.src_auth}${i.re.src_host_port_strict}${i.re.src_path}`,"i")),i.re.http.test(n)?n.match(i.re.http)[0].length:0}},"https:":"http:","ftp:":"http:","//":{validate:function(t,e,i){const n=t.slice(e);return i.re.no_http||(i.re.no_http=new RegExp("^"+i.re.src_auth+`(?:localhost|(?:(?:${i.re.src_domain})\\.)+${i.re.src_domain_root})`+i.re.src_port+i.re.src_host_terminator+i.re.src_path,"i")),i.re.no_http.test(n)?e>=3&&t[e-3]===":"||e>=3&&t[e-3]==="/"?0:n.match(i.re.no_http)[0].length:0}},"mailto:":{validate:function(t,e,i){const n=t.slice(e);return i.re.mailto||(i.re.mailto=new RegExp(`^${i.re.src_email_name}@${i.re.src_host_strict}`,"i")),i.re.mailto.test(n)?n.match(i.re.mailto)[0].length:0}}},m2="a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]",O2="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф".split("|");function g2(t){return function(e,i){const n=e.slice(i);return t.test(n)?n.match(t)[0].length:0}}function ld(){return function(t,e){e.normalize(t)}}function Ol(t){const e=t.re=a2(t.__opts__),i=t.__tlds__.slice();t.onCompile(),t.__tlds_replaced__||i.push(m2),i.push(e.src_xn),e.src_tlds=i.join("|");function n(l){return l.replace("%TLDS%",e.src_tlds)}e.email_fuzzy=RegExp(n(e.tpl_email_fuzzy),"i"),e.email_fuzzy_global=RegExp(n(e.tpl_email_fuzzy),"ig"),e.link_fuzzy=RegExp(n(e.tpl_link_fuzzy),"i"),e.link_fuzzy_global=RegExp(n(e.tpl_link_fuzzy),"ig"),e.link_no_ip_fuzzy=RegExp(n(e.tpl_link_no_ip_fuzzy),"i"),e.link_no_ip_fuzzy_global=RegExp(n(e.tpl_link_no_ip_fuzzy),"ig"),e.host_fuzzy_test=RegExp(n(e.tpl_host_fuzzy_test),"i");const r=[];t.__compiled__={};function s(l,a){throw new Error(`(LinkifyIt) Invalid schema "${l}": ${a}`)}Object.keys(t.__schemas__).forEach(function(l){const a=t.__schemas__[l];if(a===null)return;const u={validate:null,link:null};if(t.__compiled__[l]=u,c2(a)){h2(a.validate)?u.validate=g2(a.validate):od(a.validate)?u.validate=a.validate:s(l,a),od(a.normalize)?u.normalize=a.normalize:a.normalize?s(l,a):u.normalize=ld();return}if(u2(a)){r.push(l);return}s(l,a)}),r.forEach(function(l){t.__compiled__[t.__schemas__[l]]&&(t.__compiled__[l].validate=t.__compiled__[t.__schemas__[l]].validate,t.__compiled__[l].normalize=t.__compiled__[t.__schemas__[l]].normalize)}),t.__compiled__[""]={validate:null,normalize:ld()};const o=Object.keys(t.__compiled__).filter(function(l){return l.length>0&&t.__compiled__[l]}).map(f2).join("|");t.re.schema_test=RegExp(`(^|(?!_)(?:[><|]|${e.src_ZPCc}))(${o})`,"i"),t.re.schema_search=RegExp(`(^|(?!_)(?:[><|]|${e.src_ZPCc}))(${o})`,"ig"),t.re.schema_at_start=RegExp(`^${t.re.schema_search.source}`,"i"),t.re.pretest=RegExp(`(${t.re.schema_test.source})|(${t.re.host_fuzzy_test.source})|@`,"i")}function Sm(t,e,i,n){const r=t.slice(i,n);this.schema=e.toLowerCase(),this.index=i,this.lastIndex=n,this.raw=r,this.text=r,this.url=r}function Lt(t,e){if(!(this instanceof Lt))return new Lt(t,e);e||d2(t)&&(e=t,t={}),this.__opts__=yu({},km,e),this.__schemas__=yu({},p2,t),this.__compiled__={},this.__tlds__=O2,this.__tlds_replaced__=!1,this.re={},Ol(this)}Lt.prototype.add=function(e,i){return this.__schemas__[e]=i,Ol(this),this};Lt.prototype.set=function(e){return this.__opts__=yu(this.__opts__,e),this};Lt.prototype.test=function(e){if(!e.length)return!1;let i,n;if(this.re.schema_test.test(e)){for(n=this.re.schema_search,n.lastIndex=0;(i=n.exec(e))!==null;)if(this.testSchemaAt(e,i[2],n.lastIndex))return!0}return!!(this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&e.search(this.re.host_fuzzy_test)>=0&&e.match(this.__opts__.fuzzyIP?this.re.link_fuzzy:this.re.link_no_ip_fuzzy)!==null||this.__opts__.fuzzyEmail&&this.__compiled__["mailto:"]&&e.indexOf("@")>=0&&e.match(this.re.email_fuzzy)!==null)};Lt.prototype.pretest=function(e){return this.re.pretest.test(e)};Lt.prototype.testSchemaAt=function(e,i,n){return this.__compiled__[i.toLowerCase()]?this.__compiled__[i.toLowerCase()].validate(e,n,this):0};Lt.prototype.match=function(e){const i=[],n=[],r=[],s=[];let o,l,a;function u(f,d){return f?d?f.index!==d.index?f.index=d.lastIndex?f:d:f:d}if(!e.length)return null;if(this.re.schema_test.test(e))for(a=this.re.schema_search,a.lastIndex=0;(o=a.exec(e))!==null;)l=this.testSchemaAt(e,o[2],a.lastIndex),l&&n.push({schema:o[2],index:o.index+o[1].length,lastIndex:o.index+o[0].length+l});if(this.__opts__.fuzzyLink&&this.__compiled__["http:"])for(a=this.__opts__.fuzzyIP?this.re.link_fuzzy_global:this.re.link_no_ip_fuzzy_global,a.lastIndex=0;(o=a.exec(e))!==null;)r.push({schema:"",index:o.index+o[1].length,lastIndex:o.index+o[0].length});if(this.__opts__.fuzzyEmail&&this.__compiled__["mailto:"])for(a=this.re.email_fuzzy_global,a.lastIndex=0;(o=a.exec(e))!==null;)s.push({schema:"mailto:",index:o.index+o[1].length,lastIndex:o.index+o[0].length});const c=[0,0,0];let h=0;for(;;){const f=[n[c[0]],s[c[1]],r[c[2]]],d=u(u(f[0],f[1]),f[2]);if(!d)break;if(d===f[0]?c[0]++:d===f[1]?c[1]++:c[2]++,d.index= 0x80 (not a basic code point)","invalid-input":"Invalid input"},$a=vi-Lc,yi=Math.floor,Qa=String.fromCharCode;function Yi(t){throw new RangeError(S2[t])}function w2(t,e){const i=[];let n=t.length;for(;n--;)i[n]=e(t[n]);return i}function _m(t,e){const i=t.split("@");let n="";i.length>1&&(n=i[0]+"@",t=i[1]),t=t.replace(k2,".");const r=t.split("."),s=w2(r,e).join(".");return n+s}function Pm(t){const e=[];let i=0;const n=t.length;for(;i=55296&&r<=56319&&iString.fromCodePoint(...t),Q2=function(t){return t>=48&&t<58?26+(t-48):t>=65&&t<91?t-65:t>=97&&t<123?t-97:vi},ad=function(t,e){return t+22+75*(t<26)-((e!=0)<<5)},Cm=function(t,e,i){let n=0;for(t=i?yi(t/v2):t>>1,t+=yi(t/e);t>$a*Qs>>1;n+=vi)t=yi(t/$a);return yi(n+($a+1)*t/(t+b2))},Tm=function(t){const e=[],i=t.length;let n=0,r=$m,s=wm,o=t.lastIndexOf(Qm);o<0&&(o=0);for(let l=0;l=128&&Yi("not-basic"),e.push(t.charCodeAt(l));for(let l=o>0?o+1:0;l=i&&Yi("invalid-input");const f=Q2(t.charCodeAt(l++));f>=vi&&Yi("invalid-input"),f>yi((Kn-n)/c)&&Yi("overflow"),n+=f*c;const d=h<=s?Lc:h>=s+Qs?Qs:h-s;if(fyi(Kn/p)&&Yi("overflow"),c*=p}const u=e.length+1;s=Cm(n-a,u,a==0),yi(n/u)>Kn-r&&Yi("overflow"),r+=yi(n/u),n%=u,e.splice(n++,0,r)}return String.fromCodePoint(...e)},Am=function(t){const e=[];t=Pm(t);const i=t.length;let n=$m,r=0,s=wm;for(const a of t)a<128&&e.push(Qa(a));const o=e.length;let l=o;for(o&&e.push(Qm);l=n&&cyi((Kn-r)/u)&&Yi("overflow"),r+=(a-n)*u,n=a;for(const c of t)if(cKn&&Yi("overflow"),c===n){let h=r;for(let f=vi;;f+=vi){const d=f<=s?Lc:f>=s+Qs?Qs:f-s;if(h=0))try{e.hostname=Em.toASCII(e.hostname)}catch{}return Us(Pc(e))}function Z2(t){const e=Cc(t,!0);if(e.hostname&&(!e.protocol||Rm.indexOf(e.protocol)>=0))try{e.hostname=Em.toUnicode(e.hostname)}catch{}return pr(Pc(e),pr.defaultChars+"%")}function Wt(t,e){if(!(this instanceof Wt))return new Wt(t,e);e||Ac(t)||(e=t||{},t="default"),this.inline=new Ks,this.block=new ta,this.core=new Rc,this.renderer=new Ar,this.linkify=new Lt,this.validateLink=L2,this.normalizeLink=M2,this.normalizeLinkText=Z2,this.utils=zy,this.helpers=Kl({},Vy),this.options={},this.configure(t),e&&this.set(e)}Wt.prototype.set=function(t){return Kl(this.options,t),this};Wt.prototype.configure=function(t){const e=this;if(Ac(t)){const i=t;if(t=E2[i],!t)throw new Error('Wrong `markdown-it` preset "'+i+'", check name')}if(!t)throw new Error("Wrong `markdown-it` preset, can't be empty");return t.options&&e.set(t.options),t.components&&Object.keys(t.components).forEach(function(i){t.components[i].rules&&e[i].ruler.enableOnly(t.components[i].rules),t.components[i].rules2&&e[i].ruler2.enableOnly(t.components[i].rules2)}),this};Wt.prototype.enable=function(t,e){let i=[];Array.isArray(t)||(t=[t]),["core","block","inline"].forEach(function(r){i=i.concat(this[r].ruler.enable(t,!0))},this),i=i.concat(this.inline.ruler2.enable(t,!0));const n=t.filter(function(r){return i.indexOf(r)<0});if(n.length&&!e)throw new Error("MarkdownIt. Failed to enable unknown rule(s): "+n);return this};Wt.prototype.disable=function(t,e){let i=[];Array.isArray(t)||(t=[t]),["core","block","inline"].forEach(function(r){i=i.concat(this[r].ruler.disable(t,!0))},this),i=i.concat(this.inline.ruler2.disable(t,!0));const n=t.filter(function(r){return i.indexOf(r)<0});if(n.length&&!e)throw new Error("MarkdownIt. Failed to disable unknown rule(s): "+n);return this};Wt.prototype.use=function(t){const e=[this].concat(Array.prototype.slice.call(arguments,1));return t.apply(t,e),this};Wt.prototype.parse=function(t,e){if(typeof t!="string")throw new Error("Input data should be a String");const i=new this.core.State(t,this,e);return this.core.process(i),i.tokens};Wt.prototype.render=function(t,e){return e=e||{},this.renderer.render(this.parse(t,e),this.options,e)};Wt.prototype.parseInline=function(t,e){const i=new this.core.State(t,this,e);return i.inlineMode=!0,this.core.process(i),i.tokens};Wt.prototype.renderInline=function(t,e){return e=e||{},this.renderer.render(this.parseInline(t,e),this.options,e)};const ud=new Set([!0,!1,"alt","title"]);function Dm(t,e){return(Array.isArray(t)?t:[]).filter(([i])=>i!==e)}function Lm(t,e){t&&t.attrs&&(t.attrs=Dm(t.attrs,e))}function I2(t,e){if(!ud.has(t))throw new TypeError(`figcaption must be one of: ${[...ud]}.`);if(t==="alt")return e.content;const i=e.attrs.find(([n])=>n==="title");return Array.isArray(i)&&i[1]?(Lm(e,"title"),i[1]):void 0}function X2(t,e){e=e||{},t.core.ruler.before("linkify","image_figures",function(i){let n=1;for(let r=1,s=i.tokens.length;rc.match(u)).map(c=>Array.from(c))}if(e.tabindex&&(i.tokens[r-1].attrPush(["tabindex",n]),n++),e.lazy&&(a.attrs.some(([u])=>u==="loading")||a.attrs.push(["loading","lazy"])),e.async&&(a.attrs.some(([u])=>u==="decoding")||a.attrs.push(["decoding","async"])),e.classes&&typeof e.classes=="string"){let u=!1;for(let c=0,h=a.attrs.length;cc==="src");a.attrs.push(["data-src",u[1]]),Lm(a,"src")}}})}const z2=/\\([ \\!"#$%&'()*+,./:;<=>?@[\]^_`{|}~-])/g;function j2(t,e){const i=t.posMax,n=t.pos;if(t.src.charCodeAt(n)!==126||e||n+2>=i)return!1;t.pos=n+1;let r=!1;for(;t.pos?@[\]^_`{|}~-])/g;function V2(t,e){const i=t.posMax,n=t.pos;if(t.src.charCodeAt(n)!==94||e||n+2>=i)return!1;t.pos=n+1;let r=!1;for(;t.pos{const i=t.split(","),n=i[0].match(/:(.*?);/);if(n){const r=n[1],s=atob(i[1]);let o=s.length;const l=new Uint8Array(o);for(;o--;)l[o]=s.charCodeAt(o);return new File([l],e,{type:r})}return null},Y2=(t,e)=>{if(!t)return t;const i=e.split(` +`),n=['"),`${t}${n.join("")}`},N2=(t,e)=>{if(!t||!e)return 0;const i=t==null?void 0:t.getBoundingClientRect();if(e===document.documentElement)return i.top-e.clientTop;const n=e==null?void 0:e.getBoundingClientRect();return i.top-n.top},cd=(()=>{let t=0;return()=>++t})();var G2={hasSubscribers:!1},U2=G2,H2=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,Mm=new Set,hd=typeof process=="object"&&process?process:{},K2=(t,e,i,n)=>{typeof hd.emitWarning=="function"?hd.emitWarning(t,e,i,n):console.error(`[${i}] ${e}: ${t}`)},J2=t=>!Mm.has(t),Bi=t=>!!t&&t===Math.floor(t)&&t>0&&isFinite(t),Zm=t=>Bi(t)?t<=Math.pow(2,8)?Uint8Array:t<=Math.pow(2,16)?Uint16Array:t<=Math.pow(2,32)?Uint32Array:t<=Number.MAX_SAFE_INTEGER?Ho:null:null,Ho=class extends Array{constructor(t){super(t),this.fill(0)}},wi,ar,ek=(wi=class{constructor(e,i){Ze(this,"heap");Ze(this,"length");if(!S(wi,ar))throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new i(e),this.length=0}static create(e){let i=Zm(e);if(!i)return[];U(wi,ar,!0);let n=new wi(e,i);return U(wi,ar,!1),n}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}},ar=new WeakMap,oe(wi,ar,!1),wi),Up,Hp,Xt,wt,Ut,Sn,Ht,ur,cr,Kt,je,Jt,Ie,_e,ne,ot,$t,it,Ve,ei,qe,ti,ii,Qt,_t,ni,hr,lt,wn,Z,xu,$n,Ai,Ys,Pt,Im,Qn,fr,Ns,Vi,qi,ku,Vn,Ko,Xm,zm,Jo,we,Su,jm,Fm,Hr,wu,Kr,Wi,$u,dr,tk=(dr=class{constructor(e){oe(this,Z);oe(this,Xt);oe(this,wt);oe(this,Ut);oe(this,Sn);oe(this,Ht);oe(this,ur);oe(this,cr);oe(this,Kt);Ze(this,"ttl");Ze(this,"ttlResolution");Ze(this,"ttlAutopurge");Ze(this,"updateAgeOnGet");Ze(this,"updateAgeOnHas");Ze(this,"allowStale");Ze(this,"noDisposeOnSet");Ze(this,"noUpdateTTL");Ze(this,"maxEntrySize");Ze(this,"sizeCalculation");Ze(this,"noDeleteOnFetchRejection");Ze(this,"noDeleteOnStaleGet");Ze(this,"allowStaleOnFetchAbort");Ze(this,"allowStaleOnFetchRejection");Ze(this,"ignoreFetchAbort");Ze(this,"backgroundFetchSize");oe(this,je);oe(this,Jt);oe(this,Ie);oe(this,_e);oe(this,ne);oe(this,ot);oe(this,$t);oe(this,it);oe(this,Ve);oe(this,ei);oe(this,qe);oe(this,ti);oe(this,ii);oe(this,Qt);oe(this,_t);oe(this,ni);oe(this,hr);oe(this,lt);oe(this,wn);oe(this,$n,()=>{});oe(this,Ai,()=>{});oe(this,Ys,()=>{});oe(this,Pt,()=>!1);oe(this,Qn,e=>{});oe(this,fr,(e,i,n)=>{});oe(this,Ns,(e,i,n,r)=>{if(n||r)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0});Ze(this,Up,"LRUCache");let{max:i=0,ttl:n,ttlResolution:r=1,ttlAutopurge:s,updateAgeOnGet:o,updateAgeOnHas:l,allowStale:a,dispose:u,onInsert:c,disposeAfter:h,noDisposeOnSet:f,noUpdateTTL:d,maxSize:p=0,maxEntrySize:m=0,sizeCalculation:O,fetchMethod:g,memoMethod:b,noDeleteOnFetchRejection:y,noDeleteOnStaleGet:w,allowStaleOnFetchRejection:v,allowStaleOnFetchAbort:Q,ignoreFetchAbort:P,backgroundFetchSize:_=1,perf:R}=e;if(this.backgroundFetchSize=_,R!==void 0&&typeof(R==null?void 0:R.now)!="function")throw new TypeError("perf option must have a now() method if specified");if(U(this,Kt,R??H2),i!==0&&!Bi(i))throw new TypeError("max option must be a nonnegative integer");let L=i?Zm(i):Array;if(!L)throw new Error("invalid max value: "+i);if(U(this,Xt,i),U(this,wt,p),this.maxEntrySize=m||S(this,wt),this.sizeCalculation=O,this.sizeCalculation){if(!S(this,wt)&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(b!==void 0&&typeof b!="function")throw new TypeError("memoMethod must be a function if defined");if(U(this,cr,b),g!==void 0&&typeof g!="function")throw new TypeError("fetchMethod must be a function if specified");if(U(this,ur,g),U(this,hr,!!g),U(this,Ie,new Map),U(this,_e,Array.from({length:i}).fill(void 0)),U(this,ne,Array.from({length:i}).fill(void 0)),U(this,ot,new L(i)),U(this,$t,new L(i)),U(this,it,0),U(this,Ve,0),U(this,ei,ek.create(i)),U(this,je,0),U(this,Jt,0),typeof u=="function"&&U(this,Ut,u),typeof c=="function"&&U(this,Sn,c),typeof h=="function"?(U(this,Ht,h),U(this,qe,[])):(U(this,Ht,void 0),U(this,qe,void 0)),U(this,ni,!!S(this,Ut)),U(this,wn,!!S(this,Sn)),U(this,lt,!!S(this,Ht)),this.noDisposeOnSet=!!f,this.noUpdateTTL=!!d,this.noDeleteOnFetchRejection=!!y,this.allowStaleOnFetchRejection=!!v,this.allowStaleOnFetchAbort=!!Q,this.ignoreFetchAbort=!!P,this.maxEntrySize!==0){if(S(this,wt)!==0&&!Bi(S(this,wt)))throw new TypeError("maxSize must be a positive integer if specified");if(!Bi(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");j(this,Z,Im).call(this)}if(this.allowStale=!!a,this.noDeleteOnStaleGet=!!w,this.updateAgeOnGet=!!o,this.updateAgeOnHas=!!l,this.ttlResolution=Bi(r)||r===0?r:1,this.ttlAutopurge=!!s,this.ttl=n||0,this.ttl){if(!Bi(this.ttl))throw new TypeError("ttl must be a positive integer if specified");j(this,Z,xu).call(this)}if(S(this,Xt)===0&&this.ttl===0&&S(this,wt)===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!S(this,Xt)&&!S(this,wt)){let I="LRU_CACHE_UNBOUNDED";J2(I)&&(Mm.add(I),K2("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",I,dr))}}get perf(){return S(this,Kt)}static unsafeExposeInternals(e){return{starts:S(e,ii),ttls:S(e,Qt),autopurgeTimers:S(e,_t),sizes:S(e,ti),keyMap:S(e,Ie),keyList:S(e,_e),valList:S(e,ne),next:S(e,ot),prev:S(e,$t),get head(){return S(e,it)},get tail(){return S(e,Ve)},free:S(e,ei),isBackgroundFetch:i=>{var n;return j(n=e,Z,we).call(n,i)},backgroundFetch:(i,n,r,s)=>{var o;return j(o=e,Z,Jo).call(o,i,n,r,s)},moveToTail:i=>{var n;return j(n=e,Z,Kr).call(n,i)},indexes:i=>{var n;return j(n=e,Z,Vi).call(n,i)},rindexes:i=>{var n;return j(n=e,Z,qi).call(n,i)},isStale:i=>{var n;return S(n=e,Pt).call(n,i)}}}get max(){return S(this,Xt)}get maxSize(){return S(this,wt)}get calculatedSize(){return S(this,Jt)}get size(){return S(this,je)}get fetchMethod(){return S(this,ur)}get memoMethod(){return S(this,cr)}get dispose(){return S(this,Ut)}get onInsert(){return S(this,Sn)}get disposeAfter(){return S(this,Ht)}getRemainingTTL(e){return S(this,Ie).has(e)?1/0:0}*entries(){for(let e of j(this,Z,Vi).call(this))S(this,ne)[e]!==void 0&&S(this,_e)[e]!==void 0&&!j(this,Z,we).call(this,S(this,ne)[e])&&(yield[S(this,_e)[e],S(this,ne)[e]])}*rentries(){for(let e of j(this,Z,qi).call(this))S(this,ne)[e]!==void 0&&S(this,_e)[e]!==void 0&&!j(this,Z,we).call(this,S(this,ne)[e])&&(yield[S(this,_e)[e],S(this,ne)[e]])}*keys(){for(let e of j(this,Z,Vi).call(this)){let i=S(this,_e)[e];i!==void 0&&!j(this,Z,we).call(this,S(this,ne)[e])&&(yield i)}}*rkeys(){for(let e of j(this,Z,qi).call(this)){let i=S(this,_e)[e];i!==void 0&&!j(this,Z,we).call(this,S(this,ne)[e])&&(yield i)}}*values(){for(let e of j(this,Z,Vi).call(this))S(this,ne)[e]!==void 0&&!j(this,Z,we).call(this,S(this,ne)[e])&&(yield S(this,ne)[e])}*rvalues(){for(let e of j(this,Z,qi).call(this))S(this,ne)[e]!==void 0&&!j(this,Z,we).call(this,S(this,ne)[e])&&(yield S(this,ne)[e])}[(Hp=Symbol.iterator,Up=Symbol.toStringTag,Hp)](){return this.entries()}find(e,i={}){for(let n of j(this,Z,Vi).call(this)){let r=S(this,ne)[n],s=j(this,Z,we).call(this,r)?r.__staleWhileFetching:r;if(s!==void 0&&e(s,S(this,_e)[n],this))return j(this,Z,Hr).call(this,S(this,_e)[n],i)}}forEach(e,i=this){for(let n of j(this,Z,Vi).call(this)){let r=S(this,ne)[n],s=j(this,Z,we).call(this,r)?r.__staleWhileFetching:r;s!==void 0&&e.call(i,s,S(this,_e)[n],this)}}rforEach(e,i=this){for(let n of j(this,Z,qi).call(this)){let r=S(this,ne)[n],s=j(this,Z,we).call(this,r)?r.__staleWhileFetching:r;s!==void 0&&e.call(i,s,S(this,_e)[n],this)}}purgeStale(){let e=!1;for(let i of j(this,Z,qi).call(this,{allowStale:!0}))S(this,Pt).call(this,i)&&(j(this,Z,Wi).call(this,S(this,_e)[i],"expire"),e=!0);return e}info(e){let i=S(this,Ie).get(e);if(i===void 0)return;let n=S(this,ne)[i],r=j(this,Z,we).call(this,n)?n.__staleWhileFetching:n;if(r===void 0)return;let s={value:r};if(S(this,Qt)&&S(this,ii)){let o=S(this,Qt)[i],l=S(this,ii)[i];if(o&&l){let a=o-(S(this,Kt).now()-l);s.ttl=a,s.start=Date.now()}}return S(this,ti)&&(s.size=S(this,ti)[i]),s}dump(){let e=[];for(let i of j(this,Z,Vi).call(this,{allowStale:!0})){let n=S(this,_e)[i],r=S(this,ne)[i],s=j(this,Z,we).call(this,r)?r.__staleWhileFetching:r;if(s===void 0||n===void 0)continue;let o={value:s};if(S(this,Qt)&&S(this,ii)){o.ttl=S(this,Qt)[i];let l=S(this,Kt).now()-S(this,ii)[i];o.start=Math.floor(Date.now()-l)}S(this,ti)&&(o.size=S(this,ti)[i]),e.unshift([n,o])}return e}load(e){this.clear();for(let[i,n]of e){if(n.start){let r=Date.now()-n.start;n.start=S(this,Kt).now()-r}j(this,Z,Vn).call(this,i,n.value,n)}}set(e,i,n={}){let{status:r=void 0}=n;return n.status=r,r&&(r.op="set",r.key=e,i!==void 0&&(r.value=i),r.cache=this),j(this,Z,Vn).call(this,e,i,n)}pop(){var e;try{for(;S(this,je);){let i=S(this,ne)[S(this,it)];if(j(this,Z,Ko).call(this,!0),j(this,Z,we).call(this,i)){if(i.__staleWhileFetching)return i.__staleWhileFetching}else if(i!==void 0)return i}}finally{if(S(this,lt)&&S(this,qe)){let i=S(this,qe),n;for(;n=i==null?void 0:i.shift();)(e=S(this,Ht))==null||e.call(this,...n)}}}has(e,i={}){let{status:n=void 0}=i;return i.status=n,n&&(n.op="has",n.key=e,n.cache=this),j(this,Z,Xm).call(this,e,i)}peek(e,i={}){let{status:n=void 0}=i;return n&&(n.op="peek",n.key=e,n.cache=this),i.status=n,j(this,Z,zm).call(this,e,i)}fetch(e,i={}){let{status:n=void 0}=i;return i.status=n,n&&i.context&&(n.context=i.context),j(this,Z,Su).call(this,e,i)}forceFetch(e,i={}){let{status:n=void 0}=i;return i.status=n,n&&i.context&&(n.context=i.context),j(this,Z,jm).call(this,e,i)}memo(e,i={}){let{status:n=void 0}=i;i.status=n,n&&(n.op="memo",n.key=e,i.context&&(n.context=i.context),n.cache=this);let r=j(this,Z,Fm).call(this,e,i);return n&&(n.value=r),r}get(e,i={}){let{status:n=void 0}=i;i.status=n,n&&(n.op="get",n.key=e,n.cache=this);let r=j(this,Z,Hr).call(this,e,i);return n&&(r!==void 0&&(n.value=r),U2.hasSubscribers),r}delete(e){return j(this,Z,Wi).call(this,e,"delete")}clear(){return j(this,Z,$u).call(this,"delete")}},Xt=new WeakMap,wt=new WeakMap,Ut=new WeakMap,Sn=new WeakMap,Ht=new WeakMap,ur=new WeakMap,cr=new WeakMap,Kt=new WeakMap,je=new WeakMap,Jt=new WeakMap,Ie=new WeakMap,_e=new WeakMap,ne=new WeakMap,ot=new WeakMap,$t=new WeakMap,it=new WeakMap,Ve=new WeakMap,ei=new WeakMap,qe=new WeakMap,ti=new WeakMap,ii=new WeakMap,Qt=new WeakMap,_t=new WeakMap,ni=new WeakMap,hr=new WeakMap,lt=new WeakMap,wn=new WeakMap,Z=new WeakSet,xu=function(){let e=new Ho(S(this,Xt)),i=new Ho(S(this,Xt));U(this,Qt,e),U(this,ii,i);let n=this.ttlAutopurge?Array.from({length:S(this,Xt)}):void 0;U(this,_t,n),U(this,Ys,(a,u,c=S(this,Kt).now())=>{i[a]=u!==0?c:0,e[a]=u,r(a,u)}),U(this,$n,a=>{i[a]=e[a]!==0?S(this,Kt).now():0,r(a,e[a])});let r=this.ttlAutopurge?(a,u)=>{if(n!=null&&n[a]&&(clearTimeout(n[a]),n[a]=void 0),u&&u!==0&&n){let c=setTimeout(()=>{S(this,Pt).call(this,a)?(j(this,Z,Wi).call(this,S(this,_e)[a],"expire"),n[a]=void 0):r(a,l(a))},u+1);c.unref&&c.unref(),n[a]=c}}:()=>{};U(this,Ai,(a,u)=>{if(e[u]){let c=e[u],h=i[u];if(!c||!h)return;a.ttl=c,a.start=h,a.now=s||o();let f=a.now-h;a.remainingTTL=c-f}});let s=0,o=()=>{let a=S(this,Kt).now();if(this.ttlResolution>0){s=a;let u=setTimeout(()=>s=0,this.ttlResolution);u.unref&&u.unref()}return a};this.getRemainingTTL=a=>{let u=S(this,Ie).get(a);return u===void 0?0:l(u)};let l=a=>{let u=e[a],c=i[a];if(!u||!c)return 1/0;let h=(s||o())-c;return u-h};U(this,Pt,a=>{let u=i[a],c=e[a];return!!c&&!!u&&(s||o())-u>c})},$n=new WeakMap,Ai=new WeakMap,Ys=new WeakMap,Pt=new WeakMap,Im=function(){let e=new Ho(S(this,Xt));U(this,Jt,0),U(this,ti,e),U(this,Qn,i=>{U(this,Jt,S(this,Jt)-e[i]),e[i]=0}),U(this,Ns,(i,n,r,s)=>{if(!Bi(r)){if(j(this,Z,we).call(this,n))return this.backgroundFetchSize;if(s){if(typeof s!="function")throw new TypeError("sizeCalculation must be a function");if(r=s(n,i),!Bi(r))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.")}return r}),U(this,fr,(i,n,r)=>{if(e[i]=n,S(this,wt)){let s=S(this,wt)-e[i];for(;S(this,Jt)>s;)j(this,Z,Ko).call(this,!0)}U(this,Jt,S(this,Jt)+e[i]),r&&(r.entrySize=n,r.totalCalculatedSize=S(this,Jt))})},Qn=new WeakMap,fr=new WeakMap,Ns=new WeakMap,Vi=function*({allowStale:e=this.allowStale}={}){if(S(this,je))for(let i=S(this,Ve);j(this,Z,ku).call(this,i)&&((e||!S(this,Pt).call(this,i))&&(yield i),i!==S(this,it));)i=S(this,$t)[i]},qi=function*({allowStale:e=this.allowStale}={}){if(S(this,je))for(let i=S(this,it);j(this,Z,ku).call(this,i)&&((e||!S(this,Pt).call(this,i))&&(yield i),i!==S(this,Ve));)i=S(this,ot)[i]},ku=function(e){return e!==void 0&&S(this,Ie).get(S(this,_e)[e])===e},Vn=function(e,i,n,r){var p,m,O,g,b,y,w,v;let{ttl:s=this.ttl,start:o,noDisposeOnSet:l=this.noDisposeOnSet,sizeCalculation:a=this.sizeCalculation,status:u}=n,c=j(this,Z,we).call(this,i);if(i===void 0)return u&&(u.set="deleted"),this.delete(e),this;let{noUpdateTTL:h=this.noUpdateTTL}=n;u&&!c&&(u.value=i);let f=S(this,Ns).call(this,e,i,n.size||0,a,u);if(this.maxEntrySize&&f>this.maxEntrySize)return j(this,Z,Wi).call(this,e,"set"),u&&(u.set="miss",u.maxEntrySizeExceeded=!0),this;let d=S(this,je)===0?void 0:S(this,Ie).get(e);if(d===void 0)d=S(this,je)===0?S(this,Ve):S(this,ei).length!==0?S(this,ei).pop():S(this,je)===S(this,Xt)?j(this,Z,Ko).call(this,!1):S(this,je),S(this,_e)[d]=e,S(this,ne)[d]=i,S(this,Ie).set(e,d),S(this,ot)[S(this,Ve)]=d,S(this,$t)[d]=S(this,Ve),U(this,Ve,d),mo(this,je)._++,S(this,fr).call(this,d,f,u),u&&(u.set="add"),h=!1,S(this,wn)&&!c&&((p=S(this,Sn))==null||p.call(this,i,e,"add"));else{j(this,Z,Kr).call(this,d);let Q=S(this,ne)[d];if(i!==Q){if(!l)if(j(this,Z,we).call(this,Q)){Q!==r&&Q.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:P}=Q;P!==void 0&&P!==i&&(S(this,ni)&&((m=S(this,Ut))==null||m.call(this,P,e,"set")),S(this,lt)&&((O=S(this,qe))==null||O.push([P,e,"set"])))}else S(this,ni)&&((g=S(this,Ut))==null||g.call(this,Q,e,"set")),S(this,lt)&&((b=S(this,qe))==null||b.push([Q,e,"set"]));if(S(this,Qn).call(this,d),S(this,fr).call(this,d,f,u),S(this,ne)[d]=i,!c){let P=Q&&j(this,Z,we).call(this,Q)?Q.__staleWhileFetching:Q,_=P===void 0?"add":i!==P?"replace":"update";u&&(u.set=_,P!==void 0&&(u.oldValue=P)),S(this,wn)&&((y=this.onInsert)==null||y.call(this,i,e,_))}}else c||(u&&(u.set="update"),S(this,wn)&&((w=this.onInsert)==null||w.call(this,i,e,"update")))}if(s!==0&&!S(this,Qt)&&j(this,Z,xu).call(this),S(this,Qt)&&(h||S(this,Ys).call(this,d,s,o),u&&S(this,Ai).call(this,u,d)),!l&&S(this,lt)&&S(this,qe)){let Q=S(this,qe),P;for(;P=Q==null?void 0:Q.shift();)(v=S(this,Ht))==null||v.call(this,...P)}return this},Ko=function(e){var l,a,u;let i=S(this,it),n=S(this,_e)[i],r=S(this,ne)[i],s=j(this,Z,we).call(this,r);s&&r.__abortController.abort(new Error("evicted"));let o=s?r.__staleWhileFetching:r;return(S(this,ni)||S(this,lt))&&o!==void 0&&(S(this,ni)&&((l=S(this,Ut))==null||l.call(this,o,n,"evict")),S(this,lt)&&((a=S(this,qe))==null||a.push([o,n,"evict"]))),S(this,Qn).call(this,i),(u=S(this,_t))!=null&&u[i]&&(clearTimeout(S(this,_t)[i]),S(this,_t)[i]=void 0),e&&(S(this,_e)[i]=void 0,S(this,ne)[i]=void 0,S(this,ei).push(i)),S(this,je)===1?(U(this,it,U(this,Ve,0)),S(this,ei).length=0):U(this,it,S(this,ot)[i]),S(this,Ie).delete(n),mo(this,je)._--,i},Xm=function(e,i={}){let{updateAgeOnHas:n=this.updateAgeOnHas,status:r}=i,s=S(this,Ie).get(e);if(s!==void 0){let o=S(this,ne)[s];if(j(this,Z,we).call(this,o)&&o.__staleWhileFetching===void 0)return!1;if(S(this,Pt).call(this,s))r&&(r.has="stale",S(this,Ai).call(this,r,s));else return n&&S(this,$n).call(this,s),r&&(r.has="hit",S(this,Ai).call(this,r,s)),!0}else r&&(r.has="miss");return!1},zm=function(e,i){let{status:n,allowStale:r=this.allowStale}=i,s=S(this,Ie).get(e);if(s===void 0||!r&&S(this,Pt).call(this,s)){n&&(n.peek=s===void 0?"miss":"stale");return}let o=S(this,ne)[s],l=j(this,Z,we).call(this,o)?o.__staleWhileFetching:o;return n&&(l!==void 0?(n.peek="hit",n.value=l):n.peek="miss"),l},Jo=function(e,i,n,r){let s=i===void 0?void 0:S(this,ne)[i];if(j(this,Z,we).call(this,s))return s;let o=new AbortController,{signal:l}=n;l==null||l.addEventListener("abort",()=>o.abort(l.reason),{signal:o.signal});let a={signal:o.signal,options:n,context:r},u=(m,O=!1)=>{let{aborted:g}=o.signal,b=n.ignoreFetchAbort&&m!==void 0,y=n.ignoreFetchAbort||!!(n.allowStaleOnFetchAbort&&m!==void 0);if(n.status&&(g&&!O?(n.status.fetchAborted=!0,n.status.fetchError=o.signal.reason,b&&(n.status.fetchAbortIgnored=!0)):n.status.fetchResolved=!0),g&&!b&&!O)return h(o.signal.reason,y);let w=d,v=S(this,ne)[i];return(v===d||v===void 0&&b&&O)&&(m===void 0?w.__staleWhileFetching!==void 0?S(this,ne)[i]=w.__staleWhileFetching:j(this,Z,Wi).call(this,e,"fetch"):(n.status&&(n.status.fetchUpdated=!0),j(this,Z,Vn).call(this,e,m,a.options,w))),m},c=m=>(n.status&&(n.status.fetchRejected=!0,n.status.fetchError=m),h(m,!1)),h=(m,O)=>{let{aborted:g}=o.signal,b=g&&n.allowStaleOnFetchAbort,y=b||n.allowStaleOnFetchRejection,w=y||n.noDeleteOnFetchRejection,v=d;if(S(this,ne)[i]===d&&(!w||!O&&v.__staleWhileFetching===void 0?j(this,Z,Wi).call(this,e,"fetch"):b||(S(this,ne)[i]=v.__staleWhileFetching)),y)return n.status&&v.__staleWhileFetching!==void 0&&(n.status.returnedStale=!0),v.__staleWhileFetching;if(v.__returned===v)throw m},f=(m,O)=>{var b;let g=(b=S(this,ur))==null?void 0:b.call(this,e,s,a);o.signal.addEventListener("abort",()=>{(!n.ignoreFetchAbort||n.allowStaleOnFetchAbort)&&(m(void 0),n.allowStaleOnFetchAbort&&(m=y=>u(y,!0)))}),g&&g instanceof Promise?g.then(y=>m(y===void 0?void 0:y),O):g!==void 0&&m(g)};n.status&&(n.status.fetchDispatched=!0);let d=new Promise(f).then(u,c),p=Object.assign(d,{__abortController:o,__staleWhileFetching:s,__returned:void 0});return i===void 0?(j(this,Z,Vn).call(this,e,p,{...a.options,status:void 0}),i=S(this,Ie).get(e)):S(this,ne)[i]=p,p},we=function(e){if(!S(this,hr))return!1;let i=e;return!!i&&i instanceof Promise&&i.hasOwnProperty("__staleWhileFetching")&&i.__abortController instanceof AbortController},Su=async function(e,i={}){let{allowStale:n=this.allowStale,updateAgeOnGet:r=this.updateAgeOnGet,noDeleteOnStaleGet:s=this.noDeleteOnStaleGet,ttl:o=this.ttl,noDisposeOnSet:l=this.noDisposeOnSet,size:a=0,sizeCalculation:u=this.sizeCalculation,noUpdateTTL:c=this.noUpdateTTL,noDeleteOnFetchRejection:h=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:f=this.allowStaleOnFetchRejection,ignoreFetchAbort:d=this.ignoreFetchAbort,allowStaleOnFetchAbort:p=this.allowStaleOnFetchAbort,context:m,forceRefresh:O=!1,status:g,signal:b}=i;if(g&&(g.op="fetch",g.key=e,O&&(g.forceRefresh=!0),g.cache=this),!S(this,hr))return g&&(g.fetch="get"),j(this,Z,Hr).call(this,e,{allowStale:n,updateAgeOnGet:r,noDeleteOnStaleGet:s,status:g});let y={allowStale:n,updateAgeOnGet:r,noDeleteOnStaleGet:s,ttl:o,noDisposeOnSet:l,size:a,sizeCalculation:u,noUpdateTTL:c,noDeleteOnFetchRejection:h,allowStaleOnFetchRejection:f,allowStaleOnFetchAbort:p,ignoreFetchAbort:d,status:g,signal:b},w=S(this,Ie).get(e);if(w===void 0){g&&(g.fetch="miss");let v=j(this,Z,Jo).call(this,e,w,y,m);return v.__returned=v}else{let v=S(this,ne)[w];if(j(this,Z,we).call(this,v)){let R=n&&v.__staleWhileFetching!==void 0;return g&&(g.fetch="inflight",R&&(g.returnedStale=!0)),R?v.__staleWhileFetching:v.__returned=v}let Q=S(this,Pt).call(this,w);if(!O&&!Q)return g&&(g.fetch="hit"),j(this,Z,Kr).call(this,w),r&&S(this,$n).call(this,w),g&&S(this,Ai).call(this,g,w),v;let P=j(this,Z,Jo).call(this,e,w,y,m),_=P.__staleWhileFetching!==void 0&&n;return g&&(g.fetch=Q?"stale":"refresh",_&&Q&&(g.returnedStale=!0)),_?P.__staleWhileFetching:P.__returned=P}},jm=async function(e,i={}){let n=await j(this,Z,Su).call(this,e,i);if(n===void 0)throw new Error("fetch() returned undefined");return n},Fm=function(e,i={}){let n=S(this,cr);if(!n)throw new Error("no memoMethod provided to constructor");let{context:r,status:s,forceRefresh:o,...l}=i;s&&o&&(s.forceRefresh=!0);let a=j(this,Z,Hr).call(this,e,l),u=o||a===void 0;if(s&&(s.memo=u?"miss":"hit",u||(s.value=a)),!u)return a;let c=n(e,a,{options:l,context:r});return s&&(s.value=c),j(this,Z,Vn).call(this,e,c,l),c},Hr=function(e,i={}){let{allowStale:n=this.allowStale,updateAgeOnGet:r=this.updateAgeOnGet,noDeleteOnStaleGet:s=this.noDeleteOnStaleGet,status:o}=i,l=S(this,Ie).get(e);if(l===void 0){o&&(o.get="miss");return}let a=S(this,ne)[l],u=j(this,Z,we).call(this,a);return o&&S(this,Ai).call(this,o,l),S(this,Pt).call(this,l)?u?(o&&(o.get="stale-fetching"),n&&a.__staleWhileFetching!==void 0?(o&&(o.returnedStale=!0),a.__staleWhileFetching):void 0):(s||j(this,Z,Wi).call(this,e,"expire"),o&&(o.get="stale"),n?(o&&(o.returnedStale=!0),a):void 0):(o&&(o.get=u?"fetching":"hit"),j(this,Z,Kr).call(this,l),r&&S(this,$n).call(this,l),u?a.__staleWhileFetching:a)},wu=function(e,i){S(this,$t)[i]=e,S(this,ot)[e]=i},Kr=function(e){e!==S(this,Ve)&&(e===S(this,it)?U(this,it,S(this,ot)[e]):j(this,Z,wu).call(this,S(this,$t)[e],S(this,ot)[e]),j(this,Z,wu).call(this,S(this,Ve),e),U(this,Ve,e))},Wi=function(e,i){var r,s,o,l,a;let n=!1;if(S(this,je)!==0){let u=S(this,Ie).get(e);if(u!==void 0)if((r=S(this,_t))!=null&&r[u]&&(clearTimeout(S(this,_t)[u]),S(this,_t)[u]=void 0),n=!0,S(this,je)===1)j(this,Z,$u).call(this,i);else{S(this,Qn).call(this,u);let c=S(this,ne)[u];if(j(this,Z,we).call(this,c)?c.__abortController.abort(new Error("deleted")):(S(this,ni)||S(this,lt))&&(S(this,ni)&&((s=S(this,Ut))==null||s.call(this,c,e,i)),S(this,lt)&&((o=S(this,qe))==null||o.push([c,e,i]))),S(this,Ie).delete(e),S(this,_e)[u]=void 0,S(this,ne)[u]=void 0,u===S(this,Ve))U(this,Ve,S(this,$t)[u]);else if(u===S(this,it))U(this,it,S(this,ot)[u]);else{let h=S(this,$t)[u];S(this,ot)[h]=S(this,ot)[u];let f=S(this,ot)[u];S(this,$t)[f]=S(this,$t)[u]}mo(this,je)._--,S(this,ei).push(u)}}if(S(this,lt)&&((l=S(this,qe))!=null&&l.length)){let u=S(this,qe),c;for(;c=u==null?void 0:u.shift();)(a=S(this,Ht))==null||a.call(this,...c)}return n},$u=function(e){var i,n,r,s;for(let o of j(this,Z,qi).call(this,{allowStale:!0})){let l=S(this,ne)[o];if(j(this,Z,we).call(this,l))l.__abortController.abort(new Error("deleted"));else{let a=S(this,_e)[o];S(this,ni)&&((i=S(this,Ut))==null||i.call(this,l,a,e)),S(this,lt)&&((n=S(this,qe))==null||n.push([l,a,e]))}}if(S(this,Ie).clear(),S(this,ne).fill(void 0),S(this,_e).fill(void 0),S(this,Qt)&&S(this,ii)){S(this,Qt).fill(0),S(this,ii).fill(0);for(let o of S(this,_t)??[])o!==void 0&&clearTimeout(o);(r=S(this,_t))==null||r.fill(void 0)}if(S(this,ti)&&S(this,ti).fill(0),U(this,it,0),U(this,Ve,0),S(this,ei).length=0,U(this,Jt,0),U(this,je,0),S(this,lt)&&S(this,qe)){let o=S(this,qe),l;for(;l=o==null?void 0:o.shift();)(s=S(this,Ht))==null||s.call(this,...l)}},dr);const bt={hljs:`${x}-hljs`,hlcss:`${x}-hlCss`,prettier:`${x}-prettier`,prettierMD:`${x}-prettierMD`,cropperjs:`${x}-cropper`,croppercss:`${x}-cropperCss`,screenfull:`${x}-screenfull`,mermaidM:`${x}-mermaid-m`,mermaid:`${x}-mermaid`,katexjs:`${x}-katex`,katexcss:`${x}-katexCss`},ik=(t,e)=>{const i=H("editorId"),{noImgZoomIn:n}=t,r=Kp(()=>{const s=document.querySelectorAll(`#${i}-preview img:not(.not-zoom):not(.medium-zoom-image)`);s.length!==0&&Gv(s,{background:"#00000073"})});Ae(()=>{!n&&t.setting.preview&&r()}),te([e,si(t.setting,"preview")],()=>{!n&&t.setting.preview&&r()})},nk=(t,e,i)=>{const n=H("editorId"),r=H("rootRef"),s=H("usedLanguageText"),o=()=>{r.value.querySelectorAll(`#${n} .${x}-preview .${x}-code`).forEach(u=>{let c=-1;const h=u.querySelector(`.${x}-copy-button`);h&&(h.onclick=f=>{f.preventDefault(),clearTimeout(c);const p=(u.querySelector("input:checked + pre code")||u.querySelector("pre code")).textContent,{text:m,successTips:O,failTips:g}=s.value.copyCode;let b=O;Kv(t.formatCopiedText(p)).catch(()=>{b=g}).finally(()=>{h.dataset.isIcon?h.dataset.tips=b:h.innerHTML=b,c=window.setTimeout(()=>{h.dataset.isIcon?h.dataset.tips=m:h.innerHTML=m},1500)})})})},l=()=>{li(o)},a=u=>{u&&li(o)};te([e,i],l),te(()=>t.setting.preview,a),te(()=>t.setting.htmlPreview,a),Ae(o)},rk=t=>{const e=H("highlight"),i=Tn(Me.editorExtensions.highlight.instance);return Ae(()=>{t.noHighlight||i.value||(zt("link",{...e.value.css,rel:"stylesheet",id:bt.hlcss}),zt("script",{...e.value.js,id:bt.hljs,onload(){i.value=window.hljs}},"hljs"))}),te(()=>e.value.css,()=>{t.noHighlight||Me.editorExtensions.highlight.instance||Vv("link",{...e.value.css,rel:"stylesheet",id:bt.hlcss})}),i},el=new tk({max:1e3,ttl:6e5}),sk=t=>{const e=H("editorId"),i=H("theme"),n=H("rootRef"),{editorExtensions:r,editorExtensionsAttrs:s,mermaidConfig:o}=Me;let l=r.mermaid.instance;const a=Tn(-1),u=()=>{!t.noMermaid&&l&&(l.initialize(o({startOnLoad:!1,theme:i.value==="dark"?"dark":"default"})),a.value=a.value+1)};return te(()=>i.value,()=>{el.clear(),u()}),Ae(()=>{var h,f;if(t.noMermaid||l)return;const d=r.mermaid.js;/\.mjs/.test(d)?(zt("link",{...(h=s.mermaid)==null?void 0:h.js,rel:"modulepreload",href:d,id:bt.mermaidM}),import(d).then(p=>{l=p.default,u()})):zt("script",{...(f=s.mermaid)==null?void 0:f.js,src:d,id:bt.mermaid,onload(){l=window.mermaid,u()}},"mermaid")}),{reRenderRef:a,replaceMermaid:async()=>{if(!t.noMermaid&&l){const h=n.value.querySelectorAll(`div.${x}-mermaid`),f=document.createElement("div"),d=document.body.offsetWidth>1366?document.body.offsetWidth:1366,p=document.body.offsetHeight>768?document.body.offsetHeight:768;f.style.width=d+"px",f.style.height=p+"px",f.style.position="fixed",f.style.zIndex="-10000",f.style.top="-10000";let m=h.length;m>0&&document.body.appendChild(f),await Promise.allSettled(Array.from(h).map(O=>(async b=>{var y;if(b.dataset.closed==="false")return!1;const w=b.innerText;let v=el.get(w);if(!v){const Q=mu();let P={svg:""};try{P=await l.render(Q,w,f),v=await t.sanitizeMermaid(P.svg);const _=document.createElement("p");_.className=`${x}-mermaid`,_.setAttribute("data-processed",""),_.innerHTML=v,(y=_.children[0])==null||y.removeAttribute("height"),el.set(w,_.innerHTML),b.dataset.line!==void 0&&(_.dataset.line=b.dataset.line),b.replaceWith(_)}catch(_){X.emit(e,hn,{name:"mermaid",message:_.message,error:_})}--m===0&&f.remove()}})(O)))}}}},ok=t=>{const e=Tn(Me.editorExtensions.katex.instance);return Ae(()=>{var i,n;if(t.noKatex||e.value)return;const{editorExtensions:r,editorExtensionsAttrs:s}=Me;zt("script",{...(i=s.katex)==null?void 0:i.js,src:r.katex.js,id:bt.katexjs,onload(){e.value=window.katex}},"katex"),zt("link",{...(n=s.katex)==null?void 0:n.css,rel:"stylesheet",href:r.katex.css,id:bt.katexcss})}),e},lk=(t,e)=>{const i=t.renderer.rules.fence.bind(t.renderer.rules);t.renderer.rules.fence=(n,r,s,o,l)=>{var a;const u=n[r],c=u.content.trim();if(u.info==="mermaid"){if(u.attrSet("class",`${x}-mermaid`),u.attrSet("data-mermaid-theme",e.themeRef.value),u.map&&u.level===0){const f=u.map[1]-1,d=(a=o.srcLines[f])==null?void 0:a.trim(),p=d==null?void 0:d.startsWith("```");u.attrSet("data-closed",p),u.attrSet("data-line",String(u.map[0]))}const h=el.get(c);return h?(u.attrSet("data-processed",""),`

    ${h}

    `):`
    ${t.utils.escapeHtml(c)}
    `}return i(n,r,s,o,l)}},gl=(t,e)=>{const i=t.attrs?t.attrs.slice():[];return e.forEach(n=>{const r=t.attrIndex(n[0]);r<0?i.push(n):(i[r]=i[r].slice(),i[r][1]+=` ${n[1]}`)}),i},fd={block:[{open:"$$",close:"$$"},{open:"\\[",close:"\\]"}],inline:[{open:"$$",close:"$$"},{open:"$",close:"$"},{open:"\\[",close:"\\]"},{open:"\\(",close:"\\)"}]},ak=t=>(e,i)=>{const n=t.delimiters;let r,s,o;for(const l of n)if(e.src.startsWith(l.open,e.pos)){const a=e.pos+l.open.length;for(r=a;(r=e.src.indexOf(l.close,r))!==-1;){for(o=r-1;e.src[o]==="\\";)o-=1;if((r-o)%2===1)break;r+=l.close.length}if(r===-1)return i||(e.pending+=l.open),e.pos=a,!0;if(r-a===0)return i||(e.pending+=l.open+l.close),e.pos=a+l.close.length,!0;if(!i){const u=e.src.slice(a,r);s=e.push("math_inline","math",0),s.markup=l.open,s.content=u}return e.pos=r+l.close.length,!0}return!1},uk=t=>(e,i,n,r)=>{const s=t.delimiters;let o,l,a,u,c=!1,h=e.bMarks[i]+e.tShift[i],f=e.eMarks[i];for(const d of s)if(e.src.slice(h,h+d.open.length)===d.open&&e.src.slice(f-d.close.length,f)===d.close){if(h+=d.open.length,o=e.src.slice(h,f),r)return!0;for(o.trim().slice(-d.close.length)===d.close&&(o=o.trim().slice(0,-d.close.length),c=!0),a=i;!c&&(a++,!(a>=n||(h=e.bMarks[a]+e.tShift[a],f=e.eMarks[a],h{const r=(o,l,a,u,c)=>{const h=o[l],f={attrs:gl(h,[["class",`${x}-katex-inline`]])};if(e.value){const d=e.value.renderToString(h.content,Me.katexConfig({throwOnError:!1}));return`${d}`}else return`${h.content}`},s=(o,l,a,u,c)=>{const h=o[l],f={attrs:gl(h,[["class",`${x}-katex-block`]])};if(e.value){const d=e.value.renderToString(h.content,Me.katexConfig({throwOnError:!1,displayMode:!0}));return`

    ${d}

    `}else return`

    ${h.content}

    `};t.inline.ruler.before("escape","math_inline",ak({delimiters:i||fd.inline})),t.block.ruler.after("blockquote","math_block",uk({delimiters:n||fd.block}),{alt:["paragraph","reference","blockquote","list"]}),t.renderer.rules.math_inline=r,t.renderer.rules.math_block=s},hk=(t,e)=>{e=e||{};const i=3,n=e.marker||"!",r=n.charCodeAt(0),s=n.length;let o="",l="";const a=(c,h,f,d,p)=>{const m=c[h];return m.type==="admonition_open"?c[h].attrPush(["class",`${x}-admonition ${x}-admonition-${m.info}`]):m.type==="admonition_title_open"&&c[h].attrPush(["class",`${x}-admonition-title`]),p.renderToken(c,h,f)},u=c=>{const h=c.trim().split(" ",2);l="",o=h[0],h.length>1&&(l=c.substring(o.length+2))};t.block.ruler.before("code","admonition",(c,h,f,d)=>{let p,m,O,g=!1,b=c.bMarks[h]+c.tShift[h],y=c.eMarks[h];if(r!==c.src.charCodeAt(b))return!1;for(p=b+1;p<=y&&n[(p-b)%s]===c.src[p];p++);const w=Math.floor((p-b)/s);if(w!==i)return!1;p-=(p-b)%s;const v=c.src.slice(b,p),Q=c.src.slice(p,y);if(u(Q),d)return!0;for(m=h;m++,!(m>=f||(b=c.bMarks[m]+c.tShift[m],y=c.eMarks[m],b=4)){for(p=b+1;p<=y&&n[(p-b)%s]===c.src[p];p++);if(!(Math.floor((p-b)/s){t.renderer.rules.heading_open=(i,n)=>{var r;const s=i[n],o=((r=i[n+1].children)==null?void 0:r.reduce((a,u)=>a+(["text","code_inline","math_inline"].includes(u.type)&&u.content||""),""))||"",l=s.markup.length;return e.headsRef.value.push({text:o,level:l,line:s.map[0]}),s.map&&s.level===0&&s.attrSet("id",e.mdHeadingId(o,l,e.headsRef.value.length)),t.renderer.renderToken(i,n,e)},t.renderer.rules.heading_close=(i,n,r,s,o)=>o.renderToken(i,n,r)},dk=(t,e)=>{const i=t.renderer.rules.fence,n=t.utils.unescapeAll,r=/\[(\w*)(?::([\w ]*))?\]/,s=/::(open|close)/,o=h=>h.info?n(h.info).trim():"",l=h=>{const f=o(h),[d=null,p=""]=(r.exec(f)||[]).slice(1);return[d,p]},a=h=>{const f=o(h);return f?f.split(/(\s+)/g)[0]:""},u=h=>{const f=h.info.match(s)||[],d=f[1]==="open"||f[1]!=="close"&&e.codeFoldable&&h.content.trim().split(` +`).length{var O;if(h[f].hidden)return"";const g=(O=e.usedLanguageTextRef.value)==null?void 0:O.copyCode.text,b=e.customIconRef.value.copy||g,y=!!e.customIconRef.value.copy,w=`${os("collapse-tips",e.customIconRef.value)}`,[v]=l(h[f]);if(v===null){const{open:ee,tagContainer:re,tagHeader:ue}=u(h[f]),ye=[["class",`${x}-code`]];ee&&ye.push(["open",""]);const Oe={attrs:gl(h[f],ye)};h[f].info=h[f].info.replace(s,"");const le=i(h,f,d,p,m);return` + <${re} ${m.renderAttrs(Oe)}> + <${ue} class="${x}-code-head"> +
    +
    + ${t.utils.escapeHtml(h[f].info.trim())} + ${b} + ${e.extraTools instanceof Function?e.extraTools({lang:h[f].info.trim()}):e.extraTools||""} + ${re==="details"?w:""} +
    + + ${le} + + `}let Q,P,_,R,L="",I="",T="";const{open:M,tagContainer:F,tagHeader:B}=u(h[f]),Y=[["class",`${x}-code`]];M&&Y.push(["open",""]);const J={attrs:gl(h[f],Y)};for(let ee=f;ee0?"":"checked",L+=` +
  • + + +
  • `,I+=` +
    + + ${i(h,ee,d,p,m)} +
    `,T+=` + + ${t.utils.escapeHtml(a(Q))}`}return` + <${F} ${m.renderAttrs(J)}> + <${B} class="${x}-code-head"> +
    +
      ${L}
    +
    +
    + ${T} + ${b} + ${e.extraTools instanceof Function?e.extraTools({lang:h[f].info.trim()}):e.extraTools||""} + ${F==="details"?w:""} +
    + + ${I} + + `};t.renderer.rules.fence=c,t.renderer.rules.code_block=c},dd=(t,e,i)=>{const n=t.attrIndex(e),r=[e,i];n<0?t.attrPush(r):(t.attrs=t.attrs||[],t.attrs[n]=r)},pk=t=>t.type==="inline",mk=t=>t.type==="paragraph_open",Ok=t=>t.type==="list_item_open",gk=t=>t.content.indexOf("[ ] ")===0||t.content.indexOf("[x] ")===0||t.content.indexOf("[X] ")===0,bk=(t,e)=>pk(t[e])&&mk(t[e-1])&&Ok(t[e-2])&&gk(t[e]),vk=(t,e)=>{const i=t[e].level-1;for(let n=e-1;n>=0;n--)if(t[n].level===i)return n;return-1},yk=t=>{const e=new t("html_inline","",0);return e.content="",e},kk=(t,e,i)=>{const n=new i("html_inline","",0);return n.content='",n.attrs=[{for:e}],n},Sk=(t,e,i)=>{const n=new e("html_inline","",0),r=i.enabled?" ":' disabled="" ';return t.content.indexOf("[ ] ")===0?n.content='':(t.content.indexOf("[x] ")===0||t.content.indexOf("[X] ")===0)&&(n.content=''),n},wk=(t,e,i)=>{if(t.children=t.children||[],t.children.unshift(Sk(t,e,i)),t.children[1].content=t.children[1].content.slice(3),t.content=t.content.slice(3),i.label)if(i.labelAfter){t.children.pop();const n="task-item-"+Math.ceil(Math.random()*(1e4*1e3)-1e3);t.children[0].content=t.children[0].content.slice(0,-1)+' id="'+n+'">',t.children.push(kk(t.content,n,e))}else t.children.unshift(yk(e)),t.children.push(xk(e))},$k=(t,e={})=>{t.core.ruler.after("inline","github-task-lists",i=>{const n=i.tokens;for(let r=2;r{t.core.ruler.push("init-line-number",e=>(e.tokens.forEach(i=>{i.map&&(i.attrs||(i.attrs=[]),i.attrs.push(["data-line",i.map[0].toString()]))}),!0))},_k=(t,e)=>{const{editorConfig:i,markdownItConfig:n,markdownItPlugins:r,editorExtensions:s}=Me,o=H("editorId"),l=H("language"),a=H("usedLanguageText"),u=H("showCodeRowNumber"),c=H("theme"),h=H("customIcon"),f=H("rootRef"),d=pe([]);let p=()=>{};const m=rk(t),O=ok(t),{reRenderRef:g,replaceMermaid:b}=sk(t),y=Wt({html:!0,breaks:!0,linkify:!0});n(y,{editorId:o});const w=[{type:"image",plugin:X2,options:{figcaption:!0,classes:"md-zoom"}},{type:"admonition",plugin:hk,options:{}},{type:"taskList",plugin:$k,options:{}},{type:"heading",plugin:fk,options:{mdHeadingId:t.mdHeadingId,headsRef:d}},{type:"code",plugin:dk,options:{editorId:o,usedLanguageTextRef:a,codeFoldable:t.codeFoldable,autoFoldThreshold:t.autoFoldThreshold,customIconRef:h}},{type:"sub",plugin:F2,options:{}},{type:"sup",plugin:q2,options:{}}];t.noKatex||w.push({type:"katex",plugin:ck,options:{katexRef:O}}),t.noMermaid||w.push({type:"mermaid",plugin:lk,options:{themeRef:c}}),r(w,{editorId:o}).forEach(T=>{y.use(T.plugin,T.options)});const v=y.options.highlight;y.set({highlight:(T,M,F)=>{if(v){const J=v(T,M,F);if(J)return J}let B;!t.noHighlight&&m.value?m.value.getLanguage(M)?B=m.value.highlight(T,{language:M,ignoreIllegals:!0}).value:B=m.value.highlightAuto(T).value:B=y.utils.escapeHtml(T);const Y=u?Y2(B.replace(/^\n+|\n+$/g,""),T.replace(/^\n+|\n+$/g,"")):`${B.replace(/^\n+|\n+$/g,"")}`;return`
    ${Y}
    `}}),Qk(y);const Q=pe(`_article-key_${mu()}`),P=pe(t.sanitize(y.render(t.modelValue,{srcLines:t.modelValue.split(` +`)}))),_=()=>{X.emit(o,Go,P.value),t.onHtmlChanged(P.value),t.onGetCatalog(d.value),X.emit(o,ss,d.value),li(()=>{b().then(()=>{var T,M;(T=s.mermaid)!=null&&T.enableZoom&&(p(),p=jf((M=f.value)==null?void 0:M.querySelectorAll(`#${o} p.${x}-mermaid:not([data-closed=false])`),{customIcon:h.value}))})})},R=()=>{d.value=[],P.value=t.sanitize(y.render(t.modelValue,{srcLines:t.modelValue.split(` +`)})),_()},L=He(()=>(t.noKatex||O.value)&&(t.noHighlight||m.value));let I=-1;return te([si(t,"modelValue"),L,g,l],()=>{I=window.setTimeout(()=>{R()},e?0:i.renderDelay)}),te(()=>t.setting.preview,()=>{t.setting.preview&&li(()=>{b().then(()=>{var T,M;(T=s.mermaid)!=null&&T.enableZoom&&(p(),p=jf((M=f.value)==null?void 0:M.querySelectorAll(`#${o} p.${x}-mermaid:not([data-closed=false])`),{customIcon:h.value}))}),X.emit(o,ss,d.value)})}),Ae(_),Ae(()=>{X.on(o,{name:nm,callback(){X.emit(o,ss,d.value)}}),X.on(o,{name:_c,callback:()=>{Q.value=`_article-key_${mu()}`,R()}})}),Mn(()=>{p(),clearTimeout(I)}),{html:P,key:Q}},pd={checked:{regexp:/- \[x\]/,value:"- [ ]"},unChecked:{regexp:/- \[\s\]/,value:"- [x]"}},Pk=(t,e)=>{const i=H("editorId"),n=H("rootRef");let r=()=>{};const s=()=>{if(!n.value)return!1;const o=n.value.querySelectorAll(".task-list-item.enabled"),l=a=>{var u;a.preventDefault();const c=a.target.checked?"unChecked":"checked",h=(u=a.target.parentElement)==null?void 0:u.dataset.line;if(!h)return;const f=Number(h),d=t.modelValue.split(` +`),p=d[Number(f)].replace(pd[c].regexp,pd[c].value);t.previewOnly?(d[Number(f)]=p,t.onChange(d.join(` +`))):X.emit(i,sm,f+1,p)};o.forEach(a=>{a.addEventListener("click",l)}),r=()=>{o.forEach(a=>{a.removeEventListener("click",l)})}};Mn(()=>{r()}),te([e],()=>{r(),li(s)},{immediate:!0})},Ck=(t,e,i)=>{const n=()=>{li(()=>{var s;(s=t.onRemount)==null||s.call(t)})},r=s=>{s&&n()};te([e,i],n),te(()=>t.setting.preview,r),te(()=>t.setting.htmlPreview,r),Ae(n)},Bm={modelValue:{type:String,default:""},onChange:{type:Function,default:()=>{}},setting:{type:Object,default:()=>({preview:!0})},onHtmlChanged:{type:Function,default:()=>{}},onGetCatalog:{type:Function,default:()=>{}},mdHeadingId:{type:Function,default:()=>""},noMermaid:{type:Boolean,default:!1},sanitize:{type:Function,default:t=>t},noKatex:{type:Boolean,default:!1},formatCopiedText:{type:Function,default:t=>t},noHighlight:{type:Boolean,default:!1},previewOnly:{type:Boolean,default:!1},noImgZoomIn:{type:Boolean},sanitizeMermaid:{type:Function},codeFoldable:{type:Boolean},autoFoldThreshold:{type:Number},onRemount:{type:Function}},Tk={...Bm,updateModelValue:{type:Function,default:()=>{}},placeholder:{type:String,default:""},scrollAuto:{type:Boolean},autofocus:{type:Boolean},disabled:{type:Boolean},readonly:{type:Boolean},maxlength:{type:Number},autoDetectCode:{type:Boolean},onBlur:{type:Function,default:()=>{}},onFocus:{type:Function,default:()=>{}},noPrettier:{type:Boolean},completions:{type:Array},catalogVisible:{type:Boolean},theme:{type:String,default:"light"},onInput:{type:Function},onDrop:{type:Function,default:()=>{}},inputBoxWidth:{type:String},oninputBoxWidthChange:{type:Function},transformImgUrl:{type:Function,default:t=>t},catalogLayout:{type:String},catalogMaxDepth:{type:Number}},Ak=t=>{const i=new DOMParser().parseFromString(t,"text/html");return Array.from(i.body.childNodes)},Ek=(t,e)=>{const i=[],n=[];if(t.forEach((r,s)=>{const o=e[s];if(!o){i.push({index:s,newNode:r});return}(r.nodeType!==o.nodeType||r.textContent!==o.textContent||r.nodeType===1&&r.outerHTML!==o.outerHTML)&&i.push({index:s,newNode:r})}),e.length>t.length)for(let r=t.length;r{r.value&&(a.forEach(u=>{u.remove()}),l.forEach(({index:u,newNode:c})=>{var h,f,d;const p=(h=r.value)==null?void 0:h.childNodes[u];p?(d=r.value)==null||d.replaceChild(c.cloneNode(!0),p):(f=r.value)==null||f.appendChild(c.cloneNode(!0))}))};return te(()=>t.html,l=>{var a;const u=Ak(l),c=Array.from(((a=r.value)==null?void 0:a.childNodes)||[]),{updates:h,deletes:f}=Ek(u,c);o(h,f)}),()=>$("div",{id:`${e}-preview`,class:[`${x}-preview`,`${i==null?void 0:i.value}-theme`,n&&`${x}-scrn`],innerHTML:s,ref:r},null)}}),Vm=Te({name:"ContentPreview",props:Bm,setup(t){const e=H("editorId"),{html:i,key:n}=_k(t,t.previewOnly);return nk(t,i,n),ik(t,i),Pk(t,i),Ck(t,i,n),()=>$(Gs,null,[t.setting.preview&&$("div",{id:`${e}-preview-wrapper`,class:`${x}-preview-wrapper`,key:"content-preview-wrapper"},[$(Rk,{key:n.value,html:i.value},null)]),!t.previewOnly&&t.setting.htmlPreview&&$("div",{id:`${e}-html-wrapper`,class:`${x}-preview-wrapper`,key:"html-preview-wrapper"},[$("div",{class:`${x}-html`},[i.value])])])}}),Dk=(t,e,i)=>{const{editorId:n}=i,r=ct({buildFinished:!1,html:""});te(()=>t.modelValue,()=>{r.buildFinished=!1}),Ae(()=>{X.on(n,{name:Go,callback(s){r.buildFinished=!0,r.html=s}}),X.on(n,{name:Ul,callback(){const s=new Promise(o=>{if(r.buildFinished)o(r.html);else{const l=a=>{o(a),X.remove(n,Go,l)};X.on(n,{name:Go,callback:l})}});t.onSave?t.onSave(t.modelValue,s):e.emit("onSave",t.modelValue,s)}})})},qm=(t,e)=>{const i=Me.editorExtensions.highlight,n=Me.editorExtensionsAttrs.highlight,r=jk(t);Ct("editorId",r),Ct("rootRef",e),Ct("theme",He(()=>t.theme)),Ct("language",He(()=>t.language)),Ct("highlight",He(()=>{const{js:o}=i,l={...gu,...i.css},{js:a,css:u={}}=n||{},c=t.codeStyleReverse&&t.codeStyleReverseList.includes(t.previewTheme)?"dark":t.theme,h=l[t.codeTheme]?l[t.codeTheme][c]:gu.atom[c],f=l[t.codeTheme]&&u[t.codeTheme]?u[t.codeTheme][c]:u.atom?u.atom[c]:{};return{js:{src:o,...a},css:{href:h,...f}}})),Ct("showCodeRowNumber",t.showCodeRowNumber);const s=He(()=>{const o={...dl,...Me.editorConfig.languageUserDefined};return Gl(Ur(dl["en-US"]),o[t.language]||{})});return Ct("usedLanguageText",s),Ct("previewTheme",He(()=>t.previewTheme)),Ct("customIcon",He(()=>t.customIcon)),{editorId:r}},Lk=(t,e)=>(Ct("tabWidth",t.tabWidth),Ct("disabled",He(()=>t.disabled)),qm(t,e)),Mk=t=>{const{noPrettier:e,noUploadImg:i}=t,{editorExtensions:n,editorExtensionsAttrs:r}=Me,s=e||n.prettier.prettierInstance,o=e||n.prettier.parserMarkdownInstance,l=i||n.cropper.instance;Ae(()=>{if(!l){const{js:a={},css:u={}}=r.cropper||{};zt("link",{...u,rel:"stylesheet",href:n.cropper.css,id:bt.croppercss}),zt("script",{...a,src:n.cropper.js,id:bt.cropperjs})}if(!s){const{standaloneJs:a={}}=r.prettier||{};zt("script",{...a,src:n.prettier.standaloneJs,id:bt.prettier})}if(!o){const{parserMarkdownJs:a={}}=r.prettier||{};zt("script",{...a,src:n.prettier.parserMarkdownJs,id:bt.prettierMD})}})},Zk=(t,e,i)=>{const{editorId:n}=i;Ae(()=>{X.on(n,{name:hn,callback:r=>{var s;(s=t.onError)==null||s.call(t,r),e.emit("onError",r)}})})},Ik=(t,e,i)=>{const{editorId:n}=i,r=ct({pageFullscreen:t.pageFullscreen,fullscreen:!1,preview:t.preview,htmlPreview:t.preview?!1:t.htmlPreview,previewOnly:!1}),s=ct({...r}),o=(u,c)=>{const h=c===void 0?!r[u]:c;switch(u){case"preview":{r.htmlPreview=!1,r.previewOnly=!1;break}case"htmlPreview":{r.preview=!1,r.previewOnly=!1;break}case"previewOnly":{h?!r.preview&&!r.htmlPreview&&(r.preview=!0):(s.preview||(r.preview=!1),s.htmlPreview||(r.htmlPreview=!1));break}}s[u]=h,r[u]=h};let l="";const a=()=>{r.pageFullscreen||r.fullscreen?document.body.style.overflow="hidden":document.body.style.overflow=l};return te(()=>[r.pageFullscreen,r.fullscreen],a),Ae(()=>{X.on(n,{name:Hl,callback(u,c){const h=f=>{X.emit(n,xe,"image",{desc:"",urls:f}),c==null||c()};t.onUploadImg?t.onUploadImg(u,h):e.emit("onUploadImg",u,h)}}),l=document.body.style.overflow,a()}),[r,o]},Xk=(t,e)=>{const{editorId:i}=e,n=pe(!1);return Ae(()=>{X.on(i,{name:Qc,callback:r=>{r===void 0?n.value=!n.value:n.value=r}})}),n},zk=(t,e,i)=>{const{editorId:n,catalogVisible:r,setting:s,updateSetting:o,codeRef:l}=i;te(()=>s.pageFullscreen,u=>{X.emit(n,Df,u)}),te(()=>s.fullscreen,u=>{X.emit(n,Lf,u)}),te(()=>s.preview,u=>{X.emit(n,Mf,u)}),te(()=>s.previewOnly,u=>{X.emit(n,Zf,u)}),te(()=>s.htmlPreview,u=>{X.emit(n,If,u)}),te(r,u=>{X.emit(n,Xf,u)});const a={on(u,c){switch(u){case"pageFullscreen":{X.on(n,{name:Df,callback(h){c(h)}});break}case"fullscreen":{X.on(n,{name:Lf,callback(h){c(h)}});break}case"preview":{X.on(n,{name:Mf,callback(h){c(h)}});break}case"previewOnly":{X.on(n,{name:Zf,callback(h){c(h)}});break}case"htmlPreview":{X.on(n,{name:If,callback(h){c(h)}});break}case"catalog":{X.on(n,{name:Xf,callback(h){c(h)}});break}}},togglePageFullscreen(u){o("pageFullscreen",u)},toggleFullscreen(u){X.emit(n,em,u)},togglePreview(u){o("preview",u)},togglePreviewOnly(u){o("previewOnly",u)},toggleHtmlPreview(u){o("htmlPreview",u)},toggleCatalog(u){X.emit(n,Qc,u)},triggerSave(){X.emit(n,Ul)},insert(u){X.emit(n,xe,"universal",{generate:u})},focus(u){var c;(c=l.value)==null||c.focus(u)},rerender(){X.emit(n,_c)},getSelectedText(){var u;return(u=l.value)==null?void 0:u.getSelectedText()},resetHistory(){var u;(u=l.value)==null||u.resetHistory()},domEventHandlers(u){X.emit(n,rm,u)},execCommand(u){X.emit(n,xe,u)},getEditorView(){var u;return(u=l.value)==null?void 0:u.getEditorView()}};e.expose(a)},jk=t=>{const e=yv();return t.id||t.editorId||`${x}-${e}`},Fk=t=>t,Wm={modelValue:{type:String,default:""},onChange:{type:Function,default:void 0},theme:{type:String,default:"light"},class:{type:String,default:""},language:{type:String,default:"zh-CN"},onHtmlChanged:{type:Function,default:void 0},onGetCatalog:{type:Function,default:void 0},editorId:{type:String,default:void 0},id:{type:String,default:void 0},showCodeRowNumber:{type:Boolean,default:!0},previewTheme:{type:String,default:"default"},style:{type:Object,default:()=>({})},mdHeadingId:{type:Function,default:Fk},sanitize:{type:Function,default:t=>t},noMermaid:{type:Boolean,default:!1},noKatex:{type:Boolean,default:!1},codeTheme:{type:String,default:"atom"},formatCopiedText:{type:Function,default:t=>t},codeStyleReverse:{type:Boolean,default:!0},codeStyleReverseList:{type:Array,default:["default","mk-cute"]},noHighlight:{type:Boolean,default:!1},noImgZoomIn:{type:Boolean,default:!1},customIcon:{type:Object,default:{}},sanitizeMermaid:{type:Function,default:t=>Promise.resolve(t)},codeFoldable:{type:Boolean,default:!0},autoFoldThreshold:{type:Number,default:30},onRemount:{type:Function,default:void 0}},Bk={...Wm,onSave:{type:Function,default:void 0},onUploadImg:{type:Function,default:void 0},pageFullscreen:{type:Boolean,default:!1},preview:{type:Boolean,default:!0},htmlPreview:{type:Boolean,default:!1},toolbars:{type:Array,default:wc},toolbarsExclude:{type:Array,default:[]},noPrettier:{type:Boolean,default:!1},tabWidth:{type:Number,default:2},tableShape:{type:Array,default:[6,4]},placeholder:{type:String,default:""},defToolbars:{type:[String,Object],default:void 0},onError:{type:Function,default:void 0},footers:{type:Array,default:$c},scrollAuto:{type:Boolean,default:!0},defFooters:{type:[String,Object],default:void 0},noUploadImg:{type:Boolean,default:!1},autoFocus:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},readOnly:{type:Boolean,default:!1},maxLength:{type:Number,default:void 0},autoDetectCode:{type:Boolean,default:!1},onBlur:{type:Function,default:void 0},onFocus:{type:Function,default:void 0},completions:{type:Array,default:void 0},showToolbarName:{type:Boolean,default:!1},onInput:{type:Function,default:void 0},onDrop:{type:Function,default:void 0},inputBoxWidth:{type:String,default:"50%"},oninputBoxWidthChange:{type:Function,default:void 0},transformImgUrl:{type:Function,default:t=>t},catalogLayout:{type:String,default:"fixed"},catalogMaxDepth:{type:Number,default:void 0},insertLinkDirect:{type:Boolean,default:!1}},Ym=["onHtmlChanged","onGetCatalog","onChange","onRemount","update:modelValue"],Vk=[...Ym,"onSave","onUploadImg","onError","onBlur","onFocus","onInput","onDrop","oninputBoxWidthChange"],qk=(t,e,i)=>{const{editorId:n}=i,r={rerender(){X.emit(n,_c)}};e.expose(r)},ls=Te({name:"MdPreview",props:Wm,emits:Ym,setup(t,e){const{noKatex:i,noMermaid:n,noHighlight:r}=t,s=pe(),{editorId:o}=qm(t,s);return qk(t,e,{editorId:o}),Mn(()=>{X.clear(o)}),()=>$("div",{id:o,class:[x,t.class,t.theme==="dark"&&`${x}-dark`,`${x}-previewOnly`],style:t.style,ref:s},[$(Vm,{modelValue:t.modelValue,onChange:l=>{var a;(a=t.onChange)==null||a.call(t,l),e.emit("onChange",l),e.emit("update:modelValue",l)},onHtmlChanged:l=>{var a;(a=t.onHtmlChanged)==null||a.call(t,l),e.emit("onHtmlChanged",l)},onGetCatalog:l=>{var a;(a=t.onGetCatalog)==null||a.call(t,l),e.emit("onGetCatalog",l)},mdHeadingId:t.mdHeadingId,noMermaid:n,sanitize:t.sanitize,noKatex:i,formatCopiedText:t.formatCopiedText,noHighlight:r,noImgZoomIn:t.noImgZoomIn,previewOnly:!0,sanitizeMermaid:t.sanitizeMermaid,codeFoldable:t.codeFoldable,autoFoldThreshold:t.autoFoldThreshold,onRemount:()=>{var l;(l=t.onRemount)==null||l.call(t),e.emit("onRemount")}},null)])}});ls.install=t=>(t.component(ls.name,ls),t);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Wk=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */var yo={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Yk=({size:t,strokeWidth:e=2,absoluteStrokeWidth:i,color:n,iconNode:r,name:s,class:o,...l},{slots:a})=>xs("svg",{...yo,width:t||yo.width,height:t||yo.height,stroke:n||yo.stroke,"stroke-width":i?Number(e)*24/Number(t):e,class:["lucide",`lucide-${Wk(s??"icon")}`],...l},[...r.map(u=>xs(...u)),...a.default?[a.default()]:[]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const me=(t,e)=>(i,{slots:n})=>xs(Yk,{...i,iconNode:e,name:t},n);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Nk=me("BoldIcon",[["path",{d:"M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8",key:"mg9rjx"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Gk=me("ChartAreaIcon",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M7 11.207a.5.5 0 0 1 .146-.353l2-2a.5.5 0 0 1 .708 0l3.292 3.292a.5.5 0 0 0 .708 0l4.292-4.292a.5.5 0 0 1 .854.353V16a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1z",key:"q0gr47"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Uk=me("CodeXmlIcon",[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Hk=me("CodeIcon",[["polyline",{points:"16 18 22 12 16 6",key:"z7tu5w"}],["polyline",{points:"8 6 2 12 8 18",key:"1eg1df"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Kk=me("ExpandIcon",[["path",{d:"m21 21-6-6m6 6v-4.8m0 4.8h-4.8",key:"1c15vz"}],["path",{d:"M3 16.2V21m0 0h4.8M3 21l6-6",key:"1fsnz2"}],["path",{d:"M21 7.8V3m0 0h-4.8M21 3l-6 6",key:"hawz9i"}],["path",{d:"M3 7.8V3m0 0h4.8M3 3l6 6",key:"u9ee12"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Jk=me("EyeIcon",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const eS=me("ForwardIcon",[["polyline",{points:"15 17 20 12 15 7",key:"1w3sku"}],["path",{d:"M4 18v-2a4 4 0 0 1 4-4h12",key:"jmiej9"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const tS=me("HeadingIcon",[["path",{d:"M6 12h12",key:"8npq4p"}],["path",{d:"M6 20V4",key:"1w1bmo"}],["path",{d:"M18 20V4",key:"o2hl4u"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const iS=me("ImageIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const nS=me("ItalicIcon",[["line",{x1:"19",x2:"10",y1:"4",y2:"4",key:"15jd3p"}],["line",{x1:"14",x2:"5",y1:"20",y2:"20",key:"bu0au3"}],["line",{x1:"15",x2:"9",y1:"4",y2:"20",key:"uljnxc"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const rS=me("LinkIcon",[["path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71",key:"1cjeqo"}],["path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71",key:"19qd67"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const sS=me("ListOrderedIcon",[["path",{d:"M10 12h11",key:"6m4ad9"}],["path",{d:"M10 18h11",key:"11hvi2"}],["path",{d:"M10 6h11",key:"c7qv1k"}],["path",{d:"M4 10h2",key:"16xx2s"}],["path",{d:"M4 6h1v4",key:"cnovpq"}],["path",{d:"M6 18H4c0-1 2-2 2-3s-1-1.5-2-1",key:"m9a95d"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const oS=me("ListTodoIcon",[["rect",{x:"3",y:"5",width:"6",height:"6",rx:"1",key:"1defrl"}],["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["path",{d:"M13 6h8",key:"15sg57"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 18h8",key:"oe0vm4"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const lS=me("ListTreeIcon",[["path",{d:"M21 12h-8",key:"1bmf0i"}],["path",{d:"M21 6H8",key:"1pqkrb"}],["path",{d:"M21 18h-8",key:"1tm79t"}],["path",{d:"M3 6v4c0 1.1.9 2 2 2h3",key:"1ywdgy"}],["path",{d:"M3 10v6c0 1.1.9 2 2 2h3",key:"2wc746"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const aS=me("ListIcon",[["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 18h.01",key:"1tta3j"}],["path",{d:"M3 6h.01",key:"1rqtza"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 18h13",key:"1lx6n3"}],["path",{d:"M8 6h13",key:"ik3vkj"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const uS=me("Maximize2Icon",[["polyline",{points:"15 3 21 3 21 9",key:"mznyad"}],["polyline",{points:"9 21 3 21 3 15",key:"1avn1i"}],["line",{x1:"21",x2:"14",y1:"3",y2:"10",key:"ota7mn"}],["line",{x1:"3",x2:"10",y1:"21",y2:"14",key:"1atl0r"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const cS=me("Minimize2Icon",[["polyline",{points:"4 14 10 14 10 20",key:"11kfnr"}],["polyline",{points:"20 10 14 10 14 4",key:"rlmsce"}],["line",{x1:"14",x2:"21",y1:"10",y2:"3",key:"o5lafz"}],["line",{x1:"3",x2:"10",y1:"21",y2:"14",key:"1atl0r"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const hS=me("QuoteIcon",[["path",{d:"M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z",key:"rib7q0"}],["path",{d:"M5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z",key:"1ymkrd"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const fS=me("ReplyIcon",[["polyline",{points:"9 17 4 12 9 7",key:"hvgpf2"}],["path",{d:"M20 18v-2a4 4 0 0 0-4-4H4",key:"5vmcpk"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const dS=me("SaveIcon",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const pS=me("ShrinkIcon",[["path",{d:"m15 15 6 6m-6-6v4.8m0-4.8h4.8",key:"17vawe"}],["path",{d:"M9 19.8V15m0 0H4.2M9 15l-6 6",key:"chjx8e"}],["path",{d:"M15 4.2V9m0 0h4.8M15 9l6-6",key:"lav6yq"}],["path",{d:"M9 4.2V9m0 0H4.2M9 9 3 3",key:"1pxi2q"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const md=me("SquareCodeIcon",[["path",{d:"M10 9.5 8 12l2 2.5",key:"3mjy60"}],["path",{d:"m14 9.5 2 2.5-2 2.5",key:"1bir2l"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const mS=me("SquareSigmaIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M16 8.9V7H8l4 5-4 5h8v-1.9",key:"9nih0i"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const OS=me("StrikethroughIcon",[["path",{d:"M16 4H9a3 3 0 0 0-2.83 4",key:"43sutm"}],["path",{d:"M14 12a4 4 0 0 1 0 8H6",key:"nlfj13"}],["line",{x1:"4",x2:"20",y1:"12",y2:"12",key:"1e0a9i"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const gS=me("SubscriptIcon",[["path",{d:"m4 5 8 8",key:"1eunvl"}],["path",{d:"m12 5-8 8",key:"1ah0jp"}],["path",{d:"M20 19h-4c0-1.5.44-2 1.5-2.5S20 15.33 20 14c0-.47-.17-.93-.48-1.29a2.11 2.11 0 0 0-2.62-.44c-.42.24-.74.62-.9 1.07",key:"e8ta8j"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const bS=me("SuperscriptIcon",[["path",{d:"m4 19 8-8",key:"hr47gm"}],["path",{d:"m12 19-8-8",key:"1dhhmo"}],["path",{d:"M20 12h-4c0-1.5.442-2 1.5-2.5S20 8.334 20 7.002c0-.472-.17-.93-.484-1.29a2.105 2.105 0 0 0-2.617-.436c-.42.239-.738.614-.899 1.06",key:"1dfcux"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const vS=me("TableIcon",[["path",{d:"M12 3v18",key:"108xh3"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M3 15h18",key:"5xshup"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const yS=me("Trash2Icon",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const xS=me("UnderlineIcon",[["path",{d:"M6 4v6a6 6 0 0 0 12 0V4",key:"9kb039"}],["line",{x1:"4",x2:"20",y1:"20",y2:"20",key:"nun2al"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const kS=me("UploadIcon",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"17 8 12 3 7 8",key:"t8dd8p"}],["line",{x1:"12",x2:"12",y1:"3",y2:"15",key:"widbto"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const SS=me("ViewIcon",[["path",{d:"M21 17v2a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-2",key:"mrq65r"}],["path",{d:"M21 7V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2",key:"be3xqs"}],["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["path",{d:"M18.944 12.33a1 1 0 0 0 0-.66 7.5 7.5 0 0 0-13.888 0 1 1 0 0 0 0 .66 7.5 7.5 0 0 0 13.888 0",key:"11ak4c"}]]);/** + * @license lucide-vue-next v0.453.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const wS=me("XIcon",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),$S=()=>$("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"lucide lucide-github-icon"},[$("path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"},null),$("path",{d:"M9 18c-4.51 2-5-2-7-2"},null)]),QS={bold:Nk,underline:xS,italic:nS,"strike-through":OS,title:tS,sub:gS,sup:bS,quote:hS,"unordered-list":aS,"ordered-list":sS,task:oS,"code-row":Hk,code:md,link:rS,image:iS,table:vS,revoke:fS,next:eS,save:dS,prettier:md,minimize:cS,maximize:uS,"fullscreen-exit":pS,fullscreen:Kk,"preview-only":SS,preview:Jk,"preview-html":Uk,catalog:lS,github:$S,mermaid:Gk,formula:mS,close:wS,delete:yS,upload:kS},_S=Te({name:`${x}-icon-set`,props:{name:{type:String,default:""}},setup(t){return()=>xs(QS[t.name],{class:`${x}-icon`})}}),ce=Te({name:`${x}-icon`,props:{name:{type:String,default:""}},setup(t){const e=H("customIcon");return()=>{const i=e.value[t.name];return typeof i=="object"?typeof i.component=="object"?xs(i.component,i.props):$("span",{innerHTML:i.component},null):$(_S,{name:t.name},null)}}}),PS={title:{type:[String,Object],default:""},visible:{type:Boolean,default:!1},width:{type:String,default:"auto"},height:{type:String,default:"auto"},onClose:{type:Function},showAdjust:{type:Boolean,default:!1},isFullscreen:{type:Boolean,default:!1},onAdjust:{type:Function,default:()=>{}},class:{type:String,default:void 0},style:{type:[Object,String],default:()=>({})},showMask:{type:Boolean,default:!0}},_n=Te({name:"MdModal",props:PS,emits:["onClose"],setup(t,e){const i=H("theme"),n=H("rootRef"),r=pe(t.visible),s=pe([`${x}-modal`]),o=pe(),l=pe(),a=pe(),u=Tn();let c=()=>{};const h=ct({maskStyle:{zIndex:-1},modalStyle:{zIndex:-1},initPos:{left:"0px",top:"0px"},historyPos:{left:"0px",top:"0px"}}),f=He(()=>t.isFullscreen?{width:"100%",height:"100%"}:{width:t.width,height:t.height});te(()=>t.isFullscreen,m=>{m?c():li(()=>{c=zf(l.value,(O,g)=>{h.initPos.left=O+"px",h.initPos.top=g+"px"})})}),te(()=>t.visible,m=>{m?(h.maskStyle.zIndex=Me.editorConfig.zIndex+cd(),h.modalStyle.zIndex=Me.editorConfig.zIndex+cd(),s.value.push("zoom-in"),r.value=m,li(()=>{const O=o.value.offsetWidth/2,g=o.value.offsetHeight/2,b=document.documentElement.clientWidth/2,y=document.documentElement.clientHeight/2;h.initPos.left=b-O+"px",h.initPos.top=y-g+"px",t.isFullscreen||(c=zf(l.value,(w,v)=>{h.initPos.left=w+"px",h.initPos.top=v+"px"}))}),setTimeout(()=>{s.value=s.value.filter(O=>O!=="zoom-in")},140)):(s.value.push("zoom-out"),c(),setTimeout(()=>{s.value=s.value.filter(O=>O!=="zoom-out"),r.value=m},130))});const d=He(()=>({display:r.value?"block":"none"})),p=He(()=>typeof t.style=="string"?[t.style,d.value].join("; "):t.style instanceof Object?{...d.value,...t.style}:d.value);return Ae(()=>{var m;const O=(m=n.value)==null?void 0:m.getRootNode();a.value=O instanceof Document?document.body:O}),()=>{const m=ht({ctx:e}),O=ht({props:t,ctx:e},"title");return a.value?$(xv,{to:a.value},{default:()=>[$("div",{ref:u,class:`${x}-modal-container`,"data-theme":i.value},[$("div",{class:t.class,style:p.value},[t.showMask&&$("div",{class:`${x}-modal-mask`,style:h.maskStyle,onClick:()=>{var g;(g=t.onClose)==null||g.call(t),e.emit("onClose")}},null),$("div",{class:s.value,style:{...h.modalStyle,...h.initPos,...f.value},ref:o},[$("div",{class:`${x}-modal-header`,ref:l},[O||""]),$("div",{class:`${x}-modal-body`},[m]),$("div",{class:`${x}-modal-func`},[t.showAdjust&&$("div",{class:`${x}-modal-adjust`,onClick:g=>{g.stopPropagation(),t.isFullscreen?h.initPos=h.historyPos:(h.historyPos=h.initPos,h.initPos={left:"0",top:"0"}),t.onAdjust(!t.isFullscreen)}},[$(ce,{name:t.isFullscreen?"minimize":"maximize"},null)]),$("div",{class:`${x}-modal-close`,onClick:g=>{var b;g.stopPropagation(),(b=t.onClose)==null||b.call(t),e.emit("onClose")}},[$(ce,{name:"close"},null)])])])])])]}):""}}});_n.install=t=>(t.component(_n.name,_n),t);const CS=`.${x}-preview > [data-line]`,Nn=(t,e)=>+getComputedStyle(t).getPropertyValue(e).replace("px",""),TS=(t,e)=>{const i=Kp(()=>{t.removeEventListener("scroll",n),t.addEventListener("scroll",n),e.removeEventListener("scroll",n),e.addEventListener("scroll",n)},50),n=r=>{const s=t.clientHeight,o=e.clientHeight,l=t.scrollHeight,a=e.scrollHeight,u=(l-s)/(a-o);r.target===t?(e.removeEventListener("scroll",n),e.scrollTo({top:t.scrollTop/u}),i()):(t.removeEventListener("scroll",n),t.scrollTo({top:e.scrollTop*u}),i())};return[()=>{i().finally(()=>{t.dispatchEvent(new Event("scroll"))})},()=>{t.removeEventListener("scroll",n),e.removeEventListener("scroll",n)}]},AS=(t,e,i)=>{const{view:n}=i,r=Jp(),s=g=>n.lineBlockAt(n.state.doc.line(g+1).from).top,o=g=>n.lineBlockAt(n.state.doc.line(g+1).from).bottom;let l=[],a=[],u=[];const c=()=>{l=[],a=Array.from(e.querySelectorAll(CS)),u=a.map(v=>Number(v.dataset.line));const g=[...u],{lines:b}=n.state.doc;let y=g.shift()||0,w=g.shift()||b;for(let v=0;v{let y=1;for(let w=a.length-1;w-1>=0;w--){const v=a[w],Q=a[w-1];if(v.offsetTop+v.offsetHeight>b&&Q.offsetTop=0;w--){const v=o(l[w].end),Q=s(l[w].start);if(v>g&&Q<=g){y=y{var g,b,y;if(d!==0)return!1;f++;const{scrollDOM:w,contentHeight:v}=n;let Q=Nn(e,"padding-top");const P=n.lineBlockAtHeight(w.scrollTop),{number:_}=n.state.doc.lineAt(P.from),R=l[_-1];if(!R)return!1;let L=1;const I=e.querySelector(`[data-line="${R.start}"]`)||((g=e.firstElementChild)==null?void 0:g.firstElementChild),T=e.querySelector(`[data-line="${R.end+1}"]`)||((b=e.lastElementChild)==null?void 0:b.lastElementChild),M=w.scrollHeight-w.clientHeight,F=e.scrollHeight-e.clientHeight;let B=s(R.start),Y=o(R.end),J=I.offsetTop,ee=T.offsetTop-J;B===0&&(J=0,I===T?(Q=0,Y=v-w.offsetHeight,ee=F):ee=T.offsetTop),L=(w.scrollTop-B)/(Y-B);const re=T==((y=e.lastElementChild)==null?void 0:y.lastElementChild)?T.offsetTop+T.clientHeight:T.offsetTop;if(Y>=M||re>F){const ye=h(M,F);B=s(ye),L=(w.scrollTop-B)/(M-B);const Oe=e.querySelector(`[data-line="${ye}"]`);B>0&&Oe&&(J=Oe.offsetTop),ee=F-J+Nn(e,"padding-top")}const ue=J-Q+ee*L;r(e,ue,()=>{f--})},m=()=>{var g,b,y,w,v,Q;if(f!==0)return;d++;const{scrollDOM:P}=n,_=e.scrollTop,R=e.scrollHeight,L=P.scrollHeight-P.clientHeight,I=e.scrollHeight-e.clientHeight;let T=(g=e.firstElementChild)==null?void 0:g.firstElementChild,M=(b=e.firstElementChild)==null?void 0:b.lastElementChild;if(u.length>0){let Oe=Math.ceil(u[u.length-1]*(_/R)),le=u.findLastIndex(Se=>Se<=Oe);le=le===-1?0:le,Oe=u[le];for(let Se=le;Se>=0&&Se_){if(Se-1>=0){Se--;continue}Oe=-1,le=Se;break}else{if(Se+1L||M.offsetTop+M.offsetHeight>I){const Oe=h(L,I),le=e.querySelector(`[data-line="${Oe}"]`);F=le?le.offsetTop-Nn(le,"margin-top"):F,re=s(Oe),Y=(_-F)/(I-F),ye=L-re}else T===((Q=e.firstElementChild)==null?void 0:Q.firstElementChild)?(T===M&&(B=M.offsetTop+M.offsetHeight+ +getComputedStyle(M).marginBottom.replace("px","")),ye=ue,Y=Math.max(_/B,0)):(Y=Math.max((_-F)/(B-F),0),ye=ue-re);r(t,re+ye*Y,()=>{d--})},O=g=>{var b;const{scrollDOM:y,contentHeight:w}=n,v=y.clientHeight;if(w<=v||e.firstElementChild.clientHeight<=e.clientHeight||n.state.doc.lines<=((b=l[l.length-1])==null?void 0:b.end))return!1;g.target===t?p():m()};return[()=>{c(),t.addEventListener("scroll",O),e.addEventListener("scroll",O),t.dispatchEvent(new Event("scroll"))},()=>{t.removeEventListener("scroll",O),e.removeEventListener("scroll",O)}]},ES={tocItem:{type:Object,default:()=>({})},mdHeadingId:{type:Function,default:()=>{}},onActive:{type:Function,default:()=>{}},onClick:{type:Function,default:()=>{}},scrollElementOffsetTop:{type:Number,default:0}},Nm=Te({props:ES,setup(t){const e=H("scrollElementRef"),i=H("roorNodeRef"),n=pe();return te(()=>t.tocItem.active,r=>{r&&t.onActive(t.tocItem,n.value)}),Ae(()=>{t.tocItem.active&&t.onActive(t.tocItem,n.value)}),()=>{const{tocItem:r,mdHeadingId:s,onClick:o,scrollElementOffsetTop:l}=t;return $("div",{ref:n,class:[`${x}-catalog-link`,r.active&&`${x}-catalog-active`],onClick:a=>{if(a.stopPropagation(),o(a,r),a.defaultPrevented)return;const u=s(r.text,r.level,r.index),c=i.value.getElementById(u),h=e.value;if(c&&h){let f=c.offsetParent,d=c.offsetTop;if(h.contains(f))for(;f&&h!=f;)d+=f==null?void 0:f.offsetTop,f=f==null?void 0:f.offsetParent;const p=c.previousElementSibling;let m=0;p||(m=Nn(c,"margin-top")),h==null||h.scrollTo({top:d-l-m,behavior:"smooth"})}}},[$("span",{title:r.text},[r.text]),r.children&&r.children.length>0&&$("div",{class:`${x}-catalog-wrapper`},[r.children.map(a=>$(Nm,{mdHeadingId:s,key:`${r.text}-link-${a.level}-${a.text}`,tocItem:a,onActive:t.onActive,onClick:o,scrollElementOffsetTop:l},null))])])}}}),RS={editorId:{type:String,default:void 0},class:{type:String,default:""},mdHeadingId:{type:Function,default:t=>t},scrollElement:{type:[String,Object],default:void 0},theme:{type:String,default:"light"},offsetTop:{type:Number,default:20},scrollElementOffsetTop:{type:Number,default:0},onClick:{type:Function,default:void 0},onActive:{type:Function,default:void 0},isScrollElementInShadow:{type:Boolean,default:!1},syncWith:{type:String,default:"preview"},catalogMaxDepth:{type:Number,default:void 0}},Jn=Te({name:"MdCatalog",props:RS,emits:["onClick","onActive"],setup(t,e){const i=t.editorId,n=`#${i}-preview-wrapper`,r=ct({list:[],show:!1,scrollElement:t.scrollElement||n}),s=Tn(),o=pe(),l=pe(),a=pe(),u=pe(),c=Tn(),h=pe({});Ct("scrollElementRef",l),Ct("roorNodeRef",u);const f=He(()=>{const y=[];return r.list.forEach((w,v)=>{if(t.catalogMaxDepth&&w.level>t.catalogMaxDepth)return;const{text:Q,level:P,line:_}=w,R={level:P,text:Q,line:_,index:v+1,active:s.value===w};if(y.length===0)y.push(R);else{let L=y[y.length-1];if(R.level>L.level)for(let I=L.level+1;I<=6;I++){const{children:T}=L;if(!T){L.children=[R];break}if(L=T[T.length-1],R.level<=L.level){T.push(R);break}}else y.push(R)}}),y}),d=()=>{var y;if(r.scrollElement instanceof HTMLElement)return r.scrollElement;let w=document;return(r.scrollElement===n||t.isScrollElementInShadow)&&(w=(y=o.value)==null?void 0:y.getRootNode()),w.querySelector(r.scrollElement)},p=y=>{if(y.length===0)return s.value=void 0,r.list=[],!1;const{activeHead:w}=y.reduce((v,Q,P)=>{var _;let R=0;if(t.syncWith==="preview"){const L=(_=u.value)==null?void 0:_.getElementById(t.mdHeadingId(Q.text,Q.level,P+1));L instanceof HTMLElement&&(R=N2(L,l.value))}else{const L=c.value;if(L){const I=L.lineBlockAt(L.state.doc.line(Q.line+1).from).top,T=L.scrollDOM.scrollTop;R=I-T}}return Rv.minTop?{activeHead:Q,minTop:R}:v},{activeHead:y[0],minTop:Number.MIN_SAFE_INTEGER});s.value=w,r.list=y},m=(y,w)=>{var v;h.value.top=w.offsetTop+Nn(w,"padding-top")+"px",(v=t.onActive)==null||v.call(t,y,w),e.emit("onActive",y,w)},O=()=>{p(r.list)},g=y=>{var w,v,Q;if((w=a.value)==null||w.removeEventListener("scroll",O),t.syncWith==="editor")a.value=(v=c.value)==null?void 0:v.scrollDOM;else{const P=d();l.value=P,a.value=P===document.documentElement?document:P}p(y),(Q=a.value)==null||Q.addEventListener("scroll",O)},b=y=>{c.value=y};return te([()=>t.syncWith,c,()=>t.catalogMaxDepth],()=>{g(r.list)}),Ae(()=>{u.value=o.value.getRootNode(),X.on(i,{name:ss,callback:g}),X.on(i,{name:pl,callback:b}),X.emit(i,nm),X.emit(i,om)}),Mn(()=>{var y;X.remove(i,ss,g),X.remove(i,pl,b),(y=a.value)==null||y.removeEventListener("scroll",O)}),()=>$("div",{class:[`${x}-catalog`,t.theme==="dark"&&`${x}-catalog-dark`,t.class||""],ref:o},[f.value.length>0&&$(Gs,null,[$("div",{class:`${x}-catalog-indicator`,style:h.value},null),$("div",{class:`${x}-catalog-container`},[f.value.map(y=>$(Nm,{mdHeadingId:t.mdHeadingId,tocItem:y,key:`link-${y.level}-${y.text}`,onActive:m,onClick:(w,v)=>{var Q;(Q=t.onClick)==null||Q.call(t,w,v),e.emit("onClick",w,v)},scrollElementOffsetTop:t.scrollElementOffsetTop},null))])])])}});Jn.install=t=>(t.component(Jn.name,Jn),t);let Qu=[],Gm=[];(()=>{let t="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(e=>e?parseInt(e,36):1);for(let e=0,i=0;e>1;if(t=Gm[n])e=n+1;else return!0;if(e==i)return!1}}function Od(t){return t>=127462&&t<=127487}const gd=8205;function LS(t,e,i=!0,n=!0){return(i?Um:MS)(t,e,n)}function Um(t,e,i){if(e==t.length)return e;e&&Hm(t.charCodeAt(e))&&Km(t.charCodeAt(e-1))&&e--;let n=_a(t,e);for(e+=bd(n);e=0&&Od(_a(t,o));)s++,o-=2;if(s%2==0)break;e+=2}else break}return e}function MS(t,e,i){for(;e>1;){let n=Um(t,e-2,i);if(n=56320&&t<57344}function Km(t){return t>=55296&&t<56320}function bd(t){return t<65536?1:2}class de{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,i,n){[e,i]=Or(this,e,i);let r=[];return this.decompose(0,e,r,2),n.length&&n.decompose(0,n.length,r,3),this.decompose(i,this.length,r,1),Oi.from(r,this.length-(i-e)+n.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,i=this.length){[e,i]=Or(this,e,i);let n=[];return this.decompose(e,i,n,0),Oi.from(n,i-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let i=this.scanIdentical(e,1),n=this.length-this.scanIdentical(e,-1),r=new as(this),s=new as(e);for(let o=i,l=i;;){if(r.next(o),s.next(o),o=0,r.lineBreak!=s.lineBreak||r.done!=s.done||r.value!=s.value)return!1;if(l+=r.value.length,r.done||l>=n)return!0}}iter(e=1){return new as(this,e)}iterRange(e,i=this.length){return new Jm(this,e,i)}iterLines(e,i){let n;if(e==null)n=this.iter();else{i==null&&(i=this.lines+1);let r=this.line(e).from;n=this.iterRange(r,Math.max(r,i==this.lines+1?this.length:i<=1?0:this.line(i-1).to))}return new eO(n)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?de.empty:e.length<=32?new Le(e):Oi.from(Le.split(e,[]))}}class Le extends de{constructor(e,i=ZS(e)){super(),this.text=e,this.length=i}get lines(){return this.text.length}get children(){return null}lineInner(e,i,n,r){for(let s=0;;s++){let o=this.text[s],l=r+o.length;if((i?n:l)>=e)return new IS(r,l,n,o);r=l+1,n++}}decompose(e,i,n,r){let s=e<=0&&i>=this.length?this:new Le(vd(this.text,e,i),Math.min(i,this.length)-Math.max(0,e));if(r&1){let o=n.pop(),l=tl(s.text,o.text.slice(),0,s.length);if(l.length<=32)n.push(new Le(l,o.length+s.length));else{let a=l.length>>1;n.push(new Le(l.slice(0,a)),new Le(l.slice(a)))}}else n.push(s)}replace(e,i,n){if(!(n instanceof Le))return super.replace(e,i,n);[e,i]=Or(this,e,i);let r=tl(this.text,tl(n.text,vd(this.text,0,e)),i),s=this.length+n.length-(i-e);return r.length<=32?new Le(r,s):Oi.from(Le.split(r,[]),s)}sliceString(e,i=this.length,n=` +`){[e,i]=Or(this,e,i);let r="";for(let s=0,o=0;s<=i&&oe&&o&&(r+=n),es&&(r+=l.slice(Math.max(0,e-s),i-s)),s=a+1}return r}flatten(e){for(let i of this.text)e.push(i)}scanIdentical(){return 0}static split(e,i){let n=[],r=-1;for(let s of e)n.push(s),r+=s.length+1,n.length==32&&(i.push(new Le(n,r)),n=[],r=-1);return r>-1&&i.push(new Le(n,r)),i}}class Oi extends de{constructor(e,i){super(),this.children=e,this.length=i,this.lines=0;for(let n of e)this.lines+=n.lines}lineInner(e,i,n,r){for(let s=0;;s++){let o=this.children[s],l=r+o.length,a=n+o.lines-1;if((i?a:l)>=e)return o.lineInner(e,i,n,r);r=l+1,n=a+1}}decompose(e,i,n,r){for(let s=0,o=0;o<=i&&s=o){let u=r&((o<=e?1:0)|(a>=i?2:0));o>=e&&a<=i&&!u?n.push(l):l.decompose(e-o,i-o,n,u)}o=a+1}}replace(e,i,n){if([e,i]=Or(this,e,i),n.lines=s&&i<=l){let a=o.replace(e-s,i-s,n),u=this.lines-o.lines+a.lines;if(a.lines>4&&a.lines>u>>6){let c=this.children.slice();return c[r]=a,new Oi(c,this.length-(i-e)+n.length)}return super.replace(s,l,a)}s=l+1}return super.replace(e,i,n)}sliceString(e,i=this.length,n=` +`){[e,i]=Or(this,e,i);let r="";for(let s=0,o=0;se&&s&&(r+=n),eo&&(r+=l.sliceString(e-o,i-o,n)),o=a+1}return r}flatten(e){for(let i of this.children)i.flatten(e)}scanIdentical(e,i){if(!(e instanceof Oi))return 0;let n=0,[r,s,o,l]=i>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;r+=i,s+=i){if(r==o||s==l)return n;let a=this.children[r],u=e.children[s];if(a!=u)return n+a.scanIdentical(u,i);n+=a.length+1}}static from(e,i=e.reduce((n,r)=>n+r.length+1,-1)){let n=0;for(let d of e)n+=d.lines;if(n<32){let d=[];for(let p of e)p.flatten(d);return new Le(d,i)}let r=Math.max(32,n>>5),s=r<<1,o=r>>1,l=[],a=0,u=-1,c=[];function h(d){let p;if(d.lines>s&&d instanceof Oi)for(let m of d.children)h(m);else d.lines>o&&(a>o||!a)?(f(),l.push(d)):d instanceof Le&&a&&(p=c[c.length-1])instanceof Le&&d.lines+p.lines<=32?(a+=d.lines,u+=d.length+1,c[c.length-1]=new Le(p.text.concat(d.text),p.length+1+d.length)):(a+d.lines>r&&f(),a+=d.lines,u+=d.length+1,c.push(d))}function f(){a!=0&&(l.push(c.length==1?c[0]:Oi.from(c,u)),u=-1,a=c.length=0)}for(let d of e)h(d);return f(),l.length==1?l[0]:new Oi(l,i)}}de.empty=new Le([""],0);function ZS(t){let e=-1;for(let i of t)e+=i.length+1;return e}function tl(t,e,i=0,n=1e9){for(let r=0,s=0,o=!0;s=i&&(a>n&&(l=l.slice(0,n-r)),r0?1:(e instanceof Le?e.text.length:e.children.length)<<1]}nextInner(e,i){for(this.done=this.lineBreak=!1;;){let n=this.nodes.length-1,r=this.nodes[n],s=this.offsets[n],o=s>>1,l=r instanceof Le?r.text.length:r.children.length;if(o==(i>0?l:0)){if(n==0)return this.done=!0,this.value="",this;i>0&&this.offsets[n-1]++,this.nodes.pop(),this.offsets.pop()}else if((s&1)==(i>0?0:1)){if(this.offsets[n]+=i,e==0)return this.lineBreak=!0,this.value=` +`,this;e--}else if(r instanceof Le){let a=r.text[o+(i<0?-1:0)];if(this.offsets[n]+=i,a.length>Math.max(0,e))return this.value=e==0?a:i>0?a.slice(e):a.slice(0,a.length-e),this;e-=a.length}else{let a=r.children[o+(i<0?-1:0)];e>a.length?(e-=a.length,this.offsets[n]+=i):(i<0&&this.offsets[n]--,this.nodes.push(a),this.offsets.push(i>0?1:(a instanceof Le?a.text.length:a.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}}class Jm{constructor(e,i,n){this.value="",this.done=!1,this.cursor=new as(e,i>n?-1:1),this.pos=i>n?e.length:0,this.from=Math.min(i,n),this.to=Math.max(i,n)}nextInner(e,i){if(i<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,i<0?this.pos-this.to:this.from-this.pos);let n=i<0?this.pos-this.from:this.to-this.pos;e>n&&(e=n),n-=e;let{value:r}=this.cursor.next(e);return this.pos+=(r.length+e)*i,this.value=r.length<=n?r:i<0?r.slice(r.length-n):r.slice(0,n),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}}class eO{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:i,lineBreak:n,value:r}=this.inner.next(e);return i&&this.afterBreak?(this.value="",this.afterBreak=!1):i?(this.done=!0,this.value=""):n?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=r,this.afterBreak=!1),this}get lineBreak(){return!1}}typeof Symbol<"u"&&(de.prototype[Symbol.iterator]=function(){return this.iter()},as.prototype[Symbol.iterator]=Jm.prototype[Symbol.iterator]=eO.prototype[Symbol.iterator]=function(){return this});let IS=class{constructor(e,i,n,r){this.from=e,this.to=i,this.number=n,this.text=r}get length(){return this.to-this.from}};function Or(t,e,i){return e=Math.max(0,Math.min(t.length,e)),[e,Math.max(e,Math.min(t.length,i))]}function Ge(t,e,i=!0,n=!0){return LS(t,e,i,n)}function XS(t){return t>=56320&&t<57344}function zS(t){return t>=55296&&t<56320}function Ni(t,e){let i=t.charCodeAt(e);if(!zS(i)||e+1==t.length)return i;let n=t.charCodeAt(e+1);return XS(n)?(i-55296<<10)+(n-56320)+65536:i}function tO(t){return t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode((t>>10)+55296,(t&1023)+56320))}function vn(t){return t<65536?1:2}const _u=/\r\n?|\n/;var ut=(function(t){return t[t.Simple=0]="Simple",t[t.TrackDel=1]="TrackDel",t[t.TrackBefore=2]="TrackBefore",t[t.TrackAfter=3]="TrackAfter",t})(ut||(ut={}));class $i{constructor(e){this.sections=e}get length(){let e=0;for(let i=0;ie)return s+(e-r);s+=l}else{if(n!=ut.Simple&&u>=e&&(n==ut.TrackDel&&re||n==ut.TrackBefore&&re))return null;if(u>e||u==e&&i<0&&!l)return e==r||i<0?s:s+a;s+=a}r=u}if(e>r)throw new RangeError(`Position ${e} is out of range for changeset of length ${r}`);return s}touchesRange(e,i=e){for(let n=0,r=0;n=0&&r<=i&&l>=e)return ri?"cover":!0;r=l}return!1}toString(){let e="";for(let i=0;i=0?":"+r:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(i=>typeof i!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new $i(e)}static create(e){return new $i(e)}}class Fe extends $i{constructor(e,i){super(e),this.inserted=i}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return Pu(this,(i,n,r,s,o)=>e=e.replace(r,r+(n-i),o),!1),e}mapDesc(e,i=!1){return Cu(this,e,i,!0)}invert(e){let i=this.sections.slice(),n=[];for(let r=0,s=0;r=0){i[r]=l,i[r+1]=o;let a=r>>1;for(;n.length0&&tn(n,i,s.text),s.forward(c),l+=c}let u=e[o++];for(;l>1].toJSON()))}return e}static of(e,i,n){let r=[],s=[],o=0,l=null;function a(c=!1){if(!c&&!r.length)return;of||h<0||f>i)throw new RangeError(`Invalid change range ${h} to ${f} (in doc of length ${i})`);let p=d?typeof d=="string"?de.of(d.split(n||_u)):d:de.empty,m=p.length;if(h==f&&m==0)return;ho&&nt(r,h-o,-1),nt(r,f-h,m),tn(s,r,p),o=f}}return u(e),a(!l),l}static empty(e){return new Fe(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let i=[],n=[];for(let r=0;rl&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(s.length==1)i.push(s[0],0);else{for(;n.length=0&&i<=0&&i==t[r+1]?t[r]+=e:r>=0&&e==0&&t[r]==0?t[r+1]+=i:n?(t[r]+=e,t[r+1]+=i):t.push(e,i)}function tn(t,e,i){if(i.length==0)return;let n=e.length-2>>1;if(n>1])),!(i||o==t.sections.length||t.sections[o+1]<0);)l=t.sections[o++],a=t.sections[o++];e(r,u,s,c,h),r=u,s=c}}}function Cu(t,e,i,n=!1){let r=[],s=n?[]:null,o=new _s(t),l=new _s(e);for(let a=-1;;){if(o.done&&l.len||l.done&&o.len)throw new Error("Mismatched change set lengths");if(o.ins==-1&&l.ins==-1){let u=Math.min(o.len,l.len);nt(r,u,-1),o.forward(u),l.forward(u)}else if(l.ins>=0&&(o.ins<0||a==o.i||o.off==0&&(l.len=0&&a=0){let u=0,c=o.len;for(;c;)if(l.ins==-1){let h=Math.min(c,l.len);u+=h,c-=h,l.forward(h)}else if(l.ins==0&&l.lena||o.ins>=0&&o.len>a)&&(l||n.length>u),s.forward2(a),o.forward(a)}}}}class _s{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i>1;return i>=e.length?de.empty:e[i]}textBit(e){let{inserted:i}=this.set,n=this.i-2>>1;return n>=i.length&&!e?de.empty:i[n].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}}class Ki{constructor(e,i,n,r){this.from=e,this.to=i,this.flags=n,this.goalColumn=r}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get undirectional(){return(this.flags&64)>0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}map(e,i=-1){let n,r;return this.empty?n=r=e.mapPos(this.from,i):(n=e.mapPos(this.from,1),r=e.mapPos(this.to,-1)),n==this.from&&r==this.to?this:new Ki(n,r,this.flags,this.goalColumn)}extend(e,i=e,n=0){if(e<=this.anchor&&i>=this.anchor)return E.range(e,i,void 0,void 0,n);let r=Math.abs(e-this.anchor)>Math.abs(i-this.anchor)?e:i;return E.range(this.anchor,r,void 0,void 0,n)}eq(e,i=!1){return this.anchor==e.anchor&&this.head==e.head&&this.goalColumn==e.goalColumn&&(!i||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return E.range(e.anchor,e.head)}static create(e,i,n,r){return new Ki(e,i,n,r)}}class E{constructor(e,i){this.ranges=e,this.mainIndex=i}map(e,i=-1){return e.empty?this:E.create(this.ranges.map(n=>n.map(e,i)),this.mainIndex)}eq(e,i=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let n=0;ne.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new E(e.ranges.map(i=>Ki.fromJSON(i)),e.main)}static single(e,i=e){return new E([E.range(e,i)],0)}static create(e,i=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let n=0,r=0;rr.from-s.from),i=e.indexOf(n);for(let r=1;rs.head?E.range(a,l):E.range(l,a))}}return new E(e,i)}}function nO(t,e){for(let i of t.ranges)if(i.to>e)throw new RangeError("Selection points outside of document")}let Mc=0;class G{constructor(e,i,n,r,s){this.combine=e,this.compareInput=i,this.compare=n,this.isStatic=r,this.id=Mc++,this.default=e([]),this.extensions=typeof s=="function"?s(this):s}get reader(){return this}static define(e={}){return new G(e.combine||(i=>i),e.compareInput||((i,n)=>i===n),e.compare||(e.combine?(i,n)=>i===n:Zc),!!e.static,e.enables)}of(e){return new il([],this,0,e)}compute(e,i){if(this.isStatic)throw new Error("Can't compute a static facet");return new il(e,this,1,i)}computeN(e,i){if(this.isStatic)throw new Error("Can't compute a static facet");return new il(e,this,2,i)}from(e,i){return i||(i=n=>n),this.compute([e],n=>i(n.field(e)))}}function Zc(t,e){return t==e||t.length==e.length&&t.every((i,n)=>i===e[n])}class il{constructor(e,i,n,r){this.dependencies=e,this.facet=i,this.type=n,this.value=r,this.id=Mc++}dynamicSlot(e){var i;let n=this.value,r=this.facet.compareInput,s=this.id,o=e[s]>>1,l=this.type==2,a=!1,u=!1,c=[];for(let h of this.dependencies)h=="doc"?a=!0:h=="selection"?u=!0:(((i=e[h.id])!==null&&i!==void 0?i:1)&1)==0&&c.push(e[h.id]);return{create(h){return h.values[o]=n(h),1},update(h,f){if(a&&f.docChanged||u&&(f.docChanged||f.selection)||Tu(h,c)){let d=n(h);if(l?!yd(d,h.values[o],r):!r(d,h.values[o]))return h.values[o]=d,1}return 0},reconfigure:(h,f)=>{let d,p=f.config.address[s];if(p!=null){let m=vl(f,p);if(this.dependencies.every(O=>O instanceof G?f.facet(O)===h.facet(O):O instanceof Yt?f.field(O,!1)==h.field(O,!1):!0)||(l?yd(d=n(h),m,r):r(d=n(h),m)))return h.values[o]=m,0}else d=n(h);return h.values[o]=d,1}}}get extension(){return this}}function yd(t,e,i){if(t.length!=e.length)return!1;for(let n=0;nt[a.id]),r=i.map(a=>a.type),s=n.filter(a=>!(a&1)),o=t[e.id]>>1;function l(a){let u=[];for(let c=0;cn===r),e);return e.provide&&(i.provides=e.provide(i)),i}create(e){let i=e.facet(xo).find(n=>n.field==this);return((i==null?void 0:i.create)||this.createF)(e)}slot(e){let i=e[this.id]>>1;return{create:n=>(n.values[i]=this.create(n),1),update:(n,r)=>{let s=n.values[i],o=this.updateF(s,r);return this.compareF(s,o)?0:(n.values[i]=o,1)},reconfigure:(n,r)=>{let s=n.facet(xo),o=r.facet(xo),l;return(l=s.find(a=>a.field==this))&&l!=o.find(a=>a.field==this)?(n.values[i]=l.create(n),1):r.config.address[this.id]!=null?(n.values[i]=r.field(this),0):(n.values[i]=this.create(n),1)}}}init(e){return[this,xo.of({field:this,create:e})]}get extension(){return this}}const yn={lowest:4,low:3,default:2,high:1,highest:0};function jr(t){return e=>new rO(e,t)}const Ii={highest:jr(yn.highest),high:jr(yn.high),default:jr(yn.default),low:jr(yn.low),lowest:jr(yn.lowest)};class rO{constructor(e,i){this.inner=e,this.prec=i}get extension(){return this}}class gi{of(e){return new Au(this,e)}reconfigure(e){return gi.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}}class Au{constructor(e,i){this.compartment=e,this.inner=i}get extension(){return this}}class bl{constructor(e,i,n,r,s,o){for(this.base=e,this.compartments=i,this.dynamicSlots=n,this.address=r,this.staticValues=s,this.facets=o,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(e,i,n){let r=[],s=Object.create(null),o=new Map;for(let f of FS(e,i,o))f instanceof Yt?r.push(f):(s[f.facet.id]||(s[f.facet.id]=[])).push(f);let l=Object.create(null),a=[],u=[];for(let f of r)l[f.id]=u.length<<1,u.push(d=>f.slot(d));let c=n==null?void 0:n.config.facets;for(let f in s){let d=s[f],p=d[0].facet,m=c&&c[f]||[];if(d.every(O=>O.type==0))if(l[p.id]=a.length<<1|1,Zc(m,d))a.push(n.facet(p));else{let O=p.combine(d.map(g=>g.value));a.push(n&&p.compare(O,n.facet(p))?n.facet(p):O)}else{for(let O of d)O.type==0?(l[O.id]=a.length<<1|1,a.push(O.value)):(l[O.id]=u.length<<1,u.push(g=>O.dynamicSlot(g)));l[p.id]=u.length<<1,u.push(O=>jS(O,p,d))}}let h=u.map(f=>f(l));return new bl(e,o,h,l,a,s)}}function FS(t,e,i){let n=[[],[],[],[],[]],r=new Map;function s(o,l){let a=r.get(o);if(a!=null){if(a<=l)return;let u=n[a].indexOf(o);u>-1&&n[a].splice(u,1),o instanceof Au&&i.delete(o.compartment)}if(r.set(o,l),Array.isArray(o))for(let u of o)s(u,l);else if(o instanceof Au){if(i.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let u=e.get(o.compartment)||o.inner;i.set(o.compartment,u),s(u,l)}else if(o instanceof rO)s(o.inner,o.prec);else if(o instanceof Yt)n[l].push(o),o.provides&&s(o.provides,l);else if(o instanceof il)n[l].push(o),o.facet.extensions&&s(o.facet.extensions,yn.default);else{let u=o.extension;if(!u)throw new Error(`Unrecognized extension value in extension set (${o}).`);if(u==o)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);s(u,l)}}return s(t,yn.default),n.reduce((o,l)=>o.concat(l))}function us(t,e){if(e&1)return 2;let i=e>>1,n=t.status[i];if(n==4)throw new Error("Cyclic dependency between fields and/or facets");if(n&2)return n;t.status[i]=4;let r=t.computeSlot(t,t.config.dynamicSlots[i]);return t.status[i]=2|r}function vl(t,e){return e&1?t.config.staticValues[e>>1]:t.values[e>>1]}const sO=G.define(),Eu=G.define({combine:t=>t.some(e=>e),static:!0}),oO=G.define({combine:t=>t.length?t[0]:void 0,static:!0}),lO=G.define(),aO=G.define(),uO=G.define(),cO=G.define({combine:t=>t.length?t[0]:!1});class Xi{constructor(e,i){this.type=e,this.value=i}static define(){return new BS}}class BS{of(e){return new Xi(this,e)}}class VS{constructor(e){this.map=e}of(e){return new ae(this,e)}}class ae{constructor(e,i){this.type=e,this.value=i}map(e){let i=this.type.map(this.value,e);return i===void 0?void 0:i==this.value?this:new ae(this.type,i)}is(e){return this.type==e}static define(e={}){return new VS(e.map||(i=>i))}static mapEffects(e,i){if(!e.length)return e;let n=[];for(let r of e){let s=r.map(i);s&&n.push(s)}return n}}ae.reconfigure=ae.define();ae.appendConfig=ae.define();class Xe{constructor(e,i,n,r,s,o){this.startState=e,this.changes=i,this.selection=n,this.effects=r,this.annotations=s,this.scrollIntoView=o,this._doc=null,this._state=null,n&&nO(n,i.newLength),s.some(l=>l.type==Xe.time)||(this.annotations=s.concat(Xe.time.of(Date.now())))}static create(e,i,n,r,s,o){return new Xe(e,i,n,r,s,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let i of this.annotations)if(i.type==e)return i.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let i=this.annotation(Xe.userEvent);return!!(i&&(i==e||i.length>e.length&&i.slice(0,e.length)==e&&i[e.length]=="."))}}Xe.time=Xi.define();Xe.userEvent=Xi.define();Xe.addToHistory=Xi.define();Xe.remote=Xi.define();function qS(t,e){let i=[];for(let n=0,r=0;;){let s,o;if(n=t[n]))s=t[n++],o=t[n++];else if(r=0;r--){let s=n[r](t);s instanceof Xe?t=s:Array.isArray(s)&&s.length==1&&s[0]instanceof Xe?t=s[0]:t=fO(e,er(s),!1)}return t}function YS(t){let e=t.startState,i=e.facet(uO),n=t;for(let r=i.length-1;r>=0;r--){let s=i[r](t);s&&Object.keys(s).length&&(n=hO(n,Ru(e,s,t.changes.newLength),!0))}return n==t?t:Xe.create(e,t.changes,t.selection,n.effects,n.annotations,n.scrollIntoView)}const NS=[];function er(t){return t==null?NS:Array.isArray(t)?t:[t]}var Je=(function(t){return t[t.Word=0]="Word",t[t.Space=1]="Space",t[t.Other=2]="Other",t})(Je||(Je={}));const GS=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let Du;try{Du=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function US(t){if(Du)return Du.test(t);for(let e=0;e"€"&&(i.toUpperCase()!=i.toLowerCase()||GS.test(i)))return!0}return!1}function HS(t){return e=>{if(!/\S/.test(e))return Je.Space;if(US(e))return Je.Word;for(let i=0;i-1)return Je.Word;return Je.Other}}class fe{constructor(e,i,n,r,s,o){this.config=e,this.doc=i,this.selection=n,this.values=r,this.status=e.statusTemplate.slice(),this.computeSlot=s,o&&(o._state=this);for(let l=0;lr.set(u,a)),i=null),r.set(l.value.compartment,l.value.extension)):l.is(ae.reconfigure)?(i=null,n=l.value):l.is(ae.appendConfig)&&(i=null,n=er(n).concat(l.value));let s;i?s=e.startState.values.slice():(i=bl.resolve(n,r,this),s=new fe(i,this.doc,this.selection,i.dynamicSlots.map(()=>null),(a,u)=>u.reconfigure(a,this),null).values);let o=e.startState.facet(Eu)?e.newSelection:e.newSelection.asSingle();new fe(i,e.newDoc,o,s,(l,a)=>a.update(l,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:e},range:E.cursor(i.from+e.length)}))}changeByRange(e){let i=this.selection,n=e(i.ranges[0]),r=this.changes(n.changes),s=[n.range],o=er(n.effects);for(let l=1;lo.spec.fromJSON(l,a)))}}return fe.create({doc:e.doc,selection:E.fromJSON(e.selection),extensions:i.extensions?r.concat([i.extensions]):r})}static create(e={}){let i=bl.resolve(e.extensions||[],new Map),n=e.doc instanceof de?e.doc:de.of((e.doc||"").split(i.staticFacet(fe.lineSeparator)||_u)),r=e.selection?e.selection instanceof E?e.selection:E.single(e.selection.anchor,e.selection.head):E.single(0);return nO(r,n.length),i.staticFacet(Eu)||(r=r.asSingle()),new fe(i,n,r,i.dynamicSlots.map(()=>null),(s,o)=>o.create(s),null)}get tabSize(){return this.facet(fe.tabSize)}get lineBreak(){return this.facet(fe.lineSeparator)||` +`}get readOnly(){return this.facet(cO)}phrase(e,...i){for(let n of this.facet(fe.phrases))if(Object.prototype.hasOwnProperty.call(n,e)){e=n[e];break}return i.length&&(e=e.replace(/\$(\$|\d*)/g,(n,r)=>{if(r=="$")return"$";let s=+(r||1);return!s||s>i.length?n:i[s-1]})),e}languageDataAt(e,i,n=-1){let r=[];for(let s of this.facet(sO))for(let o of s(this,i,n))Object.prototype.hasOwnProperty.call(o,e)&&r.push(o[e]);return r}charCategorizer(e){let i=this.languageDataAt("wordChars",e);return HS(i.length?i[0]:"")}wordAt(e){let{text:i,from:n,length:r}=this.doc.lineAt(e),s=this.charCategorizer(e),o=e-n,l=e-n;for(;o>0;){let a=Ge(i,o,!1);if(s(i.slice(a,o))!=Je.Word)break;o=a}for(;lt.length?t[0]:4});fe.lineSeparator=oO;fe.readOnly=cO;fe.phrases=G.define({compare(t,e){let i=Object.keys(t),n=Object.keys(e);return i.length==n.length&&i.every(r=>t[r]==e[r])}});fe.languageData=sO;fe.changeFilter=lO;fe.transactionFilter=aO;fe.transactionExtender=uO;gi.reconfigure=ae.define();function na(t,e,i={}){let n={};for(let r of t)for(let s of Object.keys(r)){let o=r[s],l=n[s];if(l===void 0)n[s]=o;else if(!(l===o||o===void 0))if(Object.hasOwnProperty.call(i,s))n[s]=i[s](l,o);else throw new Error("Config merge conflict for field "+s)}for(let r in e)n[r]===void 0&&(n[r]=e[r]);return n}class on{eq(e){return this==e}range(e,i=e){return Lu.create(e,i,this)}}on.prototype.startSide=on.prototype.endSide=0;on.prototype.point=!1;on.prototype.mapMode=ut.TrackDel;function Ic(t,e){return t==e||t.constructor==e.constructor&&t.eq(e)}let Lu=class dO{constructor(e,i,n){this.from=e,this.to=i,this.value=n}static create(e,i,n){return new dO(e,i,n)}};function Mu(t,e){return t.from-e.from||t.value.startSide-e.value.startSide}class Xc{constructor(e,i,n,r){this.from=e,this.to=i,this.value=n,this.maxPoint=r}get length(){return this.to[this.to.length-1]}findIndex(e,i,n,r=0){let s=n?this.to:this.from;for(let o=r,l=s.length;;){if(o==l)return o;let a=o+l>>1,u=s[a]-e||(n?this.value[a].endSide:this.value[a].startSide)-i;if(a==o)return u>=0?o:l;u>=0?l=a:o=a+1}}between(e,i,n,r){for(let s=this.findIndex(i,-1e9,!0),o=this.findIndex(n,1e9,!1,s);sd||f==d&&u.startSide>0&&u.endSide<=0)continue;(d-f||u.endSide-u.startSide)<0||(o<0&&(o=f),u.point&&(l=Math.max(l,d-f)),n.push(u),r.push(f-o),s.push(d-o))}return{mapped:n.length?new Xc(r,s,n,l):null,pos:o}}}class be{constructor(e,i,n,r){this.chunkPos=e,this.chunk=i,this.nextLayer=n,this.maxPoint=r}static create(e,i,n,r){return new be(e,i,n,r)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let i of this.chunk)e+=i.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:i=[],sort:n=!1,filterFrom:r=0,filterTo:s=this.length}=e,o=e.filter;if(i.length==0&&!o)return this;if(n&&(i=i.slice().sort(Mu)),this.isEmpty)return i.length?be.of(i):this;let l=new pO(this,null,-1).goto(0),a=0,u=[],c=new gr;for(;l.value||a=0){let h=i[a++];c.addInner(h.from,h.to,h.value)||u.push(h)}else l.rangeIndex==1&&l.chunkIndexthis.chunkEnd(l.chunkIndex)||sl.to||s=s&&e<=s+o.length&&o.between(s,e-s,i-s,n)===!1)return}this.nextLayer.between(e,i,n)}}iter(e=0){return Ps.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,i=0){return Ps.from(e).goto(i)}static compare(e,i,n,r,s=-1){let o=e.filter(h=>h.maxPoint>0||!h.isEmpty&&h.maxPoint>=s),l=i.filter(h=>h.maxPoint>0||!h.isEmpty&&h.maxPoint>=s),a=xd(o,l,n),u=new Fr(o,a,s),c=new Fr(l,a,s);n.iterGaps((h,f,d)=>kd(u,h,c,f,d,r)),n.empty&&n.length==0&&kd(u,0,c,0,0,r)}static eq(e,i,n=0,r){r==null&&(r=999999999);let s=e.filter(c=>!c.isEmpty&&i.indexOf(c)<0),o=i.filter(c=>!c.isEmpty&&e.indexOf(c)<0);if(s.length!=o.length)return!1;if(!s.length)return!0;let l=xd(s,o),a=new Fr(s,l,0).goto(n),u=new Fr(o,l,0).goto(n);for(;;){if(a.to!=u.to||!Zu(a.active,u.active)||a.point&&(!u.point||!Ic(a.point,u.point)))return!1;if(a.to>r)return!0;a.next(),u.next()}}static spans(e,i,n,r,s=-1){let o=new Fr(e,null,s).goto(i),l=i,a=o.openStart;for(;;){let u=Math.min(o.to,n);if(o.point){let c=o.activeForPoint(o.to),h=o.pointFroml&&(r.span(l,u,o.active,a),a=o.openEnd(u));if(o.to>n)return a+(o.point&&o.to>n?1:0);l=o.to,o.next()}}static of(e,i=!1){let n=new gr;for(let r of e instanceof Lu?[e]:i?KS(e):e)n.add(r.from,r.to,r.value);return n.finish()}static join(e){if(!e.length)return be.empty;let i=e[e.length-1];for(let n=e.length-2;n>=0;n--)for(let r=e[n];r!=be.empty;r=r.nextLayer)i=new be(r.chunkPos,r.chunk,i,Math.max(r.maxPoint,i.maxPoint));return i}}be.empty=new be([],[],null,-1);function KS(t){if(t.length>1)for(let e=t[0],i=1;i0)return t.slice().sort(Mu);e=n}return t}be.empty.nextLayer=be.empty;class gr{finishChunk(e){this.chunks.push(new Xc(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(e,i,n){this.addInner(e,i,n)||(this.nextLayer||(this.nextLayer=new gr)).add(e,i,n)}addInner(e,i,n){let r=e-this.lastTo||n.startSide-this.last.endSide;if(r<=0&&(e-this.lastFrom||n.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return r<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(i-this.chunkStart),this.last=n,this.lastFrom=e,this.lastTo=i,this.value.push(n),n.point&&(this.maxPoint=Math.max(this.maxPoint,i-e)),!0)}addChunk(e,i){if((e-this.lastTo||i.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,i.maxPoint),this.chunks.push(i),this.chunkPos.push(e);let n=i.value.length-1;return this.last=i.value[n],this.lastFrom=i.from[n]+e,this.lastTo=i.to[n]+e,!0}finish(){return this.finishInner(be.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let i=be.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,i}}function xd(t,e,i){let n=new Map;for(let s of t)for(let o=0;o=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=n&&r.push(new pO(o,i,n,s));return r.length==1?r[0]:new Ps(r)}get startSide(){return this.value?this.value.startSide:0}goto(e,i=-1e9){for(let n of this.heap)n.goto(e,i);for(let n=this.heap.length>>1;n>=0;n--)Pa(this.heap,n);return this.next(),this}forward(e,i){for(let n of this.heap)n.forward(e,i);for(let n=this.heap.length>>1;n>=0;n--)Pa(this.heap,n);(this.to-e||this.value.endSide-i)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),Pa(this.heap,0)}}}function Pa(t,e){for(let i=t[e];;){let n=(e<<1)+1;if(n>=t.length)break;let r=t[n];if(n+1=0&&(r=t[n+1],n++),i.compare(r)<0)break;t[n]=i,t[e]=r,e=n}}class Fr{constructor(e,i,n){this.minPoint=n,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=Ps.from(e,i,n)}goto(e,i=-1e9){return this.cursor.goto(e,i),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=i,this.openStart=-1,this.next(),this}forward(e,i){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-i)<0;)this.removeActive(this.minActive);this.cursor.forward(e,i)}removeActive(e){ko(this.active,e),ko(this.activeTo,e),ko(this.activeRank,e),this.minActive=Sd(this.active,this.activeTo)}addActive(e){let i=0,{value:n,to:r,rank:s}=this.cursor;for(;i0;)i++;So(this.active,i,n),So(this.activeTo,i,r),So(this.activeRank,i,s),e&&So(e,i,this.cursor.from),this.minActive=Sd(this.active,this.activeTo)}next(){let e=this.to,i=this.point;this.point=null;let n=this.openStart<0?[]:null;for(;;){let r=this.minActive;if(r>-1&&(this.activeTo[r]-this.cursor.from||this.active[r].endSide-this.cursor.startSide)<0){if(this.activeTo[r]>e){this.to=this.activeTo[r],this.endSide=this.active[r].endSide;break}this.removeActive(r),n&&ko(n,r)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let s=this.cursor.value;if(!s.point)this.addActive(n),this.cursor.next();else if(i&&this.cursor.to==this.to&&this.cursor.from=0&&n[r]=0&&!(this.activeRank[n]e||this.activeTo[n]==e&&this.active[n].endSide>=this.point.endSide)&&i.push(this.active[n]);return i.reverse()}openEnd(e){let i=0;for(let n=this.activeTo.length-1;n>=0&&this.activeTo[n]>e;n--)i++;return i}}function kd(t,e,i,n,r,s){t.goto(e),i.goto(n);let o=n+r,l=n,a=n-e,u=!!s.boundChange;for(let c=!1;;){let h=t.to+a-i.to,f=h||t.endSide-i.endSide,d=f<0?t.to+a:i.to,p=Math.min(d,o);if(t.point||i.point?(t.point&&i.point&&Ic(t.point,i.point)&&Zu(t.activeForPoint(t.to),i.activeForPoint(i.to))||s.comparePoint(l,p,t.point,i.point),c=!1):(c&&s.boundChange(l),p>l&&!Zu(t.active,i.active)&&s.compareRange(l,p,t.active,i.active),u&&po)break;l=d,f<=0&&t.next(),f>=0&&i.next()}}function Zu(t,e){if(t.length!=e.length)return!1;for(let i=0;i=e;n--)t[n+1]=t[n];t[e]=i}function Sd(t,e){let i=-1,n=1e9;for(let r=0;r=e)return r;if(r==t.length)break;s+=t.charCodeAt(r)==9?i-s%i:1,r=Ge(t,r)}return t.length}const Iu="ͼ",wd=typeof Symbol>"u"?"__"+Iu:Symbol.for(Iu),Xu=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),$d=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{};class ln{constructor(e,i){this.rules=[];let{finish:n}=i||{};function r(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}function s(o,l,a,u){let c=[],h=/^@(\w+)\b/.exec(o[0]),f=h&&h[1]=="keyframes";if(h&&l==null)return a.push(o[0]+";");for(let d in l){let p=l[d];if(/&/.test(d))s(d.split(/,\s*/).map(m=>o.map(O=>m.replace(/&/,O))).reduce((m,O)=>m.concat(O)),p,a);else if(p&&typeof p=="object"){if(!h)throw new RangeError("The value of a property ("+d+") should be a primitive value.");s(r(d),p,c,f)}else p!=null&&c.push(d.replace(/_.*/,"").replace(/[A-Z]/g,m=>"-"+m.toLowerCase())+": "+p+";")}(c.length||f)&&a.push((n&&!h&&!u?o.map(n):o).join(", ")+" {"+c.join(" ")+"}")}for(let o in e)s(r(o),e[o],this.rules)}getRules(){return this.rules.join(` +`)}static newName(){let e=$d[wd]||1;return $d[wd]=e+1,Iu+e.toString(36)}static mount(e,i,n){let r=e[Xu],s=n&&n.nonce;r?s&&r.setNonce(s):r=new ew(e,s),r.mount(Array.isArray(i)?i:[i],e)}}let Qd=new Map;class ew{constructor(e,i){let n=e.ownerDocument||e,r=n.defaultView;if(!e.head&&e.adoptedStyleSheets&&r.CSSStyleSheet){let s=Qd.get(n);if(s)return e[Xu]=s;this.sheet=new r.CSSStyleSheet,Qd.set(n,this)}else this.styleTag=n.createElement("style"),i&&this.styleTag.setAttribute("nonce",i);this.modules=[],e[Xu]=this}mount(e,i){let n=this.sheet,r=0,s=0;for(let o=0;o-1&&(this.modules.splice(a,1),s--,a=-1),a==-1){if(this.modules.splice(s++,0,l),n)for(let u=0;u",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},tw=typeof navigator<"u"&&/Mac/.test(navigator.platform),iw=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(var Ke=0;Ke<10;Ke++)an[48+Ke]=an[96+Ke]=String(Ke);for(var Ke=1;Ke<=24;Ke++)an[Ke+111]="F"+Ke;for(var Ke=65;Ke<=90;Ke++)an[Ke]=String.fromCharCode(Ke+32),Cs[Ke]=String.fromCharCode(Ke);for(var Ca in an)Cs.hasOwnProperty(Ca)||(Cs[Ca]=an[Ca]);function nw(t){var e=tw&&t.metaKey&&t.shiftKey&&!t.ctrlKey&&!t.altKey||iw&&t.shiftKey&&t.key&&t.key.length==1||t.key=="Unidentified",i=!e&&t.key||(t.shiftKey?Cs:an)[t.keyCode]||t.key||"Unidentified";return i=="Esc"&&(i="Escape"),i=="Del"&&(i="Delete"),i=="Left"&&(i="ArrowLeft"),i=="Up"&&(i="ArrowUp"),i=="Right"&&(i="ArrowRight"),i=="Down"&&(i="ArrowDown"),i}function We(){var t=arguments[0];typeof t=="string"&&(t=document.createElement(t));var e=1,i=arguments[1];if(i&&typeof i=="object"&&i.nodeType==null&&!Array.isArray(i)){for(var n in i)if(Object.prototype.hasOwnProperty.call(i,n)){var r=i[n];typeof r=="string"?t.setAttribute(n,r):r!=null&&(t[n]=r)}e++}for(;e2);var q={mac:Cd||/Mac/.test(at.platform),windows:/Win/.test(at.platform),linux:/Linux|X11/.test(at.platform),ie:ra,ie_version:OO?zu.documentMode||6:Fu?+Fu[1]:ju?+ju[1]:0,gecko:_d,gecko_version:_d?+(/Firefox\/(\d+)/.exec(at.userAgent)||[0,0])[1]:0,chrome:!!Ta,chrome_version:Ta?+Ta[1]:0,ios:Cd,android:/Android\b/.test(at.userAgent),webkit:Pd,webkit_version:Pd?+(/\bAppleWebKit\/(\d+)/.exec(at.userAgent)||[0,0])[1]:0,safari:Bu,safari_version:Bu?+(/\bVersion\/(\d+(\.\d+)?)/.exec(at.userAgent)||[0,0])[1]:0,tabSize:zu.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function zc(t,e){for(let i in t)i=="class"&&e.class?e.class+=" "+t.class:i=="style"&&e.style?e.style+=";"+t.style:e[i]=t[i];return e}const yl=Object.create(null);function jc(t,e,i){if(t==e)return!0;t||(t=yl),e||(e=yl);let n=Object.keys(t),r=Object.keys(e);if(n.length-0!=r.length-0)return!1;for(let s of n)if(s!=i&&(r.indexOf(s)==-1||t[s]!==e[s]))return!1;return!0}function rw(t,e){for(let i=t.attributes.length-1;i>=0;i--){let n=t.attributes[i].name;e[n]==null&&t.removeAttribute(n)}for(let i in e){let n=e[i];i=="style"?t.style.cssText=n:t.getAttribute(i)!=n&&t.setAttribute(i,n)}}function Td(t,e,i){let n=!1;if(e)for(let r in e)i&&r in i||(n=!0,r=="style"?t.style.cssText="":t.removeAttribute(r));if(i)for(let r in i)e&&e[r]==i[r]||(n=!0,r=="style"?t.style.cssText=i[r]:t.setAttribute(r,i[r]));return n}function sw(t){let e=Object.create(null);for(let i=0;i0?3e8:-4e8:i>0?1e8:-1e8,new An(e,i,i,n,e.widget||null,!1)}static replace(e){let i=!!e.block,n,r;if(e.isBlockGap)n=-5e8,r=4e8;else{let{start:s,end:o}=gO(e,i);n=(s?i?-3e8:-1:5e8)-1,r=(o?i?2e8:1:-6e8)+1}return new An(e,n,r,i,e.widget||null,!0)}static line(e){return new eo(e)}static set(e,i=!1){return be.of(e,i)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}}ve.none=be.empty;class Js extends ve{constructor(e){let{start:i,end:n}=gO(e);super(i?-1:5e8,n?1:-6e8,null,e),this.tagName=e.tagName||"span",this.attrs=e.class&&e.attributes?zc(e.attributes,{class:e.class}):e.class?{class:e.class}:e.attributes||yl}eq(e){return this==e||e instanceof Js&&this.tagName==e.tagName&&jc(this.attrs,e.attrs)}range(e,i=e){if(e>=i)throw new RangeError("Mark decorations may not be empty");return super.range(e,i)}}Js.prototype.point=!1;class eo extends ve{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof eo&&this.spec.class==e.spec.class&&jc(this.spec.attributes,e.spec.attributes)}range(e,i=e){if(i!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,i)}}eo.prototype.mapMode=ut.TrackBefore;eo.prototype.point=!0;class An extends ve{constructor(e,i,n,r,s,o){super(i,n,s,e),this.block=r,this.isReplace=o,this.mapMode=r?i<=0?ut.TrackBefore:ut.TrackAfter:ut.TrackDel}get type(){return this.startSide!=this.endSide?ft.WidgetRange:this.startSide<=0?ft.WidgetBefore:ft.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(e){return e instanceof An&&ow(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,i=e){if(this.isReplace&&(e>i||e==i&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&i!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,i)}}An.prototype.point=!0;function gO(t,e=!1){let{inclusiveStart:i,inclusiveEnd:n}=t;return i==null&&(i=t.inclusive),n==null&&(n=t.inclusive),{start:i??e,end:n??e}}function ow(t,e){return t==e||!!(t&&e&&t.compare(e))}function tr(t,e,i,n=0){let r=i.length-1;r>=0&&i[r]+n>=t?i[r]=Math.max(i[r],e):i.push(t,e)}class Ts extends on{constructor(e,i,n){super(),this.tagName=e,this.attributes=i,this.rank=n}eq(e){return e==this||e instanceof Ts&&this.tagName==e.tagName&&jc(this.attributes,e.attributes)}static create(e){return new Ts(e.tagName,e.attributes||yl,e.rank==null?50:Math.max(0,Math.min(e.rank,100)))}static set(e,i=!1){return be.of(e,i)}}Ts.prototype.startSide=Ts.prototype.endSide=-1;function As(t){let e;return t.nodeType==11?e=t.getSelection?t:t.ownerDocument:e=t,e.getSelection()}function Vu(t,e){return e?t==e||t.contains(e.nodeType!=1?e.parentNode:e):!1}function cs(t,e){if(!e.anchorNode)return!1;try{return Vu(t,e.anchorNode)}catch{return!1}}function hs(t){return t.nodeType==3?Rs(t,0,t.nodeValue.length).getClientRects():t.nodeType==1?t.getClientRects():[]}function fs(t,e,i,n){return i?Ad(t,e,i,n,-1)||Ad(t,e,i,n,1):!1}function un(t){for(var e=0;;e++)if(t=t.previousSibling,!t)return e}function xl(t){return t.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(t.nodeName)}function Ad(t,e,i,n,r){for(;;){if(t==i&&e==n)return!0;if(e==(r<0?0:Zi(t))){if(t.nodeName=="DIV")return!1;let s=t.parentNode;if(!s||s.nodeType!=1)return!1;e=un(t)+(r<0?0:1),t=s}else if(t.nodeType==1){if(t=t.childNodes[e+(r<0?-1:0)],t.nodeType==1&&t.contentEditable=="false")return!1;e=r<0?Zi(t):0}else return!1}}function Zi(t){return t.nodeType==3?t.nodeValue.length:t.childNodes.length}function Es(t,e){let{left:i,right:n}=t;if(i==n)return t;let r=e?i:n;return{left:r,right:r,top:t.top,bottom:t.bottom}}function lw(t){let e=t.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:t.innerWidth,top:0,bottom:t.innerHeight}}function bO(t,e){let i=e.width/t.offsetWidth,n=e.height/t.offsetHeight;return(i>.995&&i<1.005||!isFinite(i)||Math.abs(e.width-t.offsetWidth)<1)&&(i=1),(n>.995&&n<1.005||!isFinite(n)||Math.abs(e.height-t.offsetHeight)<1)&&(n=1),{scaleX:i,scaleY:n}}function aw(t,e,i,n,r,s,o,l){let a=t.ownerDocument,u=a.defaultView||window;for(let c=t,h=!1;c&&!h;)if(c.nodeType==1){let f,d=c==a.body,p=1,m=1;if(d)f=lw(u);else{if(/^(fixed|sticky)$/.test(getComputedStyle(c).position)&&(h=!0),c.scrollHeight<=c.clientHeight&&c.scrollWidth<=c.clientWidth){c=c.assignedSlot||c.parentNode;continue}let b=c.getBoundingClientRect();({scaleX:p,scaleY:m}=bO(c,b)),f={left:b.left,right:b.left+c.clientWidth*p,top:b.top,bottom:b.top+c.clientHeight*m}}let O=0,g=0;if(r=="nearest")e.top0&&e.bottom>f.bottom+g&&(g=e.bottom-f.bottom+o)):e.bottom>f.bottom-o&&(g=e.bottom-f.bottom+o,i<0&&e.top-g0&&e.right>f.right+O&&(O=e.right-f.right+s)):e.right>f.right-s&&(O=e.right-f.right+s,i<0&&e.leftf.bottom||e.leftf.right)&&(e={left:Math.max(e.left,f.left),right:Math.min(e.right,f.right),top:Math.max(e.top,f.top),bottom:Math.min(e.bottom,f.bottom)}),c=c.assignedSlot||c.parentNode}else if(c.nodeType==11)c=c.host;else break}function vO(t,e=!0){let i=t.ownerDocument,n=null,r=null;for(let s=t.parentNode;s&&!(s==i.body||(!e||n)&&r);)if(s.nodeType==1)!r&&s.scrollHeight>s.clientHeight&&(r=s),e&&!n&&s.scrollWidth>s.clientWidth&&(n=s),s=s.assignedSlot||s.parentNode;else if(s.nodeType==11)s=s.host;else break;return{x:n,y:r}}class uw{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:i,focusNode:n}=e;this.set(i,Math.min(e.anchorOffset,i?Zi(i):0),n,Math.min(e.focusOffset,n?Zi(n):0))}set(e,i,n,r){this.anchorNode=e,this.anchorOffset=i,this.focusNode=n,this.focusOffset=r}}let bn=null;q.safari&&q.safari_version>=26&&(bn=!1);function yO(t){if(t.setActive)return t.setActive();if(bn)return t.focus(bn);let e=[];for(let i=t;i&&(e.push(i,i.scrollTop,i.scrollLeft),i!=i.ownerDocument);i=i.parentNode);if(t.focus(bn==null?{get preventScroll(){return bn={preventScroll:!0},!0}}:void 0),!bn){bn=!1;for(let i=0;iMath.max(0,t.document.documentElement.scrollHeight-t.innerHeight-4):t.scrollTop>Math.max(1,t.scrollHeight-t.clientHeight-4)}function kO(t,e){for(let i=t,n=e;;){if(i.nodeType==3&&n>0)return{node:i,offset:n};if(i.nodeType==1&&n>0){if(i.contentEditable=="false")return null;i=i.childNodes[n-1],n=Zi(i)}else if(i.parentNode&&!xl(i))n=un(i),i=i.parentNode;else return null}}function SO(t,e){for(let i=t,n=e;;){if(i.nodeType==3&&n=i){if(l.level==n)return o;(s<0||(r!=0?r<0?l.fromi:e[s].level>l.level))&&(s=o)}}if(s<0)throw new RangeError("Index out of range");return s}}function QO(t,e){if(t.length!=e.length)return!1;for(let i=0;i=0;m-=3)if(fi[m+1]==-d){let O=fi[m+2],g=O&2?r:O&4?O&1?s:r:0;g&&(ke[h]=ke[fi[m]]=g),l=m;break}}else{if(fi.length==189)break;fi[l++]=h,fi[l++]=f,fi[l++]=a}else if((p=ke[h])==2||p==1){let m=p==r;a=m?0:1;for(let O=l-3;O>=0;O-=3){let g=fi[O+2];if(g&2)break;if(m)fi[O+2]|=2;else{if(g&4)break;fi[O+2]|=4}}}}}function gw(t,e,i,n){for(let r=0,s=n;r<=i.length;r++){let o=r?i[r-1].to:t,l=ra;)p==O&&(p=i[--m].from,O=m?i[m-1].to:t),ke[--p]=d;a=c}else s=u,a++}}}function Wu(t,e,i,n,r,s,o){let l=n%2?2:1;if(n%2==r%2)for(let a=e,u=0;aa&&o.push(new xi(a,m.from,d));let O=m.direction==En!=!(d%2);Yu(t,O?n+1:n,r,m.inner,m.from,m.to,o),a=m.to}p=m.to}else{if(p==i||(c?ke[p]!=l:ke[p]==l))break;p++}f?Wu(t,a,p,n+1,r,f,o):ae;){let c=!0,h=!1;if(!u||a>s[u-1].to){let m=ke[a-1];m!=l&&(c=!1,h=m==16)}let f=!c&&l==1?[]:null,d=c?n:n+1,p=a;e:for(;;)if(u&&p==s[u-1].to){if(h)break e;let m=s[--u];if(!c)for(let O=m.from,g=u;;){if(O==e)break e;if(g&&s[g-1].to==O)O=s[--g].from;else{if(ke[O-1]==l)break e;break}}if(f)f.push(m);else{m.toke.length;)ke[ke.length]=256;let n=[],r=e==En?0:1;return Yu(t,r,r,i,0,t.length,n),n}function _O(t){return[new xi(0,t,0)]}let PO="";function vw(t,e,i,n,r){var s;let o=n.head-t.from,l=xi.find(e,o,(s=n.bidiLevel)!==null&&s!==void 0?s:-1,n.assoc),a=e[l],u=a.side(r,i);if(o==u){let f=l+=r?1:-1;if(f<0||f>=e.length)return null;a=e[l=f],o=a.side(!r,i),u=a.side(r,i)}let c=Ge(t.text,o,a.forward(r,i));(ca.to)&&(c=u),PO=t.text.slice(Math.min(o,c),Math.max(o,c));let h=l==(r?e.length-1:0)?null:e[l+(r?1:-1)];return h&&c==u&&h.level+(r?0:1)t.some(e=>e)}),MO=G.define({combine:t=>t.some(e=>e)}),ZO=G.define();class nr{constructor(e,i,n,r,s,o=!1){this.range=e,this.y=i,this.x=n,this.yMargin=r,this.xMargin=s,this.isSnapshot=o}map(e){return e.empty?this:new nr(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(e){return this.range.to<=e.doc.length?this:new nr(E.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}}const wo=ae.define({map:(t,e)=>t.map(e)}),IO=ae.define();function Rt(t,e,i){let n=t.facet(EO);n.length?n[0](e):window.onerror&&window.onerror(String(e),i,void 0,void 0,e)||(i?console.error(i+":",e):console.error(e))}const Ri=G.define({combine:t=>t.length?t[0]:!0});let xw=0;const Gn=G.define({combine(t){return t.filter((e,i)=>{for(let n=0;n{let a=[];return o&&a.push(sa.of(u=>{let c=u.plugin(l);return c?o(c):ve.none})),s&&a.push(s(l)),a})}static fromClass(e,i){return Mt.define((n,r)=>new e(n,r),i)}}class Aa{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(e){if(this.value){if(this.mustUpdate){let i=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(i)}catch(n){if(Rt(i.state,n,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(e,this.spec.arg)}catch(i){Rt(e.state,i,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var i;if(!((i=this.value)===null||i===void 0)&&i.destroy)try{this.value.destroy()}catch(n){Rt(e.state,n,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}}const XO=G.define(),qc=G.define(),sa=G.define(),zO=G.define(),Wc=G.define(),to=G.define(),jO=G.define();function Rd(t,e){let i=t.state.facet(jO);if(!i.length)return i;let n=i.map(s=>s instanceof Function?s(t):s),r=[];return be.spans(n,e.from,e.to,{point(){},span(s,o,l,a){let u=s-e.from,c=o-e.from,h=r;for(let f=l.length-1;f>=0;f--,a--){let d=l[f].spec.bidiIsolate,p;if(d==null&&(d=yw(e.text,u,c)),a>0&&h.length&&(p=h[h.length-1]).to==u&&p.direction==d)p.to=c,h=p.inner;else{let m={from:u,to:c,direction:d,inner:[]};h.push(m),h=m.inner}}}}),r}const FO=G.define();function Yc(t){let e=0,i=0,n=0,r=0;for(let s of t.state.facet(FO)){let o=s(t);o&&(o.left!=null&&(e=Math.max(e,o.left)),o.right!=null&&(i=Math.max(i,o.right)),o.top!=null&&(n=Math.max(n,o.top)),o.bottom!=null&&(r=Math.max(r,o.bottom)))}return{left:e,right:i,top:n,bottom:r}}const Jr=G.define();class jt{constructor(e,i,n,r){this.fromA=e,this.toA=i,this.fromB=n,this.toB=r}join(e){return new jt(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let i=e.length,n=this;for(;i>0;i--){let r=e[i-1];if(!(r.fromA>n.toA)){if(r.toAr.push(new jt(s,o,l,a))),this.changedRanges=r}static create(e,i,n){return new kl(e,i,n)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}}const kw=[];class De{constructor(e,i,n=0){this.dom=e,this.length=i,this.flags=n,this.parent=null,e.cmTile=this}get breakAfter(){return this.flags&1}get children(){return kw}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(e){if(this.flags|=2,this.flags&4){this.flags&=-5;let i=this.domAttrs;i&&rw(this.dom,i)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(e){this.dom=e,e.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(e,i=this.posAtStart){let n=i;for(let r of this.children){if(r==e)return n;n+=r.length+r.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(e){return this.posBefore(e)+e.length}covers(e){return!0}coordsIn(e,i,n){return null}domPosFor(e,i){let n=un(this.dom),r=this.length?e>0:i>0;return new oi(this.parent.dom,n+(r?1:0),e==0||e==this.length)}markDirty(e){this.flags&=-3,e&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let e=this;e;e=e.parent)if(e instanceof la)return e;return null}static get(e){return e.cmTile}}class oa extends De{constructor(e){super(e,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(e){this.children.push(e),e.parent=this}sync(e){if(this.flags&2)return;super.sync(e);let i=this.dom,n=null,r,s=(e==null?void 0:e.node)==i?e:null,o=0;for(let l of this.children){if(l.sync(e),o+=l.length+l.breakAfter,r=n?n.nextSibling:i.firstChild,s&&r!=l.dom&&(s.written=!0),l.dom.parentNode==i)for(;r&&r!=l.dom;)r=Dd(r);else i.insertBefore(l.dom,r);n=l.dom}for(r=n?n.nextSibling:i.firstChild,s&&r&&(s.written=!0);r;)r=Dd(r);this.length=o}}function Dd(t){let e=t.nextSibling;return t.parentNode.removeChild(t),e}class la extends oa{constructor(e,i){super(i),this.view=e}owns(e){for(;e;e=e.parent)if(e==this)return!0;return!1}isBlock(){return!0}nearest(e){for(;;){if(!e)return null;let i=De.get(e);if(i&&this.owns(i))return i;e=e.parentNode}}blockTiles(e){for(let i=[],n=this,r=0,s=0;;)if(r==n.children.length){if(!i.length)return;n=n.parent,n.breakAfter&&s++,r=i.pop()}else{let o=n.children[r++];if(o instanceof Di)i.push(r),n=o,r=0;else{let l=s+o.length,a=e(o,s);if(a!==void 0)return a;s=l+o.breakAfter}}}resolveBlock(e,i){let n,r=-1,s,o=-1;if(this.blockTiles((l,a)=>{let u=a+l.length;if(e>=a&&e<=u){if(l.isWidget()&&i>=-1&&i<=1){if(l.flags&32)return!0;l.flags&16&&(n=void 0)}(ae||e==a&&(i>1?l.length:l.covers(-1)))&&(!s||!l.isWidget()&&s.isWidget())&&(s=l,o=e-a)}}),!n&&!s)throw new Error("No tile at position "+e);return n&&i<0||!s?{tile:n,offset:r}:{tile:s,offset:o}}}class Di extends oa{constructor(e,i){super(e),this.wrapper=i}isBlock(){return!0}covers(e){return this.children.length?e<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(e,i){let n=new Di(i||document.createElement(e.tagName),e);return i||(n.flags|=4),n}}class br extends oa{constructor(e,i){super(e),this.attrs=i}isLine(){return!0}static start(e,i,n){let r=new br(i||document.createElement("div"),e);return(!i||!n)&&(r.flags|=4),r}get domAttrs(){return this.attrs}resolveInline(e,i,n){let r=null,s=-1,o=null,l=-1;function a(c,h){for(let f=0,d=0;f=h&&(p.isComposite()?a(p,h-d):(!o||o.isHidden&&(i>0&&!(o.flags&32)||n&&ww(o,p)))&&(m>h||p.flags&32)?(o=p,l=h-d):(dr&&(e=r);let s=e,o=e,l=0;e==0&&i<0||e==r&&i>=0?q.chrome||q.gecko||(e?(s--,l=1):o=0)?0:a.length-1];return q.safari&&!l&&u.width==0&&(u=Array.prototype.find.call(a,c=>c.width)||u),n==null?u:Es(u,(l?l>0:i<0)==n)}static of(e,i){let n=new kn(i||document.createTextNode(e),e);return i||(n.flags|=2),n}}class Rn extends De{constructor(e,i,n,r){super(e,i,r),this.widget=n}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(e){return this.flags&48?!1:(this.flags&(e<0?64:128))>0}coordsIn(e,i){return this.coordsInWidget(e,i,!1)}coordsInWidget(e,i,n){let r=this.widget.coordsAt(this.dom,e,i);if(r)return r;if(n)return Es(this.dom.getBoundingClientRect(),this.length?e==0:i<=0);{let s=this.dom.getClientRects(),o=null;if(!s.length)return null;let l=this.flags&16?!0:this.flags&32?!1:e>0;for(let a=l?s.length-1:0;o=s[a],!(e>0?a==0:a==s.length-1||o.top0==n)}}class $w{constructor(e){this.index=0,this.beforeBreak=!1,this.parents=[],this.tile=e}advance(e,i,n){let{tile:r,index:s,beforeBreak:o,parents:l}=this;for(;e||i>0;)if(r.isComposite())if(o){if(!e)break;n&&n.break(),e--,o=!1}else if(s==r.children.length){if(!e&&!l.length)break;n&&n.leave(r),o=!!r.breakAfter,{tile:r,index:s}=l.pop(),s++}else{let a=r.children[s],u=a.breakAfter;(i>0?a.length<=e:a.length=0;l--){let a=i.marks[l],u=r.lastChild;if(u instanceof gt&&u.mark.eq(a.mark))u.dom!=a.dom&&u.setDOM(Ea(a.dom)),r=u;else{if(this.cache.reused.get(a)){let h=De.get(a.dom);h&&h.setDOM(Ea(a.dom))}let c=gt.of(a.mark,a.dom);r.append(c),r=c}this.cache.reused.set(a,2)}let s=De.get(e.text);s&&this.cache.reused.set(s,2);let o=new kn(e.text,e.text.nodeValue);o.flags|=8,this.pos=e.range.toB,r.append(o)}addInlineWidget(e,i,n){let r=this.afterWidget&&e.flags&48&&(this.afterWidget.flags&48)==(e.flags&48);r||this.flushBuffer();let s=this.ensureMarks(i,n);!r&&!(e.flags&16)&&s.append(this.getBuffer(1)),s.append(e),this.pos+=e.length,this.afterWidget=e}addMark(e,i,n){this.flushBuffer(),this.ensureMarks(i,n).append(e),this.pos+=e.length,this.afterWidget=null}addBlockWidget(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}continueWidget(e){let i=this.afterWidget||this.lastBlock;i.length+=e,this.pos+=e}addLineStart(e,i){var n;e||(e=BO);let r=br.start(e,i||((n=this.cache.find(br))===null||n===void 0?void 0:n.dom),!!i);this.getBlockPos().append(this.lastBlock=this.curLine=r)}addLine(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(e){this.blockPosCovered()||this.addLineStart(e)}ensureLine(e){this.curLine||this.addLineStart(e)}ensureMarks(e,i){var n;let r=this.curLine;for(let s=e.length-1;s>=0;s--){let o=e[s],l;if(i>0&&(l=r.lastChild)&&l instanceof gt&&l.mark.eq(o))r=l,i--;else{let a=gt.of(o,(n=this.cache.find(gt,u=>u.mark.eq(o)))===null||n===void 0?void 0:n.dom);r.append(a),r=a,i=0}}return r}endLine(){if(this.curLine){this.flushBuffer();let e=this.curLine.lastChild;(!e||!Ld(this.curLine,!1)||e.dom.nodeName!="BR"&&e.isWidget()&&!(q.ios&&Ld(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(Ra,0,32)||new Rn(Ra.toDOM(),0,Ra,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let e=this.wrappers.length-1;e>=0;e--)this.wrappers[e].to=this.pos){let i=e.rank*102+e.value.rank,n=new Qw(e.from,e.to,e.value,i),r=this.wrappers.length;for(;r>0&&(this.wrappers[r-1].rank-n.rank||this.wrappers[r-1].to-n.to)<0;)r--;this.wrappers.splice(r,0,n)}this.wrapperPos=this.pos}getBlockPos(){var e;this.updateBlockWrappers();let i=this.root;for(let n of this.wrappers){let r=i.lastChild;if(n.fromo.wrapper.eq(n.wrapper)))===null||e===void 0?void 0:e.dom);i.append(s),i=s}}return i}blockPosCovered(){let e=this.lastBlock;return e!=null&&!e.breakAfter&&(!e.isWidget()||(e.flags&160)>0)}getBuffer(e){let i=2|(e<0?16:32),n=this.cache.find(Sl,void 0,1);return n&&(n.flags=i),n||new Sl(i)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}}class Pw{constructor(e){this.skipCount=0,this.text="",this.textOff=0,this.cursor=e.iter()}skip(e){this.textOff+e<=this.text.length?this.textOff+=e:(this.skipCount+=e-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(e){if(this.textOff==this.text.length){let{value:r,lineBreak:s,done:o}=this.cursor.next(this.skipCount);if(this.skipCount=0,o)throw new Error("Ran out of text content when drawing inline views");this.text=r;let l=this.textOff=Math.min(e,r.length);return s?null:r.slice(0,l)}let i=Math.min(this.text.length,this.textOff+e),n=this.text.slice(this.textOff,i);return this.textOff=i,n}}const wl=[Rn,br,kn,gt,Sl,Di,la];for(let t=0;t[]),this.index=wl.map(()=>0),this.reused=new Map}add(e){let i=e.constructor.bucket,n=this.buckets[i];n.length<6?n.push(e):n[this.index[i]=(this.index[i]+1)%6]=e}find(e,i,n=2){let r=e.bucket,s=this.buckets[r],o=this.index[r];for(let l=0;l{if(this.cache.add(o),o.isComposite())return!1},enter:o=>this.cache.add(o),leave:()=>{},break:()=>{}}}run(e,i){let n=i&&this.getCompositionContext(i.text);for(let r=0,s=0,o=0;;){let l=or){let u=a-r;this.preserve(u,!o,!l),r=a,s+=u}if(!l)break;i&&l.fromA<=i.range.fromA&&l.toA>=i.range.toA?(this.forward(l.fromA,i.range.fromA,i.range.fromA{if(o.isWidget())if(this.openWidget)this.builder.continueWidget(a-l);else{let u=a>0||l{o.isLine()?this.builder.addLineStart(o.attrs,this.cache.maybeReuse(o)):(this.cache.add(o),o instanceof gt&&r.unshift(o.mark)),this.openWidget=!1},leave:o=>{o.isLine()?r.length&&(r.length=s=0):o instanceof gt&&(r.shift(),s=Math.min(s,r.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(e)}emit(e,i){let n=null,r=this.builder,s=-1,o=be.spans(this.decorations,e,i,{point:(l,a,u,c,h,f)=>{if(u instanceof An){if(this.disallowBlockEffectsFor[f]){if(u.block)throw new RangeError("Block decorations may not be specified via plugins");if(a>this.view.state.doc.lineAt(l).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}if(s=c.length,h>c.length)r.continueWidget(a-l);else{let d=u.widget||(u.block?vr.block:vr.inline),p=Aw(u),m=this.cache.findWidget(d,a-l,p)||Rn.of(d,this.view,a-l,p);u.block?(u.startSide>0&&r.addLineStartIfNotCovered(n),r.addBlockWidget(m)):(r.ensureLine(n),r.addInlineWidget(m,c,h))}n=null}else n=Ew(n,u);a>l&&this.text.skip(a-l)},span:(l,a,u,c)=>{for(let h=l;h-1&&(this.openWidget=o>s),this.openWidget||r.addLineStartIfNotCovered(n),this.openMarks=o}forward(e,i,n=1){i-e<=10?this.old.advance(i-e,n,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(i-e-10,-1),this.old.advance(5,n,this.reuseWalker))}getCompositionContext(e){let i=[],n=null;for(let r=e.parentNode;;r=r.parentNode){let s=De.get(r);if(r==this.view.contentDOM)break;s instanceof gt?i.push(s):s!=null&&s.isLine()?n=s:s instanceof Di||(r.nodeName=="DIV"&&!n&&r!=this.view.contentDOM?n=new br(r,BO):n||i.push(gt.of(new Js({tagName:r.nodeName.toLowerCase(),attributes:sw(r)}),r)))}return{line:n,marks:i}}}function Ld(t,e){let i=n=>{for(let r of n.children)if((e?r.isText():r.length)||i(r))return!0;return!1};return i(t)}function Aw(t){let e=t.isReplace?(t.startSide<0?64:0)|(t.endSide>0?128:0):t.startSide>0?32:16;return t.block&&(e|=256),e}const BO={class:"cm-line"};function Ew(t,e){let i=e.spec.attributes,n=e.spec.class;return!i&&!n||(t||(t={class:"cm-line"}),i&&zc(i,t),n&&(t.class+=" "+n)),t}function Rw(t){let e=[];for(let i=t.parents.length;i>1;i--){let n=i==t.parents.length?t.tile:t.parents[i].tile;n instanceof gt&&e.push(n.mark)}return e}function Ea(t){let e=De.get(t);return e&&e.setDOM(t.cloneNode()),t}class vr extends Er{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}}vr.inline=new vr("span");vr.block=new vr("div");const Ra=new class extends Er{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}};class Md{constructor(e){this.view=e,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=ve.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new la(e,e.contentDOM),this.updateInner([new jt(0,0,0,e.state.doc.length)],null)}update(e){var i;let n=e.changedRanges;this.minWidth>0&&n.length&&(n.every(({fromA:c,toA:h})=>hthis.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(e);let r=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((i=this.domChanged)===null||i===void 0)&&i.newSel?r=this.domChanged.newSel.head:!Fw(e.changes,this.hasComposition)&&!e.selectionSet&&(r=e.state.selection.main.head));let s=r>-1?Lw(this.view,e.changes,r):null;if(this.domChanged=null,this.hasComposition){let{from:c,to:h}=this.hasComposition;n=new jt(c,h,e.changes.mapPos(c,-1),e.changes.mapPos(h,1)).addToSet(n.slice())}this.hasComposition=s?{from:s.range.fromB,to:s.range.toB}:null,(q.ie||q.chrome)&&!s&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,l=this.blockWrappers;this.updateDeco();let a=Iw(o,this.decorations,e.changes);a.length&&(n=jt.extendWithRanges(n,a));let u=zw(l,this.blockWrappers,e.changes);return u.length&&(n=jt.extendWithRanges(n,u)),s&&!n.some(c=>c.fromA<=s.range.fromA&&c.toA>=s.range.toA)&&(n=s.range.addToSet(n.slice())),this.tile.flags&2&&n.length==0?!1:(this.updateInner(n,s),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,i){this.view.viewState.mustMeasureContent=!0;let{observer:n}=this.view;n.ignore(()=>{if(i||e.length){let o=this.tile,l=new Tw(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);i&&De.get(i.text)&&l.cache.reused.set(De.get(i.text),2),this.tile=l.run(e,i),Gu(o,l.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let s=q.chrome||q.ios?{node:n.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(s),s&&(s.written||n.selectionRange.focusNode!=s.node||!this.tile.dom.contains(s.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let r=[];if(this.view.viewport.from||this.view.viewport.to-1)&&cs(n,this.view.observer.selectionRange)&&!(r&&n.contains(r));if(!(s||i||o))return;let l=this.forceSelection;this.forceSelection=!1;let a=this.view.state.selection.main,u,c;if(a.empty?c=u=this.inlineDOMNearPos(a.anchor,a.assoc||1):(c=this.inlineDOMNearPos(a.head,a.head==a.from?1:-1),u=this.inlineDOMNearPos(a.anchor,a.anchor==a.from?1:-1)),q.gecko&&a.empty&&!this.hasComposition&&Dw(u)){let f=document.createTextNode("");this.view.observer.ignore(()=>u.node.insertBefore(f,u.node.childNodes[u.offset]||null)),u=c=new oi(f,0),l=!0}let h=this.view.observer.selectionRange;(l||!h.focusNode||(!fs(u.node,u.offset,h.anchorNode,h.anchorOffset)||!fs(c.node,c.offset,h.focusNode,h.focusOffset))&&!this.suppressWidgetCursorChange(h,a))&&(this.view.observer.ignore(()=>{q.android&&q.chrome&&n.contains(h.focusNode)&&jw(h.focusNode,n)&&(n.blur(),n.focus({preventScroll:!0}));let f=As(this.view.root);if(f)if(a.empty){if(q.gecko){let d=Mw(u.node,u.offset);if(d&&d!=3){let p=(d==1?kO:SO)(u.node,u.offset);p&&(u=new oi(p.node,p.offset))}}f.collapse(u.node,u.offset),a.bidiLevel!=null&&f.caretBidiLevel!==void 0&&(f.caretBidiLevel=a.bidiLevel)}else if(f.extend){f.collapse(u.node,u.offset);try{f.extend(c.node,c.offset)}catch{}}else{let d=document.createRange();a.anchor>a.head&&([u,c]=[c,u]),d.setEnd(c.node,c.offset),d.setStart(u.node,u.offset),f.removeAllRanges(),f.addRange(d)}o&&this.view.root.activeElement==n&&(n.blur(),r&&r.focus())}),this.view.observer.setSelectionRange(u,c)),this.impreciseAnchor=u.precise?null:new oi(h.anchorNode,h.anchorOffset),this.impreciseHead=c.precise?null:new oi(h.focusNode,h.focusOffset)}suppressWidgetCursorChange(e,i){return this.hasComposition&&i.empty&&fs(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==i.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,i=e.state.selection.main,n=As(e.root),{anchorNode:r,anchorOffset:s}=e.observer.selectionRange;if(!n||!i.empty||!i.assoc||!n.modify)return;let o=this.lineAt(i.head,i.assoc);if(!o)return;let l=o.posAtStart;if(i.head==l||i.head==l+o.length)return;let a=this.coordsAt(i.head,-1),u=this.coordsAt(i.head,1);if(!a||!u||a.bottom>u.top)return;let c=this.domAtPos(i.head+i.assoc,i.assoc);n.collapse(c.node,c.offset),n.modify("move",i.assoc<0?"forward":"backward","lineboundary"),e.observer.readSelectionRange();let h=e.observer.selectionRange;e.docView.posFromDOM(h.anchorNode,h.anchorOffset)!=i.from&&n.collapse(r,s)}posFromDOM(e,i){let n=this.tile.nearest(e);if(!n)return this.tile.dom.compareDocumentPosition(e)&2?0:this.view.state.doc.length;let r=n.posAtStart;if(n.isComposite()){let s;if(e==n.dom)s=n.dom.childNodes[i];else{let o=Zi(e)==0?0:i==0?-1:1;for(;;){let l=e.parentNode;if(l==n.dom)break;o==0&&l.firstChild!=l.lastChild&&(e==l.firstChild?o=-1:o=1),e=l}o<0?s=e:s=e.nextSibling}if(s==n.dom.firstChild)return r;for(;s&&!De.get(s);)s=s.nextSibling;if(!s)return r+n.length;for(let o=0,l=r;;o++){let a=n.children[o];if(a.dom==s)return l;l+=a.length+a.breakAfter}}else return n.isText()?e==n.dom?r+i:r+(i?n.length:0):r}domAtPos(e,i){let{tile:n,offset:r}=this.tile.resolveBlock(e,i);return n.isWidget()?n.domPosFor(r,i):n.domIn(r,i)}inlineDOMNearPos(e,i){let n,r=-1,s=!1,o,l=-1,a=!1;return this.tile.blockTiles((u,c)=>{if(u.isWidget()){if(u.flags&32&&c>=e)return!0;u.flags&16&&(s=!0)}else{let h=c+u.length;if(c<=e&&(n=u,r=e-c,s=h=e&&!o&&(o=u,l=e-c,a=c>e),c>e&&o)return!0}}),!n&&!o?this.domAtPos(e,i):(s&&o?n=null:a&&n&&(o=null),n&&i<0||!o?n.domIn(r,i):o.domIn(l,i))}coordsAt(e,i,n){let{tile:r,offset:s}=this.tile.resolveBlock(e,i);return r.isWidget()?r.widget instanceof Da?null:r.coordsInWidget(s,i,!0):r.coordsIn(s,i,n)}lineAt(e,i){let{tile:n}=this.tile.resolveBlock(e,i);return n.isLine()?n:null}coordsForChar(e){let{tile:i,offset:n}=this.tile.resolveBlock(e,1);if(!i.isLine())return null;function r(s,o){if(s.isComposite())for(let l of s.children){if(l.length>=o){let a=r(l,o);if(a)return a}if(o-=l.length,o<0)break}else if(s.isText()&&oMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,a=this.view.textDirection==Ce.LTR,u=0,c=(h,f,d)=>{for(let p=0;pr);p++){let m=h.children[p],O=f+m.length,g=m.dom.getBoundingClientRect(),{height:b}=g;if(d&&!p&&(u+=g.top-d.top),m instanceof Di)O>n&&c(m,f,g);else if(f>=n&&(u>0&&i.push(-u),i.push(b+u),u=0,o)){let y=m.dom.lastChild,w=y?hs(y):[];if(w.length){let v=w[w.length-1],Q=a?v.right-g.left:g.right-v.left;Q>l&&(l=Q,this.minWidth=s,this.minWidthFrom=f,this.minWidthTo=O)}}d&&p==h.children.length-1&&(u+=d.bottom-g.bottom),f=O+m.breakAfter}};return c(this.tile,0,null),i}textDirectionAt(e){let{tile:i}=this.tile.resolveBlock(e,1);return getComputedStyle(i.dom).direction=="rtl"?Ce.RTL:Ce.LTR}measureTextSize(){let e=this.tile.blockTiles(o=>{if(o.isLine()&&o.children.length&&o.length<=20){let l=0,a;for(let u of o.children){if(!u.isText()||/[^ -~]/.test(u.text))return;let c=hs(u.dom);if(c.length!=1)return;l+=c[0].width,a=c[0].height}if(l)return{lineHeight:o.dom.getBoundingClientRect().height,charWidth:l/o.length,textHeight:a}}});if(e)return e;let i=document.createElement("div"),n,r,s;return i.className="cm-line",i.style.width="99999px",i.style.position="absolute",i.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(i);let o=hs(i.firstChild)[0];n=i.getBoundingClientRect().height,r=o&&o.width?o.width/27:7,s=o&&o.height?o.height:n,i.remove()}),{lineHeight:n,charWidth:r,textHeight:s}}computeBlockGapDeco(){let e=[],i=this.view.viewState;for(let n=0,r=0;;r++){let s=r==i.viewports.length?null:i.viewports[r],o=s?s.from-1:this.view.state.doc.length;if(o>n){let l=(i.lineBlockAt(o).bottom-i.lineBlockAt(n).top)/this.view.scaleY;e.push(ve.replace({widget:new Da(l),block:!0,inclusive:!0,isBlockGap:!0}).range(n,o))}if(!s)break;n=s.to+1}return ve.set(e)}updateDeco(){let e=1,i=this.view.state.facet(sa).map(s=>(this.dynamicDecorationMap[e++]=typeof s=="function")?s(this.view):s),n=!1,r=this.view.state.facet(Wc).map((s,o)=>{let l=typeof s=="function";return l&&(n=!0),l?s(this.view):s});for(r.length&&(this.dynamicDecorationMap[e++]=n,i.push(be.join(r))),this.decorations=[this.editContextFormatting,...i,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];etypeof s=="function"?s(this.view):s)}scrollIntoView(e){if(e.isSnapshot){let u=this.view.viewState.lineBlockAt(e.range.head);this.view.scrollDOM.scrollTop=u.top-e.yMargin,this.view.scrollDOM.scrollLeft=e.xMargin;return}for(let u of this.view.state.facet(ZO))try{if(u(this.view,e.range,e))return!0}catch(c){Rt(this.view.state,c,"scroll handler")}let{range:i}=e,n=this.coordsAt(i.head,i.assoc||(i.head>i.anchor?-1:1)),r;if(!n)return;!i.empty&&(r=this.coordsAt(i.anchor,i.anchor>i.head?-1:1))&&(n={left:Math.min(n.left,r.left),top:Math.min(n.top,r.top),right:Math.max(n.right,r.right),bottom:Math.max(n.bottom,r.bottom)});let s=Yc(this.view),o={left:n.left-s.left,top:n.top-s.top,right:n.right+s.right,bottom:n.bottom+s.bottom},{offsetWidth:l,offsetHeight:a}=this.view.scrollDOM;if(aw(this.view.scrollDOM,o,i.head1&&(n.top>window.pageYOffset+window.visualViewport.offsetTop+window.visualViewport.height||n.bottomn.isWidget()||n.children.some(i);return i(this.tile.resolveBlock(e,1).tile)}destroy(){Gu(this.tile)}}function Gu(t,e){let i=e==null?void 0:e.get(t);if(i!=1){i==null&&t.destroy();for(let n of t.children)Gu(n,e)}}function Dw(t){return t.node.nodeType==1&&t.node.firstChild&&(t.offset==0||t.node.childNodes[t.offset-1].contentEditable=="false")&&(t.offset==t.node.childNodes.length||t.node.childNodes[t.offset].contentEditable=="false")}function VO(t,e){let i=t.observer.selectionRange;if(!i.focusNode)return null;let n=kO(i.focusNode,i.focusOffset),r=SO(i.focusNode,i.focusOffset),s=n||r;if(r&&n&&r.node!=n.node){let l=De.get(r.node);if(!l||l.isText()&&l.text!=r.node.nodeValue)s=r;else if(t.docView.lastCompositionAfterCursor){let a=De.get(n.node);!a||a.isText()&&a.text!=n.node.nodeValue||(s=r)}}if(t.docView.lastCompositionAfterCursor=s!=n,!s)return null;let o=e-s.offset;return{from:o,to:o+s.node.nodeValue.length,node:s.node}}function Lw(t,e,i){let n=VO(t,i);if(!n)return null;let{node:r,from:s,to:o}=n,l=r.nodeValue;if(/[\n\r]/.test(l)||t.state.doc.sliceString(n.from,n.to)!=l)return null;let a=e.invertedDesc;return{range:new jt(a.mapPos(s),a.mapPos(o),s,o),text:r}}function Mw(t,e){return t.nodeType!=1?0:(e&&t.childNodes[e-1].contentEditable=="false"?1:0)|(e{ne.from&&(i=!0)}),i}class Da extends Er{constructor(e){super(),this.height=e}toDOM(){let e=document.createElement("div");return e.className="cm-gap",this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}}function Bw(t,e,i=1){let n=t.charCategorizer(e),r=t.doc.lineAt(e),s=e-r.from;if(r.length==0)return E.cursor(e);s==0?i=1:s==r.length&&(i=-1);let o=s,l=s;i<0?o=Ge(r.text,s,!1):l=Ge(r.text,s);let a=n(r.text.slice(o,l));for(;o>0;){let u=Ge(r.text,o,!1);if(n(r.text.slice(u,o))!=a)break;o=u}for(;lt.defaultLineHeight*1.5){let l=t.viewState.heightOracle.textHeight,a=Math.floor((r-i.top-(t.defaultLineHeight-l)*.5)/l);s+=a*t.viewState.heightOracle.lineLength}let o=t.state.sliceDoc(i.from,i.to);return i.from+JS(o,s,t.state.tabSize)}function Uu(t,e,i){let n=t.lineBlockAt(e);if(Array.isArray(n.type)){let r;for(let s of n.type){if(s.from>e)break;if(!(s.toe)return s;(!r||s.type==ft.Text&&(r.type!=s.type||(i<0?s.frome)))&&(r=s)}}return r||n}return n}function qw(t,e,i,n){let r=Uu(t,e.head,e.assoc||-1),s=!n||r.type!=ft.Text||!(t.lineWrapping||r.widgetLineBreaks)?null:t.coordsAtPos(e.assoc<0&&e.head>r.from?e.head-1:e.head);if(s){let o=t.dom.getBoundingClientRect(),l=t.textDirectionAt(r.from),a=t.posAtCoords({x:i==(l==Ce.LTR)?o.right-1:o.left+1,y:(s.top+s.bottom)/2});if(a!=null)return E.cursor(a,i?-1:1)}return E.cursor(i?r.to:r.from,i?-1:1)}function Zd(t,e,i,n){let r=t.state.doc.lineAt(e.head),s=t.bidiSpans(r),o=t.textDirectionAt(r.from);for(let l=e,a=null;;){let u=vw(r,s,o,l,i),c=PO;if(!u){if(r.number==(i?t.state.doc.lines:1))return l;c=` +`,r=t.state.doc.line(r.number+(i?1:-1)),s=t.bidiSpans(r),u=t.visualLineSide(r,!i)}if(a){if(!a(c))return l}else{if(!n)return u;a=n(c)}l=u}}function Ww(t,e,i){let n=t.state.charCategorizer(e),r=n(i);return s=>{let o=n(s);return r==Je.Space&&(r=o),r==o}}function Yw(t,e,i,n){let r=e.head,s=i?1:-1;if(r==(i?t.state.doc.length:0))return E.cursor(r,e.assoc);let o=e.goalColumn,l,a=t.contentDOM.getBoundingClientRect(),u=t.coordsAtPos(r,e.assoc||((e.empty?i:e.head==e.from)?1:-1)),c=t.documentTop;if(u)o==null&&(o=u.left-a.left),l=s<0?u.top:u.bottom;else{let p=t.viewState.lineBlockAt(r);o==null&&(o=Math.min(a.right-a.left,t.defaultCharacterWidth*(r-p.from))),l=(s<0?p.top:p.bottom)+c}let h=a.left+o,f=t.viewState.heightOracle.textHeight>>1,d=n??f;for(let p=0;;p+=f){let m=l+(d+p)*s,O=Hu(t,{x:h,y:m},!1,s);if(i?m>a.bottom:ml:b{if(e>s&&er(t)),i.from,e.head>i.from?-1:1);return n==i.from?i:E.cursor(n,nt.viewState.docHeight)return new bi(t.state.doc.length,-1);if(u=t.elementAtHeight(a),n==null)break;if(u.type==ft.Text){if(n<0?u.tot.viewport.to)break;let f=t.docView.coordsAt(n<0?u.from:u.to,n>0?-1:1);if(f&&(n<0?f.top<=a+s:f.bottom>=a+s))break}let h=t.viewState.heightOracle.textHeight/2;a=n>0?u.bottom+h:u.top-h}if(t.viewport.from>=u.to||t.viewport.to<=u.from){if(i)return null;if(u.type==ft.Text){let h=Vw(t,r,u,o,l);return new bi(h,h==u.from?1:-1)}}if(u.type!=ft.Text)return a<(u.top+u.bottom)/2?new bi(u.from,1):new bi(u.to,-1);let c=t.docView.lineAt(u.from,2);return(!c||c.length!=u.length)&&(c=t.docView.lineAt(u.from,-2)),new Nw(t,o,l,t.textDirectionAt(u.from)).scanTile(c,u.from)}class Nw{constructor(e,i,n,r){this.view=e,this.x=i,this.y=n,this.baseDir=r,this.line=null,this.spans=null}bidiSpansAt(e){return(!this.line||this.line.from>e||this.line.to1||n.length&&(n[0].level!=this.baseDir||n[0].to+r.from>1;t:if(o.has(m)){let g=r+Math.floor(Math.random()*p);for(let b=0;b1)){if(b.bottomthis.y)(!u||u.top>b.top)&&(u=b),y=-1;else{let w=b.left>this.x?this.x-b.left:b.right(p+p+m)/3)return this.y=a.bottom-1,this.scan(e,i,!0);if(u&&u.top<(p+m+m)/3)return this.y=u.top+1,this.scan(e,i,!0)}let d=(l?this.dirAt(e[c],1):this.baseDir)==Ce.LTR;return{i:c,after:this.x>(f.left+f.right)/2==d}}scanText(e,i){let n=[];for(let s=0;s{let o=n[s]-i,l=n[s+1]-i;return Rs(e.dom,o,l).getClientRects()});return r.after?new bi(n[r.i+1],-1):new bi(n[r.i],1)}scanTile(e,i){if(!e.length)return new bi(i,1);if(e.children.length==1){let l=e.children[0];if(l.isText())return this.scanText(l,i);if(l.isComposite())return this.scanTile(l,i)}let n=[i];for(let l=0,a=i;l{let a=e.children[l];return a.flags&48?null:(a.dom.nodeType==1?a.dom:Rs(a.dom,0,a.length)).getClientRects()}),s=e.children[r.i],o=n[r.i];return s.isText()?this.scanText(s,o):s.isComposite()?this.scanTile(s,o):r.after?new bi(n[r.i+1],-1):new bi(o,1)}}const qn="￿";class Gw{constructor(e,i){this.points=e,this.view=i,this.text="",this.lineSeparator=i.state.facet(fe.lineSeparator)}append(e){this.text+=e}lineBreak(){this.text+=qn}readRange(e,i){if(!e)return this;let n=e.parentNode;for(let r=e;;){this.findPointBefore(n,r);let s=this.text.length;this.readNode(r);let o=De.get(r),l=r.nextSibling;if(l==i){o!=null&&o.breakAfter&&!l&&n!=this.view.contentDOM&&this.lineBreak();break}let a=De.get(l);(o&&a?o.breakAfter:(o?o.breakAfter:xl(r))||xl(l)&&(r.nodeName!="BR"||o!=null&&o.isWidget())&&this.text.length>s)&&!Hw(l,i)&&this.lineBreak(),r=l}return this.findPointBefore(n,i),this}readTextNode(e){let i=e.nodeValue;for(let n of this.points)n.node==e&&(n.pos=this.text.length+Math.min(n.offset,i.length));for(let n=0,r=this.lineSeparator?null:/\r\n?|\n/g;;){let s=-1,o=1,l;if(this.lineSeparator?(s=i.indexOf(this.lineSeparator,n),o=this.lineSeparator.length):(l=r.exec(i))&&(s=l.index,o=l[0].length),this.append(i.slice(n,s<0?i.length:s)),s<0)break;if(this.lineBreak(),o>1)for(let a of this.points)a.node==e&&a.pos>this.text.length&&(a.pos-=o-1);n=s+o}}readNode(e){let i=De.get(e),n=i&&i.overrideDOMText;if(n!=null){this.findPointInside(e,n.length);for(let r=n.iter();!r.next().done;)r.lineBreak?this.lineBreak():this.append(r.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,i){for(let n of this.points)n.node==e&&e.childNodes[n.offset]==i&&(n.pos=this.text.length)}findPointInside(e,i){for(let n of this.points)(e.nodeType==3?n.node==e:e.contains(n.node))&&(n.pos=this.text.length+(Uw(e,n.node,n.offset)?i:0))}}function Uw(t,e,i){for(;;){if(!e||i-1;let{impreciseHead:s,impreciseAnchor:o}=e.docView,l=e.state.selection;if(e.state.readOnly&&i>-1)this.newSel=null;else if(i>-1&&(this.bounds=WO(e.docView.tile,i,n,0))){let a=s||o?[]:e3(e),u=new Gw(a,e);u.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=u.text,this.newSel=t3(a,this.bounds.from)}else{let a=e.observer.selectionRange,u=s&&s.node==a.focusNode&&s.offset==a.focusOffset||!Vu(e.contentDOM,a.focusNode)?l.main.head:e.docView.posFromDOM(a.focusNode,a.focusOffset),c=o&&o.node==a.anchorNode&&o.offset==a.anchorOffset||!Vu(e.contentDOM,a.anchorNode)?l.main.anchor:e.docView.posFromDOM(a.anchorNode,a.anchorOffset),h=e.viewport;if((q.ios||q.chrome)&&u!=c&&Math.min(u,c)<=l.main.from&&Math.max(u,c)>=l.main.to&&(h.from>0||h.to-1&&l.ranges.length>1)this.newSel=l.replaceRange(E.range(c,u));else if(e.lineWrapping&&c==u&&!(l.main.empty&&l.main.head==u)&&e.inputState.lastTouchTime>Date.now()-100){let f=e.coordsAtPos(u,-1),d=0;f&&(d=e.inputState.lastTouchY<=f.bottom?-1:1),this.newSel=E.create([E.cursor(u,d)])}else this.newSel=E.single(c,u)}}}function WO(t,e,i,n){if(t.isComposite()){let r=-1,s=-1,o=-1,l=-1;for(let a=0,u=n,c=n;ai)return WO(h,e,i,u);if(f>=e&&r==-1&&(r=a,s=u),u>i&&h.dom.parentNode==t.dom){o=a,l=c;break}c=f,u=f+h.breakAfter}return{from:s,to:l<0?n+t.length:l,startDOM:(r?t.children[r-1].dom.nextSibling:null)||t.dom.firstChild,endDOM:o=0?t.children[o].dom:null}}else return t.isText()?{from:n,to:n+t.length,startDOM:t.dom,endDOM:t.dom.nextSibling}:null}function YO(t,e){let i,{newSel:n}=e,{state:r}=t,s=r.selection.main,o=t.inputState.lastKeyTime>Date.now()-100?t.inputState.lastKeyCode:-1;if(e.bounds){let{from:l,to:a}=e.bounds,u=s.from,c=null;(o===8||q.android&&e.text.length=l&&s.to<=a&&(e.typeOver||h!=e.text)&&h.slice(0,s.from-l)==e.text.slice(0,s.from-l)&&h.slice(s.to-l)==e.text.slice(f=e.text.length-(h.length-(s.to-l)))?i={from:s.from,to:s.to,insert:de.of(e.text.slice(s.from-l,f).split(qn))}:(d=NO(h,e.text,u-l,c))&&(q.chrome&&o==13&&d.toB==d.from+2&&e.text.slice(d.from,d.toB)==qn+qn&&d.toB--,i={from:l+d.from,to:l+d.toA,insert:de.of(e.text.slice(d.from,d.toB).split(qn))})}else n&&(!t.hasFocus&&r.facet(Ri)||$l(n,s))&&(n=null);if(!i&&!n)return!1;if((q.mac||q.android)&&i&&i.from==i.to&&i.from==s.head-1&&/^\. ?$/.test(i.insert.toString())&&t.contentDOM.getAttribute("autocorrect")=="off"?(n&&i.insert.length==2&&(n=E.single(n.main.anchor-1,n.main.head-1)),i={from:i.from,to:i.to,insert:de.of([i.insert.toString().replace("."," ")])}):r.doc.lineAt(s.from).toDate.now()-50?i={from:s.from,to:s.to,insert:r.toText(t.inputState.insertingText)}:q.chrome&&i&&i.from==i.to&&i.from==s.head&&i.insert.toString()==` + `&&t.lineWrapping&&(n&&(n=E.single(n.main.anchor-1,n.main.head-1)),i={from:s.from,to:s.to,insert:de.of([" "])}),i)return Nc(t,i,n,o);if(n&&!$l(n,s)){let l=!1,a="select";return t.inputState.lastSelectionTime>Date.now()-50&&(t.inputState.lastSelectionOrigin=="select"&&(l=!0),a=t.inputState.lastSelectionOrigin,a=="select.pointer"&&(n=qO(r.facet(to).map(u=>u(t)),n))),t.dispatch({selection:n,scrollIntoView:l,userEvent:a}),!0}else return!1}function Nc(t,e,i,n=-1){if(q.ios&&t.inputState.flushIOSKey(e))return!0;let r=t.state.selection.main;if(q.android&&(e.to==r.to&&(e.from==r.from||e.from==r.from-1&&t.state.sliceDoc(e.from,r.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&ir(t.contentDOM,"Enter",13)||(e.from==r.from-1&&e.to==r.to&&e.insert.length==0||n==8&&e.insert.lengthr.head)&&ir(t.contentDOM,"Backspace",8)||e.from==r.from&&e.to==r.to+1&&e.insert.length==0&&ir(t.contentDOM,"Delete",46)))return!0;let s=e.insert.toString();t.inputState.composing>=0&&t.inputState.composing++;let o,l=()=>o||(o=Jw(t,e,i));return t.state.facet(RO).some(a=>a(t,e.from,e.to,s,l))||t.dispatch(l()),!0}function Jw(t,e,i){let n,r=t.state,s=r.selection.main,o=-1;if(e.from==e.to&&e.froms.to){let a=e.fromh(t)),u,a);e.from==c&&(o=c)}if(o>-1)n={changes:e,selection:E.cursor(e.from+e.insert.length,-1)};else if(e.from>=s.from&&e.to<=s.to&&e.to-e.from>=(s.to-s.from)/3&&(!i||i.main.empty&&i.main.from==e.from+e.insert.length)&&t.inputState.composing<0){let a=s.frome.to?r.sliceDoc(e.to,s.to):"";n=r.replaceSelection(t.state.toText(a+e.insert.sliceString(0,void 0,t.state.lineBreak)+u))}else{let a=r.changes(e),u=i&&i.main.to<=a.newLength?i.main:void 0;if(r.selection.ranges.length>1&&(t.inputState.composing>=0||t.inputState.compositionPendingChange)&&e.to<=s.to+10&&e.to>=s.to-10){let c=t.state.sliceDoc(e.from,e.to),h,f=i&&VO(t,i.main.head);if(f){let p=e.insert.length-(e.to-e.from);h={from:f.from,to:f.to-p}}else h=t.state.doc.lineAt(s.head);let d=s.to-e.to;n=r.changeByRange(p=>{if(p.from==s.from&&p.to==s.to)return{changes:a,range:u||p.map(a)};let m=p.to-d,O=m-c.length;if(t.state.sliceDoc(O,m)!=c||m>=h.from&&O<=h.to)return{range:p};let g=r.changes({from:O,to:m,insert:e.insert}),b=p.to-s.to;return{changes:g,range:u?E.range(Math.max(0,u.anchor+b),Math.max(0,u.head+b)):p.map(g)}})}else n={changes:a,selection:u&&r.selection.replaceRange(u)}}let l="input.type";return(t.composing||t.inputState.compositionPendingChange&&t.inputState.compositionEndedAt>Date.now()-50)&&(t.inputState.compositionPendingChange=!1,l+=".compose",t.inputState.compositionFirstChange&&(l+=".start",t.inputState.compositionFirstChange=!1)),r.update(n,{userEvent:l,scrollIntoView:!0})}function NO(t,e,i,n){let r=Math.min(t.length,e.length),s=0;for(;s0&&l>0&&t.charCodeAt(o-1)==e.charCodeAt(l-1);)o--,l--;if(n=="end"){let a=Math.max(0,s-Math.min(o,l));i-=o+a-s}if(o=o?s-i:0;s-=a,l=s+(l-o),o=s}else if(l=l?s-i:0;s-=a,o=s+(o-l),l=s}return{from:s,toA:o,toB:l}}function e3(t){let e=[];if(t.root.activeElement!=t.contentDOM)return e;let{anchorNode:i,anchorOffset:n,focusNode:r,focusOffset:s}=t.observer.selectionRange;return i&&(e.push(new Id(i,n)),(r!=i||s!=n)&&e.push(new Id(r,s))),e}function t3(t,e){if(t.length==0)return null;let i=t[0].pos,n=t.length==2?t[1].pos:i;return i>-1&&n>-1?E.single(i+e,n+e):null}function $l(t,e){return e.head==t.main.head&&e.anchor==t.main.anchor}class i3{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.touchActive=!1,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.lastIOSMomentumScroll=0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,q.safari&&e.contentDOM.addEventListener("input",()=>null),q.gecko&&b3(e.contentDOM.ownerDocument)}handleEvent(e){!h3(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(e.type,e)):this.runHandlers(e.type,e))}runHandlers(e,i){let n=this.handlers[e];if(n){for(let r of n.observers)r(this.view,i);for(let r of n.handlers){if(i.defaultPrevented)break;if(r(this.view,i)){i.preventDefault();break}}}}ensureHandlers(e){let i=r3(e),n=this.handlers,r=this.view.contentDOM;for(let s in i)if(s!="scroll"){let o=!i[s].handlers.length,l=n[s];l&&o!=!l.handlers.length&&(r.removeEventListener(s,this.handleEvent),l=null),l||r.addEventListener(s,this.handleEvent,{passive:o})}for(let s in n)s!="scroll"&&!i[s]&&r.removeEventListener(s,this.handleEvent);this.handlers=i}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),e.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&e.keyCode!=27&&UO.indexOf(e.keyCode)<0&&(this.tabFocusMode=-1),q.android&&q.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;if(q.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&(GO.some(i=>i.keyCode==e.keyCode)&&!e.ctrlKey||s3.indexOf(e.key)>-1&&e.ctrlKey)){let i={ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey,shiftKey:e.shiftKey};return i.shiftKey&&q.ios&&!/^(off|none)$/.test(this.view.contentDOM.autocapitalize)&&n3(this.view.win)&&(i.shiftKey=!1),this.pendingIOSKey={key:e.key,keyCode:e.keyCode,mods:i},setTimeout(()=>this.flushIOSKey(),250),!0}return e.keyCode!=229&&this.view.observer.forceFlush(),!1}flushIOSKey(e){let i=this.pendingIOSKey;return!i||i.key=="Enter"&&e&&e.from0?!0:q.safari&&!q.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.view.observer.update(e),this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}function n3(t){return t.visualViewport?t.visualViewport.height*t.visualViewport.scale/t.document.documentElement.clientHeight<.85:!1}function Xd(t,e){return(i,n)=>{try{return e.call(t,n,i)}catch(r){Rt(i.state,r)}}}function r3(t){let e=Object.create(null);function i(n){return e[n]||(e[n]={observers:[],handlers:[]})}for(let n of t){let r=n.spec,s=r&&r.plugin.domEventHandlers,o=r&&r.plugin.domEventObservers;if(s)for(let l in s){let a=s[l];a&&i(l).handlers.push(Xd(n.value,a))}if(o)for(let l in o){let a=o[l];a&&i(l).observers.push(Xd(n.value,a))}}for(let n in ai)i(n).handlers.push(ai[n]);for(let n in pt)i(n).observers.push(pt[n]);return e}const GO=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],s3="dthko",UO=[16,17,18,20,91,92,224,225],$o=6;function Qo(t){return Math.max(0,t)*.7+8}function o3(t,e){return Math.max(Math.abs(t.clientX-e.clientX),Math.abs(t.clientY-e.clientY))}class l3{constructor(e,i,n,r){this.view=e,this.startEvent=i,this.style=n,this.mustSelect=r,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=i,this.scrollParents=vO(e.contentDOM),this.atoms=e.state.facet(to).map(o=>o(e));let s=e.contentDOM.ownerDocument;s.addEventListener("mousemove",this.move=this.move.bind(this)),s.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=i.shiftKey,this.multiple=e.state.facet(fe.allowMultipleSelections)&&a3(e,i),this.dragging=c3(e,i)&&JO(i)==1?null:!1}start(e){this.dragging===!1&&this.select(e)}move(e){if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&o3(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let i=0,n=0,r=0,s=0,o=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:r,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:s,bottom:l}=this.scrollParents.y.getBoundingClientRect());let a=Yc(this.view);e.clientX-a.left<=r+$o?i=-Qo(r-e.clientX):e.clientX+a.right>=o-$o&&(i=Qo(e.clientX-o)),e.clientY-a.top<=s+$o?n=-Qo(s-e.clientY):e.clientY+a.bottom>=l-$o&&(n=Qo(e.clientY-l)),this.setScrollSpeed(i,n)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,i){this.scrollSpeed={x:e,y:i},e||i?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:e,y:i}=this.scrollSpeed;e&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=e,e=0),i&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=i,i=0),(e||i)&&this.view.win.scrollBy(e,i),this.dragging===!1&&this.select(this.lastEvent)}select(e){let{view:i}=this,n=qO(this.atoms,this.style.get(e,this.extend,this.multiple));(this.mustSelect||!n.eq(i.state.selection,this.dragging===!1))&&this.view.dispatch({selection:n,userEvent:"select.pointer"}),this.mustSelect=!1}update(e){e.transactions.some(i=>i.isUserEvent("input.type"))?this.destroy():this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}}function a3(t,e){let i=t.state.facet(CO);return i.length?i[0](e):q.mac?e.metaKey:e.ctrlKey}function u3(t,e){let i=t.state.facet(TO);return i.length?i[0](e):q.mac?!e.altKey:!e.ctrlKey}function c3(t,e){let{main:i}=t.state.selection;if(i.empty)return!1;let n=As(t.root);if(!n||n.rangeCount==0)return!0;let r=n.getRangeAt(0).getClientRects();for(let s=0;s=e.clientX&&o.top<=e.clientY&&o.bottom>=e.clientY)return!0}return!1}function h3(t,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let i=e.target,n;i!=t.contentDOM;i=i.parentNode)if(!i||i.nodeType==11||(n=De.get(i))&&n.isWidget()&&!n.isHidden&&n.widget.ignoreEvent(e))return!1;return!0}const ai=Object.create(null),pt=Object.create(null),HO=q.ie&&q.ie_version<15||q.ios&&q.webkit_version<604;function f3(t){let e=t.dom.parentNode;if(!e)return;let i=e.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.focus(),setTimeout(()=>{t.focus(),i.remove(),KO(t,i.value)},50)}function aa(t,e,i){for(let n of t.facet(e))i=n(i,t);return i}function KO(t,e){e=aa(t.state,Bc,e);let{state:i}=t,n,r=1,s=i.toText(e),o=s.lines==i.selection.ranges.length;if(Ku!=null&&i.selection.ranges.every(a=>a.empty)&&Ku==s.toString()){let a=-1;n=i.changeByRange(u=>{let c=i.doc.lineAt(u.from);if(c.from==a)return{range:u};a=c.from;let h=i.toText((o?s.line(r++).text:e)+i.lineBreak);return{changes:{from:c.from,insert:h},range:E.cursor(u.from+h.length)}})}else o?n=i.changeByRange(a=>{let u=s.line(r++);return{changes:{from:a.from,to:a.to,insert:u.text},range:E.cursor(a.from+u.length)}}):n=i.replaceSelection(s);t.dispatch(n,{userEvent:"input.paste",scrollIntoView:!0})}pt.scroll=t=>{let e=t.inputState;e.lastScrollTop=t.scrollDOM.scrollTop,e.lastScrollLeft=t.scrollDOM.scrollLeft,q.ios&&!e.touchActive&&(e.lastIOSMomentumScroll=Date.now())};pt.wheel=pt.mousewheel=t=>{t.inputState.lastWheelEvent=Date.now()};ai.keydown=(t,e)=>(t.inputState.setSelectionOrigin("select"),e.keyCode==27&&t.inputState.tabFocusMode!=0&&(t.inputState.tabFocusMode=Date.now()+2e3),!1);pt.touchstart=(t,e)=>{let i=t.inputState,n=e.targetTouches[0];i.touchActive=!0,i.lastTouchTime=Date.now(),n&&(i.lastTouchX=n.clientX,i.lastTouchY=n.clientY),i.setSelectionOrigin("select.pointer")};pt.touchmove=t=>{t.inputState.setSelectionOrigin("select.pointer")};pt.touchend=(t,e)=>{t.inputState.touchActive=!1};ai.mousedown=(t,e)=>{if(t.observer.flush(),t.inputState.lastTouchTime>Date.now()-2e3)return!1;let i=null;for(let n of t.state.facet(AO))if(i=n(t,e),i)break;if(!i&&e.button==0&&(i=p3(t,e)),i){let n=!t.hasFocus;t.inputState.startMouseSelection(new l3(t,e,i,n)),n&&t.observer.ignore(()=>{yO(t.contentDOM);let s=t.root.activeElement;s&&!s.contains(t.contentDOM)&&s.blur()});let r=t.inputState.mouseSelection;if(r)return r.start(e),r.dragging===!1}else t.inputState.setSelectionOrigin("select.pointer");return!1};function zd(t,e,i,n){if(n==1)return E.cursor(e,i);if(n==2)return Bw(t.state,e,i);{let r=t.docView.lineAt(e,i),s=t.state.doc.lineAt(r?r.posAtEnd:e),o=r?r.posAtStart:s.from,l=r?r.posAtEnd:s.to;return lDate.now()-400&&Math.abs(e.clientX-t.clientX)<2&&Math.abs(e.clientY-t.clientY)<2?(Fd+1)%3:1}function p3(t,e){let i=t.posAndSideAtCoords({x:e.clientX,y:e.clientY},!1),n=JO(e),r=t.state.selection;return{update(s){s.docChanged&&(i.pos=s.changes.mapPos(i.pos),r=r.map(s.changes))},get(s,o,l){let a=t.posAndSideAtCoords({x:s.clientX,y:s.clientY},!1),u,c=zd(t,a.pos,a.assoc,n);if(i.pos!=a.pos&&!o){let h=zd(t,i.pos,i.assoc,n),f=Math.min(h.from,c.from),d=Math.max(h.to,c.to);c=f1&&(u=m3(r,a.pos))?u:l?r.addRange(c):E.create([c])}}}function m3(t,e){for(let i=0;i=e)return E.create(t.ranges.slice(0,i).concat(t.ranges.slice(i+1)),t.mainIndex==i?0:t.mainIndex-(t.mainIndex>i?1:0))}return null}ai.dragstart=(t,e)=>{let{selection:{main:i}}=t.state;if(e.target.draggable){let r=t.docView.tile.nearest(e.target);if(r&&r.isWidget()){let s=r.posAtStart,o=s+r.length;(s>=i.to||o<=i.from)&&(i=E.undirectionalRange(s,o))}}let{inputState:n}=t;return n.mouseSelection&&(n.mouseSelection.dragging=!0),n.draggedContent=i,e.dataTransfer&&(e.dataTransfer.setData("Text",aa(t.state,Vc,t.state.sliceDoc(i.from,i.to))),e.dataTransfer.effectAllowed="copyMove"),!1};ai.dragend=t=>(t.inputState.draggedContent=null,!1);function Vd(t,e,i,n){if(i=aa(t.state,Bc,i),!i)return;let r=t.posAtCoords({x:e.clientX,y:e.clientY},!1),{draggedContent:s}=t.inputState,o=n&&s&&u3(t,e)?{from:s.from,to:s.to}:null,l={from:r,insert:i},a=t.state.changes(o?[o,l]:l);t.focus(),t.dispatch({changes:a,selection:{anchor:a.mapPos(r,-1),head:a.mapPos(r,1)},userEvent:o?"move.drop":"input.drop"}),t.inputState.draggedContent=null}ai.drop=(t,e)=>{if(!e.dataTransfer)return!1;if(t.state.readOnly)return!0;let i=e.dataTransfer.files;if(i&&i.length){let n=Array(i.length),r=0,s=()=>{++r==i.length&&Vd(t,e,n.filter(o=>o!=null).join(t.state.lineBreak),!1)};for(let o=0;o{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(n[o]=l.result),s()},l.readAsText(i[o])}return!0}else{let n=e.dataTransfer.getData("Text");if(n)return Vd(t,e,n,!0),!0}return!1};ai.paste=(t,e)=>{if(t.state.readOnly)return!0;t.observer.flush();let i=HO?null:e.clipboardData;return i?(KO(t,i.getData("text/plain")||i.getData("text/uri-list")),!0):(f3(t),!1)};function O3(t,e){let i=t.dom.parentNode;if(!i)return;let n=i.appendChild(document.createElement("textarea"));n.style.cssText="position: fixed; left: -10000px; top: 10px",n.value=e,n.focus(),n.selectionEnd=e.length,n.selectionStart=0,setTimeout(()=>{n.remove(),t.focus()},50)}function g3(t){let e=[],i=[],n=!1;for(let r of t.selection.ranges)r.empty||(e.push(t.sliceDoc(r.from,r.to)),i.push(r));if(!e.length){let r=-1;for(let{from:s}of t.selection.ranges){let o=t.doc.lineAt(s);o.number>r&&(e.push(o.text),i.push({from:o.from,to:Math.min(t.doc.length,o.to+1)})),r=o.number}n=!0}return{text:aa(t,Vc,e.join(t.lineBreak)),ranges:i,linewise:n}}let Ku=null;ai.copy=ai.cut=(t,e)=>{if(!cs(t.contentDOM,t.observer.selectionRange))return!1;let{text:i,ranges:n,linewise:r}=g3(t.state);if(!i&&!r)return!1;Ku=r?i:null,e.type=="cut"&&!t.state.readOnly&&t.dispatch({changes:n,scrollIntoView:!0,userEvent:"delete.cut"});let s=HO?null:e.clipboardData;return s?(s.clearData(),s.setData("text/plain",i),!0):(O3(t,i),!1)};const eg=Xi.define();function tg(t,e){let i=[];for(let n of t.facet(DO)){let r=n(t,e);r&&i.push(r)}return i.length?t.update({effects:i,annotations:eg.of(!0)}):null}function ig(t){setTimeout(()=>{let e=t.hasFocus;if(e!=t.inputState.notifiedFocused){let i=tg(t.state,e);i?t.dispatch(i):t.update([])}},10)}pt.focus=t=>{t.inputState.lastFocusTime=Date.now(),!t.scrollDOM.scrollTop&&(t.inputState.lastScrollTop||t.inputState.lastScrollLeft)&&(t.scrollDOM.scrollTop=t.inputState.lastScrollTop,t.scrollDOM.scrollLeft=t.inputState.lastScrollLeft),ig(t)};pt.blur=t=>{t.observer.clearSelectionRange(),ig(t)};pt.compositionstart=pt.compositionupdate=t=>{t.observer.editContext||(t.inputState.compositionFirstChange==null&&(t.inputState.compositionFirstChange=!0),t.inputState.composing<0&&(t.inputState.composing=0))};pt.compositionend=t=>{t.observer.editContext||(t.inputState.composing=-1,t.inputState.compositionEndedAt=Date.now(),t.inputState.compositionPendingKey=!0,t.inputState.compositionPendingChange=t.observer.pendingRecords().length>0,t.inputState.compositionFirstChange=null,q.chrome&&q.android?t.observer.flushSoon():t.inputState.compositionPendingChange?Promise.resolve().then(()=>t.observer.flush()):setTimeout(()=>{t.inputState.composing<0&&t.docView.hasComposition&&t.update([])},50))};pt.contextmenu=t=>{t.inputState.lastContextMenu=Date.now()};ai.beforeinput=(t,e)=>{var i,n;if((e.inputType=="insertText"||e.inputType=="insertCompositionText")&&(t.inputState.insertingText=e.data,t.inputState.insertingTextAt=Date.now()),e.inputType=="insertReplacementText"&&t.observer.editContext){let s=(i=e.dataTransfer)===null||i===void 0?void 0:i.getData("text/plain"),o=e.getTargetRanges();if(s&&o.length){let l=o[0],a=t.posAtDOM(l.startContainer,l.startOffset),u=t.posAtDOM(l.endContainer,l.endOffset);return Nc(t,{from:a,to:u,insert:t.state.toText(s)},null),!0}}let r;if(q.chrome&&q.android&&(r=GO.find(s=>s.inputType==e.inputType))&&(t.observer.delayAndroidKey(r.key,r.keyCode),r.key=="Backspace"||r.key=="Delete")){let s=((n=window.visualViewport)===null||n===void 0?void 0:n.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>s+10&&t.hasFocus&&(t.contentDOM.blur(),t.focus())},100)}return q.ios&&e.inputType=="deleteContentForward"&&t.observer.flushSoon(),q.safari&&e.inputType=="insertText"&&t.inputState.composing>=0&&setTimeout(()=>pt.compositionend(t,e),20),!1};const qd=new Set;function b3(t){qd.has(t)||(qd.add(t),t.addEventListener("copy",()=>{}),t.addEventListener("cut",()=>{}))}const Wd=["pre-wrap","normal","pre-line","break-spaces"];let yr=!1;function Yd(){yr=!1}class v3{constructor(e){this.lineWrapping=e,this.doc=de.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(e,i){let n=this.doc.lineAt(i).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(n+=Math.max(0,Math.ceil((i-e-n*this.lineLength*.5)/this.lineLength))),this.lineHeight*n}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return Wd.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let i=!1;for(let n=0;n-1,a=Math.abs(i-this.lineHeight)>.3||this.lineWrapping!=l;if(this.lineWrapping=l,this.lineHeight=i,this.charWidth=n,this.textHeight=r,this.lineLength=s,a){this.heightSamples={};for(let u=0;u0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e){this.height!=e&&(Math.abs(this.height-e)>nl&&(yr=!0),this.height=e)}replace(e,i,n){return dt.of(n)}decomposeLeft(e,i){i.push(this)}decomposeRight(e,i){i.push(this)}applyChanges(e,i,n,r){let s=this,o=n.doc;for(let l=r.length-1;l>=0;l--){let{fromA:a,toA:u,fromB:c,toB:h}=r[l],f=s.lineAt(a,$e.ByPosNoHeight,n.setDoc(i),0,0),d=f.to>=u?f:s.lineAt(u,$e.ByPosNoHeight,n,0,0);for(h+=d.to-u,u=d.to;l>0&&f.from<=r[l-1].toA;)a=r[l-1].fromA,c=r[l-1].fromB,l--,as*2){let l=e[i-1];l.break?e.splice(--i,1,l.left,null,l.right):e.splice(--i,1,l.left,l.right),n+=1+l.break,r-=l.size}else if(s>r*2){let l=e[n];l.break?e.splice(n,1,l.left,null,l.right):e.splice(n,1,l.left,l.right),n+=2+l.break,s-=l.size}else break;else if(r=s&&o(this.lineAt(0,$e.ByPos,n,r,s))}setMeasuredHeight(e){let i=e.heights[e.index++];i<0?(this.spaceAbove=-i,i=e.heights[e.index++]):this.spaceAbove=0,this.setHeight(i)}updateHeight(e,i=0,n=!1,r){return r&&r.from<=i&&r.more&&this.setMeasuredHeight(r),this.outdated=!1,this}toString(){return`block(${this.length})`}}class Tt extends ng{constructor(e,i,n){super(e,i,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=n}mainBlock(e,i){return new ri(i,this.length,e+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(e,i,n){let r=n[0];return n.length==1&&(r instanceof Tt||r instanceof Ue&&r.flags&4)&&Math.abs(this.length-r.length)<10?(r instanceof Ue?r=new Tt(r.length,this.height,this.spaceAbove):r.height=this.height,this.outdated||(r.outdated=!1),r):dt.of(n)}updateHeight(e,i=0,n=!1,r){return r&&r.from<=i&&r.more?this.setMeasuredHeight(r):(n||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}}class Ue extends dt{constructor(e){super(e,0)}heightMetrics(e,i){let n=e.doc.lineAt(i).number,r=e.doc.lineAt(i+this.length).number,s=r-n+1,o,l=0;if(e.lineWrapping){let a=Math.min(this.height,e.lineHeight*s);o=a/s,this.length>s+1&&(l=(this.height-a)/(this.length-s-1))}else o=this.height/s;return{firstLine:n,lastLine:r,perLine:o,perChar:l}}blockAt(e,i,n,r){let{firstLine:s,lastLine:o,perLine:l,perChar:a}=this.heightMetrics(i,r);if(i.lineWrapping){let u=r+(e0){let s=n[n.length-1];s instanceof Ue?n[n.length-1]=new Ue(s.length+r):n.push(null,new Ue(r-1))}if(e>0){let s=n[0];s instanceof Ue?n[0]=new Ue(e+s.length):n.unshift(new Ue(e-1),null)}return dt.of(n)}decomposeLeft(e,i){i.push(new Ue(e-1),null)}decomposeRight(e,i){i.push(null,new Ue(this.length-e-1))}updateHeight(e,i=0,n=!1,r){let s=i+this.length;if(r&&r.from<=i+this.length&&r.more){let o=[],l=Math.max(i,r.from),a=-1;for(r.from>i&&o.push(new Ue(r.from-i-1).updateHeight(e,i));l<=s&&r.more;){let c=e.doc.lineAt(l).length;o.length&&o.push(null);let h=r.heights[r.index++],f=0;h<0&&(f=-h,h=r.heights[r.index++]),a==-1?a=h:Math.abs(h-a)>=nl&&(a=-2);let d=new Tt(c,h,f);d.outdated=!1,o.push(d),l+=c+1}l<=s&&o.push(null,new Ue(s-l).updateHeight(e,l));let u=dt.of(o);return(a<0||Math.abs(u.height-this.height)>=nl||Math.abs(a-this.heightMetrics(e,i).perLine)>=nl)&&(yr=!0),Ql(this,u)}else(n||this.outdated)&&(this.setHeight(e.heightForGap(i,i+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}}class k3 extends dt{constructor(e,i,n){super(e.length+i+n.length,e.height+n.height,i|(e.outdated||n.outdated?2:0)),this.left=e,this.right=n,this.size=e.size+n.size}get break(){return this.flags&1}blockAt(e,i,n,r){let s=n+this.left.height;return el))return u;let c=i==$e.ByPosNoHeight?$e.ByPosNoHeight:$e.ByPos;return a?u.join(this.right.lineAt(l,c,n,o,l)):this.left.lineAt(l,c,n,r,s).join(u)}forEachLine(e,i,n,r,s,o){let l=r+this.left.height,a=s+this.left.length+this.break;if(this.break)e=a&&this.right.forEachLine(e,i,n,l,a,o);else{let u=this.lineAt(a,$e.ByPos,n,r,s);e=e&&u.from<=i&&o(u),i>u.to&&this.right.forEachLine(u.to+1,i,n,l,a,o)}}replace(e,i,n){let r=this.left.length+this.break;if(ithis.left.length)return this.balanced(this.left,this.right.replace(e-r,i-r,n));let s=[];e>0&&this.decomposeLeft(e,s);let o=s.length;for(let l of n)s.push(l);if(e>0&&Nd(s,o-1),i=n&&i.push(null)),e>n&&this.right.decomposeLeft(e-n,i)}decomposeRight(e,i){let n=this.left.length,r=n+this.break;if(e>=r)return this.right.decomposeRight(e-r,i);e2*i.size||i.size>2*e.size?dt.of(this.break?[e,null,i]:[e,i]):(this.left=Ql(this.left,e),this.right=Ql(this.right,i),this.setHeight(e.height+i.height),this.outdated=e.outdated||i.outdated,this.size=e.size+i.size,this.length=e.length+this.break+i.length,this)}updateHeight(e,i=0,n=!1,r){let{left:s,right:o}=this,l=i+s.length+this.break,a=null;return r&&r.from<=i+s.length&&r.more?a=s=s.updateHeight(e,i,n,r):s.updateHeight(e,i,n),r&&r.from<=l+o.length&&r.more?a=o=o.updateHeight(e,l,n,r):o.updateHeight(e,l,n),a?this.balanced(s,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function Nd(t,e){let i,n;t[e]==null&&(i=t[e-1])instanceof Ue&&(n=t[e+1])instanceof Ue&&t.splice(e-1,3,new Ue(i.length+1+n.length))}const S3=5;class Gc{constructor(e,i){this.pos=e,this.oracle=i,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,i){if(this.lineStart>-1){let n=Math.min(i,this.lineEnd),r=this.nodes[this.nodes.length-1];r instanceof Tt?r.length+=n-this.pos:(n>this.pos||!this.isCovered)&&this.nodes.push(new Tt(n-this.pos,-1,0)),this.writtenTo=n,i>n&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=i}point(e,i,n){if(e=S3)&&this.addLineDeco(r,s,o)}else i>e&&this.span(e,i);this.lineEnd>-1&&this.lineEnd-1)return;let{from:e,to:i}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=i,this.writtenToe&&this.nodes.push(new Tt(this.pos-e,-1,0)),this.writtenTo=this.pos}blankContent(e,i){let n=new Ue(i-e);return this.oracle.doc.lineAt(e).to==i&&(n.flags|=4),n}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof Tt)return e;let i=new Tt(0,-1,0);return this.nodes.push(i),i}addBlock(e){this.enterLine();let i=e.deco;i&&i.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,i&&i.endSide>0&&(this.covering=e)}addLineDeco(e,i,n){let r=this.ensureLine();r.length+=n,r.collapsed+=n,r.widgetHeight=Math.max(r.widgetHeight,e),r.breaks+=i,this.writtenTo=this.pos=this.pos+n}finish(e){let i=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(i instanceof Tt)&&!this.isCovered?this.nodes.push(new Tt(0,-1,0)):(this.writtenToc.clientHeight||c.scrollWidth>c.clientWidth)&&h.overflow!="visible"){let f=c.getBoundingClientRect();s=Math.max(s,f.left),o=Math.min(o,f.right),l=Math.max(l,f.top),a=Math.min(u==t.parentNode?r.innerHeight:a,f.bottom)}u=h.position=="absolute"||h.position=="fixed"?c.offsetParent:c.parentNode}else if(u.nodeType==11)u=u.host;else break;return{left:s-i.left,right:Math.max(s,o)-i.left,top:l-(i.top+e),bottom:Math.max(l,a)-(i.top+e)}}function _3(t){let e=t.getBoundingClientRect(),i=t.ownerDocument.defaultView||window;return e.left0&&e.top0}function P3(t,e){let i=t.getBoundingClientRect();return{left:0,right:i.right-i.left,top:e,bottom:i.bottom-(i.top+e)}}class Ma{constructor(e,i,n,r){this.from=e,this.to=i,this.size=n,this.displaySize=r}static same(e,i){if(e.length!=i.length)return!1;for(let n=0;ntypeof r!="function"&&r.class=="cm-lineWrapping");this.heightOracle=new v3(n),this.stateDeco=Hd(i),this.heightMap=dt.empty().applyChanges(this.stateDeco,de.empty,this.heightOracle.setDoc(i.doc),[new jt(0,0,0,i.doc.length)]);for(let r=0;r<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());r++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=ve.set(this.lineGaps.map(r=>r.draw(this,!1))),this.scrollParent=e.scrollDOM,this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:i}=this.state.selection;for(let n=0;n<=1;n++){let r=n?i.head:i.anchor;if(!e.some(({from:s,to:o})=>r>=s&&r<=o)){let{from:s,to:o}=this.lineBlockAt(r);e.push(new _o(s,o))}}return this.viewports=e.sort((n,r)=>n.from-r.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?Ud:new Uc(this.heightOracle,this.heightMap,this.viewports),e.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(es(e,this.scaler))})}update(e,i=null){this.state=e.state;let n=this.stateDeco;this.stateDeco=Hd(this.state);let r=e.changedRanges,s=jt.extendWithRanges(r,w3(n,this.stateDeco,e?e.changes:Fe.empty(this.state.doc.length))),o=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);Yd(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),s),(this.heightMap.height!=o||yr)&&(e.flags|=2),l?(this.scrollAnchorPos=e.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let a=s.length?this.mapViewport(this.viewport,e.changes):this.viewport;(i&&(i.range.heada.to)||!this.viewportIsAppropriate(a))&&(a=this.getViewport(0,i));let u=a.from!=this.viewport.from||a.to!=this.viewport.to;this.viewport=a,e.flags|=this.updateForViewport(),(u||!e.changes.empty||e.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(e.changes),i&&(this.scrollTarget=i),!this.mustEnforceCursorAssoc&&(e.selectionSet||e.focusChanged)&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(MO)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:e}=this,i=e.contentDOM,n=window.getComputedStyle(i),r=this.heightOracle,s=n.whiteSpace;this.defaultTextDirection=n.direction=="rtl"?Ce.RTL:Ce.LTR;let o=this.heightOracle.mustRefreshForWrapping(s)||this.mustMeasureContent==="refresh",l=i.getBoundingClientRect(),a=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let u=0,c=0;if(l.width&&l.height){let{scaleX:v,scaleY:Q}=bO(i,l);(v>.005&&Math.abs(this.scaleX-v)>.005||Q>.005&&Math.abs(this.scaleY-Q)>.005)&&(this.scaleX=v,this.scaleY=Q,u|=16,o=a=!0)}let h=(parseInt(n.paddingTop)||0)*this.scaleY,f=(parseInt(n.paddingBottom)||0)*this.scaleY;(this.paddingTop!=h||this.paddingBottom!=f)&&(this.paddingTop=h,this.paddingBottom=f,u|=18),this.editorWidth!=e.scrollDOM.clientWidth&&(r.lineWrapping&&(a=!0),this.editorWidth=e.scrollDOM.clientWidth,u|=16);let d=vO(this.view.contentDOM,!1).y;d!=this.scrollParent&&(this.scrollParent=d,this.scrollAnchorHeight=-1,this.scrollOffset=0);let p=this.getScrollOffset();this.scrollOffset!=p&&(this.scrollAnchorHeight=-1,this.scrollOffset=p),this.scrolledToBottom=xO(this.scrollParent||e.win);let m=(this.printing?P3:Q3)(i,this.paddingTop),O=m.top-this.pixelViewport.top,g=m.bottom-this.pixelViewport.bottom;this.pixelViewport=m;let b=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(b!=this.inView&&(this.inView=b,b&&(a=!0)),!this.inView&&!this.scrollTarget&&!_3(e.dom))return 0;let y=l.width;if((this.contentDOMWidth!=y||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=e.scrollDOM.clientHeight,u|=16),a){let v=e.docView.measureVisibleLineHeights(this.viewport);if(r.mustRefreshForHeights(v)&&(o=!0),o||r.lineWrapping&&Math.abs(y-this.contentDOMWidth)>r.charWidth){let{lineHeight:Q,charWidth:P,textHeight:_}=e.docView.measureTextSize();o=Q>0&&r.refresh(s,Q,P,_,Math.max(5,y/P),v),o&&(e.docView.minWidth=0,u|=16)}O>0&&g>0?c=Math.max(O,g):O<0&&g<0&&(c=Math.min(O,g)),Yd();for(let Q of this.viewports){let P=Q.from==this.viewport.from?v:e.docView.measureVisibleLineHeights(Q);this.heightMap=(o?dt.empty().applyChanges(this.stateDeco,de.empty,this.heightOracle,[new jt(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(r,0,o,new y3(Q.from,P))}yr&&(u|=2)}let w=!this.viewportIsAppropriate(this.viewport,c)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return w&&(u&2&&(u|=this.updateScaler()),this.viewport=this.getViewport(c,this.scrollTarget),u|=this.updateForViewport()),(u&2||w)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,e)),u|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),u}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,i){let n=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),r=this.heightMap,s=this.heightOracle,{visibleTop:o,visibleBottom:l}=this,a=new _o(r.lineAt(o-n*1e3,$e.ByHeight,s,0,0).from,r.lineAt(l+(1-n)*1e3,$e.ByHeight,s,0,0).to);if(i){let{head:u}=i.range;if(ua.to){let c=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),h=r.lineAt(u,$e.ByPos,s,0,0),f;i.y=="center"?f=(h.top+h.bottom)/2-c/2:i.y=="start"||i.y=="nearest"&&u=l+Math.max(10,Math.min(n,250)))&&r>o-2*1e3&&s>1,o=r<<1;if(this.defaultTextDirection!=Ce.LTR&&!n)return[];let l=[],a=(c,h,f,d)=>{if(h-cc&&gg.from>=f.from&&g.to<=f.to&&Math.abs(g.from-c)g.fromb));if(!O){if(hy.from<=h&&y.to>=h)){let y=i.moveToLineBoundary(E.cursor(h),!1,!0).head;y>c&&(h=y)}let g=this.gapSize(f,c,h,d),b=n||g<2e6?g:2e6;O=new Ma(c,h,g,b)}l.push(O)},u=c=>{if(c.length2e6)for(let Q of e)Q.from>=c.from&&Q.fromc.from&&a(c.from,d,c,h),pi.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(e){let i=this.stateDeco;this.lineGaps.length&&(i=i.concat(this.lineGapDeco));let n=[];be.spans(i,this.viewport.from,this.viewport.to,{span(s,o){n.push({from:s,to:o})},point(){}},20);let r=0;if(n.length!=this.visibleRanges.length)r=12;else for(let s=0;s=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(i=>i.from<=e&&i.to>=e)||es(this.heightMap.lineAt(e,$e.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return e>=this.viewportLines[0].top&&e<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(i=>i.top<=e&&i.bottom>=e)||es(this.heightMap.lineAt(this.scaler.fromDOM(e),$e.ByHeight,this.heightOracle,0,0),this.scaler)}getScrollOffset(){return(this.scrollParent==this.view.scrollDOM?this.scrollParent.scrollTop:(this.scrollParent?this.scrollParent.getBoundingClientRect().top:0)-this.view.contentDOM.getBoundingClientRect().top)*this.scaleY}scrollAnchorAt(e){let i=this.lineBlockAtHeight(e+8);return i.from>=this.viewport.from||this.viewportLines[0].top-e>200?i:this.viewportLines[0]}elementAtHeight(e){return es(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}class _o{constructor(e,i){this.from=e,this.to=i}}function T3(t,e,i){let n=[],r=t,s=0;return be.spans(i,t,e,{span(){},point(o,l){o>r&&(n.push({from:r,to:o}),s+=o-r),r=l}},20),r=1)return e[e.length-1].to;let n=Math.floor(t*i);for(let r=0;;r++){let{from:s,to:o}=e[r],l=o-s;if(n<=l)return s+n;n-=l}}function Co(t,e){let i=0;for(let{from:n,to:r}of t.ranges){if(e<=r){i+=e-n;break}i+=r-n}return i/t.total}function A3(t,e){for(let i of t)if(e(i))return i}const Ud={toDOM(t){return t},fromDOM(t){return t},scale:1,eq(t){return t==this}};function Hd(t){let e=t.facet(sa).filter(n=>typeof n!="function"),i=t.facet(Wc).filter(n=>typeof n!="function");return i.length&&e.push(be.join(i)),e}class Uc{constructor(e,i,n){let r=0,s=0,o=0;this.viewports=n.map(({from:l,to:a})=>{let u=i.lineAt(l,$e.ByPos,e,0,0).top,c=i.lineAt(a,$e.ByPos,e,0,0).bottom;return r+=c-u,{from:l,to:a,top:u,bottom:c,domTop:0,domBottom:0}}),this.scale=(7e6-r)/(i.height-r);for(let l of this.viewports)l.domTop=o+(l.top-s)*this.scale,o=l.domBottom=l.domTop+(l.bottom-l.top),s=l.bottom}toDOM(e){for(let i=0,n=0,r=0;;i++){let s=ii.from==e.viewports[n].from&&i.to==e.viewports[n].to):!1}}function es(t,e){if(e.scale==1)return t;let i=e.toDOM(t.top),n=e.toDOM(t.bottom);return new ri(t.from,t.length,i,n-i,Array.isArray(t._content)?t._content.map(r=>es(r,e)):t._content)}const To=G.define({combine:t=>t.join(" ")}),Ju=G.define({combine:t=>t.indexOf(!0)>-1}),ec=ln.newName(),rg=ln.newName(),sg=ln.newName(),og={"&light":"."+rg,"&dark":"."+sg};function tc(t,e,i){return new ln(e,{finish(n){return/&/.test(n)?n.replace(/&\w*/,r=>{if(r=="&")return t;if(!i||!i[r])throw new RangeError(`Unsupported selector: ${r}`);return i[r]}):t+" "+n}})}const E3=tc("."+ec,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{userSelect:"none",position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-selectionHandle":{backgroundColor:"currentColor",width:"1.5px"},".cm-selectionHandle-start::before, .cm-selectionHandle-end::before":{content:'""',backgroundColor:"inherit",borderRadius:"50%",width:"8px",height:"8px",position:"absolute",left:"-3.25px"},".cm-selectionHandle-start::before":{top:"-8px"},".cm-selectionHandle-end::before":{bottom:"-8px"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},og),R3={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},Za=q.ie&&q.ie_version<=11;class D3{constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new uw,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(i=>{for(let n of i)this.queue.push(n);(q.ie&&q.ie_version<=11||q.ios&&e.composing)&&i.some(n=>n.type=="childList"&&n.removedNodes.length||n.type=="characterData"&&n.oldValue.length>n.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&q.android&&e.constructor.EDIT_CONTEXT!==!1&&!(q.chrome&&q.chrome_version<126)&&(this.editContext=new M3(e),e.state.facet(Ri)&&(e.contentDOM.editContext=this.editContext.editContext)),Za&&(this.onCharData=i=>{this.queue.push({target:i.target,type:"characterData",oldValue:i.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var i;((i=this.view.docView)===null||i===void 0?void 0:i.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),i.length>0&&i[i.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(i=>{i.length>0&&i[i.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers("scroll",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(e){(e.type=="change"||!e.type)&&!e.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((i,n)=>i!=e[n]))){this.gapIntersection.disconnect();for(let i of e)this.gapIntersection.observe(i);this.gaps=e}}onSelectionChange(e){let i=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:n}=this,r=this.selectionRange;if(n.state.facet(Ri)?n.root.activeElement!=this.dom:!cs(this.dom,r))return;let s=r.anchorNode&&n.docView.tile.nearest(r.anchorNode);if(s&&s.isWidget()&&s.widget.ignoreEvent(e)){i||(this.selectionChanged=!1);return}(q.ie&&q.ie_version<=11||q.android&&q.chrome)&&!n.state.selection.main.empty&&r.focusNode&&fs(r.focusNode,r.focusOffset,r.anchorNode,r.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,i=As(e.root);if(!i)return!1;let n=q.safari&&e.root.nodeType==11&&e.root.activeElement==this.dom&&L3(this.view,i)||i;if(!n||this.selectionRange.eq(n))return!1;let r=cs(this.dom,n);return r&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime{let s=this.delayedAndroidKey;s&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=s.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&s.force&&ir(this.dom,s.key,s.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(r)}(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:i,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let i=-1,n=-1,r=!1;for(let s of e){let o=this.readMutation(s);o&&(o.typeOver&&(r=!0),i==-1?{from:i,to:n}=o:(i=Math.min(o.from,i),n=Math.max(o.to,n)))}return{from:i,to:n,typeOver:r}}readChange(){let{from:e,to:i,typeOver:n}=this.processRecords(),r=this.selectionChanged&&cs(this.dom,this.selectionRange);if(e<0&&!r)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let s=new Kw(this.view,e,i,n);return this.view.docView.domChanged={newSel:s.newSel?s.newSel.main:null},s}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let i=this.readChange();if(!i)return this.view.requestMeasure(),!1;let n=this.view.state,r=YO(this.view,i);return this.view.state==n&&(i.domChanged||i.newSel&&!$l(this.view.state.selection,i.newSel.main))&&this.view.update([]),r}readMutation(e){let i=this.view.docView.tile.nearest(e.target);if(!i||i.isWidget())return null;if(i.markDirty(e.type=="attributes"),e.type=="childList"){let n=Kd(i,e.previousSibling||e.target.previousSibling,-1),r=Kd(i,e.nextSibling||e.target.nextSibling,1);return{from:n?i.posAfter(n):i.posAtStart,to:r?i.posBefore(r):i.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:i.posAtStart,to:i.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}update(e){this.editContext&&(this.editContext.update(e),e.startState.facet(Ri)!=e.state.facet(Ri)&&(e.view.contentDOM.editContext=e.state.facet(Ri)?this.editContext.editContext:null))}destroy(){var e,i,n;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(i=this.gapIntersection)===null||i===void 0||i.disconnect(),(n=this.resizeScroll)===null||n===void 0||n.disconnect();for(let r of this.scrollTargets)r.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}}function Kd(t,e,i){for(;e;){let n=De.get(e);if(n&&n.parent==t)return n;let r=e.parentNode;e=r!=t.dom?r:i>0?e.nextSibling:e.previousSibling}return null}function Jd(t,e){let i=e.startContainer,n=e.startOffset,r=e.endContainer,s=e.endOffset,o=t.docView.domAtPos(t.state.selection.main.anchor,1);return fs(o.node,o.offset,r,s)&&([i,n,r,s]=[r,s,i,n]),{anchorNode:i,anchorOffset:n,focusNode:r,focusOffset:s}}function L3(t,e){if(e.getComposedRanges){let r=e.getComposedRanges(t.root)[0];if(r)return Jd(t,r)}let i=null;function n(r){r.preventDefault(),r.stopImmediatePropagation(),i=r.getTargetRanges()[0]}return t.contentDOM.addEventListener("beforeinput",n,!0),t.dom.ownerDocument.execCommand("indent"),t.contentDOM.removeEventListener("beforeinput",n,!0),i?Jd(t,i):null}class M3{constructor(e){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(e.state);let i=this.editContext=new window.EditContext({text:e.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,e.state.selection.main.anchor))),selectionEnd:this.toContextPos(e.state.selection.main.head)});this.handlers.textupdate=n=>{let r=e.state.selection.main,{anchor:s,head:o}=r,l=this.toEditorPos(n.updateRangeStart),a=this.toEditorPos(n.updateRangeEnd);e.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:n.updateRangeStart,editorBase:l,drifted:!1});let u=a-l>n.text.length;l==this.from&&sthis.to&&(a=s);let c=NO(e.state.sliceDoc(l,a),n.text,(u?r.from:r.to)-l,u?"end":null);if(!c){let f=E.single(this.toEditorPos(n.selectionStart),this.toEditorPos(n.selectionEnd));$l(f,r)||e.dispatch({selection:f,userEvent:"select"});return}let h={from:c.from+l,to:c.toA+l,insert:de.of(n.text.slice(c.from,c.toB).split(` +`))};if((q.mac||q.android)&&h.from==o-1&&/^\. ?$/.test(n.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(h={from:l,to:a,insert:de.of([n.text.replace("."," ")])}),this.pendingContextChange=h,!e.state.readOnly){let f=this.to-this.from+(h.to-h.from+h.insert.length);Nc(e,h,E.single(this.toEditorPos(n.selectionStart,f),this.toEditorPos(n.selectionEnd,f)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),h.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(i.text.slice(Math.max(0,n.updateRangeStart-1),Math.min(i.text.length,n.updateRangeStart+1)))&&this.handlers.compositionend(n)},this.handlers.characterboundsupdate=n=>{let r=[],s=null;for(let o=this.toEditorPos(n.rangeStart),l=this.toEditorPos(n.rangeEnd);o{let r=[];for(let s of n.getTextFormats()){let o=s.underlineStyle,l=s.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(l)){let a=this.toEditorPos(s.rangeStart),u=this.toEditorPos(s.rangeEnd);if(a{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(e.inputState.composing=-1,e.inputState.compositionFirstChange=null,this.composing){let{drifted:n}=this.composing;this.composing=null,n&&this.reset(e.state)}};for(let n in this.handlers)i.addEventListener(n,this.handlers[n]);this.measureReq={read:n=>{let r=As(n.root);r&&r.rangeCount&&this.editContext.updateSelectionBounds(r.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let i=0,n=!1,r=this.pendingContextChange;return e.changes.iterChanges((s,o,l,a,u)=>{if(n)return;let c=u.length-(o-s);if(r&&o>=r.to)if(r.from==s&&r.to==o&&r.insert.eq(u)){r=this.pendingContextChange=null,i+=c,this.to+=c;return}else r=null,this.revertPending(e.state);if(s+=i,o+=i,o<=this.from)this.from+=c,this.to+=c;else if(sthis.to||this.to-this.from+u.length>3e4){n=!0;return}this.editContext.updateText(this.toContextPos(s),this.toContextPos(o),u.toString()),this.to+=c}i+=c}),r&&!n&&this.revertPending(e.state),!n}update(e){let i=this.pendingContextChange,n=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(n.from,n.to)&&e.transactions.some(r=>!r.isUserEvent("input.type")&&r.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||i)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:i}=e.selection.main;this.from=Math.max(0,i-1e4),this.to=Math.min(e.doc.length,i+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let i=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(i.from),this.toContextPos(i.from+i.insert.length),e.doc.sliceString(i.from,i.to))}setSelection(e){let{main:i}=e.selection,n=this.toContextPos(Math.max(this.from,Math.min(this.to,i.anchor))),r=this.toContextPos(i.head);(this.editContext.selectionStart!=n||this.editContext.selectionEnd!=r)&&this.editContext.updateSelection(n,r)}rangeIsValid(e){let{head:i}=e.selection.main;return!(this.from>0&&i-this.from<500||this.to1e4*3)}toEditorPos(e,i=this.to-this.from){e=Math.min(e,i);let n=this.composing;return n&&n.drifted?n.editorBase+(e-n.contextBase):e+this.from}toContextPos(e){let i=this.composing;return i&&i.drifted?i.contextBase+(e-i.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}}class W{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var i;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let{dispatch:n}=e;this.dispatchTransactions=e.dispatchTransactions||n&&(r=>r.forEach(s=>n(s,this)))||(r=>this.update(r)),this.dispatch=this.dispatch.bind(this),this._root=e.root||cw(e.parent)||document,this.viewState=new Gd(this,e.state||fe.create(e)),e.scrollTo&&e.scrollTo.is(wo)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Gn).map(r=>new Aa(r));for(let r of this.plugins)r.update(this);this.observer=new D3(this),this.inputState=new i3(this),this.inputState.ensureHandlers(this.plugins),this.docView=new Md(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((i=document.fonts)===null||i===void 0)&&i.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...e){let i=e.length==1&&e[0]instanceof Xe?e:e.length==1&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(i,this)}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let i=!1,n=!1,r,s=this.state;for(let f of e){if(f.startState!=s)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");s=f.state}if(this.destroyed){this.viewState.state=s;return}let o=this.hasFocus,l=0,a=null;e.some(f=>f.annotation(eg))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,a=tg(s,o),a||(l=1));let u=this.observer.delayedAndroidKey,c=null;if(u?(this.observer.clearDelayedAndroidKey(),c=this.observer.readChange(),(c&&!this.state.doc.eq(s.doc)||!this.state.selection.eq(s.selection))&&(c=null)):this.observer.clear(),s.facet(fe.phrases)!=this.state.facet(fe.phrases))return this.setState(s);r=kl.create(this,s,e),r.flags|=l;let h=this.viewState.scrollTarget;try{this.updateState=2;for(let f of e){if(h&&(h=h.map(f.changes)),f.scrollIntoView){let{main:d}=f.state.selection,{x:p,y:m}=this.state.facet(W.cursorScrollMargin);h=new nr(d.empty?d:E.cursor(d.head,d.head>d.anchor?-1:1),"nearest","nearest",m,p)}for(let d of f.effects)d.is(wo)&&(h=d.value.clip(this.state))}this.viewState.update(r,h),this.bidiCache=_l.update(this.bidiCache,r.changes),r.empty||(this.updatePlugins(r),this.inputState.update(r)),i=this.docView.update(r),this.state.facet(Jr)!=this.styleModules&&this.mountStyles(),n=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(i,e.some(f=>f.isUserEvent("select.pointer")))}finally{this.updateState=0}if(r.startState.facet(To)!=r.state.facet(To)&&(this.viewState.mustMeasureContent=!0),(i||n||h||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),i&&this.docViewUpdate(),!r.empty)for(let f of this.state.facet(Nu))try{f(r)}catch(d){Rt(this.state,d,"update listener")}(a||c)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),c&&!YO(this,c)&&u.force&&ir(this.contentDOM,u.key,u.keyCode)})}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let i=this.hasFocus;try{for(let n of this.plugins)n.destroy(this);this.viewState=new Gd(this,e),this.plugins=e.facet(Gn).map(n=>new Aa(n)),this.pluginMap.clear();for(let n of this.plugins)n.update(this);this.docView.destroy(),this.docView=new Md(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}i&&this.focus(),this.requestMeasure()}updatePlugins(e){let i=e.startState.facet(Gn),n=e.state.facet(Gn);if(i!=n){let r=[];for(let s of n){let o=i.indexOf(s);if(o<0)r.push(new Aa(s));else{let l=this.plugins[o];l.mustUpdate=e,r.push(l)}}for(let s of this.plugins)s.mustUpdate!=e&&s.destroy(this);this.plugins=r,this.pluginMap.clear()}else for(let r of this.plugins)r.mustUpdate=e;for(let r=0;r-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,e&&this.observer.forceFlush();let i=null,n=this.viewState.scrollParent,r=this.viewState.getScrollOffset(),{scrollAnchorPos:s,scrollAnchorHeight:o}=this.viewState;Math.abs(r-this.viewState.scrollOffset)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0)if(xO(n||this.win))s=-1,o=this.viewState.heightMap.height;else{let d=this.viewState.scrollAnchorAt(r);s=d.from,o=d.top}this.updateState=1;let a=this.viewState.measure();if(!a&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let u=[];a&4||([this.measureRequests,u]=[u,this.measureRequests]);let c=u.map(d=>{try{return d.read(this)}catch(p){return Rt(this.state,p),e0}}),h=kl.create(this,this.state,[]),f=!1;h.flags|=a,i?i.flags|=a:i=h,this.updateState=2,h.empty||(this.updatePlugins(h),this.inputState.update(h),this.updateAttrs(),f=this.docView.update(h),f&&this.docViewUpdate());for(let d=0;d1||p<-1)&&!(q.ios&&this.inputState.lastIOSMomentumScroll>Date.now()-100)&&(n==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){r=r+p,n?n.scrollTop+=p:this.win.scrollBy(0,p),o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(i&&!i.empty)for(let l of this.state.facet(Nu))l(i)}get themeClasses(){return ec+" "+(this.state.facet(Ju)?sg:rg)+" "+this.state.facet(To)}updateAttrs(){let e=t0(this,XO,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),i={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(Ri)?"true":"false",class:"cm-content",style:`${q.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(i["aria-readonly"]="true"),t0(this,qc,i);let n=this.observer.ignore(()=>{let r=Td(this.contentDOM,this.contentAttrs,i),s=Td(this.dom,this.editorAttrs,e);return r||s});return this.editorAttrs=e,this.contentAttrs=i,n}showAnnouncements(e){let i=!0;for(let n of e)for(let r of n.effects)if(r.is(W.announce)){i&&(this.announceDOM.textContent=""),i=!1;let s=this.announceDOM.appendChild(document.createElement("div"));s.textContent=r.value}}mountStyles(){this.styleModules=this.state.facet(Jr);let e=this.state.facet(W.cspNonce);ln.mount(this.root,this.styleModules.concat(E3).reverse(),e?{nonce:e}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let i=0;in.plugin==e)||null),i&&i.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,i,n){return La(this,e,Zd(this,e,i,n))}moveByGroup(e,i){return La(this,e,Zd(this,e,i,n=>Ww(this,e.head,n)))}visualLineSide(e,i){let n=this.bidiSpans(e),r=this.textDirectionAt(e.from),s=n[i?n.length-1:0];return E.cursor(s.side(i,r)+e.from,s.forward(!i,r)?1:-1)}moveToLineBoundary(e,i,n=!0){return qw(this,e,i,n)}moveVertically(e,i,n){return La(this,e,Yw(this,e,i,n))}domAtPos(e,i=1){return this.docView.domAtPos(e,i)}posAtDOM(e,i=0){return this.docView.posFromDOM(e,i)}posAtCoords(e,i=!0){this.readMeasured();let n=Hu(this,e,i);return n&&n.pos}posAndSideAtCoords(e,i=!0){return this.readMeasured(),Hu(this,e,i)}coordsAtPos(e,i=1){this.readMeasured();let n=this.state.doc.lineAt(e),r=this.bidiSpans(n),s=r[xi.find(r,e-n.from,-1,i)];return this.docView.coordsAt(e,i,s.dir==Ce.RTL)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(LO)||ethis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>Z3)return _O(e.length);let i=this.textDirectionAt(e.from),n;for(let s of this.bidiCache)if(s.from==e.from&&s.dir==i&&(s.fresh||QO(s.isolates,n=Rd(this,e))))return s.order;n||(n=Rd(this,e));let r=bw(e.text,i,n);return this.bidiCache.push(new _l(e.from,e.to,i,n,!0,r)),r}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||q.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{yO(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,i={}){var n,r,s,o;return wo.of(new nr(typeof e=="number"?E.cursor(e):e,(n=i.y)!==null&&n!==void 0?n:"nearest",(r=i.x)!==null&&r!==void 0?r:"nearest",(s=i.yMargin)!==null&&s!==void 0?s:5,(o=i.xMargin)!==null&&o!==void 0?o:5))}scrollSnapshot(){let{scrollTop:e,scrollLeft:i}=this.scrollDOM,n=this.viewState.scrollAnchorAt(e);return wo.of(new nr(E.cursor(n.from),"start","start",n.top-e,i,!0))}setTabFocusMode(e){e==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof e=="boolean"?this.inputState.tabFocusMode=e?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+e)}static domEventHandlers(e){return Mt.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return Mt.define(()=>({}),{eventObservers:e})}static theme(e,i){let n=ln.newName(),r=[To.of(n),Jr.of(tc(`.${n}`,e))];return i&&i.dark&&r.push(Ju.of(!0)),r}static baseTheme(e){return Ii.lowest(Jr.of(tc("."+ec,e,og)))}static findFromDOM(e){var i;let n=e.querySelector(".cm-content"),r=n&&De.get(n)||De.get(e);return((i=r==null?void 0:r.root)===null||i===void 0?void 0:i.view)||null}}W.styleModule=Jr;W.inputHandler=RO;W.clipboardInputFilter=Bc;W.clipboardOutputFilter=Vc;W.scrollHandler=ZO;W.focusChangeEffect=DO;W.perLineTextDirection=LO;W.exceptionSink=EO;W.updateListener=Nu;W.editable=Ri;W.mouseSelectionStyle=AO;W.dragMovesSelection=TO;W.clickAddsSelectionRange=CO;W.decorations=sa;W.blockWrappers=zO;W.outerDecorations=Wc;W.atomicRanges=to;W.bidiIsolatedRanges=jO;W.cursorScrollMargin=G.define({combine:t=>{let e=5,i=5;for(let n of t)typeof n=="number"?e=i=n:{x:e,y:i}=n;return{x:e,y:i}}});W.scrollMargins=FO;W.darkTheme=Ju;W.cspNonce=G.define({combine:t=>t.length?t[0]:""});W.contentAttributes=qc;W.editorAttributes=XO;W.lineWrapping=W.contentAttributes.of({class:"cm-lineWrapping"});W.announce=ae.define();const Z3=4096,e0={};class _l{constructor(e,i,n,r,s,o){this.from=e,this.to=i,this.dir=n,this.isolates=r,this.fresh=s,this.order=o}static update(e,i){if(i.empty&&!e.some(s=>s.fresh))return e;let n=[],r=e.length?e[e.length-1].dir:Ce.LTR;for(let s=Math.max(0,e.length-10);s=0;r--){let s=n[r],o=typeof s=="function"?s(t):s;o&&zc(o,i)}return i}const I3=q.mac?"mac":q.windows?"win":q.linux?"linux":"key";function X3(t,e){const i=t.split(/-(?!$)/);let n=i[i.length-1];n=="Space"&&(n=" ");let r,s,o,l;for(let a=0;an.concat(r),[]))),i}function j3(t,e,i){return ag(lg(t.state),e,t,i)}let Ji=null;const F3=4e3;function B3(t,e=I3){let i=Object.create(null),n=Object.create(null),r=(o,l)=>{let a=n[o];if(a==null)n[o]=l;else if(a!=l)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},s=(o,l,a,u,c)=>{var h,f;let d=i[o]||(i[o]=Object.create(null)),p=l.split(/ (?!$)/).map(g=>X3(g,e));for(let g=1;g{let w=Ji={view:y,prefix:b,scope:o};return setTimeout(()=>{Ji==w&&(Ji=null)},F3),!0}]})}let m=p.join(" ");r(m,!1);let O=d[m]||(d[m]={preventDefault:!1,stopPropagation:!1,run:((f=(h=d._any)===null||h===void 0?void 0:h.run)===null||f===void 0?void 0:f.slice())||[]});a&&O.run.push(a),u&&(O.preventDefault=!0),c&&(O.stopPropagation=!0)};for(let o of t){let l=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let u of l){let c=i[u]||(i[u]=Object.create(null));c._any||(c._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:h}=o;for(let f in c)c[f].run.push(d=>h(d,ic))}let a=o[e]||o.key;if(a)for(let u of l)s(u,a,o.run,o.preventDefault,o.stopPropagation),o.shift&&s(u,"Shift-"+a,o.shift,o.preventDefault,o.stopPropagation)}return i}let ic=null;function ag(t,e,i,n){ic=e;let r=nw(e),s=Ni(r,0),o=vn(s)==r.length&&r!=" ",l="",a=!1,u=!1,c=!1;Ji&&Ji.view==i&&Ji.scope==n&&(l=Ji.prefix+" ",UO.indexOf(e.keyCode)<0&&(u=!0,Ji=null));let h=new Set,f=O=>{if(O){for(let g of O.run)if(!h.has(g)&&(h.add(g),g(i)))return O.stopPropagation&&(c=!0),!0;O.preventDefault&&(O.stopPropagation&&(c=!0),u=!0)}return!1},d=t[n],p,m;return d&&(f(d[l+Ao(r,e,!o)])?a=!0:o&&(e.altKey||e.metaKey||e.ctrlKey)&&!(q.windows&&e.ctrlKey&&e.altKey)&&!(q.mac&&e.altKey&&!(e.ctrlKey||e.metaKey))&&(p=an[e.keyCode])&&p!=r?(f(d[l+Ao(p,e,!0)])||e.shiftKey&&(m=Cs[e.keyCode])!=r&&m!=p&&f(d[l+Ao(m,e,!1)]))&&(a=!0):o&&e.shiftKey&&f(d[l+Ao(r,e,!0)])&&(a=!0),!a&&f(d._any)&&(a=!0)),u&&(a=!0),a&&c&&e.stopPropagation(),ic=null,a}class Pn{constructor(e,i,n,r,s){this.className=e,this.left=i,this.top=n,this.width=r,this.height=s}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}update(e,i){return i.className!=this.className?!1:(this.adjust(e),!0)}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width!=null&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(e,i,n){if(n.empty){let r=e.coordsAtPos(n.head,n.assoc||1);if(!r)return[];let s=ug(e);return[new Pn(i,r.left-s.left,r.top-s.top,null,r.bottom-r.top)]}else return V3(e,i,n)}}function ug(t){let e=t.scrollDOM.getBoundingClientRect();return{left:(t.textDirection==Ce.LTR?e.left:e.right-t.scrollDOM.clientWidth*t.scaleX)-t.scrollDOM.scrollLeft*t.scaleX,top:e.top-t.scrollDOM.scrollTop*t.scaleY}}function n0(t,e,i,n){let r=t.coordsAtPos(e,i*2);if(!r)return n;let s=t.dom.getBoundingClientRect(),o=(r.top+r.bottom)/2,l=t.posAtCoords({x:s.left+1,y:o}),a=t.posAtCoords({x:s.right-1,y:o});return l==null||a==null?n:{from:Math.max(n.from,Math.min(l,a)),to:Math.min(n.to,Math.max(l,a))}}function V3(t,e,i){if(i.to<=t.viewport.from||i.from>=t.viewport.to)return[];let n=Math.max(i.from,t.viewport.from),r=Math.min(i.to,t.viewport.to),s=t.textDirection==Ce.LTR,o=t.contentDOM,l=o.getBoundingClientRect(),a=ug(t),u=o.querySelector(".cm-line"),c=u&&window.getComputedStyle(u),h=l.left+(c?parseInt(c.paddingLeft)+Math.min(0,parseInt(c.textIndent)):0),f=l.right-(c?parseInt(c.paddingRight):0),d=Uu(t,n,1),p=Uu(t,r,-1),m=d.type==ft.Text?d:null,O=p.type==ft.Text?p:null;if(m&&(t.lineWrapping||d.widgetLineBreaks)&&(m=n0(t,n,1,m)),O&&(t.lineWrapping||p.widgetLineBreaks)&&(O=n0(t,r,-1,O)),m&&O&&m.from==O.from&&m.to==O.to)return b(y(i.from,i.to,m));{let v=m?y(i.from,null,m):w(d,!1),Q=O?y(null,i.to,O):w(p,!0),P=[];return(m||d).to<(O||p).from-(m&&O?1:0)||d.widgetLineBreaks>1&&v.bottom+t.defaultLineHeight/2T&&F.from=Y)break;ue>B&&I(Math.max(re,B),v==null&&re<=T,Math.min(ue,Y),Q==null&&ue>=M,ee.dir)}if(B=J.to+1,B>=Y)break}return L.length==0&&I(T,v==null,M,Q==null,t.textDirection),{top:_,bottom:R,horizontal:L}}function w(v,Q){let P=l.top+(Q?v.top:v.bottom);return{top:P,bottom:P,horizontal:[]}}}function q3(t,e){return t.constructor==e.constructor&&t.eq(e)}class W3{constructor(e,i){this.view=e,this.layer=i,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),i.above&&this.dom.classList.add("cm-layer-above"),i.class&&this.dom.classList.add(i.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(e.state),e.requestMeasure(this.measureReq),i.mount&&i.mount(this.dom,e)}update(e){e.startState.facet(rl)!=e.state.facet(rl)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&(this.scale(),e.view.requestMeasure(this.measureReq))}docViewUpdate(e){this.layer.updateOnDocViewUpdate!==!1&&e.requestMeasure(this.measureReq)}setOrder(e){let i=0,n=e.facet(rl);for(;i!q3(i,this.drawn[n]))){let i=this.dom.firstChild,n=0;for(let r of e)r.update&&i&&r.constructor&&this.drawn[n].constructor&&r.update(i,this.drawn[n])?(i=i.nextSibling,n++):this.dom.insertBefore(r.draw(),i);for(;i;){let r=i.nextSibling;i.remove(),i=r}this.drawn=e,q.webkit&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}}const rl=G.define();function cg(t){return[Mt.define(e=>new W3(e,t)),rl.of(t)]}const xr=G.define({combine(t){return na(t,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(e,i)=>Math.min(e,i),drawRangeCursor:(e,i)=>e||i})}});function Y3(t={}){return[xr.of(t),N3,G3,U3,MO.of(!0)]}function hg(t){return t.startState.facet(xr)!=t.state.facet(xr)}const N3=cg({above:!0,markers(t){let{state:e}=t,i=e.facet(xr),n=[];for(let r of e.selection.ranges){let s=r==e.selection.main;if(r.empty||i.drawRangeCursor&&!(s&&q.ios&&i.iosSelectionHandles)){let o=s?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=r.empty?r:E.cursor(r.head,r.assoc);for(let a of Pn.forRange(t,o,l))n.push(a)}}return n},update(t,e){t.transactions.some(n=>n.selection)&&(e.style.animationName=e.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let i=hg(t);return i&&r0(t.state,e),t.docChanged||t.selectionSet||i},mount(t,e){r0(e.state,t)},class:"cm-cursorLayer"});function r0(t,e){e.style.animationDuration=t.facet(xr).cursorBlinkRate+"ms"}const G3=cg({above:!1,markers(t){let e=[],{main:i,ranges:n}=t.state.selection;for(let r of n)if(!r.empty)for(let s of Pn.forRange(t,"cm-selectionBackground",r))e.push(s);if(q.ios&&!i.empty&&t.state.facet(xr).iosSelectionHandles){for(let r of Pn.forRange(t,"cm-selectionHandle cm-selectionHandle-start",E.cursor(i.from,1)))e.push(r);for(let r of Pn.forRange(t,"cm-selectionHandle cm-selectionHandle-end",E.cursor(i.to,1)))e.push(r)}return e},update(t,e){return t.docChanged||t.selectionSet||t.viewportChanged||hg(t)},class:"cm-selectionLayer"}),U3=Ii.highest(W.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}}));class H3 extends Er{constructor(e){super(),this.content=e}toDOM(e){let i=document.createElement("span");return i.className="cm-placeholder",i.style.pointerEvents="none",i.appendChild(typeof this.content=="string"?document.createTextNode(this.content):typeof this.content=="function"?this.content(e):this.content.cloneNode(!0)),i.setAttribute("aria-hidden","true"),i}coordsAt(e){let i=e.firstChild?hs(e.firstChild):[];if(!i.length)return null;let n=window.getComputedStyle(e.parentNode),r=Es(i[0],n.direction!="rtl"),s=parseInt(n.lineHeight);return r.bottom-r.top>s*1.5?{left:r.left,right:r.right,top:r.top,bottom:r.top+s}:r}ignoreEvent(){return!1}}function K3(t){let e=Mt.fromClass(class{constructor(i){this.view=i,this.placeholder=t?ve.set([ve.widget({widget:new H3(t),side:1}).range(0)]):ve.none}get decorations(){return this.view.state.doc.length?ve.none:this.placeholder}},{decorations:i=>i.decorations});return typeof t=="string"?[e,W.contentAttributes.of({"aria-placeholder":t})]:e}const Eo="-10000px";class J3{constructor(e,i,n,r){this.facet=i,this.createTooltipView=n,this.removeTooltipView=r,this.input=e.state.facet(i),this.tooltips=this.input.filter(o=>o);let s=null;this.tooltipViews=this.tooltips.map(o=>s=n(o,s))}update(e,i){var n;let r=e.state.facet(this.facet),s=r.filter(a=>a);if(r===this.input){for(let a of this.tooltipViews)a.update&&a.update(e);return!1}let o=[],l=i?[]:null;for(let a=0;ai[u]=a),i.length=l.length),this.input=r,this.tooltips=s,this.tooltipViews=o,!0}}function e$(t){let e=t.dom.ownerDocument.documentElement;return{top:0,left:0,bottom:e.clientHeight,right:e.clientWidth}}const Ia=G.define({combine:t=>{var e,i,n;return{position:q.ios?"absolute":((e=t.find(r=>r.position))===null||e===void 0?void 0:e.position)||"fixed",parent:((i=t.find(r=>r.parent))===null||i===void 0?void 0:i.parent)||null,tooltipSpace:((n=t.find(r=>r.tooltipSpace))===null||n===void 0?void 0:n.tooltipSpace)||e$}}}),s0=new WeakMap,fg=Mt.fromClass(class{constructor(t){this.view=t,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;let e=t.state.facet(Ia);this.position=e.position,this.parent=e.parent,this.classes=t.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.resizeObserver=typeof ResizeObserver=="function"?new ResizeObserver(()=>this.measureSoon()):null,this.manager=new J3(t,dg,(i,n)=>this.createTooltip(i,n),i=>{this.resizeObserver&&this.resizeObserver.unobserve(i.dom),i.dom.remove()}),this.above=this.manager.tooltips.map(i=>!!i.above),this.intersectionObserver=typeof IntersectionObserver=="function"?new IntersectionObserver(i=>{Date.now()>this.lastTransaction-50&&i.length>0&&i[i.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),t.win.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let t of this.manager.tooltipViews)this.intersectionObserver.observe(t.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(t){t.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(t,this.above);e&&this.observeIntersection();let i=e||t.geometryChanged,n=t.state.facet(Ia);if(n.position!=this.position&&!this.madeAbsolute){this.position=n.position;for(let r of this.manager.tooltipViews)r.dom.style.position=this.position;i=!0}if(n.parent!=this.parent){this.parent&&this.container.remove(),this.parent=n.parent,this.createContainer();for(let r of this.manager.tooltipViews)this.container.appendChild(r.dom);i=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);i&&this.maybeMeasure()}createTooltip(t,e){let i=t.create(this.view),n=e?e.dom:null;if(i.dom.classList.add("cm-tooltip"),t.arrow&&!i.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let r=document.createElement("div");r.className="cm-tooltip-arrow",i.dom.appendChild(r)}return i.dom.style.position=this.position,i.dom.style.top=Eo,i.dom.style.left="0px",this.container.insertBefore(i.dom,n),i.mount&&i.mount(this.view),this.resizeObserver&&this.resizeObserver.observe(i.dom),i}destroy(){var t,e,i;this.view.win.removeEventListener("resize",this.measureSoon);for(let n of this.manager.tooltipViews)n.dom.remove(),(t=n.destroy)===null||t===void 0||t.call(n);this.parent&&this.container.remove(),(e=this.resizeObserver)===null||e===void 0||e.disconnect(),(i=this.intersectionObserver)===null||i===void 0||i.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let t=1,e=1,i=!1;if(this.position=="fixed"&&this.manager.tooltipViews.length){let{dom:s}=this.manager.tooltipViews[0];if(q.safari){let o=s.getBoundingClientRect();i=Math.abs(o.top+1e4)>1||Math.abs(o.left)>1}else i=!!s.offsetParent&&s.offsetParent!=this.container.ownerDocument.body}if(i||this.position=="absolute")if(this.parent){let s=this.parent.getBoundingClientRect();s.width&&s.height&&(t=s.width/this.parent.offsetWidth,e=s.height/this.parent.offsetHeight)}else({scaleX:t,scaleY:e}=this.view.viewState);let n=this.view.scrollDOM.getBoundingClientRect(),r=Yc(this.view);return{visible:{left:n.left+r.left,top:n.top+r.top,right:n.right-r.right,bottom:n.bottom-r.bottom},parent:this.parent?this.container.getBoundingClientRect():this.view.dom.getBoundingClientRect(),pos:this.manager.tooltips.map((s,o)=>{let l=this.manager.tooltipViews[o];return l.getCoords?l.getCoords(s.pos):this.view.coordsAtPos(s.pos)}),size:this.manager.tooltipViews.map(({dom:s})=>s.getBoundingClientRect()),space:this.view.state.facet(Ia).tooltipSpace(this.view),scaleX:t,scaleY:e,makeAbsolute:i}}writeMeasure(t){var e;if(t.makeAbsolute){this.madeAbsolute=!0,this.position="absolute";for(let l of this.manager.tooltipViews)l.dom.style.position="absolute"}let{visible:i,space:n,scaleX:r,scaleY:s}=t,o=[];for(let l=0;l=Math.min(i.bottom,n.bottom)||h.rightMath.min(i.right,n.right)+.1)){c.style.top=Eo;continue}let d=a.arrow?u.dom.querySelector(".cm-tooltip-arrow"):null,p=d?7:0,m=f.right-f.left,O=(e=s0.get(u))!==null&&e!==void 0?e:f.bottom-f.top,g=u.offset||i$,b=this.view.textDirection==Ce.LTR,y=f.width>n.right-n.left?b?n.left:n.right-f.width:b?Math.max(n.left,Math.min(h.left-(d?14:0)+g.x,n.right-m)):Math.min(Math.max(n.left,h.left-m+(d?14:0)-g.x),n.right-m),w=this.above[l];!a.strictSide&&(w?h.top-O-p-g.yn.bottom)&&w==n.bottom-h.bottom>h.top-n.top&&(w=this.above[l]=!w);let v=(w?h.top-n.top:n.bottom-h.bottom)-p;if(vy&&_.topQ&&(Q=w?_.top-O-2-p:_.bottom+p+2);if(this.position=="absolute"?(c.style.top=(Q-t.parent.top)/s+"px",o0(c,(y-t.parent.left)/r)):(c.style.top=Q/s+"px",o0(c,y/r)),d){let _=h.left+(b?g.x:-g.x)-(y+14-7);d.style.left=_/r+"px"}u.overlap!==!0&&o.push({left:y,top:Q,right:P,bottom:Q+O}),c.classList.toggle("cm-tooltip-above",w),c.classList.toggle("cm-tooltip-below",!w),u.positioned&&u.positioned(t.space)}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let t of this.manager.tooltipViews)t.dom.style.top=Eo}},{eventObservers:{scroll(){this.maybeMeasure()}}});function o0(t,e){let i=parseInt(t.style.left,10);(isNaN(i)||Math.abs(e-i)>1)&&(t.style.left=e+"px")}const t$=W.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:"14px",position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),i$={x:0,y:0},dg=G.define({enables:[fg,t$]});function pg(t,e){let i=t.plugin(fg);if(!i)return null;let n=i.manager.tooltips.indexOf(e);return n<0?null:i.manager.tooltipViews[n]}const l0=G.define({combine(t){let e,i;for(let n of t)e=e||n.topContainer,i=i||n.bottomContainer;return{topContainer:e,bottomContainer:i}}});function mg(t,e){let i=t.plugin(Og),n=i?i.specs.indexOf(e):-1;return n>-1?i.panels[n]:null}const Og=Mt.fromClass(class{constructor(t){this.input=t.state.facet(Pl),this.specs=this.input.filter(i=>i),this.panels=this.specs.map(i=>i(t));let e=t.state.facet(l0);this.top=new Ro(t,!0,e.topContainer),this.bottom=new Ro(t,!1,e.bottomContainer),this.top.sync(this.panels.filter(i=>i.top)),this.bottom.sync(this.panels.filter(i=>!i.top));for(let i of this.panels)i.dom.classList.add("cm-panel"),i.mount&&i.mount()}update(t){let e=t.state.facet(l0);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new Ro(t.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new Ro(t.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let i=t.state.facet(Pl);if(i!=this.input){let n=i.filter(a=>a),r=[],s=[],o=[],l=[];for(let a of n){let u=this.specs.indexOf(a),c;u<0?(c=a(t.view),l.push(c)):(c=this.panels[u],c.update&&c.update(t)),r.push(c),(c.top?s:o).push(c)}this.specs=n,this.panels=r,this.top.sync(s),this.bottom.sync(o);for(let a of l)a.dom.classList.add("cm-panel"),a.mount&&a.mount()}else for(let n of this.panels)n.update&&n.update(t)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:t=>W.scrollMargins.of(e=>{let i=e.plugin(t);return i&&{top:i.top.scrollMargin(),bottom:i.bottom.scrollMargin()}})});class Ro{constructor(e,i,n){this.view=e,this.top=i,this.container=n,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(e){for(let i of this.panels)i.destroy&&e.indexOf(i)<0&&i.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom",this.dom.style[this.top?"top":"bottom"]="0";let i=this.container||this.view.dom;i.insertBefore(this.dom,this.top?i.firstChild:null)}let e=this.dom.firstChild;for(let i of this.panels)if(i.dom.parentNode==this.dom){for(;e!=i.dom;)e=a0(e);e=e.nextSibling}else this.dom.insertBefore(i.dom,e);for(;e;)e=a0(e)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let e of this.classes.split(" "))e&&this.container.classList.remove(e);for(let e of(this.classes=this.view.themeClasses).split(" "))e&&this.container.classList.add(e)}}}function a0(t){let e=t.nextSibling;return t.remove(),e}const Pl=G.define({enables:Og});function n$(t,e){let i,n=new Promise(o=>i=o),r=o=>r$(o,e,i);t.state.field(Xa,!1)?t.dispatch({effects:gg.of(r)}):t.dispatch({effects:ae.appendConfig.of(Xa.init(()=>[r]))});let s=bg.of(r);return{close:s,result:n.then(o=>((t.win.queueMicrotask||(a=>t.win.setTimeout(a,10)))(()=>{t.state.field(Xa).indexOf(r)>-1&&t.dispatch({effects:s})}),o))}}const Xa=Yt.define({create(){return[]},update(t,e){for(let i of e.effects)i.is(gg)?t=[i.value].concat(t):i.is(bg)&&(t=t.filter(n=>n!=i.value));return t},provide:t=>Pl.computeN([t],e=>e.field(t))}),gg=ae.define(),bg=ae.define();function r$(t,e,i){let n=e.content?e.content(t,()=>o(null)):null;if(!n){if(n=We("form"),e.input){let l=We("input",e.input);/^(text|password|number|email|tel|url)$/.test(l.type)&&l.classList.add("cm-textfield"),l.name||(l.name="input"),n.appendChild(We("label",(e.label||"")+": ",l))}else n.appendChild(document.createTextNode(e.label||""));n.appendChild(document.createTextNode(" ")),n.appendChild(We("button",{class:"cm-button",type:"submit"},e.submitLabel||"OK"))}let r=n.nodeName=="FORM"?[n]:n.querySelectorAll("form");for(let l=0;l{u.keyCode==27?(u.preventDefault(),o(null)):u.keyCode==13&&(u.preventDefault(),o(a))}),a.addEventListener("submit",u=>{u.preventDefault(),o(a)})}let s=We("div",n,We("button",{onclick:()=>o(null),"aria-label":t.state.phrase("close"),class:"cm-dialog-close",type:"button"},["×"]));e.class&&(s.className=e.class),s.classList.add("cm-dialog");function o(l){s.contains(s.ownerDocument.activeElement)&&t.focus(),i(l)}return{dom:s,top:e.top,mount:()=>{if(e.focus){let l;typeof e.focus=="string"?l=n.querySelector(e.focus):l=n.querySelector("input")||n.querySelector("button"),l&&"select"in l?l.select():l&&"focus"in l&&l.focus()}}}}class kr extends on{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}}kr.prototype.elementClass="";kr.prototype.toDOM=void 0;kr.prototype.mapMode=ut.TrackBefore;kr.prototype.startSide=kr.prototype.endSide=-1;kr.prototype.point=!0;const vg=1024;let s$=0;class Ft{constructor(e,i){this.from=e,this.to=i}}class K{constructor(e={}){this.id=s$++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=e.combine||null}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=ze.match(e)),i=>{let n=e(i);return n===void 0?null:[this,n]}}}K.closedBy=new K({deserialize:t=>t.split(" ")});K.openedBy=new K({deserialize:t=>t.split(" ")});K.group=new K({deserialize:t=>t.split(" ")});K.isolate=new K({deserialize:t=>{if(t&&t!="rtl"&&t!="ltr"&&t!="auto")throw new RangeError("Invalid value for isolate: "+t);return t||"auto"}});K.contextHash=new K({perNode:!0});K.lookAhead=new K({perNode:!0});K.mounted=new K({perNode:!0});class rr{constructor(e,i,n,r=!1){this.tree=e,this.overlay=i,this.parser=n,this.bracketed=r}static get(e){return e&&e.props&&e.props[K.mounted.id]}}const o$=Object.create(null);class ze{constructor(e,i,n,r=0){this.name=e,this.props=i,this.id=n,this.flags=r}static define(e){let i=e.props&&e.props.length?Object.create(null):o$,n=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),r=new ze(e.name||"",i,e.id,n);if(e.props){for(let s of e.props)if(Array.isArray(s)||(s=s(r)),s){if(s[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");i[s[0].id]=s[1]}}return r}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let i=this.prop(K.group);return i?i.indexOf(e)>-1:!1}return this.id==e}static match(e){let i=Object.create(null);for(let n in e)for(let r of n.split(" "))i[r]=e[n];return n=>{for(let r=n.prop(K.group),s=-1;s<(r?r.length:0);s++){let o=i[s<0?n.name:r[s]];if(o)return o}}}}ze.none=new ze("",Object.create(null),0,8);class Rr{constructor(e){this.types=e;for(let i=0;i0;for(let a=this.cursor(o|ge.IncludeAnonymous);;){let u=!1;if(a.from<=s&&a.to>=r&&(!l&&a.type.isAnonymous||i(a)!==!1)){if(a.firstChild())continue;u=!0}for(;u&&n&&(l||!a.type.isAnonymous)&&n(a),!a.nextSibling();){if(!a.parent())return;u=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let i in this.props)e.push([+i,this.props[i]]);return e}balance(e={}){return this.children.length<=8?this:Jc(ze.none,this.children,this.positions,0,this.children.length,0,this.length,(i,n,r)=>new se(this.type,i,n,r,this.propValues),e.makeTree||((i,n,r)=>new se(ze.none,i,n,r)))}static build(e){return c$(e)}}se.empty=new se(ze.none,[],[],0);class Hc{constructor(e,i){this.buffer=e,this.index=i}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new Hc(this.buffer,this.index)}}class cn{constructor(e,i,n){this.buffer=e,this.length=i,this.set=n}get type(){return ze.none}toString(){let e=[];for(let i=0;i0));a=o[a+3]);return l}slice(e,i,n){let r=this.buffer,s=new Uint16Array(i-e),o=0;for(let l=e,a=0;l=e&&ie;case 1:return i<=e&&n>e;case 2:return n>e;case 4:return!0}}function Ds(t,e,i,n){for(var r;t.from==t.to||(i<1?t.from>=e:t.from>e)||(i>-1?t.to<=e:t.to0?l.length:-1;e!=u;e+=i){let c=l[e],h=a[e]+o.from,f;if(!(!(s&ge.EnterBracketed&&c instanceof se&&(f=rr.get(c))&&!f.overlay&&f.bracketed&&n>=h&&n<=h+c.length)&&!yg(r,n,h,h+c.length))){if(c instanceof cn){if(s&ge.ExcludeBuffers)continue;let d=c.findChild(0,c.buffer.length,i,n-h,r);if(d>-1)return new ki(new l$(o,c,e,h),null,d)}else if(s&ge.IncludeAnonymous||!c.type.isAnonymous||Kc(c)){let d;if(!(s&ge.IgnoreMounts)&&(d=rr.get(c))&&!d.overlay)return new rt(d.tree,h,e,o);let p=new rt(c,h,e,o);return s&ge.IncludeAnonymous||!p.type.isAnonymous?p:p.nextChild(i<0?c.children.length-1:0,i,n,r,s)}}}if(s&ge.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?e=o.index+i:e=i<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}prop(e){return this._tree.prop(e)}enter(e,i,n=0){let r;if(!(n&ge.IgnoreOverlays)&&(r=rr.get(this._tree))&&r.overlay){let s=e-this.from,o=n&ge.EnterBracketed&&r.bracketed;for(let{from:l,to:a}of r.overlay)if((i>0||o?l<=s:l=s:a>s))return new rt(r.tree,r.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,i,n)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}}function c0(t,e,i,n){let r=t.cursor(),s=[];if(!r.firstChild())return s;if(i!=null){for(let o=!1;!o;)if(o=r.type.is(i),!r.nextSibling())return s}for(;;){if(n!=null&&r.type.is(n))return s;if(r.type.is(e)&&s.push(r.node),!r.nextSibling())return n==null?s:[]}}function nc(t,e,i=e.length-1){for(let n=t;i>=0;n=n.parent){if(!n)return!1;if(!n.type.isAnonymous){if(e[i]&&e[i]!=n.name)return!1;i--}}return!0}class l${constructor(e,i,n,r){this.parent=e,this.buffer=i,this.index=n,this.start=r}}class ki extends xg{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,i,n){super(),this.context=e,this._parent=i,this.index=n,this.type=e.buffer.set.types[e.buffer.buffer[n]]}child(e,i,n){let{buffer:r}=this.context,s=r.findChild(this.index+4,r.buffer[this.index+3],e,i-this.context.start,n);return s<0?null:new ki(this.context,this,s)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}prop(e){return this.type.prop(e)}enter(e,i,n=0){if(n&ge.ExcludeBuffers)return null;let{buffer:r}=this.context,s=r.findChild(this.index+4,r.buffer[this.index+3],i>0?1:-1,e-this.context.start,i);return s<0?null:new ki(this.context,this,s)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,i=e.buffer[this.index+3];return i<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new ki(this.context,this._parent,i):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,i=this._parent?this._parent.index+4:0;return this.index==i?this.externalSibling(-1):new ki(this.context,this._parent,e.findChild(i,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],i=[],{buffer:n}=this.context,r=this.index+4,s=n.buffer[this.index+3];if(s>r){let o=n.buffer[this.index+1];e.push(n.slice(r,s,o)),i.push(0)}return new se(this.type,e,i,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}}function kg(t){if(!t.length)return null;let e=0,i=t[0];for(let s=1;si.from||o.to=e){let l=new rt(o.tree,o.overlay[0].from+s.from,-1,s);(r||(r=[n])).push(Ds(l,e,i,!1))}}return r?kg(r):n}class Cl{get name(){return this.type.name}constructor(e,i=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=i&~ge.EnterBracketed,e instanceof rt)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let n=e._parent;n;n=n._parent)this.stack.unshift(n.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,i){this.index=e;let{start:n,buffer:r}=this.buffer;return this.type=i||r.set.types[r.buffer[e]],this.from=n+r.buffer[e+1],this.to=n+r.buffer[e+2],!0}yield(e){return e?e instanceof rt?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,i,n){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,i,n,this.mode));let{buffer:r}=this.buffer,s=r.findChild(this.index+4,r.buffer[this.index+3],e,i-this.buffer.start,n);return s<0?!1:(this.stack.push(this.index),this.yieldBuf(s))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,i,n=this.mode){return this.buffer?n&ge.ExcludeBuffers?!1:this.enterChild(1,e,i):this.yield(this._tree.enter(e,i,n))}parent(){if(!this.buffer)return this.yieldNode(this.mode&ge.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&ge.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:i}=this.buffer,n=this.stack.length-1;if(e<0){let r=n<0?0:this.stack[n]+4;if(this.index!=r)return this.yieldBuf(i.findChild(r,this.index,-1,0,4))}else{let r=i.buffer[this.index+3];if(r<(n<0?i.buffer.length:i.buffer[this.stack[n]+3]))return this.yieldBuf(r)}return n<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let i,n,{buffer:r}=this;if(r){if(e>0){if(this.index-1)for(let s=i+e,o=e<0?-1:n._tree.children.length;s!=o;s+=e){let l=n._tree.children[s];if(this.mode&ge.IncludeAnonymous||l instanceof cn||!l.type.isAnonymous||Kc(l))return!1}return!0}move(e,i){if(i&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,i=0){for(;(this.from==this.to||(i<1?this.from>=e:this.from>e)||(i>-1?this.to<=e:this.to=0;){for(let o=e;o;o=o._parent)if(o.index==r){if(r==this.index)return o;i=o,n=s+1;break e}r=this.stack[--s]}for(let r=n;r=0;s--){if(s<0)return nc(this._tree,e,r);let o=n[i.buffer[this.stack[s]]];if(!o.isAnonymous){if(e[r]&&e[r]!=o.name)return!1;r--}}return!0}}function Kc(t){return t.children.some(e=>e instanceof cn||!e.type.isAnonymous||Kc(e))}function c$(t){var e;let{buffer:i,nodeSet:n,maxBufferLength:r=vg,reused:s=[],minRepeatType:o=n.types.length}=t,l=Array.isArray(i)?new Hc(i,i.length):i,a=n.types,u=0,c=0;function h(v,Q,P,_,R,L){let{id:I,start:T,end:M,size:F}=l,B=c,Y=u;if(F<0)if(l.next(),F==-1){let ye=s[I];P.push(ye),_.push(T-v);return}else if(F==-3){u=I;return}else if(F==-4){c=I;return}else throw new RangeError(`Unrecognized record size: ${F}`);let J=a[I],ee,re,ue=T-v;if(M-T<=r&&(re=O(l.pos-Q,R))){let ye=new Uint16Array(re.size-re.skip),Oe=l.pos-re.size,le=ye.length;for(;l.pos>Oe;)le=g(re.start,ye,le);ee=new cn(ye,M-re.start,n),ue=re.start-v}else{let ye=l.pos-F;l.next();let Oe=[],le=[],Se=I>=o?I:-1,et=0,Pi=M;for(;l.pos>ye;)Se>=0&&l.id==Se&&l.size>=0?(l.end<=Pi-r&&(p(Oe,le,T,et,l.end,Pi,Se,B,Y),et=Oe.length,Pi=l.end),l.next()):L>2500?f(T,ye,Oe,le):h(T,ye,Oe,le,Se,L+1);if(Se>=0&&et>0&&et-1&&et>0){let dn=d(J,Y);ee=Jc(J,Oe,le,0,Oe.length,0,M-T,dn,dn)}else ee=m(J,Oe,le,M-T,B-M,Y)}P.push(ee),_.push(ue)}function f(v,Q,P,_){let R=[],L=0,I=-1;for(;l.pos>Q;){let{id:T,start:M,end:F,size:B}=l;if(B>4)l.next();else{if(I>-1&&M=0;F-=3)T[B++]=R[F],T[B++]=R[F+1]-M,T[B++]=R[F+2]-M,T[B++]=B;P.push(new cn(T,R[2]-M,n)),_.push(M-v)}}function d(v,Q){return(P,_,R)=>{let L=0,I=P.length-1,T,M;if(I>=0&&(T=P[I])instanceof se){if(!I&&T.type==v&&T.length==R)return T;(M=T.prop(K.lookAhead))&&(L=_[I]+T.length+M)}return m(v,P,_,R,L,Q)}}function p(v,Q,P,_,R,L,I,T,M){let F=[],B=[];for(;v.length>_;)F.push(v.pop()),B.push(Q.pop()+P-R);v.push(m(n.types[I],F,B,L-R,T-L,M)),Q.push(R-P)}function m(v,Q,P,_,R,L,I){if(L){let T=[K.contextHash,L];I=I?[T].concat(I):[T]}if(R>25){let T=[K.lookAhead,R];I=I?[T].concat(I):[T]}return new se(v,Q,P,_,I)}function O(v,Q){let P=l.fork(),_=0,R=0,L=0,I=P.end-r,T={size:0,start:0,skip:0};e:for(let M=P.pos-v;P.pos>M;){let F=P.size;if(P.id==Q&&F>=0){T.size=_,T.start=R,T.skip=L,L+=4,_+=4,P.next();continue}let B=P.pos-F;if(F<0||B=o?4:0,J=P.start;for(P.next();P.pos>B;){if(P.size<0)if(P.size==-3||P.size==-4)Y+=4;else break e;else P.id>=o&&(Y+=4);P.next()}R=J,_+=F,L+=Y}return(Q<0||_==v)&&(T.size=_,T.start=R,T.skip=L),T.size>4?T:void 0}function g(v,Q,P){let{id:_,start:R,end:L,size:I}=l;if(l.next(),I>=0&&_4){let M=l.pos-(I-4);for(;l.pos>M;)P=g(v,Q,P)}Q[--P]=T,Q[--P]=L-v,Q[--P]=R-v,Q[--P]=_}else I==-3?u=_:I==-4&&(c=_);return P}let b=[],y=[];for(;l.pos>0;)h(t.start||0,t.bufferStart||0,b,y,-1,0);let w=(e=t.length)!==null&&e!==void 0?e:b.length?y[0]+b[0].length:0;return new se(a[t.topID],b.reverse(),y.reverse(),w)}const h0=new WeakMap;function sl(t,e){if(!t.isAnonymous||e instanceof cn||e.type!=t)return 1;let i=h0.get(e);if(i==null){i=1;for(let n of e.children){if(n.type!=t||!(n instanceof se)){i=1;break}i+=sl(t,n)}h0.set(e,i)}return i}function Jc(t,e,i,n,r,s,o,l,a){let u=0;for(let p=n;p=c)break;Q+=P}if(y==w+1){if(Q>c){let P=p[w];d(P.children,P.positions,0,P.children.length,m[w]+b);continue}h.push(p[w])}else{let P=m[y-1]+p[y-1].length-v;h.push(Jc(t,p,m,w,y,v,P,null,a))}f.push(v+b-s)}}return d(e,i,n,r,0),(l||a)(h,f,o)}class Sg{constructor(){this.map=new WeakMap}setBuffer(e,i,n){let r=this.map.get(e);r||this.map.set(e,r=new Map),r.set(i,n)}getBuffer(e,i){let n=this.map.get(e);return n&&n.get(i)}set(e,i){e instanceof ki?this.setBuffer(e.context.buffer,e.index,i):e instanceof rt&&this.map.set(e.tree,i)}get(e){return e instanceof ki?this.getBuffer(e.context.buffer,e.index):e instanceof rt?this.map.get(e.tree):void 0}cursorSet(e,i){e.buffer?this.setBuffer(e.buffer.buffer,e.index,i):this.map.set(e.tree,i)}cursorGet(e){return e.buffer?this.getBuffer(e.buffer.buffer,e.index):this.map.get(e.tree)}}class Li{constructor(e,i,n,r,s=!1,o=!1){this.from=e,this.to=i,this.tree=n,this.offset=r,this.open=(s?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,i=[],n=!1){let r=[new Li(0,e.length,e,0,!1,n)];for(let s of i)s.to>e.length&&r.push(s);return r}static applyChanges(e,i,n=128){if(!i.length)return e;let r=[],s=1,o=e.length?e[0]:null;for(let l=0,a=0,u=0;;l++){let c=l=n)for(;o&&o.from=f.from||h<=f.to||u){let d=Math.max(f.from,a)-u,p=Math.min(f.to,h)-u;f=d>=p?null:new Li(d,p,f.tree,f.offset+u,l>0,!!c)}if(f&&r.push(f),o.to>h)break;o=snew Ft(r.from,r.to)):[new Ft(0,0)]:[new Ft(0,e.length)],this.createParse(e,i||[],n)}parse(e,i,n){let r=this.startParse(e,i,n);for(;;){let s=r.advance();if(s)return s}}}class h${constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,i){return this.string.slice(e,i)}}function wg(t){return(e,i,n,r)=>new d$(e,t,i,n,r)}class f0{constructor(e,i,n,r,s,o){this.parser=e,this.parse=i,this.overlay=n,this.bracketed=r,this.target=s,this.from=o}}function d0(t){if(!t.length||t.some(e=>e.from>=e.to))throw new RangeError("Invalid inner parse ranges given: "+JSON.stringify(t))}class f${constructor(e,i,n,r,s,o,l,a){this.parser=e,this.predicate=i,this.mounts=n,this.index=r,this.start=s,this.bracketed=o,this.target=l,this.prev=a,this.depth=0,this.ranges=[]}}const rc=new K({perNode:!0});class d${constructor(e,i,n,r,s){this.nest=i,this.input=n,this.fragments=r,this.ranges=s,this.inner=[],this.innerDone=0,this.baseTree=null,this.stoppedAt=null,this.baseParse=e}advance(){if(this.baseParse){let n=this.baseParse.advance();if(!n)return null;if(this.baseParse=null,this.baseTree=n,this.startInner(),this.stoppedAt!=null)for(let r of this.inner)r.parse.stopAt(this.stoppedAt)}if(this.innerDone==this.inner.length){let n=this.baseTree;return this.stoppedAt!=null&&(n=new se(n.type,n.children,n.positions,n.length,n.propValues.concat([[rc,this.stoppedAt]]))),n}let e=this.inner[this.innerDone],i=e.parse.advance();if(i){this.innerDone++;let n=Object.assign(Object.create(null),e.target.props);n[K.mounted.id]=new rr(i,e.overlay,e.parser,e.bracketed),e.target.props=n}return null}get parsedPos(){if(this.baseParse)return 0;let e=this.input.length;for(let i=this.innerDone;i=this.stoppedAt)l=!1;else if(e.hasNode(r)){if(i){let u=i.mounts.find(c=>c.frag.from<=r.from&&c.frag.to>=r.to&&c.mount.overlay);if(u)for(let c of u.mount.overlay){let h=c.from+u.pos,f=c.to+u.pos;h>=r.from&&f<=r.to&&!i.ranges.some(d=>d.fromh)&&i.ranges.push({from:h,to:f})}}l=!1}else if(n&&(o=p$(n.ranges,r.from,r.to)))l=o!=2;else if(!r.type.isAnonymous&&(s=this.nest(r,this.input))&&(r.fromnew Ft(h.from-r.from,h.to-r.from)):null,!!s.bracketed,r.tree,c.length?c[0].from:r.from)),s.overlay?c.length&&(n={ranges:c,depth:0,prev:n}):l=!1}}else if(i&&(a=i.predicate(r))&&(a===!0&&(a=new Ft(r.from,r.to)),a.from=0&&i.ranges[u].to==a.from?i.ranges[u]={from:i.ranges[u].from,to:a.to}:i.ranges.push(a)}if(l&&r.firstChild())i&&i.depth++,n&&n.depth++;else for(;!r.nextSibling();){if(!r.parent())break e;if(i&&!--i.depth){let u=O0(this.ranges,i.ranges);u.length&&(d0(u),this.inner.splice(i.index,0,new f0(i.parser,i.parser.startParse(this.input,g0(i.mounts,u),u),i.ranges.map(c=>new Ft(c.from-i.start,c.to-i.start)),i.bracketed,i.target,u[0].from))),i=i.prev}n&&!--n.depth&&(n=n.prev)}}}}function p$(t,e,i){for(let n of t){if(n.from>=i)break;if(n.to>e)return n.from<=e&&n.to>=i?2:1}return 0}function p0(t,e,i,n,r,s){if(e=e&&i.enter(n,1,ge.IgnoreOverlays|ge.ExcludeBuffers)))if(i.to<=e)i.next(!1)||(this.done=!0);else break}hasNode(e){if(this.moveTo(e.from),!this.done&&this.cursor.from+this.offset==e.from&&this.cursor.tree)for(let i=this.cursor.tree;;){if(i==e.tree)return!0;if(i.children.length&&i.positions[0]==0&&i.children[0]instanceof se)i=i.children[0];else break}return!1}}let O$=class{constructor(e){var i;if(this.fragments=e,this.curTo=0,this.fragI=0,e.length){let n=this.curFrag=e[0];this.curTo=(i=n.tree.prop(rc))!==null&&i!==void 0?i:n.to,this.inner=new m0(n.tree,-n.offset)}else this.curFrag=this.inner=null}hasNode(e){for(;this.curFrag&&e.from>=this.curTo;)this.nextFrag();return this.curFrag&&this.curFrag.from<=e.from&&this.curTo>=e.to&&this.inner.hasNode(e)}nextFrag(){var e;if(this.fragI++,this.fragI==this.fragments.length)this.curFrag=this.inner=null;else{let i=this.curFrag=this.fragments[this.fragI];this.curTo=(e=i.tree.prop(rc))!==null&&e!==void 0?e:i.to,this.inner=new m0(i.tree,-i.offset)}}findMounts(e,i){var n;let r=[];if(this.inner){this.inner.cursor.moveTo(e,1);for(let s=this.inner.cursor.node;s;s=s.parent){let o=(n=s.tree)===null||n===void 0?void 0:n.prop(K.mounted);if(o&&o.parser==i)for(let l=this.fragI;l=s.to)break;a.tree==this.curFrag.tree&&r.push({frag:a,pos:s.from-a.offset,mount:o})}}}return r}};function O0(t,e){let i=null,n=e;for(let r=1,s=0;r=l)break;a.to<=o||(i||(n=i=e.slice()),a.froml&&i.splice(s+1,0,new Ft(l,a.to))):a.to>l?i[s--]=new Ft(l,a.to):i.splice(s--,1))}}return n}function g$(t,e,i,n){let r=0,s=0,o=!1,l=!1,a=-1e9,u=[];for(;;){let c=r==t.length?1e9:o?t[r].to:t[r].from,h=s==e.length?1e9:l?e[s].to:e[s].from;if(o!=l){let f=Math.max(a,i),d=Math.min(c,h,n);fnew Ft(f.from+n,f.to+n)),h=g$(e,c,a,u);for(let f=0,d=a;;f++){let p=f==h.length,m=p?u:h[f].from;if(m>d&&i.push(new Li(d,m,r.tree,-o,s.from>=d||s.openStart,s.to<=m||s.openEnd)),p)break;d=h[f].to}}else i.push(new Li(a,u,r.tree,-o,s.from>=o||s.openStart,s.to<=l||s.openEnd))}return i}let b$=0;class Et{constructor(e,i,n,r){this.name=e,this.set=i,this.base=n,this.modified=r,this.id=b$++}toString(){let{name:e}=this;for(let i of this.modified)i.name&&(e=`${i.name}(${e})`);return e}static define(e,i){let n=typeof e=="string"?e:"?";if(e instanceof Et&&(i=e),i!=null&&i.base)throw new Error("Can not derive from a modified tag");let r=new Et(n,[],null,[]);if(r.set.push(r),i)for(let s of i.set)r.set.push(s);return r}static defineModifier(e){let i=new Tl(e);return n=>n.modified.indexOf(i)>-1?n:Tl.get(n.base||n,n.modified.concat(i).sort((r,s)=>r.id-s.id))}}let v$=0;class Tl{constructor(e){this.name=e,this.instances=[],this.id=v$++}static get(e,i){if(!i.length)return e;let n=i[0].instances.find(l=>l.base==e&&y$(i,l.modified));if(n)return n;let r=[],s=new Et(e.name,r,e,i);for(let l of i)l.instances.push(s);let o=x$(i);for(let l of e.set)if(!l.modified.length)for(let a of o)r.push(Tl.get(l,a));return s}}function y$(t,e){return t.length==e.length&&t.every((i,n)=>i==e[n])}function x$(t){let e=[[]];for(let i=0;in.length-i.length)}function Dr(t){let e=Object.create(null);for(let i in t){let n=t[i];Array.isArray(n)||(n=[n]);for(let r of i.split(" "))if(r){let s=[],o=2,l=r;for(let h=0;;){if(l=="..."&&h>0&&h+3==r.length){o=1;break}let f=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!f)throw new RangeError("Invalid path: "+r);if(s.push(f[0]=="*"?"":f[0][0]=='"'?JSON.parse(f[0]):f[0]),h+=f[0].length,h==r.length)break;let d=r[h++];if(h==r.length&&d=="!"){o=0;break}if(d!="/")throw new RangeError("Invalid path: "+r);l=r.slice(h)}let a=s.length-1,u=s[a];if(!u)throw new RangeError("Invalid path: "+r);let c=new Ls(n,o,a>0?s.slice(0,a):null);e[u]=c.sort(e[u])}}return $g.add(e)}const $g=new K({combine(t,e){let i,n,r;for(;t||e;){if(!t||e&&t.depth>=e.depth?(r=e,e=e.next):(r=t,t=t.next),i&&i.mode==r.mode&&!r.context&&!i.context)continue;let s=new Ls(r.tags,r.mode,r.context);i?i.next=s:n=s,i=s}return n}});class Ls{constructor(e,i,n,r){this.tags=e,this.mode=i,this.context=n,this.next=r}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth{let o=r;for(let l of s)for(let a of l.set){let u=i[a.id];if(u){o=o?o+" "+u:u;break}}return o},scope:n}}function k$(t,e){let i=null;for(let n of t){let r=n.style(e);r&&(i=i?i+" "+r:r)}return i}function S$(t,e,i,n=0,r=t.length){let s=new w$(n,Array.isArray(e)?e:[e],i);s.highlightRange(t.cursor(),n,r,"",s.highlighters),s.flush(r)}class w${constructor(e,i,n){this.at=e,this.highlighters=i,this.span=n,this.class=""}startSpan(e,i){i!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=i)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,i,n,r,s){let{type:o,from:l,to:a}=e;if(l>=n||a<=i)return;o.isTop&&(s=this.highlighters.filter(d=>!d.scope||d.scope(o)));let u=r,c=$$(e)||Ls.empty,h=k$(s,c.tags);if(h&&(u&&(u+=" "),u+=h,c.mode==1&&(r+=(r?" ":"")+h)),this.startSpan(Math.max(i,l),u),c.opaque)return;let f=e.tree&&e.tree.prop(K.mounted);if(f&&f.overlay){let d=e.node.enter(f.overlay[0].from+l,1),p=this.highlighters.filter(O=>!O.scope||O.scope(f.tree.type)),m=e.firstChild();for(let O=0,g=l;;O++){let b=O=y||!e.nextSibling())););if(!b||y>n)break;g=b.to+l,g>i&&(this.highlightRange(d.cursor(),Math.max(i,b.from+l),Math.min(n,g),"",p),this.startSpan(Math.min(n,g),u))}m&&e.parent()}else if(e.firstChild()){f&&(r="");do if(!(e.to<=i)){if(e.from>=n)break;this.highlightRange(e,i,n,r,s),this.startSpan(Math.min(n,e.to),u)}while(e.nextSibling());e.parent()}}}function $$(t){let e=t.type.prop($g);for(;e&&e.context&&!t.matchContext(e.context);)e=e.next;return e||null}const V=Et.define,Lo=V(),Gi=V(),b0=V(Gi),v0=V(Gi),Ui=V(),Mo=V(Ui),za=V(Ui),mi=V(),On=V(mi),di=V(),pi=V(),sc=V(),Br=V(sc),Zo=V(),k={comment:Lo,lineComment:V(Lo),blockComment:V(Lo),docComment:V(Lo),name:Gi,variableName:V(Gi),typeName:b0,tagName:V(b0),propertyName:v0,attributeName:V(v0),className:V(Gi),labelName:V(Gi),namespace:V(Gi),macroName:V(Gi),literal:Ui,string:Mo,docString:V(Mo),character:V(Mo),attributeValue:V(Mo),number:za,integer:V(za),float:V(za),bool:V(Ui),regexp:V(Ui),escape:V(Ui),color:V(Ui),url:V(Ui),keyword:di,self:V(di),null:V(di),atom:V(di),unit:V(di),modifier:V(di),operatorKeyword:V(di),controlKeyword:V(di),definitionKeyword:V(di),moduleKeyword:V(di),operator:pi,derefOperator:V(pi),arithmeticOperator:V(pi),logicOperator:V(pi),bitwiseOperator:V(pi),compareOperator:V(pi),updateOperator:V(pi),definitionOperator:V(pi),typeOperator:V(pi),controlOperator:V(pi),punctuation:sc,separator:V(sc),bracket:Br,angleBracket:V(Br),squareBracket:V(Br),paren:V(Br),brace:V(Br),content:mi,heading:On,heading1:V(On),heading2:V(On),heading3:V(On),heading4:V(On),heading5:V(On),heading6:V(On),contentSeparator:V(mi),list:V(mi),quote:V(mi),emphasis:V(mi),strong:V(mi),link:V(mi),monospace:V(mi),strikethrough:V(mi),inserted:V(),deleted:V(),changed:V(),invalid:V(),meta:Zo,documentMeta:V(Zo),annotation:V(Zo),processingInstruction:V(Zo),definition:Et.defineModifier("definition"),constant:Et.defineModifier("constant"),function:Et.defineModifier("function"),standard:Et.defineModifier("standard"),local:Et.defineModifier("local"),special:Et.defineModifier("special")};for(let t in k){let e=k[t];e instanceof Et&&(e.name=t)}Qg([{tag:k.link,class:"tok-link"},{tag:k.heading,class:"tok-heading"},{tag:k.emphasis,class:"tok-emphasis"},{tag:k.strong,class:"tok-strong"},{tag:k.keyword,class:"tok-keyword"},{tag:k.atom,class:"tok-atom"},{tag:k.bool,class:"tok-bool"},{tag:k.url,class:"tok-url"},{tag:k.labelName,class:"tok-labelName"},{tag:k.inserted,class:"tok-inserted"},{tag:k.deleted,class:"tok-deleted"},{tag:k.literal,class:"tok-literal"},{tag:k.string,class:"tok-string"},{tag:k.number,class:"tok-number"},{tag:[k.regexp,k.escape,k.special(k.string)],class:"tok-string2"},{tag:k.variableName,class:"tok-variableName"},{tag:k.local(k.variableName),class:"tok-variableName tok-local"},{tag:k.definition(k.variableName),class:"tok-variableName tok-definition"},{tag:k.special(k.variableName),class:"tok-variableName2"},{tag:k.definition(k.propertyName),class:"tok-propertyName tok-definition"},{tag:k.typeName,class:"tok-typeName"},{tag:k.namespace,class:"tok-namespace"},{tag:k.className,class:"tok-className"},{tag:k.macroName,class:"tok-macroName"},{tag:k.propertyName,class:"tok-propertyName"},{tag:k.operator,class:"tok-operator"},{tag:k.comment,class:"tok-comment"},{tag:k.meta,class:"tok-meta"},{tag:k.invalid,class:"tok-invalid"},{tag:k.punctuation,class:"tok-punctuation"}]);var ja;const nn=new K;function ca(t){return G.define({combine:t?e=>e.concat(t):void 0})}const eh=new K;class Dt{constructor(e,i,n=[],r=""){this.data=e,this.name=r,fe.prototype.hasOwnProperty("tree")||Object.defineProperty(fe.prototype,"tree",{get(){return Re(this)}}),this.parser=i,this.extension=[$r.of(this),fe.languageData.of((s,o,l)=>{let a=y0(s,o,l),u=a.type.prop(nn);if(!u)return[];let c=s.facet(u),h=a.type.prop(eh);if(h){let f=a.resolve(o-a.from,l);for(let d of h)if(d.test(f,s)){let p=s.facet(d.facet);return d.type=="replace"?p:p.concat(c)}}return c})].concat(n)}isActiveAt(e,i,n=-1){return y0(e,i,n).type.prop(nn)==this.data}findRegions(e){let i=e.facet($r);if((i==null?void 0:i.data)==this.data)return[{from:0,to:e.doc.length}];if(!i||!i.allowsNesting)return[];let n=[],r=(s,o)=>{if(s.prop(nn)==this.data){n.push({from:o,to:o+s.length});return}let l=s.prop(K.mounted);if(l){if(l.tree.prop(nn)==this.data){if(l.overlay)for(let a of l.overlay)n.push({from:a.from+o,to:a.to+o});else n.push({from:o,to:o+s.length});return}else if(l.overlay){let a=n.length;if(r(l.tree,l.overlay[0].from+o),n.length>a)return}}for(let a=0;an.isTop?i:void 0)]}),e.name)}configure(e,i){return new Sr(this.data,this.parser.configure(e),i||this.name)}get allowsNesting(){return this.parser.hasWrappers()}}function Re(t){let e=t.field(Dt.state,!1);return e?e.tree:se.empty}class Q${constructor(e){this.doc=e,this.cursorPos=0,this.string="",this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,i){let n=this.cursorPos-this.string.length;return e=this.cursorPos?this.doc.sliceString(e,i):this.string.slice(e-n,i-n)}}let Vr=null;class Dn{constructor(e,i,n=[],r,s,o,l,a){this.parser=e,this.state=i,this.fragments=n,this.tree=r,this.treeLen=s,this.viewport=o,this.skipped=l,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(e,i,n){return new Dn(e,i,[],se.empty,0,n,[],null)}startParse(){return this.parser.startParse(new Q$(this.state.doc),this.fragments)}work(e,i){return i!=null&&i>=this.state.doc.length&&(i=void 0),this.tree!=se.empty&&this.isDone(i??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var n;if(typeof e=="number"){let r=Date.now()+e;e=()=>Date.now()>r}for(this.parse||(this.parse=this.startParse()),i!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>i)&&i=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(i=this.parse.advance()););}),this.treeLen=e,this.tree=i,this.fragments=this.withoutTempSkipped(Li.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let i=Vr;Vr=this;try{return e()}finally{Vr=i}}withoutTempSkipped(e){for(let i;i=this.tempSkipped.pop();)e=x0(e,i.from,i.to);return e}changes(e,i){let{fragments:n,tree:r,treeLen:s,viewport:o,skipped:l}=this;if(this.takeTree(),!e.empty){let a=[];if(e.iterChangedRanges((u,c,h,f)=>a.push({fromA:u,toA:c,fromB:h,toB:f})),n=Li.applyChanges(n,a),r=se.empty,s=0,o={from:e.mapPos(o.from,-1),to:e.mapPos(o.to,1)},this.skipped.length){l=[];for(let u of this.skipped){let c=e.mapPos(u.from,1),h=e.mapPos(u.to,-1);ce.from&&(this.fragments=x0(this.fragments,r,s),this.skipped.splice(n--,1))}return this.skipped.length>=i?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,i){this.skipped.push({from:e,to:i})}static getSkippingParser(e){return new class extends ua{createParse(i,n,r){let s=r[0].from,o=r[r.length-1].to;return{parsedPos:s,advance(){let a=Vr;if(a){for(let u of r)a.tempSkipped.push(u);e&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,e]):e)}return this.parsedPos=o,new se(ze.none,[],[],o-s)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let i=this.fragments;return this.treeLen>=e&&i.length&&i[0].from==0&&i[0].to>=e}static get(){return Vr}}function x0(t,e,i){return Li.applyChanges(t,[{fromA:e,toA:i,fromB:e,toB:i}])}class wr{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let i=this.context.changes(e.changes,e.state),n=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),i.viewport.to);return i.work(20,n)||i.takeTree(),new wr(i)}static init(e){let i=Math.min(3e3,e.doc.length),n=Dn.create(e.facet($r).parser,e,{from:0,to:i});return n.work(20,i)||n.takeTree(),new wr(n)}}Dt.state=Yt.define({create:wr.init,update(t,e){for(let i of e.effects)if(i.is(Dt.setState))return i.value;return e.startState.facet($r)!=e.state.facet($r)?wr.init(e.state):t.apply(e)}});let _g=t=>{let e=setTimeout(()=>t(),500);return()=>clearTimeout(e)};typeof requestIdleCallback<"u"&&(_g=t=>{let e=-1,i=setTimeout(()=>{e=requestIdleCallback(t,{timeout:400})},100);return()=>e<0?clearTimeout(i):cancelIdleCallback(e)});const Fa=typeof navigator<"u"&&(!((ja=navigator.scheduling)===null||ja===void 0)&&ja.isInputPending)?()=>navigator.scheduling.isInputPending():null,_$=Mt.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let i=this.view.state.field(Dt.state).context;(i.updateViewport(e.view.viewport)||this.view.viewport.to>i.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(i)}scheduleWork(){if(this.working)return;let{state:e}=this.view,i=e.field(Dt.state);(i.tree!=i.context.tree||!i.context.isDone(e.doc.length))&&(this.working=_g(this.work))}work(e){this.working=null;let i=Date.now();if(this.chunkEndr+1e3,a=s.context.work(()=>Fa&&Fa()||Date.now()>o,r+(l?0:1e5));this.chunkBudget-=Date.now()-i,(a||this.chunkBudget<=0)&&(s.context.takeTree(),this.view.dispatch({effects:Dt.setState.of(new wr(s.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(s.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(i=>Rt(this.view.state,i)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),$r=G.define({combine(t){return t.length?t[0]:null},enables:t=>[Dt.state,_$,W.contentAttributes.compute([t],e=>{let i=e.facet(t);return i&&i.name?{"data-language":i.name}:{}})]});class Qr{constructor(e,i=[]){this.language=e,this.support=i,this.extension=[e,i]}}class C{constructor(e,i,n,r,s,o=void 0){this.name=e,this.alias=i,this.extensions=n,this.filename=r,this.loadFunc=s,this.support=o,this.loading=null}load(){return this.loading||(this.loading=this.loadFunc().then(e=>this.support=e,e=>{throw this.loading=null,e}))}static of(e){let{load:i,support:n}=e;if(!i){if(!n)throw new RangeError("Must pass either 'load' or 'support' to LanguageDescription.of");i=()=>Promise.resolve(n)}return new C(e.name,(e.alias||[]).concat(e.name).map(r=>r.toLowerCase()),e.extensions||[],e.filename,i,n)}static matchFilename(e,i){for(let r of e)if(r.filename&&r.filename.test(i))return r;let n=/\.([^.]+)$/.exec(i);if(n){for(let r of e)if(r.extensions.indexOf(n[1])>-1)return r}return null}static matchLanguageName(e,i,n=!0){i=i.toLowerCase();for(let r of e)if(r.alias.some(s=>s==i))return r;if(n)for(let r of e)for(let s of r.alias){let o=i.indexOf(s);if(o>-1&&(s.length>2||!/\w/.test(i[o-1])&&!/\w/.test(i[o+s.length])))return r}return null}}const P$=G.define(),Lr=G.define({combine:t=>{if(!t.length)return" ";let e=t[0];if(!e||/\S/.test(e)||Array.from(e).some(i=>i!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(t[0]));return e}});function Ln(t){let e=t.facet(Lr);return e.charCodeAt(0)==9?t.tabSize*e.length:e.length}function Al(t,e){let i="",n=t.tabSize,r=t.facet(Lr)[0];if(r==" "){for(;e>=n;)i+=" ",e-=n;r=" "}for(let s=0;s=e?C$(t,i,e):null}class ha{constructor(e,i={}){this.state=e,this.options=i,this.unit=Ln(e)}lineAt(e,i=1){let n=this.state.doc.lineAt(e),{simulateBreak:r,simulateDoubleBreak:s}=this.options;return r!=null&&r>=n.from&&r<=n.to?s&&r==e?{text:"",from:e}:(i<0?r-1&&(s+=o-this.countColumn(n,n.search(/\S|$/))),s}countColumn(e,i=e.length){return Mi(e,this.state.tabSize,i)}lineIndent(e,i=1){let{text:n,from:r}=this.lineAt(e,i),s=this.options.overrideIndentation;if(s){let o=s(r);if(o>-1)return o}return this.countColumn(n,n.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const Mr=new K;function C$(t,e,i){let n=e.resolveStack(i),r=e.resolveInner(i,-1).resolve(i,0).enterUnfinishedNodesBefore(i);if(r!=n.node){let s=[];for(let o=r;o&&!(o.fromn.node.to||o.from==n.node.from&&o.type==n.node.type);o=o.parent)s.push(o);for(let o=s.length-1;o>=0;o--)n={node:s[o],next:n}}return Cg(n,t,i)}function Cg(t,e,i){for(let n=t;n;n=n.next){let r=A$(n.node);if(r)return r(th.create(e,i,n))}return 0}function T$(t){return t.pos==t.options.simulateBreak&&t.options.simulateDoubleBreak}function A$(t){let e=t.type.prop(Mr);if(e)return e;let i=t.firstChild,n;if(i&&(n=i.type.prop(K.closedBy))){let r=t.lastChild,s=r&&n.indexOf(r.name)>-1;return o=>Tg(o,!0,1,void 0,s&&!T$(o)?r.from:void 0)}return t.parent==null?E$:null}function E$(){return 0}class th extends ha{constructor(e,i,n){super(e.state,e.options),this.base=e,this.pos=i,this.context=n}get node(){return this.context.node}static create(e,i,n){return new th(e,i,n)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(e){let i=this.state.doc.lineAt(e.from);for(;;){let n=e.resolve(i.from);for(;n.parent&&n.parent.from==n.from;)n=n.parent;if(R$(n,e))break;i=this.state.doc.lineAt(n.from)}return this.lineIndent(i.from)}continue(){return Cg(this.context.next,this.base,this.pos)}}function R$(t,e){for(let i=e;i;i=i.parent)if(t==i)return!0;return!1}function D$(t){let e=t.node,i=e.childAfter(e.from),n=e.lastChild;if(!i)return null;let r=t.options.simulateBreak,s=t.state.doc.lineAt(i.from),o=r==null||r<=s.from?s.to:Math.min(s.to,r);for(let l=i.to;;){let a=e.childAfter(l);if(!a||a==n)return null;if(!a.type.isSkipped){if(a.from>=o)return null;let u=/^ */.exec(s.text.slice(i.to-s.from))[0].length;return{from:i.from,to:i.to+u}}l=a.to}}function L$({closing:t,align:e=!0,units:i=1}){return n=>Tg(n,e,i,t)}function Tg(t,e,i,n,r){let s=t.textAfter,o=s.match(/^\s*/)[0].length,l=n&&s.slice(o,o+n.length)==n||r==t.pos+o,a=e?D$(t):null;return a?l?t.column(a.from):t.column(a.to):t.baseIndent+(l?0:t.unit*i)}const M$=t=>t.baseIndent;function ol({except:t,units:e=1}={}){return i=>{let n=t&&t.test(i.textAfter);return i.baseIndent+(n?0:e*i.unit)}}const Z$=G.define(),no=new K;function Ag(t){let e=t.firstChild,i=t.lastChild;return e&&e.tol.prop(nn)==o.data:o?l=>l==o:void 0,this.style=Qg(e.map(l=>({tag:l.tag,class:l.class||r(Object.assign({},l,{tag:null}))})),{all:s}).style,this.module=n?new ln(n):null,this.themeType=i.themeType}static define(e,i){return new ro(e,i||{})}}const oc=G.define(),I$=G.define({combine(t){return t.length?[t[0]]:null}});function Ba(t){let e=t.facet(oc);return e.length?e:t.facet(I$)}function Eg(t,e){let i=[z$],n;return t instanceof ro&&(t.module&&i.push(W.styleModule.of(t.module)),n=t.themeType),n?i.push(oc.computeN([W.darkTheme],r=>r.facet(W.darkTheme)==(n=="dark")?[t]:[])):i.push(oc.of(t)),i}class X${constructor(e){this.markCache=Object.create(null),this.tree=Re(e.state),this.decorations=this.buildDeco(e,Ba(e.state)),this.decoratedTo=e.viewport.to}update(e){let i=Re(e.state),n=Ba(e.state),r=n!=Ba(e.startState),{viewport:s}=e.view,o=e.changes.mapPos(this.decoratedTo,1);i.length=s.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=o):(i!=this.tree||e.viewportChanged||r)&&(this.tree=i,this.decorations=this.buildDeco(e.view,n),this.decoratedTo=s.to)}buildDeco(e,i){if(!i||!this.tree.length)return ve.none;let n=new gr;for(let{from:r,to:s}of e.visibleRanges)S$(this.tree,i,(o,l,a)=>{n.add(o,l,this.markCache[a]||(this.markCache[a]=ve.mark({class:a})))},r,s);return n.finish()}}const z$=Ii.high(Mt.fromClass(X$,{decorations:t=>t.decorations})),j$=1e4,F$="()[]{}",Rg=new K;function lc(t,e,i){let n=t.prop(e<0?K.openedBy:K.closedBy);if(n)return n;if(t.name.length==1){let r=i.indexOf(t.name);if(r>-1&&r%2==(e<0?1:0))return[i[r+e]]}return null}function ac(t){let e=t.type.prop(Rg);return e?e(t.node):t}function Un(t,e,i,n={}){let r=n.maxScanDistance||j$,s=n.brackets||F$,o=Re(t),l=o.resolveInner(e,i);for(let a=l;a;a=a.parent){let u=lc(a.type,i,s);if(u&&a.from0?e>=c.from&&ec.from&&e<=c.to))return B$(t,e,i,a,c,u,s)}}return V$(t,e,i,o,l.type,r,s)}function B$(t,e,i,n,r,s,o){let l=n.parent,a={from:r.from,to:r.to},u=0,c=l==null?void 0:l.cursor();if(c&&(i<0?c.childBefore(n.from):c.childAfter(n.to)))do if(i<0?c.to<=n.from:c.from>=n.to){if(u==0&&s.indexOf(c.type.name)>-1&&c.from0)return null;let u={from:i<0?e-1:e,to:i>0?e+1:e},c=t.doc.iterRange(e,i>0?t.doc.length:0),h=0;for(let f=0;!c.next().done&&f<=s;){let d=c.value;i<0&&(f+=d.length);let p=e+f*i;for(let m=i>0?0:d.length-1,O=i>0?d.length:-1;m!=O;m+=i){let g=o.indexOf(d[m]);if(!(g<0||n.resolveInner(p+m,1).type!=r))if(g%2==0==i>0)h++;else{if(h==1)return{start:u,end:{from:p+m,to:p+m+1},matched:g>>1==a>>1};h--}}i>0&&(f+=d.length)}return c.done?{start:u,matched:!1}:null}function k0(t,e,i,n=0,r=0){e==null&&(e=t.search(/[^\s\u00a0]/),e==-1&&(e=t.length));let s=r;for(let o=n;o=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.posi}eatSpace(){let e=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e}skipToEnd(){this.pos=this.string.length}skipTo(e){let i=this.string.indexOf(e,this.pos);if(i>-1)return this.pos=i,!0}backUp(e){this.pos-=e}column(){return this.lastColumnPosn?o.toLowerCase():o,s=this.string.substr(this.pos,e.length);return r(s)==r(e)?(i!==!1&&(this.pos+=e.length),!0):null}else{let r=this.string.slice(this.pos).match(e);return r&&r.index>0?null:(r&&i!==!1&&(this.pos+=r[0].length),r)}}current(){return this.string.slice(this.start,this.pos)}}function q$(t){return{name:t.name||"",token:t.token,blankLine:t.blankLine||(()=>{}),startState:t.startState||(()=>!0),copyState:t.copyState||W$,indent:t.indent||(()=>null),languageData:t.languageData||{},tokenTable:t.tokenTable||rh,mergeTokens:t.mergeTokens!==!1}}function W$(t){if(typeof t!="object")return t;let e={};for(let i in t){let n=t[i];e[i]=n instanceof Array?n.slice():n}return e}const S0=new WeakMap;class ih extends Dt{constructor(e){let i=ca(e.languageData),n=q$(e),r,s=new class extends ua{createParse(o,l,a){return new N$(r,o,l,a)}};super(i,s,[],e.name),this.topNode=H$(i,this),r=this,this.streamParser=n,this.stateAfter=new K({perNode:!0}),this.tokenTable=e.tokenTable?new Ig(n.tokenTable):U$}static define(e){return new ih(e)}getIndent(e){let i,{overrideIndentation:n}=e.options;n&&(i=S0.get(e.state),i!=null&&i1e4)return null;for(;s=n&&i+e.length<=r&&e.prop(t.stateAfter);if(s)return{state:t.streamParser.copyState(s),pos:i+e.length};for(let o=e.children.length-1;o>=0;o--){let l=e.children[o],a=i+e.positions[o],u=l instanceof se&&a=e.length)return e;!r&&i==0&&e.type==t.topNode&&(r=!0);for(let s=e.children.length-1;s>=0;s--){let o=e.positions[s],l=e.children[s],a;if(oi&&nh(t,s.tree,0-s.offset,i,l),u;if(a&&a.pos<=n&&(u=Lg(t,s.tree,i+s.offset,a.pos+s.offset,!1)))return{state:a.state,tree:u}}return{state:t.streamParser.startState(r?Ln(r):4),tree:se.empty}}let N$=class{constructor(e,i,n,r){this.lang=e,this.input=i,this.fragments=n,this.ranges=r,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=r[r.length-1].to;let s=Dn.get(),o=r[0].from,{state:l,tree:a}=Y$(e,n,o,this.to,s==null?void 0:s.state);this.state=l,this.parsedPos=this.chunkStart=o+a.length;for(let u=0;uu.from<=s.viewport.from&&u.to>=s.viewport.from)&&(this.state=this.lang.streamParser.startState(Ln(s.state)),s.skipUntilInView(this.parsedPos,s.viewport.from),this.parsedPos=s.viewport.from),this.moveRangeIndex()}advance(){let e=Dn.get(),i=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),n=Math.min(i,this.chunkStart+512);for(e&&(n=Math.min(n,e.viewport.to));this.parsedPos=i?this.finish():e&&this.parsedPos>=e.viewport.to?(e.skipUntilInView(this.parsedPos,i),this.finish()):null}stopAt(e){this.stoppedAt=e}lineAfter(e){let i=this.input.chunk(e);if(this.input.lineChunks)i==` +`&&(i="");else{let n=i.indexOf(` +`);n>-1&&(i=i.slice(0,n))}return e+i.length<=this.to?i:i.slice(0,this.to-e)}nextLine(){let e=this.parsedPos,i=this.lineAfter(e),n=e+i.length;for(let r=this.rangeIndex;;){let s=this.ranges[r].to;if(s>=n||(i=i.slice(0,s-(n-i.length)),r++,r==this.ranges.length))break;let o=this.ranges[r].from,l=this.lineAfter(o);i+=l,n=o+l.length}return{line:i,end:n}}skipGapsTo(e,i,n){for(;;){let r=this.ranges[this.rangeIndex].to,s=e+i;if(n>0?r>s:r>=s)break;let o=this.ranges[++this.rangeIndex].from;i+=o-r}return i}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){r=this.skipGapsTo(i,r,1),i+=r;let l=this.chunk.length;r=this.skipGapsTo(n,r,-1),n+=r,s+=this.chunk.length-l}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&s==4&&o>=0&&this.chunk[o]==e&&this.chunk[o+2]==i?this.chunk[o+2]=n:this.chunk.push(e,i,n,s),r}parseLine(e){let{line:i,end:n}=this.nextLine(),r=0,{streamParser:s}=this.lang,o=new Dg(i,e?e.state.tabSize:4,e?Ln(e.state):2);if(o.eol())s.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let l=Mg(s.token,o,this.state);if(l&&(r=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+o.start,this.parsedPos+o.pos,r)),o.start>1e4)break}this.parsedPos=n,this.moveRangeIndex(),this.parsedPose.start)return r}throw new Error("Stream parser failed to advance stream.")}const rh=Object.create(null),Ms=[ze.none],G$=new Rr(Ms),w0=[],$0=Object.create(null),Zg=Object.create(null);for(let[t,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])Zg[t]=Xg(rh,e);class Ig{constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),Zg)}resolve(e){return e?this.table[e]||(this.table[e]=Xg(this.extra,e)):0}}const U$=new Ig(rh);function Va(t,e){w0.indexOf(t)>-1||(w0.push(t),console.warn(e))}function Xg(t,e){let i=[];for(let l of e.split(" ")){let a=[];for(let u of l.split(".")){let c=t[u]||k[u];c?typeof c=="function"?a.length?a=a.map(c):Va(u,`Modifier ${u} used at start of tag`):a.length?Va(u,`Tag ${u} used as modifier`):a=Array.isArray(c)?c:[c]:Va(u,`Unknown highlighting tag ${u}`)}for(let u of a)i.push(u)}if(!i.length)return 0;let n=e.replace(/ /g,"_"),r=n+" "+i.map(l=>l.id),s=$0[r];if(s)return s.id;let o=$0[r]=ze.define({id:Ms.length,name:n,props:[Dr({[n]:i})]});return Ms.push(o),o.id}function H$(t,e){let i=ze.define({id:Ms.length,name:"Document",props:[nn.add(()=>t),Mr.add(()=>n=>e.getIndent(n))],top:!0});return Ms.push(i),i}Ce.RTL,Ce.LTR;const K$=t=>{let{state:e}=t,i=e.doc.lineAt(e.selection.main.from),n=oh(t.state,i.from);return n.line?J$(t):n.block?tQ(t):!1};function sh(t,e){return({state:i,dispatch:n})=>{if(i.readOnly)return!1;let r=t(e,i);return r?(n(i.update(r)),!0):!1}}const J$=sh(rQ,0),eQ=sh(zg,0),tQ=sh((t,e)=>zg(t,e,nQ(e)),0);function oh(t,e){let i=t.languageDataAt("commentTokens",e,1);return i.length?i[0]:{}}const qr=50;function iQ(t,{open:e,close:i},n,r){let s=t.sliceDoc(n-qr,n),o=t.sliceDoc(r,r+qr),l=/\s*$/.exec(s)[0].length,a=/^\s*/.exec(o)[0].length,u=s.length-l;if(s.slice(u-e.length,u)==e&&o.slice(a,a+i.length)==i)return{open:{pos:n-l,margin:l&&1},close:{pos:r+a,margin:a&&1}};let c,h;r-n<=2*qr?c=h=t.sliceDoc(n,r):(c=t.sliceDoc(n,n+qr),h=t.sliceDoc(r-qr,r));let f=/^\s*/.exec(c)[0].length,d=/\s*$/.exec(h)[0].length,p=h.length-d-i.length;return c.slice(f,f+e.length)==e&&h.slice(p,p+i.length)==i?{open:{pos:n+f+e.length,margin:/\s/.test(c.charAt(f+e.length))?1:0},close:{pos:r-d-i.length,margin:/\s/.test(h.charAt(p-1))?1:0}}:null}function nQ(t){let e=[];for(let i of t.selection.ranges){let n=t.doc.lineAt(i.from),r=i.to<=n.to?n:t.doc.lineAt(i.to);r.from>n.from&&r.from==i.to&&(r=i.to==n.to+1?n:t.doc.lineAt(i.to-1));let s=e.length-1;s>=0&&e[s].to>n.from?e[s].to=r.to:e.push({from:n.from+/^\s*/.exec(n.text)[0].length,to:r.to})}return e}function zg(t,e,i=e.selection.ranges){let n=i.map(s=>oh(e,s.from).block);if(!n.every(s=>s))return null;let r=i.map((s,o)=>iQ(e,n[o],s.from,s.to));if(t!=2&&!r.every(s=>s))return{changes:e.changes(i.map((s,o)=>r[o]?[]:[{from:s.from,insert:n[o].open+" "},{from:s.to,insert:" "+n[o].close}]))};if(t!=1&&r.some(s=>s)){let s=[];for(let o=0,l;or&&(s==o||o>h.from)){r=h.from;let f=/^\s*/.exec(h.text)[0].length,d=f==h.length,p=h.text.slice(f,f+u.length)==u?f:-1;fs.comment<0&&(!s.empty||s.single))){let s=[];for(let{line:l,token:a,indent:u,empty:c,single:h}of n)(h||!c)&&s.push({from:l.from+u,insert:a+" "});let o=e.changes(s);return{changes:o,selection:e.selection.map(o,1)}}else if(t!=1&&n.some(s=>s.comment>=0)){let s=[];for(let{line:o,comment:l,token:a}of n)if(l>=0){let u=o.from+l,c=u+a.length;o.text[c-o.from]==" "&&c++,s.push({from:u,to:c})}return{changes:s}}return null}const uc=Xi.define(),sQ=Xi.define(),oQ=G.define(),jg=G.define({combine(t){return na(t,{minDepth:100,newGroupDelay:500,joinToEvent:(e,i)=>i},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,i)=>(n,r)=>e(n,r)||i(n,r)})}}),Fg=Yt.define({create(){return Si.empty},update(t,e){let i=e.state.facet(jg),n=e.annotation(uc);if(n){let a=vt.fromTransaction(e,n.selection),u=n.side,c=u==0?t.undone:t.done;return a?c=Rl(c,c.length,i.minDepth,a):c=Vg(c,e.startState.selection),new Si(u==0?n.rest:c,u==0?c:n.rest)}let r=e.annotation(sQ);if((r=="full"||r=="before")&&(t=t.isolate()),e.annotation(Xe.addToHistory)===!1)return e.changes.empty?t:t.addMapping(e.changes.desc);let s=vt.fromTransaction(e),o=e.annotation(Xe.time),l=e.annotation(Xe.userEvent);return s?t=t.addChanges(s,o,l,i,e):e.selection&&(t=t.addSelection(e.startState.selection,o,l,i.newGroupDelay)),(r=="full"||r=="after")&&(t=t.isolate()),t},toJSON(t){return{done:t.done.map(e=>e.toJSON()),undone:t.undone.map(e=>e.toJSON())}},fromJSON(t){return new Si(t.done.map(vt.fromJSON),t.undone.map(vt.fromJSON))}});function Q0(t={}){return[Fg,jg.of(t),W.domEventHandlers({beforeinput(e,i){let n=e.inputType=="historyUndo"?lh:e.inputType=="historyRedo"?El:null;return n?(e.preventDefault(),n(i)):!1}})]}function fa(t,e){return function({state:i,dispatch:n}){if(!e&&i.readOnly)return!1;let r=i.field(Fg,!1);if(!r)return!1;let s=r.pop(t,i,e);return s?(n(s),!0):!1}}const lh=fa(0,!1),El=fa(1,!1),lQ=fa(0,!0),aQ=fa(1,!0);class vt{constructor(e,i,n,r,s){this.changes=e,this.effects=i,this.mapped=n,this.startSelection=r,this.selectionsAfter=s}setSelAfter(e){return new vt(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,i,n;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(i=this.mapped)===null||i===void 0?void 0:i.toJSON(),startSelection:(n=this.startSelection)===null||n===void 0?void 0:n.toJSON(),selectionsAfter:this.selectionsAfter.map(r=>r.toJSON())}}static fromJSON(e){return new vt(e.changes&&Fe.fromJSON(e.changes),[],e.mapped&&$i.fromJSON(e.mapped),e.startSelection&&E.fromJSON(e.startSelection),e.selectionsAfter.map(E.fromJSON))}static fromTransaction(e,i){let n=Bt;for(let r of e.startState.facet(oQ)){let s=r(e);s.length&&(n=n.concat(s))}return!n.length&&e.changes.empty?null:new vt(e.changes.invert(e.startState.doc),n,void 0,i||e.startState.selection,Bt)}static selection(e){return new vt(void 0,Bt,void 0,void 0,e)}}function Rl(t,e,i,n){let r=e+1>i+20?e-i-1:0,s=t.slice(r,e);return s.push(n),s}function uQ(t,e){let i=[],n=!1;return t.iterChangedRanges((r,s)=>i.push(r,s)),e.iterChangedRanges((r,s,o,l)=>{for(let a=0;a=u&&o<=c&&(n=!0)}}),n}function cQ(t,e){return t.ranges.length==e.ranges.length&&t.ranges.filter((i,n)=>i.empty!=e.ranges[n].empty).length===0}function Bg(t,e){return t.length?e.length?t.concat(e):t:e}const Bt=[],hQ=200;function Vg(t,e){if(t.length){let i=t[t.length-1],n=i.selectionsAfter.slice(Math.max(0,i.selectionsAfter.length-hQ));return n.length&&n[n.length-1].eq(e)?t:(n.push(e),Rl(t,t.length-1,1e9,i.setSelAfter(n)))}else return[vt.selection([e])]}function fQ(t){let e=t[t.length-1],i=t.slice();return i[t.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),i}function qa(t,e){if(!t.length)return t;let i=t.length,n=Bt;for(;i;){let r=dQ(t[i-1],e,n);if(r.changes&&!r.changes.empty||r.effects.length){let s=t.slice(0,i);return s[i-1]=r,s}else e=r.mapped,i--,n=r.selectionsAfter}return n.length?[vt.selection(n)]:Bt}function dQ(t,e,i){let n=Bg(t.selectionsAfter.length?t.selectionsAfter.map(l=>l.map(e)):Bt,i);if(!t.changes)return vt.selection(n);let r=t.changes.map(e),s=e.mapDesc(t.changes,!0),o=t.mapped?t.mapped.composeDesc(s):s;return new vt(r,ae.mapEffects(t.effects,e),o,t.startSelection.map(s),n)}const pQ=/^(input\.type|delete)($|\.)/;class Si{constructor(e,i,n=0,r=void 0){this.done=e,this.undone=i,this.prevTime=n,this.prevUserEvent=r}isolate(){return this.prevTime?new Si(this.done,this.undone):this}addChanges(e,i,n,r,s){let o=this.done,l=o[o.length-1];return l&&l.changes&&!l.changes.empty&&e.changes&&(!n||pQ.test(n))&&(!l.selectionsAfter.length&&i-this.prevTime0&&i-this.prevTimei.empty?t.moveByChar(i,e):da(i,e))}function st(t){return t.textDirectionAt(t.state.selection.main.head)==Ce.LTR}const Wg=t=>qg(t,!st(t)),Yg=t=>qg(t,st(t));function Ng(t,e){return hi(t,i=>i.empty?t.moveByGroup(i,e):da(i,e))}const OQ=t=>Ng(t,!st(t)),gQ=t=>Ng(t,st(t));function bQ(t,e,i){if(e.type.prop(i))return!0;let n=e.to-e.from;return n&&(n>2||/[^\s,.;:]/.test(t.sliceDoc(e.from,e.to)))||e.firstChild}function pa(t,e,i){let n=Re(t).resolveInner(e.head),r=i?K.closedBy:K.openedBy;for(let a=e.head;;){let u=i?n.childAfter(a):n.childBefore(a);if(!u)break;bQ(t,u,r)?n=u:a=i?u.to:u.from}let s=n.type.prop(r),o,l;return s&&(o=i?Un(t,n.from,1):Un(t,n.to,-1))&&o.matched?l=i?o.end.to:o.end.from:l=i?n.to:n.from,E.cursor(l,i?-1:1)}const vQ=t=>hi(t,e=>pa(t.state,e,!st(t))),yQ=t=>hi(t,e=>pa(t.state,e,st(t)));function Gg(t,e){return hi(t,i=>{if(!i.empty)return da(i,e);let n=t.moveVertically(i,e);return n.head!=i.head?n:t.moveToLineBoundary(i,e)})}const Ug=t=>Gg(t,!1),Hg=t=>Gg(t,!0);function Kg(t){let e=t.scrollDOM.clientHeighto.empty?t.moveVertically(o,e,i.height):da(o,e));if(r.eq(n.selection))return!1;let s;if(i.selfScroll){let o=t.coordsAtPos(n.selection.main.head),l=t.scrollDOM.getBoundingClientRect(),a=l.top+i.marginTop,u=l.bottom-i.marginBottom;o&&o.top>a&&o.bottomJg(t,!1),cc=t=>Jg(t,!0);function fn(t,e,i){let n=t.lineBlockAt(e.head),r=t.moveToLineBoundary(e,i);if(r.head==e.head&&r.head!=(i?n.to:n.from)&&(r=t.moveToLineBoundary(e,i,!1)),!i&&r.head==n.from&&n.length){let s=/^\s*/.exec(t.state.sliceDoc(n.from,Math.min(n.from+100,n.to)))[0].length;s&&e.head!=n.from+s&&(r=E.cursor(n.from+s))}return r}const xQ=t=>hi(t,e=>fn(t,e,!0)),kQ=t=>hi(t,e=>fn(t,e,!1)),SQ=t=>hi(t,e=>fn(t,e,!st(t))),wQ=t=>hi(t,e=>fn(t,e,st(t))),$Q=t=>hi(t,e=>E.cursor(t.lineBlockAt(e.head).from,1)),QQ=t=>hi(t,e=>E.cursor(t.lineBlockAt(e.head).to,-1));function _Q(t,e,i){let n=!1,r=Zr(t.selection,s=>{let o=Un(t,s.head,-1)||Un(t,s.head,1)||s.head>0&&Un(t,s.head-1,1)||s.head_Q(t,e);function Nt(t,e,i){let n=Zr(t.state.selection,r=>{r.undirectional&&r.head>=r.anchor!=e&&(r=E.range(r.head,r.anchor));let s=i(r);return E.range(r.anchor,s.head,s.goalColumn,s.bidiLevel||void 0,s.assoc)});return n.eq(t.state.selection)?!1:(t.dispatch(ci(t.state,n)),!0)}function e1(t,e){return Nt(t,e,i=>t.moveByChar(i,e))}const t1=t=>e1(t,!st(t)),i1=t=>e1(t,st(t));function n1(t,e){return Nt(t,e,i=>t.moveByGroup(i,e))}const CQ=t=>n1(t,!st(t)),TQ=t=>n1(t,st(t)),AQ=t=>{let e=!st(t);return Nt(t,e,i=>pa(t.state,i,e))},EQ=t=>{let e=st(t);return Nt(t,e,i=>pa(t.state,i,e))};function r1(t,e){return Nt(t,e,i=>t.moveVertically(i,e))}const s1=t=>r1(t,!1),o1=t=>r1(t,!0);function l1(t,e){return Nt(t,e,i=>t.moveVertically(i,e,Kg(t).height))}const P0=t=>l1(t,!1),C0=t=>l1(t,!0),RQ=t=>Nt(t,!0,e=>fn(t,e,!0)),DQ=t=>Nt(t,!1,e=>fn(t,e,!1)),LQ=t=>{let e=!st(t);return Nt(t,e,i=>fn(t,i,e))},MQ=t=>{let e=st(t);return Nt(t,e,i=>fn(t,i,e))},ZQ=t=>Nt(t,!1,e=>E.cursor(t.lineBlockAt(e.head).from)),IQ=t=>Nt(t,!0,e=>E.cursor(t.lineBlockAt(e.head).to)),T0=({state:t,dispatch:e})=>(e(ci(t,{anchor:0})),!0),A0=({state:t,dispatch:e})=>(e(ci(t,{anchor:t.doc.length})),!0),E0=({state:t,dispatch:e})=>(e(ci(t,{anchor:t.selection.main.anchor,head:0})),!0),R0=({state:t,dispatch:e})=>(e(ci(t,{anchor:t.selection.main.anchor,head:t.doc.length})),!0),XQ=({state:t,dispatch:e})=>(e(t.update({selection:{anchor:0,head:t.doc.length},userEvent:"select"})),!0),zQ=({state:t,dispatch:e})=>{let i=ma(t).map(({from:n,to:r})=>E.range(n,Math.min(r+1,t.doc.length)));return e(t.update({selection:E.create(i),userEvent:"select"})),!0},jQ=({state:t,dispatch:e})=>{let i=Zr(t.selection,n=>{let r=Re(t),s=r.resolveStack(n.from,1);if(n.empty){let o=r.resolveStack(n.from,-1);o.node.from>=s.node.from&&o.node.to<=s.node.to&&(s=o)}for(let o=s;o;o=o.next){let{node:l}=o;if((l.from=n.to||l.to>n.to&&l.from<=n.from)&&o.next)return E.range(l.to,l.from)}return n});return i.eq(t.selection)?!1:(e(ci(t,i)),!0)};function a1(t,e){let{state:i}=t,n=i.selection,r=i.selection.ranges.slice();for(let s of i.selection.ranges){let o=i.doc.lineAt(s.head);if(e?o.to0)for(let l=s;;){let a=t.moveVertically(l,e);if(a.heado.to){r.some(u=>u.head==a.head)||r.push(a);break}else{if(a.head==l.head)break;l=a}}}return r.length==n.ranges.length?!1:(t.dispatch(ci(i,E.create(r,r.length-1))),!0)}const FQ=t=>a1(t,!1),BQ=t=>a1(t,!0),VQ=({state:t,dispatch:e})=>{let i=t.selection,n=null;return i.ranges.length>1?n=E.create([i.main]):i.main.empty||(n=E.create([E.cursor(i.main.head)])),n?(e(ci(t,n)),!0):!1};function so(t,e){if(t.state.readOnly)return!1;let i="delete.selection",{state:n}=t,r=n.changeByRange(s=>{let{from:o,to:l}=s;if(o==l){let a=e(s);ao&&(i="delete.forward",a=Io(t,a,!0)),o=Math.min(o,a),l=Math.max(l,a)}else o=Io(t,o,!1),l=Io(t,l,!0);return o==l?{range:s}:{changes:{from:o,to:l},range:E.cursor(o,or(t)))n.between(e,e,(r,s)=>{re&&(e=i?s:r)});return e}const u1=(t,e,i)=>so(t,n=>{let r=n.from,{state:s}=t,o=s.doc.lineAt(r),l,a;if(i&&!e&&r>o.from&&ru1(t,!1,!0),c1=t=>u1(t,!0,!1),h1=(t,e)=>so(t,i=>{let n=i.head,{state:r}=t,s=r.doc.lineAt(n),o=r.charCategorizer(n);for(let l=null;;){if(n==(e?s.to:s.from)){n==i.head&&s.number!=(e?r.doc.lines:1)&&(n+=e?1:-1);break}let a=Ge(s.text,n-s.from,e)+s.from,u=s.text.slice(Math.min(n,a)-s.from,Math.max(n,a)-s.from),c=o(u);if(l!=null&&c!=l)break;(u!=" "||n!=i.head)&&(l=c),n=a}return n}),f1=t=>h1(t,!1),qQ=t=>h1(t,!0),WQ=t=>so(t,e=>{let i=t.lineBlockAt(e.head).to;return e.headso(t,e=>{let i=t.moveToLineBoundary(e,!1).head;return e.head>i?i:Math.max(0,e.head-1)}),NQ=t=>so(t,e=>{let i=t.moveToLineBoundary(e,!0).head;return e.head{if(t.readOnly)return!1;let i=t.changeByRange(n=>({changes:{from:n.from,to:n.to,insert:de.of(["",""])},range:E.cursor(n.from)}));return e(t.update(i,{scrollIntoView:!0,userEvent:"input"})),!0},UQ=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=t.changeByRange(n=>{if(!n.empty||n.from==0||n.from==t.doc.length)return{range:n};let r=n.from,s=t.doc.lineAt(r),o=r==s.from?r-1:Ge(s.text,r-s.from,!1)+s.from,l=r==s.to?r+1:Ge(s.text,r-s.from,!0)+s.from;return{changes:{from:o,to:l,insert:t.doc.slice(r,l).append(t.doc.slice(o,r))},range:E.cursor(l)}});return i.changes.empty?!1:(e(t.update(i,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function ma(t){let e=[],i=-1;for(let n of t.selection.ranges){let r=t.doc.lineAt(n.from),s=t.doc.lineAt(n.to);if(!n.empty&&n.to==s.from&&(s=t.doc.lineAt(n.to-1)),i>=r.number){let o=e[e.length-1];o.to=s.to,o.ranges.push(n)}else e.push({from:r.from,to:s.to,ranges:[n]});i=s.number+1}return e}function d1(t,e,i){if(t.readOnly)return!1;let n=[],r=[];for(let s of ma(t)){if(i?s.to==t.doc.length:s.from==0)continue;let o=t.doc.lineAt(i?s.to+1:s.from-1),l=o.length+1;if(i){n.push({from:s.to,to:o.to},{from:s.from,insert:o.text+t.lineBreak});for(let a of s.ranges)r.push(E.range(Math.min(t.doc.length,a.anchor+l),Math.min(t.doc.length,a.head+l)))}else{n.push({from:o.from,to:s.from},{from:s.to,insert:t.lineBreak+o.text});for(let a of s.ranges)r.push(E.range(a.anchor-l,a.head-l))}}return n.length?(e(t.update({changes:n,scrollIntoView:!0,selection:E.create(r,t.selection.mainIndex),userEvent:"move.line"})),!0):!1}const HQ=({state:t,dispatch:e})=>d1(t,e,!1),KQ=({state:t,dispatch:e})=>d1(t,e,!0);function p1(t,e,i){if(t.readOnly)return!1;let n=[];for(let s of ma(t))i?n.push({from:s.from,insert:t.doc.slice(s.from,s.to)+t.lineBreak}):n.push({from:s.to,insert:t.lineBreak+t.doc.slice(s.from,s.to)});let r=t.changes(n);return e(t.update({changes:r,selection:t.selection.map(r,i?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}const JQ=({state:t,dispatch:e})=>p1(t,e,!1),e_=({state:t,dispatch:e})=>p1(t,e,!0),m1=t=>{if(t.state.readOnly)return!1;let{state:e}=t,i=e.changes(ma(e).map(({from:r,to:s})=>(r>0?r--:s{let s;if(t.lineWrapping){let o=t.lineBlockAt(r.head),l=t.coordsAtPos(r.head,r.assoc||1);l&&(s=o.bottom+t.documentTop-l.bottom+t.defaultLineHeight/2)}return t.moveVertically(r,!0,s)}).map(i);return t.dispatch({changes:i,selection:n,scrollIntoView:!0,userEvent:"delete.line"}),!0};function t_(t,e){if(/\(\)|\[\]|\{\}/.test(t.sliceDoc(e-1,e+1)))return{from:e,to:e};let i=Re(t).resolveInner(e),n=i.childBefore(e),r=i.childAfter(e),s;return n&&r&&n.to<=e&&r.from>=e&&(s=n.type.prop(K.closedBy))&&s.indexOf(r.name)>-1&&t.doc.lineAt(n.to).from==t.doc.lineAt(r.from).from&&!/\S/.test(t.sliceDoc(n.to,r.from))?{from:n.to,to:r.from}:null}const D0=O1(!1),i_=O1(!0);function O1(t){return({state:e,dispatch:i})=>{if(e.readOnly)return!1;let n=e.changeByRange(r=>{let{from:s,to:o}=r,l=e.doc.lineAt(s),a=!t&&s==o&&t_(e,s);t&&(s=o=(o<=l.to?l:e.doc.lineAt(o)).to);let u=new ha(e,{simulateBreak:s,simulateDoubleBreak:!!a}),c=Pg(u,s);for(c==null&&(c=Mi(/^\s*/.exec(e.doc.lineAt(s).text)[0],e.tabSize));ol.from&&s{let r=[];for(let o=n.from;o<=n.to;){let l=t.doc.lineAt(o);l.number>i&&(n.empty||n.to>l.from)&&(e(l,r,n),i=l.number),o=l.to+1}let s=t.changes(r);return{changes:r,range:E.range(s.mapPos(n.anchor,1),s.mapPos(n.head,1))}})}const n_=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=Object.create(null),n=new ha(t,{overrideIndentation:s=>{let o=i[s];return o??-1}}),r=ah(t,(s,o,l)=>{let a=Pg(n,s.from);if(a==null)return;/\S/.test(s.text)||(a=0);let u=/^\s*/.exec(s.text)[0],c=Al(t,a);(u!=c||l.fromt.readOnly?!1:(e(t.update(ah(t,(i,n)=>{n.push({from:i.from,insert:t.facet(Lr)})}),{userEvent:"input.indent"})),!0),b1=({state:t,dispatch:e})=>t.readOnly?!1:(e(t.update(ah(t,(i,n)=>{let r=/^\s*/.exec(i.text)[0];if(!r)return;let s=Mi(r,t.tabSize),o=0,l=Al(t,Math.max(0,s-Ln(t)));for(;o(t.setTabFocusMode(),!0),s_=[{key:"Ctrl-b",run:Wg,shift:t1,preventDefault:!0},{key:"Ctrl-f",run:Yg,shift:i1},{key:"Ctrl-p",run:Ug,shift:s1},{key:"Ctrl-n",run:Hg,shift:o1},{key:"Ctrl-a",run:$Q,shift:ZQ},{key:"Ctrl-e",run:QQ,shift:IQ},{key:"Ctrl-d",run:c1},{key:"Ctrl-h",run:hc},{key:"Ctrl-k",run:WQ},{key:"Ctrl-Alt-h",run:f1},{key:"Ctrl-o",run:GQ},{key:"Ctrl-t",run:UQ},{key:"Ctrl-v",run:cc}],o_=[{key:"ArrowLeft",run:Wg,shift:t1,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:OQ,shift:CQ,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:SQ,shift:LQ,preventDefault:!0},{key:"ArrowRight",run:Yg,shift:i1,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:gQ,shift:TQ,preventDefault:!0},{mac:"Cmd-ArrowRight",run:wQ,shift:MQ,preventDefault:!0},{key:"ArrowUp",run:Ug,shift:s1,preventDefault:!0},{mac:"Cmd-ArrowUp",run:T0,shift:E0},{mac:"Ctrl-ArrowUp",run:_0,shift:P0},{key:"ArrowDown",run:Hg,shift:o1,preventDefault:!0},{mac:"Cmd-ArrowDown",run:A0,shift:R0},{mac:"Ctrl-ArrowDown",run:cc,shift:C0},{key:"PageUp",run:_0,shift:P0},{key:"PageDown",run:cc,shift:C0},{key:"Home",run:kQ,shift:DQ,preventDefault:!0},{key:"Mod-Home",run:T0,shift:E0},{key:"End",run:xQ,shift:RQ,preventDefault:!0},{key:"Mod-End",run:A0,shift:R0},{key:"Enter",run:D0,shift:D0},{key:"Mod-a",run:XQ},{key:"Backspace",run:hc,shift:hc,preventDefault:!0},{key:"Delete",run:c1,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:f1,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:qQ,preventDefault:!0},{mac:"Mod-Backspace",run:YQ,preventDefault:!0},{mac:"Mod-Delete",run:NQ,preventDefault:!0}].concat(s_.map(t=>({mac:t.key,run:t.run,shift:t.shift}))),l_=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:vQ,shift:AQ},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:yQ,shift:EQ},{key:"Alt-ArrowUp",run:HQ},{key:"Shift-Alt-ArrowUp",run:JQ},{key:"Alt-ArrowDown",run:KQ},{key:"Shift-Alt-ArrowDown",run:e_},{key:"Mod-Alt-ArrowUp",run:FQ},{key:"Mod-Alt-ArrowDown",run:BQ},{key:"Escape",run:VQ},{key:"Mod-Enter",run:i_},{key:"Alt-l",mac:"Ctrl-l",run:zQ},{key:"Mod-i",run:jQ,preventDefault:!0},{key:"Mod-[",run:b1},{key:"Mod-]",run:g1},{key:"Mod-Alt-\\",run:n_},{key:"Shift-Mod-k",run:m1},{key:"Shift-Mod-\\",run:PQ},{key:"Mod-/",run:K$},{key:"Alt-A",run:eQ},{key:"Ctrl-m",mac:"Shift-Alt-m",run:r_}].concat(o_),a_={key:"Tab",run:g1,shift:b1},L0=typeof String.prototype.normalize=="function"?t=>t.normalize("NFKD"):t=>t;class Zs{constructor(e,i,n=0,r=e.length,s,o){this.test=o,this.value={from:0,to:0,precise:!1},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(n,r),this.bufferStart=n,this.normalize=s?l=>s(L0(l)):L0,this.query=this.normalize(i)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return Ni(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let i=tO(e),n=this.bufferStart+this.bufferPos;this.bufferPos+=vn(e);let r=this.normalize(i);if(r.length)for(let s=0,o=n,l=!0;;s++){let a=r.charCodeAt(s),u=this.match(a,o,l,this.bufferPos+this.bufferStart,s==r.length-1);if(u)return this.value=u,this;if(s==r.length-1)break;l&&sthis.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let i=this.matchPos<=this.to&&this.re.exec(this.curLine);if(i){let n=this.curLineStart+i.index,r=n+i[0].length;if(this.matchPos=Dl(this.text,r+(n==r?1:0)),n==this.curLineStart+this.curLine.length&&this.nextLine(),(nthis.value.to)&&(!this.test||this.test(n,r,i)))return this.value={from:n,to:r,precise:!0,match:i},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length=n||r.to<=i){let l=new sr(i,e.sliceString(i,n));return Wa.set(e,l),l}if(r.from==i&&r.to==n)return r;let{text:s,from:o}=r;return o>i&&(s=e.sliceString(i,o)+s,o=i),r.to=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,i=this.re.exec(this.flat.text);if(i&&!i[0]&&i.index==e&&(this.re.lastIndex=e+1,i=this.re.exec(this.flat.text)),i){let n=this.flat.from+i.index,r=n+i[0].length;if((this.flat.to>=this.to||i.index+i[0].length<=this.flat.text.length-10)&&(!this.test||this.test(n,r,i)))return this.value={from:n,to:r,precise:!0,match:i},this.matchPos=Dl(this.text,r+(n==r?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=sr.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}typeof Symbol<"u"&&(y1.prototype[Symbol.iterator]=x1.prototype[Symbol.iterator]=function(){return this});function u_(t){try{return new RegExp(t,uh),!0}catch{return!1}}function Dl(t,e){if(e>=t.length)return e;let i=t.lineAt(e),n;for(;e=56320&&n<57344;)e++;return e}const c_=t=>{let{state:e}=t,i=String(e.doc.lineAt(t.state.selection.main.head).number),{close:n,result:r}=n$(t,{label:e.phrase("Go to line"),input:{type:"text",name:"line",value:i},focus:!0,submitLabel:e.phrase("go")});return r.then(s=>{let o=s&&/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(s.elements.line.value);if(!o){t.dispatch({effects:n});return}let l=e.doc.lineAt(e.selection.main.head),[,a,u,c,h]=o,f=c?+c.slice(1):0,d=u?+u:l.number;if(u&&h){let O=d/100;a&&(O=O*(a=="-"?-1:1)+l.number/e.doc.lines),d=Math.round(e.doc.lines*O)}else u&&a&&(d=d*(a=="-"?-1:1)+l.number);let p=e.doc.line(Math.max(1,Math.min(e.doc.lines,d))),m=E.cursor(p.from+Math.max(0,Math.min(f,p.length)));t.dispatch({effects:[n,W.scrollIntoView(m.from,{y:"center"})],selection:m})}),!0},h_=({state:t,dispatch:e})=>{let{selection:i}=t,n=E.create(i.ranges.map(r=>t.wordAt(r.head)||E.cursor(r.head)),i.mainIndex);return n.eq(i)?!1:(e(t.update({selection:n})),!0)};function f_(t,e){let{main:i,ranges:n}=t.selection,r=t.wordAt(i.head),s=r&&r.from==i.from&&r.to==i.to;for(let o=!1,l=new Zs(t.doc,e,n[n.length-1].to);;)if(l.next(),l.done){if(o)return null;l=new Zs(t.doc,e,0,Math.max(0,n[n.length-1].from-1)),o=!0}else{if(o&&n.some(a=>a.from==l.value.from))continue;if(s){let a=t.wordAt(l.value.from);if(!a||a.from!=l.value.from||a.to!=l.value.to)continue}return l.value}}const d_=({state:t,dispatch:e})=>{let{ranges:i}=t.selection;if(i.some(s=>s.from===s.to))return h_({state:t,dispatch:e});let n=t.sliceDoc(i[0].from,i[0].to);if(t.selection.ranges.some(s=>t.sliceDoc(s.from,s.to)!=n))return!1;let r=f_(t,n);return r?(e(t.update({selection:t.selection.addRange(E.range(r.from,r.to),!1),effects:W.scrollIntoView(r.to)})),!0):!1},Ir=G.define({combine(t){return na(t,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new __(e),scrollToMatch:e=>W.scrollIntoView(e)})}});class k1{constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.literal=!!e.literal,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||u_(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord,this.test=e.test}unquote(e){return this.literal?e:e.replace(/\\([nrt\\])/g,(i,n)=>n=="n"?` +`:n=="r"?"\r":n=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord&&this.test==e.test}create(){return this.regexp?new v_(this):new O_(this)}getCursor(e,i=0,n){let r=e.doc?e:fe.create({doc:e});return n==null&&(n=r.doc.length),this.regexp?Yn(this,r,i,n):Wn(this,r,i,n)}}class S1{constructor(e){this.spec=e}}function p_(t,e,i){return(n,r,s,o)=>{if(i&&!i(n,r,s,o))return!1;let l=n>=o&&r<=o+s.length?s.slice(n-o,r-o):e.doc.sliceString(n,r);return t(l,e,n,r)}}function Wn(t,e,i,n){let r;return t.wholeWord&&(r=m_(e.doc,e.charCategorizer(e.selection.main.head))),t.test&&(r=p_(t.test,e,r)),new Zs(e.doc,t.unquoted,i,n,t.caseSensitive?void 0:s=>s.toLowerCase(),r)}function m_(t,e){return(i,n,r,s)=>((s>i||s+r.length=i)return null;r.push(n.value)}return r}highlight(e,i,n,r){let s=Wn(this.spec,e,Math.max(0,i-this.spec.unquoted.length),Math.min(n+this.spec.unquoted.length,e.doc.length));for(;!s.next().done;)r(s.value.from,s.value.to)}}function g_(t,e,i){return(n,r,s)=>(!i||i(n,r,s))&&t(s[0],e,n,r)}function Yn(t,e,i,n){let r;return t.wholeWord&&(r=b_(e.charCategorizer(e.selection.main.head))),t.test&&(r=g_(t.test,e,r)),new y1(e.doc,t.search,{ignoreCase:!t.caseSensitive,test:r},i,n)}function Ll(t,e){return t.slice(Ge(t,e,!1),e)}function Ml(t,e){return t.slice(e,Ge(t,e))}function b_(t){return(e,i,n)=>!n[0].length||(t(Ll(n.input,n.index))!=Je.Word||t(Ml(n.input,n.index))!=Je.Word)&&(t(Ml(n.input,n.index+n[0].length))!=Je.Word||t(Ll(n.input,n.index+n[0].length))!=Je.Word)}class v_ extends S1{nextMatch(e,i,n){let r=Yn(this.spec,e,n,e.doc.length).next();return r.done&&(r=Yn(this.spec,e,0,i).next()),r.done?null:r.value}prevMatchInRange(e,i,n){for(let r=1;;r++){let s=Math.max(i,n-r*1e4),o=Yn(this.spec,e,s,n),l=null;for(;!o.next().done;)l=o.value;if(l&&(s==i||l.from>s+10))return l;if(s==i)return null}}prevMatch(e,i,n){return this.prevMatchInRange(e,0,i)||this.prevMatchInRange(e,n,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(i,n)=>{if(n=="&")return e.match[0];if(n=="$")return"$";for(let r=n.length;r>0;r--){let s=+n.slice(0,r);if(s>0&&s=i)return null;r.push(n.value)}return r}highlight(e,i,n,r){let s=Yn(this.spec,e,Math.max(0,i-250),Math.min(n+250,e.doc.length));for(;!s.next().done;)r(s.value.from,s.value.to)}}const Is=ae.define(),ch=ae.define(),rn=Yt.define({create(t){return new Ya(fc(t).create(),null)},update(t,e){for(let i of e.effects)i.is(Is)?t=new Ya(i.value.create(),t.panel):i.is(ch)&&(t=new Ya(t.query,i.value?hh:null));return t},provide:t=>Pl.from(t,e=>e.panel)});class Ya{constructor(e,i){this.query=e,this.panel=i}}const y_=ve.mark({class:"cm-searchMatch"}),x_=ve.mark({class:"cm-searchMatch cm-searchMatch-selected"}),k_=Mt.fromClass(class{constructor(t){this.view=t,this.decorations=this.highlight(t.state.field(rn))}update(t){let e=t.state.field(rn);(e!=t.startState.field(rn)||t.docChanged||t.selectionSet||t.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:t,panel:e}){if(!e||!t.spec.valid)return ve.none;let{view:i}=this,n=new gr;for(let r=0,s=i.visibleRanges,o=s.length;rs[r+1].from-500;)a=s[++r].to;t.highlight(i.state,l,a,(u,c)=>{let h=i.state.selection.ranges.some(f=>f.from==u&&f.to==c);n.add(u,c,h?x_:y_)})}return n.finish()}},{decorations:t=>t.decorations});function oo(t){return e=>{let i=e.state.field(rn,!1);return i&&i.query.spec.valid?t(e,i):Q1(e)}}const Zl=oo((t,{query:e})=>{let{to:i}=t.state.selection.main,n=e.nextMatch(t.state,i,i);if(!n)return!1;let r=E.single(n.from,n.to),s=t.state.facet(Ir);return t.dispatch({selection:r,effects:[fh(t,n),s.scrollToMatch(r.main,t)],userEvent:"select.search"}),$1(t),!0}),Il=oo((t,{query:e})=>{let{state:i}=t,{from:n}=i.selection.main,r=e.prevMatch(i,n,n);if(!r)return!1;let s=E.single(r.from,r.to),o=t.state.facet(Ir);return t.dispatch({selection:s,effects:[fh(t,r),o.scrollToMatch(s.main,t)],userEvent:"select.search"}),$1(t),!0}),S_=oo((t,{query:e})=>{let i=e.matchAll(t.state,1e3);return!i||!i.length?!1:(t.dispatch({selection:E.create(i.map(n=>E.range(n.from,n.to))),userEvent:"select.search.matches"}),!0)}),w_=({state:t,dispatch:e})=>{let i=t.selection;if(i.ranges.length>1||i.main.empty)return!1;let{from:n,to:r}=i.main,s=[],o=0;for(let l=new Zs(t.doc,t.sliceDoc(n,r));!l.next().done;){if(s.length>1e3)return!1;l.value.from==n&&(o=s.length),s.push(E.range(l.value.from,l.value.to))}return e(t.update({selection:E.create(s,o),userEvent:"select.search.matches"})),!0},M0=oo((t,{query:e})=>{let{state:i}=t,{from:n,to:r}=i.selection.main;if(i.readOnly)return!1;let s=e.nextMatch(i,n,n);if(!s)return!1;let o=s,l=[],a,u,c=[];o.precise?o.from==n&&o.to==r&&(u=i.toText(e.getReplacement(o)),l.push({from:o.from,to:o.to,insert:u}),o=e.nextMatch(i,o.from,o.to),c.push(W.announce.of(i.phrase("replaced match on line $",i.doc.lineAt(n).number)+"."))):o=e.nextMatch(i,o.from,o.to);let h=t.state.changes(l);return o&&(a=E.single(o.from,o.to).map(h),c.push(fh(t,o)),c.push(i.facet(Ir).scrollToMatch(a.main,t))),t.dispatch({changes:h,selection:a,effects:c,userEvent:"input.replace"}),!0}),$_=oo((t,{query:e})=>{if(t.state.readOnly)return!1;let i=[];for(let r of e.matchAll(t.state,1e9)){let{from:s,to:o,precise:l}=r;l&&i.push({from:s,to:o,insert:e.getReplacement(r)})}if(!i.length)return!1;let n=t.state.phrase("replaced $ matches",i.length)+".";return t.dispatch({changes:i,effects:W.announce.of(n),userEvent:"input.replace.all"}),!0});function hh(t){return t.state.facet(Ir).createPanel(t)}function fc(t,e){var i,n,r,s,o;let l=t.selection.main,a=l.empty||l.to>l.from+100?"":t.sliceDoc(l.from,l.to);if(e&&!a)return e;let u=t.facet(Ir);return new k1({search:((i=e==null?void 0:e.literal)!==null&&i!==void 0?i:u.literal)?a:a.replace(/\n/g,"\\n"),caseSensitive:(n=e==null?void 0:e.caseSensitive)!==null&&n!==void 0?n:u.caseSensitive,literal:(r=e==null?void 0:e.literal)!==null&&r!==void 0?r:u.literal,regexp:(s=e==null?void 0:e.regexp)!==null&&s!==void 0?s:u.regexp,wholeWord:(o=e==null?void 0:e.wholeWord)!==null&&o!==void 0?o:u.wholeWord})}function w1(t){let e=mg(t,hh);return e&&e.dom.querySelector("[main-field]")}function $1(t){let e=w1(t);e&&e==t.root.activeElement&&e.select()}const Q1=t=>{let e=t.state.field(rn,!1);if(e&&e.panel){let i=w1(t);if(i&&i!=t.root.activeElement){let n=fc(t.state,e.query.spec);n.valid&&t.dispatch({effects:Is.of(n)}),i.focus(),i.select()}}else t.dispatch({effects:[ch.of(!0),e?Is.of(fc(t.state,e.query.spec)):ae.appendConfig.of(C_)]});return!0},_1=t=>{let e=t.state.field(rn,!1);if(!e||!e.panel)return!1;let i=mg(t,hh);return i&&i.dom.contains(t.root.activeElement)&&t.focus(),t.dispatch({effects:ch.of(!1)}),!0},Q_=[{key:"Mod-f",run:Q1,scope:"editor search-panel"},{key:"F3",run:Zl,shift:Il,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:Zl,shift:Il,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:_1,scope:"editor search-panel"},{key:"Mod-Shift-l",run:w_},{key:"Mod-Alt-g",run:c_},{key:"Mod-d",run:d_,preventDefault:!0}];class __{constructor(e){this.view=e;let i=this.query=e.state.field(rn).query.spec;this.commit=this.commit.bind(this),this.searchField=We("input",{value:i.search,placeholder:xt(e,"Find"),"aria-label":xt(e,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=We("input",{value:i.replace,placeholder:xt(e,"Replace"),"aria-label":xt(e,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=We("input",{type:"checkbox",name:"case",form:"",checked:i.caseSensitive,onchange:this.commit}),this.reField=We("input",{type:"checkbox",name:"re",form:"",checked:i.regexp,onchange:this.commit}),this.wordField=We("input",{type:"checkbox",name:"word",form:"",checked:i.wholeWord,onchange:this.commit});function n(r,s,o){return We("button",{class:"cm-button",name:r,onclick:s,type:"button"},o)}this.dom=We("div",{onkeydown:r=>this.keydown(r),class:"cm-search"},[this.searchField,n("next",()=>Zl(e),[xt(e,"next")]),n("prev",()=>Il(e),[xt(e,"previous")]),n("select",()=>S_(e),[xt(e,"all")]),We("label",null,[this.caseField,xt(e,"match case")]),We("label",null,[this.reField,xt(e,"regexp")]),We("label",null,[this.wordField,xt(e,"by word")]),...e.state.readOnly?[]:[We("br"),this.replaceField,n("replace",()=>M0(e),[xt(e,"replace")]),n("replaceAll",()=>$_(e),[xt(e,"replace all")])],We("button",{name:"close",onclick:()=>_1(e),"aria-label":xt(e,"close"),type:"button"},["×"])])}commit(){let e=new k1({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:Is.of(e)}))}keydown(e){j3(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?Il:Zl)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),M0(this.view))}update(e){for(let i of e.transactions)for(let n of i.effects)n.is(Is)&&!n.value.eq(this.query)&&this.setQuery(n.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp,this.wordField.checked=e.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(Ir).top}}function xt(t,e){return t.state.phrase(e)}const Xo=30,zo=/[\s\.,:;?!]/;function fh(t,{from:e,to:i}){let n=t.state.doc.lineAt(e),r=t.state.doc.lineAt(i).to,s=Math.max(n.from,e-Xo),o=Math.min(r,i+Xo),l=t.state.sliceDoc(s,o);if(s!=n.from){for(let a=0;al.length-Xo;a--)if(!zo.test(l[a-1])&&zo.test(l[a])){l=l.slice(0,a);break}}return W.announce.of(`${t.state.phrase("current match")}. ${l} ${t.state.phrase("on line")} ${n.number}.`)}const P_=W.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),C_=[rn,Ii.low(k_),P_];class dh{constructor(e,i,n,r){this.state=e,this.pos=i,this.explicit=n,this.view=r,this.abortListeners=[],this.abortOnDocChange=!1}tokenBefore(e){let i=Re(this.state).resolveInner(this.pos,-1);for(;i&&e.indexOf(i.name)<0;)i=i.parent;return i?{from:i.from,to:this.pos,text:this.state.sliceDoc(i.from,this.pos),type:i.type}:null}matchBefore(e){let i=this.state.doc.lineAt(this.pos),n=Math.max(i.from,this.pos-250),r=i.text.slice(n-i.from,this.pos-i.from),s=r.search(C1(e,!1));return s<0?null:{from:n+s,to:this.pos,text:r.slice(s)}}get aborted(){return this.abortListeners==null}addEventListener(e,i,n){e=="abort"&&this.abortListeners&&(this.abortListeners.push(i),n&&n.onDocChange&&(this.abortOnDocChange=!0))}}function Z0(t){let e=Object.keys(t).join(""),i=/\w/.test(e);return i&&(e=e.replace(/\w/g,"")),`[${i?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function T_(t){let e=Object.create(null),i=Object.create(null);for(let{label:r}of t){e[r[0]]=!0;for(let s=1;stypeof r=="string"?{label:r}:r),[i,n]=e.every(r=>/^\w+$/.test(r.label))?[/\w*$/,/\w+$/]:T_(e);return r=>{let s=r.matchBefore(n);return s||r.explicit?{from:s?s.from:r.pos,options:e,validFor:i}:null}}function A_(t,e){return i=>{for(let n=Re(i.state).resolveInner(i.pos,-1);n;n=n.parent){if(t.indexOf(n.name)>-1)return null;if(n.type.isTop)break}return e(i)}}class I0{constructor(e,i,n,r){this.completion=e,this.source=i,this.match=n,this.score=r}}function Cn(t){return t.selection.main.from}function C1(t,e){var i;let{source:n}=t,r=e&&n[0]!="^",s=n[n.length-1]!="$";return!r&&!s?t:new RegExp(`${r?"^":""}(?:${n})${s?"$":""}`,(i=t.flags)!==null&&i!==void 0?i:t.ignoreCase?"i":"")}const ph=Xi.define();function E_(t,e,i,n){let{main:r}=t.selection,s=i-r.from,o=n-r.from;return{...t.changeByRange(l=>{if(l!=r&&i!=n&&t.sliceDoc(l.from+s,l.from+o)!=t.sliceDoc(i,n))return{range:l};let a=t.toText(e);return{changes:{from:l.from+s,to:n==r.from?l.to:l.from+o,insert:a},range:E.cursor(l.from+s+a.length)}}),scrollIntoView:!0,userEvent:"input.complete"}}const X0=new WeakMap;function R_(t){if(!Array.isArray(t))return t;let e=X0.get(t);return e||X0.set(t,e=P1(t)),e}const Xl=ae.define(),Xs=ae.define();class D_{constructor(e){this.pattern=e,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[],this.score=0,this.matched=[];for(let i=0;i=48&&v<=57||v>=97&&v<=122?2:v>=65&&v<=90?1:0:(Q=tO(v))!=Q.toLowerCase()?1:Q!=Q.toUpperCase()?2:0;(!b||P==1&&O||w==0&&P!=0)&&(i[h]==v||n[h]==v&&(f=!0)?o[h++]=b:o.length&&(g=!1)),w=P,b+=vn(v)}return h==a&&o[0]==0&&g?this.result(-100+(f?-200:0),o,e):d==a&&p==0?this.ret(-200-e.length+(m==e.length?0:-100),[0,m]):l>-1?this.ret(-700-e.length,[l,l+this.pattern.length]):d==a?this.ret(-900-e.length,[p,m]):h==a?this.result(-100+(f?-200:0)+-700+(g?0:-1100),o,e):i.length==2?null:this.result((r[0]?-700:0)+-200+-1100,r,e)}result(e,i,n){let r=[],s=0;for(let o of i){let l=o+(this.astral?vn(Ni(n,o)):1);s&&r[s-1]==o?r[s-1]=l:(r[s++]=o,r[s++]=l)}return this.ret(e-n.length,r)}}class L_{constructor(e){this.pattern=e,this.matched=[],this.score=0,this.folded=e.toLowerCase()}match(e){if(e.length!1,activateOnTypingDelay:100,selectOnOpen:!0,override:null,closeOnBlur:!0,maxRenderedOptions:100,defaultKeymap:!0,tooltipClass:()=>"",optionClass:()=>"",aboveCursor:!1,icons:!0,addToOptions:[],positionInfo:M_,filterStrict:!1,compareCompletions:(e,i)=>(e.sortText||e.label).localeCompare(i.sortText||i.label),interactionDelay:75,updateSyncTime:100},{defaultKeymap:(e,i)=>e&&i,closeOnBlur:(e,i)=>e&&i,icons:(e,i)=>e&&i,tooltipClass:(e,i)=>n=>z0(e(n),i(n)),optionClass:(e,i)=>n=>z0(e(n),i(n)),addToOptions:(e,i)=>e.concat(i),filterStrict:(e,i)=>e||i})}});function z0(t,e){return t?e?t+" "+e:t:e}function M_(t,e,i,n,r,s){let o=t.textDirection==Ce.RTL,l=o,a=!1,u="top",c,h,f=e.left-r.left,d=r.right-e.right,p=n.right-n.left,m=n.bottom-n.top;if(l&&f=m||b>e.top?c=i.bottom-e.top:(u="bottom",c=e.bottom-i.top)}let O=(e.bottom-e.top)/s.offsetHeight,g=(e.right-e.left)/s.offsetWidth;return{style:`${u}: ${c/O}px; max-width: ${h/g}px`,class:"cm-completionInfo-"+(a?o?"left-narrow":"right-narrow":l?"left":"right")}}const mh=ae.define();function Z_(t){let e=t.addToOptions.slice();return t.icons&&e.push({render(i){let n=document.createElement("div");return n.classList.add("cm-completionIcon"),i.type&&n.classList.add(...i.type.split(/\s+/g).map(r=>"cm-completionIcon-"+r)),n.setAttribute("aria-hidden","true"),n},position:20}),e.push({render(i,n,r,s){let o=document.createElement("span");o.className="cm-completionLabel";let l=i.displayLabel||i.label,a=0;for(let u=0;ua&&o.appendChild(document.createTextNode(l.slice(a,c)));let f=o.appendChild(document.createElement("span"));f.appendChild(document.createTextNode(l.slice(c,h))),f.className="cm-completionMatchedText",a=h}return ai.position-n.position).map(i=>i.render)}function Na(t,e,i){if(t<=i)return{from:0,to:t};if(e<0&&(e=0),e<=t>>1){let r=Math.floor(e/i);return{from:r*i,to:(r+1)*i}}let n=Math.ceil((t-e)/i);return{from:t-n*i,to:t-(n-1)*i}}class I_{constructor(e,i,n){this.view=e,this.stateField=i,this.applyCompletion=n,this.info=null,this.infoDestroy=null,this.placeInfoReq={read:()=>this.measureInfo(),write:a=>this.placeInfo(a),key:this},this.space=null,this.currentClass="";let r=e.state.field(i),{options:s,selected:o}=r.open,l=e.state.facet(Ne);this.optionContent=Z_(l),this.optionClass=l.optionClass,this.tooltipClass=l.tooltipClass,this.range=Na(s.length,o,l.maxRenderedOptions),this.dom=document.createElement("div"),this.dom.className="cm-tooltip-autocomplete",this.updateTooltipClass(e.state),this.dom.addEventListener("mousedown",a=>{let{options:u}=e.state.field(i).open;for(let c=a.target,h;c&&c!=this.dom;c=c.parentNode)if(c.nodeName=="LI"&&(h=/-(\d+)$/.exec(c.id))&&+h[1]this.list.lastChild.getBoundingClientRect().bottom?this.range.to:null;c!=null&&(e.dispatch({effects:mh.of(c)}),a.preventDefault())}}),this.dom.addEventListener("focusout",a=>{let u=e.state.field(this.stateField,!1);u&&u.tooltip&&e.state.facet(Ne).closeOnBlur&&a.relatedTarget!=e.contentDOM&&e.dispatch({effects:Xs.of(null)})}),this.showOptions(s,r.id)}mount(){this.updateSel()}showOptions(e,i){this.list&&this.list.remove(),this.list=this.dom.appendChild(this.createListBox(e,i,this.range)),this.list.addEventListener("scroll",()=>{this.info&&this.view.requestMeasure(this.placeInfoReq)})}update(e){var i;let n=e.state.field(this.stateField),r=e.startState.field(this.stateField);if(this.updateTooltipClass(e.state),n!=r){let{options:s,selected:o,disabled:l}=n.open;(!r.open||r.open.options!=s)&&(this.range=Na(s.length,o,e.state.facet(Ne).maxRenderedOptions),this.showOptions(s,n.id)),this.updateSel(),l!=((i=r.open)===null||i===void 0?void 0:i.disabled)&&this.dom.classList.toggle("cm-tooltip-autocomplete-disabled",!!l)}}updateTooltipClass(e){let i=this.tooltipClass(e);if(i!=this.currentClass){for(let n of this.currentClass.split(" "))n&&this.dom.classList.remove(n);for(let n of i.split(" "))n&&this.dom.classList.add(n);this.currentClass=i}}positioned(e){this.space=e,this.info&&this.view.requestMeasure(this.placeInfoReq)}updateSel(){let e=this.view.state.field(this.stateField),i=e.open;(i.selected>-1&&i.selected=this.range.to)&&(this.range=Na(i.options.length,i.selected,this.view.state.facet(Ne).maxRenderedOptions),this.showOptions(i.options,e.id));let n=this.updateSelectedOption(i.selected);if(n){this.destroyInfo();let{completion:r}=i.options[i.selected],{info:s}=r;if(!s)return;let o=typeof s=="string"?document.createTextNode(s):s(r);if(!o)return;"then"in o?o.then(l=>{l&&this.view.state.field(this.stateField,!1)==e&&this.addInfoPane(l,r)}).catch(l=>Rt(this.view.state,l,"completion info")):(this.addInfoPane(o,r),n.setAttribute("aria-describedby",this.info.id))}}addInfoPane(e,i){this.destroyInfo();let n=this.info=document.createElement("div");if(n.className="cm-tooltip cm-completionInfo",n.id="cm-completionInfo-"+Math.floor(Math.random()*65535).toString(16),e.nodeType!=null)n.appendChild(e),this.infoDestroy=null;else{let{dom:r,destroy:s}=e;n.appendChild(r),this.infoDestroy=s||null}this.dom.appendChild(n),this.view.requestMeasure(this.placeInfoReq)}updateSelectedOption(e){let i=null;for(let n=this.list.firstChild,r=this.range.from;n;n=n.nextSibling,r++)n.nodeName!="LI"||!n.id?r--:r==e?n.hasAttribute("aria-selected")||(n.setAttribute("aria-selected","true"),i=n):n.hasAttribute("aria-selected")&&(n.removeAttribute("aria-selected"),n.removeAttribute("aria-describedby"));return i&&z_(this.list,i),i}measureInfo(){let e=this.dom.querySelector("[aria-selected]");if(!e||!this.info)return null;let i=this.dom.getBoundingClientRect(),n=this.info.getBoundingClientRect(),r=e.getBoundingClientRect(),s=this.space;if(!s){let o=this.dom.ownerDocument.documentElement;s={left:0,top:0,right:o.clientWidth,bottom:o.clientHeight}}return r.top>Math.min(s.bottom,i.bottom)-10||r.bottom{o.target==r&&o.preventDefault()});let s=null;for(let o=n.from;on.from||n.from==0))if(s=f,typeof u!="string"&&u.header)r.appendChild(u.header(u));else{let d=r.appendChild(document.createElement("completion-section"));d.textContent=f}}const c=r.appendChild(document.createElement("li"));c.id=i+"-"+o,c.setAttribute("role","option");let h=this.optionClass(l);h&&(c.className=h);for(let f of this.optionContent){let d=f(l,this.view.state,this.view,a);d&&c.appendChild(d)}}return n.from&&r.classList.add("cm-completionListIncompleteTop"),n.tonew I_(i,t,e)}function z_(t,e){let i=t.getBoundingClientRect(),n=e.getBoundingClientRect(),r=i.height/t.offsetHeight;n.topi.bottom&&(t.scrollTop+=(n.bottom-i.bottom)/r)}function j0(t){return(t.boost||0)*100+(t.apply?10:0)+(t.info?5:0)+(t.type?1:0)}function j_(t,e){let i=[],n=null,r=null,s=c=>{i.push(c);let{section:h}=c.completion;if(h){n||(n=[]);let f=typeof h=="string"?h:h.name;n.some(d=>d.name==f)||n.push(typeof h=="string"?{name:f}:h)}},o=e.facet(Ne);for(let c of t)if(c.hasResult()){let h=c.result.getMatch;if(c.result.filter===!1)for(let f of c.result.options)s(new I0(f,c.source,h?h(f):[],1e9-i.length));else{let f=e.sliceDoc(c.from,c.to),d,p=o.filterStrict?new L_(f):new D_(f);for(let m of c.result.options)if(d=p.match(m.label)){let O=m.displayLabel?h?h(m,d.matched):[]:d.matched,g=d.score+(m.boost||0);if(s(new I0(m,c.source,O,g)),typeof m.section=="object"&&m.section.rank==="dynamic"){let{name:b}=m.section;r||(r=Object.create(null)),r[b]=Math.max(g,r[b]||-1e9)}}}}if(n){let c=Object.create(null),h=0,f=(d,p)=>(d.rank==="dynamic"&&p.rank==="dynamic"?r[p.name]-r[d.name]:0)||(typeof d.rank=="number"?d.rank:1e9)-(typeof p.rank=="number"?p.rank:1e9)||(d.namef.score-h.score||u(h.completion,f.completion))){let h=c.completion;!a||a.label!=h.label||a.detail!=h.detail||a.type!=null&&h.type!=null&&a.type!=h.type||a.apply!=h.apply||a.boost!=h.boost?l.push(c):j0(c.completion)>j0(a)&&(l[l.length-1]=c),a=c.completion}return l}class Hn{constructor(e,i,n,r,s,o){this.options=e,this.attrs=i,this.tooltip=n,this.timestamp=r,this.selected=s,this.disabled=o}setSelected(e,i){return e==this.selected||e>=this.options.length?this:new Hn(this.options,F0(i,e),this.tooltip,this.timestamp,e,this.disabled)}static build(e,i,n,r,s,o){if(r&&!o&&e.some(u=>u.isPending))return r.setDisabled();let l=j_(e,i);if(!l.length)return r&&e.some(u=>u.isPending)?r.setDisabled():null;let a=i.facet(Ne).selectOnOpen?0:-1;if(r&&r.selected!=a&&r.selected!=-1){let u=r.options[r.selected].completion;for(let c=0;cc.hasResult()?Math.min(u,c.from):u,1e8),create:Y_,above:s.aboveCursor},r?r.timestamp:Date.now(),a,!1)}map(e){return new Hn(this.options,this.attrs,{...this.tooltip,pos:e.mapPos(this.tooltip.pos)},this.timestamp,this.selected,this.disabled)}setDisabled(){return new Hn(this.options,this.attrs,this.tooltip,this.timestamp,this.selected,!0)}}class zl{constructor(e,i,n){this.active=e,this.id=i,this.open=n}static start(){return new zl(q_,"cm-ac-"+Math.floor(Math.random()*2e6).toString(36),null)}update(e){let{state:i}=e,n=i.facet(Ne),s=(n.override||i.languageDataAt("autocomplete",Cn(i)).map(R_)).map(a=>(this.active.find(c=>c.source==a)||new Vt(a,this.active.some(c=>c.state!=0)?1:0)).update(e,n));s.length==this.active.length&&s.every((a,u)=>a==this.active[u])&&(s=this.active);let o=this.open,l=e.effects.some(a=>a.is(Oh));o&&e.docChanged&&(o=o.map(e.changes)),e.selection||s.some(a=>a.hasResult()&&e.changes.touchesRange(a.from,a.to))||!F_(s,this.active)||l?o=Hn.build(s,i,this.id,o,n,l):o&&o.disabled&&!s.some(a=>a.isPending)&&(o=null),!o&&s.every(a=>!a.isPending)&&s.some(a=>a.hasResult())&&(s=s.map(a=>a.hasResult()?new Vt(a.source,0):a));for(let a of e.effects)a.is(mh)&&(o=o&&o.setSelected(a.value,this.id));return s==this.active&&o==this.open?this:new zl(s,this.id,o)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:this.active.length?B_:V_}}function F_(t,e){if(t==e)return!0;for(let i=0,n=0;;){for(;i-1&&(i["aria-activedescendant"]=t+"-"+e),i}const q_=[];function T1(t,e){if(t.isUserEvent("input.complete")){let n=t.annotation(ph);if(n&&e.activateOnCompletion(n))return 12}let i=t.isUserEvent("input.type");return i&&e.activateOnTyping?5:i?1:t.isUserEvent("delete.backward")?2:t.selection?8:t.docChanged?16:0}class Vt{constructor(e,i,n=!1){this.source=e,this.state=i,this.explicit=n}hasResult(){return!1}get isPending(){return this.state==1}update(e,i){let n=T1(e,i),r=this;(n&8||n&16&&this.touches(e))&&(r=new Vt(r.source,0)),n&4&&r.state==0&&(r=new Vt(this.source,1)),r=r.updateFor(e,n);for(let s of e.effects)if(s.is(Xl))r=new Vt(r.source,1,s.value);else if(s.is(Xs))r=new Vt(r.source,0);else if(s.is(Oh))for(let o of s.value)o.source==r.source&&(r=o);return r}updateFor(e,i){return this.map(e.changes)}map(e){return this}touches(e){return e.changes.touchesRange(Cn(e.state))}}class or extends Vt{constructor(e,i,n,r,s,o){super(e,3,i),this.limit=n,this.result=r,this.from=s,this.to=o}hasResult(){return!0}updateFor(e,i){var n;if(!(i&3))return this.map(e.changes);let r=this.result;r.map&&!e.changes.empty&&(r=r.map(r,e.changes));let s=e.changes.mapPos(this.from),o=e.changes.mapPos(this.to,1),l=Cn(e.state);if(l>o||!r||i&2&&(Cn(e.startState)==this.from||li.map(e))}}),Ot=Yt.define({create(){return zl.start()},update(t,e){return t.update(e)},provide:t=>[dg.from(t,e=>e.tooltip),W.contentAttributes.from(t,e=>e.attrs)]});function gh(t,e){const i=e.completion.apply||e.completion.label;let n=t.state.field(Ot).active.find(r=>r.source==e.source);return n instanceof or?(typeof i=="string"?t.dispatch({...E_(t.state,i,n.from,n.to),annotations:ph.of(e.completion)}):i(t,e.completion,n.from,n.to),!0):!1}const Y_=X_(Ot,gh);function jo(t,e="option"){return i=>{let n=i.state.field(Ot,!1);if(!n||!n.open||n.open.disabled||Date.now()-n.open.timestamp-1?n.open.selected+r*(t?1:-1):t?0:o-1;return l<0?l=e=="page"?0:o-1:l>=o&&(l=e=="page"?o-1:0),i.dispatch({effects:mh.of(l)}),!0}}const N_=t=>{let e=t.state.field(Ot,!1);return t.state.readOnly||!e||!e.open||e.open.selected<0||e.open.disabled||Date.now()-e.open.timestampt.state.field(Ot,!1)?(t.dispatch({effects:Xl.of(!0)}),!0):!1,G_=t=>{let e=t.state.field(Ot,!1);return!e||!e.active.some(i=>i.state!=0)?!1:(t.dispatch({effects:Xs.of(null)}),!0)};class U_{constructor(e,i){this.active=e,this.context=i,this.time=Date.now(),this.updates=[],this.done=void 0}}const H_=50,K_=1e3,J_=Mt.fromClass(class{constructor(t){this.view=t,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.pendingStart=!1,this.composing=0;for(let e of t.state.field(Ot).active)e.isPending&&this.startQuery(e)}update(t){let e=t.state.field(Ot),i=t.state.facet(Ne);if(!t.selectionSet&&!t.docChanged&&t.startState.field(Ot)==e)return;let n=t.transactions.some(s=>{let o=T1(s,i);return o&8||(s.selection||s.docChanged)&&!(o&3)});for(let s=0;sH_&&Date.now()-o.time>K_){for(let l of o.context.abortListeners)try{l()}catch(a){Rt(this.view.state,a)}o.context.abortListeners=null,this.running.splice(s--,1)}else o.updates.push(...t.transactions)}this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),t.transactions.some(s=>s.effects.some(o=>o.is(Xl)))&&(this.pendingStart=!0);let r=this.pendingStart?50:i.activateOnTypingDelay;if(this.debounceUpdate=e.active.some(s=>s.isPending&&!this.running.some(o=>o.active.source==s.source))?setTimeout(()=>this.startUpdate(),r):-1,this.composing!=0)for(let s of t.transactions)s.isUserEvent("input.type")?this.composing=2:this.composing==2&&s.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1,this.pendingStart=!1;let{state:t}=this.view,e=t.field(Ot);for(let i of e.active)i.isPending&&!this.running.some(n=>n.active.source==i.source)&&this.startQuery(i);this.running.length&&e.open&&e.open.disabled&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(Ne).updateSyncTime))}startQuery(t){let{state:e}=this.view,i=Cn(e),n=new dh(e,i,t.explicit,this.view),r=new U_(t,n);this.running.push(r),Promise.resolve(t.source(n)).then(s=>{r.context.aborted||(r.done=s||null,this.scheduleAccept())},s=>{this.view.dispatch({effects:Xs.of(null)}),Rt(this.view.state,s)})}scheduleAccept(){this.running.every(t=>t.done!==void 0)?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(Ne).updateSyncTime))}accept(){var t;this.debounceAccept>-1&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;let e=[],i=this.view.state.facet(Ne),n=this.view.state.field(Ot);for(let r=0;rl.source==s.active.source);if(o&&o.isPending)if(s.done==null){let l=new Vt(s.active.source,0);for(let a of s.updates)l=l.update(a,i);l.isPending||e.push(l)}else this.startQuery(o)}(e.length||n.open&&n.open.disabled)&&this.view.dispatch({effects:Oh.of(e)})}},{eventHandlers:{blur(t){let e=this.view.state.field(Ot,!1);if(e&&e.tooltip&&this.view.state.facet(Ne).closeOnBlur){let i=e.open&&pg(this.view,e.open.tooltip);(!i||!i.dom.contains(t.relatedTarget))&&setTimeout(()=>this.view.dispatch({effects:Xs.of(null)}),10)}},compositionstart(){this.composing=1},compositionend(){this.composing==3&&setTimeout(()=>this.view.dispatch({effects:Xl.of(!1)}),20),this.composing=0}}}),eP=typeof navigator=="object"&&/Win/.test(navigator.platform),tP=Ii.highest(W.domEventHandlers({keydown(t,e){let i=e.state.field(Ot,!1);if(!i||!i.open||i.open.disabled||i.open.selected<0||t.key.length>1||t.ctrlKey&&!(eP&&t.altKey)||t.metaKey)return!1;let n=i.open.options[i.open.selected],r=i.active.find(o=>o.source==n.source),s=n.completion.commitCharacters||r.result.commitCharacters;return s&&s.indexOf(t.key)>-1&&gh(e,n),!1}})),A1=W.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",height:"100%",listStyle:"none",margin:0,padding:0,"& > li, & > completion-section":{padding:"1px 3px",lineHeight:1.2},"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer"},"& > completion-section":{display:"list-item",borderBottom:"1px solid silver",paddingLeft:"0.5em",opacity:.7}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#777"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#444"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"···"',opacity:.5,display:"block",textAlign:"center",cursor:"pointer"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:"400px",boxSizing:"border-box",whiteSpace:"pre-line"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},".cm-completionInfo.cm-completionInfo-left-narrow":{right:"30px"},".cm-completionInfo.cm-completionInfo-right-narrow":{left:"30px"},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",display:"inline-block",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6",boxSizing:"content-box"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'ƒ'"}},".cm-completionIcon-class":{"&:after":{content:"'○'"}},".cm-completionIcon-interface":{"&:after":{content:"'◌'"}},".cm-completionIcon-variable":{"&:after":{content:"'𝑥'"}},".cm-completionIcon-constant":{"&:after":{content:"'𝐶'"}},".cm-completionIcon-type":{"&:after":{content:"'𝑡'"}},".cm-completionIcon-enum":{"&:after":{content:"'∪'"}},".cm-completionIcon-property":{"&:after":{content:"'□'"}},".cm-completionIcon-keyword":{"&:after":{content:"'🔑︎'"}},".cm-completionIcon-namespace":{"&:after":{content:"'▢'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}});class iP{constructor(e,i,n,r){this.field=e,this.line=i,this.from=n,this.to=r}}class bh{constructor(e,i,n){this.field=e,this.from=i,this.to=n}map(e){let i=e.mapPos(this.from,-1,ut.TrackDel),n=e.mapPos(this.to,1,ut.TrackDel);return i==null||n==null?null:new bh(this.field,i,n)}}class vh{constructor(e,i){this.lines=e,this.fieldPositions=i}instantiate(e,i){let n=[],r=[i],s=e.doc.lineAt(i),o=/^\s*/.exec(s.text)[0];for(let a of this.lines){if(n.length){let u=o,c=/^\t*/.exec(a)[0].length;for(let h=0;hnew bh(a.field,r[a.line]+a.from,r[a.line]+a.to));return{text:n,ranges:l}}static parse(e){let i=[],n=[],r=[],s;for(let o of e.split(/\r\n?|\n/)){for(;s=/[#$]\{(?:(\d+)(?::([^{}]*))?|((?:\\[{}]|[^{}])*))\}/.exec(o);){let l=s[1]?+s[1]:null,a=s[2]||s[3]||"",u=-1;l===0&&(l=1e9);let c=a.replace(/\\[{}]/g,h=>h[1]);for(let h=0;h=u&&f.field++}for(let h of r)if(h.line==n.length&&h.from>s.index){let f=s[2]?3+(s[1]||"").length:2;h.from-=f,h.to-=f}r.push(new iP(u,n.length,s.index,s.index+c.length)),o=o.slice(0,s.index)+a+o.slice(s.index+s[0].length)}o=o.replace(/\\([{}])/g,(l,a,u)=>{for(let c of r)c.line==n.length&&c.from>u&&(c.from--,c.to--);return a}),n.push(o)}return new vh(n,r)}}let nP=ve.widget({widget:new class extends Er{toDOM(){let t=document.createElement("span");return t.className="cm-snippetFieldPosition",t}ignoreEvent(){return!1}}}),rP=ve.mark({class:"cm-snippetField"});class Xr{constructor(e,i){this.ranges=e,this.active=i,this.deco=ve.set(e.map(n=>(n.from==n.to?nP:rP).range(n.from,n.to)),!0)}map(e){let i=[];for(let n of this.ranges){let r=n.map(e);if(!r)return null;i.push(r)}return new Xr(i,this.active)}selectionInsideField(e){return e.ranges.every(i=>this.ranges.some(n=>n.field==this.active&&n.from<=i.from&&n.to>=i.to))}}const lo=ae.define({map(t,e){return t&&t.map(e)}}),sP=ae.define(),zs=Yt.define({create(){return null},update(t,e){for(let i of e.effects){if(i.is(lo))return i.value;if(i.is(sP)&&t)return new Xr(t.ranges,i.value)}return t&&e.docChanged&&(t=t.map(e.changes)),t&&e.selection&&!t.selectionInsideField(e.selection)&&(t=null),t},provide:t=>W.decorations.from(t,e=>e?e.deco:ve.none)});function yh(t,e){return E.create(t.filter(i=>i.field==e).map(i=>E.range(i.from,i.to)))}function oP(t){let e=vh.parse(t);return(i,n,r,s)=>{let{text:o,ranges:l}=e.instantiate(i.state,r),{main:a}=i.state.selection,u={changes:{from:r,to:s==a.from?a.to:s,insert:de.of(o)},scrollIntoView:!0,annotations:n?[ph.of(n),Xe.userEvent.of("input.complete")]:void 0};if(l.length&&(u.selection=yh(l,0)),l.some(c=>c.field>0)){let c=new Xr(l,0),h=u.effects=[lo.of(c)];i.state.field(zs,!1)===void 0&&h.push(ae.appendConfig.of([zs,hP,fP,A1]))}i.dispatch(i.state.update(u))}}function E1(t){return({state:e,dispatch:i})=>{let n=e.field(zs,!1);if(!n||t<0&&n.active==0)return!1;let r=n.active+t,s=t>0&&!n.ranges.some(o=>o.field==r+t);return i(e.update({selection:yh(n.ranges,r),effects:lo.of(s?null:new Xr(n.ranges,r)),scrollIntoView:!0})),!0}}const lP=({state:t,dispatch:e})=>t.field(zs,!1)?(e(t.update({effects:lo.of(null)})),!0):!1,aP=E1(1),uP=E1(-1),cP=[{key:"Tab",run:aP,shift:uP},{key:"Escape",run:lP}],B0=G.define({combine(t){return t.length?t[0]:cP}}),hP=Ii.highest(io.compute([B0],t=>t.facet(B0)));function mt(t,e){return{...e,apply:oP(t)}}const fP=W.domEventHandlers({mousedown(t,e){let i=e.state.field(zs,!1),n;if(!i||(n=e.posAtCoords({x:t.clientX,y:t.clientY}))==null)return!1;let r=i.ranges.find(s=>s.from<=n&&s.to>=n);return!r||r.field==i.active?!1:(e.dispatch({selection:yh(i.ranges,r.field),effects:lo.of(i.ranges.some(s=>s.field>r.field)?new Xr(i.ranges,r.field):null),scrollIntoView:!0}),!0)}}),R1=new class extends on{};R1.startSide=1;R1.endSide=-1;function dP(t={}){return[tP,Ot,Ne.of(t),J_,mP,A1]}const pP=[{key:"Ctrl-Space",run:Ga},{mac:"Alt-`",run:Ga},{mac:"Alt-i",run:Ga},{key:"Escape",run:G_},{key:"ArrowDown",run:jo(!0)},{key:"ArrowUp",run:jo(!1)},{key:"PageDown",run:jo(!0,"page")},{key:"PageUp",run:jo(!1,"page")},{key:"Enter",run:N_}],mP=Ii.highest(io.computeN([Ne],t=>t.facet(Ne).defaultKeymap?[pP]:[]));function D(t){return new Qr(ih.define(t))}function zi(t){return A(()=>import("./index-DXOn8YGL.js"),__vite__mapDeps([0,1,2])).then(e=>e.sql({dialect:e[t]}))}const OP=[C.of({name:"C",extensions:["c","h","ino"],load(){return A(()=>import("./index-CfrELZwh.js"),__vite__mapDeps([3,1,2])).then(t=>t.cpp())}}),C.of({name:"C++",alias:["cpp"],extensions:["cpp","c++","cc","cxx","hpp","h++","hh","hxx"],load(){return A(()=>import("./index-CfrELZwh.js"),__vite__mapDeps([3,1,2])).then(t=>t.cpp())}}),C.of({name:"CQL",alias:["cassandra"],extensions:["cql"],load(){return zi("Cassandra")}}),C.of({name:"CSS",extensions:["css"],load(){return A(()=>Promise.resolve().then(()=>pT),void 0).then(t=>t.css())}}),C.of({name:"Go",extensions:["go"],load(){return A(()=>import("./index-BElrCJZ7.js"),__vite__mapDeps([4,1,2])).then(t=>t.go())}}),C.of({name:"HTML",alias:["xhtml"],extensions:["html","htm","handlebars","hbs"],load(){return A(()=>Promise.resolve().then(()=>o5),void 0).then(t=>t.html())}}),C.of({name:"Java",extensions:["java"],load(){return A(()=>import("./index-DLbKIyY2.js"),__vite__mapDeps([5,1,2])).then(t=>t.java())}}),C.of({name:"JavaScript",alias:["ecmascript","js","node"],extensions:["js","mjs","cjs"],load(){return A(()=>Promise.resolve().then(()=>Vo),void 0).then(t=>t.javascript())}}),C.of({name:"Jinja",extensions:["j2","jinja","jinja2"],load(){return A(()=>import("./index-5j7eJv_9.js"),__vite__mapDeps([6,1,2])).then(t=>t.jinja())}}),C.of({name:"JSON",alias:["json5"],extensions:["json","map"],load(){return A(()=>import("./index-B15POG28.js"),__vite__mapDeps([7,1,2])).then(t=>t.json())}}),C.of({name:"JSX",extensions:["jsx"],load(){return A(()=>Promise.resolve().then(()=>Vo),void 0).then(t=>t.javascript({jsx:!0}))}}),C.of({name:"LESS",extensions:["less"],load(){return A(()=>import("./index-CsCXnZZw.js"),__vite__mapDeps([8,1,2])).then(t=>t.less())}}),C.of({name:"Liquid",extensions:["liquid"],load(){return A(()=>import("./index-DkIQRIsY.js"),__vite__mapDeps([9,1,2])).then(t=>t.liquid())}}),C.of({name:"MariaDB SQL",load(){return zi("MariaSQL")}}),C.of({name:"Markdown",extensions:["md","markdown","mkd"],load(){return A(()=>Promise.resolve().then(()=>g5),void 0).then(t=>t.markdown())}}),C.of({name:"MS SQL",load(){return zi("MSSQL")}}),C.of({name:"MySQL",load(){return zi("MySQL")}}),C.of({name:"PHP",extensions:["php","php3","php4","php5","php7","phtml"],load(){return A(()=>import("./index-CBaIyXPw.js"),__vite__mapDeps([10,1,2])).then(t=>t.php())}}),C.of({name:"PLSQL",extensions:["pls"],load(){return zi("PLSQL")}}),C.of({name:"PostgreSQL",load(){return zi("PostgreSQL")}}),C.of({name:"Python",extensions:["BUILD","bzl","py","pyw"],filename:/^(BUCK|BUILD)$/,load(){return A(()=>import("./index-BxAjCHOi.js"),__vite__mapDeps([11,1,2])).then(t=>t.python())}}),C.of({name:"Rust",extensions:["rs"],load(){return A(()=>import("./index-BYOirq2F.js"),__vite__mapDeps([12,1,2])).then(t=>t.rust())}}),C.of({name:"Sass",extensions:["sass"],load(){return A(()=>import("./index-sgHIT8oA.js"),__vite__mapDeps([13,1,2])).then(t=>t.sass({indented:!0}))}}),C.of({name:"SCSS",extensions:["scss"],load(){return A(()=>import("./index-sgHIT8oA.js"),__vite__mapDeps([13,1,2])).then(t=>t.sass())}}),C.of({name:"SQL",extensions:["sql"],load(){return zi("StandardSQL")}}),C.of({name:"SQLite",load(){return zi("SQLite")}}),C.of({name:"TSX",extensions:["tsx"],load(){return A(()=>Promise.resolve().then(()=>Vo),void 0).then(t=>t.javascript({jsx:!0,typescript:!0}))}}),C.of({name:"TypeScript",alias:["ts"],extensions:["ts","mts","cts"],load(){return A(()=>Promise.resolve().then(()=>Vo),void 0).then(t=>t.javascript({typescript:!0}))}}),C.of({name:"WebAssembly",extensions:["wat","wast"],load(){return A(()=>import("./index-vozpzIjg.js"),__vite__mapDeps([14,1,2])).then(t=>t.wast())}}),C.of({name:"XML",alias:["rss","wsdl","xsd"],extensions:["xml","xsl","xsd","svg"],load(){return A(()=>import("./index-CSVFdiMT.js"),__vite__mapDeps([15,1,2])).then(t=>t.xml())}}),C.of({name:"YAML",alias:["yml"],extensions:["yaml","yml"],load(){return A(()=>import("./index-DO-kEPEU.js"),__vite__mapDeps([16,1,2])).then(t=>t.yaml())}}),C.of({name:"APL",extensions:["dyalog","apl"],load(){return A(()=>import("./apl-B4CMkyY2.js"),[]).then(t=>D(t.apl))}}),C.of({name:"PGP",alias:["asciiarmor"],extensions:["asc","pgp","sig"],load(){return A(()=>import("./asciiarmor-Df11BRmG.js"),[]).then(t=>D(t.asciiArmor))}}),C.of({name:"ASN.1",extensions:["asn","asn1"],load(){return A(()=>import("./asn1-EdZsLKOL.js"),[]).then(t=>D(t.asn1({})))}}),C.of({name:"Asterisk",filename:/^extensions\.conf$/i,load(){return A(()=>import("./asterisk-B-8jnY81.js"),[]).then(t=>D(t.asterisk))}}),C.of({name:"Brainfuck",extensions:["b","bf"],load(){return A(()=>import("./brainfuck-C4LP7Hcl.js"),[]).then(t=>D(t.brainfuck))}}),C.of({name:"Cobol",extensions:["cob","cpy"],load(){return A(()=>import("./cobol-CWcv1MsR.js"),[]).then(t=>D(t.cobol))}}),C.of({name:"C#",alias:["csharp","cs"],extensions:["cs"],load(){return A(()=>import("./clike-B9uivgTg.js"),[]).then(t=>D(t.csharp))}}),C.of({name:"Clojure",extensions:["clj","cljc","cljx"],load(){return A(()=>import("./clojure-BMjYHr_A.js"),[]).then(t=>D(t.clojure))}}),C.of({name:"ClojureScript",extensions:["cljs"],load(){return A(()=>import("./clojure-BMjYHr_A.js"),[]).then(t=>D(t.clojure))}}),C.of({name:"Closure Stylesheets (GSS)",extensions:["gss"],load(){return A(()=>import("./css-BnMrqG3P.js"),[]).then(t=>D(t.gss))}}),C.of({name:"CMake",extensions:["cmake","cmake.in"],filename:/^CMakeLists\.txt$/,load(){return A(()=>import("./cmake-BQqOBYOt.js"),[]).then(t=>D(t.cmake))}}),C.of({name:"CoffeeScript",alias:["coffee","coffee-script"],extensions:["coffee"],load(){return A(()=>import("./coffeescript-S37ZYGWr.js"),[]).then(t=>D(t.coffeeScript))}}),C.of({name:"Common Lisp",alias:["lisp"],extensions:["cl","lisp","el"],load(){return A(()=>import("./commonlisp-DBKNyK5s.js"),[]).then(t=>D(t.commonLisp))}}),C.of({name:"Cypher",extensions:["cyp","cypher"],load(){return A(()=>import("./cypher-C_CwsFkJ.js"),[]).then(t=>D(t.cypher))}}),C.of({name:"Cython",extensions:["pyx","pxd","pxi"],load(){return A(()=>import("./python-BuPzkPfP.js"),[]).then(t=>D(t.cython))}}),C.of({name:"Crystal",extensions:["cr"],load(){return A(()=>import("./crystal-SjHAIU92.js"),[]).then(t=>D(t.crystal))}}),C.of({name:"D",extensions:["d"],load(){return A(()=>import("./d-pRatUO7H.js"),[]).then(t=>D(t.d))}}),C.of({name:"Dart",extensions:["dart"],load(){return A(()=>import("./clike-B9uivgTg.js"),[]).then(t=>D(t.dart))}}),C.of({name:"diff",extensions:["diff","patch"],load(){return A(()=>import("./diff-DbItnlRl.js"),[]).then(t=>D(t.diff))}}),C.of({name:"Dockerfile",filename:/^Dockerfile$/,load(){return A(()=>import("./dockerfile-BKs6k2Af.js"),__vite__mapDeps([17,18])).then(t=>D(t.dockerFile))}}),C.of({name:"DTD",extensions:["dtd"],load(){return A(()=>import("./dtd-DF_7sFjM.js"),[]).then(t=>D(t.dtd))}}),C.of({name:"Dylan",extensions:["dylan","dyl","intr"],load(){return A(()=>import("./dylan-DwRh75JA.js"),[]).then(t=>D(t.dylan))}}),C.of({name:"EBNF",load(){return A(()=>import("./ebnf-CDyGwa7X.js"),[]).then(t=>D(t.ebnf))}}),C.of({name:"ECL",extensions:["ecl"],load(){return A(()=>import("./ecl-Cabwm37j.js"),[]).then(t=>D(t.ecl))}}),C.of({name:"edn",extensions:["edn"],load(){return A(()=>import("./clojure-BMjYHr_A.js"),[]).then(t=>D(t.clojure))}}),C.of({name:"Eiffel",extensions:["e"],load(){return A(()=>import("./eiffel-CnydiIhH.js"),[]).then(t=>D(t.eiffel))}}),C.of({name:"Elm",extensions:["elm"],load(){return A(()=>import("./elm-vLlmbW-K.js"),[]).then(t=>D(t.elm))}}),C.of({name:"Erlang",extensions:["erl"],load(){return A(()=>import("./erlang-BNw1qcRV.js"),[]).then(t=>D(t.erlang))}}),C.of({name:"Esper",load(){return A(()=>import("./sql-D0XecflT.js"),[]).then(t=>D(t.esper))}}),C.of({name:"Factor",extensions:["factor"],load(){return A(()=>import("./factor-kuTfRLto.js"),__vite__mapDeps([19,18])).then(t=>D(t.factor))}}),C.of({name:"FCL",load(){return A(()=>import("./fcl-Kvtd6kyn.js"),[]).then(t=>D(t.fcl))}}),C.of({name:"Forth",extensions:["forth","fth","4th"],load(){return A(()=>import("./forth-Ffai-XNe.js"),[]).then(t=>D(t.forth))}}),C.of({name:"Fortran",extensions:["f","for","f77","f90","f95"],load(){return A(()=>import("./fortran-DYz_wnZ1.js"),[]).then(t=>D(t.fortran))}}),C.of({name:"F#",alias:["fsharp"],extensions:["fs"],load(){return A(()=>import("./mllike-CXdrOF99.js"),[]).then(t=>D(t.fSharp))}}),C.of({name:"Gas",extensions:["s"],load(){return A(()=>import("./gas-Bneqetm1.js"),[]).then(t=>D(t.gas))}}),C.of({name:"Gherkin",extensions:["feature"],load(){return A(()=>import("./gherkin-heZmZLOM.js"),[]).then(t=>D(t.gherkin))}}),C.of({name:"Groovy",extensions:["groovy","gradle"],filename:/^Jenkinsfile$/,load(){return A(()=>import("./groovy-D9Dt4D0W.js"),[]).then(t=>D(t.groovy))}}),C.of({name:"Haskell",extensions:["hs"],load(){return A(()=>import("./haskell-Cw1EW3IL.js"),[]).then(t=>D(t.haskell))}}),C.of({name:"Haxe",extensions:["hx"],load(){return A(()=>import("./haxe-H-WmDvRZ.js"),[]).then(t=>D(t.haxe))}}),C.of({name:"HXML",extensions:["hxml"],load(){return A(()=>import("./haxe-H-WmDvRZ.js"),[]).then(t=>D(t.hxml))}}),C.of({name:"HTTP",load(){return A(()=>import("./http-DBlCnlav.js"),[]).then(t=>D(t.http))}}),C.of({name:"IDL",extensions:["pro"],load(){return A(()=>import("./idl-BEugSyMb.js"),[]).then(t=>D(t.idl))}}),C.of({name:"JSON-LD",alias:["jsonld"],extensions:["jsonld"],load(){return A(()=>import("./javascript-iXu5QeM3.js"),[]).then(t=>D(t.jsonld))}}),C.of({name:"Julia",extensions:["jl"],load(){return A(()=>import("./julia-DuME0IfC.js"),[]).then(t=>D(t.julia))}}),C.of({name:"Kotlin",extensions:["kt","kts"],load(){return A(()=>import("./clike-B9uivgTg.js"),[]).then(t=>D(t.kotlin))}}),C.of({name:"LiveScript",alias:["ls"],extensions:["ls"],load(){return A(()=>import("./livescript-BwQOo05w.js"),[]).then(t=>D(t.liveScript))}}),C.of({name:"Lua",extensions:["lua"],load(){return A(()=>import("./lua-VAEuO923.js"),[]).then(t=>D(t.lua))}}),C.of({name:"mIRC",extensions:["mrc"],load(){return A(()=>import("./mirc-CjQqDB4T.js"),[]).then(t=>D(t.mirc))}}),C.of({name:"Mathematica",extensions:["m","nb","wl","wls"],load(){return A(()=>import("./mathematica-DTrFuWx2.js"),[]).then(t=>D(t.mathematica))}}),C.of({name:"Modelica",extensions:["mo"],load(){return A(()=>import("./modelica-Dc1JOy9r.js"),[]).then(t=>D(t.modelica))}}),C.of({name:"MUMPS",extensions:["mps"],load(){return A(()=>import("./mumps-BT43cFF4.js"),[]).then(t=>D(t.mumps))}}),C.of({name:"Mbox",extensions:["mbox"],load(){return A(()=>import("./mbox-CNhZ1qSd.js"),[]).then(t=>D(t.mbox))}}),C.of({name:"Nginx",filename:/nginx.*\.conf$/i,load(){return A(()=>import("./nginx-DdIZxoE0.js"),[]).then(t=>D(t.nginx))}}),C.of({name:"NSIS",extensions:["nsh","nsi"],load(){return A(()=>import("./nsis-LdVXkNf5.js"),__vite__mapDeps([20,18])).then(t=>D(t.nsis))}}),C.of({name:"NTriples",extensions:["nt","nq"],load(){return A(()=>import("./ntriples-BfvgReVJ.js"),[]).then(t=>D(t.ntriples))}}),C.of({name:"Objective-C",alias:["objective-c","objc"],extensions:["m"],load(){return A(()=>import("./clike-B9uivgTg.js"),[]).then(t=>D(t.objectiveC))}}),C.of({name:"Objective-C++",alias:["objective-c++","objc++"],extensions:["mm"],load(){return A(()=>import("./clike-B9uivgTg.js"),[]).then(t=>D(t.objectiveCpp))}}),C.of({name:"OCaml",extensions:["ml","mli","mll","mly"],load(){return A(()=>import("./mllike-CXdrOF99.js"),[]).then(t=>D(t.oCaml))}}),C.of({name:"Octave",extensions:["m"],load(){return A(()=>import("./octave-Ck1zUtKM.js"),[]).then(t=>D(t.octave))}}),C.of({name:"Oz",extensions:["oz"],load(){return A(()=>import("./oz-BzwKVEFT.js"),[]).then(t=>D(t.oz))}}),C.of({name:"Pascal",extensions:["p","pas"],load(){return A(()=>import("./pascal--L3eBynH.js"),[]).then(t=>D(t.pascal))}}),C.of({name:"Perl",extensions:["pl","pm"],load(){return A(()=>import("./perl-CdXCOZ3F.js"),[]).then(t=>D(t.perl))}}),C.of({name:"Pig",extensions:["pig"],load(){return A(()=>import("./pig-CevX1Tat.js"),[]).then(t=>D(t.pig))}}),C.of({name:"PowerShell",extensions:["ps1","psd1","psm1"],load(){return A(()=>import("./powershell-CFHJl5sT.js"),[]).then(t=>D(t.powerShell))}}),C.of({name:"Properties files",alias:["ini","properties"],extensions:["properties","ini","in"],load(){return A(()=>import("./properties-C78fOPTZ.js"),[]).then(t=>D(t.properties))}}),C.of({name:"ProtoBuf",extensions:["proto"],load(){return A(()=>import("./protobuf-ChK-085T.js"),[]).then(t=>D(t.protobuf))}}),C.of({name:"Pug",alias:["jade"],extensions:["pug","jade"],load(){return A(()=>import("./pug-DeIclll2.js"),__vite__mapDeps([21,22])).then(t=>D(t.pug))}}),C.of({name:"Puppet",extensions:["pp"],load(){return A(()=>import("./puppet-DMA9R1ak.js"),[]).then(t=>D(t.puppet))}}),C.of({name:"Q",extensions:["q"],load(){return A(()=>import("./q-pXgVlZs6.js"),[]).then(t=>D(t.q))}}),C.of({name:"R",alias:["rscript"],extensions:["r","R"],load(){return A(()=>import("./r-B6wPVr8A.js"),[]).then(t=>D(t.r))}}),C.of({name:"RPM Changes",load(){return A(()=>import("./rpm-CTu-6PCP.js"),[]).then(t=>D(t.rpmChanges))}}),C.of({name:"RPM Spec",extensions:["spec"],load(){return A(()=>import("./rpm-CTu-6PCP.js"),[]).then(t=>D(t.rpmSpec))}}),C.of({name:"Ruby",alias:["jruby","macruby","rake","rb","rbx"],extensions:["rb"],filename:/^(Gemfile|Rakefile)$/,load(){return A(()=>import("./ruby-B2Rjki9n.js"),[]).then(t=>D(t.ruby))}}),C.of({name:"SAS",extensions:["sas"],load(){return A(()=>import("./sas-B4kiWyti.js"),[]).then(t=>D(t.sas))}}),C.of({name:"Scala",extensions:["scala"],load(){return A(()=>import("./clike-B9uivgTg.js"),[]).then(t=>D(t.scala))}}),C.of({name:"Scheme",extensions:["scm","ss"],load(){return A(()=>import("./scheme-C41bIUwD.js"),[]).then(t=>D(t.scheme))}}),C.of({name:"Shell",alias:["bash","sh","zsh"],extensions:["sh","ksh","bash"],filename:/^PKGBUILD$/,load(){return A(()=>import("./shell-CjFT_Tl9.js"),[]).then(t=>D(t.shell))}}),C.of({name:"Sieve",extensions:["siv","sieve"],load(){return A(()=>import("./sieve-C3Gn_uJK.js"),[]).then(t=>D(t.sieve))}}),C.of({name:"Smalltalk",extensions:["st"],load(){return A(()=>import("./smalltalk-CnHTOXQT.js"),[]).then(t=>D(t.smalltalk))}}),C.of({name:"Solr",load(){return A(()=>import("./solr-DehyRSwq.js"),[]).then(t=>D(t.solr))}}),C.of({name:"SML",extensions:["sml","sig","fun","smackspec"],load(){return A(()=>import("./mllike-CXdrOF99.js"),[]).then(t=>D(t.sml))}}),C.of({name:"SPARQL",alias:["sparul"],extensions:["rq","sparql"],load(){return A(()=>import("./sparql-DkYu6x3z.js"),[]).then(t=>D(t.sparql))}}),C.of({name:"Spreadsheet",alias:["excel","formula"],load(){return A(()=>import("./spreadsheet-BCZA_wO0.js"),[]).then(t=>D(t.spreadsheet))}}),C.of({name:"Squirrel",extensions:["nut"],load(){return A(()=>import("./clike-B9uivgTg.js"),[]).then(t=>D(t.squirrel))}}),C.of({name:"Stylus",extensions:["styl"],load(){return A(()=>import("./stylus-B533Al4x.js"),[]).then(t=>D(t.stylus))}}),C.of({name:"Swift",extensions:["swift"],load(){return A(()=>import("./swift-BzpIVaGY.js"),[]).then(t=>D(t.swift))}}),C.of({name:"sTeX",load(){return A(()=>import("./stex-C3f8Ysf7.js"),[]).then(t=>D(t.stex))}}),C.of({name:"LaTeX",alias:["tex"],extensions:["text","ltx","tex"],load(){return A(()=>import("./stex-C3f8Ysf7.js"),[]).then(t=>D(t.stex))}}),C.of({name:"SystemVerilog",extensions:["v","sv","svh"],load(){return A(()=>import("./verilog-C6RDOZhf.js"),[]).then(t=>D(t.verilog))}}),C.of({name:"Tcl",extensions:["tcl"],load(){return A(()=>import("./tcl-DVfN8rqt.js"),[]).then(t=>D(t.tcl))}}),C.of({name:"Textile",extensions:["textile"],load(){return A(()=>import("./textile-CnDTJFAw.js"),[]).then(t=>D(t.textile))}}),C.of({name:"TiddlyWiki",load(){return A(()=>import("./tiddlywiki-DO-Gjzrf.js"),[]).then(t=>D(t.tiddlyWiki))}}),C.of({name:"Tiki wiki",load(){return A(()=>import("./tiki-DGYXhP31.js"),[]).then(t=>D(t.tiki))}}),C.of({name:"TOML",extensions:["toml"],load(){return A(()=>import("./toml-Bm5Em-hy.js"),[]).then(t=>D(t.toml))}}),C.of({name:"Troff",extensions:["1","2","3","4","5","6","7","8","9"],load(){return A(()=>import("./troff-wAsdV37c.js"),[]).then(t=>D(t.troff))}}),C.of({name:"TTCN",extensions:["ttcn","ttcn3","ttcnpp"],load(){return A(()=>import("./ttcn-CfJYG6tj.js"),[]).then(t=>D(t.ttcn))}}),C.of({name:"TTCN_CFG",extensions:["cfg"],load(){return A(()=>import("./ttcn-cfg-B9xdYoR4.js"),[]).then(t=>D(t.ttcnCfg))}}),C.of({name:"Turtle",extensions:["ttl"],load(){return A(()=>import("./turtle-B1tBg_DP.js"),[]).then(t=>D(t.turtle))}}),C.of({name:"Web IDL",extensions:["webidl"],load(){return A(()=>import("./webidl-ZXfAyPTL.js"),[]).then(t=>D(t.webIDL))}}),C.of({name:"VB.NET",extensions:["vb"],load(){return A(()=>import("./vb-CmGdzxic.js"),[]).then(t=>D(t.vb))}}),C.of({name:"VBScript",extensions:["vbs"],load(){return A(()=>import("./vbscript-BuJXcnF6.js"),[]).then(t=>D(t.vbScript))}}),C.of({name:"Velocity",extensions:["vtl"],load(){return A(()=>import("./velocity-D8B20fx6.js"),[]).then(t=>D(t.velocity))}}),C.of({name:"Verilog",extensions:["v"],load(){return A(()=>import("./verilog-C6RDOZhf.js"),[]).then(t=>D(t.verilog))}}),C.of({name:"VHDL",extensions:["vhd","vhdl"],load(){return A(()=>import("./vhdl-lSbBsy5d.js"),[]).then(t=>D(t.vhdl))}}),C.of({name:"XQuery",extensions:["xy","xquery","xq","xqm","xqy"],load(){return A(()=>import("./xquery-DzFWVndE.js"),[]).then(t=>D(t.xQuery))}}),C.of({name:"Yacas",extensions:["ys"],load(){return A(()=>import("./yacas-BJ4BC0dw.js"),[]).then(t=>D(t.yacas))}}),C.of({name:"Z80",extensions:["z80"],load(){return A(()=>import("./z80-Hz9HOZM7.js"),[]).then(t=>D(t.z80))}}),C.of({name:"MscGen",extensions:["mscgen","mscin","msc"],load(){return A(()=>import("./mscgen-BA5vi2Kp.js"),[]).then(t=>D(t.mscgen))}}),C.of({name:"Xù",extensions:["xu"],load(){return A(()=>import("./mscgen-BA5vi2Kp.js"),[]).then(t=>D(t.xu))}}),C.of({name:"MsGenny",extensions:["msgenny"],load(){return A(()=>import("./mscgen-BA5vi2Kp.js"),[]).then(t=>D(t.msgenny))}}),C.of({name:"Vue",extensions:["vue"],load(){return A(()=>import("./index-CaQ1sOcP.js"),__vite__mapDeps([23,1,2])).then(t=>t.vue())}}),C.of({name:"Angular Template",load(){return A(()=>import("./index-2rnqZitJ.js"),__vite__mapDeps([24,1,2])).then(t=>t.angular())}})];class jl{static create(e,i,n,r,s){let o=r+(r<<8)+e+(i<<4)|0;return new jl(e,i,n,o,s,[],[])}constructor(e,i,n,r,s,o,l){this.type=e,this.value=i,this.from=n,this.hash=r,this.end=s,this.children=o,this.positions=l,this.hashProp=[[K.contextHash,r]]}addChild(e,i){e.prop(K.contextHash)!=this.hash&&(e=new se(e.type,e.children,e.positions,e.length,this.hashProp)),this.children.push(e),this.positions.push(i)}toTree(e,i=this.end){let n=this.children.length-1;return n>=0&&(i=Math.max(i,this.positions[n]+this.children[n].length+this.from)),new se(e.types[this.type],this.children,this.positions,i-this.from).balance({makeTree:(r,s,o)=>new se(ze.none,r,s,o,this.hashProp)})}}var z;(function(t){t[t.Document=1]="Document",t[t.CodeBlock=2]="CodeBlock",t[t.FencedCode=3]="FencedCode",t[t.Blockquote=4]="Blockquote",t[t.HorizontalRule=5]="HorizontalRule",t[t.BulletList=6]="BulletList",t[t.OrderedList=7]="OrderedList",t[t.ListItem=8]="ListItem",t[t.ATXHeading1=9]="ATXHeading1",t[t.ATXHeading2=10]="ATXHeading2",t[t.ATXHeading3=11]="ATXHeading3",t[t.ATXHeading4=12]="ATXHeading4",t[t.ATXHeading5=13]="ATXHeading5",t[t.ATXHeading6=14]="ATXHeading6",t[t.SetextHeading1=15]="SetextHeading1",t[t.SetextHeading2=16]="SetextHeading2",t[t.HTMLBlock=17]="HTMLBlock",t[t.LinkReference=18]="LinkReference",t[t.Paragraph=19]="Paragraph",t[t.CommentBlock=20]="CommentBlock",t[t.ProcessingInstructionBlock=21]="ProcessingInstructionBlock",t[t.Escape=22]="Escape",t[t.Entity=23]="Entity",t[t.HardBreak=24]="HardBreak",t[t.Emphasis=25]="Emphasis",t[t.StrongEmphasis=26]="StrongEmphasis",t[t.Link=27]="Link",t[t.Image=28]="Image",t[t.InlineCode=29]="InlineCode",t[t.HTMLTag=30]="HTMLTag",t[t.Comment=31]="Comment",t[t.ProcessingInstruction=32]="ProcessingInstruction",t[t.Autolink=33]="Autolink",t[t.HeaderMark=34]="HeaderMark",t[t.QuoteMark=35]="QuoteMark",t[t.ListMark=36]="ListMark",t[t.LinkMark=37]="LinkMark",t[t.EmphasisMark=38]="EmphasisMark",t[t.CodeMark=39]="CodeMark",t[t.CodeText=40]="CodeText",t[t.CodeInfo=41]="CodeInfo",t[t.LinkTitle=42]="LinkTitle",t[t.LinkLabel=43]="LinkLabel",t[t.URL=44]="URL"})(z||(z={}));class gP{constructor(e,i){this.start=e,this.content=i,this.marks=[],this.parsers=[]}}class bP{constructor(){this.text="",this.baseIndent=0,this.basePos=0,this.depth=0,this.markers=[],this.pos=0,this.indent=0,this.next=-1}forward(){this.basePos>this.pos&&this.forwardInner()}forwardInner(){let e=this.skipSpace(this.basePos);this.indent=this.countIndent(e,this.pos,this.indent),this.pos=e,this.next=e==this.text.length?-1:this.text.charCodeAt(e)}skipSpace(e){return ps(this.text,e)}reset(e){for(this.text=e,this.baseIndent=this.basePos=this.pos=this.indent=0,this.forwardInner(),this.depth=1;this.markers.length;)this.markers.pop()}moveBase(e){this.basePos=e,this.baseIndent=this.countIndent(e,this.pos,this.indent)}moveBaseColumn(e){this.baseIndent=e,this.basePos=this.findColumn(e)}addMarker(e){this.markers.push(e)}countIndent(e,i=0,n=0){for(let r=i;r=e.stack[i.depth+1].value+i.baseIndent)return!0;if(i.indent>=i.baseIndent+4)return!1;let n=(t.type==z.OrderedList?Sh:kh)(i,e,!1);return n>0&&(t.type!=z.BulletList||xh(i,e,!1)<0)&&i.text.charCodeAt(i.pos+n-1)==t.value}const D1={[z.Blockquote](t,e,i){return i.next!=62?!1:(i.markers.push(he(z.QuoteMark,e.lineStart+i.pos,e.lineStart+i.pos+1)),i.moveBase(i.pos+(Gt(i.text.charCodeAt(i.pos+1))?2:1)),t.end=e.lineStart+i.text.length,!0)},[z.ListItem](t,e,i){return i.indent-1?!1:(i.moveBaseColumn(i.baseIndent+t.value),!0)},[z.OrderedList]:V0,[z.BulletList]:V0,[z.Document](){return!0}};function Gt(t){return t==32||t==9||t==10||t==13}function ps(t,e=0){for(;ei&&Gt(t.charCodeAt(e-1));)e--;return e}function L1(t){if(t.next!=96&&t.next!=126)return-1;let e=t.pos+1;for(;e-1&&t.depth==e.stack.length&&e.parser.leafBlockParsers.indexOf(B1.SetextHeading)>-1||n<3?-1:1}function Z1(t,e){for(let i=t.stack.length-1;i>=0;i--)if(t.stack[i].type==e)return!0;return!1}function kh(t,e,i){return(t.next==45||t.next==43||t.next==42)&&(t.pos==t.text.length-1||Gt(t.text.charCodeAt(t.pos+1)))&&(!i||Z1(e,z.BulletList)||t.skipSpace(t.pos+2)=48&&r<=57;){n++;if(n==t.text.length)return-1;r=t.text.charCodeAt(n)}return n==t.pos||n>t.pos+9||r!=46&&r!=41||nt.pos+1||t.next!=49)?-1:n+1-t.pos}function I1(t){if(t.next!=35)return-1;let e=t.pos+1;for(;e6?-1:i}function X1(t){if(t.next!=45&&t.next!=61||t.indent>=t.baseIndent+4)return-1;let e=t.pos+1;for(;e/,j1=/\?>/,pc=[[/^<(?:script|pre|style)(?:\s|>|$)/i,/<\/(?:script|pre|style)>/i],[/^\s*/i.exec(n);if(s)return t.append(he(z.Comment,i,i+1+s[0].length));let o=/^\?[^]*?\?>/.exec(n);if(o)return t.append(he(z.ProcessingInstruction,i,i+1+o[0].length));let l=/^(?:![A-Z][^]*?>|!\[CDATA\[[^]*?\]\]>|\/\s*[a-zA-Z][\w-]*\s*>|\s*[a-zA-Z][\w-]*(\s+[a-zA-Z:_][\w-.:]*(?:\s*=\s*(?:[^\s"'=<>`]+|'[^']*'|"[^"]*"))?)*\s*(\/\s*)?>)/.exec(n);return l?t.append(he(z.HTMLTag,i,i+1+l[0].length)):-1},Emphasis(t,e,i){if(e!=95&&e!=42)return-1;let n=i+1;for(;t.char(n)==e;)n++;let r=t.slice(i-1,i),s=t.slice(n,n+1),o=Fs.test(r),l=Fs.test(s),a=/\s|^$/.test(r),u=/\s|^$/.test(s),c=!u&&(!l||a||o),h=!a&&(!o||u||l),f=c&&(e==42||!h||o),d=h&&(e==42||!c||l);return t.append(new At(e==95?N1:G1,i,n,(f?1:0)|(d?2:0)))},HardBreak(t,e,i){if(e==92&&t.char(i+1)==10)return t.append(he(z.HardBreak,i,i+2));if(e==32){let n=i+1;for(;t.char(n)==32;)n++;if(t.char(n)==10&&n>=i+2)return t.append(he(z.HardBreak,i,n+1))}return-1},Link(t,e,i){return e==91?t.append(new At(xn,i,i+1,1)):-1},Image(t,e,i){return e==33&&t.char(i+1)==91?t.append(new At(Fl,i,i+2,1)):-1},LinkEnd(t,e,i){if(e!=93)return-1;for(let n=t.parts.length-1;n>=0;n--){let r=t.parts[n];if(r instanceof At&&(r.type==xn||r.type==Fl)){if(!r.side||t.skipSpace(r.to)==i&&!/[(\[]/.test(t.slice(i+1,i+2)))return t.parts[n]=null,-1;let s=t.takeContent(n),o=t.parts[n]=wP(t,s,r.type==xn?z.Link:z.Image,r.from,i+1);if(r.type==xn)for(let l=0;le?he(z.URL,e+i,s+i):s==t.length?null:!1}}function H1(t,e,i){let n=t.charCodeAt(e);if(n!=39&&n!=34&&n!=40)return!1;let r=n==40?41:n;for(let s=e+1,o=!1;s=this.end?-1:this.text.charCodeAt(e-this.offset)}get end(){return this.offset+this.text.length}slice(e,i){return this.text.slice(e-this.offset,i-this.offset)}append(e){return this.parts.push(e),e.to}addDelimiter(e,i,n,r,s){return this.append(new At(e,i,n,(r?1:0)|(s?2:0)))}get hasOpenLink(){for(let e=this.parts.length-1;e>=0;e--){let i=this.parts[e];if(i instanceof At&&(i.type==xn||i.type==Fl))return!0}return!1}addElement(e){return this.append(e)}resolveMarkers(e){for(let n=e;n=e;a--){let m=this.parts[a];if(m instanceof At&&m.side&1&&m.type==r.type&&!(s&&(r.side&1||m.side&2)&&(m.to-m.from+o)%3==0&&((m.to-m.from)%3||o%3))){l=m;break}}if(!l)continue;let u=r.type.resolve,c=[],h=l.from,f=r.to;if(s){let m=Math.min(2,l.to-l.from,o);h=l.to-m,f=r.from+m,u=m==1?"Emphasis":"StrongEmphasis"}l.type.mark&&c.push(this.elt(l.type.mark,h,l.to));for(let m=a+1;m=0;i--){let n=this.parts[i];if(n instanceof At&&n.type==e&&n.side&1)return i}return null}takeContent(e){let i=this.resolveMarkers(e);return this.parts.length=e,i}getDelimiterAt(e){let i=this.parts[e];return i instanceof At?i:null}skipSpace(e){return ps(this.text,e-this.offset)+this.offset}elt(e,i,n,r){return typeof e=="string"?he(this.parser.getNodeType(e),i,n,r):new Y1(e,i)}}wh.linkStart=xn;wh.imageStart=Fl;function Oc(t,e){if(!e.length)return t;if(!t.length)return e;let i=t.slice(),n=0;for(let r of e){for(;n(e?e-1:0))return!1;if(this.fragmentEnd<0){let s=this.fragment.to;for(;s>0&&this.input.read(s-1,s)!=` +`;)s--;this.fragmentEnd=s?s-1:0}let n=this.cursor;n||(n=this.cursor=this.fragment.tree.cursor(),n.firstChild());let r=e+this.fragment.offset;for(;n.to<=r;)if(!n.parent())return!1;for(;;){if(n.from>=r)return this.fragment.from<=i;if(!n.childAfter(r))return!1}}matches(e){let i=this.cursor.tree;return i&&i.prop(K.contextHash)==e}takeNodes(e){let i=this.cursor,n=this.fragment.offset,r=this.fragmentEnd-(this.fragment.openEnd?1:0),s=e.absoluteLineStart,o=s,l=e.block.children.length,a=o,u=l;for(;;){if(i.to-n>r){if(i.type.isAnonymous&&i.firstChild())continue;break}let c=J1(i.from-n,e.ranges);if(i.to-n<=e.ranges[e.rangeI].to)e.addNode(i.tree,c);else{let h=new se(e.parser.nodeSet.types[z.Paragraph],[],[],0,e.block.hashProp);e.reusePlaceholders.set(h,i.tree),e.addNode(h,c)}if(i.type.is("Block")&&($P.indexOf(i.type.id)<0?(o=i.to-n,l=e.block.children.length):(o=a,l=u),a=i.to-n,u=e.block.children.length),!i.nextSibling())break}for(;e.block.children.length>l;)e.block.children.pop(),e.block.positions.pop();return o-s}};function J1(t,e){let i=t;for(let n=1;nFo[t]),Object.keys(Fo).map(t=>B1[t]),Object.keys(Fo),xP,D1,Object.keys(Ha).map(t=>Ha[t]),Object.keys(Ha),[]);function CP(t,e,i){let n=[];for(let r=t.firstChild,s=e;;r=r.nextSibling){let o=r?r.from:i;if(o>s&&n.push({from:s,to:o}),!r)break;s=r.to}return n}function TP(t){let{codeParser:e,htmlParser:i}=t;return{wrap:wg((r,s)=>{let o=r.type.id;if(e&&(o==z.CodeBlock||o==z.FencedCode)){let l="";if(o==z.FencedCode){let u=r.node.getChild(z.CodeInfo);u&&(l=s.read(u.from,u.to))}let a=e(l);if(a)return{parser:a,overlay:u=>u.type.id==z.CodeText,bracketed:o==z.FencedCode}}else if(i&&(o==z.HTMLBlock||o==z.HTMLTag||o==z.CommentBlock))return{parser:i,overlay:CP(r.node,r.from,r.to)};return null})}}const AP={resolve:"Strikethrough",mark:"StrikethroughMark"},EP={defineNodes:[{name:"Strikethrough",style:{"Strikethrough/...":k.strikethrough}},{name:"StrikethroughMark",style:k.processingInstruction}],parseInline:[{name:"Strikethrough",parse(t,e,i){if(e!=126||t.char(i+1)!=126||t.char(i+2)==126)return-1;let n=t.slice(i-1,i),r=t.slice(i+2,i+3),s=/\s|^$/.test(n),o=/\s|^$/.test(r),l=Fs.test(n),a=Fs.test(r);return t.addDelimiter(AP,i,i+2,!o&&(!a||s||l),!s&&(!l||o||a))},after:"Emphasis"}]};function ms(t,e,i=0,n,r=0){let s=0,o=!0,l=-1,a=-1,u=!1,c=()=>{n.push(t.elt("TableCell",r+l,r+a,t.parser.parseInline(e.slice(l,a),r+l)))};for(let h=i;h-1)&&s++,o=!1,n&&(l>-1&&c(),n.push(t.elt("TableDelimiter",h+r,h+r+1))),l=a=-1):(u||f!=32&&f!=9)&&(l<0&&(l=h),a=h+1),u=!u&&f==92}return l>-1&&(s++,n&&c()),s}function N0(t,e){for(let i=e;i\s]*\|?(\s*:?-+:?\s*\|)+(\s*:?-+:?\s*)?$/;class G0{constructor(){this.rows=null}nextLine(e,i,n){if(this.rows==null){this.rows=!1;let r;if((i.next==45||i.next==58||i.next==124)&&eb.test(r=i.text.slice(i.pos))){let s=[];ms(e,n.content,0,s,n.start)==ms(e,r,0)&&(this.rows=[e.elt("TableHeader",n.start,n.start+n.content.length,s),e.elt("TableDelimiter",e.lineStart+i.pos,e.lineStart+i.text.length)])}}else if(this.rows){let r=[];ms(e,i.text,i.pos,r,e.lineStart),this.rows.push(e.elt("TableRow",e.lineStart+i.pos,e.lineStart+i.text.length,r))}return!1}finish(e,i){return this.rows?(e.addLeafElement(i,e.elt("Table",i.start,i.start+i.content.length,this.rows)),!0):!1}}const RP={defineNodes:[{name:"Table",block:!0},{name:"TableHeader",style:{"TableHeader/...":k.heading}},"TableRow",{name:"TableCell",style:k.content},{name:"TableDelimiter",style:k.processingInstruction}],parseBlock:[{name:"Table",leaf(t,e){return N0(e.content,0)?new G0:null},endLeaf(t,e,i){if(i.parsers.some(r=>r instanceof G0)||!N0(e.text,e.basePos))return!1;let n=t.peekLine();return eb.test(n)&&ms(t,e.text,e.basePos)==ms(t,n,e.basePos)},before:"SetextHeading"}]};class DP{nextLine(){return!1}finish(e,i){return e.addLeafElement(i,e.elt("Task",i.start,i.start+i.content.length,[e.elt("TaskMarker",i.start,i.start+3),...e.parser.parseInline(i.content.slice(3),i.start+3)])),!0}}const LP={defineNodes:[{name:"Task",block:!0,style:k.list},{name:"TaskMarker",style:k.atom}],parseBlock:[{name:"TaskList",leaf(t,e){return/^\[[ xX]\][ \t]/.test(e.content)&&t.parentType().name=="ListItem"?new DP:null},after:"SetextHeading"}]},U0=/(www\.)|(https?:\/\/)|([\w.+-]{1,100}@)|(mailto:|xmpp:)/gy,H0=/[\w-]+(\.[\w-]+)+(:\d+)?(\/[^\s<]*)?/gy,MP=/[\w-]+\.[\w-]+($|[/:])/,K0=/[\w.+-]+@[\w-]+(\.[\w.-]+)+/gy,J0=/\/[a-zA-Z\d@.]+/gy;function ep(t,e,i,n){let r=0;for(let s=e;s-1)return-1;let n=e+i[0].length;for(;;){let r=t[n-1],s;if(/[?!.,:*_~]/.test(r)||r==")"&&ep(t,e,n,")")>ep(t,e,n,"("))n--;else if(r==";"&&(s=/&(?:#\d+|#x[a-f\d]+|\w+);$/.exec(t.slice(e,n))))n=e+s.index;else break}return n}function tp(t,e){K0.lastIndex=e;let i=K0.exec(t);if(!i)return-1;let n=i[0][i[0].length-1];return n=="_"||n=="-"?-1:e+i[0].length-(n=="."?1:0)}const IP={parseInline:[{name:"Autolink",parse(t,e,i){let n=i-t.offset;if(n&&/\w/.test(t.text[n-1]))return-1;U0.lastIndex=n;let r=U0.exec(t.text),s=-1;if(!r)return-1;if(r[1]||r[2]){if(s=ZP(t.text,n+r[0].length),s>-1&&t.hasOpenLink){let o=/([^\[\]]|\[[^\]]*\])*/.exec(t.text.slice(n,s));s=n+o[0].length}}else r[3]?s=tp(t.text,n):(s=tp(t.text,n+r[0].length),s>-1&&r[0]=="xmpp:"&&(J0.lastIndex=s,r=J0.exec(t.text),r&&(s=r.index+r[0].length)));return s<0?-1:(t.addElement(t.elt("URL",i,s+t.offset)),s+t.offset)}}]},XP=[RP,LP,EP,IP];function tb(t,e,i){return(n,r,s)=>{if(r!=t||n.char(s+1)==t)return-1;let o=[n.elt(i,s,s+1)];for(let l=s+1;li%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,i,n=0){let r=e.parser.context;return new Bl(e,[],i,n,n,0,[],0,r?new np(r,r.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,i){this.stack.push(this.state,i,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var i;let n=e>>19,r=e&65535,{parser:s}=this.p,o=this.reducePos=2e3&&!(!((i=this.p.parser.nodeSet.types[r])===null||i===void 0)&&i.isAnonymous)&&(u==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=c):this.p.lastBigReductionSizea;)this.stack.pop();this.reduceContext(r,u)}storeNode(e,i,n,r=4,s=!1){if(e==0&&(!this.stack.length||this.stack[this.stack.length-1]0&&this.buffer[o-4]==0&&this.buffer[o-1]>-1){if(i==n)return;if(this.buffer[o-2]>=i){this.buffer[o-2]=n;return}}}if(!s||this.pos==n)this.buffer.push(e,i,n,r);else{let o=this.buffer.length;if(o>0&&(this.buffer[o-4]!=0||this.buffer[o-1]<0)){let l=!1;for(let a=o;a>0&&this.buffer[a-2]>n;a-=4)if(this.buffer[a-1]>=0){l=!0;break}if(l)for(;o>0&&this.buffer[o-2]>n;)this.buffer[o]=this.buffer[o-4],this.buffer[o+1]=this.buffer[o-3],this.buffer[o+2]=this.buffer[o-2],this.buffer[o+3]=this.buffer[o-1],o-=4,r>4&&(r-=4)}this.buffer[o]=e,this.buffer[o+1]=i,this.buffer[o+2]=n,this.buffer[o+3]=r}}shift(e,i,n,r){if(e&131072)this.pushState(e&65535,this.pos);else if((e&262144)==0){let s=e,{parser:o}=this.p;this.pos=r;let l=o.stateFlag(s,1);!l&&(r>n||i<=o.maxNode)&&(this.reducePos=r),this.pushState(s,l?n:Math.min(n,this.reducePos)),this.shiftContext(i,n),i<=o.maxNode&&this.buffer.push(i,n,r,4)}else this.pos=r,this.shiftContext(i,n),i<=this.p.parser.maxNode&&this.buffer.push(i,n,r,4)}apply(e,i,n,r){e&65536?this.reduce(e):this.shift(e,i,n,r)}useNode(e,i){let n=this.p.reused.length-1;(n<0||this.p.reused[n]!=e)&&(this.p.reused.push(e),n++);let r=this.pos;this.reducePos=this.pos=r+e.length,this.pushState(i,r),this.buffer.push(n,r,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,i=e.buffer.length;for(i&&e.buffer[i-4]==0&&(i-=4);i>0&&e.buffer[i-2]>e.reducePos;)i-=4;let n=e.buffer.slice(i),r=e.bufferBase+i;for(;e&&r==e.bufferBase;)e=e.parent;return new Bl(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,n,r,this.curContext,this.lookAhead,e)}recoverByDelete(e,i){let n=e<=this.p.parser.maxNode;n&&this.storeNode(e,this.pos,i,4),this.storeNode(0,this.pos,i,n?8:4),this.pos=this.reducePos=i,this.score-=190}canShift(e){for(let i=new BP(this);;){let n=this.p.parser.stateSlot(i.state,4)||this.p.parser.hasAction(i.state,e);if(n==0)return!1;if((n&65536)==0)return!0;i.reduce(n)}}recoverByInsert(e){if(this.stack.length>=300)return[];let i=this.p.parser.nextStates(this.state);if(i.length>8||this.stack.length>=120){let r=[];for(let s=0,o;sa&1&&l==o)||r.push(i[s],o)}i=r}let n=[];for(let r=0;r>19,r=i&65535,s=this.stack.length-n*3;if(s<0||e.getGoto(this.stack[s],r,!1)<0){let o=this.findForcedReduction();if(o==null)return!1;i=o}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(i),!0}findForcedReduction(){let{parser:e}=this.p,i=[],n=(r,s)=>{if(!i.includes(r))return i.push(r),e.allActions(r,o=>{if(!(o&393216))if(o&65536){let l=(o>>19)-s;if(l>1){let a=o&65535,u=this.stack.length-l*3;if(u>=0&&e.getGoto(this.stack[u],a,!1)>=0)return l<<19|65536|a}}else{let l=n(o,s+1);if(l!=null)return l}})};return n(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:e}=this.p;return e.data[e.stateSlot(this.state,1)]==65535&&!e.stateSlot(this.state,4)}restart(){this.storeNode(0,this.pos,this.pos,4,!0),this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let i=0;i0&&this.emitLookAhead()}}class np{constructor(e,i){this.tracker=e,this.context=i,this.hash=e.strict?e.hash(i):0}}class BP{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){let i=e&65535,n=e>>19;n==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(n-1)*3;let r=this.start.p.parser.getGoto(this.stack[this.base-3],i,!0);this.state=r}}class Vl{constructor(e,i,n){this.stack=e,this.pos=i,this.index=n,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,i=e.bufferBase+e.buffer.length){return new Vl(e,i,i-e.bufferBase)}maybeNext(){let e=this.stack.parent;e!=null&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new Vl(this.stack,this.pos,this.index)}}function ts(t,e=Uint16Array){if(typeof t!="string")return t;let i=null;for(let n=0,r=0;n=92&&o--,o>=34&&o--;let a=o-32;if(a>=46&&(a-=46,l=!0),s+=a,l)break;s*=46}i?i[r++]=s:i=new e(s)}return i}class ll{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const rp=new ll;class VP{constructor(e,i){this.input=e,this.ranges=i,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=rp,this.rangeIndex=0,this.pos=this.chunkPos=i[0].from,this.range=i[0],this.end=i[i.length-1].to,this.readNext()}resolveOffset(e,i){let n=this.range,r=this.rangeIndex,s=this.pos+e;for(;sn.to:s>=n.to;){if(r==this.ranges.length-1)return null;let o=this.ranges[++r];s+=o.from-n.to,n=o}return s}clipPos(e){if(e>=this.range.from&&ee)return Math.max(e,i.from);return this.end}peek(e){let i=this.chunkOff+e,n,r;if(i>=0&&i=this.chunk2Pos&&nl.to&&(this.chunk2=this.chunk2.slice(0,l.to-n)),r=this.chunk2.charCodeAt(0)}}return n>=this.token.lookAhead&&(this.token.lookAhead=n+1),r}acceptToken(e,i=0){let n=i?this.resolveOffset(i,-1):this.pos;if(n==null||n=this.chunk2Pos&&this.posthis.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(e,i){if(i?(this.token=i,i.start=e,i.lookAhead=e+1,i.value=i.extended=-1):this.token=rp,this.pos!=e){if(this.pos=e,e==this.end)return this.setDone(),this;for(;e=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e=this.chunkPos&&i<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,i-this.chunkPos);if(e>=this.chunk2Pos&&i<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,i-this.chunk2Pos);if(e>=this.range.from&&i<=this.range.to)return this.input.read(e,i);let n="";for(let r of this.ranges){if(r.from>=i)break;r.to>e&&(n+=this.input.read(Math.max(r.from,e),Math.min(r.to,i)))}return n}}class lr{constructor(e,i){this.data=e,this.id=i}token(e,i){let{parser:n}=i.p;ib(this.data,e,i,this.id,n.data,n.tokenPrecTable)}}lr.prototype.contextual=lr.prototype.fallback=lr.prototype.extend=!1;class ql{constructor(e,i,n){this.precTable=i,this.elseToken=n,this.data=typeof e=="string"?ts(e):e}token(e,i){let n=e.pos,r=0;for(;;){let s=e.next<0,o=e.resolveOffset(1,1);if(ib(this.data,e,i,0,this.data,this.precTable),e.token.value>-1)break;if(this.elseToken==null)return;if(s||r++,o==null)break;e.reset(o,e.token)}r&&(e.reset(n,e.token),e.acceptToken(this.elseToken,r))}}ql.prototype.contextual=lr.prototype.fallback=lr.prototype.extend=!1;class Zt{constructor(e,i={}){this.token=e,this.contextual=!!i.contextual,this.fallback=!!i.fallback,this.extend=!!i.extend}}function ib(t,e,i,n,r,s){let o=0,l=1<0){let p=t[d];if(a.allows(p)&&(e.token.value==-1||e.token.value==p||qP(p,e.token.value,r,s))){e.acceptToken(p);break}}let c=e.next,h=0,f=t[o+2];if(e.next<0&&f>h&&t[u+f*3-3]==65535){o=t[u+f*3-1];continue e}for(;h>1,p=u+d+(d<<1),m=t[p],O=t[p+1]||65536;if(c=O)h=d+1;else{o=t[p+2],e.advance();continue e}}break}}function sp(t,e,i){for(let n=e,r;(r=t[n])!=65535;n++)if(r==i)return n-e;return-1}function qP(t,e,i,n){let r=sp(i,n,e);return r<0||sp(i,n,t)e)&&!n.type.isError)return i<0?Math.max(0,Math.min(n.to-1,e-25)):Math.min(t.length,Math.max(n.from+1,e+25));if(i<0?n.prevSibling():n.nextSibling())break;if(!n.parent())return i<0?0:t.length}}class WP{constructor(e,i){this.fragments=e,this.nodeSet=i,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?op(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?op(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(ee)return this.nextStart=o,null;if(s instanceof se){if(o==e){if(o=Math.max(this.safeFrom,e)&&(this.trees.push(s),this.start.push(o),this.index.push(0))}else this.index[i]++,this.nextStart=o+s.length}}}class YP{constructor(e,i){this.stream=i,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(n=>new ll)}getActions(e){let i=0,n=null,{parser:r}=e.p,{tokenizers:s}=r,o=r.stateSlot(e.state,3),l=e.curContext?e.curContext.hash:0,a=0;for(let u=0;uh.end+25&&(a=Math.max(h.lookAhead,a)),h.value!=0)){let f=i;if(h.extended>-1&&(i=this.addActions(e,h.extended,h.end,i)),i=this.addActions(e,h.value,h.end,i),!c.extend&&(n=h,i>f))break}}for(;this.actions.length>i;)this.actions.pop();return a&&e.setLookAhead(a),!n&&e.pos==this.stream.end&&(n=new ll,n.value=e.p.parser.eofTerm,n.start=n.end=e.pos,i=this.addActions(e,n.value,n.end,i)),this.mainToken=n,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let i=new ll,{pos:n,p:r}=e;return i.start=n,i.end=Math.min(n+1,r.stream.end),i.value=n==r.stream.end?r.parser.eofTerm:0,i}updateCachedToken(e,i,n){let r=this.stream.clipPos(n.pos);if(i.token(this.stream.reset(r,e),n),e.value>-1){let{parser:s}=n.p;for(let o=0;o=0&&n.p.parser.dialect.allows(l>>1)){(l&1)==0?e.value=l>>1:e.extended=l>>1;break}}}else e.value=0,e.end=this.stream.clipPos(r+1)}putAction(e,i,n,r){for(let s=0;se.bufferLength*4?new WP(n,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,i=this.minStackPos,n=this.stacks=[],r,s;if(this.bigReductionCount>300&&e.length==1){let[o]=e;for(;o.forceReduce()&&o.stack.length&&o.stack[o.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let o=0;oi)n.push(l);else{if(this.advanceStack(l,n,e))continue;{r||(r=[],s=[]),r.push(l);let a=this.tokens.getMainToken(l);s.push(a.value,a.end)}}break}}if(!n.length){let o=r&&UP(r);if(o)return kt&&console.log("Finish with "+this.stackID(o)),this.stackToTree(o);if(this.parser.strict)throw kt&&r&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+i);this.recovering||(this.recovering=5)}if(this.recovering&&r){let o=this.stoppedAt!=null&&r[0].pos>this.stoppedAt?r[0]:this.runRecovery(r,s,n);if(o)return kt&&console.log("Force-finish "+this.stackID(o)),this.stackToTree(o.forceAll())}if(this.recovering){let o=this.recovering==1?1:this.recovering*3;if(n.length>o)for(n.sort((l,a)=>a.score-l.score);n.length>o;)n.pop();n.some(l=>l.reducePos>i)&&this.recovering--}else if(n.length>1){e:for(let o=0;o500&&u.buffer.length>500)if((l.score-u.score||l.buffer.length-u.buffer.length)>0)n.splice(a--,1);else{n.splice(o--,1);continue e}}}n.length>12&&(n.sort((o,l)=>l.score-o.score),n.splice(12,n.length-12))}this.minStackPos=n[0].pos;for(let o=1;o ":"";if(this.stoppedAt!=null&&r>this.stoppedAt)return e.forceReduce()?e:null;if(this.fragments){let u=e.curContext&&e.curContext.tracker.strict,c=u?e.curContext.hash:0;for(let h=this.fragments.nodeAt(r);h;){let f=this.parser.nodeSet.types[h.type.id]==h.type?s.getGoto(e.state,h.type.id):-1;if(f>-1&&h.length&&(!u||(h.prop(K.contextHash)||0)==c))return e.useNode(h,f),kt&&console.log(o+this.stackID(e)+` (via reuse of ${s.getName(h.type.id)})`),!0;if(!(h instanceof se)||h.children.length==0||h.positions[0]>0)break;let d=h.children[0];if(d instanceof se&&h.positions[0]==0)h=d;else break}}let l=s.stateSlot(e.state,4);if(l>0)return e.reduce(l),kt&&console.log(o+this.stackID(e)+` (via always-reduce ${s.getName(l&65535)})`),!0;if(e.stack.length>=8400)for(;e.stack.length>6e3&&e.forceReduce(););let a=this.tokens.getActions(e);for(let u=0;ur?i.push(p):n.push(p)}return!1}advanceFully(e,i){let n=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>n)return lp(e,i),!0}}runRecovery(e,i,n){let r=null,s=!1;for(let o=0;o ":"";if(l.deadEnd&&(s||(s=!0,l.restart(),kt&&console.log(c+this.stackID(l)+" (restarted)"),this.advanceFully(l,n))))continue;let h=l.split(),f=c;for(let d=0;d<10&&h.forceReduce()&&(kt&&console.log(f+this.stackID(h)+" (via force-reduce)"),!this.advanceFully(h,n));d++)kt&&(f=this.stackID(h)+" -> ");for(let d of l.recoverByInsert(a))kt&&console.log(c+this.stackID(d)+" (via recover-insert)"),this.advanceFully(d,n);this.stream.end>l.pos?(u==l.pos&&(u++,a=0),l.recoverByDelete(a,u),kt&&console.log(c+this.stackID(l)+` (via recover-delete ${this.parser.getName(a)})`),lp(l,n)):(!r||r.scoret;class nb{constructor(e){this.start=e.start,this.shift=e.shift||Ja,this.reduce=e.reduce||Ja,this.reuse=e.reuse||Ja,this.hash=e.hash||(()=>0),this.strict=e.strict!==!1}}class Pr extends ua{constructor(e){if(super(),this.wrappers=[],e.version!=14)throw new RangeError(`Parser version (${e.version}) doesn't match runtime version (14)`);let i=e.nodeNames.split(" ");this.minRepeatTerm=i.length;for(let l=0;le.topRules[l][1]),r=[];for(let l=0;l=0)s(c,a,l[u++]);else{let h=l[u+-c];for(let f=-c;f>0;f--)s(l[u++],a,h);u++}}}this.nodeSet=new Rr(i.map((l,a)=>ze.define({name:a>=this.minRepeatTerm?void 0:l,id:a,props:r[a],top:n.indexOf(a)>-1,error:a==0,skipped:e.skippedNodes&&e.skippedNodes.indexOf(a)>-1}))),e.propSources&&(this.nodeSet=this.nodeSet.extend(...e.propSources)),this.strict=!1,this.bufferLength=vg;let o=ts(e.tokenData);this.context=e.context,this.specializerSpecs=e.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let l=0;ltypeof l=="number"?new lr(o,l):l),this.topRules=e.topRules,this.dialects=e.dialects||{},this.dynamicPrecedences=e.dynamicPrecedences||null,this.tokenPrecTable=e.tokenPrec,this.termNames=e.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,i,n){let r=new NP(this,e,i,n);for(let s of this.wrappers)r=s(r,e,i,n);return r}getGoto(e,i,n=!1){let r=this.goto;if(i>=r[0])return-1;for(let s=r[i+1];;){let o=r[s++],l=o&1,a=r[s++];if(l&&n)return a;for(let u=s+(o>>1);s0}validAction(e,i){return!!this.allActions(e,n=>n==i?!0:null)}allActions(e,i){let n=this.stateSlot(e,4),r=n?i(n):void 0;for(let s=this.stateSlot(e,1);r==null;s+=3){if(this.data[s]==65535)if(this.data[s+1]==1)s=Ti(this.data,s+2);else break;r=i(Ti(this.data,s+1))}return r}nextStates(e){let i=[];for(let n=this.stateSlot(e,1);;n+=3){if(this.data[n]==65535)if(this.data[n+1]==1)n=Ti(this.data,n+2);else break;if((this.data[n+2]&1)==0){let r=this.data[n+1];i.some((s,o)=>o&1&&s==r)||i.push(this.data[n],r)}}return i}configure(e){let i=Object.assign(Object.create(Pr.prototype),this);if(e.props&&(i.nodeSet=this.nodeSet.extend(...e.props)),e.top){let n=this.topRules[e.top];if(!n)throw new RangeError(`Invalid top rule name ${e.top}`);i.top=n}return e.tokenizers&&(i.tokenizers=this.tokenizers.map(n=>{let r=e.tokenizers.find(s=>s.from==n);return r?r.to:n})),e.specializers&&(i.specializers=this.specializers.slice(),i.specializerSpecs=this.specializerSpecs.map((n,r)=>{let s=e.specializers.find(l=>l.from==n.external);if(!s)return n;let o=Object.assign(Object.assign({},n),{external:s.to});return i.specializers[r]=ap(o),o})),e.contextTracker&&(i.context=e.contextTracker),e.dialect&&(i.dialect=this.parseDialect(e.dialect)),e.strict!=null&&(i.strict=e.strict),e.wrap&&(i.wrappers=i.wrappers.concat(e.wrap)),e.bufferLength!=null&&(i.bufferLength=e.bufferLength),i}hasWrappers(){return this.wrappers.length>0}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){let i=this.dynamicPrecedences;return i==null?0:i[e]||0}parseDialect(e){let i=Object.keys(this.dialects),n=i.map(()=>!1);if(e)for(let s of e.split(" ")){let o=i.indexOf(s);o>=0&&(n[o]=!0)}let r=null;for(let s=0;sn)&&i.p.parser.stateFlag(i.state,2)&&(!e||e.scoret.external(i,n)<<1|e}return t.get}const HP=55,KP=1,JP=56,eC=2,tC=57,iC=3,up=4,nC=5,$h=6,rb=7,sb=8,ob=9,lb=10,rC=11,sC=12,oC=13,eu=58,lC=14,aC=15,cp=59,ab=21,uC=23,ub=24,cC=25,gc=27,cb=28,hC=29,fC=32,dC=35,pC=37,mC=38,OC=0,gC=1,bC={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},vC={dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},hp={dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}};function yC(t){return t==45||t==46||t==58||t>=65&&t<=90||t==95||t>=97&&t<=122||t>=161}let fp=null,dp=null,pp=0;function bc(t,e){let i=t.pos+e;if(pp==i&&dp==t)return fp;let n=t.peek(e),r="";for(;yC(n);)r+=String.fromCharCode(n),n=t.peek(++e);return dp=t,pp=i,fp=r?r.toLowerCase():n==xC||n==kC?void 0:null}const hb=60,Wl=62,Qh=47,xC=63,kC=33,SC=45;function mp(t,e){this.name=t,this.parent=e}const wC=[$h,lb,rb,sb,ob],$C=new nb({start:null,shift(t,e,i,n){return wC.indexOf(e)>-1?new mp(bc(n,1)||"",t):t},reduce(t,e){return e==ab&&t?t.parent:t},reuse(t,e,i,n){let r=e.type.id;return r==$h||r==pC?new mp(bc(n,1)||"",t):t},strict:!1}),QC=new Zt((t,e)=>{if(t.next!=hb){t.next<0&&e.context&&t.acceptToken(eu);return}t.advance();let i=t.next==Qh;i&&t.advance();let n=bc(t,0);if(n===void 0)return;if(!n)return t.acceptToken(i?aC:lC);let r=e.context?e.context.name:null;if(i){if(n==r)return t.acceptToken(rC);if(r&&vC[r])return t.acceptToken(eu,-2);if(e.dialectEnabled(OC))return t.acceptToken(sC);for(let s=e.context;s;s=s.parent)if(s.name==n)return;t.acceptToken(oC)}else{if(n=="script")return t.acceptToken(rb);if(n=="style")return t.acceptToken(sb);if(n=="textarea")return t.acceptToken(ob);if(bC.hasOwnProperty(n))return t.acceptToken(lb);r&&hp[r]&&hp[r][n]?t.acceptToken(eu,-1):t.acceptToken($h)}},{contextual:!0}),_C=new Zt(t=>{for(let e=0,i=0;;i++){if(t.next<0){i&&t.acceptToken(cp);break}if(t.next==SC)e++;else if(t.next==Wl&&e>=2){i>=3&&t.acceptToken(cp,-2);break}else e=0;t.advance()}});function PC(t){for(;t;t=t.parent)if(t.name=="svg"||t.name=="math")return!0;return!1}const CC=new Zt((t,e)=>{if(t.next==Qh&&t.peek(1)==Wl){let i=e.dialectEnabled(gC)||PC(e.context);t.acceptToken(i?nC:up,2)}else t.next==Wl&&t.acceptToken(up,1)});function _h(t,e,i){let n=2+t.length;return new Zt(r=>{for(let s=0,o=0,l=0;;l++){if(r.next<0){l&&r.acceptToken(e);break}if(s==0&&r.next==hb||s==1&&r.next==Qh||s>=2&&so?r.acceptToken(e,-o):r.acceptToken(i,-(o-2));break}else if((r.next==10||r.next==13)&&l){r.acceptToken(e,1);break}else s=o=0;r.advance()}})}const TC=_h("script",HP,KP),AC=_h("style",JP,eC),EC=_h("textarea",tC,iC),RC=Dr({"Text RawText IncompleteTag IncompleteCloseTag":k.content,"StartTag StartCloseTag SelfClosingEndTag EndTag":k.angleBracket,TagName:k.tagName,"MismatchedCloseTag/TagName":[k.tagName,k.invalid],AttributeName:k.attributeName,"AttributeValue UnquotedAttributeValue":k.attributeValue,Is:k.definitionOperator,"EntityReference CharacterReference":k.character,Comment:k.blockComment,ProcessingInst:k.processingInstruction,DoctypeDecl:k.documentMeta}),DC=Pr.deserialize({version:14,states:",xOVO!rOOO!ZQ#tO'#CrO!`Q#tO'#C{O!eQ#tO'#DOO!jQ#tO'#DRO!oQ#tO'#DTO!tOaO'#CqO#PObO'#CqO#[OdO'#CqO$kO!rO'#CqOOO`'#Cq'#CqO$rO$fO'#DUO$zQ#tO'#DWO%PQ#tO'#DXOOO`'#Dl'#DlOOO`'#DZ'#DZQVO!rOOO%UQ&rO,59^O%aQ&rO,59gO%lQ&rO,59jO%wQ&rO,59mO&SQ&rO,59oOOOa'#D_'#D_O&_OaO'#CyO&jOaO,59]OOOb'#D`'#D`O&rObO'#C|O&}ObO,59]OOOd'#Da'#DaO'VOdO'#DPO'bOdO,59]OOO`'#Db'#DbO'jO!rO,59]O'qQ#tO'#DSOOO`,59],59]OOOp'#Dc'#DcO'vO$fO,59pOOO`,59p,59pO(OQ#|O,59rO(TQ#|O,59sOOO`-E7X-E7XO(YQ&rO'#CtOOQW'#D['#D[O(hQ&rO1G.xOOOa1G.x1G.xOOO`1G/Z1G/ZO(sQ&rO1G/ROOOb1G/R1G/RO)OQ&rO1G/UOOOd1G/U1G/UO)ZQ&rO1G/XOOO`1G/X1G/XO)fQ&rO1G/ZOOOa-E7]-E7]O)qQ#tO'#CzOOO`1G.w1G.wOOOb-E7^-E7^O)vQ#tO'#C}OOOd-E7_-E7_O){Q#tO'#DQOOO`-E7`-E7`O*QQ#|O,59nOOOp-E7a-E7aOOO`1G/[1G/[OOO`1G/^1G/^OOO`1G/_1G/_O*VQ,UO,59`OOQW-E7Y-E7YOOOa7+$d7+$dOOO`7+$u7+$uOOOb7+$m7+$mOOOd7+$p7+$pOOO`7+$s7+$sO*bQ#|O,59fO*gQ#|O,59iO*lQ#|O,59lOOO`1G/Y1G/YO*qO7[O'#CwO+SOMhO'#CwOOQW1G.z1G.zOOO`1G/Q1G/QOOO`1G/T1G/TOOO`1G/W1G/WOOOO'#D]'#D]O+eO7[O,59cOOQW,59c,59cOOOO'#D^'#D^O+vOMhO,59cOOOO-E7Z-E7ZOOQW1G.}1G.}OOOO-E7[-E7[",stateData:",c~O!_OS~OUSOVPOWQOXROYTO[]O][O^^O_^Oa^Ob^Oc^Od^Oy^O|_O!eZO~OgaO~OgbO~OgcO~OgdO~OgeO~O!XfOPmP![mP~O!YiOQpP![pP~O!ZlORsP![sP~OUSOVPOWQOXROYTOZqO[]O][O^^O_^Oa^Ob^Oc^Od^Oy^O!eZO~O![rO~P#gO!]sO!fuO~OgvO~OgwO~OS|OT}OiyO~OS!POT}OiyO~OS!ROT}OiyO~OS!TOT}OiyO~OS}OT}OiyO~O!XfOPmX![mX~OP!WO![!XO~O!YiOQpX![pX~OQ!ZO![!XO~O!ZlORsX![sX~OR!]O![!XO~O![!XO~P#gOg!_O~O!]sO!f!aO~OS!bO~OS!cO~Oj!dOShXThXihX~OS!fOT!gOiyO~OS!hOT!gOiyO~OS!iOT!gOiyO~OS!jOT!gOiyO~OS!gOT!gOiyO~Og!kO~Og!lO~Og!mO~OS!nO~Ol!qO!a!oO!c!pO~OS!rO~OS!sO~OS!tO~Ob!uOc!uOd!uO!a!wO!b!uO~Ob!xOc!xOd!xO!c!wO!d!xO~Ob!uOc!uOd!uO!a!{O!b!uO~Ob!xOc!xOd!xO!c!{O!d!xO~OT~cbd!ey|!e~",goto:"%q!aPPPPPPPPPPPPPPPPPPPPP!b!hP!nPP!zP!}#Q#T#Z#^#a#g#j#m#s#y!bP!b!bP$P$V$m$s$y%P%V%]%cPPPPPPPP%iX^OX`pXUOX`pezabcde{!O!Q!S!UR!q!dRhUR!XhXVOX`pRkVR!XkXWOX`pRnWR!XnXXOX`pQrXR!XpXYOX`pQ`ORx`Q{aQ!ObQ!QcQ!SdQ!UeZ!e{!O!Q!S!UQ!v!oR!z!vQ!y!pR!|!yQgUR!VgQjVR!YjQmWR![mQpXR!^pQtZR!`tS_O`ToXp",nodeNames:"⚠ StartCloseTag StartCloseTag StartCloseTag EndTag SelfClosingEndTag StartTag StartTag StartTag StartTag StartTag StartCloseTag StartCloseTag StartCloseTag IncompleteTag IncompleteCloseTag Document Text EntityReference CharacterReference InvalidEntity Element OpenTag TagName Attribute AttributeName Is AttributeValue UnquotedAttributeValue ScriptText CloseTag OpenTag StyleText CloseTag OpenTag TextareaText CloseTag OpenTag CloseTag SelfClosingTag Comment ProcessingInst MismatchedCloseTag CloseTag DoctypeDecl",maxTerm:68,context:$C,nodeProps:[["closedBy",-10,1,2,3,7,8,9,10,11,12,13,"EndTag",6,"EndTag SelfClosingEndTag",-4,22,31,34,37,"CloseTag"],["openedBy",4,"StartTag StartCloseTag",5,"StartTag",-4,30,33,36,38,"OpenTag"],["group",-10,14,15,18,19,20,21,40,41,42,43,"Entity",17,"Entity TextContent",-3,29,32,35,"TextContent Entity"],["isolate",-11,22,30,31,33,34,36,37,38,39,42,43,"ltr",-3,27,28,40,""]],propSources:[RC],skippedNodes:[0],repeatNodeCount:9,tokenData:"!]tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^/^!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!Z5zblWOX5uXZ7SZ[5u[^7S^p5uqr5urs7Sst+Ptw5uwx7Sx!]5u!]!^7w!^!a7S!a#S5u#S#T7S#T;'S5u;'S;=`8n<%lO5u!R7VVOp7Sqs7St!]7S!]!^7l!^;'S7S;'S;=`7q<%lO7S!R7qOb!R!R7tP;=`<%l7S!Z8OYlWb!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!Z8qP;=`<%l5u!_8{iiSlWOX5uXZ7SZ[5u[^7S^p5uqr8trs7Sst/^tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^:j!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!_:sbiSlWb!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!VP<%l?Ah;{?Ah?BY7S?BY?Mn;{?MnO7S!V=dXiSb!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!V>SP;=`<%l;{!_>YP;=`<%l8t!_>dhiSlWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^/^!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!Z@TalWOX@OXZAYZ[@O[^AY^p@Oqr@OrsAYsw@OwxAYx!]@O!]!^Az!^!aAY!a#S@O#S#TAY#T;'S@O;'S;=`Bq<%lO@O!RA]UOpAYq!]AY!]!^Ao!^;'SAY;'S;=`At<%lOAY!RAtOc!R!RAwP;=`<%lAY!ZBRYlWc!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!ZBtP;=`<%l@O!_COhiSlWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^Dj!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!_DsbiSlWc!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!VFQbiSOpAYqrE{rsAYswE{wxAYx!PE{!P!QAY!Q!]E{!]!^GY!^!aAY!a#sE{#s$fAY$f;'SE{;'S;=`G|<%l?AhE{?Ah?BYAY?BY?MnE{?MnOAY!VGaXiSc!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!VHPP;=`<%lE{!_HVP;=`<%lBw!ZHcW!cxaP!b`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P<%lO(t!aIYliSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OKQ!O!P-_!P!Q$q!Q!^-_!^!_*V!_!a&X!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!aK_kiSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_*V!_!`&X!`!aMS!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!TM_XaP!b`!dp!fQOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X!aNZ!ZiSgQaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OMz!O!PMz!P!Q$q!Q![Mz![!]Mz!]!^-_!^!_*V!_!a&X!a!c-_!c!}Mz!}#R-_#R#SMz#S#T1k#T#oMz#o#s-_#s$f$q$f$}-_$}%OMz%O%W-_%W%oMz%o%p-_%p&aMz&a&b-_&b1pMz1p4UMz4U4dMz4d4e-_4e$ISMz$IS$I`-_$I`$IbMz$Ib$Je-_$Je$JgMz$Jg$Kh-_$Kh%#tMz%#t&/x-_&/x&EtMz&Et&FV-_&FV;'SMz;'S;:j!#|;:j;=`3X<%l?&r-_?&r?AhMz?Ah?BY$q?BY?MnMz?MnO$q!a!$PP;=`<%lMz!R!$ZY!b`!dpOq*Vqr!$yrs(Vsv*Vwx)ex!a*V!a!b!4t!b;'S*V;'S;=`*s<%lO*V!R!%Q]!b`!dpOr*Vrs(Vsv*Vwx)ex}*V}!O!%y!O!f*V!f!g!']!g#W*V#W#X!0`#X;'S*V;'S;=`*s<%lO*V!R!&QX!b`!dpOr*Vrs(Vsv*Vwx)ex}*V}!O!&m!O;'S*V;'S;=`*s<%lO*V!R!&vV!b`!dp!ePOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!'dX!b`!dpOr*Vrs(Vsv*Vwx)ex!q*V!q!r!(P!r;'S*V;'S;=`*s<%lO*V!R!(WX!b`!dpOr*Vrs(Vsv*Vwx)ex!e*V!e!f!(s!f;'S*V;'S;=`*s<%lO*V!R!(zX!b`!dpOr*Vrs(Vsv*Vwx)ex!v*V!v!w!)g!w;'S*V;'S;=`*s<%lO*V!R!)nX!b`!dpOr*Vrs(Vsv*Vwx)ex!{*V!{!|!*Z!|;'S*V;'S;=`*s<%lO*V!R!*bX!b`!dpOr*Vrs(Vsv*Vwx)ex!r*V!r!s!*}!s;'S*V;'S;=`*s<%lO*V!R!+UX!b`!dpOr*Vrs(Vsv*Vwx)ex!g*V!g!h!+q!h;'S*V;'S;=`*s<%lO*V!R!+xY!b`!dpOr!+qrs!,hsv!+qvw!-Swx!.[x!`!+q!`!a!/j!a;'S!+q;'S;=`!0Y<%lO!+qq!,mV!dpOv!,hvx!-Sx!`!,h!`!a!-q!a;'S!,h;'S;=`!.U<%lO!,hP!-VTO!`!-S!`!a!-f!a;'S!-S;'S;=`!-k<%lO!-SP!-kO|PP!-nP;=`<%l!-Sq!-xS!dp|POv(Vx;'S(V;'S;=`(h<%lO(Vq!.XP;=`<%l!,ha!.aX!b`Or!.[rs!-Ssv!.[vw!-Sw!`!.[!`!a!.|!a;'S!.[;'S;=`!/d<%lO!.[a!/TT!b`|POr)esv)ew;'S)e;'S;=`)y<%lO)ea!/gP;=`<%l!.[!R!/sV!b`!dp|POr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!0]P;=`<%l!+q!R!0gX!b`!dpOr*Vrs(Vsv*Vwx)ex#c*V#c#d!1S#d;'S*V;'S;=`*s<%lO*V!R!1ZX!b`!dpOr*Vrs(Vsv*Vwx)ex#V*V#V#W!1v#W;'S*V;'S;=`*s<%lO*V!R!1}X!b`!dpOr*Vrs(Vsv*Vwx)ex#h*V#h#i!2j#i;'S*V;'S;=`*s<%lO*V!R!2qX!b`!dpOr*Vrs(Vsv*Vwx)ex#m*V#m#n!3^#n;'S*V;'S;=`*s<%lO*V!R!3eX!b`!dpOr*Vrs(Vsv*Vwx)ex#d*V#d#e!4Q#e;'S*V;'S;=`*s<%lO*V!R!4XX!b`!dpOr*Vrs(Vsv*Vwx)ex#X*V#X#Y!+q#Y;'S*V;'S;=`*s<%lO*V!R!4{Y!b`!dpOr!4trs!5ksv!4tvw!6Vwx!8]x!a!4t!a!b!:]!b;'S!4t;'S;=`!;r<%lO!4tq!5pV!dpOv!5kvx!6Vx!a!5k!a!b!7W!b;'S!5k;'S;=`!8V<%lO!5kP!6YTO!a!6V!a!b!6i!b;'S!6V;'S;=`!7Q<%lO!6VP!6lTO!`!6V!`!a!6{!a;'S!6V;'S;=`!7Q<%lO!6VP!7QOyPP!7TP;=`<%l!6Vq!7]V!dpOv!5kvx!6Vx!`!5k!`!a!7r!a;'S!5k;'S;=`!8V<%lO!5kq!7yS!dpyPOv(Vx;'S(V;'S;=`(h<%lO(Vq!8YP;=`<%l!5ka!8bX!b`Or!8]rs!6Vsv!8]vw!6Vw!a!8]!a!b!8}!b;'S!8];'S;=`!:V<%lO!8]a!9SX!b`Or!8]rs!6Vsv!8]vw!6Vw!`!8]!`!a!9o!a;'S!8];'S;=`!:V<%lO!8]a!9vT!b`yPOr)esv)ew;'S)e;'S;=`)y<%lO)ea!:YP;=`<%l!8]!R!:dY!b`!dpOr!4trs!5ksv!4tvw!6Vwx!8]x!`!4t!`!a!;S!a;'S!4t;'S;=`!;r<%lO!4t!R!;]V!b`!dpyPOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!;uP;=`<%l!4t!V!{let u=l.type.id;if(u==hC)return tu(l,a,i);if(u==fC)return tu(l,a,n);if(u==dC)return tu(l,a,r);if(u==ab&&s.length){let c=l.node,h=c.firstChild,f=h&&Op(h,a),d;if(f){for(let p of s)if(p.tag==f&&(!p.attrs||p.attrs(d||(d=fb(h,a))))){let m=c.lastChild,O=m.type.id==mC?m.from:c.to;if(O>h.to)return{parser:p.parser,overlay:[{from:h.to,to:O}]}}}}if(o&&u==ub){let c=l.node,h;if(h=c.firstChild){let f=o[a.read(h.from,h.to)];if(f)for(let d of f){if(d.tagName&&d.tagName!=Op(c.parent,a))continue;let p=c.lastChild;if(p.type.id==gc){let m=p.from+1,O=p.lastChild,g=p.to-(O&&O.isError?0:1);if(g>m)return{parser:d.parser,overlay:[{from:m,to:g}],bracketed:!0}}else if(p.type.id==cb)return{parser:d.parser,overlay:[{from:p.from,to:p.to}]}}}}return null})}const LC=145,gp=1,MC=146,ZC=147,pb=2,IC=148,XC=3,zC=4,mb=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],jC=58,FC=40,Ob=95,BC=91,al=45,VC=46,qC=35,WC=37,YC=38,NC=92,GC=10,UC=42;function Bs(t){return t>=65&&t<=90||t>=97&&t<=122||t>=161}function Ph(t){return t>=48&&t<=57}function bp(t){return Ph(t)||t>=97&&t<=102||t>=65&&t<=70}const gb=(t,e,i)=>(n,r)=>{for(let s=!1,o=0,l=0;;l++){let{next:a}=n;if(Bs(a)||a==al||a==Ob||s&&Ph(a))!s&&(a!=al||l>0)&&(s=!0),o===l&&a==al&&o++,n.advance();else if(a==NC&&n.peek(1)!=GC){if(n.advance(),bp(n.next)){do n.advance();while(bp(n.next));n.next==32&&n.advance()}else n.next>-1&&n.advance();s=!0}else{s&&n.acceptToken(o==2&&r.canShift(pb)?e:a==FC?i:t);break}}},HC=new Zt(gb(MC,pb,ZC),{contextual:!0}),KC=new Zt(gb(IC,XC,zC),{contextual:!0}),JC=new Zt(t=>{if(mb.includes(t.peek(-1))){let{next:e}=t;(Bs(e)||e==Ob||e==qC||e==VC||e==UC||e==BC||e==jC&&Bs(t.peek(1))||e==al||e==YC)&&t.acceptToken(LC)}}),eT=new Zt(t=>{if(!mb.includes(t.peek(-1))){let{next:e}=t;if(e==WC&&(t.advance(),t.acceptToken(gp)),Bs(e)){do t.advance();while(Bs(t.next)||Ph(t.next));t.acceptToken(gp)}}}),tT=Dr({"AtKeyword import charset namespace keyframes media supports font-feature-values":k.definitionKeyword,"from to selector scope MatchFlag":k.keyword,NamespaceName:k.namespace,KeyframeName:k.labelName,KeyframeRangeName:k.operatorKeyword,TagName:k.tagName,ClassName:k.className,PseudoClassName:k.constant(k.className),IdName:k.labelName,"FeatureName PropertyName":k.propertyName,AttributeName:k.attributeName,NumberLiteral:k.number,KeywordQuery:k.keyword,UnaryQueryOp:k.operatorKeyword,"CallTag ValueName FontName":k.atom,VariableName:k.variableName,Callee:k.operatorKeyword,Unit:k.unit,"UniversalSelector NestingSelector":k.definitionOperator,"MatchOp CompareOp":k.compareOperator,"ChildOp SiblingOp, LogicOp":k.logicOperator,BinOp:k.arithmeticOperator,Important:k.modifier,Comment:k.blockComment,ColorLiteral:k.color,"ParenthesizedContent StringLiteral":k.string,":":k.punctuation,"PseudoOp #":k.derefOperator,"; , |":k.separator,"( )":k.paren,"[ ]":k.squareBracket,"{ }":k.brace}),iT={__proto__:null,lang:44,"nth-child":44,"nth-last-child":44,"nth-of-type":44,"nth-last-of-type":44,dir:44,"host-context":44,if:90,url:152,"url-prefix":152,domain:152,regexp:152},nT={__proto__:null,or:104,and:104,not:112,only:112,layer:206},rT={__proto__:null,selector:118,style:124,layer:202},sT={__proto__:null,"@import":198,"@media":210,"@charset":214,"@namespace":218,"@keyframes":224,"@supports":236,"@scope":240,"@font-feature-values":246},oT={__proto__:null,to:243},lT=Pr.deserialize({version:14,states:"MlQYQdOOO#}QdOOP$UO`OOO%OQaO'#CfOOQP'#Ce'#CeO%VQdO'#CgO%[Q`O'#CgO%aQaO'#FnO&XQdO'#CkO&xQaO'#CcO'SQdO'#CnO'_QdO'#EOO'dQdO'#EQO'oQdO'#EXO'oQdO'#E[OOQP'#Fn'#FnO)RQhO'#E}OOQS'#Fm'#FmOOQS'#FQ'#FQQYQdOOO)YQdO'#EbO*iQhO'#EhO)YQdO'#EjO*pQdO'#ElO*{QdO'#EoO)}QhO'#EuO+TQdO'#EwO+`QdO'#EzO+eQaO'#CfO+lQ`O'#E_O+qQ`O'#F{O+|QdO'#F{QOQ`OOP,WO&jO'#CaPOOO)CA])CA]OOQP'#Ci'#CiOOQP,59R,59RO%VQdO,59ROOQP'#Cm'#CmOOQP,59V,59VO&XQdO,59VO,cQdO,59YO'_QdO,5:jO'dQdO,5:lO'oQdO,5:sO'oQdO,5:uO'oQdO,5:vO'oQdO'#FXO,nQ`O,58}O,vQdO'#E^OOQS,58},58}OOQP'#Cq'#CqOOQO'#D|'#D|OOQP,59Y,59YO,}Q`O,59YO-SQ`O,59YOOQP'#EP'#EPOOQP,5:j,5:jO-XQpO'#ERO-dQdO'#ESO-iQ`O'#ESO-nQpO,5:lO.XQaO,5:sO.oQaO,5:vOOQW'#D^'#D^O/nQhO'#DgO0RQhO,5;iO)}QhO'#DeO0`Q`O'#DnO0eQhO'#DxOOQW'#Ft'#FtOOQS,5;i,5;iO0jQ`O'#DhO0oQ`O'#DkOOQS-E9O-E9OOOQ['#Cv'#CvO0tQdO'#CwO1[QdO'#C}O1rQdO'#DQO2YQ!pO'#DSO4fQ!jO,5:|OOQO'#DX'#DXO-SQ`O'#DWO4vQ!nO'#FqO6|Q`O'#DYO7RQ`O'#DyOOQ['#Fq'#FqO7WQhO'#GOO7fQ`O,5;SO7kQ!bO,5;UOOQS'#En'#EnO7sQ`O,5;WO7xQdO,5;WOOQO'#Eq'#EqO8QQ`O,5;ZO8VQhO,5;aO'oQdO'#DjOOQS,5;c,5;cO0jQ`O,5;cO8_QdO,5;cOOQS'#F`'#F`O8gQdO'#E|O7fQ`O,5;fO8oQdO,5:yO9PQdO'#FZO9^Q`O,5lQhO'#DoOOQW,5:Y,5:YOOQW,5:d,5:dOOQW,5:S,5:SO>vQhO,5:VO?bQ!fO'#FrOOQS'#Fr'#FrOOQS'#FS'#FSO@rQdO,59cOOQ[,59c,59cOAYQdO,59iOOQ[,59i,59iOApQdO,59lOOQ[,59l,59lOOQ[,59n,59nO)YQdO,59pOBWQhO'#EdOOQW'#Ed'#EdOBuQ`O1G0hO4oQhO1G0hOOQ[,59r,59rO)}QhO'#D[OOQ[,59t,59tOBzQ#tO,5:eOCVQhO'#F]OCdQ`O,5vQhO'#DmOI_QhO'#DqOIgQhO'#DsOIlQhO'#FwOOQO'#Fw'#FwOItQ!bO'#DwOOQO'#Fy'#FyOOQO'#Fv'#FvOIyQ`O1G/qOOQS-E9Q-E9QOOQ[1G.}1G.}OOQ[1G/T1G/TOOQ[1G/W1G/WOOQ[1G/[1G/[OJOQdO,5;OOOQS7+&S7+&SOJTQ`O7+&SOJYQhO'#D]OJbQ`O,59vO)}QhO,59vOOQ[1G0P1G0POJjQ`O1G0POJoQhO,5;wOOQO-E9Z-E9ZOOQS7+&^7+&^OJ}QbO'#DSOOQO'#Et'#EtOK]Q`O'#EsOOQO'#Es'#EsOKhQ`O'#F^OKpQdO,5;^OOQS,5;^,5;^OOQ[1G/p1G/pOOQS7+&i7+&iO7fQ`O7+&iOK{Q!fO'#FYO)YQdO'#FYOMSQdO7+&POOQO7+&P7+&POOQO,5:{,5:{OOQO1G1a1G1aOMgQ!bO<vQhO'#DrOOQO,5:],5:]O! hQhO,5:_OGUQhO,5:cOOQW7+%]7+%]OOQO'#Ef'#EfO! pQ`O1G0jOOQS<xAN>xO!#zQ`OAN>xO!$PQaO,5;rOOQO-E9U-E9UO!$ZQdO,5;qOOQO-E9T-E9TOOQW<vQhO'#DuOOQO1G/y1G/yO!%vQ!bO1G/}OJOQdO'#F[O!&OQ`O7+&UOOQW7+&U7+&UO!&WQ!bO1G/cOOQ[7+$|7+$|O!&cQhO7+$|P!&jQ`O'#FTOOQO,5;y,5;yOOQO-E9]-E9]OOQS1G1d1G1dOOQPG24dG24dO!&oQ`OAN>ZO)YQdO1G1[O!&tQ`O7+'jOOQO1G/x1G/xO!&|Q`O,5:aO!$eQhO7+%iOOQO,5;v,5;vOOQO-E9Y-E9YOOQW<Q!]!^>|!^!_?_!_!`@Z!`!a@n!a!b%Z!b!cAo!c!k%Z!k!lC|!l!u%Z!u!vC|!v!}%Z!}#OD_#O#P%Z#P#QDp#Q#R2X#R#]%Z#]#^ER#^#g%Z#g#hC|#h#o%Z#o#pIf#p#qIw#q#rJ`#r#sJq#s#y%Z#y#z&R#z$f%Z$f$g&R$g#BY%Z#BY#BZ&R#BZ$IS%Z$IS$I_&R$I_$I|%Z$I|$JO&R$JO$JT%Z$JT$JU&R$JU$KV%Z$KV$KW&R$KW&FU%Z&FU&FV&R&FV;'S%Z;'S;=`KY<%lO%Z`%^SOy%jz;'S%j;'S;=`%{<%lO%j`%oS!o`Oy%jz;'S%j;'S;=`%{<%lO%j`&OP;=`<%l%j~&Wh$[~OX%jX^'r^p%jpq'rqy%jz#y%j#y#z'r#z$f%j$f$g'r$g#BY%j#BY#BZ'r#BZ$IS%j$IS$I_'r$I_$I|%j$I|$JO'r$JO$JT%j$JT$JU'r$JU$KV%j$KV$KW'r$KW&FU%j&FU&FV'r&FV;'S%j;'S;=`%{<%lO%j~'yh$[~!o`OX%jX^'r^p%jpq'rqy%jz#y%j#y#z'r#z$f%j$f$g'r$g#BY%j#BY#BZ'r#BZ$IS%j$IS$I_'r$I_$I|%j$I|$JO'r$JO$JT%j$JT$JU'r$JU$KV%j$KV$KW'r$KW&FU%j&FU&FV'r&FV;'S%j;'S;=`%{<%lO%jj)jS$qYOy%jz;'S%j;'S;=`%{<%lO%j~)yWOY)vZr)vrs*cs#O)v#O#P*h#P;'S)v;'S;=`+d<%lO)v~*hOw~~*kRO;'S)v;'S;=`*t;=`O)v~*wXOY)vZr)vrs*cs#O)v#O#P*h#P;'S)v;'S;=`+d;=`<%l)v<%lO)v~+gP;=`<%l)vj+oYmYOy%jz!Q%j!Q![,_![!c%j!c!i,_!i#T%j#T#Z,_#Z;'S%j;'S;=`%{<%lO%jj,dY!o`Oy%jz!Q%j!Q![-S![!c%j!c!i-S!i#T%j#T#Z-S#Z;'S%j;'S;=`%{<%lO%jj-XY!o`Oy%jz!Q%j!Q![-w![!c%j!c!i-w!i#T%j#T#Z-w#Z;'S%j;'S;=`%{<%lO%jj.OYuY!o`Oy%jz!Q%j!Q![.n![!c%j!c!i.n!i#T%j#T#Z.n#Z;'S%j;'S;=`%{<%lO%jj.uYuY!o`Oy%jz!Q%j!Q![/e![!c%j!c!i/e!i#T%j#T#Z/e#Z;'S%j;'S;=`%{<%lO%jj/jY!o`Oy%jz!Q%j!Q![0Y![!c%j!c!i0Y!i#T%j#T#Z0Y#Z;'S%j;'S;=`%{<%lO%jj0aYuY!o`Oy%jz!Q%j!Q![1P![!c%j!c!i1P!i#T%j#T#Z1P#Z;'S%j;'S;=`%{<%lO%jj1UY!o`Oy%jz!Q%j!Q![1t![!c%j!c!i1t!i#T%j#T#Z1t#Z;'S%j;'S;=`%{<%lO%jj1{SuY!o`Oy%jz;'S%j;'S;=`%{<%lO%jd2[UOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jd2uS!yS!o`Oy%jz;'S%j;'S;=`%{<%lO%jb3WS^QOy%jz;'S%j;'S;=`%{<%lO%j~3gWOY3dZw3dwx*cx#O3d#O#P4P#P;'S3d;'S;=`4{<%lO3d~4SRO;'S3d;'S;=`4];=`O3d~4`XOY3dZw3dwx*cx#O3d#O#P4P#P;'S3d;'S;=`4{;=`<%l3d<%lO3d~5OP;=`<%l3dj5WShYOy%jz;'S%j;'S;=`%{<%lO%j~5iOg~n5pUWQyWOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jj6ZWyW#PQOy%jz!O%j!O!P6s!P!Q%j!Q![9x![;'S%j;'S;=`%{<%lO%jj6xU!o`Oy%jz!Q%j!Q![7[![;'S%j;'S;=`%{<%lO%jj7cY!o`$gYOy%jz!Q%j!Q![7[![!g%j!g!h8R!h#X%j#X#Y8R#Y;'S%j;'S;=`%{<%lO%jj8WY!o`Oy%jz{%j{|8v|}%j}!O8v!O!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj8{U!o`Oy%jz!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj9fU!o`$gYOy%jz!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj:P[!o`$gYOy%jz!O%j!O!P7[!P!Q%j!Q![9x![!g%j!g!h8R!h#X%j#X#Y8R#Y;'S%j;'S;=`%{<%lO%jj:zS!dYOy%jz;'S%j;'S;=`%{<%lO%jj;]WyWOy%jz!O%j!O!P6s!P!Q%j!Q![9x![;'S%j;'S;=`%{<%lO%jj;zU`YOy%jz!Q%j!Q![7[![;'S%j;'S;=`%{<%lO%j~VUcYOy%jz![%j![!]>i!];'S%j;'S;=`%{<%lO%jj>pSdY!o`Oy%jz;'S%j;'S;=`%{<%lO%jj?RSnYOy%jz;'S%j;'S;=`%{<%lO%jh?dU!WWOy%jz!_%j!_!`?v!`;'S%j;'S;=`%{<%lO%jh?}S!WW!o`Oy%jz;'S%j;'S;=`%{<%lO%jl@bS!WW!ySOy%jz;'S%j;'S;=`%{<%lO%jj@uV!|Q!WWOy%jz!_%j!_!`?v!`!aA[!a;'S%j;'S;=`%{<%lO%jbAcS!|Q!o`Oy%jz;'S%j;'S;=`%{<%lO%jjArYOy%jz}%j}!OBb!O!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jjBgW!o`Oy%jz!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jjCW[lY!o`Oy%jz}%j}!OCP!O!Q%j!Q![CP![!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jhDRS!zWOy%jz;'S%j;'S;=`%{<%lO%jjDdSpYOy%jz;'S%j;'S;=`%{<%lO%jnDuSo^Oy%jz;'S%j;'S;=`%{<%lO%jjEWU!zWOy%jz#a%j#a#bEj#b;'S%j;'S;=`%{<%lO%jbEoU!o`Oy%jz#d%j#d#eFR#e;'S%j;'S;=`%{<%lO%jbFWU!o`Oy%jz#c%j#c#dFj#d;'S%j;'S;=`%{<%lO%jbFoU!o`Oy%jz#f%j#f#gGR#g;'S%j;'S;=`%{<%lO%jbGWU!o`Oy%jz#h%j#h#iGj#i;'S%j;'S;=`%{<%lO%jbGoU!o`Oy%jz#T%j#T#UHR#U;'S%j;'S;=`%{<%lO%jbHWU!o`Oy%jz#b%j#b#cHj#c;'S%j;'S;=`%{<%lO%jbHoU!o`Oy%jz#h%j#h#iIR#i;'S%j;'S;=`%{<%lO%jbIYS$pQ!o`Oy%jz;'S%j;'S;=`%{<%lO%jjIkSsYOy%jz;'S%j;'S;=`%{<%lO%jfI|U$cUOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jjJeSrYOy%jz;'S%j;'S;=`%{<%lO%jfJvU#PQOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%j`K]P;=`<%l%Z",tokenizers:[JC,eT,HC,KC,1,2,3,4,new ql("m~RRYZ[z{a~~g~aO$_~~dP!P!Qg~lO$`~~",28,152)],topRules:{StyleSheet:[0,6],Styles:[1,126]},dynamicPrecedences:{94:1},specialized:[{term:147,get:t=>iT[t]||-1},{term:148,get:t=>nT[t]||-1},{term:4,get:t=>rT[t]||-1},{term:28,get:t=>sT[t]||-1},{term:146,get:t=>oT[t]||-1}],tokenPrec:2405});let iu=null;function nu(){if(!iu&&typeof document=="object"&&document.body){let{style:t}=document.body,e=[],i=new Set;for(let n in t)n!="cssText"&&n!="cssFloat"&&typeof t[n]=="string"&&(/[A-Z]/.test(n)&&(n=n.replace(/[A-Z]/g,r=>"-"+r.toLowerCase())),i.has(n)||(e.push(n),i.add(n)));iu=e.sort().map(n=>({type:"property",label:n,apply:n+": "}))}return iu||[]}const vp=["active","after","any-link","autofill","backdrop","before","checked","cue","default","defined","disabled","empty","enabled","file-selector-button","first","first-child","first-letter","first-line","first-of-type","focus","focus-visible","focus-within","fullscreen","has","host","host-context","hover","in-range","indeterminate","invalid","is","lang","last-child","last-of-type","left","link","marker","modal","not","nth-child","nth-last-child","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","part","placeholder","placeholder-shown","read-only","read-write","required","right","root","scope","selection","slotted","target","target-text","valid","visited","where"].map(t=>({type:"class",label:t})),yp=["above","absolute","activeborder","additive","activecaption","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","antialiased","appworkspace","asterisks","attr","auto","auto-flow","avoid","avoid-column","avoid-page","avoid-region","axis-pan","background","backwards","baseline","below","bidi-override","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","button-bevel","buttonface","buttonhighlight","buttonshadow","buttontext","calc","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","clear","clip","close-quote","col-resize","collapse","color","color-burn","color-dodge","column","column-reverse","compact","condensed","contain","content","contents","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","darken","dashed","decimal","decimal-leading-zero","default","default-button","dense","destination-atop","destination-in","destination-out","destination-over","difference","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic-abegede-gez","ethiopic-halehame-aa-er","ethiopic-halehame-gez","ew-resize","exclusion","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fill-box","fixed","flat","flex","flex-end","flex-start","footnotes","forwards","from","geometricPrecision","graytext","grid","groove","hand","hard-light","help","hidden","hide","higher","highlight","highlighttext","horizontal","hsl","hsla","hue","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-grid","inline-table","inset","inside","intrinsic","invert","italic","justify","keep-all","landscape","large","larger","left","level","lighter","lighten","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-hexadecimal","lower-latin","lower-norwegian","lowercase","ltr","luminosity","manipulation","match","matrix","matrix3d","medium","menu","menutext","message-box","middle","min-intrinsic","mix","monospace","move","multiple","multiple_mask_images","multiply","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","opacity","open-quote","optimizeLegibility","optimizeSpeed","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","perspective","pinch-zoom","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row","row-resize","row-reverse","rtl","run-in","running","s-resize","sans-serif","saturation","scale","scale3d","scaleX","scaleY","scaleZ","screen","scroll","scrollbar","scroll-position","se-resize","self-start","self-end","semi-condensed","semi-expanded","separate","serif","show","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","soft-light","solid","source-atop","source-in","source-out","source-over","space","space-around","space-between","space-evenly","spell-out","square","start","static","status-bar","stretch","stroke","stroke-box","sub","subpixel-antialiased","svg_masks","super","sw-resize","symbolic","symbols","system-ui","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","text","text-bottom","text-top","textarea","textfield","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","to","top","transform","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","unidirectional-pan","unset","up","upper-latin","uppercase","url","var","vertical","vertical-text","view-box","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","wrap","wrap-reverse","x-large","x-small","xor","xx-large","xx-small"].map(t=>({type:"keyword",label:t})).concat(["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"].map(t=>({type:"constant",label:t}))),aT=["a","abbr","address","article","aside","b","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","dd","del","details","dfn","dialog","div","dl","dt","em","figcaption","figure","footer","form","header","hgroup","h1","h2","h3","h4","h5","h6","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","main","meter","nav","ol","output","p","pre","ruby","section","select","small","source","span","strong","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","tr","u","ul"].map(t=>({type:"type",label:t})),uT=["@charset","@color-profile","@container","@counter-style","@font-face","@font-feature-values","@font-palette-values","@import","@keyframes","@layer","@media","@namespace","@page","@position-try","@property","@scope","@starting-style","@supports","@view-transition"].map(t=>({type:"keyword",label:t})),Ci=/^(\w[\w-]*|-\w[\w-]*|)$/,cT=/^-(-[\w-]*)?$/;function hT(t,e){var i;if((t.name=="("||t.type.isError)&&(t=t.parent||t),t.name!="ArgList")return!1;let n=(i=t.parent)===null||i===void 0?void 0:i.firstChild;return(n==null?void 0:n.name)!="Callee"?!1:e.sliceString(n.from,n.to)=="var"}const xp=new Sg,fT=["Declaration"];function dT(t){for(let e=t;;){if(e.type.isTop)return e;if(!(e=e.parent))return t}}function bb(t,e,i){if(e.to-e.from>4096){let n=xp.get(e);if(n)return n;let r=[],s=new Set,o=e.cursor(ge.IncludeAnonymous);if(o.firstChild())do for(let l of bb(t,o.node,i))s.has(l.label)||(s.add(l.label),r.push(l));while(o.nextSibling());return xp.set(e,r),r}else{let n=[],r=new Set;return e.cursor().iterate(s=>{var o;if(i(s)&&s.matchContext(fT)&&((o=s.node.nextSibling)===null||o===void 0?void 0:o.name)==":"){let l=t.sliceString(s.from,s.to);r.has(l)||(r.add(l),n.push({label:l,type:"variable"}))}}),n}}const vb=t=>e=>{let{state:i,pos:n}=e,r=Re(i).resolveInner(n,-1),s=r.type.isError&&r.from==r.to-1&&i.doc.sliceString(r.from,r.to)=="-";if(r.name=="PropertyName"||(s||r.name=="TagName")&&/^(Block|Styles)$/.test(r.resolve(r.to).name))return{from:r.from,options:nu(),validFor:Ci};if(r.name=="ValueName")return{from:r.from,options:yp,validFor:Ci};if(r.name=="PseudoClassName")return{from:r.from,options:vp,validFor:Ci};if(t(r)||(e.explicit||s)&&hT(r,i.doc))return{from:t(r)||s?r.from:n,options:bb(i.doc,dT(r),t),validFor:cT};if(r.name=="TagName"){for(let{parent:a}=r;a;a=a.parent)if(a.name=="Block")return{from:r.from,options:nu(),validFor:Ci};return{from:r.from,options:aT,validFor:Ci}}if(r.name=="AtKeyword")return{from:r.from,options:uT,validFor:Ci};if(!e.explicit)return null;let o=r.resolve(n),l=o.childBefore(n);return l&&l.name==":"&&o.name=="PseudoClassSelector"?{from:n,options:vp,validFor:Ci}:l&&l.name==":"&&o.name=="Declaration"||o.name=="ArgList"?{from:n,options:yp,validFor:Ci}:o.name=="Block"||o.name=="Styles"?{from:n,options:nu(),validFor:Ci}:null},yb=vb(t=>t.name=="VariableName"),Vs=Sr.define({name:"css",parser:lT.configure({props:[Mr.add({Declaration:ol()}),no.add({"Block KeyframeList":Ag})]}),languageData:{commentTokens:{block:{open:"/*",close:"*/"}},indentOnInput:/^\s*\}$/,wordChars:"-"}});function xb(){return new Qr(Vs,Vs.data.of({autocomplete:yb}))}const pT=Object.freeze(Object.defineProperty({__proto__:null,css:xb,cssCompletionSource:yb,cssLanguage:Vs,defineCSSCompletionSource:vb},Symbol.toStringTag,{value:"Module"})),mT=316,OT=317,kp=1,gT=2,bT=3,vT=4,yT=318,xT=320,kT=321,ST=5,wT=6,$T=0,vc=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],kb=125,QT=59,yc=47,_T=42,PT=43,CT=45,TT=60,AT=44,ET=63,RT=46,DT=91,LT=new nb({start:!1,shift(t,e){return e==ST||e==wT||e==xT?t:e==kT},strict:!1}),MT=new Zt((t,e)=>{let{next:i}=t;(i==kb||i==-1||e.context)&&t.acceptToken(yT)},{contextual:!0,fallback:!0}),ZT=new Zt((t,e)=>{let{next:i}=t,n;vc.indexOf(i)>-1||i==yc&&((n=t.peek(1))==yc||n==_T)||i!=kb&&i!=QT&&i!=-1&&!e.context&&t.acceptToken(mT)},{contextual:!0}),IT=new Zt((t,e)=>{t.next==DT&&!e.context&&t.acceptToken(OT)},{contextual:!0}),XT=new Zt((t,e)=>{let{next:i}=t;if(i==PT||i==CT){if(t.advance(),i==t.next){t.advance();let n=!e.context&&e.canShift(kp);t.acceptToken(n?kp:gT)}}else i==ET&&t.peek(1)==RT&&(t.advance(),t.advance(),(t.next<48||t.next>57)&&t.acceptToken(bT))},{contextual:!0});function ru(t,e){return t>=65&&t<=90||t>=97&&t<=122||t==95||t>=192||!e&&t>=48&&t<=57}const zT=new Zt((t,e)=>{if(t.next!=TT||!e.dialectEnabled($T)||(t.advance(),t.next==yc))return;let i=0;for(;vc.indexOf(t.next)>-1;)t.advance(),i++;if(ru(t.next,!0)){for(t.advance(),i++;ru(t.next,!1);)t.advance(),i++;for(;vc.indexOf(t.next)>-1;)t.advance(),i++;if(t.next==AT)return;for(let n=0;;n++){if(n==7){if(!ru(t.next,!0))return;break}if(t.next!="extends".charCodeAt(n))break;t.advance(),i++}}t.acceptToken(vT,-i)}),jT=Dr({"get set async static":k.modifier,"for while do if else switch try catch finally return throw break continue default case defer":k.controlKeyword,"in of await yield void typeof delete instanceof as satisfies":k.operatorKeyword,"let var const using function class extends":k.definitionKeyword,"import export from":k.moduleKeyword,"with debugger new":k.keyword,TemplateString:k.special(k.string),super:k.atom,BooleanLiteral:k.bool,this:k.self,null:k.null,Star:k.modifier,VariableName:k.variableName,"CallExpression/VariableName TaggedTemplateExpression/VariableName":k.function(k.variableName),VariableDefinition:k.definition(k.variableName),Label:k.labelName,PropertyName:k.propertyName,PrivatePropertyName:k.special(k.propertyName),"CallExpression/MemberExpression/PropertyName":k.function(k.propertyName),"FunctionDeclaration/VariableDefinition":k.function(k.definition(k.variableName)),"ClassDeclaration/VariableDefinition":k.definition(k.className),"NewExpression/VariableName":k.className,PropertyDefinition:k.definition(k.propertyName),PrivatePropertyDefinition:k.definition(k.special(k.propertyName)),UpdateOp:k.updateOperator,"LineComment Hashbang":k.lineComment,BlockComment:k.blockComment,Number:k.number,String:k.string,Escape:k.escape,ArithOp:k.arithmeticOperator,LogicOp:k.logicOperator,BitOp:k.bitwiseOperator,CompareOp:k.compareOperator,RegExp:k.regexp,Equals:k.definitionOperator,Arrow:k.function(k.punctuation),": Spread":k.punctuation,"( )":k.paren,"[ ]":k.squareBracket,"{ }":k.brace,"InterpolationStart InterpolationEnd":k.special(k.brace),".":k.derefOperator,", ;":k.separator,"@":k.meta,TypeName:k.typeName,TypeDefinition:k.definition(k.typeName),"type enum interface implements namespace module declare":k.definitionKeyword,"abstract global Privacy readonly override":k.modifier,"is keyof unique infer asserts":k.operatorKeyword,JSXAttributeValue:k.attributeValue,JSXText:k.content,"JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag":k.angleBracket,"JSXIdentifier JSXNameSpacedName":k.tagName,"JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName":k.attributeName,"JSXBuiltin/JSXIdentifier":k.standard(k.tagName)}),FT={__proto__:null,export:20,as:25,from:33,default:36,async:41,function:42,in:52,out:55,const:56,extends:60,this:64,true:72,false:72,null:84,void:88,typeof:92,super:108,new:142,delete:154,yield:163,await:167,class:172,public:235,private:235,protected:235,readonly:237,instanceof:256,satisfies:259,import:292,keyof:349,unique:353,infer:359,asserts:395,is:397,abstract:417,implements:419,type:421,let:424,var:426,using:429,interface:435,enum:439,namespace:445,module:447,declare:451,global:455,defer:471,for:476,of:485,while:488,with:492,do:496,if:500,else:502,switch:506,case:512,try:518,catch:522,finally:526,return:530,throw:534,break:538,continue:542,debugger:546},BT={__proto__:null,async:129,get:131,set:133,declare:195,public:197,private:197,protected:197,static:199,abstract:201,override:203,readonly:209,accessor:211,new:401},VT={__proto__:null,"<":193},qT=Pr.deserialize({version:14,states:"$F|Q%TQlOOO%[QlOOO'_QpOOP(lO`OOO*zQ!0MxO'#CiO+RO#tO'#CjO+aO&jO'#CjO+oO#@ItO'#DaO.QQlO'#DgO.bQlO'#DrO%[QlO'#DzO0fQlO'#ESOOQ!0Lf'#E['#E[O1PQ`O'#EXOOQO'#Ep'#EpOOQO'#Il'#IlO1XQ`O'#GsO1dQ`O'#EoO1iQ`O'#EoO3hQ!0MxO'#JrO6[Q!0MxO'#JsO6uQ`O'#F]O6zQ,UO'#FtOOQ!0Lf'#Ff'#FfO7VO7dO'#FfO9XQMhO'#F|O9`Q`O'#F{OOQ!0Lf'#Js'#JsOOQ!0Lb'#Jr'#JrO9eQ`O'#GwOOQ['#K_'#K_O9pQ`O'#IYO9uQ!0LrO'#IZOOQ['#J`'#J`OOQ['#I_'#I_Q`QlOOQ`QlOOO9}Q!L^O'#DvO:UQlO'#EOO:]QlO'#EQO9kQ`O'#GsO:dQMhO'#CoO:rQ`O'#EnO:}Q`O'#EyO;hQMhO'#FeO;xQ`O'#GsOOQO'#K`'#K`O;}Q`O'#K`O<]Q`O'#G{O<]Q`O'#G|O<]Q`O'#HOO9kQ`O'#HRO=SQ`O'#HUO>kQ`O'#CeO>{Q`O'#HcO?TQ`O'#HiO?TQ`O'#HkO`QlO'#HmO?TQ`O'#HoO?TQ`O'#HrO?YQ`O'#HxO?_Q!0LsO'#IOO%[QlO'#IQO?jQ!0LsO'#ISO?uQ!0LsO'#IUO9uQ!0LrO'#IWO@QQ!0MxO'#CiOASQpO'#DlQOQ`OOO%[QlO'#EQOAjQ`O'#ETO:dQMhO'#EnOAuQ`O'#EnOBQQ!bO'#FeOOQ['#Cg'#CgOOQ!0Lb'#Dq'#DqOOQ!0Lb'#Jv'#JvO%[QlO'#JvOOQO'#Jy'#JyOOQO'#Ih'#IhOCQQpO'#EgOOQ!0Lb'#Ef'#EfOOQ!0Lb'#J}'#J}OC|Q!0MSO'#EgODWQpO'#EWOOQO'#Jx'#JxODlQpO'#JyOEyQpO'#EWODWQpO'#EgPFWO&2DjO'#CbPOOO)CD})CD}OOOO'#I`'#I`OFcO#tO,59UOOQ!0Lh,59U,59UOOOO'#Ia'#IaOFqO&jO,59UOGPQ!L^O'#DcOOOO'#Ic'#IcOGWO#@ItO,59{OOQ!0Lf,59{,59{OGfQlO'#IdOGyQ`O'#JtOIxQ!fO'#JtO+}QlO'#JtOJPQ`O,5:ROJgQ`O'#EpOJtQ`O'#KTOKPQ`O'#KSOKPQ`O'#KSOKXQ`O,5;^OK^Q`O'#KROOQ!0Ln,5:^,5:^OKeQlO,5:^OMcQ!0MxO,5:fONSQ`O,5:nONmQ!0LrO'#KQONtQ`O'#KPO9eQ`O'#KPO! YQ`O'#KPO! bQ`O,5;]O! gQ`O'#KPO!#lQ!fO'#JsOOQ!0Lh'#Ci'#CiO%[QlO'#ESO!$[Q!fO,5:sOOQS'#Jz'#JzOOQO-EtOOQ['#Jh'#JhOOQ[,5>u,5>uOOQ[-E<]-E<]O!TO`QlO,5>VO!LOQ`O,5>XO`QlO,5>ZO!LTQ`O,5>^O!LYQlO,5>dOOQ[,5>j,5>jO%[QlO,5>jO9uQ!0LrO,5>lOOQ[,5>n,5>nO#!dQ`O,5>nOOQ[,5>p,5>pO#!dQ`O,5>pOOQ[,5>r,5>rO##QQpO'#D_O%[QlO'#JvO##sQpO'#JvO##}QpO'#DmO#$`QpO'#DmO#&qQlO'#DmO#&xQ`O'#JuO#'QQ`O,5:WO#'VQ`O'#EtO#'eQ`O'#KUO#'mQ`O,5;_O#'rQpO'#DmO#(PQpO'#EVOOQ!0Lf,5:o,5:oO%[QlO,5:oO#(WQ`O,5:oO?YQ`O,5;YO!CUQpO,5;YO!C^QMhO,5;YO:dQMhO,5;YO#(`Q`O,5@bO#(eQ07dO,5:sOOQO-EPO$6^Q`O,5>POOQ[1G3i1G3iO`QlO1G3iOOQ[1G3o1G3oOOQ[1G3q1G3qO?TQ`O1G3sO$6cQlO1G3uO$:gQlO'#HtOOQ[1G3x1G3xO$:tQ`O'#HzO?YQ`O'#H|OOQ[1G4O1G4OO$:|QlO1G4OO9uQ!0LrO1G4UOOQ[1G4W1G4WOOQ!0Lb'#G_'#G_O9uQ!0LrO1G4YO9uQ!0LrO1G4[O$?TQ`O,5@bO!)[QlO,5;`O9eQ`O,5;`O?YQ`O,5:XO!)[QlO,5:XO!CUQpO,5:XO$?YQ?MtO,5:XOOQO,5;`,5;`O$?dQpO'#IeO$?zQ`O,5@aOOQ!0Lf1G/r1G/rO$@SQpO'#IkO$@^Q`O,5@pOOQ!0Lb1G0y1G0yO#$`QpO,5:XOOQO'#Ig'#IgO$@fQpO,5:qOOQ!0Ln,5:q,5:qO#(ZQ`O1G0ZOOQ!0Lf1G0Z1G0ZO%[QlO1G0ZOOQ!0Lf1G0t1G0tO?YQ`O1G0tO!CUQpO1G0tO!C^QMhO1G0tOOQ!0Lb1G5|1G5|O!ByQ!0LrO1G0^OOQO1G0m1G0mO%[QlO1G0mO$@mQ!0LrO1G0mO$@xQ!0LrO1G0mO!CUQpO1G0^ODWQpO1G0^O$AWQ!0LrO1G0mOOQO1G0^1G0^O$AlQ!0MxO1G0mPOOO-E<[-E<[POOO1G.h1G.hOOOO1G/i1G/iO$AvQ!bO,5QQpO,5@}OOQ!0Lb1G3c1G3cOOQ[7+$V7+$VO@zQ`O7+$VO9uQ!0LrO7+$VO%>]Q`O7+$VO%[QlO1G6lO%[QlO1G6mO%>bQ!0LrO1G6lO%>lQlO1G3kO%>sQ`O1G3kO%>xQlO1G3kOOQ[7+)T7+)TO9uQ!0LrO7+)_O`QlO7+)aOOQ['#Kh'#KhOOQ['#JS'#JSO%?PQlO,5>`OOQ[,5>`,5>`O%[QlO'#HuO%?^Q`O'#HwOOQ[,5>f,5>fO9eQ`O,5>fOOQ[,5>h,5>hOOQ[7+)j7+)jOOQ[7+)p7+)pOOQ[7+)t7+)tOOQ[7+)v7+)vO%?cQpO1G5|O%?}Q?MtO1G0zO%@XQ`O1G0zOOQO1G/s1G/sO%@dQ?MtO1G/sO?YQ`O1G/sO!)[QlO'#DmOOQO,5?P,5?POOQO-ERQ`O7+,WO&>WQ`O7+,XO%[QlO7+,WO%[QlO7+,XOOQ[7+)V7+)VO&>]Q`O7+)VO&>bQlO7+)VO&>iQ`O7+)VOOQ[<nQ`O,5>aOOQ[,5>c,5>cO&>sQ`O1G4QO9eQ`O7+&fO!)[QlO7+&fOOQO7+%_7+%_O&>xQ?MtO1G6ZO?YQ`O7+%_OOQ!0Lf<yQ?MvO,5?aO'@|Q?MvO,5?cO'CPQ?MvO7+'|O'DuQMjOG27TOOQO<VO!l$xO#jROe!iOpkOrPO(T)]O(VTO(YUO(aVO(o[O~O!]$_Oa$qa'z$qa'w$qa!k$qa!Y$qa!_$qa%i$qa!g$qa~Ol)dO~P!&zOh%VOp%WOr%XOs$tOt$tOz%YO|%ZO!O%]O!S${O!_$|O!i%bO!l$xO#j%cO$W%`O$t%^O$v%_O$y%aO(T(vO(VTO(YUO(a$uO(y$}O(z%PO~Og(pP~P!,TO!Q)iO!g)hO!_$^X$Z$^X$]$^X$_$^X$f$^X~O!g)hO!_({X$Z({X$]({X$_({X$f({X~O!Q)iO~P!.^O!Q)iO!_({X$Z({X$]({X$_({X$f({X~O!_)kO$Z)oO$])jO$_)jO$f)pO~O![)sO~P!)[O$]$hO$_$gO$f)wO~On$zX!Q$zX#S$zX'y$zX(y$zX(z$zX~OgmXg$zXnmX!]mX#`mX~P!0SOx)yO(b)zO(c)|O~On*VO!Q*OO'y*PO(y$}O(z%PO~Og)}O~P!1WOg*WO~Oh%VOr%XOs$tOt$tOz%YO|%ZO!OVO!l$xO#jVO!l$xO#jROe!iOpkOrPO(VTO(YUO(aVO(o[O~O(T=QO~P#$qO!]-]O!^(iX~O!^-_O~O!g-VO#`-UO!]#hX!^#hX~O!]-`O!^(xX~O!^-bO~O!c-cO!d-cO(U!lO~P#$`O!^-fO~P'_On-iO!_'`O~O!Y-nO~Os!{a!b!{a!c!{a!d!{a#T!{a#U!{a#V!{a#W!{a#X!{a#[!{a#]!{a(U!{a(V!{a(Y!{a(e!{a(o!{a~P!#vO!p-sO#`-qO~PChO!c-uO!d-uO(U!lO~PDWOa%nO#`-qO'z%nO~Oa%nO!g#vO#`-qO'z%nO~Oa%nO!g#vO!p-sO#`-qO'z%nO(r'pO~O(P'xO(Q'xO(R-zO~Ov-{O~O!Y'Wa!]'Wa~P!:tO![.PO!Y'WX!]'WX~P%[O!](VO!Y(ha~O!Y(ha~PHRO!](^O!Y(va~O!S%hO![.TO!_%iO(T%gO!Y'^X!]'^X~O#`.VO!](ta!k(taa(ta'z(ta~O!g#vO~P#,wO!](jO!k(sa~O!S%hO!_%iO#j.ZO(T%gO~Op.`O!S%hO![.]O!_%iO!|]O#i._O#j.]O(T%gO!]'aX!k'aX~OR.dO!l#xO~Oh%VOn.gO!_'`O%i.fO~Oa#ci!]#ci'z#ci'w#ci!Y#ci!k#civ#ci!_#ci%i#ci!g#ci~P!:tOn>]O!Q*OO'y*PO(y$}O(z%PO~O#k#_aa#_a#`#_a'z#_a!]#_a!k#_a!_#_a!Y#_a~P#/sO#k(`XP(`XR(`X[(`Xa(`Xj(`Xr(`X!S(`X!l(`X!p(`X#R(`X#n(`X#o(`X#p(`X#q(`X#r(`X#s(`X#t(`X#u(`X#v(`X#x(`X#z(`X#{(`X'z(`X(a(`X(r(`X!k(`X!Y(`X'w(`Xv(`X!_(`X%i(`X!g(`X~P!6kO!].tO!k(kX~P!:tO!k.wO~O!Y.yO~OP$[OR#zO!Q#yO!S#{O!l#xO!p$[O(aVO[#mia#mij#mir#mi!]#mi#R#mi#o#mi#p#mi#q#mi#r#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi'z#mi(r#mi(y#mi(z#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#n#mi~P#3cO#n$OO~P#3cOP$[OR#zOr$aO!Q#yO!S#{O!l#xO!p$[O#n$OO#o$PO#p$PO#q$PO(aVO[#mia#mij#mi!]#mi#R#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi'z#mi(r#mi(y#mi(z#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#r#mi~P#6QO#r$QO~P#6QOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO(aVOa#mi!]#mi#x#mi#z#mi#{#mi'z#mi(r#mi(y#mi(z#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#v#mi~P#8oOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO(aVO(z#}Oa#mi!]#mi#z#mi#{#mi'z#mi(r#mi(y#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#x$UO~P#;VO#x#mi~P#;VO#v$SO~P#8oOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO#x$UO(aVO(y#|O(z#}Oa#mi!]#mi#{#mi'z#mi(r#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#z#mi~P#={O#z$WO~P#={OP]XR]X[]Xj]Xr]X!Q]X!S]X!l]X!p]X#R]X#S]X#`]X#kfX#n]X#o]X#p]X#q]X#r]X#s]X#t]X#u]X#v]X#x]X#z]X#{]X$Q]X(a]X(r]X(y]X(z]X!]]X!^]X~O$O]X~P#@jOP$[OR#zO[]O!Q*OO'y*PO(y$}O(z%POP#miR#mi!S#mi!l#mi!p#mi#n#mi#o#mi#p#mi#q#mi(a#mi~P#EyO!]/POg(pX~P!1WOg/RO~Oa$Pi!]$Pi'z$Pi'w$Pi!Y$Pi!k$Piv$Pi!_$Pi%i$Pi!g$Pi~P!:tO$]/SO$_/SO~O$]/TO$_/TO~O!g)hO#`/UO!_$cX$Z$cX$]$cX$_$cX$f$cX~O![/VO~O!_)kO$Z/XO$])jO$_)jO$f/YO~O!]VO!l$xO#j^O!Q*OO'y*PO(y$}O(z%POP#miR#mi!S#mi!l#mi!p#mi#n#mi#o#mi#p#mi#q#mi(a#mi~P&,QO#S$dOP(`XR(`X[(`Xj(`Xn(`Xr(`X!Q(`X!S(`X!l(`X!p(`X#R(`X#n(`X#o(`X#p(`X#q(`X#r(`X#s(`X#t(`X#u(`X#v(`X#x(`X#z(`X#{(`X$O(`X'y(`X(a(`X(r(`X(y(`X(z(`X!](`X!^(`X~O$O$Pi!]$Pi!^$Pi~P#BwO$O!ri!^!ri~P$+oOg']a!]']a~P!1WO!^7nO~O!]'da!^'da~P#BwO!Y7oO~P#/sO!g#vO(r'pO!]'ea!k'ea~O!]/pO!k)Oi~O!]/pO!g#vO!k)Oi~Og$|q!]$|q#`$|q$O$|q~P!1WO!Y'ga!]'ga~P#/sO!g7vO~O!]/yO!Y)Pi~P#/sO!]/yO!Y)Pi~O!Y7yO~Oh%VOr8OO!l%eO(r'pO~Oj8QO!g#vO~Or8TO!g#vO(r'pO~O!Q*OO'y*PO(z%POn'ja(y'ja!]'ja#`'ja~Og'ja$O'ja~P&5RO!Q*OO'y*POn'la(y'la(z'la!]'la#`'la~Og'la$O'la~P&5tOg(_q!](_q~P!1WO#`8VOg(_q!](_q~P!1WO!Y8WO~Og%Oq!]%Oq#`%Oq$O%Oq~P!1WOa$oy!]$oy'z$oy'w$oy!Y$oy!k$oyv$oy!_$oy%i$oy!g$oy~P!:tO!g6rO~O!]5[O!_)Qa~O!_'`OP$TaR$Ta[$Taj$Tar$Ta!Q$Ta!S$Ta!]$Ta!l$Ta!p$Ta#R$Ta#n$Ta#o$Ta#p$Ta#q$Ta#r$Ta#s$Ta#t$Ta#u$Ta#v$Ta#x$Ta#z$Ta#{$Ta(a$Ta(r$Ta(y$Ta(z$Ta~O%i7WO~P&8fO%^8[Oa%[i!_%[i'z%[i!]%[i~Oa#cy!]#cy'z#cy'w#cy!Y#cy!k#cyv#cy!_#cy%i#cy!g#cy~P!:tO[8^O~Ob8`O(T+qO(VTO(YUO~O!]1TO!^)Xi~O`8dO~O(e(|O!]'pX!^'pX~O!]5uO!^)Ua~O!^8nO~P%;eO(o!sO~P$&YO#[8oO~O!_1oO~O!_1oO%i8qO~On8tO!_1oO%i8qO~O[8yO!]'sa!^'sa~O!]1zO!^)Vi~O!k8}O~O!k9OO~O!k9RO~O!k9RO~P%[Oa9TO~O!g9UO~O!k9VO~O!](wi!^(wi~P#BwOa%nO#`9_O'z%nO~O!](ty!k(tya(ty'z(ty~P!:tO!](jO!k(sy~O%i9bO~P&8fO!_'`O%i9bO~O#k$|qP$|qR$|q[$|qa$|qj$|qr$|q!S$|q!]$|q!l$|q!p$|q#R$|q#n$|q#o$|q#p$|q#q$|q#r$|q#s$|q#t$|q#u$|q#v$|q#x$|q#z$|q#{$|q'z$|q(a$|q(r$|q!k$|q!Y$|q'w$|q#`$|qv$|q!_$|q%i$|q!g$|q~P#/sO#k'jaP'jaR'ja['jaa'jaj'jar'ja!S'ja!l'ja!p'ja#R'ja#n'ja#o'ja#p'ja#q'ja#r'ja#s'ja#t'ja#u'ja#v'ja#x'ja#z'ja#{'ja'z'ja(a'ja(r'ja!k'ja!Y'ja'w'jav'ja!_'ja%i'ja!g'ja~P&5RO#k'laP'laR'la['laa'laj'lar'la!S'la!l'la!p'la#R'la#n'la#o'la#p'la#q'la#r'la#s'la#t'la#u'la#v'la#x'la#z'la#{'la'z'la(a'la(r'la!k'la!Y'la'w'lav'la!_'la%i'la!g'la~P&5tO#k%OqP%OqR%Oq[%Oqa%Oqj%Oqr%Oq!S%Oq!]%Oq!l%Oq!p%Oq#R%Oq#n%Oq#o%Oq#p%Oq#q%Oq#r%Oq#s%Oq#t%Oq#u%Oq#v%Oq#x%Oq#z%Oq#{%Oq'z%Oq(a%Oq(r%Oq!k%Oq!Y%Oq'w%Oq#`%Oqv%Oq!_%Oq%i%Oq!g%Oq~P#/sO!]'Yi!k'Yi~P!:tO$O#cq!]#cq!^#cq~P#BwO(y$}OP%aaR%aa[%aaj%aar%aa!S%aa!l%aa!p%aa#R%aa#n%aa#o%aa#p%aa#q%aa#r%aa#s%aa#t%aa#u%aa#v%aa#x%aa#z%aa#{%aa$O%aa(a%aa(r%aa!]%aa!^%aa~On%aa!Q%aa'y%aa(z%aa~P&IyO(z%POP%caR%ca[%caj%car%ca!S%ca!l%ca!p%ca#R%ca#n%ca#o%ca#p%ca#q%ca#r%ca#s%ca#t%ca#u%ca#v%ca#x%ca#z%ca#{%ca$O%ca(a%ca(r%ca!]%ca!^%ca~On%ca!Q%ca'y%ca(y%ca~P&LQOn>^O!Q*OO'y*PO(z%PO~P&IyOn>^O!Q*OO'y*PO(y$}O~P&LQOR0kO!Q0kO!S0lO#S$dOP}a[}aj}an}ar}a!l}a!p}a#R}a#n}a#o}a#p}a#q}a#r}a#s}a#t}a#u}a#v}a#x}a#z}a#{}a$O}a'y}a(a}a(r}a(y}a(z}a!]}a!^}a~O!Q*OO'y*POP$saR$sa[$saj$san$sar$sa!S$sa!l$sa!p$sa#R$sa#n$sa#o$sa#p$sa#q$sa#r$sa#s$sa#t$sa#u$sa#v$sa#x$sa#z$sa#{$sa$O$sa(a$sa(r$sa(y$sa(z$sa!]$sa!^$sa~O!Q*OO'y*POP$uaR$ua[$uaj$uan$uar$ua!S$ua!l$ua!p$ua#R$ua#n$ua#o$ua#p$ua#q$ua#r$ua#s$ua#t$ua#u$ua#v$ua#x$ua#z$ua#{$ua$O$ua(a$ua(r$ua(y$ua(z$ua!]$ua!^$ua~On>^O!Q*OO'y*PO(y$}O(z%PO~OP%TaR%Ta[%Taj%Tar%Ta!S%Ta!l%Ta!p%Ta#R%Ta#n%Ta#o%Ta#p%Ta#q%Ta#r%Ta#s%Ta#t%Ta#u%Ta#v%Ta#x%Ta#z%Ta#{%Ta$O%Ta(a%Ta(r%Ta!]%Ta!^%Ta~P''VO$O$mq!]$mq!^$mq~P#BwO$O$oq!]$oq!^$oq~P#BwO!^9oO~O$O9pO~P!1WO!g#vO!]'ei!k'ei~O!g#vO(r'pO!]'ei!k'ei~O!]/pO!k)Oq~O!Y'gi!]'gi~P#/sO!]/yO!Y)Pq~Or9wO!g#vO(r'pO~O[9yO!Y9xO~P#/sO!Y9xO~Oj:PO!g#vO~Og(_y!](_y~P!1WO!]'na!_'na~P#/sOa%[q!_%[q'z%[q!]%[q~P#/sO[:UO~O!]1TO!^)Xq~O`:YO~O#`:ZO!]'pa!^'pa~O!]5uO!^)Ui~P#BwO!S:]O~O!_1oO%i:`O~O(VTO(YUO(e:eO~O!]1zO!^)Vq~O!k:hO~O!k:iO~O!k:jO~O!k:jO~P%[O#`:mO!]#hy!^#hy~O!]#hy!^#hy~P#BwO%i:rO~P&8fO!_'`O%i:rO~O$O#|y!]#|y!^#|y~P#BwOP$|iR$|i[$|ij$|ir$|i!S$|i!l$|i!p$|i#R$|i#n$|i#o$|i#p$|i#q$|i#r$|i#s$|i#t$|i#u$|i#v$|i#x$|i#z$|i#{$|i$O$|i(a$|i(r$|i!]$|i!^$|i~P''VO!Q*OO'y*PO(z%POP'iaR'ia['iaj'ian'iar'ia!S'ia!l'ia!p'ia#R'ia#n'ia#o'ia#p'ia#q'ia#r'ia#s'ia#t'ia#u'ia#v'ia#x'ia#z'ia#{'ia$O'ia(a'ia(r'ia(y'ia!]'ia!^'ia~O!Q*OO'y*POP'kaR'ka['kaj'kan'kar'ka!S'ka!l'ka!p'ka#R'ka#n'ka#o'ka#p'ka#q'ka#r'ka#s'ka#t'ka#u'ka#v'ka#x'ka#z'ka#{'ka$O'ka(a'ka(r'ka(y'ka(z'ka!]'ka!^'ka~O(y$}OP%aiR%ai[%aij%ain%air%ai!Q%ai!S%ai!l%ai!p%ai#R%ai#n%ai#o%ai#p%ai#q%ai#r%ai#s%ai#t%ai#u%ai#v%ai#x%ai#z%ai#{%ai$O%ai'y%ai(a%ai(r%ai(z%ai!]%ai!^%ai~O(z%POP%ciR%ci[%cij%cin%cir%ci!Q%ci!S%ci!l%ci!p%ci#R%ci#n%ci#o%ci#p%ci#q%ci#r%ci#s%ci#t%ci#u%ci#v%ci#x%ci#z%ci#{%ci$O%ci'y%ci(a%ci(r%ci(y%ci!]%ci!^%ci~O$O$oy!]$oy!^$oy~P#BwO$O#cy!]#cy!^#cy~P#BwO!g#vO!]'eq!k'eq~O!]/pO!k)Oy~O!Y'gq!]'gq~P#/sOr:|O!g#vO(r'pO~O[;QO!Y;PO~P#/sO!Y;PO~Og(_!R!](_!R~P!1WOa%[y!_%[y'z%[y!]%[y~P#/sO!]1TO!^)Xy~O!]5uO!^)Uq~O(T;XO~O!_1oO%i;[O~O!k;_O~O%i;dO~P&8fOP$|qR$|q[$|qj$|qr$|q!S$|q!l$|q!p$|q#R$|q#n$|q#o$|q#p$|q#q$|q#r$|q#s$|q#t$|q#u$|q#v$|q#x$|q#z$|q#{$|q$O$|q(a$|q(r$|q!]$|q!^$|q~P''VO!Q*OO'y*PO(z%POP'jaR'ja['jaj'jan'jar'ja!S'ja!l'ja!p'ja#R'ja#n'ja#o'ja#p'ja#q'ja#r'ja#s'ja#t'ja#u'ja#v'ja#x'ja#z'ja#{'ja$O'ja(a'ja(r'ja(y'ja!]'ja!^'ja~O!Q*OO'y*POP'laR'la['laj'lan'lar'la!S'la!l'la!p'la#R'la#n'la#o'la#p'la#q'la#r'la#s'la#t'la#u'la#v'la#x'la#z'la#{'la$O'la(a'la(r'la(y'la(z'la!]'la!^'la~OP%OqR%Oq[%Oqj%Oqr%Oq!S%Oq!l%Oq!p%Oq#R%Oq#n%Oq#o%Oq#p%Oq#q%Oq#r%Oq#s%Oq#t%Oq#u%Oq#v%Oq#x%Oq#z%Oq#{%Oq$O%Oq(a%Oq(r%Oq!]%Oq!^%Oq~P''VOg%e!Z!]%e!Z#`%e!Z$O%e!Z~P!1WO!Y;hO~P#/sOr;iO!g#vO(r'pO~O[;kO!Y;hO~P#/sO!]'pq!^'pq~P#BwO!]#h!Z!^#h!Z~P#BwO#k%e!ZP%e!ZR%e!Z[%e!Za%e!Zj%e!Zr%e!Z!S%e!Z!]%e!Z!l%e!Z!p%e!Z#R%e!Z#n%e!Z#o%e!Z#p%e!Z#q%e!Z#r%e!Z#s%e!Z#t%e!Z#u%e!Z#v%e!Z#x%e!Z#z%e!Z#{%e!Z'z%e!Z(a%e!Z(r%e!Z!k%e!Z!Y%e!Z'w%e!Z#`%e!Zv%e!Z!_%e!Z%i%e!Z!g%e!Z~P#/sOr;tO!g#vO(r'pO~O!Y;uO~P#/sOr;|O!g#vO(r'pO~O!Y;}O~P#/sOP%e!ZR%e!Z[%e!Zj%e!Zr%e!Z!S%e!Z!l%e!Z!p%e!Z#R%e!Z#n%e!Z#o%e!Z#p%e!Z#q%e!Z#r%e!Z#s%e!Z#t%e!Z#u%e!Z#v%e!Z#x%e!Z#z%e!Z#{%e!Z$O%e!Z(a%e!Z(r%e!Z!]%e!Z!^%e!Z~P''VOrROe!iOpkOrPO(T)]O(VTO(YUO(aVO(o[O~O!]WO!l$xO#jgPPP!>oI[PPPPPPPPP!BOP!C]PPI[!DnPI[PI[I[I[I[I[PI[!FQP!I[P!LbP!Lf!Lp!Lt!LtP!IXP!Lx!LxP#!OP#!SI[PI[#!Y#%_CjA^PA^PA^A^P#&lA^A^#)OA^#+vA^#.SA^A^#.r#1W#1W#1]#1f#1W#1qPP#1WPA^#2ZA^#6YA^A^6mPPP#:_PPP#:x#:xP#:xP#;`#:xPP#;fP#;]P#;]#;y#;]#P#>V#>]#>k#>q#>{#?R#?]#?c#?s#?y#@k#@}#AT#AZ#Ai#BO#Cs#DR#DY#Et#FS#Gt#HS#HY#H`#Hf#Hp#Hv#H|#IW#Ij#IpPPPPPPPPPPP#IvPPPPPPP#Jk#Mx$ b$ i$ qPPP$']P$'f$*_$0x$0{$1O$1}$2Q$2X$2aP$2g$2jP$3W$3[$4S$5b$5g$5}PP$6S$6Y$6^$6a$6e$6i$7e$7|$8e$8i$8l$8o$8y$8|$9Q$9UR!|RoqOXst!Z#d%m&r&t&u&w,s,x2[2_Y!vQ'`-e1o5{Q%tvQ%|yQ&T|Q&j!VS'W!e-]Q'f!iS'l!r!yU*k$|*Z*oQ+o%}S+|&V&WQ,d&dQ-c'_Q-m'gQ-u'mQ0[*qQ1b,OQ1y,eR<{SU+P%]S!S!nQ!r!v!y!z$|'W'_'`'l'm'n*k*o*q*r-]-c-e-u0[0_1o5{5}%[$ti#v$b$c$d$x${%O%Q%^%_%c)y*R*T*V*Y*a*g*w*x+f+i,S,V.f/P/d/m/x/y/{0`0b0i0j0o1f1i1q3c4^4_4j4o5Q5[5_6S7W7v8Q8V8[8q9b9p9y:P:`:r;Q;[;d;kP>X>Y>]>^Q&X|Q'U!eS'[%i-`Q+t&PQ,P&WQ,f&gQ0n+SQ1Y+uQ1_+{Q2Q,jQ2R,kQ5f1TQ5o1aQ6[1zQ6_1|Q6`2PQ8`5gQ8c5lQ8|6bQ:X8dQ:f8yQ;V:YR<}*ZrnOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_R,h&k&z^OPXYstuvwz!Z!`!g!j!o#S#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'b'r(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:mR>S[#]WZ#W#Z'X(T!b%jm#h#i#l$x%e%h(^(h(i(j*Y*^*b+Z+[+^,o-V.T.Z.[.]._/m/p2d3[3]4a6r7TQ%wxQ%{yW&Q|&V&W,OQ&_!TQ'c!hQ'e!iQ(q#sS+n%|%}Q+r&PQ,_&bQ,c&dS-l'f'gQ.i(rQ1R+oQ1X+uQ1Z+vQ1^+zQ1t,`S1x,d,eQ2|-mQ5e1TQ5i1WQ5n1`Q6Z1yQ8_5gQ8b5kQ8f5pQ:T8^R;T:U!U$zi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y!^%yy!i!u%{%|%}'V'e'f'g'k'u*j+n+o-Y-l-m-t0R0U1R2u2|3T4r4s4v7}9{Q+h%wQ,T&[Q,W&]Q,b&dQ.h(qQ1s,_U1w,c,d,eQ3e.iQ6U1tS6Y1x1yQ8x6Z#f>T#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k]>^o>UPS&[!Q&iQ&]!RQ&^!SU*}%[%d=sR,R&Y%]%Si#v$b$c$d$x${%O%Q%^%_%c)y*R*T*V*Y*a*g*w*x+f+i,S,V.f/P/d/m/x/y/{0`0b0i0j0o1f1i1q3c4^4_4j4o5Q5[5_6S7W7v8Q8V8[8q9b9p9y:P:`:r;Q;[;d;kP>X>Y>]>^T)z$u){V+P%]S$i$^c#Y#e%q%s%u(S(Y(t(y)R)S)T)U)V)W)X)Y)Z)[)^)`)b)g)q+d+x-Z-x-}.S.U.s.v.z.|.}/O/b0p2k2n3O3V3k3p3q3r3s3t3u3v3w3x3y3z3{3|4P4Q4X5X5c6u6{7Q7a7b7k7l8k9X9]9g9m9n:o;W;`SQ'Y!eR2q-]!W!nQ!e!r!v!y!z$|'W'_'`'l'm'n*Z*k*o*q*r-]-c-e-u0[0_1o5{5}R1l,ZnqOXst!Z#d%m&r&t&u&w,s,x2[2_Q&y!^Q'v!xS(s#u<^Q+l%zQ,]&_Q,^&aQ-j'dQ-w'oS.r(x=PS0q+X=ZQ1P+mQ1n,[Q2c,zQ2e,{Q2m-WQ2z-kQ2}-oS5Y0r=eQ5a1QS5d1S=fQ6t2oQ6x2{Q6}3SQ8]5bQ9Y6vQ9Z6yQ9^7OR:l9V$d$]c#Y#e%s%u(S(Y(t(y)R)S)T)U)V)W)X)Y)Z)[)^)`)b)g)q+d+x-Z-x-}.S.U.s.v.z.}/O/b0p2k2n3O3V3k3p3q3r3s3t3u3v3w3x3y3z3{3|4P4Q4X5X5c6u6{7Q7a7b7k7l8k9X9]9g9m9n:o;W;`SS#q]SU$fd)_,mS(p#p'iU*v%R(w4OU0m+O.n7gQ5^0xQ7V3`Q9d7YR:s9em!tQ!r!v!y!z'`'l'm'n-e-u1o5{5}Q't!uS(f#g2US-s'k'wQ/s*]Q0R*jQ3U-vQ4f/tQ4r0TQ4s0UQ4x0^Q7r4`S7}4t4vS8R4y4{Q9r7sQ9v7yQ9{8OQ:Q8TS:{9w9xS;g:|;PS;s;h;iS;{;t;uSSR=o>R%^bOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_Q%fj!^%xy!i!u%{%|%}'V'e'f'g'k'u*j+n+o-Y-l-m-t0R0U1R2u2|3T4r4s4v7}9{S&Oz!jQ+k%yQ,a&dW1v,b,c,d,eU6X1w1x1yS8w6Y6ZQ:d8x!r=j$Z$n'X)s-U-X/V2p4T5w6s:Z:mSQ=t>QR=u>R%QeOPXYstuvw!Z!`!g!o#S#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&r&t&u&w&{'T'b'r(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_Y#bWZ#W#Z(T!b%jm#h#i#l$x%e%h(^(h(i(j*Y*^*b+Z+[+^,o-V.T.Z.[.]._/m/p2d3[3]4a6r7TQ,n&o!p=k$Z$n)s-U-X/V2p4T5w6s:Z:mSR=n'XU']!e%i*ZR2s-`%SdOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+],p,s,x-i-q.P.V.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3l4z6T6e6f6i6|8t9T9_!r)_$Z$n'X)s-U-X/V2p4T5w6s:Z:mSQ,m&oQ0x+gQ3`.gQ7Y3dR9e7[!b$Tc#Y%q(S(Y(t(y)Z)[)`)g+x-x-}.S.U.s.v/b0p3O3V3k3{5X5c6{7Q7a9]:oS)^)q-Z.|2k2n3p4P4X6u7b7k7l8k9X9g9m9n;W;`=vQ>X>ZR>Y>['QkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:mSS$oh$pR4U/U'XgOPWXYZhstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n$p%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/U/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:mST$kf$qQ$ifS)j$l)nR)v$qT$jf$qT)l$l)n'XhOPWXYZhstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n$p%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/U/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:mST$oh$pQ$rhR)u$p%^jOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_!s>Q$Z$n'X)s-U-X/V2p4T5w6s:Z:mS#glOPXZst!Z!`!o#S#d#o#{$n%m&k&n&o&r&t&u&w&{'T'b)O)s*i+]+g,p,s,x-i.g/V/n0]0l1r2S2T2V2X2[2_2a3d4T4z6T6e6f6i7[8t9T!U%Ri$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y#f(w#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k]>^Q+T%aQ/c*Oo4OP>X>YQ*c$zU*l$|*Z*oQ+U%bQ0W*m#f=q#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k]>^n=rTQ=x>UQ=y>VR=z>W!U%Ri$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y#f(w#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k]>^o4OP>X>Y>]>^Q,U&]Q1h,WQ5s1gR8h5tV*n$|*Z*oU*n$|*Z*oT5z1o5{S0P*i/nQ4w0]T8S4z:]Q+j%xQ0V*lQ1O+kQ1u,aQ6W1vQ8v6XQ:c8wR;^:d!U%Oi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Yx*R$v)e*S*u+V/v0d0e4R4g5R5S5W7p8U:R:x=p=}>OS0`*t0a#f]>^nZ>[`=T3}7c7f7j9h:t:w;yS=_.l3iT=`7e9k!U%Qi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y|*T$v)e*U*t+V/g/v0d0e4R4g4|5R5S5W7p8U:R:x=p=}>OS0b*u0c#f]>^nZ>[d=V3}7d7e7j9h9i:t:u:w;yS=a.m3jT=b7f9lrnOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_Q&f!UR,p&ornOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_R&f!UQ,Y&^R1d,RsnOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_Q1p,_S6R1s1tU8p6P6Q6US:_8r8sS;Y:^:aQ;m;ZR;w;nQ&m!VR,i&iR6_1|R:f8yW&Q|&V&W,OR1Z+vQ&r!WR,s&sR,y&xT2],x2_R,}&yQ,|&yR2f,}Q'y!{R-y'ySsOtQ#dXT%ps#dQ#OTR'{#OQ#RUR'}#RQ){$uR/`){Q#UVR(Q#UQ#XWU(W#X(X.QQ(X#YR.Q(YQ-^'YR2r-^Q.u(yS3m.u3nR3n.vQ-e'`R2v-eY!rQ'`-e1o5{R'j!rQ/Q)eR4S/QU#_W%h*YU(_#_(`.RQ(`#`R.R(ZQ-a']R2t-at`OXst!V!Z#d%m&i&k&r&t&u&w,s,x2[2_S#hZ%eU#r`#h.[R.[(jQ(k#jQ.X(gW.a(k.X3X7RQ3X.YR7R3YQ)n$lR/W)nQ$phR)t$pQ$`cU)a$`-|O>Z>[Q/z*eU4k/z4m7xQ4m/|R7x4lS*o$|*ZR0Y*ox*S$v)e*t*u+V/v0d0e4R4g5R5S5W7p8U:R:x=p=}>O!d.j(u)c*[*e.l.m.q/_/k/|0v1e3h4[4h4l5r7]7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[U/h*S.j7ca7c3}7e7f7j9h:t:w;yQ0a*tQ3i.lU4}0a3i9kR9k7e|*U$v)e*t*u+V/g/v0d0e4R4g4|5R5S5W7p8U:R:x=p=}>O!h.k(u)c*[*e.l.m.q/_/k/|0v1e3f3h4[4h4l5r7]7^7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[U/j*U.k7de7d3}7e7f7j9h9i:t:u:w;yQ0c*uQ3j.mU5P0c3j9lR9l7fQ*z%UR0g*zQ5]0vR8Y5]Q+_%kR0u+_Q5v1jS8j5v:[R:[8kQ,[&_R1m,[Q5{1oR8m5{Q1{,fS6]1{8zR8z6_Q1U+rW5h1U5j8a:VQ5j1XQ8a5iR:V8bQ+w&QR1[+wQ2_,xR6m2_YrOXst#dQ&v!ZQ+a%mQ,r&rQ,t&tQ,u&uQ,w&wQ2Y,sS2],x2_R6l2[Q%opQ&z!_Q&}!aQ'P!bQ'R!cQ'q!uQ+`%lQ+l%zQ,Q&XQ,h&mQ-P&|W-p'k's't'wQ-w'oQ0X*nQ1P+mQ1c,PS2O,i,lQ2g-OQ2h-RQ2i-SQ2}-oW3P-r-s-v-xQ5a1QQ5m1_Q5q1eQ6V1uQ6a2QQ6k2ZU6z3O3R3UQ6}3SQ8]5bQ8e5oQ8g5rQ8l5zQ8u6WQ8{6`S9[6{7PQ9^7OQ:W8cQ:b8vQ:g8|Q:n9]Q;U:XQ;]:cQ;a:oQ;l;VR;o;^Q%zyQ'd!iQ'o!uU+m%{%|%}Q-W'VU-k'e'f'gS-o'k'uQ0Q*jS1Q+n+oQ2o-YS2{-l-mQ3S-tS4p0R0UQ5b1RQ6v2uQ6y2|Q7O3TU7{4r4s4vQ9z7}R;O9{S$wi>PR*{%VU%Ui%V>PR0f*yQ$viS(u#v+iS)c$b$cQ)e$dQ*[$xS*e${*YQ*t%OQ*u%QQ+Q%^Q+R%_Q+V%cQ.lPQ=}>XQ>O>YQ>Z>]R>[>^Q+O%]Q.nSR#[WR'Z!el!tQ!r!v!y!z'`'l'm'n-e-u1o5{5}S'V!e-]U*j$|*Z*oS-Y'W'_S0U*k*qQ0^*rQ2u-cQ4v0[R4{0_R({#xQ!fQT-d'`-e]!qQ!r'`-e1o5{Q#p]R'i < TypeParamList in out const TypeDefinition extends ThisType this LiteralType ArithOp Number BooleanLiteral TemplateType InterpolationEnd Interpolation InterpolationStart NullType null VoidType void TypeofType typeof MemberExpression . PropertyName [ TemplateString Escape Interpolation super RegExp ] ArrayExpression Spread , } { ObjectExpression Property async get set PropertyDefinition Block : NewTarget new NewExpression ) ( ArgList UnaryExpression delete LogicOp BitOp YieldExpression yield AwaitExpression await ParenthesizedExpression ClassExpression class ClassBody MethodDeclaration Decorator @ MemberExpression PrivatePropertyName CallExpression TypeArgList CompareOp < declare Privacy static abstract override PrivatePropertyDefinition PropertyDeclaration readonly accessor Optional TypeAnnotation Equals StaticBlock FunctionExpression ArrowFunction ParamList ParamList ArrayPattern ObjectPattern PatternProperty Privacy readonly Arrow MemberExpression BinaryExpression ArithOp ArithOp ArithOp ArithOp BitOp CompareOp instanceof satisfies CompareOp BitOp BitOp BitOp LogicOp LogicOp ConditionalExpression LogicOp LogicOp AssignmentExpression UpdateOp PostfixExpression CallExpression InstantiationExpression TaggedTemplateExpression DynamicImport import ImportMeta JSXElement JSXSelfCloseEndTag JSXSelfClosingTag JSXIdentifier JSXBuiltin JSXIdentifier JSXNamespacedName JSXMemberExpression JSXSpreadAttribute JSXAttribute JSXAttributeValue JSXEscape JSXEndTag JSXOpenTag JSXFragmentTag JSXText JSXEscape JSXStartCloseTag JSXCloseTag PrefixCast < ArrowFunction TypeParamList SequenceExpression InstantiationExpression KeyofType keyof UniqueType unique ImportType InferredType infer TypeName ParenthesizedType FunctionSignature ParamList NewSignature IndexedType TupleType Label ArrayType ReadonlyType ObjectType MethodType PropertyType IndexSignature PropertyDefinition CallSignature TypePredicate asserts is NewSignature new UnionType LogicOp IntersectionType LogicOp ConditionalType ParameterizedType ClassDeclaration abstract implements type VariableDeclaration let var using TypeAliasDeclaration InterfaceDeclaration interface EnumDeclaration enum EnumBody NamespaceDeclaration namespace module AmbientDeclaration declare GlobalDeclaration global ClassDeclaration ClassBody AmbientFunctionDeclaration ExportGroup VariableName VariableName ImportDeclaration defer ImportGroup ForStatement for ForSpec ForInSpec ForOfSpec of WhileStatement while WithStatement with DoStatement do IfStatement if else SwitchStatement switch SwitchBody CaseLabel case DefaultLabel TryStatement try CatchClause catch FinallyClause finally ReturnStatement return ThrowStatement throw BreakStatement break ContinueStatement continue DebuggerStatement debugger LabeledStatement ExpressionStatement SingleExpression SingleClassItem",maxTerm:380,context:LT,nodeProps:[["isolate",-8,5,6,14,37,39,51,53,55,""],["group",-26,9,17,19,68,207,211,215,216,218,221,224,234,237,243,245,247,249,252,258,264,266,268,270,272,274,275,"Statement",-34,13,14,32,35,36,42,51,54,55,57,62,70,72,76,80,82,84,85,110,111,120,121,136,139,141,142,143,144,145,147,148,167,169,171,"Expression",-23,31,33,37,41,43,45,173,175,177,178,180,181,182,184,185,186,188,189,190,201,203,205,206,"Type",-3,88,103,109,"ClassItem"],["openedBy",23,"<",38,"InterpolationStart",56,"[",60,"{",73,"(",160,"JSXStartCloseTag"],["closedBy",-2,24,168,">",40,"InterpolationEnd",50,"]",61,"}",74,")",165,"JSXEndTag"]],propSources:[jT],skippedNodes:[0,5,6,278],repeatNodeCount:37,tokenData:"$Fq07[R!bOX%ZXY+gYZ-yZ[+g[]%Z]^.c^p%Zpq+gqr/mrs3cst:_tuEruvJSvwLkwx! Yxy!'iyz!(sz{!)}{|!,q|}!.O}!O!,q!O!P!/Y!P!Q!9j!Q!R#:O!R![#<_![!]#I_!]!^#Jk!^!_#Ku!_!`$![!`!a$$v!a!b$*T!b!c$,r!c!}Er!}#O$-|#O#P$/W#P#Q$4o#Q#R$5y#R#SEr#S#T$7W#T#o$8b#o#p$x#r#s$@U#s$f%Z$f$g+g$g#BYEr#BY#BZ$A`#BZ$ISEr$IS$I_$A`$I_$I|Er$I|$I}$Dk$I}$JO$Dk$JO$JTEr$JT$JU$A`$JU$KVEr$KV$KW$A`$KW&FUEr&FU&FV$A`&FV;'SEr;'S;=`I|<%l?HTEr?HT?HU$A`?HUOEr(n%d_$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z&j&hT$i&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c&j&zP;=`<%l&c'|'U]$i&j(Z!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!b(SU(Z!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!b(iP;=`<%l'}'|(oP;=`<%l&}'[(y]$i&j(WpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(rp)wU(WpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z<%lO)rp*^P;=`<%l)r'[*dP;=`<%l(r#S*nX(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g#S+^P;=`<%l*g(n+dP;=`<%l%Z07[+rq$i&j(Wp(Z!b'|0/lOX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p$f%Z$f$g+g$g#BY%Z#BY#BZ+g#BZ$IS%Z$IS$I_+g$I_$JT%Z$JT$JU+g$JU$KV%Z$KV$KW+g$KW&FU%Z&FU&FV+g&FV;'S%Z;'S;=`+a<%l?HT%Z?HT?HU+g?HUO%Z07[.ST(X#S$i&j'}0/lO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c07[.n_$i&j(Wp(Z!b'}0/lOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z)3p/x`$i&j!p),Q(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW1V`#v(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`2X!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW2d_#v(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'At3l_(V':f$i&j(Z!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k(^4r_$i&j(Z!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k&z5vX$i&jOr5qrs6cs!^5q!^!_6y!_#o5q#o#p6y#p;'S5q;'S;=`7h<%lO5q&z6jT$d`$i&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c`6|TOr6yrs7]s;'S6y;'S;=`7b<%lO6y`7bO$d``7eP;=`<%l6y&z7kP;=`<%l5q(^7w]$d`$i&j(Z!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!r8uZ(Z!bOY8pYZ6yZr8prs9hsw8pwx6yx#O8p#O#P6y#P;'S8p;'S;=`:R<%lO8p!r9oU$d`(Z!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!r:UP;=`<%l8p(^:[P;=`<%l4k%9[:hh$i&j(Wp(Z!bOY%ZYZ&cZq%Zqr`#P#o`x!^=^!^!_?q!_#O=^#O#P>`#P#o=^#o#p?q#p;'S=^;'S;=`@h<%lO=^&n>gXWS$i&jOY>`YZ&cZ!^>`!^!_?S!_#o>`#o#p?S#p;'S>`;'S;=`?k<%lO>`S?XSWSOY?SZ;'S?S;'S;=`?e<%lO?SS?hP;=`<%l?S&n?nP;=`<%l>`!f?xWWS(Z!bOY?qZw?qwx?Sx#O?q#O#P?S#P;'S?q;'S;=`@b<%lO?q!f@eP;=`<%l?q(Q@kP;=`<%l=^'`@w]WS$i&j(WpOY@nYZ&cZr@nrs>`s!^@n!^!_Ap!_#O@n#O#P>`#P#o@n#o#pAp#p;'S@n;'S;=`Bg<%lO@ntAwWWS(WpOYApZrAprs?Ss#OAp#O#P?S#P;'SAp;'S;=`Ba<%lOAptBdP;=`<%lAp'`BjP;=`<%l@n#WBvYWS(Wp(Z!bOYBmZrBmrs?qswBmwxApx#OBm#O#P?S#P;'SBm;'S;=`Cf<%lOBm#WCiP;=`<%lBm(rCoP;=`<%l^!Q^$i&j!X7`OY!=yYZ&cZ!P!=y!P!Q!>|!Q!^!=y!^!_!@c!_!}!=y!}#O!CW#O#P!Dy#P#o!=y#o#p!@c#p;'S!=y;'S;=`!Ek<%lO!=y|#X#Z&c#Z#[!>|#[#]&c#]#^!>|#^#a&c#a#b!>|#b#g&c#g#h!>|#h#i&c#i#j!>|#j#k!>|#k#m&c#m#n!>|#n#o&c#p;'S&c;'S;=`&w<%lO&c7`!@hX!X7`OY!@cZ!P!@c!P!Q!AT!Q!}!@c!}#O!Ar#O#P!Bq#P;'S!@c;'S;=`!CQ<%lO!@c7`!AYW!X7`#W#X!AT#Z#[!AT#]#^!AT#a#b!AT#g#h!AT#i#j!AT#j#k!AT#m#n!AT7`!AuVOY!ArZ#O!Ar#O#P!B[#P#Q!@c#Q;'S!Ar;'S;=`!Bk<%lO!Ar7`!B_SOY!ArZ;'S!Ar;'S;=`!Bk<%lO!Ar7`!BnP;=`<%l!Ar7`!BtSOY!@cZ;'S!@c;'S;=`!CQ<%lO!@c7`!CTP;=`<%l!@c^!Ezl$i&j(Z!b!X7`OY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#W&}#W#X!Eq#X#Z&}#Z#[!Eq#[#]&}#]#^!Eq#^#a&}#a#b!Eq#b#g&}#g#h!Eq#h#i&}#i#j!Eq#j#k!Eq#k#m&}#m#n!Eq#n#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}8r!GyZ(Z!b!X7`OY!GrZw!Grwx!@cx!P!Gr!P!Q!Hl!Q!}!Gr!}#O!JU#O#P!Bq#P;'S!Gr;'S;=`!J|<%lO!Gr8r!Hse(Z!b!X7`OY'}Zw'}x#O'}#P#W'}#W#X!Hl#X#Z'}#Z#[!Hl#[#]'}#]#^!Hl#^#a'}#a#b!Hl#b#g'}#g#h!Hl#h#i'}#i#j!Hl#j#k!Hl#k#m'}#m#n!Hl#n;'S'};'S;=`(f<%lO'}8r!JZX(Z!bOY!JUZw!JUwx!Arx#O!JU#O#P!B[#P#Q!Gr#Q;'S!JU;'S;=`!Jv<%lO!JU8r!JyP;=`<%l!JU8r!KPP;=`<%l!Gr>^!KZ^$i&j(Z!bOY!KSYZ&cZw!KSwx!CWx!^!KS!^!_!JU!_#O!KS#O#P!DR#P#Q!^!LYP;=`<%l!KS>^!L`P;=`<%l!_#c#d#Bq#d#l%Z#l#m#Es#m#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#>j_$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#?rd$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#AQ!R!S#AQ!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#AQ#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#A]f$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#AQ!R!S#AQ!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#AQ#S#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Bzc$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#DV!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#DV#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Dbe$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#DV!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#DV#S#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#E|g$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#Ge![!^%Z!^!_*g!_!c%Z!c!i#Ge!i#O%Z#O#P&c#P#R%Z#R#S#Ge#S#T%Z#T#Z#Ge#Z#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Gpi$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#Ge![!^%Z!^!_*g!_!c%Z!c!i#Ge!i#O%Z#O#P&c#P#R%Z#R#S#Ge#S#T%Z#T#Z#Ge#Z#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z*)x#Il_!g$b$i&j$O)Lv(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z)[#Jv_al$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z04f#LS^h#)`#R-v$?V_!^(CdvBr$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z?O$@a_!q7`$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[$Aq|$i&j(Wp(Z!b'|0/l$]#t(T,2j(e$I[OX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$f%Z$f$g+g$g#BYEr#BY#BZ$A`#BZ$ISEr$IS$I_$A`$I_$JTEr$JT$JU$A`$JU$KVEr$KV$KW$A`$KW&FUEr&FU&FV$A`&FV;'SEr;'S;=`I|<%l?HTEr?HT?HU$A`?HUOEr07[$D|k$i&j(Wp(Z!b'}0/l$]#t(T,2j(e$I[OY%ZYZ&cZr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$g%Z$g;'SEr;'S;=`I|<%lOEr",tokenizers:[ZT,IT,XT,zT,2,3,4,5,6,7,8,9,10,11,12,13,14,MT,new ql("$S~RRtu[#O#Pg#S#T#|~_P#o#pb~gOx~~jVO#i!P#i#j!U#j#l!P#l#m!q#m;'S!P;'S;=`#v<%lO!P~!UO!U~~!XS!Q![!e!c!i!e#T#Z!e#o#p#Z~!hR!Q![!q!c!i!q#T#Z!q~!tR!Q![!}!c!i!}#T#Z!}~#QR!Q![!P!c!i!P#T#Z!P~#^R!Q![#g!c!i#g#T#Z#g~#jS!Q![#g!c!i#g#T#Z#g#q#r!P~#yP;=`<%l!P~$RO(c~~",141,340),new ql("j~RQYZXz{^~^O(Q~~aP!P!Qd~iO(R~~",25,323)],topRules:{Script:[0,7],SingleExpression:[1,276],SingleClassItem:[2,277]},dialects:{jsx:0,ts:15175},dynamicPrecedences:{80:1,82:1,94:1,169:1,199:1},specialized:[{term:327,get:t=>FT[t]||-1},{term:343,get:t=>BT[t]||-1},{term:95,get:t=>VT[t]||-1}],tokenPrec:15201}),Ch=[mt("function ${name}(${params}) {\n ${}\n}",{label:"function",detail:"definition",type:"keyword"}),mt("for (let ${index} = 0; ${index} < ${bound}; ${index}++) {\n ${}\n}",{label:"for",detail:"loop",type:"keyword"}),mt("for (let ${name} of ${collection}) {\n ${}\n}",{label:"for",detail:"of loop",type:"keyword"}),mt("do {\n ${}\n} while (${})",{label:"do",detail:"loop",type:"keyword"}),mt("while (${}) {\n ${}\n}",{label:"while",detail:"loop",type:"keyword"}),mt(`try { + \${} +} catch (\${error}) { + \${} +}`,{label:"try",detail:"/ catch block",type:"keyword"}),mt("if (${}) {\n ${}\n}",{label:"if",detail:"block",type:"keyword"}),mt(`if (\${}) { + \${} +} else { + \${} +}`,{label:"if",detail:"/ else block",type:"keyword"}),mt(`class \${name} { + constructor(\${params}) { + \${} + } +}`,{label:"class",detail:"definition",type:"keyword"}),mt('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),mt('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],Sb=Ch.concat([mt("interface ${name} {\n ${}\n}",{label:"interface",detail:"definition",type:"keyword"}),mt("type ${name} = ${type}",{label:"type",detail:"definition",type:"keyword"}),mt("enum ${name} {\n ${}\n}",{label:"enum",detail:"definition",type:"keyword"})]),Sp=new Sg,wb=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function Yr(t){return(e,i)=>{let n=e.node.getChild("VariableDefinition");return n&&i(n,t),!0}}const WT=["FunctionDeclaration"],YT={FunctionDeclaration:Yr("function"),ClassDeclaration:Yr("class"),ClassExpression:()=>!0,EnumDeclaration:Yr("constant"),TypeAliasDeclaration:Yr("type"),NamespaceDeclaration:Yr("namespace"),VariableDefinition(t,e){t.matchContext(WT)||e(t,"variable")},TypeDefinition(t,e){e(t,"type")},__proto__:null};function $b(t,e){let i=Sp.get(e);if(i)return i;let n=[],r=!0;function s(o,l){let a=t.sliceString(o.from,o.to);n.push({label:a,type:l})}return e.cursor(ge.IncludeAnonymous).iterate(o=>{if(r)r=!1;else if(o.name){let l=YT[o.name];if(l&&l(o,s)||wb.has(o.name))return!1}else if(o.to-o.from>8192){for(let l of $b(t,o.node))n.push(l);return!1}}),Sp.set(e,n),n}const Yl=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,Th=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName","JSXText","JSXAttributeValue","JSXOpenTag","JSXCloseTag","JSXSelfClosingTag",".","?."];function Qb(t){let e=Re(t.state).resolveInner(t.pos,-1);if(Th.indexOf(e.name)>-1)return null;let i=e.name=="VariableName"||e.to-e.from<20&&Yl.test(t.state.sliceDoc(e.from,e.to));if(!i&&!t.explicit)return null;let n=[];for(let r=e;r;r=r.parent)wb.has(r.name)&&(n=n.concat($b(t.state.doc,r)));return{options:n,from:i?e.from:t.pos,validFor:Yl}}function su(t,e,i){var n;let r=[];for(;;){let s=e.firstChild,o;if((s==null?void 0:s.name)=="VariableName")return r.push(t(s)),{path:r.reverse(),name:i};if((s==null?void 0:s.name)=="MemberExpression"&&((n=o=s.lastChild)===null||n===void 0?void 0:n.name)=="PropertyName")r.push(t(o)),e=s;else return null}}function _b(t){let e=n=>t.state.doc.sliceString(n.from,n.to),i=Re(t.state).resolveInner(t.pos,-1);return i.name=="PropertyName"?su(e,i.parent,e(i)):(i.name=="."||i.name=="?.")&&i.parent.name=="MemberExpression"?su(e,i.parent,""):Th.indexOf(i.name)>-1?null:i.name=="VariableName"||i.to-i.from<20&&Yl.test(e(i))?{path:[],name:e(i)}:i.name=="MemberExpression"?su(e,i,""):t.explicit?{path:[],name:""}:null}function NT(t,e){let i=t,n=[],r=new Set;for(let s=0;;s++){for(let l of(Object.getOwnPropertyNames||Object.keys)(t)){if(!/^[a-zA-Z_$\xaa-\uffdc][\w$\xaa-\uffdc]*$/.test(l)||r.has(l))continue;r.add(l);let a;try{a=i[l]}catch{continue}n.push({label:l,type:typeof a=="function"?/^[A-Z]/.test(l)?"class":e?"function":"method":e?"variable":"property",boost:-s})}let o=Object.getPrototypeOf(t);if(!o)return n;t=o}}function GT(t){let e=new Map;return i=>{let n=_b(i);if(!n)return null;let r=t;for(let o of n.path)if(r=r[o],!r)return null;let s=e.get(r);return s||e.set(r,s=NT(r,!n.path.length)),{from:i.pos-n.name.length,options:s,validFor:Yl}}}const qt=Sr.define({name:"javascript",parser:qT.configure({props:[Mr.add({IfStatement:ol({except:/^\s*({|else\b)/}),TryStatement:ol({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:M$,SwitchBody:t=>{let e=t.textAfter,i=/^\s*\}/.test(e),n=/^\s*(case|default)\b/.test(e);return t.baseIndent+(i?0:n?1:2)*t.unit},Block:L$({closing:"}"}),ArrowFunction:t=>t.baseIndent+t.unit,"TemplateString BlockComment":()=>null,"Statement Property":ol({except:/^\s*{/}),JSXElement(t){let e=/^\s*<\//.test(t.textAfter);return t.lineIndent(t.node.from)+(e?0:t.unit)},JSXEscape(t){let e=/\s*\}/.test(t.textAfter);return t.lineIndent(t.node.from)+(e?0:t.unit)},"JSXOpenTag JSXSelfClosingTag"(t){return t.column(t.node.from)+t.unit}}),no.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType":Ag,BlockComment(t){return{from:t.from+2,to:t.to-2}},JSXElement(t){let e=t.firstChild;if(!e||e.name=="JSXSelfClosingTag")return null;let i=t.lastChild;return{from:e.to,to:i.type.isError?t.to:i.from}},"JSXSelfClosingTag JSXOpenTag"(t){var e;let i=(e=t.firstChild)===null||e===void 0?void 0:e.nextSibling,n=t.lastChild;return!i||i.type.isError?null:{from:i.to,to:n.type.isError?t.to:n.from}}})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:"$"}}),Pb={test:t=>/^JSX/.test(t.name),facet:ca({commentTokens:{block:{open:"{/*",close:"*/}"}}})},Ah=qt.configure({dialect:"ts"},"typescript"),Eh=qt.configure({dialect:"jsx",props:[eh.add(t=>t.isTop?[Pb]:void 0)]}),Rh=qt.configure({dialect:"jsx ts",props:[eh.add(t=>t.isTop?[Pb]:void 0)]},"typescript");let Cb=t=>({label:t,type:"keyword"});const Tb="break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield".split(" ").map(Cb),UT=Tb.concat(["declare","implements","private","protected","public"].map(Cb));function Ab(t={}){let e=t.jsx?t.typescript?Rh:Eh:t.typescript?Ah:qt,i=t.typescript?Sb.concat(UT):Ch.concat(Tb);return new Qr(e,[qt.data.of({autocomplete:A_(Th,P1(i))}),qt.data.of({autocomplete:Qb}),t.jsx?Eb:[]])}function HT(t){for(;;){if(t.name=="JSXOpenTag"||t.name=="JSXSelfClosingTag"||t.name=="JSXFragmentTag")return t;if(t.name=="JSXEscape"||!t.parent)return null;t=t.parent}}function wp(t,e,i=t.length){for(let n=e==null?void 0:e.firstChild;n;n=n.nextSibling)if(n.name=="JSXIdentifier"||n.name=="JSXBuiltin"||n.name=="JSXNamespacedName"||n.name=="JSXMemberExpression")return t.sliceString(n.from,Math.min(n.to,i));return""}const KT=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),Eb=W.inputHandler.of((t,e,i,n,r)=>{if((KT?t.composing:t.compositionStarted)||t.state.readOnly||e!=i||n!=">"&&n!="/"||!qt.isActiveAt(t.state,e,-1))return!1;let s=r(),{state:o}=s,l=o.changeByRange(a=>{var u;let{head:c}=a,h=Re(o).resolveInner(c-1,-1),f;if(h.name=="JSXStartTag"&&(h=h.parent),!(o.doc.sliceString(c-1,c)!=n||h.name=="JSXAttributeValue"&&h.to>c)){if(n==">"&&h.name=="JSXFragmentTag")return{range:a,changes:{from:c,insert:""}};if(n=="/"&&h.name=="JSXStartCloseTag"){let d=h.parent,p=d.parent;if(p&&d.from==c-2&&((f=wp(o.doc,p.firstChild,c))||((u=p.firstChild)===null||u===void 0?void 0:u.name)=="JSXFragmentTag")){let m=`${f}>`;return{range:E.cursor(c+m.length,-1),changes:{from:c,insert:m}}}}else if(n==">"){let d=HT(h);if(d&&d.name=="JSXOpenTag"&&!/^\/?>|^<\//.test(o.doc.sliceString(c,c+2))&&(f=wp(o.doc,d,c)))return{range:a,changes:{from:c,insert:``}}}}return{range:a}});return l.changes.empty?!1:(t.dispatch([s,o.update(l,{userEvent:"input.complete",scrollIntoView:!0})]),!0)});function JT(t,e){return e||(e={parserOptions:{ecmaVersion:2019,sourceType:"module"},env:{browser:!0,node:!0,es6:!0,es2015:!0,es2017:!0,es2020:!0},rules:{}},t.getRules().forEach((i,n)=>{var r;!((r=i.meta.docs)===null||r===void 0)&&r.recommended&&(e.rules[n]=2)})),i=>{let{state:n}=i,r=[];for(let{from:s,to:o}of qt.findRegions(n)){let l=n.doc.lineAt(s),a={line:l.number-1,col:s-l.from,pos:s};for(let u of t.verify(n.sliceDoc(s,o),e))r.push(e5(u,n.doc,a))}return r}}function $p(t,e,i,n){return i.line(t+n.line).from+e+(t==1?n.col-1:-1)}function e5(t,e,i){let n=$p(t.line,t.column,e,i),r={from:n,to:t.endLine!=null&&t.endColumn!=1?$p(t.endLine,t.endColumn,e,i):n,message:t.message,source:t.ruleId?"eslint:"+t.ruleId:"eslint",severity:t.severity==1?"warning":"error"};if(t.fix){let{range:s,text:o}=t.fix,l=s[0]+i.pos-n,a=s[1]+i.pos-n;r.actions=[{name:"fix",apply(u,c){u.dispatch({changes:{from:c+l,to:c+a,insert:o},scrollIntoView:!0})}}]}return r}const Vo=Object.freeze(Object.defineProperty({__proto__:null,autoCloseTags:Eb,completionPath:_b,esLint:JT,javascript:Ab,javascriptLanguage:qt,jsxLanguage:Eh,localCompletionSource:Qb,scopeCompletionSource:GT,snippets:Ch,tsxLanguage:Rh,typescriptLanguage:Ah,typescriptSnippets:Sb},Symbol.toStringTag,{value:"Module"})),Nr=["_blank","_self","_top","_parent"],ou=["ascii","utf-8","utf-16","latin1","latin1"],lu=["get","post","put","delete"],au=["application/x-www-form-urlencoded","multipart/form-data","text/plain"],St=["true","false"],N={},t5={a:{attrs:{href:null,ping:null,type:null,media:null,target:Nr,hreflang:null}},abbr:N,address:N,area:{attrs:{alt:null,coords:null,href:null,target:null,ping:null,media:null,hreflang:null,type:null,shape:["default","rect","circle","poly"]}},article:N,aside:N,audio:{attrs:{src:null,mediagroup:null,crossorigin:["anonymous","use-credentials"],preload:["none","metadata","auto"],autoplay:["autoplay"],loop:["loop"],controls:["controls"]}},b:N,base:{attrs:{href:null,target:Nr}},bdi:N,bdo:N,blockquote:{attrs:{cite:null}},body:N,br:N,button:{attrs:{form:null,formaction:null,name:null,value:null,autofocus:["autofocus"],disabled:["autofocus"],formenctype:au,formmethod:lu,formnovalidate:["novalidate"],formtarget:Nr,type:["submit","reset","button"]}},canvas:{attrs:{width:null,height:null}},caption:N,center:N,cite:N,code:N,col:{attrs:{span:null}},colgroup:{attrs:{span:null}},command:{attrs:{type:["command","checkbox","radio"],label:null,icon:null,radiogroup:null,command:null,title:null,disabled:["disabled"],checked:["checked"]}},data:{attrs:{value:null}},datagrid:{attrs:{disabled:["disabled"],multiple:["multiple"]}},datalist:{attrs:{data:null}},dd:N,del:{attrs:{cite:null,datetime:null}},details:{attrs:{open:["open"]}},dfn:N,div:N,dl:N,dt:N,em:N,embed:{attrs:{src:null,type:null,width:null,height:null}},eventsource:{attrs:{src:null}},fieldset:{attrs:{disabled:["disabled"],form:null,name:null}},figcaption:N,figure:N,footer:N,form:{attrs:{action:null,name:null,"accept-charset":ou,autocomplete:["on","off"],enctype:au,method:lu,novalidate:["novalidate"],target:Nr}},h1:N,h2:N,h3:N,h4:N,h5:N,h6:N,head:{children:["title","base","link","style","meta","script","noscript","command"]},header:N,hgroup:N,hr:N,html:{attrs:{manifest:null}},i:N,iframe:{attrs:{src:null,srcdoc:null,name:null,width:null,height:null,sandbox:["allow-top-navigation","allow-same-origin","allow-forms","allow-scripts"],seamless:["seamless"]}},img:{attrs:{alt:null,src:null,ismap:null,usemap:null,width:null,height:null,crossorigin:["anonymous","use-credentials"]}},input:{attrs:{alt:null,dirname:null,form:null,formaction:null,height:null,list:null,max:null,maxlength:null,min:null,name:null,pattern:null,placeholder:null,size:null,src:null,step:null,value:null,width:null,accept:["audio/*","video/*","image/*"],autocomplete:["on","off"],autofocus:["autofocus"],checked:["checked"],disabled:["disabled"],formenctype:au,formmethod:lu,formnovalidate:["novalidate"],formtarget:Nr,multiple:["multiple"],readonly:["readonly"],required:["required"],type:["hidden","text","search","tel","url","email","password","datetime","date","month","week","time","datetime-local","number","range","color","checkbox","radio","file","submit","image","reset","button"]}},ins:{attrs:{cite:null,datetime:null}},kbd:N,keygen:{attrs:{challenge:null,form:null,name:null,autofocus:["autofocus"],disabled:["disabled"],keytype:["RSA"]}},label:{attrs:{for:null,form:null}},legend:N,li:{attrs:{value:null}},link:{attrs:{href:null,type:null,hreflang:null,media:null,sizes:["all","16x16","16x16 32x32","16x16 32x32 64x64"]}},map:{attrs:{name:null}},mark:N,menu:{attrs:{label:null,type:["list","context","toolbar"]}},meta:{attrs:{content:null,charset:ou,name:["viewport","application-name","author","description","generator","keywords"],"http-equiv":["content-language","content-type","default-style","refresh"]}},meter:{attrs:{value:null,min:null,low:null,high:null,max:null,optimum:null}},nav:N,noscript:N,object:{attrs:{data:null,type:null,name:null,usemap:null,form:null,width:null,height:null,typemustmatch:["typemustmatch"]}},ol:{attrs:{reversed:["reversed"],start:null,type:["1","a","A","i","I"]},children:["li","script","template","ul","ol"]},optgroup:{attrs:{disabled:["disabled"],label:null}},option:{attrs:{disabled:["disabled"],label:null,selected:["selected"],value:null}},output:{attrs:{for:null,form:null,name:null}},p:N,param:{attrs:{name:null,value:null}},pre:N,progress:{attrs:{value:null,max:null}},q:{attrs:{cite:null}},rp:N,rt:N,ruby:N,samp:N,script:{attrs:{type:["text/javascript"],src:null,async:["async"],defer:["defer"],charset:ou}},section:N,select:{attrs:{form:null,name:null,size:null,autofocus:["autofocus"],disabled:["disabled"],multiple:["multiple"]}},slot:{attrs:{name:null}},small:N,source:{attrs:{src:null,type:null,media:null}},span:N,strong:N,style:{attrs:{type:["text/css"],media:null,scoped:null}},sub:N,summary:N,sup:N,table:N,tbody:N,td:{attrs:{colspan:null,rowspan:null,headers:null}},template:N,textarea:{attrs:{dirname:null,form:null,maxlength:null,name:null,placeholder:null,rows:null,cols:null,autofocus:["autofocus"],disabled:["disabled"],readonly:["readonly"],required:["required"],wrap:["soft","hard"]}},tfoot:N,th:{attrs:{colspan:null,rowspan:null,headers:null,scope:["row","col","rowgroup","colgroup"]}},thead:N,time:{attrs:{datetime:null}},title:N,tr:N,track:{attrs:{src:null,label:null,default:null,kind:["subtitles","captions","descriptions","chapters","metadata"],srclang:null}},ul:{children:["li","script","template","ul","ol"]},var:N,video:{attrs:{src:null,poster:null,width:null,height:null,crossorigin:["anonymous","use-credentials"],preload:["auto","metadata","none"],autoplay:["autoplay"],mediagroup:["movie"],muted:["muted"],controls:["controls"]}},wbr:N},Rb={accesskey:null,class:null,contenteditable:St,contextmenu:null,dir:["ltr","rtl","auto"],draggable:["true","false","auto"],dropzone:["copy","move","link","string:","file:"],hidden:["hidden"],id:null,inert:["inert"],itemid:null,itemprop:null,itemref:null,itemscope:["itemscope"],itemtype:null,lang:["ar","bn","de","en-GB","en-US","es","fr","hi","id","ja","pa","pt","ru","tr","zh"],spellcheck:St,autocorrect:St,autocapitalize:St,style:null,tabindex:null,title:null,translate:["yes","no"],rel:["stylesheet","alternate","author","bookmark","help","license","next","nofollow","noreferrer","prefetch","prev","search","tag"],role:"alert application article banner button cell checkbox complementary contentinfo dialog document feed figure form grid gridcell heading img list listbox listitem main navigation region row rowgroup search switch tab table tabpanel textbox timer".split(" "),"aria-activedescendant":null,"aria-atomic":St,"aria-autocomplete":["inline","list","both","none"],"aria-busy":St,"aria-checked":["true","false","mixed","undefined"],"aria-controls":null,"aria-describedby":null,"aria-disabled":St,"aria-dropeffect":null,"aria-expanded":["true","false","undefined"],"aria-flowto":null,"aria-grabbed":["true","false","undefined"],"aria-haspopup":St,"aria-hidden":St,"aria-invalid":["true","false","grammar","spelling"],"aria-label":null,"aria-labelledby":null,"aria-level":null,"aria-live":["off","polite","assertive"],"aria-multiline":St,"aria-multiselectable":St,"aria-owns":null,"aria-posinset":null,"aria-pressed":["true","false","mixed","undefined"],"aria-readonly":St,"aria-relevant":null,"aria-required":St,"aria-selected":["true","false","undefined"],"aria-setsize":null,"aria-sort":["ascending","descending","none","other"],"aria-valuemax":null,"aria-valuemin":null,"aria-valuenow":null,"aria-valuetext":null},Db="beforeunload copy cut dragstart dragover dragleave dragenter dragend drag paste focus blur change click load mousedown mouseenter mouseleave mouseup keydown keyup resize scroll unload".split(" ").map(t=>"on"+t);for(let t of Db)Rb[t]=null;class qs{constructor(e,i){this.tags={...t5,...e},this.globalAttrs={...Rb,...i},this.allTags=Object.keys(this.tags),this.globalAttrNames=Object.keys(this.globalAttrs)}}qs.default=new qs;function Cr(t,e,i=t.length){if(!e)return"";let n=e.firstChild,r=n&&n.getChild("TagName");return r?t.sliceString(r.from,Math.min(r.to,i)):""}function Tr(t,e=!1){for(;t;t=t.parent)if(t.name=="Element")if(e)e=!1;else return t;return null}function Lb(t,e,i){let n=i.tags[Cr(t,Tr(e))];return(n==null?void 0:n.children)||i.allTags}function Dh(t,e){let i=[];for(let n=Tr(e);n&&!n.type.isTop;n=Tr(n.parent)){let r=Cr(t,n);if(r&&n.lastChild.name=="CloseTag")break;r&&i.indexOf(r)<0&&(e.name=="EndTag"||e.from>=n.firstChild.to)&&i.push(r)}return i}const Mb=/^[:\-\.\w\u00b7-\uffff]*$/;function Qp(t,e,i,n,r){let s=/\s*>/.test(t.sliceDoc(r,r+5))?"":">",o=Tr(i,i.name=="StartTag"||i.name=="TagName");return{from:n,to:r,options:Lb(t.doc,o,e).map(l=>({label:l,type:"type"})).concat(Dh(t.doc,i).map((l,a)=>({label:"/"+l,apply:"/"+l+s,type:"type",boost:99-a}))),validFor:/^\/?[:\-\.\w\u00b7-\uffff]*$/}}function _p(t,e,i,n){let r=/\s*>/.test(t.sliceDoc(n,n+5))?"":">";return{from:i,to:n,options:Dh(t.doc,e).map((s,o)=>({label:s,apply:s+r,type:"type",boost:99-o})),validFor:Mb}}function i5(t,e,i,n){let r=[],s=0;for(let o of Lb(t.doc,i,e))r.push({label:"<"+o,type:"type"});for(let o of Dh(t.doc,i))r.push({label:"",type:"type",boost:99-s++});return{from:n,to:n,options:r,validFor:/^<\/?[:\-\.\w\u00b7-\uffff]*$/}}function n5(t,e,i,n,r){let s=Tr(i),o=s?e.tags[Cr(t.doc,s)]:null,l=o&&o.attrs?Object.keys(o.attrs):[],a=o&&o.globalAttrs===!1?l:l.length?l.concat(e.globalAttrNames):e.globalAttrNames;return{from:n,to:r,options:a.map(u=>({label:u,type:"property"})),validFor:Mb}}function r5(t,e,i,n,r){var s;let o=(s=i.parent)===null||s===void 0?void 0:s.getChild("AttributeName"),l=[],a;if(o){let u=t.sliceDoc(o.from,o.to),c=e.globalAttrs[u];if(!c){let h=Tr(i),f=h?e.tags[Cr(t.doc,h)]:null;c=(f==null?void 0:f.attrs)&&f.attrs[u]}if(c){let h=t.sliceDoc(n,r).toLowerCase(),f='"',d='"';/^['"]/.test(h)?(a=h[0]=='"'?/^[^"]*$/:/^[^']*$/,f="",d=t.sliceDoc(r,r+1)==h[0]?"":h[0],h=h.slice(1),n++):a=/^[^\s<>='"]*$/;for(let p of c)l.push({label:p,apply:f+p+d,type:"constant"})}}return{from:n,to:r,options:l,validFor:a}}function Zb(t,e){let{state:i,pos:n}=e,r=Re(i).resolveInner(n,-1),s=r.resolve(n);for(let o=n,l;s==r&&(l=r.childBefore(o));){let a=l.lastChild;if(!a||!a.type.isError||a.fromZb(n,r)}const s5=qt.parser.configure({top:"SingleExpression"}),zb=[{tag:"script",attrs:t=>t.type=="text/typescript"||t.lang=="ts",parser:Ah.parser},{tag:"script",attrs:t=>t.type=="text/babel"||t.type=="text/jsx",parser:Eh.parser},{tag:"script",attrs:t=>t.type=="text/typescript-jsx",parser:Rh.parser},{tag:"script",attrs(t){return/^(importmap|speculationrules|application\/(.+\+)?json)$/i.test(t.type)},parser:s5},{tag:"script",attrs(t){return!t.type||/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i.test(t.type)},parser:qt.parser},{tag:"style",attrs(t){return(!t.lang||t.lang=="css")&&(!t.type||/^(text\/)?(x-)?(stylesheet|css)$/i.test(t.type))},parser:Vs.parser}],jb=[{name:"style",parser:Vs.parser.configure({top:"Styles"})}].concat(Db.map(t=>({name:t,parser:qt.parser}))),Fb=Sr.define({name:"html",parser:DC.configure({props:[Mr.add({Element(t){let e=/^(\s*)(<\/)?/.exec(t.textAfter);return t.node.to<=t.pos+e[0].length?t.continue():t.lineIndent(t.node.from)+(e[2]?0:t.unit)},"OpenTag CloseTag SelfClosingTag"(t){return t.column(t.node.from)+t.unit},Document(t){if(t.pos+/\s*/.exec(t.textAfter)[0].lengtht.getChild("TagName")})]}),languageData:{commentTokens:{block:{open:""}},indentOnInput:/^\s*<\/\w+\W$/,wordChars:"-_"}}),Os=Fb.configure({wrap:db(zb,jb)});function Bb(t={}){let e="",i;t.matchClosingTags===!1&&(e="noMatch"),t.selfClosingTags===!0&&(e=(e?e+" ":"")+"selfClosing"),(t.nestedLanguages&&t.nestedLanguages.length||t.nestedAttributes&&t.nestedAttributes.length)&&(i=db((t.nestedLanguages||[]).concat(zb),(t.nestedAttributes||[]).concat(jb)));let n=i?Fb.configure({wrap:i,dialect:e}):e?Os.configure({dialect:e}):Os;return new Qr(n,[Os.data.of({autocomplete:Xb(t)}),t.autoCloseTags!==!1?Vb:[],Ab().support,xb().support])}const Pp=new Set("area base br col command embed frame hr img input keygen link meta param source track wbr menuitem".split(" ")),Vb=W.inputHandler.of((t,e,i,n,r)=>{if(t.composing||t.state.readOnly||e!=i||n!=">"&&n!="/"||!Os.isActiveAt(t.state,e,-1))return!1;let s=r(),{state:o}=s,l=o.changeByRange(a=>{var u,c,h;let f=o.doc.sliceString(a.from-1,a.to)==n,{head:d}=a,p=Re(o).resolveInner(d,-1),m;if(f&&n==">"&&p.name=="EndTag"){let O=p.parent;if(((c=(u=O.parent)===null||u===void 0?void 0:u.lastChild)===null||c===void 0?void 0:c.name)!="CloseTag"&&(m=Cr(o.doc,O.parent,d))&&!Pp.has(m)){let g=d+(o.doc.sliceString(d,d+1)===">"?1:0),b=``;return{range:a,changes:{from:d,to:g,insert:b}}}}else if(f&&n=="/"&&p.name=="IncompleteCloseTag"){let O=p.parent;if(p.from==d-2&&((h=O.lastChild)===null||h===void 0?void 0:h.name)!="CloseTag"&&(m=Cr(o.doc,O,d))&&!Pp.has(m)){let g=d+(o.doc.sliceString(d,d+1)===">"?1:0),b=`${m}>`;return{range:E.cursor(d+b.length,-1),changes:{from:d,to:g,insert:b}}}}return{range:a}});return l.changes.empty?!1:(t.dispatch([s,o.update(l,{userEvent:"input.complete",scrollIntoView:!0})]),!0)}),o5=Object.freeze(Object.defineProperty({__proto__:null,autoCloseTags:Vb,html:Bb,htmlCompletionSource:Ib,htmlCompletionSourceWith:Xb,htmlLanguage:Os},Symbol.toStringTag,{value:"Module"})),qb=ca({commentTokens:{block:{open:""}}}),Wb=new K,Yb=PP.configure({props:[no.add(t=>!t.is("Block")||t.is("Document")||xc(t)!=null||l5(t)?void 0:(e,i)=>({from:i.doc.lineAt(e.from).to,to:e.to})),Wb.add(xc),Mr.add({Document:()=>null}),nn.add({Document:qb})]});function xc(t){let e=/^(?:ATX|Setext)Heading(\d)$/.exec(t.name);return e?+e[1]:void 0}function l5(t){return t.name=="OrderedList"||t.name=="BulletList"}function a5(t,e){let i=t;for(;;){let n=i.nextSibling,r;if(!n||(r=xc(n.type))!=null&&r<=e)break;i=n}return i.to}const u5=Z$.of((t,e,i)=>{for(let n=Re(t).resolveInner(i,-1);n&&!(n.fromi)return{from:i,to:s}}return null});function Lh(t){return new Dt(qb,t,[],"markdown")}const Nb=Lh(Yb),c5=Yb.configure([XP,jP,zP,FP,{props:[no.add({Table:(t,e)=>({from:e.doc.lineAt(t.from).to,to:t.to})})]}]),Ws=Lh(c5);function h5(t,e){return i=>{if(i&&t){let n=null;if(i=/\S*/.exec(i)[0],typeof t=="function"?n=t(i):n=C.matchLanguageName(t,i,!0),n instanceof C)return n.support?n.support.language.parser:Dn.getSkippingParser(n.load());if(n)return n.parser}return e?e.parser:null}}class uu{constructor(e,i,n,r,s,o,l){this.node=e,this.from=i,this.to=n,this.spaceBefore=r,this.spaceAfter=s,this.type=o,this.item=l}blank(e,i=!0){let n=this.spaceBefore+(this.node.name=="Blockquote"?">":"");if(e!=null){for(;n.length0;r--)n+=" ";return n+(i?this.spaceAfter:"")}}marker(e,i){let n=this.node.name=="OrderedList"?String(+Ub(this.item,e)[2]+i):"";return this.spaceBefore+n+this.type+this.spaceAfter}}function Gb(t,e){let i=[],n=[];for(let r=t;r;r=r.parent){if(r.name=="FencedCode")return n;(r.name=="ListItem"||r.name=="Blockquote")&&i.push(r)}for(let r=i.length-1;r>=0;r--){let s=i[r],o,l=e.lineAt(s.from),a=s.from-l.from;if(s.name=="Blockquote"&&(o=/^ *>( ?)/.exec(l.text.slice(a))))n.push(new uu(s,a,a+o[0].length,"",o[1],">",null));else if(s.name=="ListItem"&&s.parent.name=="OrderedList"&&(o=/^( *)\d+([.)])( *)/.exec(l.text.slice(a)))){let u=o[3],c=o[0].length;u.length>=4&&(u=u.slice(0,u.length-4),c-=4),n.push(new uu(s.parent,a,a+c,o[1],u,o[2],s))}else if(s.name=="ListItem"&&s.parent.name=="BulletList"&&(o=/^( *)([-+*])( {1,4}\[[ xX]\])?( +)/.exec(l.text.slice(a)))){let u=o[4],c=o[0].length;u.length>4&&(u=u.slice(0,u.length-4),c-=4);let h=o[2];o[3]&&(h+=o[3].replace(/[xX]/," ")),n.push(new uu(s.parent,a,a+c,o[1],u,h,s))}}return n}function Ub(t,e){return/^(\s*)(\d+)(?=[.)])/.exec(e.sliceString(t.from,t.from+10))}function cu(t,e,i,n=0){for(let r=-1,s=t;;){if(s.name=="ListItem"){let l=Ub(s,e),a=+l[2];if(r>=0){if(a!=r+1)return;i.push({from:s.from+l[1].length,to:s.from+l[0].length,insert:String(r+2+n)})}r=a}let o=s.nextSibling;if(!o)break;s=o}}function Mh(t,e){let i=/^[ \t]*/.exec(t)[0].length;if(!i||e.facet(Lr)!=" ")return t;let n=Mi(t,4,i),r="";for(let s=n;s>0;)s>=4?(r+=" ",s-=4):(r+=" ",s--);return r+t.slice(i)}const Hb=(t={})=>({state:e,dispatch:i})=>{let n=Re(e),{doc:r}=e,s=null,o=e.changeByRange(l=>{if(!l.empty||!Ws.isActiveAt(e,l.from,-1)&&!Ws.isActiveAt(e,l.from,1))return s={range:l};let a=l.from,u=r.lineAt(a),c=Gb(n.resolveInner(a,-1),r);for(;c.length&&c[c.length-1].from>a-u.from;)c.pop();if(!c.length)return s={range:l};let h=c[c.length-1];if(h.to-h.spaceAfter.length>a-u.from)return s={range:l};let f=a>=h.to-h.spaceAfter.length&&!/\S/.test(u.text.slice(h.to));if(h.item&&f){let g=h.node.firstChild,b=h.node.getChild("ListItem","ListItem");if(g.to>=a||b&&b.to0&&!/[^\s>]/.test(r.lineAt(u.from-1).text)||t.nonTightLists===!1){let y=c.length>1?c[c.length-2]:null,w,v="";y&&y.item?(w=u.from+y.from,v=y.marker(r,1)):w=u.from+(y?y.to:0);let Q=[{from:w,to:a,insert:v}];return h.node.name=="OrderedList"&&cu(h.item,r,Q,-2),y&&y.node.name=="OrderedList"&&cu(y.item,r,Q),{range:E.cursor(w+v.length),changes:Q}}else{let y=Tp(c,e,u);return{range:E.cursor(a+y.length+1),changes:{from:u.from,insert:y+e.lineBreak}}}}if(h.node.name=="Blockquote"&&f&&u.from){let g=r.lineAt(u.from-1),b=/>\s*$/.exec(g.text);if(b&&b.index==h.from){let y=e.changes([{from:g.from+b.index,to:g.to},{from:u.from+h.from,to:u.to}]);return{range:l.map(y),changes:y}}}let d=[];h.node.name=="OrderedList"&&cu(h.item,r,d);let p=h.item&&h.item.from]*/.exec(u.text)[0].length>=h.to)for(let g=0,b=c.length-1;g<=b;g++)m+=g==b&&!p?c[g].marker(r,1):c[g].blank(gu.from&&/\s/.test(u.text.charAt(O-u.from-1));)O--;return m=Mh(m,e),f5(h.node,e.doc)&&(m=Tp(c,e,u)+e.lineBreak+m),d.push({from:O,to:a,insert:e.lineBreak+m}),{range:E.cursor(O+m.length+1),changes:d}});return s?!1:(i(e.update(o,{scrollIntoView:!0,userEvent:"input"})),!0)},Kb=Hb();function Cp(t){return t.name=="QuoteMark"||t.name=="ListMark"}function f5(t,e){if(t.name!="OrderedList"&&t.name!="BulletList")return!1;let i=t.firstChild,n=t.getChild("ListItem","ListItem");if(!n)return!1;let r=e.lineAt(i.to),s=e.lineAt(n.from),o=/^[\s>]*$/.test(r.text);return r.number+(o?0:1){let i=Re(t),n=null,r=t.changeByRange(s=>{let o=s.from,{doc:l}=t;if(s.empty&&Ws.isActiveAt(t,s.from)){let a=l.lineAt(o),u=Gb(d5(i,o),l);if(u.length){let c=u[u.length-1],h=c.to-c.spaceAfter.length+(c.spaceAfter?1:0);if(o-a.from>h&&!/\S/.test(a.text.slice(h,o-a.from)))return{range:E.cursor(a.from+h),changes:{from:a.from+h,to:o}};if(o-a.from==h&&(!c.item||a.from<=c.item.from||!/\S/.test(a.text.slice(0,c.to)))){let f=a.from+c.from;if(c.item&&c.node.from{var i;let{main:n}=e.state.selection;if(n.empty)return!1;let r=(i=t.clipboardData)===null||i===void 0?void 0:i.getData("text/plain");if(!r||!/^(https?:\/\/|mailto:|xmpp:|www\.)/.test(r)||(/^www\./.test(r)&&(r="https://"+r),!Ws.isActiveAt(e.state,n.from,1)))return!1;let s=Re(e.state),o=!1;return s.iterate({from:n.from,to:n.to,enter:l=>{(l.from>n.from||O5.test(l.name))&&(o=!0)},leave:l=>{l.to{const i=ht({props:t,ctx:e},"trigger"),n=ht({props:t,ctx:e});return $("div",{class:[`${x}-toolbar-item`,t.disabled&&`${x}-disabled`],title:t.title,onClick:r=>{var s;t.disabled||((s=t.onClick)==null||s.call(t,r),e.emit("onClick",r))}},[n||i])}}});gs.install=t=>(t.component(gs.name,gs),t);function v5(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!kv(t)}const y5={title:{type:String,default:""},modalTitle:{type:[String,Object],default:""},visible:{type:Boolean,default:void 0},width:{type:String,default:"auto"},height:{type:String,default:"auto"},trigger:{type:[String,Object],default:void 0},onClick:{type:Function,default:void 0},onClose:{type:Function,default:void 0},showAdjust:{type:Boolean,default:!1},isFullscreen:{type:Boolean,default:!1},onAdjust:{type:Function,default:void 0},class:{type:String,default:void 0},style:{type:[Object,String],default:void 0},showMask:{type:Boolean,default:!0},insert:{type:Function,default:void 0},language:{type:String,default:void 0},theme:{type:String,default:void 0},previewTheme:{type:String,default:void 0},codeTheme:{type:String,default:void 0},disabled:{type:Boolean,default:void 0},showToolbarName:{type:Boolean,default:void 0}},bs=Te({name:"ModalToolbar",props:y5,emits:["onClick","onClose","onAdjust"],setup(t,e){return()=>{const i=ht({props:t,ctx:e},"trigger"),n=ht({props:t,ctx:e},"modalTitle"),r=ht({props:t,ctx:e});return $(Gs,null,[$("div",{class:[`${x}-toolbar-item`,t.disabled&&`${x}-disabled`],title:t.title,onClick:()=>{var s;t.disabled||((s=t.onClick)==null||s.call(t),e.emit("onClick"))}},[i]),$(_n,{style:t.style,class:t.class,width:t.width,height:t.height,title:n,visible:t.visible,showMask:t.showMask,onClose:()=>{var s;(s=t.onClose)==null||s.call(t),e.emit("onClose")},showAdjust:t.showAdjust,isFullscreen:t.isFullscreen,onAdjust:s=>{var o;(o=t.onAdjust)==null||o.call(t,s),e.emit("onAdjust",s)}},v5(r)?r:{default:()=>[r]})])}}});bs.install=t=>(t.component(bs.name,bs),t);var x5=Object.defineProperty,k5=(t,e,i)=>e in t?x5(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i,Fi=(t,e,i)=>k5(t,typeof e!="symbol"?e+"":e,i);const S5=Te({name:`${x}-divider`,setup(){return()=>$("div",{class:`${x}-divider`},null)}}),w5={noPrettier:{type:Boolean},toolbars:{type:Array,default:()=>[]},toolbarsExclude:{type:Array,default:()=>[]},setting:{type:Object,default:()=>({})},screenfull:{type:Object,default:null},screenfullJs:{type:String,default:""},updateSetting:{type:Function,default:()=>{}},tableShape:{type:Array,default:()=>[6,4]},defToolbars:{type:Object},noUploadImg:{type:Boolean},showToolbarName:{type:Boolean},catalogVisible:{type:Boolean},codeTheme:{type:String},insertLinkDirect:{type:Boolean}},$5=t=>{const e=H("editorId"),{editorExtensions:i,editorExtensionsAttrs:n}=Me;let r=i.screenfull.instance;const s=pe(!1),o=u=>{if(!r){X.emit(e,hn,{name:"fullscreen",message:"fullscreen is undefined"});return}r.isEnabled?(s.value=!0,(u===void 0?!r.isFullscreen:u)?r.request():r.exit()):console.error("browser does not support screenfull!")},l=()=>{r&&r.isEnabled&&r.on("change",()=>{(s.value||t.setting.fullscreen)&&(s.value=!1,t.updateSetting("fullscreen"))})},a=()=>{r=window.screenfull,l()};return Ae(()=>{var u;l(),r||zt("script",{...(u=n.screenfull)==null?void 0:u.js,src:i.screenfull.js,id:bt.screenfull,onload:a},"screenfull")}),Ae(()=>{X.on(e,{name:em,callback:o})}),{fullscreenHandler:o}},Q5={tableShape:{type:Array,default:()=>[6,4]},onSelected:{type:Function,default:()=>{}}},_5=Te({name:"TableShape",props:Q5,setup(t){const e=ct({x:-1,y:-1}),i=He(()=>JSON.stringify(t.tableShape)),n=()=>{const s=[...JSON.parse(i.value)];return(!s[2]||s[2]{r.value=n()}),()=>$("div",{class:`${x}-table-shape`,onMouseleave:()=>{r.value=n(),e.x=-1,e.y=-1}},[new Array(r.value[1]).fill("").map((s,o)=>$("div",{class:`${x}-table-shape-row`,key:`table-shape-row-${o}`},[new Array(r.value[0]).fill("").map((l,a)=>$("div",{class:`${x}-table-shape-col`,key:`table-shape-col-${a}`,onMouseenter:()=>{e.x=o,e.y=a,a+1===r.value[0]&&a+1t.tableShape[0]&&r.value[0]--,o+1===r.value[1]&&o+1t.tableShape[1]&&r.value[1]--},onClick:()=>{t.onSelected(e)}},[$("div",{class:[`${x}-table-shape-col-default`,o<=e.x&&a<=e.y&&`${x}-table-shape-col-include`]},null)]))]))])}}),P5={type:{type:String,default:"link"},visible:{type:Boolean,default:!1},onCancel:{type:Function,default:()=>{}},onOk:{type:Function,default:()=>{}}},C5=Te({name:`${x}-modal-link`,props:P5,setup(t){const e=H("usedLanguageText"),i=H("editorId"),n=He(()=>{var s,o;switch(t.type){case"link":return(s=e.value.linkModalTips)==null?void 0:s.linkTitle;case"image":return(o=e.value.linkModalTips)==null?void 0:o.imageTitle;default:return""}}),r=ct({desc:"",url:""});return te(()=>t.visible,s=>{s||setTimeout(()=>{r.desc="",r.url=""},200)}),()=>$(_n,{title:n.value,visible:t.visible,onClose:t.onCancel},{default:()=>{var s,o,l,a,u;return[$("div",{class:`${x}-form-item`},[$("label",{class:`${x}-label`,for:`link-desc-${i}`},[(s=e.value.linkModalTips)==null?void 0:s.descLabel]),$("input",{placeholder:(o=e.value.linkModalTips)==null?void 0:o.descLabelPlaceHolder,class:`${x}-input`,id:`link-desc-${i}`,type:"text",value:r.desc,onChange:c=>{r.desc=c.target.value},autocomplete:"off"},null)]),$("div",{class:`${x}-form-item`},[$("label",{class:`${x}-label`,for:`link-url-${i}`},[(l=e.value.linkModalTips)==null?void 0:l.urlLabel]),$("input",{placeholder:(a=e.value.linkModalTips)==null?void 0:a.urlLabelPlaceHolder,class:`${x}-input`,id:`link-url-${i}`,type:"text",value:r.url,onChange:c=>{r.url=c.target.value},autocomplete:"off"},null)]),$("div",{class:`${x}-form-item`},[$("button",{class:[`${x}-btn`,`${x}-btn-row`],type:"button",onClick:()=>{t.onOk(r),r.desc="",r.url=""}},[(u=e.value.linkModalTips)==null?void 0:u.buttonOK])])]}})}}),T5={visible:{type:Boolean,default:!1},onCancel:{type:Function,default:()=>{}},onOk:{type:Function,default:()=>{}}},A5=Te({name:`${x}-modal-clip`,props:T5,setup(t){const e=H("usedLanguageText"),i=H("editorId"),n=H("rootRef");let r=Me.editorExtensions.cropper.instance;const s=pe(),o=pe(),l=pe(),a=ct({cropperInited:!1,imgSelected:!1,imgSrc:"",isFullscreen:!1});let u=null;te(()=>t.visible,()=>{t.visible&&!a.cropperInited&&(r=r||window.Cropper,s.value.onchange=()=>{if(!r){X.emit(i,hn,{name:"Cropper",message:"Cropper is undefined"});return}const h=s.value.files||[];if(a.imgSelected=!0,(h==null?void 0:h.length)>0){const f=new FileReader;f.onload=d=>{a.imgSrc=d.target.result},f.readAsDataURL(h[0])}})}),te(()=>[a.imgSelected],()=>{l.value.style=""}),te([si(()=>a.isFullscreen),si(()=>a.imgSrc)],()=>{a.imgSrc&&li(()=>{u==null||u.destroy(),l.value.style="",o.value&&(u=new r(o.value,{viewMode:2,preview:n.value.getRootNode().querySelector(`.${x}-clip-preview-target`)}))})});const c=()=>{u.clear(),u.destroy(),u=null,s.value.value="",a.imgSelected=!1,a.imgSrc=""};return()=>{var h;return $(_n,{class:`${x}-modal-clip`,title:(h=e.value.clipModalTips)==null?void 0:h.title,visible:t.visible,onClose:t.onCancel,showAdjust:!0,isFullscreen:a.isFullscreen,onAdjust:f=>{a.isFullscreen=f},width:"668px",height:"421px"},{default:()=>{var f,d,p;return[$("div",{class:`${x}-form-item ${x}-clip`},[$("div",{class:`${x}-clip-main`},[a.imgSelected?$("div",{class:`${x}-clip-cropper`},[$("img",{src:a.imgSrc,ref:o,style:{display:"none"},alt:""},null),$("div",{class:`${x}-clip-delete`,onClick:c},[$(ce,{name:"delete"},null)])]):$("div",{class:`${x}-clip-upload`,onClick:()=>{s.value.click()},role:"button",tabindex:"0","aria-label":(f=e.value.imgTitleItem)==null?void 0:f.upload},[$(ce,{name:"upload"},null)])]),$("div",{class:`${x}-clip-preview`},[$("div",{class:`${x}-clip-preview-target`,ref:l},null)])]),$("div",{class:`${x}-form-item`},[$("button",{class:`${x}-btn`,type:"button",onClick:()=>{if(u){const m=u.getCroppedCanvas();X.emit(i,Hl,[W2(m.toDataURL("image/png"))],t.onOk),c()}}},[((d=e.value.clipModalTips)==null?void 0:d.buttonUpload)||((p=e.value.linkModalTips)==null?void 0:p.buttonOK)])]),$("input",{ref:s,accept:"image/*",type:"file",multiple:!1,style:{display:"none"},"aria-hidden":"true"},null)]}})}}}),E5={type:{type:String,default:"link"},linkVisible:{type:Boolean,default:!1},clipVisible:{type:Boolean,default:!1},onCancel:{type:Function,default:()=>{}},onOk:{type:Function,default:()=>{}}},R5=Te({name:`${x}-modals`,props:E5,setup(t){return()=>$(Gs,null,[$(C5,{type:t.type,visible:t.linkVisible,onOk:t.onOk,onCancel:t.onCancel},null),$(A5,{visible:t.clipVisible,onOk:t.onOk,onCancel:t.onCancel},null)])}}),D5=Te({name:"MDEditorToolbar",props:w5,setup(t){const e=H("editorId"),i=H("usedLanguageText"),n=H("theme"),r=H("previewTheme"),s=H("language"),o=H("disabled"),{fullscreenHandler:l}=$5(t),a=`${e}-toolbar-wrapper`,u=pe(),c=ct({title:!1,catalog:!1,image:!1,table:!1,mermaid:!1,katex:!1}),h=(b,y)=>{if(o!=null&&o.value)return!1;X.emit(e,xe,b,y)},f=ct({type:"link",linkVisible:!1,clipVisible:!1}),d=pe();Ae(()=>{X.on(e,{name:bu,callback(b){f.type=b,f.linkVisible=!0}})});const p=He(()=>{const b=t.toolbars.filter(Q=>!t.toolbarsExclude.includes(Q)),y=b.indexOf("="),w=y===-1?b:b.slice(0,y+1),v=y===-1?[]:b.slice(y,Number.MAX_SAFE_INTEGER);return[w,v]}),m=pe(),O=()=>{X.emit(e,Hl,Array.from(m.value.files||[])),m.value.value=""};Ae(()=>{m.value.addEventListener("change",O)});const g=b=>{var y,w,v,Q,P,_,R,L,I,T,M,F,B,Y,J,ee,re,ue,ye,Oe,le,Se,et,Pi,dn,pn,ao,uo,In,Xn,co,ho,zn,fo,po,zr,zh,jh,Fh,Bh,Vh,qh,Wh,Yh,Nh,Gh,Uh,Hh,Kh,Jh,ef,tf,nf,rf,sf,of,lf,af,uf,cf,hf,ff,df,pf,mf,Of,gf,bf,vf,yf,xf,kf,Sf,wf,$f,Qf,_f,Pf,Cf,Tf,Af;if(wc.includes(b))switch(b){case"-":return $(S5,null,null);case"bold":return $("div",{class:[`${x}-toolbar-item`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(y=i.value.toolbarTips)==null?void 0:y.bold,onClick:()=>{h("bold")}},[$(ce,{name:"bold"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(w=i.value.toolbarTips)==null?void 0:w.bold])]);case"underline":return $("div",{class:[`${x}-toolbar-item`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(v=i.value.toolbarTips)==null?void 0:v.underline,onClick:()=>{h("underline")}},[$(ce,{name:"underline"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(Q=i.value.toolbarTips)==null?void 0:Q.underline])]);case"italic":return $("div",{class:[`${x}-toolbar-item`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(P=i.value.toolbarTips)==null?void 0:P.italic,onClick:()=>{h("italic")}},[$(ce,{name:"italic"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(_=i.value.toolbarTips)==null?void 0:_.italic])]);case"strikeThrough":return $("div",{class:[`${x}-toolbar-item`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(R=i.value.toolbarTips)==null?void 0:R.strikeThrough,onClick:()=>{h("strikeThrough")}},[$(ce,{name:"strike-through"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(L=i.value.toolbarTips)==null?void 0:L.strikeThrough])]);case"title":return $(Bn,{relative:`#${a}`,visible:c.title,onChange:ie=>{c.title=ie},disabled:o==null?void 0:o.value,overlay:$("ul",{class:`${x}-menu`,onClick:()=>{c.title=!1},role:"menu"},[$("li",{class:`${x}-menu-item ${x}-menu-item-title`,onClick:()=>{h("h1")},role:"menuitem",tabindex:"0"},[(I=i.value.titleItem)==null?void 0:I.h1]),$("li",{class:`${x}-menu-item ${x}-menu-item-title`,onClick:()=>{h("h2")},role:"menuitem",tabindex:"0"},[(T=i.value.titleItem)==null?void 0:T.h2]),$("li",{class:`${x}-menu-item ${x}-menu-item-title`,onClick:()=>{h("h3")},role:"menuitem",tabindex:"0"},[(M=i.value.titleItem)==null?void 0:M.h3]),$("li",{class:`${x}-menu-item ${x}-menu-item-title`,onClick:()=>{h("h4")},role:"menuitem",tabindex:"0"},[(F=i.value.titleItem)==null?void 0:F.h4]),$("li",{class:`${x}-menu-item ${x}-menu-item-title`,onClick:()=>{h("h5")},role:"menuitem",tabindex:"0"},[(B=i.value.titleItem)==null?void 0:B.h5]),$("li",{class:`${x}-menu-item ${x}-menu-item-title`,onClick:()=>{h("h6")},role:"menuitem",tabindex:"0"},[(Y=i.value.titleItem)==null?void 0:Y.h6])])},{default:()=>{var ie,tt;return[$("div",{class:[`${x}-toolbar-item`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(ie=i.value.toolbarTips)==null?void 0:ie.title},[$(ce,{name:"title"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(tt=i.value.toolbarTips)==null?void 0:tt.title])])]}});case"sub":return $("div",{class:[`${x}-toolbar-item`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(J=i.value.toolbarTips)==null?void 0:J.sub,onClick:()=>{h("sub")}},[$(ce,{name:"sub"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(ee=i.value.toolbarTips)==null?void 0:ee.sub])]);case"sup":return $("div",{class:[`${x}-toolbar-item`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(re=i.value.toolbarTips)==null?void 0:re.sup,onClick:()=>{h("sup")}},[$(ce,{name:"sup"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(ue=i.value.toolbarTips)==null?void 0:ue.sup])]);case"quote":return $("div",{class:[`${x}-toolbar-item`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(ye=i.value.toolbarTips)==null?void 0:ye.quote,onClick:()=>{h("quote")}},[$(ce,{name:"quote"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(Oe=i.value.toolbarTips)==null?void 0:Oe.quote])]);case"unorderedList":return $("div",{class:[`${x}-toolbar-item`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(le=i.value.toolbarTips)==null?void 0:le.unorderedList,onClick:()=>{h("unorderedList")}},[$(ce,{name:"unordered-list"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(Se=i.value.toolbarTips)==null?void 0:Se.unorderedList])]);case"orderedList":return $("div",{class:[`${x}-toolbar-item`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(et=i.value.toolbarTips)==null?void 0:et.orderedList,onClick:()=>{h("orderedList")}},[$(ce,{name:"ordered-list"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(Pi=i.value.toolbarTips)==null?void 0:Pi.orderedList])]);case"task":return $("div",{class:[`${x}-toolbar-item`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(dn=i.value.toolbarTips)==null?void 0:dn.task,onClick:()=>{h("task")}},[$(ce,{name:"task"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(pn=i.value.toolbarTips)==null?void 0:pn.task])]);case"codeRow":return $("div",{class:[`${x}-toolbar-item`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(ao=i.value.toolbarTips)==null?void 0:ao.codeRow,onClick:()=>{h("codeRow")}},[$(ce,{name:"code-row"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(uo=i.value.toolbarTips)==null?void 0:uo.codeRow])]);case"code":return $("div",{class:[`${x}-toolbar-item`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(In=i.value.toolbarTips)==null?void 0:In.code,onClick:()=>{h("code")}},[$(ce,{name:"code"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(Xn=i.value.toolbarTips)==null?void 0:Xn.code])]);case"link":return $("div",{class:[`${x}-toolbar-item`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(co=i.value.toolbarTips)==null?void 0:co.link,onClick:()=>{if(o!=null&&o.value)return!1;t.insertLinkDirect?h("link"):(f.type="link",f.linkVisible=!0)}},[$(ce,{name:"link"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(ho=i.value.toolbarTips)==null?void 0:ho.link])]);case"image":return t.noUploadImg?$("div",{class:[`${x}-toolbar-item`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(zn=i.value.toolbarTips)==null?void 0:zn.image,onClick:()=>{if(o!=null&&o.value)return!1;t.insertLinkDirect?h("image"):(f.type="image",f.linkVisible=!0)}},[$(ce,{name:"image"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(fo=i.value.toolbarTips)==null?void 0:fo.image])]):$(Bn,{relative:`#${a}`,visible:c.image,onChange:ie=>{c.image=ie},disabled:o==null?void 0:o.value,overlay:$("ul",{class:`${x}-menu`,onClick:()=>{c.image=!1},role:"menu"},[$("li",{class:`${x}-menu-item ${x}-menu-item-image`,onClick:()=>{t.insertLinkDirect?h("image"):(f.type="image",f.linkVisible=!0)},role:"menuitem",tabindex:"0"},[(po=i.value.imgTitleItem)==null?void 0:po.link]),$("li",{class:`${x}-menu-item ${x}-menu-item-image`,onClick:()=>{m.value.click()},role:"menuitem",tabindex:"0"},[(zr=i.value.imgTitleItem)==null?void 0:zr.upload]),$("li",{class:`${x}-menu-item ${x}-menu-item-image`,onClick:()=>{f.clipVisible=!0},role:"menuitem",tabindex:"0"},[(zh=i.value.imgTitleItem)==null?void 0:zh.clip2upload])])},{default:()=>{var ie,tt;return[$("div",{class:[`${x}-toolbar-item`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(ie=i.value.toolbarTips)==null?void 0:ie.image},[$(ce,{name:"image"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(tt=i.value.toolbarTips)==null?void 0:tt.image])])]}});case"table":return $(Bn,{relative:`#${a}`,visible:c.table,onChange:ie=>{c.table=ie},disabled:o==null?void 0:o.value,key:"bar-table",overlay:$(_5,{tableShape:t.tableShape,onSelected:ie=>{h("table",{selectedShape:ie})}},null)},{default:()=>{var ie,tt;return[$("div",{class:[`${x}-toolbar-item`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(ie=i.value.toolbarTips)==null?void 0:ie.table},[$(ce,{name:"table"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(tt=i.value.toolbarTips)==null?void 0:tt.table])])]}});case"revoke":return $("div",{class:[`${x}-toolbar-item`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(jh=i.value.toolbarTips)==null?void 0:jh.revoke,onClick:()=>{if(o!=null&&o.value)return!1;X.emit(e,tm)}},[$(ce,{name:"revoke"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(Fh=i.value.toolbarTips)==null?void 0:Fh.revoke])]);case"next":return $("div",{class:[`${x}-toolbar-item`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(Bh=i.value.toolbarTips)==null?void 0:Bh.next,onClick:()=>{if(o!=null&&o.value)return!1;X.emit(e,im)}},[$(ce,{name:"next"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(Vh=i.value.toolbarTips)==null?void 0:Vh.next])]);case"save":return $("div",{class:[`${x}-toolbar-item`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(qh=i.value.toolbarTips)==null?void 0:qh.save,onClick:()=>{if(o!=null&&o.value)return!1;X.emit(e,Ul)}},[$(ce,{name:"save"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(Wh=i.value.toolbarTips)==null?void 0:Wh.save])]);case"prettier":return t.noPrettier?"":$("div",{class:[`${x}-toolbar-item`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(Yh=i.value.toolbarTips)==null?void 0:Yh.prettier,onClick:()=>{h("prettier")}},[$(ce,{name:"prettier"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(Nh=i.value.toolbarTips)==null?void 0:Nh.prettier])]);case"pageFullscreen":return!t.setting.fullscreen&&$("div",{class:[`${x}-toolbar-item`,t.setting.pageFullscreen&&`${x}-toolbar-active`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(Gh=i.value.toolbarTips)==null?void 0:Gh.pageFullscreen,onClick:()=>{if(o!=null&&o.value)return!1;t.updateSetting("pageFullscreen")}},[$(ce,{name:t.setting.pageFullscreen?"minimize":"maximize"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(Uh=i.value.toolbarTips)==null?void 0:Uh.pageFullscreen])]);case"fullscreen":return $("div",{class:[`${x}-toolbar-item`,t.setting.fullscreen&&`${x}-toolbar-active`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(Hh=i.value.toolbarTips)==null?void 0:Hh.fullscreen,onClick:()=>{if(o!=null&&o.value)return!1;l()}},[$(ce,{name:t.setting.fullscreen?"fullscreen-exit":"fullscreen"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(Kh=i.value.toolbarTips)==null?void 0:Kh.fullscreen])]);case"preview":return $("div",{class:[`${x}-toolbar-item`,t.setting.preview&&`${x}-toolbar-active`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(Jh=i.value.toolbarTips)==null?void 0:Jh.preview,onClick:()=>{if(o!=null&&o.value)return!1;t.updateSetting("preview")}},[$(ce,{name:"preview"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(ef=i.value.toolbarTips)==null?void 0:ef.preview])]);case"previewOnly":return $("div",{class:[`${x}-toolbar-item`,t.setting.previewOnly&&`${x}-toolbar-active`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(tf=i.value.toolbarTips)==null?void 0:tf.previewOnly,onClick:()=>{if(o!=null&&o.value)return!1;t.updateSetting("previewOnly")}},[$(ce,{name:"preview-only"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(nf=i.value.toolbarTips)==null?void 0:nf.previewOnly])]);case"htmlPreview":return $("div",{class:[`${x}-toolbar-item`,t.setting.htmlPreview&&`${x}-toolbar-active`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(rf=i.value.toolbarTips)==null?void 0:rf.htmlPreview,onClick:()=>{if(o!=null&&o.value)return!1;t.updateSetting("htmlPreview")}},[$(ce,{name:"preview-html"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(sf=i.value.toolbarTips)==null?void 0:sf.htmlPreview])]);case"catalog":return $("div",{class:[`${x}-toolbar-item`,t.catalogVisible&&`${x}-toolbar-active`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(of=i.value.toolbarTips)==null?void 0:of.catalog,onClick:()=>{if(o!=null&&o.value)return!1;X.emit(e,Qc)},key:"bar-catalog"},[$(ce,{name:"catalog"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(lf=i.value.toolbarTips)==null?void 0:lf.catalog])]);case"github":return $("div",{class:[`${x}-toolbar-item`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(af=i.value.toolbarTips)==null?void 0:af.github,onClick:()=>{if(o!=null&&o.value)return!1;$v("https://github.com/imzbf/md-editor-v3")}},[$(ce,{name:"github"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(uf=i.value.toolbarTips)==null?void 0:uf.github])]);case"mermaid":return $(Bn,{relative:`#${a}`,visible:c.mermaid,onChange:ie=>{c.mermaid=ie},disabled:o==null?void 0:o.value,overlay:$("ul",{class:`${x}-menu`,onClick:()=>{c.mermaid=!1},role:"menu"},[$("li",{class:`${x}-menu-item ${x}-menu-item-mermaid`,onClick:()=>{h("flow")},role:"menuitem",tabindex:"0"},[(cf=i.value.mermaid)==null?void 0:cf.flow]),$("li",{class:`${x}-menu-item ${x}-menu-item-mermaid`,onClick:()=>{h("sequence")},role:"menuitem",tabindex:"0"},[(hf=i.value.mermaid)==null?void 0:hf.sequence]),$("li",{class:`${x}-menu-item ${x}-menu-item-mermaid`,onClick:()=>{h("gantt")},role:"menuitem",tabindex:"0"},[(ff=i.value.mermaid)==null?void 0:ff.gantt]),$("li",{class:`${x}-menu-item ${x}-menu-item-mermaid`,onClick:()=>{h("class")},role:"menuitem",tabindex:"0"},[(df=i.value.mermaid)==null?void 0:df.class]),$("li",{class:`${x}-menu-item ${x}-menu-item-mermaid`,onClick:()=>{h("state")},role:"menuitem",tabindex:"0"},[(pf=i.value.mermaid)==null?void 0:pf.state]),$("li",{class:`${x}-menu-item ${x}-menu-item-mermaid`,onClick:()=>{h("pie")},role:"menuitem",tabindex:"0"},[(mf=i.value.mermaid)==null?void 0:mf.pie]),$("li",{class:`${x}-menu-item ${x}-menu-item-mermaid`,onClick:()=>{h("relationship")},role:"menuitem",tabindex:"0"},[(Of=i.value.mermaid)==null?void 0:Of.relationship]),$("li",{class:`${x}-menu-item ${x}-menu-item-mermaid`,onClick:()=>{h("journey")},role:"menuitem",tabindex:"0"},[(gf=i.value.mermaid)==null?void 0:gf.journey])]),key:"bar-mermaid"},{default:()=>{var ie,tt;return[$("div",{class:[`${x}-toolbar-item`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(ie=i.value.toolbarTips)==null?void 0:ie.mermaid},[$(ce,{name:"mermaid"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(tt=i.value.toolbarTips)==null?void 0:tt.mermaid])])]}});case"katex":return $(Bn,{relative:`#${a}`,visible:c.katex,onChange:ie=>{c.katex=ie},disabled:o==null?void 0:o.value,overlay:$("ul",{class:`${x}-menu`,onClick:()=>{c.katex=!1},role:"menu"},[$("li",{class:`${x}-menu-item ${x}-menu-item-katex`,onClick:()=>{h("katexInline")},role:"menuitem",tabindex:"0"},[(bf=i.value.katex)==null?void 0:bf.inline]),$("li",{class:`${x}-menu-item ${x}-menu-item-katex`,onClick:()=>{h("katexBlock")},role:"menuitem",tabindex:"0"},[(vf=i.value.katex)==null?void 0:vf.block])]),key:"bar-katex"},{default:()=>{var ie,tt;return[$("div",{class:[`${x}-toolbar-item`,(o==null?void 0:o.value)&&`${x}-disabled`],title:(ie=i.value.toolbarTips)==null?void 0:ie.katex},[$(ce,{name:"formula"},null),t.showToolbarName&&$("div",{class:`${x}-toolbar-item-name`},[(tt=i.value.toolbarTips)==null?void 0:tt.katex])])]}})}else if(t.defToolbars instanceof Array){const ie=t.defToolbars[b];return ie?ys(ie,{theme:((yf=ie.props)==null?void 0:yf.theme)||n.value,previewTheme:((xf=ie.props)==null?void 0:xf.theme)||r.value,language:((kf=ie.props)==null?void 0:kf.theme)||s.value,codeTheme:((Sf=ie.props)==null?void 0:Sf.codeTheme)||t.codeTheme,disabled:((wf=ie.props)==null?void 0:wf.disabled)||(o==null?void 0:o.value),showToolbarName:(($f=ie.props)==null?void 0:$f.showToolbarName)||t.showToolbarName,insert(ba){X.emit(e,xe,"universal",{generate:ba})}}):""}else if(t.defToolbars&&t.defToolbars.children instanceof Array){const ie=t.defToolbars.children[b];return ie?ys(ie,{theme:((Qf=ie.props)==null?void 0:Qf.theme)||n.value,previewTheme:((_f=ie.props)==null?void 0:_f.theme)||r.value,language:((Pf=ie.props)==null?void 0:Pf.theme)||s.value,codeTheme:((Cf=ie.props)==null?void 0:Cf.codeTheme)||t.codeTheme,disabled:((Tf=ie.props)==null?void 0:Tf.disabled)||(o==null?void 0:o.value),showToolbarName:((Af=ie.props)==null?void 0:Af.showToolbarName)||t.showToolbarName,insert(ba){X.emit(e,xe,"universal",{generate:ba})}}):""}else return""};return te(()=>t.toolbars,()=>{li(()=>{u.value&&_v(u.value)})},{immediate:!0}),()=>{var b;const y=p.value[0].map(v=>g(v)),w=p.value[1].map(v=>g(v));return $(Gs,null,[t.toolbars.length>0&&$("div",{class:`${x}-toolbar-wrapper`,ref:u,id:a},[$("div",{class:[`${x}-toolbar`,t.showToolbarName&&`${x}-stn`]},[$("div",{class:`${x}-toolbar-left`,ref:d},[y]),$("div",{class:`${x}-toolbar-right`},[w])])]),$("label",{for:`${a}_label`,style:{display:"none"},"aria-label":(b=i.value.imgTitleItem)==null?void 0:b.upload},null),$("input",{id:`${a}_label`,ref:m,accept:"image/*",type:"file",multiple:!0,style:{display:"none"}},null),$(R5,{linkVisible:f.linkVisible,clipVisible:f.clipVisible,type:f.type,onCancel:()=>{f.linkVisible=!1,f.clipVisible=!1},onOk:v=>{v&&h(f.type,{desc:v.desc,url:v.url,transform:f.type==="image"}),f.linkVisible=!1,f.clipVisible=!1}},null)])}}}),L5=(t,e,i)=>{const n=H("editorId");let r=()=>{},s=()=>{};const o=()=>{var l;r();const a=(l=i.value)==null?void 0:l.view.contentDOM.getRootNode(),u=a.querySelector(`#${n} .cm-scroller`),c=a.querySelector(`[id="${n}-preview-wrapper"]`),h=a.querySelector(`[id="${n}-html-wrapper"]`);(c||h)&&([s,r]=(c?AS:TS)(u,c||h,i.value),t.scrollAuto&&s())};te([e,si(t.setting,"preview"),si(t.setting,"htmlPreview"),si(t.setting,"fullscreen"),si(t.setting,"pageFullscreen")],()=>{li(o)}),te(()=>t.scrollAuto,l=>{l?s():r()}),te(()=>t.setting.previewOnly,l=>{l?r():s()}),Ae(o)},fu=async(t,e,i)=>{if(/^h[1-6]$/.test(t))return M5(t,e);if(t==="prettier")return await Z5(e,i);switch(t){case"bold":case"underline":case"italic":case"strikeThrough":case"sub":case"sup":case"codeRow":case"katexInline":case"katexBlock":return X5(t,e);case"quote":case"orderedList":case"unorderedList":case"task":return j5(t,e);case"code":return F5(i,e);case"table":return q5(i);case"link":{const{desc:n="",url:r=""}=i,s=`[${n}](${r})`;return{text:s,options:{select:r==="",deviationStart:s.length-r.length-1,deviationEnd:-1}}}case"image":return V5(i);case"flow":case"sequence":case"gantt":case"class":case"state":case"pie":case"relationship":case"journey":return B5(t);case"universal":return W5(e.getSelectedText(),i);default:return{text:"",options:{}}}},M5=(t,e)=>{const i=t.slice(1),n="#".repeat(Number(i)),[r,s,o]=Zh(e,{wholeLine:!0});return{text:`${n} ${r}`,options:{deviationStart:n.length+1,replaceStart:s,replaceEnd:o}}},Z5=async(t,e)=>{var i,n,r;const s=window.prettier||((i=Me.editorExtensions.prettier)==null?void 0:i.prettierInstance),o=[((n=window.prettierPlugins)==null?void 0:n.markdown)||((r=Me.editorExtensions.prettier)==null?void 0:r.parserMarkdownInstance)];return!s||!o[0]?(X.emit(e.editorId,hn,{name:"prettier",message:"prettier is undefined"}),{text:t.getValue(),options:{select:!1,replaceAll:!0}}):{text:await s.format(t.getValue(),{parser:"markdown",plugins:o}),options:{select:!1,replaceAll:!0}}},I5={bold:["**","**",2,-2],underline:["","",3,-4],italic:["*","*",1,-1],strikeThrough:["~~","~~",2,-2],sub:["~","~",1,-1],sup:["^","^",1,-1],codeRow:["`","`",1,-1],katexInline:["$","$",1,-1],katexBlock:[` +$$ +`,` +$$ +`,4,-4]},X5=(t,e)=>{const i=e.getSelectedText(),[n,r,s,o]=I5[t];return{text:`${n}${i}${r}`,options:{deviationStart:s,deviationEnd:o}}},z5={quote:"> ",unorderedList:"- ",orderedList:1,task:"- [ ] "},j5=(t,e)=>{const[i,n,r]=Zh(e,{wholeLine:!0}),s=i.split(` +`),o=z5[t],l=t==="orderedList"?s.map((c,h)=>`${o+h}. ${c}`):s.map(c=>`${o}${c}`),a=t==="orderedList"?"1. ":o.toString(),u=s.length===1?a.length:0;return{text:l.join(` +`),options:{deviationStart:u,replaceStart:n,replaceEnd:r}}},F5=(t,e)=>{const[i,n,r]=Zh(e),s=t.mode||"language",o=` +\`\`\`${s} +${t.text||i||""} +\`\`\` +`;return{text:o,options:{deviationStart:4,deviationEnd:4+s.length-o.length,replaceStart:n,replaceEnd:r}}},B5=t=>({text:` +\`\`\`mermaid +${{flow:`flowchart TD + Start --> Stop`,sequence:`sequenceDiagram + A->>B: hello! + B-->>A: hi!`,gantt:`gantt +title Gantt Chart +dateFormat YYYY-MM-DD`,class:`classDiagram + class Animal`,state:`stateDiagram-v2 + s1 --> s2`,pie:`pie + "Dogs" : 386 + "Cats" : 85 + "Rats" : 15`,relationship:`erDiagram + CAR ||--o{ NAMED-DRIVER : allows`,journey:`journey + title My Journey`,...Me.editorConfig.mermaidTemplate}[t]} +\`\`\` +`,options:{deviationStart:12,deviationEnd:-5}}),V5=t=>{const{desc:e="",url:i="",urls:n}=t;let r="";const s=i===""&&(!n||n instanceof Array&&n.length===0);return n instanceof Array?r=n.reduce((o,l)=>{const{url:a="",alt:u="",title:c=""}=typeof l=="object"?l:{url:l};return o+`![${u}](${a}${c?" '"+c+"'":""}) +`},""):r=`![${e}](${i}) +`,{text:r,options:{select:i==="",deviationStart:s?r.length-i.length-2:r.length,deviationEnd:s?-2:0}}},q5=t=>{const{selectedShape:e={x:1,y:1}}=t,{x:i,y:n}=e;let r=` +| Column`;for(let s=0;s<=n;s++)r+=" |";r+=` +|`;for(let s=0;s<=n;s++)r+=" - |";for(let s=0;s<=i;s++){r+=` +|`;for(let o=0;o<=n;o++)r+=" |"}return r+=` +`,{text:r,options:{deviationStart:3,deviationEnd:10-r.length}}},W5=(t,e)=>{const{generate:i}=e,n=i(t);return{text:n.targetValue,options:{select:n.select??!0,deviationStart:n.deviationStart||0,deviationEnd:n.deviationEnd||0}}},Zh=(t,e={wholeLine:!1})=>{const i=t.view.state,n=i.selection.main;if(n.empty){const r=i.doc.lineAt(n.from);return[i.doc.lineAt(n.from).text,r.from,r.to]}else if(e.wholeLine){const r=i.doc.lineAt(n.from),s=i.doc.lineAt(n.to);return[i.doc.sliceString(r.from,s.to),r.from,s.to]}return[i.doc.sliceString(n.from,n.to),n.from,n.to]},Y5="#e5c07b",Ap="var(--md-color)",N5="#56b6c2",G5="#ffffff",is="var(--md-color)",Ep="#e5c07b",U5="#e5c07b",H5="var(--md-color)",Rp="#d19a66",K5="#c678dd",J5="#21252b",e6="#2c313a",Dp="var(--md-bk-color)",du="var(--md-bk-color)",t6="#ceedfa33",Lp="#528bff",i6=W.theme({"&":{color:is,backgroundColor:Dp},".cm-content":{caretColor:Lp},".cm-cursor, .cm-dropCursor":{borderLeftColor:Lp},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:t6},".cm-panels":{backgroundColor:J5,color:is},".cm-panels.cm-panels-top":{borderBottom:"1px solid var(--md-border-color)"},".cm-panels.cm-panels-bottom":{borderTop:"1px solid var(--md-border-color)"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#ceedfa33"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:Dp,color:is,borderRight:"1px solid",borderColor:"var(--md-border-color)"},".cm-activeLineGutter":{backgroundColor:e6},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"1px solid var(--md-border-color)",backgroundColor:du},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:du,borderBottomColor:du},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{color:is}}},{dark:!0}),n6=ro.define([{tag:k.keyword,color:K5},{tag:[k.name,k.deleted,k.character,k.propertyName,k.macroName],color:Ap},{tag:[k.function(k.variableName),k.labelName],color:U5},{tag:[k.color,k.constant(k.name),k.standard(k.name)],color:Rp},{tag:[k.definition(k.name),k.separator],color:is},{tag:[k.typeName,k.className,k.number,k.changed,k.annotation,k.modifier,k.self,k.namespace],color:Y5},{tag:[k.operator,k.operatorKeyword,k.url,k.escape,k.regexp,k.link,k.special(k.string)],color:N5},{tag:[k.meta,k.comment],color:Ep},{tag:k.strong,fontWeight:"bold"},{tag:k.emphasis,fontStyle:"italic"},{tag:k.strikethrough,textDecoration:"line-through"},{tag:k.link,color:Ep,textDecoration:"underline"},{tag:k.heading,fontWeight:"bold",color:Ap},{tag:[k.atom,k.bool,k.special(k.variableName)],color:Rp},{tag:[k.processingInstruction,k.string,k.inserted],color:H5},{tag:k.invalid,color:G5}]),Mp=[i6,Eg(n6)],r6="#e5c07b",Zp="var(--md-color)",s6="#56b6c2",o6="#fff",ns="#3f4a54",Ip="#2d8cf0",l6="#2d8cf0",a6="#3f4a54",Xp="#d19a66",u6="#c678dd",c6="#f6f6f6",h6="#ceedfa33",zp="var(--md-bk-color)",pu="var(--md-bk-color)",f6="#bad5fa",jp="#3f4a54",d6=W.theme({"&":{color:ns,backgroundColor:zp},".cm-content":{caretColor:jp},".cm-cursor, .cm-dropCursor":{borderLeftColor:jp},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:f6},".cm-panels":{backgroundColor:c6,color:ns},".cm-panels.cm-panels-top":{borderBottom:"1px solid var(--md-border-color)"},".cm-panels.cm-panels-bottom":{borderTop:"1px solid var(--md-border-color)"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#ceedfa33"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:zp,color:ns,borderRight:"1px solid",borderColor:"var(--md-border-color)"},".cm-activeLineGutter":{backgroundColor:h6},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"1px solid var(--md-border-color)",backgroundColor:pu},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:pu,borderBottomColor:pu},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{color:ns}}}),p6=ro.define([{tag:k.keyword,color:u6},{tag:[k.name,k.deleted,k.character,k.propertyName,k.macroName],color:Zp},{tag:[k.function(k.variableName),k.labelName],color:l6},{tag:[k.color,k.constant(k.name),k.standard(k.name)],color:Xp},{tag:[k.definition(k.name),k.separator],color:ns},{tag:[k.typeName,k.className,k.number,k.changed,k.annotation,k.modifier,k.self,k.namespace],color:r6},{tag:[k.operator,k.operatorKeyword,k.url,k.escape,k.regexp,k.link,k.special(k.string)],color:s6},{tag:[k.meta,k.comment],color:Ip},{tag:k.strong,fontWeight:"bold"},{tag:k.emphasis,fontStyle:"italic"},{tag:k.strikethrough,textDecoration:"line-through"},{tag:k.link,color:Ip,textDecoration:"underline"},{tag:k.heading,fontWeight:"bold",color:Zp},{tag:[k.atom,k.bool,k.special(k.variableName)],color:Xp},{tag:[k.processingInstruction,k.string,k.inserted],color:a6},{tag:k.invalid,color:o6}]),Fp=[d6,Eg(p6)],qo=(t,e,i,n,r)=>(s,o,l,a)=>{const u=`${t}${e}${i}${n}`,c=l+o.label.length+(r==="title"?i.length:0);s.dispatch({changes:{from:l,to:a,insert:u},selection:E.create([E.range(l+o.label.length+(r==="title"?1:-e.length),c),E.cursor(c)],1)}),s.focus()},Bp=t=>(e,i,n,r)=>{const s=t.slice(r-n);e.dispatch(e.state.replaceSelection(`${s} `))},Vp=t=>{const e=i=>{const n=i.matchBefore(/^#+|^-\s*\[*\s*\]*|`+|\[|!\[*|^\|\s?\|?|\$\$?|!+\s*\w*/);return n===null||n.from==n.to&&i.explicit?null:{from:n.from,options:[...["h2","h3","h4","h5","h6"].map((r,s)=>{const o=new Array(s+2).fill("#").join("");return{label:o,type:"text",apply:Bp(o)}}),...["unchecked","checked"].map(r=>{const s=r==="checked"?"- [x]":"- [ ]";return{label:s,type:"text",apply:Bp(s)}}),...[["`",""],["```","language"],["```mermaid\n",""]].map(r=>({label:`${r[0]}${r[1]}`,type:"text",apply:qo(r[0],r[1],"",r[0]==="`"?"`":"\n```","type")})),{label:"[]()",type:"text"},{label:"![]()",type:"text"},{label:"| |",type:"text",detail:"table",apply:`| col | col | col | +| - | - | - | +| content | content | content | +| content | content | content |`},{label:"$",type:"text",apply:qo("$","","","$","type")},{label:"$$",type:"text",apply:qo("$$","",` +`,` +$$`,"title")},...["note","abstract","info","tip","success","question","warning","failure","danger","bug","example","quote","hint","caution","error","attention"].map(r=>({label:`!!! ${r}`,type:"text",apply:qo("!!!",` ${r}`," Title",` + +!!!`,"title")}))]}};return dP({override:t?[e,...t]:[e]})},Fn=t=>{const e=new gi;return n=>(e.get(t.state)?t.dispatch({effects:e.reconfigure(n)}):t.dispatch({effects:ae.appendConfig.of(e.of(n))}),!0)};class m6{constructor(e){Fi(this,"view"),Fi(this,"maxLength",Number.MAX_SAFE_INTEGER),Fi(this,"toggleTabSize"),Fi(this,"togglePlaceholder"),Fi(this,"setExtensions"),Fi(this,"toggleDisabled"),Fi(this,"toggleReadOnly"),Fi(this,"toggleMaxlength"),this.view=e,this.toggleTabSize=Fn(this.view),this.togglePlaceholder=Fn(this.view),this.setExtensions=Fn(this.view),this.toggleDisabled=Fn(this.view),this.toggleReadOnly=Fn(this.view),this.toggleMaxlength=Fn(this.view)}getValue(){return this.view.state.doc.toString()}setValue(e,i=0,n=this.view.state.doc.length){this.view.dispatch({changes:{from:i,to:n,insert:e}})}getSelectedText(){const{from:e,to:i}=this.view.state.selection.main;return this.view.state.sliceDoc(e,i)}replaceSelectedText(e,i,n){const r={select:!0,deviationStart:0,deviationEnd:0,replaceAll:!1,replaceStart:-1,replaceEnd:-1,...i};try{if(r.replaceAll){if(this.setValue(e),e.length>this.maxLength)throw new Error("The input text is too long");return}if(this.view.state.doc.length-this.getSelectedText().length+e.length>this.maxLength)throw new Error("The input text is too long");const{from:s}=this.view.state.selection.main;r.replaceStart!==-1?this.view.dispatch({changes:{from:r.replaceStart,to:r.replaceEnd,insert:e}}):this.view.dispatch(this.view.state.replaceSelection(e)),r.select&&this.view.dispatch({selection:{anchor:r.replaceStart===-1?s+r.deviationStart:r.replaceStart+r.deviationStart,head:r.replaceStart===-1?s+e.length+r.deviationEnd:r.replaceStart+e.length+r.deviationEnd}}),this.view.focus()}catch(s){if(s.message==="The input text is too long")X.emit(n,hn,{name:"overlength",message:s.message,data:e});else throw s}}setTabSize(e){this.toggleTabSize([fe.tabSize.of(e),Lr.of(" ".repeat(e))])}setPlaceholder(e){this.togglePlaceholder(K3(e))}focus(e){if(this.view.focus(),!e)return;let i=0,n=0,r=0;switch(e){case"start":break;case"end":{i=n=r=this.getValue().length;break}default:i=e.rangeAnchor||e.cursorPos,n=e.rangeHead||e.cursorPos,r=e.cursorPos}this.view.dispatch({scrollIntoView:!0,selection:E.create([E.range(i,n),E.cursor(r)],1)})}setDisabled(e){this.toggleDisabled([W.editable.of(!e)])}setReadOnly(e){this.toggleReadOnly([fe.readOnly.of(e)])}setMaxLength(e){this.maxLength=e,this.toggleMaxlength([fe.changeFilter.of(i=>i.newDoc.length<=e)])}}const O6=(t,e)=>{const i=H("editorId"),n=s=>{s instanceof Promise?s.then(o=>{X.emit(i,xe,"universal",{generate(){return{targetValue:o}}})}).catch(o=>{console.error(o)}):X.emit(i,xe,"universal",{generate(){return{targetValue:s}}})};return s=>{var o,l,a;if(!s.clipboardData)return;if(s.clipboardData.files.length>0){const{files:m}=s.clipboardData;X.emit(i,Hl,Array.from(m).filter(O=>/image\/.*/.test(O.type))),s.preventDefault();return}const u=s.clipboardData.getData("text/plain"),c=((o=e.value)==null?void 0:o.view.state.selection.main.to)||0,h=((l=e.value)==null?void 0:l.view.state.doc.lineAt(c).from)||0,f=((a=e.value)==null?void 0:a.view.state.doc.sliceString(h,c))||"",d=/!\[.*\]\(\s*$/.test(f),p=/!\[.*\]\((.*)\s?.*\)/.test(u);if(d){const m=t.transformImgUrl(u);n(m),s.preventDefault();return}else if(p){const m=u.match(new RegExp(`(?<=!\\[.*\\]\\()([^)\\s]+)(?=\\s?["']?.*["']?\\))`,"g"));m?Promise.all(m.map(O=>t.transformImgUrl(O))).then(O=>{n(O.reduce((g,b,y)=>g.replace(m[y],b),u))}):n(u),s.preventDefault();return}if(t.autoDetectCode&&s.clipboardData.types.includes("vscode-editor-data")){const m=JSON.parse(s.clipboardData.getData("vscode-editor-data"));X.emit(i,xe,"code",{mode:m.mode,text:s.clipboardData.getData("text/plain")}),s.preventDefault();return}t.maxlength&&u.length+t.modelValue.length>t.maxlength&&X.emit(i,hn,{name:"overlength",message:"The input text is too long",data:u})}},g6=(t,e)=>[{key:"Ctrl-b",mac:"Cmd-b",run:()=>(X.emit(t,xe,"bold"),!0)},{key:"Ctrl-d",mac:"Cmd-d",run:m1,preventDefault:!0},{key:"Ctrl-s",mac:"Cmd-s",run:w=>(X.emit(t,Ul,w.state.doc.toString()),!0),shift:()=>(X.emit(t,xe,"strikeThrough"),!0)},{key:"Ctrl-u",mac:"Cmd-u",preventDefault:!0,run:()=>(X.emit(t,xe,"underline"),!0),shift:()=>(X.emit(t,xe,"unorderedList"),!0)},{key:"Ctrl-i",mac:"Cmd-i",preventDefault:!0,run:()=>(X.emit(t,xe,"italic"),!0),shift:()=>(X.emit(t,bu,"image"),!0)},{key:"Ctrl-1",mac:"Cmd-1",run:()=>(X.emit(t,xe,"h1"),!0)},{key:"Ctrl-2",mac:"Cmd-2",run:()=>(X.emit(t,xe,"h2"),!0)},{key:"Ctrl-3",mac:"Cmd-3",run:()=>(X.emit(t,xe,"h3"),!0)},{key:"Ctrl-4",mac:"Cmd-4",run:()=>(X.emit(t,xe,"h4"),!0)},{key:"Ctrl-5",mac:"Cmd-5",run:()=>(X.emit(t,xe,"h5"),!0)},{key:"Ctrl-6",mac:"Cmd-6",run:()=>(X.emit(t,xe,"h6"),!0)},{key:"Ctrl-ArrowUp",mac:"Cmd-ArrowUp",run:()=>(X.emit(t,xe,"sup"),!0)},{key:"Ctrl-ArrowDown",mac:"Cmd-ArrowDown",run:()=>(X.emit(t,xe,"sub"),!0)},{key:"Ctrl-o",mac:"Cmd-o",run:()=>(X.emit(t,xe,"orderedList"),!0)},{key:"Ctrl-c",mac:"Cmd-c",shift:()=>(X.emit(t,xe,"code"),!0),any(w,v){return(v.ctrlKey||v.metaKey)&&v.altKey&&v.code==="KeyC"?(X.emit(t,xe,"codeRow"),!0):!1}},{key:"Ctrl-l",mac:"Cmd-l",run:()=>(X.emit(t,bu,"link"),!0)},{key:"Ctrl-f",mac:"Cmd-f",shift:()=>e.noPrettier?!1:(X.emit(t,xe,"prettier"),!0)},{any:(w,v)=>(v.ctrlKey||v.metaKey)&&v.altKey&&v.shiftKey&&v.code==="KeyT"?(X.emit(t,xe,"table"),!0):!1},...Q_];W.EDIT_CONTEXT=!1;const b6=t=>{const e=H("tabWidth"),i=H("editorId"),n=H("theme"),r=pe(),s=Tn(),o=pe(!1),l=new gi,a=new gi,u=new gi,c=new gi,h=new gi,f=g6(i,t),d=()=>[...f,...l_,...mQ,a_],m={paste:O6(t,s),blur:t.onBlur,focus:t.onFocus,drop:t.onDrop,compositionstart:()=>{o.value=!0},compositionend:(b,y)=>{o.value=!1,t.updateModelValue(y.state.doc.toString())},input:b=>{t.onInput&&t.onInput(b);const{data:y}=b;t.maxlength&&t.modelValue.length+y.length>t.maxlength&&X.emit(i,hn,{name:"overlength",message:"The input text is too long",data:y})}},O=[io.of(d()),c.of(Q0()),l.of(iv({codeLanguages:OP})),W.lineWrapping,W.updateListener.of(b=>{b.docChanged&&(t.onChange(b.state.doc.toString()),o.value||t.updateModelValue(b.state.doc.toString()))}),h.of(W.domEventHandlers(m)),Y3()],g=()=>{const b=[...O,a.of(n.value==="light"?Fp:Mp),u.of(Vp(t.completions))];return Me.codeMirrorExtensions(n.value,b,d(),{editorId:i})};return Ae(()=>{const b=new W({doc:t.modelValue,parent:r.value,extensions:[g()]}),y=new m6(b);s.value=y,setTimeout(()=>{y.setTabSize(e),y.setDisabled(t.disabled),y.setReadOnly(t.readonly),t.placeholder&&y.setPlaceholder(t.placeholder),typeof t.maxlength=="number"&&y.setMaxLength(t.maxlength),t.autofocus&&b.focus()},0),X.on(i,{name:tm,callback(){lh(b)}}),X.on(i,{name:im,callback(){El(b)}}),X.on(i,{name:xe,async callback(w,v={}){var Q,P;if(w==="image"&&v.transform){const _=t.transformImgUrl(v.url);if(_ instanceof Promise)_.then(async R=>{var L;const{text:I,options:T}=await fu(w,s.value,{...v,url:R});(L=s.value)==null||L.replaceSelectedText(I,T,i)}).catch(R=>{console.error(R)});else{const{text:R,options:L}=await fu(w,s.value,{...v,url:_});(Q=s.value)==null||Q.replaceSelectedText(R,L,i)}}else{const{text:_,options:R}=await fu(w,s.value,v);(P=s.value)==null||P.replaceSelectedText(_,R,i)}}}),X.on(i,{name:rm,callback:Qv(w=>{var v;const Q={...m},P=Object.keys(m);for(const _ in w){const R=_;P.includes(R)?Q[R]=(L,I)=>{w[R](L,I),L.defaultPrevented||m[R](L,I)}:Q[R]=w[R]}(v=s.value)==null||v.view.dispatch({effects:h.reconfigure(W.domEventHandlers(Q))})})}),X.on(i,{name:sm,callback:(w,v)=>{const Q=b.state.doc.line(w);b.dispatch(b.state.update({changes:{from:Q.from,to:Q.to,insert:v}}))}}),X.on(i,{name:om,callback(){X.emit(i,pl,b)}}),X.emit(i,pl,b)}),te(n,()=>{var b;(b=s.value)==null||b.view.dispatch({effects:a.reconfigure(n.value==="light"?Fp:Mp)})},{deep:!0}),te(()=>t.completions,()=>{var b;(b=s.value)==null||b.view.dispatch({effects:u.reconfigure(Vp(t.completions))})},{deep:!0}),te(()=>t.modelValue,()=>{var b,y;((b=s.value)==null?void 0:b.getValue())!==t.modelValue&&((y=s.value)==null||y.setValue(t.modelValue))}),te(()=>t.placeholder,()=>{var b;(b=s.value)==null||b.setPlaceholder(t.placeholder)}),te(()=>t.disabled,()=>{var b;(b=s.value)==null||b.setDisabled(t.disabled)}),te(()=>t.readonly,()=>{var b;(b=s.value)==null||b.setDisabled(t.readonly)}),te(()=>t.maxlength,()=>{var b;t.maxlength&&((b=s.value)==null||b.setMaxLength(t.maxlength))}),{inputWrapperRef:r,codeMirrorUt:s,resetHistory(){var b,y;(b=s.value)==null||b.view.dispatch({effects:c.reconfigure([])}),(y=s.value)==null||y.view.dispatch({effects:c.reconfigure(Q0())})}}},v6=(t,e,i)=>{const n=He(()=>/px$/.test(`${t.inputBoxWidth}`)?"50%":t.inputBoxWidth),r=ct({resizedWidth:n.value}),s=ct({width:n.value}),o=ct({left:n.value,display:"initial"}),l=c=>{var h,f,d;const p=((h=e.value)==null?void 0:h.offsetWidth)||0,m=((f=e.value)==null?void 0:f.getBoundingClientRect().x)||0;let O=c.x-m;O/pp-p*Oo&&(O=p-p*Oo);const g=`${O/p*100}%`;s.width=g,o.left=g,r.resizedWidth=g,(d=t.oninputBoxWidthChange)==null||d.call(t,g)},a=c=>{c.target===i.value&&document.addEventListener("mousemove",l)},u=()=>{document.removeEventListener("mousemove",l)};return te([i],()=>{document.removeEventListener("mousedown",a),document.removeEventListener("mouseup",u),document.addEventListener("mousedown",a),document.addEventListener("mouseup",u)}),Ae(()=>{document.addEventListener("mousedown",a),document.addEventListener("mouseup",u)}),Mn(()=>{document.removeEventListener("mousedown",a),document.removeEventListener("mouseup",u)}),te([n],([c])=>{r.resizedWidth=c,s.width=c,o.left=c}),te([si(t.setting,"htmlPreview"),si(t.setting,"preview"),si(t.setting,"previewOnly")],()=>{t.setting.previewOnly?(s.width="0%",o.display="none"):!t.setting.htmlPreview&&!t.setting.preview?(s.width="100%",o.display="none"):(s.width=r.resizedWidth,o.display="initial")},{immediate:!0}),{inputWrapperStyle:s,resizeOperateStyle:o}},y6=Jp(),x6=Te({name:"MDEditorContent",props:Tk,setup(t,e){const i=H("editorId"),n=pe(""),r=pe(),s=pe(),{inputWrapperRef:o,codeMirrorUt:l,resetHistory:a}=b6(t),{inputWrapperStyle:u,resizeOperateStyle:c}=v6(t,r,s);return L5(t,n,l),e.expose({getSelectedText(){var h;return(h=l.value)==null?void 0:h.getSelectedText()},focus(h){var f;(f=l.value)==null||f.focus(h)},resetHistory:a,getEditorView(){var h;return(h=l.value)==null?void 0:h.view}}),()=>$("div",{class:`${x}-content`},[$("div",{class:`${x}-content-wrapper`,ref:r},[$("div",{class:`${x}-input-wrapper`,style:u,ref:o},null),(t.setting.htmlPreview||t.setting.preview)&&$("div",{class:`${x}-resize-operate`,style:c,ref:s},null),$(Vm,{modelValue:t.modelValue,onChange:t.onChange,setting:t.setting,onHtmlChanged:h=>{n.value=h,t.onHtmlChanged(h)},onGetCatalog:t.onGetCatalog,mdHeadingId:t.mdHeadingId,noMermaid:t.noMermaid,sanitize:t.sanitize,noKatex:t.noKatex,formatCopiedText:t.formatCopiedText,noHighlight:t.noHighlight,noImgZoomIn:t.noImgZoomIn,sanitizeMermaid:t.sanitizeMermaid,codeFoldable:t.codeFoldable,autoFoldThreshold:t.autoFoldThreshold,onRemount:t.onRemount},null)]),t.catalogVisible&&$(Jn,{theme:t.theme,class:`${x}-catalog-editor ${x}-catalog-${t.catalogLayout}`,editorId:i,mdHeadingId:t.mdHeadingId,key:"internal-catalog",scrollElementOffsetTop:2,syncWith:t.setting.preview?"preview":"editor",onClick:(h,f)=>{var d,p;if(!t.setting.preview&&f.line!==void 0){h.preventDefault();const m=(d=l.value)==null?void 0:d.view;if(m){const O=m.state.doc.line(f.line+1),g=(p=m.lineBlockAt(O.from))==null?void 0:p.top,b=m.scrollDOM;y6(b,g)}}},catalogMaxDepth:t.catalogMaxDepth},null)])}}),k6=Te({props:{modelValue:{type:String,default:""}},setup(t){const e=H("usedLanguageText");return()=>{var i,n;return $("div",{class:`${x}-footer-item`},[$("label",{class:`${x}-footer-label`},[`${(i=e.value.footer)==null?void 0:i.markdownTotal}:`]),$("span",null,[((n=t.modelValue)==null?void 0:n.length)||0])])}}}),S6={checked:{type:Boolean,default:!1},onChange:{type:Function,default:()=>{}},disabled:{type:Boolean,default:void 0}},w6=Te({name:`${x}-checkbox`,props:S6,setup(t){return()=>$("div",{class:[`${x}-checkbox`,t.checked&&`${x}-checkbox-checked`,t.disabled&&`${x}-disabled`],onClick:()=>{t.disabled||t.onChange(!t.checked)}},null)}}),$6={scrollAuto:{type:Boolean},onScrollAutoChange:{type:Function,default:()=>{}}},Q6=Te({props:$6,setup(t){const e=H("usedLanguageText"),i=H("disabled");return()=>{var n;return $("div",{class:[`${x}-footer-item`,(i==null?void 0:i.value)&&`${x}-disabled`]},[$("label",{class:`${x}-footer-label`,onClick:()=>{t.onScrollAutoChange(!t.scrollAuto)}},[(n=e==null?void 0:e.value.footer)==null?void 0:n.scrollAuto]),$(w6,{checked:t.scrollAuto,onChange:t.onScrollAutoChange,disabled:i==null?void 0:i.value},null)])}}}),_6={modelValue:{type:String,default:""},footers:{type:Array,default:[]},scrollAuto:{type:Boolean},noScrollAuto:{type:Boolean},onScrollAutoChange:{type:Function,default:()=>{}},defFooters:{type:Object}},P6=Te({name:"MDEditorFooter",props:_6,setup(t){const e=H("theme"),i=H("language"),n=H("disabled"),r=He(()=>{const o=t.footers.indexOf("="),l=o===-1?t.footers:t.footers.slice(0,o),a=o===-1?[]:t.footers.slice(o,Number.MAX_SAFE_INTEGER);return[l,a]}),s=o=>{var l,a,u,c,h,f;if($c.includes(o))switch(o){case"markdownTotal":return $(k6,{modelValue:t.modelValue},null);case"scrollSwitch":return!t.noScrollAuto&&$(Q6,{scrollAuto:t.scrollAuto,onScrollAutoChange:t.onScrollAutoChange},null)}else if(t.defFooters instanceof Array){const d=t.defFooters[o];return d?ys(d,{theme:((l=d.props)==null?void 0:l.theme)||e.value,language:((a=d.props)==null?void 0:a.language)||i.value,disabled:((u=d.props)==null?void 0:u.disabled)||(n==null?void 0:n.value)}):""}else if(t.defFooters&&t.defFooters.children instanceof Array){const d=t.defFooters.children[o];return d?ys(d,{theme:((c=d.props)==null?void 0:c.theme)||e.value,language:((h=d.props)==null?void 0:h.language)||i.value,disabled:((f=d.props)==null?void 0:f.disabled)||(n==null?void 0:n.value)}):""}else return""};return()=>{const o=r.value[0].map(a=>s(a)),l=r.value[1].map(a=>s(a));return $("div",{class:`${x}-footer`},[$("div",{class:`${x}-footer-left`},[o]),$("div",{class:`${x}-footer-right`},[l])])}}}),ul=Te({name:"MdEditorV3",props:Bk,emits:Vk,setup(t,e){const{noKatex:i,noMermaid:n,noPrettier:r,noUploadImg:s,noHighlight:o}=t,l=ct({scrollAuto:t.scrollAuto}),a=pe(),u=pe(),{editorId:c}=Lk(t,a),[h,f]=Ik(t,e,{editorId:c}),d=Xk(t,{editorId:c});return Dk(t,e,{editorId:c}),Mk(t),Zk(t,e,{editorId:c}),zk(t,e,{editorId:c,catalogVisible:d,setting:h,updateSetting:f,codeRef:u}),Mn(()=>{X.clear(c)}),()=>{const p=ht({props:t,ctx:e},"defToolbars"),m=ht({props:t,ctx:e},"defFooters");return $("div",{id:c,class:[x,t.class,t.theme==="dark"&&`${x}-dark`,h.fullscreen||h.pageFullscreen?`${x}-fullscreen`:""],style:t.style,ref:a},[t.toolbars.length>0&&$(D5,{noPrettier:r,toolbars:t.toolbars,toolbarsExclude:t.toolbarsExclude,setting:h,updateSetting:f,tableShape:t.tableShape,defToolbars:p,noUploadImg:s,showToolbarName:t.showToolbarName,catalogVisible:d.value,codeTheme:t.codeTheme,insertLinkDirect:t.insertLinkDirect},null),$(x6,{ref:u,modelValue:t.modelValue,setting:h,mdHeadingId:t.mdHeadingId,noMermaid:n,noPrettier:r,sanitize:t.sanitize,placeholder:t.placeholder,noKatex:i,scrollAuto:l.scrollAuto,formatCopiedText:t.formatCopiedText,autofocus:t.autoFocus,disabled:t.disabled,readonly:t.readOnly,maxlength:t.maxLength,autoDetectCode:t.autoDetectCode,noHighlight:o,updateModelValue:O=>{e.emit("update:modelValue",O)},onChange:O=>{var g;(g=t.onChange)==null||g.call(t,O),e.emit("onChange",O)},onHtmlChanged:O=>{var g;(g=t.onHtmlChanged)==null||g.call(t,O),e.emit("onHtmlChanged",O)},onGetCatalog:O=>{var g;(g=t.onGetCatalog)==null||g.call(t,O),e.emit("onGetCatalog",O)},onBlur:O=>{var g;(g=t.onBlur)==null||g.call(t,O),e.emit("onBlur",O)},onFocus:O=>{var g;(g=t.onFocus)==null||g.call(t,O),e.emit("onFocus",O)},onInput:O=>{var g;(g=t.onInput)==null||g.call(t,O),e.emit("onInput",O)},completions:t.completions,catalogVisible:d.value,theme:t.theme,noImgZoomIn:t.noImgZoomIn,onDrop:O=>{var g;(g=t.onDrop)==null||g.call(t,O),e.emit("onDrop",O)},inputBoxWidth:t.inputBoxWidth,oninputBoxWidthChange:O=>{var g;(g=t.oninputBoxWidthChange)==null||g.call(t,O),e.emit("oninputBoxWidthChange",O)},sanitizeMermaid:t.sanitizeMermaid,transformImgUrl:t.transformImgUrl,codeFoldable:t.codeFoldable,autoFoldThreshold:t.autoFoldThreshold,onRemount:()=>{var O;(O=t.onRemount)==null||O.call(t),e.emit("onRemount")},catalogLayout:t.catalogLayout,catalogMaxDepth:t.catalogMaxDepth},null),t.footers.length>0&&$(P6,{modelValue:t.modelValue,footers:t.footers,defFooters:m,noScrollAuto:!h.preview&&!h.htmlPreview||h.previewOnly,scrollAuto:l.scrollAuto,onScrollAutoChange:O=>l.scrollAuto=O},null)])}}});ul.install=t=>(t.component(ul.name,ul),t.use(gs).use(rs).use(bs).use(Jn).use(ls),t);const C6=dl["zh-CN"],T6=dl["en-US"];function A6(t,e){for(var i=0;in[r]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}const E6={onClick:{type:Function,default:void 0},language:{type:String,default:void 0},theme:{type:String,default:void 0},disabled:{type:Boolean,default:void 0}},cl=Te({name:"NormalFooterToolbar",props:E6,emits:["onClick"],setup(t,e){return()=>{const i=ht({props:t,ctx:e});return $("div",{class:[`${x}-footer-item`,t.disabled&&`${x}-disabled`],onClick:n=>{var r;t.disabled||((r=t.onClick)==null||r.call(t,n),e.emit("onClick",n))}},[i])}}});cl.install=t=>(t.component(cl.name,cl),t);function R6(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var kc={exports:{}},Ee={},Sc={exports:{}},Zn={};function rv(){var t={};return t["align-content"]=!1,t["align-items"]=!1,t["align-self"]=!1,t["alignment-adjust"]=!1,t["alignment-baseline"]=!1,t.all=!1,t["anchor-point"]=!1,t.animation=!1,t["animation-delay"]=!1,t["animation-direction"]=!1,t["animation-duration"]=!1,t["animation-fill-mode"]=!1,t["animation-iteration-count"]=!1,t["animation-name"]=!1,t["animation-play-state"]=!1,t["animation-timing-function"]=!1,t.azimuth=!1,t["backface-visibility"]=!1,t.background=!0,t["background-attachment"]=!0,t["background-clip"]=!0,t["background-color"]=!0,t["background-image"]=!0,t["background-origin"]=!0,t["background-position"]=!0,t["background-repeat"]=!0,t["background-size"]=!0,t["baseline-shift"]=!1,t.binding=!1,t.bleed=!1,t["bookmark-label"]=!1,t["bookmark-level"]=!1,t["bookmark-state"]=!1,t.border=!0,t["border-bottom"]=!0,t["border-bottom-color"]=!0,t["border-bottom-left-radius"]=!0,t["border-bottom-right-radius"]=!0,t["border-bottom-style"]=!0,t["border-bottom-width"]=!0,t["border-collapse"]=!0,t["border-color"]=!0,t["border-image"]=!0,t["border-image-outset"]=!0,t["border-image-repeat"]=!0,t["border-image-slice"]=!0,t["border-image-source"]=!0,t["border-image-width"]=!0,t["border-left"]=!0,t["border-left-color"]=!0,t["border-left-style"]=!0,t["border-left-width"]=!0,t["border-radius"]=!0,t["border-right"]=!0,t["border-right-color"]=!0,t["border-right-style"]=!0,t["border-right-width"]=!0,t["border-spacing"]=!0,t["border-style"]=!0,t["border-top"]=!0,t["border-top-color"]=!0,t["border-top-left-radius"]=!0,t["border-top-right-radius"]=!0,t["border-top-style"]=!0,t["border-top-width"]=!0,t["border-width"]=!0,t.bottom=!1,t["box-decoration-break"]=!0,t["box-shadow"]=!0,t["box-sizing"]=!0,t["box-snap"]=!0,t["box-suppress"]=!0,t["break-after"]=!0,t["break-before"]=!0,t["break-inside"]=!0,t["caption-side"]=!1,t.chains=!1,t.clear=!0,t.clip=!1,t["clip-path"]=!1,t["clip-rule"]=!1,t.color=!0,t["color-interpolation-filters"]=!0,t["column-count"]=!1,t["column-fill"]=!1,t["column-gap"]=!1,t["column-rule"]=!1,t["column-rule-color"]=!1,t["column-rule-style"]=!1,t["column-rule-width"]=!1,t["column-span"]=!1,t["column-width"]=!1,t.columns=!1,t.contain=!1,t.content=!1,t["counter-increment"]=!1,t["counter-reset"]=!1,t["counter-set"]=!1,t.crop=!1,t.cue=!1,t["cue-after"]=!1,t["cue-before"]=!1,t.cursor=!1,t.direction=!1,t.display=!0,t["display-inside"]=!0,t["display-list"]=!0,t["display-outside"]=!0,t["dominant-baseline"]=!1,t.elevation=!1,t["empty-cells"]=!1,t.filter=!1,t.flex=!1,t["flex-basis"]=!1,t["flex-direction"]=!1,t["flex-flow"]=!1,t["flex-grow"]=!1,t["flex-shrink"]=!1,t["flex-wrap"]=!1,t.float=!1,t["float-offset"]=!1,t["flood-color"]=!1,t["flood-opacity"]=!1,t["flow-from"]=!1,t["flow-into"]=!1,t.font=!0,t["font-family"]=!0,t["font-feature-settings"]=!0,t["font-kerning"]=!0,t["font-language-override"]=!0,t["font-size"]=!0,t["font-size-adjust"]=!0,t["font-stretch"]=!0,t["font-style"]=!0,t["font-synthesis"]=!0,t["font-variant"]=!0,t["font-variant-alternates"]=!0,t["font-variant-caps"]=!0,t["font-variant-east-asian"]=!0,t["font-variant-ligatures"]=!0,t["font-variant-numeric"]=!0,t["font-variant-position"]=!0,t["font-weight"]=!0,t.grid=!1,t["grid-area"]=!1,t["grid-auto-columns"]=!1,t["grid-auto-flow"]=!1,t["grid-auto-rows"]=!1,t["grid-column"]=!1,t["grid-column-end"]=!1,t["grid-column-start"]=!1,t["grid-row"]=!1,t["grid-row-end"]=!1,t["grid-row-start"]=!1,t["grid-template"]=!1,t["grid-template-areas"]=!1,t["grid-template-columns"]=!1,t["grid-template-rows"]=!1,t["hanging-punctuation"]=!1,t.height=!0,t.hyphens=!1,t.icon=!1,t["image-orientation"]=!1,t["image-resolution"]=!1,t["ime-mode"]=!1,t["initial-letters"]=!1,t["inline-box-align"]=!1,t["justify-content"]=!1,t["justify-items"]=!1,t["justify-self"]=!1,t.left=!1,t["letter-spacing"]=!0,t["lighting-color"]=!0,t["line-box-contain"]=!1,t["line-break"]=!1,t["line-grid"]=!1,t["line-height"]=!1,t["line-snap"]=!1,t["line-stacking"]=!1,t["line-stacking-ruby"]=!1,t["line-stacking-shift"]=!1,t["line-stacking-strategy"]=!1,t["list-style"]=!0,t["list-style-image"]=!0,t["list-style-position"]=!0,t["list-style-type"]=!0,t.margin=!0,t["margin-bottom"]=!0,t["margin-left"]=!0,t["margin-right"]=!0,t["margin-top"]=!0,t["marker-offset"]=!1,t["marker-side"]=!1,t.marks=!1,t.mask=!1,t["mask-box"]=!1,t["mask-box-outset"]=!1,t["mask-box-repeat"]=!1,t["mask-box-slice"]=!1,t["mask-box-source"]=!1,t["mask-box-width"]=!1,t["mask-clip"]=!1,t["mask-image"]=!1,t["mask-origin"]=!1,t["mask-position"]=!1,t["mask-repeat"]=!1,t["mask-size"]=!1,t["mask-source-type"]=!1,t["mask-type"]=!1,t["max-height"]=!0,t["max-lines"]=!1,t["max-width"]=!0,t["min-height"]=!0,t["min-width"]=!0,t["move-to"]=!1,t["nav-down"]=!1,t["nav-index"]=!1,t["nav-left"]=!1,t["nav-right"]=!1,t["nav-up"]=!1,t["object-fit"]=!1,t["object-position"]=!1,t.opacity=!1,t.order=!1,t.orphans=!1,t.outline=!1,t["outline-color"]=!1,t["outline-offset"]=!1,t["outline-style"]=!1,t["outline-width"]=!1,t.overflow=!1,t["overflow-wrap"]=!1,t["overflow-x"]=!1,t["overflow-y"]=!1,t.padding=!0,t["padding-bottom"]=!0,t["padding-left"]=!0,t["padding-right"]=!0,t["padding-top"]=!0,t.page=!1,t["page-break-after"]=!1,t["page-break-before"]=!1,t["page-break-inside"]=!1,t["page-policy"]=!1,t.pause=!1,t["pause-after"]=!1,t["pause-before"]=!1,t.perspective=!1,t["perspective-origin"]=!1,t.pitch=!1,t["pitch-range"]=!1,t["play-during"]=!1,t.position=!1,t["presentation-level"]=!1,t.quotes=!1,t["region-fragment"]=!1,t.resize=!1,t.rest=!1,t["rest-after"]=!1,t["rest-before"]=!1,t.richness=!1,t.right=!1,t.rotation=!1,t["rotation-point"]=!1,t["ruby-align"]=!1,t["ruby-merge"]=!1,t["ruby-position"]=!1,t["shape-image-threshold"]=!1,t["shape-outside"]=!1,t["shape-margin"]=!1,t.size=!1,t.speak=!1,t["speak-as"]=!1,t["speak-header"]=!1,t["speak-numeral"]=!1,t["speak-punctuation"]=!1,t["speech-rate"]=!1,t.stress=!1,t["string-set"]=!1,t["tab-size"]=!1,t["table-layout"]=!1,t["text-align"]=!0,t["text-align-last"]=!0,t["text-combine-upright"]=!0,t["text-decoration"]=!0,t["text-decoration-color"]=!0,t["text-decoration-line"]=!0,t["text-decoration-skip"]=!0,t["text-decoration-style"]=!0,t["text-emphasis"]=!0,t["text-emphasis-color"]=!0,t["text-emphasis-position"]=!0,t["text-emphasis-style"]=!0,t["text-height"]=!0,t["text-indent"]=!0,t["text-justify"]=!0,t["text-orientation"]=!0,t["text-overflow"]=!0,t["text-shadow"]=!0,t["text-space-collapse"]=!0,t["text-transform"]=!0,t["text-underline-position"]=!0,t["text-wrap"]=!0,t.top=!1,t.transform=!1,t["transform-origin"]=!1,t["transform-style"]=!1,t.transition=!1,t["transition-delay"]=!1,t["transition-duration"]=!1,t["transition-property"]=!1,t["transition-timing-function"]=!1,t["unicode-bidi"]=!1,t["vertical-align"]=!1,t.visibility=!1,t["voice-balance"]=!1,t["voice-duration"]=!1,t["voice-family"]=!1,t["voice-pitch"]=!1,t["voice-range"]=!1,t["voice-rate"]=!1,t["voice-stress"]=!1,t["voice-volume"]=!1,t.volume=!1,t["white-space"]=!1,t.widows=!1,t.width=!0,t["will-change"]=!1,t["word-break"]=!0,t["word-spacing"]=!0,t["word-wrap"]=!0,t["wrap-flow"]=!1,t["wrap-through"]=!1,t["writing-mode"]=!1,t["z-index"]=!1,t}function D6(t,e,i){}function L6(t,e,i){}var M6=/javascript\s*\:/img;function Z6(t,e){return M6.test(e)?"":e}Zn.whiteList=rv();Zn.getDefaultWhiteList=rv;Zn.onAttr=D6;Zn.onIgnoreAttr=L6;Zn.safeAttrValue=Z6;var I6={indexOf:function(t,e){var i,n;if(Array.prototype.indexOf)return t.indexOf(e);for(i=0,n=t.length;i/g,J6=/"/g,e4=/"/g,t4=/&#([a-zA-Z0-9]*);?/gim,i4=/:?/gim,n4=/&newline;?/gim,Yo=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a):/gi,Wp=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,Yp=/u\s*r\s*l\s*\(.*/gi;function uv(t){return t.replace(J6,""")}function cv(t){return t.replace(e4,'"')}function hv(t){return t.replace(t4,function(i,n){return n[0]==="x"||n[0]==="X"?String.fromCharCode(parseInt(n.substr(1),16)):String.fromCharCode(parseInt(n,10))})}function fv(t){return t.replace(i4,":").replace(n4," ")}function dv(t){for(var e="",i=0,n=t.length;i",n);if(r===-1)break;i=r+3}return e}function l4(t){var e=t.split("");return e=e.filter(function(i){var n=i.charCodeAt(0);return n===127?!1:n<=31?n===10||n===13:!0}),e.join("")}Ee.whiteList=ov();Ee.getDefaultWhiteList=ov;Ee.onTag=W6;Ee.onIgnoreTag=Y6;Ee.onTagAttr=N6;Ee.onIgnoreTagAttr=G6;Ee.safeAttrValue=U6;Ee.escapeHtml=av;Ee.escapeQuote=uv;Ee.unescapeQuote=cv;Ee.escapeHtmlEntities=hv;Ee.escapeDangerHtml5Entities=fv;Ee.clearNonPrintableCharacter=dv;Ee.friendlyAttrValue=pv;Ee.escapeAttrValue=mv;Ee.onIgnoreTagStripAll=r4;Ee.StripTagBody=s4;Ee.stripCommentTag=o4;Ee.stripBlankChar=l4;Ee.attributeWrapSign='"';Ee.cssFilter=lv;Ee.getDefaultCSSWhiteList=q6;var ga={},Hi=Xh;function a4(t){var e=Hi.spaceIndex(t),i;return e===-1?i=t.slice(1,-1):i=t.slice(1,e+1),i=Hi.trim(i).toLowerCase(),i.slice(0,1)==="/"&&(i=i.slice(1)),i.slice(-1)==="/"&&(i=i.slice(0,-1)),i}function u4(t){return t.slice(0,2)===""||l===a-1){n+=i(t.slice(r,s)),c=t.slice(s,l+1),u=a4(c),n+=e(s,n.length,u,c,u4(c)),r=l+1,s=!1;continue}if(h==='"'||h==="'")for(var f=1,d=t.charAt(l-f);d.trim()===""||d==="=";){if(d==="="){o=h;continue e}d=t.charAt(l-++f)}}else if(h===o){o=!1;continue}}return r0;e--){var i=t[e];if(i!==" ")return i==="="?e:-1}}function O4(t){return t[0]==='"'&&t[t.length-1]==='"'||t[0]==="'"&&t[t.length-1]==="'"}function Np(t){return O4(t)?t.substr(1,t.length-2):t}ga.parseTag=c4;ga.parseAttr=f4;var g4=Ih.FilterCSS,It=Ee,Ov=ga,b4=Ov.parseTag,v4=Ov.parseAttr,hl=Xh;function No(t){return t==null}function y4(t){var e=hl.spaceIndex(t);if(e===-1)return{html:"",closing:t[t.length-2]==="/"};t=hl.trim(t.slice(e+1,-1));var i=t[t.length-1]==="/";return i&&(t=hl.trim(t.slice(0,-1))),{html:t,closing:i}}function x4(t){var e={};for(var i in t)e[i]=t[i];return e}function k4(t){var e={};for(var i in t)Array.isArray(t[i])?e[i.toLowerCase()]=t[i].map(function(n){return n.toLowerCase()}):e[i.toLowerCase()]=t[i];return e}function gv(t){t=x4(t||{}),t.stripIgnoreTag&&(t.onIgnoreTag&&console.error('Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time'),t.onIgnoreTag=It.onIgnoreTagStripAll),t.whiteList||t.allowList?t.whiteList=k4(t.whiteList||t.allowList):t.whiteList=It.whiteList,this.attributeWrapSign=t.singleQuotedAttributeValue===!0?"'":It.attributeWrapSign,t.onTag=t.onTag||It.onTag,t.onTagAttr=t.onTagAttr||It.onTagAttr,t.onIgnoreTag=t.onIgnoreTag||It.onIgnoreTag,t.onIgnoreTagAttr=t.onIgnoreTagAttr||It.onIgnoreTagAttr,t.safeAttrValue=t.safeAttrValue||It.safeAttrValue,t.escapeHtml=t.escapeHtml||It.escapeHtml,this.options=t,t.css===!1?this.cssFilter=!1:(t.css=t.css||{},this.cssFilter=new g4(t.css))}gv.prototype.process=function(t){if(t=t||"",t=t.toString(),!t)return"";var e=this,i=e.options,n=i.whiteList,r=i.onTag,s=i.onIgnoreTag,o=i.onTagAttr,l=i.onIgnoreTagAttr,a=i.safeAttrValue,u=i.escapeHtml,c=e.attributeWrapSign,h=e.cssFilter;i.stripBlankChar&&(t=It.stripBlankChar(t)),i.allowCommentTag||(t=It.stripCommentTag(t));var f=!1;i.stripIgnoreTagBody&&(f=It.StripTagBody(i.stripIgnoreTagBody,s),s=f.onIgnoreTag);var d=b4(t,function(p,m,O,g,b){var y={sourcePosition:p,position:m,isClosing:b,isWhite:Object.prototype.hasOwnProperty.call(n,O)},w=r(O,g,y);if(!No(w))return w;if(y.isWhite){if(y.isClosing)return"";var v=y4(g),Q=n[O],P=v4(v.html,function(_,R){var L=hl.indexOf(Q,_)!==-1,I=o(O,_,R,L);return No(I)?L?(R=a(O,_,R,h),R?_+"="+c+R+c:_):(I=l(O,_,R,L),No(I)?void 0:I):I});return g="<"+O,P&&(g+=" "+P),v.closing&&(g+=" /"),g+=">",g}else return w=s(O,g,y),No(w)?u(g):w},u);return f&&(d=f.remove(d)),d};var S4=gv;(function(t,e){var i=Ee,n=ga,r=S4;function s(l,a){var u=new r(a);return u.process(l)}e=t.exports=s,e.filterXSS=s,e.FilterXSS=r,(function(){for(var l in i)e[l]=i[l];for(var a in n)e[a]=n[a]})(),typeof window<"u"&&(window.filterXSS=t.exports);function o(){return typeof self<"u"&&typeof DedicatedWorkerGlobalScope<"u"&&self instanceof DedicatedWorkerGlobalScope}o()&&(self.filterXSS=t.exports)})(kc,kc.exports);var vs=kc.exports;const w4=R6(vs),$4=A6({__proto__:null,default:w4},[vs]),Gp={img:["class"],input:["class","disabled","type","checked"],iframe:["class","width","height","src","title","border","frameborder","framespacing","allow","allowfullscreen"]},Q4=(t,e)=>{const{extendedWhiteList:i={},xss:n={}}=e;let r;if(typeof n=="function")r=new vs.FilterXSS(n($4));else{const s=vs.getDefaultWhiteList();[...Object.keys(i),...Object.keys(Gp)].forEach(l=>{const a=s[l]||[],u=Gp[l]||[],c=i[l]||[];s[l]=[...new Set([...a,...u,...c])]}),r=new vs.FilterXSS({whiteList:s,...n})}t.core.ruler.after("linkify","xss",s=>{for(let o=0;o{u.type==="html_inline"&&(u.content=r.process(u.content))});break}}}})},_4=()=>{Object.keys(bt).forEach(t=>{const e=document.getElementById(bt[t]);e&&e.remove()})},Z4=Object.freeze(Object.defineProperty({__proto__:null,DropdownToolbar:rs,MdCatalog:Jn,MdEditor:ul,MdModal:_n,MdPreview:ls,ModalToolbar:bs,NormalFooterToolbar:cl,NormalToolbar:gs,StrIcon:os,XSSPlugin:Q4,allFooter:$c,allToolbar:wc,clearSideEffects:_4,config:Mv,editorExtensionsAttrs:Lv,en_US:T6,prefix:x,zh_CN:C6},Symbol.toStringTag,{value:"Module"}));export{nb as C,Zt as E,ge as I,Sr as L,Sg as N,Qr as a,A_ as b,ol as c,P1 as d,Pr as e,no as f,Re as g,ql as h,Mr as i,M$ as j,L$ as k,Ag as l,mt as m,W as n,E as o,Bb as p,wg as q,vb as r,Dr as s,k as t,Rg as u,qt as v,Z4 as w}; diff --git a/frontend/dist/assets/index-2rnqZitJ.js b/frontend/dist/assets/index-2rnqZitJ.js new file mode 100644 index 0000000..307d478 --- /dev/null +++ b/frontend/dist/assets/index-2rnqZitJ.js @@ -0,0 +1 @@ +import{L as g,a as q,p as P,q as l,v as i,s as c,t as r,e as R,E as p}from"./index--cDK8lVp.js";import"./index-BKKvzUDD.js";const b=1,$=33,m=34,v=35,x=36,W=new p(O=>{let e=O.pos;for(;;){if(O.next==10){O.advance();break}else if(O.next==123&&O.peek(1)==123||O.next<0)break;O.advance()}O.pos>e&&O.acceptToken(b)});function n(O,e,a){return new p(t=>{let u=t.pos;for(;t.next!=O&&t.next>=0&&(a||t.next!=38&&(t.next!=123||t.peek(1)!=123));)t.advance();t.pos>u&&t.acceptToken(e)})}const d=n(39,$,!1),C=n(34,m,!1),T=n(39,v,!0),f=n(34,x,!0),A=R.deserialize({version:14,states:"(jOVOqOOOeQpOOOvO!bO'#CaOOOP'#Cx'#CxQVOqOOO!OQpO'#CfO!WQpO'#ClO!]QpO'#CrO!bQpO'#CsOOQO'#Cv'#CvQ!gQpOOQ!lQpOOQ!qQpOOOOOV,58{,58{O!vOpO,58{OOOP-E6v-E6vO!{QpO,59QO#TQpO,59QOOQO,59W,59WO#YQpO,59^OOQO,59_,59_O#_QpOOO#_QpOOO#gQpOOOOOV1G.g1G.gO#oQpO'#CyO#tQpO1G.lOOQO1G.l1G.lO#|QpO1G.lOOQO1G.x1G.xO$UO`O'#DUO$ZOWO'#DUOOQO'#Co'#CoQOQpOOOOQO'#Cu'#CuO$`OtO'#CwO$qOrO'#CwOOQO,59e,59eOOQO-E6w-E6wOOQO7+$W7+$WO%SQpO7+$WO%[QpO7+$WOOOO'#Cp'#CpO%aOpO,59pOOOO'#Cq'#CqO%fOpO,59pOOOS'#Cz'#CzO%kOtO,59cOOQO,59c,59cOOOQ'#C{'#C{O%|OrO,59cO&_QpO<O.name=="InterpolationContent"?o:null)}),y=Q.configure({wrap:l((O,e)=>{var a;return O.name=="InterpolationContent"?o:O.name!="AttributeInterpolation"?null:((a=O.node.parent)===null||a===void 0?void 0:a.name)=="StatementAttributeValue"?w:o}),top:"Attribute"}),E={parser:U},N={parser:y},s=P({selfClosingTags:!0});function S(O){return O.configure({wrap:l(z)},"angular")}const k=S(s.language);function z(O,e){switch(O.name){case"Attribute":return/^[*#(\[]|\{\{/.test(e.read(O.from,O.to))?N:null;case"Text":return E}return null}function h(O={}){let e=s;if(O.base){if(O.base.language.name!="html"||!(O.base.language instanceof g))throw new RangeError("The base option must be the result of calling html(...)");e=O.base}return new q(e.language==s.language?k:S(e.language),[e.support,e.language.data.of({closeBrackets:{brackets:["[","{",'"']},indentOnInput:/^\s*[\}\]]$/})])}export{h as angular,k as angularLanguage}; diff --git a/frontend/dist/assets/index-5j7eJv_9.js b/frontend/dist/assets/index-5j7eJv_9.js new file mode 100644 index 0000000..70f62a6 --- /dev/null +++ b/frontend/dist/assets/index-5j7eJv_9.js @@ -0,0 +1 @@ +import{n as d,o as g,a as v,p as m,q as u,g as x,L as G,s as b,t as a,i as Z,k as R,f as h,e as k,E as f,h as w}from"./index--cDK8lVp.js";import"./index-BKKvzUDD.js";const X=1,T=2,y=3,U=155,z=4,j=156;function Y(O){return O>=65&&O<=90||O>=97&&O<=122}const E=new f(O=>{let i=O.pos;for(;;){let{next:t}=O;if(t<0)break;if(t==123){let r=O.peek(1);if(r==123){if(O.pos>i)break;O.acceptToken(X,2);return}else if(r==35){if(O.pos>i)break;O.acceptToken(T,2);return}else if(r==37){if(O.pos>i)break;let e=2,P=2;for(;;){let Q=O.peek(e);if(Q==32||Q==10)++e;else if(Q==35)for(++e;;){let o=O.peek(e);if(o<0||o==10)break;e++}else if(Q==45&&P==2)P=++e;else{O.acceptToken(y,P);return}}}}if(O.advance(),t==10)break}O.pos>i&&O.acceptToken(U)});function _(O,i,t){return new f(r=>{let e=r.pos;for(;;){let{next:P}=r;if(P==123&&r.peek(1)==37){let Q=2;for(;;Q++){let n=r.peek(Q);if(n!=32&&n!=10)break}let o="";for(;;Q++){let n=r.peek(Q);if(!Y(n))break;o+=String.fromCharCode(n)}if(o==O){if(r.pos>e)break;r.acceptToken(t,2);break}}else if(P<0)break;if(r.advance(),P==10)break}r.pos>e&&r.acceptToken(i)})}const W=_("endraw",j,z),V={__proto__:null,in:38,is:40,and:46,or:48,not:52,if:78,else:80,true:98,false:98,self:100,super:102,loop:104,recursive:136,scoped:160,required:162,as:256,import:260,ignore:268,missing:270,with:272,without:274,context:276},q={__proto__:null,if:112,elif:118,else:122,endif:126,for:132,endfor:140,raw:146,endraw:152,block:158,endblock:166,macro:172,endmacro:182,call:188,endcall:192,filter:198,endfilter:202,set:208,endset:212,trans:218,pluralize:222,endtrans:226,with:232,endwith:236,autoescape:242,endautoescape:246,import:254,from:258,include:266},F=k.deserialize({version:14,states:"!*dQVOPOOOOOP'#F`'#F`OeOTO'#CbOvQSO'#CdO!kOPO'#DcO!yOPO'#DnO#XOQO'#DuO#^OPO'#D{O#lOPO'#ESO#zOPO'#E[O$YOPO'#EaO$hOPO'#EfO$vOPO'#EkO%UOPO'#ErO%dOPO'#EwOOOP'#F|'#F|O%rQWO'#E|O&sO#tO'#F]OOOP'#Fq'#FqOOOP'#F_'#F_QVOPOOOOOP-E9^-E9^OOQO'#Ce'#CeO'sQSO,59OO'zQSO'#DWO(RQSO'#DXO(YQ`O'#DZOOQO'#Fr'#FrOvQSO'#CuO(aOPO'#CbOOOP'#Fd'#FdO!kOPO,59}OOOP,59},59}O(oOPO,59}O(}QWO'#E|OOOP,5:Y,5:YO)[OPO,5:YO!yOPO,5:YO)jQWO'#E|OOOQ'#Ff'#FfO)tOQO'#DxO)|OQO,5:aOOOP,5:g,5:gO#^OPO,5:gO*RQWO'#E|OOOP,5:n,5:nO#lOPO,5:nO*YQWO'#E|OOOP,5:v,5:vO#zOPO,5:vO*aQWO'#E|OOOP,5:{,5:{O$YOPO,5:{O*hQWO'#E|OOOP,5;Q,5;QO$hOPO,5;QO*oQWO'#E|OOOP,5;V,5;VO*vOPO,5;VO$vOPO,5;VO+UQWO'#E|OOOP,5;^,5;^O%UOPO,5;^O+`QWO'#E|OOOP,5;c,5;cO%dOPO,5;cO+gQWO'#E|O+nQSO,5;hOvQSO,5:OO+uQSO,5:ZO+zQSO,5:bO+uQSO,5:hO+uQSO,5:oO,PQSO,5:wO,XQpO,5:|O+uQSO,5;RO,^QSO,5;WO,fQSO,5;_OvQSO,5;dOvQSO,5;jOvQSO,5;jOvQSO,5;pOOOO'#Fk'#FkO,nO#tO,5;wOOOP-E9]-E9]O,vQ!bO,59QOvQSO,59TOvQSO,59UOvQSO,59UOvQSO,59UOvQSO,59UO,{QSO'#C}O,XQpO,59cOOQO,59q,59qOOOP1G.j1G.jOvQSO,59UO-SQSO,59UOvQSO,59UOvQSO,59UOvQSO,59nO-wQSO'#FxO.RQSO,59rO.WQSO,59tOOQO,59s,59sO.bQSO'#D[O.iQWO'#F{O.qQWO,59uO0WQSO,59aOOOP-E9b-E9bOOOP1G/i1G/iO(oOPO1G/iO(oOPO1G/iO)TQWO'#E|OvQSO,5:SO0nQSO,5:UO0sQSO,5:WOOOP1G/t1G/tO)[OPO1G/tO)mQWO'#E|O)[OPO1G/tO0xQSO,5:_OOOQ-E9d-E9dOOOP1G/{1G/{O0}QWO'#DyOOOP1G0R1G0RO1SQSO,5:lOOOP1G0Y1G0YO1[QSO,5:tOOOP1G0b1G0bO1aQSO,5:yOOOP1G0g1G0gO1fQSO,5;OOOOP1G0l1G0lO1kQSO,5;TOOOP1G0q1G0qO*vOPO1G0qO+XQWO'#E|O*vOPO1G0qOvQSO,5;YO1pQSO,5;[OOOP1G0x1G0xO1uQSO,5;aOOOP1G0}1G0}O1zQSO,5;fO2PQSO1G1SOOOP1G1S1G1SO2WQSO1G/jOOQO'#Dq'#DqO2_QSO1G/uOOOQ1G/|1G/|O2gQSO1G0SO2rQSO1G0ZO2zQSO'#EVO3SQSO1G0cO,SQSO1G0cO4fQSO'#FvOOQO'#Fv'#FvO5]QSO1G0hO5bQSO1G0mOOOP1G0r1G0rO5mQSO1G0rO5rQSO'#GOO5zQSO1G0yO6PQSO1G1OO6WQSO1G1UO6_QSO1G1UO6fQSO1G1[OOOO-E9i-E9iOOOP1G1c1G1cOOQO1G.l1G.lO6vQSO1G.oO8wQSO1G.pO:oQSO1G.pO:vQSO1G.pOQQSO'#FrO>XQSO'#FwO>aQSO,59iOOQO1G.}1G.}O>fQSO1G.pO@aQSO1G.pOB_QSO1G.pOBfQSO1G.pOD^QSO1G/YOvQSO'#FbODeQSO,5gOOOPAN>gAN>gO! }QSOAN>gOOOPAN>tAN>tO!!SQSO1G0^O!!^QSO,5SQ`O1G.pP!>ZQ`O1G.pP!>bQ`O1G/YP!?QQ`O<mOZ!wO_!yO`!zOa!{Ob!|Oc#ROd#SOp!}O$i!xOV^ih^il^iw^it^i$h^io^i!P^i!Z^i#t^i#v^i#z^i#|^i#}^ix^i!f^i~Og^i~P@nOg#TO~P@nOZ!wO_!yO`!zOa!{Ob!|Oc#ROd#SOg#TOh#UOp!}O$i!xOVvilviwvitvi$hviovi!Pvi!Zvi#tvi#vvi#zvi#|vi#}vi!fvi~Ox&gO~PBmOt%PO$h$la~Oo&jOt%PO~OekOfkOj(yOpiO!RkO!SkO!TkO!UkO$gfO$ihO$njO~Ot%VO$m$oa~O!]#eO~P%rO!Z&pO~P&xO!Z&rO~O!Z&sO~O!Z&uO~P&xOc&xOt%rO~O!Z&zO~O!Z&zO!s&{O~O!Z&|O~Os&}Ot'OOo$qX~Oo'QO~O!Z'RO~Op!}O!Z'RO~Os'TOt%rO~Os'WOt%rO~O$g'ZO~O$O'_O~O#{'`O~Ot&bOo$ka~Ot$Ua$h$Uao$Ua~P&xOZ!wO_(zO`({Oa(|Ob(}Oc)POd)QOg)ROh)SOl)OOp!}Ow)TO$i!xO~Ot!Oi$m!Oi~PHrO!P'hO~P&xO!Z'jO!f'kO~P&xO!Z'lO~Ot'OOo$qa~O!Z'qO~O!Z'sO~P&xOt'tO!Z'vO~P&xOt'xO!Z$ri~P&xO!Z'zO~Ot!eX!Z!eX#tXX~O#t'{O~Ot'|O!Z'zO~O!Z(OO~O!Z(OO#|(PO#}(PO~Oo$Tat$Ta~P&xOs(QO~P=POoritri~P&xOZ!wOp!}O$i!xOVvylvywvytvy$hvyovy!Pvy!Zvy#tvy#vvy#zvy#|vy#}vyxvy!fvy~O_!yO`!zOa!{Ob!|Oc#ROd#SOg#TOh#UO~PLsOZ!wOp!}O$i!xOgiahialiatiawia$miaxia~O_(zO`({Oa(|Ob(}Oc)POd)QO~PNkO!Z(^O!f(_O~P&xO!Z(^O~Oo!zit!zi~P&xOs(`Oo$Zat$Za~O!Z(aO~P&xOt'tO!Z(dO~Ot'xO!Z$rq~P&xOt'xO!Z$rq~Ot'|O!Z(kO~O$O(lO~OZ!wOp!}O$i!xO`^ia^ib^ic^id^ig^ih^il^it^iw^i$m^ie^if^i$g^ix^i~O_^i~P!#iOZ!wO_(zOp!}O$i!xOa^ib^ic^id^ig^ih^il^it^iw^i$m^ix^i~O`^i~P!$zO`({O~P!$zOZ!wO_(zO`({Oa(|Op!}O$i!xOc^id^ig^ih^il^it^iw^i$m^ix^i~Ob^i~P!&ZO$m$jX~P3[Ob(}O~P!&ZOZ!wO_)zO`){Oa)|Ob)}Oc*OOp!}O$i!xOd^ig^ih^il^it^iw^i$m^ix^i~Oe&fOf&fO$gfO~P!'qOZ!wO_(zO`({Oa(|Ob(}Oc)POd)QOp!}O$i!xOh^il^it^iw^i$m^ix^i~Og^i~P!)SOg)RO~P!)SOZ!wO_(zO`({Oa(|Ob(}Oc)POd)QOg)ROh)SOp!}O$i!xOlvitviwvi$mvi~Ox)WO~P!*cOt!Qi$m!Qi~PHrO!Z(nO~Os(pO~Ot'xO!Z$ry~Os(rOt%rO~O!Z(sO~Oouitui~P&xOo!{it!{i~P&xOs(vOt%rO~OZ!wO_(zO`({Oa(|Ob(}Oc)POd)QOg)ROh)SOp!}O$i!xO~Olvytvywvy$mvyxvy~P!-SOt$[q!Z$[q~P&xOt$]q!Z$]q~P&xOt$]y!Z$]y~P&xOm(VO~OekOfkOj)yOpiO!RkO!SkO!TkO!UkO$gfO$ihO$njO~Oe^if^i$g^i~P>mOxvi~PBmOe^if^i$g^i~P!'qOxvi~P!*cO_)gO`)hOa)iOb)jOc)kOd)ZOeiafia$gia~P.vOZ!wO_)gO`)hOa)iOb)jOc)kOd)ZOp!}O$i!xOV^ie^if^ih^il^iw^i$g^it^i$h^io^i!P^i!Z^i#t^i#v^i#z^i#|^i#}^ix^i!f^i~Og^i~P!1_Og)lO~P!1_OZ!wO_)gO`)hOa)iOb)jOc)kOd)ZOg)lOh)mOp!}O$i!xOVvievifvilviwvi$gvitvi$hviovi!Pvi!Zvi#tvi#vvi#zvi#|vi#}vi!fvi~Ox)sO~P!3gO_)gO`)hOa)iOb)jOc)kOd)ZOg)lOh)mOevyfvy$gvy~PLsOxvi~P!3gOZ!wO_)zO`){Oa)|Ob)}Oc*OOd)bOg*POh*QOp!}O$i!xOevifvilvitviwvi$gvi$mvi~Oxvi~P!6fO_)gO~P6}OZ!wO_)gO`)hOp!}O$i!xOV^ib^ic^id^ie^if^ig^ih^il^iw^i$g^it^i$h^io^i!P^i!Z^i#t^i#v^i#z^i#|^i#}^ix^i!f^i~Oa^i~P!8OOa)iO~P!8OOZ!wOp!}O$i!xOc^id^ie^if^ig^ih^il^iw^i$g^it^ix^i~O_)gO`)hOa)iOb)jOV^i$h^io^i!P^i!Z^i#t^i#v^i#z^i#|^i#}^i!f^i~P!:WO_)zO`){Oa)|Ob)}Oc*OOd)bOeiafia$gia~PNkOZ!wO_)zO`){Oa)|Ob)}Oc*OOd)bOp!}O$i!xOe^if^ih^il^it^iw^i$g^i$m^ix^i~Og^i~P!iO_)zO~P!#iO_)zO`){Oa^ib^i$m^i~P!:WO_)zO`){Oa)|Ob^i$m^i~P!:WO_)zO`){Oa)|Ob)}O$m^i~P!:WOfaZa~",goto:"Cy$sPPPPPP$tP$t%j'sPP's'sPPPPPPPPPP'sP'sPP)jPP)o+nPP+q'sPP's's's's's+tP+wPPPP+z,pPPP-fP-jP-vP+z.UP.zP/zP+z0YP1O1RP+z1UPPP1zP+z2QP2v2|3P3SP+z3YP4OP+z4UP4zP+z5QP5vP+z5|P6rP6xP+z7WP7|P+z8SP8xP$t$t$tPPPP9O$tPPPPPP$tP9U:j;f;m;w;}YPPPCcCjCmPPCp$tCsCv!gbOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%k$dkRhijl!e!f!p!q!r!s!x!y!z!{!|#R#S#T#U#V#e$O%P%U%V%t&U&V&X&d&g&x&}'T'W'h(Q(`(p(r(v(y(z({(|(})P)Q)R)S)T)W)Z)[)b)c)f)g)h)i)j)k)l)m)n)s)y)z){)|)}*O*P*Q*R*S*T*UQ$_!kQ$v!}Q&P$`S&f${(XS']&]'|R'b&b$ikRhijl!e!f!p!q!r!s!x!y!z!{!|!}#R#S#T#U#V#e$O%P%U%V%t&U&V&X&b&d&g&x&}'T'W'h(Q(`(p(r(v(y(z({(|(})P)Q)R)S)T)W)Z)[)b)c)f)g)h)i)j)k)l)m)n)s)y)z){)|)}*O*P*Q*R*S*T*UV$b!l#O)O$d#Pg#W#Y#[#_$U$W$i$j$k$l$p$q$r$s$t$u$z${$|$}%O%]%l&h&k&l&y'U'V'X'a'e'f'g'i'm'r'w(R(S(T(U(W(X(Y(Z([(](m(o(t(u(w(x)U)V)X)Y)])^)_)`)a)d)e)o)p)q)r)t)u)v)w)x*V*W*X*YQ&O$_S&Q$a(VR'S&PR$w!}R'c&bR#]jR&m%V!g_OSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%k!gSOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kTnSoQqSQtTQ#boR#kuQpSS#aoqS%Z#b#cR&o%[!gTOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ$Y!gQ$[!iQ$]!jQ$d!mQ$f!nQ$g!oQ%e#qQ%z$^Q&v%rQ'Y&[S'[&]'|Q'n'OQ(b'tQ(f'xR(h'{QsTS#htuS%`#i#kR&q%a!gUOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kRyUR#ny!gVOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQzVR#p{!gWOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ$`!kR%y$]R%{$^R'o'OQ}WR#r!O!gXOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ!QXR#t!R!gYOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ!TYR#v!U!gZOSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ!WZR#x!X!g[OSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ![[R#}!]Q!Z[S#z![!]S%j#{#}R&t%k!g]OSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ!_]R$Q!`!g^OSTVWXYZ[]^doqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kQ!b^R$S!cQ'^&]R(i'|QdOQuTQ{VQ!OWQ!RXQ!UYQ!XZQ!][Q!`]Q!c^p!vdu{!O!R!U!X!]!`!c#c#i#{%[%a%kQ#cqQ#itQ#{![Q%[#bQ%a#kR%k#}SQOdSeQm!cmSTVWXYZ[]^oqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kS&c$u$wR'd&cQ%Q#WQ%S#YT&i%Q%SQ%W#]R&n%WQoSR#`oQ%s$YQ&S$dQ&W$gW&w%s&S&W(qR(q(fQxUR#mxS'P%z%{R'p'PQ'u'VR(c'uQ'y'XQ(e'wT(g'y(eQ'}'^R(j'}Q!uaR$m!u!bcOTVWXYZ[]^dqtu{!O!R!U!X![!]!`!c#b#c#i#k#{#}%[%a%kTnSoQgRQ#WhQ#YiQ#[jQ#_lQ$U!eQ$W!fQ$i!pQ$j!qQ$k!rQ$l!sQ$p!xS$q!y)gQ$r!zQ$s!{Q$t!|Q$u!}Q$z#RQ${#SQ$|#TQ$}#UQ%O#VQ%]#eQ%l$OQ&h%PQ&k%UQ&l%VQ&y%tQ'U&UQ'V&VQ'X&XQ'a&bQ'e&dQ'f&gQ'g(yQ'i&xQ'm&}Q'r'TQ'w'WS(R(z)zQ(S({Q(T(|Q(U(}Q(W)PQ(X)QQ(Y)RQ(Z)SQ([)TQ(]'hQ(m(QQ(o(`Q(t)WQ(u(pQ(w(rQ(x(vQ)U)ZQ)V)[Q)X)bQ)Y)cQ)])fQ)^)lQ)_)mQ)`)nQ)a)sQ)d*TQ)e*UQ)o)hQ)p)iQ)q)jQ)r)kQ)t)yQ)u*PQ)v*QQ)w*RQ)x*SQ*V){Q*W)|Q*X)}R*Y*OQ$c!lT$y#O)OR$x!}R#XhR#^jR%|$^R$h!o",nodeNames:"⚠ {{ {# {% {% Template Text }} Interpolation VariableName MemberExpression . PropertyName SubscriptExpression BinaryExpression ConcatOp ArithOp ArithOp CompareOp in is StringLiteral NumberLiteral and or NotExpression not FilterExpression FilterOp FilterName FilterCall ) ( ArgumentList NamedArgument AssignOp , NamedArgument ConditionalExpression if else CallExpression ArrayExpression TupleExpression ParenthesizedExpression DictExpression Entry : Entry BooleanLiteral self super loop IfStatement Tag TagName if %} Tag elif Tag else EndTag endif ForStatement Tag for Definition recursive EndTag endfor RawStatement Tag raw RawText EndTag endraw BlockStatement Tag block scoped required EndTag endblock MacroStatement Tag macro ParamList OptionalParameter OptionalParameter EndTag endmacro CallStatement Tag call EndTag endcall FilterStatement Tag filter EndTag endfilter SetStatement Tag set EndTag endset TransStatement Tag trans Tag pluralize EndTag endtrans WithStatement Tag with EndTag endwith AutoescapeStatement Tag autoescape EndTag endautoescape Tag Tag Tag import as from import ImportItem Tag include ignore missing with without context Comment #}",maxTerm:173,nodeProps:[["closedBy",1,"}}",2,"#}",-2,3,4,"%}",32,")"],["openedBy",7,"{{",31,"(",57,"{%",140,"{#"],["group",-18,9,10,13,14,21,22,25,27,38,41,42,43,44,45,49,50,51,52,"Expression",-11,53,64,71,77,84,92,97,102,107,114,119,"Statement"]],skippedNodes:[0],repeatNodeCount:13,tokenData:".|~RqXY#YYZ#Y]^#Ypq#Yqr#krs#vuv&nwx&{xy)nyz)sz{)x{|*V|}+|}!O,R!O!P,g!P!Q,o!Q![+h![!],w!^!_,|!_!`-U!`!a,|!c!}-^!}#O.U#P#Q.Z#R#S-^#T#o-^#o#p.`#p#q.e#q#r.j#r#s.w%W;'S-^;'S;:j.O<%lO-^~#_S$d~XY#YYZ#Y]^#Ypq#Y~#nP!_!`#q~#vOb~~#yWOY#vZr#vrs$cs#O#v#O#P$h#P;'S#v;'S;=`%x<%lO#v~$hOe~~$kYOY#vYZ#vZr#vrs%Zs#O#v#O#P$h#P;'S#v;'S;=`&O;=`<%l#v<%lO#v~%`We~OY#vZr#vrs$cs#O#v#O#P$h#P;'S#v;'S;=`%x<%lO#v~%{P;=`<%l#v~&RXOY#vZr#vrs$cs#O#v#O#P$h#P;'S#v;'S;=`%x;=`<%l#v<%lO#v~&sP`~#q#r&v~&{O!Z~~'OWOY&{Zw&{wx$cx#O&{#O#P'h#P;'S&{;'S;=`(x<%lO&{~'kYOY&{YZ&{Zw&{wx(Zx#O&{#O#P'h#P;'S&{;'S;=`)O;=`<%l&{<%lO&{~(`We~OY&{Zw&{wx$cx#O&{#O#P'h#P;'S&{;'S;=`(x<%lO&{~({P;=`<%l&{~)RXOY&{Zw&{wx$cx#O&{#O#P'h#P;'S&{;'S;=`(x;=`<%l&{<%lO&{~)sOp~~)xOo~~)}P`~z{*Q~*VO`~~*[Qa~!O!P*b!Q![+h~*eP!Q![*h~*mSf~!Q![*h!g!h*y#R#S*h#X#Y*y~*|R{|+V}!O+V!Q![+]~+YP!Q![+]~+bQf~!Q![+]#R#S+]~+mTf~!O!P*b!Q![+h!g!h*y#R#S+h#X#Y*y~,ROt~~,WRa~uv,a!O!P*b!Q![+h~,dP#q#r&v~,lPZ~!Q![*h~,tP`~!P!Q*Q~,|O!P~~-RPb~!_!`#q~-ZPs~!_!`#q!`-iVm`[p!XS$gY!Q![-^!c!}-^#R#S-^#T#o-^%W;'S-^;'S;:j.O<%lO-^!`.RP;=`<%l-^~.ZO$i~~.`O$h~~.eO$n~~.jOl~^.oP$m[#q#r.rQ.wOVQ~.|O_~",tokenizers:[E,W,1,2,3,4,5,new w("b~RPstU~XP#q#r[~aO$Q~~",17,173)],topRules:{Template:[0,5]},specialized:[{term:161,get:O=>V[O]||-1},{term:55,get:O=>q[O]||-1}],tokenPrec:3602});function S(O,i){return O.split(" ").map(t=>({label:t,type:i}))}const N=S("abs attr batch capitalize center default dictsort escape filesizeformat first float forceescape format groupby indent int items join last length list lower map max min pprint random reject rejectattr replace reverse round safe select selectattr slice sort string striptags sum title tojson trim truncate unique upper urlencode urlize wordcount wordwrap xmlattr","function"),C=S("boolean callable defined divisibleby eq escaped even filter float ge gt in integer iterable le lower lt mapping ne none number odd sameas sequence string test undefined upper range lipsum dict joiner namespace","function"),D=S("loop super self true false varargs kwargs caller name arguments catch_kwargs catch_varargs caller","keyword"),l=C.concat(D),$=S("raw endraw filter endfilter trans pluralize endtrans with endwith autoescape endautoescape if elif else endif for endfor call endcall block endblock set endset macro endmacro import include break continue debug do extends","keyword");function A(O){var i;let{state:t,pos:r}=O,e=x(t).resolveInner(r,-1).enterUnfinishedNodesBefore(r),P=((i=e.childBefore(r))===null||i===void 0?void 0:i.name)||e.name;if(e.name=="FilterName")return{type:"filter",node:e};if(O.explicit&&(P=="FilterOp"||P=="filter"))return{type:"filter"};if(e.name=="TagName")return{type:"tag",node:e};if(O.explicit&&P=="{%")return{type:"tag"};if(e.name=="PropertyName"&&e.parent.name=="MemberExpression")return{type:"prop",node:e,target:e.parent};if(e.name=="."&&e.parent.name=="MemberExpression")return{type:"prop",target:e.parent};if(e.name=="MemberExpression"&&P==".")return{type:"prop",target:e};if(e.name=="VariableName")return{type:"expr",from:e.from};if(e.name=="Comment"||e.name=="StringLiteral"||e.name=="NumberLiteral")return null;let Q=O.matchBefore(/[\w\u00c0-\uffff]+$/);return Q?{type:"expr",from:Q.from}:O.explicit?{type:"expr"}:null}function L(O,i,t,r){let e=[];for(;;){let P=i.getChild("Expression");if(!P)return[];if(P.name=="VariableName"){e.unshift(O.sliceDoc(P.from,P.to));break}else if(P.name=="MemberExpression"){let Q=P.getChild("PropertyName");Q&&e.unshift(O.sliceDoc(Q.from,Q.to)),i=P}else return[]}return r(e,O,t)}function I(O={}){let i=O.tags?O.tags.concat($):$,t=O.variables?O.variables.concat(l):l,{properties:r}=O;return e=>{var P;let Q=A(e);if(!Q)return null;let o=(P=Q.from)!==null&&P!==void 0?P:Q.node?Q.node.from:e.pos,n;return Q.type=="filter"?n=N:Q.type=="tag"?n=i:Q.type=="expr"?n=t:n=r?L(e.state,Q.target,e,r):[],n.length?{options:n,from:o,validFor:/^[\w\u00c0-\uffff]*$/}:null}}const H=d.inputHandler.of((O,i,t,r)=>r!="%"||i!=t||O.state.doc.sliceString(i-1,t+1)!="{}"?!1:(O.dispatch(O.state.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:"%%"},range:g.cursor(e.from+1)})),{scrollIntoView:!0,userEvent:"input.type"}),!0));function p(O){return i=>{let t=O.test(i.textAfter);return i.lineIndent(i.node.from)+(t?0:i.unit)}}const B=G.define({name:"jinja",parser:F.configure({props:[b({"TagName raw endraw filter endfilter as trans pluralize endtrans with endwith autoescape endautoescape":a.keyword,"required scoped recursive with without context ignore missing":a.modifier,self:a.self,"loop super":a.standard(a.variableName),"if elif else endif for endfor call endcall":a.controlKeyword,"block endblock set endset macro endmacro import from include":a.definitionKeyword,"Comment/...":a.blockComment,VariableName:a.variableName,Definition:a.definition(a.variableName),PropertyName:a.propertyName,FilterName:a.special(a.variableName),ArithOp:a.arithmeticOperator,AssignOp:a.definitionOperator,"not and or":a.logicOperator,CompareOp:a.compareOperator,"in is":a.operatorKeyword,"FilterOp ConcatOp":a.operator,StringLiteral:a.string,NumberLiteral:a.number,BooleanLiteral:a.bool,"{% %} {# #} {{ }} { }":a.brace,"( )":a.paren,".":a.derefOperator,": , .":a.punctuation}),Z.add({Tag:R({closing:"%}"}),"IfStatement ForStatement":p(/^\s*(\{%-?\s*)?(endif|endfor|else|elif)\b/),Statement:p(/^\s*(\{%-?\s*)?end\w/)}),h.add({"Statement Comment"(O){let i=O.firstChild,t=O.lastChild;return!i||i.name!="Tag"&&i.name!="{#"?null:{from:i.to,to:t.name=="EndTag"||t.name=="#}"?t.from:O.to}}})]}),languageData:{indentOnInput:/^\s*{%-?\s*(?:end|elif|else)$/}}),s=m();function c(O){return B.configure({wrap:u(i=>i.type.isTop?{parser:O.parser,overlay:t=>t.name=="Text"||t.name=="RawText"}:null)},"jinja")}const J=c(s.language);function OO(O={}){let i=O.base||s,t=i.language==s.language?J:c(i.language);return new v(t,[i.support,t.data.of({autocomplete:I(O)}),i.language.data.of({closeBrackets:{brackets:["{"]}}),H])}export{H as closePercentBrace,OO as jinja,I as jinjaCompletionSource,J as jinjaLanguage}; diff --git a/frontend/dist/assets/index-AGby9JM1.js b/frontend/dist/assets/index-AGby9JM1.js new file mode 100644 index 0000000..0692792 --- /dev/null +++ b/frontend/dist/assets/index-AGby9JM1.js @@ -0,0 +1 @@ +import{d as o,a as d,o as i,e as n,w as l,h as r,Y as p,cS as g,f as m,Z as y,l as f}from"./index-BKKvzUDD.js";var h=o({name:"ElCollapseTransition",__name:"collapse-transition",setup(v){const e=d("collapse-transition"),a=t=>{t.style.maxHeight="",t.style.overflow=t.dataset.oldOverflow,t.style.paddingTop=t.dataset.oldPaddingTop,t.style.paddingBottom=t.dataset.oldPaddingBottom},s={beforeEnter(t){t.dataset||(t.dataset={}),t.dataset.oldPaddingTop=t.style.paddingTop,t.dataset.oldPaddingBottom=t.style.paddingBottom,t.style.height&&(t.dataset.elExistsHeight=t.style.height),t.style.maxHeight=0,t.style.paddingTop=0,t.style.paddingBottom=0},enter(t){requestAnimationFrame(()=>{t.dataset.oldOverflow=t.style.overflow,t.dataset.elExistsHeight?t.style.maxHeight=t.dataset.elExistsHeight:t.scrollHeight!==0?t.style.maxHeight=`${t.scrollHeight}px`:t.style.maxHeight=0,t.style.paddingTop=t.dataset.oldPaddingTop,t.style.paddingBottom=t.dataset.oldPaddingBottom,t.style.overflow="hidden"})},afterEnter(t){t.style.maxHeight="",t.style.overflow=t.dataset.oldOverflow},enterCancelled(t){a(t)},beforeLeave(t){t.dataset||(t.dataset={}),t.dataset.oldPaddingTop=t.style.paddingTop,t.dataset.oldPaddingBottom=t.style.paddingBottom,t.dataset.oldOverflow=t.style.overflow,t.style.maxHeight=`${t.scrollHeight}px`,t.style.overflow="hidden"},leave(t){t.scrollHeight!==0&&(t.style.maxHeight=0,t.style.paddingTop=0,t.style.paddingBottom=0)},afterLeave(t){a(t)},leaveCancelled(t){a(t)}};return(t,_)=>(i(),n(y,p({name:m(e).b()},g(s)),{default:l(()=>[r(t.$slots,"default")]),_:3},16,["name"]))}}),c=h;const x=f(c);export{x as E}; diff --git a/frontend/dist/assets/index-B15POG28.js b/frontend/dist/assets/index-B15POG28.js new file mode 100644 index 0000000..43c90a0 --- /dev/null +++ b/frontend/dist/assets/index-B15POG28.js @@ -0,0 +1 @@ +import{e as s,s as n,t as r,a as o,L as P,i as Q,c as a,f as i,l as c}from"./index--cDK8lVp.js";import"./index-BKKvzUDD.js";const g=n({String:r.string,Number:r.number,"True False":r.bool,PropertyName:r.propertyName,Null:r.null,", :":r.separator,"[ ]":r.squareBracket,"{ }":r.brace}),p=s.deserialize({version:14,states:"$bOVQPOOOOQO'#Cb'#CbOnQPO'#CeOvQPO'#ClOOQO'#Cr'#CrQOQPOOOOQO'#Cg'#CgO}QPO'#CfO!SQPO'#CtOOQO,59P,59PO![QPO,59PO!aQPO'#CuOOQO,59W,59WO!iQPO,59WOVQPO,59QOqQPO'#CmO!nQPO,59`OOQO1G.k1G.kOVQPO'#CnO!vQPO,59aOOQO1G.r1G.rOOQO1G.l1G.lOOQO,59X,59XOOQO-E6k-E6kOOQO,59Y,59YOOQO-E6l-E6l",stateData:"#O~OeOS~OQSORSOSSOTSOWQO_ROgPO~OVXOgUO~O^[O~PVO[^O~O]_OVhX~OVaO~O]bO^iX~O^dO~O]_OVha~O]bO^ia~O",goto:"!kjPPPPPPkPPkqwPPPPk{!RPPP!XP!e!hXSOR^bQWQRf_TVQ_Q`WRg`QcZRicQTOQZRQe^RhbRYQR]R",nodeNames:"⚠ JsonText True False Null Number String } { Object Property PropertyName : , ] [ Array",maxTerm:25,nodeProps:[["isolate",-2,6,11,""],["openedBy",7,"{",14,"["],["closedBy",8,"}",15,"]"]],propSources:[g],skippedNodes:[0],repeatNodeCount:2,tokenData:"(|~RaXY!WYZ!W]^!Wpq!Wrs!]|}$u}!O$z!Q!R%T!R![&c![!]&t!}#O&y#P#Q'O#Y#Z'T#b#c'r#h#i(Z#o#p(r#q#r(w~!]Oe~~!`Wpq!]qr!]rs!xs#O!]#O#P!}#P;'S!];'S;=`$o<%lO!]~!}Og~~#QXrs!]!P!Q!]#O#P!]#U#V!]#Y#Z!]#b#c!]#f#g!]#h#i!]#i#j#m~#pR!Q![#y!c!i#y#T#Z#y~#|R!Q![$V!c!i$V#T#Z$V~$YR!Q![$c!c!i$c#T#Z$c~$fR!Q![!]!c!i!]#T#Z!]~$rP;=`<%l!]~$zO]~~$}Q!Q!R%T!R![&c~%YRT~!O!P%c!g!h%w#X#Y%w~%fP!Q![%i~%nRT~!Q![%i!g!h%w#X#Y%w~%zR{|&T}!O&T!Q![&Z~&WP!Q![&Z~&`PT~!Q![&Z~&hST~!O!P%c!Q![&c!g!h%w#X#Y%w~&yO[~~'OO_~~'TO^~~'WP#T#U'Z~'^P#`#a'a~'dP#g#h'g~'jP#X#Y'm~'rOR~~'uP#i#j'x~'{P#`#a(O~(RP#`#a(U~(ZOS~~(^P#f#g(a~(dP#i#j(g~(jP#X#Y(m~(rOQ~~(wOW~~(|OV~",tokenizers:[0],topRules:{JsonText:[0,1]},tokenPrec:0}),d=()=>t=>{try{JSON.parse(t.state.doc.toString())}catch(O){if(!(O instanceof SyntaxError))throw O;const e=l(O,t.state.doc);return[{from:e,message:O.message,severity:"error",to:e}]}return[]};function l(t,O){let e;return(e=t.message.match(/at position (\d+)/))?Math.min(+e[1],O.length):(e=t.message.match(/at line (\d+) column (\d+)/))?Math.min(O.line(+e[1]).from+ +e[2]-1,O.length):0}const u=P.define({name:"json",parser:p.configure({props:[Q.add({Object:a({except:/^\s*\}/}),Array:a({except:/^\s*\]/})}),i.add({"Object Array":c})]}),languageData:{closeBrackets:{brackets:["[","{",'"']},indentOnInput:/^\s*[\}\]]$/}});function T(){return new o(u)}export{T as json,u as jsonLanguage,d as jsonParseLinter}; diff --git a/frontend/dist/assets/index-BDEF353-.js b/frontend/dist/assets/index-BDEF353-.js new file mode 100644 index 0000000..fa957f1 --- /dev/null +++ b/frontend/dist/assets/index-BDEF353-.js @@ -0,0 +1 @@ +import{b as M,aj as N,d as V,aW as $,a as j,o as i,c as u,q as m,h as k,n as o,f as t,aL as h,s as r,w as d,b6 as C,E as v,g as E,al as S,e as I,Z as L,j as P,l as q}from"./index-BKKvzUDD.js";import{e as x}from"./index-BjEW7-SA.js";const F=M({type:{type:String,values:["primary","success","info","warning","danger"],default:"primary"},closable:Boolean,disableTransitions:Boolean,hit:Boolean,color:String,size:{type:String,values:N},effect:{type:String,values:["dark","light","plain"],default:"light"},round:Boolean}),K={close:s=>s instanceof MouseEvent,click:s=>s instanceof MouseEvent},W=["aria-label"],Z=["aria-label"];var A=V({name:"ElTag",__name:"tag",props:F,emits:K,setup(s,{emit:_}){const B=s,p=_,z=x(),{t:f}=$(),a=j("tag"),b=P(()=>{const{type:e,hit:l,effect:n,closable:c,round:w}=B;return[a.b(),a.is("closable",c),a.m(e||"primary"),a.m(z.value),a.m(n),a.is("hit",l),a.is("round",w)]}),g=e=>{p("close",e)},y=e=>{p("click",e)},T=e=>{var l,n,c;(c=(n=(l=e==null?void 0:e.component)==null?void 0:l.subTree)==null?void 0:n.component)!=null&&c.bum&&(e.component.subTree.component.bum=null)};return(e,l)=>s.disableTransitions?(i(),u("span",{key:0,class:o(b.value),style:S({backgroundColor:s.color}),onClick:y},[m("span",{class:o(t(a).e("content"))},[k(e.$slots,"default")],2),s.closable?(i(),u("button",{key:0,"aria-label":t(f)("el.tag.close"),class:o(t(a).e("close")),type:"button",onClick:h(g,["stop"])},[r(t(v),null,{default:d(()=>[r(t(C))]),_:1})],10,W)):E("v-if",!0)],6)):(i(),I(L,{key:1,name:`${t(a).namespace.value}-zoom-in-center`,appear:"",onVnodeMounted:T},{default:d(()=>[m("span",{class:o(b.value),style:S({backgroundColor:s.color}),onClick:y},[m("span",{class:o(t(a).e("content"))},[k(e.$slots,"default")],2),s.closable?(i(),u("button",{key:0,"aria-label":t(f)("el.tag.close"),class:o(t(a).e("close")),type:"button",onClick:h(g,["stop"])},[r(t(v),null,{default:d(()=>[r(t(C))]),_:1})],10,Z)):E("v-if",!0)],6)]),_:3},8,["name"]))}}),D=A;const J=q(D);export{J as E,F as t}; diff --git a/frontend/dist/assets/index-BENk7lZo.js b/frontend/dist/assets/index-BENk7lZo.js new file mode 100644 index 0000000..933159e --- /dev/null +++ b/frontend/dist/assets/index-BENk7lZo.js @@ -0,0 +1 @@ +import{bd as c}from"./index-BKKvzUDD.js";const s="_RepeatClick",f={beforeMount(t,n){const e=n.value,{interval:d=100,delay:l=600}=c(e)?{}:e;let o,r;const i=()=>c(e)?e():e.handler(),a=()=>{r&&(clearTimeout(r),r=void 0),o&&(clearInterval(o),o=void 0)},u=v=>{v.button===0&&(a(),i(),document.addEventListener("mouseup",a,{once:!0}),r=setTimeout(()=>{o=setInterval(()=>{i()},d)},l))};t[s]={start:u,clear:a},t.addEventListener("mousedown",u)},unmounted(t){if(!t[s])return;const{start:n,clear:e}=t[s];n&&t.removeEventListener("mousedown",n),e&&(e(),document.removeEventListener("mouseup",e)),t[s]=null}};export{f as v}; diff --git a/frontend/dist/assets/index-BElrCJZ7.js b/frontend/dist/assets/index-BElrCJZ7.js new file mode 100644 index 0000000..8e4de0f --- /dev/null +++ b/frontend/dist/assets/index-BElrCJZ7.js @@ -0,0 +1,7 @@ +import{e as s,E as R,h as Y,C as x,s as w,t as O,a as d,b as k,d as h,L as f,i as u,j as y,c as l,k as g,f as j,l as U,g as G,m as X,N as b,I as Z}from"./index--cDK8lVp.js";import"./index-BKKvzUDD.js";const _=177,q=179,E=184,v=12,C=13,D=17,z=20,F=25,B=53,N=95,I=142,L=144,A=145,J=148,M=10,H=13,K=32,OO=9,$=47,QO=41,eO=125,aO=new R((Q,e)=>{for(let n=0,a=Q.next;(e.context&&(a<0||a==M||a==H||a==$&&Q.peek(n+1)==$)||a==QO||a==eO)&&Q.acceptToken(_),!(a!=K&&a!=OO);)a=Q.peek(++n)},{contextual:!0});let tO=new Set([N,E,z,v,D,L,A,I,J,C,B,F]);const iO=new x({start:!1,shift:(Q,e)=>e==q?Q:tO.has(e)}),XO=w({"func interface struct chan map const type var":O.definitionKeyword,"import package":O.moduleKeyword,"switch for go select return break continue goto fallthrough case if else defer":O.controlKeyword,range:O.keyword,Bool:O.bool,String:O.string,Rune:O.character,Number:O.number,Nil:O.null,VariableName:O.variableName,DefName:O.definition(O.variableName),TypeName:O.typeName,LabelName:O.labelName,FieldName:O.propertyName,"FunctionDecl/DefName":O.function(O.definition(O.variableName)),"TypeSpec/DefName":O.definition(O.typeName),"CallExpr/VariableName":O.function(O.variableName),LineComment:O.lineComment,BlockComment:O.blockComment,LogicOp:O.logicOperator,ArithOp:O.arithmeticOperator,BitOp:O.bitwiseOperator,"DerefOp .":O.derefOperator,"UpdateOp IncDecOp":O.updateOperator,CompareOp:O.compareOperator,"= :=":O.definitionOperator,"<-":O.operator,'~ "*"':O.modifier,"; ,":O.separator,"... :":O.punctuation,"( )":O.paren,"[ ]":O.squareBracket,"{ }":O.brace}),nO={__proto__:null,package:10,import:18,true:380,false:380,nil:383,struct:48,func:68,interface:78,chan:94,map:118,make:157,new:159,const:204,type:212,var:224,if:236,else:238,switch:242,case:248,default:250,for:260,range:266,go:270,select:274,return:284,break:288,continue:290,goto:292,fallthrough:296,defer:300},PO=s.deserialize({version:14,states:"!=xO#{QQOOP$SOQOOO&UQTO'#CbO&]QRO'#FlO]QQOOOOQP'#Cn'#CnOOQP'#Co'#CoO&eQQO'#C|O(kQQO'#C{O)]QRO'#GiO+tQQO'#D_OOQP'#Ge'#GeO+{QQO'#GeO.aQTO'#GaO.hQQO'#D`OOQP'#Gm'#GmO.mQRO'#GdO/hQQO'#DgOOQP'#Gd'#GdO/uQQO'#DrO2bQQO'#DsO4QQTO'#GqO,^QTO'#GaO4XQQO'#DxO4^QQO'#D{OOQO'#EQ'#EQOOQO'#ER'#EROOQO'#ES'#ESOOQO'#ET'#ETO4cQQO'#EPO5}QQO'#EPOOQP'#Ga'#GaO6UQQO'#E`O6^QQO'#EcOOQP'#G`'#G`O6cQQO'#EsOOQP'#G_'#G_O&]QRO'#FnOOQO'#Fn'#FnO9QQQO'#G^QOQQOOO&]QROOO9XQQO'#C`O9^QSO'#CdO9lQQO'#C}O9tQQO'#DSO9yQQO'#D[O:kQQO'#CsO:pQQO'#DhO:uQQO'#EeO:}QQO'#EiO;VQQO'#EoO;_QQO'#EuOPQSO7+%hOOQP7+%h7+%hO4cQQO7+%hOOQP1G0Q1G0QO!>^QQO1G0QOOQP1G0U1G0UO!>fQQO1G0UOF|QQO1G0UOOQO,5nAN>nO4cQQOAN>nO!IsQSOAN>nOOQP<nQQO'#FrOOQO,5vAN>vO!LtQQOAN>vP.hQQO'#F|OOQPG25XG25XO!LyQQOG25bO!MOQQO'#FPOOQPG25bG25bO!MZQQOG25bOOQPLD)tLD)tOOQPG24bG24bO!JqQQOLD*|O!9OQQO'#GQO!McQQO,5;kOOQP,5;k,5;kO?tQQO'#FQO!MnQQO'#FQO!MsQQOLD*|OOQP!$'Nh!$'NhOOQO,5VO^!hOh!POr-TOw}O!P-_O!Q-`O!W-^O!]-eO%O!eO%Y!fO~OZ!sO~O^#uO~O!P$xO~On!lO#W%]aV%]a^%]ah%]ar%]aw%]a!P%]a!Q%]a!W%]a!]%]a#T%]a$w%]a%O%]a%Y%]au%]a~O]${O^#QO~OZ#RO^#VO!W#SO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]O~O]$|O!|,WO~PBROj!qOn%QO!QnOi%cP~P*aO!V%WO!|#`O~PBRO!V%YO~OV!}O[oO^YOaoOdoOh!POjcOr!pOw}O!P!OO!QnO!WaO!]!QO!phO!qhO#Y!RO#^!SO#d!TO#j!UO#m!VO#v!WO#{!XO#}!YO$S!ZO$U![O$V![O$W!]O$Y!^O$[!_O%OQO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~Oi%dX#p%dX#q%dX~PDQOi%]O~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!Q-QO!WaO!]!QO!phO!qhO%O+{O%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O^%aO%O%_O~O!QnO!a%cO~P*aO!QnOn$mX#T$mX#U$mXV$mX$w$mX!a$mX~P*aOn#TO#T%ea#U%eaV%ea$w%ea!a%ea~O]%fO~PF|OV#ga$w#ga~PDTO[%sO~OZ#rO[#qO]%vO%O#oO~O^!hOh!POn%zOr-TOu%xOw}O!P-_O!Q-`O!W-^O!]-eO%O,dO%Y!fO]%[P~O^&OOh!POr!jOw}O!P!OO!Q!kO!WaO!]!QO%Y!fO^%ZXj%ZX~O%O%}O~PKfOjcO^qa]qanqa!Vqa~O^#uO!W&SO~O^!hOh!POr-TOw}O{&WO!P-_O!Q-`O!W-^O!]-eO%O,xO%Y!fO~Oi&^O~PL{O^!hOh!POr!jOw}O!Q!kO!WaO!]!QO%O!eO%Y!fO~O!P#hO~PMwOi&eO%O,yO%Y!fO~O#T&gOV#ZX$w#ZX~P?tO]&kO%O#oO~O^!hOh!POr-TOw}O!P-_O!Q-`O!]-eO%O!eO%Y!fO~O!W&lO#T&mO~P! _O]&qO%O#oO~O#T&sOV#eX$w#eX~P?tO]&vO%O#oO~OjeX~P$XOjcO!|,XO~P2gOn!lO#W&yO#W%]X~O^#VOn#TO!Q#cO!W#SO!|,XO#R#dO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]OV`X#T%eX#U%eX~OZ&zOj$`O$w`X~P!#cOi'OO#p'PO#q'QO~OZ#ROjcO~P!#cO#T'TO#U#iO~O#W'UO~OV'WO!QnO~P*aOV'XO~OjcO~O!|#`OV#za$w#za~PBROi'[O#p']O#q'^O~On#TO!|#`OV%eX$w%eX!a%eX~PBRO!|#`OV$Za$w$Za~PBRO${$rO$|$rO$}'`O~O]${O~O%O!eO]%ZXn%ZX!V%ZX~PKfO!|#`Oi!_Xn!_X!a!`X~PBROi!_Xn!_X!a!`X~O!a'aO~On'bOi%cX~Oi'dO~On'eO!V%bX!a%bX~O!V'gO~O]'jOn'kO!|,YO~PBROn'nO!V'mO!a'oO!|#`O~PBRO!QnO!V'qO!a'rO~P*aO!|#`On$ma#T$ma#U$maV$ma$w$ma!a$ma~PBRO]'sOu'tO~O%Y#XO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOV!xiZ!xi^!xin!xi!Q!xi!W!xi!|!xi#R!xi#T!xi#U!xi$w!xi%`!xi%f!xi%g!xi%i!xi%p!xi%q!xi~O!V!xii!xi!a!xi~P!+YO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOV!xiZ!xi^!xin!xi!Q!xi!W!xi#R!xi#T!xi#U!xi$w!xi%p!xi%q!xi!V!xii!xi!a!xi~O!|!xi~P!-TO!|#`O~P!-TO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[OV!xiZ!xi^!xin!xi!Q!xi!W!xi#R!xi#T!xi#U!xi$w!xi%q!xi~O!|#`O!V!xii!xi!a!xi~P!/VO!|#`OV#Pi$w#Pi!a#Pi~PBRO]'uOn'wOu'vO~OZ#rO[#qO]'zO%O#oO~Ou'|O~P?tOn'}O]%[X~O](PO~OZeX^mX^!TXj!TX!W!TX~OjcOV$]i$w$]i~O%`(ZOV%^X$w%^Xn%^X!V%^X~Oi(`O~PL{O[(aO!W!tOVlX$wlX~On(bO~P?tO[(aOVlX$wlX~Oi(hO%O,yO%Y!fO~O!V(iO~O#T(kO~O](nO%O#oO~O[oO^YOaoOdoOh!POr!pOu-bOw}O!P!OO!QnO!V-UO!WaO!]!QO!phO!qhO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O%O+zO~P!4vO](sO%O#oO~O#T(tOV#ea$w#ea~O](xO%O#oO~O#k(yOV#ii$w#ii~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!Q-PO!WaO!]!QO!phO!qhO%O+xO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O^(|O%O%_O~O#p%dP#q%dP~P/uOi)PO#p'PO#q'QO~O!a)RO~O!QnO#y)VO~P*aOV)WO!|#`O~PBROj#wa~P;_OV)WO!QnO~P*aOi)]O#p']O#q'^O~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!QnO!WaO!]!QO!phO!qhO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O%O,eO~P!:lO!a)bO~Oj!qO!QnO~P*aOj!qO!QnOi%ca~P*aOn)iOi%ca~O!V%ba!a%ba~P?tOn)lO!V%ba!a%ba~O])nO~O])oO~O!V)pO~O!QnO!V)rO!a)sO~P*aO!V)rO!a)sO!|#`O~PBRO])uOn)vO~O])wOn)xO~O^!hOh!POr-TOu%xOw}O!P-_O!Q-`O!W-^O!]-eO%O,dO%Y!fO~O]%[a~P!>nOn)|O]%[a~O]${O]tXntX~OjcOV$^q$w$^q~On*PO{&WO~P?tOn*SO!V%rX~O!V*UO~OjcOV$]q$w$]q~O%`(ZOV|a$w|an|a!V|a~O[*]OVla$wla~O[*]O!W!tOVla$wla~On*PO{&WO!W*`O^%WXj%WX~P! _OjcO#j!UO~OjcO!|,XO~PBROZ*dO^#VO!W#SO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]O~O!|#`O~P!BoO#^*eO~P?tO!a*fO~Oj$`O!|,XO~P!BoO#W*hO~Oj#wi~P;_OV*kO!|#`O~PBROn#TO!Q#cO!|#`O!a$QX#T%eX~PBRO#T*lO~O#W*lO~O!a*mO~O!|#`Oi!_in!_i~PBRO!|#`Oi!bXn!bX!a!cX~PBROi!bXn!bX!a!cX~O!a*nO~Oj!qO!QnOi%ci~P*aO!V%bi!a%bi~P?tO!V*qO!a*rO!|#`O~PBRO!V*qO!|#`O~PBRO]*tO~O]*uO~O]*uOu*vO~O]%[i~P!>nO%O!eO!V%ra~On*|O!V%ra~O[+OOVli$wli~O%O+yO~P!4vO#k+QOV#iy$w#iy~O^+RO%O%_O~O]+SO~O!|,XOj#xq~PBROj#wq~P;_O!V+ZO!|#`O~PBRO]+[On+]O~O%O!eO!V%ri~O^#QOn'eO!V%bX~O#^+`O~P?tOj+aO~O^#VO!W#SO!|#`O%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]O~OZ+cO~P!JvO!|#`O!a$Qi~PBRO!|#`Oi!bin!bi~PBRO!V+dO!|#`O~PBRO]+eO~O]+fO~Oi+iO#p+jO#q+kO~O^+lO%O%_O~Oi+pO#p+jO#q+kO~O!a+rO~O#^+sO~P?tO!a+tO~O]+uO~OZeX^eX^!TXj!TX!WeX!W!TX!|eX%YeX%`eX%feX%geX%ieX%jeX%keX%leX%meX%neX%oeX%peX%qeXVeXneX!QeX#ReX#TeX#UeX$weX~O]eX]!TX!VeXieX!aeX~P!NUOjeX~P!NUOZeX^eX^!TXj!TX!WeX!W!TX!|eX%YeX%`eX%feX%geX%ieX%jeX%keX%leX%meX%neX%oeX%peX%qeXn!TX!VeX~O]eX!V!TX~P#!gOh!TXr!TXw!TX{!TX!P!TX!Q!TX!]!TX%O!TX%Y!TX~P#!gOZeX^eX^!TXj!TXneX!WeX!W!TX!|eX%YeX%`eX%feX%geX%ieX%jeX%keX%leX%meX%neX%oeX%peX%qeX~O]eXueX~P#$xO]$mXn$mXu$mX~PF|Oj$mXn$mX~P!7`On+|O]%eau%ea~On+}Oj%ea~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!Q-OO!WaO!]!QO!phO!qhO%O+yO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~OZeX]!TX^UXhUXnUXn!TXrUXuUXwUX!PUX!QUX!WUX!W!TX!]UX%OUX%YUX~OnUX!QeX!aeX#TeX#WUX~P#$xOn+|O!|,YO]%eXu%eX~PBROn+}O!|,XOj%eX~PBRO^&OOV%ZXj%ZX$w%ZX]%ZXn%ZX!V%ZXu%ZX%`%ZX#T%ZX[%ZX!a%ZX~P?wO!|,YO]$man$mau$ma~PBRO!|,XOj$man$ma~PBRO%Y#XO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOZ!xi]!xi^!xi!W!xi!|!xi%`!xi%f!xi%g!xi%i!xi%p!xi%q!xi~Oj!xi~P!+YOn!xiu!xi~P#,hO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOZ!xi]!xi^!xi!W!xi!|!xi%p!xi%q!xi~O%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOV!xiZ!xi^!xij!xin!xi!Q!xi!W!xi#R!xi#T!xi#U!xi$w!xi%p!xi%q!xi~O!|!xi~P#/_On!xiu!xi~P#.TO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOZ!xi]!xi^!xi!W!xi%p!xi%q!xi~O!|,WO~P#1^O!|,XO~P#/_O!|,YOn!xiu!xi~P#1^O%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[OZ!xi]!xi^!xi!W!xi%q!xi~O!|,WO~P#3QO!|,XOj!xi~P!/VO!|,YOn!xiu!xi~P#3QO!|,XOj#Pi~PBROV!TXZeX^mX!W!TX$w!TX~O%`!TX~P#5RO[!TXhmXnmXrmXwmX!PmX!QmX!WmX!]mX%OmX%YmX~P#5ROn#TO!Q,aO!|,XO#R#dOj`X#T%eX#U%eX~PBRO[oO^YOaoOdoOh!POr!pOw}O!P#hO!WaO!]!QO!phO!qhO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O!Q-OO%O+yO~P#6{O!Q-PO%O+xO~P#6{O!Q-QO%O+{O~P#6{O#T,bO#U,bO~O#W,cO~O^!hOh!POr-TOw}O!P-_O!Q-WO!W-^O!]-eO%O!eO%Y!fO~O^!hOh!POr-TOw}O!Q-`O!W-^O!]-eO%O!eO%Y!fO~O!P-VO~P#9zO%O+wO~P!4vO!P-XO~O!V-YO!|#`O~PBRO!V-ZO~O!V-[O~O!W-dO~OP%ka%Oa~",goto:"!FW%sPP%tP%wP%zP'SP'XPPPP'`'cP'u'uP)w'u-_PPP0j0m0qP1V4b1VP7s8WP1VP8a8d8hP8p8w1VPP1V8{<`?vPPCY-_-_-_PCdCuCxPC{DQ'u'uDV'uES'u'u'u'uGUIW'uPPJR'uJUMjMjMj'u! r! r!#SP!$`!%d!&d'cP'cPP'cP!&yP!'V!'^!&yP!'a!'h!'n!'w!&yP!'z!(R!&y!(U!(fPP!&yP!(x!)UPP!&y!)Y!)c!&yP!)g!)gP!&yP!&yP!)j!)m!&v!&yP!&yPPP!&yP!&yP!)q!)q!)w!)}!*U!*[!*d!*j!*p!*w!*}!+T!+Z!.q!.x!/O!/X!/m!/s!/z!0Q!0W!0^!0d!0jPPPPPPPPP!0p!1f!1k!1{!2kPP!7P!:^P!>u!?Z!?_!@Z!@fP!@p!D_!Df!Di!DuPPPPPPPPPPPP!FSR!aPRyO!WXOScw!R!T!U!W#O#k#n#u$R$X&O&j&u&|'W'Y']'})W)|*k*w+gQ#pzU#r{#s%uQ#x|U$T!S$U&pQ$^!VQ$y!lR)U'RVROS#nQ#t{T%t#s%uR#t{qrOScw!U!V!W#O#k#n&|'W'Y)W*k+g%PoOSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^%O]OSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^#u!iW^!O!h!t!z#e#h#u#v#y#|#}$P$Q$T$W$v$x%W%Y%a%x%y&O&S&W&]&`&b&d&m'e'|'}(S([(c(i(o(|)l)|*P*Q*S*p*w*|+R+^+j+l,h-U-V-W-X-Y-Z-[-]-_-d'cbOSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dR$O!PT&c#}&dW%`#R&z*d+cQ&Q#vS&V#y&]S&`#}&dR*Y(b'cZOSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-d%fWOSWYacmnw!O!U!V!W!X!Z!_!q!z#O#Q#S#T#V#^#_#`#a#b#c#h#i#j#k#n#v#|$f$v$x%W%Y%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(i(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^S&b#}&d!{-]!h!t#e#u#y$P$Q$T$W%a%x%y&O&W&]&`&m'e'|'}(S([(c(o(|)l)|*Q*p*w+R+j+l,h-U-V-W-X-Y-Z-[-]-_-dQ#v|S$v!j!pU&P#v$v,hZ,h#x&Q&U&V-TS%{#u&OV){'})|*wR#z}T&[#y&]]&X#y&](S([(o*QZ&Z#y&](S(o*QT([&Y(]'s_OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|#}$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&S&W&]&`&b&d&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*P*Q*S*`*h*k*l*n*o*p*r*w*|+R+^+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-d'r_OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|#}$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&S&W&]&`&b&d&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*P*Q*S*`*h*k*l*n*o*p*r*w*|+R+^+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dR!w^'bbOSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dS&a#}&dR(d&bS!u]fX!x`&_(e(oQ!r[Q%O!qQ)d'aU)f'b)i*oR+X*nR%R!qR%P!qV)h'b)i*oV)g'b)i*odtOScw#O#k#n&|'Y+gQ$h!WQ&R#wQ&w$[S'S$c$iQ(V&TQ*O(RQ*V(WQ*b(yQ*c(zR+_+Q%PfOSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^%PgOSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^!q#Weg!o!y$[$_$c$j$m$q$}%^%b%d%m'V'p(z({)S)Y)^)c)e)q)t*i*s+T+V+W+Y,f,g,i,j,w,z-aR#fh#^mOSacmnw!X!Z!_!q#O#S#T#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&y&|'P'T'U'X'Y']'a'b'o'r(k(t)i)s*`*h*l*n*o*r+g-^!W#_e!y$j$m$q$}%b%d%j%k%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aW,T!o,n,q,tj,U$[$_$c(z)S*i,g,j,o,r,u,w,z[,V%^,f,i,p,s,v`,{Y,Q,T,W,Z,^,{-Ox,|!U!V!W&x'R'W)V)W*k+},R,U,X,[,_,a,b,c,|-Pg,}#Q#V'w+|,S,V,Y,],`,}-Q#^mOSacmnw!X!Z!_!q#O#S#T#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&y&|'P'T'U'X'Y']'a'b'o'r(k(t)i)s*`*h*l*n*o*r+g-^`,{Y,Q,T,W,Z,^,{-Ox,|!U!V!W&x'R'W)V)W*k+},R,U,X,[,_,a,b,c,|-Pg,}#Q#V'w+|,S,V,Y,],`,}-Q!Y#^e!y$j$m$q$}%b%d%i%j%k%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aY,Q!o,k,n,q,tl,R$[$_$c(z)S*i,g,j,l,o,r,u,w,z_,S%^,f,i,m,p,s,v!W#_e!y$j$m$q$}%b%d%j%k%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aW,T!o,n,q,tj,U$[$_$c(z)S*i,g,j,o,r,u,w,z],V%^,f,i,p,s,v!S#ae!y$j$m$q$}%b%d%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aS,Z!o,tf,[$[$_$c(z)S*i,g,j,u,w,zX,]%^,f,i,v!Q#be!y$j$m$q$}%b%d%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aQ,^!od,_$[$_$c(z)S*i,g,j,w,zV,`%^,f,iprOScw!U!V!W#O#k#n&|'W'Y)W*k+gR)a']etOScw#O#k#n&|'Y+gQ$S!RT&i$R&jR$S!RQ$V!ST&o$U&pQ&U#xR&m$TS(T&S&lV*{*S*|+^R$V!SQ$Y!TT&t$X&uR$Y!TdsOScw#O#k#n&|'Y+gT$p![!]dtOScw#O#k#n&|'Y+gQ*b(yR+_+QQ$a!VQ&{$_Q)T'RR*g)ST&|$`&}Q+b+SQ+m+fR+v+uT+g+a+hR$i!WR$l!YT'Y$k'ZXuOSw#nQ$s!`R'_$sSSO#nR!dSQ%u#sR'y%uUwOS#nR#mwQ&d#}R(g&dQ(c&`R*Z(cS!mX$^R$z!mQ(O%{R)}(OQ&]#yR(_&]Q(]&YR*X(]'r^OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|#}$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&S&W&]&`&b&d&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*P*Q*S*`*h*k*l*n*o*p*r*w*|+R+^+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dR!v^S'f%T+PR)m'fQ'c%RR)j'cW#Oc&|'Y+gR%[#O^#Ue$[$_$c$m)^,zU%e#U,O,PQ,O,fR,P,gQ&j$RR(m&jS*Q(S(oR*y*QQ*T(TR*}*TQ&p$UR(r&pQ&u$XR(w&uQ&}$`R)O&}Q+h+aR+o+hQ'Z$kR)['ZQ!cRQ#luQ#nyQ%Z!|Q&x$]Q'R$bQ'x%tQ(^&[Q(f&cQ(l&iQ(q&oR(v&tVxOS#nWuOSw#nY!|c#O&|'Y+gR%r#kdtOScw#O#k#n&|'Y+gQ$]!UQ$b!VQ$g!WQ)X'WQ*j)WR+U*kdeOScw#O#k#n&|'Y+gQ!oYQ!ya`#gmn,{,|,}-O-P-QQ$[!UQ$_!VQ$c!WQ$j!Xd$m!Z#i#j&g&s'P'T'U(k(tQ$q!_Q$}!qQ%^#QQ%b#SQ%d#TW%h#^,Q,R,SQ%i#_Q%j#`Q%k#aQ%l#bQ%m#cQ'V$fQ'p%cQ(z&xQ({&yQ)S'RQ)Y'XQ)^']Q)c'aU)e'b)i*oQ)q'oQ)t'rQ*i)VQ*s)sQ+T*hQ+V*lQ+W*nQ+Y*rS,f#V'wS,g,b,cQ,i+|Q,j+}Q,k,TQ,l,UQ,m,VQ,n,WQ,o,XQ,p,YQ,q,ZQ,r,[Q,s,]Q,t,^Q,u,_Q,v,`Q,w,aU,z'W)W*kV-a&l*`-^#bZW!O!h!t!z#e#h#u#v#y#|$P$Q$T$W$v$x%W%Y%a%x%y&O&W&]&`&m'e'|'}(S([(c(i(o(|)l)|*Q*p*w+R+j+l,h-U-V-W-X-Y-Z-[-]-_-d%P[OSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^$zdOSacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^S!gW-]Q!nYS#{!O-_Q$u!hS%T!t+jS%X!z-UQ%n#e[%o#h#|$x-V-W-XW%w#u'})|*wU&P#v$v,h[&X#y&](S([(o*QQ&f$PQ&h$QQ&n$TQ&r$WS'h%W-YS'i%Y-ZW'l%a(|+R+lS'{%x%yQ(Q&OQ(Y&WQ(d&`Q(p&mU)k'e)l*pQ)z'|Q*[(cS*^(i-[Q+P*`R-c-dS#w|!pS$w!j-TQ&T#xQ(R&QQ(W&UR(X&VT%|#u&OhqOScw!U!V#O#k#n&|'Y+gU$Q!R$R&jU$W!T$X&uQ$e!WY%y#u&O'})|*wQ)`']V-S'W)W*kS&[#y&]S*R(S(oR*z*QY&Y#y&](S(o*QR*W(['``OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dS&_#}&dW(S&S*S*|+^Q(e&bQ(o&lR*x*PS%U!t*`R+q+jR%S!qQ#PcQ(}&|Q)Z'YR+n+ghpOScw!U!V#O#k#n&|'Y+gQ$d!WQ$n!ZQ%g#VU%p#i'T,bU%q#j'U,cQ(j&gQ(u&sQ)Q'PQ)_']Q)y'wQ*_(kQ*a(tV-R'W)W*kT(U&S&l",nodeNames:"⚠ LineComment BlockComment SourceFile PackageClause package DefName ; ImportDecl import ImportSpec . String ) ( SpecList ExprStatement Number Bool Nil Rune VariableName TypedLiteral StructType struct } { StructBody FieldDecl FieldName , PointerType * FunctionType func Parameters Parameter ... InterfaceType interface InterfaceBody MethodElem UnderlyingType ~ TypeElem LogicOp ChannelType chan <- ParenthesizedType QualifiedType TypeName ParameterizedType ] [ TypeArgs ArrayType SliceType MapType map LiteralValue Element Key : Element Key ParenthesizedExpr FunctionLiteral Block Conversion SelectorExpr IndexExpr SliceExpr TypeAssertion CallExpr ParameterizedExpr Arguments CallExpr make new Arguments UnaryExp ArithOp LogicOp BitOp DerefOp BinaryExp ArithOp BitOp BitOp CompareOp LogicOp LogicOp SendStatement IncDecStatement IncDecOp Assignment = UpdateOp VarDecl := ConstDecl const ConstSpec SpecList TypeDecl type TypeSpec TypeParams TypeParam SpecList VarDecl var VarSpec SpecList LabeledStatement LabelName IfStatement if else SwitchStatement switch SwitchBlock Case case default TypeSwitchStatement SwitchBlock Case ForStatement for ForClause RangeClause range GoStatement go SelectStatement select SelectBlock Case ReceiveStatement ReturnStatement return GotoStatement break continue goto FallthroughStatement fallthrough DeferStatement defer FunctionDecl MethodDecl",maxTerm:218,context:iO,nodeProps:[["isolate",-3,2,12,20,""],["group",-18,12,17,18,19,20,21,22,66,67,69,70,71,72,73,74,77,81,86,"Expr",-20,16,68,93,94,96,99,101,105,111,115,117,120,126,129,134,136,141,143,147,149,"Statement",-12,23,31,33,38,46,49,50,51,52,56,57,58,"Type"],["openedBy",13,"(",25,"{",53,"["],["closedBy",14,")",26,"}",54,"]"]],propSources:[XO],skippedNodes:[0,1,2,153],repeatNodeCount:23,tokenData:":b~RvXY#iYZ#i]^#ipq#iqr#zrs$Xuv&Pvw&^wx&yxy(qyz(vz{({{|)T|})e}!O)j!O!P)u!P!Q+}!Q!R,y!R![-t![!]2^!]!^2k!^!_2p!_!`3]!`!a3e!c!}3x!}#O4j#P#Q4o#Q#R4t#R#S4|#S#T9X#T#o3x#o#p9q#p#q9v#q#r:W#r#s:]$g;'S3x;'S;=`4d<%lO3x~#nS$y~XY#iYZ#i]^#ipq#iU$PP%hQ!_!`$SS$XO!|S~$^W[~OY$XZr$Xrs$vs#O$X#O#P${#P;'S$X;'S;=`%y<%lO$X~${O[~~%ORO;'S$X;'S;=`%X;=`O$X~%^X[~OY$XZr$Xrs$vs#O$X#O#P${#P;'S$X;'S;=`%y;=`<%l$X<%lO$X~%|P;=`<%l$X~&UP%l~!_!`&X~&^O#U~~&cR%j~vw&l!_!`&X#Q#R&q~&qO%p~~&vP%o~!_!`&X~'OWd~OY&yZw&ywx'hx#O&y#O#P'm#P;'S&y;'S;=`(k<%lO&y~'mOd~~'pRO;'S&y;'S;=`'y;=`O&y~(OXd~OY&yZw&ywx'hx#O&y#O#P'm#P;'S&y;'S;=`(k;=`<%l&y<%lO&y~(nP;=`<%l&y~(vO^~~({O]~~)QP%Y~!_!`&X~)YQ%f~{|)`!_!`&X~)eO#R~~)jOn~~)oQ%g~}!O)`!_!`&X~)zRZS!O!P*T!Q![*`#R#S+w~*WP!O!P*Z~*`Ou~Q*eTaQ!Q![*`!g!h*t#R#S+w#X#Y*t#]#^+rQ*wS{|+T}!O+T!Q![+^#R#S+lQ+WQ!Q![+^#R#S+lQ+cRaQ!Q![+^#R#S+l#]#^+rQ+oP!Q![+^Q+wOaQQ+zP!Q![*`~,SR%k~z{,]!P!Q,b!_!`&X~,bO$z~~,gSP~OY,bZ;'S,b;'S;=`,s<%lO,b~,vP;=`<%l,bQ-O[aQ!O!P*`!Q![-t!d!e.c!g!h*t!q!r/Z!z!{/x#R#S.]#U#V.c#X#Y*t#]#^+r#c#d/Z#l#m/xQ-yUaQ!O!P*`!Q![-t!g!h*t#R#S.]#X#Y*t#]#^+rQ.`P!Q![-tQ.fR!Q!R.o!R!S.o#R#S/QQ.tSaQ!Q!R.o!R!S.o#R#S/Q#]#^+rQ/TQ!Q!R.o!R!S.oQ/^Q!Q!Y/d#R#S/rQ/iRaQ!Q!Y/d#R#S/r#]#^+rQ/uP!Q!Y/dQ/{T!O!P0[!Q![1c!c!i1c#R#S2Q#T#Z1cQ0_S!Q![0k!c!i0k#R#S1V#T#Z0kQ0pVaQ!Q![0k!c!i0k!r!s*t#R#S1V#T#Z0k#]#^+r#d#e*tQ1YR!Q![0k!c!i0k#T#Z0kQ1hWaQ!O!P0k!Q![1c!c!i1c!r!s*t#R#S2Q#T#Z1c#]#^+r#d#e*tQ2TR!Q![1c!c!i1c#T#Z1c~2cP!a~!_!`2f~2kO#W~~2pOV~~2uR!|S}!O3O!^!_3T!_!`$S~3TO!Q~~3YP%m~!_!`&X~3bP#T~!_!`$S~3jQ!|S!_!`$S!`!a3p~3uP%n~!_!`&X~3}V%O~!Q![3x!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~4gP;=`<%l3x~4oO!W~~4tO!V~~4yP%i~!_!`&X~5RV%O~!Q![5h!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~5o^aQ%O~!O!P*`!Q![5h!c!g3x!g!h6k!h!}3x#R#S4|#T#X3x#X#Y6k#Y#]3x#]#^8k#^#o3x$g;'S3x;'S;=`4d<%lO3x~6pX%O~{|+T}!O+T!Q![7]!c!}3x#R#S8P#T#o3x$g;'S3x;'S;=`4d<%lO3x~7dXaQ%O~!Q![7]!c!}3x#R#S8P#T#]3x#]#^8k#^#o3x$g;'S3x;'S;=`4d<%lO3x~8UV%O~!Q![7]!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~8rVaQ%O~!Q![3x!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~9[TO#S9X#S#T$v#T;'S9X;'S;=`9k<%lO9X~9nP;=`<%l9X~9vOj~~9{Q%`~!_!`&X#p#q:R~:WO%q~~:]Oi~~:bO{~",tokenizers:[aO,1,2,new Y("j~RQYZXz{^~^O$|~~aP!P!Qd~iO$}~~",25,181)],topRules:{SourceFile:[0,3]},dynamicPrecedences:{19:1,51:-1,55:2,69:-1,108:-1},specialized:[{term:184,get:Q=>nO[Q]||-1}],tokenPrec:5451}),oO=[X("func ${name}(${params}) ${type} {\n ${}\n}",{label:"func",detail:"declaration",type:"keyword"}),X("func (${receiver}) ${name}(${params}) ${type} {\n ${}\n}",{label:"func",detail:"method declaration",type:"keyword"}),X("var ${name} = ${value}",{label:"var",detail:"declaration",type:"keyword"}),X("type ${name} ${type}",{label:"type",detail:"declaration",type:"keyword"}),X("const ${name} = ${value}",{label:"const",detail:"declaration",type:"keyword"}),X("type ${name} = ${type}",{label:"type",detail:"alias declaration",type:"keyword"}),X("for ${init}; ${test}; ${update} {\n ${}\n}",{label:"for",detail:"loop",type:"keyword"}),X("for ${i} := range ${value} {\n ${}\n}",{label:"for",detail:"range",type:"keyword"}),X(`select { + \${} +}`,{label:"select",detail:"statement",type:"keyword"}),X("case ${}:\n${}",{label:"case",type:"keyword"}),X("switch ${} {\n ${}\n}",{label:"switch",detail:"statement",type:"keyword"}),X("switch ${}.(${type}) {\n ${}\n}",{label:"switch",detail:"type statement",type:"keyword"}),X("if ${} {\n ${}\n}",{label:"if",detail:"block",type:"keyword"}),X(`if \${} { + \${} +} else { + \${} +}`,{label:"if",detail:"/ else block",type:"keyword"}),X('import ${name} "${module}"\n${}',{label:"import",detail:"declaration",type:"keyword"})],S=new b,T=new Set(["SourceFile","Block","FunctionDecl","MethodDecl","FunctionLiteral","ForStatement","SwitchStatement","TypeSwitchStatement","IfStatement"]);function o(Q,e){return(n,a)=>{O:for(let t=n.node.firstChild,c=0,i=null;;){for(;!t;){if(!c)break O;c--,t=i.nextSibling,i=i.parent}e&&t.name==e||t.name=="SpecList"?(c++,i=t,t=t.firstChild):(t.name=="DefName"&&a(t,Q),t=t.nextSibling)}return!0}}const cO={FunctionDecl:o("function"),VarDecl:o("var","VarSpec"),ConstDecl:o("constant","ConstSpec"),TypeDecl:o("type","TypeSpec"),ImportDecl:o("constant","ImportSpec"),Parameter:o("var"),__proto__:null};function W(Q,e){let n=S.get(e);if(n)return n;let a=[],t=!0;function c(i,P){let V=Q.sliceString(i.from,i.to);a.push({label:V,type:P})}return e.cursor(Z.IncludeAnonymous).iterate(i=>{if(t)t=!1;else if(i.name){let P=cO[i.name];if(P&&P(i,c)||T.has(i.name))return!1}else if(i.to-i.from>8192){for(let P of W(Q,i.node))a.push(P);return!1}}),S.set(e,a),a}const p=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,m=["String","LineComment","BlockComment","DefName","LabelName","FieldName",".","?."],rO=Q=>{let e=G(Q.state).resolveInner(Q.pos,-1);if(m.indexOf(e.name)>-1)return null;let n=e.name=="VariableName"||e.to-e.from<20&&p.test(Q.state.sliceDoc(e.from,e.to));if(!n&&!Q.explicit)return null;let a=[];for(let t=e;t;t=t.parent)T.has(t.name)&&(a=a.concat(W(Q.state.doc,t)));return{options:a,from:n?e.from:Q.pos,validFor:p}},r=f.define({name:"go",parser:PO.configure({props:[u.add({IfStatement:l({except:/^\s*({|else\b)/}),LabeledStatement:y,"SwitchBlock SelectBlock":Q=>{let e=Q.textAfter,n=/^\s*\}/.test(e),a=/^\s*(case|default)\b/.test(e);return Q.baseIndent+(n||a?0:Q.unit)},Block:g({closing:"}"}),BlockComment:()=>null,Statement:l({except:/^{/})}),j.add({"Block SwitchBlock SelectBlock LiteralValue InterfaceType StructType SpecList":U,BlockComment(Q){return{from:Q.from+2,to:Q.to-2}}})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case\b|default\b|\})$/}});let lO=Q=>({label:Q,type:"keyword"});const $O="interface struct chan map package go return break continue goto fallthrough else defer range true false nil".split(" ").map(lO);function TO(){let Q=oO.concat($O);return new d(r,[r.data.of({autocomplete:k(m,h(Q))}),r.data.of({autocomplete:rO})])}export{TO as go,r as goLanguage,rO as localCompletionSource,oO as snippets}; diff --git a/frontend/dist/assets/index-BKKvzUDD.js b/frontend/dist/assets/index-BKKvzUDD.js new file mode 100644 index 0000000..d86c33f --- /dev/null +++ b/frontend/dist/assets/index-BKKvzUDD.js @@ -0,0 +1,39 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LoginView-BkI86ygw.js","assets/el-form-item-D5kF3B90.js","assets/index-BjEW7-SA.js","assets/castArray-5uErZEc3.js","assets/_baseClone-B5RBzbh5.js","assets/el-form-item-D_relxjU.css","assets/index-TFUf94PZ.js","assets/raf-C-x62Pcl.js","assets/index-DLzof2Fz.js","assets/index-GAnQrJsQ.js","assets/el-checkbox-qGZ2-RM2.js","assets/omit-BTSq4AYh.js","assets/el-checkbox-CzNtyWdF.css","assets/logo-CxXS7KxG.js","assets/_plugin-vue_export-helper-DlAUqK2U.js","assets/LoginView-BnSabjr1.css","assets/GuideView-B0JJuoOs.js","assets/GuideView-CaCcm19L.css","assets/MainLayout-D_KBFIU-.js","assets/el-popper-D6_hxRbQ.js","assets/index-CWUnzf90.js","assets/el-popper-Wf_ds9r7.css","assets/el-scrollbar-ClJnvz-9.js","assets/el-scrollbar-GF-yQkxY.css","assets/el-avatar-l9IBuq4_.js","assets/vnode-78qeDweP.js","assets/el-avatar-DOlF0Z_P.css","assets/index-AGby9JM1.js","assets/index-D5ryD3I5.js","assets/el-tooltip-l0sNRNKZ.js","assets/models-DQoXB8yB.js","assets/model-gCK34aBo.js","assets/MainLayout-C4Xu6RsD.css","assets/DashboardView-JKcOpMUU.js","assets/index-BDEF353-.js","assets/el-select-Dl-FRZQd.js","assets/scroll-BkzZKETR.js","assets/clamp-CbbY8h6F.js","assets/toNumber-Dkj3QRv9.js","assets/_baseIteratee-BAilevJ_.js","assets/el-select-CK58rX4v.css","assets/el-progress-DuOxpLST.js","assets/el-progress-apgqz2By.css","assets/install-CZjWaVQv.js","assets/createSeriesDataSimply-DVjwvHot.js","assets/DashboardView-BMPZwafh.css","assets/el-tag-1VV9QMa7.css","assets/FineTuneListView-DJrDesBG.js","assets/el-table-D8K5zLyz.js","assets/debounce-ByXPNh5F.js","assets/el-table-D97MvEgu.css","assets/dropdown-Cy5g1tjO.js","assets/DataTablePage-C-EM-7-s.js","assets/el-card-CApHJ1Gj.js","assets/el-card-BAyktVMS.css","assets/el-pagination-DOPYW-qb.js","assets/el-pagination-CDeFZDGO.css","assets/directive-DsZckUTJ.js","assets/index-dNo5H1ie.js","assets/validator-Fn0bm4xU.js","assets/index-CQXVR1Ud.js","assets/index-DfyOU94W.js","assets/DataTablePage-CHPswbwi.css","assets/ModelStatusTag.vue_vue_type_script_setup_true_lang-VFIQNBU2.js","assets/usePolling-C6448AR2.js","assets/fineTune-BsSQAQBF.js","assets/FineTuneListView-DB12Hfwf.css","assets/el-checkbox-group-D_6SYB2i.css","assets/FineTuneCreateView-B4Xgm6l7.js","assets/el-radio-group-BkCoTeQL.js","assets/el-radio-group-iy_biC8N.css","assets/el-divider-DjByQoml.js","assets/el-divider-B0pQhKGi.css","assets/el-input-number-BFR4pu1i.js","assets/index-BENk7lZo.js","assets/el-input-number-DExoAqKP.css","assets/PageCard-BoKXOzst.js","assets/PageCard-D_q9xBAd.css","assets/el-dialog-X3Nt8ib9.js","assets/use-dialog-DmridEEy.js","assets/el-dialog-DdHdkgt4.css","assets/el-empty-B4M99-0a.js","assets/el-empty-S7fQQ3B8.css","assets/el-tab-pane-DliV6btA.js","assets/el-tab-pane-LzsQQ_QK.css","assets/dataset-BJ2ikehQ.js","assets/FineTuneCreateView-Dbr8mf56.css","assets/EvalView-EyPQOCUX.js","assets/eval-D3O1S_j5.js","assets/EvalView-CfhhxItX.css","assets/EvalCreateView-DT45yzX7.js","assets/el-alert-xVLeNUgJ.js","assets/el-alert-B6UgayC7.css","assets/el-switch-DbCDiaMc.js","assets/el-switch-DpR9-s4E.css","assets/DimensionFormFields-Bhy2Lp-a.js","assets/el-slider-DYENF1-i.js","assets/el-slider-KlqpaRgh.css","assets/DimensionFormFields-jElmd60O.css","assets/el-descriptions-3GOD-6nw.js","assets/el-descriptions-BpDzfuC8.css","assets/el-space-Bcqwkggw.js","assets/el-space-CzNlr7lQ.css","assets/EvalCreateView-DW15zgvp.css","assets/EvalDetailView-DJayGyvy.js","assets/EvalDetailView-Clfyt0He.css","assets/DimensionCreateView-DvcDsfrQ.js","assets/InferenceListView-mZ19jYab.js","assets/compare-CZ4TIoIW.js","assets/InferenceCreateView-DrIqOCaE.js","assets/InferenceChatView-BP3Wudle.js","assets/el-drawer-BbN11Mg2.js","assets/el-drawer-4RO73nWn.css","assets/MarkdownView.vue_vue_type_style_index_0_lang-BPqmX54I.js","assets/MarkdownView-C0RlwvJo.css","assets/InferenceChatView-dVyzm1FM.css","assets/CompareChatView-BZJACmmb.js","assets/CompareChatView-wm3b2ZD9.css","assets/CompareResultView-yTJ0EdKT.js","assets/CompareResultView-DlLosvn8.css","assets/ModelManageView-Dju1g8Ja.js","assets/ModelManageView-B__x03pD.css","assets/ModelCreateView-Np2j_mdr.js","assets/MergeWeightsView-D_WkK77Q.js","assets/MergeWeightsView-B8jVfM-U.css","assets/DataProcessListView-Ds7sKAJx.js","assets/DataProcessListView-D6X_r5Q_.css","assets/DataProcessCreateView-BEQjbuB9.js","assets/AppConfirmDialog-g7rxg-F7.js","assets/AppConfirmDialog-zFD3Iwu_.css","assets/el-upload-BtHzuyZ5.js","assets/el-upload-Bit6Pm_l.css","assets/DataProcessCreateView-DyU55R2b.css","assets/DataProcessDetailView-DrQeE7-I.js","assets/DataProcessDetailView-B1q0P6u8.css","assets/DatasetListView-BD0YX55E.js","assets/DatasetListView-BZ24MdYw.css","assets/DatasetCreateView-ChBCun2m.js","assets/DatasetCreateView-D2g2qvbH.css","assets/DatasetPreviewView-CVHwvkKZ.js","assets/DatasetPreviewView-DO7Vb8Tp.css","assets/ToolsView-CTjLaJbw.js","assets/tools-BSjcVinb.js","assets/ToolsView-CbkbUKba.css","assets/ToolCreateView-Dyu4KgOC.js","assets/ToolCreateView-ClRXoWew.css","assets/DataConvertView-DYHO4l1y.js","assets/DataConvertView-DJuX-JIl.css","assets/ComputeNodesView-Cy5hxd1h.js","assets/ComputeNodesView-BKuDW-um.css","assets/PermissionDeniedView-BtkZoqYQ.js","assets/PermissionDeniedView-DWdcJnMf.css","assets/HardwareView-B7yq-27k.js","assets/install-BQfh6E0c.js","assets/HardwareView-DcounnQ-.css","assets/LogsView-Bt-ZCtJy.js","assets/log-C_tWKzjC.js","assets/LogsView-Np1qgq3l.css","assets/UserSettingsView-B2Ro6wyQ.js","assets/UserSettingsView-DKVS0cYk.css","assets/UserCreateView-y4uo9Eyv.js","assets/UserCreateView-BWW-0yZS.css","assets/UserPermissionView-B3oCc2mK.js","assets/UserPermissionView-C2mbs5Zk.css","assets/TrainingLogView-C5lCdvrq.js","assets/TrainingLogView-k6dQRm27.css"])))=>i.map(i=>d[i]); +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const o of s)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?o.credentials="include":s.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(s){if(s.ep)return;s.ep=!0;const o=n(s);fetch(s.href,o)}})();const fd="modulepreload",dd=function(e){return"/"+e},Ji={},de=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){let i=function(u){return Promise.all(u.map(c=>Promise.resolve(c).then(f=>({status:"fulfilled",value:f}),f=>({status:"rejected",reason:f}))))};document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),l=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));s=i(n.map(u=>{if(u=dd(u),u in Ji)return;Ji[u]=!0;const c=u.endsWith(".css"),f=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${u}"]${f}`))return;const d=document.createElement("link");if(d.rel=c?"stylesheet":fd,c||(d.as="script"),d.crossOrigin="",d.href=u,l&&d.setAttribute("nonce",l),document.head.appendChild(d),c)return new Promise((p,y)=>{d.addEventListener("load",p),d.addEventListener("error",()=>y(new Error(`Unable to preload CSS for ${u}`)))})}))}function o(i){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i}return s.then(i=>{for(const a of i||[])a.status==="rejected"&&o(a.reason);return t().catch(o)})};/** +* @vue/shared v3.5.39 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function li(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const be={},kn=[],_t=()=>{},Yl=()=>!1,Ns=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ds=e=>e.startsWith("onUpdate:"),Me=Object.assign,ci=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},pd=Object.prototype.hasOwnProperty,me=(e,t)=>pd.call(e,t),Q=Array.isArray,zn=e=>Ur(e)==="[object Map]",Ms=e=>Ur(e)==="[object Set]",Yi=e=>Ur(e)==="[object Date]",oe=e=>typeof e=="function",we=e=>typeof e=="string",dt=e=>typeof e=="symbol",ge=e=>e!==null&&typeof e=="object",Ql=e=>(ge(e)||oe(e))&&oe(e.then)&&oe(e.catch),Xl=Object.prototype.toString,Ur=e=>Xl.call(e),hd=e=>Ur(e).slice(8,-1),Zl=e=>Ur(e)==="[object Object]",$s=e=>we(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,yr=li(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Fs=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},md=/-\w/g,qe=Fs(e=>e.replace(md,t=>t.slice(1).toUpperCase())),gd=/\B([A-Z])/g,qt=Fs(e=>e.replace(gd,"-$1").toLowerCase()),Bs=Fs(e=>e.charAt(0).toUpperCase()+e.slice(1)),os=Fs(e=>e?`on${Bs(e)}`:""),Ve=(e,t)=>!Object.is(e,t),is=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},ui=e=>{const t=parseFloat(e);return isNaN(t)?e:t},_d=e=>{const t=we(e)?Number(e):NaN;return isNaN(t)?e:t};let Qi;const js=()=>Qi||(Qi=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function nr(e){if(Q(e)){const t={};for(let n=0;n{if(n){const r=n.split(yd);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function mt(e){let t="";if(we(e))t=e;else if(Q(e))for(let n=0;nSn(n,t))}const rc=e=>!!(e&&e.__v_isRef===!0),fi=e=>we(e)?e:e==null?"":Q(e)||ge(e)&&(e.toString===Xl||!oe(e.toString))?rc(e)?fi(e.value):JSON.stringify(e,sc,2):String(e),sc=(e,t)=>rc(t)?sc(e,t.value):zn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],o)=>(n[ao(r,o)+" =>"]=s,n),{})}:Ms(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>ao(n))}:dt(t)?ao(t):ge(t)&&!Q(t)&&!Zl(t)?String(t):t,ao=(e,t="")=>{var n;return dt(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.39 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let je;class oc{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&je&&(je.active?(this.parent=je,this.index=(je.scopes||(je.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0){if(je===this)je=this.prevScope;else{let t=je;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let n,r;for(n=0,r=this.effects.length;n0)return;if(wr){let t=wr;for(wr=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;br;){let t=br;for(br=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=n}}if(e)throw e}function fc(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function dc(e){let t,n=e.depsTail,r=n;for(;r;){const s=r.prevDep;r.version===-1?(r===n&&(n=s),hi(r),Od(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=s}e.deps=t,e.depsTail=n}function Io(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(pc(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function pc(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Pr)||(e.globalVersion=Pr,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Io(e))))return;e.flags|=2;const t=e.dep,n=Te,r=yt;Te=e,yt=!0;try{fc(e);const s=e.fn(e._value);(t.version===0||Ve(s,e._value))&&(e.flags|=128,e._value=s,t.version++)}catch(s){throw t.version++,s}finally{Te=n,yt=r,dc(e),e.flags&=-3}}function hi(e,t=!1){const{dep:n,prevSub:r,nextSub:s}=e;if(r&&(r.nextSub=s,e.prevSub=void 0),s&&(s.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let o=n.computed.deps;o;o=o.nextDep)hi(o,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Od(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let yt=!0;const hc=[];function Dt(){hc.push(yt),yt=!1}function Mt(){const e=hc.pop();yt=e===void 0?!0:e}function Xi(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=Te;Te=void 0;try{t()}finally{Te=n}}}let Pr=0;class Ad{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Vs{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!Te||!yt||Te===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==Te)n=this.activeLink=new Ad(Te,this),Te.deps?(n.prevDep=Te.depsTail,Te.depsTail.nextDep=n,Te.depsTail=n):Te.deps=Te.depsTail=n,mc(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const r=n.nextDep;r.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=r),n.prevDep=Te.depsTail,n.nextDep=void 0,Te.depsTail.nextDep=n,Te.depsTail=n,Te.deps===n&&(Te.deps=r)}return n}trigger(t){this.version++,Pr++,this.notify(t)}notify(t){di();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{pi()}}}function mc(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)mc(r)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const ps=new WeakMap,bn=Symbol(""),No=Symbol(""),Lr=Symbol("");function Ye(e,t,n){if(yt&&Te){let r=ps.get(e);r||ps.set(e,r=new Map);let s=r.get(n);s||(r.set(n,s=new Vs),s.map=r,s.key=n),s.track()}}function Ut(e,t,n,r,s,o){const i=ps.get(e);if(!i){Pr++;return}const a=l=>{l&&l.trigger()};if(di(),t==="clear")i.forEach(a);else{const l=Q(e),u=l&&$s(n);if(l&&n==="length"){const c=Number(r);i.forEach((f,d)=>{(d==="length"||d===Lr||!dt(d)&&d>=c)&&a(f)})}else switch((n!==void 0||i.has(void 0))&&a(i.get(n)),u&&a(i.get(Lr)),t){case"add":l?u&&a(i.get("length")):(a(i.get(bn)),zn(e)&&a(i.get(No)));break;case"delete":l||(a(i.get(bn)),zn(e)&&a(i.get(No)));break;case"set":zn(e)&&a(i.get(bn));break}}pi()}function Td(e,t){const n=ps.get(e);return n&&n.get(t)}function $n(e){const t=pe(e);return t===e?t:(Ye(t,"iterate",Lr),ft(e)?t:t.map(wt))}function Hs(e){return Ye(e=pe(e),"iterate",Lr),e}function Pt(e,t){return zt(e)?Gn(It(e)?wt(t):t):wt(t)}const Cd={__proto__:null,[Symbol.iterator](){return co(this,Symbol.iterator,e=>Pt(this,e))},concat(...e){return $n(this).concat(...e.map(t=>Q(t)?$n(t):t))},entries(){return co(this,"entries",e=>(e[1]=Pt(this,e[1]),e))},every(e,t){return $t(this,"every",e,t,void 0,arguments)},filter(e,t){return $t(this,"filter",e,t,n=>n.map(r=>Pt(this,r)),arguments)},find(e,t){return $t(this,"find",e,t,n=>Pt(this,n),arguments)},findIndex(e,t){return $t(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return $t(this,"findLast",e,t,n=>Pt(this,n),arguments)},findLastIndex(e,t){return $t(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return $t(this,"forEach",e,t,void 0,arguments)},includes(...e){return uo(this,"includes",e)},indexOf(...e){return uo(this,"indexOf",e)},join(e){return $n(this).join(e)},lastIndexOf(...e){return uo(this,"lastIndexOf",e)},map(e,t){return $t(this,"map",e,t,void 0,arguments)},pop(){return cr(this,"pop")},push(...e){return cr(this,"push",e)},reduce(e,...t){return Zi(this,"reduce",e,t)},reduceRight(e,...t){return Zi(this,"reduceRight",e,t)},shift(){return cr(this,"shift")},some(e,t){return $t(this,"some",e,t,void 0,arguments)},splice(...e){return cr(this,"splice",e)},toReversed(){return $n(this).toReversed()},toSorted(e){return $n(this).toSorted(e)},toSpliced(...e){return $n(this).toSpliced(...e)},unshift(...e){return cr(this,"unshift",e)},values(){return co(this,"values",e=>Pt(this,e))}};function co(e,t,n){const r=Hs(e),s=r[t]();return r!==e&&!ft(e)&&(s._next=s.next,s.next=()=>{const o=s._next();return o.done||(o.value=n(o.value)),o}),s}const Rd=Array.prototype;function $t(e,t,n,r,s,o){const i=Hs(e),a=i!==e&&!ft(e),l=i[t];if(l!==Rd[t]){const f=l.apply(e,o);return a?wt(f):f}let u=n;i!==e&&(a?u=function(f,d){return n.call(this,Pt(e,f),d,e)}:n.length>2&&(u=function(f,d){return n.call(this,f,d,e)}));const c=l.call(i,u,r);return a&&s?s(c):c}function Zi(e,t,n,r){const s=Hs(e),o=s!==e&&!ft(e);let i=n,a=!1;s!==e&&(o?(a=r.length===0,i=function(u,c,f){return a&&(a=!1,u=Pt(e,u)),n.call(this,u,Pt(e,c),f,e)}):n.length>3&&(i=function(u,c,f){return n.call(this,u,c,f,e)}));const l=s[t](i,...r);return a?Pt(e,l):l}function uo(e,t,n){const r=pe(e);Ye(r,"iterate",Lr);const s=r[t](...n);return(s===-1||s===!1)&&Ws(n[0])?(n[0]=pe(n[0]),r[t](...n)):s}function cr(e,t,n=[]){Dt(),di();const r=pe(e)[t].apply(e,n);return pi(),Mt(),r}const Pd=li("__proto__,__v_isRef,__isVue"),gc=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(dt));function Ld(e){dt(e)||(e=String(e));const t=pe(this);return Ye(t,"has",e),t.hasOwnProperty(e)}class _c{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){if(n==="__v_skip")return t.__v_skip;const s=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return o;if(n==="__v_raw")return r===(s?o?Sc:Ec:o?wc:bc).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=Q(t);if(!s){let l;if(i&&(l=Cd[n]))return l;if(n==="hasOwnProperty")return Ld}const a=Reflect.get(t,n,Re(t)?t:r);if((dt(n)?gc.has(n):Pd(n))||(s||Ye(t,"get",n),o))return a;if(Re(a)){const l=i&&$s(n)?a:a.value;return s&&ge(l)?hs(l):l}return ge(a)?s?hs(a):Vr(a):a}}class vc extends _c{constructor(t=!1){super(!1,t)}set(t,n,r,s){let o=t[n];const i=Q(t)&&$s(n);if(!this._isShallow){const u=zt(o);if(!ft(r)&&!zt(r)&&(o=pe(o),r=pe(r)),!i&&Re(o)&&!Re(r))return u||(o.value=r),!0}const a=i?Number(n)e,Xr=e=>Reflect.getPrototypeOf(e);function $d(e,t,n){return function(...r){const s=this.__v_raw,o=pe(s),i=zn(o),a=e==="entries"||e===Symbol.iterator&&i,l=e==="keys"&&i,u=s[e](...r),c=n?Do:t?Gn:wt;return!t&&Ye(o,"iterate",l?No:bn),Me(Object.create(u),{next(){const{value:f,done:d}=u.next();return d?{value:f,done:d}:{value:a?[c(f[0]),c(f[1])]:c(f),done:d}}})}}function Zr(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Fd(e,t){const n={get(s){const o=this.__v_raw,i=pe(o),a=pe(s);e||(Ve(s,a)&&Ye(i,"get",s),Ye(i,"get",a));const{has:l}=Xr(i),u=t?Do:e?Gn:wt;if(l.call(i,s))return u(o.get(s));if(l.call(i,a))return u(o.get(a));o!==i&&o.get(s)},get size(){const s=this.__v_raw;return!e&&Ye(pe(s),"iterate",bn),s.size},has(s){const o=this.__v_raw,i=pe(o),a=pe(s);return e||(Ve(s,a)&&Ye(i,"has",s),Ye(i,"has",a)),s===a?o.has(s):o.has(s)||o.has(a)},forEach(s,o){const i=this,a=i.__v_raw,l=pe(a),u=t?Do:e?Gn:wt;return!e&&Ye(l,"iterate",bn),a.forEach((c,f)=>s.call(o,u(c),u(f),i))}};return Me(n,e?{add:Zr("add"),set:Zr("set"),delete:Zr("delete"),clear:Zr("clear")}:{add(s){const o=pe(this),i=Xr(o),a=pe(s),l=!t&&!ft(s)&&!zt(s)?a:s;return i.has.call(o,l)||Ve(s,l)&&i.has.call(o,s)||Ve(a,l)&&i.has.call(o,a)||(o.add(l),Ut(o,"add",l,l)),this},set(s,o){!t&&!ft(o)&&!zt(o)&&(o=pe(o));const i=pe(this),{has:a,get:l}=Xr(i);let u=a.call(i,s);u||(s=pe(s),u=a.call(i,s));const c=l.call(i,s);return i.set(s,o),u?Ve(o,c)&&Ut(i,"set",s,o):Ut(i,"add",s,o),this},delete(s){const o=pe(this),{has:i,get:a}=Xr(o);let l=i.call(o,s);l||(s=pe(s),l=i.call(o,s)),a&&a.call(o,s);const u=o.delete(s);return l&&Ut(o,"delete",s,void 0),u},clear(){const s=pe(this),o=s.size!==0,i=s.clear();return o&&Ut(s,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(s=>{n[s]=$d(s,e,t)}),n}function ks(e,t){const n=Fd(e,t);return(r,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(me(n,s)&&s in r?n:r,s,o)}const Bd={get:ks(!1,!1)},jd={get:ks(!1,!0)},Ud={get:ks(!0,!1)},Vd={get:ks(!0,!0)},bc=new WeakMap,wc=new WeakMap,Ec=new WeakMap,Sc=new WeakMap;function Hd(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Vr(e){return zt(e)?e:qs(e,!1,Id,Bd,bc)}function zs(e){return qs(e,!1,Dd,jd,wc)}function hs(e){return qs(e,!0,Nd,Ud,Ec)}function xc(e){return qs(e,!0,Md,Vd,Sc)}function qs(e,t,n,r,s){if(!ge(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const o=s.get(e);if(o)return o;const i=Hd(hd(e));if(i===0)return e;const a=new Proxy(e,i===2?r:n);return s.set(e,a),a}function It(e){return zt(e)?It(e.__v_raw):!!(e&&e.__v_isReactive)}function zt(e){return!!(e&&e.__v_isReadonly)}function ft(e){return!!(e&&e.__v_isShallow)}function Ws(e){return e?!!e.__v_raw:!1}function pe(e){const t=e&&e.__v_raw;return t?pe(t):e}function mi(e){return!me(e,"__v_skip")&&Object.isExtensible(e)&&ec(e,"__v_skip",!0),e}const wt=e=>ge(e)?Vr(e):e,Gn=e=>ge(e)?hs(e):e;function Re(e){return e?e.__v_isRef===!0:!1}function Ne(e){return Oc(e,!1)}function ot(e){return Oc(e,!0)}function Oc(e,t){return Re(e)?e:new kd(e,t)}class kd{constructor(t,n){this.dep=new Vs,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:pe(t),this._value=n?t:wt(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,r=this.__v_isShallow||ft(t)||zt(t);t=r?t:pe(t),Ve(t,n)&&(this._rawValue=t,this._value=r?t:wt(t),this.dep.trigger())}}function Tb(e){e.dep&&e.dep.trigger()}function ue(e){return Re(e)?e.value:e}function it(e){return oe(e)?e():ue(e)}const zd={get:(e,t,n)=>t==="__v_raw"?e:ue(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return Re(s)&&!Re(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function Ac(e){return It(e)?e:new Proxy(e,zd)}class qd{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new Vs,{get:r,set:s}=t(n.track.bind(n),n.trigger.bind(n));this._get=r,this._set=s}get value(){return this._value=this._get()}set value(t){this._set(t)}}function Wd(e){return new qd(e)}function Kd(e){const t=Q(e)?new Array(e.length):{};for(const n in e)t[n]=Tc(e,n);return t}class Gd{constructor(t,n,r){this._object=t,this._defaultValue=r,this.__v_isRef=!0,this._value=void 0,this._key=dt(n)?n:String(n),this._raw=pe(t);let s=!0,o=t;if(!Q(t)||dt(this._key)||!$s(this._key))do s=!Ws(o)||ft(o);while(s&&(o=o.__v_raw));this._shallow=s}get value(){let t=this._object[this._key];return this._shallow&&(t=ue(t)),this._value=t===void 0?this._defaultValue:t}set value(t){if(this._shallow&&Re(this._raw[this._key])){const n=this._object[this._key];if(Re(n)){n.value=t;return}}this._object[this._key]=t}get dep(){return Td(this._raw,this._key)}}class Jd{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function Yd(e,t,n){return Re(e)?e:oe(e)?new Jd(e):ge(e)&&arguments.length>1?Tc(e,t,n):Ne(e)}function Tc(e,t,n){return new Gd(e,t,n)}class Qd{constructor(t,n,r){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Vs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Pr-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=r}notify(){if(this.flags|=16,!(this.flags&8)&&Te!==this)return uc(this,!0),!0}get value(){const t=this.dep.track();return pc(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Xd(e,t,n=!1){let r,s;return oe(e)?r=e:(r=e.get,s=e.set),new Qd(r,s,n)}const es={},ms=new WeakMap;let mn;function Zd(e,t=!1,n=mn){if(n){let r=ms.get(n);r||ms.set(n,r=[]),r.push(e)}}function ep(e,t,n=be){const{immediate:r,deep:s,once:o,scheduler:i,augmentJob:a,call:l}=n,u=T=>s?T:ft(T)||s===!1||s===0?Vt(T,1):Vt(T);let c,f,d,p,y=!1,g=!1;if(Re(e)?(f=()=>e.value,y=ft(e)):It(e)?(f=()=>u(e),y=!0):Q(e)?(g=!0,y=e.some(T=>It(T)||ft(T)),f=()=>e.map(T=>{if(Re(T))return T.value;if(It(T))return u(T);if(oe(T))return l?l(T,2):T()})):oe(e)?t?f=l?()=>l(e,2):e:f=()=>{if(d){Dt();try{d()}finally{Mt()}}const T=mn;mn=c;try{return l?l(e,3,[p]):e(p)}finally{mn=T}}:f=_t,t&&s){const T=f,D=s===!0?1/0:s;f=()=>Vt(T(),D)}const v=Us(),_=()=>{c.stop(),v&&v.active&&ci(v.effects,c)};if(o&&t){const T=t;t=(...D)=>{const J=T(...D);return _(),J}}let b=g?new Array(e.length).fill(es):es;const x=T=>{if(!(!(c.flags&1)||!c.dirty&&!T))if(t){const D=c.run();if(T||s||y||(g?D.some((J,W)=>Ve(J,b[W])):Ve(D,b))){d&&d();const J=mn;mn=c;try{const W=[D,b===es?void 0:g&&b[0]===es?[]:b,p];b=D,l?l(t,3,W):t(...W)}finally{mn=J}}}else c.run()};return a&&a(x),c=new lc(f),c.scheduler=i?()=>i(x,!1):x,p=T=>Zd(T,!1,c),d=c.onStop=()=>{const T=ms.get(c);if(T){if(l)l(T,4);else for(const D of T)D();ms.delete(c)}},t?r?x(!0):b=c.run():i?i(x.bind(null,!0),!0):c.run(),_.pause=c.pause.bind(c),_.resume=c.resume.bind(c),_.stop=_,_}function Vt(e,t=1/0,n){if(t<=0||!ge(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,Re(e))Vt(e.value,t,n);else if(Q(e))for(let r=0;r{Vt(r,t,n)});else if(Zl(e)){for(const r in e)Vt(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&Vt(e[r],t,n)}return e}/** +* @vue/runtime-core v3.5.39 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Hr(e,t,n,r){try{return r?e(...r):e()}catch(s){kr(s,t,n)}}function vt(e,t,n,r){if(oe(e)){const s=Hr(e,t,n,r);return s&&Ql(s)&&s.catch(o=>{kr(o,t,n)}),s}if(Q(e)){const s=[];for(let o=0;o>>1,s=rt[r],o=Ir(s);o=Ir(n)?rt.push(e):rt.splice(np(t),0,e),e.flags|=1,Rc()}}function Rc(){gs||(gs=Cc.then(Lc))}function rp(e){Q(e)?qn.push(...e):nn&&e.id===-1?nn.splice(jn+1,0,e):e.flags&1||(qn.push(e),e.flags|=1),Rc()}function ea(e,t,n=Rt+1){for(;nIr(n)-Ir(r));if(qn.length=0,nn){nn.push(...t);return}for(nn=t,jn=0;jne.id==null?e.flags&2?-1:1/0:e.id;function Lc(e){try{for(Rt=0;Rt{r._d&&ws(-1);const o=_s(t);let i;try{i=e(...s)}finally{_s(o),r._d&&ws(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function sp(e,t){if(ze===null)return e;const n=Xs(ze),r=e.dirs||(e.dirs=[]);for(let s=0;s1)return n&&oe(t)?t.call(r&&r.proxy):t}}function _i(){return!!(We()||wn)}const op=Symbol.for("v-scx"),ip=()=>De(op);function Nc(e,t){return Ks(e,null,t)}function ap(e,t){return Ks(e,null,{flush:"sync"})}function at(e,t,n){return Ks(e,t,n)}function Ks(e,t,n=be){const{immediate:r,deep:s,flush:o,once:i}=n,a=Me({},n),l=t&&r||!t&&o!=="post";let u;if(Jn){if(o==="sync"){const p=ip();u=p.__watcherHandles||(p.__watcherHandles=[])}else if(!l){const p=()=>{};return p.stop=_t,p.resume=_t,p.pause=_t,p}}const c=He;a.call=(p,y,g)=>vt(p,c,y,g);let f=!1;o==="post"?a.scheduler=p=>{et(p,c&&c.suspense)}:o!=="sync"&&(f=!0,a.scheduler=(p,y)=>{y?p():gi(p)}),a.augmentJob=p=>{t&&(p.flags|=4),f&&(p.flags|=2,c&&(p.id=c.uid,p.i=c))};const d=ep(e,t,a);return Jn&&(u?u.push(d):l&&d()),d}function lp(e,t,n){const r=this.proxy,s=we(e)?e.includes(".")?Dc(r,e):()=>r[e]:e.bind(r,r);let o;oe(t)?o=t:(o=t.handler,n=t);const i=Wr(this),a=Ks(s,o.bind(r),n);return i(),a}function Dc(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;se.__isTeleport,gn=e=>e&&(e.disabled||e.disabled===""),cp=e=>e&&(e.defer||e.defer===""),ta=e=>typeof SVGElement<"u"&&e instanceof SVGElement,na=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Mo=(e,t)=>{const n=e&&e.to;return we(n)?t?t(n):null:n},up={name:"Teleport",__isTeleport:!0,process(e,t,n,r,s,o,i,a,l,u){const{mc:c,pc:f,pbc:d,o:{insert:p,querySelector:y,createText:g,createComment:v,parentNode:_}}=u,b=gn(t.props);let{dynamicChildren:x}=t;const T=(W,Y,L)=>{W.shapeFlag&16&&c(W.children,Y,L,s,o,i,a,l)},D=(W=t)=>{const Y=gn(W.props),L=W.target=Mo(W.props,y),k=$o(L,W,g,p);L&&(i!=="svg"&&ta(L)?i="svg":i!=="mathml"&&na(L)&&(i="mathml"),s&&s.isCE&&(s.ce._teleportTargets||(s.ce._teleportTargets=new Set)).add(L),Y||(T(W,L,k),gr(W,!1)))},J=W=>{const Y=()=>{if(Zt.get(W)===Y){if(Zt.delete(W),gn(W.props)){const L=_(W.el)||n;T(W,L,W.anchor),gr(W,!0)}D(W)}};Zt.set(W,Y),et(Y,o)};if(e==null){const W=t.el=g(""),Y=t.anchor=g("");if(p(W,n,r),p(Y,n,r),cp(t.props)||o&&o.pendingBranch){J(t);return}b&&(T(t,n,Y),gr(t,!0)),D()}else{t.el=e.el;const W=t.anchor=e.anchor,Y=Zt.get(e);if(Y){Y.flags|=8,Zt.delete(e),J(t);return}t.targetStart=e.targetStart;const L=t.target=e.target,k=t.targetAnchor=e.targetAnchor,H=gn(e.props),F=H?n:L,te=H?W:k;if(i==="svg"||ta(L)?i="svg":(i==="mathml"||na(L))&&(i="mathml"),x?(d(e.dynamicChildren,x,F,s,o,i,a),xi(e,t,!0)):l||f(e,t,F,te,s,o,i,a,!1),b)H?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):ts(t,n,W,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const B=Mo(t.props,y);B&&(t.target=B,ts(t,B,null,u,0))}else H&&ts(t,L,k,u,1);gr(t,b)}},remove(e,t,n,{um:r,o:{remove:s}},o){const{shapeFlag:i,children:a,anchor:l,targetStart:u,targetAnchor:c,target:f,props:d}=e,p=gn(d),y=o||!p,g=Zt.get(e);if(g&&(g.flags|=8,Zt.delete(e)),f&&(s(u),s(c)),o&&s(l),!g&&(p||f)&&i&16)for(let v=0;v{e.isMounted=!0}),Wc(()=>{e.isUnmounting=!0}),e}const pt=[Function,Array],Bc={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:pt,onEnter:pt,onAfterEnter:pt,onEnterCancelled:pt,onBeforeLeave:pt,onLeave:pt,onAfterLeave:pt,onLeaveCancelled:pt,onBeforeAppear:pt,onAppear:pt,onAfterAppear:pt,onAppearCancelled:pt},jc=e=>{const t=e.subTree;return t.component?jc(t.component):t},dp={name:"BaseTransition",props:Bc,setup(e,{slots:t}){const n=We(),r=Fc();return()=>{const s=t.default&&vi(t.default(),!0),o=s&&s.length?Uc(s):n.subTree?Vn():void 0;if(!o)return;const i=pe(e),{mode:a}=i;if(r.isLeaving)return fo(o);const l=ra(o);if(!l)return fo(o);let u=Nr(l,i,r,n,f=>u=f);l.type!==Qe&&xn(l,u);let c=n.subTree&&ra(n.subTree);if(c&&c.type!==Qe&&!_n(c,l)&&jc(n).type!==Qe){let f=Nr(c,i,r,n);if(xn(c,f),a==="out-in"&&l.type!==Qe)return r.isLeaving=!0,f.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete f.afterLeave,c=void 0},fo(o);a==="in-out"&&l.type!==Qe?f.delayLeave=(d,p,y)=>{const g=Vc(r,c);g[String(c.key)]=c,d[ht]=()=>{p(),d[ht]=void 0,delete u.delayedLeave,c=void 0},u.delayedLeave=()=>{y(),delete u.delayedLeave,c=void 0}}:c=void 0}else c&&(c=void 0);return o}}};function Uc(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==Qe){t=n;break}}return t}const pp=dp;function Vc(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Nr(e,t,n,r,s){const{appear:o,mode:i,persisted:a=!1,onBeforeEnter:l,onEnter:u,onAfterEnter:c,onEnterCancelled:f,onBeforeLeave:d,onLeave:p,onAfterLeave:y,onLeaveCancelled:g,onBeforeAppear:v,onAppear:_,onAfterAppear:b,onAppearCancelled:x}=t,T=String(e.key),D=Vc(n,e),J=(L,k)=>{L&&vt(L,r,9,k)},W=(L,k)=>{const H=k[1];J(L,k),Q(L)?L.every(F=>F.length<=1)&&H():L.length<=1&&H()},Y={mode:i,persisted:a,beforeEnter(L){let k=l;if(!n.isMounted)if(o)k=v||l;else return;L[ht]&&L[ht](!0);const H=D[T];H&&_n(e,H)&&H.el[ht]&&H.el[ht](),J(k,[L])},enter(L){if(D[T]===e)return;let k=u,H=c,F=f;if(!n.isMounted)if(o)k=_||u,H=b||c,F=x||f;else return;let te=!1;L[ur]=M=>{te||(te=!0,M?J(F,[L]):J(H,[L]),Y.delayedLeave&&Y.delayedLeave(),L[ur]=void 0)};const B=L[ur].bind(null,!1);k?W(k,[L,B]):B()},leave(L,k){const H=String(e.key);if(L[ur]&&L[ur](!0),n.isUnmounting)return k();J(d,[L]);let F=!1;L[ht]=B=>{F||(F=!0,k(),B?J(g,[L]):J(y,[L]),L[ht]=void 0,D[H]===e&&delete D[H])};const te=L[ht].bind(null,!1);D[H]=e,p?W(p,[L,te]):te()},clone(L){const k=Nr(L,t,n,r,s);return s&&s(k),k}};return Y}function fo(e){if(zr(e))return e=ln(e),e.children=null,e}function ra(e){if(!zr(e))return $c(e.type)&&e.children?Uc(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&oe(n.default))return n.default()}}function xn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,xn(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function vi(e,t=!1,n){let r=[],s=0;for(let o=0;o1)for(let o=0;oSr(g,t&&(Q(t)?t[v]:t),n,r,s));return}if(Kn(r)&&!s){r.shapeFlag&512&&r.type.__asyncResolved&&r.component.subTree.component&&Sr(e,t,n,r.component.subTree);return}const o=r.shapeFlag&4?Xs(r.component):r.el,i=s?null:o,{i:a,r:l}=e,u=t&&t.r,c=a.refs===be?a.refs={}:a.refs,f=a.setupState,d=pe(f),p=f===be?Yl:g=>sa(c,g)?!1:me(d,g),y=(g,v)=>!(v&&sa(c,v));if(u!=null&&u!==l){if(oa(t),we(u))c[u]=null,p(u)&&(f[u]=null);else if(Re(u)){const g=t;y(u,g.k)&&(u.value=null),g.k&&(c[g.k]=null)}}if(oe(l)){Dt();try{Hr(l,a,12,[i,c])}finally{Mt()}}else{const g=we(l),v=Re(l);if(g||v){const _=()=>{if(e.f){const b=g?p(l)?f[l]:c[l]:y()||!e.k?l.value:c[e.k];if(s)Q(b)&&ci(b,o);else if(Q(b))b.includes(o)||b.push(o);else if(g)c[l]=[o],p(l)&&(f[l]=c[l]);else{const x=[o];y(l,e.k)&&(l.value=x),e.k&&(c[e.k]=x)}}else g?(c[l]=i,p(l)&&(f[l]=i)):v&&(y(l,e.k)&&(l.value=i),e.k&&(c[e.k]=i))};if(i){const b=()=>{_(),vs.delete(e)};b.id=-1,vs.set(e,b),et(b,n)}else oa(e),_()}}}function oa(e){const t=vs.get(e);t&&(t.flags|=8,vs.delete(e))}const ia=e=>e.nodeType===8;js().requestIdleCallback;js().cancelIdleCallback;function hp(e,t){if(ia(e)&&e.data==="["){let n=1,r=e.nextSibling;for(;r;){if(r.nodeType===1){if(t(r)===!1)break}else if(ia(r))if(r.data==="]"){if(--n===0)break}else r.data==="["&&n++;r=r.nextSibling}}else t(e)}const Kn=e=>!!e.type.__asyncLoader;function Pb(e){oe(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,hydrate:o,timeout:i,suspensible:a=!0,onError:l}=e;let u=null,c,f=0;const d=()=>(f++,u=null,p()),p=()=>{let y;return u||(y=u=t().catch(g=>{if(g=g instanceof Error?g:new Error(String(g)),l)return new Promise((v,_)=>{l(g,()=>v(d()),()=>_(g),f+1)});throw g}).then(g=>y!==u&&u?u:(g&&(g.__esModule||g[Symbol.toStringTag]==="Module")&&(g=g.default),c=g,g)))};return _e({name:"AsyncComponentWrapper",__asyncLoader:p,__asyncHydrate(y,g,v){let _=!1;(g.bu||(g.bu=[])).push(()=>_=!0);const b=()=>{_||v()},x=o?()=>{const T=o(b,D=>hp(y,D));T&&(g.bum||(g.bum=[])).push(T)}:b;c?x():p().then(()=>!g.isUnmounted&&x())},get __asyncResolved(){return c},setup(){const y=He;if(yi(y),c)return()=>ns(c,y);const g=D=>{u=null,kr(D,y,13,!r)};if(a&&y.suspense||Jn)return p().then(D=>()=>ns(D,y)).catch(D=>(g(D),()=>r?Le(r,{error:D}):null));const v=Ne(!1),_=Ne(),b=Ne(!!s);let x,T;return Js(()=>{x!=null&&clearTimeout(x),T!=null&&clearTimeout(T)}),s&&(T=setTimeout(()=>{y.isUnmounted||(b.value=!1)},s)),i!=null&&(x=setTimeout(()=>{if(!y.isUnmounted&&!v.value&&!_.value){const D=new Error(`Async component timed out after ${i}ms.`);g(D),_.value=D}},i)),p().then(()=>{y.isUnmounted||(v.value=!0,y.parent&&zr(y.parent.vnode)&&y.parent.update())}).catch(D=>{if(y.isUnmounted){u=null;return}g(D),_.value=D}),()=>{if(v.value&&c)return ns(c,y);if(_.value&&r)return Le(r,{error:_.value});if(n&&!b.value)return ns(n,y)}}})}function ns(e,t){const{ref:n,props:r,children:s,ce:o}=t.vnode,i=Le(e,r,s);return i.ref=n,i.ce=o,delete t.vnode.ce,i}const zr=e=>e.type.__isKeepAlive;function Hc(e,t){zc(e,"a",t)}function kc(e,t){zc(e,"da",t)}function zc(e,t,n=He){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(Gs(t,r,n),n){let s=n.parent;for(;s&&s.parent;)zr(s.parent.vnode)&&mp(r,t,n,s),s=s.parent}}function mp(e,t,n,r){const s=Gs(t,e,r,!0);Js(()=>{ci(r[t],s)},n)}function Gs(e,t,n=He,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{Dt();const a=Wr(n),l=vt(t,n,e,i);return a(),Mt(),l});return r?s.unshift(o):s.push(o),o}}const Wt=e=>(t,n=He)=>{(!Jn||e==="sp")&&Gs(e,(...r)=>t(...r),n)},gp=Wt("bm"),qr=Wt("m"),_p=Wt("bu"),qc=Wt("u"),Wc=Wt("bum"),Js=Wt("um"),vp=Wt("sp"),yp=Wt("rtg"),bp=Wt("rtc");function wp(e,t=He){Gs("ec",e,t)}const bi="components",Ep="directives";function Sp(e,t){return wi(bi,e,!0,t)||e}const Kc=Symbol.for("v-ndc");function xp(e){return we(e)?wi(bi,e,!1)||e:e||Kc}function Lb(e){return wi(Ep,e)}function wi(e,t,n=!0,r=!1){const s=ze||He;if(s){const o=s.type;if(e===bi){const a=oh(o,!1);if(a&&(a===t||a===qe(t)||a===Bs(qe(t))))return o}const i=aa(s[e]||o[e],t)||aa(s.appContext[e],t);return!i&&r?o:i}}function aa(e,t){return e&&(e[t]||e[qe(t)]||e[Bs(qe(t))])}function Ib(e,t,n,r){let s;const o=n,i=Q(e);if(i||we(e)){const a=i&&It(e);let l=!1,u=!1;a&&(l=!ft(e),u=zt(e),e=Hs(e)),s=new Array(e.length);for(let c=0,f=e.length;ct(a,l,void 0,o));else{const a=Object.keys(e);s=new Array(a.length);for(let l=0,u=a.length;l{const o=r.fn(...s);return o&&(o.key=r.key),o}:r.fn)}return e}function Dr(e,t,n={},r,s){if(ze.ce||ze.parent&&Kn(ze.parent)&&ze.parent.ce){const u=Object.keys(n).length>0;return t!=="default"&&(n.name=t),fe(),Ht(st,null,[Le("slot",n,r&&r())],u?-2:64)}let o=e[t];o&&o._c&&(o._d=!1),fe();const i=o&&Gc(o(n)),a=n.key||i&&i.key,l=Ht(st,{key:(a&&!dt(a)?a:`_${t}`)+(!i&&r?"_fb":"")},i||(r?r():[]),i&&e._===1?64:-2);return!s&&l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),o&&o._c&&(o._d=!0),l}function Gc(e){return e.some(t=>On(t)?!(t.type===Qe||t.type===st&&!Gc(t.children)):!0)?e:null}function Db(e,t){const n={};for(const r in e)n[os(r)]=e[r];return n}const Fo=e=>e?gu(e)?Xs(e):Fo(e.parent):null,xr=Me(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Fo(e.parent),$root:e=>Fo(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Qc(e),$forceUpdate:e=>e.f||(e.f=()=>{gi(e.update)}),$nextTick:e=>e.n||(e.n=rr.bind(e.proxy)),$watch:e=>lp.bind(e)}),po=(e,t)=>e!==be&&!e.__isScriptSetup&&me(e,t),Op={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:s,props:o,accessCache:i,type:a,appContext:l}=e;if(t[0]!=="$"){const d=i[t];if(d!==void 0)switch(d){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(po(r,t))return i[t]=1,r[t];if(s!==be&&me(s,t))return i[t]=2,s[t];if(me(o,t))return i[t]=3,o[t];if(n!==be&&me(n,t))return i[t]=4,n[t];Bo&&(i[t]=0)}}const u=xr[t];let c,f;if(u)return t==="$attrs"&&Ye(e.attrs,"get",""),u(e);if((c=a.__cssModules)&&(c=c[t]))return c;if(n!==be&&me(n,t))return i[t]=4,n[t];if(f=l.config.globalProperties,me(f,t))return f[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return po(s,t)?(s[t]=n,!0):r!==be&&me(r,t)?(r[t]=n,!0):me(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,props:o,type:i}},a){let l;return!!(n[a]||e!==be&&a[0]!=="$"&&me(e,a)||po(t,a)||me(o,a)||me(r,a)||me(xr,a)||me(s.config.globalProperties,a)||(l=i.__cssModules)&&l[a])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:me(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Mb(){return Jc().slots}function $b(){return Jc().attrs}function Jc(e){const t=We();return t.setupContext||(t.setupContext=vu(t))}function ys(e){return Q(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}function Fb(e,t){return!e||!t?e||t:Q(e)&&Q(t)?e.concat(t):Me({},ys(e),ys(t))}let Bo=!0;function Ap(e){const t=Qc(e),n=e.proxy,r=e.ctx;Bo=!1,t.beforeCreate&&la(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:a,provide:l,inject:u,created:c,beforeMount:f,mounted:d,beforeUpdate:p,updated:y,activated:g,deactivated:v,beforeDestroy:_,beforeUnmount:b,destroyed:x,unmounted:T,render:D,renderTracked:J,renderTriggered:W,errorCaptured:Y,serverPrefetch:L,expose:k,inheritAttrs:H,components:F,directives:te,filters:B}=t;if(u&&Tp(u,r,null),i)for(const I in i){const N=i[I];oe(N)&&(r[I]=N.bind(n))}if(s){const I=s.call(n,n);ge(I)&&(e.data=Vr(I))}if(Bo=!0,o)for(const I in o){const N=o[I],re=oe(N)?N.bind(n,n):oe(N.get)?N.get.bind(n,n):_t,X=!oe(N)&&oe(N.set)?N.set.bind(n):_t,ne=Z({get:re,set:X});Object.defineProperty(r,I,{enumerable:!0,configurable:!0,get:()=>ne.value,set:ce=>ne.value=ce})}if(a)for(const I in a)Yc(a[I],r,n,I);if(l){const I=oe(l)?l.call(n):l;Reflect.ownKeys(I).forEach(N=>{Er(N,I[N])})}c&&la(c,e,"c");function R(I,N){Q(N)?N.forEach(re=>I(re.bind(n))):N&&I(N.bind(n))}if(R(gp,f),R(qr,d),R(_p,p),R(qc,y),R(Hc,g),R(kc,v),R(wp,Y),R(bp,J),R(yp,W),R(Wc,b),R(Js,T),R(vp,L),Q(k))if(k.length){const I=e.exposed||(e.exposed={});k.forEach(N=>{Object.defineProperty(I,N,{get:()=>n[N],set:re=>n[N]=re,enumerable:!0})})}else e.exposed||(e.exposed={});D&&e.render===_t&&(e.render=D),H!=null&&(e.inheritAttrs=H),F&&(e.components=F),te&&(e.directives=te),L&&yi(e)}function Tp(e,t,n=_t){Q(e)&&(e=jo(e));for(const r in e){const s=e[r];let o;ge(s)?"default"in s?o=De(s.from||r,s.default,!0):o=De(s.from||r):o=De(s),Re(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function la(e,t,n){vt(Q(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Yc(e,t,n,r){let s=r.includes(".")?Dc(n,r):()=>n[r];if(we(e)){const o=t[e];oe(o)&&at(s,o)}else if(oe(e))at(s,e.bind(n));else if(ge(e))if(Q(e))e.forEach(o=>Yc(o,t,n,r));else{const o=oe(e.handler)?e.handler.bind(n):t[e.handler];oe(o)&&at(s,o,e)}}function Qc(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,a=o.get(t);let l;return a?l=a:!s.length&&!n&&!r?l=t:(l={},s.length&&s.forEach(u=>bs(l,u,i,!0)),bs(l,t,i)),ge(t)&&o.set(t,l),l}function bs(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&bs(e,o,n,!0),s&&s.forEach(i=>bs(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const a=Cp[i]||n&&n[i];e[i]=a?a(e[i],t[i]):t[i]}return e}const Cp={data:ca,props:ua,emits:ua,methods:_r,computed:_r,beforeCreate:Ze,created:Ze,beforeMount:Ze,mounted:Ze,beforeUpdate:Ze,updated:Ze,beforeDestroy:Ze,beforeUnmount:Ze,destroyed:Ze,unmounted:Ze,activated:Ze,deactivated:Ze,errorCaptured:Ze,serverPrefetch:Ze,components:_r,directives:_r,watch:Pp,provide:ca,inject:Rp};function ca(e,t){return t?e?function(){return Me(oe(e)?e.call(this,this):e,oe(t)?t.call(this,this):t)}:t:e}function Rp(e,t){return _r(jo(e),jo(t))}function jo(e){if(Q(e)){const t={};for(let n=0;n{let c,f=be,d;return ap(()=>{const p=e[s];Ve(c,p)&&(c=p,u())}),{get(){return l(),n.get?n.get(c):c},set(p){const y=n.set?n.set(p):p;if(!Ve(y,c)&&!(f!==be&&Ve(p,f)))return;const g=r.vnode.props,v=!!(g&&(t in g||s in g||o in g)&&(`onUpdate:${t}`in g||`onUpdate:${s}`in g||`onUpdate:${o}`in g));v||(c=p,u()),r.emit(`update:${t}`,y),Ve(p,f)&&(Ve(p,y)&&!Ve(y,d)||v&&f!==be&&!Ve(y,c))&&u(),f=p,d=y}}});return a[Symbol.iterator]=()=>{let l=0;return{next(){return l<2?{value:l++?i||be:a,done:!1}:{done:!0}}}},a}const Zc=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${qe(t)}Modifiers`]||e[`${qt(t)}Modifiers`];function Np(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||be;let s=n;const o=t.startsWith("update:"),i=o&&Zc(r,t.slice(7));i&&(i.trim&&(s=n.map(c=>we(c)?c.trim():c)),i.number&&(s=n.map(ui)));let a,l=r[a=os(t)]||r[a=os(qe(t))];!l&&o&&(l=r[a=os(qt(t))]),l&&vt(l,e,6,s);const u=r[a+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,vt(u,e,6,s)}}const Dp=new WeakMap;function eu(e,t,n=!1){const r=n?Dp:t.emitsCache,s=r.get(e);if(s!==void 0)return s;const o=e.emits;let i={},a=!1;if(!oe(e)){const l=u=>{const c=eu(u,t,!0);c&&(a=!0,Me(i,c))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!o&&!a?(ge(e)&&r.set(e,null),null):(Q(o)?o.forEach(l=>i[l]=null):Me(i,o),ge(e)&&r.set(e,i),i)}function Ys(e,t){return!e||!Ns(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),me(e,t[0].toLowerCase()+t.slice(1))||me(e,qt(t))||me(e,t))}function fa(e){const{type:t,vnode:n,proxy:r,withProxy:s,propsOptions:[o],slots:i,attrs:a,emit:l,render:u,renderCache:c,props:f,data:d,setupState:p,ctx:y,inheritAttrs:g}=e,v=_s(e);let _,b;try{if(n.shapeFlag&4){const T=s||r,D=T;_=Lt(u.call(D,T,c,f,p,d,y)),b=a}else{const T=t;_=Lt(T.length>1?T(f,{attrs:a,slots:i,emit:l}):T(f,null)),b=t.props?a:Mp(a)}}catch(T){Or.length=0,kr(T,e,1),_=Le(Qe)}let x=_;if(b&&g!==!1){const T=Object.keys(b),{shapeFlag:D}=x;T.length&&D&7&&(o&&T.some(Ds)&&(b=$p(b,o)),x=ln(x,b,!1,!0))}return n.dirs&&(x=ln(x,null,!1,!0),x.dirs=x.dirs?x.dirs.concat(n.dirs):n.dirs),n.transition&&xn(x,n.transition),_=x,_s(v),_}const Mp=e=>{let t;for(const n in e)(n==="class"||n==="style"||Ns(n))&&((t||(t={}))[n]=e[n]);return t},$p=(e,t)=>{const n={};for(const r in e)(!Ds(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Fp(e,t,n){const{props:r,children:s,component:o}=e,{props:i,children:a,patchFlag:l}=t,u=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return r?da(r,i,u):!!i;if(l&8){const c=t.dynamicProps;for(let f=0;fObject.create(nu),su=e=>Object.getPrototypeOf(e)===nu;function jp(e,t,n,r=!1){const s={},o=ru();e.propsDefaults=Object.create(null),ou(e,t,s,o);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:zs(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function Up(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:i}}=e,a=pe(s),[l]=e.propsOptions;let u=!1;if((r||i>0)&&!(i&16)){if(i&8){const c=e.vnode.dynamicProps;for(let f=0;f{l=!0;const[d,p]=iu(f,t,!0);Me(i,d),p&&a.push(...p)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!o&&!l)return ge(e)&&r.set(e,kn),kn;if(Q(o))for(let c=0;ce==="_"||e==="_ctx"||e==="$stable",Si=e=>Q(e)?e.map(Lt):[Lt(e)],Hp=(e,t,n)=>{if(t._n)return t;const r=Wn((...s)=>Si(t(...s)),n);return r._c=!1,r},au=(e,t,n)=>{const r=e._ctx;for(const s in e){if(Ei(s))continue;const o=e[s];if(oe(o))t[s]=Hp(s,o,r);else if(o!=null){const i=Si(o);t[s]=()=>i}}},lu=(e,t)=>{const n=Si(t);e.slots.default=()=>n},cu=(e,t,n)=>{for(const r in t)(n||!Ei(r))&&(e[r]=t[r])},kp=(e,t,n)=>{const r=e.slots=ru();if(e.vnode.shapeFlag&32){const s=t._;s?(cu(r,t,n),n&&ec(r,"_",s,!0)):au(t,r)}else t&&lu(e,t)},zp=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,i=be;if(r.shapeFlag&32){const a=t._;a?n&&a===1?o=!1:cu(s,t,n):(o=!t.$stable,au(t,s)),i=t}else t&&(lu(e,t),i={default:1});if(o)for(const a in s)!Ei(a)&&i[a]==null&&delete s[a]},et=Jp;function qp(e){return Wp(e)}function Wp(e,t){const n=js();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:a,createComment:l,setText:u,setElementText:c,parentNode:f,nextSibling:d,setScopeId:p=_t,insertStaticContent:y}=e,g=(h,m,E,C=null,S=null,A=null,U=void 0,$=null,j=!!m.dynamicChildren)=>{if(h===m)return;h&&!_n(h,m)&&(C=O(h),ce(h,S,A,!0),h=null),m.patchFlag===-2&&(j=!1,m.dynamicChildren=null);const{type:P,ref:ee,shapeFlag:G}=m;switch(P){case Qs:v(h,m,E,C);break;case Qe:_(h,m,E,C);break;case as:h==null&&b(m,E,C,U);break;case st:F(h,m,E,C,S,A,U,$,j);break;default:G&1?D(h,m,E,C,S,A,U,$,j):G&6?te(h,m,E,C,S,A,U,$,j):(G&64||G&128)&&P.process(h,m,E,C,S,A,U,$,j,K)}ee!=null&&S?Sr(ee,h&&h.ref,A,m||h,!m):ee==null&&h&&h.ref!=null&&Sr(h.ref,null,A,h,!0)},v=(h,m,E,C)=>{if(h==null)r(m.el=a(m.children),E,C);else{const S=m.el=h.el;m.children!==h.children&&u(S,m.children)}},_=(h,m,E,C)=>{h==null?r(m.el=l(m.children||""),E,C):m.el=h.el},b=(h,m,E,C)=>{[h.el,h.anchor]=y(h.children,m,E,C,h.el,h.anchor)},x=({el:h,anchor:m},E,C)=>{let S;for(;h&&h!==m;)S=d(h),r(h,E,C),h=S;r(m,E,C)},T=({el:h,anchor:m})=>{let E;for(;h&&h!==m;)E=d(h),s(h),h=E;s(m)},D=(h,m,E,C,S,A,U,$,j)=>{if(m.type==="svg"?U="svg":m.type==="math"&&(U="mathml"),h==null)J(m,E,C,S,A,U,$,j);else{const P=h.el&&h.el._isVueCE?h.el:null;try{P&&P._beginPatch(),L(h,m,S,A,U,$,j)}finally{P&&P._endPatch()}}},J=(h,m,E,C,S,A,U,$)=>{let j,P;const{props:ee,shapeFlag:G,transition:se,dirs:le}=h;if(j=h.el=i(h.type,A,ee&&ee.is,ee),G&8?c(j,h.children):G&16&&Y(h.children,j,null,C,S,ho(h,A),U,$),le&&fn(h,null,C,"created"),W(j,h,h.scopeId,U,C),ee){for(const Ae in ee)Ae!=="value"&&!yr(Ae)&&o(j,Ae,null,ee[Ae],A,C);"value"in ee&&o(j,"value",null,ee.value,A),(P=ee.onVnodeBeforeMount)&&Tt(P,C,h)}le&&fn(h,null,C,"beforeMount");const ve=Kp(S,se);ve&&se.beforeEnter(j),r(j,m,E),((P=ee&&ee.onVnodeMounted)||ve||le)&&et(()=>{try{P&&Tt(P,C,h),ve&&se.enter(j),le&&fn(h,null,C,"mounted")}finally{}},S)},W=(h,m,E,C,S)=>{if(E&&p(h,E),C)for(let A=0;A{for(let P=j;P{const $=m.el=h.el;let{patchFlag:j,dynamicChildren:P,dirs:ee}=m;j|=h.patchFlag&16;const G=h.props||be,se=m.props||be;let le;if(E&&dn(E,!1),(le=se.onVnodeBeforeUpdate)&&Tt(le,E,m,h),ee&&fn(m,h,E,"beforeUpdate"),E&&dn(E,!0),P&&(!h.dynamicChildren||h.dynamicChildren.length!==P.length)&&(j=0,U=!1,P=null),(G.innerHTML&&se.innerHTML==null||G.textContent&&se.textContent==null)&&c($,""),P?k(h.dynamicChildren,P,$,E,C,ho(m,S),A):U||N(h,m,$,null,E,C,ho(m,S),A,!1),j>0){if(j&16)H($,G,se,E,S);else if(j&2&&G.class!==se.class&&o($,"class",null,se.class,S),j&4&&o($,"style",G.style,se.style,S),j&8){const ve=m.dynamicProps;for(let Ae=0;Ae{le&&Tt(le,E,m,h),ee&&fn(m,h,E,"updated")},C)},k=(h,m,E,C,S,A,U)=>{for(let $=0;${if(m!==E){if(m!==be)for(const A in m)!yr(A)&&!(A in E)&&o(h,A,m[A],null,S,C);for(const A in E){if(yr(A))continue;const U=E[A],$=m[A];U!==$&&A!=="value"&&o(h,A,$,U,S,C)}"value"in E&&o(h,"value",m.value,E.value,S)}},F=(h,m,E,C,S,A,U,$,j)=>{const P=m.el=h?h.el:a(""),ee=m.anchor=h?h.anchor:a("");let{patchFlag:G,dynamicChildren:se,slotScopeIds:le}=m;le&&($=$?$.concat(le):le),h==null?(r(P,E,C),r(ee,E,C),Y(m.children||[],E,ee,S,A,U,$,j)):G>0&&G&64&&se&&h.dynamicChildren&&h.dynamicChildren.length===se.length?(k(h.dynamicChildren,se,E,S,A,U,$),(m.key!=null||S&&m===S.subTree)&&xi(h,m,!0)):N(h,m,E,ee,S,A,U,$,j)},te=(h,m,E,C,S,A,U,$,j)=>{m.slotScopeIds=$,h==null?m.shapeFlag&512?S.ctx.activate(m,E,C,U,j):B(m,E,C,S,A,U,j):M(h,m,j)},B=(h,m,E,C,S,A,U)=>{const $=h.component=th(h,C,S);if(zr(h)&&($.ctx.renderer=K),nh($,!1,U),$.asyncDep){if(S&&S.registerDep($,R,U),!h.el){const j=$.subTree=Le(Qe);_(null,j,m,E),h.placeholder=j.el}}else R($,h,m,E,S,A,U)},M=(h,m,E)=>{const C=m.component=h.component;if(Fp(h,m,E))if(C.asyncDep&&!C.asyncResolved){I(C,m,E);return}else C.next=m,C.update();else m.el=h.el,C.vnode=m},R=(h,m,E,C,S,A,U)=>{const $=()=>{if(h.isMounted){let{next:G,bu:se,u:le,parent:ve,vnode:Ae}=h;{const Ot=uu(h);if(Ot){G&&(G.el=Ae.el,I(h,G,U)),Ot.asyncDep.then(()=>{et(()=>{h.isUnmounted||P()},S)});return}}let Oe=G,Fe;dn(h,!1),G?(G.el=Ae.el,I(h,G,U)):G=Ae,se&&is(se),(Fe=G.props&&G.props.onVnodeBeforeUpdate)&&Tt(Fe,ve,G,Ae),dn(h,!0);const Ue=fa(h),xt=h.subTree;h.subTree=Ue,g(xt,Ue,f(xt.el),O(xt),h,S,A),G.el=Ue.el,Oe===null&&Bp(h,Ue.el),le&&et(le,S),(Fe=G.props&&G.props.onVnodeUpdated)&&et(()=>Tt(Fe,ve,G,Ae),S)}else{let G;const{el:se,props:le}=m,{bm:ve,m:Ae,parent:Oe,root:Fe,type:Ue}=h,xt=Kn(m);dn(h,!1),ve&&is(ve),!xt&&(G=le&&le.onVnodeBeforeMount)&&Tt(G,Oe,m),dn(h,!0);{Fe.ce&&Fe.ce._hasShadowRoot()&&Fe.ce._injectChildStyle(Ue,h.parent?h.parent.type:void 0);const Ot=h.subTree=fa(h);g(null,Ot,E,C,h,S,A),m.el=Ot.el}if(Ae&&et(Ae,S),!xt&&(G=le&&le.onVnodeMounted)){const Ot=m;et(()=>Tt(G,Oe,Ot),S)}(m.shapeFlag&256||Oe&&Kn(Oe.vnode)&&Oe.vnode.shapeFlag&256)&&h.a&&et(h.a,S),h.isMounted=!0,m=E=C=null}};h.scope.on();const j=h.effect=new lc($);h.scope.off();const P=h.update=j.run.bind(j),ee=h.job=j.runIfDirty.bind(j);ee.i=h,ee.id=h.uid,j.scheduler=()=>gi(ee),dn(h,!0),P()},I=(h,m,E)=>{m.component=h;const C=h.vnode.props;h.vnode=m,h.next=null,Up(h,m.props,C,E),zp(h,m.children,E),Dt(),ea(h),Mt()},N=(h,m,E,C,S,A,U,$,j=!1)=>{const P=h&&h.children,ee=h?h.shapeFlag:0,G=m.children,{patchFlag:se,shapeFlag:le}=m;if(se>0){if(se&128){X(P,G,E,C,S,A,U,$,j);return}else if(se&256){re(P,G,E,C,S,A,U,$,j);return}}le&8?(ee&16&&ie(P,S,A),G!==P&&c(E,G)):ee&16?le&16?X(P,G,E,C,S,A,U,$,j):ie(P,S,A,!0):(ee&8&&c(E,""),le&16&&Y(G,E,C,S,A,U,$,j))},re=(h,m,E,C,S,A,U,$,j)=>{h=h||kn,m=m||kn;const P=h.length,ee=m.length,G=Math.min(P,ee);let se;for(se=0;seee?ie(h,S,A,!0,!1,G):Y(m,E,C,S,A,U,$,j,G)},X=(h,m,E,C,S,A,U,$,j)=>{let P=0;const ee=m.length;let G=h.length-1,se=ee-1;for(;P<=G&&P<=se;){const le=h[P],ve=m[P]=j?jt(m[P]):Lt(m[P]);if(_n(le,ve))g(le,ve,E,null,S,A,U,$,j);else break;P++}for(;P<=G&&P<=se;){const le=h[G],ve=m[se]=j?jt(m[se]):Lt(m[se]);if(_n(le,ve))g(le,ve,E,null,S,A,U,$,j);else break;G--,se--}if(P>G){if(P<=se){const le=se+1,ve=lese)for(;P<=G;)ce(h[P],S,A,!0),P++;else{const le=P,ve=P,Ae=new Map;for(P=ve;P<=se;P++){const ct=m[P]=j?jt(m[P]):Lt(m[P]);ct.key!=null&&Ae.set(ct.key,P)}let Oe,Fe=0;const Ue=se-ve+1;let xt=!1,Ot=0;const lr=new Array(Ue);for(P=0;P=Ue){ce(ct,S,A,!0);continue}let At;if(ct.key!=null)At=Ae.get(ct.key);else for(Oe=ve;Oe<=se;Oe++)if(lr[Oe-ve]===0&&_n(ct,m[Oe])){At=Oe;break}At===void 0?ce(ct,S,A,!0):(lr[At-ve]=P+1,At>=Ot?Ot=At:xt=!0,g(ct,m[At],E,null,S,A,U,$,j),Fe++)}const Wi=xt?Gp(lr):kn;for(Oe=Wi.length-1,P=Ue-1;P>=0;P--){const ct=ve+P,At=m[ct],Ki=m[ct+1],Gi=ct+1{const{el:A,type:U,transition:$,children:j,shapeFlag:P}=h;if(P&6){ne(h.component.subTree,m,E,C);return}if(P&128){h.suspense.move(m,E,C);return}if(P&64){U.move(h,m,E,K);return}if(U===st){r(A,m,E);for(let G=0;G$.enter(A),S));else{const{leave:G,delayLeave:se,afterLeave:le}=$,ve=()=>{h.ctx.isUnmounted?s(A):r(A,m,E)},Ae=()=>{const Oe=A._isLeaving||!!A[ht];A._isLeaving&&A[ht](!0),$.persisted&&!Oe?ve():G(A,()=>{ve(),le&&le()})};se?se(A,ve,Ae):Ae()}else r(A,m,E)},ce=(h,m,E,C=!1,S=!1)=>{const{type:A,props:U,ref:$,children:j,dynamicChildren:P,shapeFlag:ee,patchFlag:G,dirs:se,cacheIndex:le,memo:ve}=h;if(G===-2&&(S=!1),$!=null&&(Dt(),Sr($,null,E,h,!0),Mt()),le!=null&&(m.renderCache[le]=void 0),ee&256){m.ctx.deactivate(h);return}const Ae=ee&1&&se,Oe=!Kn(h);let Fe;if(Oe&&(Fe=U&&U.onVnodeBeforeUnmount)&&Tt(Fe,m,h),ee&6)Pe(h.component,E,C);else{if(ee&128){h.suspense.unmount(E,C);return}Ae&&fn(h,null,m,"beforeUnmount"),ee&64?h.type.remove(h,m,E,K,C):P&&!P.hasOnce&&(A!==st||G>0&&G&64)?ie(P,m,E,!1,!0):(A===st&&G&384||!S&&ee&16)&&ie(j,m,E),C&&ye(h)}const Ue=ve!=null&&le==null;(Oe&&(Fe=U&&U.onVnodeUnmounted)||Ae||Ue)&&et(()=>{Fe&&Tt(Fe,m,h),Ae&&fn(h,null,m,"unmounted"),Ue&&(h.el=null)},E)},ye=h=>{const{type:m,el:E,anchor:C,transition:S}=h;if(m===st){xe(E,C);return}if(m===as){T(h);return}const A=()=>{s(E),S&&!S.persisted&&S.afterLeave&&S.afterLeave()};if(h.shapeFlag&1&&S&&!S.persisted){const{leave:U,delayLeave:$}=S,j=()=>U(E,A);$?$(h.el,A,j):j()}else A()},xe=(h,m)=>{let E;for(;h!==m;)E=d(h),s(h),h=E;s(m)},Pe=(h,m,E)=>{const{bum:C,scope:S,job:A,subTree:U,um:$,m:j,a:P}=h;ha(j),ha(P),C&&is(C),S.stop(),A&&(A.flags|=8,ce(U,h,m,E)),$&&et($,m),et(()=>{h.isUnmounted=!0},m)},ie=(h,m,E,C=!1,S=!1,A=0)=>{for(let U=A;U{if(h.shapeFlag&6)return O(h.component.subTree);if(h.shapeFlag&128)return h.suspense.next();const m=d(h.anchor||h.el),E=m&&m[Mc];return E?d(E):m};let z=!1;const V=(h,m,E)=>{let C;h==null?m._vnode&&(ce(m._vnode,null,null,!0),C=m._vnode.component):g(m._vnode||null,h,m,null,null,null,E),m._vnode=h,z||(z=!0,ea(C),Pc(),z=!1)},K={p:g,um:ce,m:ne,r:ye,mt:B,mc:Y,pc:N,pbc:k,n:O,o:e};return{render:V,hydrate:void 0,createApp:Ip(V)}}function ho({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function dn({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Kp(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function xi(e,t,n=!1){const r=e.children,s=t.children;if(Q(r)&&Q(s))for(let o=0;o>1,e[n[a]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function uu(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:uu(t)}function ha(e){if(e)for(let t=0;te.__isSuspense;function Jp(e,t){t&&t.pendingBranch?Q(e)?t.effects.push(...e):t.effects.push(e):rp(e)}const st=Symbol.for("v-fgt"),Qs=Symbol.for("v-txt"),Qe=Symbol.for("v-cmt"),as=Symbol.for("v-stc"),Or=[];let ut=null;function fe(e=!1){Or.push(ut=e?null:[])}function Yp(){Or.pop(),ut=Or[Or.length-1]||null}let Mr=1;function ws(e,t=!1){Mr+=e,e<0&&ut&&t&&(ut.hasOnce=!0)}function pu(e){return e.dynamicChildren=Mr>0?ut||kn:null,Yp(),Mr>0&&ut&&ut.push(e),e}function Ee(e,t,n,r,s,o){return pu(he(e,t,n,r,s,o,!0))}function Ht(e,t,n,r,s){return pu(Le(e,t,n,r,s,!0))}function On(e){return e?e.__v_isVNode===!0:!1}function _n(e,t){return e.type===t.type&&e.key===t.key}const hu=({key:e})=>e??null,ls=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?we(e)||Re(e)||oe(e)?{i:ze,r:e,k:t,f:!!n}:e:null);function he(e,t=null,n=null,r=0,s=null,o=e===st?0:1,i=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&hu(t),ref:t&&ls(t),scopeId:Ic,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:ze};return a?(Es(l,n),o&128&&e.normalize(l)):n&&(l.shapeFlag|=we(n)?8:16),Mr>0&&!i&&ut&&(l.patchFlag>0||o&6)&&l.patchFlag!==32&&ut.push(l),l}const Le=Qp;function Qp(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===Kc)&&(e=Qe),On(e)){const a=ln(e,t,!0);return n&&Es(a,n),Mr>0&&!o&&ut&&(a.shapeFlag&6?ut[ut.indexOf(e)]=a:ut.push(a)),a.patchFlag=-2,a}if(ih(e)&&(e=e.__vccOpts),t){t=Xp(t);let{class:a,style:l}=t;a&&!we(a)&&(t.class=mt(a)),ge(l)&&(Ws(l)&&!Q(l)&&(l=Me({},l)),t.style=nr(l))}const i=we(e)?1:du(e)?128:$c(e)?64:ge(e)?4:oe(e)?2:0;return he(e,t,n,r,s,i,o,!0)}function Xp(e){return e?Ws(e)||su(e)?Me({},e):e:null}function ln(e,t,n=!1,r=!1){const{props:s,ref:o,patchFlag:i,children:a,transition:l}=e,u=t?mu(s||{},t):s,c={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&hu(u),ref:t&&t.ref?n&&o?Q(o)?o.concat(ls(t)):[o,ls(t)]:ls(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==st?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:l,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&ln(e.ssContent),ssFallback:e.ssFallback&&ln(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return l&&r&&xn(c,l.clone(c)),c}function Oi(e=" ",t=0){return Le(Qs,null,e,t)}function jb(e,t){const n=Le(as,null,e);return n.staticCount=t,n}function Vn(e="",t=!1){return t?(fe(),Ht(Qe,null,e)):Le(Qe,null,e)}function Lt(e){return e==null||typeof e=="boolean"?Le(Qe):Q(e)?Le(st,null,e.slice()):On(e)?jt(e):Le(Qs,null,String(e))}function jt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:ln(e)}function Es(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(Q(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),Es(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!su(t)?t._ctx=ze:s===3&&ze&&(ze.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(oe(t)){if(r&65){Es(e,{default:t});return}t={default:t,_ctx:ze},n=32}else t=String(t),r&64?(n=16,t=[Oi(t)]):n=8;e.children=t,e.shapeFlag|=n}function mu(...e){const t={};for(let n=0;nHe||ze;let Ss,Vo;{const e=js(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),o=>{s.length>1?s.forEach(i=>i(o)):s[0](o)}};Ss=t("__VUE_INSTANCE_SETTERS__",n=>He=n),Vo=t("__VUE_SSR_SETTERS__",n=>Jn=n)}const Wr=e=>{const t=He;return Ss(e),e.scope.on(),()=>{e.scope.off(),Ss(t)}},ma=()=>{He&&He.scope.off(),Ss(null)};function gu(e){return e.vnode.shapeFlag&4}let Jn=!1;function nh(e,t=!1,n=!1){t&&Vo(t);const{props:r,children:s}=e.vnode,o=gu(e);jp(e,r,o,t),kp(e,s,n||t);const i=o?rh(e,t):void 0;return t&&Vo(!1),i}function rh(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Op);const{setup:r}=n;if(r){Dt();const s=e.setupContext=r.length>1?vu(e):null,o=Wr(e),i=Hr(r,e,0,[e.props,s]),a=Ql(i);if(Mt(),o(),(a||e.sp)&&!Kn(e)&&yi(e),a){if(i.then(ma,ma),t)return i.then(l=>{ga(e,l)}).catch(l=>{kr(l,e,0)});e.asyncDep=i}else ga(e,i)}else _u(e)}function ga(e,t,n){oe(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ge(t)&&(e.setupState=Ac(t)),_u(e)}function _u(e,t,n){const r=e.type;e.render||(e.render=r.render||_t);{const s=Wr(e);Dt();try{Ap(e)}finally{Mt(),s()}}}const sh={get(e,t){return Ye(e,"get",""),e[t]}};function vu(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,sh),slots:e.slots,emit:e.emit,expose:t}}function Xs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Ac(mi(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in xr)return xr[n](e)},has(t,n){return n in t||n in xr}})):e.proxy}function oh(e,t=!0){return oe(e)?e.displayName||e.name:e.name||t&&e.__name}function ih(e){return oe(e)&&"__vccOpts"in e}const Z=(e,t)=>Xd(e,t,Jn);function Ai(e,t,n){try{ws(-1);const r=arguments.length;return r===2?ge(t)&&!Q(t)?On(t)?Le(e,null,[t]):Le(e,t):Le(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&On(n)&&(n=[n]),Le(e,t,n))}finally{ws(1)}}const ah="3.5.39",lh=_t;/** +* @vue/runtime-dom v3.5.39 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Ho;const _a=typeof window<"u"&&window.trustedTypes;if(_a)try{Ho=_a.createPolicy("vue",{createHTML:e=>e})}catch{}const yu=Ho?e=>Ho.createHTML(e):e=>e,ch="http://www.w3.org/2000/svg",uh="http://www.w3.org/1998/Math/MathML",Bt=typeof document<"u"?document:null,va=Bt&&Bt.createElement("template"),fh={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?Bt.createElementNS(ch,e):t==="mathml"?Bt.createElementNS(uh,e):n?Bt.createElement(e,{is:n}):Bt.createElement(e);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>Bt.createTextNode(e),createComment:e=>Bt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Bt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const i=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{va.innerHTML=yu(r==="svg"?`${e}`:r==="mathml"?`${e}`:e);const a=va.content;if(r==="svg"||r==="mathml"){const l=a.firstChild;for(;l.firstChild;)a.appendChild(l.firstChild);a.removeChild(l)}t.insertBefore(a,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Qt="transition",fr="animation",Yn=Symbol("_vtc"),bu={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},wu=Me({},Bc,bu),dh=e=>(e.displayName="Transition",e.props=wu,e),Eu=dh((e,{slots:t})=>Ai(pp,Su(e),t)),pn=(e,t=[])=>{Q(e)?e.forEach(n=>n(...t)):e&&e(...t)},ya=e=>e?Q(e)?e.some(t=>t.length>1):e.length>1:!1;function Su(e){const t={};for(const F in e)F in bu||(t[F]=e[F]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:a=`${n}-enter-to`,appearFromClass:l=o,appearActiveClass:u=i,appearToClass:c=a,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:p=`${n}-leave-to`}=e,y=ph(s),g=y&&y[0],v=y&&y[1],{onBeforeEnter:_,onEnter:b,onEnterCancelled:x,onLeave:T,onLeaveCancelled:D,onBeforeAppear:J=_,onAppear:W=b,onAppearCancelled:Y=x}=t,L=(F,te,B,M)=>{F._enterCancelled=M,en(F,te?c:a),en(F,te?u:i),B&&B()},k=(F,te)=>{F._isLeaving=!1,en(F,f),en(F,p),en(F,d),te&&te()},H=F=>(te,B)=>{const M=F?W:b,R=()=>L(te,F,B);pn(M,[te,R]),ba(()=>{en(te,F?l:o),Ct(te,F?c:a),ya(M)||wa(te,r,g,R)})};return Me(t,{onBeforeEnter(F){pn(_,[F]),Ct(F,o),Ct(F,i)},onBeforeAppear(F){pn(J,[F]),Ct(F,l),Ct(F,u)},onEnter:H(!1),onAppear:H(!0),onLeave(F,te){F._isLeaving=!0;const B=()=>k(F,te);Ct(F,f),F._enterCancelled?(Ct(F,d),ko(F)):(ko(F),Ct(F,d)),ba(()=>{F._isLeaving&&(en(F,f),Ct(F,p),ya(T)||wa(F,r,v,B))}),pn(T,[F,B])},onEnterCancelled(F){L(F,!1,void 0,!0),pn(x,[F])},onAppearCancelled(F){L(F,!0,void 0,!0),pn(Y,[F])},onLeaveCancelled(F){k(F),pn(D,[F])}})}function ph(e){if(e==null)return null;if(ge(e))return[mo(e.enter),mo(e.leave)];{const t=mo(e);return[t,t]}}function mo(e){return _d(e)}function Ct(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Yn]||(e[Yn]=new Set)).add(t)}function en(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[Yn];n&&(n.delete(t),n.size||(e[Yn]=void 0))}function ba(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let hh=0;function wa(e,t,n,r){const s=e._endId=++hh,o=()=>{s===e._endId&&r()};if(n!=null)return setTimeout(o,n);const{type:i,timeout:a,propCount:l}=xu(e,t);if(!i)return r();const u=i+"end";let c=0;const f=()=>{e.removeEventListener(u,d),o()},d=p=>{p.target===e&&++c>=l&&f()};setTimeout(()=>{c(n[y]||"").split(", "),s=r(`${Qt}Delay`),o=r(`${Qt}Duration`),i=Ea(s,o),a=r(`${fr}Delay`),l=r(`${fr}Duration`),u=Ea(a,l);let c=null,f=0,d=0;t===Qt?i>0&&(c=Qt,f=i,d=o.length):t===fr?u>0&&(c=fr,f=u,d=l.length):(f=Math.max(i,u),c=f>0?i>u?Qt:fr:null,d=c?c===Qt?o.length:l.length:0);const p=c===Qt&&/\b(?:transform|all)(?:,|$)/.test(r(`${Qt}Property`).toString());return{type:c,timeout:f,propCount:d,hasTransform:p}}function Ea(e,t){for(;e.lengthSa(n)+Sa(e[r])))}function Sa(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function ko(e){return(e?e.ownerDocument:document).body.offsetHeight}function mh(e,t,n){const r=e[Yn];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const xs=Symbol("_vod"),Ti=Symbol("_vsh"),gh={name:"show",beforeMount(e,{value:t},{transition:n}){e[xs]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):dr(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),dr(e,!0),r.enter(e)):r.leave(e,()=>{dr(e,!1)}):dr(e,t))},beforeUnmount(e,{value:t}){dr(e,t)}};function dr(e,t){e.style.display=t?e[xs]:"none",e[Ti]=!t}const _h=Symbol(""),vh=/(?:^|;)\s*display\s*:/;function yh(e,t,n){const r=e.style,s=we(n);let o=!1;if(n&&!s){if(t)if(we(t))for(const i of t.split(";")){const a=i.slice(0,i.indexOf(":")).trim();n[a]==null&&vr(r,a,"")}else for(const i in t)n[i]==null&&vr(r,i,"");for(const i in n){i==="display"&&(o=!0);const a=n[i];a!=null?wh(e,i,!we(t)&&t?t[i]:void 0,a)||vr(r,i,a):vr(r,i,"")}}else if(s){if(t!==n){const i=r[_h];i&&(n+=";"+i),r.cssText=n,o=vh.test(n)}}else t&&e.removeAttribute("style");xs in e&&(e[xs]=o?r.display:"",e[Ti]&&(r.display="none"))}const xa=/\s*!important$/;function vr(e,t,n){if(Q(n))n.forEach(r=>vr(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=bh(e,t);xa.test(n)?e.setProperty(qt(r),n.replace(xa,""),"important"):e[r]=n}}const Oa=["Webkit","Moz","ms"],go={};function bh(e,t){const n=go[t];if(n)return n;let r=qe(t);if(r!=="filter"&&r in e)return go[t]=r;r=Bs(r);for(let s=0;s_o||(Th.then(()=>_o=0),_o=Date.now());function Rh(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;const s=n.value;if(Q(s)){const o=r.stopImmediatePropagation;r.stopImmediatePropagation=()=>{o.call(r),r._stopped=!0};const i=s.slice(),a=[r];for(let l=0;le.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Ph=(e,t,n,r,s,o)=>{const i=s==="svg";t==="class"?mh(e,r,i):t==="style"?yh(e,n,r):Ns(t)?Ds(t)||Sh(e,t,n,r,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Lh(e,t,r,i))?(Ca(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Ta(e,t,r,i,o,t!=="value")):e._isVueCE&&(Ih(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!we(r)))?Ca(e,qe(t),r,o,t):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Ta(e,t,r,i))};function Lh(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&Pa(t)&&oe(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return Pa(t)&&we(n)?!1:t in e}function Ih(e,t){const n=e._def.props;if(!n)return!1;const r=qe(t);return Array.isArray(n)?n.some(s=>qe(s)===r):Object.keys(n).some(s=>qe(s)===r)}const Ou=new WeakMap,Au=new WeakMap,Os=Symbol("_moveCb"),La=Symbol("_enterCb"),Nh=e=>(delete e.props.mode,e),Dh=Nh({name:"TransitionGroup",props:Me({},wu,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=We(),r=Fc();let s,o;return qc(()=>{if(!s.length)return;const i=e.moveClass||`${e.name||"v"}-move`;if(!Bh(s[0].el,n.vnode.el,i)){s=[];return}s.forEach(Mh),s.forEach($h);const a=s.filter(Fh);ko(n.vnode.el),a.forEach(l=>{const u=l.el,c=u.style;Ct(u,i),c.transform=c.webkitTransform=c.transitionDuration="";const f=u[Os]=d=>{d&&d.target!==u||(!d||d.propertyName.endsWith("transform"))&&(u.removeEventListener("transitionend",f),u[Os]=null,en(u,i))};u.addEventListener("transitionend",f)}),s=[]}),()=>{const i=pe(e),a=Su(i);let l=i.tag||st;if(s=[],o)for(let u=0;u{a.split(/\s+/).forEach(l=>l&&r.classList.remove(l))}),n.split(/\s+/).forEach(a=>a&&r.classList.add(a)),r.style.display="none";const o=t.nodeType===1?t:t.parentNode;o.appendChild(r);const{hasTransform:i}=xu(r);return o.removeChild(r),i}const Qn=e=>{const t=e.props["onUpdate:modelValue"]||!1;return Q(t)?n=>is(t,n):t};function jh(e){e.target.composing=!0}function Ia(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const kt=Symbol("_assign");function Na(e,t,n){return t&&(e=e.trim()),n&&(e=ui(e)),e}const Vb={created(e,{modifiers:{lazy:t,trim:n,number:r}},s){e[kt]=Qn(s);const o=r||s.props&&s.props.type==="number";on(e,t?"change":"input",i=>{i.target.composing||e[kt](Na(e.value,n,o))}),(n||o)&&on(e,"change",()=>{e.value=Na(e.value,n,o)}),t||(on(e,"compositionstart",jh),on(e,"compositionend",Ia),on(e,"change",Ia))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:s,number:o}},i){if(e[kt]=Qn(i),e.composing)return;const a=(o||e.type==="number")&&!/^0\d/.test(e.value)?ui(e.value):e.value,l=t??"";if(a===l)return;const u=e.getRootNode();(u instanceof Document||u instanceof ShadowRoot)&&u.activeElement===e&&e.type!=="range"&&(r&&t===n||s&&e.value.trim()===l)||(e.value=l)}},Hb={deep:!0,created(e,t,n){e[kt]=Qn(n),on(e,"change",()=>{const r=e._modelValue,s=Cu(e),o=e.checked,i=e[kt];if(Q(r)){const a=nc(r,s),l=a!==-1;if(o&&!l)i(r.concat(s));else if(!o&&l){const u=[...r];u.splice(a,1),i(u)}}else if(Ms(r)){const a=new Set(r);o?a.add(s):a.delete(s),i(a)}else i(Ru(e,o))})},mounted:Da,beforeUpdate(e,t,n){e[kt]=Qn(n),Da(e,t,n)}};function Da(e,{value:t,oldValue:n},r){e._modelValue=t;let s;if(Q(t))s=nc(t,r.props.value)>-1;else if(Ms(t))s=t.has(r.props.value);else{if(t===n)return;s=Sn(t,Ru(e,!0))}e.checked!==s&&(e.checked=s)}const kb={created(e,{value:t},n){e.checked=Sn(t,n.props.value),e[kt]=Qn(n),on(e,"change",()=>{e[kt](Cu(e))})},beforeUpdate(e,{value:t,oldValue:n},r){e[kt]=Qn(r),t!==n&&(e.checked=Sn(t,r.props.value))}};function Cu(e){return"_value"in e?e._value:e.value}function Ru(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Uh=["ctrl","shift","alt","meta"],Vh={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Uh.some(n=>e[`${n}Key`]&&!t.includes(n))},Hh=(e,t)=>{if(!e)return e;const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=((s,...o)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=(s=>{if(!("key"in s))return;const o=qt(s.key);if(t.some(i=>i===o||kh[i]===o))return e(s)}))},zh=Me({patchProp:Ph},fh);let Ma;function Pu(){return Ma||(Ma=qp(zh))}const $a=((...e)=>{Pu().render(...e)}),qh=((...e)=>{const t=Pu().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=Kh(r);if(!s)return;const o=t._component;!oe(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.nodeType===1&&(s.textContent="");const i=n(s,!1,Wh(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t});function Wh(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Kh(e){return we(e)?document.querySelector(e):e}/*! + * pinia v2.3.1 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */let Lu;const Zs=e=>Lu=e,Iu=Symbol();function zo(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var Ar;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(Ar||(Ar={}));function Gh(){const e=ic(!0),t=e.run(()=>Ne({}));let n=[],r=[];const s=mi({install(o){Zs(s),s._a=o,o.provide(Iu,s),o.config.globalProperties.$pinia=s,r.forEach(i=>n.push(i)),r=[]},use(o){return this._a?n.push(o):r.push(o),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return s}const Nu=()=>{};function Fa(e,t,n,r=Nu){e.push(t);const s=()=>{const o=e.indexOf(t);o>-1&&(e.splice(o,1),r())};return!n&&Us()&&ac(s),s}function Fn(e,...t){e.slice().forEach(n=>{n(...t)})}const Jh=e=>e(),Ba=Symbol(),vo=Symbol();function qo(e,t){e instanceof Map&&t instanceof Map?t.forEach((n,r)=>e.set(r,n)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const r=t[n],s=e[n];zo(s)&&zo(r)&&e.hasOwnProperty(n)&&!Re(r)&&!It(r)?e[n]=qo(s,r):e[n]=r}return e}const Yh=Symbol();function Qh(e){return!zo(e)||!e.hasOwnProperty(Yh)}const{assign:tn}=Object;function Xh(e){return!!(Re(e)&&e.effect)}function Zh(e,t,n,r){const{state:s,actions:o,getters:i}=t,a=n.state.value[e];let l;function u(){a||(n.state.value[e]=s?s():{});const c=Kd(n.state.value[e]);return tn(c,o,Object.keys(i||{}).reduce((f,d)=>(f[d]=mi(Z(()=>{Zs(n);const p=n._s.get(e);return i[d].call(p,p)})),f),{}))}return l=Du(e,u,t,n,r,!0),l}function Du(e,t,n={},r,s,o){let i;const a=tn({actions:{}},n),l={deep:!0};let u,c,f=[],d=[],p;const y=r.state.value[e];!o&&!y&&(r.state.value[e]={});let g;function v(Y){let L;u=c=!1,typeof Y=="function"?(Y(r.state.value[e]),L={type:Ar.patchFunction,storeId:e,events:p}):(qo(r.state.value[e],Y),L={type:Ar.patchObject,payload:Y,storeId:e,events:p});const k=g=Symbol();rr().then(()=>{g===k&&(u=!0)}),c=!0,Fn(f,L,r.state.value[e])}const _=o?function(){const{state:L}=n,k=L?L():{};this.$patch(H=>{tn(H,k)})}:Nu;function b(){i.stop(),f=[],d=[],r._s.delete(e)}const x=(Y,L="")=>{if(Ba in Y)return Y[vo]=L,Y;const k=function(){Zs(r);const H=Array.from(arguments),F=[],te=[];function B(I){F.push(I)}function M(I){te.push(I)}Fn(d,{args:H,name:k[vo],store:D,after:B,onError:M});let R;try{R=Y.apply(this&&this.$id===e?this:D,H)}catch(I){throw Fn(te,I),I}return R instanceof Promise?R.then(I=>(Fn(F,I),I)).catch(I=>(Fn(te,I),Promise.reject(I))):(Fn(F,R),R)};return k[Ba]=!0,k[vo]=L,k},T={_p:r,$id:e,$onAction:Fa.bind(null,d),$patch:v,$reset:_,$subscribe(Y,L={}){const k=Fa(f,Y,L.detached,()=>H()),H=i.run(()=>at(()=>r.state.value[e],F=>{(L.flush==="sync"?c:u)&&Y({storeId:e,type:Ar.direct,events:p},F)},tn({},l,L)));return k},$dispose:b},D=Vr(T);r._s.set(e,D);const W=(r._a&&r._a.runWithContext||Jh)(()=>r._e.run(()=>(i=ic()).run(()=>t({action:x}))));for(const Y in W){const L=W[Y];if(Re(L)&&!Xh(L)||It(L))o||(y&&Qh(L)&&(Re(L)?L.value=y[Y]:qo(L,y[Y])),r.state.value[e][Y]=L);else if(typeof L=="function"){const k=x(L,Y);W[Y]=k,a.actions[Y]=L}}return tn(D,W),tn(pe(D),W),Object.defineProperty(D,"$state",{get:()=>r.state.value[e],set:Y=>{v(L=>{tn(L,Y)})}}),r._p.forEach(Y=>{tn(D,i.run(()=>Y({store:D,app:r._a,pinia:r,options:a})))}),y&&o&&n.hydrate&&n.hydrate(D.$state,y),u=!0,c=!0,D}/*! #__NO_SIDE_EFFECTS__ */function e0(e,t,n){let r,s;const o=typeof t=="function";typeof e=="string"?(r=e,s=o?n:t):(s=e,r=e.id);function i(a,l){const u=_i();return a=a||(u?De(Iu,null):null),a&&Zs(a),a=Lu,a._s.has(r)||(o?Du(r,t,s,a):Zh(r,s,a)),a._s.get(r)}return i.$id=r,i}function qb(e){{const t=pe(e),n={};for(const r in t){const s=t[r];s.effect?n[r]=Z({get:()=>e[r],set(o){e[r]=o}}):(Re(s)||It(s))&&(n[r]=Yd(e,r))}return n}}const Wo={tab:"Tab",enter:"Enter",space:"Space",left:"ArrowLeft",up:"ArrowUp",right:"ArrowRight",down:"ArrowDown",esc:"Escape",delete:"Delete",backspace:"Backspace",numpadEnter:"NumpadEnter",pageUp:"PageUp",pageDown:"PageDown",home:"Home",end:"End"},t0=["","default","small","large"];var Mu=typeof global=="object"&&global&&global.Object===Object&&global,n0=typeof self=="object"&&self&&self.Object===Object&&self,Kt=Mu||n0||Function("return this")(),cn=Kt.Symbol,$u=Object.prototype,r0=$u.hasOwnProperty,s0=$u.toString,pr=cn?cn.toStringTag:void 0;function o0(e){var t=r0.call(e,pr),n=e[pr];try{e[pr]=void 0;var r=!0}catch{}var s=s0.call(e);return r&&(t?e[pr]=n:delete e[pr]),s}var i0=Object.prototype,a0=i0.toString;function l0(e){return a0.call(e)}var c0="[object Null]",u0="[object Undefined]",ja=cn?cn.toStringTag:void 0;function Nn(e){return e==null?e===void 0?u0:c0:ja&&ja in Object(e)?o0(e):l0(e)}function An(e){return e!=null&&typeof e=="object"}var f0="[object Symbol]";function Ci(e){return typeof e=="symbol"||An(e)&&Nn(e)==f0}function d0(e,t){for(var n=-1,r=e==null?0:e.length,s=Array(r);++n-1&&e%1==0&&e-1&&e%1==0&&e<=D0}function M0(e){return e!=null&&Vu(e.length)&&!Bu(e)}var $0=Object.prototype;function F0(e){var t=e&&e.constructor,n=typeof t=="function"&&t.prototype||$0;return e===n}function B0(e,t){for(var n=-1,r=Array(e);++n-1}function Km(e,t){var n=this.__data__,r=eo(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function Gt(e){var t=-1,n=e==null?0:e.length;for(this.clear();++ta))return!1;var u=o.get(e),c=o.get(t);if(u&&c)return u==t&&c==e;var f=-1,d=!0,p=n&Ug?new Ts:void 0;for(o.set(e,t),o.set(t,e);++fe===void 0,Eo=e=>typeof e=="boolean",Rn=e=>typeof e=="number",Kb=e=>!e&&e!==0||Q(e)&&e.length===0||ge(e)&&!Object.keys(e).length,p2=e=>typeof Element>"u"?!1:e instanceof Element,Gb=e=>ef(e),h2=e=>we(e)?!Number.isNaN(Number(e)):!1,Jb=e=>e===window,al=e=>Object.keys(e),Yb=e=>Object.entries(e),Qb=(e,t,n)=>({get value(){return Ju(e,t,n)},set value(r){d2(e,t,r)}}),m2="__epPropKey",nt=e=>e,g2=e=>ge(e)&&!!e.__epPropKey,tf=(e,t)=>{if(!ge(e)||g2(e))return e;const{values:n,required:r,default:s,type:o,validator:i}=e,a={type:o,required:!!r,validator:n||i?l=>{let u=!1,c=[];if(n&&(c=Array.from(n),me(e,"default")&&c.push(s),u||(u=c.includes(l))),i&&(u||(u=i(l))),!u&&c.length>0){const f=[...new Set(c)].map(d=>JSON.stringify(d)).join(", ");lh(`Invalid prop: validation failed${t?` for prop "${t}"`:""}. Expected one of [${f}], got value ${JSON.stringify(l)}.`)}return u}:void 0,[m2]:!0};return me(e,"default")&&(a.default=s),a},Kr=e=>Zu(Object.entries(e).map(([t,n])=>[t,tf(n,t)]));var nf=class extends Error{constructor(e){super(e),this.name="ElementPlusError"}};function Xb(e,t){throw new nf(`[${e}] ${t}`)}function sr(e,t){{const n=we(e)?new nf(`[${e}] ${t}`):e;console.warn(n)}}function Zb(e,t){var n;const r=ot();return Nc(()=>{r.value=e()},{...t,flush:(n=t==null?void 0:t.flush)!==null&&n!==void 0?n:"sync"}),hs(r)}function Li(e,t){return Us()?(ac(e,t),!0):!1}const So=new WeakMap,_2=(...e)=>{var t;const n=e[0],r=(t=We())===null||t===void 0?void 0:t.proxy,s=r??Us();if(s==null&&!_i())throw new Error("injectLocal must be called in setup");return s&&So.has(s)&&n in So.get(s)?So.get(s)[n]:De(...e)},Yt=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const v2=e=>typeof e<"u",y2=e=>e!=null,b2=Object.prototype.toString,w2=e=>b2.call(e)==="[object Object]",e4=(e,t,n)=>Math.min(n,Math.max(t,e)),Hn=()=>{};function E2(e,t){function n(...r){return new Promise((s,o)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(s).catch(o)})}return n}function S2(e,t={}){let n,r,s=Hn;const o=l=>{clearTimeout(l),s(),s=Hn};let i;return l=>{const u=it(e),c=it(t.maxWait);return n&&o(n),u<=0||c!==void 0&&c<=0?(r&&(o(r),r=void 0),Promise.resolve(l())):new Promise((f,d)=>{s=t.rejectOnCancel?d:f,i=l,c&&!r&&(r=setTimeout(()=>{n&&o(n),r=void 0,f(i())},c)),n=setTimeout(()=>{r&&o(r),r=void 0,f(l())},u)})}}function ll(e){return e.endsWith("rem")?Number.parseFloat(e)*16:Number.parseFloat(e)}function Cr(e){return Array.isArray(e)?e:[e]}function x2(e){return We()}function O2(e,t=200,n={}){return E2(S2(t,n),e)}function t4(e,t=200,n={}){const r=Ne(it(e)),s=O2(()=>{r.value=e.value},t,n);return at(e,()=>s()),xc(r)}function rf(e,t=!0,n){x2()?qr(e,n):t?e():rr(e)}function A2(e,t,n={}){const{immediate:r=!0,immediateCallback:s=!1}=n,o=ot(!1);let i;function a(){i&&(clearTimeout(i),i=void 0)}function l(){o.value=!1,a()}function u(...c){s&&e(),a(),o.value=!0,i=setTimeout(()=>{o.value=!1,i=void 0,e(...c)},it(t))}return r&&(o.value=!0,Yt&&u()),Li(l),{isPending:xc(o),start:u,stop:l}}function T2(e,t,n){return at(e,t,{...n,immediate:!0})}const un=Yt?window:void 0,C2=Yt?window.document:void 0;function gt(e){var t;const n=it(e);return(t=n==null?void 0:n.$el)!==null&&t!==void 0?t:n}function Nt(...e){const t=(r,s,o,i)=>(r.addEventListener(s,o,i),()=>r.removeEventListener(s,o,i)),n=Z(()=>{const r=Cr(it(e[0])).filter(s=>s!=null);return r.every(s=>typeof s!="string")?r:void 0});return T2(()=>{var r,s;return[(r=(s=n.value)===null||s===void 0?void 0:s.map(o=>gt(o)))!==null&&r!==void 0?r:[un].filter(o=>o!=null),Cr(it(n.value?e[1]:e[0])),Cr(ue(n.value?e[2]:e[1])),it(n.value?e[3]:e[2])]},([r,s,o,i],a,l)=>{if(!(r!=null&&r.length)||!(s!=null&&s.length)||!(o!=null&&o.length))return;const u=w2(i)?{...i}:i,c=r.flatMap(f=>s.flatMap(d=>o.map(p=>t(f,d,p,u))));l(()=>{c.forEach(f=>f())})},{flush:"post"})}function n4(e,t,n={}){const{window:r=un,ignore:s=[],capture:o=!0,detectIframe:i=!1,controls:a=!1}=n;if(!r)return a?{stop:Hn,cancel:Hn,trigger:Hn}:Hn;let l=!0;const u=v=>it(s).some(_=>{if(typeof _=="string")return Array.from(r.document.querySelectorAll(_)).some(b=>b===v.target||v.composedPath().includes(b));{const b=gt(_);return b&&(v.target===b||v.composedPath().includes(b))}});function c(v){const _=it(v);return _&&_.$.subTree.shapeFlag===16}function f(v,_){const b=it(v),x=b.$.subTree&&b.$.subTree.children;return x==null||!Array.isArray(x)?!1:x.some(T=>T.el===_.target||_.composedPath().includes(T.el))}const d=v=>{const _=gt(e);if(v.target!=null&&!(!(_ instanceof Element)&&c(e)&&f(e,v))&&!(!_||_===v.target||v.composedPath().includes(_))){if("detail"in v&&v.detail===0&&(l=!u(v)),!l){l=!0;return}t(v)}};let p=!1;const y=[Nt(r,"click",v=>{p||(p=!0,setTimeout(()=>{p=!1},0),d(v))},{passive:!0,capture:o}),Nt(r,"pointerdown",v=>{const _=gt(e);l=!u(v)&&!!(_&&!v.composedPath().includes(_))},{passive:!0}),i&&Nt(r,"blur",v=>{setTimeout(()=>{const _=gt(e);let b=r.document.activeElement;for(;b!=null&&b.shadowRoot;)b=b.shadowRoot.activeElement;(b==null?void 0:b.tagName)==="IFRAME"&&!(_!=null&&_.contains(r.document.activeElement))&&t(v)},0)},{passive:!0})].filter(Boolean),g=()=>y.forEach(v=>v());return a?{stop:g,cancel:()=>{l=!1},trigger:v=>{l=!0,d(v),l=!1}}:g}function R2(){const e=ot(!1),t=We();return t&&qr(()=>{e.value=!0},t),e}function Ii(e){const t=R2();return Z(()=>(t.value,!!e()))}function r4(e,t,n={}){const{window:r=un,...s}=n;let o;const i=Ii(()=>r&&"MutationObserver"in r),a=()=>{o&&(o.disconnect(),o=void 0)},l=at(Z(()=>{const f=Cr(it(e)).map(gt).filter(y2);return new Set(f)}),f=>{a(),i.value&&f.size&&(o=new MutationObserver(t),f.forEach(d=>o.observe(d,s)))},{immediate:!0,flush:"post"}),u=()=>o==null?void 0:o.takeRecords(),c=()=>{l(),a()};return Li(c),{isSupported:i,stop:c,takeRecords:u}}const P2=Symbol("vueuse-ssr-width");function L2(){const e=_i()?_2(P2,null):null;return typeof e=="number"?e:void 0}function I2(e,t={}){const{window:n=un,ssrWidth:r=L2()}=t,s=Ii(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function"),o=ot(typeof r=="number"),i=ot(),a=ot(!1),l=u=>{a.value=u.matches};return Nc(()=>{if(o.value){o.value=!s.value,a.value=it(e).split(",").some(u=>{const c=u.includes("not all"),f=u.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),d=u.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/);let p=!!(f||d);return f&&p&&(p=r>=ll(f[1])),d&&p&&(p=r<=ll(d[1])),c?!p:p});return}s.value&&(i.value=n.matchMedia(it(e)),a.value=i.value.matches)}),Nt(i,"change",l,{passive:!0}),Z(()=>a.value)}function N2(e){return JSON.parse(JSON.stringify(e))}function s4(e={}){const{document:t=C2}=e;if(!t)return ot("visible");const n=ot(t.visibilityState);return Nt(t,"visibilitychange",()=>{n.value=t.visibilityState},{passive:!0}),n}function sf(e,t,n={}){const{window:r=un,...s}=n;let o;const i=Ii(()=>r&&"ResizeObserver"in r),a=()=>{o&&(o.disconnect(),o=void 0)},l=at(Z(()=>{const c=it(e);return Array.isArray(c)?c.map(f=>gt(f)):[gt(c)]}),c=>{if(a(),i.value&&r){o=new ResizeObserver(t);for(const f of c)f&&o.observe(f,s)}},{immediate:!0,flush:"post"}),u=()=>{a(),l()};return Li(u),{isSupported:i,stop:u}}function o4(e,t={width:0,height:0},n={}){const{window:r=un,box:s="content-box"}=n,o=Z(()=>{var f;return(f=gt(e))===null||f===void 0||(f=f.namespaceURI)===null||f===void 0?void 0:f.includes("svg")}),i=ot(t.width),a=ot(t.height),{stop:l}=sf(e,([f])=>{const d=s==="border-box"?f.borderBoxSize:s==="content-box"?f.contentBoxSize:f.devicePixelContentBoxSize;if(r&&o.value){const p=gt(e);if(p){const y=p.getBoundingClientRect();i.value=y.width,a.value=y.height}}else if(d){const p=Cr(d);i.value=p.reduce((y,{inlineSize:g})=>y+g,0),a.value=p.reduce((y,{blockSize:g})=>y+g,0)}else i.value=f.contentRect.width,a.value=f.contentRect.height},n);rf(()=>{const f=gt(e);f&&(i.value="offsetWidth"in f?f.offsetWidth:t.width,a.value="offsetHeight"in f?f.offsetHeight:t.height)});const u=at(()=>gt(e),f=>{i.value=f?t.width:0,a.value=f?t.height:0});function c(){l(),u()}return{width:i,height:a,stop:c}}function i4(e,t,n,r={}){var s,o;const{clone:i=!1,passive:a=!1,eventName:l,deep:u=!1,defaultValue:c,shouldEmit:f}=r,d=We(),p=(d==null?void 0:d.emit)||(d==null||(s=d.$emit)===null||s===void 0?void 0:s.bind(d))||(d==null||(o=d.proxy)===null||o===void 0||(o=o.$emit)===null||o===void 0?void 0:o.bind(d==null?void 0:d.proxy));let y=l;y=y||`update:${t.toString()}`;const g=b=>i?typeof i=="function"?i(b):N2(b):b,v=()=>v2(e[t])?g(e[t]):c,_=b=>{f?f(b)&&p(y,b):p(y,b)};if(a){const b=Ne(v());let x=!1;return at(()=>e[t],T=>{x||(x=!0,b.value=g(T),rr(()=>x=!1))}),at(b,T=>{!x&&(T!==e[t]||u)&&_(T)},{deep:u}),b}else return Z({get(){return v()},set(b){_(b)}})}function a4(e={}){const{window:t=un}=e;if(!t)return ot(!1);const n=ot(t.document.hasFocus()),r={passive:!0};return Nt(t,"blur",()=>{n.value=!1},r),Nt(t,"focus",()=>{n.value=!0},r),n}function l4(e={}){const{window:t=un,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:r=Number.POSITIVE_INFINITY,listenOrientation:s=!0,includeScrollbar:o=!0,type:i="inner"}=e,a=ot(n),l=ot(r),u=()=>{if(t)if(i==="outer")a.value=t.outerWidth,l.value=t.outerHeight;else if(i==="visual"&&t.visualViewport){const{width:f,height:d,scale:p}=t.visualViewport;a.value=Math.round(f*p),l.value=Math.round(d*p)}else o?(a.value=t.innerWidth,l.value=t.innerHeight):(a.value=t.document.documentElement.clientWidth,l.value=t.document.documentElement.clientHeight)};u(),rf(u);const c={passive:!0};return Nt("resize",u,c),t&&i==="visual"&&t.visualViewport&&Nt(t.visualViewport,"resize",u,c),s&&at(I2("(orientation: portrait)"),()=>u()),{width:a,height:l}}const D2='a[href],button:not([disabled]),button:not([hidden]),:not([tabindex="-1"]),input:not([disabled]),input:not([type="hidden"]),select:not([disabled]),textarea:not([disabled])',M2=e=>typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot,cl=e=>typeof Element>"u"?!1:e instanceof Element,$2=e=>getComputedStyle(e).position==="fixed"?!1:e.offsetParent!==null,c4=e=>Array.from(e.querySelectorAll(D2)).filter(t=>of(t)&&$2(t)),of=e=>{if(e.tabIndex>0||e.tabIndex===0&&e.getAttribute("tabIndex")!==null)return!0;if(e.tabIndex<0||e.hasAttribute("disabled")||e.getAttribute("aria-disabled")==="true")return!1;switch(e.nodeName){case"A":return!!e.href&&e.rel!=="ignore";case"INPUT":return!(e.type==="hidden"||e.type==="file");case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},u4=function(e,t,...n){let r;t.includes("mouse")||t.includes("click")?r="MouseEvents":t.includes("key")?r="KeyboardEvent":r="HTMLEvents";const s=document.createEvent(r);return s.initEvent(t,...n),e.dispatchEvent(s),e};const f4=(e,t)=>{if(!e||!e.focus)return;let n=!1;cl(e)&&!of(e)&&!e.getAttribute("tabindex")&&(e.setAttribute("tabindex","-1"),n=!0),e.focus(t),cl(e)&&n&&e.removeAttribute("tabindex")};const d4=()=>Yt&&/firefox/i.test(window.navigator.userAgent),F2=()=>Yt&&/android/i.test(window.navigator.userAgent),B2="utils/dom/style",af=(e="")=>e.split(" ").filter(t=>!!t.trim()),p4=(e,t)=>{if(!e||!t)return!1;if(t.includes(" "))throw new Error("className should not contain space.");return e.classList.contains(t)},h4=(e,t)=>{!e||!t.trim()||e.classList.add(...af(t))},m4=(e,t)=>{!e||!t.trim()||e.classList.remove(...af(t))},g4=(e,t)=>{var r;if(!Yt||!e||!t||M2(e))return"";let n=qe(t);n==="float"&&(n="cssFloat");try{const s=e.style[n];if(s)return s;const o=(r=document.defaultView)==null?void 0:r.getComputedStyle(e,"");return o?o[n]:""}catch{return e.style[n]}};function Xo(e,t="px"){if(!e&&e!==0)return"";if(Rn(e)||h2(e))return`${e}${t}`;if(we(e))return e;sr(B2,"binding value must be a string or number")}var j2={name:"en",el:{breadcrumb:{label:"Breadcrumb"},colorpicker:{confirm:"OK",clear:"Clear",defaultLabel:"color picker",description:"current color is {color}. press enter to select a new color.",alphaLabel:"pick alpha value",alphaDescription:"alpha {alpha}, current color is {color}",hueLabel:"pick hue value",hueDescription:"hue {hue}, current color is {color}",svLabel:"pick saturation and brightness value",svDescription:"saturation {saturation}, brightness {brightness}, current color is {color}",predefineDescription:"select {value} as the color"},datepicker:{now:"Now",today:"Today",cancel:"Cancel",clear:"Clear",confirm:"OK",dateTablePrompt:"Use the arrow keys and enter to select the day of the month",monthTablePrompt:"Use the arrow keys and enter to select the month",yearTablePrompt:"Use the arrow keys and enter to select the year",selectedDate:"Selected date",selectDate:"Select date",selectTime:"Select time",startDate:"Start Date",startTime:"Start Time",endDate:"End Date",endTime:"End Time",prevYear:"Previous Year",nextYear:"Next Year",prevMonth:"Previous Month",nextMonth:"Next Month",year:"",month1:"January",month2:"February",month3:"March",month4:"April",month5:"May",month6:"June",month7:"July",month8:"August",month9:"September",month10:"October",month11:"November",month12:"December",weeks:{sun:"Sun",mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat"},weeksFull:{sun:"Sunday",mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday"},months:{jan:"Jan",feb:"Feb",mar:"Mar",apr:"Apr",may:"May",jun:"Jun",jul:"Jul",aug:"Aug",sep:"Sep",oct:"Oct",nov:"Nov",dec:"Dec"}},inputNumber:{decrease:"decrease number",increase:"increase number"},select:{loading:"Loading",noMatch:"No matching data",noData:"No data",placeholder:"Select"},mention:{loading:"Loading"},dropdown:{toggleDropdown:"Toggle Dropdown"},cascader:{noMatch:"No matching data",loading:"Loading",placeholder:"Select",noData:"No data"},pagination:{goto:"Go to",pagesize:"/page",total:"Total {total}",pageClassifier:"",page:"Page",prev:"Go to previous page",next:"Go to next page",currentPage:"page {pager}",prevPages:"Previous {pager} pages",nextPages:"Next {pager} pages",deprecationWarning:"Deprecated usages detected, please refer to the el-pagination documentation for more details"},dialog:{close:"Close this dialog"},drawer:{close:"Close this dialog"},messagebox:{title:"Message",confirm:"OK",cancel:"Cancel",error:"Illegal input",close:"Close this dialog"},upload:{deleteTip:"press delete to remove",delete:"Delete",preview:"Preview",continue:"Continue"},slider:{defaultLabel:"slider between {min} and {max}",defaultRangeStartLabel:"pick start value",defaultRangeEndLabel:"pick end value"},table:{emptyText:"No Data",confirmFilter:"Confirm",resetFilter:"Reset",clearFilter:"All",sumText:"Sum",selectAllLabel:"Select all rows",selectRowLabel:"Select this row",expandRowLabel:"Expand this row",collapseRowLabel:"Collapse this row",sortLabel:"Sort by {column}",filterLabel:"Filter by {column}"},tag:{close:"Close this tag"},tour:{next:"Next",previous:"Previous",finish:"Finish",close:"Close this dialog"},tree:{emptyText:"No Data"},transfer:{noMatch:"No matching data",noData:"No data",titles:["List 1","List 2"],filterPlaceholder:"Enter keyword",noCheckedFormat:"{total} items",hasCheckedFormat:"{checked}/{total} checked"},image:{error:"FAILED"},pageHeader:{title:"Back"},popconfirm:{confirmButtonText:"Yes",cancelButtonText:"No"},carousel:{leftArrow:"Carousel arrow left",rightArrow:"Carousel arrow right",indicator:"Carousel switch to index {index}"},inputOTP:{groupLabel:"OTP Input",defaultLabel:"Please enter OTP character {index}"}}};const U2=e=>(t,n)=>V2(t,n,ue(e)),V2=(e,t,n)=>Ju(n,e,e).replace(/\{(\w+)\}/g,(r,s)=>`${(t==null?void 0:t[s])??`{${s}}`}`),H2=e=>({lang:Z(()=>ue(e).name),locale:Re(e)?e:Ne(e),t:U2(e)}),lf=Symbol("localeContextKey"),k2=e=>{const t=e||De(lf,Ne());return H2(Z(()=>t.value||j2))},z2="is-",hn=(e,t,n,r,s)=>{let o=`${e}-${t}`;return n&&(o+=`-${n}`),r&&(o+=`__${r}`),s&&(o+=`--${s}`),o},cf=Symbol("namespaceContextKey"),q2=e=>{const t=e||(We()?De(cf,Ne("el")):Ne("el"));return Z(()=>ue(t)||"el")},Ni=(e,t)=>{const n=q2(t);return{namespace:n,b:(g="")=>hn(n.value,e,g,"",""),e:g=>g?hn(n.value,e,"",g,""):"",m:g=>g?hn(n.value,e,"","",g):"",be:(g,v)=>g&&v?hn(n.value,e,g,v,""):"",em:(g,v)=>g&&v?hn(n.value,e,"",g,v):"",bm:(g,v)=>g&&v?hn(n.value,e,g,"",v):"",bem:(g,v,_)=>g&&v&&_?hn(n.value,e,g,v,_):"",is:(g,...v)=>{const _=v.length>=1?v[0]:!0;return g&&_?`${z2}${g}`:""},cssVar:g=>{const v={};for(const _ in g)g[_]&&(v[`--${n.value}-${_}`]=g[_]);return v},cssVarName:g=>`--${n.value}-${g}`,cssVarBlock:g=>{const v={};for(const _ in g)g[_]&&(v[`--${n.value}-${e}-${_}`]=g[_]);return v},cssVarBlockName:g=>`--${n.value}-${e}-${g}`}},_4=(e,t,{checkForDefaultPrevented:n=!0}={})=>s=>{const o=e==null?void 0:e(s);if(n===!1||!o)return t==null?void 0:t(s)},v4=e=>t=>t.pointerType==="mouse"?e(t):void 0,W2=e=>{if(e.code&&e.code!=="Unidentified")return e.code;const t=K2(e);if(t){if(Object.values(Wo).includes(t))return t;switch(t){case" ":return Wo.space;default:return""}}return""},K2=e=>{let t=e.key&&e.key!=="Unidentified"?e.key:"";if(!t&&e.type==="keyup"&&F2()){const n=e.target;t=n.value.charAt(n.selectionStart-1)}return t},ul={current:0},fl=Ne(0),uf=2e3,dl=Symbol("elZIndexContextKey"),ff=Symbol("zIndexContextKey"),G2=e=>{const t=We()?De(dl,ul):ul,n=e||(We()?De(ff,void 0):void 0),r=Z(()=>{const i=ue(n);return Rn(i)?i:uf}),s=Z(()=>r.value+fl.value),o=()=>(t.current++,fl.value=t.current,s.value);return!Yt&&!De(dl)&&sr("ZIndexInjection",`Looks like you are using server rendering, you must provide a z-index provider to ensure the hydration process to be succeed +usage: app.provide(ZINDEX_INJECTION_KEY, { current: 0 })`),{initialZIndex:r,currentZIndex:s,nextZIndex:o}},J2=tf({type:String,values:t0,required:!1}),df=Symbol("size"),y4=()=>{const e=De(df,{});return Z(()=>ue(e.size)||"")},pf=Symbol("emptyValuesContextKey"),Y2="use-empty-values",Q2=["",void 0,null],X2=Kr({emptyValues:Array,valueOnClear:{type:nt([String,Number,Boolean,Function]),default:void 0,validator:e=>(e=oe(e)?e():e,Q(e)?e.every(t=>!t):!e)}}),b4=(e,t)=>{const n=We()?De(pf,Ne({})):Ne({}),r=Z(()=>e.emptyValues||n.value.emptyValues||Q2),s=Z(()=>oe(e.valueOnClear)?e.valueOnClear():e.valueOnClear!==void 0?e.valueOnClear:oe(n.value.valueOnClear)?n.value.valueOnClear():n.value.valueOnClear!==void 0?n.value.valueOnClear:t!==void 0?t:void 0),o=i=>{let a=!0;return Q(i)?a=r.value.some(l=>u2(i,l)):a=r.value.includes(i),a};return o(s.value)||sr(Y2,"value-on-clear should be a value of empty-values"),{emptyValues:r,valueOnClear:s,isEmptyValue:o}},hf=e=>{const t=e.props,n=Q(t)?Zu(t.map(r=>[r,{}])):t;e.setPropsDefaults=r=>{if(n){for(const[s,o]of Object.entries(r)){const i=n[s];if(me(n,s)){if(mg(i)){n[s]={...i,default:o};continue}n[s]={type:i,default:o}}}e.props=n}}},Di=(e,t)=>{if(e.install=n=>{for(const r of[e,...Object.values(t??{})])n.component(r.name,r)},t)for(const[n,r]of Object.entries(t))e[n]=r;return hf(e),e},Z2=(e,t)=>(e.install=n=>{e._context=n._context,n.config.globalProperties[t]=e},e),w4=(e,t)=>(e.install=n=>{n.directive(t,e)},e),E4=e=>(e.install=_t,hf(e),e);/*! Element Plus Icons Vue v2.3.2 */var e_=_e({name:"ArrowDown",__name:"arrow-down",setup(e){return(t,n)=>(fe(),Ee("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[he("path",{fill:"currentColor",d:"M831.872 340.864 512 652.672 192.128 340.864a30.59 30.59 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.59 30.59 0 0 0-42.752 0z"})]))}}),S4=e_,t_=_e({name:"ArrowLeft",__name:"arrow-left",setup(e){return(t,n)=>(fe(),Ee("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[he("path",{fill:"currentColor",d:"M609.408 149.376 277.76 489.6a32 32 0 0 0 0 44.672l331.648 340.352a29.12 29.12 0 0 0 41.728 0 30.59 30.59 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.59 30.59 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0"})]))}}),x4=t_,n_=_e({name:"ArrowRight",__name:"arrow-right",setup(e){return(t,n)=>(fe(),Ee("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[he("path",{fill:"currentColor",d:"M340.864 149.312a30.59 30.59 0 0 0 0 42.752L652.736 512 340.864 831.872a30.59 30.59 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z"})]))}}),O4=n_,r_=_e({name:"ArrowUp",__name:"arrow-up",setup(e){return(t,n)=>(fe(),Ee("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[he("path",{fill:"currentColor",d:"m488.832 344.32-339.84 356.672a32 32 0 0 0 0 44.16l.384.384a29.44 29.44 0 0 0 42.688 0l320-335.872 319.872 335.872a29.44 29.44 0 0 0 42.688 0l.384-.384a32 32 0 0 0 0-44.16L535.168 344.32a32 32 0 0 0-46.336 0"})]))}}),A4=r_;var s_=_e({name:"Calendar",__name:"calendar",setup(e){return(t,n)=>(fe(),Ee("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[he("path",{fill:"currentColor",d:"M128 384v512h768V192H768v32a32 32 0 1 1-64 0v-32H320v32a32 32 0 0 1-64 0v-32H128v128h768v64zm192-256h384V96a32 32 0 1 1 64 0v32h160a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h160V96a32 32 0 0 1 64 0zm-32 384h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64"})]))}}),T4=s_;var o_=_e({name:"Check",__name:"check",setup(e){return(t,n)=>(fe(),Ee("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[he("path",{fill:"currentColor",d:"M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z"})]))}}),C4=o_;var i_=_e({name:"CircleCheck",__name:"circle-check",setup(e){return(t,n)=>(fe(),Ee("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[he("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"}),he("path",{fill:"currentColor",d:"M745.344 361.344a32 32 0 0 1 45.312 45.312l-288 288a32 32 0 0 1-45.312 0l-160-160a32 32 0 1 1 45.312-45.312L480 626.752z"})]))}}),a_=i_,l_=_e({name:"CircleCloseFilled",__name:"circle-close-filled",setup(e){return(t,n)=>(fe(),Ee("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[he("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336z"})]))}}),mf=l_,c_=_e({name:"CircleClose",__name:"circle-close",setup(e){return(t,n)=>(fe(),Ee("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[he("path",{fill:"currentColor",d:"m466.752 512-90.496-90.496a32 32 0 0 1 45.248-45.248L512 466.752l90.496-90.496a32 32 0 1 1 45.248 45.248L557.248 512l90.496 90.496a32 32 0 1 1-45.248 45.248L512 557.248l-90.496 90.496a32 32 0 0 1-45.248-45.248z"}),he("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"})]))}}),u_=c_,f_=_e({name:"Clock",__name:"clock",setup(e){return(t,n)=>(fe(),Ee("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[he("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"}),he("path",{fill:"currentColor",d:"M480 256a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V288a32 32 0 0 1 32-32"}),he("path",{fill:"currentColor",d:"M480 512h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32"})]))}}),R4=f_,d_=_e({name:"Close",__name:"close",setup(e){return(t,n)=>(fe(),Ee("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[he("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"})]))}}),gf=d_,p_=_e({name:"DArrowLeft",__name:"d-arrow-left",setup(e){return(t,n)=>(fe(),Ee("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[he("path",{fill:"currentColor",d:"M529.408 149.376a29.12 29.12 0 0 1 41.728 0 30.59 30.59 0 0 1 0 42.688L259.264 511.936l311.872 319.936a30.59 30.59 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L197.76 534.272a32 32 0 0 1 0-44.672zm256 0a29.12 29.12 0 0 1 41.728 0 30.59 30.59 0 0 1 0 42.688L515.264 511.936l311.872 319.936a30.59 30.59 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L453.76 534.272a32 32 0 0 1 0-44.672z"})]))}}),P4=p_,h_=_e({name:"DArrowRight",__name:"d-arrow-right",setup(e){return(t,n)=>(fe(),Ee("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[he("path",{fill:"currentColor",d:"M452.864 149.312a29.12 29.12 0 0 1 41.728.064L826.24 489.664a32 32 0 0 1 0 44.672L494.592 874.624a29.12 29.12 0 0 1-41.728 0 30.59 30.59 0 0 1 0-42.752L764.736 512 452.864 192a30.59 30.59 0 0 1 0-42.688m-256 0a29.12 29.12 0 0 1 41.728.064L570.24 489.664a32 32 0 0 1 0 44.672L238.592 874.624a29.12 29.12 0 0 1-41.728 0 30.59 30.59 0 0 1 0-42.752L508.736 512 196.864 192a30.59 30.59 0 0 1 0-42.688"})]))}}),L4=h_,m_=_e({name:"Delete",__name:"delete",setup(e){return(t,n)=>(fe(),Ee("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[he("path",{fill:"currentColor",d:"M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32zm448-64v-64H416v64zM224 896h576V256H224zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32m192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32"})]))}}),I4=m_,g_=_e({name:"Document",__name:"document",setup(e){return(t,n)=>(fe(),Ee("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[he("path",{fill:"currentColor",d:"M832 384H576V128H192v768h640zm-26.496-64L640 154.496V320zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32m160 448h384v64H320zm0-192h160v64H320zm0 384h384v64H320z"})]))}}),N4=g_;var __=_e({name:"Hide",__name:"hide",setup(e){return(t,n)=>(fe(),Ee("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[he("path",{fill:"currentColor",d:"M876.8 156.8c0-9.6-3.2-16-9.6-22.4s-12.8-9.6-22.4-9.6-16 3.2-22.4 9.6L736 220.8c-64-32-137.6-51.2-224-60.8-160 16-288 73.6-377.6 176S0 496 0 512s48 73.6 134.4 176c22.4 25.6 44.8 48 73.6 67.2l-86.4 89.6c-6.4 6.4-9.6 12.8-9.6 22.4s3.2 16 9.6 22.4 12.8 9.6 22.4 9.6 16-3.2 22.4-9.6l704-710.4c3.2-6.4 6.4-12.8 6.4-22.4m-646.4 528Q115.2 579.2 76.8 512q43.2-72 153.6-172.8C304 272 400 230.4 512 224c64 3.2 124.8 19.2 176 44.8l-54.4 54.4C598.4 300.8 560 288 512 288c-64 0-115.2 22.4-160 64s-64 96-64 160c0 48 12.8 89.6 35.2 124.8L256 707.2c-9.6-6.4-19.2-16-25.6-22.4m140.8-96Q352 555.2 352 512c0-44.8 16-83.2 48-112s67.2-48 112-48c28.8 0 54.4 6.4 73.6 19.2zM889.599 336c-12.8-16-28.8-28.8-41.6-41.6l-48 48c73.6 67.2 124.8 124.8 150.4 169.6q-43.2 72-153.6 172.8c-73.6 67.2-172.8 108.8-284.8 115.2-51.2-3.2-99.2-12.8-140.8-28.8l-48 48c57.6 22.4 118.4 38.4 188.8 44.8 160-16 288-73.6 377.6-176S1024 528 1024 512s-48.001-73.6-134.401-176"}),he("path",{fill:"currentColor",d:"M511.998 672c-12.8 0-25.6-3.2-38.4-6.4l-51.2 51.2c28.8 12.8 57.6 19.2 89.6 19.2 64 0 115.2-22.4 160-64 41.6-41.6 64-96 64-160 0-32-6.4-64-19.2-89.6l-51.2 51.2c3.2 12.8 6.4 25.6 6.4 38.4 0 44.8-16 83.2-48 112s-67.2 48-112 48"})]))}}),D4=__,v_=_e({name:"InfoFilled",__name:"info-filled",setup(e){return(t,n)=>(fe(),Ee("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[he("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64m67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344M590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.99 12.99 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z"})]))}}),Zo=v_,y_=_e({name:"Loading",__name:"loading",setup(e){return(t,n)=>(fe(),Ee("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[he("path",{fill:"currentColor",d:"M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32m0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32m448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32m-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32M195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248m452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248M828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0m-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0"})]))}}),b_=y_,w_=_e({name:"Minus",__name:"minus",setup(e){return(t,n)=>(fe(),Ee("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[he("path",{fill:"currentColor",d:"M128 544h768a32 32 0 1 0 0-64H128a32 32 0 0 0 0 64"})]))}}),M4=w_,E_=_e({name:"MoreFilled",__name:"more-filled",setup(e){return(t,n)=>(fe(),Ee("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[he("path",{fill:"currentColor",d:"M176 416a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224"})]))}}),$4=E_,S_=_e({name:"More",__name:"more",setup(e){return(t,n)=>(fe(),Ee("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[he("path",{fill:"currentColor",d:"M176 416a112 112 0 1 0 0 224 112 112 0 0 0 0-224m0 64a48 48 0 1 1 0 96 48 48 0 0 1 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96"})]))}}),F4=S_;var x_=_e({name:"Plus",__name:"plus",setup(e){return(t,n)=>(fe(),Ee("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[he("path",{fill:"currentColor",d:"M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64z"})]))}}),B4=x_;var O_=_e({name:"SuccessFilled",__name:"success-filled",setup(e){return(t,n)=>(fe(),Ee("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[he("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.27 38.27 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"})]))}}),_f=O_,A_=_e({name:"View",__name:"view",setup(e){return(t,n)=>(fe(),Ee("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[he("path",{fill:"currentColor",d:"M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352m0 64c-225.28 0-384.128 208.064-436.8 288 52.608 79.872 211.456 288 436.8 288 225.28 0 384.128-208.064 436.8-288-52.608-79.872-211.456-288-436.8-288m0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448m0 64a160.19 160.19 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160"})]))}}),j4=A_,T_=_e({name:"WarningFilled",__name:"warning-filled",setup(e){return(t,n)=>(fe(),Ee("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[he("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 192a58.43 58.43 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.43 58.43 0 0 0 512 256m0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4"})]))}}),vf=T_,C_=_e({name:"ZoomIn",__name:"zoom-in",setup(e){return(t,n)=>(fe(),Ee("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[he("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704m-32-384v-96a32 32 0 0 1 64 0v96h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64z"})]))}}),U4=C_;const R_=nt([String,Object,Function]),V4={Close:gf},P_={Close:gf,SuccessFilled:_f,InfoFilled:Zo,WarningFilled:vf,CircleCloseFilled:mf},pl={primary:Zo,success:_f,warning:vf,error:mf,info:Zo},H4={validating:b_,success:a_,error:u_},L_=Kr({size:{type:nt([Number,String])},color:{type:String}});var I_=_e({name:"ElIcon",inheritAttrs:!1,__name:"icon",props:L_,setup(e){const t=e,n=Ni("icon"),r=Z(()=>{const{size:s,color:o}=t,i=Xo(s);return!i&&!o?{}:{fontSize:i,"--color":o}});return(s,o)=>(fe(),Ee("i",mu({class:ue(n).b(),style:r.value},s.$attrs),[Dr(s.$slots,"default")],16))}}),N_=I_;const hl=Di(N_),D_=e=>e,M_=Kr({value:{type:[String,Number],default:""},max:{type:Number,default:99},isDot:Boolean,hidden:Boolean,type:{type:String,values:["primary","success","warning","info","danger"],default:"danger"},showZero:{type:Boolean,default:!0},color:String,badgeStyle:{type:nt([String,Object,Array,Boolean]),default:void 0},offset:{type:nt(Array),default:()=>[0,0]},badgeClass:{type:String}});var $_=_e({name:"ElBadge",__name:"badge",props:M_,setup(e,{expose:t}){const n=e,r=Ni("badge"),s=Z(()=>n.isDot?"":Rn(n.value)&&Rn(n.max)?n.max[{backgroundColor:n.color,marginRight:Xo(-n.offset[0]),marginTop:Xo(n.offset[1])},n.badgeStyle??{}]);return t({content:s}),(i,a)=>(fe(),Ee("div",{class:mt(ue(r).b())},[Dr(i.$slots,"default"),Le(Eu,{name:`${ue(r).namespace.value}-zoom-in-center`},{default:Wn(()=>[!e.hidden&&(s.value||e.isDot||i.$slots.content)?(fe(),Ee("sup",{key:0,class:mt([ue(r).e("content"),ue(r).em("content",e.type),ue(r).is("fixed",!!i.$slots.default),ue(r).is("dot",e.isDot),ue(r).is("hide-zero",!e.showZero&&e.value===0),e.badgeClass]),style:nr(o.value)},[Dr(i.$slots,"content",{value:s.value},()=>[Oi(fi(s.value),1)])],6)):Vn("v-if",!0)]),_:3},8,["name"])],2))}}),F_=$_;const B_=Di(F_),yf=Symbol(),Cs=Ne();function bf(e,t=void 0){const n=We()?De(yf,Cs):Cs;return e?Z(()=>{var r;return((r=n.value)==null?void 0:r[e])??t}):n}function j_(e,t){const n=bf(),r=Ni(e,Z(()=>{var a;return((a=n.value)==null?void 0:a.namespace)||"el"})),s=k2(Z(()=>{var a;return(a=n.value)==null?void 0:a.locale})),o=G2(Z(()=>{var l;const a=(l=n.value)==null?void 0:l.zIndex;return ef(a)||Number.isNaN(a)?uf:a})),i=Z(()=>{var a;return ue(t)||((a=n.value)==null?void 0:a.size)||""});return wf(Z(()=>ue(n)||{})),{ns:r,locale:s,zIndex:o,size:i}}const wf=(e,t,n=!1)=>{const r=!!We(),s=r?bf():void 0,o=r?Er:void 0;if(!o){sr("provideGlobalConfig","provideGlobalConfig() can only be used inside setup().");return}const i=Z(()=>{const a=ue(e);return s!=null&&s.value?U_(s.value,a):a});return o(yf,i),o(lf,Z(()=>i.value.locale)),o(cf,Z(()=>i.value.namespace)),o(ff,Z(()=>i.value.zIndex)),o(df,{size:Z(()=>i.value.size||"")}),o(pf,Z(()=>({emptyValues:i.value.emptyValues,valueOnClear:i.value.valueOnClear}))),(n||!Cs.value)&&(Cs.value=i.value),i},U_=(e,t)=>{const n=[...new Set([...al(e),...al(t)])],r={};for(const s of n)r[s]=t[s]!==void 0?t[s]:e[s];return r},V_=Kr({a11y:{type:Boolean,default:!0},locale:{type:nt(Object)},size:J2,button:{type:nt(Object)},card:{type:nt(Object)},dialog:{type:nt(Object)},link:{type:nt(Object)},experimentalFeatures:{type:nt(Object)},keyboardNavigation:{type:Boolean,default:!0},message:{type:nt(Object)},zIndex:Number,namespace:{type:String,default:"el"},table:{type:nt(Object)},...X2}),Je={placement:"top"},H_=_e({name:"ElConfigProvider",props:V_,setup(e,{slots:t}){const n=wf(e);return at(()=>e.message,r=>{var s;Object.assign(Je,((s=n==null?void 0:n.value)==null?void 0:s.message)??{},r??{})},{immediate:!0,deep:!0}),()=>Dr(t,"default",{config:n==null?void 0:n.value})}}),k_=Di(H_);function z_(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var cs={exports:{}},q_=cs.exports,ml;function W_(){return ml||(ml=1,(function(e,t){(function(n,r){e.exports=r()})(q_,(function(){var n=1e3,r=6e4,s=36e5,o="millisecond",i="second",a="minute",l="hour",u="day",c="week",f="month",d="quarter",p="year",y="date",g="Invalid Date",v=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,_=/\[([^\]]+)]|YYYY|YY|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,b={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(B){var M=["th","st","nd","rd"],R=B%100;return"["+B+(M[(R-20)%10]||M[R]||M[0])+"]"}},x=function(B,M,R){var I=String(B);return!I||I.length>=M?B:""+Array(M+1-I.length).join(R)+B},T={s:x,z:function(B){var M=-B.utcOffset(),R=Math.abs(M),I=Math.floor(R/60),N=R%60;return(M<=0?"+":"-")+x(I,2,"0")+":"+x(N,2,"0")},m:function B(M,R){if(M.date()1)return B(X[0])}else{var ne=M.name;J[ne]=M,N=ne}return!I&&N&&(D=N),N||!I&&D},k=function(B,M){if(Y(B))return B.clone();var R=typeof M=="object"?M:{};return R.date=B,R.args=arguments,new F(R)},H=T;H.l=L,H.i=Y,H.w=function(B,M){return k(B,{locale:M.$L,utc:M.$u,x:M.$x,$offset:M.$offset})};var F=(function(){function B(R){this.$L=L(R.locale,null,!0),this.parse(R),this.$x=this.$x||R.x||{},this[W]=!0}var M=B.prototype;return M.parse=function(R){this.$d=(function(I){var N=I.date,re=I.utc;if(N===null)return new Date(NaN);if(H.u(N))return new Date;if(N instanceof Date)return new Date(N);if(typeof N=="string"&&!/Z$/i.test(N)){var X=N.match(v);if(X){var ne=X[2]-1||0,ce=(X[7]||"0").substring(0,3);return re?new Date(Date.UTC(X[1],ne,X[3]||1,X[4]||0,X[5]||0,X[6]||0,ce)):new Date(X[1],ne,X[3]||1,X[4]||0,X[5]||0,X[6]||0,ce)}}return new Date(N)})(R),this.init()},M.init=function(){var R=this.$d;this.$y=R.getFullYear(),this.$M=R.getMonth(),this.$D=R.getDate(),this.$W=R.getDay(),this.$H=R.getHours(),this.$m=R.getMinutes(),this.$s=R.getSeconds(),this.$ms=R.getMilliseconds()},M.$utils=function(){return H},M.isValid=function(){return this.$d.toString()!==g},M.isSame=function(R,I){var N=k(R);return this.startOf(I)<=N&&N<=this.endOf(I)},M.isAfter=function(R,I){return k(R)!0},bt=zs({}),Y_=e=>(bt[e]||(bt[e]=zs([])),bt[e]),Q_=(e,t)=>{const n=bt[t]||[],r=n.findIndex(i=>i.id===e),s=n[r];let o;return r>0&&(o=n[r-1]),{current:s,prev:o}},X_=(e,t)=>{const{prev:n}=Q_(e,t);return n?n.vm.exposed.bottom.value:0},Z_=(e,t,n)=>(bt[n]||[]).findIndex(r=>r.id===e)>0?16:t,e1=["id"],t1=["innerHTML"];var n1=_e({name:"ElMessage",__name:"message",props:G_,emits:J_,setup(e,{expose:t,emit:n}){const{Close:r}=P_,s=e,o=n,i=Ne(!1),{ns:a,zIndex:l}=j_("message"),{currentZIndex:u,nextZIndex:c}=l,f=Ne(),d=Ne(!1),p=Ne(0);let y;const g=Z(()=>s.type?s.type==="error"?"danger":s.type:"info"),v=Z(()=>{const te=s.type;return{[a.bm("icon",te)]:te&&pl[te]}}),_=Z(()=>s.icon||pl[s.type]||""),b=Z(()=>s.placement||"top"),x=Z(()=>X_(s.id,b.value)),T=Z(()=>Math.max(Z_(s.id,s.offset,b.value)+x.value,s.offset)),D=Z(()=>p.value+T.value),J=Z(()=>b.value.includes("left")?a.is("left"):b.value.includes("right")?a.is("right"):a.is("center")),W=Z(()=>b.value.startsWith("top")?"top":"bottom"),Y=Z(()=>({[W.value]:`${T.value}px`,zIndex:u.value}));function L(){s.duration!==0&&({stop:y}=A2(()=>{H()},s.duration))}function k(){y==null||y()}function H(){d.value=!1,rr(()=>{var te;i.value||((te=s.onClose)==null||te.call(s),o("destroy"))})}function F(te){W2(te)===Wo.esc&&H()}return qr(()=>{L(),c(),d.value=!0}),at(()=>s.repeatNum,()=>{k(),L()}),Nt(document,"keydown",F),sf(f,()=>{p.value=f.value.getBoundingClientRect().height}),t({visible:d,bottom:D,close:H}),(te,B)=>(fe(),Ht(Eu,{name:ue(a).b("fade"),onBeforeEnter:B[0]||(B[0]=M=>i.value=!0),onBeforeLeave:e.onClose,onAfterLeave:B[1]||(B[1]=M=>te.$emit("destroy")),persisted:""},{default:Wn(()=>[sp(he("div",{id:e.id,ref_key:"messageRef",ref:f,class:mt([ue(a).b(),{[ue(a).m(e.type)]:e.type},ue(a).is("closable",e.showClose),ue(a).is("plain",e.plain),ue(a).is("bottom",W.value==="bottom"),J.value,e.customClass]),style:nr(Y.value),role:"alert",onMouseenter:k,onMouseleave:L},[e.repeatNum>1?(fe(),Ht(ue(B_),{key:0,value:e.repeatNum,type:g.value,class:mt(ue(a).e("badge"))},null,8,["value","type","class"])):Vn("v-if",!0),_.value?(fe(),Ht(ue(hl),{key:1,class:mt([ue(a).e("icon"),v.value])},{default:Wn(()=>[(fe(),Ht(xp(_.value)))]),_:1},8,["class"])):Vn("v-if",!0),!e.dangerouslyUseHTMLString||te.$slots.default?(fe(),Ee("p",{key:2,class:mt(ue(a).e("content"))},[Dr(te.$slots,"default",{},()=>[Oi(fi(e.message),1)])],2)):(fe(),Ee(st,{key:3},[Vn(" Caution here, message could've been compromised, never use user's input as message "),he("p",{class:mt(ue(a).e("content")),innerHTML:e.message},null,10,t1)],2112)),e.showClose?(fe(),Ht(ue(hl),{key:4,class:mt(ue(a).e("closeBtn")),onClick:Hh(H,["stop"])},{default:Wn(()=>[Le(ue(r))]),_:1},8,["class"])):Vn("v-if",!0)],46,e1),[[gh,d.value]])]),_:3},8,["name","onBeforeLeave"]))}}),r1=n1;let s1=1;const o1=e=>{if(!e.appendTo)e.appendTo=document.body;else if(we(e.appendTo)){let t=document.querySelector(e.appendTo);p2(t)||(sr("ElMessage","the appendTo option is not an HTMLElement. Falling back to document.body."),t=document.body),e.appendTo=t}},i1=e=>{!e.placement&&we(Je.placement)&&Je.placement&&(e.placement=Je.placement),e.placement||(e.placement="top"),Sf.includes(e.placement)||(sr("ElMessage",`Invalid placement: ${e.placement}. Falling back to 'top'.`),e.placement="top")},xf=e=>{const t=!e||we(e)||On(e)||oe(e)?{message:e}:e,n={...Ge,...t};return o1(n),i1(n),Eo(Je.grouping)&&!n.grouping&&(n.grouping=Je.grouping),Rn(Je.duration)&&n.duration===3e3&&(n.duration=Je.duration),Rn(Je.offset)&&n.offset===16&&(n.offset=Je.offset),Eo(Je.showClose)&&!n.showClose&&(n.showClose=Je.showClose),Eo(Je.plain)&&!n.plain&&(n.plain=Je.plain),n},a1=e=>{const t=bt[e.props.placement||"top"],n=t.indexOf(e);if(n===-1)return;t.splice(n,1);const{handler:r}=e;r.close()},l1=({appendTo:e,...t},n)=>{const r=`message_${s1++}`,s=t.onClose,o=document.createElement("div"),i={...t,id:r,onClose:()=>{s==null||s(),a1(u)},onDestroy:()=>{$a(null,o)}},a=Le(r1,i,oe(i.message)||On(i.message)?{default:oe(i.message)?i.message:()=>i.message}:null);a.appContext=n||Pn._context,$a(a,o),e.appendChild(o.firstElementChild);const l=a.component,u={id:r,vnode:a,vm:l,handler:{close:()=>{l.exposed.close()}},props:a.component.props};return u},Pn=(e={},t)=>{if(!Yt)return{close:()=>{}};const n=xf(e),r=Y_(n.placement||"top");if(n.grouping&&r.length){const o=r.find(({vnode:i})=>{var a;return((a=i.props)==null?void 0:a.message)===n.message});if(o)return o.props.repeatNum+=1,o.props.type=n.type,o.handler}if(Rn(Je.max)&&r.length>=Je.max)return{close:()=>{}};const s=l1(n,t);return r.push(s),s.handler};Ef.forEach(e=>{Pn[e]=(t={},n)=>Pn({...xf(t),type:e},n)});function c1(e){for(const t in bt)if(me(bt,t)){const n=[...bt[t]];for(const r of n)(!e||e===r.props.type)&&r.handler.close()}}function u1(e){bt[e]&&[...bt[e]].forEach(t=>t.handler.close())}Pn.closeAll=c1;Pn.closeAllByPlacement=u1;Pn._context=null;const gl=Z2(Pn,"$message");var f1={name:"zh-cn",el:{breadcrumb:{label:"面包屑"},colorpicker:{confirm:"确定",clear:"清空",defaultLabel:"颜色选择器",description:"当前颜色 {color},按 Enter 键选择新颜色",alphaLabel:"选择透明度的值",alphaDescription:"透明度 {alpha}, 当前颜色 {color}",hueLabel:"选择色相值",hueDescription:"色相 {hue}, 当前颜色 {color}",svLabel:"选择饱和度与明度的值",svDescription:"饱和度 {saturation}, 明度 {brightness}, 当前颜色 {color}",predefineDescription:"选择 {value} 作为颜色"},datepicker:{now:"此刻",today:"今天",cancel:"取消",clear:"清空",confirm:"确定",dateTablePrompt:"使用方向键与 Enter 键可选择日期",monthTablePrompt:"使用方向键与 Enter 键可选择月份",yearTablePrompt:"使用方向键与 Enter 键可选择年份",selectedDate:"已选日期",selectDate:"选择日期",selectTime:"选择时间",startDate:"开始日期",startTime:"开始时间",endDate:"结束日期",endTime:"结束时间",prevYear:"前一年",nextYear:"后一年",prevMonth:"上个月",nextMonth:"下个月",year:"年",month1:"1 月",month2:"2 月",month3:"3 月",month4:"4 月",month5:"5 月",month6:"6 月",month7:"7 月",month8:"8 月",month9:"9 月",month10:"10 月",month11:"11 月",month12:"12 月",weeks:{sun:"日",mon:"一",tue:"二",wed:"三",thu:"四",fri:"五",sat:"六"},weeksFull:{sun:"星期日",mon:"星期一",tue:"星期二",wed:"星期三",thu:"星期四",fri:"星期五",sat:"星期六"},months:{jan:"一月",feb:"二月",mar:"三月",apr:"四月",may:"五月",jun:"六月",jul:"七月",aug:"八月",sep:"九月",oct:"十月",nov:"十一月",dec:"十二月"}},inputNumber:{decrease:"减少数值",increase:"增加数值"},select:{loading:"加载中",noMatch:"无匹配数据",noData:"无数据",placeholder:"请选择"},mention:{loading:"加载中"},dropdown:{toggleDropdown:"切换下拉选项"},cascader:{noMatch:"无匹配数据",loading:"加载中",placeholder:"请选择",noData:"暂无数据"},pagination:{goto:"前往",pagesize:"条/页",total:"共 {total} 条",pageClassifier:"页",page:"页",prev:"上一页",next:"下一页",currentPage:"第 {pager} 页",prevPages:"向前 {pager} 页",nextPages:"向后 {pager} 页",deprecationWarning:"你使用了一些已被废弃的用法,请参考 el-pagination 的官方文档"},dialog:{close:"关闭此对话框"},drawer:{close:"关闭此对话框"},messagebox:{title:"提示",confirm:"确定",cancel:"取消",error:"输入的数据不合法!",close:"关闭此对话框"},upload:{deleteTip:"按 Delete 键可删除",delete:"删除",preview:"查看图片",continue:"继续上传"},slider:{defaultLabel:"滑块介于 {min} 至 {max}",defaultRangeStartLabel:"选择起始值",defaultRangeEndLabel:"选择结束值"},table:{emptyText:"暂无数据",confirmFilter:"筛选",resetFilter:"重置",clearFilter:"全部",sumText:"合计",selectAllLabel:"选择所有行",selectRowLabel:"选择当前行",expandRowLabel:"展开当前行",collapseRowLabel:"收起当前行",sortLabel:"按 {column} 排序",filterLabel:"按 {column} 过滤"},tag:{close:"关闭此标签"},tour:{next:"下一步",previous:"上一步",finish:"结束导览",close:"关闭此对话框"},tree:{emptyText:"暂无数据"},transfer:{noMatch:"无匹配数据",noData:"无数据",titles:["列表 1","列表 2"],filterPlaceholder:"请输入搜索内容",noCheckedFormat:"共 {total} 项",hasCheckedFormat:"已选 {checked}/{total} 项"},image:{error:"加载失败"},pageHeader:{title:"返回"},popconfirm:{confirmButtonText:"确定",cancelButtonText:"取消"},carousel:{leftArrow:"上一张幻灯片",rightArrow:"下一张幻灯片",indicator:"幻灯片切换至索引 {index}"},inputOTP:{groupLabel:"一次性密码输入框",defaultLabel:"请输入第 {index} 位 OTP 字符"}}};const d1=_e({__name:"App",setup(e){return(t,n)=>{const r=Sp("router-view"),s=k_;return fe(),Ht(s,{locale:ue(f1)},{default:Wn(()=>[Le(r)]),_:1},8,["locale"])}}});function Of(e,t){return function(){return e.apply(t,arguments)}}const{toString:p1}=Object.prototype,{getPrototypeOf:Xn}=Object,{iterator:Gr,toStringTag:Af}=Symbol,Rs=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),Br=(e,t)=>{let n=e;const r=[];for(;n!=null&&n!==Object.prototype;){if(r.indexOf(n)!==-1)return!1;if(r.push(n),Rs(n,t))return!0;n=Xn(n)}return!1},h1=(e,t)=>e!=null&&Br(e,t)?e[t]:void 0,Mi=(e=>t=>{const n=p1.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),St=e=>(e=e.toLowerCase(),t=>Mi(t)===e),no=e=>t=>typeof t===e,{isArray:Ln}=Array,Zn=no("undefined");function or(e){return e!==null&&!Zn(e)&&e.constructor!==null&&!Zn(e.constructor)&<(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const Tf=St("ArrayBuffer");function m1(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&Tf(e.buffer),t}const g1=no("string"),lt=no("function"),Cf=no("number"),ir=e=>e!==null&&typeof e=="object",_1=e=>e===!0||e===!1,us=e=>{if(!ir(e))return!1;const t=Xn(e);return(t===null||t===Object.prototype||Xn(t)===null)&&!Br(e,Af)&&!Br(e,Gr)},v1=e=>{if(!ir(e)||or(e))return!1;try{return Object.keys(e).length===0&&Object.getPrototypeOf(e)===Object.prototype}catch{return!1}},y1=St("Date"),b1=St("File"),w1=e=>!!(e&&typeof e.uri<"u"),E1=e=>e&&typeof e.getParts<"u",S1=St("Blob"),x1=St("FileList"),O1=e=>ir(e)&<(e.pipe);function A1(){return typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}}const _l=A1(),vl=typeof _l.FormData<"u"?_l.FormData:void 0,T1=e=>{if(!e)return!1;if(vl&&e instanceof vl)return!0;const t=Xn(e);if(!t||t===Object.prototype||!lt(e.append))return!1;const n=Mi(e);return n==="formdata"||n==="object"&<(e.toString)&&e.toString()==="[object FormData]"},C1=St("URLSearchParams"),[R1,P1,L1,I1]=["ReadableStream","Request","Response","Headers"].map(St),N1=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Jr(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let r,s;if(typeof e!="object"&&(e=[e]),Ln(e))for(r=0,s=e.length;r0;)if(s=n[r],t===s.toLowerCase())return s;return null}const vn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,Pf=e=>!Zn(e)&&e!==vn;function ei(...e){const{caseless:t,skipUndefined:n}=Pf(this)&&this||{},r={},s=(o,i)=>{if(i==="__proto__"||i==="constructor"||i==="prototype")return;const a=t&&typeof i=="string"&&Rf(r,i)||i,l=Rs(r,a)?r[a]:void 0;us(l)&&us(o)?r[a]=ei(l,o):us(o)?r[a]=ei({},o):Ln(o)?r[a]=o.slice():(!n||!Zn(o))&&(r[a]=o)};for(let o=0,i=e.length;o(Jr(t,(s,o)=>{n&<(s)?Object.defineProperty(e,o,{__proto__:null,value:Of(s,n),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(e,o,{__proto__:null,value:s,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:r}),e),M1=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),$1=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),Object.defineProperty(e.prototype,"constructor",{__proto__:null,value:e,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(e,"super",{__proto__:null,value:t.prototype}),n&&Object.assign(e.prototype,n)},F1=(e,t,n,r)=>{let s,o,i;const a={};if(t=t||{},e==null)return t;do{for(s=Object.getOwnPropertyNames(e),o=s.length;o-- >0;)i=s[o],(!r||r(i,e,t))&&!a[i]&&(t[i]=e[i],a[i]=!0);e=n!==!1&&Xn(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},B1=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return r!==-1&&r===n},j1=e=>{if(!e)return null;if(Ln(e))return e;let t=e.length;if(!Cf(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},U1=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&Xn(Uint8Array)),V1=(e,t)=>{const r=(e&&e[Gr]).call(e);let s;for(;(s=r.next())&&!s.done;){const o=s.value;t.call(e,o[0],o[1])}},H1=(e,t)=>{let n;const r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},k1=St("HTMLFormElement"),z1=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,s){return r.toUpperCase()+s}),{propertyIsEnumerable:q1}=Object.prototype,W1=St("RegExp"),Lf=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};Jr(n,(s,o)=>{let i;(i=t(s,o,e))!==!1&&(r[o]=i||s)}),Object.defineProperties(e,r)},K1=e=>{Lf(e,(t,n)=>{if(lt(e)&&["arguments","caller","callee"].includes(n))return!1;const r=e[n];if(lt(r)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},G1=(e,t)=>{const n={},r=s=>{s.forEach(o=>{n[o]=!0})};return Ln(e)?r(e):r(String(e).split(t)),n},J1=()=>{},Y1=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t;function Q1(e){return!!(e&<(e.append)&&e[Af]==="FormData"&&e[Gr])}const X1=e=>{const t=new WeakSet,n=r=>{if(ir(r)){if(t.has(r))return;if(or(r))return r;if(!("toJSON"in r)){t.add(r);const s=Ln(r)?[]:{};return Jr(r,(o,i)=>{const a=n(o);!Zn(a)&&(s[i]=a)}),t.delete(r),s}}return r};return n(e)},Z1=St("AsyncFunction"),ev=e=>e&&(ir(e)||lt(e))&<(e.then)&<(e.catch),If=((e,t)=>e?setImmediate:t?((n,r)=>(vn.addEventListener("message",({source:s,data:o})=>{s===vn&&o===n&&r.length&&r.shift()()},!1),s=>{r.push(s),vn.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",lt(vn.postMessage)),tv=typeof queueMicrotask<"u"?queueMicrotask.bind(vn):typeof process<"u"&&process.nextTick||If,Nf=e=>e!=null&<(e[Gr]),nv=e=>e!=null&&Br(e,Gr)&&Nf(e),w={isArray:Ln,isArrayBuffer:Tf,isBuffer:or,isFormData:T1,isArrayBufferView:m1,isString:g1,isNumber:Cf,isBoolean:_1,isObject:ir,isPlainObject:us,isEmptyObject:v1,isReadableStream:R1,isRequest:P1,isResponse:L1,isHeaders:I1,isUndefined:Zn,isDate:y1,isFile:b1,isReactNativeBlob:w1,isReactNative:E1,isBlob:S1,isRegExp:W1,isFunction:lt,isStream:O1,isURLSearchParams:C1,isTypedArray:U1,isFileList:x1,forEach:Jr,merge:ei,extend:D1,trim:N1,stripBOM:M1,inherits:$1,toFlatObject:F1,kindOf:Mi,kindOfTest:St,endsWith:B1,toArray:j1,forEachEntry:V1,matchAll:H1,isHTMLForm:k1,hasOwnProperty:Rs,hasOwnProp:Rs,hasOwnInPrototypeChain:Br,getSafeProp:h1,reduceDescriptors:Lf,freezeMethods:K1,toObjectSet:G1,toCamelCase:z1,noop:J1,toFiniteNumber:Y1,findKey:Rf,global:vn,isContextDefined:Pf,isSpecCompliantForm:Q1,toJSONObject:X1,isAsyncFn:Z1,isThenable:ev,setImmediate:If,asap:tv,isIterable:Nf,isSafeIterable:nv},rv=w.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),sv=e=>{const t={};let n,r,s;return e&&e.split(` +`).forEach(function(i){s=i.indexOf(":"),n=i.substring(0,s).trim().toLowerCase(),r=i.substring(s+1).trim(),!(!n||t[n]&&rv[n])&&(n==="set-cookie"?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t};function ov(e){let t=0,n=e.length;for(;tt;){const r=e.charCodeAt(n-1);if(r!==9&&r!==32)break;n-=1}return t===0&&n===e.length?e:e.slice(t,n)}const iv=new RegExp("[\\u0000-\\u0008\\u000a-\\u001f\\u007f]+","g"),av=new RegExp("[^\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+","g");function $i(e,t){return w.isArray(e)?e.map(n=>$i(n,t)):ov(String(e).replace(t,""))}const lv=e=>$i(e,iv),cv=e=>$i(e,av);function Df(e){const t=Object.create(null);return w.forEach(e.toJSON(),(n,r)=>{t[r]=cv(n)}),t}const yl=Symbol("internals");function hr(e){return e&&String(e).trim().toLowerCase()}function fs(e){return e===!1||e==null?e:w.isArray(e)?e.map(fs):lv(String(e))}function uv(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}const fv=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function xo(e,t,n,r,s){if(w.isFunction(r))return r.call(this,t,n);if(s&&(t=n),!!w.isString(t)){if(w.isString(r))return t.indexOf(r)!==-1;if(w.isRegExp(r))return r.test(t)}}function dv(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,r)=>n.toUpperCase()+r)}function pv(e,t){const n=w.toCamelCase(" "+t);["get","set","has"].forEach(r=>{Object.defineProperty(e,r+n,{__proto__:null,value:function(s,o,i){return this[r].call(this,t,s,o,i)},configurable:!0})})}let Xe=class{constructor(t){t&&this.set(t)}set(t,n,r){const s=this;function o(a,l,u){const c=hr(l);if(!c)return;const f=w.findKey(s,c);(!f||s[f]===void 0||u===!0||u===void 0&&s[f]!==!1)&&(s[f||l]=fs(a))}const i=(a,l)=>w.forEach(a,(u,c)=>o(u,c,l));if(w.isPlainObject(t)||t instanceof this.constructor)i(t,n);else if(w.isString(t)&&(t=t.trim())&&!fv(t))i(sv(t),n);else if(w.isObject(t)&&w.isSafeIterable(t)){let a=Object.create(null),l,u;for(const c of t){if(!w.isArray(c))throw new TypeError("Object iterator must return a key-value pair");u=c[0],w.hasOwnProp(a,u)?(l=a[u],a[u]=w.isArray(l)?[...l,c[1]]:[l,c[1]]):a[u]=c[1]}i(a,n)}else t!=null&&o(n,t,r);return this}get(t,n){if(t=hr(t),t){const r=w.findKey(this,t);if(r){const s=this[r];if(!n)return s;if(n===!0)return uv(s);if(w.isFunction(n))return n.call(this,s,r);if(w.isRegExp(n))return n.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=hr(t),t){const r=w.findKey(this,t);return!!(r&&this[r]!==void 0&&(!n||xo(this,this[r],r,n)))}return!1}delete(t,n){const r=this;let s=!1;function o(i){if(i=hr(i),i){const a=w.findKey(r,i);a&&(!n||xo(r,r[a],a,n))&&(delete r[a],s=!0)}}return w.isArray(t)?t.forEach(o):o(t),s}clear(t){const n=Object.keys(this);let r=n.length,s=!1;for(;r--;){const o=n[r];(!t||xo(this,this[o],o,t,!0))&&(delete this[o],s=!0)}return s}normalize(t){const n=this,r={};return w.forEach(this,(s,o)=>{const i=w.findKey(r,o);if(i){n[i]=fs(s),delete n[o];return}const a=t?dv(o):String(o).trim();a!==o&&delete n[o],n[a]=fs(s),r[a]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return w.forEach(this,(r,s)=>{r!=null&&r!==!1&&(n[s]=t&&w.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(` +`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const r=new this(t);return n.forEach(s=>r.set(s)),r}static accessor(t){const r=(this[yl]=this[yl]={accessors:{}}).accessors,s=this.prototype;function o(i){const a=hr(i);r[a]||(pv(s,i),r[a]=!0)}return w.isArray(t)?t.forEach(o):o(t),this}};Xe.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);w.reduceDescriptors(Xe.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(r){this[n]=r}}});w.freezeMethods(Xe);const hv="[REDACTED ****]";function mv(e){if(w.hasOwnProp(e,"toJSON"))return!0;let t=Object.getPrototypeOf(e);for(;t&&t!==Object.prototype;){if(w.hasOwnProp(t,"toJSON"))return!0;t=Object.getPrototypeOf(t)}return!1}function gv(e,t){const n=new Set(t.map(o=>String(o).toLowerCase())),r=[],s=o=>{if(o===null||typeof o!="object"||w.isBuffer(o))return o;if(r.indexOf(o)!==-1)return;o instanceof Xe&&(o=o.toJSON()),r.push(o);let i;if(w.isArray(o))i=[],o.forEach((a,l)=>{const u=s(a);w.isUndefined(u)||(i[l]=u)});else{if(!w.isPlainObject(o)&&mv(o))return r.pop(),o;i=Object.create(null);for(const[a,l]of Object.entries(o)){const u=n.has(a.toLowerCase())?hv:s(l);w.isUndefined(u)||(i[a]=u)}}return r.pop(),i};return s(e)}let q=class Mf extends Error{static from(t,n,r,s,o,i){const a=new Mf(t.message,n||t.code,r,s,o);return Object.defineProperty(a,"cause",{__proto__:null,value:t,writable:!0,enumerable:!1,configurable:!0}),a.name=t.name,t.status!=null&&a.status==null&&(a.status=t.status),i&&Object.assign(a,i),a}constructor(t,n,r,s,o){super(t),Object.defineProperty(this,"message",{__proto__:null,value:t,enumerable:!0,writable:!0,configurable:!0}),this.name="AxiosError",this.isAxiosError=!0,n&&(this.code=n),r&&(this.config=r),s&&(this.request=s),o&&(this.response=o,this.status=o.status)}toJSON(){const t=this.config,n=t&&w.hasOwnProp(t,"redact")?t.redact:void 0,r=w.isArray(n)&&n.length>0?gv(t,n):w.toJSONObject(t);return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:r,code:this.code,status:this.status}}};q.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE";q.ERR_BAD_OPTION="ERR_BAD_OPTION";q.ECONNABORTED="ECONNABORTED";q.ETIMEDOUT="ETIMEDOUT";q.ECONNREFUSED="ECONNREFUSED";q.ERR_NETWORK="ERR_NETWORK";q.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS";q.ERR_DEPRECATED="ERR_DEPRECATED";q.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE";q.ERR_BAD_REQUEST="ERR_BAD_REQUEST";q.ERR_CANCELED="ERR_CANCELED";q.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT";q.ERR_INVALID_URL="ERR_INVALID_URL";q.ERR_FORM_DATA_DEPTH_EXCEEDED="ERR_FORM_DATA_DEPTH_EXCEEDED";const _v=null,$f=100;function ti(e){return w.isPlainObject(e)||w.isArray(e)}function Ff(e){return w.endsWith(e,"[]")?e.slice(0,-2):e}function Oo(e,t,n){return e?e.concat(t).map(function(s,o){return s=Ff(s),!n&&o?"["+s+"]":s}).join(n?".":""):t}function vv(e){return w.isArray(e)&&!e.some(ti)}const yv=w.toFlatObject(w,{},null,function(t){return/^is[A-Z]/.test(t)});function ro(e,t,n){if(!w.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=w.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(b,x){return!w.isUndefined(x[b])});const r=n.metaTokens,s=n.visitor||y,o=n.dots,i=n.indexes,a=n.Blob||typeof Blob<"u"&&Blob,l=n.maxDepth===void 0?$f:n.maxDepth,u=a&&w.isSpecCompliantForm(t),c=[];if(!w.isFunction(s))throw new TypeError("visitor must be a function");function f(_){if(_===null)return"";if(w.isDate(_))return _.toISOString();if(w.isBoolean(_))return _.toString();if(!u&&w.isBlob(_))throw new q("Blob is not supported. Use a Buffer instead.");if(w.isArrayBuffer(_)||w.isTypedArray(_)){if(u&&typeof a=="function")return new a([_]);if(typeof Buffer<"u")return Buffer.from(_);throw new q("Blob is not supported. Use a Buffer instead.",q.ERR_NOT_SUPPORT)}return _}function d(_){if(_>l)throw new q("Object is too deeply nested ("+_+" levels). Max depth: "+l,q.ERR_FORM_DATA_DEPTH_EXCEEDED)}function p(_,b){if(l===1/0)return JSON.stringify(_);const x=[];return JSON.stringify(_,function(D,J){if(!w.isObject(J))return J;for(;x.length&&x[x.length-1]!==this;)x.pop();return x.push(J),d(b+x.length-1),J})}function y(_,b,x){let T=_;if(w.isReactNative(t)&&w.isReactNativeBlob(_))return t.append(Oo(x,b,o),f(_)),!1;if(_&&!x&&typeof _=="object"){if(w.endsWith(b,"{}"))b=r?b:b.slice(0,-2),_=p(_,1);else if(w.isArray(_)&&vv(_)||(w.isFileList(_)||w.endsWith(b,"[]"))&&(T=w.toArray(_)))return b=Ff(b),T.forEach(function(J,W){!(w.isUndefined(J)||J===null)&&t.append(i===!0?Oo([b],W,o):i===null?b:b+"[]",f(J))}),!1}return ti(_)?!0:(t.append(Oo(x,b,o),f(_)),!1)}const g=Object.assign(yv,{defaultVisitor:y,convertValue:f,isVisitable:ti});function v(_,b,x=0){if(!w.isUndefined(_)){if(d(x),c.indexOf(_)!==-1)throw new Error("Circular reference detected in "+b.join("."));c.push(_),w.forEach(_,function(D,J){(!(w.isUndefined(D)||D===null)&&s.call(t,D,w.isString(J)?J.trim():J,b,g))===!0&&v(D,b?b.concat(J):[J],x+1)}),c.pop()}}if(!w.isObject(e))throw new TypeError("data must be an object");return v(e),t}function bl(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"};return encodeURIComponent(e).replace(/[!'()~]|%20/g,function(r){return t[r]})}function Fi(e,t){this._pairs=[],e&&ro(e,this,t)}const Bf=Fi.prototype;Bf.append=function(t,n){this._pairs.push([t,n])};Bf.toString=function(t){const n=t?r=>t.call(this,r,bl):bl;return this._pairs.map(function(s){return n(s[0])+"="+n(s[1])},"").join("&")};function bv(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function jf(e,t,n){if(!t)return e;e=e||"";const r=w.isFunction(n)?{serialize:n}:n,s=w.getSafeProp(r,"encode")||bv,o=w.getSafeProp(r,"serialize");let i;if(o?i=o(t,r):i=w.isURLSearchParams(t)?t.toString():new Fi(t,r).toString(s),i){const a=e.indexOf("#");a!==-1&&(e=e.slice(0,a)),e+=(e.indexOf("?")===-1?"?":"&")+i}return e}class wl{constructor(){this.handlers=[]}use(t,n,r){return this.handlers.push({fulfilled:t,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){w.forEach(this.handlers,function(r){r!==null&&t(r)})}}const Bi={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0,advertiseZstdAcceptEncoding:!1,validateStatusUndefinedResolves:!0},wv=typeof URLSearchParams<"u"?URLSearchParams:Fi,Ev=typeof FormData<"u"?FormData:null,Sv=typeof Blob<"u"?Blob:null,xv={isBrowser:!0,classes:{URLSearchParams:wv,FormData:Ev,Blob:Sv},protocols:["http","https","file","blob","url","data"]},ji=typeof window<"u"&&typeof document<"u",ni=typeof navigator=="object"&&navigator||void 0,Ov=ji&&(!ni||["ReactNative","NativeScript","NS"].indexOf(ni.product)<0),Av=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",Tv=ji&&window.location.href||"http://localhost",Cv=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:ji,hasStandardBrowserEnv:Ov,hasStandardBrowserWebWorkerEnv:Av,navigator:ni,origin:Tv},Symbol.toStringTag,{value:"Module"})),ke={...Cv,...xv};function Rv(e,t){return ro(e,new ke.classes.URLSearchParams,{visitor:function(n,r,s,o){return ke.isNode&&w.isBuffer(n)?(this.append(r,n.toString("base64")),!1):o.defaultVisitor.apply(this,arguments)},...t})}const El=$f;function Uf(e){if(e>El)throw new q("FormData field is too deeply nested ("+e+" levels). Max depth: "+El,q.ERR_FORM_DATA_DEPTH_EXCEEDED)}function Pv(e){const t=[],n=/\w+|\[(\w*)]/g;let r;for(;(r=n.exec(e))!==null;)Uf(t.length),t.push(r[0]==="[]"?"":r[1]||r[0]);return t}function Lv(e){const t={},n=Object.keys(e);let r;const s=n.length;let o;for(r=0;r=n.length;return i=!i&&w.isArray(s)?s.length:i,l?(w.hasOwnProp(s,i)?s[i]=w.isArray(s[i])?s[i].concat(r):[s[i],r]:s[i]=r,!a):((!w.hasOwnProp(s,i)||!w.isObject(s[i]))&&(s[i]=[]),t(n,r,s[i],o)&&w.isArray(s[i])&&(s[i]=Lv(s[i])),!a)}if(w.isFormData(e)&&w.isFunction(e.entries)){const n={};return w.forEachEntry(e,(r,s)=>{t(Pv(r),s,n,0)}),n}return null}const Bn=(e,t)=>e!=null&&w.hasOwnProp(e,t)?e[t]:void 0;function Iv(e,t,n){if(w.isString(e))try{return(t||JSON.parse)(e),w.trim(e)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(e)}const Yr={transitional:Bi,adapter:["xhr","http","fetch"],transformRequest:[function(t,n){const r=n.getContentType()||"",s=r.indexOf("application/json")>-1,o=w.isObject(t);if(o&&w.isHTMLForm(t)&&(t=new FormData(t)),w.isFormData(t))return s?JSON.stringify(Vf(t)):t;if(w.isArrayBuffer(t)||w.isBuffer(t)||w.isStream(t)||w.isFile(t)||w.isBlob(t)||w.isReadableStream(t))return t;if(w.isArrayBufferView(t))return t.buffer;if(w.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let a;if(o){const l=Bn(this,"formSerializer");if(r.indexOf("application/x-www-form-urlencoded")>-1)return Rv(t,l).toString();if((a=w.isFileList(t))||r.indexOf("multipart/form-data")>-1){const u=Bn(this,"env"),c=u&&u.FormData;return ro(a?{"files[]":t}:t,c&&new c,l)}}return o||s?(n.setContentType("application/json",!1),Iv(t)):t}],transformResponse:[function(t){const n=Bn(this,"transitional")||Yr.transitional,r=n&&n.forcedJSONParsing,s=Bn(this,"responseType"),o=s==="json";if(w.isResponse(t)||w.isReadableStream(t))return t;if(t&&w.isString(t)&&(r&&!s||o)){const a=!(n&&n.silentJSONParsing)&&o;try{return JSON.parse(t,Bn(this,"parseReviver"))}catch(l){if(a)throw l.name==="SyntaxError"?q.from(l,q.ERR_BAD_RESPONSE,this,null,Bn(this,"response")):l}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:ke.classes.FormData,Blob:ke.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};w.forEach(["delete","get","head","post","put","patch","query"],e=>{Yr.headers[e]={}});function Ao(e,t){const n=this||Yr,r=t||n,s=Xe.from(r.headers);let o=r.data;return w.forEach(e,function(a){o=a.call(n,o,s.normalize(),t?t.status:void 0)}),s.normalize(),o}function Hf(e){return!!(e&&e.__CANCEL__)}let Qr=class extends q{constructor(t,n,r){super(t??"canceled",q.ERR_CANCELED,n,r),this.name="CanceledError",this.__CANCEL__=!0}};function kf(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new q("Request failed with status code "+n.status,n.status>=400&&n.status<500?q.ERR_BAD_REQUEST:q.ERR_BAD_RESPONSE,n.config,n.request,n))}function Nv(e){const t=/^([-+\w]{1,25}):(?:\/\/)?/.exec(e);return t&&t[1]||""}function Dv(e,t){e=e||10;const n=new Array(e),r=new Array(e);let s=0,o=0,i;return t=t!==void 0?t:1e3,function(l){const u=Date.now(),c=r[o];i||(i=u),n[s]=l,r[s]=u;let f=o,d=0;for(;f!==s;)d+=n[f++],f=f%e;if(s=(s+1)%e,s===o&&(o=(o+1)%e),u-i{n=c,s=null,o&&(clearTimeout(o),o=null),e(...u)};return[(...u)=>{const c=Date.now(),f=c-n;f>=r?i(u,c):(s=u,o||(o=setTimeout(()=>{o=null,i(s)},r-f)))},()=>s&&i(s)]}const Ps=(e,t,n=3)=>{let r=0;const s=Dv(50,250);return Mv(o=>{if(!o||typeof o.loaded!="number")return;const i=o.loaded,a=o.lengthComputable?o.total:void 0,l=a!=null?Math.min(i,a):i,u=Math.max(0,l-r),c=s(u);r=Math.max(r,l);const f={loaded:l,total:a,progress:a?l/a:void 0,bytes:u,rate:c||void 0,estimated:c&&a?(a-l)/c:void 0,event:o,lengthComputable:a!=null,[t?"download":"upload"]:!0};e(f)},n)},Sl=(e,t)=>{const n=e!=null;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},xl=e=>(...t)=>w.asap(()=>e(...t)),$v=ke.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,ke.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(ke.origin),ke.navigator&&/(msie|trident)/i.test(ke.navigator.userAgent)):()=>!0,Fv=ke.hasStandardBrowserEnv?{write(e,t,n,r,s,o,i){if(typeof document>"u")return;const a=[`${e}=${encodeURIComponent(t)}`];w.isNumber(n)&&a.push(`expires=${new Date(n).toUTCString()}`),w.isString(r)&&a.push(`path=${r}`),w.isString(s)&&a.push(`domain=${s}`),o===!0&&a.push("secure"),w.isString(i)&&a.push(`SameSite=${i}`),document.cookie=a.join("; ")},read(e){if(typeof document>"u")return null;const t=document.cookie.split(";");for(let n=0;ne instanceof Xe?{...e}:e;function In(e,t){e=e||{},t=t||{};const n=Object.create(null);Object.defineProperty(n,"hasOwnProperty",{__proto__:null,value:Object.prototype.hasOwnProperty,enumerable:!1,writable:!0,configurable:!0});function r(c,f,d,p){return w.isPlainObject(c)&&w.isPlainObject(f)?w.merge.call({caseless:p},c,f):w.isPlainObject(f)?w.merge({},f):w.isArray(f)?f.slice():f}function s(c,f,d,p){if(w.isUndefined(f)){if(!w.isUndefined(c))return r(void 0,c,d,p)}else return r(c,f,d,p)}function o(c,f){if(!w.isUndefined(f))return r(void 0,f)}function i(c,f){if(w.isUndefined(f)){if(!w.isUndefined(c))return r(void 0,c)}else return r(void 0,f)}function a(c){const f=w.hasOwnProp(t,"transitional")?t.transitional:void 0;if(!w.isUndefined(f))if(w.isPlainObject(f)){if(w.hasOwnProp(f,c))return f[c]}else return;const d=w.hasOwnProp(e,"transitional")?e.transitional:void 0;if(w.isPlainObject(d)&&w.hasOwnProp(d,c))return d[c]}function l(c,f,d){if(w.hasOwnProp(t,d))return r(c,f);if(w.hasOwnProp(e,d))return r(void 0,c)}const u={url:o,method:o,data:o,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,allowedSocketPaths:i,responseEncoding:i,validateStatus:l,headers:(c,f,d)=>s(Al(c),Al(f),d,!0)};return w.forEach(Object.keys({...e,...t}),function(f){if(f==="__proto__"||f==="constructor"||f==="prototype")return;const d=w.hasOwnProp(u,f)?u[f]:s,p=w.hasOwnProp(e,f)?e[f]:void 0,y=w.hasOwnProp(t,f)?t[f]:void 0,g=d(p,y,f);w.isUndefined(g)&&d!==l||(n[f]=g)}),w.hasOwnProp(t,"validateStatus")&&w.isUndefined(t.validateStatus)&&a("validateStatusUndefinedResolves")===!1&&(w.hasOwnProp(e,"validateStatus")?n.validateStatus=r(void 0,e.validateStatus):delete n.validateStatus),n}const zv=["content-type","content-length"];function qv(e,t,n){if(n!=="content-only"){e.set(t);return}Object.entries(t||{}).forEach(([r,s])=>{zv.includes(r.toLowerCase())&&e.set(r,s)})}const Wv=e=>encodeURIComponent(e).replace(/%([0-9A-F]{2})/gi,(t,n)=>String.fromCharCode(parseInt(n,16)));function qf(e){const t=In({},e),n=d=>w.hasOwnProp(t,d)?t[d]:void 0,r=n("data");let s=n("withXSRFToken");const o=n("xsrfHeaderName"),i=n("xsrfCookieName");let a=n("headers");const l=n("auth"),u=n("baseURL"),c=n("allowAbsoluteUrls"),f=n("url");if(t.headers=a=Xe.from(a),t.url=jf(zf(u,f,c,t),n("params"),n("paramsSerializer")),l){const d=w.getSafeProp(l,"username")||"",p=w.getSafeProp(l,"password")||"";try{a.set("Authorization","Basic "+btoa(d+":"+(p?Wv(p):"")))}catch(y){throw q.from(y,q.ERR_BAD_OPTION_VALUE,e)}}if(w.isFormData(r)&&(ke.hasStandardBrowserEnv||ke.hasStandardBrowserWebWorkerEnv||w.isReactNative(r)?a.setContentType(void 0):w.isFunction(r.getHeaders)&&qv(a,r.getHeaders(),n("formDataHeaderPolicy"))),ke.hasStandardBrowserEnv&&(w.isFunction(s)&&(s=s(t)),s===!0||s==null&&$v(t.url))){const p=o&&i&&Fv.read(i);p&&a.set(o,p)}return t}const Kv=typeof XMLHttpRequest<"u",Gv=Kv&&function(e){return new Promise(function(n,r){const s=qf(e);let o=s.data;const i=Xe.from(s.headers).normalize();let{responseType:a,onUploadProgress:l,onDownloadProgress:u}=s,c,f,d,p,y;function g(){p&&p(),y&&y(),s.cancelToken&&s.cancelToken.unsubscribe(c),s.signal&&s.signal.removeEventListener("abort",c)}let v=new XMLHttpRequest;v.open(s.method.toUpperCase(),s.url,!0),v.timeout=s.timeout;function _(){if(!v)return;const x=Xe.from("getAllResponseHeaders"in v&&v.getAllResponseHeaders()),D={data:!a||a==="text"||a==="json"?v.responseText:v.response,status:v.status,statusText:v.statusText,headers:x,config:e,request:v};kf(function(W){n(W),g()},function(W){r(W),g()},D),v=null}"onloadend"in v?v.onloadend=_:v.onreadystatechange=function(){!v||v.readyState!==4||v.status===0&&!(v.responseURL&&v.responseURL.startsWith("file:"))||setTimeout(_)},v.onabort=function(){v&&(r(new q("Request aborted",q.ECONNABORTED,e,v)),g(),v=null)},v.onerror=function(T){const D=T&&T.message?T.message:"Network Error",J=new q(D,q.ERR_NETWORK,e,v);J.event=T||null,r(J),g(),v=null},v.ontimeout=function(){let T=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const D=s.transitional||Bi;s.timeoutErrorMessage&&(T=s.timeoutErrorMessage),r(new q(T,D.clarifyTimeoutError?q.ETIMEDOUT:q.ECONNABORTED,e,v)),g(),v=null},o===void 0&&i.setContentType(null),"setRequestHeader"in v&&w.forEach(Df(i),function(T,D){v.setRequestHeader(D,T)}),w.isUndefined(s.withCredentials)||(v.withCredentials=!!s.withCredentials),a&&a!=="json"&&(v.responseType=s.responseType),u&&([d,y]=Ps(u,!0),v.addEventListener("progress",d)),l&&v.upload&&([f,p]=Ps(l),v.upload.addEventListener("progress",f),v.upload.addEventListener("loadend",p)),(s.cancelToken||s.signal)&&(c=x=>{v&&(r(!x||x.type?new Qr(null,e,v):x),v.abort(),g(),v=null)},s.cancelToken&&s.cancelToken.subscribe(c),s.signal&&(s.signal.aborted?c():s.signal.addEventListener("abort",c)));const b=Nv(s.url);if(b&&!ke.protocols.includes(b)){r(new q("Unsupported protocol "+b+":",q.ERR_BAD_REQUEST,e)),g();return}v.send(o||null)})},Jv=(e,t)=>{if(e=e?e.filter(Boolean):[],!t&&!e.length)return;const n=new AbortController;let r=!1;const s=function(l){if(!r){r=!0,i();const u=l instanceof Error?l:this.reason;n.abort(u instanceof q?u:new Qr(u instanceof Error?u.message:u))}};let o=t&&setTimeout(()=>{o=null,s(new q(`timeout of ${t}ms exceeded`,q.ETIMEDOUT))},t);const i=()=>{e&&(o&&clearTimeout(o),o=null,e.forEach(l=>{l.unsubscribe?l.unsubscribe(s):l.removeEventListener("abort",s)}),e=null)};e.forEach(l=>l.addEventListener("abort",s,{once:!0}));const{signal:a}=n;return a.unsubscribe=()=>w.asap(i),a},Yv=function*(e,t){let n=e.byteLength;if(n{const s=Qv(e,t);let o=0,i,a=l=>{i||(i=!0,r&&r(l))};return new ReadableStream({async pull(l){try{const{done:u,value:c}=await s.next();if(u){a(),l.close();return}let f=c.byteLength;if(n){let d=o+=f;n(d)}l.enqueue(new Uint8Array(c))}catch(u){throw a(u),u}},cancel(l){return a(l),s.return()}},{highWaterMark:2})},Ls=e=>e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102,Zv=(e,t,n)=>t+2p>=2&&r.charCodeAt(p-2)===37&&r.charCodeAt(p-1)===51&&(r.charCodeAt(p)===68||r.charCodeAt(p)===100);u>=0&&(r.charCodeAt(u)===61?(l++,u--):c(u)&&(l++,u-=3)),l===1&&u>=0&&(r.charCodeAt(u)===61||c(u))&&l++;const d=Math.floor(i/4)*3-(l||0);return d>0?d:0}let o=0;for(let i=0,a=r.length;i=55296&&l<=56319&&i+1=56320&&u<=57343?(o+=4,i++):o+=3}else o+=3}return o}const Ui="1.18.1",Cl=64*1024,{isFunction:ss}=w,ty=e=>encodeURIComponent(e).replace(/%([0-9A-F]{2})/gi,(t,n)=>String.fromCharCode(parseInt(n,16))),Rl=e=>{if(!w.isString(e))return e;try{return decodeURIComponent(e)}catch{return e}},Pl=(e,...t)=>{try{return!!e(...t)}catch{return!1}},ny=e=>{const t=e.indexOf("://");let n=e;return t!==-1&&(n=n.slice(t+3)),n.includes("@")||n.includes(":")},ry=e=>{const t=w.global!==void 0&&w.global!==null?w.global:globalThis,{ReadableStream:n,TextEncoder:r}=t;e=w.merge.call({skipUndefined:!0},{Request:t.Request,Response:t.Response},e);const{fetch:s,Request:o,Response:i}=e,a=s?ss(s):typeof fetch=="function",l=ss(o),u=ss(i);if(!a)return!1;const c=a&&ss(n),f=a&&(typeof r=="function"?(_=>b=>_.encode(b))(new r):async _=>new Uint8Array(await new o(_).arrayBuffer())),d=l&&c&&Pl(()=>{let _=!1;const b=new o(ke.origin,{body:new n,method:"POST",get duplex(){return _=!0,"half"}}),x=b.headers.has("Content-Type");return b.body!=null&&b.body.cancel(),_&&!x}),p=u&&c&&Pl(()=>w.isReadableStream(new i("").body)),y={stream:p&&(_=>_.body)};a&&["text","arrayBuffer","blob","formData","stream"].forEach(_=>{!y[_]&&(y[_]=(b,x)=>{let T=b&&b[_];if(T)return T.call(b);throw new q(`Response type '${_}' is not supported`,q.ERR_NOT_SUPPORT,x)})});const g=async _=>{if(_==null)return 0;if(w.isBlob(_))return _.size;if(w.isSpecCompliantForm(_))return(await new o(ke.origin,{method:"POST",body:_}).arrayBuffer()).byteLength;if(w.isArrayBufferView(_)||w.isArrayBuffer(_))return _.byteLength;if(w.isURLSearchParams(_)&&(_=_+""),w.isString(_))return(await f(_)).byteLength},v=async(_,b)=>{const x=w.toFiniteNumber(_.getContentLength());return x??g(b)};return async _=>{let{url:b,method:x,data:T,signal:D,cancelToken:J,timeout:W,onDownloadProgress:Y,onUploadProgress:L,responseType:k,headers:H,withCredentials:F="same-origin",fetchOptions:te,maxContentLength:B,maxBodyLength:M}=qf(_);const R=w.isNumber(B)&&B>-1,I=w.isNumber(M)&&M>-1,N=ie=>w.hasOwnProp(_,ie)?_[ie]:void 0;let re=s||fetch;k=k?(k+"").toLowerCase():"text";let X=Jv([D,J&&J.toAbortSignal()],W),ne=null;const ce=X&&X.unsubscribe&&(()=>{X.unsubscribe()});let ye,xe=null;const Pe=()=>new q("Request body larger than maxBodyLength limit",q.ERR_BAD_REQUEST,_,ne);try{let ie;const O=N("auth");if(O){const S=w.getSafeProp(O,"username")||"",A=w.getSafeProp(O,"password")||"";ie={username:S,password:A}}if(ny(b)){const S=new URL(b,ke.origin);if(!ie&&(S.username||S.password)){const A=Rl(S.username),U=Rl(S.password);ie={username:A,password:U}}(S.username||S.password)&&(S.username="",S.password="",b=S.href)}if(ie&&(H.delete("authorization"),H.set("Authorization","Basic "+btoa(ty((ie.username||"")+":"+(ie.password||""))))),R&&typeof b=="string"&&b.startsWith("data:")&&ey(b)>B)throw new q("maxContentLength size of "+B+" exceeded",q.ERR_BAD_RESPONSE,_,ne);if(I&&x!=="get"&&x!=="head"){const S=await g(T);if(typeof S=="number"&&isFinite(S)&&(ye=S,S>M))throw Pe()}const z=I&&(w.isReadableStream(T)||w.isStream(T)),V=(S,A,U)=>Tl(S,Cl,$=>{if(I&&$>M)throw xe=Pe();A&&A($)},U);if(d&&x!=="get"&&x!=="head"&&(L||z)){if(ye=ye??await v(H,T),ye!==0||z){let S=new o(b,{method:"POST",body:T,duplex:"half"}),A;if(w.isFormData(T)&&(A=S.headers.get("content-type"))&&H.setContentType(A),S.body){const[U,$]=L&&Sl(ye,Ps(xl(L)))||[];T=V(S.body,U,$)}}}else if(z&&!l&&c&&x!=="get"&&x!=="head")T=V(T);else if(z&&l&&!d&&x!=="get"&&x!=="head")throw new q("Stream request bodies are not supported by the current fetch implementation",q.ERR_NOT_SUPPORT,_,ne);w.isString(F)||(F=F?"include":"omit");const K=l&&"credentials"in o.prototype;if(w.isFormData(T)){const S=H.getContentType();S&&/^multipart\/form-data/i.test(S)&&!/boundary=/i.test(S)&&H.delete("content-type")}H.set("User-Agent","axios/"+Ui,!1);const ae={...te,signal:X,method:x.toUpperCase(),headers:Df(H.normalize()),body:T,duplex:"half",credentials:K?F:void 0};ne=l&&new o(b,ae);let h=await(l?re(ne,te):re(b,ae));const m=Xe.from(h.headers);if(R){const S=w.toFiniteNumber(m.getContentLength());if(S!=null&&S>B)throw new q("maxContentLength size of "+B+" exceeded",q.ERR_BAD_RESPONSE,_,ne)}const E=p&&(k==="stream"||k==="response");if(p&&h.body&&(Y||R||E&&ce)){const S={};["status","statusText","headers"].forEach(ee=>{S[ee]=h[ee]});const A=w.toFiniteNumber(m.getContentLength()),[U,$]=Y&&Sl(A,Ps(xl(Y),!0))||[];let j=0;const P=ee=>{if(R&&(j=ee,j>B))throw new q("maxContentLength size of "+B+" exceeded",q.ERR_BAD_RESPONSE,_,ne);U&&U(ee)};h=new i(Tl(h.body,Cl,P,()=>{$&&$(),ce&&ce()}),S)}k=k||"text";let C=await y[w.findKey(y,k)||"text"](h,_);if(R&&!p&&!E){let S;if(C!=null&&(typeof C.byteLength=="number"?S=C.byteLength:typeof C.size=="number"?S=C.size:typeof C=="string"&&(S=typeof r=="function"?new r().encode(C).byteLength:C.length)),typeof S=="number"&&S>B)throw new q("maxContentLength size of "+B+" exceeded",q.ERR_BAD_RESPONSE,_,ne)}return!E&&ce&&ce(),await new Promise((S,A)=>{kf(S,A,{data:C,headers:Xe.from(h.headers),status:h.status,statusText:h.statusText,config:_,request:ne})})}catch(ie){if(ce&&ce(),X&&X.aborted&&X.reason instanceof q){const O=X.reason;throw O.config=_,ne&&(O.request=ne),ie!==O&&Object.defineProperty(O,"cause",{__proto__:null,value:ie,writable:!0,enumerable:!1,configurable:!0}),O}if(xe)throw ne&&!xe.request&&(xe.request=ne),xe;if(ie instanceof q)throw ne&&!ie.request&&(ie.request=ne),ie;if(ie&&ie.name==="TypeError"&&/Load failed|fetch/i.test(ie.message)){const O=new q("Network Error",q.ERR_NETWORK,_,ne,ie&&ie.response);throw Object.defineProperty(O,"cause",{__proto__:null,value:ie.cause||ie,writable:!0,enumerable:!1,configurable:!0}),O}throw q.from(ie,ie&&ie.code,_,ne,ie&&ie.response)}}},sy=new Map,Wf=e=>{let t=e&&e.env||{};const{fetch:n,Request:r,Response:s}=t,o=[r,s,n];let i=o.length,a=i,l,u,c=sy;for(;a--;)l=o[a],u=c.get(l),u===void 0&&c.set(l,u=a?new Map:ry(t)),c=u;return u};Wf();const Vi={http:_v,xhr:Gv,fetch:{get:Wf}};w.forEach(Vi,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{__proto__:null,value:t})}catch{}Object.defineProperty(e,"adapterName",{__proto__:null,value:t})}});const Ll=e=>`- ${e}`,oy=e=>w.isFunction(e)||e===null||e===!1;function iy(e,t){e=w.isArray(e)?e:[e];const{length:n}=e;let r,s;const o={};for(let i=0;i`adapter ${l} `+(u===!1?"is not supported by the environment":"is not available in the build"));let a=n?i.length>1?`since : +`+i.map(Ll).join(` +`):" "+Ll(i[0]):"as no adapter specified";throw new q("There is no suitable adapter to dispatch the request "+a,q.ERR_NOT_SUPPORT)}return s}const Kf={getAdapter:iy,adapters:Vi};function To(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Qr(null,e)}function Il(e){return To(e),e.headers=Xe.from(e.headers),e.data=Ao.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Kf.getAdapter(e.adapter||Yr.adapter,e)(e).then(function(r){To(e),e.response=r;try{r.data=Ao.call(e,e.transformResponse,r)}finally{delete e.response}return r.headers=Xe.from(r.headers),r},function(r){if(!Hf(r)&&(To(e),r&&r.response)){e.response=r.response;try{r.response.data=Ao.call(e,e.transformResponse,r.response)}finally{delete e.response}r.response.headers=Xe.from(r.response.headers)}return Promise.reject(r)})}const so={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{so[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const Nl={};so.transitional=function(t,n,r){function s(o,i){return"[Axios v"+Ui+"] Transitional option '"+o+"'"+i+(r?". "+r:"")}return(o,i,a)=>{if(t===!1)throw new q(s(i," has been removed"+(n?" in "+n:"")),q.ERR_DEPRECATED);return n&&!Nl[i]&&(Nl[i]=!0,console.warn(s(i," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(o,i,a):!0}};so.spelling=function(t){return(n,r)=>(console.warn(`${r} is likely a misspelling of ${t}`),!0)};function ay(e,t,n){if(typeof e!="object"||e===null)throw new q("options must be an object",q.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let s=r.length;for(;s-- >0;){const o=r[s],i=Object.prototype.hasOwnProperty.call(t,o)?t[o]:void 0;if(i){const a=e[o],l=a===void 0||i(a,o,e);if(l!==!0)throw new q("option "+o+" must be "+l,q.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new q("Unknown option "+o,q.ERR_BAD_OPTION)}}const ds={assertOptions:ay,validators:so},Ke=ds.validators;let En=class{constructor(t){this.defaults=t||{},this.interceptors={request:new wl,response:new wl}}async request(t,n){try{return await this._request(t,n)}catch(r){if(r instanceof Error){let s={};Error.captureStackTrace?Error.captureStackTrace(s):s=new Error;const o=(()=>{if(!s.stack)return"";const i=s.stack.indexOf(` +`);return i===-1?"":s.stack.slice(i+1)})();try{if(!r.stack)r.stack=o;else if(o){const i=o.indexOf(` +`),a=i===-1?-1:o.indexOf(` +`,i+1),l=a===-1?"":o.slice(a+1);String(r.stack).endsWith(l)||(r.stack+=` +`+o)}}catch{}}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=In(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:o}=n;r!==void 0&&ds.assertOptions(r,{silentJSONParsing:Ke.transitional(Ke.boolean),forcedJSONParsing:Ke.transitional(Ke.boolean),clarifyTimeoutError:Ke.transitional(Ke.boolean),legacyInterceptorReqResOrdering:Ke.transitional(Ke.boolean),advertiseZstdAcceptEncoding:Ke.transitional(Ke.boolean),validateStatusUndefinedResolves:Ke.transitional(Ke.boolean)},!1),s!=null&&(w.isFunction(s)?n.paramsSerializer={serialize:s}:ds.assertOptions(s,{encode:Ke.function,serialize:Ke.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),ds.assertOptions(n,{baseUrl:Ke.spelling("baseURL"),withXsrfToken:Ke.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let i=o&&w.merge(o.common,o[n.method]);o&&w.forEach(["delete","get","head","post","put","patch","query","common"],y=>{delete o[y]}),n.headers=Xe.concat(i,o);const a=[];let l=!0;this.interceptors.request.forEach(function(g){if(typeof g.runWhen=="function"&&g.runWhen(n)===!1)return;l=l&&g.synchronous;const v=n.transitional||Bi;v&&v.legacyInterceptorReqResOrdering?a.unshift(g.fulfilled,g.rejected):a.push(g.fulfilled,g.rejected)});const u=[];this.interceptors.response.forEach(function(g){u.push(g.fulfilled,g.rejected)});let c,f=0,d;if(!l){const y=[Il.bind(this),void 0];for(y.unshift(...a),y.push(...u),d=y.length,c=Promise.resolve(n);f{if(!r._listeners)return;let o=r._listeners.length;for(;o-- >0;)r._listeners[o](s);r._listeners=null}),this.promise.then=s=>{let o;const i=new Promise(a=>{r.subscribe(a),o=a}).then(s);return i.cancel=function(){r.unsubscribe(o)},i},t(function(o,i,a){r.reason||(r.reason=new Qr(o,i,a),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=r=>{t.abort(r)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new Gf(function(s){t=s}),cancel:t}}};function cy(e){return function(n){return e.apply(null,n)}}function uy(e){return w.isObject(e)&&e.isAxiosError===!0}const ri={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(ri).forEach(([e,t])=>{ri[t]=e});function Jf(e){const t=new En(e),n=Of(En.prototype.request,t);return w.extend(n,En.prototype,t,{allOwnKeys:!0}),w.extend(n,t,null,{allOwnKeys:!0}),n.create=function(s){return Jf(In(e,s))},n}const $e=Jf(Yr);$e.Axios=En;$e.CanceledError=Qr;$e.CancelToken=ly;$e.isCancel=Hf;$e.VERSION=Ui;$e.toFormData=ro;$e.AxiosError=q;$e.Cancel=$e.CanceledError;$e.all=function(t){return Promise.all(t)};$e.spread=cy;$e.isAxiosError=uy;$e.mergeConfig=In;$e.AxiosHeaders=Xe;$e.formToJSON=e=>Vf(w.isHTMLForm(e)?new FormData(e):e);$e.getAdapter=Kf.getAdapter;$e.HttpStatusCode=ri;$e.default=$e;const{Axios:K4,AxiosError:G4,CanceledError:J4,isCancel:Y4,CancelToken:Q4,VERSION:X4,all:Z4,Cancel:ew,isAxiosError:tw,spread:nw,toFormData:rw,AxiosHeaders:sw,HttpStatusCode:ow,formToJSON:iw,getAdapter:aw,mergeConfig:lw,create:cw}=$e,ar=$e.create({baseURL:"/modelTF",timeout:3e4});ar.interceptors.request.use(e=>e,e=>Promise.reject(e));ar.interceptors.response.use(e=>{const t=e.data;if(e.config.responseType==="blob"||e.config.responseType==="arraybuffer")return e;if(t.code===0)return t.data;const n=t.message||"请求失败";return gl.error(n),Promise.reject(new Error(n))},e=>{var r,s,o,i;const t=(s=(r=e.response)==null?void 0:r.data)==null?void 0:s.detail,n=(t==null?void 0:t.message)||((i=(o=e.response)==null?void 0:o.data)==null?void 0:i.message)||t||e.message||"网络异常";return gl.error(n),Promise.reject(e)});function Hi(e,t,n){return ar.get(e,{params:t,...n})}function Yf(e,t,n){return ar.post(e,t,n)}function uw(e,t,n){return ar.put(e,t,n)}function fw(e,t,n){return ar.delete(e,{params:t,...n})}/*! + * vue-router v4.6.4 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */const Un=typeof document<"u";function Qf(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function fy(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Qf(e.default)}const Se=Object.assign;function Co(e,t){const n={};for(const r in t){const s=t[r];n[r]=Et(s)?s.map(e):e(s)}return n}const Rr=()=>{},Et=Array.isArray;function Dl(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}const Xf=/#/g,dy=/&/g,py=/\//g,hy=/=/g,my=/\?/g,Zf=/\+/g,gy=/%5B/g,_y=/%5D/g,ed=/%5E/g,vy=/%60/g,td=/%7B/g,yy=/%7C/g,nd=/%7D/g,by=/%20/g;function ki(e){return e==null?"":encodeURI(""+e).replace(yy,"|").replace(gy,"[").replace(_y,"]")}function wy(e){return ki(e).replace(td,"{").replace(nd,"}").replace(ed,"^")}function si(e){return ki(e).replace(Zf,"%2B").replace(by,"+").replace(Xf,"%23").replace(dy,"%26").replace(vy,"`").replace(td,"{").replace(nd,"}").replace(ed,"^")}function Ey(e){return si(e).replace(hy,"%3D")}function Sy(e){return ki(e).replace(Xf,"%23").replace(my,"%3F")}function xy(e){return Sy(e).replace(py,"%2F")}function jr(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const Oy=/\/$/,Ay=e=>e.replace(Oy,"");function Ro(e,t,n="/"){let r,s={},o="",i="";const a=t.indexOf("#");let l=t.indexOf("?");return l=a>=0&&l>a?-1:l,l>=0&&(r=t.slice(0,l),o=t.slice(l,a>0?a:t.length),s=e(o.slice(1))),a>=0&&(r=r||t.slice(0,a),i=t.slice(a,t.length)),r=Py(r??t,n),{fullPath:r+o+i,path:r,query:s,hash:jr(i)}}function Ty(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Ml(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Cy(e,t,n){const r=t.matched.length-1,s=n.matched.length-1;return r>-1&&r===s&&er(t.matched[r],n.matched[s])&&rd(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function er(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function rd(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!Ry(e[n],t[n]))return!1;return!0}function Ry(e,t){return Et(e)?$l(e,t):Et(t)?$l(t,e):(e==null?void 0:e.valueOf())===(t==null?void 0:t.valueOf())}function $l(e,t){return Et(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function Py(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),s=r[r.length-1];(s===".."||s===".")&&r.push("");let o=n.length-1,i,a;for(i=0;i1&&o--;else break;return n.slice(0,o).join("/")+"/"+r.slice(i).join("/")}const Xt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let oi=(function(e){return e.pop="pop",e.push="push",e})({}),Po=(function(e){return e.back="back",e.forward="forward",e.unknown="",e})({});function Ly(e){if(!e)if(Un){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Ay(e)}const Iy=/^[^#]+#/;function Ny(e,t){return e.replace(Iy,"#")+t}function Dy(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const oo=()=>({left:window.scrollX,top:window.scrollY});function My(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),s=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!s)return;t=Dy(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Fl(e,t){return(history.state?history.state.position-t:-1)+e}const ii=new Map;function $y(e,t){ii.set(e,t)}function Fy(e){const t=ii.get(e);return ii.delete(e),t}function By(e){return typeof e=="string"||e&&typeof e=="object"}function sd(e){return typeof e=="string"||typeof e=="symbol"}let Ie=(function(e){return e[e.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",e[e.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",e[e.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",e[e.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",e[e.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",e})({});const od=Symbol("");Ie.MATCHER_NOT_FOUND+"",Ie.NAVIGATION_GUARD_REDIRECT+"",Ie.NAVIGATION_ABORTED+"",Ie.NAVIGATION_CANCELLED+"",Ie.NAVIGATION_DUPLICATED+"";function tr(e,t){return Se(new Error,{type:e,[od]:!0},t)}function Ft(e,t){return e instanceof Error&&od in e&&(t==null||!!(e.type&t))}const jy=["params","query","hash"];function Uy(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const n of jy)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}function Vy(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let r=0;rs&&si(s)):[r&&si(r)]).forEach(s=>{s!==void 0&&(t+=(t.length?"&":"")+n,s!=null&&(t+="="+s))})}return t}function Hy(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=Et(r)?r.map(s=>s==null?null:""+s):r==null?r:""+r)}return t}const id=Symbol(""),jl=Symbol(""),io=Symbol(""),zi=Symbol(""),ai=Symbol("");function mr(){let e=[];function t(r){return e.push(r),()=>{const s=e.indexOf(r);s>-1&&e.splice(s,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function ky(e,t,n){const r=()=>{e[t].delete(n)};Js(r),kc(r),Hc(()=>{e[t].add(n)}),e[t].add(n)}function dw(e){const t=De(id,{}).value;t&&ky(t,"leaveGuards",e)}function sn(e,t,n,r,s,o=i=>i()){const i=r&&(r.enterCallbacks[s]=r.enterCallbacks[s]||[]);return()=>new Promise((a,l)=>{const u=d=>{d===!1?l(tr(Ie.NAVIGATION_ABORTED,{from:n,to:t})):d instanceof Error?l(d):By(d)?l(tr(Ie.NAVIGATION_GUARD_REDIRECT,{from:t,to:d})):(i&&r.enterCallbacks[s]===i&&typeof d=="function"&&i.push(d),a())},c=o(()=>e.call(r&&r.instances[s],t,n,u));let f=Promise.resolve(c);e.length<3&&(f=f.then(u)),f.catch(d=>l(d))})}function Lo(e,t,n,r,s=o=>o()){const o=[];for(const i of e)for(const a in i.components){let l=i.components[a];if(!(t!=="beforeRouteEnter"&&!i.instances[a]))if(Qf(l)){const u=(l.__vccOpts||l)[t];u&&o.push(sn(u,n,r,i,a,s))}else{let u=l();o.push(()=>u.then(c=>{if(!c)throw new Error(`Couldn't resolve component "${a}" at "${i.path}"`);const f=fy(c)?c.default:c;i.mods[a]=c,i.components[a]=f;const d=(f.__vccOpts||f)[t];return d&&sn(d,n,r,i,a,s)()}))}}return o}function zy(e,t){const n=[],r=[],s=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;ier(u,a))?r.push(a):n.push(a));const l=e.matched[i];l&&(t.matched.find(u=>er(u,l))||s.push(l))}return[n,r,s]}/*! + * vue-router v4.6.4 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */let qy=()=>location.protocol+"//"+location.host;function ad(e,t){const{pathname:n,search:r,hash:s}=t,o=e.indexOf("#");if(o>-1){let i=s.includes(e.slice(o))?e.slice(o).length:1,a=s.slice(i);return a[0]!=="/"&&(a="/"+a),Ml(a,"")}return Ml(n,e)+r+s}function Wy(e,t,n,r){let s=[],o=[],i=null;const a=({state:d})=>{const p=ad(e,location),y=n.value,g=t.value;let v=0;if(d){if(n.value=p,t.value=d,i&&i===y){i=null;return}v=g?d.position-g.position:0}else r(p);s.forEach(_=>{_(n.value,y,{delta:v,type:oi.pop,direction:v?v>0?Po.forward:Po.back:Po.unknown})})};function l(){i=n.value}function u(d){s.push(d);const p=()=>{const y=s.indexOf(d);y>-1&&s.splice(y,1)};return o.push(p),p}function c(){if(document.visibilityState==="hidden"){const{history:d}=window;if(!d.state)return;d.replaceState(Se({},d.state,{scroll:oo()}),"")}}function f(){for(const d of o)d();o=[],window.removeEventListener("popstate",a),window.removeEventListener("pagehide",c),document.removeEventListener("visibilitychange",c)}return window.addEventListener("popstate",a),window.addEventListener("pagehide",c),document.addEventListener("visibilitychange",c),{pauseListeners:l,listen:u,destroy:f}}function Ul(e,t,n,r=!1,s=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:s?oo():null}}function Ky(e){const{history:t,location:n}=window,r={value:ad(e,n)},s={value:t.state};s.value||o(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(l,u,c){const f=e.indexOf("#"),d=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+l:qy()+e+l;try{t[c?"replaceState":"pushState"](u,"",d),s.value=u}catch(p){console.error(p),n[c?"replace":"assign"](d)}}function i(l,u){o(l,Se({},t.state,Ul(s.value.back,l,s.value.forward,!0),u,{position:s.value.position}),!0),r.value=l}function a(l,u){const c=Se({},s.value,t.state,{forward:l,scroll:oo()});o(c.current,c,!0),o(l,Se({},Ul(r.value,l,null),{position:c.position+1},u),!1),r.value=l}return{location:r,state:s,push:a,replace:i}}function Gy(e){e=Ly(e);const t=Ky(e),n=Wy(e,t.state,t.location,t.replace);function r(o,i=!0){i||n.pauseListeners(),history.go(o)}const s=Se({location:"",base:e,go:r,createHref:Ny.bind(null,e)},t,n);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}let yn=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({});var Be=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e})(Be||{});const Jy={type:yn.Static,value:""},Yy=/[a-zA-Z0-9_]/;function Qy(e){if(!e)return[[]];if(e==="/")return[[Jy]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(p){throw new Error(`ERR (${n})/"${u}": ${p}`)}let n=Be.Static,r=n;const s=[];let o;function i(){o&&s.push(o),o=[]}let a=0,l,u="",c="";function f(){u&&(n===Be.Static?o.push({type:yn.Static,value:u}):n===Be.Param||n===Be.ParamRegExp||n===Be.ParamRegExpEnd?(o.length>1&&(l==="*"||l==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),o.push({type:yn.Param,value:u,regexp:c,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),u="")}function d(){u+=l}for(;at.length?t.length===1&&t[0]===tt.Static+tt.Segment?1:-1:0}function ld(e,t){let n=0;const r=e.score,s=t.score;for(;n0&&t[t.length-1]<0}const nb={strict:!1,end:!0,sensitive:!1};function rb(e,t,n){const r=eb(Qy(e.path),n),s=Se(r,{record:e,parent:t,children:[],alias:[]});return t&&!s.record.aliasOf==!t.record.aliasOf&&t.children.push(s),s}function sb(e,t){const n=[],r=new Map;t=Dl(nb,t);function s(f){return r.get(f)}function o(f,d,p){const y=!p,g=zl(f);g.aliasOf=p&&p.record;const v=Dl(t,f),_=[g];if("alias"in f){const T=typeof f.alias=="string"?[f.alias]:f.alias;for(const D of T)_.push(zl(Se({},g,{components:p?p.record.components:g.components,path:D,aliasOf:p?p.record:g})))}let b,x;for(const T of _){const{path:D}=T;if(d&&D[0]!=="/"){const J=d.record.path,W=J[J.length-1]==="/"?"":"/";T.path=d.record.path+(D&&W+D)}if(b=rb(T,d,v),p?p.alias.push(b):(x=x||b,x!==b&&x.alias.push(b),y&&f.name&&!ql(b)&&i(f.name)),cd(b)&&l(b),g.children){const J=g.children;for(let W=0;W{i(x)}:Rr}function i(f){if(sd(f)){const d=r.get(f);d&&(r.delete(f),n.splice(n.indexOf(d),1),d.children.forEach(i),d.alias.forEach(i))}else{const d=n.indexOf(f);d>-1&&(n.splice(d,1),f.record.name&&r.delete(f.record.name),f.children.forEach(i),f.alias.forEach(i))}}function a(){return n}function l(f){const d=ab(f,n);n.splice(d,0,f),f.record.name&&!ql(f)&&r.set(f.record.name,f)}function u(f,d){let p,y={},g,v;if("name"in f&&f.name){if(p=r.get(f.name),!p)throw tr(Ie.MATCHER_NOT_FOUND,{location:f});v=p.record.name,y=Se(kl(d.params,p.keys.filter(x=>!x.optional).concat(p.parent?p.parent.keys.filter(x=>x.optional):[]).map(x=>x.name)),f.params&&kl(f.params,p.keys.map(x=>x.name))),g=p.stringify(y)}else if(f.path!=null)g=f.path,p=n.find(x=>x.re.test(g)),p&&(y=p.parse(g),v=p.record.name);else{if(p=d.name?r.get(d.name):n.find(x=>x.re.test(d.path)),!p)throw tr(Ie.MATCHER_NOT_FOUND,{location:f,currentLocation:d});v=p.record.name,y=Se({},d.params,f.params),g=p.stringify(y)}const _=[];let b=p;for(;b;)_.unshift(b.record),b=b.parent;return{name:v,path:g,params:y,matched:_,meta:ib(_)}}e.forEach(f=>o(f));function c(){n.length=0,r.clear()}return{addRoute:o,resolve:u,removeRoute:i,clearRoutes:c,getRoutes:a,getRecordMatcher:s}}function kl(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function zl(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:ob(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function ob(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function ql(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function ib(e){return e.reduce((t,n)=>Se(t,n.meta),{})}function ab(e,t){let n=0,r=t.length;for(;n!==r;){const o=n+r>>1;ld(e,t[o])<0?r=o:n=o+1}const s=lb(e);return s&&(r=t.lastIndexOf(s,r-1)),r}function lb(e){let t=e;for(;t=t.parent;)if(cd(t)&&ld(e,t)===0)return t}function cd({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Wl(e){const t=De(io),n=De(zi),r=Z(()=>{const l=ue(e.to);return t.resolve(l)}),s=Z(()=>{const{matched:l}=r.value,{length:u}=l,c=l[u-1],f=n.matched;if(!c||!f.length)return-1;const d=f.findIndex(er.bind(null,c));if(d>-1)return d;const p=Kl(l[u-2]);return u>1&&Kl(c)===p&&f[f.length-1].path!==p?f.findIndex(er.bind(null,l[u-2])):d}),o=Z(()=>s.value>-1&&pb(n.params,r.value.params)),i=Z(()=>s.value>-1&&s.value===n.matched.length-1&&rd(n.params,r.value.params));function a(l={}){if(db(l)){const u=t[ue(e.replace)?"replace":"push"](ue(e.to)).catch(Rr);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>u),u}return Promise.resolve()}return{route:r,href:Z(()=>r.value.href),isActive:o,isExactActive:i,navigate:a}}function cb(e){return e.length===1?e[0]:e}const ub=_e({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:Wl,setup(e,{slots:t}){const n=Vr(Wl(e)),{options:r}=De(io),s=Z(()=>({[Gl(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[Gl(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&cb(t.default(n));return e.custom?o:Ai("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:s.value},o)}}}),fb=ub;function db(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function pb(e,t){for(const n in t){const r=t[n],s=e[n];if(typeof r=="string"){if(r!==s)return!1}else if(!Et(s)||s.length!==r.length||r.some((o,i)=>o.valueOf()!==s[i].valueOf()))return!1}return!0}function Kl(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Gl=(e,t,n)=>e??t??n,hb=_e({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=De(ai),s=Z(()=>e.route||r.value),o=De(jl,0),i=Z(()=>{let u=ue(o);const{matched:c}=s.value;let f;for(;(f=c[u])&&!f.components;)u++;return u}),a=Z(()=>s.value.matched[i.value]);Er(jl,Z(()=>i.value+1)),Er(id,a),Er(ai,s);const l=Ne();return at(()=>[l.value,a.value,e.name],([u,c,f],[d,p,y])=>{c&&(c.instances[f]=u,p&&p!==c&&u&&u===d&&(c.leaveGuards.size||(c.leaveGuards=p.leaveGuards),c.updateGuards.size||(c.updateGuards=p.updateGuards))),u&&c&&(!p||!er(c,p)||!d)&&(c.enterCallbacks[f]||[]).forEach(g=>g(u))},{flush:"post"}),()=>{const u=s.value,c=e.name,f=a.value,d=f&&f.components[c];if(!d)return Jl(n.default,{Component:d,route:u});const p=f.props[c],y=p?p===!0?u.params:typeof p=="function"?p(u):p:null,v=Ai(d,Se({},y,t,{onVnodeUnmounted:_=>{_.component.isUnmounted&&(f.instances[c]=null)},ref:l}));return Jl(n.default,{Component:v,route:u})||v}}});function Jl(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const mb=hb;function gb(e){const t=sb(e.routes,e),n=e.parseQuery||Vy,r=e.stringifyQuery||Bl,s=e.history,o=mr(),i=mr(),a=mr(),l=ot(Xt);let u=Xt;Un&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=Co.bind(null,O=>""+O),f=Co.bind(null,xy),d=Co.bind(null,jr);function p(O,z){let V,K;return sd(O)?(V=t.getRecordMatcher(O),K=z):K=O,t.addRoute(K,V)}function y(O){const z=t.getRecordMatcher(O);z&&t.removeRoute(z)}function g(){return t.getRoutes().map(O=>O.record)}function v(O){return!!t.getRecordMatcher(O)}function _(O,z){if(z=Se({},z||l.value),typeof O=="string"){const E=Ro(n,O,z.path),C=t.resolve({path:E.path},z),S=s.createHref(E.fullPath);return Se(E,C,{params:d(C.params),hash:jr(E.hash),redirectedFrom:void 0,href:S})}let V;if(O.path!=null)V=Se({},O,{path:Ro(n,O.path,z.path).path});else{const E=Se({},O.params);for(const C in E)E[C]==null&&delete E[C];V=Se({},O,{params:f(E)}),z.params=f(z.params)}const K=t.resolve(V,z),ae=O.hash||"";K.params=c(d(K.params));const h=Ty(r,Se({},O,{hash:wy(ae),path:K.path})),m=s.createHref(h);return Se({fullPath:h,hash:ae,query:r===Bl?Hy(O.query):O.query||{}},K,{redirectedFrom:void 0,href:m})}function b(O){return typeof O=="string"?Ro(n,O,l.value.path):Se({},O)}function x(O,z){if(u!==O)return tr(Ie.NAVIGATION_CANCELLED,{from:z,to:O})}function T(O){return W(O)}function D(O){return T(Se(b(O),{replace:!0}))}function J(O,z){const V=O.matched[O.matched.length-1];if(V&&V.redirect){const{redirect:K}=V;let ae=typeof K=="function"?K(O,z):K;return typeof ae=="string"&&(ae=ae.includes("?")||ae.includes("#")?ae=b(ae):{path:ae},ae.params={}),Se({query:O.query,hash:O.hash,params:ae.path!=null?{}:O.params},ae)}}function W(O,z){const V=u=_(O),K=l.value,ae=O.state,h=O.force,m=O.replace===!0,E=J(V,K);if(E)return W(Se(b(E),{state:typeof E=="object"?Se({},ae,E.state):ae,force:h,replace:m}),z||V);const C=V;C.redirectedFrom=z;let S;return!h&&Cy(r,K,V)&&(S=tr(Ie.NAVIGATION_DUPLICATED,{to:C,from:K}),ne(K,K,!0,!1)),(S?Promise.resolve(S):k(C,K)).catch(A=>Ft(A)?Ft(A,Ie.NAVIGATION_GUARD_REDIRECT)?A:X(A):N(A,C,K)).then(A=>{if(A){if(Ft(A,Ie.NAVIGATION_GUARD_REDIRECT))return W(Se({replace:m},b(A.to),{state:typeof A.to=="object"?Se({},ae,A.to.state):ae,force:h}),z||C)}else A=F(C,K,!0,m,ae);return H(C,K,A),A})}function Y(O,z){const V=x(O,z);return V?Promise.reject(V):Promise.resolve()}function L(O){const z=xe.values().next().value;return z&&typeof z.runWithContext=="function"?z.runWithContext(O):O()}function k(O,z){let V;const[K,ae,h]=zy(O,z);V=Lo(K.reverse(),"beforeRouteLeave",O,z);for(const E of K)E.leaveGuards.forEach(C=>{V.push(sn(C,O,z))});const m=Y.bind(null,O,z);return V.push(m),ie(V).then(()=>{V=[];for(const E of o.list())V.push(sn(E,O,z));return V.push(m),ie(V)}).then(()=>{V=Lo(ae,"beforeRouteUpdate",O,z);for(const E of ae)E.updateGuards.forEach(C=>{V.push(sn(C,O,z))});return V.push(m),ie(V)}).then(()=>{V=[];for(const E of h)if(E.beforeEnter)if(Et(E.beforeEnter))for(const C of E.beforeEnter)V.push(sn(C,O,z));else V.push(sn(E.beforeEnter,O,z));return V.push(m),ie(V)}).then(()=>(O.matched.forEach(E=>E.enterCallbacks={}),V=Lo(h,"beforeRouteEnter",O,z,L),V.push(m),ie(V))).then(()=>{V=[];for(const E of i.list())V.push(sn(E,O,z));return V.push(m),ie(V)}).catch(E=>Ft(E,Ie.NAVIGATION_CANCELLED)?E:Promise.reject(E))}function H(O,z,V){a.list().forEach(K=>L(()=>K(O,z,V)))}function F(O,z,V,K,ae){const h=x(O,z);if(h)return h;const m=z===Xt,E=Un?history.state:{};V&&(K||m?s.replace(O.fullPath,Se({scroll:m&&E&&E.scroll},ae)):s.push(O.fullPath,ae)),l.value=O,ne(O,z,V,m),X()}let te;function B(){te||(te=s.listen((O,z,V)=>{if(!Pe.listening)return;const K=_(O),ae=J(K,Pe.currentRoute.value);if(ae){W(Se(ae,{replace:!0,force:!0}),K).catch(Rr);return}u=K;const h=l.value;Un&&$y(Fl(h.fullPath,V.delta),oo()),k(K,h).catch(m=>Ft(m,Ie.NAVIGATION_ABORTED|Ie.NAVIGATION_CANCELLED)?m:Ft(m,Ie.NAVIGATION_GUARD_REDIRECT)?(W(Se(b(m.to),{force:!0}),K).then(E=>{Ft(E,Ie.NAVIGATION_ABORTED|Ie.NAVIGATION_DUPLICATED)&&!V.delta&&V.type===oi.pop&&s.go(-1,!1)}).catch(Rr),Promise.reject()):(V.delta&&s.go(-V.delta,!1),N(m,K,h))).then(m=>{m=m||F(K,h,!1),m&&(V.delta&&!Ft(m,Ie.NAVIGATION_CANCELLED)?s.go(-V.delta,!1):V.type===oi.pop&&Ft(m,Ie.NAVIGATION_ABORTED|Ie.NAVIGATION_DUPLICATED)&&s.go(-1,!1)),H(K,h,m)}).catch(Rr)}))}let M=mr(),R=mr(),I;function N(O,z,V){X(O);const K=R.list();return K.length?K.forEach(ae=>ae(O,z,V)):console.error(O),Promise.reject(O)}function re(){return I&&l.value!==Xt?Promise.resolve():new Promise((O,z)=>{M.add([O,z])})}function X(O){return I||(I=!O,B(),M.list().forEach(([z,V])=>O?V(O):z()),M.reset()),O}function ne(O,z,V,K){const{scrollBehavior:ae}=e;if(!Un||!ae)return Promise.resolve();const h=!V&&Fy(Fl(O.fullPath,0))||(K||!V)&&history.state&&history.state.scroll||null;return rr().then(()=>ae(O,z,h)).then(m=>m&&My(m)).catch(m=>N(m,O,z))}const ce=O=>s.go(O);let ye;const xe=new Set,Pe={currentRoute:l,listening:!0,addRoute:p,removeRoute:y,clearRoutes:t.clearRoutes,hasRoute:v,getRoutes:g,resolve:_,options:e,push:T,replace:D,go:ce,back:()=>ce(-1),forward:()=>ce(1),beforeEach:o.add,beforeResolve:i.add,afterEach:a.add,onError:R.add,isReady:re,install(O){O.component("RouterLink",fb),O.component("RouterView",mb),O.config.globalProperties.$router=Pe,Object.defineProperty(O.config.globalProperties,"$route",{enumerable:!0,get:()=>ue(l)}),Un&&!ye&&l.value===Xt&&(ye=!0,T(s.location).catch(K=>{}));const z={};for(const K in Xt)Object.defineProperty(z,K,{get:()=>l.value[K],enumerable:!0});O.provide(io,Pe),O.provide(zi,zs(z)),O.provide(ai,l);const V=O.unmount;xe.add(O),O.unmount=function(){xe.delete(O),xe.size<1&&(u=Xt,te&&te(),te=null,l.value=Xt,ye=!1,I=!1),V()}}};function ie(O){return O.reduce((z,V)=>z.then(()=>L(V)),Promise.resolve())}return Pe}function pw(){return De(io)}function hw(e){return De(zi)}const mw=()=>Hi("/system-info"),gw=()=>Hi("/health"),_b=(e,t)=>Yf("/login",{username:e,password:t}),_w=()=>Hi("/users"),vw=e=>Yf("/users",e),yw={LLM:"大语言模型",CV:"计算机视觉",NLP:"自然语言处理",Embedding:"向量模型",Other:"其他"},bw={training:{text:"训练",type:"primary"},inference:{text:"推理",type:"success"},evaluation:{text:"评测",type:"warning"}},ww={local:"本地模型",api:"在线模型",online:"在线模型"},Ew={SFT:"SFT",DPO:"DPO",CPT:"CPT"},Sw={lora:"LoRA",qlora:"QLoRA",full:"全量微调",prefix:"Prefix Tuning",adapter:"Adapter",peft:"PEFT",adalora:"AdaLoRA",longlora:"LongLoRA",dpo:"DPO",cpt:"CPT"},xw={train:"训练数据",test:"测试数据",eval:"评测数据",val:"验证数据",other:"其他"},Ow={local:"本地存储",minio:"MinIO",cloud:"云存储"},Aw={classification:"大模型-分类型",metric:"大模型-指标型",text_similarity:"规则-文本相似度"},Tw=[{label:"cosine",value:"cosine"},{label:"linear",value:"linear"},{label:"constant",value:"constant"}],Cw=[{label:"不量化",value:0},{label:"8 bit",value:8},{label:"4 bit (QLoRA)",value:4}],Rw=[{label:"bitsandbytes",value:"bnb"},{label:"GPTQ",value:"gptq"},{label:"AWQ",value:"awq"},{label:"GGUF (llama.cpp)",value:"gguf"}],Pw=[{label:"Q4_K_M(推荐)",value:"Q4_K_M"},{label:"Q5_K_M",value:"Q5_K_M"},{label:"Q8_0",value:"Q8_0"},{label:"F16(不量化)",value:"F16"}],Lw=[{label:"Qwen 系列",options:[{label:"qwen",value:"qwen"},{label:"qwen2",value:"qwen2"},{label:"qwen2_5",value:"qwen2_5"}]},{label:"Llama 系列",options:[{label:"llama2",value:"llama2"},{label:"llama3",value:"llama3"},{label:"llama3_1",value:"llama3_1"}]},{label:"DeepSeek 系列",options:[{label:"deepseek",value:"deepseek"},{label:"deepseek2",value:"deepseek2"}]},{label:"其他系列",options:[{label:"glm4",value:"glm4"},{label:"chatglm3",value:"chatglm3"},{label:"gemma",value:"gemma"},{label:"gemma2",value:"gemma2"},{label:"phi",value:"phi"},{label:"intern2",value:"intern2"},{label:"mistral",value:"mistral"},{label:"default",value:"default"}]}],Iw=[{id:"data-generate",name:"数据生成",icon:"fa-database",description:"基于LLM生成微调数据集"},{id:"json2jsonl",name:"JSON转JSONL",icon:"fa-code",description:"将JSON文件转换为JSONL格式"},{id:"md-convert",name:"转换Markdown",icon:"fa-file-text",description:"将Markdown文件转换为训练数据"}],Nw=["fa-cog","fa-database","fa-code","fa-file-text","fa-wrench","fa-cube","fa-line-chart","fa-bar-chart","fa-server","fa-cogs","fa-tasks","fa-trophy","fa-sliders","fa-rocket","fa-cloud","fa-cloud-download","fa-microchip","fa-hdd-o","fa-globe","fa-info-circle","fa-question-circle-o","fa-user-o","fa-lock-o","fa-sign-in","fa-sign-out","fa-search","fa-plus","fa-refresh","fa-times","fa-check","fa-pencil","fa-trash","fa-play","fa-arrow-left","fa-arrow-down","fa-arrow-up"],vb=300*1e3,Is="currentUser",yb=["dashboard","fine-tune","model-eval","model-inference","model-manage","dataset","data-process","data-convert","compute","hardware","logs","user-settings"];function bb(){const e=localStorage.getItem(Is);if(e)try{return JSON.parse(e)}catch{localStorage.removeItem(Is)}return localStorage.getItem("username")==="admin"?{id:"USR-0001",username:"admin",display_name:"系统管理员",role:"admin",status:"active",permissions:yb,create_time:"2026-01-01T08:00:00+08:00",protected:!0}:null}const wb=e0("auth",()=>{const e=Ne(bb()),t=Z(()=>{var c;return((c=e.value)==null?void 0:c.username)||""}),n=Z(()=>{var c;return((c=e.value)==null?void 0:c.display_name)||t.value}),r=Z(()=>{var c,f;return((c=e.value)==null?void 0:c.role)==="admin"?"超级管理员":((f=e.value)==null?void 0:f.role)==="operator"?"操作员":"观察员"}),s=Ne(parseInt(localStorage.getItem("loginTime")||"0",10)||0),o=Z(()=>s.value?Date.now()-s.valuede(()=>import("./LoginView-BkI86ygw.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])),meta:{title:"登录",public:!0}},{path:"/guide",name:"guide",component:()=>de(()=>import("./GuideView-B0JJuoOs.js"),__vite__mapDeps([16,14,17])),meta:{title:"使用文档",skipPermission:!0}},{path:"/",component:()=>de(()=>import("./MainLayout-D_KBFIU-.js"),__vite__mapDeps([18,19,2,9,20,21,22,23,24,25,26,27,28,29,13,14,30,31,32])),redirect:"/dashboard",children:[{path:"dashboard",name:"dashboard",component:()=>de(()=>import("./DashboardView-JKcOpMUU.js"),__vite__mapDeps([33,24,25,19,2,9,20,21,26,34,35,3,22,23,28,7,36,8,37,38,39,40,41,42,43,44,14,45,46])),meta:{title:"服务看板"}},{path:"fine-tune",name:"fine-tune",component:()=>de(()=>import("./FineTuneListView-DJrDesBG.js"),__vite__mapDeps([47,2,10,7,9,11,4,12,48,22,23,19,20,21,39,3,49,38,50,51,52,6,8,53,54,55,35,25,28,34,36,37,40,56,57,58,59,60,61,29,14,62,46,63,64,30,31,65,66,67])),meta:{title:"模型训练",pageSurface:"self"}},{path:"fine-tune/create",name:"fine-tune-create",component:()=>de(()=>import("./FineTuneCreateView-B4Xgm6l7.js"),__vite__mapDeps([68,1,2,3,4,5,19,9,20,21,6,7,8,35,25,22,23,28,34,36,37,38,39,40,69,11,70,71,72,73,74,75,29,76,53,54,14,77,78,61,79,60,80,81,82,83,84,65,31,85,86,46])),meta:{title:"创建训练任务"}},{path:"model-eval",name:"model-eval",component:()=>de(()=>import("./EvalView-EyPQOCUX.js"),__vite__mapDeps([87,2,48,22,9,23,19,20,21,4,39,3,49,38,10,7,11,12,50,58,59,60,37,61,36,6,8,52,53,54,55,35,25,28,34,40,56,57,29,14,62,46,88,89])),meta:{title:"模型评测",pageSurface:"self"}},{path:"model-eval/create",name:"model-eval-create",component:()=>de(()=>import("./EvalCreateView-DT45yzX7.js"),__vite__mapDeps([90,2,57,76,53,54,14,77,91,25,92,1,3,4,5,6,7,8,9,35,20,19,21,22,23,28,34,36,37,38,39,40,69,11,70,93,59,94,95,10,12,73,74,75,96,49,97,29,98,67,46,99,100,101,102,88,31,85,103])),meta:{title:"新建评测"}},{path:"model-eval/:id",name:"model-eval-detail",component:()=>de(()=>import("./EvalDetailView-DJayGyvy.js"),__vite__mapDeps([104,6,7,8,2,9,34,35,20,3,25,19,21,22,23,28,36,37,38,39,40,55,56,41,42,48,4,49,10,11,12,50,57,29,76,53,54,14,77,63,46,88,105])),meta:{title:"评测详情"}},{path:"model-eval/dimension/create",name:"dimension-create",redirect:"/model-eval/create"},{path:"model-eval/dimension/:id/edit",name:"dimension-edit",component:()=>de(()=>import("./DimensionCreateView-DvcDsfrQ.js"),__vite__mapDeps([106,1,2,3,4,5,6,7,8,9,76,53,54,14,77,95,35,20,25,19,21,22,23,28,34,36,37,38,39,40,10,11,12,69,70,73,74,75,96,49,97,93,59,94,29,98,67,46,88,31])),meta:{title:"编辑评测维度"}},{path:"model-inference",name:"model-inference",component:()=>de(()=>import("./InferenceListView-mZ19jYab.js"),__vite__mapDeps([107,2,34,48,22,9,23,19,20,21,4,39,3,49,38,10,7,11,12,50,58,59,60,37,61,36,6,8,52,53,54,55,35,25,28,40,56,57,29,14,62,46,64,108])),meta:{title:"模型推理",pageSurface:"self"}},{path:"model-inference/create",name:"model-inference-create",component:()=>de(()=>import("./InferenceCreateView-DrIqOCaE.js"),__vite__mapDeps([109,91,25,92,1,2,3,4,5,6,7,8,9,35,20,19,21,22,23,28,34,36,37,38,39,40,71,72,76,53,54,14,77,31,46])),meta:{title:"新建推理"}},{path:"model-inference/chat/:id",name:"inference-chat",component:()=>de(()=>import("./InferenceChatView-BP3Wudle.js"),__vite__mapDeps([110,1,2,3,4,5,6,7,8,9,27,111,20,61,36,79,112,96,73,74,75,19,21,49,38,37,97,29,113,114,108,14,115])),meta:{title:"模型对话",pageSurface:"self"}},{path:"model-compare/chat/:id",name:"compare-chat",component:()=>de(()=>import("./CompareChatView-BZJACmmb.js"),__vite__mapDeps([116,1,2,3,4,5,6,7,8,9,34,71,72,96,73,74,75,19,20,21,49,38,37,97,29,76,53,54,14,77,64,108,117,46])),meta:{title:"模型对比"}},{path:"model-compare/result",name:"compare-result",component:()=>de(()=>import("./CompareResultView-yTJ0EdKT.js"),__vite__mapDeps([118,91,25,92,2,34,53,54,113,114,108,14,119,46])),meta:{title:"对比结果"}},{path:"model-manage",name:"model-manage",component:()=>de(()=>import("./ModelManageView-Dju1g8Ja.js"),__vite__mapDeps([120,2,34,48,22,9,23,19,20,21,4,39,3,49,38,10,7,11,12,50,58,59,60,37,61,36,6,8,52,53,54,55,35,25,28,40,56,57,29,14,62,46,31,121])),meta:{title:"模型管理",pageSurface:"self"}},{path:"model-manage/create",name:"model-manage-create",component:()=>de(()=>import("./ModelCreateView-Np2j_mdr.js"),__vite__mapDeps([122,1,2,3,4,5,6,7,8,9,35,20,25,19,21,22,23,28,34,36,37,38,39,40,69,11,70,57,76,53,54,14,77,31,46])),meta:{title:"添加模型"}},{path:"model-manage/:id/edit",name:"model-manage-edit",component:()=>de(()=>import("./ModelCreateView-Np2j_mdr.js"),__vite__mapDeps([122,1,2,3,4,5,6,7,8,9,35,20,25,19,21,22,23,28,34,36,37,38,39,40,69,11,70,57,76,53,54,14,77,31,46])),meta:{title:"编辑模型"}},{path:"model-manage/merge",name:"merge-weights",component:()=>de(()=>import("./MergeWeightsView-D_WkK77Q.js"),__vite__mapDeps([123,91,25,92,1,2,3,4,5,6,7,8,9,34,76,53,54,14,77,31,124,46])),meta:{title:"合并权重"}},{path:"data-process",name:"data-process",component:()=>de(()=>import("./DataProcessListView-Ds7sKAJx.js"),__vite__mapDeps([125,2,34,48,22,9,23,19,20,21,4,39,3,49,38,10,7,11,12,50,52,6,8,53,54,55,35,25,28,36,37,40,56,57,58,59,60,61,29,14,62,46,63,126])),meta:{title:"数据处理",pageSurface:"self"}},{path:"data-process/create",name:"data-process-create",component:()=>de(()=>import("./DataProcessCreateView-BEQjbuB9.js"),__vite__mapDeps([127,2,128,14,129,1,3,4,5,6,7,8,9,10,11,12,73,74,75,35,20,25,19,21,22,23,28,34,36,37,38,39,40,96,49,97,93,59,94,29,55,56,130,41,42,131,30,31,132,67,46])),meta:{title:"新建数据处理任务",pageSurface:"self"}},{path:"data-process/:id",name:"data-process-detail",component:()=>de(()=>import("./DataProcessDetailView-DrQeE7-I.js"),__vite__mapDeps([133,6,7,8,2,9,34,35,20,3,25,19,21,22,23,28,36,37,38,39,40,55,56,41,42,48,4,49,10,11,12,50,29,76,53,54,14,77,63,46,134])),meta:{title:"数据处理详情"}},{path:"dataset",name:"dataset",component:()=>de(()=>import("./DatasetListView-BD0YX55E.js"),__vite__mapDeps([135,2,34,48,22,9,23,19,20,21,4,39,3,49,38,10,7,11,12,50,52,6,8,53,54,55,35,25,28,36,37,40,56,57,58,59,60,61,29,14,62,46,85,136])),meta:{title:"数据集管理",pageSurface:"self"}},{path:"dataset/create",name:"dataset-create",component:()=>de(()=>import("./DatasetCreateView-ChBCun2m.js"),__vite__mapDeps([137,91,25,92,1,2,3,4,5,6,7,8,9,69,11,70,93,59,94,130,41,42,131,57,76,53,54,14,77,85,138])),meta:{title:"上传数据集"}},{path:"dataset/:id/edit",name:"dataset-edit",component:()=>de(()=>import("./DatasetCreateView-ChBCun2m.js"),__vite__mapDeps([137,91,25,92,1,2,3,4,5,6,7,8,9,69,11,70,93,59,94,130,41,42,131,57,76,53,54,14,77,85,138])),meta:{title:"编辑数据集"}},{path:"dataset/:id/preview",name:"dataset-preview",component:()=>de(()=>import("./DatasetPreviewView-CVHwvkKZ.js"),__vite__mapDeps([139,91,25,92,19,2,9,20,21,34,57,58,59,60,37,38,61,36,7,6,8,29,128,14,129,76,53,54,77,85,35,3,22,23,28,39,40,51,78,79,80,55,56,48,4,49,10,11,12,50,1,5,140,46])),meta:{title:"数据集预览"}},{path:"tools",name:"tools",component:()=>de(()=>import("./ToolsView-CTjLaJbw.js"),__vite__mapDeps([141,2,53,54,81,82,58,20,59,60,37,38,61,36,7,6,8,9,76,14,77,142,143])),meta:{title:"其他工具"}},{path:"tools/create",name:"tools-create",component:()=>de(()=>import("./ToolCreateView-Dyu4KgOC.js"),__vite__mapDeps([144,1,2,3,4,5,6,7,8,9,76,53,54,14,77,142,145])),meta:{title:"添加自定义工具"}},{path:"tools/:id/edit",name:"tools-edit",component:()=>de(()=>import("./ToolCreateView-Dyu4KgOC.js"),__vite__mapDeps([144,1,2,3,4,5,6,7,8,9,76,53,54,14,77,142,145])),meta:{title:"编辑自定义工具"}},{path:"data-convert",name:"data-convert",component:()=>de(()=>import("./DataConvertView-DYHO4l1y.js"),__vite__mapDeps([146,1,2,3,4,5,19,9,20,21,6,7,8,35,25,22,23,28,34,36,37,38,39,40,29,76,53,54,14,77,147,46])),meta:{title:"数据类型转换"}},{path:"compute",name:"compute",component:()=>de(()=>import("./ComputeNodesView-Cy5hxd1h.js"),__vite__mapDeps([148,2,34,35,20,3,25,19,9,21,22,23,28,7,36,8,37,38,39,40,41,42,101,102,48,4,49,10,11,12,50,83,84,57,29,14,149,46])),meta:{title:"算力节点",pageSurface:"self",permission:"compute"}},{path:"compute/gpus",redirect:"/compute?tab=gpus"},{path:"compute/queue",redirect:"/compute?tab=queue"},{path:"compute/nodes",redirect:"/compute?tab=nodes"},{path:"permission-denied",name:"permission-denied",component:()=>de(()=>import("./PermissionDeniedView-BtkZoqYQ.js"),__vite__mapDeps([150,14,151])),meta:{title:"无权访问",skipPermission:!0}},{path:"hardware",name:"hardware",component:()=>de(()=>import("./HardwareView-B7yq-27k.js"),__vite__mapDeps([152,91,25,92,2,35,20,3,19,9,21,22,23,28,34,7,36,8,37,38,39,40,111,61,79,112,81,82,41,42,93,59,94,48,4,49,10,11,12,50,57,29,43,76,53,54,14,77,153,44,154,46])),meta:{title:"平台性能"}},{path:"logs",name:"logs",component:()=>de(()=>import("./LogsView-Bt-ZCtJy.js"),__vite__mapDeps([155,6,7,8,2,9,35,20,3,25,19,21,22,23,28,34,36,37,38,39,40,74,49,11,4,83,84,76,53,54,14,77,64,156,157,46])),meta:{title:"查看日志"}},{path:"user-settings",name:"user-settings",component:()=>de(()=>import("./UserSettingsView-B2Ro6wyQ.js"),__vite__mapDeps([158,2,48,22,9,23,19,20,21,4,39,3,49,38,10,7,11,12,50,57,29,14,159,46])),meta:{title:"用户设置",pageSurface:"self",permission:"user-settings"}},{path:"user-settings/create",name:"user-create",component:()=>de(()=>import("./UserCreateView-y4uo9Eyv.js"),__vite__mapDeps([160,1,2,3,4,5,6,7,8,9,35,20,25,19,21,22,23,28,34,36,37,38,39,40,10,11,12,69,70,14,161,67,46])),meta:{title:"创建用户",permission:"user-settings"}},{path:"user-settings/:id/permission",name:"user-permission",component:()=>de(()=>import("./UserPermissionView-B3oCc2mK.js"),__vite__mapDeps([162,14,163])),meta:{title:"权限设置",permission:"user-settings"}},{path:"training-log/:id",name:"training-log",component:()=>de(()=>import("./TrainingLogView-C5lCdvrq.js"),__vite__mapDeps([164,2,34,27,99,25,100,41,42,57,43,76,53,54,14,77,63,46,64,153,30,31,65,156,85,165])),meta:{title:"训练日志"}}]},{path:"/:pathMatch(.*)*",redirect:"/dashboard"}],ud=gb({history:Gy(),routes:Eb}),Sb={dashboard:"dashboard","fine-tune":"fine-tune","training-log":"fine-tune","model-eval":"model-eval","model-inference":"model-inference","model-compare":"model-inference","model-manage":"model-manage",dataset:"dataset","data-process":"data-process","data-convert":"data-convert",compute:"compute",tools:"data-convert",hardware:"hardware",logs:"logs","user-settings":"user-settings"};function xb(e,t){if(t)return t;const n=e.split("/")[1];return Sb[n]}ud.beforeEach((e,t,n)=>{const r=wb();if(document.title=e.meta.title?`${e.meta.title} - 远光软件微调平台`:"远光软件微调平台",e.meta.public){if(e.name==="login"&&r.isLoggedIn){n("/dashboard");return}n();return}if(!r.isLoggedIn){n({name:"login"});return}if(!e.meta.skipPermission){const s=xb(e.path,e.meta.permission);if(s&&!r.hasPermission(s)){n({name:"permission-denied",replace:!0});return}}r.refresh(),n()});const qi=qh(d1);qi.use(Gh());qi.use(ud);async function Ob(){qi.mount("#app")}Ob();export{p4 as $,gl as A,De as B,Xb as C,at as D,hl as E,Er as F,qr as G,Wc as H,Ai as I,we as J,sp as K,gh as L,st as M,We as N,A2 as O,rr as P,f4 as Q,nt as R,S4 as S,O4 as T,Wb as U,W2 as V,Wo as W,u4 as X,mu as Y,Eu as Z,h4 as _,Ni as a,Nb as a$,m4 as a0,Nc as a1,gt as a2,ge as a3,F4 as a4,D_ as a5,Q as a6,sf as a7,ef as a8,Yd as a9,Fb as aA,Re as aB,Pb as aC,de as aD,Aw as aE,Hi as aF,Yf as aG,uw as aH,fw as aI,Ql as aJ,sr as aK,Hh as aL,Vb as aM,yw as aN,bw as aO,ww as aP,dw as aQ,J2 as aR,Nt as aS,ot as aT,_t as aU,Kd as aV,k2 as aW,qc as aX,M4 as aY,A4 as aZ,B4 as a_,fi as aa,E4 as ab,hw as ac,Ib as ad,e0 as ae,gw as af,qb as ag,Js as ah,Sp as ai,t0 as aj,Rn as ak,nr as al,Xo as am,On as an,ln as ao,w4 as ap,Ew as aq,Sw as ar,B_ as as,mw as at,Lw as au,Cw as av,Rw as aw,Pw as ax,Tw as ay,Bb as az,Kr as b,s4 as b$,K2 as b0,xw as b1,Ow as b2,N4 as b3,a_ as b4,C4 as b5,gf as b6,U4 as b7,I4 as b8,Ub as b9,Yt as bA,$a as bB,me as bC,p2 as bD,Nw as bE,Qe as bF,e4 as bG,l4 as bH,G2 as bI,al as bJ,ac as bK,g4 as bL,Kb as bM,k4 as bN,Yi as bO,X2 as bP,u_ as bQ,$b as bR,b4 as bS,n4 as bT,R4 as bU,T4 as bV,it as bW,z_ as bX,Tb as bY,d4 as bZ,o4 as b_,Zl as ba,u2 as bb,Yb as bc,oe as bd,i4 as be,_4 as bf,hs as bg,Ab as bh,Xp as bi,v4 as bj,V4 as bk,Mb as bl,Cb as bm,Rb as bn,P4 as bo,$4 as bp,L4 as bq,y4 as br,x4 as bs,Iw as bt,c4 as bu,P_ as bv,j_ as bw,mi as bx,b_ as by,pl as bz,Ee as c,M2 as c$,a4 as c0,_p as c1,Qb as c2,t4 as c3,Zu as c4,H4 as c5,j4 as c6,D4 as c7,q2 as c8,Zb as c9,Ag as cA,Sg as cB,cg as cC,Tg as cD,nl as cE,An as cF,rn as cG,_m as cH,Ka as cI,Go as cJ,an as cK,Ya as cL,tf as cM,Li as cN,gp as cO,kc as cP,Hc as cQ,qe as cR,Db as cS,Bs as cT,Ju as cU,os as cV,r4 as cW,O2 as cX,Lb as cY,vf as cZ,zs as c_,Qs as ca,Gb as cb,pe as cc,Hb as cd,Tn as ce,of as cf,ka as cg,cn as ch,H0 as ci,lg as cj,Ku as ck,Gu as cl,Vu as cm,ju as cn,ag as co,f2 as cp,mg as cq,d0 as cr,As as cs,Uu as ct,N0 as cu,F0 as cv,M0 as cw,wm as cx,Am as cy,Kt as cz,_e as d,Jb as d0,Ci as d1,Xu as d2,Rm as d3,Ri as d4,qu as d5,Bu as d6,qh as d7,qt as d8,kb as d9,_w as da,vw as db,Ht as e,ue as f,Vn as g,Dr as h,R_ as i,Z as j,Eo as k,Di as l,wb as m,mt as n,fe as o,jb as p,he as q,xp as r,Le as s,zb as t,bf as u,pw as v,Wn as w,Oi as x,Ne as y,Vr as z}; diff --git a/frontend/dist/assets/index-BYOirq2F.js b/frontend/dist/assets/index-BYOirq2F.js new file mode 100644 index 0000000..4de9e60 --- /dev/null +++ b/frontend/dist/assets/index-BYOirq2F.js @@ -0,0 +1 @@ +import{e as o,E as a,s as Z,t as Q,a as _,L as q,i as l,c as r,f as w,l as V}from"./index--cDK8lVp.js";import"./index-BKKvzUDD.js";const R=1,g=2,b=3,y=4,T=5,s=98,c=101,v=102,t=114,p=69,X=48,W=46,d=43,f=45,Y=35,z=34,x=124,U=60,h=62;function n(O){return O>=48&&O<=57}function e(O){return n(O)||O==95}const G=new a((O,i)=>{if(n(O.next)){let P=!1;do O.advance();while(e(O.next));if(O.next==W){if(P=!0,O.advance(),n(O.next))do O.advance();while(e(O.next));else if(O.next==W||O.next>127||/\w/.test(String.fromCharCode(O.next)))return}if(O.next==c||O.next==p){if(P=!0,O.advance(),(O.next==d||O.next==f)&&O.advance(),!e(O.next))return;do O.advance();while(e(O.next))}if(O.next==v){let $=O.peek(1);if($==X+3&&O.peek(2)==X+2||$==X+6&&O.peek(2)==X+4)O.advance(3),P=!0;else return}P&&O.acceptToken(T)}else if(O.next==s||O.next==t){if(O.next==s&&O.advance(),O.next!=t)return;O.advance();let P=0;for(;O.next==Y;)P++,O.advance();if(O.next!=z)return;O.advance();O:for(;;){if(O.next<0)return;let $=O.next==z;if(O.advance(),$){for(let S=0;S{O.next==x&&O.acceptToken(R,1)}),u=new a(O=>{O.next==U?O.acceptToken(g,1):O.next==h&&O.acceptToken(b,1)}),k=Z({"const macro_rules struct union enum type fn impl trait let static":Q.definitionKeyword,"mod use crate":Q.moduleKeyword,"pub unsafe async mut extern default move":Q.modifier,"for if else loop while match continue break return await":Q.controlKeyword,"as in ref":Q.operatorKeyword,"where _ crate super dyn":Q.keyword,self:Q.self,String:Q.string,Char:Q.character,RawString:Q.special(Q.string),Boolean:Q.bool,Identifier:Q.variableName,"CallExpression/Identifier":Q.function(Q.variableName),BoundIdentifier:Q.definition(Q.variableName),"FunctionItem/BoundIdentifier":Q.function(Q.definition(Q.variableName)),LoopLabel:Q.labelName,FieldIdentifier:Q.propertyName,"CallExpression/FieldExpression/FieldIdentifier":Q.function(Q.propertyName),Lifetime:Q.special(Q.variableName),ScopeIdentifier:Q.namespace,TypeIdentifier:Q.typeName,"MacroInvocation/Identifier MacroInvocation/ScopedIdentifier/Identifier":Q.macroName,"MacroInvocation/TypeIdentifier MacroInvocation/ScopedIdentifier/TypeIdentifier":Q.macroName,'"!"':Q.macroName,UpdateOp:Q.updateOperator,LineComment:Q.lineComment,BlockComment:Q.blockComment,Integer:Q.integer,Float:Q.float,ArithOp:Q.arithmeticOperator,LogicOp:Q.logicOperator,BitOp:Q.bitwiseOperator,CompareOp:Q.compareOperator,"=":Q.definitionOperator,".. ... => ->":Q.punctuation,"( )":Q.paren,"[ ]":Q.squareBracket,"{ }":Q.brace,". DerefOp":Q.derefOperator,"&":Q.operator,", ; ::":Q.separator,"Attribute/...":Q.meta}),j={__proto__:null,self:28,super:32,crate:34,impl:46,true:72,false:72,pub:88,in:92,const:96,unsafe:104,async:108,move:110,if:114,let:118,ref:142,mut:144,_:198,else:200,match:204,as:248,return:252,await:262,break:270,continue:276,while:312,loop:316,for:320,macro_rules:327,mod:334,extern:342,struct:346,where:364,union:379,enum:382,type:390,default:395,fn:396,trait:412,use:420,static:438,dyn:476},E=o.deserialize({version:14,states:"$2xQ]Q_OOP$wOWOOO&sQWO'#CnO)WQWO'#I`OOQP'#I`'#I`OOQQ'#Ie'#IeO)hO`O'#C}OOQR'#Ih'#IhO)sQWO'#IuOOQO'#Hk'#HkO)xQWO'#DpOOQR'#Iw'#IwO)xQWO'#DpO*ZQWO'#DpOOQO'#Iv'#IvO,SQWO'#J`O,ZQWO'#EiOOQV'#Hp'#HpO,cQYO'#F{OOQV'#El'#ElOOQV'#Em'#EmOOQV'#En'#EnO.YQ_O'#EkO0_Q_O'#EoO2gQWOOO4QQ_O'#FPO7hQWO'#J`OOQV'#FY'#FYO7{Q_O'#F^O:WQ_O'#FaOOQO'#F`'#F`O=sQ_O'#FcO=}Q_O'#FbO@VQWO'#FgOOQO'#J`'#J`OOQV'#Io'#IoOA]Q_O'#InOEPQWO'#InOOQV'#Fw'#FwOF[QWO'#JuOFcQWO'#F|OOQO'#IO'#IOOGrQWO'#GhOOQV'#Im'#ImOOQV'#Il'#IlOOQV'#Hj'#HjQGyQ_OOOKeQ_O'#DUOKlQYO'#CqOOQP'#I_'#I_OOQV'#Hg'#HgQ]Q_OOOLuQWO'#I`ONsQYO'#DXO!!eQWO'#JuO!!lQWO'#JuO!!vQ_O'#DfO!%]Q_O'#E}O!(sQ_O'#FWO!,ZQWO'#FZO!.^QXO'#FbO!.cQ_O'#EeO!!vQ_O'#FmO!0uQWO'#FoO!0zQWO'#FoO!1PQ^O'#FqO!1WQWO'#JuO!1_QWO'#FtO!1dQWO'#FxO!2WQWO'#JjO!2_QWO'#GOO!2_QWO'#G`O!2_QWO'#GbO!2_QWO'#GsOOQO'#Ju'#JuO!2dQWO'#GhO!2lQYO'#GpO!2_QWO'#GqO!3uQ^O'#GtO!3|QWO'#GuO!4hQWO'#HOP!4sOpO'#CcPOOO)CC})CC}OOOO'#Hi'#HiO!5OO`O,59iOOQV,59i,59iO!5ZQYO,5?aOOQO-E;i-E;iOOQO,5:[,5:[OOQP,59Z,59ZO)xQWO,5:[O)xQWO,5:[O!5oQWO,5?kO!5zQYO,5;qO!6PQYO,5;TO!6hQWO,59QO!7kQXO'#CnO!7xQXO'#I`O!9SQWO'#CoO,^QWO'#EiOOQV-E;n-E;nO!9eQWO'#FsOOQV,5WQWO,5:fOOQP,5:h,5:hO!1PQ^O,5:hO!1PQ^O,5:mO$>]QYO,5gQ_O'#HsO$>tQXO,5@QOOQV1G1i1G1iOOQP,5:e,5:eO$>|QXO,5]QYO,5=vO$LRQWO'#KRO$L^QWO,5=xOOQR,5=y,5=yO$LcQWO,5=zO$>]QYO,5>PO$>]QYO,5>POOQO1G.w1G.wO$>]QYO1G.wO$LnQYO,5=pO$LvQZO,59^OOQR,59^,59^O$>]QYO,5=wO% YQZO,5=}OOQR,5=},5=}O%#lQWO1G/_O!6PQYO1G/_O#FYQYO1G2vO%#qQWO1G2vO%$PQYO1G2vOOQV1G/i1G/iO%%YQWO,5:SO%%bQ_O1G/lO%*kQWO1G1^O%+RQWO1G1hOOQO1G1h1G1hO$>]QYO1G1hO%+iQ^O'#EgOOQV1G0k1G0kOOQV1G1s1G1sO!!vQ_O1G1sO!0zQWO1G1uO!1PQ^O1G1wO!.cQ_O1G1wOOQP,5:j,5:jO$>]QYO1G/^OOQO'#Cn'#CnO%+vQWO1G1zOOQV1G2O1G2OO%,OQWO'#CnO%,WQWO1G3TO%,]QWO1G3TO%,bQYO'#GQO%,sQWO'#G]O%-UQYO'#G_O%.hQYO'#GXOOQV1G2U1G2UO%/wQWO1G2UO%/|QWO1G2UO$ARQWO1G2UOOQV1G2f1G2fO%/wQWO1G2fO#CpQWO1G2fO%0UQWO'#GdOOQV1G2h1G2hO%0gQWO1G2hO#C{QWO1G2hO%0lQYO'#GSO$>]QYO1G2lO$AdQWO1G2lOOQV1G2y1G2yO%1xQWO1G2yO%3hQ^O'#GkO%3rQWO1G2nO#DfQWO1G2nO%4QQYO,5]QYO1G2vOOQV1G2w1G2wO%5tQWO1G2wO%5yQWO1G2wO#HXQWO1G2wOOQV1G2z1G2zO.YQ_O1G2zO$>]QYO1G2zO%6RQWO1G2zOOQO,5>l,5>lOOQO-E]QYO1G3UPOOO-E;d-E;dPOOO1G.i1G.iOOQO7+*g7+*gO%7VQYO'#IcO%7nQYO'#IfO%7yQYO'#IfO%8RQYO'#IfO%8^QYO,59eOOQO7+%b7+%bOOQP7+$a7+$aO%8cQ!fO'#JTOOQS'#EX'#EXOOQS'#EY'#EYOOQS'#EZ'#EZOOQS'#JT'#JTO%;UQWO'#EWOOQS'#E`'#E`OOQS'#JR'#JROOQS'#Hn'#HnO%;ZQ!fO,5:oOOQV,5:o,5:oOOQV'#JQ'#JQO%;bQ!fO,5:{OOQV,5:{,5:{O%;iQ!fO,5:|OOQV,5:|,5:|OOQV7+'e7+'eOOQV7+&Z7+&ZO%;pQ!fO,59TOOQO,59T,59TO%>YQWO7+$WO%>_QWO1G1yOOQV1G1y1G1yO!9SQWO1G.uO%>dQWO,5?}O%>nQ_O'#HqO%@|QWO,5?}OOQO1G1X1G1XOOQO7+&}7+&}O%AUQWO,5>^OOQO-E;p-E;pO%AcQWO7+'OO.YQ_O7+'OOOQO7+'O7+'OOOQO7+'P7+'PO%AjQWO7+'POOQO7+'W7+'WOOQP1G0V1G0VO%ArQXO1G/tO!M{QWO1G/tO%BsQXO1G0RO%CkQ^O'#HlO%C{QWO,5?eOOQP1G/u1G/uO%DWQWO1G/uO%D]QWO'#D_OOQO'#Dt'#DtO%DhQWO'#DtO%DmQWO'#I{OOQO'#Iz'#IzO%DuQWO,5:_O%DzQWO'#DtO%EPQWO'#DtOOQP1G0Q1G0QOOQP1G0S1G0SOOQP1G0X1G0XO%EXQXO1G1jO%EdQXO'#FeOOQP,5>_,5>_O!1PQ^O'#FeOOQP-E;q-E;qO$>]QYO1G1jOOQO7+'S7+'SOOQO,5]QYO7+$xOOQV7+'j7+'jO%FsQWO7+(oO%FxQWO7+(oOOQV7+'p7+'pO%/wQWO7+'pO%F}QWO7+'pO%GVQWO7+'pOOQV7+(Q7+(QO%/wQWO7+(QO#CpQWO7+(QOOQV7+(S7+(SO%0gQWO7+(SO#C{QWO7+(SO$>]QYO7+(WO%GeQWO7+(WO#HUQYO7+(cO%GjQWO7+(YO#DfQWO7+(YOOQV7+(c7+(cO%5tQWO7+(cO%5yQWO7+(cO#HXQWO7+(cOOQV7+(g7+(gO$>]QYO7+(pO%GxQWO7+(pO!1dQWO7+(pOOQV7+$v7+$vO%G}QWO7+$vO%HSQZO1G3ZO%JfQWO1G4jOOQO1G4j1G4jOOQR1G.}1G.}O#.WQWO1G.}O%JkQWO'#KQOOQO'#HW'#HWO%J|QWO'#HXO%KXQWO'#KQOOQO'#KP'#KPO%KaQWO,5=qO%KfQYO'#H[O%LrQWO'#GmO%L}QYO'#CtO%MXQWO'#GmO$>]QYO1G3ZOOQR1G3g1G3gO#7aQWO1G3ZO%M^QZO1G3bO$>]QYO1G3bO& mQYO'#IVO& }QWO,5@mOOQR1G3d1G3dOOQR1G3f1G3fO.YQ_O1G3fOOQR1G3k1G3kO&!VQYO7+$cO&!_QYO'#KOOOQQ'#J}'#J}O&!gQYO1G3[O&!lQZO1G3cOOQQ7+$y7+$yO&${QWO7+$yO&%QQWO7+(bOOQV7+(b7+(bO%5tQWO7+(bO$>]QYO7+(bO#FYQYO7+(bO&%YQWO7+(bO!.cQ_O1G/nO&%hQWO7+%WO$?[QWO7+'SO&%pQWO'#EhO&%{Q^O'#EhOOQU'#Ho'#HoO&%{Q^O,5;ROOQV,5;R,5;RO&&VQWO,5;RO&&[Q^O,5;RO!0zQWO7+'_OOQV7+'a7+'aO&&iQWO7+'cO&&qQWO7+'cO&&xQWO7+$xO&'TQ!fO7+'fO&'[Q!fO7+'fOOQV7+(o7+(oO!1dQWO7+(oO&'cQYO,5]QYO'#JrOOQO'#Jq'#JqO&*YQWO,5]QYO'#GUO&,SQYO'#JkOOQQ,5]QYO7+(YO&0SQYO'#HxO&0hQYO1G2WOOQQ1G2W1G2WOOQQ,5]QYO,5]QYO7+(fO&1dQWO'#IRO&1nQWO,5@hOOQO1G3Q1G3QOOQO1G2}1G2}OOQO1G3P1G3POOQO1G3R1G3ROOQO1G3S1G3SOOQO1G3O1G3OO&1vQWO7+(pO$>]QYO,59fO&2RQ^O'#ISO&2xQYO,5?QOOQR1G/P1G/PO&3QQ!bO,5:pO&3VQ!fO,5:rOOQS-E;l-E;lOOQV1G0Z1G0ZOOQV1G0g1G0gOOQV1G0h1G0hO&3^QWO'#JTOOQO1G.o1G.oOOQV<]O&3qQWO,5>]OOQO-E;o-E;oOOQO<WOOQO-E;j-E;jOOQP7+%a7+%aO!1PQ^O,5:`O&5cQWO'#HmO&5wQWO,5?gOOQP1G/y1G/yOOQO,5:`,5:`O&6PQWO,5:`O%DzQWO,5:`O$>]QYO,5`,5>`OOQO-E;r-E;rOOQV7+'l7+'lO&6yQWO<]QYO<]QYO<]QYO<]QYO7+(uOOQO7+*U7+*UOOQR7+$i7+$iO&8cQWO,5@lOOQO'#Gm'#GmO&8kQWO'#GmO&8vQYO'#IUO&8cQWO,5@lOOQR1G3]1G3]O&:cQYO,5=vO&;rQYO,5=XO&;|QWO,5=XOOQO,5=X,5=XOOQR7+(u7+(uO&eQZO7+(|O&@tQWO,5>qOOQO-E]QYO<]QYO,5]QYO,5@^O&D^QYO'#H|O&EsQWO,5@^OOQO1G2e1G2eO%,nQWO,5]QYO,5PO&I]QYO,5@VOOQV<]QYO,5=WO&KuQWO,5@cO&K}QWO,5@cO&MvQ^O'#IPO&KuQWO,5@cOOQO1G2q1G2qO&NTQWO,5=WO&N]QWO<oO&NvQYO,5>dO' UQYO,5>dOOQQ,5>d,5>dOOQQ-E;v-E;vOOQQ7+'r7+'rO' aQYO1G2]O$>]QYO1G2^OOQV<m,5>mOOQO-EnOOQQ,5>n,5>nO'!fQYO,5>nOOQQ-EX,5>XOOQO-E;k-E;kO!1PQ^O1G/zOOQO1G/z1G/zO'%oQWO1G/zO'%tQXO1G1kO$>]QYO1G1kO'&PQWO7+'[OOQVANA`ANA`O'&ZQWOANA`O$>]QYOANA`O'&cQWOANA`OOQVAN>OAN>OO.YQ_OAN>OO'&qQWOANAuOOQVAN@vAN@vO'&vQWOAN@vOOQVANAWANAWOOQVANAYANAYOOQVANA^ANA^O'&{QWOANA^OOQVANAiANAiO%5tQWOANAiO%5yQWOANAiO''TQWOANA`OOQVANAvANAvO.YQ_OANAvO''cQWOANAvO$>]QYOANAvOOQR<pOOQO'#HY'#HYO''vQWO'#HZOOQO,5>p,5>pOOQO-E]QYO<o,5>oOOQQ-E]QYOANAhO'(bQWO1G1rO')UQ^O1G0nO.YQ_O1G0nO'*zQWO,5;UO'+RQWO1G0nP'+WQWO'#ERP&%{Q^O'#HpOOQV7+&X7+&XO'+cQWO7+&XO&&qQWOAN@iO'+hQWOAN>OO!5oQWO,5a,5>aO'+oQWOAN@lO'+tQWOAN@lOOQS-E;s-E;sOOQVAN@lAN@lO'+|QWOAN@lOOQVANAuANAuO',UQWO1G5vO',^QWO1G2dO$>]QYO1G2dO&'|QWO,5>gOOQO,5>g,5>gOOQO-E;y-E;yO',iQWO1G5xO',qQWO1G5xO&(nQYO,5>hO',|QWO,5>hO$>]QYO,5>hOOQO-E;z-E;zO'-XQWO'#JnOOQO1G2a1G2aOOQO,5>f,5>fOOQO-E;x-E;xO&'cQYO,5iOOQO,5>i,5>iOOQO-E;{-E;{OOQQ,5>c,5>cOOQQ-E;u-E;uO'.pQWO1G2sO'/QQWO1G2rO'/]QWO1G5}O'/eQ^O,5>kOOQO'#Go'#GoOOQO,5>k,5>kO'/lQWO,5>kOOQO-E;}-E;}O$>]QYO1G2rO'/zQYO7+'xO'0VQWOANAlOOQVANAlANAlO.YQ_OANAlO'0^QWOANAvOOQS7+%x7+%xO'0eQWO7+%xO'0pQ!fO7+%xO'0}QWO7+%fO!1PQ^O7+%fO'1YQXO7+'VOOQVG26zG26zO'1eQWOG26zO'1sQWOG26zO$>]QYOG26zO'1{QWOG23jOOQVG27aG27aOOQVG26bG26bOOQVG26xG26xOOQVG27TG27TO%5tQWOG27TO'2SQWOG27bOOQVG27bG27bO.YQ_OG27bO'2ZQWOG27bOOQO1G4[1G4[OOQO7+(_7+(_OOQRANA{ANA{OOQVG27SG27SO%5tQWOG27SO&0uQWOG27SO'2fQ^O7+&YO'4PQWO7+'^O'4sQ^O7+&YO.YQ_O7+&YP.YQ_O,5;SP'6PQWO,5;SP'6UQWO,5;SOOQV<]QYO1G4SO%,nQWO'#HyO'7UQWO,5@YO'7dQWO7+(VO.YQ_O7+(VOOQO1G4T1G4TOOQO1G4V1G4VO'7nQWO1G4VO'7|QWO7+(^OOQVG27WG27WO'8XQWOG27WOOQS<e,5>eOOQO-E;w-E;wO'?rQWO<wD_DpPDvHQPPPPPPK`P! P! _PPPPP!!VP!$oP!$oPP!&oP!(rP!(w!)n!*f!*f!*f!(w!+]P!(w!.Q!.TPP!.ZP!(w!(w!(w!(wP!(w!(wP!(w!(w!.y!/dP!/dJ}J}J}PPPP!/d!.y!/sPP!$oP!0^!0a!0g!1h!1t!3t!3t!5r!7t!1t!1t!9p!;_!=O!>k!@U!Am!CS!De!1t!1tP!1tP!1t!1t!Et!1tP!Ge!1t!1tP!Ie!1tP!1t!7t!7t!1t!7t!1t!Kl!Mt!Mw!7t!1t!Mz!M}!M}!M}!NR!$oP!$oP!$oP! P! PP!N]! P! PP!Ni# }! PP! PP#!^##c##k#$Z#$_#$e#$e#$mP#&s#&s#&y#'o#'{! PP! PP#(]#(l! PP! PPP#(x#)W#)d#)|#)^! P! PP! P! P! PP#*S#*S#*Y#*`#*S#*S! P! PP#*m#*v#+Q#+Q#,x#.l#.x#.x#.{#.{5a5a5a5a5a5a5a5aP5a#/O#/U#/p#1{#2R#2b#6^#6d#6j#6|#7W#8w#9R#9b#9h#9n#9x#:S#:Y#:g#:m#:s#:}#;]#;g#=u#>R#>`#>f#>n#>u#?PPPPPPPP#?V#BaP#F^#Jx#Ls#Nr$&^P$&aPPP$)_$)h$)z$/U$1d$1m$3fP!(w$4`$7r$:i$>T$>^$>c$>fPPP$>i$A`$A|P$BaPPPPPPPPPP$BvP$EU$EX$E[$Eb$Ee$Eh$Ek$En$Et$HO$HR$HU$HX$H[$H_$Hb$He$Hh$Hk$Hn$Jt$Jw$Jz#*S$KW$K^$Ka$Kd$Kh$Kl$Ko$KrQ!tPT'V!s'Wi!SOlm!P!T$T$W$y%b)U*f/gQ'i#QR,n'l(OSOY[bfgilmop!O!P!T!Y!Z![!_!`!c!p!q!|!}#Q#U#Z#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$`$a$e$g$h$q$r$y%X%_%b&U&Y&[&b&u&z&|'P'a'l'n'o'}(W(Y(b(d(e(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n+z,q,s,z-R-T-g-m-t.}/^/b/d/g0e0g0m0}1P1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f:gS(z$v-oQ*p&eQ*t&hQ-k(yQ-y)ZW0Z+Q0Y4Z7UR4Y0[&w!RObfgilmop!O!P!T!Y!Z![!_!`!c!p#Q#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r$y%_%b&U&Y&[&b&u'l'}(W(Y(b(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n,s,z-T-g-m-t.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f#r]Ofgilmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9hb#[b#Q$y'l(b)S)U*Z-t!h$bo!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m$b%k!Q!n$O$u%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g!W:y!Y!_!`*i*l/^3h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fR:|%n$_%u!Q!n$O$u%o%p%q&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g$e%l!Q!n$O$u%n%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g'hZOY[fgilmop!O!P!T!Y!Z![!_!`!c!p!|!}#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$`$a$e$g$h$q$r%_%b%i%j&U&Y&[&b&u'a'}(W(Y(d(e(f(j(o(p(r(|)i)p)q*f*i*k*l+Z+n,s,z-R-T-g-m.i.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:`:a:e:f:g:t:u:x$^%l!Q!n$O$u%n%o%p%q%y%{&P&p&r(q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gQ&j!hQ&k!iQ&l!jQ&m!kQ&s!oQ)[%QQ)]%RQ)^%SQ)_%TQ)b%WQ+`&oS,R']1ZQ.W)`S/r*u4TR4n0s+yTOY[bfgilmop!O!P!Q!T!Y!Z![!_!`!c!n!p!q!|!}#Q#U#Z#e#o#p#q#r#s#t#u#v#w#x#y#z#}$O$T$W$`$a$e$g$h$q$r$u$y%X%_%b%i%j%n%o%p%q%y%{&P&U&Y&[&b&o&p&r&u&z&|'P']'a'l'n'o'}(W(Y(b(d(e(f(j(o(p(q(r(|)S)U)i)p)q)s)x)y*O*P*R*V*Z*[*^*e*f*i*k*l*n*w*x+U+V+Z+h+n+o+z+},q,s,z-R-T-g-i-m-t-v.U.`.i.p.t.x.y.}/Z/[/^/b/d/g/{/}0`0e0g0m0r0w0}1O1P1Y1Z1h1r1y1|2a2h2j2m2s2v3V3_3a3f3h3k3u3{3|4R4U4W4_4c4e4h4t4v4|5[5`5d5g5t5v6R6Y6]6a6p6v6x7S7^7c7g7m7r7{8W8X8g8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:`:a:e:f:g:t:u:xQ'[!xQ'h#PQ)l%gU)r%m*T*WR.f)kQ,T']R5P1Z#t%s!Q!n$O$u%p%q&P&p&r(q)x)y*O*R*V*[*^*e*n*w+V+h+o+}-i-v.U.`.t.x.y/Z/[/{/}0`0r0w1O1Y1y2a2h2j2m2v3V3u3{3|4U4e4t5`5d5v6R6Y6p6v6x7c7r8gQ)x%oQ+_&oQ,U']n,^'b'c'd,c,f,h,l/m/n1_3n3q5T5U7kS.q)s2sQ/O*PQ/Q*SQ/q*uS0Q*x4RQ0a+U[0o+Z.j0g4h5y7^Q2v.pS4d0e2rQ4m0sQ5Q1ZQ6T3RQ6z4PQ7O4TQ7X4_R9Y8h&jVOfgilmop!O!P!T!Y!Z![!_!`!c!p#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r%_%b&U&Y&[&b&u']'}(W(Y(b(f(j(o(p(r(|)i*f*i*k*l+Z+n,s,z-T-g-m.}/^/b/d/g0e0g0m0}1Z1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fU&g!g%P%[o,^'b'c'd,c,f,h,l/m/n1_3n3q5T5U7k$nsOfgilm!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y'}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9z9{:O:P:Q:R:S:T:U:V:W:X:Y:eS$tp9xS&O!W#bS&Q!X#cQ&`!bQ*_&RQ*a&VS*d&[:fQ*h&^Q,T']Q-j(wQ/i*jQ0p+[S2f.X0qQ3]/_Q3^/`Q3g/hQ3i/kQ5P1ZU5b2R2g4lU7o5c5e5rQ8]6dS8u7p7qS9_8v8wR9i9`i{Ob!O!P!T$y%_%b)S)U)i-thxOb!O!P!T$y%_%b)S)U)i-tW/v*v/t3w6qQ/}*wW0[+Q0Y4Z7UQ3{/{Q6x3|R8g6v!h$do!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mQ&d!dQ&f!fQ&n!mW&x!q%X&|1PQ'S!rQ)X$}Q)Y%OQ)a%VU)d%Y'T'UQ*s&hS+s&z'PS-Y(k1sQ-u)WQ-x)ZS.a)e)fS0x+c/sQ1S+zQ1W+{S1v-_-`Q2k.bQ3s/pQ5]1xR5h2V${sOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f$zsOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fR3]/_V&T!Y!`*i!i$lo!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m!k$^o!c!p$e$g$h$q$r&U&b&u(b(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m!i$co!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m&e^Ofgilmop!O!P!T!Y!Z![!_!`!c!p#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r%_%b&U&Y&[&b&u'}(W(Y(f(j(o(p(r(|)i*f*i*k*l+Z+n,s,z-T-g-m.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fR(l$fQ-[(kR5Y1sQ(S#|S({$v-oS-Z(k1sQ-l(yW/u*v/t3w6qS1w-_-`Q3v/vR5^1xQ'e#Or,e'b'c'd'j'p)u,c,f,h,l/m/n1_3n3q5U6fR,o'mk,a'b'c'd,c,f,h,l/m/n1_3n3q5UQ'f#Or,e'b'c'd'j'p)u,c,f,h,l/m/n1_3n3q5U6fR,p'mR*g&]X/c*f/d/g3f!}aOb!O!P!T#z$v$y%_%b'}(y)S)U)i)s*f*v*w+Q+Z,s-o-t.j/b/d/g/t/{0Y0g1h2s3f3w3|4Z4h5y6a6q6v7U7^Q3`/aQ6_3bQ8Y6`R9V8Z${rOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f#nfOfglmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h!T9u!Y!_!`*i*l/^3h9u9v9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:e:f#rfOfgilmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h!X9u!Y!_!`*i*l/^3h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f$srOfglmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:e:f#U#oh#d$P$Q$V$s%^&W&X'q't'u'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9b}:P&S&]/k3[6d:[:]:c:d:h:j:k:l:m:n:o:p:q:r:v:w:{#W#ph#d$P$Q$V$s%^&W&X'q'r't'u'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9b!P:Q&S&]/k3[6d:[:]:c:d:h:i:j:k:l:m:n:o:p:q:r:v:w:{#S#qh#d$P$Q$V$s%^&W&X'q'u'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9b{:R&S&]/k3[6d:[:]:c:d:h:k:l:m:n:o:p:q:r:v:w:{#Q#rh#d$P$Q$V$s%^&W&X'q'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9by:S&S&]/k3[6d:[:]:c:d:h:l:m:n:o:p:q:r:v:w:{#O#sh#d$P$Q$V$s%^&W&X'q'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9bw:T&S&]/k3[6d:[:]:c:d:h:m:n:o:p:q:r:v:w:{!|#th#d$P$Q$V$s%^&W&X'q'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9bu:U&S&]/k3[6d:[:]:c:d:h:n:o:p:q:r:v:w:{!x#vh#d$P$Q$V$s%^&W&X'q'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9bq:W&S&]/k3[6d:[:]:c:d:h:p:q:r:v:w:{!v#wh#d$P$Q$V$s%^&W&X'q'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9bo:X&S&]/k3[6d:[:]:c:d:h:q:r:v:w:{$]#{h#`#d$P$Q$V$s%^&S&W&X&]'q'r's't'u'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n/k0z1i1l1}3P3[4w5V5a6^6d6e7R7e7h7s7y8j8q8{9[9b:[:]:c:d:h:i:j:k:l:m:n:o:p:q:r:v:w:{${jOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f$v!aOfgilmp!O!P!T!Y!Z!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fQ&Y![Q&Z!]R:e9{#rpOfgilmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9hQ&[!^!W9x!Y!_!`*i*l/^3h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fR:f:zR$moR-f(rR$wqT(}$v-oQ/f*fS3d/d/gR6c3fQ3m/mQ3p/nQ6i3nR6l3qQ$zwQ)V${Q*q&fQ+f&qQ+i&sQ-w)YW.Z)b+j+k+lS/X*]+gW2b.W.[.].^U3W/Y/]0yU5o2c2d2eS6W3X3ZS7w5p5qS8Q6V6XQ8y7xS8}8R8SR9c9O^|O!O!P!T%_%b)iX)R$y)S)U-tQ&r!nQ*^&PQ*|&jQ+P&kQ+T&lQ+W&mQ+]&nQ+l&sQ-})[Q.Q)]Q.T)^Q.V)_Q.Y)aQ.^)bQ2S-uQ2e.WR4U0VU+a&o*u4TR4o0sQ+Y&mQ+k&sS.])b+l^0v+_+`/q/r4m4n7OS2d.W.^S4Q0R0SR5q2eS0R*x4RQ0a+UR7X4_U+d&o*u4TR4p0sQ*z&jQ+O&kQ+S&lQ+g&qQ+j&sS-{)[*|S.P)]+PS.S)^+TU.[)b+k+lQ/Y*]Q0X*{Q0q+[Q2X-|Q2Y-}Q2].QQ2_.TU2c.W.].^Q2g.XS3Z/]0yS5c2R4lQ5j2ZS5p2d2eQ6X3XS7q5e5rQ7x5qQ8R6VQ8v7pQ9O8SR9`8wQ0T*xR6|4RQ*y&jQ*}&kU-z)[*z*|U.O)]+O+PS2W-{-}S2[.P.QQ4X0ZQ5i2YQ5k2]R7T4YQ/w*vQ3t/tQ6r3wR8d6qQ*{&jS-|)[*|Q2Z-}Q4X0ZR7T4YQ+R&lU.R)^+S+TS2^.S.TR5l2_Q0]+QQ4V0YQ7V4ZR8l7UQ+[&nS.X)a+]S2R-u.YR5e2SQ0i+ZQ4f0gQ7`4hR8m7^Q.m)sQ0i+ZQ2p.jQ4f0gQ5|2sQ7`4hQ7}5yR8m7^Q0i+ZR4f0gX'O!q%X&|1PX&{!q%X&|1PW'O!q%X&|1PS+u&z'PR1U+z_|O!O!P!T%_%b)iQ%a!PS)h%_%bR.d)i$^%u!Q!n$O$u%o%p%q&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gQ*U%yR*X%{$c%n!Q!n$O$u%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gW)t%m%x*T*WQ.e)jR2{.vR.m)sR5|2sQ'W!sR,O'WQ!TOQ$TlQ$WmQ%b!P[%|!T$T$W%b)U/gQ)U$yR/g*f$b%i!Q!n$O$u%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g[)n%i)p.i:`:t:xQ)p%jQ.i)qQ:`%nQ:t:aR:x:uQ!vUR'Y!vS!OO!TU%]!O%_)iQ%_!PR)i%b#rYOfgilmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9hh!yY!|#U$`'a'n(d,q-R9s9|:gQ!|[b#Ub#Q$y'l(b)S)U*Z-t!h$`o!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mQ'a!}Q'n#ZQ(d$aQ,q'oQ-R(e!W9s!Y!_!`*i*l/^3h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fQ9|9tR:g9}Q-U(gR1p-UQ1t-[R5Z1tQ,c'bQ,f'cQ,h'dW1`,c,f,h5UR5U1_Q/d*fS3c/d3fR3f/gfbO!O!P!T$y%_%b)S)U)i-tp#Wb'}(y.j/b/t/{0Y0g1h5y6a6q6v7U7^Q'}#zS(y$v-oQ.j)sW/b*f/d/g3fQ/t*vQ/{*wQ0Y+QQ0g+ZQ1h,sQ5y2sQ6q3wQ6v3|Q7U4ZR7^4hQ,t(OQ1g,rT1j,t1gS(X$Q([Q(^$VU,x(X(^,}R,}(`Q(s$mR-h(sQ-p)OR2P-pQ3n/mQ3q/nT6j3n3qQ)S$yS-r)S-tR-t)UQ4`0aR7Y4``0t+^+_+`+a+d/q/r7OR4q0tQ8i6zR9Z8iQ4S0TR6}4SQ3x/wQ6n3tT6s3x6nQ3}/|Q6t3zU6y3}6t8eR8e6uQ4[0]Q7Q4VT7W4[7QhzOb!O!P!T$y%_%b)S)U)i-tQ$|xW%Zz$|%f)v$b%f!Q!n$O$u%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gR)v%nS4i0i0nS7]4f4gT7b4i7]W&z!q%X&|1PS+r&z+zR+z'PQ1Q+wR4z1QU1[,S,T,UR5R1[S3S/Q7OR6U3SQ2t.mQ5x2pT5}2t5xQ.z)zR3O.z^_O!O!P!T%_%b)iY#Xb$y)S)U-t$l#_fgilmp!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W&Y&['}(W(Y(|*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f!h$io!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mS'j#Q'lQ-P(bR/V*Z&v!RObfgilmop!O!P!T!Y!Z![!_!`!c!p#Q#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r$y%_%b&U&Y&[&b&u'l'}(W(Y(b(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n,s,z-T-g-m-t.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f[!{Y[#U#Z9s9tW&{!q%X&|1P['`!|!}'n'o9|9}S(c$`$aS+t&z'PU,X'a,q:gS-Q(d(eQ1T+zR1n-RS%t!Q&oQ&q!nQ(V$OQ(w$uS)w%o.pQ)z%pQ)}%qS*]&P&rQ+e&pQ,S']Q-d(qQ.l)sU.w)x)y2vS/O*O*PQ/P*RQ/T*VQ/W*[Q/]*^Q/`*eQ/l*nQ/|*wS0S*x4RQ0a+UQ0c+VQ0y+hQ0{+oQ1X+}Q1{-iQ2T-vQ2`.UQ2i.`Q2z.tQ2|.xQ2}.yQ3X/ZQ3Y/[S3z/{/}Q4^0`Q4l0rQ4s0wQ4x1OQ4}1YQ5O1ZQ5_1yQ5n2aQ5r2hQ5u2jQ5w2mQ5{2sQ6V3VQ6o3uQ6u3{Q6w3|Q7P4UQ7X4_Q7[4eQ7d4tQ7n5`Q7p5dQ7|5vQ8P6RQ8S6YQ8c6pS8f6v6xQ8o7cQ8w7rR9X8g$^%m!Q!n$O$u%o%p%q&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gQ)j%nQ*T%yR*W%{$y%h!Q!n$O$u%i%j%n%o%p%q%y%{&P&o&p&r'](q)p)q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.i.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g:`:a:t:u:x'pWOY[bfgilmop!O!P!T!Y!Z![!_!`!c!p!|!}#Q#U#Z#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$`$a$e$g$h$q$r$y%_%b&U&Y&[&b&u'a'l'n'o'}(W(Y(b(d(e(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n,q,s,z-R-T-g-m-t.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f:g$x%g!Q!n$O$u%i%j%n%o%p%q%y%{&P&o&p&r'](q)p)q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.i.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g:`:a:t:u:x_&y!q%X&z&|'P+z1PR,V']$zrOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f!j$]o!c!p$e$g$h$q$r&U&b&u(b(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mQ,T']R5P1Z_}O!O!P!T%_%b)i^|O!O!P!T%_%b)iQ#YbX)R$y)S)U-tbhO!O!T3_6]8W8X9U9hS#`f9uQ#dgQ$PiQ$QlQ$VmQ$spW%^!P%_%b)iU&S!Y!`*iQ&W!ZQ&X![Q&]!_Q'q#eQ'r#oS's#p:QQ't#qQ'u#rQ'v#sQ'w#tQ'x#uQ'y#vQ'z#wQ'{#xQ'|#yQ(O#zQ(U#}Q([$TQ(`$WQ*b&YQ*c&[Q,r'}Q,w(WQ,y(YQ-n(|Q/k*lQ0z+nQ1i,sQ1l,zQ1}-mQ3P.}Q3[/^Q4w0}Q5V1hQ5a1|Q6^3aQ6d3hQ6e3kQ7R4WQ7e4vQ7h4|Q7s5gQ7y5tQ8j7SQ8q7gQ8{7{Q9[8kQ9b8|Q:[9wQ:]9xQ:c9zQ:d9{Q:h:OQ:i:PQ:j:RQ:k:SQ:l:TQ:m:UQ:n:VQ:o:WQ:p:XQ:q:YQ:r:ZQ:v:eQ:w:fR:{9v^tO!O!P!T%_%b)i$`#afgilmp!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W&Y&['}(W(Y(|*i*l+n,s,z-m.}/^0}1h1|3a3h3k4W4v4|5g5t7S7g7{8k8|9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fQ6[3_Q8V6]Q9R8WQ9T8XQ9g9UR9m9hQ&V!YQ&^!`R/h*iQ$joQ&a!cQ&t!pU(g$e$g(jS(n$h0eQ(u$qQ(v$rQ*`&UQ*m&bQ+p&uQ-S(fS-b(o4cQ-c(pQ-e(rW/a*f/d/g3fQ/j*kW0f+Z0g4h7^Q1o-TQ1z-gQ3b/bQ4k0mQ5X1rQ7l5[Q8Z6aR8t7m!h$_o!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mR-P(b'qXOY[bfgilmop!O!P!T!Y!Z![!_!`!c!p!|!}#Q#U#Z#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$`$a$e$g$h$q$r$y%_%b&U&Y&[&b&u'a'l'n'o'}(W(Y(b(d(e(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n,q,s,z-R-T-g-m-t.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f:g$zqOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f!i$fo!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m&d^Ofgilmop!O!P!T!Y!Z![!_!`!c!p#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r%_%b&U&Y&[&b&u'}(W(Y(f(j(o(p(r(|)i*f*i*k*l+Z+n,s,z-T-g-m.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f[!zY[$`$a9s9t['_!|!}(d(e9|9}W)o%i%j:`:aU,W'a-R:gW.h)p)q:t:uT2o.i:xQ(i$eQ(m$gR-W(jV(h$e$g(jR-^(kR-](k$znOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f!i$ko!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mS'g#O'pj,a'b'c'd,c,f,h,l/m/n1_3n3q5UQ,m'jQ.u)uR8_6f`,b'b'c'd,c,f,h1_5UQ1e,lX3l/m/n3n3qj,a'b'c'd,c,f,h,l/m/n1_3n3q5UQ7j5TR8s7k^uO!O!P!T%_%b)i$`#afgilmp!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W&Y&['}(W(Y(|*i*l+n,s,z-m.}/^0}1h1|3a3h3k4W4v4|5g5t7S7g7{8k8|9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fQ6Z3_Q8U6]Q9Q8WQ9S8XQ9f9UR9l9hR(Q#zR(P#zQ$SlR(]$TR$ooR$noR)Q$vR)P$vQ)O$vR2O-ohwOb!O!P!T$y%_%b)S)U)i-t$l!lz!Q!n$O$u$|%f%n%o%p%q%y%{&P&o&p&r'](q)s)v)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gR${xR0b+UR0W*xR0U*xR6{4PR/y*vR/x*vR0P*wR0O*wR0_+QR0^+Q%XyObxz!O!P!Q!T!n$O$u$y$|%_%b%f%n%o%p%q%y%{&P&o&p&r'](q)S)U)i)s)v)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-t-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gR0k+ZR0j+ZQ'R!qQ)c%XQ+w&|R4y1PX'Q!q%X&|1PR+y&|R+x&|T/S*S4TT/R*S4TR.o)sR.n)sR){%p",nodeNames:"⚠ | < > RawString Float LineComment BlockComment SourceFile ] InnerAttribute ! [ MetaItem self Metavariable super crate Identifier ScopedIdentifier :: QualifiedScope AbstractType impl SelfType MetaType TypeIdentifier ScopedTypeIdentifier ScopeIdentifier TypeArgList TypeBinding = Lifetime String Escape Char Boolean Integer } { Block ; ConstItem Vis pub ( in ) const BoundIdentifier : UnsafeBlock unsafe AsyncBlock async move IfExpression if LetDeclaration let LiteralPattern ArithOp MetaPattern SelfPattern ScopedIdentifier TuplePattern ScopedTypeIdentifier , StructPattern FieldPatternList FieldPattern ref mut FieldIdentifier .. RefPattern SlicePattern CapturedPattern ReferencePattern & MutPattern RangePattern ... OrPattern MacroPattern ParenthesizedTokens TokenBinding Identifier TokenRepetition ArithOp BitOp LogicOp UpdateOp CompareOp -> => ArithOp BracketedTokens BracedTokens _ else MatchExpression match MatchBlock MatchArm Attribute Guard UnaryExpression ArithOp DerefOp LogicOp ReferenceExpression TryExpression BinaryExpression ArithOp ArithOp BitOp BitOp BitOp BitOp LogicOp LogicOp AssignmentExpression TypeCastExpression as ReturnExpression return RangeExpression CallExpression ArgList AwaitExpression await FieldExpression GenericFunction BreakExpression break LoopLabel ContinueExpression continue IndexExpression ArrayExpression TupleExpression MacroInvocation UnitExpression ClosureExpression ParamList Parameter Parameter ParenthesizedExpression StructExpression FieldInitializerList ShorthandFieldInitializer FieldInitializer BaseFieldInitializer MatchArm WhileExpression while LoopExpression loop ForExpression for MacroInvocation MacroDefinition macro_rules MacroRule EmptyStatement ModItem mod DeclarationList AttributeItem ForeignModItem extern StructItem struct TypeParamList ConstrainedTypeParameter TraitBounds HigherRankedTraitBound RemovedTraitBound OptionalTypeParameter ConstParameter WhereClause where LifetimeClause TypeBoundClause FieldDeclarationList FieldDeclaration OrderedFieldDeclarationList UnionItem union EnumItem enum EnumVariantList EnumVariant TypeItem type FunctionItem default fn ParamList Parameter SelfParameter VariadicParameter VariadicParameter ImplItem TraitItem trait AssociatedType LetDeclaration UseDeclaration use ScopedIdentifier UseAsClause ScopedIdentifier UseList ScopedUseList UseWildcard ExternCrateDeclaration StaticItem static ExpressionStatement ExpressionStatement GenericType FunctionType ForLifetimes ParamList VariadicParameter Parameter VariadicParameter Parameter ReferenceType PointerType TupleType UnitType ArrayType MacroInvocation EmptyType DynamicType dyn BoundedType",maxTerm:359,nodeProps:[["isolate",-4,4,6,7,33,""],["group",-42,4,5,14,15,16,17,18,19,33,35,36,37,40,51,53,56,101,107,111,112,113,122,123,125,127,128,130,132,133,134,137,139,140,141,142,143,144,148,149,155,157,159,"Expression",-16,22,24,25,26,27,222,223,230,231,232,233,234,235,236,237,239,"Type",-20,42,161,162,165,166,169,170,172,188,190,194,196,204,205,207,208,209,217,218,220,"Statement",-17,49,60,62,63,64,65,68,74,75,76,77,78,80,81,83,84,99,"Pattern"],["openedBy",9,"[",38,"{",47,"("],["closedBy",12,"]",39,"}",45,")"]],propSources:[k],skippedNodes:[0,6,7,240],repeatNodeCount:32,tokenData:"$%h_R!XOX$nXY5gYZ6iZ]$n]^5g^p$npq5gqr7Xrs9cst:Rtu;Tuv>vvwAQwxCbxy!+Tyz!,Vz{!-X{|!/_|}!0g}!O!1i!O!P!3v!P!Q!8[!Q!R!Bw!R![!Dr![!]#+q!]!^#-{!^!_#.}!_!`#1b!`!a#3o!a!b#6S!b!c#7U!c!}#8W!}#O#:T#O#P#;V#P#Q#Cb#Q#R#Dd#R#S#8W#S#T$n#T#U#8W#U#V#El#V#f#8W#f#g#Ic#g#o#8W#o#p$ S#p#q$!U#q#r$$f#r${$n${$|#8W$|4w$n4w5b#8W5b5i$n5i6S#8W6S;'S$n;'S;=`4s<%lO$nU$u]'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$nU%uV'_Q'OSOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[S&aV'OSOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[S&yVOz'`z{&v{!P'`!P!Q*y!Q;'S'`;'S;=`*m<%lO'`S'cVOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[S'{UOz'`{!P'`!P!Q(_!Q;'S'`;'S;=`*m<%lO'`S(bUOz(t{!P(t!P!Q(_!Q;'S(t;'S;=`*a<%lO(tS(wVOz)^z{)z{!P)^!P!Q(_!Q;'S)^;'S;=`*g<%lO)^S)eV'PS'OSOz)^z{)z{!P)^!P!Q(_!Q;'S)^;'S;=`*g<%lO)^S)}UOz(tz{)z{!P(t!Q;'S(t;'S;=`*a<%lO(tS*dP;=`<%l(tS*jP;=`<%l)^S*pP;=`<%l'`S*vP;=`<%l&[S+OO'PSU+T]'_QOY+|YZ-xZr+|rs'`sz+|z{+O{!P+|!P!Q4y!Q#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|U,R]'_QOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$nU-P]'_QOY+|YZ-xZr+|rs'`sz+|z{.d{!P+|!P!Q/Z!Q#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|U-}V'_QOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[Q.iV'_QOY.dYZ/OZr.ds#O.d#P;'S.d;'S;=`/T<%lO.dQ/TO'_QQ/WP;=`<%l.dU/`]'_QOY0XYZ3uZr0Xrs(tsz0Xz{.d{!P0X!P!Q/Z!Q#O0X#O#P(t#P;'S0X;'S;=`4a<%lO0XU0^]'_QOY1VYZ2XZr1Vrs)^sz1Vz{2w{!P1V!P!Q/Z!Q#O1V#O#P)^#P;'S1V;'S;=`4g<%lO1VU1`]'_Q'PS'OSOY1VYZ2XZr1Vrs)^sz1Vz{2w{!P1V!P!Q/Z!Q#O1V#O#P)^#P;'S1V;'S;=`4g<%lO1VU2bV'_Q'PS'OSOz)^z{)z{!P)^!P!Q(_!Q;'S)^;'S;=`*g<%lO)^U2|]'_QOY0XYZ3uZr0Xrs(tsz0Xz{2w{!P0X!P!Q.d!Q#O0X#O#P(t#P;'S0X;'S;=`4a<%lO0XU3zV'_QOz)^z{)z{!P)^!P!Q(_!Q;'S)^;'S;=`*g<%lO)^U4dP;=`<%l0XU4jP;=`<%l1VU4pP;=`<%l+|U4vP;=`<%l$nU5QV'_Q'PSOY.dYZ/OZr.ds#O.d#P;'S.d;'S;=`/T<%lO.d_5p]'_Q&|X'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_6rV'_Q&|X'OSOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[_7b_ZX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`8a!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_8j]#PX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_9lV']Q'OS'^XOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[_:[]'QX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_;^i'_Q'vW'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!c$n!c!}<{!}#O$n#O#P&[#P#R$n#R#S<{#S#T$n#T#o<{#o${$n${$|<{$|4w$n4w5b<{5b5i$n5i6S<{6S;'S$n;'S;=`4s<%lO$n_=Uj'_Q_X'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![<{![!c$n!c!}<{!}#O$n#O#P&[#P#R$n#R#S<{#S#T$n#T#o<{#o${$n${$|<{$|4w$n4w5b<{5b5i$n5i6S<{6S;'S$n;'S;=`4s<%lO$n_?P_(TP'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_@X]#OX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_AZa!qX'_Q'OSOY$nYZ%nZr$nrs&[sv$nvwB`wz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_Bi]'}X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_Cik'_Q'OSOYE^YZGfZrE^rsHvswE^wxFdxzE^z{Ih{!PE^!P!QKl!Q!cE^!c!}Lp!}#OE^#O#P!!l#P#RE^#R#SLp#S#TE^#T#oLp#o${E^${$|Lp$|4wE^4w5bLp5b5iE^5i6SLp6S;'SE^;'S;=`!*}<%lOE^_Ee_'_Q'OSOY$nYZ%nZr$nrs&[sw$nwxFdxz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_Fm]'_Q'OSsXOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_GmX'_Q'OSOw&[wxHYxz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[]HaV'OSsXOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[]H{X'OSOw&[wxHYxz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[_Im_'_QOY+|YZ-xZr+|rs'`sw+|wxJlxz+|z{+O{!P+|!P!Q4y!Q#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|_Js]'_QsXOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_Kq_'_QOY+|YZ-xZr+|rs'`sw+|wxJlxz+|z{.d{!P+|!P!Q/Z!Q#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|_Lyl'_Q'OS'ZXOY$nYZ%nZr$nrs&[sw$nwxFdxz$nz{+O{!P$n!P!Q,z!Q![Nq![!c$n!c!}Nq!}#O$n#O#P&[#P#R$n#R#SNq#S#T$n#T#oNq#o${$n${$|Nq$|4w$n4w5bNq5b5i$n5i6SNq6S;'S$n;'S;=`4s<%lO$n_Nzj'_Q'OS'ZXOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![Nq![!c$n!c!}Nq!}#O$n#O#P&[#P#R$n#R#SNq#S#T$n#T#oNq#o${$n${$|Nq$|4w$n4w5bNq5b5i$n5i6SNq6S;'S$n;'S;=`4s<%lO$n]!!qZ'OSOzHvz{!#d{!PHv!P!Q!$n!Q#iHv#i#j!%Z#j#lHv#l#m!'V#m;'SHv;'S;=`!*w<%lOHv]!#gXOw'`wx!$Sxz'`z{&v{!P'`!P!Q*y!Q;'S'`;'S;=`*m<%lO'`]!$XVsXOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[]!$qWOw'`wx!$Sxz'`{!P'`!P!Q(_!Q;'S'`;'S;=`*m<%lO'`]!%`^'OSOz&[z{&v{!P&[!P!Q'x!Q![!&[![!c&[!c!i!&[!i#T&[#T#Z!&[#Z#o&[#o#p!({#p;'S&[;'S;=`*s<%lO&[]!&a['OSOz&[z{&v{!P&[!P!Q'x!Q![!'V![!c&[!c!i!'V!i#T&[#T#Z!'V#Z;'S&[;'S;=`*s<%lO&[]!'[['OSOz&[z{&v{!P&[!P!Q'x!Q![!(Q![!c&[!c!i!(Q!i#T&[#T#Z!(Q#Z;'S&[;'S;=`*s<%lO&[]!(V['OSOz&[z{&v{!P&[!P!Q'x!Q![Hv![!c&[!c!iHv!i#T&[#T#ZHv#Z;'S&[;'S;=`*s<%lO&[]!)Q['OSOz&[z{&v{!P&[!P!Q'x!Q![!)v![!c&[!c!i!)v!i#T&[#T#Z!)v#Z;'S&[;'S;=`*s<%lO&[]!){^'OSOz&[z{&v{!P&[!P!Q'x!Q![!)v![!c&[!c!i!)v!i#T&[#T#Z!)v#Z#q&[#q#rHv#r;'S&[;'S;=`*s<%lO&[]!*zP;=`<%lHv_!+QP;=`<%lE^_!+^]}X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!,`]!PX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!-`_(QX'_QOY+|YZ-xZr+|rs'`sz+|z{+O{!P+|!P!Q4y!Q!_+|!_!`!._!`#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|_!.f]#OX'_QOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!/h_(PX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!0p]!eX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!1r`'gX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`!a!2t!a#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!2}]#QX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!4P^(OX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!O$n!O!P!4{!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!5U`!lX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!O$n!O!P!6W!P!Q,z!Q!_$n!_!`!7Y!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!6a]!tX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$nV!7c]'qP'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!8c_'_Q'xXOY+|YZ-xZr+|rs'`sz+|z{!9b{!P+|!P!Q!:O!Q!_+|!_!`!._!`#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|_!9iV&}]'_QOY.dYZ/OZr.ds#O.d#P;'S.d;'S;=`/T<%lO.d_!:V]'_QUXOY!;OYZ3uZr!;Ors!>jsz!;Oz{!Aq{!P!;O!P!Q!:O!Q#O!;O#O#P!>j#P;'S!;O;'S;=`!Bk<%lO!;O_!;V]'_QUXOY!jYZ(tZz!>jz{!=x{!P!>j!P!Q!?|!Q;'S!>j;'S;=`!@e<%lO!>j]!>oXUXOY!=SYZ)^Zz!=Sz{!=x{!P!=S!P!Q!?[!Q;'S!=S;'S;=`!@k<%lO!=S]!?aXUXOY!>jYZ(tZz!>jz{!?|{!P!>j!P!Q!?[!Q;'S!>j;'S;=`!@e<%lO!>jX!@RSUXOY!?|Z;'S!?|;'S;=`!@_<%lO!?|X!@bP;=`<%l!?|]!@hP;=`<%l!>j]!@nP;=`<%l!=S_!@x]'_QUXOY!;OYZ3uZr!;Ors!>jsz!;Oz{!@q{!P!;O!P!Q!Aq!Q#O!;O#O#P!>j#P;'S!;O;'S;=`!Bk<%lO!;OZ!AxX'_QUXOY!AqYZ/OZr!Aqrs!?|s#O!Aq#O#P!?|#P;'S!Aq;'S;=`!Be<%lO!AqZ!BhP;=`<%l!Aq_!BnP;=`<%l!;O_!BtP;=`<%l!o![!c&[!c!i#>o!i#T&[#T#Z#>o#Z#o&[#o#p#A`#p;'S&[;'S;=`*s<%lO&[U#>t['OSOz&[z{&v{!P&[!P!Q'x!Q![#?j![!c&[!c!i#?j!i#T&[#T#Z#?j#Z;'S&[;'S;=`*s<%lO&[U#?o['OSOz&[z{&v{!P&[!P!Q'x!Q![#@e![!c&[!c!i#@e!i#T&[#T#Z#@e#Z;'S&[;'S;=`*s<%lO&[U#@j['OSOz&[z{&v{!P&[!P!Q'x!Q![#;}![!c&[!c!i#;}!i#T&[#T#Z#;}#Z;'S&[;'S;=`*s<%lO&[U#Ae['OSOz&[z{&v{!P&[!P!Q'x!Q![#BZ![!c&[!c!i#BZ!i#T&[#T#Z#BZ#Z;'S&[;'S;=`*s<%lO&[U#B`^'OSOz&[z{&v{!P&[!P!Q'x!Q![#BZ![!c&[!c!i#BZ!i#T&[#T#Z#BZ#Z#q&[#q#r#;}#r;'S&[;'S;=`*s<%lO&[U#C_P;=`<%l#;}_#Ck]XX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_#Dm_'{X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_#Ewl'_Q'OS!yW'TPOY$nYZ%nZr$nrs#Gosw$nwx#H]xz$nz{+O{!P$n!P!Q,z!Q![#8W![!c$n!c!}#8W!}#O$n#O#P&[#P#R$n#R#S#8W#S#T$n#T#o#8W#o${$n${$|#8W$|4w$n4w5b#8W5b5i$n5i6S#8W6S;'S$n;'S;=`4s<%lO$n]#GvV'OS'^XOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[_#Hd_'_Q'OSOYE^YZGfZrE^rsHvswE^wxFdxzE^z{Ih{!PE^!P!QKl!Q#OE^#O#P!!l#P;'SE^;'S;=`!*}<%lOE^_#Ink'_Q'OS!yW'TPOY$nYZ%nZr$nrs&[st#Kctz$nz{+O{!P$n!P!Q,z!Q![#8W![!c$n!c!}#8W!}#O$n#O#P&[#P#R$n#R#S#8W#S#T$n#T#o#8W#o${$n${$|#8W$|4w$n4w5b#8W5b5i$n5i6S#8W6S;'S$n;'S;=`4s<%lO$nV#Kji'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!c$n!c!}#MX!}#O$n#O#P&[#P#R$n#R#S#MX#S#T$n#T#o#MX#o${$n${$|#MX$|4w$n4w5b#MX5b5i$n5i6S#MX6S;'S$n;'S;=`4s<%lO$nV#Mbj'_Q'OS'TPOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![#MX![!c$n!c!}#MX!}#O$n#O#P&[#P#R$n#R#S#MX#S#T$n#T#o#MX#o${$n${$|#MX$|4w$n4w5b#MX5b5i$n5i6S#MX6S;'S$n;'S;=`4s<%lO$n_$ ]]wX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_$!_a'rX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P#p$n#p#q$#d#q;'S$n;'S;=`4s<%lO$n_$#m]'|X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_$$o]vX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n",tokenizers:[m,u,G,0,1,2,3],topRules:{SourceFile:[0,8]},specialized:[{term:281,get:O=>j[O]||-1}],tokenPrec:15596}),I=q.define({name:"rust",parser:E.configure({props:[l.add({IfExpression:r({except:/^\s*({|else\b)/}),"String BlockComment":()=>null,AttributeItem:O=>O.continue(),"Statement MatchArm":r()}),w.add(O=>{if(/(Block|edTokens|List)$/.test(O.name))return V;if(O.name=="BlockComment")return i=>({from:i.from+2,to:i.to-2})})]}),languageData:{commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:\{|\})$/,closeBrackets:{stringPrefixes:["b","r","br"]}}});function D(){return new _(I)}export{D as rust,I as rustLanguage}; diff --git a/frontend/dist/assets/index-BjEW7-SA.js b/frontend/dist/assets/index-BjEW7-SA.js new file mode 100644 index 0000000..8ccf4c3 --- /dev/null +++ b/frontend/dist/assets/index-BjEW7-SA.js @@ -0,0 +1,7 @@ +import{D as it,aK as ot,f as b,j as d,N as L,bA as pt,c8 as vt,c9 as kt,B as $,br as yt,y as I,G as St,ah as xt,a9 as G,b as wt,by as Mt,i as Q,aR as $t,R as ut,u as Bt,bl as At,ca as It,a as Y,d as lt,o as x,e as A,w as j,c as O,M as Nt,h as F,E as X,n as q,r as T,g as tt,Y as Rt,F as Ht,z as Et,l as Ft,ab as _t}from"./index-BKKvzUDD.js";const Vt=({from:s,replacement:e,scope:t,version:n,ref:r,type:i="API"},a)=>{it(()=>b(a),o=>{o&&ot(t,`[${i}] ${s} is about to be deprecated in version ${n}, please use ${e} instead. +For more detail, please visit: ${r} +`)},{immediate:!0})},ct=s=>{const e=L();return d(()=>{var t,n;return(n=(t=e==null?void 0:e.proxy)==null?void 0:t.$props)==null?void 0:n[s]})},K={prefix:Math.floor(Math.random()*1e4),current:0},zt=Symbol("elIdInjection"),Pt=()=>L()?$(zt,K):K,jt=s=>{const e=Pt();!pt&&e===K&&ot("IdInjection",`Looks like you are using server rendering, you must provide a id provider to ensure the hydration process to be succeed +usage: app.provide(ID_INJECTION_KEY, { + prefix: number, + current: number, +})`);const t=vt();return kt(()=>b(s)||`${t.value}-id-${e.prefix}-${e.current++}`)},J=Symbol("formContextKey"),ht=Symbol("formItemContextKey"),Tt=(s,e={})=>{const t=I(void 0),n=e.prop?t:ct("size"),r=e.global?t:yt(),i=e.form?{size:void 0}:$(J,void 0),a=e.formItem?{size:void 0}:$(ht,void 0);return d(()=>n.value||b(s)||(a==null?void 0:a.size)||(i==null?void 0:i.size)||r.value||"")},ft=s=>{const e=ct("disabled"),t=$(J,void 0);return d(()=>e.value??b(s)??(t==null?void 0:t.disabled)??!1)},Ct=()=>({form:$(J,void 0),formItem:$(ht,void 0)}),ce=(s,{formItemContext:e,disableIdGeneration:t,disableIdManagement:n})=>{t||(t=I(!1)),n||(n=I(!1));const r=L(),i=()=>{let c=r==null?void 0:r.parent;for(;c;){if(c.type.name==="ElFormItem")return!1;if(c.type.name==="ElLabelWrap")return!0;c=c.parent}return!1},a=I();let o;const u=d(()=>{var c;return!!(!(s.label||s.ariaLabel)&&e&&e.inputIds&&((c=e.inputIds)==null?void 0:c.length)<=1)});return St(()=>{o=it([G(s,"id"),t],([c,g])=>{const k=c??(g?void 0:jt().value);k!==a.value&&(e!=null&&e.removeInputId&&!i()&&(a.value&&e.removeInputId(a.value),!(n!=null&&n.value)&&!g&&k&&e.addInputId(k)),a.value=k)},{immediate:!0})}),xt(()=>{o&&o(),e!=null&&e.removeInputId&&a.value&&e.removeInputId(a.value)}),{isLabeledByFormItem:u,inputId:a}},Dt=["default","primary","success","warning","info","danger","text",""],Gt=["button","submit","reset"],W=wt({size:$t,disabled:{type:Boolean,default:void 0},type:{type:String,values:Dt,default:""},icon:{type:Q},nativeType:{type:String,values:Gt,default:"button"},loading:Boolean,loadingIcon:{type:Q,default:()=>Mt},plain:{type:Boolean,default:void 0},text:{type:Boolean,default:void 0},link:Boolean,bg:Boolean,autofocus:Boolean,round:{type:Boolean,default:void 0},circle:Boolean,dashed:{type:Boolean,default:void 0},color:String,dark:Boolean,autoInsertSpace:{type:Boolean,default:void 0},tag:{type:ut([String,Object]),default:"button"}}),Ot={click:s=>s instanceof MouseEvent},dt=Symbol("buttonGroupContextKey"),qt=(s,e)=>{Vt({from:"type.text",replacement:"link",version:"3.0.0",scope:"props",ref:"https://element-plus.org/en-US/component/button.html#button-attributes"},d(()=>s.type==="text"));const t=$(dt,void 0),n=Bt("button"),{form:r}=Ct(),i=Tt(d(()=>t==null?void 0:t.size)),a=ft(),o=I(),u=At(),c=d(()=>{var l;return s.type||(t==null?void 0:t.type)||((l=n.value)==null?void 0:l.type)||""}),g=d(()=>{var l;return s.autoInsertSpace??((l=n.value)==null?void 0:l.autoInsertSpace)??!1}),k=d(()=>{var l;return s.plain??((l=n.value)==null?void 0:l.plain)??!1}),_=d(()=>{var l;return s.round??((l=n.value)==null?void 0:l.round)??!1}),V=d(()=>{var l;return s.text??((l=n.value)==null?void 0:l.text)??!1}),z=d(()=>{var l;return s.dashed??((l=n.value)==null?void 0:l.dashed)??!1}),P=d(()=>s.tag==="button"?{ariaDisabled:a.value||s.loading,disabled:a.value||s.loading,autofocus:s.autofocus,type:s.nativeType}:{}),N=d(()=>{var S;const l=(S=u.default)==null?void 0:S.call(u);if(g.value&&(l==null?void 0:l.length)===1){const B=l[0];if((B==null?void 0:B.type)===It){const mt=B.children;return new RegExp("^\\p{Unified_Ideograph}{2}$","u").test(mt.trim())}}return!1});return{_disabled:a,_size:i,_type:c,_ref:o,_props:P,_plain:k,_round:_,_text:V,_dashed:z,shouldAddSpace:N,handleClick:l=>{if(a.value||s.loading){l.stopPropagation();return}s.nativeType==="reset"&&(r==null||r.resetFields()),e("click",l)}}};function f(s,e){Kt(s)&&(s="100%");const t=Wt(s);return s=e===360?s:Math.min(e,Math.max(0,parseFloat(s))),t&&(s=parseInt(String(s*e),10)/100),Math.abs(s-e)<1e-6?1:(e===360?s=(s<0?s%e+e:s%e)/parseFloat(String(e)):s=s%e/parseFloat(String(e)),s)}function R(s){return Math.min(1,Math.max(0,s))}function Kt(s){return typeof s=="string"&&s.indexOf(".")!==-1&&parseFloat(s)===1}function Wt(s){return typeof s=="string"&&s.indexOf("%")!==-1}function gt(s){return s=parseFloat(s),(isNaN(s)||s<0||s>1)&&(s=1),s}function H(s){return Number(s)<=1?`${Number(s)*100}%`:s}function M(s){return s.length===1?"0"+s:String(s)}function Ut(s,e,t){return{r:f(s,255)*255,g:f(e,255)*255,b:f(t,255)*255}}function et(s,e,t){s=f(s,255),e=f(e,255),t=f(t,255);const n=Math.max(s,e,t),r=Math.min(s,e,t);let i=0,a=0;const o=(n+r)/2;if(n===r)a=0,i=0;else{const u=n-r;switch(a=o>.5?u/(2-n-r):u/(n+r),n){case s:i=(e-t)/u+(e1&&(t-=1),t<1/6?s+(e-s)*(6*t):t<1/2?e:t<2/3?s+(e-s)*(2/3-t)*6:s}function Lt(s,e,t){let n,r,i;if(s=f(s,360),e=f(e,100),t=f(t,100),e===0)r=t,i=t,n=t;else{const a=t<.5?t*(1+e):t+e-t*e,o=2*t-a;n=C(o,a,s+1/3),r=C(o,a,s),i=C(o,a,s-1/3)}return{r:n*255,g:r*255,b:i*255}}function st(s,e,t){s=f(s,255),e=f(e,255),t=f(t,255);const n=Math.max(s,e,t),r=Math.min(s,e,t);let i=0;const a=n,o=n-r,u=n===0?0:o/n;if(n===r)i=0;else{switch(n){case s:i=(e-t)/o+(e>16,g:(s&65280)>>8,b:s&255}}const U={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function te(s){let e={r:0,g:0,b:0},t=1,n=null,r=null,i=null,a=!1,o=!1;return typeof s=="string"&&(s=ne(s)),typeof s=="object"&&(m(s.r)&&m(s.g)&&m(s.b)?(e=Ut(s.r,s.g,s.b),a=!0,o=String(s.r).substr(-1)==="%"?"prgb":"rgb"):m(s.h)&&m(s.s)&&m(s.v)?(n=H(s.s),r=H(s.v),e=Yt(s.h,n,r),a=!0,o="hsv"):m(s.h)&&m(s.s)&&m(s.l)?(n=H(s.s),i=H(s.l),e=Lt(s.h,n,i),a=!0,o="hsl"):m(s.c)&&m(s.m)&&m(s.y)&&m(s.k)&&(e=Zt(s.c,s.m,s.y,s.k),a=!0,o="cmyk"),Object.prototype.hasOwnProperty.call(s,"a")&&(t=s.a)),t=gt(t),{ok:a,format:s.format||o,r:Math.min(255,Math.max(e.r,0)),g:Math.min(255,Math.max(e.g,0)),b:Math.min(255,Math.max(e.b,0)),a:t}}const ee="[-\\+]?\\d+%?",se="[-\\+]?\\d*\\.\\d+%?",w="(?:"+se+")|(?:"+ee+")",D="[\\s|\\(]+("+w+")[,|\\s]+("+w+")[,|\\s]+("+w+")\\s*\\)?",E="[\\s|\\(]+("+w+")[,|\\s]+("+w+")[,|\\s]+("+w+")[,|\\s]+("+w+")\\s*\\)?",v={CSS_UNIT:new RegExp(w),rgb:new RegExp("rgb"+D),rgba:new RegExp("rgba"+E),hsl:new RegExp("hsl"+D),hsla:new RegExp("hsla"+E),hsv:new RegExp("hsv"+D),hsva:new RegExp("hsva"+E),cmyk:new RegExp("cmyk"+E),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function ne(s){if(s=s.trim().toLowerCase(),s.length===0)return!1;let e=!1;if(U[s])s=U[s],e=!0;else if(s==="transparent")return{r:0,g:0,b:0,a:0,format:"name"};let t=v.rgb.exec(s);return t?{r:t[1],g:t[2],b:t[3]}:(t=v.rgba.exec(s),t?{r:t[1],g:t[2],b:t[3],a:t[4]}:(t=v.hsl.exec(s),t?{h:t[1],s:t[2],l:t[3]}:(t=v.hsla.exec(s),t?{h:t[1],s:t[2],l:t[3],a:t[4]}:(t=v.hsv.exec(s),t?{h:t[1],s:t[2],v:t[3]}:(t=v.hsva.exec(s),t?{h:t[1],s:t[2],v:t[3],a:t[4]}:(t=v.cmyk.exec(s),t?{c:t[1],m:t[2],y:t[3],k:t[4]}:(t=v.hex8.exec(s),t?{r:p(t[1]),g:p(t[2]),b:p(t[3]),a:rt(t[4]),format:e?"name":"hex8"}:(t=v.hex6.exec(s),t?{r:p(t[1]),g:p(t[2]),b:p(t[3]),format:e?"name":"hex"}:(t=v.hex4.exec(s),t?{r:p(t[1]+t[1]),g:p(t[2]+t[2]),b:p(t[3]+t[3]),a:rt(t[4]+t[4]),format:e?"name":"hex8"}:(t=v.hex3.exec(s),t?{r:p(t[1]+t[1]),g:p(t[2]+t[2]),b:p(t[3]+t[3]),format:e?"name":"hex"}:!1))))))))))}function m(s){return typeof s=="number"?!Number.isNaN(s):v.CSS_UNIT.test(s)}class h{constructor(e="",t={}){if(e instanceof h)return e;typeof e=="number"&&(e=Xt(e)),this.originalInput=e;const n=te(e);this.originalInput=e,this.r=n.r,this.g=n.g,this.b=n.b,this.a=n.a,this.roundA=Math.round(100*this.a)/100,this.format=t.format??n.format,this.gradientType=t.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=n.ok}isDark(){return this.getBrightness()<128}isLight(){return!this.isDark()}getBrightness(){const e=this.toRgb();return(e.r*299+e.g*587+e.b*114)/1e3}getLuminance(){const e=this.toRgb();let t,n,r;const i=e.r/255,a=e.g/255,o=e.b/255;return i<=.03928?t=i/12.92:t=Math.pow((i+.055)/1.055,2.4),a<=.03928?n=a/12.92:n=Math.pow((a+.055)/1.055,2.4),o<=.03928?r=o/12.92:r=Math.pow((o+.055)/1.055,2.4),.2126*t+.7152*n+.0722*r}getAlpha(){return this.a}setAlpha(e){return this.a=gt(e),this.roundA=Math.round(100*this.a)/100,this}isMonochrome(){const{s:e}=this.toHsl();return e===0}toHsv(){const e=st(this.r,this.g,this.b);return{h:e.h*360,s:e.s,v:e.v,a:this.a}}toHsvString(){const e=st(this.r,this.g,this.b),t=Math.round(e.h*360),n=Math.round(e.s*100),r=Math.round(e.v*100);return this.a===1?`hsv(${t}, ${n}%, ${r}%)`:`hsva(${t}, ${n}%, ${r}%, ${this.roundA})`}toHsl(){const e=et(this.r,this.g,this.b);return{h:e.h*360,s:e.s,l:e.l,a:this.a}}toHslString(){const e=et(this.r,this.g,this.b),t=Math.round(e.h*360),n=Math.round(e.s*100),r=Math.round(e.l*100);return this.a===1?`hsl(${t}, ${n}%, ${r}%)`:`hsla(${t}, ${n}%, ${r}%, ${this.roundA})`}toHex(e=!1){return nt(this.r,this.g,this.b,e)}toHexString(e=!1){return"#"+this.toHex(e)}toHex8(e=!1){return Jt(this.r,this.g,this.b,this.a,e)}toHex8String(e=!1){return"#"+this.toHex8(e)}toHexShortString(e=!1){return this.a===1?this.toHexString(e):this.toHex8String(e)}toRgb(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}}toRgbString(){const e=Math.round(this.r),t=Math.round(this.g),n=Math.round(this.b);return this.a===1?`rgb(${e}, ${t}, ${n})`:`rgba(${e}, ${t}, ${n}, ${this.roundA})`}toPercentageRgb(){const e=t=>`${Math.round(f(t,255)*100)}%`;return{r:e(this.r),g:e(this.g),b:e(this.b),a:this.a}}toPercentageRgbString(){const e=t=>Math.round(f(t,255)*100);return this.a===1?`rgb(${e(this.r)}%, ${e(this.g)}%, ${e(this.b)}%)`:`rgba(${e(this.r)}%, ${e(this.g)}%, ${e(this.b)}%, ${this.roundA})`}toCmyk(){return{...at(this.r,this.g,this.b)}}toCmykString(){const{c:e,m:t,y:n,k:r}=at(this.r,this.g,this.b);return`cmyk(${e}, ${t}, ${n}, ${r})`}toName(){if(this.a===0)return"transparent";if(this.a<1)return!1;const e="#"+nt(this.r,this.g,this.b,!1);for(const[t,n]of Object.entries(U))if(e===n)return t;return!1}toString(e){const t=!!e;e=e??this.format;let n=!1;const r=this.a<1&&this.a>=0;return!t&&r&&(e.startsWith("hex")||e==="name")?e==="name"&&this.a===0?this.toName():this.toRgbString():(e==="rgb"&&(n=this.toRgbString()),e==="prgb"&&(n=this.toPercentageRgbString()),(e==="hex"||e==="hex6")&&(n=this.toHexString()),e==="hex3"&&(n=this.toHexString(!0)),e==="hex4"&&(n=this.toHex8String(!0)),e==="hex8"&&(n=this.toHex8String()),e==="name"&&(n=this.toName()),e==="hsl"&&(n=this.toHslString()),e==="hsv"&&(n=this.toHsvString()),e==="cmyk"&&(n=this.toCmykString()),n||this.toHexString())}toNumber(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)}clone(){return new h(this.toString())}lighten(e=10){const t=this.toHsl();return t.l+=e/100,t.l=R(t.l),new h(t)}brighten(e=10){const t=this.toRgb();return t.r=Math.max(0,Math.min(255,t.r-Math.round(255*-(e/100)))),t.g=Math.max(0,Math.min(255,t.g-Math.round(255*-(e/100)))),t.b=Math.max(0,Math.min(255,t.b-Math.round(255*-(e/100)))),new h(t)}darken(e=10){const t=this.toHsl();return t.l-=e/100,t.l=R(t.l),new h(t)}tint(e=10){return this.mix("white",e)}shade(e=10){return this.mix("black",e)}desaturate(e=10){const t=this.toHsl();return t.s-=e/100,t.s=R(t.s),new h(t)}saturate(e=10){const t=this.toHsl();return t.s+=e/100,t.s=R(t.s),new h(t)}greyscale(){return this.desaturate(100)}spin(e){const t=this.toHsl(),n=(t.h+e)%360;return t.h=n<0?360+n:n,new h(t)}mix(e,t=50){const n=this.toRgb(),r=new h(e).toRgb(),i=t/100,a={r:(r.r-n.r)*i+n.r,g:(r.g-n.g)*i+n.g,b:(r.b-n.b)*i+n.b,a:(r.a-n.a)*i+n.a};return new h(a)}analogous(e=6,t=30){const n=this.toHsl(),r=360/t,i=[this];for(n.h=(n.h-(r*e>>1)+720)%360;--e;)n.h=(n.h+r)%360,i.push(new h(n));return i}complement(){const e=this.toHsl();return e.h=(e.h+180)%360,new h(e)}monochromatic(e=6){const t=this.toHsv(),{h:n}=t,{s:r}=t;let{v:i}=t;const a=[],o=1/e;for(;e--;)a.push(new h({h:n,s:r,v:i})),i=(i+o)%1;return a}splitcomplement(){const e=this.toHsl(),{h:t}=e;return[this,new h({h:(t+72)%360,s:e.s,l:e.l}),new h({h:(t+216)%360,s:e.s,l:e.l})]}onBackground(e){const t=this.toRgb(),n=new h(e).toRgb(),r=t.a+n.a*(1-t.a);return new h({r:(t.r*t.a+n.r*n.a*(1-t.a))/r,g:(t.g*t.a+n.g*n.a*(1-t.a))/r,b:(t.b*t.a+n.b*n.a*(1-t.a))/r,a:r})}triad(){return this.polyad(3)}tetrad(){return this.polyad(4)}polyad(e){const t=this.toHsl(),{h:n}=t,r=[this],i=360/e;for(let a=1;a{let n={},r=s.color;if(r){const i=r.match(/var\((.*?)\)/);i&&(r=window.getComputedStyle(window.document.documentElement).getPropertyValue(i[1]));const a=new h(r),o=s.dark?a.tint(20).toString():y(a,20);if(s.plain)n=t.cssVarBlock({"bg-color":s.dark?y(a,90):a.tint(90).toString(),"text-color":r,"border-color":s.dark?y(a,50):a.tint(50).toString(),"hover-text-color":`var(${t.cssVarName("color-white")})`,"hover-bg-color":r,"hover-border-color":r,"active-bg-color":o,"active-text-color":`var(${t.cssVarName("color-white")})`,"active-border-color":o}),e.value&&(n[t.cssVarBlockName("disabled-bg-color")]=s.dark?y(a,90):a.tint(90).toString(),n[t.cssVarBlockName("disabled-text-color")]=s.dark?y(a,50):a.tint(50).toString(),n[t.cssVarBlockName("disabled-border-color")]=s.dark?y(a,80):a.tint(80).toString());else if(s.link||s.text){const u=s.dark?y(a,30):a.tint(30).toString();if(n=t.cssVarBlock({"text-color":r,"hover-text-color":u,"active-text-color":o}),s.link&&(n[t.cssVarBlockName("hover-link-text-color")]=u,n[t.cssVarBlockName("active-color")]=o),e.value){const c=s.dark?y(a,50):a.tint(50).toString();n[t.cssVarBlockName("disabled-bg-color")]="transparent",n[t.cssVarBlockName("disabled-text-color")]=c,n[t.cssVarBlockName("disabled-border-color")]="transparent"}}else{const u=s.dark?y(a,30):a.tint(30).toString(),c=a.isDark()?`var(${t.cssVarName("color-white")})`:`var(${t.cssVarName("color-black")})`;if(n=t.cssVarBlock({"bg-color":r,"text-color":c,"border-color":r,"hover-bg-color":u,"hover-text-color":c,"hover-border-color":u,"active-bg-color":o,"active-border-color":o}),e.value){const g=s.dark?y(a,50):a.tint(50).toString();n[t.cssVarBlockName("disabled-bg-color")]=g,n[t.cssVarBlockName("disabled-text-color")]=s.dark?"rgba(255, 255, 255, 0.5)":`var(${t.cssVarName("color-white")})`,n[t.cssVarBlockName("disabled-border-color")]=g}}}return n})}var re=lt({name:"ElButton",__name:"button",props:W,emits:Ot,setup(s,{expose:e,emit:t}){const n=s,r=t,i=ae(n),a=Y("button"),{_ref:o,_size:u,_type:c,_disabled:g,_props:k,_plain:_,_round:V,_text:z,_dashed:P,shouldAddSpace:N,handleClick:Z}=qt(n,r),l=d(()=>[a.b(),a.m(c.value),a.m(u.value),a.is("disabled",g.value),a.is("loading",n.loading),a.is("plain",_.value),a.is("round",V.value),a.is("circle",n.circle),a.is("text",z.value),a.is("dashed",P.value),a.is("link",n.link),a.is("has-bg",n.bg)]);return e({ref:o,size:u,type:c,disabled:g,shouldAddSpace:N}),(S,B)=>(x(),A(T(s.tag),Rt({ref_key:"_ref",ref:o},b(k),{class:l.value,style:b(i),onClick:b(Z)}),{default:j(()=>[s.loading?(x(),O(Nt,{key:0},[S.$slots.loading?F(S.$slots,"loading",{key:0}):(x(),A(b(X),{key:1,class:q(b(a).is("loading"))},{default:j(()=>[(x(),A(T(s.loadingIcon)))]),_:1},8,["class"]))],64)):s.icon||S.$slots.icon?(x(),A(b(X),{key:1},{default:j(()=>[s.icon?(x(),A(T(s.icon),{key:0})):F(S.$slots,"icon",{key:1})]),_:3})):tt("v-if",!0),S.$slots.default?(x(),O("span",{key:2,class:q({[b(a).em("text","expand")]:b(N)})},[F(S.$slots,"default")],2)):tt("v-if",!0)]),_:3},16,["class","style","onClick"]))}}),ie=re;const oe={size:W.size,type:W.type,direction:{type:ut(String),values:["horizontal","vertical"],default:"horizontal"}};var ue=lt({name:"ElButtonGroup",__name:"button-group",props:oe,setup(s){const e=s;Ht(dt,Et({size:G(e,"size"),type:G(e,"type")}));const t=Y("button");return(n,r)=>(x(),O("div",{class:q([b(t).b("group"),b(t).bm("group",e.direction)])},[F(n.$slots,"default")],2))}}),bt=ue;const he=Ft(ie,{ButtonGroup:bt}),fe=_t(bt);export{he as E,h as T,Pt as a,Ct as b,ft as c,ce as d,Tt as e,jt as f,J as g,ht as h,Vt as u}; diff --git a/frontend/dist/assets/index-BrKMLqs4.css b/frontend/dist/assets/index-BrKMLqs4.css new file mode 100644 index 0000000..cdcfcaf --- /dev/null +++ b/frontend/dist/assets/index-BrKMLqs4.css @@ -0,0 +1 @@ +@charset "UTF-8";:root{--el-color-white:#fff;--el-color-black:#000;--el-color-primary-rgb:64, 158, 255;--el-color-success-rgb:103, 194, 58;--el-color-warning-rgb:230, 162, 60;--el-color-danger-rgb:245, 108, 108;--el-color-error-rgb:245, 108, 108;--el-color-info-rgb:144, 147, 153;--el-font-size-extra-large:20px;--el-font-size-large:18px;--el-font-size-medium:16px;--el-font-size-base:14px;--el-font-size-small:13px;--el-font-size-extra-small:12px;--el-font-family:"Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, sans-serif;--el-font-weight-primary:500;--el-font-line-height-primary:24px;--el-index-normal:1;--el-index-top:1000;--el-index-popper:2000;--el-border-radius-base:4px;--el-border-radius-small:2px;--el-border-radius-round:20px;--el-border-radius-circle:100%;--el-transition-duration:.3s;--el-transition-duration-fast:.2s;--el-transition-function-ease-in-out-bezier:cubic-bezier(.645, .045, .355, 1);--el-transition-function-fast-bezier:cubic-bezier(.23, 1, .32, 1);--el-transition-all:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);--el-transition-fade:opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-md-fade:transform var(--el-transition-duration) var(--el-transition-function-fast-bezier), opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-fade-linear:opacity var(--el-transition-duration-fast) linear;--el-transition-border:border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-box-shadow:box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-color:color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-component-size-large:40px;--el-component-size:32px;--el-component-size-small:24px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--el-color-primary:#409eff;--el-color-primary-light-3:#79bbff;--el-color-primary-light-5:#a0cfff;--el-color-primary-light-7:#c6e2ff;--el-color-primary-light-8:#d9ecff;--el-color-primary-light-9:#ecf5ff;--el-color-primary-dark-2:#337ecc;--el-color-success:#67c23a;--el-color-success-light-3:#95d475;--el-color-success-light-5:#b3e19d;--el-color-success-light-7:#d1edc4;--el-color-success-light-8:#e1f3d8;--el-color-success-light-9:#f0f9eb;--el-color-success-dark-2:#529b2e;--el-color-warning:#e6a23c;--el-color-warning-light-3:#eebe77;--el-color-warning-light-5:#f3d19e;--el-color-warning-light-7:#f8e3c5;--el-color-warning-light-8:#faecd8;--el-color-warning-light-9:#fdf6ec;--el-color-warning-dark-2:#b88230;--el-color-danger:#f56c6c;--el-color-danger-light-3:#f89898;--el-color-danger-light-5:#fab6b6;--el-color-danger-light-7:#fcd3d3;--el-color-danger-light-8:#fde2e2;--el-color-danger-light-9:#fef0f0;--el-color-danger-dark-2:#c45656;--el-color-error:#f56c6c;--el-color-error-light-3:#f89898;--el-color-error-light-5:#fab6b6;--el-color-error-light-7:#fcd3d3;--el-color-error-light-8:#fde2e2;--el-color-error-light-9:#fef0f0;--el-color-error-dark-2:#c45656;--el-color-info:#909399;--el-color-info-light-3:#b1b3b8;--el-color-info-light-5:#c8c9cc;--el-color-info-light-7:#dedfe0;--el-color-info-light-8:#e9e9eb;--el-color-info-light-9:#f4f4f5;--el-color-info-dark-2:#73767a;--el-bg-color:#fff;--el-bg-color-page:#f2f3f5;--el-bg-color-overlay:#fff;--el-text-color-primary:#303133;--el-text-color-regular:#606266;--el-text-color-secondary:#909399;--el-text-color-placeholder:#a8abb2;--el-text-color-disabled:#c0c4cc;--el-border-color:#dcdfe6;--el-border-color-light:#e4e7ed;--el-border-color-lighter:#ebeef5;--el-border-color-extra-light:#f2f6fc;--el-border-color-dark:#d4d7de;--el-border-color-darker:#cdd0d6;--el-fill-color:#f0f2f5;--el-fill-color-light:#f5f7fa;--el-fill-color-lighter:#fafafa;--el-fill-color-extra-light:#fafcff;--el-fill-color-dark:#ebedf0;--el-fill-color-darker:#e6e8eb;--el-fill-color-blank:#fff;--el-box-shadow:0px 12px 32px 4px #0000000a, 0px 8px 20px #00000014;--el-box-shadow-light:0px 0px 12px #0000001f;--el-box-shadow-lighter:0px 0px 6px #0000001f;--el-box-shadow-dark:0px 16px 48px 16px #00000014, 0px 12px 32px #0000001f, 0px 8px 16px -8px #00000029;--el-disabled-bg-color:var(--el-fill-color-light);--el-disabled-text-color:var(--el-text-color-placeholder);--el-disabled-border-color:var(--el-border-color-light);--el-overlay-color:#000c;--el-overlay-color-light:#000000b3;--el-overlay-color-lighter:#00000080;--el-mask-color:#ffffffe6;--el-mask-color-extra-light:#ffffff4d;--el-border-width:1px;--el-border-style:solid;--el-border-color-hover:var(--el-text-color-disabled);--el-border:var(--el-border-width) var(--el-border-style) var(--el-border-color);--el-svg-monochrome-grey:var(--el-border-color)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:top;transform:scaleY(1)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:bottom;transform:scaleY(1)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:0 0;transform:scale(1)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-leave-active,.el-collapse-transition-enter-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.el-icon{--color:inherit;fill:currentColor;width:1em;height:1em;color:var(--color);line-height:1em;font-size:inherit;justify-content:center;align-items:center;display:inline-flex;position:relative}.el-icon.is-loading{animation:2s linear infinite rotating}.el-icon svg{width:1em;height:1em}.el-badge{--el-badge-bg-color:var(--el-color-danger);--el-badge-radius:10px;--el-badge-font-size:12px;--el-badge-padding:6px;--el-badge-size:18px;vertical-align:middle;width:-moz-fit-content;width:fit-content;display:inline-block;position:relative}.el-badge__content{background-color:var(--el-badge-bg-color);border-radius:var(--el-badge-radius);color:var(--el-color-white);font-size:var(--el-badge-font-size);height:var(--el-badge-size);padding:0 var(--el-badge-padding);white-space:nowrap;border:1px solid var(--el-bg-color);justify-content:center;align-items:center;display:inline-flex}.el-badge__content.is-fixed{top:0;right:calc(1px + var(--el-badge-size) / 2);z-index:var(--el-index-normal);position:absolute;transform:translateY(-50%)translate(100%)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{border-radius:50%;width:8px;height:8px;padding:0;right:0}.el-badge__content.is-hide-zero{display:none}.el-badge__content--primary{background-color:var(--el-color-primary)}.el-badge__content--success{background-color:var(--el-color-success)}.el-badge__content--warning{background-color:var(--el-color-warning)}.el-badge__content--info{background-color:var(--el-color-info)}.el-badge__content--danger{background-color:var(--el-color-danger)}.el-message{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-border-color-lighter);--el-message-padding:11px 15px;--el-message-close-size:16px;--el-message-close-icon-color:var(--el-text-color-placeholder);--el-message-close-hover-color:var(--el-text-color-secondary);box-sizing:border-box;border-radius:var(--el-border-radius-base);border-width:var(--el-border-width);border-style:var(--el-border-style);border-color:var(--el-message-border-color);background-color:var(--el-message-bg-color);width:max-content;max-width:calc(100% - 32px);transition:opacity var(--el-transition-duration),transform .4s,top .4s,bottom .4s;padding:var(--el-message-padding);align-items:center;gap:8px;display:flex;position:fixed}.el-message.is-left{left:16px}.el-message.is-right{right:16px}.el-message.is-center{left:50%;transform:translate(-50%)}.el-message.is-plain{background-color:var(--el-bg-color-overlay);border-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-message p{margin:0}.el-message--primary{--el-message-bg-color:var(--el-color-primary-light-9);--el-message-border-color:var(--el-color-primary-light-8);--el-message-text-color:var(--el-color-primary)}.el-message--primary .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--primary{color:var(--el-message-text-color)}.el-message--success{--el-message-bg-color:var(--el-color-success-light-9);--el-message-border-color:var(--el-color-success-light-8);--el-message-text-color:var(--el-color-success)}.el-message--success .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--success{color:var(--el-message-text-color)}.el-message--info{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-color-info-light-8);--el-message-text-color:var(--el-color-info)}.el-message--info .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--info{color:var(--el-message-text-color)}.el-message--warning{--el-message-bg-color:var(--el-color-warning-light-9);--el-message-border-color:var(--el-color-warning-light-8);--el-message-text-color:var(--el-color-warning)}.el-message--warning .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--warning{color:var(--el-message-text-color)}.el-message--error{--el-message-bg-color:var(--el-color-error-light-9);--el-message-border-color:var(--el-color-error-light-8);--el-message-text-color:var(--el-color-error)}.el-message--error .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--error{color:var(--el-message-text-color)}.el-message .el-message__badge{position:absolute;top:-8px;right:-8px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__content:focus{outline-width:0}.el-message .el-message__closeBtn{cursor:pointer;color:var(--el-message-close-icon-color);font-size:var(--el-message-close-size)}.el-message .el-message__closeBtn:focus{outline-width:0}.el-message .el-message__closeBtn:hover{color:var(--el-message-close-hover-color)}.el-message-fade-enter-from,.el-message-fade-leave-to{opacity:0}.el-message-fade-enter-from.is-left,.el-message-fade-enter-from.is-right,.el-message-fade-leave-to.is-left,.el-message-fade-leave-to.is-right{transform:translateY(-100%)}.el-message-fade-enter-from.is-left.is-bottom,.el-message-fade-enter-from.is-right.is-bottom,.el-message-fade-leave-to.is-left.is-bottom,.el-message-fade-leave-to.is-right.is-bottom{transform:translateY(100%)}.el-message-fade-enter-from.is-center,.el-message-fade-leave-to.is-center{transform:translate(-50%,-100%)}.el-message-fade-enter-from.is-center.is-bottom,.el-message-fade-leave-to.is-center.is-bottom{transform:translate(-50%,100%)}.el-textarea{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;vertical-align:bottom;width:100%;font-size:var(--el-font-size-base);display:inline-block;position:relative}.el-textarea__inner{resize:vertical;box-sizing:border-box;width:100%;line-height:1.5;font-size:inherit;color:var(--el-input-text-color,var(--el-text-color-regular));background-color:var(--el-input-bg-color,var(--el-fill-color-blank));-webkit-appearance:none;box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));transition:var(--el-transition-box-shadow);background-image:none;border:none;padding:5px 11px;font-family:inherit;display:block;position:relative}.el-textarea__inner.is-clearable{padding:5px 26px 5px 11px}.el-textarea__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-textarea__inner:focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset;outline:none}.el-textarea__clear{color:var(--el-input-icon-color);cursor:pointer;font-size:14px;position:absolute;top:15px;right:11px;transform:translateY(-50%)}.el-textarea__clear:hover{color:var(--el-input-clear-hover-color)}.el-textarea .el-input__count{color:var(--el-color-info);background:var(--el-fill-color-blank);font-size:12px;line-height:14px;position:absolute;bottom:5px;right:10px}.el-textarea .el-input__count.is-outside{top:100%;right:0;bottom:unset;background:0 0;padding-top:2px;line-height:1;position:absolute}.el-textarea.is-disabled .el-textarea__inner{box-shadow:0 0 0 1px var(--el-disabled-border-color) inset;background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-exceed .el-textarea__inner{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-textarea.is-exceed .el-input__count{color:var(--el-color-danger)}.el-input{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;--el-input-height:var(--el-component-size);font-size:var(--el-font-size-base);width:var(--el-input-width);line-height:var(--el-input-height);box-sizing:border-box;vertical-align:middle;display:inline-flex;position:relative}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{background:var(--el-text-color-disabled);border-radius:5px;width:6px}.el-input::-webkit-scrollbar-corner{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track-piece{background:var(--el-fill-color-blank);width:6px}.el-input .el-input__clear,.el-input .el-input__password{color:var(--el-input-icon-color);cursor:pointer;font-size:14px}.el-input .el-input__clear:hover,.el-input .el-input__password:hover{color:var(--el-input-clear-hover-color)}.el-input .el-input__count{height:100%;color:var(--el-color-info);align-items:center;font-size:12px;display:inline-flex}.el-input .el-input__count .el-input__count-inner{background:var(--el-fill-color-blank);line-height:initial;padding-left:8px;display:inline-block}.el-input .el-input__count.is-outside{height:unset;padding-top:2px;position:absolute;top:100%;right:0}.el-input .el-input__count.is-outside .el-input__count-inner{background:0 0;padding-left:0;line-height:1}.el-input__wrapper{background-color:var(--el-input-bg-color,var(--el-fill-color-blank));border-radius:var(--el-input-border-radius,var(--el-border-radius-base));cursor:text;transition:var(--el-transition-box-shadow);box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;background-image:none;flex-grow:1;justify-content:center;align-items:center;padding:1px 11px;display:inline-flex;transform:translate(0)}.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input{--el-input-inner-height:calc(var(--el-input-height,32px) - 2px)}.el-input__inner{-webkit-appearance:none;width:100%;color:var(--el-input-text-color,var(--el-text-color-regular));font-size:inherit;height:var(--el-input-inner-height);line-height:var(--el-input-inner-height);box-sizing:border-box;background:0 0;border:none;outline:none;flex-grow:1;padding:0}.el-input__inner:focus{outline:none}.el-input__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner[type=password]::-ms-reveal{display:none}.el-input__inner[type=number]{line-height:1}.el-input__prefix{white-space:nowrap;height:100%;line-height:var(--el-input-inner-height);text-align:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));transition:all var(--el-transition-duration);pointer-events:none;flex-wrap:nowrap;flex-shrink:0;display:inline-flex}.el-input__prefix-inner{pointer-events:all;justify-content:center;align-items:center;display:inline-flex}.el-input__prefix-inner>:last-child{margin-right:8px}.el-input__prefix-inner>:first-child,.el-input__prefix-inner>:first-child.el-input__icon{margin-left:0}.el-input__suffix{white-space:nowrap;height:100%;line-height:var(--el-input-inner-height);text-align:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));transition:all var(--el-transition-duration);pointer-events:none;flex-wrap:nowrap;flex-shrink:0;display:inline-flex}.el-input__suffix-inner{pointer-events:all;justify-content:center;align-items:center;display:inline-flex}.el-input__suffix-inner>:first-child{margin-left:8px}.el-input .el-input__icon{height:inherit;line-height:inherit;transition:all var(--el-transition-duration);justify-content:center;align-items:center;margin-left:8px;display:flex}.el-input .el-input__clear{transition:color var(--el-transition-duration)}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-color, ) inset}.el-input.is-disabled{cursor:not-allowed}.el-input.is-disabled .el-input__wrapper{background-color:var(--el-disabled-bg-color);cursor:not-allowed;box-shadow:0 0 0 1px var(--el-disabled-border-color) inset}.el-input.is-disabled .el-input__inner{color:var(--el-disabled-text-color);-webkit-text-fill-color:var(--el-disabled-text-color);cursor:not-allowed}.el-input.is-disabled .el-input__inner::placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-disabled .el-input__prefix-inner,.el-input.is-disabled .el-input__suffix-inner{pointer-events:none}.el-input.is-exceed .el-input__wrapper{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-input.is-exceed .el-input__suffix .el-input__count{color:var(--el-color-danger)}.el-input--large{--el-input-height:var(--el-component-size-large);font-size:14px}.el-input--large .el-input__wrapper{padding:1px 15px}.el-input--large{--el-input-inner-height:calc(var(--el-input-height,40px) - 2px)}.el-input--small{--el-input-height:var(--el-component-size-small);font-size:12px}.el-input--small .el-input__wrapper{padding:1px 7px}.el-input--small{--el-input-inner-height:calc(var(--el-input-height,24px) - 2px)}.el-input-group{align-items:stretch;width:100%;display:inline-flex}.el-input-group__append,.el-input-group__prepend{background-color:var(--el-fill-color-light);color:var(--el-color-info);border-radius:var(--el-input-border-radius);white-space:nowrap;justify-content:center;align-items:center;min-height:100%;padding:0 20px;display:inline-flex;position:relative}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:none}.el-input-group__append .el-select,.el-input-group__append .el-button,.el-input-group__prepend .el-select,.el-input-group__prepend .el-button{flex:1;margin:0 -20px;display:inline-block}.el-input-group__append button.el-button,.el-input-group__append button.el-button:hover,.el-input-group__append div.el-select .el-select__wrapper,.el-input-group__append div.el-select:hover .el-select__wrapper,.el-input-group__prepend button.el-button,.el-input-group__prepend button.el-button:hover,.el-input-group__prepend div.el-select .el-select__wrapper,.el-input-group__prepend div.el-select:hover .el-select__wrapper{color:inherit;background-color:#0000;border-color:#0000}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset;border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append{box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset;border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend>.el-input__wrapper{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input-group__prepend .el-select .el-select__wrapper{box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append>.el-input__wrapper{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-input-group__append .el-select .el-select__wrapper{box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-hidden{display:none!important}.el-button{--el-button-font-weight:var(--el-font-weight-primary);--el-button-border-color:var(--el-border-color);--el-button-bg-color:var(--el-fill-color-blank);--el-button-text-color:var(--el-text-color-regular);--el-button-disabled-text-color:var(--el-disabled-text-color);--el-button-disabled-bg-color:var(--el-fill-color-blank);--el-button-disabled-border-color:var(--el-border-color-light);--el-button-divide-border-color:#ffffff80;--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-color-primary-light-9);--el-button-hover-border-color:var(--el-color-primary-light-7);--el-button-active-text-color:var(--el-button-hover-text-color);--el-button-active-border-color:var(--el-color-primary);--el-button-active-bg-color:var(--el-button-hover-bg-color);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-hover-link-text-color:var(--el-text-color-secondary);--el-button-active-color:var(--el-text-color-primary);white-space:nowrap;cursor:pointer;height:32px;color:var(--el-button-text-color);text-align:center;box-sizing:border-box;line-height:1;font-weight:var(--el-button-font-weight);-webkit-user-select:none;user-select:none;vertical-align:middle;-webkit-appearance:none;background-color:var(--el-button-bg-color);border:var(--el-border);border-color:var(--el-button-border-color);outline:none;justify-content:center;align-items:center;transition:all .1s;display:inline-flex}.el-button:hover{color:var(--el-button-hover-text-color);border-color:var(--el-button-hover-border-color);background-color:var(--el-button-hover-bg-color);outline:none}.el-button:active{color:var(--el-button-active-text-color);border-color:var(--el-button-active-border-color);background-color:var(--el-button-active-bg-color);outline:none}.el-button:focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset,outline}.el-button>span{align-items:center;display:inline-flex}.el-button+.el-button{margin-left:12px}.el-button{font-size:var(--el-font-size-base);border-radius:var(--el-border-radius-base);padding:8px 15px}.el-button.is-round{padding:8px 15px}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon]+span{margin-left:6px}.el-button [class*=el-icon] svg{vertical-align:bottom}.el-button.is-plain{--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-fill-color-blank);--el-button-hover-border-color:var(--el-color-primary)}.el-button.is-active{color:var(--el-button-active-text-color);border-color:var(--el-button-active-border-color);background-color:var(--el-button-active-bg-color);outline:none}.el-button.is-disabled,.el-button.is-disabled:hover{color:var(--el-button-disabled-text-color);cursor:not-allowed;background-image:none;background-color:var(--el-button-disabled-bg-color);border-color:var(--el-button-disabled-border-color)}.el-button.is-loading{pointer-events:none;position:relative}.el-button.is-loading:before{z-index:1;pointer-events:none;content:"";border-radius:inherit;background-color:var(--el-mask-color-extra-light);position:absolute;top:-1px;bottom:-1px;left:-1px;right:-1px}.el-button.is-round{border-radius:var(--el-border-radius-round)}.el-button.is-dashed{--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-fill-color-blank);--el-button-hover-border-color:var(--el-color-primary);border-style:dashed}.el-button.is-circle{border-radius:50%;width:32px;padding:8px}.el-button.is-text{color:var(--el-button-text-color);background-color:#0000;border:0 solid #0000}.el-button.is-text.is-disabled{color:var(--el-button-disabled-text-color);background-color:#0000!important}.el-button.is-text:not(.is-disabled):hover{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled):focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset,outline}.el-button.is-text:not(.is-disabled):active{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled).is-has-bg:hover{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg:active{background-color:var(--el-fill-color-dark)}.el-button__text--expand{letter-spacing:.3em;margin-right:-.3em}.el-button.is-link{color:var(--el-button-text-color);background:0 0;border-color:#0000;height:auto;padding:2px}.el-button.is-link:hover{color:var(--el-button-hover-link-text-color)}.el-button.is-link.is-disabled{color:var(--el-button-disabled-text-color);background-color:#0000!important;border-color:#0000!important}.el-button.is-link:not(.is-disabled):hover{background-color:#0000;border-color:#0000}.el-button.is-link:not(.is-disabled):active{color:var(--el-button-active-color);background-color:#0000;border-color:#0000}.el-button--text{color:var(--el-color-primary);background:0 0;border-color:#0000;padding-left:0;padding-right:0}.el-button--text.is-disabled{color:var(--el-button-disabled-text-color);background-color:#0000!important;border-color:#0000!important}.el-button--text:not(.is-disabled):hover{color:var(--el-color-primary-light-3);background-color:#0000;border-color:#0000}.el-button--text:not(.is-disabled):active{color:var(--el-color-primary-dark-2);background-color:#0000;border-color:#0000}.el-button__link--expand{letter-spacing:.3em;margin-right:-.3em}.el-button--primary{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-primary);--el-button-border-color:var(--el-color-primary);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-active-color:var(--el-color-primary-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-primary-light-5);--el-button-hover-bg-color:var(--el-color-primary-light-3);--el-button-hover-border-color:var(--el-color-primary-light-3);--el-button-active-bg-color:var(--el-color-primary-dark-2);--el-button-active-border-color:var(--el-color-primary-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-primary-light-5);--el-button-disabled-border-color:var(--el-color-primary-light-5)}.el-button--primary.is-plain,.el-button--primary.is-text,.el-button--primary.is-link{--el-button-text-color:var(--el-color-primary);--el-button-bg-color:var(--el-color-primary-light-9);--el-button-border-color:var(--el-color-primary-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-primary);--el-button-hover-border-color:var(--el-color-primary);--el-button-active-text-color:var(--el-color-white)}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:hover,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-text.is-disabled,.el-button--primary.is-text.is-disabled:hover,.el-button--primary.is-text.is-disabled:focus,.el-button--primary.is-text.is-disabled:active,.el-button--primary.is-link.is-disabled,.el-button--primary.is-link.is-disabled:hover,.el-button--primary.is-link.is-disabled:focus,.el-button--primary.is-link.is-disabled:active{color:var(--el-color-primary-light-5);background-color:var(--el-color-primary-light-9);border-color:var(--el-color-primary-light-8)}.el-button--primary.is-dashed{--el-button-text-color:var(--el-color-primary);--el-button-bg-color:var(--el-color-primary-light-9);--el-button-border-color:var(--el-color-primary-light-5);--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-color-primary-light-9);--el-button-hover-border-color:var(--el-color-primary-light-3);--el-button-active-text-color:var(--el-color-primary-dark-2);--el-button-active-bg-color:var(--el-color-primary-light-9);--el-button-active-border-color:var(--el-color-primary-dark-2)}.el-button--primary.is-dashed.is-disabled,.el-button--primary.is-dashed.is-disabled:hover,.el-button--primary.is-dashed.is-disabled:focus,.el-button--primary.is-dashed.is-disabled:active{color:var(--el-color-primary-light-5);background-color:var(--el-color-primary-light-9);border-color:var(--el-color-primary-light-8)}.el-button--success{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-success);--el-button-border-color:var(--el-color-success);--el-button-outline-color:var(--el-color-success-light-5);--el-button-active-color:var(--el-color-success-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-success-light-5);--el-button-hover-bg-color:var(--el-color-success-light-3);--el-button-hover-border-color:var(--el-color-success-light-3);--el-button-active-bg-color:var(--el-color-success-dark-2);--el-button-active-border-color:var(--el-color-success-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-success-light-5);--el-button-disabled-border-color:var(--el-color-success-light-5)}.el-button--success.is-plain,.el-button--success.is-text,.el-button--success.is-link{--el-button-text-color:var(--el-color-success);--el-button-bg-color:var(--el-color-success-light-9);--el-button-border-color:var(--el-color-success-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-success);--el-button-hover-border-color:var(--el-color-success);--el-button-active-text-color:var(--el-color-white)}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:hover,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-text.is-disabled,.el-button--success.is-text.is-disabled:hover,.el-button--success.is-text.is-disabled:focus,.el-button--success.is-text.is-disabled:active,.el-button--success.is-link.is-disabled,.el-button--success.is-link.is-disabled:hover,.el-button--success.is-link.is-disabled:focus,.el-button--success.is-link.is-disabled:active{color:var(--el-color-success-light-5);background-color:var(--el-color-success-light-9);border-color:var(--el-color-success-light-8)}.el-button--success.is-dashed{--el-button-text-color:var(--el-color-success);--el-button-bg-color:var(--el-color-success-light-9);--el-button-border-color:var(--el-color-success-light-5);--el-button-hover-text-color:var(--el-color-success);--el-button-hover-bg-color:var(--el-color-success-light-9);--el-button-hover-border-color:var(--el-color-success-light-3);--el-button-active-text-color:var(--el-color-success-dark-2);--el-button-active-bg-color:var(--el-color-success-light-9);--el-button-active-border-color:var(--el-color-success-dark-2)}.el-button--success.is-dashed.is-disabled,.el-button--success.is-dashed.is-disabled:hover,.el-button--success.is-dashed.is-disabled:focus,.el-button--success.is-dashed.is-disabled:active{color:var(--el-color-success-light-5);background-color:var(--el-color-success-light-9);border-color:var(--el-color-success-light-8)}.el-button--warning{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-warning);--el-button-border-color:var(--el-color-warning);--el-button-outline-color:var(--el-color-warning-light-5);--el-button-active-color:var(--el-color-warning-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-warning-light-5);--el-button-hover-bg-color:var(--el-color-warning-light-3);--el-button-hover-border-color:var(--el-color-warning-light-3);--el-button-active-bg-color:var(--el-color-warning-dark-2);--el-button-active-border-color:var(--el-color-warning-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-warning-light-5);--el-button-disabled-border-color:var(--el-color-warning-light-5)}.el-button--warning.is-plain,.el-button--warning.is-text,.el-button--warning.is-link{--el-button-text-color:var(--el-color-warning);--el-button-bg-color:var(--el-color-warning-light-9);--el-button-border-color:var(--el-color-warning-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-warning);--el-button-hover-border-color:var(--el-color-warning);--el-button-active-text-color:var(--el-color-white)}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:hover,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-text.is-disabled,.el-button--warning.is-text.is-disabled:hover,.el-button--warning.is-text.is-disabled:focus,.el-button--warning.is-text.is-disabled:active,.el-button--warning.is-link.is-disabled,.el-button--warning.is-link.is-disabled:hover,.el-button--warning.is-link.is-disabled:focus,.el-button--warning.is-link.is-disabled:active{color:var(--el-color-warning-light-5);background-color:var(--el-color-warning-light-9);border-color:var(--el-color-warning-light-8)}.el-button--warning.is-dashed{--el-button-text-color:var(--el-color-warning);--el-button-bg-color:var(--el-color-warning-light-9);--el-button-border-color:var(--el-color-warning-light-5);--el-button-hover-text-color:var(--el-color-warning);--el-button-hover-bg-color:var(--el-color-warning-light-9);--el-button-hover-border-color:var(--el-color-warning-light-3);--el-button-active-text-color:var(--el-color-warning-dark-2);--el-button-active-bg-color:var(--el-color-warning-light-9);--el-button-active-border-color:var(--el-color-warning-dark-2)}.el-button--warning.is-dashed.is-disabled,.el-button--warning.is-dashed.is-disabled:hover,.el-button--warning.is-dashed.is-disabled:focus,.el-button--warning.is-dashed.is-disabled:active{color:var(--el-color-warning-light-5);background-color:var(--el-color-warning-light-9);border-color:var(--el-color-warning-light-8)}.el-button--danger{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-danger);--el-button-border-color:var(--el-color-danger);--el-button-outline-color:var(--el-color-danger-light-5);--el-button-active-color:var(--el-color-danger-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-danger-light-5);--el-button-hover-bg-color:var(--el-color-danger-light-3);--el-button-hover-border-color:var(--el-color-danger-light-3);--el-button-active-bg-color:var(--el-color-danger-dark-2);--el-button-active-border-color:var(--el-color-danger-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-danger-light-5);--el-button-disabled-border-color:var(--el-color-danger-light-5)}.el-button--danger.is-plain,.el-button--danger.is-text,.el-button--danger.is-link{--el-button-text-color:var(--el-color-danger);--el-button-bg-color:var(--el-color-danger-light-9);--el-button-border-color:var(--el-color-danger-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-danger);--el-button-hover-border-color:var(--el-color-danger);--el-button-active-text-color:var(--el-color-white)}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:hover,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-text.is-disabled,.el-button--danger.is-text.is-disabled:hover,.el-button--danger.is-text.is-disabled:focus,.el-button--danger.is-text.is-disabled:active,.el-button--danger.is-link.is-disabled,.el-button--danger.is-link.is-disabled:hover,.el-button--danger.is-link.is-disabled:focus,.el-button--danger.is-link.is-disabled:active{color:var(--el-color-danger-light-5);background-color:var(--el-color-danger-light-9);border-color:var(--el-color-danger-light-8)}.el-button--danger.is-dashed{--el-button-text-color:var(--el-color-danger);--el-button-bg-color:var(--el-color-danger-light-9);--el-button-border-color:var(--el-color-danger-light-5);--el-button-hover-text-color:var(--el-color-danger);--el-button-hover-bg-color:var(--el-color-danger-light-9);--el-button-hover-border-color:var(--el-color-danger-light-3);--el-button-active-text-color:var(--el-color-danger-dark-2);--el-button-active-bg-color:var(--el-color-danger-light-9);--el-button-active-border-color:var(--el-color-danger-dark-2)}.el-button--danger.is-dashed.is-disabled,.el-button--danger.is-dashed.is-disabled:hover,.el-button--danger.is-dashed.is-disabled:focus,.el-button--danger.is-dashed.is-disabled:active{color:var(--el-color-danger-light-5);background-color:var(--el-color-danger-light-9);border-color:var(--el-color-danger-light-8)}.el-button--info{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-info);--el-button-border-color:var(--el-color-info);--el-button-outline-color:var(--el-color-info-light-5);--el-button-active-color:var(--el-color-info-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-info-light-5);--el-button-hover-bg-color:var(--el-color-info-light-3);--el-button-hover-border-color:var(--el-color-info-light-3);--el-button-active-bg-color:var(--el-color-info-dark-2);--el-button-active-border-color:var(--el-color-info-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-info-light-5);--el-button-disabled-border-color:var(--el-color-info-light-5)}.el-button--info.is-plain,.el-button--info.is-text,.el-button--info.is-link{--el-button-text-color:var(--el-color-info);--el-button-bg-color:var(--el-color-info-light-9);--el-button-border-color:var(--el-color-info-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-info);--el-button-hover-border-color:var(--el-color-info);--el-button-active-text-color:var(--el-color-white)}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:hover,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-text.is-disabled,.el-button--info.is-text.is-disabled:hover,.el-button--info.is-text.is-disabled:focus,.el-button--info.is-text.is-disabled:active,.el-button--info.is-link.is-disabled,.el-button--info.is-link.is-disabled:hover,.el-button--info.is-link.is-disabled:focus,.el-button--info.is-link.is-disabled:active{color:var(--el-color-info-light-5);background-color:var(--el-color-info-light-9);border-color:var(--el-color-info-light-8)}.el-button--info.is-dashed{--el-button-text-color:var(--el-color-info);--el-button-bg-color:var(--el-color-info-light-9);--el-button-border-color:var(--el-color-info-light-5);--el-button-hover-text-color:var(--el-color-info);--el-button-hover-bg-color:var(--el-color-info-light-9);--el-button-hover-border-color:var(--el-color-info-light-3);--el-button-active-text-color:var(--el-color-info-dark-2);--el-button-active-bg-color:var(--el-color-info-light-9);--el-button-active-border-color:var(--el-color-info-dark-2)}.el-button--info.is-dashed.is-disabled,.el-button--info.is-dashed.is-disabled:hover,.el-button--info.is-dashed.is-disabled:focus,.el-button--info.is-dashed.is-disabled:active{color:var(--el-color-info-light-5);background-color:var(--el-color-info-light-9);border-color:var(--el-color-info-light-8)}.el-button--large{--el-button-size:40px;height:var(--el-button-size)}.el-button--large [class*=el-icon]+span{margin-left:8px}.el-button--large{font-size:var(--el-font-size-base);border-radius:var(--el-border-radius-base);padding:12px 19px}.el-button--large.is-round{padding:12px 19px}.el-button--large.is-circle{width:var(--el-button-size);padding:12px}.el-button--small{--el-button-size:24px;height:var(--el-button-size)}.el-button--small [class*=el-icon]+span{margin-left:4px}.el-button--small{border-radius:calc(var(--el-border-radius-base) - 1px);padding:5px 11px;font-size:12px}.el-button--small.is-round{padding:5px 11px}.el-button--small.is-circle{width:var(--el-button-size);padding:5px}.el-overlay{z-index:2000;background-color:var(--el-overlay-color-lighter);height:100%;position:fixed;top:0;bottom:0;left:0;right:0;overflow:auto}.el-overlay .el-overlay-root{height:0}:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{width:100%;height:100%;opacity:var(--el-popup-modal-opacity);background:var(--el-popup-modal-bg-color);position:fixed;top:0;left:0}.el-popup-parent--hidden{overflow:hidden}.el-message-box{--el-messagebox-title-color:var(--el-text-color-primary);--el-messagebox-width:420px;--el-messagebox-border-radius:4px;--el-messagebox-box-shadow:var(--el-box-shadow);--el-messagebox-font-size:var(--el-font-size-large);--el-messagebox-content-font-size:var(--el-font-size-base);--el-messagebox-content-color:var(--el-text-color-regular);--el-messagebox-error-font-size:12px;--el-messagebox-padding-primary:12px;--el-messagebox-font-line-height:var(--el-font-line-height-primary);max-width:var(--el-messagebox-width);width:100%;padding:var(--el-messagebox-padding-primary);vertical-align:middle;background-color:var(--el-bg-color);border-radius:var(--el-messagebox-border-radius);font-size:var(--el-messagebox-font-size);box-shadow:var(--el-messagebox-box-shadow);text-align:left;-webkit-backface-visibility:hidden;backface-visibility:hidden;box-sizing:border-box;overflow-wrap:break-word;display:inline-block;position:relative;overflow:hidden}.el-message-box:focus{outline:none!important}.is-message-box .el-overlay-message-box{text-align:center;padding:16px;position:fixed;top:0;bottom:0;left:0;right:0;overflow:auto}.is-message-box .el-overlay-message-box:after{content:"";vertical-align:middle;width:0;height:100%;display:inline-block}.el-message-box.is-draggable .el-message-box__header{cursor:move;-webkit-user-select:none;user-select:none}.el-message-box__header{padding-bottom:var(--el-messagebox-padding-primary)}.el-message-box__header.show-close{padding-right:calc(var(--el-messagebox-padding-primary) + var(--el-message-close-size,16px))}.el-message-box__title{font-size:var(--el-messagebox-font-size);line-height:var(--el-messagebox-font-line-height);color:var(--el-messagebox-title-color)}.el-message-box__headerbtn{width:40px;height:40px;font-size:var(--el-message-close-size,16px);cursor:pointer;background:0 0;border:none;outline:none;padding:0;position:absolute;top:0;right:0}.el-message-box__headerbtn .el-message-box__close{color:var(--el-color-info);font-size:inherit}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:var(--el-color-primary)}.el-message-box__content{color:var(--el-messagebox-content-color);font-size:var(--el-messagebox-content-font-size)}.el-message-box__container{align-items:center;gap:12px;display:flex}.el-message-box__input{padding-top:12px}.el-message-box__input div.invalid>input,.el-message-box__input div.invalid>input:focus{border-color:var(--el-color-error)}.el-message-box__status{font-size:24px}.el-message-box__status.el-message-box-icon--primary{--el-messagebox-color:var(--el-color-primary);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--success{--el-messagebox-color:var(--el-color-success);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--info{--el-messagebox-color:var(--el-color-info);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--warning{--el-messagebox-color:var(--el-color-warning);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--error{--el-messagebox-color:var(--el-color-error);color:var(--el-messagebox-color)}.el-message-box__message{min-width:0;margin:0}.el-message-box__message p{line-height:var(--el-messagebox-font-line-height);margin:0}.el-message-box__errormsg{color:var(--el-color-error);font-size:var(--el-messagebox-error-font-size);line-height:var(--el-messagebox-font-line-height)}.el-message-box__btns{padding-top:var(--el-messagebox-padding-primary);flex-wrap:wrap;justify-content:flex-end;align-items:center;display:flex}.el-message-box--center .el-message-box__title{justify-content:center;align-items:center;gap:6px;display:flex}.el-message-box--center .el-message-box__status{font-size:inherit}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__container{justify-content:center}.el-message-box-parent--hidden{overflow:hidden}.fade-in-linear-enter-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration)}.fade-in-linear-leave-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration) reverse}@keyframes msgbox-fade-in{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translate(0)}}:root{--el-loading-spinner-size:42px;--el-loading-fullscreen-spinner-size:50px}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{z-index:2000;background-color:var(--el-mask-color);transition:opacity var(--el-transition-duration);margin:0;position:absolute;top:0;bottom:0;left:0;right:0}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:calc((0px - var(--el-loading-fullscreen-spinner-size)) / 2)}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:var(--el-loading-fullscreen-spinner-size);width:var(--el-loading-fullscreen-spinner-size)}.el-loading-spinner{margin-top:calc((0px - var(--el-loading-spinner-size)) / 2);text-align:center;width:100%;position:absolute;top:50%}.el-loading-spinner .el-loading-text{color:var(--el-color-primary);margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:var(--el-loading-spinner-size);width:var(--el-loading-spinner-size);animation:2s linear infinite loading-rotate;display:inline}.el-loading-spinner .path{stroke-dasharray:90 150;stroke-dashoffset:0;stroke-width:2px;stroke:var(--el-color-primary);stroke-linecap:round;animation:1.5s ease-in-out infinite loading-dash}.el-loading-spinner i{color:var(--el-color-primary)}.el-loading-fade-enter-from,.el-loading-fade-leave-to{opacity:0}@keyframes loading-rotate{to{transform:rotate(360deg)}}@keyframes loading-dash{0%{stroke-dasharray:1 200;stroke-dashoffset:0}50%{stroke-dasharray:90 150;stroke-dashoffset:-40px}to{stroke-dasharray:90 150;stroke-dashoffset:-120px}}:root{--app-shell-bg: #f3f5f8;--app-page-bg: #ffffff;--app-surface-bg: #ffffff;--el-bg-color-page: var(--app-shell-bg);--el-color-primary: #4f46e5;--el-color-primary-light-3: #818cf8;--el-color-primary-light-5: #a5b4fc;--el-color-primary-light-7: #c7d2fe;--el-color-primary-light-8: #e0e7ff;--el-color-primary-light-9: #eef2ff;--el-color-primary-dark-2: #4338ca;--el-color-success: #10b981;--el-color-warning: #f59e0b;--el-color-danger: #ef4444;--el-color-info: #64748b;--el-border-radius-base: 8px;--el-border-radius-small: 6px;--el-border-radius-round: 20px;--primary-color: var(--el-color-primary);--primary-hover: var(--el-color-primary-light-3);--danger-color: var(--el-color-danger);--success-color: var(--el-color-success);--sidebar-bg: #f9fafb;--sidebar-text: #606266;--sidebar-active-bg: #e2e8f0;--sidebar-active-text: #303133;--card-shadow: 0 4px 24px rgba(0, 0, 0, .04);--header-height: 60px}html,body,#app{height:100%;margin:0;padding:0}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,PingFang SC,sans-serif;background-color:var(--app-shell-bg);color:var(--el-text-color-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background-color:#94a3b866;border-radius:4px;transition:all .3s}::-webkit-scrollbar-thumb:hover{background-color:#94a3b8b3}::-webkit-scrollbar-track{background:transparent}.el-card{background-color:var(--app-surface-bg);border:none!important;box-shadow:var(--card-shadow)!important;border-radius:12px!important;transition:transform .2s ease,box-shadow .2s ease}.el-table{--el-table-border-color: #f1f5f9;--el-table-header-bg-color: #f8fafc;--el-table-header-text-color: #475569;border-radius:8px;overflow:hidden}.el-table th.el-table__cell{font-weight:600!important;font-size:13px;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--el-table-border-color)!important}.el-table td.el-table__cell{padding:12px 0!important}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background-color:#f8fafc!important}.el-table:before{display:none}.el-button{font-weight:500;transition:all .2s ease}.el-button:hover{transform:translateY(-1px);box-shadow:0 4px 12px #0000000d}.el-button:active{transform:translateY(0)}.el-button.is-link:hover,.el-button.is-text:hover{transform:none;box-shadow:none}.el-button.is-link:focus,.el-button.is-text:focus{background-color:transparent!important;border-color:transparent!important;box-shadow:none!important;outline:none!important}.el-tag{border-radius:6px;border:none!important;font-weight:500}.el-tag--primary{background-color:#4f46e51a;color:#4f46e5}.el-tag--success{background-color:#10b9811a;color:#10b981}.el-tag--warning{background-color:#f59e0b1a;color:#d97706}.el-tag--danger{background-color:#ef44441a;color:#ef4444}.el-tag--info{background-color:#64748b1a;color:#475569}.el-pagination{--el-pagination-bg-color: #ffffff;--el-pagination-hover-color: var(--primary-color);margin-top:16px;justify-content:flex-end}.el-pagination.is-background .el-pager li{border-radius:6px;background-color:#f1f5f9;border:none}.el-pagination.is-background .el-pager li.is-active{background-color:var(--primary-color);color:#fff;box-shadow:0 2px 8px #4f46e54d}.el-dialog{border-radius:16px!important;box-shadow:0 20px 40px #0000001a!important}.el-dialog__header{margin-right:0!important;padding-bottom:16px!important;border-bottom:1px solid #f1f5f9}.el-dialog__title{font-weight:600!important;font-size:16px!important} diff --git a/frontend/dist/assets/index-BxAjCHOi.js b/frontend/dist/assets/index-BxAjCHOi.js new file mode 100644 index 0000000..eb3e9aa --- /dev/null +++ b/frontend/dist/assets/index-BxAjCHOi.js @@ -0,0 +1,3 @@ +import{e as D,E as h,C as L,s as H,t as n,b as B,g as K,a as M,L as OO,i as eO,k as f,f as iO,l as aO,N as nO,I as rO,d as QO,m as d}from"./index--cDK8lVp.js";import"./index-BKKvzUDD.js";const tO=1,Z=194,j=195,oO=196,x=197,dO=198,sO=199,lO=200,TO=2,E=3,u=201,SO=24,pO=25,qO=49,gO=50,PO=55,mO=56,$O=57,hO=59,cO=60,fO=61,XO=62,yO=63,zO=65,WO=238,vO=71,RO=241,kO=242,_O=243,xO=244,uO=245,UO=246,bO=247,VO=248,Y=72,GO=249,wO=250,ZO=251,jO=252,EO=253,YO=254,FO=255,CO=256,JO=73,AO=77,NO=263,IO=112,DO=130,LO=151,HO=152,BO=155,p=10,q=13,k=32,c=9,_=35,KO=40,MO=46,R=123,U=125,F=39,C=34,b=92,Oe=111,ee=120,ie=78,ae=117,ne=85,re=new Set([pO,qO,gO,NO,zO,DO,mO,$O,WO,XO,yO,Y,JO,AO,cO,fO,LO,HO,BO,IO]);function X(O){return O==p||O==q}function y(O){return O>=48&&O<=57||O>=65&&O<=70||O>=97&&O<=102}const Qe=new h((O,e)=>{let i;if(O.next<0)O.acceptToken(sO);else if(e.context.flags&m)X(O.next)&&O.acceptToken(dO,1);else if(((i=O.peek(-1))<0||X(i))&&e.canShift(x)){let a=0;for(;O.next==k||O.next==c;)O.advance(),a++;(O.next==p||O.next==q||O.next==_)&&O.acceptToken(x,-a)}else X(O.next)&&O.acceptToken(oO,1)},{contextual:!0}),te=new h((O,e)=>{let i=e.context;if(i.flags)return;let a=O.peek(-1);if(a==p||a==q){let r=0,Q=0;for(;;){if(O.next==k)r++;else if(O.next==c)r+=8-r%8;else break;O.advance(),Q++}r!=i.indent&&O.next!=p&&O.next!=q&&O.next!=_&&(r[O,e|J])),se=new L({start:oe,reduce(O,e,i,a){return O.flags&m&&re.has(e)||(e==vO||e==Y)&&O.flags&J?O.parent:O},shift(O,e,i,a){return e==Z?new $(O,de(a.read(a.pos,i.pos)),0):e==j?O.parent:e==SO||e==PO||e==hO||e==E?new $(O,0,m):V.has(e)?new $(O,0,V.get(e)|O.flags&m):O},hash(O){return O.hash}}),le=new h(O=>{for(let e=0;e<5;e++){if(O.next!="print".charCodeAt(e))return;O.advance()}if(!/\w/.test(String.fromCharCode(O.next)))for(let e=0;;e++){let i=O.peek(e);if(!(i==k||i==c)){i!=KO&&i!=MO&&i!=p&&i!=q&&i!=_&&O.acceptToken(tO);return}}}),Te=new h((O,e)=>{let{flags:i}=e.context,a=i&s?C:F,r=(i&l)>0,Q=!(i&T),t=(i&S)>0,o=O.pos;for(;!(O.next<0);)if(t&&O.next==R)if(O.peek(1)==R)O.advance(2);else{if(O.pos==o){O.acceptToken(E,1);return}break}else if(Q&&O.next==b){if(O.pos==o){O.advance();let g=O.next;g>=0&&(O.advance(),Se(O,g)),O.acceptToken(TO);return}break}else if(O.next==b&&!Q&&O.peek(1)>-1)O.advance(2);else if(O.next==a&&(!r||O.peek(1)==a&&O.peek(2)==a)){if(O.pos==o){O.acceptToken(u,r?3:1);return}break}else if(O.next==p){if(r)O.advance();else if(O.pos==o){O.acceptToken(u);return}break}else O.advance();O.pos>o&&O.acceptToken(lO)});function Se(O,e){if(e==Oe)for(let i=0;i<2&&O.next>=48&&O.next<=55;i++)O.advance();else if(e==ee)for(let i=0;i<2&&y(O.next);i++)O.advance();else if(e==ae)for(let i=0;i<4&&y(O.next);i++)O.advance();else if(e==ne)for(let i=0;i<8&&y(O.next);i++)O.advance();else if(e==ie&&O.next==R){for(O.advance();O.next>=0&&O.next!=U&&O.next!=F&&O.next!=C&&O.next!=p;)O.advance();O.next==U&&O.advance()}}const pe=H({'async "*" "**" FormatConversion FormatSpec':n.modifier,"for while if elif else try except finally return raise break continue with pass assert await yield match case":n.controlKeyword,"in not and or is del":n.operatorKeyword,"from def class global nonlocal lambda":n.definitionKeyword,import:n.moduleKeyword,"with as print":n.keyword,Boolean:n.bool,None:n.null,VariableName:n.variableName,"CallExpression/VariableName":n.function(n.variableName),"FunctionDefinition/VariableName":n.function(n.definition(n.variableName)),"ClassDefinition/VariableName":n.definition(n.className),PropertyName:n.propertyName,"CallExpression/MemberExpression/PropertyName":n.function(n.propertyName),Comment:n.lineComment,Number:n.number,String:n.string,FormatString:n.special(n.string),Escape:n.escape,UpdateOp:n.updateOperator,"ArithOp!":n.arithmeticOperator,BitOp:n.bitwiseOperator,CompareOp:n.compareOperator,AssignOp:n.definitionOperator,Ellipsis:n.punctuation,At:n.meta,"( )":n.paren,"[ ]":n.squareBracket,"{ }":n.brace,".":n.derefOperator,", ;":n.separator}),qe={__proto__:null,await:44,or:54,and:56,in:60,not:62,is:64,if:70,else:72,lambda:76,yield:94,from:96,async:102,for:104,None:162,True:164,False:164,del:178,pass:182,break:186,continue:190,return:194,raise:202,import:206,as:208,global:212,nonlocal:214,assert:218,type:223,elif:236,while:240,try:246,except:248,finally:250,with:254,def:258,class:268,match:279,case:285},ge=D.deserialize({version:14,states:"##jQ`QeOOP$}OSOOO&WQtO'#HUOOQS'#Co'#CoOOQS'#Cp'#CpO'vQdO'#CnO*UQtO'#HTOOQS'#HU'#HUOOQS'#DU'#DUOOQS'#HT'#HTO*rQdO'#D_O+VQdO'#DfO+gQdO'#DjO+zOWO'#DuO,VOWO'#DvO.[QtO'#GuOOQS'#Gu'#GuO'vQdO'#GtO0ZQtO'#GtOOQS'#Eb'#EbO0rQdO'#EcOOQS'#Gs'#GsO0|QdO'#GrOOQV'#Gr'#GrO1XQdO'#FYOOQS'#G^'#G^O1^QdO'#FXOOQV'#IS'#ISOOQV'#Gq'#GqOOQV'#Fq'#FqQ`QeOOO'vQdO'#CqO1lQdO'#C}O1sQdO'#DRO2RQdO'#HYO2cQtO'#EVO'vQdO'#EWOOQS'#EY'#EYOOQS'#E['#E[OOQS'#E^'#E^O2wQdO'#E`O3_QdO'#EdO3rQdO'#EfO3zQtO'#EfO1XQdO'#EiO0rQdO'#ElO1XQdO'#EnO0rQdO'#EtO0rQdO'#EwO4VQdO'#EyO4^QdO'#FOO4iQdO'#EzO0rQdO'#FOO1XQdO'#FQO1XQdO'#FVO4nQdO'#F[P4uOdO'#GpPOOO)CBd)CBdOOQS'#Ce'#CeOOQS'#Cf'#CfOOQS'#Cg'#CgOOQS'#Ch'#ChOOQS'#Ci'#CiOOQS'#Cj'#CjOOQS'#Cl'#ClO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO5TQdO'#DoOOQS,5:Y,5:YO5hQdO'#HdOOQS,5:],5:]O5uQ!fO,5:]O5zQtO,59YO1lQdO,59bO1lQdO,59bO1lQdO,59bO8jQdO,59bO8oQdO,59bO8vQdO,59jO8}QdO'#HTO:TQdO'#HSOOQS'#HS'#HSOOQS'#D['#D[O:lQdO,59aO'vQdO,59aO:zQdO,59aOOQS,59y,59yO;PQdO,5:RO'vQdO,5:ROOQS,5:Q,5:QO;_QdO,5:QO;dQdO,5:XO'vQdO,5:XO'vQdO,5:VOOQS,5:U,5:UO;uQdO,5:UO;zQdO,5:WOOOW'#Fy'#FyOOOOQS'#Ds'#DsOOQS1G/w1G/wOOQS1G.|1G.|O!/[QtO1G.|O!/cQtO1G.|O1lQdO1G.|O!0OQdO1G/UOOQS'#DZ'#DZO0rQdO,59tOOQS1G.{1G.{O!0VQdO1G/eO!0gQdO1G/eO!0oQdO1G/fO'vQdO'#H[O!0tQdO'#H[O!0yQtO1G.{O!1ZQdO,59iO!2aQdO,5=zO!2qQdO,5=zO!2yQdO1G/mO!3OQtO1G/mOOQS1G/l1G/lO!3`QdO,5=uO!4VQdO,5=uO0rQdO1G/qO!4tQdO1G/sO!4yQtO1G/sO!5ZQtO1G/qOOQS1G/p1G/pOOQS1G/r1G/rOOOW-E9w-E9wOOQS1G/{1G/{O!5kQdO'#HxO0rQdO'#HxO!5|QdO,5>cOOOW-E9x-E9xOOQS1G/|1G/|OOQS-E9{-E9{O!6[Q#xO1G2zO!6{QtO1G2zO'vQdO,5kOOQS1G1`1G1`O!8RQdO1G1`OOQS'#DV'#DVO0rQdO,5=qOOQS,5=q,5=qO!8WQdO'#FrO!8cQdO,59oO!8kQdO1G/XO!8uQtO,5=uOOQS1G3`1G3`OOQS,5:m,5:mO!9fQdO'#GtOOQS,5jO!;ZQdO,5>jO1XQdO,5>jO!;lQdO,5>iOOQS-E:R-E:RO!;qQdO1G0lO!;|QdO1G0lO!lO!lO!hO!=VQdO,5>hO!=hQdO'#EpO0rQdO1G0tO!=sQdO1G0tO!=xQgO1G0zO!AvQgO1G0}O!EqQdO,5>oO!E{QdO,5>oO!FTQtO,5>oO0rQdO1G1PO!F_QdO1G1PO4iQdO1G1UO!!vQdO1G1WOOQV,5;a,5;aO!FdQfO,5;aO!FiQgO1G1QO!JjQdO'#GZO4iQdO1G1QO4iQdO1G1QO!JzQdO,5>pO!KXQdO,5>pO1XQdO,5>pOOQV1G1U1G1UO!KaQdO'#FSO!KrQ!fO1G1WO!KzQdO1G1WOOQV1G1]1G1]O4iQdO1G1]O!LPQdO1G1]O!LXQdO'#F^OOQV1G1b1G1bO!#ZQtO1G1bPOOO1G2v1G2vP!L^OSO1G2vOOQS,5=},5=}OOQS'#Dp'#DpO0rQdO,5=}O!LfQdO,5=|O!LyQdO,5=|OOQS1G/u1G/uO!MRQdO,5>PO!McQdO,5>PO!MkQdO,5>PO!NOQdO,5>PO!N`QdO,5>POOQS1G3j1G3jOOQS7+$h7+$hO!8kQdO7+$pO#!RQdO1G.|O#!YQdO1G.|OOQS1G/`1G/`OOQS,5<`,5<`O'vQdO,5<`OOQS7+%P7+%PO#!aQdO7+%POOQS-E9r-E9rOOQS7+%Q7+%QO#!qQdO,5=vO'vQdO,5=vOOQS7+$g7+$gO#!vQdO7+%PO##OQdO7+%QO##TQdO1G3fOOQS7+%X7+%XO##eQdO1G3fO##mQdO7+%XOOQS,5<_,5<_O'vQdO,5<_O##rQdO1G3aOOQS-E9q-E9qO#$iQdO7+%]OOQS7+%_7+%_O#$wQdO1G3aO#%fQdO7+%_O#%kQdO1G3gO#%{QdO1G3gO#&TQdO7+%]O#&YQdO,5>dO#&sQdO,5>dO#&sQdO,5>dOOQS'#Dx'#DxO#'UO&jO'#DzO#'aO`O'#HyOOOW1G3}1G3}O#'fQdO1G3}O#'nQdO1G3}O#'yQ#xO7+(fO#(jQtO1G2UP#)TQdO'#GOOOQS,5nQdO,5sQdO1G4OOOQS-E9y-E9yO#?^QdO1G4OO<[QdO'#H{OOOO'#D{'#D{OOOO'#F|'#F|O#?oO&jO,5:fOOOW,5>e,5>eOOOW7+)i7+)iO#?zQdO7+)iO#@SQdO1G2zO#@mQdO1G2zP'vQdO'#FuO0rQdO<mO#BQQdO,5>mOOQS1G0v1G0vOOQS<rO#KgQdO,5>rO#KrQdO,5>rO#K}QdO,5>qO#L`QdO,5>qOOQS1G1Y1G1YOOQS,5;p,5;pOOQV<VAN>VO$ oQdO<cAN>cO0rQdO1G1|O$!PQtO1G1|P$!ZQdO'#FvOOQS1G2R1G2RP$!hQdO'#F{O$!uQdO7+)jO$#`QdO,5>gOOOO-E9z-E9zOOOW<tO$4{QdO,5>tO1XQdO,5vO$)nQdO,5>vOOQS1G1p1G1pOOQS,5<[,5<[OOQU7+'P7+'PO$+zQdO1G/iO$)nQdO,5wO$8zQdO,5>wOOQS1G1s1G1sOOQS7+'S7+'SP$)nQdO'#GdO$9SQdO1G4bO$9^QdO1G4bO$9fQdO1G4bOOQS7+%T7+%TO$9tQdO1G1tO$:SQtO'#FaO$:ZQdO,5<}OOQS,5<},5<}O$:iQdO1G4cOOQS-E:a-E:aO$)nQdO,5<|O$:pQdO,5<|O$:uQdO7+)|OOQS-E:`-E:`O$;PQdO7+)|O$)nQdO,5S~O%cOS%^OSSOS%]PQ~OPdOVaOfoOhYOopOs!POvqO!PrO!Q{O!T!SO!U!RO!XZO!][O!h`O!r`O!s`O!t`O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#l!QO#o!TO#s!UO#u!VO#z!WO#}hO$P!XO%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~O%]!YO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%j![O%k!]O%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aO~Ok%xXl%xXm%xXn%xXo%xXp%xXs%xXz%xX{%xX!x%xX#g%xX%[%xX%_%xX%z%xXg%xX!T%xX!U%xX%{%xX!W%xX![%xX!Q%xX#[%xXt%xX!m%xX~P%SOfoOhYO!XZO!][O!h`O!r`O!s`O!t`O%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~Oz%wX{%wX#g%wX%[%wX%_%wX%z%wX~Ok!pOl!qOm!oOn!oOo!rOp!sOs!tO!x%wX~P)pOV!zOg!|Oo0cOv0qO!PrO~P'vOV#OOo0cOv0qO!W#PO~P'vOV#SOa#TOo0cOv0qO![#UO~P'vOQ#XO%`#XO%a#ZO~OQ#^OR#[O%`#^O%a#`O~OV%iX_%iXa%iXh%iXk%iXl%iXm%iXn%iXo%iXp%iXs%iXz%iX!X%iX!f%iX%j%iX%k%iX%l%iX%m%iX%n%iX%o%iX%p%iX%q%iX%r%iX%s%iXg%iX!T%iX!U%iX~O&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O{%iX!x%iX#g%iX%[%iX%_%iX%z%iX%{%iX!W%iX![%iX!Q%iX#[%iXt%iX!m%iX~P,eOz#dO{%hX!x%hX#g%hX%[%hX%_%hX%z%hX~Oo0cOv0qO~P'vO#g#gO%[#iO%_#iO~O%uWO~O!T#nO#u!VO#z!WO#}hO~OopO~P'vOV#sOa#tO%uWO{wP~OV#xOo0cOv0qO!Q#yO~P'vO{#{O!x$QO%z#|O#g!yX%[!yX%_!yX~OV#xOo0cOv0qO#g#SX%[#SX%_#SX~P'vOo0cOv0qO#g#WX%[#WX%_#WX~P'vOh$WO%uWO~O!f$YO!r$YO%uWO~OV$eO~P'vO!U$gO#s$hO#u$iO~O{$jO~OV$qO~P'vOS$sO%[$rO%_$rO%c$tO~OV$}Oa$}Og%POo0cOv0qO~P'vOo0cOv0qO{%SO~P'vO&Y%UO~Oa!bOh!iO!X!kO!f!mOVba_bakbalbambanbaobapbasbazba{ba!xba#gba%[ba%_ba%jba%kba%lba%mba%nba%oba%pba%qba%rba%sba%zbagba!Tba!Uba%{ba!Wba![ba!Qba#[batba!mba~On%ZO~Oo%ZO~P'vOo0cO~P'vOk0eOl0fOm0dOn0dOo0mOp0nOs0rOg%wX!T%wX!U%wX%{%wX!W%wX![%wX!Q%wX#[%wX!m%wX~P)pO%{%]Og%vXz%vX!T%vX!U%vX!W%vX{%vX~Og%_Oz%`O!T%dO!U%cO~Og%_O~Oz%gO!T%dO!U%cO!W&SX~O!W%kO~Oz%lO{%nO!T%dO!U%cO![%}X~O![%rO~O![%sO~OQ#XO%`#XO%a%uO~OV%wOo0cOv0qO!PrO~P'vOQ#^OR#[O%`#^O%a%zO~OV!qa_!qaa!qah!qak!qal!qam!qan!qao!qap!qas!qaz!qa{!qa!X!qa!f!qa!x!qa#g!qa%[!qa%_!qa%j!qa%k!qa%l!qa%m!qa%n!qa%o!qa%p!qa%q!qa%r!qa%s!qa%z!qag!qa!T!qa!U!qa%{!qa!W!qa![!qa!Q!qa#[!qat!qa!m!qa~P#yOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P%SOV&OOopOvqO{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P'vOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#g$zX%[$zX%_$zX~P'vO#g#gO%[&TO%_&TO~O!f&UOh&sX%[&sXz&sX#[&sX#g&sX%_&sX#Z&sXg&sX~Oh!iO%[&WO~Okealeameaneaoeapeaseazea{ea!xea#gea%[ea%_ea%zeagea!Tea!Uea%{ea!Wea![ea!Qea#[eatea!mea~P%SOsqazqa{qa#gqa%[qa%_qa%zqa~Ok!pOl!qOm!oOn!oOo!rOp!sO!xqa~PEcO%z&YOz%yX{%yX~O%uWOz%yX{%yX~Oz&]O{wX~O{&_O~Oz%lO#g%}X%[%}X%_%}Xg%}X{%}X![%}X!m%}X%z%}X~OV0lOo0cOv0qO!PrO~P'vO%z#|O#gUa%[Ua%_Ua~Oz&hO#g&PX%[&PX%_&PXn&PX~P%SOz&kO!Q&jO#g#Wa%[#Wa%_#Wa~Oz&lO#[&nO#g&rX%[&rX%_&rXg&rX~O!f$YO!r$YO#Z&qO%uWO~O#Z&qO~Oz&sO#g&tX%[&tX%_&tX~Oz&uO#g&pX%[&pX%_&pX{&pX~O!X&wO%z&xO~Oz&|On&wX~P%SOn'PO~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO%['UO~P'vOt'YO#p'WO#q'XOP#naV#naf#nah#nao#nas#nav#na!P#na!Q#na!T#na!U#na!X#na!]#na!h#na!r#na!s#na!t#na!{#na!}#na#P#na#R#na#T#na#X#na#Z#na#^#na#_#na#a#na#c#na#l#na#o#na#s#na#u#na#z#na#}#na$P#na%X#na%o#na%p#na%t#na%u#na&Z#na&[#na&]#na&^#na&_#na&`#na&a#na&b#na&c#na&d#na&e#na&f#na&g#na&h#na&i#na&j#na%Z#na%_#na~Oz'ZO#[']O{&xX~Oh'_O!X&wO~Oh!iO{$jO!X&wO~O{'eO~P%SO%['hO%_'hO~OS'iO%['hO%_'hO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%k!]O~P!#uO%kWi~P!#uOV!aO_!aOa!bOh!iO!X!kO!f!mO%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%m!_O%n!_O~P!&pO%mWi%nWi~P!&pOa!bOh!iO!X!kO!f!mOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%mWi%nWi%oWi%pWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~OV!aO_!aO%q!aO%r!aO%s!aO~P!)nOVWi_Wi%qWi%rWi%sWi~P!)nO!T%dO!U%cOg&VXz&VX~O%z'kO%{'kO~P,eOz'mOg&UX~Og'oO~Oz'pO{'rO!W&XX~Oo0cOv0qOz'pO{'sO!W&XX~P'vO!W'uO~Om!oOn!oOo!rOp!sOkjisjizji{ji!xji#gji%[ji%_ji%zji~Ol!qO~P!.aOlji~P!.aOk0eOl0fOm0dOn0dOo0mOp0nO~Ot'wO~P!/jOV'|Og'}Oo0cOv0qO~P'vOg'}Oz(OO~Og(QO~O!U(SO~Og(TOz(OO!T%dO!U%cO~P%SOk0eOl0fOm0dOn0dOo0mOp0nOgqa!Tqa!Uqa%{qa!Wqa![qa!Qqa#[qatqa!mqa~PEcOV'|Oo0cOv0qO!W&Sa~P'vOz(WO!W&Sa~O!W(XO~Oz(WO!T%dO!U%cO!W&Sa~P%SOV(]Oo0cOv0qO![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~P'vOz(^O![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~O![(aO~Oz(^O!T%dO!U%cO![%}a~P%SOz(dO!T%dO!U%cO![&Ta~P%SOz(gO{&lX![&lX!m&lX%z&lX~O{(kO![(mO!m(nO%z(jO~OV&OOopOvqO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~P'vOz(pO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~O!f&UOh&sa%[&saz&sa#[&sa#g&sa%_&sa#Z&sag&sa~O%[(uO~OV#sOa#tO%uWO~Oz&]O{wa~OopOvqO~P'vOz(^O#g%}a%[%}a%_%}ag%}a{%}a![%}a!m%}a%z%}a~P%SOz(zO#g%hX%[%hX%_%hX%z%hX~O%z#|O#gUi%[Ui%_Ui~O#g&Pa%[&Pa%_&Pan&Pa~P'vOz(}O#g&Pa%[&Pa%_&Pan&Pa~O%uWO#g&ra%[&ra%_&rag&ra~Oz)SO#g&ra%[&ra%_&rag&ra~Og)VO~OV)WOh$WO%uWO~O#Z)XO~O%uWO#g&ta%[&ta%_&ta~Oz)ZO#g&ta%[&ta%_&ta~Oo0cOv0qO#g&pa%[&pa%_&pa{&pa~P'vOz)^O#g&pa%[&pa%_&pa{&pa~OV)`Oa)`O%uWO~O%z)eO~Ot)hO#j)gOP#hiV#hif#hih#hio#his#hiv#hi!P#hi!Q#hi!T#hi!U#hi!X#hi!]#hi!h#hi!r#hi!s#hi!t#hi!{#hi!}#hi#P#hi#R#hi#T#hi#X#hi#Z#hi#^#hi#_#hi#a#hi#c#hi#l#hi#o#hi#s#hi#u#hi#z#hi#}#hi$P#hi%X#hi%o#hi%p#hi%t#hi%u#hi&Z#hi&[#hi&]#hi&^#hi&_#hi&`#hi&a#hi&b#hi&c#hi&d#hi&e#hi&f#hi&g#hi&h#hi&i#hi&j#hi%Z#hi%_#hi~Ot)iOP#kiV#kif#kih#kio#kis#kiv#ki!P#ki!Q#ki!T#ki!U#ki!X#ki!]#ki!h#ki!r#ki!s#ki!t#ki!{#ki!}#ki#P#ki#R#ki#T#ki#X#ki#Z#ki#^#ki#_#ki#a#ki#c#ki#l#ki#o#ki#s#ki#u#ki#z#ki#}#ki$P#ki%X#ki%o#ki%p#ki%t#ki%u#ki&Z#ki&[#ki&]#ki&^#ki&_#ki&`#ki&a#ki&b#ki&c#ki&d#ki&e#ki&f#ki&g#ki&h#ki&i#ki&j#ki%Z#ki%_#ki~OV)kOn&wa~P'vOz)lOn&wa~Oz)lOn&wa~P%SOn)pO~O%Y)tO~Ot)wO#p'WO#q)vOP#niV#nif#nih#nio#nis#niv#ni!P#ni!Q#ni!T#ni!U#ni!X#ni!]#ni!h#ni!r#ni!s#ni!t#ni!{#ni!}#ni#P#ni#R#ni#T#ni#X#ni#Z#ni#^#ni#_#ni#a#ni#c#ni#l#ni#o#ni#s#ni#u#ni#z#ni#}#ni$P#ni%X#ni%o#ni%p#ni%t#ni%u#ni&Z#ni&[#ni&]#ni&^#ni&_#ni&`#ni&a#ni&b#ni&c#ni&d#ni&e#ni&f#ni&g#ni&h#ni&i#ni&j#ni%Z#ni%_#ni~OV)zOo0cOv0qO{$jO~P'vOo0cOv0qO{&xa~P'vOz*OO{&xa~OV*SOa*TOg*WO%q*UO%uWO~O{$jO&{*YO~Oh'_O~Oh!iO{$jO~O%[*_O~O%[*aO%_*aO~OV$}Oa$}Oo0cOv0qOg&Ua~P'vOz*dOg&Ua~Oo0cOv0qO{*gO!W&Xa~P'vOz*hO!W&Xa~Oo0cOv0qOz*hO{*kO!W&Xa~P'vOo0cOv0qOz*hO!W&Xa~P'vOz*hO{*kO!W&Xa~Om0dOn0dOo0mOp0nOgjikjisjizji!Tji!Uji%{ji!Wji{ji![ji#gji%[ji%_ji!Qji#[jitji!mji%zji~Ol0fO~P!NkOlji~P!NkOV'|Og*pOo0cOv0qO~P'vOn*rO~Og*pOz*tO~Og*uO~OV'|Oo0cOv0qO!W&Si~P'vOz*vO!W&Si~O!W*wO~OV(]Oo0cOv0qO![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~P'vOz*zO!T%dO!U%cO![&Ti~Oz*}O![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~O![+OO~Oa+QOo0cOv0qO![&Ti~P'vOz*zO![&Ti~O![+SO~OV+UOo0cOv0qO{&la![&la!m&la%z&la~P'vOz+VO{&la![&la!m&la%z&la~O!]+YO&n+[O![!nX~O![+^O~O{(kO![+_O~O{(kO![+_O!m+`O~OV&OOopOvqO{%hq!x%hq#g%hq%[%hq%_%hq%z%hq~P'vOz$ri{$ri!x$ri#g$ri%[$ri%_$ri%z$ri~P%SOV&OOopOvqO~P'vOV&OOo0cOv0qO#g%ha%[%ha%_%ha%z%ha~P'vOz+aO#g%ha%[%ha%_%ha%z%ha~Oz$ia#g$ia%[$ia%_$ian$ia~P%SO#g&Pi%[&Pi%_&Pin&Pi~P'vOz+dO#g#Wq%[#Wq%_#Wq~O#[+eOz$va#g$va%[$va%_$vag$va~O%uWO#g&ri%[&ri%_&rig&ri~Oz+gO#g&ri%[&ri%_&rig&ri~OV+iOh$WO%uWO~O%uWO#g&ti%[&ti%_&ti~Oo0cOv0qO#g&pi%[&pi%_&pi{&pi~P'vO{#{Oz#eX!W#eX~Oz+mO!W&uX~O!W+oO~Ot+rO#j)gOP#hqV#hqf#hqh#hqo#hqs#hqv#hq!P#hq!Q#hq!T#hq!U#hq!X#hq!]#hq!h#hq!r#hq!s#hq!t#hq!{#hq!}#hq#P#hq#R#hq#T#hq#X#hq#Z#hq#^#hq#_#hq#a#hq#c#hq#l#hq#o#hq#s#hq#u#hq#z#hq#}#hq$P#hq%X#hq%o#hq%p#hq%t#hq%u#hq&Z#hq&[#hq&]#hq&^#hq&_#hq&`#hq&a#hq&b#hq&c#hq&d#hq&e#hq&f#hq&g#hq&h#hq&i#hq&j#hq%Z#hq%_#hq~On$|az$|a~P%SOV)kOn&wi~P'vOz+yOn&wi~Oz,TO{$jO#[,TO~O#q,VOP#nqV#nqf#nqh#nqo#nqs#nqv#nq!P#nq!Q#nq!T#nq!U#nq!X#nq!]#nq!h#nq!r#nq!s#nq!t#nq!{#nq!}#nq#P#nq#R#nq#T#nq#X#nq#Z#nq#^#nq#_#nq#a#nq#c#nq#l#nq#o#nq#s#nq#u#nq#z#nq#}#nq$P#nq%X#nq%o#nq%p#nq%t#nq%u#nq&Z#nq&[#nq&]#nq&^#nq&_#nq&`#nq&a#nq&b#nq&c#nq&d#nq&e#nq&f#nq&g#nq&h#nq&i#nq&j#nq%Z#nq%_#nq~O#[,WOz%Oa{%Oa~Oo0cOv0qO{&xi~P'vOz,YO{&xi~O{#{O%z,[Og&zXz&zX~O%uWOg&zXz&zX~Oz,`Og&yX~Og,bO~O%Y,eO~O!T%dO!U%cOg&Viz&Vi~OV$}Oa$}Oo0cOv0qOg&Ui~P'vO{,hOz$la!W$la~Oo0cOv0qO{,iOz$la!W$la~P'vOo0cOv0qO{*gO!W&Xi~P'vOz,lO!W&Xi~Oo0cOv0qOz,lO!W&Xi~P'vOz,lO{,oO!W&Xi~Og$hiz$hi!W$hi~P%SOV'|Oo0cOv0qO~P'vOn,qO~OV'|Og,rOo0cOv0qO~P'vOV'|Oo0cOv0qO!W&Sq~P'vOz$gi![$gi#g$gi%[$gi%_$gig$gi{$gi!m$gi%z$gi~P%SOV(]Oo0cOv0qO~P'vOa+QOo0cOv0qO![&Tq~P'vOz,sO![&Tq~O![,tO~OV(]Oo0cOv0qO![%}q#g%}q%[%}q%_%}qg%}q{%}q!m%}q%z%}q~P'vO{,uO~OV+UOo0cOv0qO{&li![&li!m&li%z&li~P'vOz,zO{&li![&li!m&li%z&li~O!]+YO&n+[O![!na~O{(kO![,}O~OV&OOo0cOv0qO#g%hi%[%hi%_%hi%z%hi~P'vOz-OO#g%hi%[%hi%_%hi%z%hi~O%uWO#g&rq%[&rq%_&rqg&rq~Oz-RO#g&rq%[&rq%_&rqg&rq~OV)`Oa)`O%uWO!W&ua~Oz-TO!W&ua~On$|iz$|i~P%SOV)kO~P'vOV)kOn&wq~P'vOt-XOP#myV#myf#myh#myo#mys#myv#my!P#my!Q#my!T#my!U#my!X#my!]#my!h#my!r#my!s#my!t#my!{#my!}#my#P#my#R#my#T#my#X#my#Z#my#^#my#_#my#a#my#c#my#l#my#o#my#s#my#u#my#z#my#}#my$P#my%X#my%o#my%p#my%t#my%u#my&Z#my&[#my&]#my&^#my&_#my&`#my&a#my&b#my&c#my&d#my&e#my&f#my&g#my&h#my&i#my&j#my%Z#my%_#my~O%Z-]O%_-]O~P`O#q-^OP#nyV#nyf#nyh#nyo#nys#nyv#ny!P#ny!Q#ny!T#ny!U#ny!X#ny!]#ny!h#ny!r#ny!s#ny!t#ny!{#ny!}#ny#P#ny#R#ny#T#ny#X#ny#Z#ny#^#ny#_#ny#a#ny#c#ny#l#ny#o#ny#s#ny#u#ny#z#ny#}#ny$P#ny%X#ny%o#ny%p#ny%t#ny%u#ny&Z#ny&[#ny&]#ny&^#ny&_#ny&`#ny&a#ny&b#ny&c#ny&d#ny&e#ny&f#ny&g#ny&h#ny&i#ny&j#ny%Z#ny%_#ny~Oz-aO{$jO#[-aO~Oo0cOv0qO{&xq~P'vOz-dO{&xq~O%z,[Og&zaz&za~O{#{Og&zaz&za~OV*SOa*TO%q*UO%uWOg&ya~Oz-hOg&ya~O$S-lO~OV$}Oa$}Oo0cOv0qO~P'vOo0cOv0qO{-mOz$li!W$li~P'vOo0cOv0qOz$li!W$li~P'vO{-mOz$li!W$li~Oo0cOv0qO{*gO~P'vOo0cOv0qO{*gO!W&Xq~P'vOz-pO!W&Xq~Oo0cOv0qOz-pO!W&Xq~P'vOs-sO!T%dO!U%cOg&Oq!W&Oq![&Oqz&Oq~P!/jOa+QOo0cOv0qO![&Ty~P'vOz$ji![$ji~P%SOa+QOo0cOv0qO~P'vOV+UOo0cOv0qO~P'vOV+UOo0cOv0qO{&lq![&lq!m&lq%z&lq~P'vO{(kO![-xO!m-yO%z-wO~OV&OOo0cOv0qO#g%hq%[%hq%_%hq%z%hq~P'vO%uWO#g&ry%[&ry%_&ryg&ry~OV)`Oa)`O%uWO!W&ui~Ot-}OP#m!RV#m!Rf#m!Rh#m!Ro#m!Rs#m!Rv#m!R!P#m!R!Q#m!R!T#m!R!U#m!R!X#m!R!]#m!R!h#m!R!r#m!R!s#m!R!t#m!R!{#m!R!}#m!R#P#m!R#R#m!R#T#m!R#X#m!R#Z#m!R#^#m!R#_#m!R#a#m!R#c#m!R#l#m!R#o#m!R#s#m!R#u#m!R#z#m!R#}#m!R$P#m!R%X#m!R%o#m!R%p#m!R%t#m!R%u#m!R&Z#m!R&[#m!R&]#m!R&^#m!R&_#m!R&`#m!R&a#m!R&b#m!R&c#m!R&d#m!R&e#m!R&f#m!R&g#m!R&h#m!R&i#m!R&j#m!R%Z#m!R%_#m!R~Oo0cOv0qO{&xy~P'vOV*SOa*TO%q*UO%uWOg&yi~O$S-lO%Z.VO%_.VO~OV.aOh._O!X.^O!].`O!h.YO!s.[O!t.[O%p.XO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O~Oo0cOv0qOz$lq!W$lq~P'vO{.fOz$lq!W$lq~Oo0cOv0qO{*gO!W&Xy~P'vOz.gO!W&Xy~Oo0cOv.kO~P'vOs-sO!T%dO!U%cOg&Oy!W&Oy![&Oyz&Oy~P!/jO{(kO![.nO~O{(kO![.nO!m.oO~OV*SOa*TO%q*UO%uWO~Oh.tO!f.rOz$TX#[$TX%j$TXg$TX~Os$TX{$TX!W$TX![$TX~P$-bO%o.vO%p.vOs$UXz$UX{$UX#[$UX%j$UX!W$UXg$UX![$UX~O!h.xO~Oz.|O#[/OO%j.yOs&|X{&|X!W&|Xg&|X~Oa/RO~P$)zOh.tOs&}Xz&}X{&}X#[&}X%j&}X!W&}Xg&}X![&}X~Os/VO{$jO~Oo0cOv0qOz$ly!W$ly~P'vOo0cOv0qO{*gO!W&X!R~P'vOz/ZO!W&X!R~Og&RXs&RX!T&RX!U&RX!W&RX![&RXz&RX~P!/jOs-sO!T%dO!U%cOg&Qa!W&Qa![&Qaz&Qa~O{(kO![/^O~O!f.rOh$[as$[az$[a{$[a#[$[a%j$[a!W$[ag$[a![$[a~O!h/eO~O%o.vO%p.vOs$Uaz$Ua{$Ua#[$Ua%j$Ua!W$Uag$Ua![$Ua~O%j.yOs$Yaz$Ya{$Ya#[$Ya!W$Yag$Ya![$Ya~Os&|a{&|a!W&|ag&|a~P$)nOz/jOs&|a{&|a!W&|ag&|a~O!W/mO~Og/mO~O{/oO~O![/pO~Oo0cOv0qO{*gO!W&X!Z~P'vO{/sO~O%z/tO~P$-bOz/uO#[/OO%j.yOg'PX~Oz/uOg'PX~Og/wO~O!h/xO~O#[/OOs%Saz%Sa{%Sa%j%Sa!W%Sag%Sa![%Sa~O#[/OO%j.yOs%Waz%Wa{%Wa!W%Wag%Wa~Os&|i{&|i!W&|ig&|i~P$)nOz/zO#[/OO%j.yO!['Oa~Og'Pa~P$)nOz0SOg'Pa~Oa0UO!['Oi~P$)zOz0WO!['Oi~Oz0WO#[/OO%j.yO!['Oi~O#[/OO%j.yOg$biz$bi~O%z0ZO~P$-bO#[/OO%j.yOg%Vaz%Va~Og'Pi~P$)nO{0^O~Oa0UO!['Oq~P$)zOz0`O!['Oq~O#[/OO%j.yOz%Ui![%Ui~Oa0UO~P$)zOa0UO!['Oy~P$)zO#[/OO%j.yOg$ciz$ci~O#[/OO%j.yOz%Uq![%Uq~Oz+aO#g%ha%[%ha%_%ha%z%ha~P%SOV&OOo0cOv0qO~P'vOn0hO~Oo0hO~P'vO{0iO~Ot0jO~P!/jO&]&Z&j&h&i&g&f&d&e&c&b&`&a&_&^&[%u~",goto:"!=j'QPPPPPP'RP'Z*s+[+t,_,y-fP.SP'Z.r.r'ZPPP'Z2[PPPPPP2[5PPP5PP7b7k=sPP=v>h>kPP'Z'ZPP>zPP'Z'ZPP'Z'Z'Z'Z'Z?O?w'ZP?zP@QDXGuGyPG|HWH['ZPPPH_Hk'RP'R'RP'RP'RP'RP'RP'R'R'RP'RPP'RPP'RP'RPHqH}IVPI^IdPI^PI^I^PPPI^PKrPK{LVL]KrPI^LfPI^PLmLsPLwM]MzNeLwLwNkNxLwLwLwLw! ^! d! g! l! o! y!!P!!]!!o!!u!#P!#V!#s!#y!$P!$Z!$a!$g!$y!%T!%Z!%a!%k!%q!%w!%}!&T!&Z!&e!&k!&u!&{!'U!'[!'k!'s!'}!(UPPPPPPPPPPP!([!(_!(e!(n!(x!)TPPPPPPPPPPPP!-u!/Z!3^!6oPP!6w!7W!7a!8Y!8P!8c!8i!8l!8o!8r!8z!9jPPPPPPPPPPPPPPPPP!9m!9q!9wP!:]!:a!:m!:v!;S!;j!;m!;p!;v!;|!_![!]Do!]!^Es!^!_FZ!_!`Gk!`!aHX!a!b%T!b!cIf!c!dJU!d!eK^!e!hJU!h!i!#f!i!tJU!t!u!,|!u!wJU!w!x!.t!x!}JU!}#O!0S#O#P&o#P#Q!0j#Q#R!1Q#R#SJU#S#T%T#T#UJU#U#VK^#V#YJU#Y#Z!#f#Z#fJU#f#g!,|#g#iJU#i#j!.t#j#oJU#o#p!1n#p#q!1s#q#r!2a#r#s!2f#s$g%T$g;'SJU;'S;=`KW<%lOJU`%YT&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T`%lP;=`<%l%To%v]&n`%c_OX%TXY%oY[%T[]%o]p%Tpq%oq#O%T#O#P&o#P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To&tX&n`OY%TYZ%oZ]%T]^%o^#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc'f[&n`O!_%T!_!`([!`#T%T#T#U(r#U#f%T#f#g(r#g#h(r#h#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(cTmR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(yT!mR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk)aV&n`&[ZOr%Trs)vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk){V&n`Or%Trs*bs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk*iT&n`&^ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To+PZS_&n`OY*xYZ%TZ]*x]^%T^#o*x#o#p+r#p#q*x#q#r+r#r;'S*x;'S;=`,^<%lO*x_+wTS_OY+rZ]+r^;'S+r;'S;=`,W<%lO+r_,ZP;=`<%l+ro,aP;=`<%l*xj,kV%rQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-XT!xY&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-oV%lQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.]V&n`&ZZOw%Twx.rx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.wV&n`Ow%Twx/^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/eT&n`&]ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/{ThZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc0cTgR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk0yXVZ&n`Oz%Tz{1f{!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk1mVaR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk2ZV%oZ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc2wTzR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To3_W%pZ&n`O!_%T!_!`-Q!`!a3w!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Td4OT&{S&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk4fX!fQ&n`O!O%T!O!P5R!P!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5WV&n`O!O%T!O!P5m!P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5tT!rZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti6[a!hX&n`O!Q%T!Q![6T![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S6T#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti7fZ&n`O{%T{|8X|}%T}!O8X!O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8^V&n`O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8z]!hX&n`O!Q%T!Q![8s![!l%T!l!m9s!m#R%T#R#S8s#S#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti9zT!hX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk:bX%qR&n`O!P%T!P!Q:}!Q!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj;UV%sQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti;ro!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!d%T!d!e?q!e!g%T!g!h7a!h!l%T!l!m9s!m!q%T!q!rA]!r!z%T!z!{Bq!{#R%T#R#S>_#S#U%T#U#V?q#V#X%T#X#Y7a#Y#^%T#^#_9s#_#c%T#c#dA]#d#l%T#l#mBq#m#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti=xV&n`O!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti>fc!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S>_#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti?vY&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti@mY!hX&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiAbX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBUX!hX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBv]&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiCv]!hX&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToDvV{_&n`O!_%T!_!`E]!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TcEdT%{R&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkEzT#gZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkFbXmR&n`O!^%T!^!_F}!_!`([!`!a([!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjGUV%mQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkGrV%zZ&n`O!_%T!_!`([!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkH`WmR&n`O!_%T!_!`([!`!aHx!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjIPV%nQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkIoV_Q#}P&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToJ_]&n`&YS%uZO!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoKZP;=`<%lJUoKge&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!tJU!t!uLx!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#gLx#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoMRa&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUkN_V&n`&`ZOr%TrsNts#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkNyV&n`Or%Trs! `s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! gT&n`&bZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! }V&n`&_ZOw%Twx!!dx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!!iV&n`Ow%Twx!#Ox#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!#VT&n`&aZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!#oe&n`&YS%uZOr%Trs!%Qsw%Twx!&px!Q%T!Q![JU![!c%T!c!tJU!t!u!(`!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#g!(`#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!%XV&n`&dZOr%Trs!%ns#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!%sV&n`Or%Trs!&Ys#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&aT&n`&fZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&wV&n`&cZOw%Twx!'^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!'cV&n`Ow%Twx!'xx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!(PT&n`&eZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!(ia&n`&YS%uZOr%Trs!)nsw%Twx!+^x!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!)uV&n`&hZOr%Trs!*[s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*aV&n`Or%Trs!*vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*}T&n`&jZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!+eV&n`&gZOw%Twx!+zx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,PV&n`Ow%Twx!,fx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,mT&n`&iZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!-Vi&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!dJU!d!eLx!e!hJU!h!i!(`!i!}JU!}#R%T#R#SJU#S#T%T#T#UJU#U#VLx#V#YJU#Y#Z!(`#Z#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUo!.}a&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!0ZT!XZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc!0qT!WR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj!1XV%kQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!1sO!]~k!1zV%jR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!2fO![~i!2mT%tX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T",tokenizers:[le,te,Qe,Te,0,1,2,3,4],topRules:{Script:[0,5]},specialized:[{term:221,get:O=>qe[O]||-1}],tokenPrec:7668}),G=new nO,A=new Set(["Script","Body","FunctionDefinition","ClassDefinition","LambdaExpression","ForStatement","MatchClause"]);function P(O){return(e,i,a)=>{if(a)return!1;let r=e.node.getChild("VariableName");return r&&i(r,O),!0}}const Pe={FunctionDefinition:P("function"),ClassDefinition:P("class"),ForStatement(O,e,i){if(i){for(let a=O.node.firstChild;a;a=a.nextSibling)if(a.name=="VariableName")e(a,"variable");else if(a.name=="in")break}},ImportStatement(O,e){var i,a;let{node:r}=O,Q=((i=r.firstChild)===null||i===void 0?void 0:i.name)=="from";for(let t=r.getChild("import");t;t=t.nextSibling)t.name=="VariableName"&&((a=t.nextSibling)===null||a===void 0?void 0:a.name)!="as"&&e(t,Q?"variable":"namespace")},AssignStatement(O,e){for(let i=O.node.firstChild;i;i=i.nextSibling)if(i.name=="VariableName")e(i,"variable");else if(i.name==":"||i.name=="AssignOp")break},ParamList(O,e){for(let i=null,a=O.node.firstChild;a;a=a.nextSibling)a.name=="VariableName"&&(!i||!/\*|AssignOp/.test(i.name))&&e(a,"variable"),i=a},CapturePattern:P("variable"),AsPattern:P("variable"),__proto__:null};function N(O,e){let i=G.get(e);if(i)return i;let a=[],r=!0;function Q(t,o){let g=O.sliceString(t.from,t.to);a.push({label:g,type:o})}return e.cursor(rO.IncludeAnonymous).iterate(t=>{if(t.name){let o=Pe[t.name];if(o&&o(t,Q,r)||!r&&A.has(t.name))return!1;r=!1}else if(t.to-t.from>8192){for(let o of N(O,t.node))a.push(o);return!1}}),G.set(e,a),a}const w=/^[\w\xa1-\uffff][\w\d\xa1-\uffff]*$/,I=["String","FormatString","Comment","PropertyName"];function me(O){let e=K(O.state).resolveInner(O.pos,-1);if(I.indexOf(e.name)>-1)return null;let i=e.name=="VariableName"||e.to-e.from<20&&w.test(O.state.sliceDoc(e.from,e.to));if(!i&&!O.explicit)return null;let a=[];for(let r=e;r;r=r.parent)A.has(r.name)&&(a=a.concat(N(O.state.doc,r)));return{options:a,from:i?e.from:O.pos,validFor:w}}const $e=["__annotations__","__builtins__","__debug__","__doc__","__import__","__name__","__loader__","__package__","__spec__","False","None","True"].map(O=>({label:O,type:"constant"})).concat(["ArithmeticError","AssertionError","AttributeError","BaseException","BlockingIOError","BrokenPipeError","BufferError","BytesWarning","ChildProcessError","ConnectionAbortedError","ConnectionError","ConnectionRefusedError","ConnectionResetError","DeprecationWarning","EOFError","Ellipsis","EncodingWarning","EnvironmentError","Exception","FileExistsError","FileNotFoundError","FloatingPointError","FutureWarning","GeneratorExit","IOError","ImportError","ImportWarning","IndentationError","IndexError","InterruptedError","IsADirectoryError","KeyError","KeyboardInterrupt","LookupError","MemoryError","ModuleNotFoundError","NameError","NotADirectoryError","NotImplemented","NotImplementedError","OSError","OverflowError","PendingDeprecationWarning","PermissionError","ProcessLookupError","RecursionError","ReferenceError","ResourceWarning","RuntimeError","RuntimeWarning","StopAsyncIteration","StopIteration","SyntaxError","SyntaxWarning","SystemError","SystemExit","TabError","TimeoutError","TypeError","UnboundLocalError","UnicodeDecodeError","UnicodeEncodeError","UnicodeError","UnicodeTranslateError","UnicodeWarning","UserWarning","ValueError","Warning","ZeroDivisionError"].map(O=>({label:O,type:"type"}))).concat(["bool","bytearray","bytes","classmethod","complex","float","frozenset","int","list","map","memoryview","object","range","set","staticmethod","str","super","tuple","type"].map(O=>({label:O,type:"class"}))).concat(["abs","aiter","all","anext","any","ascii","bin","breakpoint","callable","chr","compile","delattr","dict","dir","divmod","enumerate","eval","exec","exit","filter","format","getattr","globals","hasattr","hash","help","hex","id","input","isinstance","issubclass","iter","len","license","locals","max","min","next","oct","open","ord","pow","print","property","quit","repr","reversed","round","setattr","slice","sorted","sum","vars","zip"].map(O=>({label:O,type:"function"}))),he=[d("def ${name}(${params}):\n ${}",{label:"def",detail:"function",type:"keyword"}),d("for ${name} in ${collection}:\n ${}",{label:"for",detail:"loop",type:"keyword"}),d("while ${}:\n ${}",{label:"while",detail:"loop",type:"keyword"}),d("try:\n ${}\nexcept ${error}:\n ${}",{label:"try",detail:"/ except block",type:"keyword"}),d(`if \${}: + +`,{label:"if",detail:"block",type:"keyword"}),d("if ${}:\n ${}\nelse:\n ${}",{label:"if",detail:"/ else block",type:"keyword"}),d("class ${name}:\n def __init__(self, ${params}):\n ${}",{label:"class",detail:"definition",type:"keyword"}),d("import ${module}",{label:"import",detail:"statement",type:"keyword"}),d("from ${module} import ${names}",{label:"from",detail:"import",type:"keyword"})],ce=B(I,QO($e.concat(he)));function z(O){let{node:e,pos:i}=O,a=O.lineIndent(i,-1),r=null;for(;;){let Q=e.childBefore(i);if(Q)if(Q.name=="Comment")i=Q.from;else if(Q.name=="Body"||Q.name=="MatchBody")O.baseIndentFor(Q)+O.unit<=a&&(r=Q),e=Q;else if(Q.name=="MatchClause")e=Q;else if(Q.type.is("Statement"))e=Q;else break;else break}return r}function W(O,e){let i=O.baseIndentFor(e),a=O.lineAt(O.pos,-1),r=a.from+a.text.length;return/^\s*($|#)/.test(a.text)&&O.node.toi?null:i+O.unit}const v=OO.define({name:"python",parser:ge.configure({props:[eO.add({Body:O=>{var e;let i=/^\s*(#|$)/.test(O.textAfter)&&z(O)||O.node;return(e=W(O,i))!==null&&e!==void 0?e:O.continue()},MatchBody:O=>{var e;let i=z(O);return(e=W(O,i||O.node))!==null&&e!==void 0?e:O.continue()},IfStatement:O=>/^\s*(else:|elif )/.test(O.textAfter)?O.baseIndent:O.continue(),"ForStatement WhileStatement":O=>/^\s*else:/.test(O.textAfter)?O.baseIndent:O.continue(),TryStatement:O=>/^\s*(except[ :]|finally:|else:)/.test(O.textAfter)?O.baseIndent:O.continue(),MatchStatement:O=>/^\s*case /.test(O.textAfter)?O.baseIndent+O.unit:O.continue(),"TupleExpression ComprehensionExpression ParamList ArgList ParenthesizedExpression":f({closing:")"}),"DictionaryExpression DictionaryComprehensionExpression SetExpression SetComprehensionExpression":f({closing:"}"}),"ArrayExpression ArrayComprehensionExpression":f({closing:"]"}),MemberExpression:O=>O.baseIndent+O.unit,"String FormatString":()=>null,Script:O=>{var e;let i=z(O);return(e=i&&W(O,i))!==null&&e!==void 0?e:O.continue()}}),iO.add({"ArrayExpression DictionaryExpression SetExpression TupleExpression":aO,Body:(O,e)=>({from:O.from+1,to:O.to-(O.to==e.doc.length?0:1)}),"String FormatString":(O,e)=>({from:e.doc.lineAt(O.from).to,to:O.to})})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"'''",'"""'],stringPrefixes:["f","fr","rf","r","u","b","br","rb","F","FR","RF","R","U","B","BR","RB"]},commentTokens:{line:"#"},indentOnInput:/^\s*([\}\]\)]|else:|elif |except |finally:|case\s+[^:]*:?)$/}});function ye(){return new M(v,[v.data.of({autocomplete:me}),v.data.of({autocomplete:ce})])}export{ce as globalCompletion,me as localCompletionSource,ye as python,v as pythonLanguage}; diff --git a/frontend/dist/assets/index-CBaIyXPw.js b/frontend/dist/assets/index-CBaIyXPw.js new file mode 100644 index 0000000..c79cdfa --- /dev/null +++ b/frontend/dist/assets/index-CBaIyXPw.js @@ -0,0 +1 @@ +import{e as V,E as X,s as d,t as $,p as Z,a as R,q as s,L as t,i as y,c,k as U,f as l,l as w}from"./index--cDK8lVp.js";import"./index-BKKvzUDD.js";const W=1,p=2,q=275,u=3,b=276,_=277,f=278,m=4,k=5,G=6,x=7,n=8,h=9,v=10,g=11,j=12,E=13,I=14,N=15,L=16,F=17,C=18,H=19,A=20,K=21,D=22,B=23,M=24,J=25,OO=26,$O=27,QO=28,iO=29,aO=30,TO=31,PO=32,XO=33,SO=34,cO=35,eO=36,oO=37,_O=38,nO=39,zO=40,rO=41,YO=42,VO=43,dO=44,ZO=45,RO=46,sO=47,tO=48,yO=49,UO=50,lO=51,wO=52,WO=53,pO=54,qO=55,uO=56,bO=57,fO=58,mO=59,kO=60,GO=61,xO=62,e=63,hO=64,vO=65,gO=66,jO={abstract:m,and:k,array:G,as:x,true:n,false:n,break:h,case:v,catch:g,clone:j,const:E,continue:I,declare:L,default:N,do:F,echo:C,else:H,elseif:A,enddeclare:K,endfor:D,endforeach:B,endif:M,endswitch:J,endwhile:OO,enum:$O,extends:QO,final:iO,finally:aO,fn:TO,for:PO,foreach:XO,from:SO,function:cO,global:eO,goto:oO,if:_O,implements:nO,include:zO,include_once:rO,instanceof:YO,insteadof:VO,interface:dO,list:ZO,match:RO,namespace:sO,new:tO,null:yO,or:UO,print:lO,readonly:wO,require:WO,require_once:pO,return:qO,switch:uO,throw:bO,trait:fO,try:mO,unset:kO,use:GO,var:xO,public:e,private:e,protected:e,while:hO,xor:vO,yield:gO,__proto__:null};function z(O){let Q=jO[O.toLowerCase()];return Q??-1}function r(O){return O==9||O==10||O==13||O==32}function Y(O){return O>=97&&O<=122||O>=65&&O<=90}function T(O){return O==95||O>=128||Y(O)}function o(O){return O>=48&&O<=55||O>=97&&O<=102||O>=65&&O<=70}const EO={int:!0,integer:!0,bool:!0,boolean:!0,float:!0,double:!0,real:!0,string:!0,array:!0,object:!0,unset:!0,__proto__:null},IO=new X(O=>{if(O.next==40){O.advance();let Q=0;for(;r(O.peek(Q));)Q++;let i="",a;for(;Y(a=O.peek(Q));)i+=String.fromCharCode(a),Q++;for(;r(O.peek(Q));)Q++;O.peek(Q)==41&&EO[i.toLowerCase()]&&O.acceptToken(W)}else if(O.next==60&&O.peek(1)==60&&O.peek(2)==60){for(let a=0;a<3;a++)O.advance();for(;O.next==32||O.next==9;)O.advance();let Q=O.next==39;if(Q&&O.advance(),!T(O.next))return;let i=String.fromCharCode(O.next);for(;O.advance(),!(!T(O.next)&&!(O.next>=48&&O.next<=55));)i+=String.fromCharCode(O.next);if(Q){if(O.next!=39)return;O.advance()}if(O.next!=10&&O.next!=13)return;for(;;){let a=O.next==10||O.next==13;if(O.advance(),O.next<0)return;if(a){for(;O.next==32||O.next==9;)O.advance();let P=!0;for(let S=0;S{O.next<0&&O.acceptToken(f)}),LO=new X((O,Q)=>{O.next==63&&Q.canShift(_)&&O.peek(1)==62&&O.acceptToken(_)});function FO(O){let Q=O.peek(1);if(Q==110||Q==114||Q==116||Q==118||Q==101||Q==102||Q==92||Q==36||Q==34||Q==123)return 2;if(Q>=48&&Q<=55){let i=2,a;for(;i<5&&(a=O.peek(i))>=48&&a<=55;)i++;return i}if(Q==120&&o(O.peek(2)))return o(O.peek(3))?4:3;if(Q==117&&O.peek(2)==123)for(let i=3;;i++){let a=O.peek(i);if(a==125)return i==2?0:i+1;if(!o(a))break}return 0}const CO=new X((O,Q)=>{let i=!1;for(;!(O.next==34||O.next<0||O.next==36&&(T(O.peek(1))||O.peek(1)==123)||O.next==123&&O.peek(1)==36);i=!0){if(O.next==92){let a=FO(O);if(a){if(i)break;return O.acceptToken(u,a)}}else if(!i&&(O.next==91||O.next==45&&O.peek(1)==62&&T(O.peek(2))||O.next==63&&O.peek(1)==45&&O.peek(2)==62&&T(O.peek(3)))&&Q.canShift(b))break;O.advance()}i&&O.acceptToken(q)}),HO=d({"Visibility abstract final static":$.modifier,"for foreach while do if else elseif switch try catch finally return throw break continue default case":$.controlKeyword,"endif endfor endforeach endswitch endwhile declare enddeclare goto match":$.controlKeyword,"and or xor yield unset clone instanceof insteadof":$.operatorKeyword,"function fn class trait implements extends const enum global interface use var":$.definitionKeyword,"include include_once require require_once namespace":$.moduleKeyword,"new from echo print array list as":$.keyword,null:$.null,Boolean:$.bool,VariableName:$.variableName,"NamespaceName/...":$.namespace,"NamedType/...":$.typeName,Name:$.name,"CallExpression/Name":$.function($.variableName),"LabelStatement/Name":$.labelName,"MemberExpression/Name":$.propertyName,"MemberExpression/VariableName":$.special($.propertyName),"ScopedExpression/ClassMemberName/Name":$.propertyName,"ScopedExpression/ClassMemberName/VariableName":$.special($.propertyName),"CallExpression/MemberExpression/Name":$.function($.propertyName),"CallExpression/ScopedExpression/ClassMemberName/Name":$.function($.propertyName),"MethodDeclaration/Name":$.function($.definition($.variableName)),"FunctionDefinition/Name":$.function($.definition($.variableName)),"ClassDeclaration/Name":$.definition($.className),UpdateOp:$.updateOperator,ArithOp:$.arithmeticOperator,"LogicOp IntersectionType/&":$.logicOperator,BitOp:$.bitwiseOperator,CompareOp:$.compareOperator,ControlOp:$.controlOperator,AssignOp:$.definitionOperator,"$ ConcatOp":$.operator,LineComment:$.lineComment,BlockComment:$.blockComment,Integer:$.integer,Float:$.float,String:$.string,ShellExpression:$.special($.string),"=> ->":$.punctuation,"( )":$.paren,"#[ [ ]":$.squareBracket,"${ { }":$.brace,"-> ?->":$.derefOperator,", ; :: : \\":$.separator,"PhpOpen PhpClose":$.processingInstruction}),AO={__proto__:null,static:325,STATIC:325,class:351,CLASS:351},KO=V.deserialize({version:14,states:"%#[Q`OWOOQhQaOOP%oO`OOOOO#t'#Hh'#HhO%tO#|O'#DuOOO#u'#Dx'#DxQ&SOWO'#DxO&XO$VOOOOQ#u'#Dy'#DyO&lQaO'#D}O'[QdO'#EQO+QQdO'#IqO+_QdO'#ERO-RQaO'#EXO/bQ`O'#EUO/gQ`O'#E_O2UQaO'#E_O2]Q`O'#EgO2bQ`O'#EqO-RQaO'#EqO2mQpO'#FOO2rQ`O'#FOOOQS'#Iq'#IqO2wQ`O'#ExOOQS'#Ih'#IhO5SQdO'#IeO9UQeO'#F]O-RQaO'#FlO-RQaO'#FmO-RQaO'#FnO-RQaO'#FoO-RQaO'#FoO-RQaO'#FrOOQO'#Ir'#IrO9cQ`O'#FxOOQO'#Ht'#HtO9kQ`O'#HXO:VQ`O'#FsO:bQ`O'#HfO:mQ`O'#GPO:uQaO'#GQO-RQaO'#G`O-RQaO'#GcO;bOrO'#GfOOQS'#JP'#JPOOQS'#JO'#JOOOQS'#Ie'#IeO/bQ`O'#GmO/bQ`O'#GoO/bQ`O'#GtOhQaO'#GvO;iQ`O'#GwO;nQ`O'#GzO:]Q`O'#G}O;sQeO'#HOO;sQeO'#HPO;sQeO'#HQO;}Q`O'#HROhQ`O'#HVO:]Q`O'#HWO>mQ`O'#HWO;}Q`O'#HXO:]Q`O'#HZO:]Q`O'#H[O:]Q`O'#H]O>rQ`O'#H`O>}Q`O'#HaOQO!$dQ`O,5POOQ#u-E;h-E;hO!1QQ`O,5=tOOO#u,5:_,5:_O!1]O#|O,5:_OOO#u-E;g-E;gOOOO,5>|,5>|OOQ#y1G0T1G0TO!1eQ`O1G0YO-RQaO1G0YO!2wQ`O1G0qOOQS1G0q1G0qOOQS'#Eo'#EoOOQS'#Il'#IlO-RQaO'#IlOOQS1G0r1G0rO!4ZQ`O'#IoO!5pQ`O'#IqO!5}QaO'#EwOOQO'#Io'#IoO!6XQ`O'#InO!6aQ`O,5;aO-RQaO'#FXOOQS'#FW'#FWOOQS1G1[1G1[O!6fQdO1G1dO!8kQdO1G1dO!:WQdO1G1dO!;sQdO1G1dO!=`QdO1G1dO!>{QdO1G1dO!@hQdO1G1dO!BTQdO1G1dO!CpQdO1G1dO!E]QdO1G1dO!FxQdO1G1dO!HeQdO1G1dO!JQQdO1G1dO!KmQdO1G1dO!MYQdO1G1dO!NuQdO1G1dOOQT1G0_1G0_O!#[Q`O,5<_O#!bQaO'#EYOOQS1G0[1G0[O#!iQ`O,5:zOEdQaO,5:zO#!nQaO,5;OO#!uQdO,5:|O#$tQdO,5?UO#&sQaO'#HmO#'TQ`O,5?TOOQS1G0e1G0eO#']Q`O1G0eO#'bQ`O'#IkO#(zQ`O'#IkO#)SQ`O,5;SOG|QaO,5;SOOQS1G0w1G0wOOQO,5>^,5>^OOQO-E;p-E;pOOQS1G1U1G1UO#)pQdO'#FQO#+uQ`O'#HsOJ}QpO1G1UO2wQ`O'#HpO#+zQtO,5;eO2wQ`O'#HqO#,iQtO,5;gO#-WQaO1G1OOOQS,5;h,5;hO#/gQtO'#FQO#/tQdO1G0dO-RQaO1G0dO#1aQdO1G1aO#2|QdO1G1cOOQO,5X,5>XOOQO-E;k-E;kOOQS7+&P7+&PO!+iQaO,5;TO$$^QaO'#HnO$$hQ`O,5?VOOQS1G0n1G0nO$$pQ`O1G0nPOQO'#FQ'#FQOOQO,5>_,5>_OOQO-E;q-E;qOOQS7+&p7+&pOOQS,5>[,5>[OOQS-E;n-E;nO$$uQtO,5>]OOQS-E;o-E;oO$%dQdO7+&jO$'iQtO'#FQO$'vQdO7+&OOOQS1G0j1G0jOOQO,5>a,5>aOOQO-E;s-E;sOOQ#u7+(x7+(xO!$[QdO7+(xOOQ#u7+(}7+(}O#JfQ`O7+(}O#JkQ`O7+(}OOQ#u7+(z7+(zO!.]Q`O7+(zO!1TQ`O7+(zO!1QQ`O7+(zO$)cQ`O,5i,5>iOOQS-E;{-E;{O$.lQdO7+'qO$.|QpO7+'qO$/XQdO'#IxOOQO,5pOOQ#u,5>p,5>pOOQ#u-EoOOQS-EVQdO1G2^OOQS,5>h,5>hOOQS-E;z-E;zOOQ#u7+({7+({O$?oQ`O'#GXO:]Q`O'#H_OOQO'#IV'#IVO$@fQ`O,5=xOOQ#u,5=x,5=xO$AcQ!bO'#EQO$AzQ!bO7+(}O$BYQpO7+)RO#KRQpO7+)RO$BbQ`O'#HbO!$[QdO7+)RO$BpQdO,5>rOOQS-EVOOQS-E;i-E;iO$D{QdO<Z,5>ZOOQO-E;m-E;mOOQS1G1_1G1_O$8rQaO,5:uO$G}QaO'#HlO$H[Q`O,5?QOOQS1G0`1G0`OOQS7+&Q7+&QO$HdQ`O7+&UO$IyQ`O1G0oO$K`Q`O,5>YOOQO,5>Y,5>YOOQO-E;l-E;lOOQS7+&Y7+&YOOQS7+&U7+&UOOQ#u<c,5>cOOQO-E;u-E;uOOQS<lOOQ#u-EmOOQO-EW,5>WOOQO-E;j-E;jO!+iQaO,5;UOOQ#uANBTANBTO#JfQ`OANBTOOQ#uANBQANBQO!.]Q`OANBQO!+iQaO7+'hOOQO7+'l7+'lO%-bQ`O7+'hO%.wQ`O7+'hO%/SQ`O7+'lO!+iQaO7+'mOOQO7+'m7+'mO%/XQdO'#F}OOQO'#Hv'#HvO%/jQ`O,5e,5>eOOQS-E;w-E;wOOQO1G2_1G2_O$1YQdO1G2_O$/jQpO1G2_O#JkQ`O1G2]O!.mQdO1G2aO%$dQ!bO1G2]O!$[QdO1G2]OOQO1G2a1G2aOOQO1G2]1G2]O%2uQaO'#G]OOQO1G2b1G2bOOQSAN@xAN@xO!.]Q`OAN@xOOOQ<]O%6rQ!bO'#FQO!$[QdOANBXOOQ#uANBXANBXO:]Q`O,5=}O%7WQ`O,5=}O%7cQ`O'#IXO%7wQ`O,5?rOOQS1G3h1G3hOOQS7+)x7+)xP%+OQpOANBXO%8PQ`O1G0pOOQ#uG27oG27oOOQ#uG27lG27lO%9fQ`O<d,5>dO%dOOQO-E;v-E;vO%hQ`O'#IqO%>rQ`O'#IhO!$[QdO'#IOO%@lQaO,5s,5>sOOQO-Ej,5>jOOQP-E;|-E;|OOQO1G2c1G2cOOQ#uLD,kLD,kOOQTG27[G27[O!$[QdOLD-RO!$[QdO<OO%EpQ`O,5>OPOQ#uLD-_LD-_OOQO7+'o7+'oO+_QdO7+'oOOQS!$( ]!$( ]OOQOAN@}AN@}OOQS1G2d1G2dOOQS1G2e1G2eO%E{QdO1G2eOOQ#u!$(!m!$(!mOOQOANBVANBVOOQO1G3j1G3jO:]Q`O1G3jOOQO<tQaO,5:xO'/vQaO,5;uO'/vQaO,5;wO'@sQdO,5YQdO,5<^O)@XQdO,5QQ`O,5=eO*>YQaO'#HkO*>dQ`O,5?ROlQdO7+%tO*@kQ`O1G0jO!+iQaO1G0jO*BQQdO7+&OOoO*GeQ`O,5>VO*HzQdO<[QdO,5{QdO'#IjO.BbQ`O'#IeO.BoQ`O'#GPO.BwQaO,5:nO.COQ`O,5uOs#fOx7xOy7xO}aO!O^O!Q8OO!R}O!T7}O!V7yO!W7yO!Z8QO!d:QO!z]O#T#mO#V#lO#X`O#dhO#fbO#gcO#sdO$[7|O$d7{O$e7|O$hqO%T8PO%U!OO%W}O%X}O%`|O'WYO'u{O#Y']P~O#O#qO~P/lO!z#rO~O#d#tO#fbO#gcO~O'a#vO~O#s#zO~OU$OO!R$OO!w#}O#s3hO'W#{O~OT'XXz'XX!S'XX!c'XX!n'XX!w'XX!z'XX#T'XX#X'XX#a'XX#b'XX#y'XX$R'XX$S'XX$T'XX$U'XX$V'XX$X'XX$Y'XX$Z'XX$['XX$]'XX$^'XX$_'XX%T'XX'P'XX!y'XX!o'XX~O#|$QO$O$RO~P3YOP7wOQ|OU_OW}O[7zOo>uOs#fOx7xOy7xO}aO!O^O!Q8OO!R}O!T7}O!V7yO!W7yO!Z8QO!d:QO!z]O#X`O#dhO#fbO#gcO#sdO$[7|O$d7{O$e7|O$hqO%T8PO%U!OO%W}O%X}O%`|O'WYO'u{OT$PXz$PX!S$PX!c$PX!n$PX!w$PX#a$PX#b$PX#y$PX$R$PX$S$PX$T$PX$U$PX$V$PX$X$PX$Y$PX$Z$PX$]$PX$^$PX$_$PX'P$PX!y$PX!o$PX~Or$TO#T8eO#V8dO~P5^O#sdO'WYO~OS$fO]$aOk$dOm$fOs$`O!a$bO$krO$u$eO~O!z$hO#T$jO'W$gO~Oo$mOs$lO#d$nO~O!z$hO#T$rO~O!U$uO$u$tO~P-ROR${O!p$zO#d$yO#g$zO&}${O~O't$}O~P;PO!z%SO~O!z%UO~O!n#bO'P#bO~P-RO!pXO~O!z%`O~OP7wOQ|OU_OW}O[7zOo>uOs#fOx7xOy7xO}aO!O^O!Q8OO!R}O!T7}O!V7yO!W7yO!Z8QO!d:QO!z]O#X`O#dhO#fbO#gcO#sdO$[7|O$d7{O$e7|O$hqO%T8PO%U!OO%W}O%X}O%`|O'WYO'u{O~O!z%dO~O]$aO~O!pXO#sdO'WYO~O]%rOs%rO#s%nO'WYO~O!j%wO'Q%wO'TRO~O'Q%zO~PhO!o%{O~PhO!r%}O~PvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y'cX#O'cX~P!%aO!r)yO!y'eX#O'eX~P)dO!y#kX#O#kX~P!+iO#O){O!y'bX~O!y)}O~O%T#cOT$Qiz$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi$^$Qi$_$Qi'P$Qi!y$Qi#O$Qi#P$Qi#Y$Qi!o$Qi!r$QiV$Qi#|$Qi$O$Qi!p$Qi~P!%aOz#QO#T#PO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO!w!yO#T#PO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi'P$Qi!y$Qi!o$Qi~P!%aOT#SOz#QO!c#UO!w!yO#T#PO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cO!S$Qi!n$Qi'P$Qi!y$Qi!o$Qi~P!%aOT#SOz#QO!w!yO#T#PO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cO!S$Qi!c$Qi!n$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO#T#PO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi$R$Qi$S$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO#T#PO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi$R$Qi$S$Qi$T$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO#T#PO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi$R$Qi$S$Qi$T$Qi$U$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO#T#PO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$[#_O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$]$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$Z#^O$[#_O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$]$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi$^$Qi'P$Qi!y$Qi!o$Qi~P!%aO_*PO~PxO$hqO$krO~P2wO#X+|O#a+{O#b+{O~O#d,OO%W,OO%^+}O'W$gO~O!o,PO~PCVOc%bXd%bXh%bXj%bXf%bXg%bXe%bX~PhOc,TOd,ROP%aiQ%aiS%aiU%aiW%aiX%ai[%ai]%ai^%ai`%aia%aib%aik%aim%aio%aip%aiq%ais%ait%aiu%aiv%aix%aiy%ai|%ai}%ai!O%ai!P%ai!Q%ai!R%ai!T%ai!V%ai!W%ai!X%ai!Y%ai!Z%ai![%ai!]%ai!^%ai!_%ai!a%ai!b%ai!d%ai!n%ai!p%ai!z%ai#X%ai#d%ai#f%ai#g%ai#s%ai$[%ai$d%ai$e%ai$h%ai$k%ai$u%ai%T%ai%U%ai%W%ai%X%ai%`%ai&|%ai'W%ai'u%ai'Q%ai!o%aih%aij%aif%aig%aiY%ai_%aii%aie%ai~Oc,XOd,UOh,WO~OY,YO_,ZO!o,^O~OY,YO_,ZOi%gX~Oi,`O~Oj,aO~O!n,cO~PxO$hqO$krO~P2wO!p)`O~OU$OO!R$OO!w3nO#s3iO'W,zO~O#s,|O~O!p-OO'a'UO~O#sdO'WYO!n&zX#O&zX'P&zX~O#O)gO!n'ya'P'ya~O#s-UO~O!n&_X#O&_X'P&_X#P&_X~PvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#ka#O#ka~P!%aO!y&cX#O&cX~P@aO#O){O!y'ba~O!o-_O~PCVO#P-`O~O#O-aO!o'YX~O!o-cO~O!y-dO~OT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O#Wi#Y#Wi~P!%aO!y&bX#O&bX~PxO#n'XO~OS+kO].cOm+kOs$`O!U+kO!`+kO!a+kO#d>xO$hqO$krO~P2wOS+kO].cOm+kOs$`O!U+kO!`+kO!a+kO#d>xO$hqO~P2wO!n#bO!p-yO'P#bO~OS+kO]+nOm+kOs$`O!U+kO!_+qO!`+kO!a+kO!o.mO#d>xO$hqO$krO~P2wO#d.rO%W.rO%^+}O'W$gO~O%W.sO~O#Y.tO~Oc%bad%bah%baj%baf%bag%bae%ba~PhOc.wOd,ROP%aqQ%aqS%aqU%aqW%aqX%aq[%aq]%aq^%aq`%aqa%aqb%aqk%aqm%aqo%aqp%aqq%aqs%aqt%aqu%aqv%aqx%aqy%aq|%aq}%aq!O%aq!P%aq!Q%aq!R%aq!T%aq!V%aq!W%aq!X%aq!Y%aq!Z%aq![%aq!]%aq!^%aq!_%aq!a%aq!b%aq!d%aq!n%aq!p%aq!z%aq#X%aq#d%aq#f%aq#g%aq#s%aq$[%aq$d%aq$e%aq$h%aq$k%aq$u%aq%T%aq%U%aq%W%aq%X%aq%`%aq&|%aq'W%aq'u%aq'Q%aq!o%aqh%aqj%aqf%aqg%aqY%aq_%aqi%aqe%aq~Oc.|Od,UOh.{O~O!r(hO~OP7wOQ|OU_OW}O[xO$hqO$krO~P2wOS+kOY,vO]+nOm+kOs$`O!U+kO!_+qO!`+kO!a+kO!o/fO#d>xO$hqO$krO~P2wOw!tX!p!tX#T!tX#n!tX#s#vX#|!tX'W!tX~Ow(ZO!p)`O#T3tO#n3sO~O!p-OO'a&fa~O]/nOs/nO#sdO'WYO~OV/rO!n&za#O&za'P&za~O#O)gO!n'yi'P'yi~O#s/tO~OT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!n&_a#O&_a'P&_a#P&_a~P!%aOz#QO#T#PO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT!vy!S!vy!c!vy!n!vy!w!vy'P!vy!y!vy!o!vy~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#ji#O#ji~P!%aO_*PO!o&`X#O&`X~PvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#]i#O#]i~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#P/yO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!y&ba#O&ba~P!%aO#|0OO!y$ji#O$ji~O#d0PO~O#V0SO#d0RO~P2wOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$ji#O$ji~P!%aO!p-yO#|0TO!y$oi#O$oi~O!o0YO'W$gO~O#O0[O!y'kX~O#d0^O~O!y0_O~O!pXO!r0bO~O#T'ZO#n'XO!p'qy!n'qy'P'qy~O!n$sy'P$sy!y$sy!o$sy~PCVO#P0eO#T'ZO#n'XO~O#sdO'WYOw&mX!p&mX#O&mX!n&mX'P&mX~O#O.^Ow'la!p'la!n'la'P'la~OS+kO]0mOm+kOs$`O!U+kO!`+kO!a+kO#d>xO$hqO~P2wO#T3tO#n3sO'W$gO~O#|)XO#T'eX#n'eX'W'eX~O!n#bO!p0sO'P#bO~O#Y0wO~Oh0|O~OTvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$jq#O$jq~P!%aO#|1kO!y$jq#O$jq~O#d1lO~O!n#bO!pXO!z$hO#P1oO'P#bO~O!o1rO'W$gO~OT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$oq#O$oq~P!%aO#T1tO#d1sO!y&lX#O&lX~O#O0[O!y'ka~O#T'ZO#n'XO!p'q!R!n'q!R'P'q!R~O!pXO!r1yO~O!n$s!R'P$s!R!y$s!R!o$s!R~PCVO#P1{O#T'ZO#n'XO~OP7wOU_O[:rOo?tOs#fOx:rOy:rO}aO!O^O!QvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#^i#O#^i~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$jy#O$jy~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$oy#O$oy~P!%aO!pXO#P2rO~O#d2sO~O#O0[O!y'ki~O!n$s!Z'P$s!Z!y$s!Z!o$s!Z~PCVOTvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$j!R#O$j!R~P!%aO!n$s!c'P$s!c!y$s!c!o$s!c~PCVO!a3`O'W$gO~OV3dO!o&Wa#O&Wa~O'W$gO!n%Ri'P%Ri~O'a'_O~O'a/jO~O'a*iO~O'a1]O~OT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$ta#|$ta$O$ta'P$ta!y$ta!o$ta#O$ta~P!%aO#T3uO~P-RO#s3lO~O#s3mO~O!U$uO$u$tO~P#-WOT8TOz8RO!S8UO!c8VO!w:_O#P3pO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!n'^X'P'^X!y'^X!o'^X~P!%aOT6QOz6OO!S6RO!c6SO!w7oO#P5aO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cO#O'^X#Y'^X#|'^X$O'^X!n'^X'P'^X!r'^X!y'^X!o'^XV'^X!p'^X~P!%aO#T5OO~P#-WOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$`a#|$`a$O$`a'P$`a!y$`a!o$`a#O$`a~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$aa#|$aa$O$aa'P$aa!y$aa!o$aa#O$aa~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$ba#|$ba$O$ba'P$ba!y$ba!o$ba#O$ba~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$ca#|$ca$O$ca'P$ca!y$ca!o$ca#O$ca~P!%aOz3{O#|$ca$O$ca#O$ca~PMVOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$fa#|$fa$O$fa'P$fa!y$fa!o$fa#O$fa~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n%Va#|%Va$O%Va'P%Va!y%Va!o%Va#O%Va~P!%aOz3{O#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#|$Qi$O$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi#|$Qi$O$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOT3}Oz3{O!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!S$Qi!n$Qi#|$Qi$O$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOT3}Oz3{O!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!S$Qi!c$Qi!n$Qi#|$Qi$O$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O#T#PO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#|$Qi$O$Qi$R$Qi$S$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O#T#PO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O#T#PO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O#T#PO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$[4YO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$]$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$Z4XO$[4YO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$]$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi$^$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n#Ua#|#Ua$O#Ua'P#Ua!y#Ua!o#Ua#O#Ua~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n'^a#|'^a$O'^a'P'^a!y'^a!o'^a#O'^a~P!%aOz3{O!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT#Qi!S#Qi!c#Qi!n#Qi#|#Qi$O#Qi'P#Qi!y#Qi!o#Qi#O#Qi~P!%aOz3{O!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT#}i!S#}i!c#}i!n#}i#|#}i$O#}i'P#}i!y#}i!o#}i#O#}i~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$Pi#|$Pi$O$Pi'P$Pi!y$Pi!o$Pi#O$Pi~P!%aOz3{O#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT!vq!S!vq!c!vq!n!vq!w!vq#|!vq$O!vq'P!vq!y!vq!o!vq#O!vq~P!%aOz3{O!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT#Qq!S#Qq!c#Qq!n#Qq#|#Qq$O#Qq'P#Qq!y#Qq!o#Qq#O#Qq~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$sq#|$sq$O$sq'P$sq!y$sq!o$sq#O$sq~P!%aOz3{O#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT!vy!S!vy!c!vy!n!vy!w!vy#|!vy$O!vy'P!vy!y!vy!o!vy#O!vy~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$sy#|$sy$O$sy'P$sy!y$sy!o$sy#O$sy~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$s!R#|$s!R$O$s!R'P$s!R!y$s!R!o$s!R#O$s!R~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$s!Z#|$s!Z$O$s!Z'P$s!Z!y$s!Z!o$s!Z#O$s!Z~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$s!c#|$s!c$O$s!c'P$s!c!y$s!c!o$s!c#O$s!c~P!%aOP7wOU_O[5kOo9xOs#fOx5gOy5gO}aO!O^O!Q5{O!T5qO!V5iO!W5iO!Z5}O!d5eO!z]O#T5bO#X`O#dhO#fbO#gcO#sdO$[5oO$d5mO$e5oO$hqO%T5|O%U!OO'WYO~P$vO#O9_O#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y'xX~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#O9aO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y'ZX~P!%aOz8RO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi#O$Qi#P$Qi#Y$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOT8TOz8RO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!S$Qi#O$Qi#P$Qi#Y$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOT8TOz8RO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!S$Qi!c$Qi#O$Qi#P$Qi#Y$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO#T#PO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi$R$Qi$S$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO#T#PO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi$R$Qi$S$Qi$T$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO#T#PO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO#T#PO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$[8`O$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$]$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$Z8_O$[8`O$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$]$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi$^$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aO#T9fO~P!+iO!n#Ua'P#Ua!y#Ua!o#Ua~PCVO!n'^a'P'^a!y'^a!o'^a~PCVO#T=PO#V=OO!y&aX#O&aX~PvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#Wi#O#Wi~P!%aOz8RO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT#Qq!S#Qq!c#Qq#O#Qq#P#Qq#Y#Qq!n#Qq'P#Qq!r#Qq!y#Qq!o#QqV#Qq!p#Qq~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$sq#P$sq#Y$sq!n$sq'P$sq!r$sq!y$sq!o$sqV$sq!p$sq~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y&wa#O&wa~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y&_a#O&_a~P!%aOz8RO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT!vy!S!vy!c!vy!w!vy#O!vy#P!vy#Y!vy!n!vy'P!vy!r!vy!y!vy!o!vyV!vy!p!vy~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#Wq#O#Wq~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$sy#P$sy#Y$sy!n$sy'P$sy!r$sy!y$sy!o$syV$sy!p$sy~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$s!R#P$s!R#Y$s!R!n$s!R'P$s!R!r$s!R!y$s!R!o$s!RV$s!R!p$s!R~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$s!Z#P$s!Z#Y$s!Z!n$s!Z'P$s!Z!r$s!Z!y$s!Z!o$s!ZV$s!Z!p$s!Z~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$s!c#P$s!c#Y$s!c!n$s!c'P$s!c!r$s!c!y$s!c!o$s!cV$s!c!p$s!c~P!%aO#T9vO~PvO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$`a#O$`a~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$aa#O$aa~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$ba#O$ba~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$ca#O$ca~P!%aOz:`O%T#cOT$ca!S$ca!c$ca!w$ca!y$ca#O$ca#T$ca$R$ca$S$ca$T$ca$U$ca$V$ca$X$ca$Y$ca$Z$ca$[$ca$]$ca$^$ca$_$ca~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$fa#O$fa~P!%aO!r?SO#P9^O~OT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$ta#O$ta~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y%Va#O%Va~P!%aOT8TOz8RO!S8UO!c8VO!r9cO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO~P!%aOz:`O#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi~P!%aOz:`O!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!y$Qi#O$Qi~P!%aOT:bOz:`O!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!S$Qi!y$Qi#O$Qi~P!%aOT:bOz:`O!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!S$Qi!c$Qi!y$Qi#O$Qi~P!%aOz:`O#T#PO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi$R$Qi$S$Qi~P!%aOz:`O#T#PO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi$R$Qi$S$Qi$T$Qi~P!%aOz:`O#T#PO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi$R$Qi$S$Qi$T$Qi$U$Qi~P!%aOz:`O#T#PO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi~P!%aOz:`O$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi~P!%aOz:`O$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi~P!%aOz:`O$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi~P!%aOz:`O$[:mO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$]$Qi~P!%aOz:`O$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi~P!%aOz:`O$Z:lO$[:mO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$]$Qi~P!%aOz:`O$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi$^$Qi~P!%aOz:`O!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT#Qi!S#Qi!c#Qi!y#Qi#O#Qi~P!%aOz:`O!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT#}i!S#}i!c#}i!y#}i#O#}i~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$Pi#O$Pi~P!%aO!r?TO#P9hO~Oz:`O#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT!vq!S!vq!c!vq!w!vq!y!vq#O!vq~P!%aOz:`O!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT#Qq!S#Qq!c#Qq!y#Qq#O#Qq~P!%aO!r?YO#P9oO~OT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$sq#O$sq~P!%aO#P9oO#T'ZO#n'XO~Oz:`O#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT!vy!S!vy!c!vy!w!vy!y!vy#O!vy~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$sy#O$sy~P!%aO#P9pO#T'ZO#n'XO~OT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$s!R#O$s!R~P!%aO#P9sO#T'ZO#n'XO~OT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$s!Z#O$s!Z~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$s!c#O$s!c~P!%aO#T;}O~P!+iOT8TOz8RO!S8UO!c8VO!w:_O#P;|O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!y'^X#O'^X~P!%aO!U$uO$u$tO~P$8rOP7wOU_O[:rOo?tOs#fOx:rOy:rO}aO!O^O!QVO~P$8rOP7wOU_O[:rOo?tOs#fOx:rOy:rO}aO!O^O!QWO#X`O#dhO#fbO#gcO#sdO$[vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#Ua#O#Ua~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y'^a#O'^a~P!%aOz<]O!w?^O#T#PO$R<_O$SpO~P$8rOP7wOU_O[:rOo?tOs#fOx:rOy:rO}aO!O^O!QqO#X`O#dhO#fbO#gcO#sdO$[oO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#P>nO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!n'^X!r'^X!o'^X#O'^X!p'^X'P'^X~P!%aOT'XXz'XX!S'XX!c'XX!w'XX!z'XX#O'XX#T'XX#X'XX#a'XX#b'XX#y'XX$R'XX$S'XX$T'XX$U'XX$V'XX$X'XX$Y'XX$Z'XX$['XX$]'XX$^'XX$_'XX%T'XX~O#|:uO$O:vO!y'XX~P.@qO!z$hO#T>zO~O!r;SO~PxO!n&qX!p&qX#O&qX'P&qX~O#O?QO!n'pa!p'pa'P'pa~O!r?rO#P;uO~OT[O~O!r?zO#P:rO~OT8TOz8RO!S8UO!c8VO!r>]O!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO~P!%aOT8TOz8RO!S8UO!c8VO!r>^O!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO~P!%aO!r?{O#P>cO~O!r?|O#P>hO~O#P>hO#T'ZO#n'XO~O#P:rO#T'ZO#n'XO~O#P>iO#T'ZO#n'XO~O#P>lO#T'ZO#n'XO~O!z$hO#T?nO~Oo>wOs$lO~O!z$hO#T?oO~O#O?QO!n'pX!p'pX'P'pX~O!z$hO#T?vO~O!z$hO#T?wO~O!z$hO#T?xO~Oo?lOs$lO~Oo?uOs$lO~Oo?tOs$lO~O%X$]%W$k!e$^#d%`#g'u'W#f~",goto:"%1O'{PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP'|P(TPP(Z(^PPP(vP(^*o(^6cP6cPP>cFxF{PP6cGR! RP! UP! UPPGR! e! h! lGRGRPP! oP! rPPGR!)u!0q!0qGR!0uP!0u!0u!0u!2PP!;g!S#>Y#>h#>n#>x#?O#?U#?[#?b#?l#?v#?|#@S#@^PPPPPPPP#@d#@hP#A^$(h$(k$(u$1R$1_$1t$1zP$1}$2Q$2W$5[$?Y$Gr$Gu$G{$HO$Kb$Ke$Kn$Kv$LQ$Li$MP$Mz%'}PP%0O%0S%0`%0u%0{Q!nQT!qV!rQUOR%x!mRVO}!hPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]|!hPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]Q%_!ZQ%h!aQ%m!eQ'k$cQ'x$iQ)d%lQ+W'{Q,k)QU.O+T+V+]Q.j+pQ/`,jS0a.T.UQ0q.dQ1n0VS1w0`0dQ2Q0nQ2q1pQ2t1xR3[2u|ZPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]2lf]`cgjklmnoprxyz!W!X!Y!]!e!f!g!y!z#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r#}$Q$R$T$h$z%S%U%d%r%}&S&W&[&q&t&u&x'P'X'Z']'a'e'p't'y(R(V(W(Y(Z([(t)T)X)`)c)g)n)u)y*V*Z*[*r*w*|+Q+X+[+^+_+j+m+q+t,Y,c,e,g,i,u,x-O-`-a-t-v-z.S.V.[.].^.b/X/n/y0O0T0b0e1R1S1b1k1o1y1{2k2r3n3p3s3t3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7i7j7k7o7w7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v9|9}:O:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?S?T?Y?^?_?p?q?r?y?z?{?|S$ku$`Q%W!V^%e!_$a'j)Y.f0o2OQ%i!bQ%j!cQ%k!dQ%v!kS&V!|){Q&]#OQ'l$dQ'm$eS'|$j'hQ)S%`Q*v'nQ+z(bQ,O(dQ-S)iU.g+n.c0mQ.q+{Q.r+|Q/d,vS0V-y0XQ1X/cQ1e/rS2T0s2WQ2h1`Q3U2iQ3^2zQ3_2{Q3c3VQ3f3`R3g3d0{!OPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_0z!OPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_Q#h^Q%O!PQ%P!QQ%Q!RQ,b(sQ.u,RR.y,UR&r#hQ*Q&qR/w-a0{hPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_R#j_k#n`j#i#q&t&x5d5e9W:Q:R:S:TR#saT&}#r'PR-h*[R&R!{0zhPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_R#tb-x!}[#e#k#u$U$V$W$X$Y$Z$v$w%X%Z%]%a%s%|&O&U&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&v&w&|'`'b'c(e(x)v)x)z*O*U*h*j+a+d,n,q-W-Y-[-e-f-g-w.Y/O/[/v0Q0Z0f1g1j1m1z2S2`2o2p2v3Z4]4^4d4e4f4g4h4i4j4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4{4|4}5P5Q5T5U5W5X5Y5]5^5`5t6e6f6g6h6i6j6k6m6n6o6p6q6r6s6t6u6v6w6x6y6z6{6|6}7O7Q7R7U7V7X7Y7Z7^7_7a7m7q8i8j8k8l8m8n8p8q8r8t8u8v8w8x8y8z8{8|8}9O9P9Q9R9S9U9V9Y9[9]9d9e9g9i9j9k9l9m9n9q9r9t9w:p:x:y:z:{:|:};Q;R;T;U;V;W;X;Y;Z;[;];^;_;`;a;b;c;d;f;g;l;m;p;r;s;w;y;{O>P>Q>R>S>T>U>X>Y>Z>_>`>a>b>d>e>f>g>j>k>m>r>s>{>|>}?V?b?cQ'd$[Y(X$s8o;P=^=_S(]3o7lQ(`$tR+y(aT&X!|){#a$Pg#}$h'X'Z'p't'y(W([)`)c*r*w+Q+X+[+_+j+m+n+t,i,u,x-v.S.V.].b.c0b0m1y3n3s3t7i7j7k7w9|9}:O?S?T?Y?p?q?r?y?z?{?|3yfPVX]`cgjklmnoprxyz!S!W!X!Y!]!e!f!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r#}$Q$R$T$h$z%O%Q%S%T%U%V%d%r%}&S&W&[&q&t&u&x'P'X'Z']'a'e'p't'y(R(V(W(Y(Z([(h(t)T)X)`)c)g)n)u)y){*V*Z*[*r*w*|+Q+X+[+^+_+j+m+n+q+t,Q,T,Y,c,e,g,i,u,x-O-`-a-t-v-z.S.V.[.].^.b.c.u.w/P/X/n/y0O0T0b0e0m0s0}1O1R1S1W1b1k1o1y1{2W2]2k2r3n3p3s3t3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7i7j7k7o7w7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v9|9}:O:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?S?T?Y?^?_?p?q?r?y?z?{?|[#wd#x3h3i3j3kh'V#z'W)f,}-U/k/u1f3l3m3q3rQ)e%nR-T)kY#yd%n)k3h3iV'T#x3j3k1dePVX]`cjklmnoprxyz!S!W!X!Y!]!e!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a'e(R(V(Y(Z(h(t)T)X)g)n)u)y){*V*Z*[*|+^+q,Q,T,Y,c,e,g-O-`-a-t-z.[.^.u.w/P/X/n/y0O0T0e0s0}1O1R1S1W1b1k1o1{2W2]2k2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_Q%o!fQ)l%r#O3vg#}$h'X'Z'p't'y(W([)`*w+Q+X+[+_+j+m+t,i,u,x-v.S.V.].b0b1y7i7j7k7w9|9}:O?S?T?Y?p?q?r?y?z?{?|a3w)c*r+n.c0m3n3s3tY'T#z)f-U3l3mZ*c'W,}/u3q3r0vhPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0}1O1R1S1W1k1o1{2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_T2U0s2WR&^#OR&]#O!r#Z[#e#u$U$V$W$X$Z$s$w%X%Z%]&`&a&b&c&d&e&f&g'`'b'c(e)v)x*O*j+d-Y.Y0f1z2`2p2v3Z9U9V!Y4U3o4d4e4f4g4i4j4l4m4n4o4p4q4r4s4{4|4}5P5Q5T5U5W5X5Y5]5^5`!^6X4^6e6f6g6h6j6k6m6n6o6p6q6r6s6t6|6}7O7Q7R7U7V7X7Y7Z7^7_7a7l7m#b8[#k%a%s%|&O&v&w&|(x*U+a,n,q-W-e-g/[4]5t7q8i8j8k8l8n8o8p8t8u8v8w8x8y8z8{9Y9[9]9d9g9i9l9n9q9r9t9w:p;Rr>s>{?b?c!|:i&U)z-[-f-w0Q0Z1g1j1m2o8q8r9e9j9k9m:x:y:z:{:};P;Q;T;U;V;W;X;Y;Z;[;d;f;g;l;m;p;r;s;w;y;{>R>S!`T>X>Z>_>a>d>e>g>j>k>m>|>}?VoU>Y>`>b>fS$iu#fQ$qwU'{$j$l&pQ'}$kS(P$m$rQ+Z'|Q+](OQ+`(QQ1p0VQ5s7dS5v7f7gQ5w7hQ7p9xS7r9y9zQ7s9{Q;O>uS;h>w>zQ;o?PQ>y?jS?O?l?nQ?U?oQ?`?sS?a?t?wS?d?u?vR?e?xT'u$h+Q!csPVXt!S!j!r!s!w$h%O%Q%T%V'p([(h)`+Q+j+t,Q,T,u,x.u.w/P0}1O1W2]Q$]rR*l'eQ-{+PQ.i+oQ0U-xQ0j.`Q1|0kR2w1}T0W-y0XQ+V'zQ.U+YR0d.XQ(_$tQ)^%iQ)s%vQ*u'mS+x(`(aQ-q*vR.p+yQ(^$tQ)b%kQ)r%vQ*q'lS*t'm)sU+w(_(`(aS-p*u*vS.o+x+yQ/i,{Q/{-nQ/}-qR0v.pQ(]$tQ)]%iQ)_%jQ)q%vU*s'm)r)sW+v(^(_(`(aQ,t)^U-o*t*u*vU.n+w+x+yS/|-p-qS0u.o.pQ1i/}R2Y0vX+r([)`+t,xb%f!_$a'j+n.c.f0m0o2OR,r)YQ$ovS+b(S?Qg?m([)`+i+j+m+t,u,x.a.b0lR0t.kT2V0s2W0}|PVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g,m-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_T$y{$|Q,O(dR.r+|T${{$|Q(j%OQ(r%QQ(w%TQ(z%VQ.},XQ0z.yQ0{.|R2c1WR(m%PX,[(k(l,],_R(n%PX(p%Q%T%V1WR%T!T_%b!]%S(t,c,e/X1RR%V!UR/],gR,j)PQ)a%kS*p'l)bS-m*q,{S/z-n/iR1h/{T,w)`,xQ-P)fU/l,|,}-UU1^/k/t/uR2n1fR/o-OR2l1bSSO!mR!oSQ!rVR%y!rQ!jPS!sV!rQ!wX[%u!j!s!w,Q1O2]Q,Q(hQ1O/PR2]0}Q)o%sS-X)o9bR9b8rQ-b*QR/x-bQ&y#oS*X&y9XR9X:tS*]&|&}R-i*]Q)|&YR-^)|!j'Y#|'o*f*z+O+T+e+i.T.W.Z.a/_0`0c0g0l1x2u5x5y5z7e7t7u7v;q;t;x?W?X?Z?f?g?h?iS*e'Y/g]/g,{-n.f0o1[2O!h'[#|'o*z+O+T+e+i.T.W.Z.a/_0`0c0g0l1x2u5x5y5z7e7t7u7v;q;t;x?W?X?Z?f?g?h?iS*g'[/hZ/h,{-n.f0o2OU#xd%n)kU'S#x3j3kQ3j3hR3k3iQ'W#z^*b'W,}/k/u1f3q3rQ,})fQ/u-UQ3q3lR3r3m|tPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]W$_t'p+j,uS'p$h+QS+j([+tT,u)`,xQ'f$]R*m'fQ0X-yR1q0XQ+R'vR-}+RQ0].PS1u0]1vR1v0^Q._+fR0i._Q+t([R.l+tW+m([)`+t,xS.b+j,uT.e+m.bQ)Z%fR,s)ZQ(T$oS+c(T?RR?R?mQ2W0sR2}2WQ$|{R(f$|Q,S(iR.v,SQ,V(jR.z,VQ,](kQ,_(lT/Q,],_Q)U%aS,o)U9`R9`8qQ)R%_R,l)RQ,x)`R/e,xQ)h%pS-R)h/sR/s-SQ1c/oR2m1cT!uV!rj!iPVX!j!r!s!w(h,Q/P0}1O2]Q%R!SQ(i%OW(p%Q%T%V1WQ.x,TQ0x.uR0y.w|[PVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]Q#e]U#k`#q&xQ#ucQ$UkQ$VlQ$WmQ$XnQ$YoQ$ZpQ$sx^$vy3y5|8P:]n>oQ+a(RQ+d(VQ,n)TQ,q)XQ-W)nQ-Y)uQ-[)yQ-e*VQ-f*ZQ-g*[^-k3u5b7c9v;}>p>qQ-w*|Q.Y+^Q/O,YQ/[,gQ/v-`Q0Q-tQ0Z-zQ0f.[Q1g/yQ1j0OQ1m0TQ1z0eU2S0s2W:rQ2`1SQ2o1kQ2p1oQ2v1{Q3Z2rQ3o3xQ4]jQ4^5eQ4d5fQ4e5hQ4f5jQ4g5lQ4h5nQ4i5pQ4j3zQ4l3|Q4m3}Q4n4OQ4o4PQ4p4QQ4q4RQ4r4SQ4s4TQ4t4UQ4u4VQ4v4WQ4w4XQ4x4YQ4y4ZQ4z4[Q4{4_Q4|4`Q4}4aQ5P4bQ5Q4cQ5T4kQ5U5OQ5W5RQ5X5SQ5Y5VQ5]5ZQ5^5[Q5`5_Q5t5rQ6e5gQ6f5iQ6g5kQ6h5mQ6i5oQ6j5qQ6k5}Q6m6PQ6n6QQ6o6RQ6p6SQ6q6TQ6r6UQ6s6VQ6t6WQ6u6XQ6v6YQ6w6ZQ6x6[Q6y6]Q6z6^Q6{6_Q6|6`Q6}6aQ7O6bQ7Q6cQ7R6dQ7U6lQ7V7PQ7X7SQ7Y7TQ7Z7WQ7^7[Q7_7]Q7a7`Q7l5{Q7m5dQ7q7oQ8i7xQ8j7yQ8k7zQ8l7{Q8m7|Q8n7}Q8o8OQ8p8QU8q,c/X1RQ8r%dQ8t8SQ8u8TQ8v8UQ8w8VQ8x8WQ8y8XQ8z8YQ8{8ZQ8|8[Q8}8]Q9O8^Q9P8_Q9Q8`Q9R8aQ9S8bQ9U8dQ9V8eQ9Y8fQ9[8gQ9]8hQ9d8sQ9e9TQ9g9ZQ9i9^Q9j9_Q9k9aQ9l9cQ9m9fQ9n9hQ9q9oQ9r9pQ9t9sQ9w:QU:p#i&t9WQ:x:UQ:y:VQ:z:WQ:{:XQ:|:YQ:}:ZQ;P:[Q;Q:^Q;R:_Q;T:aQ;U:bQ;V:cQ;W:dQ;X:eQ;Y:fQ;Z:gQ;[:hQ;]:iQ;^:jQ;_:kQ;`:lQ;a:mQ;b:nQ;c:oQ;d:uQ;f:vQ;g:wQ;l;SQ;m;eQ;p;jQ;r;kQ;s;nQ;w;uQ;y;vQ;{;zQOP<{Q>Q<|Q>R=OQ>S=PQ>T=QQ>U=RQ>X=SQ>Y=TQ>Z=UQ>_=aQ>`=bQ>a>VQ>b>WQ>d>[Q>e>]Q>f>^Q>g>cQ>j>hQ>k>iQ>m>lQ>r:SQ>s:RQ>{>vQ>|:qQ>}:sQ?V;iQ?b?^R?c?_R*R&qQ%t!gQ)W%dT*P&q-a$WiPVX]cklmnopxyz!S!W!X!Y!j!r!s!w#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a$Q$R$T$z%O%Q%T%V%}&S&['a(V(h)u+^,Q,T.[.u.w/P0e0}1O1S1W1o1{2]2r3p3u8d8e!t5c']3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5f5h5j5l5n5p7b7c!x7n5a5b5d5e5g5i5k5m5o5q5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`$`:P`j!]!g!y!z#i#l#m#q#r%S%U&q&t&u&x'P(R(t)T)X)n*V*[,e,g-a5r7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8f8g8h8s9W9Z9^9c9h9o9p9s9u9v:Q:R:S:T:_>v?^?_#l>t!|%d&W)y){*Z*|,c-t-z/X/y0O0T1R1k9T9_9a9f:U:V:W:X:Y:Z:[:]:^:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:u:v:w;S;e;j;k;n;u;v;z;|;}=O=P!x?[,Y-`:q:s;iV>[>]>c>h>i>l>n>p!]?]0s2W:rW>^>o>qQ#p`Q&s#iQ&{#qR*T&tS#o`#q^$Sj5d5e:Q:R:S:TS*W&x9WT:t#i&tQ'O#rR*_'PR&T!{R&Z!|Q&Y!|R-]){Q#|gS'^#}3nS'o$h+QS*d'X3sU*f'Z*w-vQ*z'pQ+O'tQ+T'yQ+e(WW+i([)`+t,xQ,{)cQ-n*rQ.T+XQ.W+[Q.Z+_U.a+j+m,uQ.f+nQ/_,iQ0`.SQ0c.VQ0g.]Q0l.bQ0o.cQ1[3tQ1x0bQ2O0mQ2u1yQ5x7iQ5y7jQ5z7kQ7e7wQ7t9|Q7u9}Q7v:OQ;q?SQ;t?TQ;x?YQ?W?pQ?X?qQ?Z?rQ?f?yQ?g?zQ?h?{R?i?|0z!OPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_#`$Og#}$h'X'Z'p't'y(W([)`)c*r*w+Q+X+[+_+j+m+n+t,i,u,x-v.S.V.].b.c0b0m1y3n3s3t7i7j7k7w9|9}:O?S?T?Y?p?q?r?y?z?{?|S$[r'eQ%l!eS%p!f%rU+f(Y(Z+qQ-Q)gQ/m-OQ0h.^Q1a/nQ2j1bR3W2k|vPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]#Y#g]cklmnopxyz!W!X!Y#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a$Q$R$T$z%}&S&['a(V)u+^.[0e1S1o1{2r3p3u8d8e`+k([)`+j+m+t,u,x.b!t8c']3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5f5h5j5l5n5p7b7c!x<}5a5b5d5e5g5i5k5m5o5q5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`$`?k`j!]!g!y!z#i#l#m#q#r%S%U&q&t&u&x'P(R(t)T)X)n*V*[,e,g-a5r7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8f8g8h8s9W9Z9^9c9h9o9p9s9u9v:Q:R:S:T:_>v?^?_#l?}!|%d&W)y){*Z*|,c-t-z/X/y0O0T1R1k9T9_9a9f:U:V:W:X:Y:Z:[:]:^:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:u:v:w;S;e;j;k;n;u;v;z;|;}=O=P!x@O,Y-`:q:s;iV>[>]>c>h>i>l>n>p!]@P0s2W:rW>^>o>qR'w$hQ'v$hR-|+QR$^rQ#d[Q%Y!WQ%[!XQ%^!YQ(U$pQ({%WQ(|%XQ(}%ZQ)O%]Q)V%cQ)[%gQ)d%lQ)j%qQ)p%tQ*n'iQ-V)mQ-l*oQ.i+oQ.j+pQ.x,WQ/S,`Q/T,aQ/U,bQ/Z,fQ/^,hQ/b,pQ/q-PQ0j.`Q0q.dQ0r.hQ0t.kQ0y.{Q1Y/dQ1_/lQ1n0VQ1|0kQ2Q0nQ2R0pQ2[0|Q2d1XQ2g1^Q2w1}Q2y2PQ2|2VQ3P2ZQ3T2fQ3X2nQ3Y2pQ3]2xQ3a3RQ3b3SR3e3ZR.R+UQ+g(YQ+h(ZR.k+qS+s([+tT,w)`,xa+l([)`+j+m+t,u,x.bQ%g!_Q'i$aQ*o'jQ.h+nS0p.c.fS2P0m0oR2x2OQ$pvW+o([)`+t,xW.`+i+j+m,uS0k.a.bR1}0l|!aPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]Q$ctW+p([)`+t,xU.d+j+m,uR0n.b0z!OPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_R/a,m0}}PVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g,m-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_T$x{$|Q(q%QQ(v%TQ(y%VR2b1WQ%c!]Q(u%SQ,d(tQ/W,cQ/Y,eQ1Q/XR2_1RQ%q!fR)m%rR/p-O",nodeNames:"⚠ ( HeredocString EscapeSequence abstract LogicOp array as Boolean break case catch clone const continue default declare do echo else elseif enddeclare endfor endforeach endif endswitch endwhile enum extends final finally fn for foreach from function global goto if implements include include_once LogicOp insteadof interface list match namespace new null LogicOp print readonly require require_once return switch throw trait try unset use var Visibility while LogicOp yield LineComment BlockComment TextInterpolation PhpClose Text PhpOpen Template TextInterpolation EmptyStatement ; } { Block : LabelStatement Name ExpressionStatement ConditionalExpression LogicOp MatchExpression ) ( ParenthesizedExpression MatchBlock MatchArm , => AssignmentExpression ArrayExpression ValueList & VariadicUnpacking ... Pair [ ] ListExpression ValueList Pair Pair SubscriptExpression MemberExpression -> ?-> Name VariableName DynamicVariable $ ${ CallExpression ArgList NamedArgument SpreadArgument CastExpression UnionType LogicOp IntersectionType OptionalType NamedType QualifiedName \\ NamespaceName Name NamespaceName Name ScopedExpression :: ClassMemberName DynamicMemberName AssignOp UpdateExpression UpdateOp YieldExpression BinaryExpression LogicOp LogicOp LogicOp BitOp BitOp BitOp CompareOp CompareOp BitOp ArithOp ConcatOp ArithOp ArithOp IncludeExpression RequireExpression CloneExpression UnaryExpression ControlOp LogicOp PrintIntrinsic FunctionExpression static ParamList Parameter #[ Attributes Attribute VariadicParameter PropertyParameter PropertyHooks PropertyHook UseList ArrowFunction NewExpression class BaseClause ClassInterfaceClause DeclarationList ConstDeclaration VariableDeclarator PropertyDeclaration VariableDeclarator MethodDeclaration UseDeclaration UseList UseInsteadOfClause UseAsClause UpdateExpression ArithOp ShellExpression ThrowExpression Integer Float String MemberExpression SubscriptExpression UnaryExpression ArithOp Interpolation String IfStatement ColonBlock SwitchStatement Block CaseStatement DefaultStatement ColonBlock WhileStatement EmptyStatement DoStatement ForStatement ForSpec SequenceExpression ForeachStatement ForSpec Pair GotoStatement ContinueStatement BreakStatement ReturnStatement TryStatement CatchDeclarator DeclareStatement EchoStatement UnsetStatement ConstDeclaration FunctionDefinition ClassDeclaration InterfaceDeclaration TraitDeclaration EnumDeclaration EnumBody EnumCase NamespaceDefinition NamespaceUseDeclaration UseGroup UseClause UseClause GlobalDeclaration FunctionStaticDeclaration Program",maxTerm:318,nodeProps:[["group",-36,2,8,49,82,84,86,89,94,95,103,107,108,112,113,116,120,126,132,137,139,140,154,155,156,157,160,161,173,174,188,190,191,192,193,194,200,"Expression",-28,75,79,81,83,201,203,208,210,211,214,217,218,219,220,221,223,224,225,226,227,228,229,230,231,234,235,239,240,"Statement",-4,121,123,124,125,"Type"],["isolate",-4,67,68,71,200,""],["openedBy",70,"phpOpen",77,"{",87,"(",102,"#["],["closedBy",72,"phpClose",78,"}",88,")",165,"]"]],propSources:[HO],skippedNodes:[0],repeatNodeCount:32,tokenData:"!GQ_R!]OX$zXY&^YZ'sZ]$z]^&^^p$zpq&^qr)Rrs+Pst+otu2buv5evw6rwx8Vxy>]yz>yz{?g{|@}|}Bb}!OCO!O!PDh!P!QKT!Q!R!!o!R![!$q![!]!,P!]!^!-a!^!_!-}!_!`!1S!`!a!2d!a!b!3t!b!c!7^!c!d!7z!d!e!9Y!e!}!7z!}#O!;b#O#P!V<%lO8VR9WV'TP%`QOw9mwx:Xx#O9m#O#P:^#P;'S9m;'S;=`;X<%lO9mQ9rV%`QOw9mwx:Xx#O9m#O#P:^#P;'S9m;'S;=`;X<%lO9mQ:^O%`QQ:aRO;'S9m;'S;=`:j;=`O9mQ:oW%`QOw9mwx:Xx#O9m#O#P:^#P;'S9m;'S;=`;X;=`<%l9m<%lO9mQ;[P;=`<%l9mR;fV'TP%`QOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zRV<%l~8V~O8V~~%fR=OW'TPOY8VYZ9PZ!^8V!^!_;{!_;'S8V;'S;=`=h;=`<%l9m<%lO8VR=mW%`QOw9mwx:Xx#O9m#O#P:^#P;'S9m;'S;=`;X;=`<%l8V<%lO9mR>YP;=`<%l8VR>dV!zQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zV?QV!yU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR?nY'TP$^QOY$zYZ%fZz$zz{@^{!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zR@eW$_Q'TPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zRAUY$[Q'TPOY$zYZ%fZ{$z{|At|!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zRA{V%TQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zRBiV#OQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_CXZ$[Q%^W'TPOY$zYZ%fZ}$z}!OAt!O!^$z!^!_%k!_!`6U!`!aCz!a;'S$z;'S;=`&W<%lO$zVDRV#aU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zVDo['TP$]QOY$zYZ%fZ!O$z!O!PEe!P!Q$z!Q![Fs![!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zVEjX'TPOY$zYZ%fZ!O$z!O!PFV!P!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zVF^V#VU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zRFz_'TP%XQOY$zYZ%fZ!Q$z!Q![Fs![!^$z!^!_%k!_!g$z!g!hGy!h#R$z#R#SJc#S#X$z#X#YGy#Y;'S$z;'S;=`&W<%lO$zRHO]'TPOY$zYZ%fZ{$z{|Hw|}$z}!OHw!O!Q$z!Q![Ii![!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zRH|X'TPOY$zYZ%fZ!Q$z!Q![Ii![!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zRIpZ'TP%XQOY$zYZ%fZ!Q$z!Q![Ii![!^$z!^!_%k!_#R$z#R#SHw#S;'S$z;'S;=`&W<%lO$zRJhX'TPOY$zYZ%fZ!Q$z!Q![Fs![!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_K[['TP$^QOY$zYZ%fZz$zz{LQ{!P$z!P!Q,o!Q!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$z_LVX'TPOYLQYZLrZzLQz{N_{!^LQ!^!_! s!_;'SLQ;'S;=`!!i<%lOLQ_LwT'TPOzMWz{Mj{;'SMW;'S;=`NX<%lOMW^MZTOzMWz{Mj{;'SMW;'S;=`NX<%lOMW^MmVOzMWz{Mj{!PMW!P!QNS!Q;'SMW;'S;=`NX<%lOMW^NXO!f^^N[P;=`<%lMW_NdZ'TPOYLQYZLrZzLQz{N_{!PLQ!P!Q! V!Q!^LQ!^!_! s!_;'SLQ;'S;=`!!i<%lOLQ_! ^V!f^'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_! vZOYLQYZLrZzLQz{N_{!aLQ!a!bMW!b;'SLQ;'S;=`!!i<%l~LQ~OLQ~~%f_!!lP;=`<%lLQZ!!vm'TP%WYOY$zYZ%fZ!O$z!O!PFs!P!Q$z!Q![!$q![!^$z!^!_%k!_!d$z!d!e!&o!e!g$z!g!hGy!h!q$z!q!r!(a!r!z$z!z!{!){!{#R$z#R#S!%}#S#U$z#U#V!&o#V#X$z#X#YGy#Y#c$z#c#d!(a#d#l$z#l#m!){#m;'S$z;'S;=`&W<%lO$zZ!$xa'TP%WYOY$zYZ%fZ!O$z!O!PFs!P!Q$z!Q![!$q![!^$z!^!_%k!_!g$z!g!hGy!h#R$z#R#S!%}#S#X$z#X#YGy#Y;'S$z;'S;=`&W<%lO$zZ!&SX'TPOY$zYZ%fZ!Q$z!Q![!$q![!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zZ!&tY'TPOY$zYZ%fZ!Q$z!Q!R!'d!R!S!'d!S!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zZ!'k['TP%WYOY$zYZ%fZ!Q$z!Q!R!'d!R!S!'d!S!^$z!^!_%k!_#R$z#R#S!&o#S;'S$z;'S;=`&W<%lO$zZ!(fX'TPOY$zYZ%fZ!Q$z!Q!Y!)R!Y!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zZ!)YZ'TP%WYOY$zYZ%fZ!Q$z!Q!Y!)R!Y!^$z!^!_%k!_#R$z#R#S!(a#S;'S$z;'S;=`&W<%lO$zZ!*Q]'TPOY$zYZ%fZ!Q$z!Q![!*y![!^$z!^!_%k!_!c$z!c!i!*y!i#T$z#T#Z!*y#Z;'S$z;'S;=`&W<%lO$zZ!+Q_'TP%WYOY$zYZ%fZ!Q$z!Q![!*y![!^$z!^!_%k!_!c$z!c!i!*y!i#R$z#R#S!){#S#T$z#T#Z!*y#Z;'S$z;'S;=`&W<%lO$zR!,WX!rQ'TPOY$zYZ%fZ![$z![!]!,s!]!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!,zV#yQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zV!-hV!nU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!.S[$YQOY$zYZ%fZ!^$z!^!_!.x!_!`!/i!`!a*c!a!b!0]!b;'S$z;'S;=`&W<%l~$z~O$z~~%fR!/PW$ZQ'TPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zR!/pX$YQ'TPOY$zYZ%fZ!^$z!^!_%k!_!`$z!`!a*c!a;'S$z;'S;=`&W<%lO$zP!0bR!jP!_!`!0k!r!s!0p#d#e!0pP!0pO!jPP!0sQ!j!k!0y#[#]!0yP!0|Q!r!s!0k#d#e!0k_!1ZX#|Y'TPOY$zYZ%fZ!^$z!^!_%k!_!`)r!`!a!1v!a;'S$z;'S;=`&W<%lO$zV!1}V#PU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!2kX$YQ'TPOY$zYZ%fZ!^$z!^!_%k!_!`!3W!`!a!.x!a;'S$z;'S;=`&W<%lO$zR!3_V$YQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!3{[!wQ'TPOY$zYZ%fZ}$z}!O!4q!O!^$z!^!_%k!_!`$z!`!a!6P!a!b!6m!b;'S$z;'S;=`&W<%lO$zV!4vX'TPOY$zYZ%fZ!^$z!^!_%k!_!`$z!`!a!5c!a;'S$z;'S;=`&W<%lO$zV!5jV#bU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!6WV!h^'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!6tW$RQ'TPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zR!7eV$dQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!8Ta'aS'TP'WYOY$zYZ%fZ!Q$z!Q![!7z![!^$z!^!_%k!_!c$z!c!}!7z!}#R$z#R#S!7z#S#T$z#T#o!7z#o$g$z$g&j!7z&j;'S$z;'S;=`&W<%lO$z_!9ce'aS'TP'WYOY$zYZ%fZr$zrs!:tsw$zwx8Vx!Q$z!Q![!7z![!^$z!^!_%k!_!c$z!c!}!7z!}#R$z#R#S!7z#S#T$z#T#o!7z#o$g$z$g&j!7z&j;'S$z;'S;=`&W<%lO$zR!:{V'TP'uQOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zV!;iV#XU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!OZ'TPOY!=yYZ!>qZ!^!=y!^!_!@y!_#O!=y#O#P!Au#P#S!=y#S#T!CP#T;'S!=y;'S;=`!Cm<%lO!=yR!>vV'TPO#O!?]#O#P!?u#P#S!?]#S#T!@n#T;'S!?];'S;=`!@s<%lO!?]Q!?`VO#O!?]#O#P!?u#P#S!?]#S#T!@n#T;'S!?];'S;=`!@s<%lO!?]Q!?xRO;'S!?];'S;=`!@R;=`O!?]Q!@UWO#O!?]#O#P!?u#P#S!?]#S#T!@n#T;'S!?];'S;=`!@s;=`<%l!?]<%lO!?]Q!@sO%UQQ!@vP;=`<%l!?]R!@|]OY!=yYZ!>qZ!a!=y!a!b!?]!b#O!=y#O#P!Au#P#S!=y#S#T!CP#T;'S!=y;'S;=`!Cm<%l~!=y~O!=y~~%fR!AzW'TPOY!=yYZ!>qZ!^!=y!^!_!@y!_;'S!=y;'S;=`!Bd;=`<%l!?]<%lO!=yR!BgWO#O!?]#O#P!?u#P#S!?]#S#T!@n#T;'S!?];'S;=`!@s;=`<%l!=y<%lO!?]R!CWV%UQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!CpP;=`<%l!=y_!CzV!p^'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!DjY$UQ#n['TPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`#p$z#p#q!EY#q;'S$z;'S;=`&W<%lO$zR!EaV$SQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!E}V!oQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!FkV$eQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z",tokenizers:[IO,CO,LO,0,1,2,3,NO],topRules:{Template:[0,73],Program:[1,241]},dynamicPrecedences:{298:1},specialized:[{term:284,get:(O,Q)=>z(O)<<1,external:z},{term:284,get:O=>AO[O]||-1}],tokenPrec:29889}),DO=t.define({name:"php",parser:KO.configure({props:[y.add({IfStatement:c({except:/^\s*({|else\b|elseif\b|endif\b)/}),TryStatement:c({except:/^\s*({|catch\b|finally\b)/}),SwitchBody:O=>{let Q=O.textAfter,i=/^\s*\}/.test(Q),a=/^\s*(case|default)\b/.test(Q);return O.baseIndent+(i?0:a?1:2)*O.unit},ColonBlock:O=>O.baseIndent+O.unit,"Block EnumBody DeclarationList":U({closing:"}"}),ArrowFunction:O=>O.baseIndent+O.unit,"String BlockComment":()=>null,Statement:c({except:/^({|end(for|foreach|switch|while)\b)/})}),l.add({"Block EnumBody DeclarationList SwitchBody ArrayExpression ValueList":w,ColonBlock(O){return{from:O.from+1,to:O.to}},BlockComment(O){return{from:O.from+2,to:O.to-2}}})]}),languageData:{commentTokens:{block:{open:"/*",close:"*/"},line:"//"},indentOnInput:/^\s*(?:case |default:|end(?:if|for(?:each)?|switch|while)|else(?:if)?|\{|\})$/,wordChars:"$",closeBrackets:{stringPrefixes:["b","B"]}}});function JO(O={}){let Q=[],i;if(O.baseLanguage!==null)if(O.baseLanguage)i=O.baseLanguage;else{let a=Z({matchClosingTags:!1});Q.push(a.support),i=a.language}return new R(DO.configure({wrap:i&&s(a=>a.type.isTop?{parser:i.parser,overlay:P=>P.name=="Text"}:null),top:O.plain?"Program":"Template"}),Q)}export{JO as php,DO as phpLanguage}; diff --git a/frontend/dist/assets/index-CQXVR1Ud.js b/frontend/dist/assets/index-CQXVR1Ud.js new file mode 100644 index 0000000..340e763 --- /dev/null +++ b/frontend/dist/assets/index-CQXVR1Ud.js @@ -0,0 +1 @@ +import{G as P,a1 as T,H as W,y as z,am as L}from"./index-BKKvzUDD.js";import{c as w}from"./clamp-CbbY8h6F.js";const $=(n,c,M,d)=>{const o={offsetX:0,offsetY:0},u=z(!1),v=(t,e)=>{if(n.value){const{offsetX:f,offsetY:l}=o,s=n.value.getBoundingClientRect(),a=Math.max(s.left,0),i=Math.max(s.top,0),m=s.width,g=s.height,x=document.documentElement.clientWidth,E=document.documentElement.clientHeight,D=-a+f,H=-i+l,b=x-a-m+f,y=E-i-(g{const e=t.clientX,f=t.clientY,{offsetX:l,offsetY:s}=o,a=m=>{u.value||(u.value=!0),v(l+m.clientX-e,s+m.clientY-f)},i=()=>{u.value=!1,document.removeEventListener("mousemove",a),document.removeEventListener("mouseup",i)};document.addEventListener("mousemove",a),document.addEventListener("mouseup",i)},X=()=>{c.value&&n.value&&(c.value.addEventListener("mousedown",h),window.addEventListener("resize",r))},p=()=>{c.value&&n.value&&(c.value.removeEventListener("mousedown",h),window.removeEventListener("resize",r))},Y=()=>{o.offsetX=0,o.offsetY=0,n.value&&(n.value.style.transform="")},r=()=>{const{offsetX:t,offsetY:e}=o;v(t,e)};return P(()=>{T(()=>{M.value?X():p()})}),W(()=>{p()}),{isDragging:u,resetPosition:Y,updatePosition:r}};export{$ as u}; diff --git a/frontend/dist/assets/index-CSVFdiMT.js b/frontend/dist/assets/index-CSVFdiMT.js new file mode 100644 index 0000000..51e7865 --- /dev/null +++ b/frontend/dist/assets/index-CSVFdiMT.js @@ -0,0 +1 @@ +import{e as G,E as A,C as N,s as I,t as p,n as Y,g as k,o as j,a as U,L as Z,i as B,f as D,u as M}from"./index--cDK8lVp.js";import"./index-BKKvzUDD.js";const h=1,F=2,L=3,K=4,H=5,J=36,ee=37,te=38,Oe=11,oe=13;function re(e){return e==45||e==46||e==58||e>=65&&e<=90||e==95||e>=97&&e<=122||e>=161}function ne(e){return e==9||e==10||e==13||e==32}let Q=null,V=null,X=0;function W(e,t){let o=e.pos+t;if(V==e&&X==o)return Q;for(;ne(e.peek(t));)t++;let O="";for(;;){let r=e.peek(t);if(!re(r))break;O+=String.fromCharCode(r),t++}return V=e,X=o,Q=O||null}function _(e,t){this.name=e,this.parent=t}const ae=new N({start:null,shift(e,t,o,O){return t==h?new _(W(O,1)||"",e):e},reduce(e,t){return t==Oe&&e?e.parent:e},reuse(e,t,o,O){let r=t.type.id;return r==h||r==oe?new _(W(O,1)||"",e):e},strict:!1}),le=new A((e,t)=>{if(e.next==60){if(e.advance(),e.next==47){e.advance();let o=W(e,0);if(!o)return e.acceptToken(H);if(t.context&&o==t.context.name)return e.acceptToken(F);for(let O=t.context;O;O=O.parent)if(O.name==o)return e.acceptToken(L,-2);e.acceptToken(K)}else if(e.next!=33&&e.next!=63)return e.acceptToken(h)}},{contextual:!0});function y(e,t){return new A(o=>{let O=0,r=t.charCodeAt(0);e:for(;!(o.next<0);o.advance(),O++)if(o.next==r){for(let a=1;a"),ie=y(ee,"?>"),ce=y(te,"]]>"),me=I({Text:p.content,"StartTag StartCloseTag EndTag SelfCloseEndTag":p.angleBracket,TagName:p.tagName,"MismatchedCloseTag/TagName":[p.tagName,p.invalid],AttributeName:p.attributeName,AttributeValue:p.attributeValue,Is:p.definitionOperator,"EntityReference CharacterReference":p.character,Comment:p.blockComment,ProcessingInst:p.processingInstruction,DoctypeDecl:p.documentMeta,Cdata:p.special(p.string)}),$e=G.deserialize({version:14,states:",lOQOaOOOrOxO'#CfOzOpO'#CiO!tOaO'#CgOOOP'#Cg'#CgO!{OrO'#CrO#TOtO'#CsO#]OpO'#CtOOOP'#DT'#DTOOOP'#Cv'#CvQQOaOOOOOW'#Cw'#CwO#eOxO,59QOOOP,59Q,59QOOOO'#Cx'#CxO#mOpO,59TO#uO!bO,59TOOOP'#C|'#C|O$TOaO,59RO$[OpO'#CoOOOP,59R,59ROOOQ'#C}'#C}O$dOrO,59^OOOP,59^,59^OOOS'#DO'#DOO$lOtO,59_OOOP,59_,59_O$tOpO,59`O$|OpO,59`OOOP-E6t-E6tOOOW-E6u-E6uOOOP1G.l1G.lOOOO-E6v-E6vO%UO!bO1G.oO%UO!bO1G.oO%dOpO'#CkO%lO!bO'#CyO%zO!bO1G.oOOOP1G.o1G.oOOOP1G.w1G.wOOOP-E6z-E6zOOOP1G.m1G.mO&VOpO,59ZO&_OpO,59ZOOOQ-E6{-E6{OOOP1G.x1G.xOOOS-E6|-E6|OOOP1G.y1G.yO&gOpO1G.zO&gOpO1G.zOOOP1G.z1G.zO&oO!bO7+$ZO&}O!bO7+$ZOOOP7+$Z7+$ZOOOP7+$c7+$cO'YOpO,59VO'bOpO,59VO'mO!bO,59eOOOO-E6w-E6wO'{OpO1G.uO'{OpO1G.uOOOP1G.u1G.uO(TOpO7+$fOOOP7+$f7+$fO(]O!bO<c!|;'S(o;'S;=`)]<%lO(oi>jX|W!O`Or(ors&osv(owx'}x!r(o!r!s?V!s;'S(o;'S;=`)]<%lO(oi?^X|W!O`Or(ors&osv(owx'}x!g(o!g!h?y!h;'S(o;'S;=`)]<%lO(oi@QY|W!O`Or?yrs@psv?yvwA[wxBdx!`?y!`!aCr!a;'S?y;'S;=`Db<%lO?ya@uV!O`Ov@pvxA[x!`@p!`!aAy!a;'S@p;'S;=`B^<%lO@pPA_TO!`A[!`!aAn!a;'SA[;'S;=`As<%lOA[PAsOiPPAvP;=`<%lA[aBQSiP!O`Ov&ox;'S&o;'S;=`'Q<%lO&oaBaP;=`<%l@pXBiX|WOrBdrsA[svBdvwA[w!`Bd!`!aCU!a;'SBd;'S;=`Cl<%lOBdXC]TiP|WOr'}sv'}w;'S'};'S;=`(c<%lO'}XCoP;=`<%lBdiC{ViP|W!O`Or(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(oiDeP;=`<%l?yiDoZ|W!O`Or(ors&osv(owx'}x!e(o!e!fEb!f#V(o#V#WIr#W;'S(o;'S;=`)]<%lO(oiEiX|W!O`Or(ors&osv(owx'}x!f(o!f!gFU!g;'S(o;'S;=`)]<%lO(oiF]X|W!O`Or(ors&osv(owx'}x!c(o!c!dFx!d;'S(o;'S;=`)]<%lO(oiGPX|W!O`Or(ors&osv(owx'}x!v(o!v!wGl!w;'S(o;'S;=`)]<%lO(oiGsX|W!O`Or(ors&osv(owx'}x!c(o!c!dH`!d;'S(o;'S;=`)]<%lO(oiHgX|W!O`Or(ors&osv(owx'}x!}(o!}#OIS#O;'S(o;'S;=`)]<%lO(oiI]V|W!O`yPOr(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(oiIyX|W!O`Or(ors&osv(owx'}x#W(o#W#XJf#X;'S(o;'S;=`)]<%lO(oiJmX|W!O`Or(ors&osv(owx'}x#T(o#T#UKY#U;'S(o;'S;=`)]<%lO(oiKaX|W!O`Or(ors&osv(owx'}x#h(o#h#iK|#i;'S(o;'S;=`)]<%lO(oiLTX|W!O`Or(ors&osv(owx'}x#T(o#T#UH`#U;'S(o;'S;=`)]<%lO(oiLwX|W!O`Or(ors&osv(owx'}x#c(o#c#dMd#d;'S(o;'S;=`)]<%lO(oiMkX|W!O`Or(ors&osv(owx'}x#V(o#V#WNW#W;'S(o;'S;=`)]<%lO(oiN_X|W!O`Or(ors&osv(owx'}x#h(o#h#iNz#i;'S(o;'S;=`)]<%lO(oi! RX|W!O`Or(ors&osv(owx'}x#m(o#m#n! n#n;'S(o;'S;=`)]<%lO(oi! uX|W!O`Or(ors&osv(owx'}x#d(o#d#e!!b#e;'S(o;'S;=`)]<%lO(oi!!iX|W!O`Or(ors&osv(owx'}x#X(o#X#Y?y#Y;'S(o;'S;=`)]<%lO(oi!#_V!SP|W!O`Or(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(ok!$PXaQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qo!$wX[UVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qk!%mZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_!`$q!`!a!&`!a;'S$q;'S;=`)c<%lO$qk!&kX!RQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qk!'aZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_#P$q#P#Q!(S#Q;'S$q;'S;=`)c<%lO$qk!(]ZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_!`$q!`!a!)O!a;'S$q;'S;=`)c<%lO$qk!)ZXxQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$q",tokenizers:[le,se,ie,ce,0,1,2,3,4],topRules:{Document:[0,6]},tokenPrec:0});function T(e,t){let o=t&&t.getChild("TagName");return o?e.sliceString(o.from,o.to):""}function P(e,t){let o=t&&t.firstChild;return!o||o.name!="OpenTag"?"":T(e,o)}function Se(e,t,o){let O=t&&t.getChildren("Attribute").find(a=>a.from<=o&&a.to>=o),r=O&&O.getChild("AttributeName");return r?e.sliceString(r.from,r.to):""}function C(e){for(let t=e&&e.parent;t;t=t.parent)if(t.name=="Element")return t;return null}function ge(e,t){var o;let O=k(e).resolveInner(t,-1),r=null;for(let a=O;!r&&a.parent;a=a.parent)(a.name=="OpenTag"||a.name=="CloseTag"||a.name=="SelfClosingTag"||a.name=="MismatchedCloseTag")&&(r=a);if(r&&(r.to>t||r.lastChild.type.isError)){let a=r.parent;if(O.name=="TagName")return r.name=="CloseTag"||r.name=="MismatchedCloseTag"?{type:"closeTag",from:O.from,context:a}:{type:"openTag",from:O.from,context:C(a)};if(O.name=="AttributeName")return{type:"attrName",from:O.from,context:r};if(O.name=="AttributeValue")return{type:"attrValue",from:O.from,context:r};let s=O==r||O.name=="Attribute"?O.childBefore(t):O;return(s==null?void 0:s.name)=="StartTag"?{type:"openTag",from:t,context:C(a)}:(s==null?void 0:s.name)=="StartCloseTag"&&s.to<=t?{type:"closeTag",from:t,context:a}:(s==null?void 0:s.name)=="Is"?{type:"attrValue",from:t,context:r}:s?{type:"attrName",from:t,context:r}:null}else if(O.name=="StartCloseTag")return{type:"closeTag",from:t,context:O.parent};for(;O.parent&&O.to==t&&!(!((o=O.lastChild)===null||o===void 0)&&o.type.isError);)O=O.parent;return O.name=="Element"||O.name=="Text"||O.name=="Document"?{type:"tag",from:t,context:O.name=="Element"?O:C(O)}:null}class ue{constructor(t,o,O){this.attrs=o,this.attrValues=O,this.children=[],this.name=t.name,this.completion=Object.assign(Object.assign({type:"type"},t.completion||{}),{label:this.name}),this.openCompletion=Object.assign(Object.assign({},this.completion),{label:"<"+this.name}),this.closeCompletion=Object.assign(Object.assign({},this.completion),{label:"",boost:2}),this.closeNameCompletion=Object.assign(Object.assign({},this.completion),{label:this.name+">"}),this.text=t.textContent?t.textContent.map(r=>({label:r,type:"text"})):[]}}const b=/^[:\-\.\w\u00b7-\uffff]*$/;function E(e){return Object.assign(Object.assign({type:"property"},e.completion||{}),{label:e.name})}function R(e){return typeof e=="string"?{label:`"${e}"`,type:"constant"}:/^"/.test(e.label)?e:Object.assign(Object.assign({},e),{label:`"${e.label}"`})}function pe(e,t){let o=[],O=[],r=Object.create(null);for(let n of t){let $=E(n);o.push($),n.global&&O.push($),n.values&&(r[n.name]=n.values.map(R))}let a=[],s=[],f=Object.create(null);for(let n of e){let $=O,c=r;n.attributes&&($=$.concat(n.attributes.map(l=>typeof l=="string"?o.find(d=>d.label==l)||{label:l,type:"property"}:(l.values&&(c==r&&(c=Object.create(c)),c[l.name]=l.values.map(R)),E(l)))));let u=new ue(n,$,c);f[u.name]=u,a.push(u),n.top&&s.push(u)}s.length||(s=a);for(let n=0;n{var $;let{doc:c}=n.state,u=ge(n.state,n.pos);if(!u||u.type=="tag"&&!n.explicit)return null;let{type:l,from:d,context:S}=u;if(l=="openTag"){let i=s,m=P(c,S);if(m){let g=f[m];i=(g==null?void 0:g.children)||a}return{from:d,options:i.map(g=>g.completion),validFor:b}}else if(l=="closeTag"){let i=P(c,S);return i?{from:d,to:n.pos+(c.sliceString(n.pos,n.pos+1)==">"?1:0),options:[(($=f[i])===null||$===void 0?void 0:$.closeNameCompletion)||{label:i+">",type:"type"}],validFor:b}:null}else if(l=="attrName"){let i=f[T(c,S)];return{from:d,options:(i==null?void 0:i.attrs)||O,validFor:b}}else if(l=="attrValue"){let i=Se(c,S,d);if(!i)return null;let m=f[T(c,S)],g=((m==null?void 0:m.attrValues)||r)[i];return!g||!g.length?null:{from:d,to:n.pos+(c.sliceString(n.pos,n.pos+1)=='"'?1:0),options:g,validFor:/^"[^"]*"?$/}}else if(l=="tag"){let i=P(c,S),m=f[i],g=[],q=S&&S.lastChild;i&&(!q||q.name!="CloseTag"||T(c,q)!=i)&&g.push(m?m.closeCompletion:{label:"",type:"type",boost:2});let v=g.concat(((m==null?void 0:m.children)||(S?a:s)).map(x=>x.openCompletion));if(S&&(m!=null&&m.text.length)){let x=S.firstChild;x.to>n.pos-20&&!/\S/.test(n.state.sliceDoc(x.to,n.pos))&&(v=v.concat(m.text))}return{from:d,options:v,validFor:/^<\/?[:\-\.\w\u00b7-\uffff]*$/}}else return null}}const w=Z.define({name:"xml",parser:$e.configure({props:[B.add({Element(e){let t=/^\s*<\//.test(e.textAfter);return e.lineIndent(e.node.from)+(t?0:e.unit)},"OpenTag CloseTag SelfClosingTag"(e){return e.column(e.node.from)+e.unit}}),D.add({Element(e){let t=e.firstChild,o=e.lastChild;return!t||t.name!="OpenTag"?null:{from:t.to,to:o.name=="CloseTag"?o.from:e.to}}}),M.add({"OpenTag CloseTag":e=>e.getChild("TagName")})]}),languageData:{commentTokens:{block:{open:""}},indentOnInput:/^\s*<\/$/}});function xe(e={}){let t=[w.data.of({autocomplete:pe(e.elements||[],e.attributes||[])})];return e.autoCloseTags!==!1&&t.push(fe),new U(w,t)}function z(e,t,o=e.length){if(!t)return"";let O=t.firstChild,r=O&&O.getChild("TagName");return r?e.sliceString(r.from,Math.min(r.to,o)):""}const fe=Y.inputHandler.of((e,t,o,O,r)=>{if(e.composing||e.state.readOnly||t!=o||O!=">"&&O!="/"||!w.isActiveAt(e.state,t,-1))return!1;let a=r(),{state:s}=a,f=s.changeByRange(n=>{var $,c,u;let{head:l}=n,d=s.doc.sliceString(l-1,l)==O,S=k(s).resolveInner(l,-1),i;if(d&&O==">"&&S.name=="EndTag"){let m=S.parent;if(((c=($=m.parent)===null||$===void 0?void 0:$.lastChild)===null||c===void 0?void 0:c.name)!="CloseTag"&&(i=z(s.doc,m.parent,l))){let g=l+(s.doc.sliceString(l,l+1)===">"?1:0),q=``;return{range:n,changes:{from:l,to:g,insert:q}}}}else if(d&&O=="/"&&S.name=="StartCloseTag"){let m=S.parent;if(S.from==l-2&&((u=m.lastChild)===null||u===void 0?void 0:u.name)!="CloseTag"&&(i=z(s.doc,m,l))){let g=l+(s.doc.sliceString(l,l+1)===">"?1:0),q=`${i}>`;return{range:j.cursor(l+q.length,-1),changes:{from:l,to:g,insert:q}}}}return{range:n}});return f.changes.empty?!1:(e.dispatch([a,s.update(f,{userEvent:"input.complete",scrollIntoView:!0})]),!0)});export{fe as autoCloseTags,pe as completeFromSchema,xe as xml,w as xmlLanguage}; diff --git a/frontend/dist/assets/index-CWUnzf90.js b/frontend/dist/assets/index-CWUnzf90.js new file mode 100644 index 0000000..652fb4d --- /dev/null +++ b/frontend/dist/assets/index-CWUnzf90.js @@ -0,0 +1 @@ +import{G as N,bA as $,H as k,V as z,W as X,Q as te,y as L,d as ne,D as C,f as T,a8 as se,P as B,J as oe,F as re,h as ue}from"./index-BKKvzUDD.js";let v=[];const M=e=>{z(e)===X.esc&&v.forEach(n=>n(e))},ae=e=>{N(()=>{v.length===0&&document.addEventListener("keydown",M),$&&v.push(e)}),k(()=>{v=v.filter(n=>n!==e),v.length===0&&$&&document.removeEventListener("keydown",M)})},O="focus-trap.focus-after-trapped",R="focus-trap.focus-after-released",ce="focus-trap.focusout-prevented",W={cancelable:!0,bubbles:!1},ie={cancelable:!0,bubbles:!1},j="focusAfterTrapped",q="focusAfterReleased",fe=Symbol("elFocusTrap"),A=L(),S=L(0),U=L(0);let _=0;const Z=e=>{const n=[],s=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:o=>{const u=o.tagName==="INPUT"&&o.type==="hidden";return o.disabled||o.hidden||u?NodeFilter.FILTER_SKIP:o.tabIndex>=0||o===document.activeElement?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;s.nextNode();)n.push(s.currentNode);return n},J=(e,n)=>{for(const s of e)if(!de(s,n))return s},de=(e,n)=>{if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(n&&e===n)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1},le=e=>{const n=Z(e);return[J(n,e),J(n.reverse(),e)]},ve=e=>e instanceof HTMLInputElement&&"select"in e,d=(e,n)=>{if(e){const s=document.activeElement;te(e,{preventScroll:!0}),U.value=window.performance.now(),e!==s&&ve(e)&&n&&e.select()}};function G(e,n){const s=[...e],o=e.indexOf(n);return o!==-1&&s.splice(o,1),s}const Ee=()=>{let e=[];return{push:o=>{const u=e[0];u&&o!==u&&u.pause(),e=G(e,o),e.unshift(o)},remove:o=>{var u,i;e=G(e,o),(i=(u=e[0])==null?void 0:u.resume)==null||i.call(u)}}},pe=(e,n=!1)=>{const s=document.activeElement;for(const o of e)if(d(o,n),document.activeElement!==s)return},Q=Ee(),me=()=>S.value>U.value,F=()=>{A.value="pointer",S.value=window.performance.now()},Y=()=>{A.value="keyboard",S.value=window.performance.now()},Te=()=>(N(()=>{_===0&&(document.addEventListener("mousedown",F),document.addEventListener("touchstart",F),document.addEventListener("keydown",Y)),_++}),k(()=>{_--,_<=0&&(document.removeEventListener("mousedown",F),document.removeEventListener("touchstart",F),document.removeEventListener("keydown",Y))}),{focusReason:A,lastUserFocusTimestamp:S,lastAutomatedFocusTimestamp:U}),y=e=>new CustomEvent(ce,{...ie,detail:e});var _e=ne({name:"ElFocusTrap",inheritAttrs:!1,props:{loop:Boolean,trapped:Boolean,focusTrapEl:Object,focusStartEl:{type:[Object,String],default:"first"}},emits:[j,q,"focusin","focusout","focusout-prevented","release-requested"],setup(e,{emit:n}){const s=L();let o,u;const{focusReason:i}=Te();ae(t=>{e.trapped&&!l.paused&&n("release-requested",t)});const l={paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}},E=t=>{if(!e.loop&&!e.trapped||l.paused)return;const{altKey:r,ctrlKey:c,metaKey:a,currentTarget:p,shiftKey:V}=t,{loop:x}=e,ee=z(t)===X.tab&&!r&&!c&&!a,m=document.activeElement;if(ee&&m){const P=p,[g,w]=le(P);if(g&&w){if(!V&&m===w){const f=y({focusReason:i.value});n("focusout-prevented",f),f.defaultPrevented||(t.preventDefault(),x&&d(g,!0))}else if(V&&[g,P].includes(m)){const f=y({focusReason:i.value});n("focusout-prevented",f),f.defaultPrevented||(t.preventDefault(),x&&d(w,!0))}}else if(m===P){const f=y({focusReason:i.value});n("focusout-prevented",f),f.defaultPrevented||t.preventDefault()}}};re(fe,{focusTrapRef:s,onKeydown:E}),C(()=>e.focusTrapEl,t=>{t&&(s.value=t)},{immediate:!0}),C([s],([t],[r])=>{t&&(t.addEventListener("keydown",E),t.addEventListener("focusin",b),t.addEventListener("focusout",h)),r&&(r.removeEventListener("keydown",E),r.removeEventListener("focusin",b),r.removeEventListener("focusout",h))});const I=t=>{n(j,t)},K=t=>n(q,t),b=t=>{const r=T(s);if(!r)return;const c=t.target,a=t.relatedTarget,p=c&&r.contains(c);e.trapped||a&&r.contains(a)||(o=a),p&&n("focusin",t),!l.paused&&e.trapped&&(p?u=c:d(u,!0))},h=t=>{const r=T(s);if(!(l.paused||!r))if(e.trapped){const c=t.relatedTarget;!se(c)&&!r.contains(c)&&setTimeout(()=>{if(!l.paused&&e.trapped){const a=y({focusReason:i.value});n("focusout-prevented",a),a.defaultPrevented||d(u,!0)}},0)}else{const c=t.target;c&&r.contains(c)||n("focusout",t)}};async function D(){await B();const t=T(s);if(t){Q.push(l);const r=t.contains(document.activeElement)?o:document.activeElement;if(o=r,!t.contains(r)){const c=new Event(O,W);t.addEventListener(O,I),t.dispatchEvent(c),c.defaultPrevented||B(()=>{let a=e.focusStartEl;oe(a)||(d(a),document.activeElement!==a&&(a="first")),a==="first"&&pe(Z(t),!0),(document.activeElement===r||a==="container")&&d(t)})}}}function H(){const t=T(s);if(t){t.removeEventListener(O,I);const r=new CustomEvent(R,{...W,detail:{focusReason:i.value}});t.addEventListener(R,K),t.dispatchEvent(r),!r.defaultPrevented&&(i.value=="keyboard"||!me()||t.contains(document.activeElement))&&d(o??document.body),t.removeEventListener(R,K),Q.remove(l),o=null,u=null}}return N(()=>{e.trapped&&D(),C(()=>e.trapped,t=>{t?D():H()})}),k(()=>{e.trapped&&H(),s.value&&(s.value.removeEventListener("keydown",E),s.value.removeEventListener("focusin",b),s.value.removeEventListener("focusout",h),s.value=void 0),o=null,u=null}),{onKeydown:E}}}),Fe=(e,n)=>{const s=e.__vccOpts||e;for(const[o,u]of n)s[o]=u;return s};function ye(e,n,s,o,u,i){return ue(e.$slots,"default",{handleKeydown:e.onKeydown})}var Le=Fe(_e,[["render",ye]]),be=Le;export{fe as F,Fe as _,be as f}; diff --git a/frontend/dist/assets/index-CaQ1sOcP.js b/frontend/dist/assets/index-CaQ1sOcP.js new file mode 100644 index 0000000..38c8543 --- /dev/null +++ b/frontend/dist/assets/index-CaQ1sOcP.js @@ -0,0 +1 @@ +import{L as p,a as u,p as l,q as n,s as m,t,v as b,e as S,h as r}from"./index--cDK8lVp.js";import"./index-BKKvzUDD.js";const c=S.deserialize({version:14,states:"%pOVOWOOObQPOOOpOSO'#C_OOOO'#Cp'#CpQVOWOOQxQPOOO!TQQOOQ!YQPOOOOOO,58y,58yO!_OSO,58yOOOO-E6n-E6nO!dQQO'#CqQ{QPOOO!iQPOOQ{QPOOO!qQPOOOOOO1G.e1G.eOOQO,59],59]OOQO-E6o-E6oO!yOpO'#CiO#RO`O'#CiQOQPOOO#ZO#tO'#CmO#fO!bO'#CmOOQO,59T,59TO#qOpO,59TO#vO`O,59TOOOO'#Cr'#CrO#{O#tO,59XOOQO,59X,59XOOOO'#Cs'#CsO$WO!bO,59XOOQO1G.o1G.oOOOO-E6p-E6pOOQO1G.s1G.sOOOO-E6q-E6q",stateData:"$g~OjOS~OQROUROkQO~OWTOXUOZUO`VO~OSXOTWO~OXUO[]OlZO~OY^O~O[_O~OT`O~OYaO~OmcOodO~OmfOogO~O^iOnhO~O_jOphO~ObkOqkOrmO~OcnOsnOtmO~OnpO~OppO~ObkOqkOrrO~OcnOsnOtrO~OWX`~",goto:"!^hPPPiPPPPPPPPPmPPPpPPsy!Q!WTROSRe]Re_QSORYSS[T^Rb[QlfRqlQogRso",nodeNames:"⚠ Content Text Interpolation InterpolationContent }} Entity Attribute VueAttributeName : Identifier @ Is ScriptAttributeValue AttributeScript AttributeScript AttributeName AttributeValue Entity Entity",maxTerm:36,nodeProps:[["isolate",-3,3,13,17,""]],skippedNodes:[0],repeatNodeCount:4,tokenData:"'y~RdXY!aYZ!a]^!apq!ars!rwx!w}!O!|!O!P#t!Q![#y![!]$s!_!`%g!b!c%l!c!}#y#R#S#y#T#j#y#j#k%q#k#o#y%W;'S#y;'S;:j$m<%lO#y~!fSj~XY!aYZ!a]^!apq!a~!wOm~~!|Oo~!b#RX`!b}!O!|!Q![!|![!]!|!c!}!|#R#S!|#T#o!|%W;'S!|;'S;:j#n<%lO!|!b#qP;=`<%l!|~#yOl~%W$QXY#t`!b}!O!|!Q![#y![!]!|!c!}#y#R#S#y#T#o#y%W;'S#y;'S;:j$m<%lO#y%W$pP;=`<%l#y~$zXX~`!b}!O!|!Q![!|![!]!|!c!}!|#R#S!|#T#o!|%W;'S!|;'S;:j#n<%lO!|~%lO[~~%qOZ~%W%xXY#t`!b}!O&e!Q![#y![!]!|!c!}#y#R#S#y#T#o#y%W;'S#y;'S;:j$m<%lO#y!b&jX`!b}!O!|!Q![!|![!]!|!c!}'V#R#S!|#T#o'V%W;'S!|;'S;:j#n<%lO!|!b'^XW!b`!b}!O!|!Q![!|![!]!|!c!}'V#R#S!|#T#o'V%W;'S!|;'S;:j#n<%lO!|",tokenizers:[6,7,new r("b~RP#q#rU~XP#q#r[~aOT~~",17,4),new r("!k~RQvwX#o#p!_~^TU~Opmq!]m!^;'Sm;'S;=`!X<%lOm~pUOpmq!]m!]!^!S!^;'Sm;'S;=`!X<%lOm~!XOU~~![P;=`<%lm~!bP#o#p!e~!jOk~~",72,2),new r("[~RPwxU~ZOp~~",11,15),new r("[~RPrsU~ZOn~~",11,14),new r("!e~RQvwXwx!_~^Tc~Opmq!]m!^;'Sm;'S;=`!X<%lOm~pUOpmq!]m!]!^!S!^;'Sm;'S;=`!X<%lOm~!XOc~~![P;=`<%lm~!dOt~~",66,35),new r("!e~RQrsXvw^~^Or~~cTb~Oprq!]r!^;'Sr;'S;=`!^<%lOr~uUOprq!]r!]!^!X!^;'Sr;'S;=`!^<%lOr~!^Ob~~!aP;=`<%lr~",66,33)],topRules:{Content:[0,1],Attribute:[1,7]},tokenPrec:157}),P=b.parser.configure({top:"SingleExpression"}),s=c.configure({props:[m({Text:t.content,Is:t.definitionOperator,AttributeName:t.attributeName,VueAttributeName:t.keyword,Identifier:t.variableName,"AttributeValue ScriptAttributeValue":t.attributeValue,Entity:t.character,"{{ }}":t.brace,"@ :":t.punctuation})]}),o={parser:P},Q=s.configure({wrap:n((O,e)=>O.name=="InterpolationContent"?o:null)}),g=s.configure({wrap:n((O,e)=>O.name=="AttributeScript"?o:null),top:"Attribute"}),y={parser:Q},R={parser:g},a=l();function i(O){return O.configure({dialect:"selfClosing",wrap:n(X)},"vue")}const T=i(a.language);function X(O,e){switch(O.name){case"Attribute":return/^(@|:|v-)/.test(e.read(O.from,O.from+2))?R:null;case"Text":return y}return null}function f(O={}){let e=a;if(O.base){if(O.base.language.name!="html"||!(O.base.language instanceof p))throw new RangeError("The base option must be the result of calling html(...)");e=O.base}return new u(e.language==a.language?T:i(e.language),[e.support,e.language.data.of({closeBrackets:{brackets:["{",'"']}})])}export{f as vue,T as vueLanguage}; diff --git a/frontend/dist/assets/index-CfrELZwh.js b/frontend/dist/assets/index-CfrELZwh.js new file mode 100644 index 0000000..ba0ee1f --- /dev/null +++ b/frontend/dist/assets/index-CfrELZwh.js @@ -0,0 +1 @@ +import{e as t,E as Z,h as o,s as S,t as e,a as s,L as m,i as d,j as Y,c as a,k as w,f as n,l as V}from"./index--cDK8lVp.js";import"./index-BKKvzUDD.js";const P=1,l=2,q=3,T=82,z=76,_=117,h=85,c=97,j=122,b=65,p=90,v=95,i=48,U=34,R=40,r=41,W=32,x=62,f=new Z(O=>{if(O.next==z||O.next==h?O.advance():O.next==_&&(O.advance(),O.next==i+8&&O.advance()),O.next!=T||(O.advance(),O.next!=U))return;O.advance();let Q="";for(;O.next!=R;){if(O.next==W||O.next<=13||O.next==r)return;Q+=String.fromCharCode(O.next),O.advance()}for(O.advance();;){if(O.next<0)return O.acceptToken(P);if(O.next==r){let $=!0;for(let X=0;$&&X{if(O.next==x)O.peek(1)==x&&O.acceptToken(l,1);else{let Q=!1,$=0;for(;;$++){if(O.next>=b&&O.next<=p)Q=!0;else{if(O.next>=c&&O.next<=j)return;if(O.next!=v&&!(O.next>=i&&O.next<=i+9))break}O.advance()}Q&&$>1&&O.acceptToken(q)}},{extend:!0}),k=S({"typedef struct union enum class typename decltype auto template operator friend noexcept namespace using requires concept import export module __attribute__ __declspec __based":e.definitionKeyword,"extern MsCallModifier MsPointerModifier extern static register thread_local inline const volatile restrict _Atomic mutable constexpr constinit consteval virtual explicit VirtualSpecifier Access":e.modifier,"if else switch for while do case default return break continue goto throw try catch":e.controlKeyword,"co_return co_yield co_await":e.controlKeyword,"new sizeof delete static_assert":e.operatorKeyword,"NULL nullptr":e.null,this:e.self,"True False":e.bool,"TypeSize PrimitiveType":e.standard(e.typeName),TypeIdentifier:e.typeName,FieldIdentifier:e.propertyName,"CallExpression/FieldExpression/FieldIdentifier":e.function(e.propertyName),"ModuleName/Identifier":e.namespace,PartitionName:e.labelName,StatementIdentifier:e.labelName,"Identifier DestructorName":e.variableName,"CallExpression/Identifier":e.function(e.variableName),"CallExpression/ScopedIdentifier/Identifier":e.function(e.variableName),"FunctionDeclarator/Identifier FunctionDeclarator/DestructorName":e.function(e.definition(e.variableName)),NamespaceIdentifier:e.namespace,OperatorName:e.operator,ArithOp:e.arithmeticOperator,LogicOp:e.logicOperator,BitOp:e.bitwiseOperator,CompareOp:e.compareOperator,AssignOp:e.definitionOperator,UpdateOp:e.updateOperator,LineComment:e.lineComment,BlockComment:e.blockComment,Number:e.number,String:e.string,"RawString SystemLibString":e.special(e.string),CharLiteral:e.character,EscapeSequence:e.escape,"UserDefinedLiteral/Identifier":e.literal,PreprocArg:e.meta,"PreprocDirectiveName #include #ifdef #ifndef #if #define #else #endif #elif":e.processingInstruction,MacroName:e.special(e.name),"( )":e.paren,"[ ]":e.squareBracket,"{ }":e.brace,"< >":e.angleBracket,". ->":e.derefOperator,", ;":e.separator}),u={__proto__:null,bool:36,char:36,int:36,float:36,double:36,void:36,size_t:36,ssize_t:36,intptr_t:36,uintptr_t:36,charptr_t:36,int8_t:36,int16_t:36,int32_t:36,int64_t:36,uint8_t:36,uint16_t:36,uint32_t:36,uint64_t:36,char8_t:36,char16_t:36,char32_t:36,char64_t:36,const:70,volatile:72,restrict:74,_Atomic:76,mutable:78,constexpr:80,constinit:82,consteval:84,struct:88,__declspec:92,final:148,override:148,public:152,private:152,protected:152,virtual:154,extern:160,static:162,register:164,inline:166,thread_local:168,__attribute__:172,__based:178,__restrict:180,__uptr:180,__sptr:180,_unaligned:180,__unaligned:180,noexcept:194,requires:198,TRUE:798,true:798,FALSE:800,false:800,typename:218,class:220,template:234,throw:248,__cdecl:256,__clrcall:256,__stdcall:256,__fastcall:256,__thiscall:256,__vectorcall:256,try:260,catch:264,export:282,import:286,case:296,default:298,if:308,else:314,switch:318,do:322,while:324,for:330,return:334,break:338,continue:342,goto:346,co_return:350,co_yield:354,using:362,typedef:366,namespace:380,new:398,delete:400,co_await:402,concept:406,enum:410,static_assert:414,friend:422,union:424,explicit:430,operator:444,module:456,signed:518,unsigned:518,long:518,short:518,decltype:528,auto:530,sizeof:566,NULL:572,nullptr:586,this:588},G={__proto__:null,"<":767},y={__proto__:null,">":135},E={__proto__:null,operator:388,new:576,delete:582},C=t.deserialize({version:14,states:"$<[Q!QQVOOP'gOUOOO([OWO'#CdO,UQUO'#CgO,`QUO'#FjO-vQbO'#CxO.XQUO'#CxO0WQUO'#KaO0_QUO'#CwO0jOpO'#DvO0rQ!dO'#D]OOQR'#JP'#JPO5[QVO'#GUO5iQUO'#JWOOQQ'#JW'#JWO8}QUO'#KtOxQVO'#IbO!(}QVO'#IdO!?SQUO'#IgO!?ZQVO'#IjP!AQO!LQO'#CaP!A]{,UO'#CbP!6q{,UO'#CbP!Ah{7[O'#CbP!6q{,UO'#CbP!Am{,UO'#CbP!AxOSO'#IzPOOO)CEp)CEpOOOO'#I}'#I}O!BSOWO,59OOOQR,59O,59OO!(}QVO,59VOOQQ,59X,59XOOQR'#Do'#DoO!(}QVO,5;ROOQR,5qOOQR'#IX'#IXOOQR'#IY'#IYOOQR'#IZ'#IZOOQR'#I['#I[O!(}QVO,5>rO!(}QVO,5>rO!(}QVO,5>rO!(}QVO,5>rO!(}QVO,5>rO!(}QVO,5>rO!(}QVO,5>rO!(}QVO,5>rO!(}QVO,5>rO!(}QVO,5>rO!D^QVO,5>zOOQQ,5?W,5?WO!FPQVO'#CjO!IxQUO'#CzOOQQ,59d,59dOOQQ,59c,59cOOQQ,5<},5<}O!JVQ&lO,5=mO!?SQUO,5?RO!LyQVO,5?UO!MQQbO,59dO!M]QVO'#FYOOQQ,5?P,5?PO!MmQVO,59WO!MtO`O,5:bO!MyQbO'#D^O!N[QbO'#KeO!NjQbO,59wO!NrQbO'#CxO# TQUO'#CxO# YQUO'#KaO# dQUO'#CwOOQR-E<}-E<}O# oQUO,5AvO# vQVO'#EfO@[QVO'#EiOBXQUO,5;kOOQR,5l,5>lO#3uQUO'#CgO#4kQUO,5>pO#6^QUO'#IeOOQR'#JO'#JOO#6fQUO,5:xO#7SQUO,5:xO#7sQUO,5:xO#8hQUO'#CuO!0TQUO'#CmOOQQ'#JX'#JXO#7SQUO,5:xO#8pQUO,5;QO!4{QUO'#DOO#9yQUO,5;QO#:OQUO,5>QO#;[QUO'#DOO#;rQUO,5>{O#;wQUO'#LOO#=QQUO,5;TO#=YQVO,5;TO#=dQUO,5;TOOQQ,5;T,5;TO#?]QUO'#LdO#?dQUO,5>UO#?iQbO'#CxO#?tQUO'#GcO#?yQUO'#E^O#@jQUO,5;kO#ARQUO'#LUO#AZQUO,5;rOKnQUO'#HfOBXQUO'#HgO#A`QUO'#KxO!6qQUO'#HjO#BWQUO'#CuO!0wQVO,5PO$(fQUO'#E[O$(sQUO,5>ROOQQ,5>S,5>SO$,aQVO'#C|OOQQ-E=q-E=qOOQQ,5>d,5>dOOQQ,59a,59aO$,kQUO,5>wO$.kQUO,5>zO!6qQUO,59uO$/OQUO,5;qO$/]QUO,5<{O!0TQUO,5:oOOQQ,5:r,5:rO$/hQUO,5;mO$/mQUO'#KtOBXQUO,5;kOOQR,5;x,5;xO$0^QUO'#FbO$0lQUO'#FbO$0qQUO,5;zO$4[QVO'#FmO!0wQVO,5sQUO'#L^O$>{QUO,5T,5>TO$FxQUO,5>TO$GSQUO,5>TO$GXQUO,5>TO$G^QUO,5>TO!6qQUO,5>TO$I[QUO'#KaO$IcQUO,5=oO$InQUO,5=aOKnQUO,5=oO$JhQUO,5=sOOQR,5=s,5=sO$JpQUO,5=sO$L{QVO'#H[OOQQ,5=u,5=uO!;`QUO,5=uO%#vQUO'#KqO%#}QUO'#KbO%$cQUO'#KqO%$mQUO'#DyO%%OQUO'#D|O%'{QUO'#KbOOQQ'#Kb'#KbO%)nQUO'#KbO%#}QUO'#KbO%)sQUO'#KbOOQQ,59s,59sOOQQ,5>a,5>aOOQQ,5>b,5>bO%){QUO'#HzO%*TQUO,5>cOOQQ,5>c,5>cO%-oQUO,5>cO%-zQUO,5>hO%1fQVO,5>iO%1mQUO,5>|O# vQVO'#EfO%4sQUO,5>|OOQQ,5>|,5>|O%5dQUO,5?OO%7hQUO,5?RO!<_QUO,5?RO%9dQUO,5?UO%=PQVO,5?UPOOO'#I|'#I|P%=WO!LQO,58{POOO,58{,58{P!Am{,UO,58|P%=c{,UO,58|P%=q{7[O,58|PO{O'#Jw'#JwP%>S{,UO'#LkPOOO'#Lk'#LkP%>Y{,UO'#LkPOOO,58|,58|POOO,5?f,5?fP%>_OSO,5?fOOOO-E<{-E<{OOQR1G.j1G.jO%>fQUO1G.qO%?lQUO1G0mOOQQ1G0m1G0mO%@xQUO'#CpO%CXQbO'#CxO%CdQUO'#CsO%CiQUO'#CsO%CnQUO1G.uO#BWQUO'#CrOOQQ1G.u1G.uO%EqQUO1G4]O%FwQUO1G4^O%HjQUO1G4^O%J]QUO1G4^O%LOQUO1G4^O%MqQUO1G4^O& dQUO1G4^O&#VQUO1G4^O&$xQUO1G4^O&&kQUO1G4^O&(^QUO1G4^O&*PQUO1G4^O&+rQUO'#KVO&,{QUO'#KVO&-TQUO,59UOOQQ,5=P,5=PO&/]QUO,5=PO&/gQUO,5=PO&/lQUO,5=PO&/qQUO,5=PO!6qQUO,5=PO#NsQUO1G3XO&/{QUO1G4mO!<_QUO1G4mO&1wQUO1G4pO&3jQVO1G4pOOQQ1G/O1G/OOOQQ1G.}1G.}OOQQ1G2i1G2iO!JVQ&lO1G3XO&3qQUO'#LVO@[QVO'#EiO&4zQUO'#F]OOQQ'#Jb'#JbO&5PQUO'#FZO&5[QUO'#LVO&5dQUO,5;tO&5iQUO1G.rOOQQ1G.r1G.rOOQR1G/|1G/|O&7[Q!dO'#JQO&7aQbO,59xO&9rQ!eO'#D`O&9yQ!dO'#JSO&:OQbO,5APO&:OQbO,5APOOQR1G/c1G/cO&:ZQbO1G/cO&:`Q&lO'#GeO&;^QbO,59dOOQR1G7b1G7bO#@jQUO1G1VO&;iQUO1G1^OBXQUO1G1VO&=zQUO'#CzO#+VQbO,59dO&AmQUO1G6zOOQR-E<|-E<|O&CPQUO1G0dO#6fQUO1G0dOOQQ-E=V-E=VO#7SQUO1G0dOOQQ1G0l1G0lO&CtQUO,59jOOQQ1G3l1G3lO&D[QUO,59jO&DrQUO,59jO!MmQVO1G4gO!(}QVO'#JZO&E^QUO,5AjOOQQ1G0o1G0oO!(}QVO1G0oO!6qQUO'#JpO&EfQUO,5BOOOQQ1G3p1G3pOOQR1G1V1G1VO&IcQVO'#FOO!MmQVO,5;sOOQQ,5;s,5;sOBXQUO'#JdO&K_QUO,5ApO&KgQVO'#E[OOQR1G1^1G1^O&NUQUO'#LdOOQR1G1n1G1nOOQR-E=h-E=hOOQR1G7e1G7eO#DvQUO1G7eOGYQUO1G7eO#DvQUO1G7gOOQR1G7g1G7gO&N^QUO'#G}O&NfQUO'#L`OOQQ,5=h,5=hO&NtQUO,5=jO&NyQUO,5=kOOQR1G7h1G7hO#EtQVO1G7hO' OQUO1G7hO'!UQVO,5=kOOQR1G1U1G1UO$/UQUO'#E]O'!zQUO'#E]OOQQ'#LQ'#LQO'#eQUO'#LPO'#pQUO,5;UO'#xQUO'#ElO'$]QUO'#ElO'$pQUO'#EtOOQQ'#J]'#J]O'$uQUO,5;cO'%lQUO,5;cO'&gQUO,5;dO''mQVO,5;dOOQQ,5;d,5;dO''wQVO,5;dO''mQVO,5;dO'(OQUO,5;bO'({QUO,5;eO')WQUO'#KwO')`QUO,5:vO')eQUO,5;fOOQQ1G0n1G0nOOQQ'#J^'#J^O'(OQUO,5;bO!4{QUO'#E}OOQQ,5;b,5;bO'*`QUO'#E`O',YQUO'#E{OHuQUO1G0nO',_QUO'#EbOOQQ'#JY'#JYO'-wQUO'#KyOOQQ'#Ky'#KyO'.qQUO1G0eO'/iQUO1G3kO'0oQVO1G3kOOQQ1G3k1G3kO'0yQVO1G3kO'1QQUO'#LgO'2^QUO'#K_O'2lQUO'#K^O'2wQUO,59hO'3PQUO1G/aO'3UQUO'#FPOOQR1G1]1G1]OOQR1G2g1G2gO$?]QUO1G2gO'3`QUO1G2gO'3kQUO1G0ZOOQR'#Ja'#JaO'3pQVO1G1XO'9iQUO'#FTO'9nQUO1G1VO!6qQUO'#JeO'9|QUO,5;|O$0lQUO,5;|OOQQ'#Fc'#FcOOQQ,5;|,5;|O':[QUO1G1fOOQR1G1f1G1fO':dQUO,5fO(*vQUO'#LeOOQQ1G3}1G3}O(.mQUO1G3}O(.tQUO1G3}O(.{QUO1G4TO(0RQUO1G4TO(0WQUO,5BUO!6qQUO1G4hO!(}QVO'#IiOOQQ1G4m1G4mO(0]QUO1G4mO(2`QVO1G4pPOOO-Em,5>mO$)hQVO'#JuO)+xQUO,5@xOOQQ1G/S1G/SOOQQ7+${7+${O),TQUO7+(RO),YQUO7+(ROOQR7+(R7+(RO$?]QUO7+(ROOQQ7+%u7+%uOOQR-E=_-E=_O!0YQUO,5;oOOQQ,5@P,5@POOQQ-E=c-E=cO$0lQUO1G1hOOQQ1G1h1G1hOOQR7+'Q7+'QOOQR1G1s1G1sOBXQUO,5;rO),vQUO,5yQUO7+(`O)@PQUO7+(dO)@UQVO7+(dOOQQ7+(l7+(lOOQQ7+)Z7+)ZO)@^QUO'#KqO)@hQUO'#KqOOQR,5=b,5=bO)@uQUO,5=bO!;eQUO,5=bO!;eQUO,5=bO!;eQUO,5=bOOQR7+(g7+(gOOQR7+(u7+(uOOQR7+(y7+(yOOQR,5=w,5=wO)@zQUO,5=zO)BQQUO,5=yOOQR,5A},5A}OOQR-E=k-E=kOOQQ1G3b1G3bO)CWQUO,5=xO)C]QVO'#EfOOQQ1G6h1G6hO%)nQUO1G6hO%)sQUO1G6hOOQQ1G0P1G0POOQQ-E=R-E=RO)EtQUO,5A^O(&jQUO'#JUO)FPQUO,5A^O)FPQUO,5A^O)FXQUO,5:iO8}QUO,5:iOOQQ,5>],5>]O)FcQUO,5AyO)FjQUO'#EVO)GtQUO'#EVO)H_QUO,5:iO)HiQUO'#HlO)HiQUO'#HmOOQQ'#Kv'#KvO)IWQUO'#KvO!(}QVO'#HnOOQQ,5:i,5:iO)IxQUO,5:iO!MmQVO,5:iOOQQ-E=T-E=TOOQQ1G0S1G0SOOQQ,5>`,5>`O)I}QUO1G6hO!(}QVO,5>gO)MlQUO'#JtO)MwQUO,5BQOOQQ1G4Q1G4QO)NPQUO,5BPOOQQ,5BP,5BPOOQQ7+)i7+)iO*#nQUO7+)iOOQQ7+)o7+)oO*(mQVO1G7pO**oQUO7+*SO**tQUO,5?TO*+zQUO7+*[POOO7+$S7+$SP*-mQUO'#LnP*-uQUO,5BXP!Am{,UO7+$SPOOO1G7q1G7qO*-zQUO<_QUO1G0xOOQQ1G0y1G0yO*>pQUO'#ElOOQQ1G0z1G0zOOQQ7+&j7+&jO*?UQUO7+&jO*@[QVO7+&jOOQQ7+&h7+&hOOQQ,5@],5@]OOQQ-E=o-E=oO*AWQUO1G1TO*AbQUO1G1TO*A{QUO1G0fOOQQ1G0f1G0fO*CRQUO'#LSO*CZQUO1G1ROOQQ<VO)HiQUO'#JrO*N}QUO1G0TO+ `QVO1G0TOOQQ1G3u1G3uO+ gQUO,5>WO+ rQUO,5>XO+!aQUO,5>YO+#gQUO1G0TO%)sQUO7+,SO+$mQUO1G4ROOQQ,5@`,5@`OOQQ-E=r-E=rOOQQ<n,5>nO+0fQUOANAXOOQRANAXANAXO+0kQUO7+'`OOQRAN@cAN@cO+1wQVOAN@nO+2OQUOAN@nO!0wQVOAN@nO+3XQUOAN@nO+3^QUOAN@}O+3iQUOAN@}O+4oQUOAN@}OOQRAN@nAN@nO!MmQVOAN@}OOQRANAOANAOO+4tQUO7+'|O)8XQUO7+'|OOQQ7+(O7+(OO+5VQUO7+(OO+6]QVO7+(OO+6dQVO7+'hO+6kQUOANAjOOQR7+(h7+(hOOQR7+)P7+)PO+6pQUO7+)PO+6uQUO7+)POOQQ<= n<= nO+6}QUO7+,dO+7VQUO1G5[OOQQ1G5[1G5[O+7bQUO7+%oOOQQ7+%o7+%oO+7sQUO7+%oO+ `QVO7+%oOOQQ7+)a7+)aO+7xQUO7+%oO+9OQUO7+%oO!MmQVO7+%oO+9YQUO1G0]O*MhQUO1G0]O)FjQUO1G0]OOQQ1G0a1G0aO+9wQUO1G3qO+:}QVO1G3qOOQQ1G3q1G3qO+;XQVO1G3qO+;`QUO,5@^OOQQ-E=p-E=pOOQQ1G3r1G3rO%)nQUO<= nOOQQ7+*Z7+*ZPOQQ,5@d,5@dPOQQ-E=v-E=vOOQQ1G/}1G/}OOQQ,5?y,5?yOOQQ-E=]-E=]OOQRG26sG26sO+;wQUOG26YO!0wQVOG26YO+=QQUOG26YOOQRG26YG26YO!MmQVOG26iO!0wQVOG26iO+=VQUOG26iO+>]QUOG26iO+>bQUO<sQUO<xQUO<}QUO<uAN>uO+CmQUOAN>uO+DsQUOAN>uO!MmQVOAN>uO+DxQUO<VQUO'#CzO,>eQbO,59dO,5^QUO7+&OO,;hQUO7+&OO,>pQUO'#EwO,?cQUO'#EzO,@SQUO'#E^O,@XQUO'#GcO,@^QUO'#CwO,@cQUO'#CxO,@hQUO'#CxO,@mQUO'#GcO,@rQUO'#CwO,@wQUO'#KaO,AeQUO'#KaO,AoQUO'#CwO,AzQUO'#CwO,BVQUO'#CwO,;hQUO,5:xO,6xQUO,5:xO,6xQUO,5:xO,BbQUO'#KaO,BuQbO'#CxO,CQQUO'#CsO,CVQUO'#E^",stateData:",C{~O(pOSSOSRPQVPQ'ePQ'gPQ'hPQ'iPQ'jPQ'kPQ'lPQ'mPQ(qPQ~O*cOS~OPmO]eOb!]Oe!POmTOs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O|#RO!O!_O!TxO!VfO!X!XO!Y!WO!i!YO!opO!r!`O!s!aO!t!aO!u!bO!v!aO!x!cO!{!dO#V#QO#a#VO#b#TO#i#OO#p!xO#t!fO#v!eO$R!gO$T!hO$Y!vO$Z!wO$`!iO$e!jO$g!kO$h!lO$k!mO$m!nO$o!oO$q!pO$s!qO$u!rO$w!sO${!tO$}!uO%U!yO%_#ZO%`#[O%a#YO%c!zO%e#UO%g!{O%l#SO%o!|O%v!}O%|#PO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(vQO(xRO)WYO)ZaO)]|O)^{O)`iO)a!ZO)cXO)ocO)pdO~OR#cOV#^O'e#_O'g#`O'h#aO'i#aO'j#bO'k#bO'l#`O'm#`O(q#]O~OX#eO(u#gO(w#eO~O]ZX]jXejXmhXqZXqjXsjXtjXujXvjXwjXxjXyjXzjX!OjX!TjX!VZX!VjX!XZX!YZX![ZX!^ZX!_ZX!aZX!bZX!eZX!fZX!gZX!hZX!rjX!sjX!tjX!ujX!vjX!xjX!{jX%vjX&rjX&sjX(xjX({ZX(|$]X(}ZX)OZX)ZZX)ZjX)[ZX)]ZX)]jX)^ZX)^jX)_ZX)`ZX)aZX)qZX~O)`jX!UZX~P(gO]$PO!V#nO!X#}O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O!h#kO({#hO(}#mO)O#mO)Z#oO)[#qO)]#pO)^#rO)_#jO)`#lO)a$OO~Oe$TO%Y$UO'[$VO'_$WO)P$QO~Om$XO~O!T$YO])TXe)TXs)TXt)TXu)TXv)TXw)TXx)TXy)TXz)TX!O)TX!V)TX!r)TX!s)TX!t)TX!u)TX!v)TX!x)TX!{)TX%v)TX&r)TX&s)TX(x)TX)Z)TX)])TX)^)TX)`)TX~Om$XO~P.^Om$XO!g$[O)q$[O~OX$]O)d$]O~O!R$^O)V)XP)a)XP~OPmO]$gOb!]Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O|#RO!O!_O!TxO!V$hO!X!XO!Y!WO!i!YO!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO#V#QO#a#VO#b#TO#v!eO$Y!vO$Z!wO$`!iO$e!jO$g!kO$h!lO$k!mO$m!nO$o!oO$q!pO$s!qO$u!rO$w!sO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$oO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(vQO)WYO)Z$mO)^$mO)`iO)a!ZO)cXO)ocO)pdO~Om$aO#t$nO(xRO~P0}O](_Xb'zXe(_Xm'zXm(_Xs'zXs(_Xt'zXt(_Xu'zXu(_Xv'zXv(_Xw'zXw(_Xx'zXx(_Xy'zXy(_Xz'zXz(_X|'zX!O'zX!V(_X!o(_X!r'zX!r(_X!s'zX!s(_X!t'zX!t(_X!u'zX!u(_X!v'zX!v(_X!x'zX!x(_X!{(_X#a'zX#b'zX%e'zX%l'zX%o(_X%v(_X&m'zX&r'zX&s'zX(x'zX(x(_X)Z(_X)](_X)^(_X~Ob!TOm$qOs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O|#RO!O!_O!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO#a#VO#b#TO%e#UO%l#SO&m!RO&r#WO&s!TO(x$pO~Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!O!_O!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO&r#WO&s$yO])hXe)hXm)hX!V)hX!{)hX%v)hX(x)hX)Z)hX)])hX)^)hX~O)`$xO~P:qOPmO]eOe!POs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!VfO!X!XO!Y!WO!i!YO!{!dO#V#QO%_#ZO%`#[O%a#YO%v$oO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(vQO)ZaO)]|O)^{O)a!ZO)cXO)ocO)pdO~Ob%SOm;UO!|%TO(x$zO~PfP?P?c?wFpMq!&v!-_P!4Y!4}!5rP!6^PPPPPPPP!6wP!8aP!9r!;[P!;bPPPPPP!;eP!;ePP!;ePP!;qPPPPPP!=s!AZP!A^PP!Az!BoPPPPP!BsP?S!DUPP?S!F]!H^!Hl!JR!KrP!K}P!L^!L^# n#$}#&e#)q#,{!H^#-VPP!H^#-^#-d#-V#-V#-gP#-k#.Y#.Y#.Y#.Y!KrP#.s#/U#1kP#2PP#3lP#3p#3x#4m#4x#7W#7`#7`#3pP#3pP#7g#7mP#7wPP#8d#9R#9s#8dP#:e#:qP#8dP#8dPP#8d#8dP#8dP#8dP#8dP#8dP#8dP#8dP#:t#7w#;bP#;wP#<^#<^#<^#<^#S$@Y$@`$@v$AQ$A]$Al$Ar$CQ$DP$DW$D_$De$Dm$Dw$D}$EY$E`$Ei$Eq$E|$FS$F^$Fd$Fn$Ft$F{$G[$Gb$GhP$Gn$Gv$G}$H]$Iy$JP$JV$J^$JjPPPPPPPPPPPP$Jp$JtPPPPP%#v$*i%#y%'R%)ZPP%)h%)kPPPPPPPPPP%)w%*z%+Q%+U%,{%.Y%.{%/S%1c%1iPPP%1s%2O%2R%2X%3`%3c%3m%3w%3{%5P%5r%5x#CeP%6c%6i%6y%6|%7^%7j%7n%7t%7z$*i$*l$*l%7}%8QP%8a%8dQ#dPa(s#b(p(q(r(t/]/_4rR#dP'`mO[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#h#k#n#s#t#u#v#w#x#y#z#{#|#}$P$W$Y$[$g$h$m%_%o&S&U&Y&d&h&z&{'O'Q'R'e'l'm'|(c(e(l)q)w*m*n*q*v*w*{+]+_+m+o+p,U,W,s,v,|-d-e-h-n.W.X.]/U/X/d/k/t/v/{/}0p1T1Y1i1j1t1x2S2U2k2n2q3P3U3X3s4Y4]4b4k5d5o5{6i6m6p6r6t7O7Q7V7l7t7w8o8q8w8}9O9]9a9g9i9v9y9z:V:Y:`:b:g:l:pU%qm%r7[Q&o!`Q(p#^d0X*S0U0V0W0Z5X5Y5Z5^8[R7[3_b}Oaewx{!g&U*v&v$k[!W!X!k!n!r!s!v!x#X#Y#[#h#k#n#s#t#u#v#w#x#y#z#{#|#}$P$W$Y$[$g$h$m%_%o&S&Y&d&h&z&{'O'Q'R'e'l'm'|(c(e(l)q)w*m*n*q*w*{+]+_+m+o+p,U,W,s,v,|-d-e-h-n.W.X.]/U/X/d/k/t/v/{/}1T1i1j1t1x2S2U2k2n2q3P3U3X3s4Y4]4b4k5d5o5{6i6m6p6r6t7O7Q7V7l7t7w8o8q8w8}9O9]9a9g9i9v9y9z:V:Y:`:b:g:l:pS%bf0p#d%lgnp|#O$i%O%P%U%f%j%k%y&u'w'x(T*_*e*g*y+b,q,{-f-w.O.m.t.v0e1R1S1W1[2g2r5k6q;b;c;d;j;k;l;y;z;{;| MacroName LineComment BlockComment PreprocDirective #include String EscapeSequence SystemLibString Identifier ) ( ArgumentList ConditionalExpression AssignmentExpression CallExpression PrimitiveType FieldExpression FieldIdentifier DestructorName TemplateMethod ScopedFieldIdentifier NamespaceIdentifier TemplateType TypeIdentifier ScopedTypeIdentifier ScopedNamespaceIdentifier :: NamespaceIdentifier TypeIdentifier TemplateArgumentList < TypeDescriptor const volatile restrict _Atomic mutable constexpr constinit consteval StructSpecifier struct MsDeclspecModifier __declspec Attribute AttributeName Identifier AttributeArgs { } [ ] UpdateOp ArithOp ArithOp ArithOp LogicOp BitOp BitOp BitOp CompareOp CompareOp CompareOp > CompareOp BitOp UpdateOp , Number CharLiteral AttributeArgs VirtualSpecifier BaseClassClause Access virtual FieldDeclarationList FieldDeclaration extern static register inline thread_local AttributeSpecifier __attribute__ PointerDeclarator MsBasedModifier __based MsPointerModifier FunctionDeclarator ParameterList ParameterDeclaration PointerDeclarator FunctionDeclarator Noexcept noexcept RequiresClause requires True False ParenthesizedExpression CommaExpression LambdaExpression LambdaCaptureSpecifier TemplateParameterList OptionalParameterDeclaration TypeParameterDeclaration typename class VariadicParameterDeclaration VariadicDeclarator ReferenceDeclarator OptionalTypeParameterDeclaration VariadicTypeParameterDeclaration TemplateTemplateParameterDeclaration template AbstractFunctionDeclarator AbstractPointerDeclarator AbstractArrayDeclarator AbstractParenthesizedDeclarator AbstractReferenceDeclarator ThrowSpecifier throw TrailingReturnType CompoundStatement FunctionDefinition MsCallModifier TryStatement try CatchClause catch LinkageSpecification Declaration InitDeclarator InitializerList InitializerPair SubscriptDesignator FieldDesignator ExportDeclaration export ImportDeclaration import ModuleName PartitionName HeaderName CaseStatement case default LabeledStatement StatementIdentifier ExpressionStatement IfStatement if ConditionClause Declaration else SwitchStatement switch DoStatement do while WhileStatement ForStatement for ReturnStatement return BreakStatement break ContinueStatement continue GotoStatement goto CoReturnStatement co_return CoYieldStatement co_yield AttributeStatement ForRangeLoop AliasDeclaration using TypeDefinition typedef PointerDeclarator FunctionDeclarator ArrayDeclarator ParenthesizedDeclarator ThrowStatement NamespaceDefinition namespace ScopedIdentifier Identifier OperatorName operator ArithOp BitOp CompareOp LogicOp new delete co_await ConceptDefinition concept UsingDeclaration enum StaticAssertDeclaration static_assert ConcatenatedString TemplateDeclaration FriendDeclaration friend union FunctionDefinition ExplicitFunctionSpecifier explicit FieldInitializerList FieldInitializer DefaultMethodClause DeleteMethodClause FunctionDefinition OperatorCast operator TemplateInstantiation FunctionDefinition FunctionDefinition Declaration ModuleDeclaration module RequiresExpression RequirementList SimpleRequirement TypeRequirement CompoundRequirement ReturnTypeRequirement ConstraintConjuction LogicOp ConstraintDisjunction LogicOp ArrayDeclarator ParenthesizedDeclarator ReferenceDeclarator TemplateFunction OperatorName StructuredBindingDeclarator ArrayDeclarator ParenthesizedDeclarator ReferenceDeclarator BitfieldClause FunctionDefinition FunctionDefinition Declaration FunctionDefinition Declaration AccessSpecifier UnionSpecifier ClassSpecifier EnumSpecifier SizedTypeSpecifier TypeSize EnumeratorList Enumerator DependentType Decltype decltype auto PlaceholderTypeSpecifier ParameterPackExpansion ParameterPackExpansion FieldIdentifier PointerExpression SubscriptExpression BinaryExpression ArithOp LogicOp LogicOp BitOp UnaryExpression LogicOp BitOp UpdateExpression CastExpression SizeofExpression sizeof CoAwaitExpression CompoundLiteralExpression NULL NewExpression new NewDeclarator DeleteExpression delete ParameterPackExpansion nullptr this UserDefinedLiteral ParamPack #define PreprocArg #if #ifdef #ifndef #else #endif #elif PreprocDirectiveName Macro Program",maxTerm:433,nodeProps:[["group",-35,1,8,11,15,16,17,19,71,72,100,101,102,104,191,208,229,242,243,270,271,272,277,280,281,282,284,285,286,287,290,292,293,294,295,296,"Expression",-13,18,25,26,27,43,255,256,257,258,262,263,265,266,"Type",-19,126,129,147,150,152,153,158,160,163,164,166,168,170,172,174,176,178,179,188,"Statement"],["isolate",-4,4,5,8,10,""],["openedBy",12,"(",52,"{",54,"["],["closedBy",13,")",51,"}",53,"]"]],propSources:[k],skippedNodes:[0,3,4,5,6,7,10,297,298,299,300,301,302,303,304,305,306,308,349,350],repeatNodeCount:43,tokenData:"&AbMfR!UOX$eXY/]YZ5gZ]$e]^1g^p$epq/]qr5}rs8Zst:Ttu$euv!AWvw!Cbwx!Eqxy!Flyz!Gmz{!Hn{|!Iw|}!LX}!O!MY!O!P# m!P!Q#8a!Q!R#@T!R![$'k![!]$@f!]!^$Bn!^!_$Co!_!`%C`!`!a%Dg!a!b%HP!b!c$e!c!n%IQ!n!o%Jl!o!w%IQ!w!x%Jl!x!}%IQ!}#O%Mx#O#P& }#P#Q&3[#Q#R&5a#R#S%IQ#S#T$e#T#i%IQ#i#j&6j#j#o%IQ#o#p&8[#p#q&9]#q#r&;o#r#s&|#Y#o;x#o;'S$e;'S;=`/V<%lO$eGz?Xe)d`(wS'f,U'm<`OY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![;x![!c$e!c!};x!}#O$e#O#P'b#P#R$e#R#S;x#S#T$e#T#Y;x#Y#Z@j#Z#o;x#o;'S$e;'S;=`/V<%lO$eGz@ue)d`(wS'f,U'm<`OY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![;x![!c$e!c!};x!}#O$e#O#P'b#P#R$e#R#S;x#S#T$e#T#];x#]#^BW#^#o;x#o;'S$e;'S;=`/V<%lO$eGzBce)d`(wS'f,U'm<`OY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![;x![!c$e!c!};x!}#O$e#O#P'b#P#R$e#R#S;x#S#T$e#T#b;x#b#cCt#c#o;x#o;'S$e;'S;=`/V<%lO$eGzDPe)d`(wS'f,U'm<`OY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![;x![!c$e!c!};x!}#O$e#O#P'b#P#R$e#R#S;x#S#T$e#T#X;x#X#YEb#Y#o;x#o;'S$e;'S;=`/V<%lO$eGzEoc)d`(wS'e<`'f,U'm<`OY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![;x![!c$e!c!};x!}#O$e#O#P'b#P#R$e#R#S;x#S#T$e#T#o;x#o;'S$e;'S;=`/V<%lO$eGzGVg)d`(wS'f,U'm<`OY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![;x![!c$e!c!};x!}#O$e#O#P'b#P#R$e#R#S;x#S#T$e#T#`;x#`#aHn#a#b;x#b#c!!n#c#o;x#o;'S$e;'S;=`/V<%lO$eGzHyg)d`(wS'f,U'm<`OY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![;x![!c$e!c!};x!}#O$e#O#P'b#P#R$e#R#S;x#S#T$e#T#];x#]#^Jb#^#g;x#g#hMh#h#o;x#o;'S$e;'S;=`/V<%lO$eGzJme)d`(wS'f,U'm<`OY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![;x![!c$e!c!};x!}#O$e#O#P'b#P#R$e#R#S;x#S#T$e#T#Y;x#Y#ZLO#Z#o;x#o;'S$e;'S;=`/V<%lO$eGzL]c)d`(wS'f,U'l<`'m<`OY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![;x![!c$e!c!};x!}#O$e#O#P'b#P#R$e#R#S;x#S#T$e#T#o;x#o;'S$e;'S;=`/V<%lO$eGzMse)d`(wS'f,U'm<`OY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![;x![!c$e!c!};x!}#O$e#O#P'b#P#R$e#R#S;x#S#T$e#T#X;x#X#Y! U#Y#o;x#o;'S$e;'S;=`/V<%lO$eGz! cc)d`(wS'j<`'f,U'm<`OY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![;x![!c$e!c!};x!}#O$e#O#P'b#P#R$e#R#S;x#S#T$e#T#o;x#o;'S$e;'S;=`/V<%lO$eGz!!ye)d`(wS'f,U'm<`OY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![;x![!c$e!c!};x!}#O$e#O#P'b#P#R$e#R#S;x#S#T$e#T#W;x#W#X!$[#X#o;x#o;'S$e;'S;=`/V<%lO$eGz!$ge)d`(wS'f,U'm<`OY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![;x![!c$e!c!};x!}#O$e#O#P'b#P#R$e#R#S;x#S#T$e#T#];x#]#^!%x#^#o;x#o;'S$e;'S;=`/V<%lO$eGz!&Te)d`(wS'f,U'm<`OY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![;x![!c$e!c!};x!}#O$e#O#P'b#P#R$e#R#S;x#S#T$e#T#Y;x#Y#Z!'f#Z#o;x#o;'S$e;'S;=`/V<%lO$eGz!'sc)d`(wS'f,U'k<`'m<`OY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![;x![!c$e!c!};x!}#O$e#O#P'b#P#R$e#R#S;x#S#T$e#T#o;x#o;'S$e;'S;=`/V<%lO$eGz!)Zg)d`(wS'f,U'm<`OY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![;x![!c$e!c!};x!}#O$e#O#P'b#P#R$e#R#S;x#S#T$e#T#Y;x#Y#Z!*r#Z#b;x#b#c!7l#c#o;x#o;'S$e;'S;=`/V<%lO$eGz!+Pg)d`(wS'g<`'f,U'm<`OY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![;x![!c$e!c!};x!}#O$e#O#P'b#P#R$e#R#S;x#S#T$e#T#W;x#W#X!,h#X#b;x#b#c!1[#c#o;x#o;'S$e;'S;=`/V<%lO$eGz!,se)d`(wS'f,U'm<`OY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![;x![!c$e!c!};x!}#O$e#O#P'b#P#R$e#R#S;x#S#T$e#T#X;x#X#Y!.U#Y#o;x#o;'S$e;'S;=`/V<%lO$eGz!.ae)d`(wS'f,U'm<`OY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![;x![!c$e!c!};x!}#O$e#O#P'b#P#R$e#R#S;x#S#T$e#T#Y;x#Y#Z!/r#Z#o;x#o;'S$e;'S;=`/V<%lO$eGz!0Pc)d`(wS'h<`'f,U'm<`OY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![;x![!c$e!c!};x!}#O$e#O#P'b#P#R$e#R#S;x#S#T$e#T#o;x#o;'S$e;'S;=`/V<%lO$eGz!1ge)d`(wS'f,U'm<`OY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![;x![!c$e!c!};x!}#O$e#O#P'b#P#R$e#R#S;x#S#T$e#T#W;x#W#X!2x#X#o;x#o;'S$e;'S;=`/V<%lO$eGz!3Te)d`(wS'f,U'm<`OY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![;x![!c$e!c!};x!}#O$e#O#P'b#P#R$e#R#S;x#S#T$e#T#X;x#X#Y!4f#Y#o;x#o;'S$e;'S;=`/V<%lO$eGz!4qe)d`(wS'f,U'm<`OY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![;x![!c$e!c!};x!}#O$e#O#P'b#P#R$e#R#S;x#S#T$e#T#Y;x#Y#Z!6S#Z#o;x#o;'S$e;'S;=`/V<%lO$eGz!6ac)d`(wS'i<`'f,U'm<`OY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![;x![!c$e!c!};x!}#O$e#O#P'b#P#R$e#R#S;x#S#T$e#T#o;x#o;'S$e;'S;=`/V<%lO$eGz!7we)d`(wS'f,U'm<`OY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![;x![!c$e!c!};x!}#O$e#O#P'b#P#R$e#R#S;x#S#T$e#T#V;x#V#W!9Y#W#o;x#o;'S$e;'S;=`/V<%lO$eGz!9ee)d`(wS'f,U'm<`OY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![;x![!c$e!c!};x!}#O$e#O#P'b#P#R$e#R#S;x#S#T$e#T#`;x#`#a!:v#a#o;x#o;'S$e;'S;=`/V<%lO$eGz!;Re)d`(wS'f,U'm<`OY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![;x![!c$e!c!};x!}#O$e#O#P'b#P#R$e#R#S;x#S#T$e#T#i;x#i#j!Q#X#o;x#o;'S$e;'S;=`/V<%lO$eGz!>]e)d`(wS'f,U'm<`OY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![;x![!c$e!c!};x!}#O$e#O#P'b#P#R$e#R#S;x#S#T$e#T#X;x#X#Y!?n#Y#o;x#o;'S$e;'S;=`/V<%lO$eGz!?{c)d`(wSV<`'f,U'm<`OY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![;x![!c$e!c!};x!}#O$e#O#P'b#P#R$e#R#S;x#S#T$e#T#o;x#o;'S$e;'S;=`/V<%lO$eF`!Ae^)d`(wS%Z#t![8O'f,UOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q!_$e!_!`!Ba!`#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$eF`!Bl[!g:t)d`(wS'f,UOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$eF`!Co_)^8O)d`(wS%[#t'f,UOY$eZr$ers%dsv$evw!Dnwx*mx!P$e!P!Q-V!Q!_$e!_!`!Ba!`#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$eF`!D{[)]8O%^#t)d`(wS'f,UOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$eCb!E|Y)bW(wS)c8O'f,UOY*mZr*mrs&Zs!P*m!P!Q+d!Q#O*m#O#P'b#P;'S*m;'S;=`-P<%lO*mLS!Fw[)d`(wS]Kn'f,UOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$e-^!Gx[[r)d`(wS'f,UOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$eF`!H{^)Z8O)d`(wS%Z#t'f,UOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q!_$e!_!`!Ba!`#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$eF`!JU`)d`(wS%Z#t!Y8O'f,UOY$eZr$ers%dsw$ewx*mx{$e{|!KW|!P$e!P!Q-V!Q!_$e!_!`!Ba!`#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$eF`!Kc[)d`!X:t(wS'f,UOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$eCr!Ld[!h8W)d`(wS'f,UOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$eF`!Mga)d`(wS%Z#t!Y8O'f,UOY$eZr$ers%dsw$ewx*mx}$e}!O!KW!O!P$e!P!Q-V!Q!_$e!_!`!Ba!`!a!Nl!a#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$eF`!Nw[)O:t)d`(wS'f,UOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$eCr# x^)d`(wS'f,U(}8OOY$eZr$ers%dsw$ewx*mx!O$e!O!P#!t!P!Q-V!Q![#$w![#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$eCr#!}])d`(wS'f,UOY$eZr$ers%dsw$ewx*mx!O$e!O!P##v!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$eCr#$R[)a8W)d`(wS'f,UOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$eCj#%So)d`(wS!i8O'f,UOY$eZr$ers%dsw$ewx#'Tx!P$e!P!Q-V!Q![#$w![!g$e!g!h#1O!h!i#6j!i!n$e!n!o#6j!o!r$e!r!s#1O!s!w$e!w!x#6j!x#O$e#O#P'b#P#X$e#X#Y#1O#Y#Z#6j#Z#`$e#`#a#6j#a#d$e#d#e#1O#e#i$e#i#j#6j#j;'S$e;'S;=`/V<%lO$eCY#'[Z(wS'f,UOY*mZr*mrs&Zs!P*m!P!Q+d!Q![#'}![#O*m#O#P'b#P;'S*m;'S;=`-P<%lO*mCY#(Wo(wS!i8O'f,UOY*mZr*mrs&Zsw*mwx#'Tx!P*m!P!Q+d!Q![#'}![!g*m!g!h#*X!h!i#/a!i!n*m!n!o#/a!o!r*m!r!s#*X!s!w*m!w!x#/a!x#O*m#O#P'b#P#X*m#X#Y#*X#Y#Z#/a#Z#`*m#`#a#/a#a#d*m#d#e#*X#e#i*m#i#j#/a#j;'S*m;'S;=`-P<%lO*mCY#*bm(wS!i8O'f,UOY*mZr*mrs&Zs{*m{|#,]|}*m}!O#,]!O!P*m!P!Q+d!Q![#-c![!c*m!c!h#-c!h!i#-c!i!n*m!n!o#/a!o!w*m!w!x#/a!x#O*m#O#P'b#P#T*m#T#Y#-c#Y#Z#-c#Z#`*m#`#a#/a#a#i*m#i#j#/a#j;'S*m;'S;=`-P<%lO*mCY#,d_(wS'f,UOY*mZr*mrs&Zs!P*m!P!Q+d!Q![#-c![!c*m!c!i#-c!i#O*m#O#P'b#P#T*m#T#Z#-c#Z;'S*m;'S;=`-P<%lO*mCY#-lk(wS!i8O'f,UOY*mZr*mrs&Zsw*mwx#,]x!P*m!P!Q+d!Q![#-c![!c*m!c!h#-c!h!i#-c!i!n*m!n!o#/a!o!w*m!w!x#/a!x#O*m#O#P'b#P#T*m#T#Y#-c#Y#Z#-c#Z#`*m#`#a#/a#a#i*m#i#j#/a#j;'S*m;'S;=`-P<%lO*mCY#/jf(wS!i8O'f,UOY*mZr*mrs&Zs!P*m!P!Q+d!Q!h*m!h!i#/a!i!n*m!n!o#/a!o!w*m!w!x#/a!x#O*m#O#P'b#P#Y*m#Y#Z#/a#Z#`*m#`#a#/a#a#i*m#i#j#/a#j;'S*m;'S;=`-P<%lO*mCj#1Zo)d`(wS!i8O'f,UOY$eZr$ers%dsw$ewx*mx{$e{|#3[|}$e}!O#3[!O!P$e!P!Q-V!Q![#4j![!c$e!c!h#4j!h!i#4j!i!n$e!n!o#6j!o!w$e!w!x#6j!x#O$e#O#P'b#P#T$e#T#Y#4j#Y#Z#4j#Z#`$e#`#a#6j#a#i$e#i#j#6j#j;'S$e;'S;=`/V<%lO$eCj#3ea)d`(wS'f,UOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![#4j![!c$e!c!i#4j!i#O$e#O#P'b#P#T$e#T#Z#4j#Z;'S$e;'S;=`/V<%lO$eCj#4uk)d`(wS!i8O'f,UOY$eZr$ers%dsw$ewx#,]x!P$e!P!Q-V!Q![#4j![!c$e!c!h#4j!h!i#4j!i!n$e!n!o#6j!o!w$e!w!x#6j!x#O$e#O#P'b#P#T$e#T#Y#4j#Y#Z#4j#Z#`$e#`#a#6j#a#i$e#i#j#6j#j;'S$e;'S;=`/V<%lO$eCj#6uh)d`(wS!i8O'f,UOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q!h$e!h!i#6j!i!n$e!n!o#6j!o!w$e!w!x#6j!x#O$e#O#P'b#P#Y$e#Y#Z#6j#Z#`$e#`#a#6j#a#i$e#i#j#6j#j;'S$e;'S;=`/V<%lO$eMf#8la)d`(wS%Z#t![8OOY$eYZ&ZZr$ers%dsw$ewx*mxz$ez{#9q{!P$e!P!Q#:g!Q!_$e!_!`!Ba!`#O$e#O#P&Z#P;'S$e;'S;=`/V<%lO$eMf#9zX)d`(wS(qMQOY.]Zr.]rs)xsw.]wx,bx#O.]#P;'S.];'S;=`/P<%lO.]Mf#:pY)d`(wSSMQOY#:gZr#:grs#;`sw#:gwx#?Wx#O#:g#O#P#z<%lO#z<%lO#z<%lO#]#P;'S#z<%lO#bWSMQOY#z<%lO#}P;=`<%l#Ov)d`(wS!i8O'f,UOY$eZr$ers%dsw$ewx$3hx!O$e!O!P#NV!P!Q-V!Q![$1R![!c$e!c!g$1R!g!h$9o!h!i$1R!i!n$e!n!o#6j!o!r$e!r!s#1O!s!w$e!w!x#6j!x#O$e#O#P'b#P#T$e#T#U$1R#U#V$1R#V#X$1R#X#Y$9o#Y#Z$1R#Z#`$e#`#a#6j#a#d$e#d#e#1O#e#i$e#i#j#6j#j#l$e#l#m$/s#m;'S$e;'S;=`/V<%lO$eGz$@q^(|9b)d`(wS'f,UOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![$e![!]$Am!]#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$eFh$Ax[m:|)d`(wS'f,UOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$eCj$By[)`8O)d`(wS'f,UOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q#O$e#O#P'b#P;'S$e;'S;=`/V<%lO$eM^$C|aq8O%]#t)d`(wS'f,UOY$ERYZ$FZZr$ERrs$Fxsw$ERwx%4^x!P$ER!P!Q%8|!Q!^$ER!^!_%=a!_!`%?z!`!a%B_!a#O$ER#O#P%.w#P;'S$ER;'S;=`%=Z<%lO$ER3h$E[_)d`(wS'f,UOY$ERYZ$FZZr$ERrs$Fxsw$ERwx%4^x!P$ER!P!Q%8|!Q!`$ER!`!a%p!`!a%{_!g:t)d`(wS'f,UOY$ERYZ$FZZr$ERrs$Fxsw$ERwx%4^x!P$ER!P!Q%8|!Q!`$ER!`!a%`Zp$epq&>`qr$ers%dsw$ewx*mx!P$e!P!Q-V!Q!c$e!c!}&?z!}#O$e#O#P'b#P#R$e#R#S&?z#S#T$e#T#o&?z#o;'S$e;'S;=`/V<%lO$e,t&>ie)d`(wS'f,UOX$eXY&>`Zp$epq&>`qr$ers%dsw$ewx*mx!P$e!P!Q-V!Q!c$e!c!}&?z!}#O$e#O#P'b#P#R$e#R#S&?z#S#T$e#T#o&?z#o;'S$e;'S;=`/V<%lO$e,t&@Vc)d`(wSeY'f,UOY$eZr$ers%dsw$ewx*mx!P$e!P!Q-V!Q![&?z![!c$e!c!}&?z!}#O$e#O#P'b#P#R$e#R#S&?z#S#T$e#T#o&?z#o;'S$e;'S;=`/V<%lO$e",tokenizers:[f,g,1,2,3,4,5,6,7,8,9,10,new o("j~RQYZXz{^~^O(s~~aP!P!Qd~iO(t~~",25,356)],topRules:{Program:[0,307]},dynamicPrecedences:{17:1,65:1,87:1,94:1,119:1,184:1,187:-10,240:-10,241:1,244:-1,246:-10,247:1,262:-1,267:2,268:2,306:-10,371:3,425:1,426:3,427:1,428:1},specialized:[{term:362,get:O=>u[O]||-1},{term:33,get:O=>G[O]||-1},{term:66,get:O=>y[O]||-1},{term:369,get:O=>E[O]||-1}],tokenPrec:24852}),F=m.define({name:"cpp",parser:C.configure({props:[d.add({IfStatement:a({except:/^\s*({|else\b)/}),TryStatement:a({except:/^\s*({|catch)\b/}),LabeledStatement:Y,CaseStatement:O=>O.baseIndent+O.unit,BlockComment:()=>null,CompoundStatement:w({closing:"}"}),Statement:a({except:/^{/})}),n.add({"DeclarationList CompoundStatement EnumeratorList FieldDeclarationList InitializerList":V,BlockComment(O){return{from:O.from+2,to:O.to-2}}})]}),languageData:{commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\})$/,closeBrackets:{stringPrefixes:["L","u","U","u8","LR","UR","uR","u8R","R"]}}});function D(){return new s(F)}export{D as cpp,F as cppLanguage}; diff --git a/frontend/dist/assets/index-CsCXnZZw.js b/frontend/dist/assets/index-CsCXnZZw.js new file mode 100644 index 0000000..362dff6 --- /dev/null +++ b/frontend/dist/assets/index-CsCXnZZw.js @@ -0,0 +1 @@ +import{a as t,r as i,L as n,i as $,c as y,f as P,l as X,e as m,E as S,s as c,t as O}from"./index--cDK8lVp.js";import"./index-BKKvzUDD.js";const s=110,l=1,f=2,r=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288];function e(T){return T>=65&&T<=90||T>=97&&T<=122||T>=161}function p(T){return T>=48&&T<=57}const W=new S((T,Q)=>{if(T.next==40){let a=T.peek(-1);(e(a)||p(a)||a==95||a==45)&&T.acceptToken(f,1)}}),d=new S(T=>{if(r.indexOf(T.peek(-1))>-1){let{next:Q}=T;(e(Q)||Q==95||Q==35||Q==46||Q==91||Q==58||Q==45)&&T.acceptToken(s)}}),Z=new S(T=>{if(r.indexOf(T.peek(-1))<0){let{next:Q}=T;if(Q==37&&(T.advance(),T.acceptToken(l)),e(Q)){do T.advance();while(e(T.next));T.acceptToken(l)}}}),w=c({"import charset namespace keyframes media supports when":O.definitionKeyword,"from to selector":O.keyword,NamespaceName:O.namespace,KeyframeName:O.labelName,TagName:O.tagName,ClassName:O.className,PseudoClassName:O.constant(O.className),IdName:O.labelName,"FeatureName PropertyName PropertyVariable":O.propertyName,AttributeName:O.attributeName,NumberLiteral:O.number,KeywordQuery:O.keyword,UnaryQueryOp:O.operatorKeyword,"CallTag ValueName":O.atom,VariableName:O.variableName,"AtKeyword Interpolation":O.special(O.variableName),Callee:O.operatorKeyword,Unit:O.unit,"UniversalSelector NestingSelector":O.definitionOperator,MatchOp:O.compareOperator,"ChildOp SiblingOp, LogicOp":O.logicOperator,BinOp:O.arithmeticOperator,Important:O.modifier,"Comment LineComment":O.blockComment,ColorLiteral:O.color,"ParenthesizedContent StringLiteral":O.string,Escape:O.special(O.string),": ...":O.punctuation,"PseudoOp #":O.derefOperator,"; ,":O.separator,"( )":O.paren,"[ ]":O.squareBracket,"{ }":O.brace}),z={__proto__:null,lang:40,"nth-child":40,"nth-last-child":40,"nth-of-type":40,"nth-last-of-type":40,dir:40,"host-context":40,and:244,or:244,not:74,only:74,url:86,"url-prefix":86,domain:86,regexp:86,when:117,selector:142,from:172,to:174},h={__proto__:null,"@import":126,"@plugin":126,"@media":152,"@charset":156,"@namespace":160,"@keyframes":166,"@supports":178},g=m.deserialize({version:14,states:"@^O!gQWOOO!nQaO'#CeOOQP'#Cd'#CdO$RQWO'#CgO$xQaO'#EaO%cQWO'#CiO%kQWO'#DZO%pQWO'#D^O%uQaO'#DfOOQP'#Es'#EsO'YQWO'#DlO'yQWO'#DyO(QQWO'#D{O(xQWO'#D}O)TQWO'#EQO'bQWO'#EWO)YQ`O'#FTO)]Q`O'#FTO)hQ`O'#FTO)vQWO'#EYOOQO'#Er'#ErOOQO'#FV'#FVOOQO'#Ec'#EcO){QWO'#EqO*WQWO'#EqQOQWOOOOQP'#Ch'#ChOOQP,59R,59RO$RQWO,59RO*bQWO'#EdO+PQWO,58|O+_QWO,59TO%kQWO,59uO%pQWO,59xO*bQWO,59{O*bQWO,59}OOQO'#De'#DeO*bQWO,5:OO,bQpO'#E}O,iQWO'#DkOOQO,58|,58|O(QQWO,58|O,pQWO,5:{OOQO,5:{,5:{OOQT'#Cl'#ClO-UQeO,59TO.cQ[O,59TOOQP'#D]'#D]OOQP,59u,59uOOQO'#D_'#D_O.hQpO,59xOOQO'#EZ'#EZO.pQ`O,5;oOOQO,5;o,5;oO/OQWO,5:WO/VQWO,5:WOOQS'#Dn'#DnO/rQWO'#DsO/yQ!fO'#FRO0eQWO'#DtOOQS'#FS'#FSO+YQWO,5:eO'bQWO'#DrOOQS'#Cu'#CuO(QQWO'#CwO0jQ!hO'#CyO2^Q!fO,5:gO2oQWO'#DWOOQS'#Ex'#ExO(QQWO'#DQOOQO'#EP'#EPO2tQWO,5:iO2yQWO,5:iOOQO'#ES'#ESO3RQWO,5:lO3WQ!fO,5:rO3iQ`O'#EkO.pQ`O,5;oOOQO,5:|,5:|O3zQWO,5:tOOQO,5:},5:}O4XQWO,5;]OOQO-E8a-E8aOOQP1G.m1G.mOOQP'#Ce'#CeO5RQaO,5;OOOQP'#Df'#DfOOQO-E8b-E8bOOQO1G.h1G.hO(QQWO1G.hO5fQWO1G.hO5nQeO1G.oO.cQ[O1G.oOOQP1G/a1G/aO6{QpO1G/dO7fQaO1G/gO8cQaO1G/iO9`QaO1G/jO:]Q!fO'#FOO:yQ!fO'#ExOOQO'#FO'#FOOOQO,5;i,5;iO<^QWO,5;iOWQWO1G/rO>]Q!fO'#DnO>qQWO,5:ZO>vQ!fO,5:_OOQO'#DP'#DPO'bQWO,5:]O?XQWO'#DwOOQS,5:b,5:bO?`QWO,5:dO'bQWO'#EiO?gQWO,5;mO*bQWO,5:`OOQO1G0P1G0PO?uQ!fO,5:^O@aQ!fO,59cOOQS,59e,59eO(QQWO,59iOOQS,59n,59nO@rQWO,59pOOQO1G0R1G0RO@yQ#tO,59rOARQ!fO,59lOOQO1G0T1G0TOBrQWO1G0TOBwQWO'#ETOOQO1G0W1G0WOOQO1G0^1G0^OOQO,5;V,5;VOOQO-E8i-E8iOCVQ!fO1G0bOCvQWO1G0`O%kQWO'#E_O$RQWO'#E`OEZQWO'#E^OOQO1G0b1G0bPEkQWO'#EcOUAN>UO!!RQWO,5;QOOQO-E8d-E8dO!!]QWOAN>dOOQS<S![;'S%T;'S;=`%f<%lO%Tm>ZY#m]|`Oy%Tz!Q%T!Q![>S![!g%T!g!h>y!h#X%T#X#Y>y#Y;'S%T;'S;=`%f<%lO%Tm?OY|`Oy%Tz{%T{|?n|}%T}!O?n!O!Q%T!Q![@V![;'S%T;'S;=`%f<%lO%Tm?sU|`Oy%Tz!Q%T!Q![@V![;'S%T;'S;=`%f<%lO%Tm@^U#m]|`Oy%Tz!Q%T!Q![@V![;'S%T;'S;=`%f<%lO%Tm@w[#m]|`Oy%Tz!O%T!O!P>S!P!Q%T!Q![@p![!g%T!g!h>y!h#X%T#X#Y>y#Y;'S%T;'S;=`%f<%lO%TbAtS#xQ|`Oy%Tz;'S%T;'S;=`%f<%lO%TkBVScZOy%Tz;'S%T;'S;=`%f<%lO%TmBhXrWOy%Tz}%T}!OCT!O!P=k!P!Q%T!Q![@p![;'S%T;'S;=`%f<%lO%TmCYW|`Oy%Tz!c%T!c!}Cr!}#T%T#T#oCr#o;'S%T;'S;=`%f<%lO%TmCy[f]|`Oy%Tz}%T}!OCr!O!Q%T!Q![Cr![!c%T!c!}Cr!}#T%T#T#oCr#o;'S%T;'S;=`%f<%lO%ToDtW#iROy%Tz!O%T!O!PE^!P!Q%T!Q![>S![;'S%T;'S;=`%f<%lO%TlEcU|`Oy%Tz!O%T!O!PEu!P;'S%T;'S;=`%f<%lO%TlE|S#s[|`Oy%Tz;'S%T;'S;=`%f<%lO%T~F_VrWOy%Tz{Ft{!P%T!P!QIl!Q;'S%T;'S;=`%f<%lO%T~FyU|`OyFtyzG]z{Hd{;'SFt;'S;=`If<%lOFt~G`TOzG]z{Go{;'SG];'S;=`H^<%lOG]~GrVOzG]z{Go{!PG]!P!QHX!Q;'SG];'S;=`H^<%lOG]~H^OR~~HaP;=`<%lG]~HiW|`OyFtyzG]z{Hd{!PFt!P!QIR!Q;'SFt;'S;=`If<%lOFt~IYS|`R~Oy%Tz;'S%T;'S;=`%f<%lO%T~IiP;=`<%lFt~IsV|`S~OYIlYZ%TZyIlyzJYz;'SIl;'S;=`Jq<%lOIl~J_SS~OYJYZ;'SJY;'S;=`Jk<%lOJY~JnP;=`<%lJY~JtP;=`<%lIlmJ|[#m]Oy%Tz!O%T!O!P>S!P!Q%T!Q![@p![!g%T!g!h>y!h#X%T#X#Y>y#Y;'S%T;'S;=`%f<%lO%TkKwU^ZOy%Tz![%T![!]LZ!];'S%T;'S;=`%f<%lO%TcLbS_R|`Oy%Tz;'S%T;'S;=`%f<%lO%TkLsS!ZZOy%Tz;'S%T;'S;=`%f<%lO%ThMUUrWOy%Tz!_%T!_!`Mh!`;'S%T;'S;=`%f<%lO%ThMoS|`rWOy%Tz;'S%T;'S;=`%f<%lO%TlNSW!SSrWOy%Tz!^%T!^!_Mh!_!`%T!`!aMh!a;'S%T;'S;=`%f<%lO%TjNsV!UQrWOy%Tz!_%T!_!`Mh!`!a! Y!a;'S%T;'S;=`%f<%lO%Tb! aS!UQ|`Oy%Tz;'S%T;'S;=`%f<%lO%To! rYg]Oy%Tz!b%T!b!c!!b!c!}!#R!}#T%T#T#o!#R#o#p!$O#p;'S%T;'S;=`%f<%lO%Tm!!iWg]|`Oy%Tz!c%T!c!}!#R!}#T%T#T#o!#R#o;'S%T;'S;=`%f<%lO%Tm!#Y[g]|`Oy%Tz}%T}!O!#R!O!Q%T!Q![!#R![!c%T!c!}!#R!}#T%T#T#o!#R#o;'S%T;'S;=`%f<%lO%To!$TW|`Oy%Tz!c%T!c!}!$m!}#T%T#T#o!$m#o;'S%T;'S;=`%f<%lO%To!$r^|`Oy%Tz}%T}!O!$m!O!Q%T!Q![!$m![!c%T!c!}!$m!}#T%T#T#o!$m#o#q%T#q#r!%n#r;'S%T;'S;=`%f<%lO%To!%uSp_|`Oy%Tz;'S%T;'S;=`%f<%lO%To!&W[#h_Oy%Tz}%T}!O!&|!O!Q%T!Q![!&|![!c%T!c!}!&|!}#T%T#T#o!&|#o;'S%T;'S;=`%f<%lO%To!'T[#h_|`Oy%Tz}%T}!O!&|!O!Q%T!Q![!&|![!c%T!c!}!&|!}#T%T#T#o!&|#o;'S%T;'S;=`%f<%lO%Tk!(OSyZOy%Tz;'S%T;'S;=`%f<%lO%Tm!(aSw]Oy%Tz;'S%T;'S;=`%f<%lO%Td!(pUOy%Tz!_%T!_!`6|!`;'S%T;'S;=`%f<%lO%Tk!)XS!^ZOy%Tz;'S%T;'S;=`%f<%lO%Tk!)jS!]ZOy%Tz;'S%T;'S;=`%f<%lO%To!){Y#oQOr%Trs!*ksw%Twx!.wxy%Tz!_%T!_!`6|!`;'S%T;'S;=`%f<%lO%Tm!*pZ|`OY!*kYZ%TZr!*krs!+csy!*kyz!+vz#O!*k#O#P!-j#P;'S!*k;'S;=`!.q<%lO!*km!+jSo]|`Oy%Tz;'S%T;'S;=`%f<%lO%T]!+yWOY!+vZr!+vrs!,cs#O!+v#O#P!,h#P;'S!+v;'S;=`!-d<%lO!+v]!,hOo]]!,kRO;'S!+v;'S;=`!,t;=`O!+v]!,wXOY!+vZr!+vrs!,cs#O!+v#O#P!,h#P;'S!+v;'S;=`!-d;=`<%l!+v<%lO!+v]!-gP;=`<%l!+vm!-oU|`Oy!*kyz!+vz;'S!*k;'S;=`!.R;=`<%l!+v<%lO!*km!.UXOY!+vZr!+vrs!,cs#O!+v#O#P!,h#P;'S!+v;'S;=`!-d;=`<%l!*k<%lO!+vm!.tP;=`<%l!*km!.|Z|`OY!.wYZ%TZw!.wwx!+cxy!.wyz!/oz#O!.w#O#P!1^#P;'S!.w;'S;=`!2e<%lO!.w]!/rWOY!/oZw!/owx!,cx#O!/o#O#P!0[#P;'S!/o;'S;=`!1W<%lO!/o]!0_RO;'S!/o;'S;=`!0h;=`O!/o]!0kXOY!/oZw!/owx!,cx#O!/o#O#P!0[#P;'S!/o;'S;=`!1W;=`<%l!/o<%lO!/o]!1ZP;=`<%l!/om!1cU|`Oy!.wyz!/oz;'S!.w;'S;=`!1u;=`<%l!/o<%lO!.wm!1xXOY!/oZw!/owx!,cx#O!/o#O#P!0[#P;'S!/o;'S;=`!1W;=`<%l!.w<%lO!/om!2hP;=`<%l!.w`!2nP;=`<%l$t",tokenizers:[d,Z,W,0,1,2,3,4],topRules:{StyleSheet:[0,5]},specialized:[{term:116,get:T=>z[T]||-1},{term:23,get:T=>h[T]||-1}],tokenPrec:2180}),o=n.define({name:"less",parser:g.configure({props:[$.add({Declaration:y()}),P.add({Block:X})]}),languageData:{commentTokens:{block:{open:"/*",close:"*/"},line:"//"},indentOnInput:/^\s*\}$/,wordChars:"@-"}}),u=i(T=>T.name=="VariableName"||T.name=="AtKeyword");function Y(){return new t(o,o.data.of({autocomplete:u}))}export{Y as less,u as lessCompletionSource,o as lessLanguage}; diff --git a/frontend/dist/assets/index-D5ryD3I5.js b/frontend/dist/assets/index-D5ryD3I5.js new file mode 100644 index 0000000..bc89e19 --- /dev/null +++ b/frontend/dist/assets/index-D5ryD3I5.js @@ -0,0 +1 @@ +import{a6 as x,bD as C,bA as E}from"./index-BKKvzUDD.js";const s=new Map;if(E){let e;document.addEventListener("mousedown",t=>e=t),document.addEventListener("mouseup",t=>{if(e){for(const n of s.values())for(const{documentHandler:a}of n)a(t,e);e=void 0}})}function l(e,t){let n=[];return x(t.arg)?n=t.arg:C(t.arg)&&n.push(t.arg),function(a,o){const c=t.instance.popperRef,r=a.target,d=o==null?void 0:o.target,i=!t||!t.instance,f=!r||!d,p=e.contains(r)||e.contains(d),h=e===r,g=n.length&&n.some(u=>u==null?void 0:u.contains(r))||n.length&&n.includes(d),v=c&&(c.contains(r)||c.contains(d));i||f||p||h||g||v||t.value(a,o)}}const m={beforeMount(e,t){s.has(e)||s.set(e,[]),s.get(e).push({documentHandler:l(e,t),bindingFn:t.value})},updated(e,t){s.has(e)||s.set(e,[]);const n=s.get(e),a=n.findIndex(c=>c.bindingFn===t.oldValue),o={documentHandler:l(e,t),bindingFn:t.value};a>=0?n.splice(a,1,o):n.push(o)},unmounted(e){s.delete(e)}};export{m as C}; diff --git a/frontend/dist/assets/index-DLbKIyY2.js b/frontend/dist/assets/index-DLbKIyY2.js new file mode 100644 index 0000000..a865050 --- /dev/null +++ b/frontend/dist/assets/index-DLbKIyY2.js @@ -0,0 +1 @@ +import{e as r,s as e,t as O,a as s,L as X,i as l,j as Y,c as $,k as S,f as o,l as t}from"./index--cDK8lVp.js";import"./index-BKKvzUDD.js";const Z=e({null:O.null,instanceof:O.operatorKeyword,this:O.self,"new super assert open to with void":O.keyword,"class interface extends implements enum var":O.definitionKeyword,"module package import":O.moduleKeyword,"switch while for if else case default do break continue return try catch finally throw":O.controlKeyword,"requires exports opens uses provides public private protected static transitive abstract final strictfp synchronized native transient volatile throws":O.modifier,IntegerLiteral:O.integer,FloatingPointLiteral:O.float,"StringLiteral TextBlock":O.string,CharacterLiteral:O.character,LineComment:O.lineComment,BlockComment:O.blockComment,BooleanLiteral:O.bool,PrimitiveType:O.standard(O.typeName),TypeName:O.typeName,Identifier:O.variableName,"MethodName/Identifier":O.function(O.variableName),Definition:O.definition(O.variableName),ArithOp:O.arithmeticOperator,LogicOp:O.logicOperator,BitOp:O.bitwiseOperator,CompareOp:O.compareOperator,AssignOp:O.definitionOperator,UpdateOp:O.updateOperator,Asterisk:O.punctuation,Label:O.labelName,"( )":O.paren,"[ ]":O.squareBracket,"{ }":O.brace,".":O.derefOperator,", ;":O.separator}),n={__proto__:null,true:34,false:34,null:42,void:46,byte:48,short:48,int:48,long:48,char:48,float:48,double:48,boolean:48,extends:62,super:64,class:76,this:78,new:84,public:100,protected:102,private:104,abstract:106,static:108,final:110,strictfp:112,default:114,synchronized:116,native:118,transient:120,volatile:122,throws:150,implements:160,interface:166,enum:176,instanceof:238,open:267,module:269,requires:274,transitive:276,exports:278,to:280,opens:282,uses:284,provides:286,with:288,package:292,import:296,if:308,else:310,while:314,for:318,var:325,assert:332,switch:336,case:342,do:346,break:350,continue:354,return:358,throw:364,try:368,catch:372,finally:380},d=r.deserialize({version:14,states:"##jQ]QPOOQ$wQPOOO(bQQO'#H^O*iQQO'#CbOOQO'#Cb'#CbO*pQPO'#CaO*xOSO'#CpOOQO'#Hc'#HcOOQO'#Cu'#CuO,eQPO'#D_O-OQQO'#HmOOQO'#Hm'#HmO/gQQO'#HhO/nQQO'#HhOOQO'#Hh'#HhOOQO'#Hg'#HgO1rQPO'#DUO2PQPO'#GnO4wQPO'#D_O5OQPO'#DzO*pQPO'#E[O5qQPO'#E[OOQO'#DV'#DVO7SQQO'#HaO9^QQO'#EeO9eQPO'#EdO9jQPO'#EfOOQO'#Hb'#HbO7jQQO'#HbO:pQQO'#FhO:wQPO'#ExO:|QPO'#E}O:|QPO'#FPOOQO'#Ha'#HaOOQO'#HY'#HYOOQO'#Gh'#GhOOQO'#HX'#HXO<^QPO'#FiOOQO'#HW'#HWOOQO'#Gg'#GgQ]QPOOOOQO'#Hs'#HsOQQPO'#GSO>]QPO'#GUO=kQPO'#GWO:|QPO'#GXO>dQPO'#GZO?QQQO'#HiO?mQQO'#CuO?tQPO'#HxO@SQPO'#D_O@rQPO'#DpO?wQPO'#DqO@|QPO'#HxOA_QPO'#DpOAgQPO'#IROAlQPO'#E`OOQO'#Hr'#HrOOQO'#Gm'#GmQ$wQPOOOAtQPO'#HsOOQO'#H^'#H^OCsQQO,58{OOQO'#H['#H[OOOO'#Gi'#GiOEfOSO,59[OOQO,59[,59[OOQO'#Hi'#HiOFVQPO,59eOGXQPO,59yOOQO-E:f-E:fO*pQPO,58zOG{QPO,58zO*pQPO,5;}OHQQPO'#DQOHVQPO'#DQOOQO'#Gk'#GkOIVQQO,59jOOQO'#Dm'#DmOJqQPO'#HuOJ{QPO'#DlOKZQPO'#HtOKcQPO,5<_OKhQPO,59^OLRQPO'#CxOOQO,59c,59cOLYQPO,59bOLeQQO'#H^ONgQQO'#CbO!!iQPO'#D_O!#nQQO'#HmO!$OQQO,59pO!$VQPO'#DvO!$eQPO'#H|O!$mQPO,5:`O!$rQPO,5:`O!%YQPO,5;nO!%eQPO'#ITO!%pQPO,5;eO!%uQPO,5=YOOQO-E:l-E:lOOQO,5:f,5:fO!']QPO,5:fO!'dQPO,5:vO?tQPO,5<_O*pQPO,5:vO_,5>_O!*sQPO,5:gO!+RQPO,5:qO!+ZQPO,5:lO!+fQPO,5>[O!$VQPO,5>[O!'iQPO,59UO!+qQQO,58zO!+yQQO,5;}O!,RQQO,5gQPO,5gQPO,5<}O!2mQPO,59jO!2zQPO'#HuO!3RQPO,59xO!3WQPO,5>dO?tQPO,59xO!3cQPO,5:[OAlQPO,5:zO!3kQPO'#DrO?wQPO'#DrO!3vQPO'#HyO!4OQPO,5:]O?tQPO,5>dO!(hQPO,5>dOAgQPO,5>mOOQO,5:[,5:[O!$rQPO'#DtOOQO,5>m,5>mO!4TQPO'#EaOOQO,5:z,5:zO!7UQPO,5:zO!(hQPO'#DxOOQO-E:k-E:kOOQO,5:y,5:yO*pQPO,58}O!7ZQPO'#ChOOQO1G.k1G.kOOOO-E:g-E:gOOQO1G.v1G.vO!+qQQO1G.fO*pQPO1G.fO!7eQQO1G1iOOQO,59l,59lO!7mQPO,59lOOQO-E:i-E:iO!7rQPO,5>aO!8ZQPO,5:WO`OOQO1G1y1G1yOOQO1G.x1G.xO!8{QPO'#CyO!9kQPO'#HmO!9uQPO'#CzO!:TQPO'#HlO!:]QPO,59dOOQO1G.|1G.|OLYQPO1G.|O!:sQPO,59eO!;QQQO'#H^O!;cQQO'#CbOOQO,5:b,5:bOhOOQO1G/z1G/zO!oOOQO1G1P1G1POOQO1G0Q1G0QO!=oQPO'#E]OOQO1G0b1G0bO!>`QPO1G1yO!'dQPO1G0bO!*sQPO1G0RO!+RQPO1G0]O!+ZQPO1G0WOOQO1G/]1G/]O!>eQQO1G.pO9eQPO1G0jO*pQPO1G0jOgQPO'#GaOOQO1G2a1G2aO#2zQPO1G2iO#6xQPO,5>gOOQO1G/d1G/dOOQO1G4O1G4OO#7ZQPO1G/dOOQO1G/v1G/vOOQO1G0f1G0fO!7UQPO1G0fOOQO,5:^,5:^O!(hQPO'#DsO#7`QPO,5:^O?wQPO'#GrO#7kQPO,5>eOOQO1G/w1G/wOAgQPO'#H{O#7sQPO1G4OO?tQPO1G4OOOQO1G4X1G4XO!#YQPO'#DvO!!iQPO'#D_OOQO,5:{,5:{O#8OQPO,5:{O#8OQPO,5:{O#8VQQO'#HaO#9hQQO'#HbO#9rQQO'#EbO#9}QPO'#EbO#:VQPO'#IOOOQO,5:d,5:dOOQO1G.i1G.iO#:bQQO'#EeO#:rQQO'#H`O#;SQPO'#FTOOQO'#H`'#H`O#;^QPO'#H`O#;{QPO'#IWO#WOOQO1G/O1G/OOOQO7+$h7+$hOOQO1G/{1G/{O#=cQQO1G/{OOQO1G/}1G/}O#=hQPO1G/{OOQO1G/|1G/|OdQPO,5:wOOQO,5:w,5:wOOQO7+'e7+'eOOQO7+%|7+%|OOQO7+%m7+%mO!KqQPO7+%mO!KvQPO7+%mO!LOQPO7+%mOOQO7+%w7+%wO!LnQPO7+%wOOQO7+%r7+%rO!MmQPO7+%rO!MrQPO7+%rOOQO7+&U7+&UOOQO'#Ee'#EeO9eQPO7+&UO9eQPO,5>[O#?TQPO7+$[OOQO7+&T7+&TOOQO7+&W7+&WO:|QPO'#GlO#?cQPO,5>]OOQO1G/_1G/_O:|QPO7+&lO#?nQQO,59eO#@tQPO,59vOOQO,59v,59vOOQO,5:h,5:hOOQO'#EP'#EPOOQO,5:i,5:iO#@{QPO'#EYOgQPO,5jO#M{QPO,59TO#NSQPO'#IVO#N[QPO,5;oO*pQPO'#G{O#NaQPO,5>rOOQO1G.n1G.nOOQO<Z,5>ZOOQO,5=U,5=UOOQO-E:h-E:hO#NvQPO7+%gOOQO7+%g7+%gOOQO7+%i7+%iOOQO<kO$%tQPO'#EZOOQO1G0_1G0_O$%{QPO1G0_O?tQPO,5:pOOQO-E:s-E:sOOQO1G0Z1G0ZOOQO1G0n1G0nO$&QQQO1G0nOOQO<qOOQO1G1Z1G1ZO$+dQPO'#FUOOQO,5=g,5=gOOQO-E:y-E:yO$+iQPO'#GoO$+vQPO,5>cOOQO1G/u1G/uOOQO<sAN>sO!KqQPOAN>sOOQOAN>xAN>xOOQOAN?[AN?[O9eQPOAN?[OOQO1G0`1G0`O$,_QPO1G0`OOQO,5=b,5=bOOQO-E:t-E:tO$,mQPO,5:uOOQO7+%y7+%yOOQO7+&Y7+&YOOQO1G1`1G1`O$,tQQO1G1`OOQO-E:{-E:{O$,|QQO'#IYO$,wQPO1G1`O$&gQPO1G1`O*pQPO1G1`OOQOAN@]AN@]O$-XQQO<tO$.qQPO7+&zO$.vQQO'#IZOOQOAN@nAN@nO$/RQQOAN@nOOQOAN@jAN@jO$/YQPOAN@jO$/_QQO<uOOQOG26YG26YOOQOG26UG26UOOQO<lOWiXuiX%}iX&PiX&RiX&_iX~OZ!aX~P?XOu#OO%}TO&P#SO&R#SO~O%}TO~P3gOg^Oh^Ov#pO!u#rO!z#qO&_!hO&t#oO~O&P!cO&R!dO~P@ZOg^Oh^O%}TO&P!cO&R!dO~O}cO!P%aO~OZ%bO~O}%dO!m%gO~O}cOg&gXh&gXv&gX!S&gX!T&gX!U&gX!V&gX!W&gX!X&gX!Y&gX!Z&gX!]&gX!^&gX!_&gX!u&gX!z&gX%}&gX&P&gX&R&gX&_&gX&t&gX~OW%jOZ%kOgTahTa%}Ta&PTa&RTa~OvTa!STa!TTa!UTa!VTa!WTa!XTa!YTa!ZTa!]Ta!^Ta!_Ta!uTa!zTa#yTa#zTa$WTa$hTa&tTa&_TauTaYTaqTa|Ta!PTa~PC[O&W%nO&Y!tO~Ou#OO%}TOqma&^maYma&nma!Pma~O&vma}ma!rma~PEnO!SyO!TyO!UyO!VyO!WyO!XyO!YyO!ZzO!]yO!^yO!_yO~Og!Rah!Rav!Ra!u!Ra!z!Ra$h!Ra&P!Ra&R!Ra&t!Ra&_!Ra~PFdO#z%pO~Os%rO~Ou%sO%}TO~Ou#OO%}ra&Pra&Rra&vraYrawra&nra&qra!Pra&^raqra~OWra#_ra#ara#bra#dra#era#fra#gra#hra#ira#kra#ora#rra&_ra#prasra|ra~PH_Ou#OO%}TOq&iX!P&iX!b&iX~OY&iX#p&iX~PJ`O!b%vOq!`X!P!`XY!`X~Oq%wO!P&hX~O!P%yO~Ov%zO~Og^Oh^O%}0oO&P!wO&RWO&b%}O~O&^&`P~PKmO%}TO&P!wO&RWO~OW&QXYiXY!aXY&QXZ&QXq!aXu&QXwiX!b&QX#]&QX#_&QX#a&QX#b&QX#d&QX#e&QX#f&QX#g&QX#h&QX#i&QX#k&QX#o&QX#r&QX&^&QX&_&QX&niX&n&QX&qiX&viX&v&QX&x!aX~P?XOWUXYUXY!aXY&]XZUXq!aXuUXw&]X!bUX#]UX#_UX#aUX#bUX#dUX#eUX#fUX#gUX#hUX#iUX#kUX#oUX#rUX&^UX&_UX&nUX&n&]X&q&]X&vUX&v&]X&x!aX~P>lOg^Oh^O%}TO&P!wO&RWOg!RXh!RX&P!RX&R!RX~PFdOu#OOw&XO%}TO&P&UO&R&TO&q&WO~OW#XOY&aX&n&aX&v&aX~P!#YOY&ZO~P9oOg^Oh^O&P!wO&RWO~Oq&]OY&pX~OY&_O~Og^Oh^O%}TO&P!wO&RWOY&pP~PFdOY&dO&n&bO&v#vO~Oq&eO&x$ZOY&wX~OY&gO~O%}TOg%bah%bav%ba!S%ba!T%ba!U%ba!V%ba!W%ba!X%ba!Y%ba!Z%ba!]%ba!^%ba!_%ba!u%ba!z%ba$h%ba&P%ba&R%ba&t%ba&_%ba~O|&hO~P]O}&iO~Op&uOw&vO&PSO&R!qO&_#YO~Oz&tO~P!'iOz&xO&PSO&R!qO&_#YO~OY&eP~P:|Og^Oh^O%}TO&P!wO&RWO~O}cO~P:|OW#XOu#OO%}TO&v&aX~O#r$WO!P#sa#_#sa#a#sa#b#sa#d#sa#e#sa#f#sa#g#sa#h#sa#i#sa#k#sa#o#sa&^#sa&_#sa&n#saY#sa#p#sas#saq#sa|#sa~Oo'_O}'^O!r'`O&_!hO~O}'eO!r'`O~Oo'iO}'hO&_!hO~OZ#xOu'mO%}TO~OW%jO}'sO~OW%jO!P'uO~OW'vO!P'wO~O$h!WO&P0qO&R0pO!P&eP~P/uO!P(SO#p(TO~P9oO}(UO~O$c(WO~O!P(XO~O!P(YO~O!P(ZO~P9oO!P(]O~P9oOZ$lO_VO`VOaVObVOcVOeVOg^Oh^Op!POwkOz!OO%}TO&P(_O&R(^O&XUO~PFdO%Q(hO%U(iOZ$}a_$}a`$}aa$}ab$}ac$}ae$}ag$}ah$}ap$}av$}aw$}az$}a}$}a!P$}a!S$}a!T$}a!U$}a!V$}a!W$}a!X$}a!Y$}a!Z$}a![$}a!]$}a!^$}a!_$}a!u$}a!z$}a#f$}a#r$}a#t$}a#u$}a#y$}a#z$}a$W$}a$Y$}a$`$}a$c$}a$e$}a$h$}a$l$}a$n$}a$s$}a$u$}a$w$}a$y$}a$|$}a%O$}a%w$}a%}$}a&P$}a&R$}a&X$}a&t$}a|$}a$a$}a$q$}a~O}ra!rra'Ora~PH_OZ%bO~PJ`O!P(mO~O!m%gO}&la!P&la~O}cO!P(pO~Oo(tOq!fX&^!fX~Oq(vO&^&mX~O&^(xO~OZ`O_VO`VOaVObVOcVOeVOg^Oh^Op)UOv{Ow)TOz!OO|)PO}cO!PvO![!`O!u}O!z|O#fpO#roO#tpO#upO#y!RO#z!QO$W!SO$Y!TO$`!UO$c!VO$e!XO$h!WO$l!YO$n!ZO$s![O$u!]O$w!^O$y!_O$|!aO%O!bO%}TO&PRO&RQO&XUO&_#YO&tdO~PFdO}%dO~O})]OY&zP~P:|OW%jO!P)dO~Os)eO~Ou#OO%}TOq&ia!P&ia!b&iaY&ia#p&ia~O})fO~P:|Oq%wO!P&ha~Og^Oh^O%}0oO&P!wO&RWO~O&b)mO~P!8jOu#OO%}TOq&aX&^&aXY&aX&n&aX!P&aX~O}&aX!r&aX~P!9SOo)oOp)oOqnX&^nX~Oq)pO&^&`X~O&^)rO~Ou#OOw)tO%}TO&PSO&R!qO~OYma&nma&vma~P!:bOW&QXY!aXq!aXu!aX%}!aX~OWUXY!aXq!aXu!aX%}!aX~OW)wO~Ou#OO%}TO&P#SO&R#SO&q)yO~Og^Oh^O%}TO&P!wO&RWO~PFdOq&]OY&pa~Ou#OO%}TO&P#SO&R#SO&q&WO~OY)|O~OY*PO&n&bO~Oq&eOY&wa~Og^Oh^Ov{O|*XO!u}O%}TO&P!wO&RWO&tdO~PFdO!P*YO~OW^iZ#XXu^i!P^i!b^i#]^i#_^i#a^i#b^i#d^i#e^i#f^i#g^i#h^i#i^i#k^i#o^i#r^i&^^i&_^i&n^i&v^iY^i#p^is^iq^i|^i~OW*iO~Os*jO~P9oOz*kO&PSO&R!qO~O!P]iY]i#p]is]iq]i|]i~P9oOq*lOY&eX!P&eX~P9oOY*nO~O#f$SO#g$TO#k$YO#r$WO!P#^i#_#^i#a#^i#b#^i#d#^i#e#^i#o#^i&^#^i&_#^i&n#^iY#^i#p#^is#^iq#^i|#^i~O#h$UO#i$UO~P!AmO#_#|O#d$QO#e$RO#f$SO#g$TO#h$UO#i$UO#k$YO#r$WO&^#zO&_#zO&n#{O!P#^i#b#^i#o#^iY#^i#p#^is#^iq#^i|#^i~O#a#^i~P!CUO#a#}O~P!CUO#_#|O#f$SO#g$TO#h$UO#i$UO#k$YO#r$WO&^#zO&_#zO!P#^i#a#^i#b#^i#d#^i#e#^i#o#^iY#^i#p#^is#^iq#^i|#^i~O&n#^i~P!DtO&n#{O~P!DtO#f$SO#g$TO#k$YO#r$WO!P#^i#a#^i#b#^i#e#^i#o#^iY#^i#p#^is#^iq#^i|#^i~O#_#|O#d$QO#h$UO#i$UO&^#zO&_#zO&n#{O~P!FdO#k$YO#r$WO!P#^i#_#^i#a#^i#b#^i#d#^i#e#^i#f#^i#h#^i#i#^i#o#^i&^#^i&_#^i&n#^iY#^i#p#^is#^iq#^i|#^i~O#g$TO~P!G{O#g#^i~P!G{O#h#^i#i#^i~P!AmO#p*oO~P9oO#_&aX#a&aX#b&aX#d&aX#e&aX#f&aX#g&aX#h&aX#i&aX#k&aX#o&aX#r&aX&_&aX#p&aXs&aX|&aX~P!9SO!P#liY#li#p#lis#liq#li|#li~P9oO|*rO~P$wO}'^O~O}'^O!r'`O~Oo'_O}'^O!r'`O~O%}TO&P#SO&R#SO|&sP!P&sP~PFdO}'eO~Og^Oh^Ov{O|+PO!P*}O!u}O!z|O%}TO&P!wO&RWO&_!hO&tdO~PFdO}'hO~Oo'iO}'hO~Os+RO~P:|Ou+TO%}TO~Ou'mO})fO%}TOW#Zi!P#Zi#_#Zi#a#Zi#b#Zi#d#Zi#e#Zi#f#Zi#g#Zi#h#Zi#i#Zi#k#Zi#o#Zi#r#Zi&^#Zi&_#Zi&n#Zi&v#ZiY#Zi#p#Zis#Ziq#Zi|#Zi~O}'^OW&diu&di!P&di#_&di#a&di#b&di#d&di#e&di#f&di#g&di#h&di#i&di#k&di#o&di#r&di&^&di&_&di&n&di&v&diY&di#p&dis&diq&di|&di~O#}+]O$P+^O$R+^O$S+_O$T+`O~O|+[O~P##nO$Z+aO&PSO&R!qO~OW+bO!P+cO~O$a+dOZ$_i_$_i`$_ia$_ib$_ic$_ie$_ig$_ih$_ip$_iv$_iw$_iz$_i}$_i!P$_i!S$_i!T$_i!U$_i!V$_i!W$_i!X$_i!Y$_i!Z$_i![$_i!]$_i!^$_i!_$_i!u$_i!z$_i#f$_i#r$_i#t$_i#u$_i#y$_i#z$_i$W$_i$Y$_i$`$_i$c$_i$e$_i$h$_i$l$_i$n$_i$s$_i$u$_i$w$_i$y$_i$|$_i%O$_i%w$_i%}$_i&P$_i&R$_i&X$_i&t$_i|$_i$q$_i~Og^Oh^O$h#sO&P!wO&RWO~O!P+hO~P:|O!P+iO~OZ`O_VO`VOaVObVOcVOeVOg^Oh^Op!POv{OwkOz!OO}cO!PvO!SyO!TyO!UyO!VyO!WyO!XyO!YyO!Z+nO![!`O!]yO!^yO!_yO!u}O!z|O#fpO#roO#tpO#upO#y!RO#z!QO$W!SO$Y!TO$`!UO$c!VO$e!XO$h!WO$l!YO$n!ZO$q+oO$s![O$u!]O$w!^O$y!_O$|!aO%O!bO%}TO&PRO&RQO&XUO&tdO~O|+mO~P#)QOW&QXY&QXZ&QXu&QX!P&QX&viX&v&QX~P?XOWUXYUXZUXuUX!PUX&vUX&v&]X~P>lOW#tOu#uO&v#vO~OW&UXY%XXu&UX!P%XX&v&UX~OZ#XX~P#.VOY+uO!P+sO~O%Q(hO%U(iOZ$}i_$}i`$}ia$}ib$}ic$}ie$}ig$}ih$}ip$}iv$}iw$}iz$}i}$}i!P$}i!S$}i!T$}i!U$}i!V$}i!W$}i!X$}i!Y$}i!Z$}i![$}i!]$}i!^$}i!_$}i!u$}i!z$}i#f$}i#r$}i#t$}i#u$}i#y$}i#z$}i$W$}i$Y$}i$`$}i$c$}i$e$}i$h$}i$l$}i$n$}i$s$}i$u$}i$w$}i$y$}i$|$}i%O$}i%w$}i%}$}i&P$}i&R$}i&X$}i&t$}i|$}i$a$}i$q$}i~OZ+xO~O%Q(hO%U(iOZ%Vi_%Vi`%Via%Vib%Vic%Vie%Vig%Vih%Vip%Viv%Viw%Viz%Vi}%Vi!P%Vi!S%Vi!T%Vi!U%Vi!V%Vi!W%Vi!X%Vi!Y%Vi!Z%Vi![%Vi!]%Vi!^%Vi!_%Vi!u%Vi!z%Vi#f%Vi#r%Vi#t%Vi#u%Vi#y%Vi#z%Vi$W%Vi$Y%Vi$`%Vi$c%Vi$e%Vi$h%Vi$l%Vi$n%Vi$s%Vi$u%Vi$w%Vi$y%Vi$|%Vi%O%Vi%w%Vi%}%Vi&P%Vi&R%Vi&X%Vi&t%Vi|%Vi$a%Vi$q%Vi~Ou#OO%}TO}&oa!P&oa!m&oa~O!P,OO~Oo(tOq!fa&^!fa~Oq(vO&^&ma~O!m%gO}&li!P&li~O|,XO~P]OW,ZO~P5xOW&UXu&UX#_&UX#a&UX#b&UX#d&UX#e&UX#f&UX#g&UX#h&UX#i&UX#k&UX#o&UX#r&UX&^&UX&_&UX&n&UX&v&UX~OZ#xO!P&UX~P#8^OW$gOZ#xO&v#vO~Op,]Ow,]O~Oq,^O}&rX!P&rX~O!b,`O#]#wOY&UXZ#XX~P#8^OY&SXq&SX|&SX!P&SX~P9oO})]O|&yP~P:|OY&SXg%[Xh%[X%}%[X&P%[X&R%[Xq&SX|&SX!P&SX~Oq,cOY&zX~OY,eO~O})fO|&kP~P:|Oq&jX!P&jX|&jXY&jX~P9oO&bTa~PC[Oo)oOp)oOqna&^na~Oq)pO&^&`a~OW,mO~Ow,nO~Ou#OO%}TO&P,rO&R,qO~Og^Oh^Ov#pO!u#rO&P!wO&RWO&t#oO~Og^Oh^Ov{O|,wO!u}O%}TO&P!wO&RWO&tdO~PFdOw-SO&PSO&R!qO&_#YO~Oq*lOY&ea!P&ea~O#_ma#ama#bma#dma#ema#fma#gma#hma#ima#kma#oma#rma&_ma#pmasma|ma~PEnO|-WO~P$wOZ#xO}'^Oq!|X|!|X!P!|X~Oq-[O|&sX!P&sX~O|-_O!P-^O~O&_!hO~P5VOg^Oh^Ov{O|-cO!P*}O!u}O!z|O%}TO&P!wO&RWO&_!hO&tdO~PFdOs-dO~P9oOs-dO~P:|O}'^OW&dqu&dq!P&dq#_&dq#a&dq#b&dq#d&dq#e&dq#f&dq#g&dq#h&dq#i&dq#k&dq#o&dq#r&dq&^&dq&_&dq&n&dq&v&dqY&dq#p&dqs&dqq&dq|&dq~O|-hO~P##nO!W-lO$O-lO&PSO&R!qO~O!P-oO~O$Z-pO&PSO&R!qO~O!b%vO#p-rOq!`X!P!`X~O!P-tO~P9oO!P-tO~P:|O!P-wO~P9oO|-yO~P#)QO![$aO#p-zO~O!P-|O~O!b-}O~OY.QOZ$lO_VO`VOaVObVOcVOeVOg^Oh^Op!POwkOz!OO%}TO&P(_O&R(^O&XUO~PFdOY.QO!P.RO~O%Q(hO%U(iOZ%Vq_%Vq`%Vqa%Vqb%Vqc%Vqe%Vqg%Vqh%Vqp%Vqv%Vqw%Vqz%Vq}%Vq!P%Vq!S%Vq!T%Vq!U%Vq!V%Vq!W%Vq!X%Vq!Y%Vq!Z%Vq![%Vq!]%Vq!^%Vq!_%Vq!u%Vq!z%Vq#f%Vq#r%Vq#t%Vq#u%Vq#y%Vq#z%Vq$W%Vq$Y%Vq$`%Vq$c%Vq$e%Vq$h%Vq$l%Vq$n%Vq$s%Vq$u%Vq$w%Vq$y%Vq$|%Vq%O%Vq%w%Vq%}%Vq&P%Vq&R%Vq&X%Vq&t%Vq|%Vq$a%Vq$q%Vq~Ou#OO%}TO}&oi!P&oi!m&oi~O&n&bOq!ga&^!ga~O!m%gO}&lq!P&lq~O|.^O~P]Op.`Ow&vOz&tO&PSO&R!qO&_#YO~O!P.aO~Oq,^O}&ra!P&ra~O})]O~P:|Oq.gO|&yX~O|.iO~Oq,cOY&za~Oq.mO|&kX~O|.oO~Ow.pO~Oq!aXu!aX!P!aX!b!aX%}!aX~OZ&QX~P#N{OZUX~P#N{O!P.qO~OZ.rO~OW^yZ#XXu^y!P^y!b^y#]^y#_^y#a^y#b^y#d^y#e^y#f^y#g^y#h^y#i^y#k^y#o^y#r^y&^^y&_^y&n^y&v^yY^y#p^ys^yq^y|^y~OY%`aq%`a!P%`a~P9oO!P#nyY#ny#p#nys#nyq#ny|#ny~P9oO}'^Oq!|a|!|a!P!|a~OZ#xO}'^Oq!|a|!|a!P!|a~O%}TO&P#SO&R#SOq%jX|%jX!P%jX~PFdOq-[O|&sa!P&sa~O|!}X~P$wO|/PO~Os/QO~P9oOW%jO!P/RO~OW%jO$Q/WO&PSO&R!qO!P&|P~OW%jO$U/XO~O!P/YO~O!b%vO#p/[Oq!`X!P!`X~OY/^O~O!P/_O~P9oO#p/`O~P9oO!b/bO~OY/cOZ$lO_VO`VOaVObVOcVOeVOg^Oh^Op!POwkOz!OO%}TO&P(_O&R(^O&XUO~PFdOW#[Ou&[X%}&[X&P&[X&R&[X'O&[X~O&_#YO~P$)QOu#OO%}TO'O/eO&P%SX&R%SX~O&n&bOq!gi&^!gi~Op/iO&PSO&R!qO~OW*iOZ#xO~O!P/kO~OY&SXq&SX~P9oO})]Oq%nX|%nX~P:|Oq.gO|&ya~O!b/nO~O})fOq%cX|%cX~P:|Oq.mO|&ka~OY/qO~O!P/rO~OZ/sO~O}'^Oq!|i|!|i!P!|i~O|!}a~P$wOW%jO!P/wO~OW%jOq/xO!P&|X~OY/|O~P9oOY0OO~OY%Xq!P%Xq~P9oO'O/eO&P%Sa&R%Sa~OY0TO~O!P0WO~Ou#OO!P0YO!Z0ZO%}TO~OY0[O~Oq/xO!P&|a~O!P0_O~OW%jOq/xO!P&}X~OY0aO~P9oOY0bO~OY%Xy!P%Xy~P9oOu#OO%}TO&P%ua&R%ua'O%ua~OY0cO~O!P0dO~Ou#OO!P0eO!Z0fO%}TO~OW%jOq%ra!P%ra~Oq/xO!P&}a~O!P0jO~Ou#OO!P0jO!Z0kO%}TO~O!P0lO~O!P0nO~O#p&QXY&QXs&QXq&QX|&QX~P&bO#pUXYUXsUXqUX|UX~P(iO`Q_P#g%y&P&Xc&X~",goto:"#+S'OPPPP'P'd*x.OP'dPP.d.h0PPPPPP1nP3ZPP4v7l:[WP!?[P!Ap!BW!E]3ZPPP!F|!Jm!MaPP#!P#!SP#$`#$f#&V#&f#&n#'p#(Y#)T#)^#)a#)oP#)r#*OP#*V#*^P#*aP#*lP#*o#*r#*u#*y#+PstOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y'urOPXY`acopx!Y![!_!a!e!f!h!i!o!x#P#T#Y#[#_#`#e#i#l#n#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$]$_$e$l$m$n$o$p$q%O%S%V%Z%^%_%b%d%g%k%u%v%{%|&R&S&[&]&`&b&d&i'X'^'_'`'e'h'i'm'n'p'{'|(O(T(U(`(l(t(v({(})O)Q)R)])f)o)p*P*T*W*l*o*p*q*z*{+O+T+d+f+h+i+l+o+r+s+x+},W,Y,^,`,u-[-^-a-r-t-}.R.V.g.m/O/[/_/b/d/n/q0R0X0Z0[0f0h0k0r#xhO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0kt!sT!Q!S!T!{!}$k%p+]+^+_+`-k-m/W/X/x0oQ#mdS&Y#`(}Q&l#oU&q#t$g,ZQ&x#vW(b%O+s.R/dU)Y%j'v+bQ)Z%kS)u&S,WU*f&s-R._Q*k&yQ,t*TQ-P*iQ.j,cR.t,uu!sT!Q!S!T!{!}$k%p+]+^+_+`-k-m/W/X/x0oT%l!r)l#{qO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0k#zlO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0kX(c%O+s.R/d$TVO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0k$TkO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0k&O[OPX`ceopx!O!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$f$l$m$n$o$p$q%O%_%b%d%g%k%v%{&]&b&d&i&t'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s,Y,^,`-^-r-t-}.R.g.m/O/[/_/b/d/n0Z0f0k0rQ&Q#[Q)s&RV.T+x.X/e&O[OPX`ceopx!O!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$f$l$m$n$o$p$q%O%_%b%d%g%k%v%{&]&b&d&i&t'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s,Y,^,`-^-r-t-}.R.g.m/O/[/_/b/d/n0Z0f0k0rV.T+x.X/e&O]OPX`ceopx!O!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$f$l$m$n$o$p$q%O%_%b%d%g%k%v%{&]&b&d&i&t'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s,Y,^,`-^-r-t-}.R.g.m/O/[/_/b/d/n0Z0f0k0rV.U+x.X/eS#Z[.TS$f!O&tS&s#t$gQ&y#vQ)V%dQ-R*iR._,Z$kZO`copx!Y![!_!a#Y#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$_$l$m$n$o$p$q%O%d%g%k%v&b&d'_'`'i'm(O(T(U(t)Q)R)])f)o)p*P*l*o+T+d+h+i+l+o+s,Y,^,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0kQ&O#YR,k)p&P_OPX`ceopx!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$l$m$n$o$p$q%O%_%b%d%g%k%v%{&]&b&d&i'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s+x,Y,^,`-^-r-t-}.R.X.g.m/O/[/_/b/d/e/n0Z0f0k0r!o#QY!e!x#R#T#`#n$]%R%S%V%^%u%|&S&[&`'X'|(`(l({(}*T*p*z+f+r+},W,u-a.V/q0R0X0[0h$SkO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0kQ$m!UQ$n!VQ$s!ZQ$|!`R+p(WQ#yiS'q$e*hQ*e&rQ+X'rS,[)T)UQ-O*gQ-Y*vQ.b,]Q.x-QQ.{-ZQ/j.`Q/u.yR0V/iQ'a$bW*[&m'b'c'dQ+W'qU,x*]*^*_Q-X*vQ-f+XS.u,y,zS.z-Y-ZQ/t.vR/v.{]!mP!o'^*q-^/OreOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y[!gP!o'^*q-^/OW#b`#e%b&]Q'}$oW(d%O+s.R/dS*U&i*WS*w'e-[S*|'h+OR.X+xh#VY!W!e#n#s%V'|*T*z+f,u-aQ)j%wQ)v&WR,o)y#xnOcopx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0k^!kP!g!o'^*q-^/Ov#TY!W#`#n#s%w&W&[&`'|(`(})y*T+f+r,u.W/hQ#g`Q$b{Q$c|Q$d}W%S!e%V*z-aS%Y!h(vQ%`!iQ&m#pQ&n#qQ&o#rQ(u%ZS(y%^({Q*R&eS*v'e-[R-Z*wU)h%v)f.mR+V'p[!mP!o'^*q-^/OT*}'h+O^!iP!g!o'^*q-^/OQ'd$bQ'l$dQ*_&mQ*d&oV*{'h*|+OQ%[!hR,S(vQ(s%YR,R(u#znO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0kQ%c!kS(l%S(yR(|%`T#e`%bU#c`#e%bR)z&]Q%f!lQ(n%UQ(r%XQ,U(zR.],VrvOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y[!mP!o'^*q-^/OQ%P!bQ%a!jQ%i!pQ'[$ZQ([$|Q(k%QQ(p%WQ+z(iR.Y+yrtOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y[!mP!o'^*q-^/OS*V&i*WT*}'h+OQ'c$bS*^&m'dR,z*_Q'b$bQ'g$cU*]&m'c'dQ*a&nS,y*^*_R.v,zQ*u'`R+Q'iQ'k$dS*c&o'lR,}*dQ'j$dU*b&o'k'lS,|*c*dR.w,}rtOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y[!mP!o'^*q-^/OT*}'h+OQ'f$cS*`&n'gR,{*aQ*x'eR.|-[R-`*yQ&j#mR*Z&lT*V&i*WQ%e!lS(q%X%fR,P(rR)R%dWk%O+s.R/d#{lO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0k$SiO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0kU&r#t$g,ZS*g&s._Q-Q*iR.y-RT'o$e'p!_#|m#a$r$z$}&w&z&{'O'P'Q'R'S'W'Z)[)g+S+g+j-T-V-e-v-{.e/Z/a/}0Q!]$Pm#a$r$z$}&w&z&{'O'P'R'S'W'Z)[)g+S+g+j-T-V-e-v-{.e/Z/a/}0Q#{nO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0ka)^%k)],`.g/n0Z0f0kQ)`%kR.k,cQ't$hQ)b%oR,f)cT+Y's+ZsvOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,YruOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,YQ$w!]R$y!^R$p!XrvOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,YR(O$oR$q!XR(V$sT+k(U+lX(f%P(g(k+{R+y(hQ.W+xR/h.XQ(j%PQ+w(gQ+|(kR.Z+{R%Q!bQ(e%OV.P+s.R/dQxOQ#lcW$`x#l)Q,YQ)Q%dR,Y)RrXOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Yn!fP!o#e&]&i'^'e'h*W*q+O+x-[-^/Ol!zX!f#P#_#i$[%Z%_%{&R'n'{)O0r!j#PY!e!x#T#`#n$]%S%V%^%u%|&S&[&`'X'|(`(l({(}*T*p*z+f+r+},W,u-a.V/q0R0X0[0hQ#_`Q#ia#d$[op!Y!_!a#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$l%g%k%v&b&d'_'`'i'm(O(T(t)])f)o*P*l*o+T+h+i+o,^,`-r-t-}.g.m/[/_/b/n0Z0f0kS%Z!h(vS%_!i*{S%{#Y)pQ&R#[S'n$e'pY'{$o%O+s.R/dQ)O%bR0r$YQ!uUR%m!uQ)q&OR,l)q^#RY#`$]'X'|(`*px%R!e!x#n%V%^%|&S&[&`({(}*T*z+f+r,W,u-a.V0R[%t#R%R%u+}0X0hS%u#T%SQ+}(lQ0X/qR0h0[Q*m&{R-U*mQ!oPU%h!o*q/OQ*q'^R/O-^!pbOP`cx![!o#e#l$_$m$n$o$p$q%O%b%d&]&i'^'e'h(U)Q)R*W*q+O+d+l+s+x,Y-[-^.R/O/dY!yX!f#_'{)OT#jb!yQ.n,gR/p.nQ%x#VR)k%xQ&c#fS*O&c.[R.[,QQ(w%[R,T(wQ&^#cR){&^Q,_)WR.d,_Q+O'hR-b+OQ-]*xR.}-]Q*W&iR,v*WQ'p$eR+U'pQ&f#gR*S&fQ.h,aR/m.hQ,d)`R.l,dQ+Z'sR-g+ZQ-k+]R/T-kQ/y/US0^/y0`R0`/{Q+l(UR-x+lQ(g%PS+v(g+{R+{(kQ/f.VR0S/fQ+t(eR.S+t`wOcx#l%d)Q)R,YQ$t![Q']$_Q'y$mQ'z$nQ(Q$pQ(R$qS+k(U+lR-q+d'dsOPXY`acopx!Y![!_!a!e!f!h!i!o!x#P#T#Y#[#_#`#e#i#l#n#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$]$_$e$l$m$n$o$p$q%O%S%V%Z%^%_%b%d%g%u%v%{%|&R&S&[&]&`&b&d&i'X'^'_'`'e'h'i'm'n'p'{'|(O(T(U(`(l(t(v({(})O)Q)R)f)o)p*P*T*W*l*o*p*q*z*{+O+T+d+f+h+i+l+o+r+s+x+},W,Y,^,u-[-^-a-r-t-}.R.V.m/O/[/_/b/d/q0R0X0[0h0ra)_%k)],`.g/n0Z0f0kQ!rTQ$h!QQ$i!SQ$j!TQ%o!{Q%q!}Q'x$kQ)c%pQ)l0oS-i+]+_Q-m+^Q-n+`Q/S-kS/U-m/WQ/{/XR0]/x%uSOT`cdopx!Q!S!T!Y![!_!a!{!}#`#l#o#t#u#v#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$g$k$l$m$n$o$p$q%O%d%j%k%p%v&S&d&s&y'm'v(O(T(U(})Q)R)])f*P*T*i*l*o+T+]+^+_+`+b+d+h+i+l+o+s,W,Y,Z,`,c,u-R-k-m-r-t-}.R._.g.m/W/X/[/_/b/d/n/x0Z0f0k0oQ)a%kQ,a)]S.f,`/nQ/l.gQ0g0ZQ0i0fR0m0krmOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,YS#a`$lQ$WoQ$^pQ$r!YQ$z!_Q$}!aQ&w#uQ&z#wY&{#x$o+h-t/_Q&}#|Q'O#}Q'P$OQ'Q$PQ'R$QQ'S$RQ'T$SQ'U$TQ'V$UQ'W$VQ'Z$Z^)[%k)].g/n0Z0f0kU)g%v)f.mQ*Q&dQ+S'mQ+g(OQ+j(TQ,p*PQ-T*lQ-V*oQ-e+TQ-v+iQ-{+oQ.e,`Q/Z-rQ/a-}Q/}/[R0Q/b#xgO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0kW(a%O+s.R/dR)S%drYOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y[!eP!o'^*q-^/OW!xX$[%{'{Q#``Q#ne#S$]op!Y!_!a#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$l%k%v&d'm(O(T)])f*P*l*o+T+h+i+o,`-r-t-}.g.m/[/_/b/n0Z0f0kQ%V!gS%^!i*{d%|#Y%g&b'_'`'i(t)o)p,^Q&S#_Q&[#bS&`#e&]Q'X$YQ'|$oW(`%O+s.R/dQ({%_Q(}%bS*T&i*WQ*p0rS*z'h+OQ+f'}Q+r(dQ,W)OQ,u*UQ-a*|S.V+x.XR0R/e&O_OPX`ceopx!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$l$m$n$o$p$q%O%_%b%d%g%k%v%{&]&b&d&i'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s+x,Y,^,`-^-r-t-}.R.X.g.m/O/[/_/b/d/e/n0Z0f0k0rQ$e!OQ'r$fR*h&t&ZWOPX`ceopx!O!Y![!_!a!g!i!o#Y#[#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$f$l$m$n$o$p$q%O%_%b%d%g%k%v%{&R&]&b&d&i&t'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s+x,Y,^,`-^-r-t-}.R.X.g.m/O/[/_/b/d/e/n0Z0f0k0rR&P#Y$QjOcopx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0kQ#f`Q&O#YQ'Y$YU)W%g'`'iQ)}&bQ*s'_Q,Q(tQ,j)oQ,k)pR.c,^Q)n%}R,i)m$SfO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0kT&p#t,ZQ&|#xQ(P$oQ-u+hQ/]-tR0P/_]!nP!o'^*q-^/O#PaOPX`bcx![!f!o!y#_#e#l$_$m$n$o$p$q%O%b%d&]&i'^'e'h'{(U)O)Q)R*W*q+O+d+l+s+x,Y-[-^.R/O/dU#WY!W'|Q%T!eU&k#n#s+fQ(o%VS,s*T*zT.s,u-aj#UY!W!e#n#s%V%w&W)y*T*z,u-aU&V#`&`(}Q)x&[Q+e'|Q+q(`Q-s+fQ.O+rQ/g.WR0U/hQ)i%vQ,g)fR/o.mR,h)f`!jP!o'^'h*q+O-^/OT%W!g*|R%]!hW%U!e%V*z-aQ(z%^R,V({S#d`%bR&a#eQ)X%gT*t'`'iR*y'e[!lP!o'^*q-^/OR%X!gR#h`R,b)]R)a%kT-j+]-kQ/V-mR/z/WR/z/X",nodeNames:"⚠ LineComment BlockComment Program ModuleDeclaration MarkerAnnotation Identifier ScopedIdentifier . Annotation ) ( AnnotationArgumentList AssignmentExpression FieldAccess IntegerLiteral FloatingPointLiteral BooleanLiteral CharacterLiteral StringLiteral TextBlock null ClassLiteral void PrimitiveType TypeName ScopedTypeName GenericType TypeArguments AnnotatedType Wildcard extends super , ArrayType ] Dimension [ class this ParenthesizedExpression ObjectCreationExpression new ArgumentList } { ClassBody ; FieldDeclaration Modifiers public protected private abstract static final strictfp default synchronized native transient volatile VariableDeclarator Definition AssignOp ArrayInitializer MethodDeclaration TypeParameters TypeParameter TypeBound FormalParameters ReceiverParameter FormalParameter SpreadParameter Throws throws Block ClassDeclaration Superclass SuperInterfaces implements InterfaceTypeList InterfaceDeclaration interface ExtendsInterfaces InterfaceBody ConstantDeclaration EnumDeclaration enum EnumBody EnumConstant EnumBodyDeclarations AnnotationTypeDeclaration AnnotationTypeBody AnnotationTypeElementDeclaration StaticInitializer ConstructorDeclaration ConstructorBody ExplicitConstructorInvocation ArrayAccess MethodInvocation MethodName MethodReference ArrayCreationExpression Dimension AssignOp BinaryExpression CompareOp CompareOp LogicOp LogicOp BitOp BitOp BitOp ArithOp ArithOp ArithOp BitOp InstanceofExpression instanceof LambdaExpression InferredParameters TernaryExpression LogicOp : UpdateExpression UpdateOp UnaryExpression LogicOp BitOp CastExpression ElementValueArrayInitializer ElementValuePair open module ModuleBody ModuleDirective requires transitive exports to opens uses provides with PackageDeclaration package ImportDeclaration import Asterisk ExpressionStatement LabeledStatement Label IfStatement if else WhileStatement while ForStatement for ForSpec LocalVariableDeclaration var EnhancedForStatement ForSpec AssertStatement assert SwitchStatement switch SwitchBlock SwitchLabel case DoStatement do BreakStatement break ContinueStatement continue ReturnStatement return SynchronizedStatement ThrowStatement throw TryStatement try CatchClause catch CatchFormalParameter CatchType FinallyClause finally TryWithResourcesStatement ResourceSpecification Resource ClassContent",maxTerm:276,nodeProps:[["isolate",-4,1,2,18,19,""],["group",-26,4,47,76,77,82,87,92,145,147,150,151,153,156,158,161,163,165,167,172,174,176,178,180,181,183,191,"Statement",-25,6,13,14,15,16,17,18,19,20,21,22,39,40,41,99,100,102,103,106,118,120,122,125,127,130,"Expression",-7,23,24,25,26,27,29,34,"Type"],["openedBy",10,"(",44,"{"],["closedBy",11,")",45,"}"]],propSources:[Z],skippedNodes:[0,1,2],repeatNodeCount:28,tokenData:"#'f_R!_OX%QXY'fYZ)bZ^'f^p%Qpq'fqr*|rs,^st%Qtu4euv5zvw7[wx8rxyAZyzAwz{Be{|CZ|}Dq}!OE_!O!PFx!P!Q! r!Q!R!,h!R![!0`![!]!>p!]!^!@Q!^!_!@n!_!`!BX!`!a!B{!a!b!Di!b!c!EX!c!}!LT!}#O!Mj#O#P%Q#P#Q!NW#Q#R!Nt#R#S4e#S#T%Q#T#o4e#o#p# h#p#q#!U#q#r##n#r#s#$[#s#y%Q#y#z'f#z$f%Q$f$g'f$g#BY4e#BY#BZ#$x#BZ$IS4e$IS$I_#$x$I_$I|4e$I|$JO#$x$JO$JT4e$JT$JU#$x$JU$KV4e$KV$KW#$x$KW&FU4e&FU&FV#$x&FV;'S4e;'S;=`5t<%lO4eS%VV&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QS%qO&YSS%tVOY&ZYZ%lZr&Zrs&ys;'S&Z;'S;=`'`<%lO&ZS&^VOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QS&vP;=`<%l%QS&|UOY&ZYZ%lZr&Zs;'S&Z;'S;=`'`<%lO&ZS'cP;=`<%l&Z_'mk&YS%yZOX%QXY'fYZ)bZ^'f^p%Qpq'fqr%Qrs%qs#y%Q#y#z'f#z$f%Q$f$g'f$g#BY%Q#BY#BZ'f#BZ$IS%Q$IS$I_'f$I_$I|%Q$I|$JO'f$JO$JT%Q$JT$JU'f$JU$KV%Q$KV$KW'f$KW&FU%Q&FU&FV'f&FV;'S%Q;'S;=`&s<%lO%Q_)iY&YS%yZX^*Xpq*X#y#z*X$f$g*X#BY#BZ*X$IS$I_*X$I|$JO*X$JT$JU*X$KV$KW*X&FU&FV*XZ*^Y%yZX^*Xpq*X#y#z*X$f$g*X#BY#BZ*X$IS$I_*X$I|$JO*X$JT$JU*X$KV$KW*X&FU&FV*XV+TX#tP&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`+p!`;'S%Q;'S;=`&s<%lO%QU+wV#_Q&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QT,aXOY,|YZ%lZr,|rs3Ys#O,|#O#P2d#P;'S,|;'S;=`3S<%lO,|T-PXOY-lYZ%lZr-lrs.^s#O-l#O#P.x#P;'S-l;'S;=`2|<%lO-lT-qX&YSOY-lYZ%lZr-lrs.^s#O-l#O#P.x#P;'S-l;'S;=`2|<%lO-lT.cVcPOY&ZYZ%lZr&Zrs&ys;'S&Z;'S;=`'`<%lO&ZT.}V&YSOY-lYZ/dZr-lrs1]s;'S-l;'S;=`2|<%lO-lT/iW&YSOY0RZr0Rrs0ns#O0R#O#P0s#P;'S0R;'S;=`1V<%lO0RP0UWOY0RZr0Rrs0ns#O0R#O#P0s#P;'S0R;'S;=`1V<%lO0RP0sOcPP0vTOY0RYZ0RZ;'S0R;'S;=`1V<%lO0RP1YP;=`<%l0RT1`XOY,|YZ%lZr,|rs1{s#O,|#O#P2d#P;'S,|;'S;=`3S<%lO,|T2QUcPOY&ZYZ%lZr&Zs;'S&Z;'S;=`'`<%lO&ZT2gVOY-lYZ/dZr-lrs1]s;'S-l;'S;=`2|<%lO-lT3PP;=`<%l-lT3VP;=`<%l,|T3_VcPOY&ZYZ%lZr&Zrs3ts;'S&Z;'S;=`'`<%lO&ZT3yR&WSXY4SYZ4`pq4SP4VRXY4SYZ4`pq4SP4eO&XP_4lb&YS&PZOY%QYZ%lZr%Qrs%qst%Qtu4eu!Q%Q!Q![4e![!c%Q!c!}4e!}#R%Q#R#S4e#S#T%Q#T#o4e#o$g%Q$g;'S4e;'S;=`5t<%lO4e_5wP;=`<%l4eU6RX#hQ&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QU6uV#]Q&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QV7cZ&nR&YSOY%QYZ%lZr%Qrs%qsv%Qvw8Uw!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QU8]V#aQ&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QT8wZ&YSOY9jYZ%lZr9jrs:xsw9jwx%Qx#O9j#O#PhYZ%lZr>hrs?dsw>hwx;hx#O>h#O#P&Z#P;'S>h;'S;=`@}<%lO>hT>kZOYhYZ%lZr>hrs@Ysw>hwx;hx#O>h#O#P&Z#P;'S>h;'S;=`@}<%lO>hP@]VOY@YZw@Ywx@rx#O@Y#P;'S@Y;'S;=`@w<%lO@YP@wObPP@zP;=`<%l@YTAQP;=`<%l>hTAWP;=`<%l9j_AbVZZ&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QVBOVYR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QVBnX$ZP&YS#gQOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QVCbZ#fR&YSOY%QYZ%lZr%Qrs%qs{%Q{|DT|!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QVD[V#rR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QVDxVqR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QVEf[#fR&YSOY%QYZ%lZr%Qrs%qs}%Q}!ODT!O!_%Q!_!`6n!`!aF[!a;'S%Q;'S;=`&s<%lO%QVFcV&xR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_GPZWY&YSOY%QYZ%lZr%Qrs%qs!O%Q!O!PGr!P!Q%Q!Q![IQ![;'S%Q;'S;=`&s<%lO%QVGwX&YSOY%QYZ%lZr%Qrs%qs!O%Q!O!PHd!P;'S%Q;'S;=`&s<%lO%QVHkV&qR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QTIXc&YS`POY%QYZ%lZr%Qrs%qs!Q%Q!Q![IQ![!f%Q!f!gJd!g!hKQ!h!iJd!i#R%Q#R#SNz#S#W%Q#W#XJd#X#YKQ#Y#ZJd#Z;'S%Q;'S;=`&s<%lO%QTJkV&YS`POY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QTKV]&YSOY%QYZ%lZr%Qrs%qs{%Q{|LO|}%Q}!OLO!O!Q%Q!Q![Lp![;'S%Q;'S;=`&s<%lO%QTLTX&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![Lp![;'S%Q;'S;=`&s<%lO%QTLwc&YS`POY%QYZ%lZr%Qrs%qs!Q%Q!Q![Lp![!f%Q!f!gJd!g!h%Q!h!iJd!i#R%Q#R#SNS#S#W%Q#W#XJd#X#Y%Q#Y#ZJd#Z;'S%Q;'S;=`&s<%lO%QTNXZ&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![Lp![#R%Q#R#SNS#S;'S%Q;'S;=`&s<%lO%QT! PZ&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![IQ![#R%Q#R#SNz#S;'S%Q;'S;=`&s<%lO%Q_! y]&YS#gQOY%QYZ%lZr%Qrs%qsz%Qz{!!r{!P%Q!P!Q!)e!Q!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%Q_!!wX&YSOY!!rYZ!#dZr!!rrs!%Psz!!rz{!&_{;'S!!r;'S;=`!'s<%lO!!r_!#iT&YSOz!#xz{!$[{;'S!#x;'S;=`!$y<%lO!#xZ!#{TOz!#xz{!$[{;'S!#x;'S;=`!$y<%lO!#xZ!$_VOz!#xz{!$[{!P!#x!P!Q!$t!Q;'S!#x;'S;=`!$y<%lO!#xZ!$yOQZZ!$|P;=`<%l!#x_!%SXOY!%oYZ!#dZr!%ors!'ysz!%oz{!(i{;'S!%o;'S;=`!)_<%lO!%o_!%rXOY!!rYZ!#dZr!!rrs!%Psz!!rz{!&_{;'S!!r;'S;=`!'s<%lO!!r_!&dZ&YSOY!!rYZ!#dZr!!rrs!%Psz!!rz{!&_{!P!!r!P!Q!'V!Q;'S!!r;'S;=`!'s<%lO!!r_!'^V&YSQZOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_!'vP;=`<%l!!r_!'|XOY!%oYZ!#dZr!%ors!#xsz!%oz{!(i{;'S!%o;'S;=`!)_<%lO!%o_!(lZOY!!rYZ!#dZr!!rrs!%Psz!!rz{!&_{!P!!r!P!Q!'V!Q;'S!!r;'S;=`!'s<%lO!!r_!)bP;=`<%l!%o_!)lV&YSPZOY!)eYZ%lZr!)ers!*Rs;'S!)e;'S;=`!+X<%lO!)e_!*WVPZOY!*mYZ%lZr!*mrs!+_s;'S!*m;'S;=`!,b<%lO!*m_!*rVPZOY!)eYZ%lZr!)ers!*Rs;'S!)e;'S;=`!+X<%lO!)e_!+[P;=`<%l!)e_!+dVPZOY!*mYZ%lZr!*mrs!+ys;'S!*m;'S;=`!,b<%lO!*mZ!,OSPZOY!+yZ;'S!+y;'S;=`!,[<%lO!+yZ!,_P;=`<%l!+y_!,eP;=`<%l!*mT!,ou&YS_POY%QYZ%lZr%Qrs%qs!O%Q!O!P!/S!P!Q%Q!Q![!0`![!d%Q!d!e!3j!e!f%Q!f!gJd!g!hKQ!h!iJd!i!n%Q!n!o!2U!o!q%Q!q!r!5h!r!z%Q!z!{!7`!{#R%Q#R#S!2r#S#U%Q#U#V!3j#V#W%Q#W#XJd#X#YKQ#Y#ZJd#Z#`%Q#`#a!2U#a#c%Q#c#d!5h#d#l%Q#l#m!7`#m;'S%Q;'S;=`&s<%lO%QT!/Za&YS`POY%QYZ%lZr%Qrs%qs!Q%Q!Q![IQ![!f%Q!f!gJd!g!hKQ!h!iJd!i#W%Q#W#XJd#X#YKQ#Y#ZJd#Z;'S%Q;'S;=`&s<%lO%QT!0gi&YS_POY%QYZ%lZr%Qrs%qs!O%Q!O!P!/S!P!Q%Q!Q![!0`![!f%Q!f!gJd!g!hKQ!h!iJd!i!n%Q!n!o!2U!o#R%Q#R#S!2r#S#W%Q#W#XJd#X#YKQ#Y#ZJd#Z#`%Q#`#a!2U#a;'S%Q;'S;=`&s<%lO%QT!2]V&YS_POY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QT!2wZ&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![!0`![#R%Q#R#S!2r#S;'S%Q;'S;=`&s<%lO%QT!3oY&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q!R!4_!R!S!4_!S;'S%Q;'S;=`&s<%lO%QT!4f`&YS_POY%QYZ%lZr%Qrs%qs!Q%Q!Q!R!4_!R!S!4_!S!n%Q!n!o!2U!o#R%Q#R#S!3j#S#`%Q#`#a!2U#a;'S%Q;'S;=`&s<%lO%QT!5mX&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q!Y!6Y!Y;'S%Q;'S;=`&s<%lO%QT!6a_&YS_POY%QYZ%lZr%Qrs%qs!Q%Q!Q!Y!6Y!Y!n%Q!n!o!2U!o#R%Q#R#S!5h#S#`%Q#`#a!2U#a;'S%Q;'S;=`&s<%lO%QT!7e_&YSOY%QYZ%lZr%Qrs%qs!O%Q!O!P!8d!P!Q%Q!Q![!:r![!c%Q!c!i!:r!i#T%Q#T#Z!:r#Z;'S%Q;'S;=`&s<%lO%QT!8i]&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![!9b![!c%Q!c!i!9b!i#T%Q#T#Z!9b#Z;'S%Q;'S;=`&s<%lO%QT!9gc&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![!9b![!c%Q!c!i!9b!i!r%Q!r!sKQ!s#R%Q#R#S!8d#S#T%Q#T#Z!9b#Z#d%Q#d#eKQ#e;'S%Q;'S;=`&s<%lO%QT!:yi&YS_POY%QYZ%lZr%Qrs%qs!O%Q!O!P!wX#pR&YSOY%QYZ%lZr%Qrs%qs![%Q![!]!?d!];'S%Q;'S;=`&s<%lO%QV!?kV&vR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QV!@XV!PR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_!@uY&_Z&YSOY%QYZ%lZr%Qrs%qs!^%Q!^!_!Ae!_!`+p!`;'S%Q;'S;=`&s<%lO%QU!AlX#iQ&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QV!B`X!bR&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`+p!`;'S%Q;'S;=`&s<%lO%QV!CSY&^R&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`+p!`!a!Cr!a;'S%Q;'S;=`&s<%lO%QU!CyY#iQ&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`!a!Ae!a;'S%Q;'S;=`&s<%lO%Q_!DrV&bX#oQ&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_!E`X%}Z&YSOY%QYZ%lZr%Qrs%qs#]%Q#]#^!E{#^;'S%Q;'S;=`&s<%lO%QV!FQX&YSOY%QYZ%lZr%Qrs%qs#b%Q#b#c!Fm#c;'S%Q;'S;=`&s<%lO%QV!FrX&YSOY%QYZ%lZr%Qrs%qs#h%Q#h#i!G_#i;'S%Q;'S;=`&s<%lO%QV!GdX&YSOY%QYZ%lZr%Qrs%qs#X%Q#X#Y!HP#Y;'S%Q;'S;=`&s<%lO%QV!HUX&YSOY%QYZ%lZr%Qrs%qs#f%Q#f#g!Hq#g;'S%Q;'S;=`&s<%lO%QV!HvX&YSOY%QYZ%lZr%Qrs%qs#Y%Q#Y#Z!Ic#Z;'S%Q;'S;=`&s<%lO%QV!IhX&YSOY%QYZ%lZr%Qrs%qs#T%Q#T#U!JT#U;'S%Q;'S;=`&s<%lO%QV!JYX&YSOY%QYZ%lZr%Qrs%qs#V%Q#V#W!Ju#W;'S%Q;'S;=`&s<%lO%QV!JzX&YSOY%QYZ%lZr%Qrs%qs#X%Q#X#Y!Kg#Y;'S%Q;'S;=`&s<%lO%QV!KnV&tR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_!L[b&RZ&YSOY%QYZ%lZr%Qrs%qst%Qtu!LTu!Q%Q!Q![!LT![!c%Q!c!}!LT!}#R%Q#R#S!LT#S#T%Q#T#o!LT#o$g%Q$g;'S!LT;'S;=`!Md<%lO!LT_!MgP;=`<%l!LT_!MqVuZ&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QV!N_VsR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QU!N{X#eQ&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QV# oV}R&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_#!_Z'OX#dQ&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`#p%Q#p#q##Q#q;'S%Q;'S;=`&s<%lO%QU##XV#bQ&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QV##uV|R&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QT#$cV#uP&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_#%Ru&YS%yZ&PZOX%QXY'fYZ)bZ^'f^p%Qpq'fqr%Qrs%qst%Qtu4eu!Q%Q!Q![4e![!c%Q!c!}4e!}#R%Q#R#S4e#S#T%Q#T#o4e#o#y%Q#y#z'f#z$f%Q$f$g'f$g#BY4e#BY#BZ#$x#BZ$IS4e$IS$I_#$x$I_$I|4e$I|$JO#$x$JO$JT4e$JT$JU#$x$JU$KV4e$KV$KW#$x$KW&FU4e&FU&FV#$x&FV;'S4e;'S;=`5t<%lO4e",tokenizers:[0,1,2,3],topRules:{Program:[0,3],ClassContent:[1,194]},dynamicPrecedences:{27:1,232:-1,243:-1},specialized:[{term:231,get:Q=>n[Q]||-1}],tokenPrec:7144}),_=X.define({name:"java",parser:d.configure({props:[l.add({IfStatement:$({except:/^\s*({|else\b)/}),TryStatement:$({except:/^\s*({|catch|finally)\b/}),LabeledStatement:Y,SwitchBlock:Q=>{let P=Q.textAfter,i=/^\s*\}/.test(P),a=/^\s*(case|default)\b/.test(P);return Q.baseIndent+(i?0:a?1:2)*Q.unit},Block:S({closing:"}"}),BlockComment:()=>null,Statement:$({except:/^{/})}),o.add({"Block SwitchBlock ClassBody ElementValueArrayInitializer ModuleBody EnumBody ConstructorBody InterfaceBody ArrayInitializer":t,BlockComment(Q){return{from:Q.from+2,to:Q.to-2}}})]}),languageData:{commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\})$/}});function q(){return new s(_)}export{q as java,_ as javaLanguage}; diff --git a/frontend/dist/assets/index-DLzof2Fz.js b/frontend/dist/assets/index-DLzof2Fz.js new file mode 100644 index 0000000..2d63a93 --- /dev/null +++ b/frontend/dist/assets/index-DLzof2Fz.js @@ -0,0 +1 @@ +import{N as x,D as E,aS as f,bd as v,f as r,aT as T,y as g,cf as b,P as k}from"./index-BKKvzUDD.js";function y(p,{disabled:o,beforeFocus:a,afterFocus:c,beforeBlur:u,afterBlur:e}={}){const{emit:d}=x(),n=T(),i=g(!1),h=s=>{const t=v(a)?a(s):!1;r(o)||i.value||t||(i.value=!0,d("focus",s),c==null||c())},C=s=>{var l;const t=v(u)?u(s):!1;r(o)||s.relatedTarget&&((l=n.value)!=null&&l.contains(s.relatedTarget))||t||(i.value=!1,d("blur",s),e==null||e())},m=s=>{var t,l;r(o)||b(s.target)||(t=n.value)!=null&&t.contains(document.activeElement)&&n.value!==document.activeElement||(l=p.value)==null||l.focus()};return E([n,()=>r(o)],([s,t])=>{s&&(t?s.removeAttribute("tabindex"):s.setAttribute("tabindex","-1"))}),f(n,"focus",h,!0),f(n,"blur",C,!0),f(n,"click",m,!0),{isFocused:i,wrapperRef:n,handleFocus:h,handleBlur:C}}function A({afterComposition:p,emit:o}){const a=g(!1),c=n=>{o==null||o("compositionstart",n),a.value=!0},u=n=>{o==null||o("compositionupdate",n),a.value=!0},e=n=>{o==null||o("compositionend",n),a.value&&(a.value=!1,k(()=>p(n)))};return{isComposing:a,handleComposition:n=>{n.type==="compositionend"?e(n):u(n)},handleCompositionStart:c,handleCompositionUpdate:u,handleCompositionEnd:e}}export{A as a,y as u}; diff --git a/frontend/dist/assets/index-DO-kEPEU.js b/frontend/dist/assets/index-DO-kEPEU.js new file mode 100644 index 0000000..62df99e --- /dev/null +++ b/frontend/dist/assets/index-DO-kEPEU.js @@ -0,0 +1 @@ +import{e as W,E as i,C as B,s as U,t as n,a as b,q as E,L as C,i as u,k as v,f as M,l as N}from"./index--cDK8lVp.js";import"./index-BKKvzUDD.js";const c=63,D=64,j=1,A=2,y=3,H=4,Z=5,F=6,I=7,z=65,K=66,J=8,OO=9,eO=10,aO=11,rO=12,V=13,tO=19,nO=20,oO=29,PO=33,QO=34,sO=47,lO=0,T=1,g=2,d=3,m=4;class s{constructor(e,a,r){this.parent=e,this.depth=a,this.type=r,this.hash=(e?e.hash+e.hash<<8:0)+a+(a<<4)+r}}s.top=new s(null,-1,lO);function X(O,e){for(let a=0,r=e-O.pos-1;;r--,a++){let o=O.peek(r);if(P(o)||o==-1)return a}}function x(O){return O==32||O==9}function P(O){return O==10||O==13}function _(O){return x(O)||P(O)}function l(O){return O<0||_(O)}const cO=new B({start:s.top,reduce(O,e){return O.type==d&&(e==nO||e==QO)?O.parent:O},shift(O,e,a,r){if(e==y)return new s(O,X(r,r.pos),T);if(e==z||e==Z)return new s(O,X(r,r.pos),g);if(e==c)return O.parent;if(e==tO||e==PO)return new s(O,0,d);if(e==V&&O.type==m)return O.parent;if(e==sO){let o=/[1-9]/.exec(r.read(r.pos,a.pos));if(o)return new s(O,O.depth+ +o[0],m)}return O},hash(O){return O.hash}});function f(O,e,a=0){return O.peek(a)==e&&O.peek(a+1)==e&&O.peek(a+2)==e&&l(O.peek(a+3))}const fO=new i((O,e)=>{if(O.next==-1&&e.canShift(D))return O.acceptToken(D);let a=O.peek(-1);if((P(a)||a<0)&&e.context.type!=d){if(f(O,45))if(e.canShift(c))O.acceptToken(c);else return O.acceptToken(j,3);if(f(O,46))if(e.canShift(c))O.acceptToken(c);else return O.acceptToken(A,3);let r=0;for(;O.next==32;)r++,O.advance();(r{if(e.context.type==d){O.next==63&&(O.advance(),l(O.next)&&O.acceptToken(I));return}if(O.next==45)O.advance(),l(O.next)&&O.acceptToken(e.context.type==T&&e.context.depth==X(O,O.pos-1)?H:y);else if(O.next==63)O.advance(),l(O.next)&&O.acceptToken(e.context.type==g&&e.context.depth==X(O,O.pos-1)?F:Z);else{let a=O.pos;for(;;)if(x(O.next)){if(O.pos==a)return;O.advance()}else if(O.next==33)G(O);else if(O.next==38)$(O);else if(O.next==42){$(O);break}else if(O.next==39||O.next==34){if(p(O,!0))break;return}else if(O.next==91||O.next==123){if(!RO(O))return;break}else{w(O,!0,!1,0);break}for(;x(O.next);)O.advance();if(O.next==58){if(O.pos==a&&e.canShift(oO))return;let r=O.peek(1);l(r)&&O.acceptTokenTo(e.context.type==g&&e.context.depth==X(O,a)?K:z,a)}}},{contextual:!0});function dO(O){return O>32&&O<127&&O!=34&&O!=37&&O!=44&&O!=60&&O!=62&&O!=92&&O!=94&&O!=96&&O!=123&&O!=124&&O!=125}function q(O){return O>=48&&O<=57||O>=97&&O<=102||O>=65&&O<=70}function Y(O,e){return O.next==37?(O.advance(),q(O.next)&&O.advance(),q(O.next)&&O.advance(),!0):dO(O.next)||e&&O.next==44?(O.advance(),!0):!1}function G(O){if(O.advance(),O.next==60){for(O.advance();;)if(!Y(O,!0)){O.next==62&&O.advance();break}}else for(;Y(O,!1););}function $(O){for(O.advance();!l(O.next)&&S(O.next)!="f";)O.advance()}function p(O,e){let a=O.next,r=!1,o=O.pos;for(O.advance();;){let t=O.next;if(t<0)break;if(O.advance(),t==a)if(t==39)if(O.next==39)O.advance();else break;else break;else if(t==92&&a==34)O.next>=0&&O.advance();else if(P(t)){if(e)return!1;r=!0}else if(e&&O.pos>=o+1024)return!1}return!r}function RO(O){for(let e=[],a=O.pos+1024;;)if(O.next==91||O.next==123)e.push(O.next),O.advance();else if(O.next==39||O.next==34){if(!p(O,!0))return!1}else if(O.next==93||O.next==125){if(e[e.length-1]!=O.next-2)return!1;if(e.pop(),O.advance(),!e.length)return!0}else{if(O.next<0||O.pos>a||P(O.next))return!1;O.advance()}}const SO="iiisiiissisfissssssssssssisssiiissssssssssssssssssssssssssfsfssissssssssssssssssssssssssssfif";function S(O){return O<33?"u":O>125?"s":SO[O-33]}function k(O,e){let a=S(O);return a!="u"&&!(e&&a=="f")}function w(O,e,a,r){if(S(O.next)=="s"||(O.next==63||O.next==58||O.next==45)&&k(O.peek(1),a))O.advance();else return!1;let o=O.pos;for(;;){let t=O.next,Q=0,R=r+1;for(;_(t);){if(P(t)){if(e)return!1;R=0}else R++;t=O.peek(++Q)}if(!(t>=0&&(t==58?k(O.peek(Q+1),a):t==35?O.peek(Q-1)!=32:k(t,a)))||!a&&R<=r||R==0&&!a&&(f(O,45,Q)||f(O,46,Q)))break;if(e&&S(t)=="f")return!1;for(let h=Q;h>=0;h--)O.advance();if(e&&O.pos>o+1024)return!1}return!0}const iO=new i((O,e)=>{if(O.next==33)G(O),O.acceptToken(rO);else if(O.next==38||O.next==42){let a=O.next==38?eO:aO;$(O),O.acceptToken(a)}else O.next==39||O.next==34?(p(O,!1),O.acceptToken(OO)):w(O,!1,e.context.type==d,e.context.depth)&&O.acceptToken(J)}),kO=new i((O,e)=>{let a=e.context.type==m?e.context.depth:-1,r=O.pos;O:for(;;){let o=0,t=O.next;for(;t==32;)t=O.peek(++o);if(!o&&(f(O,45,o)||f(O,46,o))||!P(t)&&(a<0&&(a=Math.max(e.context.depth+1,o)),oYAN>Y",stateData:";S~O!fOS!gOS^OS~OP_OQbORSOTUOWROXROYYOZZO[XOcPOqQO!PVO!V[O!cTO~O`cO~P]OVkOWROXROYeOZfO[dOcPOmhOqQO~OboO~P!bOVtOWROXROYeOZfO[dOcPOmrOqQO~OpwO~P#WORSOTUOWROXROYYOZZO[XOcPOqQO!PVO!cTO~OSvP!avP!bvP~P#|OWROXROYeOZfO[dOcPOqQO~OmzO~P%OOm!OOUzP!azP!bzP!dzP~P#|O^!SO!b!QO!f!TO!g!RO~ORSOTUOWROXROcPOqQO!PVO!cTO~OY!UOP!QXQ!QX!V!QX!`!QXS!QX!a!QX!b!QXU!QXm!QX!d!QX~P&aO[!WOP!SXQ!SX!V!SX!`!SXS!SX!a!SX!b!SXU!SXm!SX!d!SX~P&aO^!ZO!W![O!b!YO!f!]O!g!YO~OP!_O!V[OQaX!`aX~OPaXQaX!VaX!`aX~P#|OP!bOQ!cO!V[O~OP_O!V[O~P#|OWROXROY!fOcPOqQObfXmfXofXpfX~OWROXRO[!hOcPOqQObhXmhXohXphX~ObeXmlXoeX~ObkXokX~P%OOm!kO~Om!lObnPonP~P%OOb!pOo!oO~Ob!pO~P!bOm!sOosXpsX~OosXpsX~P%OOm!uOotPptP~P%OOo!xOp!yO~Op!yO~P#WOS!|O!a#OO!b#OO~OUyX!ayX!byX!dyX~P#|Om#QO~OU#SO!a#UO!b#UO!d#RO~Om#WOUzX!azX!bzX!dzX~O]#XO~O!b#XO!g#YO~O^#ZO!b#XO!g#YO~OP!RXQ!RX!V!RX!`!RXS!RX!a!RX!b!RXU!RXm!RX!d!RX~P&aOP!TXQ!TX!V!TX!`!TXS!TX!a!TX!b!TXU!TXm!TX!d!TX~P&aO!b#^O!g#^O~O^#_O!b#^O!f#`O!g#^O~O^#_O!W#aO!b#^O!g#^O~OPaaQaa!Vaa!`aa~P#|OP#cO!V[OQ!XX!`!XX~OP!XXQ!XX!V!XX!`!XX~P#|OP_O!V[OQ!_X!`!_X~P#|OWROXROcPOqQObgXmgXogXpgX~OWROXROcPOqQObiXmiXoiXpiX~Obkaoka~P%OObnXonX~P%OOm#kO~Ob#lOo!oO~Oosapsa~P%OOotXptX~P%OOm#pO~Oo!xOp#qO~OSwP!awP!bwP~P#|OS!|O!a#vO!b#vO~OUya!aya!bya!dya~P#|Om#xO~P%OOm#{OU}P!a}P!b}P!d}P~P#|OU#SO!a$OO!b$OO!d#RO~O]$QO~O!b$QO!g$RO~O!b$SO!g$SO~O^$TO!b$SO!g$SO~O^$TO!b$SO!f$UO!g$SO~OP!XaQ!Xa!V!Xa!`!Xa~P#|Obnaona~P%OOotapta~P%OOo!xO~OU|X!a|X!b|X!d|X~P#|Om$ZO~Om$]OU}X!a}X!b}X!d}X~O]$^O~O!b$_O!g$_O~O^$`O!b$_O!g$_O~OU|a!a|a!b|a!d|a~P#|O!b$cO!g$cO~O",goto:",]!mPPPPPPPPPPPPPPPPP!nPP!v#v#|$`#|$c$f$j$nP%VPPP!v%Y%^%a%{&O%a&R&U&X&_&b%aP&e&{&e'O'RPP']'a'g'm's'y(XPPPPPPPP(_)e*X+c,VUaObcR#e!c!{ROPQSTUXY_bcdehknrtvz!O!U!W!_!b!c!f!h!k!l!s!u!|#Q#R#S#W#c#k#p#x#{$Z$]QmPR!qnqfPQThknrtv!k!l!s!u#R#k#pR!gdR!ieTlPnTjPnSiPnSqQvQ{TQ!mkQ!trQ!vtR#y#RR!nkTsQvR!wt!RWOSUXY_bcz!O!U!W!_!b!c!|#Q#S#W#c#x#{$Z$]RySR#t!|R|TR|UQ!PUR#|#SR#z#RR#z#SyZOSU_bcz!O!_!b!c!|#Q#S#W#c#x#{$Z$]R!VXR!XYa]O^abc!a!c!eT!da!eQnPR!rnQvQR!{vQ!}yR#u!}Q#T|R#}#TW^Obc!cS!^^!aT!aa!eQ!eaR#f!eW`Obc!cQxSS}U#SQ!`_Q#PzQ#V!OQ#b!_Q#d!bQ#s!|Q#w#QQ$P#WQ$V#cQ$Y#xQ$[#{Q$a$ZR$b$]xZOSU_bcz!O!_!b!c!|#Q#S#W#c#x#{$Z$]Q!VXQ!XYQ#[!UR#]!W!QWOSUXY_bcz!O!U!W!_!b!c!|#Q#S#W#c#x#{$Z$]pfPQThknrtv!k!l!s!u#R#k#pQ!gdQ!ieQ#g!fR#h!hSgPn^pQTkrtv#RQ!jhQ#i!kQ#j!lQ#n!sQ#o!uQ$W#kR$X#pQuQR!zv",nodeNames:"⚠ DirectiveEnd DocEnd - - ? ? ? Literal QuotedLiteral Anchor Alias Tag BlockLiteralContent Comment Stream BOM Document ] [ FlowSequence Item Tagged Anchored Anchored Tagged FlowMapping Pair Key : Pair , } { FlowMapping Pair Pair BlockSequence Item Item BlockMapping Pair Pair Key Pair Pair BlockLiteral BlockLiteralHeader Tagged Anchored Anchored Tagged Directive DirectiveName DirectiveContent Document",maxTerm:74,context:cO,nodeProps:[["isolate",-3,8,9,14,""],["openedBy",18,"[",32,"{"],["closedBy",19,"]",33,"}"]],propSources:[bO],skippedNodes:[0],repeatNodeCount:6,tokenData:"-Y~RnOX#PXY$QYZ$]Z]#P]^$]^p#Ppq$Qqs#Pst$btu#Puv$yv|#P|}&e}![#P![!]'O!]!`#P!`!a'i!a!}#P!}#O*g#O#P#P#P#Q+Q#Q#o#P#o#p+k#p#q'i#q#r,U#r;'S#P;'S;=`#z<%l?HT#P?HT?HU,o?HUO#PQ#UU!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PQ#kTOY#PZs#Pt;'S#P;'S;=`#z<%lO#PQ#}P;=`<%l#P~$VQ!f~XY$Qpq$Q~$bO!g~~$gS^~OY$bZ;'S$b;'S;=`$s<%lO$b~$vP;=`<%l$bR%OX!WQOX%kXY#PZ]%k]^#P^p%kpq#hq;'S%k;'S;=`&_<%lO%kR%rX!WQ!VPOX%kXY#PZ]%k]^#P^p%kpq#hq;'S%k;'S;=`&_<%lO%kR&bP;=`<%l%kR&lUoP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR'VUmP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR'p[!PP!WQOY#PZp#Ppq#hq{#P{|(f|}#P}!O(f!O!R#P!R![)p![;'S#P;'S;=`#z<%lO#PR(mW!PP!WQOY#PZp#Ppq#hq!R#P!R![)V![;'S#P;'S;=`#z<%lO#PR)^U!PP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR)wY!PP!WQOY#PZp#Ppq#hq{#P{|)V|}#P}!O)V!O;'S#P;'S;=`#z<%lO#PR*nUcP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR+XUbP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR+rUqP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR,]UpP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR,vU`P!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#P",tokenizers:[fO,XO,iO,kO,0,1],topRules:{Stream:[0,15]},tokenPrec:0}),mO=W.deserialize({version:14,states:"!vOQOPOOO]OPO'#C_OhOPO'#C^OOOO'#Cc'#CcOpOPO'#CaQOOOOOO{OPOOOOOO'#Cb'#CbO!WOPO'#C`O!`OPO,58xOOOO-E6a-E6aOOOO-E6`-E6`OOOO'#C_'#C_OOOO1G.d1G.d",stateData:"!h~OXPOYROWTP~OWVXXRXYRX~OYVOXSP~OXROYROWTX~OXROYROWTP~OYVOXSX~OX[O~OXY~",goto:"vWPPX[beioRUOQQOR]XRXQTTOUQWQRZWSSOURYS",nodeNames:"⚠ Document Frontmatter DashLine FrontmatterContent Body",maxTerm:10,skippedNodes:[0],repeatNodeCount:2,tokenData:"$z~RXOYnYZ!^Z]n]^!^^}n}!O!i!O;'Sn;'S;=`!c<%lOn~qXOYnYZ!^Z]n]^!^^;'Sn;'S;=`!c<%l~n~On~~!^~!cOY~~!fP;=`<%ln~!lZOYnYZ!^Z]n]^!^^}n}!O#_!O;'Sn;'S;=`!c<%l~n~On~~!^~#bZOYnYZ!^Z]n]^!^^}n}!O$T!O;'Sn;'S;=`!c<%l~n~On~~!^~$WXOYnYZ$sZ]n]^$s^;'Sn;'S;=`!c<%l~n~On~~$s~$zOX~Y~",tokenizers:[0],topRules:{Document:[0,1]},tokenPrec:67}),L=C.define({name:"yaml",parser:gO.configure({props:[u.add({Stream:O=>{for(let e=O.node.resolve(O.pos,-1);e&&e.to>=O.pos;e=e.parent){if(e.name=="BlockLiteralContent"&&e.fromO.pos)return null}}return null},FlowMapping:v({closing:"}"}),FlowSequence:v({closing:"]"})}),M.add({"FlowMapping FlowSequence":N,"Item Pair BlockLiteral":(O,e)=>({from:e.doc.lineAt(O.from).to,to:O.to})})]}),languageData:{commentTokens:{line:"#"},indentOnInput:/^\s*[\]\}]$/}});function hO(){return new b(L)}const xO=C.define({name:"yaml-frontmatter",parser:mO.configure({props:[U({DashLine:n.meta})]})});function vO(O){let{language:e,support:a}=O.content instanceof b?O.content:{language:O.content,support:[]};return new b(xO.configure({wrap:E(r=>r.name=="FrontmatterContent"?{parser:L.parser}:r.name=="Body"?{parser:e.parser}:null)}),a)}export{hO as yaml,vO as yamlFrontmatter,L as yamlLanguage}; diff --git a/frontend/dist/assets/index-DXOn8YGL.js b/frontend/dist/assets/index-DXOn8YGL.js new file mode 100644 index 0000000..f1e0f8a --- /dev/null +++ b/frontend/dist/assets/index-DXOn8YGL.js @@ -0,0 +1,2 @@ +import{L as re,a as ae,i as ne,c as ie,f as se,s as oe,t as i,E as le,b as ce,d as de,e as me,g as ue}from"./index--cDK8lVp.js";import"./index-BKKvzUDD.js";const pe=36,X=1,fe=2,b=3,C=4,_e=5,ge=6,he=7,ye=8,be=9,ve=10,ke=11,xe=12,Oe=13,we=14,Qe=15,Ce=16,Se=17,I=18,qe=19,E=20,W=21,R=22,Pe=23,Te=24;function q(t){return t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57}function ze(t){return t>=48&&t<=57||t>=97&&t<=102||t>=65&&t<=70}function g(t,e,a){for(let r=!1;;){if(t.next<0)return;if(t.next==e&&!r){t.advance();return}r=a&&!r&&t.next==92,t.advance()}}function je(t,e){e:for(;;){if(t.next<0)return;if(t.next==36){t.advance();for(let a=0;a)".charCodeAt(a);for(;;){if(t.next<0)return;if(t.next==r&&t.peek(1)==39){t.advance(2);return}t.advance()}}function P(t,e){for(;!(t.next!=95&&!q(t.next));)e!=null&&(e+=String.fromCharCode(t.next)),t.advance();return e}function Le(t){if(t.next==39||t.next==34||t.next==96){let e=t.next;t.advance(),g(t,e,!1)}else P(t)}function D(t,e){for(;t.next==48||t.next==49;)t.advance();e&&t.next==e&&t.advance()}function Z(t,e){for(;;){if(t.next==46){if(e)break;e=!0}else if(t.next<48||t.next>57)break;t.advance()}if(t.next==69||t.next==101)for(t.advance(),(t.next==43||t.next==45)&&t.advance();t.next>=48&&t.next<=57;)t.advance()}function N(t){for(;!(t.next<0||t.next==10);)t.advance()}function _(t,e){for(let a=0;a!=&|~^/",specialVar:"?",identifierQuotes:'"',caseInsensitiveIdentifiers:!1,words:M(y,h)};function Be(t,e,a,r){let n={};for(let s in T)n[s]=(t.hasOwnProperty(s)?t:T)[s];return e&&(n.words=M(e,a||"",r)),n}function K(t){return new le(e=>{var a;let{next:r}=e;if(e.advance(),_(r,S)){for(;_(e.next,S);)e.advance();e.acceptToken(pe)}else if(r==36&&t.doubleDollarQuotedStrings){let n=P(e,"");e.next==36&&(e.advance(),je(e,n),e.acceptToken(b))}else if(r==39||r==34&&t.doubleQuotedStrings)g(e,r,t.backslashEscapes),e.acceptToken(b);else if(r==35&&t.hashComments||r==47&&e.next==47&&t.slashComments)N(e),e.acceptToken(X);else if(r==45&&e.next==45&&(!t.spaceAfterDashes||e.peek(1)==32))N(e),e.acceptToken(X);else if(r==47&&e.next==42){e.advance();for(let n=1;;){let s=e.next;if(e.next<0)break;if(e.advance(),s==42&&e.next==47){if(n--,e.advance(),!n)break}else s==47&&e.next==42&&(n++,e.advance())}e.acceptToken(fe)}else if((r==101||r==69)&&e.next==39)e.advance(),g(e,39,!0),e.acceptToken(b);else if((r==110||r==78)&&e.next==39&&t.charSetCasts)e.advance(),g(e,39,t.backslashEscapes),e.acceptToken(b);else if(r==95&&t.charSetCasts)for(let n=0;;n++){if(e.next==39&&n>1){e.advance(),g(e,39,t.backslashEscapes),e.acceptToken(b);break}if(!q(e.next))break;e.advance()}else if(t.plsqlQuotingMechanism&&(r==113||r==81)&&e.next==39&&e.peek(1)>0&&!_(e.peek(1),S)){let n=e.peek(1);e.advance(2),Ue(e,n),e.acceptToken(b)}else if(_(r,t.identifierQuotes)){const n=r==91?93:r;g(e,n,!1),e.acceptToken(qe)}else if(r==40)e.acceptToken(he);else if(r==41)e.acceptToken(ye);else if(r==123)e.acceptToken(be);else if(r==125)e.acceptToken(ve);else if(r==91)e.acceptToken(ke);else if(r==93)e.acceptToken(xe);else if(r==59)e.acceptToken(Oe);else if(t.unquotedBitLiterals&&r==48&&e.next==98)e.advance(),D(e),e.acceptToken(R);else if((r==98||r==66)&&(e.next==39||e.next==34)){const n=e.next;e.advance(),t.treatBitsAsBytes?(g(e,n,t.backslashEscapes),e.acceptToken(Pe)):(D(e,n),e.acceptToken(R))}else if(r==48&&(e.next==120||e.next==88)||(r==120||r==88)&&e.next==39){let n=e.next==39;for(e.advance();ze(e.next);)e.advance();n&&e.next==39&&e.advance(),e.acceptToken(C)}else if(r==46&&e.next>=48&&e.next<=57)Z(e,!0),e.acceptToken(C);else if(r==46)e.acceptToken(we);else if(r>=48&&r<=57)Z(e,!1),e.acceptToken(C);else if(_(r,t.operatorChars)){for(;_(e.next,t.operatorChars);)e.advance();e.acceptToken(Qe)}else if(_(r,t.specialVar))e.next==r&&e.advance(),Le(e),e.acceptToken(Se);else if(r==58||r==44)e.acceptToken(Ce);else if(q(r)){let n=P(e,String.fromCharCode(r));e.acceptToken(e.next==46||e.peek(-n.length-1)==46?I:(a=t.words[n.toLowerCase()])!==null&&a!==void 0?a:I)}})}const F=K(T),Xe=me.deserialize({version:14,states:"%vQ]QQOOO#wQRO'#DSO$OQQO'#CwO%eQQO'#CxO%lQQO'#CyO%sQQO'#CzOOQQ'#DS'#DSOOQQ'#C}'#C}O'UQRO'#C{OOQQ'#Cv'#CvOOQQ'#C|'#C|Q]QQOOQOQQOOO'`QQO'#DOO(xQRO,59cO)PQQO,59cO)UQQO'#DSOOQQ,59d,59dO)cQQO,59dOOQQ,59e,59eO)jQQO,59eOOQQ,59f,59fO)qQQO,59fOOQQ-E6{-E6{OOQQ,59b,59bOOQQ-E6z-E6zOOQQ,59j,59jOOQQ-E6|-E6|O+VQRO1G.}O+^QQO,59cOOQQ1G/O1G/OOOQQ1G/P1G/POOQQ1G/Q1G/QP+kQQO'#C}O+rQQO1G.}O)PQQO,59cO,PQQO'#Cw",stateData:",[~OtOSPOSQOS~ORUOSUOTUOUUOVROXSOZTO]XO^QO_UO`UOaPObPOcPOdUOeUOfUOgUOhUO~O^]ORvXSvXTvXUvXVvXXvXZvX]vX_vX`vXavXbvXcvXdvXevXfvXgvXhvX~OsvX~P!jOa_Ob_Oc_O~ORUOSUOTUOUUOVROXSOZTO^tO_UO`UOa`Ob`Oc`OdUOeUOfUOgUOhUO~OWaO~P$ZOYcO~P$ZO[eO~P$ZORUOSUOTUOUUOVROXSOZTO^QO_UO`UOaPObPOcPOdUOeUOfUOgUOhUO~O]hOsoX~P%zOajObjOcjO~O^]ORkaSkaTkaUkaVkaXkaZka]ka_ka`kaakabkackadkaekafkagkahka~Oska~P'kO^]O~OWvXYvX[vX~P!jOWnO~P$ZOYoO~P$ZO[pO~P$ZO^]ORkiSkiTkiUkiVkiXkiZki]ki_ki`kiakibkickidkiekifkigkihki~Oski~P)xOWkaYka[ka~P'kO]hO~P$ZOWkiYki[ki~P)xOasObsOcsO~O",goto:"#hwPPPPPPPPPPPPPPPPPPPPPPPPPPx||||!Y!^!d!xPPP#[TYOZeUORSTWZbdfqT[OZQZORiZSWOZQbRQdSQfTZgWbdfqQ^PWk^lmrQl_Qm`RrseVORSTWZbdfq",nodeNames:"⚠ LineComment BlockComment String Number Bool Null ( ) { } [ ] ; . Operator Punctuation SpecialVar Identifier QuotedIdentifier Keyword Type Bits Bytes Builtin Script Statement CompositeIdentifier Parens Braces Brackets Statement",maxTerm:38,nodeProps:[["isolate",-4,1,2,3,19,""]],skippedNodes:[0,1,2],repeatNodeCount:3,tokenData:"RORO",tokenizers:[0,F],topRules:{Script:[0,25]},tokenPrec:0});function z(t){let e=t.cursor().moveTo(t.from,-1);for(;/Comment/.test(e.name);)e.moveTo(e.from,-1);return e.node}function x(t,e){let a=t.sliceString(e.from,e.to),r=/^([`'"\[])(.*)([`'"\]])$/.exec(a);return r?r[2]:a}function Q(t){return t&&(t.name=="Identifier"||t.name=="QuotedIdentifier")}function Ie(t,e){if(e.name=="CompositeIdentifier"){let a=[];for(let r=e.firstChild;r;r=r.nextSibling)Q(r)&&a.push(x(t,r));return a}return[x(t,e)]}function V(t,e){for(let a=[];;){if(!e||e.name!=".")return a;let r=z(e);if(!Q(r))return a;a.unshift(x(t,r)),e=z(r)}}function Re(t,e){let a=ue(t).resolveInner(e,-1),r=Ze(t.doc,a);return a.name=="Identifier"||a.name=="QuotedIdentifier"||a.name=="Keyword"?{from:a.from,quoted:a.name=="QuotedIdentifier"?t.doc.sliceString(a.from,a.from+1):null,parents:V(t.doc,z(a)),aliases:r}:a.name=="."?{from:e,quoted:null,parents:V(t.doc,a),aliases:r}:{from:e,quoted:null,parents:[],empty:!0,aliases:r}}const De=new Set("where group having order union intersect except all distinct limit offset fetch for".split(" "));function Ze(t,e){let a;for(let n=e;!a;n=n.parent){if(!n)return null;n.name=="Statement"&&(a=n)}let r=null;for(let n=a.firstChild,s=!1,c=null;n;n=n.nextSibling){let l=n.name=="Keyword"?t.sliceString(n.from,n.to).toLowerCase():null,o=null;if(!s)s=l=="from";else if(l=="as"&&c&&Q(n.nextSibling))o=x(t,n.nextSibling);else{if(l&&De.has(l))break;c&&Q(n)&&(o=x(t,n))}o&&(r||(r=Object.create(null)),r[o]=Ie(t,c)),c=/Identifier$/.test(n.name)?n:null}return r}function Ne(t,e,a){return a.map(r=>({...r,label:r.label[0]==t?r.label:t+r.label+e,apply:void 0}))}const Ve=/^\w*$/,$e=/^[`'"\[]?\w*[`'"\]]?$/;function $(t){return t.self&&typeof t.self.label=="string"}class j{constructor(e,a){this.idQuote=e,this.idCaseInsensitive=a,this.list=[],this.children=void 0}child(e){let a=this.children||(this.children=Object.create(null)),r=a[e];return r||(e&&!this.list.some(n=>n.label==e)&&this.list.push(A(e,"type",this.idQuote,this.idCaseInsensitive)),a[e]=new j(this.idQuote,this.idCaseInsensitive))}maybeChild(e){return this.children?this.children[e]:null}addCompletion(e){let a=this.list.findIndex(r=>r.label==e.label);a>-1?this.list[a]=e:this.list.push(e)}addCompletions(e){for(let a of e)this.addCompletion(typeof a=="string"?A(a,"property",this.idQuote,this.idCaseInsensitive):a)}addNamespace(e){Array.isArray(e)?this.addCompletions(e):$(e)?this.addNamespace(e.children):this.addNamespaceObject(e)}addNamespaceObject(e){for(let a of Object.keys(e)){let r=e[a],n=null,s=a.replace(/\\?\./g,l=>l=="."?"\0":l).split("\0"),c=this;$(r)&&(n=r.self,r=r.children);for(let l=0;l{let{parents:v,from:L,quoted:B,empty:ee,aliases:O}=Re(p.state,p.pos);if(ee&&!p.explicit)return null;O&&v.length==1&&(v=O[v[0]]||v);let d=o;for(let f of v){for(;!d.children||!d.children[f];)if(d==o&&u)d=u;else if(d==u&&r)d=d.child(r);else return null;let k=d.maybeChild(f);if(!k)return null;d=k}let w=d.list;if(d==o&&O&&(w=w.concat(Object.keys(O).map(f=>({label:f,type:"constant"})))),B){let f=B[0],k=G(f),te=p.state.sliceDoc(p.pos,p.pos+1)==k;return{from:L,to:te?p.pos+1:void 0,options:Ne(f,k,w),validFor:$e}}else return{from:L,options:w,validFor:Ve}}}function Ee(t){return t==W?"type":t==E?"keyword":"variable"}function We(t,e,a){let r=Object.keys(t).map(n=>a(e?n.toUpperCase():n,Ee(t[n])));return ce(["QuotedIdentifier","String","LineComment","BlockComment","."],de(r))}let Me=Xe.configure({props:[ne.add({Statement:ie()}),se.add({Statement(t,e){return{from:Math.min(t.from+100,e.doc.lineAt(t.from).to),to:t.to}},BlockComment(t){return{from:t.from+2,to:t.to-2}}}),oe({Keyword:i.keyword,Type:i.typeName,Builtin:i.standard(i.name),Bits:i.number,Bytes:i.string,Bool:i.bool,Null:i.null,Number:i.number,String:i.string,Identifier:i.name,QuotedIdentifier:i.special(i.string),SpecialVar:i.special(i.name),LineComment:i.lineComment,BlockComment:i.blockComment,Operator:i.operator,"Semi Punctuation":i.punctuation,"( )":i.paren,"{ }":i.brace,"[ ]":i.squareBracket})]});class m{constructor(e,a,r){this.dialect=e,this.language=a,this.spec=r}get extension(){return this.language.extension}configureLanguage(e,a){return new m(this.dialect,this.language.configure(e,a),this.spec)}static define(e){let a=Be(e,e.keywords,e.types,e.builtin),r=re.define({name:"sql",parser:Me.configure({tokenizers:[{from:F,to:K(a)}]}),languageData:{commentTokens:{line:"--",block:{open:"/*",close:"*/"}},closeBrackets:{brackets:["(","[","{","'",'"',"`"]}}});return new m(a,r,e)}}function Ke(t,e){return{label:t,type:e,boost:-1}}function Fe(t,e=!1,a){return We(t.dialect.words,e,a||Ke)}function Ge(t){return t.schema?Ae(t.schema,t.tables,t.schemas,t.defaultTable,t.defaultSchema,t.dialect||U):()=>null}function Ye(t){return t.schema?(t.dialect||U).language.data.of({autocomplete:Ge(t)}):[]}function tt(t={}){let e=t.dialect||U;return new ae(e.language,[Ye(t),e.language.data.of({autocomplete:Fe(e,t.upperCaseKeywords,t.keywordCompletion)})])}const U=m.define({}),rt=m.define({charSetCasts:!0,doubleDollarQuotedStrings:!0,operatorChars:"+-*/<>=~!@#%^&|`?",specialVar:"",keywords:y+"abort abs absent access according ada admin aggregate alias also always analyse analyze array_agg array_max_cardinality asensitive assert assignment asymmetric atomic attach attribute attributes avg backward base64 begin_frame begin_partition bernoulli bit_length blocked bom cache called cardinality catalog_name ceil ceiling chain char_length character_length character_set_catalog character_set_name character_set_schema characteristics characters checkpoint class class_origin cluster coalesce cobol collation_catalog collation_name collation_schema collect column_name columns command_function command_function_code comment comments committed concurrently condition_number configuration conflict connection_name constant constraint_catalog constraint_name constraint_schema contains content control conversion convert copy corr cost covar_pop covar_samp csv cume_dist current_catalog current_row current_schema cursor_name database datalink datatype datetime_interval_code datetime_interval_precision db debug defaults defined definer degree delimiter delimiters dense_rank depends derived detach detail dictionary disable discard dispatch dlnewcopy dlpreviouscopy dlurlcomplete dlurlcompleteonly dlurlcompletewrite dlurlpath dlurlpathonly dlurlpathwrite dlurlscheme dlurlserver dlvalue document dump dynamic_function dynamic_function_code element elsif empty enable encoding encrypted end_frame end_partition endexec enforced enum errcode error event every exclude excluding exclusive exp explain expression extension extract family file filter final first_value flag floor following force foreach fortran forward frame_row freeze fs functions fusion generated granted greatest groups handler header hex hierarchy hint id ignore ilike immediately immutable implementation implicit import include including increment indent index indexes info inherit inherits inline insensitive instance instantiable instead integrity intersection invoker isnull key_member key_type label lag last_value lead leakproof least length library like_regex link listen ln load location lock locked log logged lower mapping matched materialized max max_cardinality maxvalue member merge message message_length message_octet_length message_text min minvalue mod mode more move multiset mumps name namespace nfc nfd nfkc nfkd nil normalize normalized nothing notice notify notnull nowait nth_value ntile nullable nullif nulls number occurrences_regex octet_length octets off offset oids operator options ordering others over overlay overriding owned owner parallel parameter_mode parameter_name parameter_ordinal_position parameter_specific_catalog parameter_specific_name parameter_specific_schema parser partition pascal passing passthrough password percent percent_rank percentile_cont percentile_disc perform period permission pg_context pg_datatype_name pg_exception_context pg_exception_detail pg_exception_hint placing plans pli policy portion position position_regex power precedes preceding prepared print_strict_params procedural procedures program publication query quote raise range rank reassign recheck recovery refresh regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy reindex rename repeatable replace replica requiring reset respect restart restore result_oid returned_cardinality returned_length returned_octet_length returned_sqlstate returning reverse routine_catalog routine_name routine_schema routines row_count row_number rowtype rule scale schema_name schemas scope scope_catalog scope_name scope_schema security selective self sensitive sequence sequences serializable server server_name setof share show simple skip slice snapshot source specific_name sqlcode sqlerror sqrt stable stacked standalone statement statistics stddev_pop stddev_samp stdin stdout storage strict strip structure style subclass_origin submultiset subscription substring substring_regex succeeds sum symmetric sysid system system_time table_name tables tablesample tablespace temp template ties token top_level_count transaction_active transactions_committed transactions_rolled_back transform transforms translate translate_regex trigger_catalog trigger_name trigger_schema trim trim_array truncate trusted type types uescape unbounded uncommitted unencrypted unlink unlisten unlogged unnamed untyped upper uri use_column use_variable user_defined_type_catalog user_defined_type_code user_defined_type_name user_defined_type_schema vacuum valid validate validator value_of var_pop var_samp varbinary variable_conflict variadic verbose version versioning views volatile warning whitespace width_bucket window within wrapper xmlagg xmlattributes xmlbinary xmlcast xmlcomment xmlconcat xmldeclaration xmldocument xmlelement xmlexists xmlforest xmliterate xmlnamespaces xmlparse xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltext xmlvalidate yes",types:h+"bigint int8 bigserial serial8 varbit bool box bytea cidr circle precision float8 inet int4 json jsonb line lseg macaddr macaddr8 money numeric pg_lsn point polygon float4 int2 smallserial serial2 serial serial4 text timetz timestamptz tsquery tsvector txid_snapshot uuid xml"}),Y="accessible algorithm analyze asensitive authors auto_increment autocommit avg avg_row_length binlog btree cache catalog_name chain change changed checkpoint checksum class_origin client_statistics coalesce code collations columns comment committed completion concurrent consistent contains contributors convert database databases day_hour day_microsecond day_minute day_second delay_key_write delayed delimiter des_key_file dev_pop dev_samp deviance directory disable discard distinctrow div dual dumpfile enable enclosed ends engine engines enum errors escaped even event events every explain extended fast field fields flush force found_rows fulltext grants handler hash high_priority hosts hour_microsecond hour_minute hour_second ignore ignore_server_ids import index index_statistics infile innodb insensitive insert_method install invoker iterate keys kill linear lines list load lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modify mutex mysql_errno no_write_to_binlog offline offset one online optimize optionally outfile pack_keys parser partition partitions password phase plugin plugins prev processlist profile profiles purge query quick range read_write rebuild recover regexp relaylog remove rename reorganize repair repeatable replace require resume rlike row_format rtree schedule schema_name schemas second_microsecond security sensitive separator serializable server share show slave slow snapshot soname spatial sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result ssl starting starts std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace terminated triggers truncate uncommitted uninstall unlock upgrade use use_frm user_resources user_statistics utc_date utc_time utc_timestamp variables views warnings xa xor year_month zerofill",H=h+"bool blob long longblob longtext medium mediumblob mediumint mediumtext tinyblob tinyint tinytext text bigint int1 int2 int3 int4 int8 float4 float8 varbinary varcharacter precision datetime unsigned signed",J="charset clear edit ego help nopager notee nowarning pager print prompt quit rehash source status system tee",at=m.define({operatorChars:"*+-%<>!=&|^",charSetCasts:!0,doubleQuotedStrings:!0,unquotedBitLiterals:!0,hashComments:!0,spaceAfterDashes:!0,specialVar:"@?",identifierQuotes:"`",keywords:y+"group_concat "+Y,types:H,builtin:J}),nt=m.define({operatorChars:"*+-%<>!=&|^",charSetCasts:!0,doubleQuotedStrings:!0,unquotedBitLiterals:!0,hashComments:!0,spaceAfterDashes:!0,specialVar:"@?",identifierQuotes:"`",keywords:y+"always generated groupby_concat hard persistent shutdown soft virtual "+Y,types:H,builtin:J});let He="approx_count_distinct approx_percentile_cont approx_percentile_disc avg checksum_agg count count_big grouping grouping_id max min product stdev stdevp sum var varp ai_generate_embeddings ai_generate_chunks cume_dist first_value lag last_value lead percentile_cont percentile_disc percent_rank left_shift right_shift bit_count get_bit set_bit collationproperty tertiary_weights @@datefirst @@dbts @@langid @@language @@lock_timeout @@max_connections @@max_precision @@nestlevel @@options @@remserver @@servername @@servicename @@spid @@textsize @@version cast convert parse try_cast try_convert try_parse asymkey_id asymkeyproperty certproperty cert_id crypt_gen_random decryptbyasymkey decryptbycert decryptbykey decryptbykeyautoasymkey decryptbykeyautocert decryptbypassphrase encryptbyasymkey encryptbycert encryptbykey encryptbypassphrase hashbytes is_objectsigned key_guid key_id key_name signbyasymkey signbycert symkeyproperty verifysignedbycert verifysignedbyasymkey @@cursor_rows @@fetch_status cursor_status datalength ident_current ident_incr ident_seed identity sql_variant_property @@datefirst current_timestamp current_timezone current_timezone_id date_bucket dateadd datediff datediff_big datefromparts datename datepart datetime2fromparts datetimefromparts datetimeoffsetfromparts datetrunc day eomonth getdate getutcdate isdate month smalldatetimefromparts switchoffset sysdatetime sysdatetimeoffset sysutcdatetime timefromparts todatetimeoffset year edit_distance edit_distance_similarity jaro_winkler_distance jaro_winkler_similarity edge_id_from_parts graph_id_from_edge_id graph_id_from_node_id node_id_from_parts object_id_from_edge_id object_id_from_node_id json isjson json_array json_contains json_modify json_object json_path_exists json_query json_value regexp_like regexp_replace regexp_substr regexp_instr regexp_count regexp_matches regexp_split_to_table abs acos asin atan atn2 ceiling cos cot degrees exp floor log log10 pi power radians rand round sign sin sqrt square tan choose greatest iif least @@procid app_name applock_mode applock_test assemblyproperty col_length col_name columnproperty databasepropertyex db_id db_name file_id file_idex file_name filegroup_id filegroup_name filegroupproperty fileproperty filepropertyex fulltextcatalogproperty fulltextserviceproperty index_col indexkey_property indexproperty next value for object_definition object_id object_name object_schema_name objectproperty objectpropertyex original_db_name parsename schema_id schema_name scope_identity serverproperty stats_date type_id type_name typeproperty dense_rank ntile rank row_number publishingservername certenclosed certprivatekey current_user database_principal_id has_dbaccess has_perms_by_name is_member is_rolemember is_srvrolemember loginproperty original_login permissions pwdencrypt pwdcompare session_user sessionproperty suser_id suser_name suser_sid suser_sname system_user user user_id user_name ascii char charindex concat concat_ws difference format left len lower ltrim nchar patindex quotename replace replicate reverse right rtrim soundex space str string_agg string_escape stuff substring translate trim unicode upper $partition @@error @@identity @@pack_received @@rowcount @@trancount binary_checksum checksum compress connectionproperty context_info current_request_id current_transaction_id decompress error_line error_message error_number error_procedure error_severity error_state formatmessage get_filestream_transaction_context getansinull host_id host_name isnull isnumeric min_active_rowversion newid newsequentialid rowcount_big session_context xact_state @@connections @@cpu_busy @@idle @@io_busy @@pack_sent @@packet_errors @@timeticks @@total_errors @@total_read @@total_write textptr textvalid columns_updated eventdata trigger_nestlevel vector_distance vectorproperty vector_search generate_series opendatasource openjson openquery openrowset openxml predict string_split coalesce nullif apply catch filter force include keep keepfixed modify optimize parameterization parameters partition recompile sequence set";const it=m.define({keywords:y+"add external procedure all fetch public alter file raiserror and fillfactor read any for readtext as foreign reconfigure asc freetext references authorization freetexttable replication backup from restore begin full restrict between function return break goto revert browse grant revoke bulk group right by having rollback cascade holdlock rowcount case identity rowguidcol check identity_insert rule checkpoint identitycol save close if schema clustered in securityaudit coalesce index select collate inner semantickeyphrasetable column insert semanticsimilaritydetailstable commit intersect semanticsimilaritytable compute into session_user constraint is set contains join setuser containstable key shutdown continue kill some convert left statistics create like system_user cross lineno table current load tablesample current_date merge textsize current_time national then current_timestamp nocheck to current_user nonclustered top cursor not tran database null transaction dbcc nullif trigger deallocate of truncate declare off try_convert default offsets tsequal delete on union deny open unique desc opendatasource unpivot disk openquery update distinct openrowset updatetext distributed openxml use double option user drop or values dump order varying else outer view end over waitfor errlvl percent when escape pivot where except plan while exec precision with execute primary within group exists print writetext exit proc noexpand index forceseek forcescan holdlock nolock nowait paglock readcommitted readcommittedlock readpast readuncommitted repeatableread rowlock serializable snapshot spatial_window_max_cells tablock tablockx updlock xlock keepidentity keepdefaults ignore_constraints ignore_triggers",types:h+"smalldatetime datetimeoffset datetime2 datetime bigint smallint smallmoney tinyint money real text nvarchar ntext varbinary image hierarchyid uniqueidentifier sql_variant xml",builtin:He,operatorChars:"*+-%<>!=^&|/",specialVar:"@",identifierQuotes:'"['}),st=m.define({keywords:y+"abort analyze attach autoincrement conflict database detach exclusive fail glob ignore index indexed instead isnull notnull offset plan pragma query raise regexp reindex rename replace temp vacuum virtual",types:h+"bool blob long longblob longtext medium mediumblob mediumint mediumtext tinyblob tinyint tinytext text bigint int2 int8 unsigned signed real",builtin:"auth backup bail changes clone databases dbinfo dump echo eqp explain fullschema headers help import imposter indexes iotrace lint load log mode nullvalue once print prompt quit restore save scanstats separator shell show stats system tables testcase timeout timer trace vfsinfo vfslist vfsname width",operatorChars:"*+-%<>!=&|/~",identifierQuotes:'`"',specialVar:"@:?$"}),ot=m.define({keywords:"add all allow alter and any apply as asc authorize batch begin by clustering columnfamily compact consistency count create custom delete desc distinct drop each_quorum exists filtering from grant if in index insert into key keyspace keyspaces level limit local_one local_quorum modify nan norecursive nosuperuser not of on one order password permission permissions primary quorum rename revoke schema select set storage superuser table three to token truncate ttl two type unlogged update use user users using values where with writetime infinity NaN",types:h+"ascii bigint blob counter frozen inet list map static text timeuuid tuple uuid varint",slashComments:!0}),lt=m.define({keywords:y+"abort accept access add all alter and any arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body by case cast char_base check close cluster clusters colauth column comment commit compress connected constant constraint crash create current currval cursor data_base database dba deallocate debugoff debugon declare default definition delay delete desc digits dispose distinct do drop else elseif elsif enable end entry exception exception_init exchange exclusive exists external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base of off offline on online only option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw rebuild record ref references refresh rename replace resource restrict return returning returns reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work",builtin:"appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define echo editfile embedded feedback flagger flush heading headsep instance linesize lno loboffset logsource longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar repfooter repheader serveroutput shiftinout show showmode spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout timing trimout trimspool ttitle underline verify version wrap",types:h+"ascii bfile bfilename bigserial bit blob dec long number nvarchar nvarchar2 serial smallint string text uid varchar2 xml",operatorChars:"*/+-%<>!=~",doubleQuotedStrings:!0,charSetCasts:!0,plsqlQuotingMechanism:!0});export{ot as Cassandra,it as MSSQL,nt as MariaSQL,at as MySQL,lt as PLSQL,rt as PostgreSQL,m as SQLDialect,st as SQLite,U as StandardSQL,Fe as keywordCompletionSource,Ge as schemaCompletionSource,tt as sql}; diff --git a/frontend/dist/assets/index-DfyOU94W.js b/frontend/dist/assets/index-DfyOU94W.js new file mode 100644 index 0000000..0d9ddfd --- /dev/null +++ b/frontend/dist/assets/index-DfyOU94W.js @@ -0,0 +1 @@ +import{aB as v,C as b,a as m,D as h,bK as C,$ as w,_ as k,bL as M,a0 as g,j as x,aU as c,d as E,s as O,h as d,I as S,b as T,R as i}from"./index-BKKvzUDD.js";import{g as B}from"./scroll-BkzZKETR.js";const Y=(e,t={})=>{v(e)||b("[useLockscreen]","You need to pass a ref param to this function");const s=t.ns||m("popup"),a=x(()=>s.bm("parent","hidden"));let l=0,n=!1,o="0",u=!1;const r=()=>{u||(u=!0,setTimeout(()=>{typeof document>"u"||n&&document&&(document.body.style.width=o,g(document.body,a.value))},200))};h(e,f=>{if(!f){r();return}u=!1,n=!w(document.body,a.value),n&&(o=document.body.style.width,k(document.body,a.value)),l=B(s.namespace.value);const y=document.documentElement.clientHeight0&&(y||p==="scroll")&&n&&(document.body.style.width=`calc(100% - ${l}px)`)}),C(()=>r())},I=e=>{if(!e)return{onClick:c,onMousedown:c,onMouseup:c};let t=!1,s=!1;return{onClick:o=>{t&&s&&e(o),t=s=!1},onMousedown:o=>{t=o.target===o.currentTarget},onMouseup:o=>{s=o.target===o.currentTarget}}},z=T({mask:{type:Boolean,default:!0},customMaskEvent:Boolean,overlayClass:{type:i([String,Array,Object])},zIndex:{type:i([String,Number])}}),H={click:e=>e instanceof MouseEvent},L="overlay";var N=E({name:"ElOverlay",props:z,emits:H,setup(e,{slots:t,emit:s}){const a=m(L),l=r=>{s("click",r)},{onClick:n,onMousedown:o,onMouseup:u}=I(e.customMaskEvent?void 0:l);return()=>e.mask?O("div",{class:[a.b(),e.overlayClass],style:{zIndex:e.zIndex},onClick:n,onMousedown:o,onMouseup:u},[d(t,"default")],14,["onClick","onMouseup","onMousedown"]):S("div",{class:e.overlayClass,style:{zIndex:e.zIndex,position:"fixed",top:"0px",right:"0px",bottom:"0px",left:"0px"}},[d(t,"default")])}});const j=N;export{j as E,Y as a,I as u}; diff --git a/frontend/dist/assets/index-DkIQRIsY.js b/frontend/dist/assets/index-DkIQRIsY.js new file mode 100644 index 0000000..171f699 --- /dev/null +++ b/frontend/dist/assets/index-DkIQRIsY.js @@ -0,0 +1 @@ +import{n as f,o as p,a as x,p as X,q as y,g as h,L as G,s as Z,t as Q,i as S,k as b,f as j,e as V,E as c}from"./index--cDK8lVp.js";import"./index-BKKvzUDD.js";const W=1,k=2,w=3,v=180,R=4,_=181,z=5,E=182,U=6;function D(O){return O>=65&&O<=90||O>=97&&O<=122}const F=new c(O=>{let a=O.pos;for(;;){let{next:r}=O;if(r<0)break;if(r==123){let n=O.peek(1);if(n==123){if(O.pos>a)break;O.acceptToken(W,2);return}else if(n==37){if(O.pos>a)break;let $=2,i=2;for(;;){let e=O.peek($);if(e==32||e==10)++$;else if(e==35)for(++$;;){let t=O.peek($);if(t<0||t==10)break;$++}else if(e==45&&i==2)i=++$;else{let t=e==101&&O.peek($+1)==110&&O.peek($+2)==100;O.acceptToken(t?w:k,i);return}}}}if(O.advance(),r==10)break}O.pos>a&&O.acceptToken(v)});function u(O,a,r){return new c(n=>{let $=n.pos;for(;;){let{next:i}=n;if(i==123&&n.peek(1)==37){let e=2;for(;;e++){let o=n.peek(e);if(o!=32&&o!=10)break}let t="";for(;;e++){let o=n.peek(e);if(!D(o))break;t+=String.fromCharCode(o)}if(t==O){if(n.pos>$)break;n.acceptToken(r,2);break}}else if(i<0)break;if(n.advance(),i==10)break}n.pos>$&&n.acceptToken(a)})}const C=u("endcomment",E,z),Y=u("endraw",_,R),N=new c(O=>{if(O.next==35){for(O.advance();!(O.next==10||O.next<0||(O.next==37||O.next==125)&&O.peek(1)==125);)O.advance();O.acceptToken(U)}}),I={__proto__:null,contains:34,or:38,and:38,true:52,false:52,empty:54,forloop:57,tablerowloop:59,continue:61,in:131,with:197,for:199,as:201,if:237,endif:241,unless:247,endunless:251,elsif:255,else:259,case:265,endcase:269,when:273,endfor:281,tablerow:287,endtablerow:291,break:295,cycle:301,echo:305,render:309,include:313,assign:317,capture:323,endcapture:327,increment:331,decrement:335},L={__proto__:null,if:86,endif:90,elsif:94,else:98,unless:104,endunless:108,case:114,endcase:118,when:122,for:128,endfor:138,tablerow:144,endtablerow:148,break:152,continue:156,cycle:160,comment:166,endcomment:172,raw:178,endraw:184,echo:188,render:192,include:204,assign:208,capture:214,endcapture:218,increment:222,decrement:226,liquid:230},H=V.deserialize({version:14,states:"KtQYOPOOOOOP'#F{'#F{OeOaO'#CdOsQhO'#CfO!bQxO'#DSO#{OPO'#DVO$ZOPO'#D`O$iOPO'#DeO$wOPO'#DlO%VOPO'#DtO%eOSO'#EPO%jOQO'#EVO%oOPO'#EiOOOP'#Ge'#GeOOOP'#G]'#G]OOOP'#Fz'#FzQYOPOOOOOP-E9y-E9yOOQW'#Cg'#CgO&cQ!jO,59QO&jQ!jO'#G^OsQhO'#CtOOQW'#Gb'#GbOOQW'#Gc'#GcOOQW'#Gd'#GdOOQW'#G^'#G^OOOP,59n,59nO)YQhO,59nOsQhO,59rOsQhO,59vO)dQhO,59xOsQhO,59{OsQhO,5:QOsQhO,5:UO!]QhO,5:XO!]QhO,5:aO)iQhO,5:eO)nQhO,5:gO)sQhO,5:iO)xQhO,5:lO)}QhO,5:rOsQhO,5:wOsQhO,5:yOsQhO,5;POsQhO,5;ROsQhO,5;UOsQhO,5;YOsQhO,5;[O+^QhO,5;^O+eOPO'#CdOOOP,59q,59qO#{OPO,59qO+sQxO'#DYOOOP,59z,59zO$ZOPO,59zO+xQxO'#DcOOOP,5:P,5:PO$iOPO,5:PO+}QxO'#DhOOOP,5:W,5:WO$wOPO,5:WO,SQxO'#DrOOOP,5:`,5:`O%VOPO,5:`O,XQxO'#DwOOOS'#GQ'#GQO,^OSO'#ESO,fOSO,5:kOOOQ'#GR'#GRO,kOQO'#EYO,sOQO,5:qOOOP,5;T,5;TO%oOPO,5;TO,xQxO'#ElOOOP-E9x-E9xO,}Q#|O,59SOsQhO,59VOsQhO,59WOsQhO,59WO-SQhO'#C}OOQW'#F|'#F|O-XQhO1G.lOOOP1G.l1G.lOsQhO,59WOsQhO,59[O-rQ!jO,59`O-yQ!jO1G/YO.QQhO1G/YOOOP1G/Y1G/YO.YQ!jO1G/^O.aQ!jO1G/bOOOP1G/d1G/dO.hQ!jO1G/gO.oQ!jO1G/lO.vQ!jO1G/pO/QQhO1G/sO/QQhO1G/{OOOP1G0P1G0POOOP1G0R1G0RO/VQhO1G0TOOOS1G0W1G0WOOOQ1G0^1G0^O/bQ!jO1G0cO/iQ!jO1G0eO/yQ!jO1G0kO0QQ!jO1G0mO0XQ!jO1G0pO0`Q!jO1G0tO0gQ!jO1G0vOOQW'#Gh'#GhOOQW'#Gk'#GkOsQhO'#EuO0nQhO'#EtOOQW'#Gm'#GmOsQhO'#EzO0uQhO'#EyOOQW'#Go'#GoOsQhO'#FOOOQW'#Gp'#GpOOQW'#FQ'#FQOOQW'#Gq'#GqOsQhO'#FTO0|QhO'#FSOOQW'#Gs'#GsOsQhO'#FXO!]QhO'#F[O1TQhO'#FZOOQW'#Gu'#GuO!]QhO'#F`O1[QhO'#F_OOQW'#Gw'#GwOOQW'#Fd'#FdOOQW'#Ff'#FfOOQW'#Gx'#GxO1cQhO'#FgOOQW'#Gy'#GyOsQhO'#FiOOQW'#Gz'#GzOsQhO'#FkOOQW'#G{'#G{OsQhO'#FmOOQW'#G|'#G|OsQhO'#FoOOQW'#G}'#G}OsQhO'#FrO1hQhO'#FqOOQW'#HP'#HPOsQhO'#FvOOQW'#HQ'#HQOsQhO'#FxOOQW'#Gj'#GjOOQW'#GT'#GTO1oQhO1G0xOOOP1G0x1G0xOOOP1G/]1G/]O1vQhO,59tOOOP1G/f1G/fO1{QhO,59}OOOP1G/k1G/kO2QQhO,5:SOOOP1G/r1G/rO2VQhO,5:^OOOP1G/z1G/zO2[QhO,5:cOOOS-E:O-E:OOOOP1G0V1G0VO2aQxO'#ETOOOQ-E:P-E:POOOP1G0]1G0]O2fQxO'#EZOOOP1G0o1G0oO2kQhO,5;WOOQW1G.n1G.nO2pQ!jO1G.qO5aQ!jO1G.rO5hQ!jO1G.rOOQW'#DP'#DPO7vQhO,59iOOQW-E9z-E9zOOOP7+$W7+$WO9pQ!jO1G.rO9wQ!jO1G.vOsQhO1G.zOxQ!jO,5;fOOQW'#Gn'#GnOOQW'#E|'#E|OOQW,5;e,5;eO0uQhO,5;eO@XQ!jO,5;jOAzQ!jO,5;oOOQW'#Gr'#GrOOQW'#FV'#FVOOQW,5;n,5;nO0|QhO,5;nOCZQ!jO,5;sO/QQhO,5;vOOQW'#Gt'#GtOOQW'#F]'#F]OOQW,5;u,5;uO1TQhO,5;uO/QQhO,5;zOOQW'#Gv'#GvOOQW'#Fb'#FbOOQW,5;y,5;yO1[QhO,5;yOEPQhO,5eOOOPAN>eAN>eO!6OQhOAN>mOOOPAN>mAN>mO!6WQhOAN>uOOOPAN>uAN>uOsQhO1G0gOOQW'#Gi'#GiO!]QhO1G0gO!6`Q!jO7+&|O!7rQ!jO7+'QO!9UQhO7+'XOOQW-E:S-E:SO!:xQhO<kQhO<W>h>x?Y?j?z@O@`m^OTUVWX[`!T!W!Z!^!a!j!vdReklmopqyz{|}!O!P!n!o!p!u!v#c#f#i#m#p#|$O$Q$S$U$X$Z$|%T%X%Y%c&q'X'Z'q'yQ#RrQ#SsQ&O#qQ&T#tQ'O%bR(P's!wiReklmopqyz{|}!O!P!n!o!p!u!v#c#f#i#m#p#|$O$Q$S$U$X$Z$|%T%X%Y%c&q'X'Z'q'ym!rck!s!x!y#Y#]$}%_%h&Z&^'_'bR$w!qm]OTUVWX[`!T!W!Z!^!a!jmTOTUVWX[`!T!W!Z!^!a!jQ!STR$`!TmUOTUVWX[`!T!W!Z!^!a!jQ!VUR$b!WmVOTUVWX[`!T!W!Z!^!a!jQ!YVR$d!ZmWOTUVWX[`!T!W!Z!^!a!ja'j&w&x'k'm't'u(Q(Ra'i&w&x'k'm't'u(Q(RQ!]WR$f!^mXOTUVWX[`!T!W!Z!^!a!jQ!`XR$h!amYOTUVWX[`!T!W!Z!^!a!jR!eYR$k!emZOTUVWX[`!T!W!Z!^!a!jR!hZR$n!hS%d#Z%eT'`&['am[OTUVWX[`!T!W!Z!^!a!jQ!i[R$p!jm$[!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#d!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ%p#dR'T%qm#g!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ%u#gR'U%vm#n!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ%{#nR'V%|m#r!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ&R#rR'Y&Sm#u!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ&W#uR'[&Xm$V!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ&b$VR'c&cQ`OQ!TTQ!WUQ!ZVQ!^WQ!aXQ!j[_!l`!T!W!Z!^!a!jSQO`SaQ!Ri!RTUVWX[!T!W!Z!^!a!jQ!scQ!yk^$x!s!y$}%_%h'_'bQ$}!xQ%_#YQ%h#]Q'_&ZR'b&^Q%U#QU&u%U'W'xQ'W%}R'x'fQ'k&wQ'm&xW'z'k'm(Q(RQ(Q'tR(R'uQ%[#VW&z%[']'o(SQ']&YQ'o&|R(S'vQ!dYR$j!dQ!gZR$m!gQ%e#ZR'Q%eQ$^!QQ%q#dQ%v#gQ%|#nQ&S#rQ&X#uQ&c$V_&f$^%q%v%|&S&X&cQ'a&[R'w'am_OTUVWX[`!T!W!Z!^!a!jQcRQ!weQ!xkQ!{lQ!|mQ#OoQ#PpQ#QqQ#YyQ#ZzQ#[{Q#]|Q#^}Q#_!OQ#`!PQ$s!nQ$t!oQ$u!pQ$z!uQ${!vQ%m#cQ%r#fQ%w#iQ%x#mQ%}#pQ&Z#|Q&[$OQ&]$QQ&^$SQ&_$UQ&d$XQ&e$ZQ&r$|Q&t%TQ&w%XQ&x%YQ'P%cQ'f&qQ't'XQ'u'ZQ(O'qR(T'y!viReklmopqyz{|}!O!P!n!o!p!u!v#c#f#i#m#p#|$O$Q$S$U$X$Z$|%T%X%Y%c&q'X'Z'q'ym#x!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ%X#RQ%Y#SQ'X&OR'Z&TX%c#Z%e&['al#q!Q#d#g#n#r#u$V$^%q%v%|&S&X&cX%c#Z%e&['aR's'Pm$]!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#c!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT%o#d%qm#f!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT%t#g%vm#i!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#k!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#m!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT%z#n%|m#p!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT&Q#r&Sm#t!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT&V#u&Xm#w!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#z!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#|!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$O!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$Q!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$S!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$U!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT&a$V&cm$X!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$Z!Q#d#g#n#r#u$V$^%q%v%|&S&X&c",nodeNames:"⚠ {{ {% {% {% {% InlineComment Template Text }} Interpolation VariableName MemberExpression . PropertyName SubscriptExpression BinaryExpression contains CompareOp LogicOp AssignmentExpression AssignOp ) ( RangeExpression .. BooleanLiteral empty forloop tablerowloop continue StringLiteral NumberLiteral Filter | FilterName : , Tag TagName %} IfDirective Tag if EndTag endif Tag elsif Tag else UnlessDirective Tag unless EndTag endunless CaseDirective Tag case EndTag endcase Tag when ForDirective Tag for in Parameter ParameterName EndTag endfor TableDirective Tag tablerow EndTag endtablerow Tag break Tag continue Tag cycle Comment Tag comment CommentText EndTag endcomment RawDirective Tag raw RawText EndTag endraw Tag echo Tag render RenderParameter with for as Tag include Tag assign CaptureDirective Tag capture EndTag endcapture Tag increment Tag decrement Tag liquid IfDirective Tag if EndTag endif UnlessDirective Tag unless EndTag endunless Tag elsif Tag else CaseDirective Tag case EndTag endcase Tag when ForDirective Tag EndTag endfor TableDirective Tag tablerow EndTag endtablerow Tag break Tag Tag cycle Tag echo Tag render Tag include Tag assign CaptureDirective Tag capture EndTag endcapture Tag increment Tag decrement",maxTerm:220,nodeProps:[["closedBy",1,"}}",-4,2,3,4,5,"%}",23,")"],["openedBy",9,"{{",22,"(",40,"{%"],["group",-13,11,12,15,16,20,24,26,27,28,29,30,31,32,"Expression"]],skippedNodes:[0,6],repeatNodeCount:11,tokenData:")e~RmXY!|YZ!|]^!|pq!|qr#_rs#juv$[wx$gxy%Syz%X{|%^|}&x}!O&}!O!P'Z!Q![&g![!]'k!^!_'p!_!`'x!`!a'p!c!}(Q!}#O(y#P#Q)O#R#S(Q#T#o(Q#p#q)T#q#r)Y%W;'S(Q;'S;:j(s<%lO(Q~#RS%O~XY!|YZ!|]^!|pq!|~#bP!_!`#e~#jOb~~#mUOY#jZr#jrs$Ps;'S#j;'S;=`$U<%lO#j~$UOo~~$XP;=`<%l#j~$_P#q#r$b~$gOx~~$jUOY$gZw$gwx$Px;'S$g;'S;=`$|<%lO$g~%PP;=`<%l$g~%XOg~~%^Of~P%aQ!O!P%g!Q![&gP%jP!Q![%mP%rRpP!Q![%m!g!h%{#X#Y%{P&OR{|&X}!O&X!Q![&_P&[P!Q![&_P&dPpP!Q![&_P&lSpP!O!P%g!Q![&g!g!h%{#X#Y%{~&}Ou~~'QRuv$[!O!P%g!Q![&g~'`Q]S!O!P'f!Q![%m~'kOi~~'pOt~~'uPb~!_!`#e~'}Pe~!_!`#e_(ZW^WwQ%RT}!O(Q!Q![(Q!c!}(Q#R#S(Q#T#o(Q%W;'S(Q;'S;:j(s<%lO(Q_(vP;=`<%l(Q~)OO%T~~)TO%S~~)YOr~~)]P#q#r)`~)eOX~",tokenizers:[F,Y,C,N,0,1,2,3],topRules:{Template:[0,7]},dynamicPrecedences:{190:1,191:1,192:1,194:1,195:1,196:1,197:1,199:1,200:1,201:1,202:1,203:1,204:1,205:1,206:1,207:1,208:1,209:1,210:1,211:1,212:1,213:1,214:1,215:1,216:1,217:1,218:1,219:1,220:1},specialized:[{term:187,get:O=>I[O]||-1},{term:39,get:O=>L[O]||-1}],tokenPrec:0});function l(O,a){return O.split(" ").map(r=>({label:r,type:a}))}const P=l("abs append at_least at_most capitalize ceil compact concat date default divided_by downcase escape escape_once first floor join last lstrip map minus modulo newline_to_br plus prepend remove remove_first replace replace_first reverse round rstrip size slice sort sort_natural split strip strip_html strip_newlines sum times truncate truncatewords uniq upcase url_decode url_encode where","function"),m=l("cycle comment endcomment raw endraw echo increment decrement liquid if elsif else endif unless endunless case endcase for endfor tablerow endtablerow break continue assign capture endcapture render include","keyword"),T=l("empty forloop tablerowloop in with as","keyword"),A=l("first index index0 last length rindex","property"),B=l("col col0 col_first col_last first index index0 last length rindex rindex0 row","property");function M(O){var a;let{state:r,pos:n}=O,$=h(r).resolveInner(n,-1).enterUnfinishedNodesBefore(n),i=((a=$.childBefore(n))===null||a===void 0?void 0:a.name)||$.name;if($.name=="FilterName")return{type:"filter",node:$};if(O.explicit&&i=="|")return{type:"filter"};if($.name=="TagName")return{type:"tag",node:$};if(O.explicit&&i=="{%")return{type:"tag"};if($.name=="PropertyName"&&$.parent.name=="MemberExpression")return{type:"property",node:$,target:$.parent};if($.name=="."&&$.parent.name=="MemberExpression")return{type:"property",target:$.parent};if($.name=="MemberExpression"&&i==".")return{type:"property",target:$};if($.name=="VariableName")return{type:"expression",from:$.from};let e=O.matchBefore(/[\w\u00c0-\uffff]+$/);return e?{type:"expression",from:e.from}:O.explicit&&$.name!="CommentText"&&$.name!="StringLiteral"&&$.name!="NumberLiteral"&&$.name!="InlineComment"?{type:"expression"}:null}function K(O,a,r,n){let $=[];for(;;){let i=a.getChild("Expression");if(!i)return[];if(i.name=="VariableName"||i.name=="forloop"||i.name=="tablerowloop"){let e=O.sliceDoc(i.from,i.to);if(e=="forloop")return $.length?[]:A;if(e=="tablerowloop")return $.length?[]:B;$.unshift(e);break}else if(i.name=="MemberExpression"){let e=i.getChild("PropertyName");e&&$.unshift(O.sliceDoc(e.from,e.to)),a=i}else if(i.name=="SubscriptExpression"){let e=i.getChildren("Expression")[1];$.unshift((e==null?void 0:e.name)=="StringLiteral"?O.sliceDoc(e.from+1,e.to-1):"[]"),a=i}else return[]}return n?n($,O,r):[]}function J(O={}){let a=O.filters?O.filters.concat(P):P,r=O.tags?O.tags.concat(m):m,n=O.variables?O.variables.concat(T):T,{properties:$}=O;return i=>{var e;let t=M(i);if(!t)return null;let o=(e=t.from)!==null&&e!==void 0?e:t.node?t.node.from:i.pos,s;return t.type=="filter"?s=a:t.type=="tag"?s=r:t.type=="expression"?s=n:s=K(i.state,t.target,i,$),s.length?{options:s,from:o,validFor:/^[\w\u00c0-\uffff]*$/}:null}}const OO=f.inputHandler.of((O,a,r,n)=>n!="%"||a!=r||O.state.doc.sliceString(a-1,r+1)!="{}"?!1:(O.dispatch(O.state.changeByRange($=>({changes:{from:$.from,to:$.to,insert:"%%"},range:p.cursor($.from+1)})),{scrollIntoView:!0,userEvent:"input.type"}),!0));function d(O){return a=>{let r=O.test(a.textAfter);return a.lineIndent(a.node.from)+(r?0:a.unit)}}const $O=G.define({name:"liquid",parser:H.configure({props:[Z({"cycle comment endcomment raw endraw echo increment decrement liquid in with as":Q.keyword,"empty forloop tablerowloop":Q.atom,"if elsif else endif unless endunless case endcase for endfor tablerow endtablerow break continue":Q.controlKeyword,"assign capture endcapture":Q.definitionKeyword,contains:Q.operatorKeyword,"render include":Q.moduleKeyword,VariableName:Q.variableName,TagName:Q.tagName,FilterName:Q.function(Q.variableName),PropertyName:Q.propertyName,CompareOp:Q.compareOperator,AssignOp:Q.definitionOperator,LogicOp:Q.logicOperator,NumberLiteral:Q.number,StringLiteral:Q.string,BooleanLiteral:Q.bool,InlineComment:Q.lineComment,CommentText:Q.blockComment,"{% %} {{ }}":Q.brace,"[ ]":Q.bracket,"( )":Q.paren,".":Q.derefOperator,", .. : |":Q.punctuation}),S.add({Tag:b({closing:"%}"}),"UnlessDirective ForDirective TablerowDirective CaptureDirective":d(/^\s*(\{%-?\s*)?end\w/),IfDirective:d(/^\s*(\{%-?\s*)?(endif|else|elsif)\b/),CaseDirective:d(/^\s*(\{%-?\s*)?(endcase|when)\b/)}),j.add({"UnlessDirective ForDirective TablerowDirective CaptureDirective IfDirective CaseDirective RawDirective Comment"(O){let a=O.firstChild,r=O.lastChild;return!a||a.name!="Tag"?null:{from:a.to,to:r.name=="EndTag"?r.from:O.to}}})]}),languageData:{commentTokens:{line:"#"},indentOnInput:/^\s*{%-?\s*(?:end|elsif|else|when|)$/}}),q=X();function g(O){return $O.configure({wrap:y(a=>a.type.isTop?{parser:O.parser,overlay:r=>r.name=="Text"||r.name=="RawText"}:null)},"liquid")}const aO=g(q.language);function rO(O={}){let a=O.base||q,r=a.language==q.language?aO:g(a.language);return new x(r,[a.support,r.data.of({autocomplete:J(O)}),a.language.data.of({closeBrackets:{brackets:["{"]}}),OO])}export{OO as closePercentBrace,rO as liquid,J as liquidCompletionSource,aO as liquidLanguage}; diff --git a/frontend/dist/assets/index-GAnQrJsQ.js b/frontend/dist/assets/index-GAnQrJsQ.js new file mode 100644 index 0000000..a29b170 --- /dev/null +++ b/frontend/dist/assets/index-GAnQrJsQ.js @@ -0,0 +1 @@ +import{cg as s,ch as o,ce as h,ci as g,cj as m,ck as v,cl as S,cm as y,cn as P,co as w,cp as b,b as p}from"./index-BKKvzUDD.js";function x(n){return n}function O(n,e,a){switch(a.length){case 0:return n.call(e);case 1:return n.call(e,a[0]);case 2:return n.call(e,a[0],a[1]);case 3:return n.call(e,a[0],a[1],a[2])}return n.apply(e,a)}var T=800,C=16,k=Date.now;function A(n){var e=0,a=0;return function(){var t=k(),r=C-(t-a);if(a=t,r>0){if(++e>=T)return arguments[0]}else e=0;return n.apply(void 0,arguments)}}function H(n){return function(){return n}}var I=s?function(n,e){return s(n,"toString",{configurable:!0,enumerable:!1,value:H(e),writable:!0})}:x,N=A(I),f=Math.max;function F(n,e,a){return e=f(e===void 0?n.length-1:e,0),function(){for(var t=arguments,r=-1,i=f(t.length-e,0),l=Array(i);++r0&&a(u)?e>1?d(u,e-1,a,t,r):m(r,u):t||(r[r.length]=u)}return r}function M(n){var e=n==null?0:n.length;return e?d(n,1):[]}function R(n){return N(F(n,void 0,M),n+"")}function _(n,e){return n!=null&&e in Object(n)}function z(n,e,a){e=v(e,n);for(var t=-1,r=e.length,i=!1;++tK(U,n);export{R as a,d as b,M as f,B as h,x as i,F as o,K as p,N as s,q as u}; diff --git a/frontend/dist/assets/index-TFUf94PZ.js b/frontend/dist/assets/index-TFUf94PZ.js new file mode 100644 index 0000000..a0a4160 --- /dev/null +++ b/frontend/dist/assets/index-TFUf94PZ.js @@ -0,0 +1 @@ +import{aK as Qe,j as d,N as wt,c4 as St,J as Ie,b as Ct,i as Ee,bQ as _e,aR as It,R as L,a5 as Et,bx as Nt,bZ as et,ak as je,d as zt,bR as Mt,bl as Pt,a as Ue,aT as Ne,a7 as kt,D as ce,G as Vt,P as H,H as Tt,a9 as Lt,o as c,c as P,g as v,M as ze,n as h,f as o,h as ee,q as D,e as E,w as j,r as U,E as W,Y as We,aL as de,aU as K,al as fe,aa as ve,y as Y,bA as Rt,a3 as Ke,c5 as Bt,c6 as Ot,c7 as $t,a8 as At,l as Ft}from"./index-BKKvzUDD.js";import{U as pe,C as Ye,I as Me,r as Gt,c as Xe}from"./raf-C-x62Pcl.js";import{u as Ht,a as Dt}from"./index-DLzof2Fz.js";import{b as jt,d as Ut,e as Wt,c as Kt}from"./index-BjEW7-SA.js";import{u as Yt}from"./index-GAnQrJsQ.js";const Xt=["class","style"],Zt=/^on[A-Z]/,qt=(e={})=>{const{excludeListeners:r=!1,excludeKeys:I}=e,t=d(()=>((I==null?void 0:I.value)||[]).concat(Xt)),l=wt();return l?d(()=>{var u;return St(Object.entries((u=l.proxy)==null?void 0:u.$attrs).filter(([p])=>!t.value.includes(p)&&!(r&&Zt.test(p))))}):(Qe("use-attrs","getCurrentInstance() returned null. useAttrs() must be called at the top of a setup function"),d(()=>({})))};function Jt(e){let r;function I(){if(e.value==null)return;const{selectionStart:l,selectionEnd:u,value:p}=e.value;l==null||u==null||(r={selectionStart:l,selectionEnd:u,value:p,beforeTxt:p.slice(0,Math.max(0,l)),afterTxt:p.slice(Math.max(0,u))})}function t(){if(e.value==null||r==null)return;const{value:l}=e.value,{beforeTxt:u,afterTxt:p,selectionStart:g}=r;if(u==null||p==null||g==null)return;let N=l.length;if(l.endsWith(p))N=l.length-p.length;else if(l.startsWith(u))N=u.length;else{const R=u[g-1],b=l.indexOf(R,g-1);b!==-1&&(N=b+1)}e.value.setSelectionRange(N,N)}return[I,t]}const Qt=Ct({id:{type:String,default:void 0},size:It,disabled:{type:Boolean,default:void 0},modelValue:{type:L([String,Number,Object]),default:""},modelModifiers:{type:L(Object),default:()=>({})},maxlength:{type:[String,Number]},minlength:{type:[String,Number]},type:{type:L(String),default:"text"},resize:{type:String,values:["none","both","horizontal","vertical"]},autosize:{type:L([Boolean,Object]),default:!1},autocomplete:{type:L(String),default:"off"},formatter:{type:Function},parser:{type:Function},placeholder:{type:String},form:{type:String},readonly:Boolean,clearable:Boolean,clearIcon:{type:Ee,default:_e},showPassword:Boolean,showWordLimit:Boolean,wordLimitPosition:{type:String,values:["inside","outside"],default:"inside"},suffixIcon:{type:Ee},prefixIcon:{type:Ee},containerRole:{type:String,default:void 0},tabindex:{type:[String,Number],default:0},validateEvent:{type:Boolean,default:!0},inputStyle:{type:L([Object,Array,String,Boolean]),default:()=>Et({})},countGraphemes:{type:L(Function)},autofocus:Boolean,rows:{type:Number,default:2},...Yt(["ariaLabel"]),inputmode:{type:L(String),default:void 0},name:String}),_t={[pe]:e=>Ie(e),input:e=>Ie(e),change:(e,r)=>Ie(e)&&(r instanceof Event||r===void 0),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:e=>e===void 0||e instanceof MouseEvent,mouseleave:e=>e instanceof MouseEvent,mouseenter:e=>e instanceof MouseEvent,keydown:e=>e instanceof Event,compositionstart:e=>e instanceof CompositionEvent,compositionupdate:e=>e instanceof CompositionEvent,compositionend:e=>e instanceof CompositionEvent};Nt(_e);let y;const ea={height:"0",visibility:"hidden",overflow:et()?"":"hidden",position:"absolute","z-index":"-1000",top:"0",right:"0"},ta=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing","word-break"],Ze=e=>{const r=Number.parseFloat(e);return Number.isNaN(r)?e:r};function aa(e){const r=window.getComputedStyle(e),I=r.getPropertyValue("box-sizing"),t=Number.parseFloat(r.getPropertyValue("padding-bottom"))+Number.parseFloat(r.getPropertyValue("padding-top")),l=Number.parseFloat(r.getPropertyValue("border-bottom-width"))+Number.parseFloat(r.getPropertyValue("border-top-width"));return{contextStyle:ta.map(u=>[u,r.getPropertyValue(u)]),paddingSize:t,borderSize:l,boxSizing:I}}function qe(e,r=1,I){var b;if(!y){y=document.createElement("textarea");let f=document.body;!et()&&e.parentNode&&(f=e.parentNode),f.appendChild(y)}const{paddingSize:t,borderSize:l,boxSizing:u,contextStyle:p}=aa(e);p.forEach(([f,m])=>y==null?void 0:y.style.setProperty(f,m)),Object.entries(ea).forEach(([f,m])=>y==null?void 0:y.style.setProperty(f,m,"important")),y.value=e.value||e.placeholder||"";let g=y.scrollHeight;const N={};u==="border-box"?g=g+l:u==="content-box"&&(g=g-t),y.value="";const R=y.scrollHeight-t;if(je(r)){let f=R*r;u==="border-box"&&(f=f+t+l),g=Math.max(f,g),N.minHeight=`${f}px`}if(je(I)){let f=R*I;u==="border-box"&&(f=f+t+l),g=Math.min(f,g)}return N.height=`${g}px`,(b=y.parentNode)==null||b.removeChild(y),y=void 0,N}const oa=["id","name","minlength","maxlength","type","disabled","readonly","autocomplete","tabindex","aria-label","placeholder","form","autofocus","role","inputmode"],na=["id","name","minlength","maxlength","tabindex","disabled","readonly","autocomplete","aria-label","placeholder","form","autofocus","rows","role","inputmode"],Je="ElInput";var sa=zt({name:Je,inheritAttrs:!1,__name:"input",props:Qt,emits:_t,setup(e,{expose:r,emit:I}){const t=e,l=I,u=Mt(),p=Pt(),g=d(()=>[t.type==="textarea"?X.b():i.b(),i.m(tt.value),i.is("disabled",B.value),i.is("exceed",st.value),{[i.b("group")]:p.prepend||p.append,[i.m("prefix")]:p.prefix||t.prefixIcon,[i.m("suffix")]:p.suffix||t.suffixIcon||t.clearable||t.showPassword,[i.bm("suffix","password-clear")]:ne.value&&ge.value,[i.b("hidden")]:t.type==="hidden"},u.class]),N=d(()=>[i.e("wrapper"),i.is("focus",he.value)]),R=qt(),b=d(()=>{var a;return(a=t.maxlength)==null?void 0:a.toString()}),{form:f,formItem:m}=jt(),{inputId:Pe}=Ut(t,{formItemContext:m}),tt=Wt(),B=Kt(),i=Ue("input"),X=Ue("textarea"),te=Ne(),M=Ne(),me=Y(!1),O=Y(!1),ke=Y(),Ve=Y(),ae=Ne(t.inputStyle),Z=Y(""),oe=Y(),w=d(()=>te.value||M.value),{wrapperRef:at,isFocused:he,handleFocus:Te,handleBlur:Le}=Ht(w,{disabled:B,afterBlur(){var a;t.validateEvent&&((a=m==null?void 0:m.validate)==null||a.call(m,"blur").catch(K))}}),Re=d(()=>(f==null?void 0:f.statusIcon)??!1),q=d(()=>(m==null?void 0:m.validateState)||""),Be=d(()=>q.value&&Bt[q.value]),ot=d(()=>O.value?Ot:$t),nt=d(()=>[u.style]),Oe=d(()=>[t.inputStyle,ae.value,{resize:t.resize},oe.value?{height:oe.value}:void 0]),k=d(()=>At(t.modelValue)?"":String(t.modelValue)),ye=d(()=>t.clearable&&!B.value&&!t.readonly),ne=d(()=>ye.value&&!!k.value&&(he.value||me.value)),ge=d(()=>t.showPassword&&!B.value&&!!k.value),$=d(()=>t.showWordLimit&&!!b.value&&(t.type==="text"||t.type==="textarea")&&!B.value&&!t.readonly&&!t.showPassword),be=d(()=>t.countGraphemes&&t.showWordLimit?t.countGraphemes(k.value):k.value.length),st=d(()=>!!$.value&&be.value>Number(b.value)),it=d(()=>!!p.suffix||!!t.suffixIcon||t.clearable||t.showPassword||$.value||!!q.value&&Re.value),lt=d(()=>!!Object.keys(t.modelModifiers).length),[rt,ut]=Jt(te);let A;kt(M,a=>{if(ct(),!$.value&&!ye.value||t.resize!=="both"&&t.resize!=="horizontal")return;const{width:n}=a[0].target.getBoundingClientRect(),s=()=>{A=void 0,ke.value={right:`calc(100% - ${n-10}px)`},Ve.value={right:`calc(100% - ${n-11}px)`}};A&&Xe(A),A=Gt(s)});const J=()=>{const{type:a,autosize:n}=t;if(!(!Rt||a!=="textarea"||!M.value))if(n){const s=Ke(n)?n.minRows:void 0,S=Ke(n)?n.maxRows:void 0,C=qe(M.value,s,S);ae.value={overflowY:"hidden",...C},H(()=>{M.value.offsetHeight,ae.value=C})}else ae.value={minHeight:qe(M.value).minHeight}},ct=(a=>{let n=!1;return()=>{var s;if(n||!t.autosize){t.resize!=="none"&&setTimeout(()=>{var S;oe.value=(S=M.value)==null?void 0:S.style.height});return}((s=M.value)==null?void 0:s.offsetParent)!==null&&(setTimeout(a),n=!0)}})(J),F=()=>{const a=w.value,n=t.formatter?t.formatter(k.value):k.value;!a||a.value===n||t.type==="file"||(a.value=n)},$e=a=>{const{trim:n,number:s}=t.modelModifiers;return n&&(a=a.trim()),s&&(a=`${Ze(a)}`),t.formatter&&t.parser&&(a=t.parser(a)),a},xe=async a=>{if(Fe.value)return;const{lazy:n}=t.modelModifiers;let{value:s}=a.target,S=!1;if(n){l(Me,s);return}if(s=$e(s),t.countGraphemes&&b.value!=null){const C=Number(b.value),re=t.countGraphemes(s),G=t.countGraphemes(Z.value);if(re>C&&re>G)if(G>C)s=Z.value,S=!0;else{const V=Z.value,z=s;let x=0;for(;xx&&Q>x&&V[T-1]===z[Q-1];)T--,Q--;const yt=z.slice(0,x),gt=V.slice(x,T),He=z.slice(x,Q),bt=z.slice(Q),xt=G-t.countGraphemes(gt),Se=Math.max(0,C-xt);let _="";if(Se>0)if(typeof Intl<"u"&&"Segmenter"in Intl){const Ce=new Intl.Segmenter(void 0,{granularity:"grapheme"});for(const{segment:ue}of Ce.segment(He)){const De=_+ue;if(t.countGraphemes(De)>Se)break;_=De}}else for(const Ce of Array.from(He)){const ue=_+Ce;if(t.countGraphemes(ue)>Se)break;_=ue}s=yt+_+bt,S=!0}}if(String(s)===k.value){if(t.formatter||S){const C=a.target,re=C.value,G=C.selectionStart,V=C.selectionEnd;if(F(),S&&w.value&&G!=null&&V!=null){const z=w.value.value,x=re.slice(Math.max(0,V));let T=Math.min(G,z.length);x&&z.endsWith(x)&&(T=z.length-x.length),w.value.setSelectionRange(T,T)}}return}Z.value=s,rt(),l(pe,s),l(Me,s),await H(),(t.formatter&&t.parser||!lt.value)&&F(),ut()},Ae=async a=>{let{value:n}=a.target;n=$e(n),t.modelModifiers.lazy&&l(pe,n),l(Ye,n,a),await H(),F()},{isComposing:Fe,handleCompositionStart:se,handleCompositionUpdate:ie,handleCompositionEnd:le}=Dt({emit:l,afterComposition:xe}),dt=()=>{O.value=!O.value},ft=()=>{var a;return(a=w.value)==null?void 0:a.focus()},vt=()=>{var a;return(a=w.value)==null?void 0:a.blur()},pt=a=>{me.value=!1,l("mouseleave",a)},mt=a=>{me.value=!0,l("mouseenter",a)},Ge=a=>{l("keydown",a)},ht=()=>{var a;(a=w.value)==null||a.select()},we=a=>{l(pe,""),l(Ye,""),l("clear",a),l(Me,"")};return ce(()=>t.modelValue,()=>{var a;H(()=>{J(),t.autosize&&(oe.value=void 0)}),t.validateEvent&&((a=m==null?void 0:m.validate)==null||a.call(m,"change").catch(K))}),ce(()=>k.value,a=>{Z.value=a},{immediate:!0}),ce(k,a=>{if(!w.value)return;const{trim:n,number:s}=t.modelModifiers,S=w.value.value,C=(s||t.type==="number")&&!/^0\d/.test(S)?`${Ze(S)}`:S;C!==a&&(document.activeElement===w.value&&w.value.type!=="range"&&n&&C.trim()===a||F())}),ce(()=>t.type,async()=>{await H(),F(),J()}),Vt(()=>{!t.formatter&&t.parser&&Qe(Je,"If you set the parser, you also need to set the formatter."),F(),H(J)}),Tt(()=>{A&&Xe(A)}),r({input:te,textarea:M,ref:w,textareaStyle:Oe,autosize:Lt(t,"autosize"),isComposing:Fe,passwordVisible:O,focus:ft,blur:vt,select:ht,clear:we,resizeTextarea:J}),(a,n)=>(c(),P("div",{class:h([g.value,{[o(i).bm("group","append")]:a.$slots.append,[o(i).bm("group","prepend")]:a.$slots.prepend}]),style:fe(nt.value),onMouseenter:mt,onMouseleave:pt},[v(" input "),e.type!=="textarea"?(c(),P(ze,{key:0},[v(" prepend slot "),a.$slots.prepend?(c(),P("div",{key:0,class:h(o(i).be("group","prepend"))},[ee(a.$slots,"prepend")],2)):v("v-if",!0),D("div",{ref_key:"wrapperRef",ref:at,class:h(N.value)},[v(" prefix slot "),a.$slots.prefix||e.prefixIcon?(c(),P("span",{key:0,class:h(o(i).e("prefix"))},[D("span",{class:h(o(i).e("prefix-inner"))},[ee(a.$slots,"prefix"),e.prefixIcon?(c(),E(o(W),{key:0,class:h(o(i).e("icon"))},{default:j(()=>[(c(),E(U(e.prefixIcon)))]),_:1},8,["class"])):v("v-if",!0)],2)],2)):v("v-if",!0),D("input",We({id:o(Pe),ref_key:"input",ref:te,class:o(i).e("inner")},o(R),{name:e.name,minlength:e.countGraphemes?void 0:e.minlength,maxlength:e.countGraphemes?void 0:b.value,type:e.showPassword?O.value?"text":"password":e.type,disabled:o(B),readonly:e.readonly,autocomplete:e.autocomplete,tabindex:e.tabindex,"aria-label":e.ariaLabel,placeholder:e.placeholder,style:e.inputStyle,form:e.form,autofocus:e.autofocus,role:e.containerRole,inputmode:e.inputmode,onCompositionstart:n[0]||(n[0]=(...s)=>o(se)&&o(se)(...s)),onCompositionupdate:n[1]||(n[1]=(...s)=>o(ie)&&o(ie)(...s)),onCompositionend:n[2]||(n[2]=(...s)=>o(le)&&o(le)(...s)),onInput:xe,onChange:Ae,onKeydown:Ge}),null,16,oa),v(" suffix slot "),it.value?(c(),P("span",{key:1,class:h(o(i).e("suffix"))},[D("span",{class:h(o(i).e("suffix-inner"))},[ye.value?(c(),E(o(W),{key:0,class:h([o(i).e("icon"),o(i).e("clear")]),style:fe({visibility:ne.value?"visible":"hidden"}),onMousedown:de(o(K),["prevent"]),onClick:we},{default:j(()=>[(c(),E(U(e.clearIcon)))]),_:1},8,["class","style","onMousedown"])):v("v-if",!0),!ne.value||!ge.value||!$.value?(c(),P(ze,{key:1},[ee(a.$slots,"suffix"),e.suffixIcon?(c(),E(o(W),{key:0,class:h(o(i).e("icon"))},{default:j(()=>[(c(),E(U(e.suffixIcon)))]),_:1},8,["class"])):v("v-if",!0)],64)):v("v-if",!0),ge.value?(c(),E(o(W),{key:2,class:h([o(i).e("icon"),o(i).e("password")]),onClick:dt,onMousedown:de(o(K),["prevent"]),onMouseup:de(o(K),["prevent"])},{default:j(()=>[ee(a.$slots,"password-icon",{visible:O.value},()=>[(c(),E(U(ot.value)))])]),_:3},8,["class","onMousedown","onMouseup"])):v("v-if",!0),$.value?(c(),P("span",{key:3,class:h([o(i).e("count"),o(i).is("outside",e.wordLimitPosition==="outside")])},[D("span",{class:h(o(i).e("count-inner"))},ve(be.value)+" / "+ve(b.value),3)],2)):v("v-if",!0),q.value&&Be.value&&Re.value?(c(),E(o(W),{key:4,class:h([o(i).e("icon"),o(i).e("validateIcon"),o(i).is("loading",q.value==="validating")])},{default:j(()=>[(c(),E(U(Be.value)))]),_:1},8,["class"])):v("v-if",!0)],2)],2)):v("v-if",!0)],2),v(" append slot "),a.$slots.append?(c(),P("div",{key:1,class:h(o(i).be("group","append"))},[ee(a.$slots,"append")],2)):v("v-if",!0)],64)):(c(),P(ze,{key:1},[v(" textarea "),D("textarea",We({id:o(Pe),ref_key:"textarea",ref:M,class:[o(X).e("inner"),o(i).is("focus",o(he)),o(X).is("clearable",e.clearable)]},o(R),{name:e.name,minlength:e.countGraphemes?void 0:e.minlength,maxlength:e.countGraphemes?void 0:b.value,tabindex:e.tabindex,disabled:o(B),readonly:e.readonly,autocomplete:e.autocomplete,style:Oe.value,"aria-label":e.ariaLabel,placeholder:e.placeholder,form:e.form,autofocus:e.autofocus,rows:e.rows,role:e.containerRole,inputmode:e.inputmode,onCompositionstart:n[3]||(n[3]=(...s)=>o(se)&&o(se)(...s)),onCompositionupdate:n[4]||(n[4]=(...s)=>o(ie)&&o(ie)(...s)),onCompositionend:n[5]||(n[5]=(...s)=>o(le)&&o(le)(...s)),onInput:xe,onFocus:n[6]||(n[6]=(...s)=>o(Te)&&o(Te)(...s)),onBlur:n[7]||(n[7]=(...s)=>o(Le)&&o(Le)(...s)),onChange:Ae,onKeydown:Ge}),null,16,na),ne.value?(c(),E(o(W),{key:0,class:h([o(X).e("icon"),o(X).e("clear")]),style:fe(Ve.value),onMousedown:de(o(K),["prevent"]),onClick:we},{default:j(()=>[(c(),E(U(e.clearIcon)))]),_:1},8,["class","style","onMousedown"])):v("v-if",!0),$.value?(c(),P("span",{key:1,style:fe(ke.value),class:h([o(i).e("count"),o(i).is("outside",e.wordLimitPosition==="outside")])},ve(be.value)+" / "+ve(b.value),7)):v("v-if",!0)],64))],38))}}),ia=sa;const va=Ft(ia);export{va as E,qt as u}; diff --git a/frontend/dist/assets/index-dNo5H1ie.js b/frontend/dist/assets/index-dNo5H1ie.js new file mode 100644 index 0000000..6fbb2b5 --- /dev/null +++ b/frontend/dist/assets/index-dNo5H1ie.js @@ -0,0 +1 @@ +import{P as $,bu as x,V as he,W as Ee,d as Be,bv as we,E as Te,bw as Me,z as ke,bx as j,by as _,D as ee,G as Ie,H as Se,aV as Ae,y as w,j as C,bd as q,J as W,bz as ne,ai as A,o as c,e as p,w as v,K,s as T,q as y,n as i,aL as R,al as oe,c as D,r as L,g as h,aa as V,t as P,h as Le,L as U,x as te,Z as Ve,bA as $e,an as ie,bB as ue,bC as se,a3 as de,bD as ae,aK as Oe,U as ze}from"./index-BKKvzUDD.js";import{f as Re,_ as De}from"./index-CWUnzf90.js";import{i as Pe}from"./validator-Fn0bm4xU.js";import{u as Fe}from"./index-CQXVR1Ud.js";import{E as He,a as Ke,u as Ue}from"./index-DfyOU94W.js";import{E as Ne,f as le}from"./index-BjEW7-SA.js";import{E as je}from"./index-TFUf94PZ.js";const G="_trap-focus-children",E=[],re=e=>{if(E.length===0)return;const n=he(e),t=E[E.length-1][G];if(t.length>0&&n===Ee.tab){if(t.length===1){e.preventDefault(),document.activeElement!==t[0]&&t[0].focus();return}const l=e.shiftKey,r=e.target===t[0],a=e.target===t[t.length-1];r&&l&&(e.preventDefault(),t[t.length-1].focus()),a&&!l&&(e.preventDefault(),t[0].focus())}},qe={beforeMount(e){e[G]=x(e),E.push(e),E.length<=1&&document.addEventListener("keydown",re)},updated(e){$(()=>{e[G]=x(e)})},unmounted(){E.shift(),E.length===0&&document.removeEventListener("keydown",re)}};var Ge=Be({name:"ElMessageBox",directives:{TrapFocus:qe},components:{ElButton:Ne,ElFocusTrap:Re,ElInput:je,ElOverlay:He,ElIcon:Te,...we},inheritAttrs:!1,props:{buttonSize:{type:String,validator:Pe},modal:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},closeOnHashChange:{type:Boolean,default:!0},center:Boolean,draggable:Boolean,overflow:Boolean,roundButton:Boolean,container:{type:String,default:"body"},boxType:{type:String,default:""}},emits:["vanish","action"],setup(e,{emit:n}){const{locale:t,zIndex:l,ns:r,size:a}=Me("message-box",C(()=>e.buttonSize)),{t:f}=t,{nextZIndex:m}=l,g=w(!1),o=ke({autofocus:!0,beforeClose:null,callback:null,cancelButtonText:"",cancelButtonClass:"",confirmButtonText:"",confirmButtonClass:"",cancelButtonType:"",confirmButtonType:"primary",customClass:"",customStyle:{},dangerouslyUseHTMLString:!1,distinguishCancelAndClose:!1,icon:"",closeIcon:"",inputPattern:null,inputPlaceholder:"",inputType:"text",inputValue:"",inputValidator:void 0,inputErrorMessage:"",message:"",modalFade:!0,modalClass:"",showCancelButton:!1,showConfirmButton:!0,type:"",title:void 0,showInput:!1,action:"",confirmButtonLoading:!1,cancelButtonLoading:!1,confirmButtonLoadingIcon:j(_),cancelButtonLoadingIcon:j(_),confirmButtonDisabled:!1,editorErrorMessage:"",validateError:!1,zIndex:m()}),F=C(()=>{const s=o.type;return{[r.bm("icon",s)]:s&&ne[s]}}),u=le(),ce=le(),fe=C(()=>{const s=o.type;return o.icon||s&&ne[s]||""}),me=C(()=>!!o.message),B=w(),X=w(),k=w(),I=w(),Z=w(),pe=C(()=>o.confirmButtonClass);ee(()=>o.inputValue,async s=>{await $(),e.boxType==="prompt"&&s&&Q()},{immediate:!0}),ee(()=>g.value,s=>{var d;s&&(e.boxType!=="prompt"&&(o.autofocus?k.value=((d=Z.value)==null?void 0:d.$el)??B.value:k.value=B.value),o.zIndex=m()),e.boxType==="prompt"&&(s?$().then(()=>{I.value&&I.value.$el&&(o.autofocus?k.value=be()??B.value:k.value=B.value)}):(o.editorErrorMessage="",o.validateError=!1))});const{isDragging:ge}=Fe(B,X,C(()=>e.draggable),C(()=>e.overflow));Ie(async()=>{await $(),e.closeOnHashChange&&window.addEventListener("hashchange",S)}),Se(()=>{e.closeOnHashChange&&window.removeEventListener("hashchange",S)});function S(){g.value&&(g.value=!1,$(()=>{o.action&&n("action",o.action)}))}const J=()=>{e.closeOnClickModal&&z(o.distinguishCancelAndClose?"close":"cancel")},ve=Ue(J),ye=s=>{var d;if(o.inputType!=="textarea"&&!((d=I.value)!=null&&d.isComposing))return s.preventDefault(),z("confirm")},z=s=>{var d;e.boxType==="prompt"&&s==="confirm"&&!Q()||(o.action=s,o.beforeClose?(d=o.beforeClose)==null||d.call(o,s,o,S):S())},Q=()=>{if(e.boxType==="prompt"){const s=o.inputPattern;if(s&&!s.test(o.inputValue||""))return o.editorErrorMessage=o.inputErrorMessage||f("el.messagebox.error"),o.validateError=!0,!1;const d=o.inputValidator;if(q(d)){const H=d(o.inputValue);if(H===!1)return o.editorErrorMessage=o.inputErrorMessage||f("el.messagebox.error"),o.validateError=!0,!1;if(W(H))return o.editorErrorMessage=H,o.validateError=!0,!1}}return o.editorErrorMessage="",o.validateError=!1,!0},be=()=>{var d;const s=(d=I.value)==null?void 0:d.$refs;return(s==null?void 0:s.input)??(s==null?void 0:s.textarea)},Y=()=>{z("close")},Ce=()=>{e.closeOnPressEscape&&Y()};return e.lockScroll&&Ke(g,{ns:r}),{...Ae(o),ns:r,overlayEvent:ve,visible:g,hasMessage:me,typeClass:F,contentId:u,inputId:ce,btnSize:a,iconComponent:fe,confirmButtonClasses:pe,rootRef:B,focusStartRef:k,headerRef:X,inputRef:I,isDragging:ge,confirmRef:Z,doClose:S,handleClose:Y,onCloseRequested:Ce,handleWrapperClick:J,handleInputEnter:ye,handleAction:z,t:f}}});const We=["aria-label","aria-describedby"],Xe=["aria-label"],Ze=["id"];function Je(e,n,t,l,r,a){const f=A("el-icon"),m=A("el-input"),g=A("el-button"),o=A("el-focus-trap"),F=A("el-overlay");return c(),p(Ve,{name:"fade-in-linear",onAfterLeave:n[11]||(n[11]=u=>e.$emit("vanish")),persisted:""},{default:v(()=>[K(T(F,{"z-index":e.zIndex,"overlay-class":[e.ns.is("message-box"),e.modalClass],mask:e.modal},{default:v(()=>[y("div",{role:"dialog","aria-label":e.title,"aria-modal":"true","aria-describedby":e.showInput?void 0:e.contentId,class:i(`${e.ns.namespace.value}-overlay-message-box`),onClick:n[8]||(n[8]=(...u)=>e.overlayEvent.onClick&&e.overlayEvent.onClick(...u)),onMousedown:n[9]||(n[9]=(...u)=>e.overlayEvent.onMousedown&&e.overlayEvent.onMousedown(...u)),onMouseup:n[10]||(n[10]=(...u)=>e.overlayEvent.onMouseup&&e.overlayEvent.onMouseup(...u))},[T(o,{loop:"",trapped:e.visible,"focus-trap-el":e.rootRef,"focus-start-el":e.focusStartRef,onReleaseRequested:e.onCloseRequested},{default:v(()=>[y("div",{ref:"rootRef",class:i([e.ns.b(),e.customClass,e.ns.is("draggable",e.draggable),e.ns.is("dragging",e.isDragging),{[e.ns.m("center")]:e.center}]),style:oe(e.customStyle),tabindex:"-1",onClick:n[7]||(n[7]=R(()=>{},["stop"]))},[e.title!==null&&e.title!==void 0?(c(),D("div",{key:0,ref:"headerRef",class:i([e.ns.e("header"),{"show-close":e.showClose}])},[y("div",{class:i(e.ns.e("title"))},[e.iconComponent&&e.center?(c(),p(f,{key:0,class:i([e.ns.e("status"),e.typeClass])},{default:v(()=>[(c(),p(L(e.iconComponent)))]),_:1},8,["class"])):h("v-if",!0),y("span",null,V(e.title),1)],2),e.showClose?(c(),D("button",{key:0,type:"button",class:i(e.ns.e("headerbtn")),"aria-label":e.t("el.messagebox.close"),onClick:n[0]||(n[0]=u=>e.handleAction(e.distinguishCancelAndClose?"close":"cancel")),onKeydown:n[1]||(n[1]=P(R(u=>e.handleAction(e.distinguishCancelAndClose?"close":"cancel"),["prevent"]),["enter"]))},[T(f,{class:i(e.ns.e("close"))},{default:v(()=>[(c(),p(L(e.closeIcon||"close")))]),_:1},8,["class"])],42,Xe)):h("v-if",!0)],2)):h("v-if",!0),y("div",{id:e.contentId,class:i(e.ns.e("content"))},[y("div",{class:i(e.ns.e("container"))},[e.iconComponent&&!e.center&&e.hasMessage?(c(),p(f,{key:0,class:i([e.ns.e("status"),e.typeClass])},{default:v(()=>[(c(),p(L(e.iconComponent)))]),_:1},8,["class"])):h("v-if",!0),e.hasMessage?(c(),D("div",{key:1,class:i(e.ns.e("message"))},[Le(e.$slots,"default",{},()=>[e.dangerouslyUseHTMLString?(c(),p(L(e.showInput?"label":"p"),{key:1,for:e.showInput?e.inputId:void 0,innerHTML:e.message},null,8,["for","innerHTML"])):(c(),p(L(e.showInput?"label":"p"),{key:0,for:e.showInput?e.inputId:void 0,textContent:V(e.message)},null,8,["for","textContent"]))])],2)):h("v-if",!0)],2),K(y("div",{class:i(e.ns.e("input"))},[T(m,{id:e.inputId,ref:"inputRef",modelValue:e.inputValue,"onUpdate:modelValue":n[2]||(n[2]=u=>e.inputValue=u),type:e.inputType,placeholder:e.inputPlaceholder,"aria-invalid":e.validateError,class:i({invalid:e.validateError}),onKeydown:P(e.handleInputEnter,["enter"])},null,8,["id","modelValue","type","placeholder","aria-invalid","class","onKeydown"]),y("div",{class:i(e.ns.e("errormsg")),style:oe({visibility:e.editorErrorMessage?"visible":"hidden"})},V(e.editorErrorMessage),7)],2),[[U,e.showInput]])],10,Ze),e.showCancelButton||e.showConfirmButton?(c(),D("div",{key:1,class:i(e.ns.e("btns"))},[e.showCancelButton?(c(),p(g,{key:0,type:e.cancelButtonType==="text"?"":e.cancelButtonType,text:e.cancelButtonType==="text",loading:e.cancelButtonLoading,"loading-icon":e.cancelButtonLoadingIcon,class:i([e.cancelButtonClass]),round:e.roundButton,size:e.btnSize,onClick:n[3]||(n[3]=u=>e.handleAction("cancel")),onKeydown:n[4]||(n[4]=P(R(u=>e.handleAction("cancel"),["prevent"]),["enter"]))},{default:v(()=>[te(V(e.cancelButtonText||e.t("el.messagebox.cancel")),1)]),_:1},8,["type","text","loading","loading-icon","class","round","size"])):h("v-if",!0),K(T(g,{ref:"confirmRef",type:e.confirmButtonType==="text"?"":e.confirmButtonType,text:e.confirmButtonType==="text",loading:e.confirmButtonLoading,"loading-icon":e.confirmButtonLoadingIcon,class:i([e.confirmButtonClasses]),round:e.roundButton,disabled:e.confirmButtonDisabled,size:e.btnSize,onClick:n[5]||(n[5]=u=>e.handleAction("confirm")),onKeydown:n[6]||(n[6]=P(R(u=>e.handleAction("confirm"),["prevent"]),["enter"]))},{default:v(()=>[te(V(e.confirmButtonText||e.t("el.messagebox.confirm")),1)]),_:1},8,["type","text","loading","loading-icon","class","round","disabled","size"]),[[U,e.showConfirmButton]])],2)):h("v-if",!0)],6)]),_:3},8,["trapped","focus-trap-el","focus-start-el","onReleaseRequested"])],42,We)]),_:3},8,["z-index","overlay-class","mask"]),[[U,e.visible]])]),_:3})}var Qe=De(Ge,[["render",Je]]);const O=new Map,Ye=e=>{let n=document.body;return e.appendTo&&(W(e.appendTo)&&(n=document.querySelector(e.appendTo)),ae(e.appendTo)&&(n=e.appendTo),ae(n)||(Oe("ElMessageBox","the appendTo option is not an HTMLElement. Falling back to document.body."),n=document.body)),n},N=(e,n)=>{var l;const t=(l=e.component)==null?void 0:l.proxy;return()=>t.handleAction(n)},xe=(e,n,t=null)=>{const l=T(Qe,e,q(e.message)||ie(e.message)?{default:q(e.message)?()=>e.message({confirm:N(l,"confirm"),cancel:N(l,"cancel"),close:N(l,"close")}):()=>e.message}:null);return l.appContext=t,ue(l,n),Ye(e).appendChild(n.firstElementChild),l.component},_e=()=>document.createElement("div"),en=(e,n)=>{const t=_e();e.onVanish=()=>{ue(null,t),O.delete(r)},e.onAction=a=>{const f=O.get(r);let m;e.showInput?m={value:r.inputValue,action:a}:m=a,e.callback?e.callback(m,l.proxy):a==="cancel"||a==="close"?e.distinguishCancelAndClose&&a!=="cancel"?f.reject("close"):f.reject("cancel"):f.resolve(m)};const l=xe(e,t,n),r=l.proxy;for(const a in e)se(e,a)&&!se(r.$props,a)&&(a==="closeIcon"&&de(e[a])?r[a]=j(e[a]):r[a]=e[a]);return r.visible=!0,r};function M(e,n=null){if(!$e)return Promise.reject();let t;return W(e)||ie(e)?e={message:e}:t=e.callback,new Promise((l,r)=>{const a=en(e,n??M._context);O.set(a,{options:e,callback:t,resolve:l,reject:r})})}const nn=["alert","confirm","prompt"],on={alert:{closeOnPressEscape:!1,closeOnClickModal:!1},confirm:{showCancelButton:!0},prompt:{showCancelButton:!0,showInput:!0}};nn.forEach(e=>{M[e]=tn(e)});function tn(e){return(n,t,l,r)=>{let a="";return de(t)?(l=t,a=""):ze(t)?a="":a=t,M(Object.assign({title:a,message:n,type:"",...on[e]},l,{boxType:e}),r)}}M.close=()=>{O.forEach((e,n)=>{n.doClose()}),O.clear()};M._context=null;const b=M;b.install=e=>{b._context=e._context,e.config.globalProperties.$msgbox=b,e.config.globalProperties.$messageBox=b,e.config.globalProperties.$alert=b.alert,e.config.globalProperties.$confirm=b.confirm,e.config.globalProperties.$prompt=b.prompt};const fn=b;export{fn as E}; diff --git a/frontend/dist/assets/index-sgHIT8oA.js b/frontend/dist/assets/index-sgHIT8oA.js new file mode 100644 index 0000000..93f16a1 --- /dev/null +++ b/frontend/dist/assets/index-sgHIT8oA.js @@ -0,0 +1 @@ +import{e as v,E as i,C as _,s as W,t as e,a as g,r as x,L as V,f as p,l as E,i as U,c as N}from"./index--cDK8lVp.js";import"./index-BKKvzUDD.js";const j=168,X=169,C=170,I=1,D=2,w=3,L=171,F=172,Y=4,z=173,K=5,A=174,T=175,Z=176,s=177,G=6,q=7,B=8,H=9,c=0,R=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],M=58,J=40,m=95,OO=91,l=45,$O=46,f=35,eO=37,u=123,QO=125,d=47,S=42,r=10,k=61,tO=43,aO=38;function o(O){return O>=65&&O<=90||O>=97&&O<=122||O>=161}function y(O){return O>=48&&O<=57}function h(O){let $;return O.next==d&&(($=O.peek(1))==d||$==S)}const nO=new i((O,$)=>{if($.dialectEnabled(c)){let Q;if(O.next<0&&$.canShift(Z))O.acceptToken(Z);else if(((Q=O.peek(-1))==r||Q<0)&&$.canShift(T)){let t=0;for(;O.next!=r&&R.includes(O.next);)O.advance(),t++;O.next==r||h(O)?O.acceptToken(T,-t):t&&O.acceptToken(s)}else if(O.next==r)O.acceptToken(A,1);else if(R.includes(O.next)){for(O.advance();O.next!=r&&R.includes(O.next);)O.advance();O.acceptToken(s)}}else{let Q=0;for(;R.includes(O.next);)O.advance(),Q++;Q&&O.acceptToken(s)}},{contextual:!0}),rO=new i((O,$)=>{if(h(O)){if(O.advance(),$.dialectEnabled(c)){let Q=-1;for(let t=1;;t++){let a=O.peek(-t-1);if(a==r||a<0){Q=t+1;break}else if(!R.includes(a))break}if(Q>-1){let t=O.next==S,a=0;for(O.advance();O.next>=0;)if(O.next==r){O.advance();let n=0;for(;O.next!=r&&R.includes(O.next);)n++,O.advance();if(n=0;)O.advance();O.acceptToken(G)}else{for(O.advance();O.next>=0;){let{next:Q}=O;if(O.advance(),Q==S&&O.next==d){O.advance();break}}O.acceptToken(q)}}}),RO=new i((O,$)=>{(O.next==tO||O.next==k)&&$.dialectEnabled(c)&&O.acceptToken(O.next==k?B:H,1)}),iO=new i((O,$)=>{if(!$.dialectEnabled(c))return;let Q=$.context.depth;if(O.next<0&&Q){O.acceptToken(X);return}if(O.peek(-1)==r){let a=0;for(;O.next!=r&&R.includes(O.next);)O.advance(),a++;a!=Q&&O.next!=r&&!h(O)&&(a{for(let Q=!1,t=0,a=0;;a++){let{next:n}=O;if(o(n)||n==l||n==m||Q&&y(n))!Q&&(n!=l||a>0)&&(Q=!0),t===a&&n==l&&t++,O.advance();else if(n==f&&O.peek(1)==u){O.acceptToken(K,2);break}else{Q&&O.acceptToken(t==2&&$.canShift(Y)?Y:$.canShift(z)?z:n==J?L:F);break}}}),lO=new i(O=>{if(O.next==QO){for(O.advance();o(O.next)||O.next==l||O.next==m||y(O.next);)O.advance();O.next==f&&O.peek(1)==u?O.acceptToken(D,2):O.acceptToken(I)}}),dO=new i(O=>{if(R.includes(O.peek(-1))){let{next:$}=O;(o($)||$==m||$==f||$==$O||$==OO||$==M&&o(O.peek(1))||$==l||$==aO||$==S)&&O.acceptToken(C)}}),SO=new i(O=>{if(!R.includes(O.peek(-1))){let{next:$}=O;if($==eO&&(O.advance(),O.acceptToken(w)),o($)){do O.advance();while(o(O.next)||y(O.next));O.acceptToken(w)}}});function b(O,$){this.parent=O,this.depth=$,this.hash=(O?O.hash+O.hash<<8:0)+$+($<<4)}const cO=new b(null,0),sO=new _({start:cO,shift(O,$,Q,t){return $==j?new b(O,Q.pos-t.pos):$==X?O.parent:O},hash(O){return O.hash}}),XO=W({"AtKeyword import charset namespace keyframes media supports include mixin use forward extend at-root":e.definitionKeyword,"Keyword selector":e.keyword,ControlKeyword:e.controlKeyword,NamespaceName:e.namespace,KeyframeName:e.labelName,KeyframeRangeName:e.operatorKeyword,TagName:e.tagName,"ClassName Suffix":e.className,PseudoClassName:e.constant(e.className),IdName:e.labelName,"FeatureName PropertyName":e.propertyName,AttributeName:e.attributeName,NumberLiteral:e.number,KeywordQuery:e.keyword,UnaryQueryOp:e.operatorKeyword,"CallTag ValueName":e.atom,VariableName:e.variableName,SassVariableName:e.special(e.variableName),Callee:e.operatorKeyword,Unit:e.unit,"UniversalSelector NestingSelector IndentedMixin IndentedInclude":e.definitionOperator,MatchOp:e.compareOperator,"ChildOp SiblingOp, LogicOp":e.logicOperator,BinOp:e.arithmeticOperator,"Important Global Default":e.modifier,Comment:e.blockComment,LineComment:e.lineComment,ColorLiteral:e.color,"ParenthesizedContent StringLiteral":e.string,"InterpolationStart InterpolationContinue InterpolationEnd":e.meta,': "..."':e.punctuation,"PseudoOp #":e.derefOperator,"; ,":e.separator,"( )":e.paren,"[ ]":e.squareBracket,"{ }":e.brace}),PO={__proto__:null,not:62,using:197,as:207,with:211,without:211,hide:225,show:225,if:263,from:269,to:271,through:273,in:279},mO={__proto__:null,url:82,"url-prefix":82,domain:82,regexp:82,lang:104,"nth-child":104,"nth-last-child":104,"nth-of-type":104,"nth-last-of-type":104,dir:104,"host-context":104},fO={__proto__:null,"@import":162,"@include":194,"@mixin":200,"@function":200,"@use":204,"@extend":214,"@at-root":218,"@forward":222,"@media":228,"@charset":232,"@namespace":236,"@keyframes":242,"@supports":254,"@if":258,"@else":260,"@for":266,"@each":276,"@while":282,"@debug":286,"@warn":286,"@error":286,"@return":286},yO={__proto__:null,layer:166,not:184,only:184,selector:190},hO=v.deserialize({version:14,states:"!$WQ`Q+tOOO#fQ+tOOP#mOpOOOOQ#U'#Ch'#ChO#rQ(pO'#CjOOQ#U'#Ci'#CiO%_Q)QO'#GXO%rQ.jO'#CnO&mQ#dO'#D]O'dQ(pO'#CgO'kQ)OO'#D_O'vQ#dO'#DfO'{Q#dO'#DiO(QQ#dO'#DqOOQ#U'#GX'#GXO(VQ(pO'#GXO(^Q(nO'#DuO%rQ.jO'#D}O%rQ.jO'#E`O%rQ.jO'#EcO%rQ.jO'#EeO(cQ)OO'#EjO)TQ)OO'#ElO%rQ.jO'#EnO)bQ)OO'#EqO%rQ.jO'#EsO)|Q)OO'#EuO*XQ)OO'#ExO*aQ)OO'#FOO*uQ)OO'#FbOOQ&Z'#GW'#GWOOQ&Y'#Fe'#FeO+PQ(nO'#FeQ`Q+tOOO%rQ.jO'#FQO+[Q(nO'#FUO+aQ)OO'#FZO%rQ.jO'#F^O%rQ.jO'#F`OOQ&Z'#Fm'#FmO+iQ+uO'#GaO+vQ(oO'#GaQOQ#SOOP,XO#SO'#GVPOOO)CAz)CAzOOQ#U'#Cm'#CmOOQ#U,59W,59WOOQ#i'#Cp'#CpO%rQ.jO'#CsO,xQ.wO'#CuO/dQ.^O,59YO%rQ.jO'#CzOOQ#S'#DP'#DPO/uQ(nO'#DUO/zQ)OO'#DZOOQ#i'#GZ'#GZO0SQ(nO'#DOOOQ#U'#D^'#D^OOQ#U,59w,59wO&mQ#dO,59wO0XQ)OO,59yO'vQ#dO,5:QO'{Q#dO,5:TO(cQ)OO,5:WO(cQ)OO,5:YO(cQ)OO,5:ZO(cQ)OO'#FlO0dQ(nO,59RO0oQ+tO'#DsO0vQ#TO'#DsOOQ&Z,59R,59ROOQ#U'#Da'#DaOOQ#S'#Dd'#DdOOQ#U,59y,59yO0{Q(nO,59yO1QQ(nO,59yOOQ#U'#Dh'#DhOOQ#U,5:Q,5:QOOQ#S'#Dj'#DjO1VQ9`O,5:TOOQ#U'#Dr'#DrOOQ#U,5:],5:]O2YQ.jO,5:aO2dQ.jO,5:iO3`Q.jO,5:zO3mQ.YO,5:}O4OQ.jO,5;POOQ#U'#Cj'#CjO4wQ(pO,5;UO5UQ(pO,5;WOOQ&Z,5;W,5;WO5]Q)OO,5;WO5bQ.jO,5;YOOQ#S'#ET'#ETO6TQ.jO'#E]O6kQ(nO'#GcO*aQ)OO'#EZO7PQ(nO'#E^OOQ#S'#Gd'#GdO0gQ(nO,5;]O4UQ.YO,5;_OOQ#d'#Ew'#EwO+PQ(nO,5;aO7UQ)OO,5;aOOQ#S'#Ez'#EzO7^Q(nO,5;dO7cQ(nO,5;jO7nQ(nO,5;|OOQ&Z'#Gf'#GfOOQ&Y,5VQ9`O1G/oO>pQ(pO1G/rO?dQ(pO1G/tO@WQ(pO1G/uO@zQ(pO,5aAN>aO!6QQ(pO,5_Ow!bi!a!bi!d!bi!h!bi$p!bi$t!bi!o!bi$v!bif!bie!bi~P>_Ow!ci!a!ci!d!ci!h!ci$p!ci$t!ci!o!ci$v!cif!cie!ci~P>_Ow$`a!h$`a$t$`a~P4]O!p%|O~O$o%TP~P`Oe%RP~P(cOe%QP~P%rOS!XOTVO_!XOc!XOf!QOh!XOo!TOy!VO|!WO$q!UO$r!PO%O!RO~Oe&VOj&TO~PAsOl#sOm#sOq#tOw&XO!l&ZO!m&ZO!n&ZO!o!ii$t!ii$v!ii$m!ii!p!ii$o!ii~P%rOf&[OT!tXc!tX!o!tX#O!tX#R!tX$s!tX$t!tX$v!tX~O$n$_OS%YXT%YXW%YXX%YX_%YXc%YXq%YXu%YX|%YX!S%YX!Z%YX!r%YX!s%YX#T%YX#W%YX#Y%YX#_%YX#a%YX#c%YX#f%YX#h%YX#j%YX#m%YX#s%YX#u%YX#y%YX$O%YX$R%YX$T%YX$m%YX$r%YX$|%YX%S%YX!p%YX!o%YX$t%YX$o%YX~O$r!PO$|&aO~O#]&cO~Ou&dO~O!o#`O#d$wO$t#`O$v#`O~O!o%ZP#d%ZP$t%ZP$v%ZP~P%rO$r!PO~OR#rO!|iXeiX~Oe!wXm!wXu!yX!|!yX~Ou&jO!|&kO~Oe&lOm%PO~Ow$fX!h$fX$t$fX!o$fX$v$fX~P*aOw%QO!h%Va$t%Va!o%Va$v%Va~Om%POw!}a!h!}a$t!}a!o!}a$v!}ae!}a~O!p&xO$r&sO%O&rO~O#v&zOS#tiT#tiW#tiX#ti_#tic#tiq#tiu#ti|#ti!S#ti!Z#ti!r#ti!s#ti#T#ti#W#ti#Y#ti#_#ti#a#ti#c#ti#f#ti#h#ti#j#ti#m#ti#s#ti#u#ti#y#ti$O#ti$R#ti$T#ti$m#ti$r#ti$|#ti%S#ti!p#ti!o#ti$t#ti$o#ti~Oc&|Ow$lX$P$lX~Ow%`O$P%[a~O!o#kO$t#kO$m%Ti!p%Ti$o%Ti~O!o$da$m$da$t$da!p$da$o$da~P`Oq#tOPkiQkilkimkiTkickifki!oki!uki#Oki#Rki$ski$tki$vki!hki#Uki#Zki#]ki#dkiekiSki_kihkijkiokiwkiyki|ki!lki!mki!nki$qki$rki%Oki$mkivki{ki#{ki#|ki!pki$oki~Ol#sOm#sOq#tOP$]aQ$]a~Oe'QO~Ol#sOm#sOq#tOS$YXT$YX_$YXc$YXe$YXf$YXh$YXj$YXo$YXv$YXw$YXy$YX|$YX$q$YX$r$YX%O$YX~Ov'UOw'SOe%PX~P%rOS$}XT$}X_$}Xc$}Xe$}Xf$}Xh$}Xj$}Xl$}Xm$}Xo$}Xq$}Xv$}Xw$}Xy$}X|$}X$q$}X$r$}X%O$}X~Ou'VO~P!%OOe'WO~O$o'YO~Ow'ZOe%RX~P4]Oe']O~Ow'^Oe%QX~P%rOe'`O~Ol#sOm#sOq#tO{'aO~Ou'bOe$}Xl$}Xm$}Xq$}X~Oe'eOj'cO~Ol#sOm#sOq#tOS$cXT$cX_$cXc$cXf$cXh$cXj$cXo$cXw$cXy$cX|$cX!l$cX!m$cX!n$cX!o$cX$q$cX$r$cX$t$cX$v$cX%O$cX$m$cX!p$cX$o$cX~Ow&XO!l'hO!m'hO!n'hO!o!iq$t!iq$v!iq$m!iq!p!iq$o!iq~P%rO$r'iO~O!o#`O#]'nO$t#`O$v#`O~Ou'oO~Ol#sOm#sOq#tOw'qO!o%ZX#d%ZX$t%ZX$v%ZX~O$s'uO~P5oOm%POw$fa!h$fa$t$fa!o$fa$v$fa~Oe'wO~P4]O%O&rOw#pX!h#pX$t#pX~Ow'yO!h!fO$t!gO~O!p'}O$r&sO%O&rO~O#v(POS#tqT#tqW#tqX#tq_#tqc#tqq#tqu#tq|#tq!S#tq!Z#tq!r#tq!s#tq#T#tq#W#tq#Y#tq#_#tq#a#tq#c#tq#f#tq#h#tq#j#tq#m#tq#s#tq#u#tq#y#tq$O#tq$R#tq$T#tq$m#tq$r#tq$|#tq%S#tq!p#tq!o#tq$t#tq$o#tq~O!h!fO#w(QO$t!gO~Ol#sOm#sOq#tO#{(SO#|(SO~Oc(VOe$ZXw$ZX~P=TOw'SOe%Pa~Ol#sOm#sOq#tO{(ZO~Oe$_Xw$_X~P(cOw'ZOe%Ra~Oe$^Xw$^X~P%rOw'^Oe%Qa~Ou'bO~Ol#sOm#sOq#tOS$caT$ca_$cac$caf$cah$caj$cao$caw$cay$ca|$ca!l$ca!m$ca!n$ca!o$ca$q$ca$r$ca$t$ca$v$ca%O$ca$m$ca!p$ca$o$ca~Oe(dOq(bO~Oe(gOm%PO~Ow$hX!o$hX#d$hX$t$hX$v$hX~P%rOw'qO!o%Za#d%Za$t%Za$v%Za~Oe(lO~P%rOe(mO!|(nO~Ov(vOe$Zaw$Za~P%rOu(wO~P!%OOw'SOe%Pi~Ow'SOe%Pi~P%rOe$_aw$_a~P4]Oe$^aw$^a~P%rOl#sOm#sOq#tOw(yOe$bij$bi~Oe(|Oq(bO~Oe)OOm%PO~Ol#sOm#sOq#tOw$ha!o$ha#d$ha$t$ha$v$ha~OS$}Oh$}Oj$}Oy!VO$q!UO$s'uO%O&rO~O#w(QO~Ow'SOe%Pq~Oe)WO~Oe$Zqw$Zq~P%rO%Oql!dl~",goto:"=Y%]PPPPPPPPPPP%^%h%h%{P%h&`&cP(UPP)ZP*YP)ZPP)ZP)ZP+f,j-lPPP-xPPPP)Z/S%h/W%hP/^P/d/j/p%hP/v%h/|P%hP%h%hP%h0S0VP1k1}2XPPPPP%^PP2_P2b'w'w2h'w'wP'wP'w'wP%^PP%^P%^PP2qP%^P%^P%^PP%^P%^P%^P2w%^P2z2}3Q3X%^P%^PPP%^PPPP%^PP%^P%^P%^P3^3d3j4Y4h4n4t4z5Q5W5d5j5p5z6Q6W6b6h6n6t6zPPPPPPPPPPPP7Q7T7aP8WP:_:b:eP:h:q:w;T;p;y=S=VanOPqx!f#l$_%fs^OPefqx!a!b!c!d!f#l$_$`%T%f'ZsTOPefqx!a!b!c!d!f#l$_$`%T%f'ZR!OUb^ef!a!b!c!d$`%T'Z`_OPqx!f#l$_%f!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)Ug#Uhlm!u#Q#S$i%P%Q&d'o!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)UQ&b$pR&i$x!y!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)U!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)UU$}#Q&k(nU&u%Y&w'yR'x&t!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)UV$}#Q&k(n#P!YVabcdgiruv!Q!T!t#Q#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j&k'S'V'^'b'q't(Q(S(U(Y(^(n(w)UQ$P!YQ&_$lQ&`$oR(e'n!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)UQ#YjU$}#Q&k(nR%X#ZT#{!W#|Q![WR$Q!]Q!kYR$R!^Q$R!mR%y$TQ!lYR$S!^Q$R!lR%y$SQ!oZR$U!_Q!q[R$V!`R!s]Q!hXQ!|fQ$]!eQ$f!tQ$k!vQ$m!wQ$r!{Q%U#VQ%[#^Q%]#_Q%^#cQ%c#gQ'l&_Q'{&vQ(R&zQ(T'OQ(q'zQ(s(PQ)P(gQ)S(tQ)T(uR)V)OSpOqUyP!f$_Q#jxQ%g#lR'P%fa`OPqx!f#l$_%fQ$f!tR(a'bR$i!uQ'j&[R(z(bQ${#QQ'v&kR)R(nQ&b$pR's&iR#ZjR#]kR%Z#]S&v%Y&wR(o'yV&t%Y&w'yQ#o{R%i#oQqOR#bqQ%v$OQ&Q$a^'R%v&Q't(U(Y(^)UQ't&jQ(U'SQ(Y'VQ(^'^R)U(wQ'T%vU(W'T(X(xQ(X'UR(x(YQ#|!WR%s#|Q#v!SR%o#vQ'_&QR(_'_Q'[&OR(]'[Q!eXR$[!eUxP!f$_S#ix%fR%f#lQ&U$dR'd&UQ&Y$eR'g&YQ#myQ%e#jT%h#m%eQ(c'jR({(cQ%R#RR&o%RQ$u#OS&e$u(jR(j'sQ'r&gR(i'rQ&w%YR'|&wQ'z&vR(p'zQ&y%^R(O&yQ%a#eR&}%aR|QSoOq]wPx!f#l$_%f`XOPqx!f#l$_%fQ!zeQ!{fQ$W!aQ$X!bQ$Y!cQ$Z!dQ&O$`Q&p%TR(['ZQ!SVQ!uaQ!vbQ!wcQ!xdQ#OgQ#WiQ#crQ#guQ#hvS#q!Q$dQ#x!TQ$e!tQ%l#sQ%m#tQ%n#ul%u$O$a%v&Q&j'S'V'^'t(U(Y(^(w)UQ&S$cS&W$e&YQ&g$wQ&{%_Q'O%bQ'X%{Q'f&XQ(`'bQ(h'qQ(t(QR(u(SR%x$OR&R$aR&P$`QzPQ$^!fR%}$_X#ly#j#m%eQ#VhQ#_mQ$h!uR&^$iW#Rhm!u$iQ#^lQ$|#QQ%S#SQ&m%PQ&n%QQ'p&dR(f'oQ%O#QQ'v&kR)R(nQ#apQ$k!vQ$n!xQ$q!zQ$v#OQ%V#WQ%W#YQ%]#_Q%d#hQ&]$hQ&f$uQ&q%XQ'k&^Q'l&_S'm&`&bQ(k'sQ(}(eR)Q(jR&h$wR#ft",nodeNames:"⚠ InterpolationEnd InterpolationContinue Unit VariableName InterpolationStart LineComment Comment IndentedMixin IndentedInclude StyleSheet RuleSet UniversalSelector TagSelector TagName NestingSelector SuffixedSelector Suffix Interpolation SassVariableName ValueName ) ( ParenthesizedValue ColorLiteral NumberLiteral StringLiteral BinaryExpression BinOp LogicOp UnaryExpression LogicOp NamespacedValue . CallExpression Callee ArgList : ... , CallLiteral CallTag ParenthesizedContent ] [ LineNames LineName ClassSelector ClassName PseudoClassSelector :: PseudoClassName PseudoClassName ArgList PseudoClassName ArgList IdSelector # IdName AttributeSelector AttributeName MatchOp ChildSelector ChildOp DescendantSelector SiblingSelector SiblingOp PlaceholderSelector ClassName Block { Declaration PropertyName Map Important Global Default ; } ImportStatement AtKeyword import Layer layer LayerName KeywordQuery FeatureQuery FeatureName BinaryQuery ComparisonQuery CompareOp UnaryQuery LogicOp ParenthesizedQuery SelectorQuery selector IncludeStatement include Keyword MixinStatement mixin UseStatement use Keyword Star Keyword ExtendStatement extend RootStatement at-root ForwardStatement forward Keyword MediaStatement media CharsetStatement charset NamespaceStatement namespace NamespaceName KeyframesStatement keyframes KeyframeName KeyframeList KeyframeSelector KeyframeRangeName SupportsStatement supports IfStatement ControlKeyword ControlKeyword Keyword ForStatement ControlKeyword Keyword Keyword Keyword EachStatement ControlKeyword Keyword WhileStatement ControlKeyword OutputStatement ControlKeyword AtRule Styles",maxTerm:196,context:sO,nodeProps:[["openedBy",1,"InterpolationStart",5,"InterpolationEnd",21,"(",43,"[",78,"{"],["isolate",-3,6,7,26,""],["closedBy",22,")",44,"]",70,"}"]],propSources:[XO],skippedNodes:[0,6,7,146],repeatNodeCount:21,tokenData:"!$Q~RyOq#rqr$jrs0jst2^tu8{uv;hvw;{wx<^xy={yz>^z{>c{|>||}Co}!ODQ!O!PDo!P!QFY!Q![Fk![!]Gf!]!^Hb!^!_Hs!_!`Is!`!aJ^!a!b#r!b!cKa!c!}#r!}#OMn#O#P#r#P#QNP#Q#RNb#R#T#r#T#UNw#U#c#r#c#d!!Y#d#o#r#o#p!!o#p#qNb#q#r!#Q#r#s!#c#s;'S#r;'S;=`!#z<%lO#rW#uSOy$Rz;'S$R;'S;=`$d<%lO$RW$WSzWOy$Rz;'S$R;'S;=`$d<%lO$RW$gP;=`<%l$RY$m[Oy$Rz!_$R!_!`%c!`#W$R#W#X%v#X#Z$R#Z#[)Z#[#]$R#]#^,V#^;'S$R;'S;=`$d<%lO$RY%jSzWlQOy$Rz;'S$R;'S;=`$d<%lO$RY%{UzWOy$Rz#X$R#X#Y&_#Y;'S$R;'S;=`$d<%lO$RY&dUzWOy$Rz#Y$R#Y#Z&v#Z;'S$R;'S;=`$d<%lO$RY&{UzWOy$Rz#T$R#T#U'_#U;'S$R;'S;=`$d<%lO$RY'dUzWOy$Rz#i$R#i#j'v#j;'S$R;'S;=`$d<%lO$RY'{UzWOy$Rz#`$R#`#a(_#a;'S$R;'S;=`$d<%lO$RY(dUzWOy$Rz#h$R#h#i(v#i;'S$R;'S;=`$d<%lO$RY(}S!nQzWOy$Rz;'S$R;'S;=`$d<%lO$RY)`UzWOy$Rz#`$R#`#a)r#a;'S$R;'S;=`$d<%lO$RY)wUzWOy$Rz#c$R#c#d*Z#d;'S$R;'S;=`$d<%lO$RY*`UzWOy$Rz#U$R#U#V*r#V;'S$R;'S;=`$d<%lO$RY*wUzWOy$Rz#T$R#T#U+Z#U;'S$R;'S;=`$d<%lO$RY+`UzWOy$Rz#`$R#`#a+r#a;'S$R;'S;=`$d<%lO$RY+yS!mQzWOy$Rz;'S$R;'S;=`$d<%lO$RY,[UzWOy$Rz#a$R#a#b,n#b;'S$R;'S;=`$d<%lO$RY,sUzWOy$Rz#d$R#d#e-V#e;'S$R;'S;=`$d<%lO$RY-[UzWOy$Rz#c$R#c#d-n#d;'S$R;'S;=`$d<%lO$RY-sUzWOy$Rz#f$R#f#g.V#g;'S$R;'S;=`$d<%lO$RY.[UzWOy$Rz#h$R#h#i.n#i;'S$R;'S;=`$d<%lO$RY.sUzWOy$Rz#T$R#T#U/V#U;'S$R;'S;=`$d<%lO$RY/[UzWOy$Rz#b$R#b#c/n#c;'S$R;'S;=`$d<%lO$RY/sUzWOy$Rz#h$R#h#i0V#i;'S$R;'S;=`$d<%lO$RY0^S!lQzWOy$Rz;'S$R;'S;=`$d<%lO$R~0mWOY0jZr0jrs1Vs#O0j#O#P1[#P;'S0j;'S;=`2W<%lO0j~1[Oj~~1_RO;'S0j;'S;=`1h;=`O0j~1kXOY0jZr0jrs1Vs#O0j#O#P1[#P;'S0j;'S;=`2W;=`<%l0j<%lO0j~2ZP;=`<%l0jZ2cY!ZPOy$Rz!Q$R!Q![3R![!c$R!c!i3R!i#T$R#T#Z3R#Z;'S$R;'S;=`$d<%lO$RY3WYzWOy$Rz!Q$R!Q![3v![!c$R!c!i3v!i#T$R#T#Z3v#Z;'S$R;'S;=`$d<%lO$RY3{YzWOy$Rz!Q$R!Q![4k![!c$R!c!i4k!i#T$R#T#Z4k#Z;'S$R;'S;=`$d<%lO$RY4rYhQzWOy$Rz!Q$R!Q![5b![!c$R!c!i5b!i#T$R#T#Z5b#Z;'S$R;'S;=`$d<%lO$RY5iYhQzWOy$Rz!Q$R!Q![6X![!c$R!c!i6X!i#T$R#T#Z6X#Z;'S$R;'S;=`$d<%lO$RY6^YzWOy$Rz!Q$R!Q![6|![!c$R!c!i6|!i#T$R#T#Z6|#Z;'S$R;'S;=`$d<%lO$RY7TYhQzWOy$Rz!Q$R!Q![7s![!c$R!c!i7s!i#T$R#T#Z7s#Z;'S$R;'S;=`$d<%lO$RY7xYzWOy$Rz!Q$R!Q![8h![!c$R!c!i8h!i#T$R#T#Z8h#Z;'S$R;'S;=`$d<%lO$RY8oShQzWOy$Rz;'S$R;'S;=`$d<%lO$R_9O`Oy$Rz}$R}!O:Q!O!Q$R!Q![:Q![!_$R!_!`;T!`!c$R!c!}:Q!}#R$R#R#S:Q#S#T$R#T#o:Q#o;'S$R;'S;=`$d<%lO$RZ:X^zWcROy$Rz}$R}!O:Q!O!Q$R!Q![:Q![!c$R!c!}:Q!}#R$R#R#S:Q#S#T$R#T#o:Q#o;'S$R;'S;=`$d<%lO$R[;[S!_SzWOy$Rz;'S$R;'S;=`$d<%lO$RZ;oS%SPlQOy$Rz;'S$R;'S;=`$d<%lO$RZQSfROy$Rz;'S$R;'S;=`$d<%lO$R~>cOe~_>jU$|PlQOy$Rz!_$R!_!`;T!`;'S$R;'S;=`$d<%lO$RZ?TWlQ!dPOy$Rz!O$R!O!P?m!P!Q$R!Q![Br![;'S$R;'S;=`$d<%lO$RZ?rUzWOy$Rz!Q$R!Q![@U![;'S$R;'S;=`$d<%lO$RZ@]YzW%OROy$Rz!Q$R!Q![@U![!g$R!g!h@{!h#X$R#X#Y@{#Y;'S$R;'S;=`$d<%lO$RZAQYzWOy$Rz{$R{|Ap|}$R}!OAp!O!Q$R!Q![BX![;'S$R;'S;=`$d<%lO$RZAuUzWOy$Rz!Q$R!Q![BX![;'S$R;'S;=`$d<%lO$RZB`UzW%OROy$Rz!Q$R!Q![BX![;'S$R;'S;=`$d<%lO$RZBy[zW%OROy$Rz!O$R!O!P@U!P!Q$R!Q![Br![!g$R!g!h@{!h#X$R#X#Y@{#Y;'S$R;'S;=`$d<%lO$RZCtSwROy$Rz;'S$R;'S;=`$d<%lO$RZDVWlQOy$Rz!O$R!O!P?m!P!Q$R!Q![Br![;'S$R;'S;=`$d<%lO$RZDtWqROy$Rz!O$R!O!PE^!P!Q$R!Q![@U![;'S$R;'S;=`$d<%lO$RYEcUzWOy$Rz!O$R!O!PEu!P;'S$R;'S;=`$d<%lO$RYE|SvQzWOy$Rz;'S$R;'S;=`$d<%lO$RYF_SlQOy$Rz;'S$R;'S;=`$d<%lO$RZFp[%OROy$Rz!O$R!O!P@U!P!Q$R!Q![Br![!g$R!g!h@{!h#X$R#X#Y@{#Y;'S$R;'S;=`$d<%lO$RkGkUucOy$Rz![$R![!]G}!];'S$R;'S;=`$d<%lO$RXHUS!SPzWOy$Rz;'S$R;'S;=`$d<%lO$RZHgS!oROy$Rz;'S$R;'S;=`$d<%lO$RjHzU!|`lQOy$Rz!_$R!_!`I^!`;'S$R;'S;=`$d<%lO$RjIgS!|`zWlQOy$Rz;'S$R;'S;=`$d<%lO$RnIzU!|`!_SOy$Rz!_$R!_!`%c!`;'S$R;'S;=`$d<%lO$RkJgV!aP!|`lQOy$Rz!_$R!_!`I^!`!aJ|!a;'S$R;'S;=`$d<%lO$RXKTS!aPzWOy$Rz;'S$R;'S;=`$d<%lO$RXKdYOy$Rz}$R}!OLS!O!c$R!c!}Lq!}#T$R#T#oLq#o;'S$R;'S;=`$d<%lO$RXLXWzWOy$Rz!c$R!c!}Lq!}#T$R#T#oLq#o;'S$R;'S;=`$d<%lO$RXLx[!rPzWOy$Rz}$R}!OLq!O!Q$R!Q![Lq![!c$R!c!}Lq!}#T$R#T#oLq#o;'S$R;'S;=`$d<%lO$RZMsS|ROy$Rz;'S$R;'S;=`$d<%lO$R_NUS{VOy$Rz;'S$R;'S;=`$d<%lO$R[NeUOy$Rz!_$R!_!`;T!`;'S$R;'S;=`$d<%lO$RkNzUOy$Rz#b$R#b#c! ^#c;'S$R;'S;=`$d<%lO$Rk! cUzWOy$Rz#W$R#W#X! u#X;'S$R;'S;=`$d<%lO$Rk! |SmczWOy$Rz;'S$R;'S;=`$d<%lO$Rk!!]UOy$Rz#f$R#f#g! u#g;'S$R;'S;=`$d<%lO$RZ!!tS!hROy$Rz;'S$R;'S;=`$d<%lO$RZ!#VS!pROy$Rz;'S$R;'S;=`$d<%lO$R]!#hU!dPOy$Rz!_$R!_!`;T!`;'S$R;'S;=`$d<%lO$RW!#}P;=`<%l#r",tokenizers:[iO,dO,lO,SO,oO,nO,rO,RO,0,1,2,3,4],topRules:{StyleSheet:[0,10],Styles:[1,145]},dialects:{indented:0},specialized:[{term:172,get:O=>PO[O]||-1},{term:171,get:O=>mO[O]||-1},{term:80,get:O=>fO[O]||-1},{term:173,get:O=>yO[O]||-1}],tokenPrec:3217}),P=V.define({name:"sass",parser:hO.configure({props:[p.add({Block:E,Comment(O,$){return{from:O.from+2,to:$.sliceDoc(O.to-2,O.to)=="*/"?O.to-2:O.to}}}),U.add({Declaration:N()})]}),languageData:{commentTokens:{block:{open:"/*",close:"*/"},line:"//"},indentOnInput:/^\s*\}$/,wordChars:"$-"}}),wO=P.configure({dialect:"indented",props:[U.add({"Block RuleSet":O=>O.baseIndent+O.unit}),p.add({Block:O=>({from:O.from,to:O.to})})]}),YO=x(O=>O.name=="VariableName"||O.name=="SassVariableName");function ZO(O){return new g(O!=null&&O.indented?wO:P,P.data.of({autocomplete:YO}))}export{ZO as sass,YO as sassCompletionSource,P as sassLanguage}; diff --git a/frontend/dist/assets/index-vozpzIjg.js b/frontend/dist/assets/index-vozpzIjg.js new file mode 100644 index 0000000..3af8282 --- /dev/null +++ b/frontend/dist/assets/index-vozpzIjg.js @@ -0,0 +1 @@ +import{a as O,L as r,i as b,k as s,f as a,l as t,s as P,t as e,e as n}from"./index--cDK8lVp.js";import"./index-BKKvzUDD.js";const S={__proto__:null,anyref:34,dataref:34,eqref:34,externref:34,i31ref:34,funcref:34,i8:34,i16:34,i32:34,i64:34,f32:34,f64:34},i=n.deserialize({version:14,states:"!^Q]QPOOOqQPO'#CbOOQO'#Cd'#CdOOQO'#Cl'#ClOOQO'#Ch'#ChQ]QPOOOOQO,58|,58|OxQPO,58|OOQO-E6f-E6fOOQO1G.h1G.h",stateData:"!P~O_OSPOSQOS~OTPOVROXROYROZROaQO~OSUO~P]OSXO~P]O",goto:"xaPPPPPPbPbPPPhPPPrXROPTVQTOQVPTWTVXSOPTV",nodeNames:"⚠ LineComment BlockComment Module ) ( App Identifier Type Keyword Number String",maxTerm:17,nodeProps:[["isolate",-3,1,2,11,""],["openedBy",4,"("],["closedBy",5,")"],["group",-6,6,7,8,9,10,11,"Expression"]],skippedNodes:[0,1,2],repeatNodeCount:1,tokenData:"0o~R^XY}YZ}]^}pq}rs!Stu#pxy'Uyz(e{|(j}!O(j!Q!R(s!R![*p!]!^.^#T#o.{~!SO_~~!VVOr!Srs!ls#O!S#O#P!q#P;'S!S;'S;=`#j<%lO!S~!qOZ~~!tRO;'S!S;'S;=`!};=`O!S~#QWOr!Srs!ls#O!S#O#P!q#P;'S!S;'S;=`#j;=`<%l!S<%lO!S~#mP;=`<%l!S~#siqr%bst%btu%buv%bvw%bwx%bz{%b{|%b}!O%b!O!P%b!P!Q%b!Q![%b![!]%b!^!_%b!_!`%b!`!a%b!a!b%b!b!c%b!c!}%b#Q#R%b#R#S%b#S#T%b#T#o%b#p#q%b#r#s%b~%giV~qr%bst%btu%buv%bvw%bwx%bz{%b{|%b}!O%b!O!P%b!P!Q%b!Q![%b![!]%b!^!_%b!_!`%b!`!a%b!a!b%b!b!c%b!c!}%b#Q#R%b#R#S%b#S#T%b#T#o%b#p#q%b#r#s%b~'ZPT~!]!^'^~'aTO!]'^!]!^'p!^;'S'^;'S;=`(_<%lO'^~'sVOy'^yz(Yz!]'^!]!^'p!^;'S'^;'S;=`(_<%lO'^~(_OQ~~(bP;=`<%l'^~(jOS~~(mQ!Q!R(s!R![*p~(xUY~!O!P)[!Q![*p!g!h){#R#S+U#X#Y){#l#m+[~)aRY~!Q![)j!g!h){#X#Y){~)oSY~!Q![)j!g!h){#R#S*j#X#Y){~*OR{|*X}!O*X!Q![*_~*[P!Q![*_~*dQY~!Q![*_#R#S*X~*mP!Q![)j~*uTY~!O!P)[!Q![*p!g!h){#R#S+U#X#Y){~+XP!Q![*p~+_R!Q![+h!c!i+h#T#Z+h~+mVY~!O!P,S!Q![+h!c!i+h!r!s-P#R#S+[#T#Z+h#d#e-P~,XTY~!Q![,h!c!i,h!r!s-P#T#Z,h#d#e-P~,mUY~!Q![,h!c!i,h!r!s-P#R#S.Q#T#Z,h#d#e-P~-ST{|-c}!O-c!Q![-o!c!i-o#T#Z-o~-fR!Q![-o!c!i-o#T#Z-o~-tSY~!Q![-o!c!i-o#R#S-c#T#Z-o~.TR!Q![,h!c!i,h#T#Z,h~.aP!]!^.d~.iSP~OY.dZ;'S.d;'S;=`.u<%lO.d~.xP;=`<%l.d~/QiX~qr.{st.{tu.{uv.{vw.{wx.{z{.{{|.{}!O.{!O!P.{!P!Q.{!Q![.{![!].{!^!_.{!_!`.{!`!a.{!a!b.{!b!c.{!c!}.{#Q#R.{#R#S.{#S#T.{#T#o.{#p#q.{#r#s.{",tokenizers:[0],topRules:{Module:[0,3]},specialized:[{term:9,get:o=>S[o]||-1}],tokenPrec:0}),Q=r.define({name:"wast",parser:i.configure({props:[b.add({App:s({closing:")",align:!1})}),a.add({App:t,BlockComment(o){return{from:o.from+2,to:o.to-2}}}),P({Keyword:e.keyword,Type:e.typeName,Number:e.number,String:e.string,Identifier:e.variableName,LineComment:e.lineComment,BlockComment:e.blockComment,"( )":e.paren})]}),languageData:{commentTokens:{line:";;",block:{open:"(;",close:";)"}},closeBrackets:{brackets:["(",'"']}}});function l(){return new O(Q)}export{l as wast,Q as wastLanguage}; diff --git a/frontend/dist/assets/install-BQfh6E0c.js b/frontend/dist/assets/install-BQfh6E0c.js new file mode 100644 index 0000000..b7fcd76 --- /dev/null +++ b/frontend/dist/assets/install-BQfh6E0c.js @@ -0,0 +1 @@ +import{_ as J,J as Bt,a1 as tt,aN as it,O as wt,K as Xt,r as qt,aU as Jt,aV as $t,Y,$ as jt,X as Ct,a8 as lt,aW as Qt,aM as Kt,a7 as vt,a9 as Ot,ad as nt,a3 as K,aX as ht,aY as Yt,aa as zt,W as xt,aZ as te,a_ as ee,U as st,s as x,R as Rt,u as q,a$ as ae,b0 as ft,ah as Vt,b1 as ct,ak as re,b2 as gt,d as mt,ae as pt,b3 as yt,a4 as et,b4 as bt,aQ as at,az as ie,b5 as ne,a0 as oe,E as Gt,b6 as le,b7 as se,af as ue,b8 as ve,b9 as he,S as St,ba as dt,bb as fe,bc as _t,ac as ce,v as ge,aj as me}from"./install-CZjWaVQv.js";var pe=(function(l){J(a,l);function a(){var t=l!==null&&l.apply(this,arguments)||this;return t.type=a.type,t.hasSymbolVisual=!0,t}return a.prototype.getInitialData=function(t){return Bt(null,this,{useEncodeDefaulter:!0})},a.prototype.getLegendIcon=function(t){var e=new tt,o=it("line",0,t.itemHeight/2,t.itemWidth,0,t.lineStyle.stroke,!1);e.add(o),o.setStyle(t.lineStyle);var r=this.getData().getVisual("symbol"),i=this.getData().getVisual("symbolRotate"),n=r==="none"?"circle":r,u=t.itemHeight*.8,s=it(n,(t.itemWidth-u)/2,(t.itemHeight-u)/2,u,u,t.itemStyle.fill);e.add(s),s.setStyle(t.itemStyle);var h=t.iconRotate==="inherit"?i:t.iconRotate||0;return s.rotation=h*Math.PI/180,s.setOrigin([t.itemWidth/2,t.itemHeight/2]),n.indexOf("empty")>-1&&(s.style.stroke=s.style.fill,s.style.fill=wt.color.neutral00,s.style.lineWidth=2),e},a.type="series.line",a.dependencies=["grid","polar"],a.defaultOption={z:3,coordinateSystem:"cartesian2d",legendHoverLink:!0,clip:!0,label:{position:"top"},endLabel:{show:!1,valueAnimation:!0,distance:8},lineStyle:{width:2,type:"solid"},emphasis:{scale:!0},step:!1,smooth:!1,smoothMonotone:null,symbol:"emptyCircle",symbolSize:6,symbolRotate:null,showSymbol:!0,showAllSymbol:"auto",connectNulls:!1,sampling:"none",animationEasing:"linear",progressive:0,hoverLayerThreshold:1/0,universalTransition:{divideShape:"clone"},triggerLineEvent:!1,triggerEvent:!1},a})(Xt),ut=(function(l){J(a,l);function a(t,e,o,r){var i=l.call(this)||this;return i.updateData(t,e,o,r),i}return a.prototype._createSymbol=function(t,e,o,r,i,n){this.removeAll();var u=it(t,-1,-1,2,2,null,n);u.attr({z2:qt(i,100),culling:!0,scaleX:r[0]/2,scaleY:r[1]/2}),u.drift=ye,this._symbolType=t,this.add(u)},a.prototype.stopSymbolAnimation=function(t){this.childAt(0).stopAnimation(null,t)},a.prototype.getSymbolType=function(){return this._symbolType},a.prototype.getSymbolPath=function(){return this.childAt(0)},a.prototype.highlight=function(){Jt(this.childAt(0))},a.prototype.downplay=function(){$t(this.childAt(0))},a.prototype.setZ=function(t,e){var o=this.childAt(0);o.zlevel=t,o.z=e},a.prototype.setDraggable=function(t,e){var o=this.childAt(0);o.draggable=t,o.cursor=!e&&t?"move":o.cursor},a.prototype.updateData=function(t,e,o,r){this.silent=!1;var i=t.getItemVisual(e,"symbol")||"circle",n=t.hostModel,u=a.getSymbolSize(t,e),s=a.getSymbolZ2(t,e),h=i!==this._symbolType,v=r&&r.disableAnimation;if(h){var c=t.getItemVisual(e,"symbolKeepAspect");this._createSymbol(i,t,e,u,s,c)}else{var f=this.childAt(0);f.silent=!1;var g={scaleX:u[0]/2,scaleY:u[1]/2};v?f.attr(g):Y(f,g,n,e),jt(f)}if(this._updateCommon(t,e,u,o,r),h){var f=this.childAt(0);if(!v){var g={scaleX:this._sizeX,scaleY:this._sizeY,style:{opacity:f.style.opacity}};f.scaleX=f.scaleY=0,f.style.opacity=0,Ct(f,g,n,e)}}v&&this.childAt(0).stopAnimation("leave")},a.prototype._updateCommon=function(t,e,o,r,i){var n=this.childAt(0),u=t.hostModel,s,h,v,c,f,g,m,S,p;if(r&&(s=r.emphasisItemStyle,h=r.blurItemStyle,v=r.selectItemStyle,c=r.focus,f=r.blurScope,m=r.labelStatesModels,S=r.hoverScale,p=r.cursorStyle,g=r.emphasisDisabled),!r||t.hasItemOption){var y=r&&r.itemModel?r.itemModel:t.getItemModel(e),b=y.getModel("emphasis");s=b.getModel("itemStyle").getItemStyle(),v=y.getModel(["select","itemStyle"]).getItemStyle(),h=y.getModel(["blur","itemStyle"]).getItemStyle(),c=b.get("focus"),f=b.get("blurScope"),g=b.get("disabled"),m=lt(y),S=b.getShallow("scale"),p=y.getShallow("cursor")}var I=t.getItemVisual(e,"symbolRotate");n.attr("rotation",(I||0)*Math.PI/180||0);var D=Qt(t.getItemVisual(e,"symbolOffset"),o);D&&(n.x=D[0],n.y=D[1]),p&&n.attr("cursor",p);var _=t.getItemVisual(e,"style"),d=_.fill;if(n instanceof Kt){var k=n.style;n.useStyle(vt({image:k.image,x:k.x,y:k.y,width:k.width,height:k.height},_))}else n.__isEmptyBrush?n.useStyle(vt({},_)):n.useStyle(_),n.style.decal=null,n.setColor(d,i&&i.symbolInnerColor),n.style.strokeNoScale=!0;var A=t.getItemVisual(e,"liftZ"),E=this._z2;A!=null?E==null&&(this._z2=n.z2,n.z2+=A):E!=null&&(n.z2=E,this._z2=null);var L=i&&i.useNameLabel;Ot(n,m,{labelFetcher:u,labelDataIndex:e,defaultText:P,inheritColor:d,defaultOpacity:_.opacity});function P(O){return L?t.getName(O):zt(t,O)}this._sizeX=o[0]/2,this._sizeY=o[1]/2;var T=n.ensureState("emphasis");T.style=s,n.ensureState("select").style=v,n.ensureState("blur").style=h;var R=S==null||S===!0?Math.max(1.1,3/this._sizeY):isFinite(S)&&S>0?+S:1;T.scaleX=this._sizeX*R,T.scaleY=this._sizeY*R,this.setSymbolScale(1),nt(this,c,f,g)},a.prototype.setSymbolScale=function(t){this.scaleX=this.scaleY=t},a.prototype.fadeOut=function(t,e,o){var r=this.childAt(0),i=K(this).dataIndex,n=o&&o.animation;if(this.silent=r.silent=!0,o&&o.fadeLabel){var u=r.getTextContent();u&&ht(u,{style:{opacity:0}},e,{dataIndex:i,removeOpt:n,cb:function(){r.removeTextContent()}})}else r.removeTextContent();ht(r,{style:{opacity:0},scaleX:0,scaleY:0},e,{dataIndex:i,cb:t,removeOpt:n})},a.getSymbolSize=function(t,e){return Yt(t.getItemVisual(e,"symbolSize"))},a.getSymbolZ2=function(t,e){return t.getItemVisual(e,"z2")},a})(tt);function ye(l,a){this.parent.drift(l,a)}function Q(l,a,t,e){return a&&!isNaN(a[0])&&!isNaN(a[1])&&!(e&&e.isIgnore&&e.isIgnore(t))&&!(e&&e.clipShape&&!e.clipShape.contain(a[0],a[1]))&&l.getItemVisual(t,"symbol")!=="none"}function Dt(l){return l!=null&&!ee(l)&&(l={isIgnore:l}),l||{}}function It(l){var a=l.hostModel,t=a.getModel("emphasis");return{emphasisItemStyle:t.getModel("itemStyle").getItemStyle(),blurItemStyle:a.getModel(["blur","itemStyle"]).getItemStyle(),selectItemStyle:a.getModel(["select","itemStyle"]).getItemStyle(),focus:t.get("focus"),blurScope:t.get("blurScope"),emphasisDisabled:t.get("disabled"),hoverScale:t.get("scale"),labelStatesModels:lt(a),cursorStyle:a.get("cursor")}}function Et(l,a,t,e,o,r,i){var n=new l(a,t,e,o);return n.setPosition(r),a.setItemGraphicEl(t,n),i.add(n),n}var be=(function(){function l(a){this.group=new tt,this._SymbolCtor=a||ut}return l.prototype.updateData=function(a,t){this._progressiveEls=null,t=Dt(t);var e=this.group,o=a.hostModel,r=this._data,i=this._SymbolCtor,n=t.disableAnimation,u=this._seriesScope=It(a),s={disableAnimation:n},h=t.getSymbolPoint||function(v){return a.getItemLayout(v)};r||e.removeAll(),a.diff(r).add(function(v){var c=h(v);Q(a,c,v,t)&&Et(i,a,v,u,s,c,e)}).update(function(v,c){var f=r.getItemGraphicEl(c),g=h(v);if(!Q(a,g,v,t)){e.remove(f);return}var m=a.getItemVisual(v,"symbol")||"circle",S=f&&f.getSymbolType&&f.getSymbolType();if(!f||S&&S!==m)e.remove(f),f=new i(a,v,u,s),f.setPosition(g);else{f.updateData(a,v,u,s);var p={x:g[0],y:g[1]};n?f.attr(p):Y(f,p,o)}e.add(f),a.setItemGraphicEl(v,f)}).remove(function(v){var c=r.getItemGraphicEl(v);c&&c.fadeOut(function(){e.remove(c)},o)}).execute(),this._getSymbolPoint=h,this._data=a},l.prototype.updateLayout=function(a){var t=this._data;if(t)for(var e=this,o=t.getStore(),r=0,i=o.count();r0?t=e[0]:e[1]<0&&(t=e[1]),t}function Nt(l,a,t,e){var o=NaN;l.stacked&&(o=t.get(t.getCalculationInfo("stackedOverDimension"),e)),isNaN(o)&&(o=l.valueStart);var r=l.baseDataOffset,i=[];return i[r]=t.get(l.baseDim,e),i[1-r]=o,a.dataToPoint(i)}function V(l,a){return!isFinite(l)||!isFinite(a)}function de(l,a){var t=[];return a.diff(l).add(function(e){t.push({cmd:"+",idx:e})}).update(function(e,o){t.push({cmd:"=",idx:o,idx1:e})}).remove(function(e){t.push({cmd:"-",idx:e})}).execute(),t}function _e(l,a,t,e,o,r,i,n){for(var u=de(l,a),s=[],h=[],v=[],c=[],f=[],g=[],m=[],S=Ft(o,a,i),p=l.getLayout("points")||[],y=a.getLayout("points")||[],b=0;b=o||m<0)break;if(V(p,y)){if(u){m+=r;continue}break}if(m===t)l[r>0?"moveTo":"lineTo"](p,y),v=p,c=y;else{var b=p-s,I=y-h;if(b*b+I*I<.5){m+=r;continue}if(i>0){for(var D=m+r,_=a[D*2],d=a[D*2+1];_===p&&d===y&&S=e||V(_,d))f=p,g=y;else{E=_-s,L=d-h;var R=p-s,O=_-p,z=y-h,M=d-y,w=void 0,C=void 0;if(n==="x"){w=Math.abs(R),C=Math.abs(O);var H=E>0?1:-1;f=p-H*w*i,g=y,P=p+H*C*i,T=y}else if(n==="y"){w=Math.abs(z),C=Math.abs(M);var U=L>0?1:-1;f=p,g=y-U*w*i,P=p,T=y+U*C*i}else w=Math.sqrt(R*R+z*z),C=Math.sqrt(O*O+M*M),A=C/(C+w),f=p-E*i*(1-A),g=y-L*i*(1-A),P=p+E*i*A,T=y+L*i*A,P=W(P,Z(_,p)),T=W(T,Z(d,y)),P=Z(P,W(_,p)),T=Z(T,W(d,y)),E=P-p,L=T-y,f=p-E*w/C,g=y-L*w/C,f=W(f,Z(s,p)),g=W(g,Z(h,y)),f=Z(f,W(s,p)),g=Z(g,W(h,y)),E=p-f,L=y-g,P=p+E*C/w,T=y+L*C/w}l.bezierCurveTo(v,c,f,g,p,y),v=P,c=T}else l.lineTo(p,y)}s=p,h=y,m+=r}return S}var Mt=(function(){function l(){this.smooth=0,this.smoothConstraint=!0}return l})(),De=(function(l){J(a,l);function a(t){var e=l.call(this,t)||this;return e.type="ec-polyline",e}return a.prototype.getDefaultStyle=function(){return{stroke:wt.color.neutral99,fill:null}},a.prototype.getDefaultShape=function(){return new Mt},a.prototype.buildPath=function(t,e){var o=e.points,r=0,i=o.length/2;if(e.connectNulls){for(;i>0&&V(o[i*2-2],o[i*2-1]);i--);for(;r=0){var I=s?(g-u)*b+u:(f-n)*b+n;return s?[t,I]:[I,t]}n=f,u=g;break;case i.C:f=r[v++],g=r[v++],m=r[v++],S=r[v++],p=r[v++],y=r[v++];var D=s?ft(n,f,m,p,t,h):ft(u,g,S,y,t,h);if(D>0)for(var _=0;_=0){var I=s?ct(u,g,S,y,d):ct(n,f,m,p,d);return s?[t,I]:[I,t]}}n=p,u=y;break}}},a})(Vt),Ie=(function(l){J(a,l);function a(){return l!==null&&l.apply(this,arguments)||this}return a})(Mt),Ee=(function(l){J(a,l);function a(t){var e=l.call(this,t)||this;return e.type="ec-polygon",e}return a.prototype.getDefaultShape=function(){return new Ie},a.prototype.buildPath=function(t,e){var o=e.points,r=e.stackedOnPoints,i=0,n=o.length/2,u=e.smoothMonotone;if(e.connectNulls){for(;n>0&&V(o[n*2-2],o[n*2-1]);n--);for(;ia){r?t.push(i(r,u,a)):o&&t.push(i(o,u,0),i(o,u,a));break}else o&&(t.push(i(o,u,0)),o=null),t.push(u),r=u}return t}function Le(l,a,t){var e=l.getVisual("visualMeta");if(!(!e||!e.length||!l.count())&&a.type==="cartesian2d"){for(var o,r,i=e.length-1;i>=0;i--){var n=l.getDimensionInfo(e[i].dimension);if(o=n&&n.coordDim,o==="x"||o==="y"){r=e[i];break}}if(r){var u=a.getAxis(o),s=st(r.stops,function(b){return{coord:u.toGlobalCoord(u.dataToCoord(b.value)),color:b.color}}),h=s.length,v=r.outerColors.slice();h&&s[0].coord>s[h-1].coord&&(s.reverse(),v.reverse());var c=Ae(s,o==="x"?t.getWidth():t.getHeight()),f=c.length;if(!f&&h)return s[0].coord<0?v[1]?v[1]:s[h-1].color:v[0]?v[0]:s[0].color;var g=10,m=c[0].coord-g,S=c[f-1].coord+g,p=S-m;if(p<.001)return"transparent";Gt(c,function(b){b.offset=(b.coord-m)/p}),c.push({offset:f?c[f-1].offset:.5,color:v[1]||"transparent"}),c.unshift({offset:f?c[0].offset:.5,color:v[0]||"transparent"});var y=new se(0,0,0,0,c,!0);return y[o]=m,y[o+"2"]=S,y}}}function ke(l,a,t){var e=l.get("showAllSymbol"),o=e==="auto";if(!(e&&!o)){var r=t.getAxesByScale("ordinal")[0];if(r&&!(o&&Te(r,a))){var i=a.mapDimension(r.dim),n={};return Gt(r.getViewLabels(),function(u){u.tick.offInterval||(n[le(r.scale,u.tick)]=1)}),function(u){return!n.hasOwnProperty(a.get(i,u))}}}}function Te(l,a){var t=l.getExtent(),e=Math.abs(t[1]-t[0])/l.scale.count();isNaN(e)&&(e=0);for(var o=a.count(),r=Math.max(1,Math.round(o/5)),i=0;ie)return!1;return!0}function we(l){for(var a=l.length/2;a>0&&V(l[a*2-2],l[a*2-1]);a--);return a-1}function Tt(l,a){return[l[a*2],l[a*2+1]]}function Ce(l,a,t){for(var e=l.length/2,o=t==="x"?0:1,r,i,n=0,u=-1,s=0;s=a||r>=a&&i<=a){u=s;break}n=s,r=i}return{range:[n,u],t:(a-r)/(i-r)}}function Ht(l){if(l.get(["endLabel","show"]))return!0;for(var a=0;a0&&t.get(["emphasis","lineStyle","width"])==="bolder"){var C=g.getState("emphasis").style;C.lineWidth=+g.style.lineWidth+1}K(g).seriesIndex=t.seriesIndex,nt(g,z,M,w);var H=kt(t.get("smooth")),U=t.get("smoothMonotone");if(g.setShape({smooth:H,smoothMonotone:U,connectNulls:d}),m){var $=n.getCalculationInfo("stackedOnSeries"),G=0;m.useStyle(mt(s.getAreaStyle(),{fill:P,opacity:.7,lineJoin:"bevel",decal:n.getVisual("style").decal})),$&&(G=kt($.get("smooth"))),m.setShape({smooth:H,stackedOnSmooth:G,smoothMonotone:U,connectNulls:d}),pt(m,t,"areaStyle"),K(m).seriesIndex=t.seriesIndex,nt(m,z,M,w)}var F=this._changePolyState;n.eachItemGraphicEl(function(N){N&&(N.onHoverStateChange=F)}),this._polyline.onHoverStateChange=F,this._data=n,this._coordSys=r,this._stackedOnPoints=D,this._points=h,this._step=E,this._valueOrigin=b;var X=t.get("triggerEvent"),j=t.get("triggerLineEvent"),Ut=j===!0||X===!0||X==="line",Wt=j===!0||X===!0||X==="area";this.packEventData(t,g,Ut),m&&this.packEventData(t,m,Wt)},a.prototype.packEventData=function(t,e,o){K(e).eventData=o?{componentType:"series",componentSubType:"line",componentIndex:t.componentIndex,seriesIndex:t.seriesIndex,seriesName:t.name,seriesType:"line",selfType:e===this._polygon?"area":"line"}:null},a.prototype.highlight=function(t,e,o,r){var i=t.getData(),n=yt(i,r);if(this._changePolyState("emphasis"),!(n instanceof Array)&&n!=null&&n>=0){var u=i.getLayout("points"),s=i.getItemGraphicEl(n);if(!s){var h=u[n*2],v=u[n*2+1];if(V(h,v)||this._clipShapeForSymbol&&!this._clipShapeForSymbol.contain(h,v))return;var c=t.get("zlevel")||0,f=t.get("z")||0;s=new ut(i,n),s.x=h,s.y=v,s.setZ(c,f);var g=s.getSymbolPath().getTextContent();g&&(g.zlevel=c,g.z=f,g.z2=this._polyline.z2+1),s.__temp=!0,i.setItemGraphicEl(n,s),s.stopSymbolAnimation(!0),this.group.add(s)}s.highlight()}else et.prototype.highlight.call(this,t,e,o,r)},a.prototype.downplay=function(t,e,o,r){var i=t.getData(),n=yt(i,r);if(this._changePolyState("normal"),n!=null&&n>=0){var u=i.getItemGraphicEl(n);u&&(u.__temp?(i.setItemGraphicEl(n,null),this.group.remove(u)):u.downplay())}else et.prototype.downplay.call(this,t,e,o,r)},a.prototype._changePolyState=function(t){var e=this._polygon;bt(this._polyline,t),e&&bt(e,t)},a.prototype._newPolyline=function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new De({shape:{points:t},segmentIgnoreThreshold:2,z2:10}),this._lineGroup.add(e),this._polyline=e,e},a.prototype._newPolygon=function(t,e){var o=this._polygon;return o&&this._lineGroup.remove(o),o=new Ee({shape:{points:t,stackedOnPoints:e},segmentIgnoreThreshold:2}),this._lineGroup.add(o),this._polygon=o,o},a.prototype._initSymbolLabelAnimation=function(t,e,o){var r,i,n=e.getBaseAxis(),u=n.inverse;e.type==="cartesian2d"?(r=n.isHorizontal(),i=!1):e.type==="polar"&&(r=n.dim==="angle",i=!0);var s=t.hostModel,h=s.get("animationDuration");at(h)&&(h=h(null));var v=s.get("animationDelay")||0,c=at(v)?v(null):v;t.eachItemGraphicEl(function(f,g){var m=f;if(m){var S=[f.x,f.y],p=void 0,y=void 0,b=void 0;if(o)if(i){var I=o,D=e.pointToCoord(S);r?(p=I.startAngle,y=I.endAngle,b=-D[1]/180*Math.PI):(p=I.r0,y=I.r,b=D[0])}else{var _=o;r?(p=_.x,y=_.x+_.width,b=f.x):(p=_.y+_.height,y=_.y,b=f.y)}var d=y===p?0:(b-p)/(y-p);u&&(d=1-d);var k=at(v)?v(g):h*d+c,A=m.getSymbolPath(),E=A.getTextContent();m.attr({scaleX:0,scaleY:0}),m.animateTo({scaleX:1,scaleY:1},{duration:200,setToFinal:!0,delay:k}),E&&E.animateFrom({style:{opacity:0}},{duration:300,delay:k}),A.disableLabelAnimation=!0}})},a.prototype._initOrUpdateEndLabel=function(t,e,o){var r=t.getModel("endLabel");if(Ht(t)){var i=t.getData(),n=this._polyline,u=i.getLayout("points");if(!u){n.removeTextContent(),this._endLabel=null;return}var s=this._endLabel;s||(s=this._endLabel=new ie({z2:200}),s.ignoreClip=!0,n.setTextContent(this._endLabel),n.disableLabelAnimation=!0);var h=we(u);h>=0&&(Ot(n,lt(t,"endLabel"),{inheritColor:o,labelFetcher:t,labelDataIndex:h,defaultText:function(v,c,f){return f!=null?ce(i,f):zt(i,v)},enableTextSetter:!0},Oe(r,e)),n.textConfig.position=null)}else this._endLabel&&(this._polyline.removeTextContent(),this._endLabel=null)},a.prototype._endLabelOnDuring=function(t,e,o,r,i,n,u){var s=this._endLabel,h=this._polyline;if(s){t<1&&r.originalX==null&&(r.originalX=s.x,r.originalY=s.y);var v=o.getLayout("points"),c=o.hostModel,f=c.get("connectNulls"),g=n.get("precision"),m=n.get("distance")||0,S=u.getBaseAxis(),p=S.isHorizontal(),y=S.inverse,b=e.shape,I=y?p?b.x:b.y+b.height:p?b.x+b.width:b.y,D=(p?m:0)*(y?-1:1),_=(p?0:-m)*(y?-1:1),d=p?"x":"y",k=Ce(v,I,d),A=k.range,E=A[1]-A[0],L=void 0;if(E>=1){if(E>1&&!f){var P=Tt(v,A[0]);s.attr({x:P[0]+D,y:P[1]+_}),i&&(L=c.getRawValue(A[0]))}else{var P=h.getPointOn(I,d);P&&s.attr({x:P[0]+D,y:P[1]+_});var T=c.getRawValue(A[0]),R=c.getRawValue(A[1]);i&&(L=ne(o,g,T,R,k.t))}r.lastFrameIndex=A[0]}else{var O=t===1||r.lastFrameIndex>0?A[0]:0,P=Tt(v,O);i&&(L=c.getRawValue(O)),s.attr({x:P[0]+D,y:P[1]+_})}if(i){var z=oe(s);typeof z.setLabelText=="function"&&z.setLabelText(L)}}},a.prototype._doUpdateAnimation=function(t,e,o,r,i,n,u){var s=this._polyline,h=this._polygon,v=t.hostModel,c=_e(this._data,t,this._stackedOnPoints,e,this._coordSys,o,this._valueOrigin),f=c.current,g=c.stackedOnCurrent,m=c.next,S=c.stackedOnNext;if(i&&(g=B(c.stackedOnCurrent,c.current,o,i,u),f=B(c.current,null,o,i,u),S=B(c.stackedOnNext,c.next,o,i,u),m=B(c.next,null,o,i,u)),Lt(f,m)>3e3||h&&Lt(g,S)>3e3){s.stopAnimation(),s.setShape({points:m}),h&&(h.stopAnimation(),h.setShape({points:m,stackedOnPoints:S}));return}s.shape.__points=c.current,s.shape.points=f;var p={shape:{points:m}};c.current!==f&&(p.shape.__points=c.next),s.stopAnimation(),Y(s,p,v),h&&(h.setShape({points:f,stackedOnPoints:g}),h.stopAnimation(),Y(h,{shape:{stackedOnPoints:S}},v),s.shape.points!==h.shape.points&&(h.shape.points=s.shape.points));for(var y=[],b=c.status,I=0;It in e?p_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var cc=(e,t,r)=>g_(e,typeof t!="symbol"?t+"":t,r);import{d as m_,aV as y_,D as yo,a1 as tg,G as eg,H as __,I as _l,aT as Sl,j as Pi,P as S_,aX as T_,ah as w_,B as _o,c_ as Ks,bm as x_,bW as So}from"./index-BKKvzUDD.js";/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */var Tl=function(e,t){return Tl=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,n){r.__proto__=n}||function(r,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[i]=n[i])},Tl(e,t)};function z(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");Tl(e,t);function r(){this.constructor=e}e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}var b_=(function(){function e(){this.firefox=!1,this.ie=!1,this.edge=!1,this.newEdge=!1,this.weChat=!1}return e})(),C_=(function(){function e(){this.browser=new b_,this.node=!1,this.wxa=!1,this.worker=!1,this.svgSupported=!1,this.touchEventsSupported=!1,this.pointerEventsSupported=!1,this.domSupported=!1,this.transformSupported=!1,this.transform3dSupported=!1,this.hasGlobalWindow=typeof window<"u"}return e})(),K=new C_;typeof wx=="object"&&typeof wx.getSystemInfoSync=="function"?(K.wxa=!0,K.touchEventsSupported=!0):typeof document>"u"&&typeof self<"u"?K.worker=!0:!K.hasGlobalWindow||"Deno"in window||typeof navigator<"u"&&typeof navigator.userAgent=="string"&&navigator.userAgent.indexOf("Node.js")>-1?(K.node=!0,K.svgSupported=!0):M_(navigator.userAgent,K);function M_(e,t){var r=t.browser,n=e.match(/Firefox\/([\d.]+)/),i=e.match(/MSIE\s([\d.]+)/)||e.match(/Trident\/.+?rv:(([\d.]+))/),a=e.match(/Edge?\/([\d.]+)/),o=/micromessenger/i.test(e);n&&(r.firefox=!0,r.version=n[1]),i&&(r.ie=!0,r.version=i[1]),a&&(r.edge=!0,r.version=a[1],r.newEdge=+a[1].split(".")[0]>18),o&&(r.weChat=!0),t.svgSupported=typeof SVGRect<"u",t.touchEventsSupported="ontouchstart"in window&&!r.ie&&!r.edge,t.pointerEventsSupported="onpointerdown"in window&&(r.edge||r.ie&&+r.version>=11);var s=t.domSupported=typeof document<"u";if(s){var u=document.documentElement.style;t.transform3dSupported=(r.ie&&"transition"in u||r.edge||"WebKitCSSMatrix"in window&&"m11"in new WebKitCSSMatrix||"MozPerspective"in u)&&!("OTransition"in u),t.transformSupported=t.transform3dSupported||r.ie&&+r.version>=9}}var Gf=12,D_="sans-serif",Sr=Gf+"px "+D_,A_=20,L_=100,I_="007LLmW'55;N0500LLLLLLLLLL00NNNLzWW\\\\WQb\\0FWLg\\bWb\\WQ\\WrWWQ000CL5LLFLL0LL**F*gLLLL5F0LF\\FFF5.5N";function P_(e){var t={};if(typeof JSON>"u")return t;for(var r=0;r=0)s=o*r.length;else for(var u=0;u=B_&&(Qs=0),Qs++}function Yf(){for(var e=[],t=0;t>1)%2;s.cssText=["position: absolute","visibility: hidden","padding: 0","margin: 0","border-width: 0","user-select: none","width:0","height:0",n[u]+":0",i[l]+":0",n[1-u]+":auto",i[1-l]+":auto",""].join("!important;"),e.appendChild(o),r.push(o)}return t.clearMarkers=function(){b(r,function(f){f.parentNode&&f.parentNode.removeChild(f)})},r}function a1(e,t,r){for(var n=r?"invTrans":"trans",i=t[n],a=t.srcCoords,o=[],s=[],u=!0,l=0;l<4;l++){var f=e[l].getBoundingClientRect(),h=2*l,c=f.left,v=f.top;o.push(c,v),u=u&&a&&c===a[h]&&v===a[h+1],s.push(e[l].offsetLeft,e[l].offsetTop)}return u&&i?i:(t.srcCoords=o,t[n]=r?gc(s,o):gc(o,s))}function ug(e){return e.nodeName.toUpperCase()==="CANVAS"}var o1=/([&<>"'])/g,s1={"&":"&","<":"<",">":">",'"':""","'":"'"};function Yt(e){return e==null?"":(e+"").replace(o1,function(t,r){return s1[r]})}var u1=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,eu=[],l1=K.browser.firefox&&+K.browser.version.split(".")[0]<39;function Dl(e,t,r,n){return r=r||{},n?mc(e,t,r):l1&&t.layerX!=null&&t.layerX!==t.offsetX?(r.zrX=t.layerX,r.zrY=t.layerY):t.offsetX!=null?(r.zrX=t.offsetX,r.zrY=t.offsetY):mc(e,t,r),r}function mc(e,t,r){if(K.domSupported&&e.getBoundingClientRect){var n=t.clientX,i=t.clientY;if(ug(e)){var a=e.getBoundingClientRect();r.zrX=n-a.left,r.zrY=i-a.top;return}else if(Ml(eu,e,n,i)){r.zrX=eu[0],r.zrY=eu[1];return}}r.zrX=r.zrY=0}function $f(e){return e||window.event}function le(e,t,r){if(t=$f(t),t.zrX!=null)return t;var n=t.type,i=n&&n.indexOf("touch")>=0;if(i){var o=n!=="touchend"?t.targetTouches[0]:t.changedTouches[0];o&&Dl(e,o,t,r)}else{Dl(e,t,t,r);var a=f1(t);t.zrDelta=a?a/120:-(t.detail||0)/3}var s=t.button;return t.which==null&&s!==void 0&&u1.test(t.type)&&(t.which=s&1?1:s&2?3:s&4?2:0),t}function f1(e){var t=e.wheelDelta;if(t)return t;var r=e.deltaX,n=e.deltaY;if(r==null||n==null)return t;var i=Math.abs(n!==0?n:r),a=n>0?-1:n<0?1:r>0?-1:1;return 3*i*a}function h1(e,t,r,n){e.addEventListener(t,r,n)}function c1(e,t,r,n){e.removeEventListener(t,r,n)}var lg=function(e){e.preventDefault(),e.stopPropagation(),e.cancelBubble=!0};function M2(e){return e.which===2||e.which===3}var v1=(function(){function e(){this._track=[]}return e.prototype.recognize=function(t,r,n){return this._doTrack(t,r,n),this._recognize(t)},e.prototype.clear=function(){return this._track.length=0,this},e.prototype._doTrack=function(t,r,n){var i=t.touches;if(i){for(var a={points:[],touches:[],target:r,event:t},o=0,s=i.length;o1&&n&&n.length>1){var a=yc(n)/yc(i);!isFinite(a)&&(a=1),t.pinchScale=a;var o=d1(n);return t.pinchX=o[0],t.pinchY=o[1],{type:"pinch",target:e[0].target,event:t}}}}};function Be(){return[1,0,0,1,0,0]}function ma(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=1,e[4]=0,e[5]=0,e}function qf(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e}function Vi(e,t,r){var n=t[0]*r[0]+t[2]*r[1],i=t[1]*r[0]+t[3]*r[1],a=t[0]*r[2]+t[2]*r[3],o=t[1]*r[2]+t[3]*r[3],s=t[0]*r[4]+t[2]*r[5]+t[4],u=t[1]*r[4]+t[3]*r[5]+t[5];return e[0]=n,e[1]=i,e[2]=a,e[3]=o,e[4]=s,e[5]=u,e}function Al(e,t,r){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4]+r[0],e[5]=t[5]+r[1],e}function Kf(e,t,r,n){n===void 0&&(n=[0,0]);var i=t[0],a=t[2],o=t[4],s=t[1],u=t[3],l=t[5],f=Math.sin(r),h=Math.cos(r);return e[0]=i*h+s*f,e[1]=-i*f+s*h,e[2]=a*h+u*f,e[3]=-a*f+h*u,e[4]=h*(o-n[0])+f*(l-n[1])+n[0],e[5]=h*(l-n[1])-f*(o-n[0])+n[1],e}function p1(e,t,r){var n=r[0],i=r[1];return e[0]=t[0]*n,e[1]=t[1]*i,e[2]=t[2]*n,e[3]=t[3]*i,e[4]=t[4]*n,e[5]=t[5]*i,e}function ya(e,t){var r=t[0],n=t[2],i=t[4],a=t[1],o=t[3],s=t[5],u=r*o-a*n;return u?(u=1/u,e[0]=o*u,e[1]=-a*u,e[2]=-n*u,e[3]=r*u,e[4]=(n*s-o*i)*u,e[5]=(a*i-r*s)*u,e):null}var ct=(function(){function e(t,r){this.x=t||0,this.y=r||0}return e.prototype.copy=function(t){return this.x=t.x,this.y=t.y,this},e.prototype.clone=function(){return new e(this.x,this.y)},e.prototype.set=function(t,r){return this.x=t,this.y=r,this},e.prototype.equal=function(t){return t.x===this.x&&t.y===this.y},e.prototype.add=function(t){return this.x+=t.x,this.y+=t.y,this},e.prototype.scale=function(t){this.x*=t,this.y*=t},e.prototype.scaleAndAdd=function(t,r){this.x+=t.x*r,this.y+=t.y*r},e.prototype.sub=function(t){return this.x-=t.x,this.y-=t.y,this},e.prototype.dot=function(t){return this.x*t.x+this.y*t.y},e.prototype.len=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},e.prototype.lenSquare=function(){return this.x*this.x+this.y*this.y},e.prototype.normalize=function(){var t=this.len();return this.x/=t,this.y/=t,this},e.prototype.distance=function(t){var r=this.x-t.x,n=this.y-t.y;return Math.sqrt(r*r+n*n)},e.prototype.distanceSquare=function(t){var r=this.x-t.x,n=this.y-t.y;return r*r+n*n},e.prototype.negate=function(){return this.x=-this.x,this.y=-this.y,this},e.prototype.transform=function(t){if(t){var r=this.x,n=this.y;return this.x=t[0]*r+t[2]*n+t[4],this.y=t[1]*r+t[3]*n+t[5],this}},e.prototype.toArray=function(t){return t[0]=this.x,t[1]=this.y,t},e.prototype.fromArray=function(t){this.x=t[0],this.y=t[1]},e.set=function(t,r,n){t.x=r,t.y=n},e.copy=function(t,r){t.x=r.x,t.y=r.y},e.len=function(t){return Math.sqrt(t.x*t.x+t.y*t.y)},e.lenSquare=function(t){return t.x*t.x+t.y*t.y},e.dot=function(t,r){return t.x*r.x+t.y*r.y},e.add=function(t,r,n){t.x=r.x+n.x,t.y=r.y+n.y},e.sub=function(t,r,n){t.x=r.x-n.x,t.y=r.y-n.y},e.scale=function(t,r,n){t.x=r.x*n,t.y=r.y*n},e.scaleAndAdd=function(t,r,n,i){t.x=r.x+n.x*i,t.y=r.y+n.y*i},e.lerp=function(t,r,n,i){var a=1-i;t.x=a*r.x+i*n.x,t.y=a*r.y+i*n.y},e})(),jr=Math.min,Fn=Math.max,Ll=Math.abs,_c=["x","y"],g1=["width","height"],Dr=new ct,Ar=new ct,Lr=new ct,Ir=new ct,te=fg(),Ei=te.minTv,Il=te.maxTv,Gi=[0,0],Z=(function(){function e(t,r,n,i){nu(this,t,r,n,i)}return e.set=function(t,r,n,i,a){return i<0&&(r=r+i,i=-i),a<0&&(n=n+a,a=-a),t.x=r,t.y=n,t.width=i,t.height=a,t},e.prototype.union=function(t){var r=jr(t.x,this.x),n=jr(t.y,this.y);isFinite(this.x)&&isFinite(this.width)?this.width=Fn(t.x+t.width,this.x+this.width)-r:this.width=t.width,isFinite(this.y)&&isFinite(this.height)?this.height=Fn(t.y+t.height,this.y+this.height)-n:this.height=t.height,this.x=r,this.y=n},e.prototype.applyTransform=function(t){e.applyTransform(this,this,t)},e.prototype.calculateTransform=function(t){return m1(Be(),this,t)},e.prototype.intersect=function(t,r,n){return e.intersect(this,t,r,n)},e.intersect=function(t,r,n,i){n&&ct.set(n,0,0);var a=i&&i.outIntersectRect||null,o=i&&i.clamp;if(a&&(a.x=a.y=a.width=a.height=NaN),!t||!r)return!1;t instanceof e||(t=nu(y1,t.x,t.y,t.width,t.height)),r instanceof e||(r=nu(_1,r.x,r.y,r.width,r.height));var s=!!n;te.reset(i,s);var u=te.touchThreshold,l=t.x+u,f=t.x+t.width-u,h=t.y+u,c=t.y+t.height-u,v=r.x+u,d=r.x+r.width-u,g=r.y+u,p=r.y+r.height-u;if(l>f||h>c||v>d||g>p)return!1;var m=!(f=t.x&&r<=t.x+t.width&&n>=t.y&&n<=t.y+t.height},e.prototype.contain=function(t,r){return e.contain(this,t,r)},e.prototype.clone=function(){return new e(this.x,this.y,this.width,this.height)},e.prototype.copy=function(t){Sc(this,t)},e.prototype.plain=function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},e.prototype.isFinite=function(){return isFinite(this.x)&&isFinite(this.y)&&isFinite(this.width)&&isFinite(this.height)},e.prototype.isZero=function(){return this.width===0||this.height===0},e.create=function(t){return new e(t?t.x:0,t?t.y:0,t?t.width:0,t?t.height:0)},e.copy=function(t,r){return t.x=r.x,t.y=r.y,t.width=r.width,t.height=r.height,t},e.applyTransform=function(t,r,n){if(!n){t!==r&&Sc(t,r);return}if(n[1]<1e-5&&n[1]>-1e-5&&n[2]<1e-5&&n[2]>-1e-5){var i=n[0],a=n[3],o=n[4],s=n[5];t.x=r.x*i+o,t.y=r.y*a+s,t.width=r.width*i,t.height=r.height*a,t.width<0&&(t.x+=t.width,t.width=-t.width),t.height<0&&(t.y+=t.height,t.height=-t.height);return}Dr.x=Lr.x=r.x,Dr.y=Ir.y=r.y,Ar.x=Ir.x=r.x+r.width,Ar.y=Lr.y=r.y+r.height,Dr.transform(n),Ir.transform(n),Ar.transform(n),Lr.transform(n),t.x=jr(Dr.x,Ar.x,Lr.x,Ir.x),t.y=jr(Dr.y,Ar.y,Lr.y,Ir.y);var u=Fn(Dr.x,Ar.x,Lr.x,Ir.x),l=Fn(Dr.y,Ar.y,Lr.y,Ir.y);t.width=u-t.x,t.height=l-t.y},e.calculateTransform=function(t,r,n){var i=n.width/r.width,a=n.height/r.height;return t=ma(t||[]),Al(t,t,js(iu,-r.x,-r.y)),p1(t,t,js(iu,i,a)),Al(t,t,js(iu,n.x,n.y)),t},e})();Z.create;var nu=Z.set,Sc=Z.copy,m1=Z.calculateTransform;Z.applyTransform;Z.contain;var y1=new Z(0,0,0,0),_1=new Z(0,0,0,0),iu=[];function Tc(e,t,r,n,i,a,o,s){var u=Ll(t-r),l=Ll(n-e),f=jr(u,l),h=_c[i],c=_c[1-i],v=g1[i];t=l||!te.bidirectional)&&(Ei[h]=-l,Ei[c]=0,te.useDir&&te.calcDirMTV())))}function fg(){var e=0,t=new ct,r=new ct,n={minTv:new ct,maxTv:new ct,useDir:!1,dirMinTv:new ct,touchThreshold:0,bidirectional:!0,negativeSize:!1,reset:function(a,o){n.touchThreshold=0,a&&a.touchThreshold!=null&&(n.touchThreshold=Fn(0,a.touchThreshold)),n.negativeSize=!1,o&&(n.minTv.set(1/0,1/0),n.maxTv.set(0,0),n.useDir=!1,a&&a.direction!=null&&(n.useDir=!0,n.dirMinTv.copy(n.minTv),r.copy(n.minTv),e=a.direction,n.bidirectional=a.bidirectional==null||!!a.bidirectional,n.bidirectional||t.set(Math.cos(e),Math.sin(e))))},calcDirMTV:function(){var a=n.minTv,o=n.dirMinTv,s=a.y*a.y+a.x*a.x,u=Math.sin(e),l=Math.cos(e),f=u*a.y+l*a.x;if(i(f)){i(a.x)&&i(a.y)&&o.set(0,0);return}if(r.x=s*l/f,r.y=s*u/f,i(r.x)&&i(r.y)){o.set(0,0);return}(n.bidirectional||t.dot(r)>0)&&r.len()=0;h--){var c=a[h];c!==i&&!c.ignore&&!c.ignoreCoarsePointer&&(!c.parent||!c.parent.ignoreCoarsePointer)&&(au.copy(c.getBoundingRect()),c.transform&&au.applyTransform(c.transform),au.intersect(f)&&s.push(c))}if(s.length)for(var v=4,d=Math.PI/12,g=Math.PI*2,p=0;p4)return;this._downPoint=null}this.dispatchToElement(a,e,t)}});function b1(e,t,r){if(e[e.rectHover?"rectContain":"contain"](t,r)){for(var n=e,i=void 0,a=!1;n;){if(n.ignoreClip&&(a=!0),!a){var o=n.getClipPath();if(o&&!o.contain(t,r))return!1}n.silent&&(i=!0);var s=n.__hostTarget;n=s?n.ignoreHostSilent?null:s:n.parent}return i?hg:!0}return!1}function wc(e,t,r,n,i){for(var a=e.length-1;a>=0;a--){var o=e[a],s=void 0;if(o!==i&&!o.ignore&&(s=b1(o,r,n))&&(!t.topTarget&&(t.topTarget=o),s!==hg)){t.target=o;break}}}function vg(e,t,r){var n=e.painter;return t<0||t>n.getWidth()||r<0||r>n.getHeight()}var dg=32,vi=7;function C1(e){for(var t=0;e>=dg;)t|=e&1,e>>=1;return e+t}function xc(e,t,r,n){var i=t+1;if(i===r)return 1;if(n(e[i++],e[t])<0){for(;i=0;)i++;return i-t}function M1(e,t,r){for(r--;t>>1,i(a,e[u])<0?s=u:o=u+1;var l=n-o;switch(l){case 3:e[o+3]=e[o+2];case 2:e[o+2]=e[o+1];case 1:e[o+1]=e[o];break;default:for(;l>0;)e[o+l]=e[o+l-1],l--}e[o]=a}}function ou(e,t,r,n,i,a){var o=0,s=0,u=1;if(a(e,t[r+i])>0){for(s=n-i;u0;)o=u,u=(u<<1)+1,u<=0&&(u=s);u>s&&(u=s),o+=i,u+=i}else{for(s=i+1;us&&(u=s);var l=o;o=i-u,u=i-l}for(o++;o>>1);a(e,t[r+f])>0?o=f+1:u=f}return u}function su(e,t,r,n,i,a){var o=0,s=0,u=1;if(a(e,t[r+i])<0){for(s=i+1;us&&(u=s);var l=o;o=i-u,u=i-l}else{for(s=n-i;u=0;)o=u,u=(u<<1)+1,u<=0&&(u=s);u>s&&(u=s),o+=i,u+=i}for(o++;o>>1);a(e,t[r+f])<0?u=f:o=f+1}return u}function D1(e,t){var r=vi,n,i,a=0,o=[];n=[],i=[];function s(v,d){n[a]=v,i[a]=d,a+=1}function u(){for(;a>1;){var v=a-2;if(v>=1&&i[v-1]<=i[v]+i[v+1]||v>=2&&i[v-2]<=i[v]+i[v-1])i[v-1]i[v+1])break;f(v)}}function l(){for(;a>1;){var v=a-2;v>0&&i[v-1]=vi||x>=vi);if(D)break;T<0&&(T=0),T+=2}if(r=T,r<1&&(r=1),d===1){for(m=0;m=0;m--)e[w+m]=e[T+m];e[S]=o[_];return}for(var x=r;;){var D=0,M=0,C=!1;do if(t(o[_],e[y])<0){if(e[S--]=e[y--],D++,M=0,--d===0){C=!0;break}}else if(e[S--]=o[_--],M++,D=0,--p===1){C=!0;break}while((D|M)=0;m--)e[w+m]=e[T+m];if(d===0){C=!0;break}}if(e[S--]=o[_--],--p===1){C=!0;break}if(M=p-ou(e[y],o,0,p,p-1,t),M!==0){for(S-=M,_-=M,p-=M,w=S+1,T=_+1,m=0;m=vi||M>=vi);if(C)break;x<0&&(x=0),x+=2}if(r=x,r<1&&(r=1),p===1){for(S-=d,y-=d,w=S+1,T=y+1,m=d-1;m>=0;m--)e[w+m]=e[T+m];e[S]=o[_]}else{if(p===0)throw new Error;for(T=S-(p-1),m=0;ms&&(u=s),bc(e,r,r+u,r+a,t),a=u}o.pushRun(r,a),o.mergeRuns(),i-=a,r+=a}while(i!==0);o.forceMergeRuns()}}var $t=1,Ri=2,On=4,Cc=!1;function uu(){Cc||(Cc=!0,console.warn("z / z2 / zlevel of displayable is invalid, which may cause unexpected errors"))}function Mc(e,t){return e.zlevel===t.zlevel?e.z===t.z?e.z2-t.z2:e.z-t.z:e.zlevel-t.zlevel}var A1=(function(){function e(){this._roots=[],this._displayList=[],this._displayListLen=0,this.displayableSortFunc=Mc}return e.prototype.traverse=function(t,r){for(var n=0;n=0&&this._roots.splice(i,1)},e.prototype.delAllRoots=function(){this._roots=[],this._displayList=[],this._displayListLen=0},e.prototype.getRoots=function(){return this._roots},e.prototype.dispose=function(){this._displayList=null,this._roots=null},e})(),Uo;Uo=K.hasGlobalWindow&&(window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.msRequestAnimationFrame&&window.msRequestAnimationFrame.bind(window)||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame)||function(e){return setTimeout(e,16)};var Ui={linear:function(e){return e},quadraticIn:function(e){return e*e},quadraticOut:function(e){return e*(2-e)},quadraticInOut:function(e){return(e*=2)<1?.5*e*e:-.5*(--e*(e-2)-1)},cubicIn:function(e){return e*e*e},cubicOut:function(e){return--e*e*e+1},cubicInOut:function(e){return(e*=2)<1?.5*e*e*e:.5*((e-=2)*e*e+2)},quarticIn:function(e){return e*e*e*e},quarticOut:function(e){return 1- --e*e*e*e},quarticInOut:function(e){return(e*=2)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2)},quinticIn:function(e){return e*e*e*e*e},quinticOut:function(e){return--e*e*e*e*e+1},quinticInOut:function(e){return(e*=2)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2)},sinusoidalIn:function(e){return 1-Math.cos(e*Math.PI/2)},sinusoidalOut:function(e){return Math.sin(e*Math.PI/2)},sinusoidalInOut:function(e){return .5*(1-Math.cos(Math.PI*e))},exponentialIn:function(e){return e===0?0:Math.pow(1024,e-1)},exponentialOut:function(e){return e===1?1:1-Math.pow(2,-10*e)},exponentialInOut:function(e){return e===0?0:e===1?1:(e*=2)<1?.5*Math.pow(1024,e-1):.5*(-Math.pow(2,-10*(e-1))+2)},circularIn:function(e){return 1-Math.sqrt(1-e*e)},circularOut:function(e){return Math.sqrt(1- --e*e)},circularInOut:function(e){return(e*=2)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1)},elasticIn:function(e){var t,r=.1,n=.4;return e===0?0:e===1?1:(!r||r<1?(r=1,t=n/4):t=n*Math.asin(1/r)/(2*Math.PI),-(r*Math.pow(2,10*(e-=1))*Math.sin((e-t)*(2*Math.PI)/n)))},elasticOut:function(e){var t,r=.1,n=.4;return e===0?0:e===1?1:(!r||r<1?(r=1,t=n/4):t=n*Math.asin(1/r)/(2*Math.PI),r*Math.pow(2,-10*e)*Math.sin((e-t)*(2*Math.PI)/n)+1)},elasticInOut:function(e){var t,r=.1,n=.4;return e===0?0:e===1?1:(!r||r<1?(r=1,t=n/4):t=n*Math.asin(1/r)/(2*Math.PI),(e*=2)<1?-.5*(r*Math.pow(2,10*(e-=1))*Math.sin((e-t)*(2*Math.PI)/n)):r*Math.pow(2,-10*(e-=1))*Math.sin((e-t)*(2*Math.PI)/n)*.5+1)},backIn:function(e){var t=1.70158;return e*e*((t+1)*e-t)},backOut:function(e){var t=1.70158;return--e*e*((t+1)*e+t)+1},backInOut:function(e){var t=2.5949095;return(e*=2)<1?.5*(e*e*((t+1)*e-t)):.5*((e-=2)*e*((t+1)*e+t)+2)},bounceIn:function(e){return 1-Ui.bounceOut(1-e)},bounceOut:function(e){return e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375},bounceInOut:function(e){return e<.5?Ui.bounceIn(e*2)*.5:Ui.bounceOut(e*2-1)*.5+.5}},La=Math.pow,gr=Math.sqrt,Wo=1e-8,pg=1e-4,Dc=gr(3),Ia=1/3,Re=oi(),ce=oi(),Wn=oi();function vr(e){return e>-Wo&&eWo||e<-Wo}function Vt(e,t,r,n,i){var a=1-i;return a*a*(a*e+3*i*t)+i*i*(i*n+3*a*r)}function Ac(e,t,r,n,i){var a=1-i;return 3*(((t-e)*a+2*(r-t)*i)*a+(n-r)*i*i)}function mg(e,t,r,n,i,a){var o=n+3*(t-r)-e,s=3*(r-t*2+e),u=3*(t-e),l=e-i,f=s*s-3*o*u,h=s*u-9*o*l,c=u*u-3*s*l,v=0;if(vr(f)&&vr(h))if(vr(s))a[0]=0;else{var d=-u/s;d>=0&&d<=1&&(a[v++]=d)}else{var g=h*h-4*f*c;if(vr(g)){var p=h/f,d=-s/o+p,m=-p/2;d>=0&&d<=1&&(a[v++]=d),m>=0&&m<=1&&(a[v++]=m)}else if(g>0){var y=gr(g),_=f*s+1.5*o*(-h+y),S=f*s+1.5*o*(-h-y);_<0?_=-La(-_,Ia):_=La(_,Ia),S<0?S=-La(-S,Ia):S=La(S,Ia);var d=(-s-(_+S))/(3*o);d>=0&&d<=1&&(a[v++]=d)}else{var T=(2*f*s-3*o*h)/(2*gr(f*f*f)),w=Math.acos(T)/3,x=gr(f),D=Math.cos(w),d=(-s-2*x*D)/(3*o),m=(-s+x*(D+Dc*Math.sin(w)))/(3*o),M=(-s+x*(D-Dc*Math.sin(w)))/(3*o);d>=0&&d<=1&&(a[v++]=d),m>=0&&m<=1&&(a[v++]=m),M>=0&&M<=1&&(a[v++]=M)}}return v}function yg(e,t,r,n,i){var a=6*r-12*t+6*e,o=9*t+3*n-3*e-9*r,s=3*t-3*e,u=0;if(vr(o)){if(gg(a)){var l=-s/a;l>=0&&l<=1&&(i[u++]=l)}}else{var f=a*a-4*o*s;if(vr(f))i[0]=-a/(2*o);else if(f>0){var h=gr(f),l=(-a+h)/(2*o),c=(-a-h)/(2*o);l>=0&&l<=1&&(i[u++]=l),c>=0&&c<=1&&(i[u++]=c)}}return u}function Yo(e,t,r,n,i,a){var o=(t-e)*i+e,s=(r-t)*i+t,u=(n-r)*i+r,l=(s-o)*i+o,f=(u-s)*i+s,h=(f-l)*i+l;a[0]=e,a[1]=o,a[2]=l,a[3]=h,a[4]=h,a[5]=f,a[6]=u,a[7]=n}function L1(e,t,r,n,i,a,o,s,u,l,f){var h,c=.005,v=1/0,d,g,p,m;Re[0]=u,Re[1]=l;for(var y=0;y<1;y+=.05)ce[0]=Vt(e,r,i,o,y),ce[1]=Vt(t,n,a,s,y),p=Un(Re,ce),p=0&&p=0&&l<=1&&(i[u++]=l)}}else{var f=o*o-4*a*s;if(vr(f)){var l=-o/(2*a);l>=0&&l<=1&&(i[u++]=l)}else if(f>0){var h=gr(f),l=(-o+h)/(2*a),c=(-o-h)/(2*a);l>=0&&l<=1&&(i[u++]=l),c>=0&&c<=1&&(i[u++]=c)}}return u}function _g(e,t,r){var n=e+r-2*t;return n===0?.5:(e-t)/n}function Xo(e,t,r,n,i){var a=(t-e)*n+e,o=(r-t)*n+t,s=(o-a)*n+a;i[0]=e,i[1]=a,i[2]=s,i[3]=s,i[4]=o,i[5]=r}function E1(e,t,r,n,i,a,o,s,u){var l,f=.005,h=1/0;Re[0]=o,Re[1]=s;for(var c=0;c<1;c+=.05){ce[0]=Xt(e,r,i,c),ce[1]=Xt(t,n,a,c);var v=Un(Re,ce);v=0&&v=1?1:mg(0,n,a,1,u,s)&&Vt(0,i,o,1,s[0])}}}var k1=(function(){function e(t){this._inited=!1,this._startTime=0,this._pausedTime=0,this._paused=!1,this._life=t.life||1e3,this._delay=t.delay||0,this.loop=t.loop||!1,this.onframe=t.onframe||Nt,this.ondestroy=t.ondestroy||Nt,this.onrestart=t.onrestart||Nt,t.easing&&this.setEasing(t.easing)}return e.prototype.step=function(t,r){if(this._inited||(this._startTime=t+this._delay,this._inited=!0),this._paused){this._pausedTime+=r;return}var n=this._life,i=t-this._startTime-this._pausedTime,a=i/n;a<0&&(a=0),a=Math.min(a,1);var o=this.easingFunc,s=o?o(a):a;if(this.onframe(s),a===1)if(this.loop){var u=i%n;this._startTime=t-u,this._pausedTime=0,this.onrestart()}else return!0;return!1},e.prototype.pause=function(){this._paused=!0},e.prototype.resume=function(){this._paused=!1},e.prototype.setEasing=function(t){this.easing=t,this.easingFunc=j(t)?t:Ui[t]||Sg(t)},e})(),Tg=(function(){function e(t){this.value=t}return e})(),B1=(function(){function e(){this._len=0}return e.prototype.insert=function(t){var r=new Tg(t);return this.insertEntry(r),r},e.prototype.insertEntry=function(t){this.head?(this.tail.next=t,t.prev=this.tail,t.next=null,this.tail=t):this.head=this.tail=t,this._len++},e.prototype.remove=function(t){var r=t.prev,n=t.next;r?r.next=n:this.head=n,n?n.prev=r:this.tail=r,t.next=t.prev=null,this._len--},e.prototype.len=function(){return this._len},e.prototype.clear=function(){this.head=this.tail=null,this._len=0},e})(),qn=(function(){function e(t){this._list=new B1,this._maxSize=10,this._map={},this._maxSize=t}return e.prototype.put=function(t,r){var n=this._list,i=this._map,a=null;if(i[t]==null){var o=n.len(),s=this._lastRemovedEntry;if(o>=this._maxSize&&o>0){var u=n.head;n.remove(u),delete i[u.key],a=u.value,this._lastRemovedEntry=u}s?s.value=r:s=new Tg(r),s.key=t,n.insertEntry(s),i[t]=s}return a},e.prototype.get=function(t){var r=this._map[t],n=this._list;if(r!=null)return r!==n.tail&&(n.remove(r),n.insertEntry(r)),r.value},e.prototype.clear=function(){this._list.clear(),this._map={}},e.prototype.len=function(){return this._list.len()},e})(),Ic={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function mr(e){return e=Math.round(e),e<0?0:e>255?255:e}function Pl(e){return e<0?0:e>1?1:e}function lu(e){var t=e;return t.length&&t.charAt(t.length-1)==="%"?mr(parseFloat(t)/100*255):mr(parseInt(t,10))}function rn(e){var t=e;return t.length&&t.charAt(t.length-1)==="%"?Pl(parseFloat(t)/100):Pl(parseFloat(t))}function fu(e,t,r){return r<0?r+=1:r>1&&(r-=1),r*6<1?e+(t-e)*r*6:r*2<1?t:r*3<2?e+(t-e)*(2/3-r)*6:e}function Pa(e,t,r){return e+(t-e)*r}function se(e,t,r,n,i){return e[0]=t,e[1]=r,e[2]=n,e[3]=i,e}function El(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}var wg=new qn(20),Ea=null;function _n(e,t){Ea&&El(Ea,t),Ea=wg.put(e,Ea||t.slice())}function Ne(e,t){if(e){t=t||[];var r=wg.get(e);if(r)return El(t,r);e=e+"";var n=e.replace(/ /g,"").toLowerCase();if(n in Ic)return El(t,Ic[n]),_n(e,t),t;var i=n.length;if(n.charAt(0)==="#"){if(i===4||i===5){var a=parseInt(n.slice(1,4),16);if(!(a>=0&&a<=4095)){se(t,0,0,0,1);return}return se(t,(a&3840)>>4|(a&3840)>>8,a&240|(a&240)>>4,a&15|(a&15)<<4,i===5?parseInt(n.slice(4),16)/15:1),_n(e,t),t}else if(i===7||i===9){var a=parseInt(n.slice(1,7),16);if(!(a>=0&&a<=16777215)){se(t,0,0,0,1);return}return se(t,(a&16711680)>>16,(a&65280)>>8,a&255,i===9?parseInt(n.slice(7),16)/255:1),_n(e,t),t}return}var o=n.indexOf("("),s=n.indexOf(")");if(o!==-1&&s+1===i){var u=n.substr(0,o),l=n.substr(o+1,s-(o+1)).split(","),f=1;switch(u){case"rgba":if(l.length!==4)return l.length===3?se(t,+l[0],+l[1],+l[2],1):se(t,0,0,0,1);f=rn(l.pop());case"rgb":if(l.length>=3)return se(t,lu(l[0]),lu(l[1]),lu(l[2]),l.length===3?f:rn(l[3])),_n(e,t),t;se(t,0,0,0,1);return;case"hsla":if(l.length!==4){se(t,0,0,0,1);return}return l[3]=rn(l[3]),Rl(l,t),_n(e,t),t;case"hsl":if(l.length!==3){se(t,0,0,0,1);return}return Rl(l,t),_n(e,t),t;default:return}}se(t,0,0,0,1)}}function Rl(e,t){var r=(parseFloat(e[0])%360+360)%360/360,n=rn(e[1]),i=rn(e[2]),a=i<=.5?i*(n+1):i+n-i*n,o=i*2-a;return t=t||[],se(t,mr(fu(o,a,r+1/3)*255),mr(fu(o,a,r)*255),mr(fu(o,a,r-1/3)*255),1),e.length===4&&(t[3]=e[3]),t}function N1(e){if(e){var t=e[0]/255,r=e[1]/255,n=e[2]/255,i=Math.min(t,r,n),a=Math.max(t,r,n),o=a-i,s=(a+i)/2,u,l;if(o===0)u=0,l=0;else{s<.5?l=o/(a+i):l=o/(2-a-i);var f=((a-t)/6+o/2)/o,h=((a-r)/6+o/2)/o,c=((a-n)/6+o/2)/o;t===a?u=c-h:r===a?u=1/3+f-c:n===a&&(u=2/3+h-f),u<0&&(u+=1),u>1&&(u-=1)}var v=[u*360,l,s];return e[3]!=null&&v.push(e[3]),v}}function Pc(e,t){var r=Ne(e);if(r){for(var n=0;n<3;n++)r[n]=r[n]*(1-t)|0,r[n]>255?r[n]=255:r[n]<0&&(r[n]=0);return _a(r,r.length===4?"rgba":"rgb")}}function D2(e,t,r){if(!(!(t&&t.length)||!(e>=0&&e<=1))){var n=e*(t.length-1),i=Math.floor(n),a=Math.ceil(n),o=Ne(t[i]),s=Ne(t[a]),u=n-i,l=_a([mr(Pa(o[0],s[0],u)),mr(Pa(o[1],s[1],u)),mr(Pa(o[2],s[2],u)),Pl(Pa(o[3],s[3],u))],"rgba");return r?{color:l,leftIndex:i,rightIndex:a,value:n}:l}}function Ol(e,t,r,n){var i=Ne(e);if(e)return i=N1(i),r!=null&&(i[1]=rn(j(r)?r(i[1]):r)),n!=null&&(i[2]=rn(j(n)?n(i[2]):n)),_a(Rl(i),"rgba")}function _a(e,t){if(!(!e||!e.length)){var r=e[0]+","+e[1]+","+e[2];return(t==="rgba"||t==="hsva"||t==="hsla")&&(r+=","+e[3]),t+"("+r+")"}}function Zo(e,t){var r=Ne(e);return r?(.299*r[0]+.587*r[1]+.114*r[2])*r[3]/255+(1-r[3])*t:0}var Ec=new qn(100);function Rc(e){if(F(e)){var t=Ec.get(e);return t||(t=Pc(e,-.1),Ec.put(e,t)),t}else if(Ts(e)){var r=k({},e);return r.colorStops=Y(e.colorStops,function(n){return{offset:n.offset,color:Pc(n.color,-.1)}}),r}return e}function F1(e){return e.type==="linear"}function z1(e){return e.type==="radial"}(function(){return typeof Buffer<"u"&&typeof Buffer.from=="function"?function(e){return Buffer.from(e).toString("base64")}:typeof btoa=="function"&&typeof unescape=="function"&&typeof encodeURIComponent=="function"?function(e){return btoa(unescape(encodeURIComponent(e)))}:function(e){return null}})();var kl=Array.prototype.slice;function je(e,t,r){return(t-e)*r+e}function hu(e,t,r,n){for(var i=t.length,a=0;an?t:e,a=Math.min(r,n),o=i[a-1]||{color:[0,0,0,0],offset:0},s=a;so;if(s)n.length=o;else for(var u=a;u=1},e.prototype.getAdditiveTrack=function(){return this._additiveTrack},e.prototype.addKeyframe=function(t,r,n){this._needsSort=!0;var i=this.keyframes,a=i.length,o=!1,s=kc,u=r;if(Kt(r)){var l=U1(r);s=l,(l===1&&!Tt(r[0])||l===2&&!Tt(r[0][0]))&&(o=!0)}else if(Tt(r)&&!ea(r))s=Oa;else if(F(r))if(!isNaN(+r))s=Oa;else{var f=Ne(r);f&&(u=f,s=Oi)}else if(Ts(r)){var h=k({},u);h.colorStops=Y(r.colorStops,function(v){return{offset:v.offset,color:Ne(v.color)}}),F1(r)?s=Bl:z1(r)&&(s=Nl),u=h}a===0?this.valType=s:(s!==this.valType||s===kc)&&(o=!0),this.discrete=this.discrete||o;var c={time:t,value:u,rawValue:r,percent:0};return n&&(c.easing=n,c.easingFunc=j(n)?n:Ui[n]||Sg(n)),i.push(c),c},e.prototype.prepare=function(t,r){var n=this.keyframes;this._needsSort&&n.sort(function(g,p){return g.time-p.time});for(var i=this.valType,a=n.length,o=n[a-1],s=this.discrete,u=ka(i),l=Bc(i),f=0;f=0&&!(o[f].percent<=r);f--);f=c(f,s-2)}else{for(f=h;fr);f++);f=c(f-1,s-2)}d=o[f+1],v=o[f]}if(v&&d){this._lastFr=f,this._lastFrP=r;var p=d.percent-v.percent,m=p===0?1:c((r-v.percent)/p,1);d.easingFunc&&(m=d.easingFunc(m));var y=n?this._additiveValue:l?di:t[u];if((ka(a)||l)&&!y&&(y=this._additiveValue=[]),this.discrete)t[u]=m<1?v.rawValue:d.rawValue;else if(ka(a))a===bo?hu(y,v[i],d[i],m):H1(y,v[i],d[i],m);else if(Bc(a)){var _=v[i],S=d[i],T=a===Bl;t[u]={type:T?"linear":"radial",x:je(_.x,S.x,m),y:je(_.y,S.y,m),colorStops:Y(_.colorStops,function(x,D){var M=S.colorStops[D];return{offset:je(x.offset,M.offset,m),color:xo(hu([],x.color,M.color,m))}}),global:S.global},T?(t[u].x2=je(_.x2,S.x2,m),t[u].y2=je(_.y2,S.y2,m)):t[u].r=je(_.r,S.r,m)}else if(l)hu(y,v[i],d[i],m),n||(t[u]=xo(y));else{var w=je(v[i],d[i],m);n?this._additiveValue=w:t[u]=w}n&&this._addToTarget(t)}}},e.prototype._addToTarget=function(t){var r=this.valType,n=this.propName,i=this._additiveValue;r===Oa?t[n]=t[n]+i:r===Oi?(Ne(t[n],di),Ra(di,di,i,1),t[n]=xo(di)):r===bo?Ra(t[n],t[n],i,1):r===xg&&Oc(t[n],t[n],i,1)},e})(),Qf=(function(){function e(t,r,n,i){if(this._tracks={},this._trackKeys=[],this._maxTime=0,this._started=0,this._clip=null,this._target=t,this._loop=r,r&&i){Yf("Can' use additive animation on looped animation.");return}this._additiveAnimators=i,this._allowDiscrete=n}return e.prototype.getMaxTime=function(){return this._maxTime},e.prototype.getDelay=function(){return this._delay},e.prototype.getLoop=function(){return this._loop},e.prototype.getTarget=function(){return this._target},e.prototype.changeTarget=function(t){this._target=t},e.prototype.when=function(t,r,n){return this.whenWithKeys(t,r,gt(r),n)},e.prototype.whenWithKeys=function(t,r,n,i){for(var a=this._tracks,o=0;o0&&u.addKeyframe(0,wo(l),i),this._trackKeys.push(s)}u.addKeyframe(t,wo(r[s]),i)}return this._maxTime=Math.max(this._maxTime,t),this},e.prototype.pause=function(){this._clip.pause(),this._paused=!0},e.prototype.resume=function(){this._clip.resume(),this._paused=!1},e.prototype.isPaused=function(){return!!this._paused},e.prototype.duration=function(t){return this._maxTime=t,this._force=!0,this},e.prototype._doneCallback=function(){this._setTracksFinished(),this._clip=null;var t=this._doneCbs;if(t)for(var r=t.length,n=0;n0)){this._started=1;for(var r=this,n=[],i=this._maxTime||0,a=0;a1){var s=o.pop();a.addKeyframe(s.time,t[i]),a.prepare(this._maxTime,a.getAdditiveTrack())}}}},e})();function zn(){return new Date().getTime()}var Y1=(function(e){z(t,e);function t(r){var n=e.call(this)||this;return n._running=!1,n._time=0,n._pausedTime=0,n._pauseStart=0,n._paused=!1,r=r||{},n.stage=r.stage||{},n}return t.prototype.addClip=function(r){r.animation&&this.removeClip(r),this._head?(this._tail.next=r,r.prev=this._tail,r.next=null,this._tail=r):this._head=this._tail=r,r.animation=this},t.prototype.addAnimator=function(r){r.animation=this;var n=r.getClip();n&&this.addClip(n)},t.prototype.removeClip=function(r){if(r.animation){var n=r.prev,i=r.next;n?n.next=i:this._head=i,i?i.prev=n:this._tail=n,r.next=r.prev=r.animation=null}},t.prototype.removeAnimator=function(r){var n=r.getClip();n&&this.removeClip(n),r.animation=null},t.prototype.update=function(r){for(var n=zn()-this._pausedTime,i=n-this._time,a=this._head;a;){var o=a.next,s=a.step(n,i);s&&(a.ondestroy(),this.removeClip(a)),a=o}this._time=n,r||(this.trigger("frame",i),this.stage.update&&this.stage.update())},t.prototype._startLoop=function(){var r=this;this._running=!0;function n(){r._running&&(Uo(n),!r._paused&&r.update())}Uo(n)},t.prototype.start=function(){this._running||(this._time=zn(),this._pausedTime=0,this._startLoop())},t.prototype.stop=function(){this._running=!1},t.prototype.pause=function(){this._paused||(this._pauseStart=zn(),this._paused=!0)},t.prototype.resume=function(){this._paused&&(this._pausedTime+=zn()-this._pauseStart,this._paused=!1)},t.prototype.clear=function(){for(var r=this._head;r;){var n=r.next;r.prev=r.next=r.animation=null,r=n}this._head=this._tail=null},t.prototype.isFinished=function(){return this._head==null},t.prototype.animate=function(r,n){n=n||{},this.start();var i=new Qf(r,n.loop);return this.addAnimator(i),i},t})(Ye),X1=300,cu=K.domSupported,vu=(function(){var e=["click","dblclick","mousewheel","wheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],t=["touchstart","touchend","touchmove"],r={pointerdown:1,pointerup:1,pointermove:1,pointerout:1},n=Y(e,function(i){var a=i.replace("mouse","pointer");return r.hasOwnProperty(a)?a:i});return{mouse:e,touch:t,pointer:n}})(),Nc={mouse:["mousemove","mouseup"],pointer:["pointermove","pointerup"]},Fc=!1;function Fl(e){var t=e.pointerType;return t==="pen"||t==="touch"}function Z1(e){e.touching=!0,e.touchTimer!=null&&(clearTimeout(e.touchTimer),e.touchTimer=null),e.touchTimer=setTimeout(function(){e.touching=!1,e.touchTimer=null},700)}function du(e){e&&(e.zrByTouch=!0)}function $1(e,t){return le(e.dom,new q1(e,t),!0)}function bg(e,t){for(var r=t,n=!1;r&&r.nodeType!==9&&!(n=r.domBelongToZr||r!==t&&r===e.painterRoot);)r=r.parentNode;return n}var q1=(function(){function e(t,r){this.stopPropagation=Nt,this.stopImmediatePropagation=Nt,this.preventDefault=Nt,this.type=r.type,this.target=this.currentTarget=t.dom,this.pointerType=r.pointerType,this.clientX=r.clientX,this.clientY=r.clientY}return e})(),we={mousedown:function(e){e=le(this.dom,e),this.__mayPointerCapture=[e.zrX,e.zrY],this.trigger("mousedown",e)},mousemove:function(e){e=le(this.dom,e);var t=this.__mayPointerCapture;t&&(e.zrX!==t[0]||e.zrY!==t[1])&&this.__togglePointerCapture(!0),this.trigger("mousemove",e)},mouseup:function(e){e=le(this.dom,e),this.__togglePointerCapture(!1),this.trigger("mouseup",e)},mouseout:function(e){e=le(this.dom,e);var t=e.toElement||e.relatedTarget;bg(this,t)||(this.__pointerCapturing&&(e.zrEventControl="no_globalout"),this.trigger("mouseout",e))},wheel:function(e){Fc=!0,e=le(this.dom,e),this.trigger("mousewheel",e)},mousewheel:function(e){Fc||(e=le(this.dom,e),this.trigger("mousewheel",e))},touchstart:function(e){e=le(this.dom,e),du(e),this.__lastTouchMoment=new Date,this.handler.processGesture(e,"start"),we.mousemove.call(this,e),we.mousedown.call(this,e)},touchmove:function(e){e=le(this.dom,e),du(e),this.handler.processGesture(e,"change"),we.mousemove.call(this,e)},touchend:function(e){e=le(this.dom,e),du(e),this.handler.processGesture(e,"end"),we.mouseup.call(this,e),+new Date-+this.__lastTouchMomentVc||e<-Vc}var Er=[],Sn=[],gu=Be(),mu=Math.abs,Sa=(function(){function e(){}return e.prototype.getLocalTransform=function(t){return tS(this,t)},e.prototype.setPosition=function(t){this.x=t[0],this.y=t[1]},e.prototype.setScale=function(t){this.scaleX=t[0],this.scaleY=t[1]},e.prototype.setSkew=function(t){this.skewX=t[0],this.skewY=t[1]},e.prototype.setOrigin=function(t){this.originX=t[0],this.originY=t[1]},e.prototype.needLocalTransform=function(){return Pr(this.rotation)||Pr(this.x)||Pr(this.y)||Pr(this.scaleX-1)||Pr(this.scaleY-1)||Pr(this.skewX)||Pr(this.skewY)},e.prototype.updateTransform=function(){var t=this.parent&&this.parent.transform,r=this.needLocalTransform(),n=this.transform;if(!(r||t)){n&&(Hc(n),this.invTransform=null);return}n=n||Be(),r?this.getLocalTransform(n):Hc(n),t&&(r?Vi(n,t,n):qf(n,t)),this.transform=n,this._resolveGlobalScaleRatio(n),this.invTransform=this.invTransform||Be(),ya(this.invTransform,n)},e.prototype._resolveGlobalScaleRatio=function(t){var r=this.globalScaleRatio;if(r!=null&&r!==1){this.getGlobalScale(Er);var n=Er[0]<0?-1:1,i=Er[1]<0?-1:1,a=((Er[0]-n)*r+n)/Er[0]||0,o=((Er[1]-i)*r+i)/Er[1]||0;t[0]*=a,t[1]*=a,t[2]*=o,t[3]*=o}},e.prototype.getComputedTransform=function(){for(var t=this,r=[];t;)r.push(t),t=t.parent;for(;t=r.pop();)t.updateTransform();return this.transform},e.prototype.setLocalTransform=function(t){if(t){var r=t[0]*t[0]+t[1]*t[1],n=t[2]*t[2]+t[3]*t[3],i=Math.atan2(t[1],t[0]),a=Math.PI/2+i-Math.atan2(t[3],t[2]);n=Math.sqrt(n)*Math.cos(a),r=Math.sqrt(r),this.skewX=a,this.skewY=0,this.rotation=-i,this.x=+t[4],this.y=+t[5],this.scaleX=r,this.scaleY=n,this.originX=0,this.originY=0}},e.prototype.decomposeTransform=function(){if(this.transform){var t=this.parent,r=this.transform;t&&t.transform&&(t.invTransform=t.invTransform||Be(),Vi(Sn,t.invTransform,r),r=Sn);var n=this.originX,i=this.originY;(n||i)&&(gu[4]=n,gu[5]=i,Vi(Sn,r,gu),Sn[4]-=n,Sn[5]-=i,r=Sn),this.setLocalTransform(r)}},e.prototype.getGlobalScale=function(t){var r=this.transform;return t=t||[],r?(t[0]=Math.sqrt(r[0]*r[0]+r[1]*r[1]),t[1]=Math.sqrt(r[2]*r[2]+r[3]*r[3]),r[0]<0&&(t[0]=-t[0]),r[3]<0&&(t[1]=-t[1]),t):(t[0]=1,t[1]=1,t)},e.prototype.transformCoordToLocal=function(t,r){var n=[t,r],i=this.invTransform;return i&&ye(n,n,i),n},e.prototype.transformCoordToGlobal=function(t,r){var n=[t,r],i=this.transform;return i&&ye(n,n,i),n},e.prototype.getLineScale=function(){var t=this.transform;return t&&mu(t[0]-1)>1e-10&&mu(t[3]-1)>1e-10?Math.sqrt(mu(t[0]*t[3]-t[2]*t[1])):1},e.prototype.copyTransform=function(t){qo(this,t)},e.getLocalTransform=function(t,r){r=r||[];var n=t.originX||0,i=t.originY||0,a=t.scaleX,o=t.scaleY,s=t.anchorX,u=t.anchorY,l=t.rotation||0,f=t.x,h=t.y,c=t.skewX?Math.tan(t.skewX):0,v=t.skewY?Math.tan(-t.skewY):0;if(n||i||s||u){var d=n+s,g=i+u;r[4]=-d*a-c*g*o,r[5]=-g*o-v*d*a}else r[4]=r[5]=0;return r[0]=a,r[3]=o,r[1]=v*a,r[2]=c*o,l&&Kf(r,r,l),r[4]+=n+f,r[5]+=i+h,r},e.initDefaultProps=(function(){var t=e.prototype;t.scaleX=t.scaleY=t.globalScaleRatio=1,t.x=t.y=t.originX=t.originY=t.skewX=t.skewY=t.rotation=t.anchorX=t.anchorY=0})(),e})(),tS=Sa.getLocalTransform,xs=["x","y","originX","originY","anchorX","anchorY","rotation","scaleX","scaleY","skewX","skewY"];function qo(e,t){return N_(e,t,xs)}function Fe(e){Ba||(Ba=new qn(100)),e=e||Sr;var t=Ba.get(e);return t||(t={font:e,strWidthCache:new qn(500),asciiWidthMap:null,asciiWidthMapTried:!1,stWideCharWidth:ee.measureText("国",e).width,asciiCharWidth:ee.measureText("a",e).width},Ba.put(e,t)),t}var Ba;function eS(e){if(!(yu>=Gc)){e=e||Sr;for(var t=[],r=+new Date,n=0;n<=127;n++)t[n]=ee.measureText(String.fromCharCode(n),e).width;var i=+new Date-r;return i>16?yu=Gc:i>2&&yu++,t}}var yu=0,Gc=5;function Mg(e,t){return e.asciiWidthMapTried||(e.asciiWidthMap=eS(e.font),e.asciiWidthMapTried=!0),0<=t&&t<=127?e.asciiWidthMap!=null?e.asciiWidthMap[t]:e.asciiCharWidth:e.stWideCharWidth}function ze(e,t){var r=e.strWidthCache,n=r.get(t);return n==null&&(n=ee.measureText(t,e.font).width,r.put(t,n)),n}function Uc(e,t,r,n){var i=ze(Fe(t),e),a=bs(t),o=Kn(0,i,r),s=nn(0,a,n),u=new Z(o,s,i,a);return u}function Dg(e,t,r,n){var i=((e||"")+"").split(` +`),a=i.length;if(a===1)return Uc(i[0],t,r,n);for(var o=new Z(0,0,0,0),s=0;s=0?parseFloat(e)/100*t:parseFloat(e):e}function Ag(e,t,r){var n=t.position||"inside",i=t.distance!=null?t.distance:5,a=r.height,o=r.width,s=a/2,u=r.x,l=r.y,f="left",h="top";if(n instanceof Array)u+=Qn(n[0],r.width),l+=Qn(n[1],r.height),f=null,h=null;else switch(n){case"left":u-=i,l+=s,f="right",h="middle";break;case"right":u+=i+o,l+=s,h="middle";break;case"top":u+=o/2,l-=i,f="center",h="bottom";break;case"bottom":u+=o/2,l+=a+i,f="center";break;case"inside":u+=o/2,l+=s,f="center",h="middle";break;case"insideLeft":u+=i,l+=s,h="middle";break;case"insideRight":u+=o-i,l+=s,f="right",h="middle";break;case"insideTop":u+=o/2,l+=i,f="center";break;case"insideBottom":u+=o/2,l+=a-i,f="center",h="bottom";break;case"insideTopLeft":u+=i,l+=i;break;case"insideTopRight":u+=o-i,l+=i,f="right";break;case"insideBottomLeft":u+=i,l+=a-i,h="bottom";break;case"insideBottomRight":u+=o-i,l+=a-i,f="right",h="bottom";break}return e=e||{},e.x=u,e.y=l,e.align=f,e.verticalAlign=h,e}var _u="__zr_normal__",Su=xs.concat(["ignore"]),rS=Tr(xs,function(e,t){return e[t]=!0,e},{ignore:!1}),Tn={},nS=new Z(0,0,0,0),Na=[],Mo=0,Cs=1,Ms=(function(){function e(t){this.id=ig(),this.animators=[],this.currentStates=[],this.states={},this._init(t)}return e.prototype._init=function(t){this.attr(t)},e.prototype.drift=function(t,r,n){switch(this.draggable){case"horizontal":r=0;break;case"vertical":t=0;break}var i=this.transform;i||(i=this.transform=[1,0,0,1,0,0]),i[4]+=t,i[5]+=r,this.decomposeTransform(),this.markRedraw()},e.prototype.beforeUpdate=function(){},e.prototype.afterUpdate=function(){},e.prototype.update=function(){this.updateTransform(),this.__dirty&&this.updateInnerText()},e.prototype.updateInnerText=function(t){var r=this._textContent;if(r&&(!r.ignore||t)){this.textConfig||(this.textConfig={});var n=this.textConfig,i=n.local,a=r.innerTransformable,o=void 0,s=void 0,u=!1;a.parent=i?this:null;var l=!1;a.copyTransform(r);var f=n.position!=null,h=n.autoOverflowArea,c=void 0;if((h||f)&&(c=nS,n.layoutRect?c.copy(n.layoutRect):c.copy(this.getBoundingRect()),i||c.applyTransform(this.transform)),f){this.calculateTextPosition?this.calculateTextPosition(Tn,n,c):Ag(Tn,n,c),a.x=Tn.x,a.y=Tn.y,o=Tn.align,s=Tn.verticalAlign;var v=n.origin;if(v&&n.rotation!=null){var d=void 0,g=void 0;v==="center"?(d=c.width*.5,g=c.height*.5):(d=Qn(v[0],c.width),g=Qn(v[1],c.height)),l=!0,a.originX=-a.x+d+(i?0:c.x),a.originY=-a.y+g+(i?0:c.y)}}n.rotation!=null&&(a.rotation=n.rotation);var p=n.offset;p&&(a.x+=p[0],a.y+=p[1],l||(a.originX=-p[0],a.originY=-p[1]));var m=this._innerTextDefaultStyle||(this._innerTextDefaultStyle={});if(h){var y=m.overflowRect=m.overflowRect||new Z(0,0,0,0);a.getLocalTransform(Na),ya(Na,Na),Z.copy(y,c),y.applyTransform(Na)}else m.overflowRect=null;var _=n.inside==null?typeof n.position=="string"&&n.position.indexOf("inside")>=0:n.inside,S=void 0,T=void 0,w=void 0;_&&this.canBeInsideText()?(S=n.insideFill,T=n.insideStroke,(S==null||S==="auto")&&(S=this.getInsideTextFill()),(T==null||T==="auto")&&(T=this.getInsideTextStroke(S),w=!0)):(S=n.outsideFill,T=n.outsideStroke,(S==null||S==="auto")&&(S=this.getOutsideFill()),(T==null||T==="auto")&&(T=this.getOutsideStroke(S),w=!0)),S=S||"#000",(S!==m.fill||T!==m.stroke||w!==m.autoStroke||o!==m.align||s!==m.verticalAlign)&&(u=!0,m.fill=S,m.stroke=T,m.autoStroke=w,m.align=o,m.verticalAlign=s,r.setDefaultTextStyle(m)),r.__dirty|=$t,u&&r.dirtyStyle(!0)}},e.prototype.canBeInsideText=function(){return!0},e.prototype.getInsideTextFill=function(){return"#fff"},e.prototype.getInsideTextStroke=function(t){return"#000"},e.prototype.getOutsideFill=function(){return this.__zr&&this.__zr.isDarkMode()?Gl:Vl},e.prototype.getOutsideStroke=function(t){var r=this.__zr&&this.__zr.getBackgroundColor(),n=typeof r=="string"&&Ne(r);n||(n=[255,255,255,1]);for(var i=n[3],a=this.__zr.isDarkMode(),o=0;o<3;o++)n[o]=n[o]*i+(a?0:255)*(1-i);return n[3]=1,_a(n,"rgba")},e.prototype.traverse=function(t,r){},e.prototype.attrKV=function(t,r){t==="textConfig"?this.setTextConfig(r):t==="textContent"?this.setTextContent(r):t==="clipPath"?this.setClipPath(r):t==="extra"?(this.extra=this.extra||{},k(this.extra,r)):this[t]=r},e.prototype.hide=function(){this.ignore=!0,this.markRedraw()},e.prototype.show=function(){this.ignore=!1,this.markRedraw()},e.prototype.attr=function(t,r){if(typeof t=="string")this.attrKV(t,r);else if(H(t))for(var n=t,i=gt(n),a=0;a0},e.prototype.getState=function(t){return this.states[t]},e.prototype.ensureState=function(t){var r=this.states;return r[t]||(r[t]={}),r[t]},e.prototype.clearStates=function(t){this.useState(_u,!1,t)},e.prototype.useState=function(t,r,n,i){var a=t===_u,o=this.hasState();if(!(!o&&a)){var s=this.currentStates,u=this.stateTransition;if(!(st(s,t)>=0&&(r||s.length===1))){var l;if(this.stateProxy&&!a&&(l=this.stateProxy(t)),l||(l=this.states&&this.states[t]),!l&&!a){Yf("State "+t+" not exists.");return}a||this.saveCurrentToNormalState(l);var f=this._textContent,h=Wc(this,f,l,i);h&&!this.__inHover&&(this.__inHover=h),this._applyStateObj(t,l,this._normalState,r,Xc(this,n,u),u);var c=this._textGuide;return f&&f.useState(t,r,n,!!h),c&&c.useState(t,r,n,!!h),a?(this.currentStates=[],this._normalState={}):r?this.currentStates.push(t):this.currentStates=[t],this._updateAnimationTargets(),this.markRedraw(),!h&&this.__inHover&&(this.__inHover=Mo,this.__dirty&=~$t),l}}},e.prototype.useStates=function(t,r,n){if(!t.length)this.clearStates();else{var i=[],a=this.currentStates,o=t.length,s=o===a.length;if(s){for(var u=0;u=0){var n=this.currentStates.slice();n.splice(r,1),this.useStates(n)}},e.prototype.replaceState=function(t,r,n){var i=this.currentStates.slice(),a=st(i,t),o=st(i,r)>=0;a>=0?o?i.splice(a,1):i[a]=r:n&&!o&&i.push(r),this.useStates(i)},e.prototype.toggleState=function(t,r){r?this.useState(t,!0):this.removeState(t)},e.prototype._mergeStates=function(t){for(var r={},n,i=0;i=0&&a.splice(o,1)}),this.animators.push(t),n&&n.animation.addAnimator(t),n&&n.wakeUp()},e.prototype.updateDuringAnimation=function(t){this.markRedraw()},e.prototype.stopAnimation=function(t,r){for(var n=this.animators,i=n.length,a=[],o=0;o0&&r.during&&a[0].during(function(d,g){r.during(g)});for(var c=0;c0||i.force&&!o.length){var D=void 0,M=void 0,C=void 0;if(s){M={},c&&(D={});for(var S=0;S<_;S++){var m=g[S];M[m]=r[m],c?D[m]=n[m]:r[m]=n[m]}}else if(c){C={};for(var S=0;S<_;S++){var m=g[S];C[m]=wo(r[m]),aS(r,n,m)}}var T=new Qf(r,!1,!1,h?kt(d,function(I){return I.targetName===t}):null);T.targetName=t,i.scope&&(T.scope=i.scope),c&&D&&T.whenWithKeys(0,D,g),C&&T.whenWithKeys(0,C,g),T.whenWithKeys(l??500,s?M:n,g).delay(f||0),e.addAnimator(T,t),o.push(T)}}function Wc(e,t,r,n){return!(r&&r.hoverLayer||n)||Yc(e)||t&&Yc(t)?Mo:Cs}function Yc(e){return e.type==="text"||e.type==="tspan"}function Xc(e,t,r){return!t&&!e.__inHover&&r&&r.duration>0}var re=(function(e){z(t,e);function t(r){var n=e.call(this)||this;return n.isGroup=!0,n._children=[],n.attr(r),n}return t.prototype.childrenRef=function(){return this._children},t.prototype.children=function(){return this._children.slice()},t.prototype.childAt=function(r){return this._children[r]},t.prototype.childOfName=function(r){for(var n=this._children,i=0;i=0&&(i.splice(a,0,r),this._doAdd(r))}return this},t.prototype.replace=function(r,n){var i=st(this._children,r);return i>=0&&this.replaceAt(n,i),this},t.prototype.replaceAt=function(r,n){var i=this._children,a=i[n];if(r&&r!==this&&r.parent!==this&&r!==a){i[n]=r,a.parent=null;var o=this.__zr;o&&a.removeSelfFromZr(o),this._doAdd(r)}return this},t.prototype._doAdd=function(r){r.parent&&r.parent.remove(r),r.parent=this;var n=this.__zr;n&&n!==r.__zr&&r.addSelfToZr(n),n&&n.refresh()},t.prototype.remove=function(r){var n=this.__zr,i=this._children,a=st(i,r);return a<0?this:(i.splice(a,1),r.parent=null,n&&r.removeSelfFromZr(n),n&&n.refresh(),this)},t.prototype.removeAll=function(){for(var r=this._children,n=this.__zr,i=0;i0&&(this._stillFrameAccum++,this._stillFrameAccum>this._sleepAfterStill&&this.animation.stop())},e.prototype.setSleepAfterStill=function(t){this._sleepAfterStill=t},e.prototype.wakeUp=function(){this._disposed||(this.animation.start(),this._stillFrameAccum=0)},e.prototype.refreshHover=function(){this._needsRefreshHover=!0},e.prototype.refreshHoverImmediately=function(){this._disposed||this._refresh({animUpdate:!1,refresh:!1,refreshHover:!0})},e.prototype.resize=function(t){this._disposed||(t=t||{},this.painter.resize(t.width,t.height),this.handler.resize())},e.prototype.clearAnimation=function(){this._disposed||this.animation.clear()},e.prototype.getWidth=function(){if(!this._disposed)return this.painter.getWidth()},e.prototype.getHeight=function(){if(!this._disposed)return this.painter.getHeight()},e.prototype.setCursorStyle=function(t){this._disposed||this.handler.setCursorStyle(t)},e.prototype.findHover=function(t,r){if(!this._disposed)return this.handler.findHover(t,r)},e.prototype.on=function(t,r,n){return this._disposed||this.handler.on(t,r,n),this},e.prototype.off=function(t,r){this._disposed||this.handler.off(t,r)},e.prototype.trigger=function(t,r){this._disposed||this.handler.trigger(t,r)},e.prototype.clear=function(){if(!this._disposed){for(var t=this.storage.getRoots(),r=0;r0){if(e<=i)return o;if(e>=a)return s}else{if(e>=i)return o;if(e<=a)return s}else{if(e===i)return o;if(e===a)return s}return(e-i)/u*l+o}var Bt=pS;function pS(e,t,r){switch(e){case"center":case"middle":e="50%";break;case"left":case"top":e="0%";break;case"right":case"bottom":e="100%";break}return Wl(e,t,r)}function Wl(e,t,r){return F(e)?gS(e)?parseFloat(e)/100*t+(r||0):parseFloat(e):e==null?NaN:+e}function gS(e){return!!cS(e).match(/%$/)}function at(e,t,r){return isNaN(t)?r?""+e:+e:(t=ne(ht(0,t),Pg),e=(+e).toFixed(t),r?e:+e)}function Eg(e){return e.sort(function(t,r){return t-r}),e}function dr(e){if(e=+e,isNaN(e))return 0;if(e>1e-14){for(var t=1,r=0;r<15;r++,t*=10)if(er(e*t)/t===e)return r}return mS(e)}function mS(e){var t=e.toString().toLowerCase(),r=t.indexOf("e"),n=r>0?+t.slice(r+1):0,i=r>0?r:t.length,a=t.indexOf("."),o=a<0?0:i-1-a;return ht(0,o-n)}function yS(e,t,r){var n=Lt(e[1]-e[0]);if(!isFinite(n)||n===0)return NaN;var i=ra(2*Lt(r||1)*Lt(n))/Ul,a=ra(Lt(t))/Ul,o=ht(0,Ta(-i+a));return isFinite(o)||(o=NaN),o}function L2(e,t){var r=Tr(e,function(v,d){return v+(isNaN(d)?0:d)},0);if(r===0)return[];for(var n=dn(10,t),i=Y(e,function(v){return(isNaN(v)?0:v)/r*n*100}),a=n*100,o=Y(i,function(v){return ln(v)}),s=Tr(o,function(v,d){return v+d},0),u=Y(i,function(v,d){return v-o[d]});sl&&(l=u[h],f=h);++o[f],u[f]=0,++s}return Y(o,function(v){return v/n})}function _S(e,t){var r=ht(dr(e),dr(t)),n=e+t;return r>Pg?n:at(n,r)}var Kc=dn(2,53)-1;function Rg(e){var t=vS*2;return(e%t+t)%t}function Ko(e){return e>-$c&&e<$c}var SS=/^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d{1,2})(?::(\d{1,2})(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/;function si(e){if(e instanceof Date)return e;if(F(e)){var t=SS.exec(e);if(!t)return new Date(NaN);if(t[8]){var r=+t[4]||0;return t[8].toUpperCase()!=="Z"&&(r-=+t[8].slice(0,3)),new Date(Date.UTC(+t[1],+(t[2]||1)-1,+t[3]||1,r,+(t[5]||0),+t[6]||0,t[7]?+t[7].substring(0,3):0))}else return new Date(+t[1],+(t[2]||1)-1,+t[3]||1,+t[4]||0,+(t[5]||0),+t[6]||0,t[7]?+t[7].substring(0,3):0)}else if(e==null)return new Date(NaN);return new Date(er(e))}function Og(e){return dn(10,jf(e))}function jf(e){if(e===0)return 0;var t=ln(ra(e)/Ul);return e/dn(10,t)>=10&&t++,t}var kg=2;function Jf(e,t){var r=jf(e),n=dn(10,r),i=e/n,a;return t===kg?a=1:t?i<1.5?a=1:i<2.5?a=2:i<4?a=3:i<7?a=5:a=10:i<1?a=1:i<2?a=2:i<3?a=3:i<5?a=5:a=10,e=a*n,at(e,-r)}function Qo(e){var t=parseFloat(e);return t==e&&(t!==0||!F(e)||e.indexOf("x")<=0)?t:NaN}function TS(e){return!isNaN(Qo(e))}function th(){return er(dS()*9)}function Bg(e,t){return t===0?e:Bg(t,e%t)}function Qc(e,t){return e==null?t:t==null?e:e*t/Bg(e,t)}function Ge(e){return e!=null&&isFinite(e)}var wS="[ECharts] ",xS=typeof console<"u"&&console.warn&&console.log;function bS(e,t,r){xS&&console[e](wS+t)}function Ng(e,t){bS("error",e)}function Zt(e){throw new Error(e)}function jc(e,t,r){return(t-e)*r+e}var Fg="series\0",CS="\0_ec_\0";function Ut(e){return e instanceof Array?e:e==null?[]:[e]}function Jc(e,t,r){if(e){e[t]=e[t]||{},e.emphasis=e.emphasis||{},e.emphasis[t]=e.emphasis[t]||{};for(var n=0,i=r.length;ne[1]&&(e[1]=t))}function Vg(e,t){rr(t)&&te[1]&&(e[1]=t)}function GS(e,t){jn(t[0],t[1])&&(t[0]e[1]&&(e[1]=t[1]))}function rr(e){return e!=null&&isFinite(e)}function jn(e,t){return rr(e)&&rr(t)&&e<=t}function US(e){var t=e[1]-e[0];return isFinite(t)&&t>=0}function WS(e){jn(e[0],e[1])&&e[0]>e[1]&&(e[0]=e[1])}function YS(){var e="__ec_once_"+XS++;return function(t,r){qt(t,e)||(t[e]=1,r())}}var XS=th();function nh(e,t,r){var n=W(),i=0;b(e,function(a){var o=t(a),s=n.get(o)||0;r&&r(a,s),!s&&!r&&(e[i++]=a),n.set(o,s+1)}),r||(e.length=i)}function ZS(e){return e.value+""}function $S(e){return e+""}function P2(e,t){return G(t,!0)?e.seriesIndex+2:0}function qS(e,t,r){var n=e.getData().count();return{progressiveRender:r.progressiveEnabled&&t.incrementalPrepareRender&&n>=r.threshold,large:e.get("large")&&n>=e.get("largeThreshold"),modDataCount:e.get("progressiveChunkMode")==="mod"?e.getData().count():null}}function E2(e,t){return{seriesType:e,overallReset:t}}function ih(e){return{overallReset:e}}var KS=".",Rr="___EC__COMPONENT__CONTAINER___",Ug="___EC__EXTENDED_CLASS___";function ke(e){var t={main:"",sub:""};if(e){var r=e.split(KS);t.main=r[0]||"",t.sub=r[1]||""}return t}function QS(e){tr(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(e),'componentType "'+e+'" illegal')}function jS(e){return!!(e&&e[Ug])}function ah(e,t){e.$constructor=e,e.extend=function(r){var n=this,i;return JS(n)?i=(function(a){z(o,a);function o(){return a.apply(this,arguments)||this}return o})(n):(i=function(){(r.$constructor||n).apply(this,arguments)},F_(i,this)),k(i.prototype,r),i[Ug]=!0,i.extend=this.extend,i.superCall=rT,i.superApply=nT,i.superClass=n,i}}function JS(e){return j(e)&&/^class\s/.test(Function.prototype.toString.call(e))}function Wg(e,t){e.extend=t.extend}var tT=Math.round(Math.random()*10);function eT(e){var t=["__\0is_clz",tT++].join("_");e.prototype[t]=!0,e.isInstance=function(r){return!!(r&&r[t])}}function rT(e,t){for(var r=[],n=2;n=0||a&&st(a,u)<0)){var l=n.getShallow(u,t);l!=null&&(o[e[s][0]]=l)}}return o}}var iT=[["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]],aT=ia(iT),oT=(function(){function e(){}return e.prototype.getAreaStyle=function(t,r){return aT(this,t,r)},e})(),Yl=new qn(50);function sT(e){if(typeof e=="string"){var t=Yl.get(e);return t&&t.image}else return e}function Yg(e,t,r,n,i){if(e)if(typeof e=="string"){if(t&&t.__zrImageSrc===e||!r)return t;var a=Yl.get(e),o={hostEl:r,cb:n,cbPayload:i};return a?(t=a.image,!As(t)&&a.pending.push(o)):(t=ee.loadImage(e,ev,ev),t.__zrImageSrc=e,Yl.put(e,t.__cachedImgObj={image:t,pending:[o]})),t}else return e;else return t}function ev(){var e=this.__cachedImgObj;this.onload=this.onerror=this.__cachedImgObj=null;for(var t=0;t=s;l++)u-=s;var f=ze(o,r);return f>u&&(r="",f=0),u=e-f,i.ellipsis=r,i.ellipsisWidth=f,i.contentWidth=u,i.containerWidth=e,i}function Zg(e,t,r){var n=r.containerWidth,i=r.contentWidth,a=r.fontMeasureInfo;if(!n){e.textLine="",e.isTruncated=!1;return}var o=ze(a,t);if(o<=n){e.textLine=t,e.isTruncated=!1;return}for(var s=0;;s++){if(o<=i||s>=r.maxIterations){t+=r.ellipsis;break}var u=s===0?lT(t,i,a):o>0?Math.floor(t.length*i/o):0;t=t.substr(0,u),o=ze(a,t)}t===""&&(t=r.placeholder),e.textLine=t,e.isTruncated=!0}function lT(e,t,r){for(var n=0,i=0,a=e.length;ip&&v){var _=Math.floor(p/c);d=d||m.length>_,m=m.slice(0,_),y=m.length*c}if(i&&f&&g!=null)for(var S=Xg(g,l,t.ellipsis,{minChar:t.truncateMinChar,placeholder:t.placeholder}),T={},w=0;wd&&Cu(a,o.substring(d,p),t,v),Cu(a,g[2],t,v,g[1]),d=bu.lastIndex}dh){var $=a.lines.length;I>0?(M.tokens=M.tokens.slice(0,I),x(M,A,C),a.lines=a.lines.slice(0,D+1)):a.lines=a.lines.slice(0,D),a.isTruncated=a.isTruncated||a.lines.length<$;break t}var J=P.width,q=J==null||J==="auto";if(typeof J=="string"&&J.charAt(J.length-1)==="%")L.percentWidth=J,m.push(L),L.contentWidth=ze(Fe(N),L.text);else{if(q){var tt=P.backgroundColor,et=tt&&tt.image;et&&(et=sT(et),As(et)&&(L.width=Math.max(L.width,et.width*X/et.height)))}var V=S&&f!=null?f-A:null;V!=null&&V0&&d+n.accumWidth>n.width&&(f=t.split(` +`),l=!0),n.accumWidth=d}else{var g=$g(t,u,n.width,n.breakAll,n.accumWidth);n.accumWidth=g.accumWidth+v,h=g.linesWidths,f=g.lines}}f||(f=t.split(` +`));for(var p=Fe(u),m=0;m=32&&t<=591||t>=880&&t<=4351||t>=4608&&t<=5119||t>=7680&&t<=8303}var pT=Tr(",&?/;] ".split(""),function(e,t){return e[t]=!0,e},{});function gT(e){return dT(e)?!!pT[e]:!0}function $g(e,t,r,n,i){for(var a=[],o=[],s="",u="",l=0,f=0,h=Fe(t),c=0;cr:i+f+d>r){f?(s||u)&&(g?(s||(s=u,u="",l=0,f=l),a.push(s),o.push(f-l),u+=v,l+=d,s="",f=l):(u&&(s+=u,u="",l=0),a.push(s),o.push(f),s=v,f=d)):g?(a.push(u),o.push(l),u=v,l=d):(a.push(v),o.push(d));continue}f+=d,g?(u+=v,l+=d):(u&&(s+=u,u="",l=0),s+=v)}return u&&(s+=u),s&&(a.push(s),o.push(f)),a.length===1&&(f+=i),{accumWidth:f,lines:a,linesWidths:o}}function nv(e,t,r,n,i,a){if(e.baseX=r,e.baseY=n,e.outerWidth=e.outerHeight=null,!!t){var o=t.width*2,s=t.height*2;Z.set(iv,Kn(r,o,i),nn(n,s,a),o,s),Z.intersect(t,iv,null,av);var u=av.outIntersectRect;e.outerWidth=u.width,e.outerHeight=u.height,e.baseX=Kn(u.x,u.width,i,!0),e.baseY=nn(u.y,u.height,a,!0)}}var iv=new Z(0,0,0,0),av={outIntersectRect:{},clamp:!0};function oh(e){return e!=null?e+="":e=""}function mT(e){var t=oh(e.text),r=e.font,n=ze(Fe(r),t),i=bs(r);return Xl(e,n,i,null)}function Xl(e,t,r,n){var i=new Z(Kn(e.x||0,t,e.textAlign),nn(e.y||0,r,e.textBaseline),t,r),a=n??(qg(e)?e.lineWidth:0);return a>0&&(i.x-=a/2,i.y-=a/2,i.width+=a,i.height+=a),i}function qg(e){var t=e.stroke;return t!=null&&t!=="none"&&e.lineWidth>0}var Zl="__zr_style_"+Math.round(Math.random()*10),an={shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,shadowColor:"#000",opacity:1,blend:"source-over"},Ls={style:{shadowBlur:!0,shadowOffsetX:!0,shadowOffsetY:!0,shadowColor:!0,opacity:!0}};an[Zl]=!0;var ov=["z","z2","invisible"],yT=["invisible"],Ca=(function(e){z(t,e);function t(r){return e.call(this,r)||this}return t.prototype._init=function(r){for(var n=gt(r),i=0;i1e-4){s[0]=e-r,s[1]=t-n,u[0]=e+r,u[1]=t+n;return}if(Fa[0]=Lu(i)*r+e,Fa[1]=Au(i)*n+t,za[0]=Lu(a)*r+e,za[1]=Au(a)*n+t,l(s,Fa,za),f(u,Fa,za),i=i%Or,i<0&&(i=i+Or),a=a%Or,a<0&&(a=a+Or),i>a&&!o?a+=Or:ii&&(Ha[0]=Lu(v)*r+e,Ha[1]=Au(v)*n+t,l(s,Ha,s),f(u,Ha,u))}var ot={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},kr=[],Br=[],De=[],ir=[],Ae=[],Le=[],Iu=Math.min,Pu=Math.max,Nr=Math.cos,Fr=Math.sin,$e=Math.abs,$l=Math.PI,fr=$l*2,Eu=typeof Float32Array<"u",pi=[];function Ru(e){var t=Math.round(e/$l*1e8)/1e8;return t%2*$l}function xT(e,t){var r=Ru(e[0]);r<0&&(r+=fr);var n=r-e[0],i=e[1];i+=n,!t&&i-r>=fr?i=r+fr:t&&r-i>=fr?i=r-fr:!t&&r>i?i=r+(fr-Ru(r-i)):t&&r0&&(this._ux=$e(n/$o/t)||0,this._uy=$e(n/$o/r)||0)},e.prototype.setDPR=function(t){this.dpr=t},e.prototype.setContext=function(t){this._ctx=t},e.prototype.getContext=function(){return this._ctx},e.prototype.beginPath=function(){return this._ctx&&this._ctx.beginPath(),this.reset(),this},e.prototype.reset=function(){this._saveData&&(this._len=0),this._pathSegLen&&(this._pathSegLen=null,this._pathLen=0),this._version++},e.prototype.moveTo=function(t,r){return this._drawPendingPt(),this.addData(ot.M,t,r),this._ctx&&this._ctx.moveTo(t,r),this._x0=t,this._y0=r,this._xi=t,this._yi=r,this},e.prototype.lineTo=function(t,r){var n=$e(t-this._xi),i=$e(r-this._yi),a=n>this._ux||i>this._uy;if(this.addData(ot.L,t,r),this._ctx&&a&&this._ctx.lineTo(t,r),a)this._xi=t,this._yi=r,this._pendingPtDist=0;else{var o=n*n+i*i;o>this._pendingPtDist&&(this._pendingPtX=t,this._pendingPtY=r,this._pendingPtDist=o)}return this},e.prototype.bezierCurveTo=function(t,r,n,i,a,o){return this._drawPendingPt(),this.addData(ot.C,t,r,n,i,a,o),this._ctx&&this._ctx.bezierCurveTo(t,r,n,i,a,o),this._xi=a,this._yi=o,this},e.prototype.quadraticCurveTo=function(t,r,n,i){return this._drawPendingPt(),this.addData(ot.Q,t,r,n,i),this._ctx&&this._ctx.quadraticCurveTo(t,r,n,i),this._xi=n,this._yi=i,this},e.prototype.arc=function(t,r,n,i,a,o){this._drawPendingPt(),pi[0]=i,pi[1]=a,xT(pi,o),i=pi[0],a=pi[1];var s=a-i;return this.addData(ot.A,t,r,n,n,i,s,0,o?0:1),this._ctx&&this._ctx.arc(t,r,n,i,a,o),this._xi=Nr(a)*n+t,this._yi=Fr(a)*n+r,this},e.prototype.arcTo=function(t,r,n,i,a){return this._drawPendingPt(),this._ctx&&this._ctx.arcTo(t,r,n,i,a),this},e.prototype.rect=function(t,r,n,i){return this._drawPendingPt(),this._ctx&&this._ctx.rect(t,r,n,i),this.addData(ot.R,t,r,n,i),this},e.prototype.closePath=function(){this._drawPendingPt(),this.addData(ot.Z);var t=this._ctx,r=this._x0,n=this._y0;return t&&t.closePath(),this._xi=r,this._yi=n,this},e.prototype.fill=function(t){t&&t.fill(),this.toStatic()},e.prototype.stroke=function(t){t&&t.stroke(),this.toStatic()},e.prototype.len=function(){return this._len},e.prototype.setData=function(t){if(this._saveData){var r=t.length;!(this.data&&this.data.length===r)&&Eu&&(this.data=new Float32Array(r));for(var n=0;n0&&o))for(var s=0;sf.length&&(this._expandData(),f=this.data);for(var h=0;h0&&(this._ctx&&this._ctx.lineTo(this._pendingPtX,this._pendingPtY),this._pendingPtDist=0)},e.prototype._expandData=function(){if(!(this.data instanceof Array)){for(var t=[],r=0;r11&&(this.data=new Float32Array(t)))}},e.prototype.getBoundingRect=function(){De[0]=De[1]=Ae[0]=Ae[1]=Number.MAX_VALUE,ir[0]=ir[1]=Le[0]=Le[1]=-Number.MAX_VALUE;var t=this.data,r=0,n=0,i=0,a=0,o;for(o=0;on||$e(_)>i||c===r-1)&&(g=Math.sqrt(y*y+_*_),a=p,o=m);break}case ot.C:{var S=t[c++],T=t[c++],p=t[c++],m=t[c++],w=t[c++],x=t[c++];g=I1(a,o,S,T,p,m,w,x,10),a=w,o=x;break}case ot.Q:{var S=t[c++],T=t[c++],p=t[c++],m=t[c++];g=R1(a,o,S,T,p,m,10),a=p,o=m;break}case ot.A:var D=t[c++],M=t[c++],C=t[c++],A=t[c++],I=t[c++],L=t[c++],P=L+I;c+=1,d&&(s=Nr(I)*C+D,u=Fr(I)*A+M),g=Pu(C,A)*Iu(fr,Math.abs(L)),a=Nr(P)*C+D,o=Fr(P)*A+M;break;case ot.R:{s=a=t[c++],u=o=t[c++];var E=t[c++],R=t[c++];g=E*2+R*2;break}case ot.Z:{var y=s-a,_=u-o;g=Math.sqrt(y*y+_*_),a=s,o=u;break}}g>=0&&(l[h++]=g,f+=g)}return this._pathLen=f,f},e.prototype.rebuildPath=function(t,r){var n=this.data,i=this._ux,a=this._uy,o=this._len,s,u,l,f,h,c,v=r<1,d,g,p=0,m=0,y,_=0,S,T;if(!(v&&(this._pathSegLen||this._calculateLength(),d=this._pathSegLen,g=this._pathLen,y=r*g,!y)))t:for(var w=0;w0&&(t.lineTo(S,T),_=0),x){case ot.M:s=l=n[w++],u=f=n[w++],t.moveTo(l,f);break;case ot.L:{h=n[w++],c=n[w++];var M=$e(h-l),C=$e(c-f);if(M>i||C>a){if(v){var A=d[m++];if(p+A>y){var I=(y-p)/A;t.lineTo(l*(1-I)+h*I,f*(1-I)+c*I);break t}p+=A}t.lineTo(h,c),l=h,f=c,_=0}else{var L=M*M+C*C;L>_&&(S=h,T=c,_=L)}break}case ot.C:{var P=n[w++],E=n[w++],R=n[w++],N=n[w++],X=n[w++],$=n[w++];if(v){var A=d[m++];if(p+A>y){var I=(y-p)/A;Yo(l,P,R,X,I,kr),Yo(f,E,N,$,I,Br),t.bezierCurveTo(kr[1],Br[1],kr[2],Br[2],kr[3],Br[3]);break t}p+=A}t.bezierCurveTo(P,E,R,N,X,$),l=X,f=$;break}case ot.Q:{var P=n[w++],E=n[w++],R=n[w++],N=n[w++];if(v){var A=d[m++];if(p+A>y){var I=(y-p)/A;Xo(l,P,R,I,kr),Xo(f,E,N,I,Br),t.quadraticCurveTo(kr[1],Br[1],kr[2],Br[2]);break t}p+=A}t.quadraticCurveTo(P,E,R,N),l=R,f=N;break}case ot.A:var J=n[w++],q=n[w++],tt=n[w++],et=n[w++],V=n[w++],it=n[w++],ut=n[w++],jt=!n[w++],Ze=tt>et?tt:et,Jt=$e(tt-et)>.001,It=V+it,Q=!1;if(v){var A=d[m++];p+A>y&&(It=V+it*(y-p)/A,Q=!0),p+=A}if(Jt&&t.ellipse?t.ellipse(J,q,tt,et,ut,V,It,jt):t.arc(J,q,Ze,V,It,jt),Q)break t;D&&(s=Nr(V)*tt+J,u=Fr(V)*et+q),l=Nr(It)*tt+J,f=Fr(It)*et+q;break;case ot.R:s=l=n[w],u=f=n[w+1],h=n[w++],c=n[w++];var nt=n[w++],Mr=n[w++];if(v){var A=d[m++];if(p+A>y){var zt=y-p;t.moveTo(h,c),t.lineTo(h+Iu(zt,nt),c),zt-=nt,zt>0&&t.lineTo(h+nt,c+Iu(zt,Mr)),zt-=Mr,zt>0&&t.lineTo(h+Pu(nt-zt,0),c+Mr),zt-=nt,zt>0&&t.lineTo(h,c+Pu(Mr-zt,0));break t}p+=A}t.rect(h,c,nt,Mr);break;case ot.Z:if(v){var A=d[m++];if(p+A>y){var I=(y-p)/A;t.lineTo(l*(1-I)+s*I,f*(1-I)+u*I);break t}p+=A}t.closePath(),l=s,f=u}}},e.prototype.clone=function(){var t=new e,r=this.data;return t.data=r.slice?r.slice():Array.prototype.slice.call(r),t._len=this._len,t},e.prototype.canSave=function(){return!!this._saveData},e.CMD=ot,e.initDefaultProps=(function(){var t=e.prototype;t._saveData=!0,t._ux=0,t._uy=0,t._pendingPtDist=0,t._version=0})(),e})();function wn(e,t,r,n,i,a,o){if(i===0)return!1;var s=i,u=0,l=e;if(o>t+s&&o>n+s||oe+s&&a>r+s||at+h&&f>n+h&&f>a+h&&f>s+h||fe+h&&l>r+h&&l>i+h&&l>o+h||lt+l&&u>n+l&&u>a+l||ue+l&&s>r+l&&s>i+l||sr||f+li&&(i+=gi);var c=Math.atan2(u,s);return c<0&&(c+=gi),c>=n&&c<=i||c+gi>=n&&c+gi<=i}function zr(e,t,r,n,i,a){if(a>t&&a>n||ai?s:0}var ar=Jn.CMD,Hr=Math.PI*2,DT=1e-4;function AT(e,t){return Math.abs(e-t)t&&l>n&&l>a&&l>s||l1&<(),v=Vt(t,n,a,s,he[0]),c>1&&(d=Vt(t,n,a,s,he[1]))),c===2?pt&&s>n&&s>a||s=0&&l<=1){for(var f=0,h=Xt(t,n,a,l),c=0;cr||s<-r)return 0;var u=Math.sqrt(r*r-s*s);Ht[0]=-u,Ht[1]=u;var l=Math.abs(n-i);if(l<1e-4)return 0;if(l>=Hr-1e-4){n=0,i=Hr;var f=a?1:-1;return o>=Ht[0]+e&&o<=Ht[1]+e?f:0}if(n>i){var h=n;n=i,i=h}n<0&&(n+=Hr,i+=Hr);for(var c=0,v=0;v<2;v++){var d=Ht[v];if(d+e>o){var g=Math.atan2(s,d),f=a?1:-1;g<0&&(g=Hr+g),(g>=n&&g<=i||g+Hr>=n&&g+Hr<=i)&&(g>Math.PI/2&&g1&&(r||(s+=zr(u,l,f,h,n,i))),p&&(u=a[d],l=a[d+1],f=u,h=l),g){case ar.M:f=a[d++],h=a[d++],u=f,l=h;break;case ar.L:if(r){if(wn(u,l,a[d],a[d+1],t,n,i))return!0}else s+=zr(u,l,a[d],a[d+1],n,i)||0;u=a[d++],l=a[d++];break;case ar.C:if(r){if(bT(u,l,a[d++],a[d++],a[d++],a[d++],a[d],a[d+1],t,n,i))return!0}else s+=IT(u,l,a[d++],a[d++],a[d++],a[d++],a[d],a[d+1],n,i)||0;u=a[d++],l=a[d++];break;case ar.Q:if(r){if(CT(u,l,a[d++],a[d++],a[d],a[d+1],t,n,i))return!0}else s+=PT(u,l,a[d++],a[d++],a[d],a[d+1],n,i)||0;u=a[d++],l=a[d++];break;case ar.A:var m=a[d++],y=a[d++],_=a[d++],S=a[d++],T=a[d++],w=a[d++];d+=1;var x=!!(1-a[d++]);c=Math.cos(T)*_+m,v=Math.sin(T)*S+y,p?(f=c,h=v):s+=zr(u,l,c,v,n,i);var D=(n-m)*S/_+m;if(r){if(MT(m,y,S,T,T+w,x,t,D,i))return!0}else s+=ET(m,y,S,T,T+w,x,D,i);u=Math.cos(T+w)*_+m,l=Math.sin(T+w)*S+y;break;case ar.R:f=u=a[d++],h=l=a[d++];var M=a[d++],C=a[d++];if(c=f+M,v=h+C,r){if(wn(f,h,c,h,t,n,i)||wn(c,h,c,v,t,n,i)||wn(c,v,f,v,t,n,i)||wn(f,v,f,h,t,n,i))return!0}else s+=zr(c,h,c,v,n,i),s+=zr(f,v,f,h,n,i);break;case ar.Z:if(r){if(wn(u,l,f,h,t,n,i))return!0}else s+=zr(u,l,f,h,n,i);u=f,l=h;break}}return!r&&!AT(l,h)&&(s+=zr(u,l,f,h,n,i)||0),s!==0}function RT(e,t,r){return Kg(e,0,!1,t,r)}function OT(e,t,r,n){return Kg(e,t,!0,r,n)}var Qg=pt({fill:"#000",stroke:null,strokePercent:1,fillOpacity:1,strokeOpacity:1,lineDashOffset:0,lineWidth:1,lineCap:"butt",miterLimit:10,strokeNoScale:!1,strokeFirst:!1},an),kT={style:pt({fill:!0,stroke:!0,strokePercent:!0,fillOpacity:!0,strokeOpacity:!0,lineDashOffset:!0,lineWidth:!0,miterLimit:!0},Ls.style)},Ou=xs.concat(["invisible","culling","z","z2","zlevel","parent"]),mt=(function(e){z(t,e);function t(r){return e.call(this,r)||this}return t.prototype.update=function(){var r=this;e.prototype.update.call(this);var n=this.style;if(n.decal){var i=this._decalEl=this._decalEl||new t;i.buildPath===t.prototype.buildPath&&(i.buildPath=function(u){r.buildPath(u,r.shape)}),i.silent=!0;var a=i.style;for(var o in n)a[o]!==n[o]&&(a[o]=n[o]);a.fill=n.fill?n.decal:null,a.decal=null,a.shadowColor=null,n.strokeFirst&&(a.stroke=null);for(var s=0;s.5?Vl:n>.2?J1:Gl}else if(r)return Gl}return Vl},t.prototype.getInsideTextStroke=function(r){var n=this.style.fill;if(F(n)){var i=this.__zr,a=!!(i&&i.isDarkMode()),o=Zo(r,0)0))},t.prototype.hasFill=function(){var r=this.style,n=r.fill;return n!=null&&n!=="none"},t.prototype.getBoundingRect=function(){var r=this._rect,n=this.style,i=!r;if(i){var a=!1;this.path||(a=!0,this.createPathProxy());var o=this.path;(a||this.__dirty&On)&&(o.beginPath(),this.buildPath(o,this.shape,!1),this.pathUpdated()),r=o.getBoundingRect()}if(this._rect=r,this.hasStroke()&&this.path&&this.path.len()>0){var s=this._rectStroke||(this._rectStroke=r.clone());if(this.__dirty||i){s.copy(r);var u=n.strokeNoScale?this.getLineScale():1,l=n.lineWidth;if(!this.hasFill()){var f=this.strokeContainThreshold;l=Math.max(l,f??4)}u>1e-10&&(s.width+=l/u,s.height+=l/u,s.x-=l/u/2,s.y-=l/u/2)}return s}return r},t.prototype.contain=function(r,n){var i=this.transformCoordToLocal(r,n),a=this.getBoundingRect(),o=this.style;if(r=i[0],n=i[1],a.contain(r,n)){var s=this.path;if(this.hasStroke()){var u=o.lineWidth,l=o.strokeNoScale?this.getLineScale():1;if(l>1e-10&&(this.hasFill()||(u=Math.max(u,this.strokeContainThreshold)),OT(s,u/l,r,n)))return!0}if(this.hasFill())return RT(s,r,n)}return!1},t.prototype.dirtyShape=function(){this.__dirty|=On,this._rect&&(this._rect=null),this._decalEl&&this._decalEl.dirtyShape(),this.markRedraw()},t.prototype.dirty=function(){this.dirtyStyle(),this.dirtyShape()},t.prototype.animateShape=function(r){return this.animate("shape",r)},t.prototype.updateDuringAnimation=function(r){r==="style"?this.dirtyStyle():r==="shape"?this.dirtyShape():this.markRedraw()},t.prototype.attrKV=function(r,n){r==="shape"?this.setShape(n):e.prototype.attrKV.call(this,r,n)},t.prototype.setShape=function(r,n){var i=this.shape;return i||(i=this.shape={}),typeof r=="string"?i[r]=n:k(i,r),this.dirtyShape(),this},t.prototype.shapeChanged=function(){return!!(this.__dirty&On)},t.prototype.createStyle=function(r){return ws(Qg,r)},t.prototype._innerSaveToNormal=function(r){e.prototype._innerSaveToNormal.call(this,r);var n=this._normalState;r.shape&&!n.shape&&(n.shape=k({},this.shape))},t.prototype._applyStateObj=function(r,n,i,a,o,s){if(e.prototype._applyStateObj.call(this,r,n,i,a,o,s),this.__inHover!==Cs){var u=!(n&&a),l;if(n&&n.shape?o?a?l=n.shape:(l=k({},i.shape),k(l,n.shape)):(l=k({},a?this.shape:i.shape),k(l,n.shape)):u&&(l=i.shape),l)if(o){this.shape=k({},this.shape);for(var f={},h=gt(l),c=0;ci&&(h=s+u,s*=i/h,u*=i/h),l+f>i&&(h=l+f,l*=i/h,f*=i/h),u+l>a&&(h=u+l,u*=a/h,l*=a/h),s+f>a&&(h=s+f,s*=a/h,f*=a/h),e.moveTo(r+s,n),e.lineTo(r+i-u,n),u!==0&&e.arc(r+i-u,n+u,u,-Math.PI/2,0),e.lineTo(r+i,n+a-l),l!==0&&e.arc(r+i-l,n+a-l,l,0,Math.PI/2),e.lineTo(r+f,n+a),f!==0&&e.arc(r+f,n+a-f,f,Math.PI/2,Math.PI),e.lineTo(r,n+s),s!==0&&e.arc(r+s,n+s,s,Math.PI,Math.PI*1.5),e.closePath()}var Hn=Math.round;function jg(e,t,r){if(t){var n=t.x1,i=t.x2,a=t.y1,o=t.y2;e.x1=n,e.x2=i,e.y1=a,e.y2=o;var s=r&&r.lineWidth;return s&&(Hn(n*2)===Hn(i*2)&&(e.x1=e.x2=Jr(n,s,!0)),Hn(a*2)===Hn(o*2)&&(e.y1=e.y2=Jr(a,s,!0))),e}}function Jg(e,t,r){if(t){var n=t.x,i=t.y,a=t.width,o=t.height;e.x=n,e.y=i,e.width=a,e.height=o;var s=r&&r.lineWidth;return s&&(e.x=Jr(n,s,!0),e.y=Jr(i,s,!0),e.width=Math.max(Jr(n+a,s,!1)-e.x,a===0?0:1),e.height=Math.max(Jr(i+o,s,!1)-e.y,o===0?0:1)),e}}function Jr(e,t,r){if(!t)return e;var n=Hn(e*2);return(n+Hn(t))%2===0?n/2:(n+(r?1:-1))/2}var VT=(function(){function e(){this.x=0,this.y=0,this.width=0,this.height=0}return e})(),GT={},Mt=(function(e){z(t,e);function t(r){return e.call(this,r)||this}return t.prototype.getDefaultShape=function(){return new VT},t.prototype.buildPath=function(r,n){var i,a,o,s;if(this.subPixelOptimize){var u=Jg(GT,n,this.style);i=u.x,a=u.y,o=u.width,s=u.height,u.r=n.r,n=u}else i=n.x,a=n.y,o=n.width,s=n.height;n.r?HT(r,n):r.rect(i,a,o,s)},t.prototype.isZeroArea=function(){return!this.shape.width||!this.shape.height},t})(mt);Mt.prototype.type="rect";var hv={fill:"#000"},cv=2,Ie={},UT={style:pt({fill:!0,stroke:!0,fillOpacity:!0,strokeOpacity:!0,lineWidth:!0,fontSize:!0,lineHeight:!0,width:!0,height:!0,textShadowColor:!0,textShadowBlur:!0,textShadowOffsetX:!0,textShadowOffsetY:!0,backgroundColor:!0,padding:!0,borderColor:!0,borderWidth:!0,borderRadius:!0},Ls.style)},ie=(function(e){z(t,e);function t(r){var n=e.call(this)||this;return n.type="text",n._children=[],n._defaultStyle=hv,n.attr(r),n}return t.prototype.childrenRef=function(){return this._children},t.prototype.update=function(){e.prototype.update.call(this),this.styleChanged()&&this._updateSubTexts();for(var r=0;r0,I=0;I=0&&(P=w[L],P.align==="right");)this._placeToken(P,r,D,m,I,"right",_),M-=P.width,I-=P.width,L--;for(A+=(f-(A-p)-(y-I)-M)/2;C<=L;)P=w[C],this._placeToken(P,r,D,m,A+P.width/2,"center",_),A+=P.width,C++;m+=D}},t.prototype._placeToken=function(r,n,i,a,o,s,u){var l=n.rich[r.styleName]||{};l.text=r.text;var f=r.verticalAlign,h=a+i/2;f==="top"?h=a+r.height/2:f==="bottom"&&(h=a+i-r.height/2);var c=!r.isLineHolder&&ku(l);c&&this._renderBackground(l,n,s==="right"?o-r.width:s==="center"?o-r.width/2:o,h-r.height/2,r.width,r.height);var v=!!l.backgroundColor,d=r.textPadding;d&&(o=yv(o,s,d),h-=r.height/2-d[0]-r.innerHeight/2);var g=this._getOrCreateChild(jo),p=g.createStyle();g.useStyle(p);var m=this._defaultStyle,y=!1,_=0,S=!1,T=mv("fill"in l?l.fill:"fill"in n?n.fill:(y=!0,m.fill)),w=gv("stroke"in l?l.stroke:"stroke"in n?n.stroke:!v&&!u&&(!m.autoStroke||y)?(_=cv,S=!0,m.stroke):null),x=l.textShadowBlur>0||n.textShadowBlur>0;p.text=r.text,p.x=o,p.y=h,x&&(p.shadowBlur=l.textShadowBlur||n.textShadowBlur||0,p.shadowColor=l.textShadowColor||n.textShadowColor||"transparent",p.shadowOffsetX=l.textShadowOffsetX||n.textShadowOffsetX||0,p.shadowOffsetY=l.textShadowOffsetY||n.textShadowOffsetY||0),p.textAlign=s,p.textBaseline="middle",p.font=r.font||Sr,p.opacity=Gn(l.opacity,n.opacity,1),dv(p,l),w&&(p.lineWidth=Gn(l.lineWidth,n.lineWidth,_),p.lineDash=G(l.lineDash,n.lineDash),p.lineDashOffset=n.lineDashOffset||0,p.stroke=w),T&&(p.fill=T),g.setBoundingRect(Xl(p,r.contentWidth,r.contentHeight,S?0:null))},t.prototype._renderBackground=function(r,n,i,a,o,s){var u=r.backgroundColor,l=r.borderWidth,f=r.borderColor,h=u&&u.image,c=u&&!h,v=r.borderRadius,d=this,g,p;if(c||r.lineHeight||l&&f){g=this._getOrCreateChild(Mt),g.useStyle(g.createStyle()),g.style.fill=null;var m=g.shape;m.x=i,m.y=a,m.width=o,m.height=s,m.r=v,g.dirtyShape()}if(c){var y=g.style;y.fill=u||null,y.fillOpacity=G(r.fillOpacity,1)}else if(h){p=this._getOrCreateChild(pn),p.onload=function(){d.dirtyStyle()};var _=p.style;_.image=u.image,_.x=i,_.y=a,_.width=o,_.height=s}if(l&&f){var y=g.style;y.lineWidth=l,y.stroke=f,y.strokeOpacity=G(r.strokeOpacity,1),y.lineDash=r.borderDash,y.lineDashOffset=r.borderDashOffset||0,g.strokeContainThreshold=0,g.hasFill()&&g.hasStroke()&&(y.strokeFirst=!0,y.lineWidth*=2)}var S=(g||p).style;S.shadowBlur=r.shadowBlur||0,S.shadowColor=r.shadowColor||"transparent",S.shadowOffsetX=r.shadowOffsetX||0,S.shadowOffsetY=r.shadowOffsetY||0,S.opacity=Gn(r.opacity,n.opacity,1)},t.makeFont=function(r){var n="";return ZT(r)&&(n=[r.fontStyle,r.fontWeight,XT(r.fontSize),r.fontFamily||"sans-serif"].join(" ")),n&&Oe(n)||r.textFont||r.font},t})(Ca),WT={left:!0,right:1,center:1},YT={top:1,bottom:1,middle:1},vv=["fontStyle","fontWeight","fontSize","fontFamily"];function XT(e){return typeof e=="string"&&(e.indexOf("px")!==-1||e.indexOf("rem")!==-1||e.indexOf("em")!==-1)?e:isNaN(+e)?Gf+"px":e+"px"}function dv(e,t){for(var r=0;r=0,a=!1;if(e instanceof mt){var o=im(e),s=i&&o.selectFill||o.normalFill,u=i&&o.selectStroke||o.normalStroke;if(xn(s)||xn(u)){n=n||{};var l=n.style||{};l.fill==="inherit"?(a=!0,n=k({},n),l=k({},l),l.fill=s):!xn(l.fill)&&xn(s)?(a=!0,n=k({},n),l=k({},l),l.fill=Rc(s)):!xn(l.stroke)&&xn(u)&&(a||(n=k({},n),l=k({},l)),l.stroke=Rc(u)),n.style=l}}if(n&&n.z2==null){a||(n=k({},n));var f=e.z2EmphasisLift;n.z2=e.z2+(f??jT)}return n}function iw(e,t,r){if(r&&r.z2==null){r=k({},r);var n=e.z2SelectLift;r.z2=e.z2+(n??JT)}return r}function aw(e,t,r){var n=st(e.currentStates,t)>=0,i=e.style.opacity,a=n?null:rw(e,["opacity"],t,{opacity:1});r=r||{};var o=r.style||{};return o.opacity==null&&(r=k({},r),o=k({opacity:n?i:a.opacity*.1},o),r.style=o),r}function Bu(e,t){var r=this.states[e];if(this.style){if(e==="emphasis")return nw(this,e,t,r);if(e==="blur")return aw(this,e,r);if(e==="select")return iw(this,e,r)}return r}function ow(e){e.stateProxy=Bu;var t=e.getTextContent(),r=e.getTextGuideLine();t&&(t.stateProxy=Bu),r&&(r.stateProxy=Bu)}function bv(e,t){!hm(e,t)&&!e.__highByOuter&&nr(e,am)}function Cv(e,t){!hm(e,t)&&!e.__highByOuter&&nr(e,om)}function Kl(e,t){e.__highByOuter|=1<<(t||0),nr(e,am)}function Ql(e,t){!(e.__highByOuter&=~(1<<(t||0)))&&nr(e,om)}function sw(e){nr(e,fh)}function um(e){nr(e,sm)}function lm(e){nr(e,tw)}function fm(e){nr(e,ew)}function hm(e,t){return e.__highDownSilentOnTouch&&t.zrByTouch}function cm(e){var t=e.getModel(),r=[],n=[];t.eachComponent(function(i,a){var o=sh(a),s=QT(e,a),u=i==="series";!u&&n.push(s),o.isBlured&&(s.group.traverse(function(l){sm(l)}),u&&r.push(a)),o.isBlured=!1}),b(n,function(i){i&&i.toggleBlurSeries&&i.toggleBlurSeries(r,!1,t)})}function jl(e,t,r,n){var i=n.getModel();r=r||"coordinateSystem";function a(l,f){for(var h=0;h0){var s={dataIndex:o,seriesIndex:r.seriesIndex};a!=null&&(s.dataType=a),t.push(s)}})}),t}function tf(e,t,r){vm(e,!0),nr(e,ow),dw(e,t,r)}function vw(e){vm(e,!1)}function O2(e,t,r,n){n?vw(e):tf(e,t,r)}function dw(e,t,r){var n=yt(e);t!=null?(n.focus=t,n.blurScope=r):n.focus&&(n.focus=null)}var Dv=["emphasis","blur","select"],pw={itemStyle:"getItemStyle",lineStyle:"getLineStyle",areaStyle:"getAreaStyle"};function k2(e,t,r,n){r=r||"itemStyle";for(var i=0;i1&&(o*=Nu(d),s*=Nu(d));var g=(i===a?-1:1)*Nu((o*o*(s*s)-o*o*(v*v)-s*s*(c*c))/(o*o*(v*v)+s*s*(c*c)))||0,p=g*o*v/s,m=g*-s*c/o,y=(e+r)/2+Ua(h)*p-Ga(h)*m,_=(t+n)/2+Ga(h)*p+Ua(h)*m,S=Pv([1,0],[(c-p)/o,(v-m)/s]),T=[(c-p)/o,(v-m)/s],w=[(-1*c-p)/o,(-1*v-m)/s],x=Pv(T,w);if(nf(T,w)<=-1&&(x=mi),nf(T,w)>=1&&(x=0),x<0){var D=Math.round(x/mi*1e6)/1e6;x=mi*2+D%2*mi}f.addData(l,y,_,o,s,S,x,h,a)}var Tw=/([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig,ww=/-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;function xw(e){var t=new Jn;if(!e)return t;var r=0,n=0,i=r,a=n,o,s=Jn.CMD,u=e.match(Tw);if(!u)return t;for(var l=0;lP*P+E*E&&(D=C,M=A),{cx:D,cy:M,x0:-f,y0:-h,x1:D*(i/T-1),y1:M*(i/T-1)}}function Pw(e){var t;if(B(e)){var r=e.length;if(!r)return e;r===1?t=[e[0],e[0],0,0]:r===2?t=[e[0],e[0],e[1],e[1]]:r===3?t=e.concat(e[2]):t=e}else t=[e,e,e,e];return t}function Ew(e,t){var r,n=ki(t.r,0),i=ki(t.r0||0,0),a=n>0,o=i>0;if(!(!a&&!o)){if(a||(n=i,i=0),i>n){var s=n;n=i,i=s}var u=t.startAngle,l=t.endAngle;if(!(isNaN(u)||isNaN(l))){var f=t.cx,h=t.cy,c=!!t.clockwise,v=Rv(l-u),d=v>Fu&&v%Fu;if(d>Te&&(v=d),!(n>Te))e.moveTo(f,h);else if(v>Fu-Te)e.moveTo(f+n*Cn(u),h+n*Vr(u)),e.arc(f,h,n,u,l,!c),i>Te&&(e.moveTo(f+i*Cn(l),h+i*Vr(l)),e.arc(f,h,i,l,u,c));else{var g=void 0,p=void 0,m=void 0,y=void 0,_=void 0,S=void 0,T=void 0,w=void 0,x=void 0,D=void 0,M=void 0,C=void 0,A=void 0,I=void 0,L=void 0,P=void 0,E=n*Cn(u),R=n*Vr(u),N=i*Cn(l),X=i*Vr(l),$=v>Te;if($){var J=t.cornerRadius;J&&(r=Pw(J),g=r[0],p=r[1],m=r[2],y=r[3]);var q=Rv(n-i)/2;if(_=Pe(q,m),S=Pe(q,y),T=Pe(q,g),w=Pe(q,p),M=x=ki(_,S),C=D=ki(T,w),(x>Te||D>Te)&&(A=n*Cn(l),I=n*Vr(l),L=i*Cn(u),P=i*Vr(u),vTe){var Jt=Pe(m,M),It=Pe(y,M),Q=Wa(L,P,E,R,n,Jt,c),nt=Wa(A,I,N,X,n,It,c);e.moveTo(f+Q.cx+Q.x0,h+Q.cy+Q.y0),M0&&e.arc(f+Q.cx,h+Q.cy,Jt,Et(Q.y0,Q.x0),Et(Q.y1,Q.x1),!c),e.arc(f,h,n,Et(Q.cy+Q.y1,Q.cx+Q.x1),Et(nt.cy+nt.y1,nt.cx+nt.x1),!c),It>0&&e.arc(f+nt.cx,h+nt.cy,It,Et(nt.y1,nt.x1),Et(nt.y0,nt.x0),!c))}else e.moveTo(f+E,h+R),e.arc(f,h,n,u,l,!c);if(!(i>Te)||!$)e.lineTo(f+N,h+X);else if(C>Te){var Jt=Pe(g,C),It=Pe(p,C),Q=Wa(N,X,A,I,i,-It,c),nt=Wa(E,R,L,P,i,-Jt,c);e.lineTo(f+Q.cx+Q.x0,h+Q.cy+Q.y0),C0&&e.arc(f+Q.cx,h+Q.cy,It,Et(Q.y0,Q.x0),Et(Q.y1,Q.x1),!c),e.arc(f,h,i,Et(Q.cy+Q.y1,Q.cx+Q.x1),Et(nt.cy+nt.y1,nt.cx+nt.x1),c),Jt>0&&e.arc(f+nt.cx,h+nt.cy,Jt,Et(nt.y1,nt.x1),Et(nt.y0,nt.x0),!c))}else e.lineTo(f+N,h+X),e.arc(f,h,i,l,u,c)}e.closePath()}}}var Rw=(function(){function e(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=Math.PI*2,this.clockwise=!0,this.cornerRadius=0}return e})(),Os=(function(e){z(t,e);function t(r){return e.call(this,r)||this}return t.prototype.getDefaultShape=function(){return new Rw},t.prototype.buildPath=function(r,n){Ew(r,n)},t.prototype.isZeroArea=function(){return this.shape.startAngle===this.shape.endAngle||this.shape.r===this.shape.r0},t})(mt);Os.prototype.type="sector";var Ow=(function(){function e(){this.cx=0,this.cy=0,this.r=0,this.r0=0}return e})(),vh=(function(e){z(t,e);function t(r){return e.call(this,r)||this}return t.prototype.getDefaultShape=function(){return new Ow},t.prototype.buildPath=function(r,n){var i=n.cx,a=n.cy,o=Math.PI*2;r.moveTo(i+n.r,a),r.arc(i,a,n.r,0,o,!1),r.moveTo(i+n.r0,a),r.arc(i,a,n.r0,0,o,!0)},t})(mt);vh.prototype.type="ring";function kw(e,t,r,n){var i=[],a=[],o=[],s=[],u,l,f,h;if(n){f=[1/0,1/0],h=[-1/0,-1/0];for(var c=0,v=e.length;c=2){if(n){var a=kw(i,n,r,t.smoothConstraint);e.moveTo(i[0][0],i[0][1]);for(var o=i.length,s=0;s<(r?o:o-1);s++){var u=a[s*2],l=a[s*2+1],f=i[(s+1)%o];e.bezierCurveTo(u[0],u[1],l[0],l[1],f[0],f[1])}}else{e.moveTo(i[0][0],i[0][1]);for(var s=1,h=i.length;sUr[1]){if(a=!1,At.negativeSize||n)return a;var u=Ya(Ur[0]-Gr[1]),l=Ya(Gr[0]-Ur[1]);zu(u,l)>Za.len()&&(u=l||!At.bidirectional)&&(ct.scale(Xa,s,-l*i),At.useDir&&At.calcDirMTV()))}}return a},e.prototype._getProjMinMaxOnAxis=function(t,r,n){for(var i=this._axes[t],a=this._origin,o=r[0].dot(i)+a[t],s=o,u=o,l=1;l0){var h=f.duration,c=f.delay,v=f.easing,d={duration:h,delay:c||0,easing:v,done:a,force:!!a||!!o,setToFinal:!l,scope:e,during:o};s?t.animateFrom(r,d):t.animateTo(r,d)}else t.stopAnimation(),!s&&t.attr(r),o&&o(1),a&&a()}function Ma(e,t,r,n,i,a){mh("update",e,t,r,n,i,a)}function Bs(e,t,r,n,i,a){mh("enter",e,t,r,n,i,a)}function Xi(e){if(!e.__zr)return!0;for(var t=0;tLt(a[1])?a[0]>0?"right":"left":a[1]>0?"bottom":"top"}function Bv(e){return!e.isGroup}function lx(e){return e.shape!=null}function Lm(e,t,r){if(!e||!t)return;function n(o){var s={};return o.traverse(function(u){Bv(u)&&u.anid&&(s[u.anid]=u)}),s}function i(o){var s={x:o.x,y:o.y,rotation:o.rotation};return lx(o)&&(s.shape=rt(o.shape)),s}var a=n(e);t.traverse(function(o){if(Bv(o)&&o.anid){var s=a[o.anid];if(s){var u=i(o);o.attr(i(s)),Ma(o,u,r,yt(o).dataIndex)}}})}function fx(e,t){return Y(e,function(r){var n=r[0];n=ht(n,t.x),n=ne(n,t.x+t.width);var i=r[1];return i=ht(i,t.y),i=ne(i,t.y+t.height),[n,i]})}function hx(e,t){var r=ht(e.x,t.x),n=ne(e.x+e.width,t.x+t.width),i=ht(e.y,t.y),a=ne(e.y+e.height,t.y+t.height);if(n>=r&&a>=i)return{x:r,y:i,width:n-r,height:a-i}}function Sh(e,t,r){var n=k({rectHover:!0},t),i=n.style={strokeNoScale:!0};if(r=r||{x:-1,y:-1,width:2,height:2},e)return e.indexOf("image://")===0?(i.image=e.slice(8),pt(i,r),new pn(n)):yh(e.replace("path://",""),n,r,"center")}function cx(e,t,r,n,i){for(var a=0,o=i[i.length-1];a1)return!1;var p=Hu(v,d,f,h)/c;return!(p<0||p>1)}function Hu(e,t,r,n){return e*n-r*t}function vx(e){return e<=1e-6&&e>=-1e-6}function es(e,t,r,n,i){return t==null||(Tt(t)?dt[0]=dt[1]=dt[2]=dt[3]=t:(dt[0]=t[0],dt[1]=t[1],dt[2]=t[2],dt[3]=t[3]),n&&(dt[0]=ht(0,dt[0]),dt[1]=ht(0,dt[1]),dt[2]=ht(0,dt[2]),dt[3]=ht(0,dt[3])),r&&(dt[0]=-dt[0],dt[1]=-dt[1],dt[2]=-dt[2],dt[3]=-dt[3]),Nv(e,dt,"x","width",3,1,i&&i[0]||0),Nv(e,dt,"y","height",0,2,i&&i[1]||0)),e}var dt=[0,0,0,0];function Nv(e,t,r,n,i,a,o){var s=t[a]+t[i],u=e[n];e[n]+=s,o=ht(0,ne(o,u)),e[n]=0?-t[i]:t[a]>=0?u+t[a]:Lt(s)>1e-8?(u-o)*t[i]/s:0):e[r]-=t[i]}function Ns(e){var t=e.itemTooltipOption,r=e.componentModel,n=e.itemName,i=F(t)?{formatter:t}:t,a=r.mainType,o=r.componentIndex,s={componentType:a,name:n,$vars:["name"]};s[a+"Index"]=o;var u=e.formatterParamsExtra;u&&b(gt(u),function(f){qt(s,f)||(s[f]=u[f],s.$vars.push(f))});var l=yt(e.el);l.componentMainType=a,l.componentIndex=o,l.tooltipConfig={name:n,option:pt({content:n,encodeHTMLContent:!0,formatterParams:s},i)}}function of(e,t){var r;e.isGroup&&(r=t(e)),r||e.traverse(t)}function Pm(e,t){if(e)if(B(e))for(var r=0;rt&&(t=o),ot&&(r=t=0),{min:r,max:t}}function Rm(e,t,r){Om(e,t,r,-1/0)}function Om(e,t,r,n){if(e.ignoreModelZ)return n;var i=e.getTextContent(),a=e.getTextGuideLine(),o=e.isGroup;if(o)for(var s=e.childrenRef(),u=0;u=0&&s.push(u)}),s}}function Rx(e,t){return lt(lt({},e,!0),t,!0)}const Ox={time:{month:["January","February","March","April","May","June","July","August","September","October","November","December"],monthAbbr:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayOfWeekAbbr:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},legend:{selector:{all:"All",inverse:"Inv"}},toolbox:{brush:{title:{rect:"Box Select",polygon:"Lasso Select",lineX:"Horizontally Select",lineY:"Vertically Select",keep:"Keep Selections",clear:"Clear Selections"}},dataView:{title:"Data View",lang:["Data View","Close","Refresh"]},dataZoom:{title:{zoom:"Zoom",back:"Zoom Reset"}},magicType:{title:{line:"Switch to Line Chart",bar:"Switch to Bar Chart",stack:"Stack",tiled:"Tile"}},restore:{title:"Restore"},saveAsImage:{title:"Save as Image",lang:["Right Click to Save Image"]}},series:{typeNames:{pie:"Pie chart",bar:"Bar chart",line:"Line chart",scatter:"Scatter plot",effectScatter:"Ripple scatter plot",radar:"Radar chart",tree:"Tree",treemap:"Treemap",boxplot:"Boxplot",candlestick:"Candlestick",k:"K line chart",heatmap:"Heat map",map:"Map",parallel:"Parallel coordinate map",lines:"Line graph",graph:"Relationship graph",sankey:"Sankey diagram",funnel:"Funnel chart",gauge:"Gauge",pictorialBar:"Pictorial bar",themeRiver:"Theme River Map",sunburst:"Sunburst",custom:"Custom chart",chart:"Chart"}},aria:{general:{withTitle:'This is a chart about "{title}"',withoutTitle:"This is a chart"},series:{single:{prefix:"",withName:" with type {seriesType} named {seriesName}.",withoutName:" with type {seriesType}."},multiple:{prefix:". It consists of {seriesCount} series count.",withName:" The {seriesId} series is a {seriesType} representing {seriesName}.",withoutName:" The {seriesId} series is a {seriesType}.",separator:{middle:"",end:""}}},data:{allData:"The data is as follows: ",partialData:"The first {displayCnt} items are: ",withName:"the data for {name} is {value}",withoutName:"{value}",separator:{middle:", ",end:". "}}}},kx={time:{month:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthAbbr:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayOfWeekAbbr:["日","一","二","三","四","五","六"]},legend:{selector:{all:"全选",inverse:"反选"}},toolbox:{brush:{title:{rect:"矩形选择",polygon:"圈选",lineX:"横向选择",lineY:"纵向选择",keep:"保持选择",clear:"清除选择"}},dataView:{title:"数据视图",lang:["数据视图","关闭","刷新"]},dataZoom:{title:{zoom:"区域缩放",back:"区域缩放还原"}},magicType:{title:{line:"切换为折线图",bar:"切换为柱状图",stack:"切换为堆叠",tiled:"切换为平铺"}},restore:{title:"还原"},saveAsImage:{title:"保存为图片",lang:["右键另存为图片"]}},series:{typeNames:{pie:"饼图",bar:"柱状图",line:"折线图",scatter:"散点图",effectScatter:"涟漪散点图",radar:"雷达图",tree:"树图",treemap:"矩形树图",boxplot:"箱型图",candlestick:"K线图",k:"K线图",heatmap:"热力图",map:"地图",parallel:"平行坐标图",lines:"线图",graph:"关系图",sankey:"桑基图",funnel:"漏斗图",gauge:"仪表盘图",pictorialBar:"象形柱图",themeRiver:"主题河流图",sunburst:"旭日图",custom:"自定义图表",chart:"图表"}},aria:{general:{withTitle:"这是一个关于“{title}”的图表。",withoutTitle:"这是一个图表,"},series:{single:{prefix:"",withName:"图表类型是{seriesType},表示{seriesName}。",withoutName:"图表类型是{seriesType}。"},multiple:{prefix:"它由{seriesCount}个图表系列组成。",withName:"第{seriesId}个系列是一个表示{seriesName}的{seriesType},",withoutName:"第{seriesId}个系列是一个{seriesType},",separator:{middle:";",end:"。"}}},data:{allData:"其数据是——",partialData:"其中,前{displayCnt}项是——",withName:"{name}的数据是{value}",withoutName:"{value}",separator:{middle:",",end:""}}}};var rs="ZH",bh="EN",Yn=bh,Io={},Ch={},Fm=K.domSupported?(function(){var e=(document.documentElement.lang||navigator.language||navigator.browserLanguage||Yn).toUpperCase();return e.indexOf(rs)>-1?rs:Yn})():Yn;function zm(e,t){e=e.toUpperCase(),Ch[e]=new St(t),Io[e]=t}function Bx(e){if(F(e)){var t=Io[e.toUpperCase()]||{};return e===rs||e===bh?rt(t):lt(rt(t),rt(Io[Yn]),!1)}else return lt(rt(e),rt(Io[Yn]),!1)}function Nx(e){return Ch[e]}function Fx(){return Ch[Yn]}zm(bh,Ox);zm(rs,kx);var zx=null;function Hs(){return zx}function Hm(e,t){t.breakOption;var r=t.breakParsed;return r}function Mh(e){var t=e.brk;return t?t.breaks:[]}function ns(e){var t=e.brk;return t?t.hasBreaks():!1}var Dh=1e3,Ah=Dh*60,Zi=Ah*60,ge=Zi*24,Uv=ge*365,Hx={year:/({yyyy}|{yy})/,month:/({MMMM}|{MMM}|{MM}|{M})/,day:/({dd}|{d})/,hour:/({HH}|{H}|{hh}|{h})/,minute:/({mm}|{m})/,second:/({ss}|{s})/,millisecond:/({SSS}|{S})/},Po={year:"{yyyy}",month:"{MMM}",day:"{d}",hour:"{HH}:{mm}",minute:"{HH}:{mm}",second:"{HH}:{mm}:{ss}",millisecond:"{HH}:{mm}:{ss} {SSS}"},Vx="{yyyy}-{MM}-{dd} {HH}:{mm}:{ss} {SSS}",qa="{yyyy}-{MM}-{dd}",Wv={year:"{yyyy}",month:"{yyyy}-{MM}",day:qa,hour:qa+" "+Po.hour,minute:qa+" "+Po.minute,second:qa+" "+Po.second,millisecond:Vx},sn=["year","month","day","hour","minute","second","millisecond"],Gx=["year","half-year","quarter","month","week","half-week","day","half-day","quarter-day","hour","minute","second","millisecond"];function Ux(e){return!F(e)&&!j(e)?Wx(e):e}function Wx(e){e=e||{};var t={},r=!0;return b(sn,function(n){r&&(r=e[n]==null)}),b(sn,function(n,i){var a=e[n];t[n]={};for(var o=null,s=i;s>=0;s--){var u=sn[s],l=H(a)&&!B(a)?a[u]:a,f=void 0;B(l)?(f=l.slice(),o=f[0]||""):F(l)?(o=l,f=[o]):(o==null?o=Po[n]:Hx[u].test(o)||(o=t[u][u][0]+" "+o),f=[o],r&&(f[1]="{primary|"+o+"}")),t[n][u]=f}}),t}function or(e,t){return e+="","0000".substr(0,t-e.length)+e}function $i(e){switch(e){case"half-year":case"quarter":return"month";case"week":case"half-week":return"day";case"half-day":case"quarter-day":return"hour";default:return e}}function Yx(e){return e===$i(e)}function Xx(e){switch(e){case"year":case"month":return"day";case"millisecond":return"millisecond";default:return"second"}}function Vs(e,t,r,n){var i=si(e),a=i[Vm(r)](),o=i[Lh(r)]()+1,s=Math.floor((o-1)/3)+1,u=i[Ih(r)](),l=i["get"+(r?"UTC":"")+"Day"](),f=i[Ph(r)](),h=(f-1)%12+1,c=i[Eh(r)](),v=i[Rh(r)](),d=i[Oh(r)](),g=f>=12?"pm":"am",p=g.toUpperCase(),m=n instanceof St?n:Nx(n||Fm)||Fx(),y=m.getModel("time"),_=y.get("month"),S=y.get("monthAbbr"),T=y.get("dayOfWeek"),w=y.get("dayOfWeekAbbr");return(t||"").replace(/{a}/g,g+"").replace(/{A}/g,p+"").replace(/{yyyy}/g,a+"").replace(/{yy}/g,or(a%100+"",2)).replace(/{Q}/g,s+"").replace(/{MMMM}/g,_[o-1]).replace(/{MMM}/g,S[o-1]).replace(/{MM}/g,or(o,2)).replace(/{M}/g,o+"").replace(/{dd}/g,or(u,2)).replace(/{d}/g,u+"").replace(/{eeee}/g,T[l]).replace(/{ee}/g,w[l]).replace(/{e}/g,l+"").replace(/{HH}/g,or(f,2)).replace(/{H}/g,f+"").replace(/{hh}/g,or(h+"",2)).replace(/{h}/g,h+"").replace(/{mm}/g,or(c,2)).replace(/{m}/g,c+"").replace(/{ss}/g,or(v,2)).replace(/{s}/g,v+"").replace(/{SSS}/g,or(d,3)).replace(/{S}/g,d+"")}function Zx(e,t,r,n,i){var a=null;if(F(r))a=r;else if(j(r)){var o={time:e.time,level:e.time?e.time.level:0},s=Hs();s&&s.makeAxisLabelFormatterParamBreak(o,e.break),a=r(e.value,t,o)}else{var u=e.time;if(u){var l=r[u.lowerTimeUnit][u.upperTimeUnit];a=l[Math.min(u.level,l.length-1)]||""}else{var f=Eo(e.value,i);a=r[f][f][0]}}return Vs(new Date(e.value),a,i,n)}function Eo(e,t){var r=si(e),n=r[Lh(t)]()+1,i=r[Ih(t)](),a=r[Ph(t)](),o=r[Eh(t)](),s=r[Rh(t)](),u=r[Oh(t)](),l=u===0,f=l&&s===0,h=f&&o===0,c=h&&a===0,v=c&&i===1,d=v&&n===1;return d?"year":v?"month":c?"day":h?"hour":f?"minute":l?"second":"millisecond"}function uf(e,t,r){switch(t){case"year":e[Gm(r)](0);case"month":e[Um(r)](1);case"day":e[Wm(r)](0);case"hour":e[Ym(r)](0);case"minute":e[Xm(r)](0);case"second":e[Zm(r)](0)}return e}function Vm(e){return e?"getUTCFullYear":"getFullYear"}function Lh(e){return e?"getUTCMonth":"getMonth"}function Ih(e){return e?"getUTCDate":"getDate"}function Ph(e){return e?"getUTCHours":"getHours"}function Eh(e){return e?"getUTCMinutes":"getMinutes"}function Rh(e){return e?"getUTCSeconds":"getSeconds"}function Oh(e){return e?"getUTCMilliseconds":"getMilliseconds"}function $x(e){return e?"setUTCFullYear":"setFullYear"}function Gm(e){return e?"setUTCMonth":"setMonth"}function Um(e){return e?"setUTCDate":"setDate"}function Wm(e){return e?"setUTCHours":"setHours"}function Ym(e){return e?"setUTCMinutes":"setMinutes"}function Xm(e){return e?"setUTCSeconds":"setSeconds"}function Zm(e){return e?"setUTCMilliseconds":"setMilliseconds"}function $m(e){if(!TS(e))return F(e)?e:"-";var t=(e+"").split(".");return t[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(t.length>1?"."+t[1]:"")}function qm(e,t){return e=(e||"").toLowerCase().replace(/-(.)/g,function(r,n){return n.toUpperCase()}),t&&e&&(e=e.charAt(0).toUpperCase()+e.slice(1)),e}var Gs=Zf;function lf(e,t,r){var n="{yyyy}-{MM}-{dd} {HH}:{mm}:{ss}";function i(f){return f&&Oe(f)?f:"-"}function a(f){return Ge(f)}var o=t==="time",s=e instanceof Date;if(o||s){var u=o?si(e):e;if(isNaN(+u)){if(s)return"-"}else return Vs(u,n,r)}if(t==="ordinal")return wl(e)?i(e):Tt(e)&&a(e)?e+"":"-";var l=Qo(e);return a(l)?$m(l):wl(e)?i(e):typeof e=="boolean"?e+"":"-"}var Yv=["a","b","c","d","e","f","g"],Uu=function(e,t){return"{"+e+(t??"")+"}"};function Km(e,t,r){B(t)||(t=[t]);var n=t.length;if(!n)return"";for(var i=t[0].$vars||[],a=0;a':'';var o=r.markerId||"markerX";return{renderMode:a,content:"{"+o+"|} ",style:i==="subItem"?{width:4,height:4,borderRadius:2,backgroundColor:n}:{width:10,height:10,borderRadius:5,backgroundColor:n}}}function sa(e,t){return t=t||"transparent",F(e)?e:H(e)&&e.colorStops&&(e.colorStops[0]||{}).color||t}var Ro={},Wu={},kh=(function(){function e(){this._normalMasterList=[],this._nonSeriesBoxMasterList=[]}return e.prototype.create=function(t,r){this._nonSeriesBoxMasterList=n(Ro),this._normalMasterList=n(Wu);function n(i,a){var o=[];return b(i,function(s,u){var l=s.create(t,r);o=o.concat(l||[])}),o}},e.prototype.update=function(t,r){b(this._normalMasterList,function(n){n.update&&n.update(t,r)})},e.prototype.getCoordinateSystems=function(){return this._normalMasterList.concat(this._nonSeriesBoxMasterList)},e.register=function(t,r){if(t==="matrix"||t==="calendar"){Ro[t]=r;return}Wu[t]=r},e.get=function(t){return Wu[t]||Ro[t]},e})();function Kx(e){return!!Ro[e]}var Qx=1,Qm=2;function H2(e){jm.set(e.fullType,{getCoord2:void 0}).getCoord2=e.getCoord2}var jm=W();function Jm(e){var t=e.getShallow("coord",!0),r=Qx;if(t==null){var n=jm.get(e.type);n&&n.getCoord2&&(r=Qm,t=n.getCoord2(e))}return{coord:t,from:r}}var Xn=0,Oo=1,jx=2;function Jx(e,t){var r=e.getShallow("coordinateSystem"),n=e.getShallow("coordinateSystemUsage",!0),i=Xn;if(r){var a=e.mainType==="series";n==null&&(n=a?"data":"box"),n==="data"?(i=Oo,a||(i=Xn)):n==="box"&&(i=jx,!a&&!Kx(r)&&(i=Xn))}return{coordSysType:r,kind:i}}function tb(e){var t=e.targetModel,r=e.coordSysType,n=e.coordSysProvider,i=e.isDefaultDataCoordSys,a=Jx(t),o=a.kind,s=a.coordSysType;if(i&&o!==Oo&&(o=Oo,s=r),o===Xn||s!==r)return Xn;var u=n(r,t);return u?(o===Oo?t.coordinateSystem=u:t.boxCoordinateSystem=u,o):Xn}var ko=b,eb=["left","right","top","bottom","width","height"],Ka=[["width","left","right"],["height","top","bottom"]];function Bh(e,t,r,n,i){var a=0,o=0;n==null&&(n=1/0),i==null&&(i=1/0);var s=0;t.eachChild(function(u,l){var f=u.getBoundingRect(),h=t.childAt(l+1),c=h&&h.getBoundingRect(),v,d;if(e==="horizontal"){var g=f.width+(c?-c.x+f.x:0);v=a+g,v>n||u.newline?(a=0,v=g,o+=s+r,s=f.height):s=Math.max(s,f.height)}else{var p=f.height+(c?-c.y+f.y:0);d=o+p,d>i||u.newline?(a+=s+r,o=0,d=p,s=f.width):s=Math.max(s,f.width)}u.newline||(u.x=a,u.y=o,u.markRedraw(),e==="horizontal"?a=v+r:o=d+r)})}var qi=Bh;Ct(Bh,"vertical");Ct(Bh,"horizontal");function rb(e,t){return{left:e.getShallow("left",t),top:e.getShallow("top",t),right:e.getShallow("right",t),bottom:e.getShallow("bottom",t),width:e.getShallow("width",t),height:e.getShallow("height",t)}}function nb(e,t){var r=Nh(e,t,{enableLayoutOnlyByCenter:!0}),n=e.getBoxLayoutParams(),i,a;if(r.type===Ni.point)a=r.refPoint,i=fn(n,{width:t.getWidth(),height:t.getHeight()});else{var o=e.get("center"),s=B(o)?o:[o,o];i=fn(n,r.refContainer),a=r.boxCoordFrom===Qm?r.refPoint:[Bt(s[0],i.width)+i.x,Bt(s[1],i.height)+i.y]}return{viewRect:i,center:a}}function V2(e,t){var r=nb(e,t),n=r.viewRect,i=r.center,a=e.get("radius");B(a)||(a=[0,a]);var o=Bt(n.width,t.getWidth()),s=Bt(n.height,t.getHeight()),u=Math.min(o,s),l=Bt(a[0],u/2),f=Bt(a[1],u/2);return{cx:i[0],cy:i[1],r0:l,r:f,viewRect:n}}function fn(e,t,r){r=Gs(r||0);var n=t.width,i=t.height,a=Bt(e.left,n),o=Bt(e.top,i),s=Bt(e.right,n),u=Bt(e.bottom,i),l=Bt(e.width,n),f=Bt(e.height,i),h=r[2]+r[0],c=r[1]+r[3],v=e.aspect;switch(isNaN(l)&&(l=n-s-c-a),isNaN(f)&&(f=i-u-h-o),v!=null&&(isNaN(l)&&isNaN(f)&&(v>n/i?l=n*.8:f=i*.8),isNaN(l)&&(l=v*f),isNaN(f)&&(f=l/v)),isNaN(a)&&(a=n-s-l-c),isNaN(o)&&(o=i-u-f-h),e.left||e.right){case"center":a=n/2-l/2-r[3];break;case"right":a=n-l-c;break}switch(e.top||e.bottom){case"middle":case"center":o=i/2-f/2-r[0];break;case"bottom":o=i-f-h;break}a=a||0,o=o||0,isNaN(l)&&(l=n-c-a-(s||0)),isNaN(f)&&(f=i-h-o-(u||0));var d=new Z((t.x||0)+a+r[3],(t.y||0)+o+r[0],l,f);return d.margin=r,d}var Ni={rect:1,point:2};function Nh(e,t,r){var n,i,a,o=e.boxCoordinateSystem,s;if(o){var u=Jm(e),l=u.coord,f=u.from;if(o.dataToLayout){a=Ni.rect,s=f;var h=o.dataToLayout(l);n=h.contentRect||h.rect}else r&&r.enableLayoutOnlyByCenter&&o.dataToPoint&&(a=Ni.point,s=f,i=o.dataToPoint(l))}return a==null&&(a=Ni.rect),a===Ni.rect&&(n||(n={x:0,y:0,width:t.getWidth(),height:t.getHeight()}),i=[n.x+n.width/2,n.y+n.height/2]),{type:a,refContainer:n,refPoint:i,boxCoordFrom:s}}function ua(e){var t=e.layoutMode||e.constructor.layoutMode;return H(t)?t:t?{type:t}:null}function br(e,t,r){var n=r&&r.ignoreSize;!B(n)&&(n=[n,n]);var i=o(Ka[0],0),a=o(Ka[1],1);u(Ka[0],e,i),u(Ka[1],e,a);function o(l,f){var h={},c=0,v={},d=0,g=2;if(ko(l,function(y){v[y]=e[y]}),ko(l,function(y){qt(t,y)&&(h[y]=v[y]=t[y]),s(h,y)&&c++,s(v,y)&&d++}),n[f])return s(t,l[1])?v[l[2]]=null:s(t,l[2])&&(v[l[1]]=null),v;if(d===g||!c)return v;if(c>=g)return h;for(var p=0;p=0;u--)s=lt(s,i[u],!0);n.defaultOption=s}return n.defaultOption},t.prototype.getReferringComponents=function(r,n){var i=r+"Index",a=r+"Id";return ba(this.ecModel,r,{index:this.get(i,!0),id:this.get(a,!0)},n)},t.prototype.getBoxLayoutParams=function(){return rb(this,!1)},t.prototype.getZLevelKey=function(){return""},t.prototype.setZLevel=function(r){this.option.zlevel=r},t.protoInitialize=(function(){var r=t.prototype;r.type="component",r.id="",r.name="",r.mainType="",r.subType="",r.componentIndex=0})(),t})(St);Wg(ft,St);Ds(ft);Px(ft);Ex(ft,ob);function ob(e){var t=[];return b(ft.getClassesByMainType(e),function(r){t=t.concat(r.dependencies||r.prototype.dependencies||[])}),t=Y(t,function(r){return ke(r).main}),e!=="dataset"&&st(t,"dataset")<=0&&t.unshift("dataset"),t}var U={color:{},darkColor:{},size:{}},wt=U.color={theme:["#5070dd","#b6d634","#505372","#ff994d","#0ca8df","#ffd10a","#fb628b","#785db0","#3fbe95"],neutral00:"#fff",neutral05:"#f4f7fd",neutral10:"#e8ebf0",neutral15:"#dbdee4",neutral20:"#cfd2d7",neutral25:"#c3c5cb",neutral30:"#b7b9be",neutral35:"#aaacb2",neutral40:"#9ea0a5",neutral45:"#929399",neutral50:"#86878c",neutral55:"#797b7f",neutral60:"#6d6e73",neutral65:"#616266",neutral70:"#54555a",neutral75:"#48494d",neutral80:"#3c3c41",neutral85:"#303034",neutral90:"#232328",neutral95:"#17171b",neutral99:"#000",accent05:"#eff1f9",accent10:"#e0e4f2",accent15:"#d0d6ec",accent20:"#c0c9e6",accent25:"#b1bbdf",accent30:"#a1aed9",accent35:"#91a0d3",accent40:"#8292cc",accent45:"#7285c6",accent50:"#6578ba",accent55:"#5c6da9",accent60:"#536298",accent65:"#4a5787",accent70:"#404c76",accent75:"#374165",accent80:"#2e3654",accent85:"#252b43",accent90:"#1b2032",accent95:"#121521",transparent:"rgba(0,0,0,0)",highlight:"rgba(255,231,130,0.8)"};k(wt,{primary:wt.neutral80,secondary:wt.neutral70,tertiary:wt.neutral60,quaternary:wt.neutral50,disabled:wt.neutral20,border:wt.neutral30,borderTint:wt.neutral20,borderShade:wt.neutral40,background:wt.neutral05,backgroundTint:"rgba(234,237,245,0.5)",backgroundTransparent:"rgba(255,255,255,0)",backgroundShade:wt.neutral10,shadow:"rgba(0,0,0,0.2)",shadowTint:"rgba(129,130,136,0.2)",axisLine:wt.neutral70,axisLineTint:wt.neutral40,axisTick:wt.neutral70,axisTickMinor:wt.neutral60,axisLabel:wt.neutral70,axisSplitLine:wt.neutral15,axisMinorSplitLine:wt.neutral05});for(var Wr in wt)if(wt.hasOwnProperty(Wr)){var Xv=wt[Wr];Wr==="theme"?U.darkColor.theme=wt.theme.slice():Wr==="highlight"?U.darkColor.highlight="rgba(255,231,130,0.4)":Wr.indexOf("accent")===0?U.darkColor[Wr]=Ol(Xv,null,function(e){return e*.5},function(e){return Math.min(1,1.3-e)}):U.darkColor[Wr]=Ol(Xv,null,function(e){return e*.9},function(e){return 1-Math.pow(e,1.5)})}U.size={xxs:2,xs:5,s:10,m:15,l:20,xl:30,xxl:40,xxxl:50};var ty="";typeof navigator<"u"&&(ty=navigator.platform||"");var Mn="rgba(0, 0, 0, 0.2)",ey=U.color.theme[0],sb=Ol(ey,null,null,.9);const ry={darkMode:"auto",colorBy:"series",color:U.color.theme,gradientColor:[sb,ey],aria:{decal:{decals:[{color:Mn,dashArrayX:[1,0],dashArrayY:[2,5],symbolSize:1,rotation:Math.PI/6},{color:Mn,symbol:"circle",dashArrayX:[[8,8],[0,8,8,0]],dashArrayY:[6,0],symbolSize:.8},{color:Mn,dashArrayX:[1,0],dashArrayY:[4,3],rotation:-Math.PI/4},{color:Mn,dashArrayX:[[6,6],[0,6,6,0]],dashArrayY:[6,0]},{color:Mn,dashArrayX:[[1,0],[1,6]],dashArrayY:[1,0,6,0],rotation:Math.PI/4},{color:Mn,symbol:"triangle",dashArrayX:[[9,9],[0,9,9,0]],dashArrayY:[7,2],symbolSize:.75}]}},textStyle:{fontFamily:ty.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,stateAnimation:{duration:300,easing:"cubicOut"},animation:"auto",animationDuration:1e3,animationDurationUpdate:500,animationEasing:"cubicInOut",animationEasingUpdate:"cubicInOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3,useUTC:!1};var Pt={Must:1,Might:2,Not:3},ny=vt();function ub(e){ny(e).datasetMap=W()}function lb(e,t,r){var n={},i=Fh(t);if(!i||!e)return n;var a=[],o=[],s=t.ecModel,u=ny(s).datasetMap,l=i.uid+"_"+r.seriesLayoutBy,f,h;e=e.slice(),b(e,function(g,p){var m=H(g)?g:e[p]={name:g};m.type==="ordinal"&&f==null&&(f=p,h=d(m)),n[m.name]=[]});var c=u.get(l)||u.set(l,{categoryWayDim:h,valueWayDim:0});b(e,function(g,p){var m=g.name,y=d(g);if(f==null){var _=c.valueWayDim;v(n[m],_,y),v(o,_,y),c.valueWayDim+=y}else if(f===p)v(n[m],0,y),v(a,0,y);else{var _=c.categoryWayDim;v(n[m],_,y),v(o,_,y),c.categoryWayDim+=y}});function v(g,p,m){for(var y=0;yt)return e[n];return e[r-1]}function db(e,t,r,n,i,a,o){a=a||e;var s=t(a),u=s.paletteIdx||0,l=s.paletteNameMap=s.paletteNameMap||{};if(l.hasOwnProperty(i))return l[i];var f=o==null||!n?r:vb(n,o);if(f=f||r,!(!f||!f.length)){var h=f[u];return i&&(l[i]=h),s.paletteIdx=(u+1)%f.length,h}}function pb(e,t){t(e).paletteIdx=0,t(e).paletteNameMap={}}var Qa,yi,$v,qv="\0_ec_inner",gb=1,Hh=(function(e){z(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.init=function(r,n,i,a,o,s){a=a||{},this.option=null,this._theme=new St(a),this._locale=new St(o),this._optionManager=s},t.prototype.setOption=function(r,n,i){var a=jv(n);this._optionManager.setOption(r,i,a),this._resetOption(null,a)},t.prototype.resetOption=function(r,n){return this._resetOption(r,jv(n))},t.prototype._resetOption=function(r,n){var i=!1,a=this._optionManager;if(!r||r==="recreate"){var o=a.mountOption(r==="recreate");!this.option||r==="recreate"?$v(this,o):(this.restoreData(),this._mergeOption(o,n)),i=!0}if((r==="timeline"||r==="media")&&this.restoreData(),!r||r==="recreate"||r==="timeline"){var s=a.getTimelineOption(this);s&&(i=!0,this._mergeOption(s,n))}if(!r||r==="recreate"||r==="media"){var u=a.getMediaOption(this);u.length&&b(u,function(l){i=!0,this._mergeOption(l,n)},this)}return i},t.prototype.mergeOption=function(r){this._mergeOption(r,null)},t.prototype._mergeOption=function(r,n){var i=this.option,a=this._componentsMap,o=this._componentsCount,s=[],u=W(),l=n&&n.replaceMergeMainTypeMap;ub(this),b(r,function(h,c){h!=null&&(ft.hasClass(c)?c&&(s.push(c),u.set(c,!0)):i[c]=i[c]==null?rt(h):lt(i[c],h,!0))}),l&&l.each(function(h,c){ft.hasClass(c)&&!u.get(c)&&(s.push(c),u.set(c,!0))}),ft.topologicalTravel(s,ft.getAllClassMainTypes(),f,this);function f(h){var c=cb(this,h,Ut(r[h])),v=a.get(h),d=v?l&&l.get(h)?"replaceMerge":"normalMerge":"replaceAll",g=DS(v,c,d);OS(g,h,ft),i[h]=null,a.set(h,null),o.set(h,0);var p=[],m=[],y=0,_;b(g,function(S,T){var w=S.existing,x=S.newOption;if(!x)w&&(w.mergeOption({},this),w.optionUpdated({},!1));else{var D=h==="series",M=ft.getClass(h,S.keyInfo.subType,!D);if(!M)return;if(h==="tooltip"){if(_)return;_=!0}if(w&&w.constructor===M)w.name=S.keyInfo.name,w.mergeOption(x,this),w.optionUpdated(x,!1);else{var C=k({componentIndex:T},S.keyInfo);w=new M(x,this,this,C),k(w,C),S.brandNew&&(w.__requireNewView=!0),w.init(x,this,this),w.optionUpdated(null,!0)}}w?(p.push(w.option),m.push(w),y++):(p.push(void 0),m.push(void 0))},this),i[h]=p,a.set(h,m),o.set(h,y),h==="series"&&Qa(this)}this._seriesIndices||Qa(this)},t.prototype.getOption=function(){var r=rt(this.option);return b(r,function(n,i){if(ft.hasClass(i)){for(var a=Ut(n),o=a.length,s=!1,u=o-1;u>=0;u--)a[u]&&!na(a[u])?s=!0:(a[u]=null,!s&&o--);a.length=o,r[i]=a}}),delete r[qv],r},t.prototype.setTheme=function(r){this._theme=new St(r),this._resetOption("recreate",null)},t.prototype.getTheme=function(){return this._theme},t.prototype.getLocaleModel=function(){return this._locale},t.prototype.setUpdatePayload=function(r){this._payload=r},t.prototype.getUpdatePayload=function(){return this._payload},t.prototype.getComponent=function(r,n){var i=this._componentsMap.get(r);if(i){var a=i[n||0];if(a)return a;if(n==null){for(var o=0;o=t:r==="max"?e<=t:e===t}function bb(e,t){return e.join(",")===t.join(",")}var Se=b,la=H,Jv=["areaStyle","lineStyle","nodeStyle","linkStyle","chordStyle","label","labelLine"];function Yu(e){var t=e&&e.itemStyle;if(t)for(var r=0,n=Jv.length;r0?r[o-1].seriesModel:null)}),Ob(r)}})}function Ob(e){b(e,function(t,r){var n=[],i=[NaN,NaN],a=[t.stackResultDimension,t.stackedOverDimension],o=t.data,s=t.isStackedByIndex,u=t.seriesModel.get("stackStrategy")||"samesign";o.modify(a,function(l,f,h){var c=o.get(t.stackedDimension,h);if(isNaN(c))return i;var v,d;s?d=o.getRawIndex(h):v=o.get(t.stackedByDimension,h);for(var g=NaN,p=r-1;p>=0;p--){var m=e[p];if(s||(d=m.data.rawIndexOf(m.stackedByDimension,v)),d>=0){var y=m.data.getByRawIndex(m.stackResultDimension,d);if(u==="all"||u==="positive"&&y>0||u==="negative"&&y<0||u==="samesign"&&c>=0&&y>0||u==="samesign"&&c<=0&&y<0){c=_S(c,y),g=y;break}}}return n[0]=c,n[1]=g,n})})}var Us=(function(){function e(t){this.data=t.data||(t.sourceFormat===be?{}:[]),this.sourceFormat=t.sourceFormat||rm,this.seriesLayoutBy=t.seriesLayoutBy||Ve,this.startIndex=t.startIndex||0,this.dimensionsDetectedCount=t.dimensionsDetectedCount,this.metaRawOption=t.metaRawOption;var r=this.dimensionsDefine=t.dimensionsDefine;if(r)for(var n=0;ng&&(g=_)}v[0]=d,v[1]=g}},i=function(){return this._data?this._data.length/this._dimSize:0};od=(t={},t[Ft+"_"+Ve]={pure:!0,appendData:a},t[Ft+"_"+gn]={pure:!0,appendData:function(){throw new Error('Do not support appendData when set seriesLayoutBy: "row".')}},t[_e]={pure:!0,appendData:a},t[be]={pure:!0,appendData:function(o){var s=this._data;b(o,function(u,l){for(var f=s[l]||(s[l]=[]),h=0;h<(u||[]).length;h++)f.push(u[h])})}},t[ae]={appendData:a},t[yr]={persistent:!1,pure:!0,appendData:function(o){this._data=o},clean:function(){this._offset+=this.count(),this._data=null}},t);function a(o){for(var s=0;s=0&&(g=o.interpolatedValue[p])}return g!=null?g+"":""})}},e.prototype.getRawValue=function(t,r){return ri(this.getData(r),t)},e.prototype.formatTooltip=function(t,r,n){},e})();function fd(e){var t,r;return H(e)?e.type&&(r=e):t=e,{text:t,frag:r}}function Ki(e){return new Ub(e)}var Ub=(function(){function e(t){t=t||{},this._reset=t.reset,this._plan=t.plan,this._count=t.count,this._onDirty=t.onDirty,this._dirty=!0}return e.prototype.perform=function(t){var r=this._upstream,n=t&&t.skip;if(this._dirty&&r){var i=this.context;i.data=i.outputData=r.context.outputData}this.__pipeline&&(this.__pipeline.currentTask=this);var a;this._plan&&!n&&(a=this._plan(this.context));var o=f(this._modBy),s=this._modDataCount||0,u=f(t&&t.modBy),l=t&&t.modDataCount||0;(o!==u||s!==l)&&(a="reset");function f(y){return!(y>=1)&&(y=1),y}var h;(this._dirty||a==="reset")&&(this._dirty=!1,h=this._doReset(n)),this._modBy=u,this._modDataCount=l;var c=t&&t.step;if(r?this._dueEnd=r._outputDueEnd:this._dueEnd=this._count?this._count(this.context):1/0,this._progress){var v=this._dueIndex,d=Math.min(c!=null?this._dueIndex+c:1/0,this._dueEnd);if(!n&&(h||v1&&n>0?s:o}};return a;function o(){return t=e?null:ui?-this._resultLT:0},e})();function Yb(e){var t="",r=-1/0,n=-1/0,i=1/0,a=1/0;return e&&(e.g!=null&&(t+="G"+e.g,r=e.g),e.ge!=null&&(t+="GE"+e.ge,n=e.ge),e.l!=null&&(t+="L"+e.l,i=e.l),e.le!=null&&(t+="LE"+e.le,a=e.le)),{key:t,g:r,ge:n,l:i,le:a}}function Xb(e,t){return t>e.g&&t>=e.ge&&t65535?rC:nC}function iC(e){var t=e.constructor;return t===Array?e.slice():new t(e)}function vd(e,t,r,n,i){var a=my[r||"float"];if(i){var o=e[t],s=o&&o.length;if(s!==n){for(var u=new a(n),l=0;lp[1]&&(p[1]=g)}return this._rawCount=this._count=u,{start:s,end:u}},e.prototype._initDataFromProvider=function(t,r,n){for(var i=this._provider,a=this._chunks,o=this._dimensions,s=o.length,u=this._rawExtent,l=Y(o,function(y){return y.property}),f=0;fm[1]&&(m[1]=p)}}!i.persistent&&i.clean&&i.clean(),this._rawCount=this._count=r,this._extent=[]},e.prototype.count=function(){return this._count},e.prototype.get=function(t,r){if(!(r>=0&&r=0&&r=this._rawCount||t<0)return-1;if(!this._indices)return t;var r=this._indices,n=r[t];if(n!=null&&nt)a=o-1;else return o}return-1},e.prototype.getIndices=function(){var t,r=this._indices;if(r){var n=r.constructor,i=this._count;if(n===Array){t=new n(i);for(var a=0;a=h&&y<=c||isNaN(y))&&(u[l++]=g),g++}d=!0}else if(a===2){for(var p=v[i[0]],_=v[i[1]],S=t[i[1]][0],T=t[i[1]][1],m=0;m=h&&y<=c||isNaN(y))&&(w>=S&&w<=T||isNaN(w))&&(u[l++]=g),g++}d=!0}}if(!d)if(a===1)for(var m=0;m=h&&y<=c||isNaN(y))&&(u[l++]=x)}else for(var m=0;mt[C][1])&&(D=!1)}D&&(u[l++]=r.getRawIndex(m))}return lm[1]&&(m[1]=p)}}}},e.prototype.lttbDownSample=function(t,r){var n=this.clone([t],!0),i=n._chunks,a=i[t],o=this.count(),s=0,u=Math.floor(1/r),l=this.getRawIndex(0),f,h,c,v=new(Dn(this._rawCount))(Math.min((Math.ceil(o/u)+2)*2,o));v[s++]=l;for(var d=1;df&&(f=h,c=S)}A>0&&As&&(g=s-f);for(var p=0;pd&&(d=y,v=f+p)}var _=this.getRawIndex(h),S=this.getRawIndex(v);hf-d&&(u=f-d,s.length=u);for(var g=0;gh[1]&&(h[1]=m),c[v++]=y}return a._count=v,a._indices=c,a._updateGetRawIdx(),a},e.prototype.each=function(t,r){if(this._count)for(var n=t.length,i=this._chunks,a=0,o=this.count();av&&(v=p))}return u[f]=[c,v]},e.prototype.getRawDataItem=function(t){var r=this.getRawIndex(t);if(this._provider.persistent)return this._provider.getItem(r);for(var n=[],i=this._chunks,a=0;a=0?this._indices[t]:-1},e.prototype._updateGetRawIdx=function(){this.getRawIndex=this._indices?this._getRawIdx:this._getRawIdxIdentity},e.internalField=(function(){function t(r,n,i,a){return Bo(r[a],this._dimensions[a])}$u={arrayRows:t,objectRows:function(r,n,i,a){return Bo(r[n],this._dimensions[a])},keyedColumns:t,original:function(r,n,i,a){var o=r&&(r.value==null?r:r.value);return Bo(o instanceof Array?o[a]:o,this._dimensions[a])},typedArray:function(r,n,i,a){return r[a]}}})(),e})(),aC=(function(){function e(t){this._sourceList=[],this._storeList=[],this._upstreamSignList=[],this._versionSignBase=0,this._dirty=!0,this._sourceHost=t}return e.prototype.dirty=function(){this._setLocalSource([],[]),this._storeList=[],this._dirty=!0},e.prototype._setLocalSource=function(t,r){this._sourceList=t,this._upstreamSignList=r,this._versionSignBase++,this._versionSignBase>9e10&&(this._versionSignBase=0)},e.prototype._getVersionSign=function(){return this._sourceHost.uid+"_"+this._versionSignBase},e.prototype.prepareSource=function(){this._isDirty()&&(this._createSource(),this._dirty=!1)},e.prototype._createSource=function(){this._setLocalSource([],[]);var t=this._sourceHost,r=this._getUpstreamSourceManagers(),n=!!r.length,i,a;if(Ja(t)){var o=t,s=void 0,u=void 0,l=void 0;if(n){var f=r[0];f.prepareSource(),l=f.getSource(),s=l.data,u=l.sourceFormat,a=[f._getVersionSign()]}else s=o.get("data",!0),u=Qt(s)?yr:ae,a=[];var h=this._getSourceMetaRawOption()||{},c=l&&l.metaRawOption||{},v=G(h.seriesLayoutBy,c.seriesLayoutBy)||null,d=G(h.sourceHeader,c.sourceHeader),g=G(h.dimensions,c.dimensions),p=v!==c.seriesLayoutBy||!!d!=!!c.sourceHeader||g;i=p?[ff(s,{seriesLayoutBy:v,sourceHeader:d,dimensions:g},u)]:[]}else{var m=t;if(n){var y=this._applyTransform(r);i=y.sourceList,a=y.upstreamSignList}else{var _=m.get("source",!0);i=[ff(_,this._getSourceMetaRawOption(),null)],a=[]}}this._setLocalSource(i,a)},e.prototype._applyTransform=function(t){var r=this._sourceHost,n=r.get("transform",!0),i=r.get("fromTransformResult",!0);if(i!=null){var a="";t.length!==1&&dd(a)}var o,s=[],u=[];return b(t,function(l){l.prepareSource();var f=l.getSource(i||0),h="";i!=null&&!f&&dd(h),s.push(f),u.push(l._getVersionSign())}),n?o=tC(n,s,{datasetIndex:r.componentIndex}):i!=null&&(o=[kb(s[0])]),{sourceList:o,upstreamSignList:u}},e.prototype._isDirty=function(){if(this._dirty)return!0;for(var t=this._getUpstreamSourceManagers(),r=0;r1||r>0&&!e.noHeader;return b(e.blocks,function(i){var a=Ty(i);a>=t&&(t=a+ +(n&&(!a||cf(i)&&!i.noHeader)))}),t}return 0}function lC(e,t,r,n){var i=t.noHeader,a=hC(Ty(t)),o=[],s=t.blocks||[];tr(!s||B(s)),s=s||[];var u=e.orderMode;if(t.sortBlocks&&u){s=s.slice();var l={valueAsc:"asc",valueDesc:"desc"};if(qt(l,u)){var f=new Wb(l[u],null);s.sort(function(g,p){return f.evaluate(g.sortParam,p.sortParam)})}else u==="seriesDesc"&&s.reverse()}b(s,function(g,p){var m=t.valueFormatter,y=Sy(g)(m?k(k({},e),{valueFormatter:m}):e,g,p>0?a.html:0,n);y!=null&&o.push(y)});var h=e.renderMode==="richText"?o.join(a.richText):vf(n,o.join(""),i?r:a.html);if(i)return h;var c=lf(t.header,"ordinal",e.useUTC),v=_y(n,e.renderMode).nameStyle,d=yy(n);return e.renderMode==="richText"?wy(e,c,v)+a.richText+h:vf(n,'
    '+Yt(c)+"
    "+h,r)}function fC(e,t,r,n){var i=e.renderMode,a=t.noName,o=t.noValue,s=!t.markerType,u=t.name,l=e.useUTC,f=t.valueFormatter||e.valueFormatter||function(S){return S=B(S)?S:[S],Y(S,function(T,w){return lf(T,B(v)?v[w]:v,l)})};if(!(a&&o)){var h=s?"":e.markupStyleCreator.makeTooltipMarker(t.markerType,t.markerColor||U.color.secondary,i),c=a?"":lf(u,"ordinal",l),v=t.valueType,d=o?[]:f(t.value,t.rawDataIndex),g=!s||!a,p=!s&&a,m=_y(n,i),y=m.nameStyle,_=m.valueStyle;return i==="richText"?(s?"":h)+(a?"":wy(e,c,y))+(o?"":dC(e,d,g,p,_)):vf(n,(s?"":h)+(a?"":cC(c,!s,y))+(o?"":vC(d,g,p,_)),r)}}function pd(e,t,r,n,i,a){if(e){var o=Sy(e),s={useUTC:i,renderMode:r,orderMode:n,markupStyleCreator:t,valueFormatter:e.valueFormatter};return o(s,e,0,a)}}function hC(e){return{html:sC[e],richText:uC[e]}}function vf(e,t,r){var n='
    ',i="margin: "+r+"px 0 0",a=yy(e);return'
    '+t+n+"
    "}function cC(e,t,r){var n=t?"margin-left:2px":"";return''+Yt(e)+""}function vC(e,t,r,n){var i=r?"10px":"20px",a=t?"float:right;margin-left:"+i:"";return e=B(e)?e:[e],''+Y(e,function(o){return Yt(o)}).join("  ")+""}function wy(e,t,r){return e.markupStyleCreator.wrapRichTextStyle(t,r)}function dC(e,t,r,n,i){var a=[i],o=n?10:20;return r&&a.push({padding:[0,0,0,o],align:"right"}),e.markupStyleCreator.wrapRichTextStyle(B(t)?t.join(" "):t,a)}function pC(e,t){var r=e.getData().getItemVisual(t,"style"),n=r[e.visualDrawType];return sa(n)}function xy(e,t){var r=e.get("padding");return r??(t==="richText"?[8,10]:10)}var qu=(function(){function e(){this.richTextStyles={},this._nextStyleNameId=th()}return e.prototype._generateStyleName=function(){return"__EC_aUTo_"+this._nextStyleNameId++},e.prototype.makeTooltipMarker=function(t,r,n){var i=n==="richText"?this._generateStyleName():null,a=qx({color:r,type:t,renderMode:n,markerId:i});return F(a)?a:(this.richTextStyles[i]=a.style,a.content)},e.prototype.wrapRichTextStyle=function(t,r){var n={};B(r)?b(r,function(a){return k(n,a)}):k(n,r);var i=this._generateStyleName();return this.richTextStyles[i]=n,"{"+i+"|"+t+"}"},e})();function gC(e){var t=e.series,r=e.dataIndex,n=e.multipleSeries,i=t.getData(),a=i.mapDimensionsAll("defaultedTooltip"),o=a.length,s=t.getRawValue(r),u=B(s),l=pC(t,r),f,h,c,v;if(o>1||u&&!o){var d=mC(s,t,r,a,l);f=d.inlineValues,h=d.inlineValueTypes,c=d.blocks,v=d.inlineValues[0]}else if(o){var g=i.getDimensionInfo(a[0]);v=f=ri(i,r,a[0]),h=g.type}else v=f=u?s[0]:s;var p=eh(t),m=p&&t.name||"",y=i.getName(r),_=n?m:y;return fa("section",{header:m,noHeader:n||!p,sortParam:v,blocks:[fa("nameValue",{markerType:"item",markerColor:l,name:_,noName:!Oe(_),value:f,valueType:h,rawDataIndex:i.getRawIndex(r)})].concat(c||[])})}function mC(e,t,r,n,i){var a=t.getData(),o=Tr(e,function(h,c,v){var d=a.getDimensionInfo(v);return h=h||d&&d.tooltip!==!1&&d.displayName!=null},!1),s=[],u=[],l=[];n.length?b(n,function(h){f(ri(a,r,h),h)}):b(e,f);function f(h,c){var v=a.getDimensionInfo(c);!v||v.otherDims.tooltip===!1||(o?l.push(fa("nameValue",{markerType:"subItem",markerColor:i,name:v.displayName,value:h,valueType:v.type})):(s.push(h),u.push(v.type)))}return{inlineValues:s,inlineValueTypes:u,blocks:l}}var sr=vt();function to(e,t){return e.getName(t)||e.getId(t)}var yC="__universalTransitionEnabled",hn=(function(e){z(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r._selectedDataIndicesMap={},r}return t.prototype.init=function(r,n,i){this.seriesIndex=this.componentIndex,this.dataTask=Ki({count:SC,reset:TC}),this.dataTask.context={model:this},this.mergeDefaultAndTheme(r,i);var a=sr(this).sourceManager=new aC(this);a.prepareSource();var o=this.getInitialData(r,i);md(o,this),this.dataTask.context.data=o,sr(this).dataBeforeProcessed=o,gd(this),this._initSelectedMapFromData(o)},t.prototype.mergeDefaultAndTheme=function(r,n){var i=ua(this),a=i?Da(r):{},o=this.subType;ft.hasClass(o)&&(o+="Series"),lt(r,n.getTheme().get(this.subType)),lt(r,this.getDefaultOption()),Jc(r,"label",["show"]),this.fillDataTextStyle(r.data),i&&br(r,a,i)},t.prototype.mergeOption=function(r,n){r=lt(this.option,r,!0),this.fillDataTextStyle(r.data);var i=ua(this);i&&br(this.option,r,i);var a=sr(this).sourceManager;a.dirty(),a.prepareSource();var o=this.getInitialData(r,n);md(o,this),this.dataTask.dirty(),this.dataTask.context.data=o,sr(this).dataBeforeProcessed=o,gd(this),this._initSelectedMapFromData(o)},t.prototype.fillDataTextStyle=function(r){if(r&&!Qt(r))for(var n=["show"],i=0;i=0&&c<0)&&(h=T,c=S,v=0),S===c&&(f[v++]=p))}return f.length=v,f},t.prototype.formatTooltip=function(r,n,i){return gC({series:this,dataIndex:r,multipleSeries:n})},t.prototype.isAnimationEnabled=function(){var r=this.ecModel;if(K.node&&!(r&&r.ssr))return!1;var n=this.getShallow("animation");return n&&this.getData().count()>this.getShallow("animationThreshold")&&(n=!1),!!n},t.prototype.restoreData=function(){this.dataTask.dirty()},t.prototype.getColorFromPalette=function(r,n,i){var a=this.ecModel,o=zh.prototype.getColorFromPalette.call(this,r,n,i);return o||(o=a.getColorFromPalette(r,n,i)),o},t.prototype.coordDimToDataDim=function(r){return this.getRawData().mapDimensionsAll(r)},t.prototype.getProgressive=function(){return this.get("progressive")},t.prototype.getProgressiveThreshold=function(){return this.get("progressiveThreshold")},t.prototype.select=function(r,n){this._innerSelect(this.getData(n),r)},t.prototype.unselect=function(r,n){var i=this.option.selectedMap;if(i){var a=this.option.selectedMode,o=this.getData(n);if(a==="series"||i==="all"){this.option.selectedMap={},this._selectedDataIndicesMap={};return}for(var s=0;s=0&&i.push(o)}return i},t.prototype.isSelected=function(r,n){var i=this.option.selectedMap;if(!i)return!1;var a=this.getData(n);return(i==="all"||i[to(a,r)])&&!a.getItemModel(r).get(["select","disabled"])},t.prototype.isUniversalTransitionEnabled=function(){if(this[yC])return!0;var r=this.option.universalTransition;return r?r===!0?!0:r&&r.enabled:!1},t.prototype._innerSelect=function(r,n){var i,a,o=this.option,s=o.selectedMode,u=n.length;if(!(!s||!u)){if(s==="series")o.selectedMap="all";else if(s==="multiple"){H(o.selectedMap)||(o.selectedMap={});for(var l=o.selectedMap,f=0;f0&&this._innerSelect(r,n)}},t.registerClass=function(r){return ft.registerClass(r)},t.protoInitialize=(function(){var r=t.prototype;r.type="series.__base__",r.seriesIndex=0,r.ignoreStyleOnData=!1,r.hasSymbolVisual=!1,r.defaultSymbol="circle",r.visualStyleAccessPath="itemStyle",r.visualDrawType="fill"})(),t})(ft);We(hn,Gb);We(hn,zh);Wg(hn,ft);function gd(e){var t=e.name;eh(e)||(e.name=_C(e)||t)}function _C(e){var t=e.getRawData(),r=t.mapDimensionsAll("seriesName"),n=[];return b(r,function(i){var a=t.getDimensionInfo(i);a.displayName&&n.push(a.displayName)}),n.join(" ")}function SC(e){return e.model.getRawData().count()}function TC(e){var t=e.model;return t.setData(t.getRawData().cloneShallow()),wC}function wC(e,t){t.outputData&&e.end>t.outputData.count()&&t.model.getRawData().cloneShallow(t.outputData)}function md(e,t){b(Y_(e.CHANGABLE_METHODS,e.DOWNSAMPLE_METHODS),function(r){e.wrapMethod(r,Ct(xC,t))})}function xC(e,t){var r=df(e);return r&&r.setOutputEnd((t||this).count()),t}function df(e){var t=(e.ecModel||{}).scheduler,r=t&&t.getPipeline(e.uid);if(r){var n=r.currentTask;if(n){var i=n.agentStubMap;i&&(n=i.get(e.uid))}return n}}var Ue=(function(){function e(){this.group=new re,this.uid=zs("viewComponent")}return e.prototype.init=function(t,r){},e.prototype.render=function(t,r,n,i){},e.prototype.dispose=function(t,r){},e.prototype.updateView=function(t,r,n,i){},e.prototype.updateLayout=function(t,r,n,i){},e.prototype.updateVisual=function(t,r,n,i){},e.prototype.toggleBlurSeries=function(t,r,n){},e.prototype.eachRendered=function(t){var r=this.group;r&&r.traverse(t)},e})();ah(Ue);Ds(Ue);function bC(){var e=vt();return function(t){var r=e(t),n=t.pipelineContext,i=!!r.large,a=!!r.progressiveRender,o=r.large=!!(n&&n.large),s=r.progressiveRender=!!(n&&n.progressiveRender);return(i!==o||a!==s)&&"reset"}}var by=vt(),CC=bC(),un=(function(){function e(){this.group=new re,this.uid=zs("viewChart"),this.renderTask=Ki({plan:MC,reset:DC}),this.renderTask.context={view:this}}return e.prototype.init=function(t,r){},e.prototype.render=function(t,r,n,i){},e.prototype.highlight=function(t,r,n,i){var a=t.getData(i&&i.dataType);a&&_d(a,i,"emphasis")},e.prototype.downplay=function(t,r,n,i){var a=t.getData(i&&i.dataType);a&&_d(a,i,"normal")},e.prototype.remove=function(t,r){this.group.removeAll()},e.prototype.dispose=function(t,r){},e.prototype.updateView=function(t,r,n,i){this.render(t,r,n,i)},e.prototype.updateVisual=function(t,r,n,i){this.render(t,r,n,i)},e.prototype.eachRendered=function(t){Pm(this.group,t)},e.markUpdateMethod=function(t,r){by(t).updateMethod=r},e.protoInitialize=(function(){var t=e.prototype;t.type="chart"})(),e})();function yd(e,t,r){e&&ef(e)&&(t==="emphasis"?Kl:Ql)(e,r)}function _d(e,t,r){var n=xa(e,t),i=t&&t.highlightKey!=null?gw(t.highlightKey):null;n!=null?b(Ut(n),function(a){yd(e.getItemGraphicEl(a),r,i)}):e.eachItemGraphicEl(function(a){yd(a,r,i)})}ah(un);Ds(un);function MC(e){return CC(e.model)}function DC(e){var t=e.model,r=e.ecModel,n=e.api,i=e.payload,a=t.pipelineContext.progressiveRender,o=e.view,s=i&&by(i).updateMethod,u=a?"incrementalPrepareRender":s&&o[s]?s:"render";return u!=="render"&&o[u](t,r,n,i),AC[u]}var AC={incrementalPrepareRender:{progress:function(e,t){t.view.incrementalRender(e,t.model,t.ecModel,t.api,t.payload)}},render:{forceFirstProgress:!0,progress:function(e,t){t.view.render(t.model,t.ecModel,t.api,t.payload)}}},is="\0__throttleOriginMethod",Sd="\0__throttleRate",Td="\0__throttleType";function Wh(e,t,r){var n,i=0,a=0,o=null,s,u,l,f;t=t||0;function h(){a=new Date().getTime(),o=null,e.apply(u,l||[])}var c=function(){for(var v=[],d=0;d=0?h():o=setTimeout(h,-s),i=n};return c.clear=function(){o&&(clearTimeout(o),o=null)},c.debounceNextCall=function(v){f=v},c}function Cy(e,t,r,n){var i=e[t];if(i){var a=i[is]||i,o=i[Td],s=i[Sd];if(s!==r||o!==n){if(r==null||!n)return e[t]=a;i=e[t]=Wh(a,r,n==="debounce"),i[is]=a,i[Td]=n,i[Sd]=r}return i}}function pf(e,t){var r=e[t];r&&r[is]&&(r.clear&&r.clear(),e[t]=r[is])}var wd=vt(),xd={itemStyle:ia(Nm,!0),lineStyle:ia(Bm,!0)},LC={lineStyle:"stroke",itemStyle:"fill"};function My(e,t){var r=e.visualStyleMapper||xd[t];return r||(console.warn("Unknown style type '"+t+"'."),xd.itemStyle)}function Dy(e,t){var r=e.visualDrawType||LC[t];return r||(console.warn("Unknown style type '"+t+"'."),"fill")}var IC={createOnAllSeries:!0,performRawSeries:!0,reset:function(e,t){var r=e.getData(),n=e.visualStyleAccessPath||"itemStyle",i=e.getModel(n),a=My(e,n),o=a(i),s=i.getShallow("decal");s&&(r.setVisual("decal",s),s.dirty=!0);var u=Dy(e,n),l=o[u],f=j(l)?l:null,h=o.fill==="auto"||o.stroke==="auto";if(!o[u]||f||h){var c=e.getColorFromPalette(e.name,null,t.getSeriesCount());o[u]||(o[u]=c,r.setVisual("colorFromPalette",!0)),o.fill=o.fill==="auto"||j(o.fill)?c:o.fill,o.stroke=o.stroke==="auto"||j(o.stroke)?c:o.stroke}if(r.setVisual("style",o),r.setVisual("drawType",u),!t.isSeriesFiltered(e)&&f)return r.setVisual("colorFromPalette",!1),{dataEach:function(v,d){var g=e.getDataParams(d),p=k({},o);p[u]=f(g),v.setItemVisual(d,"style",p)}}}},Si=new St,PC={createOnAllSeries:!0,reset:function(e,t){if(!e.ignoreStyleOnData){var r=e.getData(),n=e.visualStyleAccessPath||"itemStyle",i=My(e,n),a=r.getVisual("drawType");return{dataEach:r.hasItemOption?function(o,s){var u=o.getRawDataItem(s);if(u&&u[n]){Si.option=u[n];var l=i(Si),f=o.ensureUniqueItemVisual(s,"style");k(f,l),Si.option.decal&&(o.setItemVisual(s,"decal",Si.option.decal),Si.option.decal.dirty=!0),a in l&&o.setItemVisual(s,"colorFromPalette",!1)}}:null}}}},EC={performRawSeries:!0,overallReset:function(e){var t=W();e.eachSeries(function(r){if(!r.isColorBySeries()){var n=r.type+"-"+r.getColorBy();wd(r).scope=t.get(n)||t.set(n,{})}}),e.eachSeries(function(r){if(!r.isColorBySeries()){var n=r.getRawData(),i={},a=r.getData(),o=wd(r).scope,s=r.visualStyleAccessPath||"itemStyle",u=Dy(r,s);a.each(function(l){var f=a.getRawIndex(l);i[f]=l}),n.each(function(l){var f=i[l],h=a.getItemVisual(f,"colorFromPalette");if(h){var c=a.ensureUniqueItemVisual(f,"style"),v=n.getName(l)||l+"",d=n.count();c[u]=r.getColorFromPalette(v,o,d)}})}})}},eo=Math.PI;function RC(e,t){t=t||{},pt(t,{text:"loading",textColor:U.color.primary,fontSize:12,fontWeight:"normal",fontStyle:"normal",fontFamily:"sans-serif",maskColor:"rgba(255,255,255,0.8)",showSpinner:!0,color:U.color.theme[0],spinnerRadius:10,lineWidth:5,zlevel:0});var r=new re,n=new Mt({style:{fill:t.maskColor},zlevel:t.zlevel,z:1e4});r.add(n);var i=new ie({style:{text:t.text,fill:t.textColor,fontSize:t.fontSize,fontWeight:t.fontWeight,fontStyle:t.fontStyle,fontFamily:t.fontFamily},zlevel:t.zlevel,z:10001}),a=new Mt({style:{fill:"none"},textContent:i,textConfig:{position:"right",distance:10},zlevel:t.zlevel,z:10001});r.add(a);var o;return t.showSpinner&&(o=new ks({shape:{startAngle:-eo/2,endAngle:-eo/2+.1,r:t.spinnerRadius},style:{stroke:t.color,lineCap:"round",lineWidth:t.lineWidth},zlevel:t.zlevel,z:10001}),o.animateShape(!0).when(1e3,{endAngle:eo*3/2}).start("circularInOut"),o.animateShape(!0).when(1e3,{startAngle:eo*3/2}).delay(300).start("circularInOut"),r.add(o)),r.resize=function(){var s=i.getBoundingRect().width,u=t.showSpinner?t.spinnerRadius:0,l=(e.getWidth()-u*2-(t.showSpinner&&s?10:0)-s)/2-(t.showSpinner&&s?0:5+s/2)+(t.showSpinner?0:s/2)+(s?0:u),f=e.getHeight()/2;t.showSpinner&&o.setShape({cx:l,cy:f}),a.setShape({x:l-u,y:f-u,width:u*2,height:u*2}),n.setShape({x:0,y:0,width:e.getWidth(),height:e.getHeight()})},r.resize(),r}var Ay=(function(){function e(t,r,n,i){this._stageTaskMap=W(),this.ecInstance=t,this.api=r,n=this._dataProcessorHandlers=n.slice(),i=this._visualHandlers=i.slice(),this._allHandlers=n.concat(i)}return e.prototype.restoreData=function(t,r){t.restoreData(r),this._stageTaskMap.each(function(n){var i=n.overallTask;i&&i.dirty()})},e.prototype.getPerformArgs=function(t,r){if(t.__pipeline){var n=this._pipelineMap.get(t.__pipeline.id),i=n.context,a=!r&&n.progressiveEnabled&&(!i||i.progressiveRender)&&t.__idxInPipeline>n.blockIndex,o=a?n.step:null,s=i&&i.modDataCount,u=s!=null?Math.ceil(s/o):null;return{step:o,modBy:u,modDataCount:s}}},e.prototype.getPipeline=function(t){return this._pipelineMap.get(t)},e.prototype.updateStreamModes=function(t,r){var n=this._pipelineMap.get(t.uid),i=t.__preparePipelineContext?t.__preparePipelineContext(r,n):qS(t,r,n);t.pipelineContext=n.context=i},e.prototype.restorePipelines=function(t,r){var n=this,i=n._pipelineMap=W();r.eachSeries(function(a){var o=t.painter.type==="canvas"&&a.getProgressive(),s=a.uid;i.set(s,{id:s,head:null,tail:null,threshold:a.getProgressiveThreshold(),progressiveEnabled:o&&!(a.preventIncremental&&a.preventIncremental()),blockIndex:-1,step:Math.round(o||700),count:0}),n._pipe(a,a.dataTask)})},e.prototype.prepareStageTasks=function(){var t=this._stageTaskMap,r=this.api.getModel(),n=this.api;b(this._allHandlers,function(i){var a=t.get(i.uid)||t.set(i.uid,{}),o="";tr(!(i.reset&&i.overallReset),o),i.reset&&this._createSeriesStageTask(i,a,r,n),i.overallReset&&this._createOverallStageTask(i,a,r,n)},this)},e.prototype.prepareView=function(t,r,n,i){var a=t.renderTask,o=a.context;o.model=r,o.ecModel=n,o.api=i,a.__block=!t.incrementalPrepareRender,this._pipe(r,a)},e.prototype.performDataProcessorTasks=function(t,r){this._performStageTasks(this._dataProcessorHandlers,t,r,{block:!0})},e.prototype.performVisualTasks=function(t,r,n){this._performStageTasks(this._visualHandlers,t,r,n)},e.prototype._performStageTasks=function(t,r,n,i){i=i||{};var a=!1,o=this;b(t,function(u,l){if(!(i.visualType&&i.visualType!==u.visualType)){var f=o._stageTaskMap.get(u.uid),h=f.seriesTaskMap,c=f.overallTask;if(c){var v,d=c.agentStubMap;d.each(function(p){s(i,p)&&(p.dirty(),v=!0)}),v&&c.dirty(),o.updatePayload(c,n);var g=o.getPerformArgs(c,i.block);d.each(function(p){p.perform(g)}),c.perform(g)&&(a=!0)}else h&&h.each(function(p,m){s(i,p)&&p.dirty();var y=o.getPerformArgs(p,i.block);y.skip=!u.performRawSeries&&r.isSeriesFiltered(p.context.model),o.updatePayload(p,n),p.perform(y)&&(a=!0)})}});function s(u,l){return u.setDirty&&(!u.dirtyMap||u.dirtyMap.get(l.__pipeline.id))}this.unfinished=a||this.unfinished},e.prototype.performSeriesTasks=function(t){var r;t.eachSeries(function(n){r=n.dataTask.perform()||r}),this.unfinished=r||this.unfinished},e.prototype.plan=function(){this._pipelineMap.each(function(t){var r=t.tail;do{if(r.__block){t.blockIndex=r.__idxInPipeline;break}r=r.getUpstream()}while(r)})},e.prototype.updatePayload=function(t,r){r!=="remain"&&(t.context.payload=r)},e.prototype._createSeriesStageTask=function(t,r,n,i){var a=this,o=r.seriesTaskMap,s=r.seriesTaskMap=W(),u=t.seriesType,l=t.getTargetSeries;t.createOnAllSeries?n.eachRawSeries(f):u?n.eachRawSeriesByType(u,f):l&&l(n,i).each(f);function f(h){var c=h.uid,v=s.set(c,o&&o.get(c)||Ki({plan:FC,reset:zC,count:VC}));v.context={model:h,ecModel:n,api:i,useClearVisual:t.isVisual&&!t.isLayout,plan:t.plan,reset:t.reset,scheduler:a},a._pipe(h,v)}},e.prototype._createOverallStageTask=function(t,r,n,i){var a=this,o=r.overallTask=r.overallTask||Ki({reset:OC});o.context={ecModel:n,api:i,overallReset:t.overallReset,scheduler:a};var s=o.agentStubMap,u=o.agentStubMap=W(),l=t.seriesType,f=t.getTargetSeries,h=t.dirtyOnOverallProgress,c=!1,v="";tr(!t.createOnAllSeries,v),l?n.eachRawSeriesByType(l,d):f?f(n,i).each(d):b(n.getSeries(),d);function d(g){var p=g.uid,m=u.set(p,s&&s.get(p)||(c=!0,Ki({reset:kC,onDirty:NC})));m.context={model:g,dirtyOnOverallProgress:h},m.agent=o,m.__block=h,a._pipe(g,m)}c&&o.dirty()},e.prototype._pipe=function(t,r){var n=t.uid,i=this._pipelineMap.get(n);!i.head&&(i.head=r),i.tail&&i.tail.pipe(r),i.tail=r,r.__idxInPipeline=i.count++,r.__pipeline=i},e.wrapStageHandler=function(t,r){return j(t)&&(t={overallReset:t,seriesType:GC(t)}),t.uid=zs("stageHandler"),r&&(t.visualType=r),t},e})();function OC(e){e.overallReset(e.ecModel,e.api,e.payload)}function kC(e){return e.dirtyOnOverallProgress&&BC}function BC(){this.agent.dirty(),this.getDownstream().dirty()}function NC(){this.agent&&this.agent.dirty()}function FC(e){return e.plan?e.plan(e.model,e.ecModel,e.api,e.payload):null}function zC(e){e.useClearVisual&&e.data.clearAllVisual();var t=e.resetDefines=Ut(e.reset(e.model,e.ecModel,e.api,e.payload));return t.length>1?Y(t,function(r,n){return Ly(n)}):HC}var HC=Ly(0);function Ly(e){return function(t,r){var n=r.data,i=r.resetDefines[e];if(i&&i.dataEach)for(var a=t.start;a0&&v===l.length-c.length){var d=l.slice(0,v);d!=="data"&&(r.mainType=d,r[c.toLowerCase()]=u,f=!0)}}s.hasOwnProperty(l)&&(n[l]=u,f=!0),f||(i[l]=u)})}return{cptQuery:r,dataQuery:n,otherQuery:i}},e.prototype.filter=function(t,r){var n=this.eventInfo;if(!n)return!0;var i=n.targetEl,a=n.packedEvent,o=n.model,s=n.view;if(!o||!s)return!0;var u=r.cptQuery,l=r.dataQuery;return f(u,o,"mainType")&&f(u,o,"subType")&&f(u,o,"index","componentIndex")&&f(u,o,"name")&&f(u,o,"id")&&f(l,a,"name")&&f(l,a,"dataIndex")&&f(l,a,"dataType")&&(!s.filterForExposedEvent||s.filterForExposedEvent(t,r.otherQuery,i,a));function f(h,c,v,d){return h[v]==null||c[d||v]===h[v]}},e.prototype.afterTrigger=function(){this.eventInfo=null},e})(),gf=["symbol","symbolSize","symbolRotate","symbolOffset"],Md=gf.concat(["symbolKeepAspect"]),WC={createOnAllSeries:!0,performRawSeries:!0,reset:function(e,t){var r=e.getData();if(e.legendIcon&&r.setVisual("legendIcon",e.legendIcon),!e.hasSymbolVisual)return;for(var n={},i={},a=!1,o=0;o=0&&tn(u)?u:.5;var l=e.createRadialGradient(o,s,0,o,s,u);return l}function yf(e,t,r){for(var n=t.type==="radial"?vM(e,t,r):cM(e,t,r),i=t.colorStops,a=0;a0)?null:e==="dashed"?[4*t,2*t]:e==="dotted"?[t]:Tt(e)?[e]:B(e)?e:null}function Oy(e){var t=e.style,r=t.lineDash&&t.lineWidth>0&&pM(t.lineDash,t.lineWidth),n=t.lineDashOffset;if(r){var i=t.strokeNoScale&&e.getLineScale?e.getLineScale():1;i&&i!==1&&(r=Y(r,function(a){return a/i}),n/=i)}return[r,n]}var gM=new Jn(!0);function os(e){var t=e.stroke;return!(t==null||t==="none"||!(e.lineWidth>0))}function Dd(e){return typeof e=="string"&&e!=="none"}function ss(e){var t=e.fill;return t!=null&&t!=="none"}function Ad(e,t){if(t.fillOpacity!=null&&t.fillOpacity!==1){var r=e.globalAlpha;e.globalAlpha=t.fillOpacity*t.opacity,e.fill(),e.globalAlpha=r}else e.fill()}function Ld(e,t){if(t.strokeOpacity!=null&&t.strokeOpacity!==1){var r=e.globalAlpha;e.globalAlpha=t.strokeOpacity*t.opacity,e.stroke(),e.globalAlpha=r}else e.stroke()}function _f(e,t,r){var n=Yg(t.image,t.__image,r);if(As(n)){var i=e.createPattern(n,t.repeat||"repeat");if(typeof DOMMatrix=="function"&&i&&i.setTransform){var a=new DOMMatrix;a.translateSelf(t.x||0,t.y||0),a.rotateSelf(0,0,(t.rotation||0)*X_),a.scaleSelf(t.scaleX||1,t.scaleY||1),i.setTransform(a)}return i}}function mM(e,t,r,n,i){var a,o=os(r),s=ss(r),u=r.strokePercent,l=u<1,f=!t.path;(!t.silent||l)&&f&&t.createPathProxy();var h=t.path||gM,c=t.__dirty;if(!n){var v=r.fill,d=r.stroke,g=s&&!!v.colorStops,p=o&&!!d.colorStops,m=s&&!!v.image,y=o&&!!d.image,_=void 0,S=void 0,T=void 0,w=void 0,x=void 0;(g||p)&&(x=t.getBoundingRect()),g&&(_=c?yf(e,v,x):t.__canvasFillGradient,t.__canvasFillGradient=_),p&&(S=c?yf(e,d,x):t.__canvasStrokeGradient,t.__canvasStrokeGradient=S),m&&(T=c||!t.__canvasFillPattern?_f(e,v,t):t.__canvasFillPattern,t.__canvasFillPattern=T),y&&(w=c||!t.__canvasStrokePattern?_f(e,d,t):t.__canvasStrokePattern,t.__canvasStrokePattern=w),g?e.fillStyle=_:m&&(T?e.fillStyle=T:s=!1),p?e.strokeStyle=S:y&&(w?e.strokeStyle=w:o=!1)}var D=t.getGlobalScale();h.setScale(D[0],D[1],t.segmentIgnoreThreshold);var M,C;e.setLineDash&&r.lineDash&&(a=Oy(t),M=a[0],C=a[1]);var A=!0;(f||c&On)&&(h.setDPR(e.dpr),l?h.setContext(null):(h.setContext(e),A=!1),h.reset(),t.buildPath(h,t.shape,n),h.toStatic(),t.pathUpdated()),A&&h.rebuildPath(e,l?u:1),M&&(e.setLineDash(M),e.lineDashOffset=C),n?(i.batchFill=s,i.batchStroke=o):r.strokeFirst?(o&&Ld(e,r),s&&Ad(e,r)):(s&&Ad(e,r),o&&Ld(e,r)),M&&e.setLineDash([])}function yM(e,t,r){var n=t.__image=Yg(r.image,t.__image,t,t.onload);if(!(!n||!As(n))){var i=r.x||0,a=r.y||0,o=t.getWidth(),s=t.getHeight(),u=n.width/n.height;if(o==null&&s!=null?o=s*u:s==null&&o!=null?s=o/u:o==null&&s==null&&(o=n.width,s=n.height),r.sWidth&&r.sHeight){var l=r.sx||0,f=r.sy||0;e.drawImage(n,l,f,r.sWidth,r.sHeight,i,a,o,s)}else if(r.sx&&r.sy){var l=r.sx,f=r.sy,h=o-l,c=s-f;e.drawImage(n,l,f,h,c,i,a,o,s)}else e.drawImage(n,i,a,o,s)}}function _M(e,t,r){var n,i=r.text;if(i!=null&&(i+=""),i){e.font=r.font||Sr,e.textAlign=r.textAlign,e.textBaseline=r.textBaseline;var a=void 0,o=void 0;e.setLineDash&&r.lineDash&&(n=Oy(t),a=n[0],o=n[1]),a&&(e.setLineDash(a),e.lineDashOffset=o),r.strokeFirst?(os(r)&&e.strokeText(i,r.x,r.y),ss(r)&&e.fillText(i,r.x,r.y)):(ss(r)&&e.fillText(i,r.x,r.y),os(r)&&e.strokeText(i,r.x,r.y)),a&&e.setLineDash([])}}var Id=["shadowBlur","shadowOffsetX","shadowOffsetY"],Pd=[["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]];function ky(e,t,r,n,i){var a=!1;if(!n&&(r=r||{},t===r))return!1;if(n||t.opacity!==r.opacity){Gt(e,i),a=!0;var o=Math.max(Math.min(t.opacity,1),0);e.globalAlpha=isNaN(o)?an.opacity:o}(n||t.blend!==r.blend)&&(a||(Gt(e,i),a=!0),e.globalCompositeOperation=t.blend||an.blend);for(var s=0;s0&&r.unfinished);r.unfinished||this._zr.flush()}}},t.prototype.getDom=function(){return this._dom},t.prototype.getId=function(){return this.id},t.prototype.getZr=function(){return this._zr},t.prototype.isSSR=function(){return this._ssr},t.prototype.setOption=function(r,n,i){if(!this[bt]){if(this._disposed){this.id;return}var a,o,s;if(H(n)&&(i=n.lazyUpdate,a=n.silent,o=n.replaceMerge,s=n.transition,n=n.notMerge),this[bt]=!0,Pn(this),!this._model||n){var u=new Sb(this._api),l=this._theme,f=this._model=new Hh;f.scheduler=this._scheduler,f.ssr=this._ssr,f.init(null,null,null,l,this._locale,u)}this._model.setOption(r,{replaceMerge:o},bf);var h={seriesTransition:s,optionChanged:!0};if(i)this[Dt]={silent:a,updateParams:h},this[bt]=!1,this.getZr().wakeUp();else{try{qr(this),Ke.update.call(this,null,h)}catch(c){throw this[Dt]=null,this[bt]=!1,c}this._ssr||this._zr.flush(),this[Dt]=null,this[bt]=!1,Ln.call(this,a),In.call(this,a)}}},t.prototype.setTheme=function(r,n){if(!this[bt]){if(this._disposed){this.id;return}var i=this._model;if(i){var a=n&&n.silent,o=null;this[Dt]&&(a==null&&(a=this[Dt].silent),o=this[Dt].updateParams,this[Dt]=null),this[bt]=!0,Pn(this);try{this._updateTheme(r),i.setTheme(this._theme),qr(this),Ke.update.call(this,{type:"setTheme"},o)}catch(s){throw this[bt]=!1,s}this[bt]=!1,Ln.call(this,a),In.call(this,a)}}},t.prototype._updateTheme=function(r){F(r)&&(r=Qy[r]),r&&(r=rt(r),r&&sy(r,!0),this._theme=r)},t.prototype.getModel=function(){return this._model},t.prototype.getOption=function(){return this._model&&this._model.getOption()},t.prototype.getWidth=function(){return this._zr.getWidth()},t.prototype.getHeight=function(){return this._zr.getHeight()},t.prototype.getDevicePixelRatio=function(){return this._zr.painter.dpr||K.hasGlobalWindow&&window.devicePixelRatio||1},t.prototype.getRenderedCanvas=function(r){return this.renderToCanvas(r)},t.prototype.renderToCanvas=function(r){r=r||{};var n=this._zr.painter;return n.getRenderedCanvas({backgroundColor:r.backgroundColor||this._model.get("backgroundColor"),pixelRatio:r.pixelRatio||this.getDevicePixelRatio()})},t.prototype.renderToSVGString=function(r){r=r||{};var n=this._zr.painter;return n.renderToString({useViewBox:r.useViewBox})},t.prototype.getSvgDataURL=function(){var r=this._zr,n=r.storage.getDisplayList();return b(n,function(i){i.stopAnimation(null,!0)}),r.painter.toDataURL()},t.prototype.getDataURL=function(r){if(this._disposed){this.id;return}r=r||{};var n=r.excludeComponents,i=this._model,a=[],o=this;b(n,function(u){i.eachComponent({mainType:u},function(l){var f=o._componentsMap[l.__viewId];f.group.ignore||(a.push(f),f.group.ignore=!0)})});var s=this._zr.painter.getType()==="svg"?this.getSvgDataURL():this.renderToCanvas(r).toDataURL("image/"+(r&&r.type||"png"));return b(a,function(u){u.group.ignore=!1}),s},t.prototype.getConnectedDataURL=function(r){if(this._disposed){this.id;return}var n=r.type==="svg",i=this.group,a=Math.min,o=Math.max,s=1/0;if(Zd[i]){var u=s,l=s,f=-s,h=-s,c=[],v=r&&r.pixelRatio||this.getDevicePixelRatio();b(Qi,function(_,S){if(_.group===i){var T=n?_.getZr().painter.getSvgDom().innerHTML:_.renderToCanvas(rt(r)),w=_.getDom().getBoundingClientRect();u=a(w.left,u),l=a(w.top,l),f=o(w.right,f),h=o(w.bottom,h),c.push({dom:T,left:w.left,top:w.top})}}),u*=v,l*=v,f*=v,h*=v;var d=f-u,g=h-l,p=ee.createCanvas(),m=Zc(p,{renderer:n?"svg":"canvas"});if(m.resize({width:d,height:g}),n){var y="";return b(c,function(_){var S=_.left-u,T=_.top-l;y+=''+_.dom+""}),m.painter.getSvgRoot().innerHTML=y,r.connectedBackgroundColor&&m.painter.setBackgroundColor(r.connectedBackgroundColor),m.refreshImmediately(),m.painter.toDataURL()}else return r.connectedBackgroundColor&&m.add(new Mt({shape:{x:0,y:0,width:d,height:g},style:{fill:r.connectedBackgroundColor}})),b(c,function(_){var S=new pn({style:{x:_.left*v-u,y:_.top*v-l,image:_.dom}});m.add(S)}),m.refreshImmediately(),p.toDataURL("image/"+(r&&r.type||"png"))}else return this.getDataURL(r)},t.prototype.convertToPixel=function(r,n,i){return oo(this,"convertToPixel",r,n,i)},t.prototype.convertToLayout=function(r,n,i){return oo(this,"convertToLayout",r,n,i)},t.prototype.convertFromPixel=function(r,n,i){return oo(this,"convertFromPixel",r,n,i)},t.prototype.containPixel=function(r,n){if(this._disposed){this.id;return}var i=this._model,a,o=xu(i,r);return b(o,function(s,u){u.indexOf("Models")>=0&&b(s,function(l){var f=l.coordinateSystem;if(f&&f.containPoint)a=a||!!f.containPoint(n);else if(u==="seriesModels"){var h=this._chartsMap[l.__viewId];h&&h.containPoint&&(a=a||h.containPoint(n,l))}},this)},this),!!a},t.prototype.getVisual=function(r,n){var i=this._model,a=xu(i,r,{defaultMainType:"series"}),o=a.seriesModel,s=o.getData(),u=a.hasOwnProperty("dataIndexInside")?a.dataIndexInside:a.hasOwnProperty("dataIndex")?s.indexOfRawIndex(a.dataIndex):null;return u!=null?XC(s,u,n):ZC(s,n)},t.prototype.getViewOfComponentModel=function(r){return this._componentsMap[r.__viewId]},t.prototype.getViewOfSeriesModel=function(r){return this._chartsMap[r.__viewId]},t.prototype._initEvents=function(){var r=this;b(UM,function(i){var a=function(o){var s=r.getModel(),u=o.target,l,f=i==="globalout";if(f?l={}:u&&zi(u,function(g){var p=yt(g);if(p&&p.dataIndex!=null){var m=p.dataModel||s.getSeriesByIndex(p.seriesIndex);return l=m&&m.getDataParams(p.dataIndex,p.dataType,u)||{},!0}else if(p.eventData)return l=k({},p.eventData),!0},!0),l){var h=l.componentType,c=l.componentIndex;(h==="markLine"||h==="markPoint"||h==="markArea")&&(h="series",c=l.seriesIndex);var v=h&&c!=null&&s.getComponent(h,c),d=v&&r[v.mainType==="series"?"_chartsMap":"_componentsMap"][v.__viewId];l.event=o,l.type=i,r._$eventProcessor.eventInfo={targetEl:u,packedEvent:l,model:v,view:d},r.trigger(i,l)}};a.zrEventfulCallAtLast=!0,r._zr.on(i,a,r)});var n=this._messageCenter;b(wf,function(i,a){n.on(a,function(o){r.trigger(a,o)})}),$C(n,this,this._api)},t.prototype.isDisposed=function(){return this._disposed},t.prototype.clear=function(){if(this._disposed){this.id;return}this.setOption({series:[]},!0)},t.prototype.dispose=function(){if(this._disposed){this.id;return}this._disposed=!0;var r=this.getDom();r&&Hg(this.getDom(),$h,"");var n=this,i=n._api,a=n._model;b(n._componentsViews,function(o){o.dispose(a,i)}),b(n._chartsViews,function(o){o.dispose(a,i)}),n._zr.dispose(),n._dom=n._model=n._chartsMap=n._componentsMap=n._chartsViews=n._componentsViews=n._scheduler=n._api=n._zr=n._throttledZrFlush=n._theme=n._coordSysMgr=n._messageCenter=null,delete Qi[n.id]},t.prototype.resize=function(r){if(!this[bt]){if(this._disposed){this.id;return}this._zr.resize(r);var n=this._model;if(this._loadingFX&&this._loadingFX.resize(),!!n){var i=n.resetOption("media"),a=r&&r.silent;this[Dt]&&(a==null&&(a=this[Dt].silent),i=!0,this[Dt]=null),this[bt]=!0,Pn(this);try{i&&qr(this),Ke.update.call(this,{type:"resize",animation:k({duration:0},r&&r.animation)})}catch(o){throw this[bt]=!1,o}this[bt]=!1,Ln.call(this,a),In.call(this,a)}}},t.prototype.showLoading=function(r,n){if(this._disposed){this.id;return}if(H(r)&&(n=r,r=""),r=r||"default",this.hideLoading(),!!Cf[r]){var i=Cf[r](this._api,n),a=this._zr;this._loadingFX=i,a.add(i)}},t.prototype.hideLoading=function(){if(this._disposed){this.id;return}this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null},t.prototype.makeActionFromEvent=function(r){var n=k({},r);return n.type=Tf[r.type],n},t.prototype.dispatchAction=function(r,n){if(this._disposed){this.id;return}if(H(n)||(n={silent:!!n}),!!us[r.type]&&this._model){if(this[bt]){this._pendingActions.push(r);return}var i=n.silent;el.call(this,r,i);var a=n.flush;a?this._zr.flush():a!==!1&&K.browser.weChat&&this._throttledZrFlush(),Ln.call(this,i),In.call(this,i)}},t.prototype.updateLabelLayout=function(){ue.trigger("series:layoutlabels",this._model,this._api,{updatedSeries:[]})},t.prototype.appendData=function(r){if(this._disposed){this.id;return}var n=r.seriesIndex,i=this.getModel(),a=i.getSeriesByIndex(n);a.appendData(r),this._scheduler.unfinished=!0,this.getZr().wakeUp()},t.internalField=(function(){qr=function(h){QC(h._model);var c=h._scheduler;c.restorePipelines(h._zr,h._model),c.prepareStageTasks(),Ju(h,!0),Ju(h,!1),c.plan()},Ju=function(h,c){for(var v=h._model,d=h._scheduler,g=c?h._componentsViews:h._chartsViews,p=c?h._componentsMap:h._chartsMap,m=h._zr,y=h._api,_=0;_G(c.get("hoverLayerThreshold"),ry.hoverLayerThreshold)&&!K.node&&!K.worker;(h._usingTHL||p)&&(c.eachSeries(function(m){if(!m.preventUsingHoverLayer){var y=h._chartsMap[m.__viewId];y.__alive&&y.eachRendered(function(_){var S=_.states.emphasis;S&&S.hoverLayer!==Cm&&(S.hoverLayer=p?bm:xm)})}}),h._usingTHL=p)}}function s(h,c){var v=h.get("blendMode")||null;c.eachRendered(function(d){d.isGroup||(d.style.blend=v)})}function u(h,c){if(!h.preventAutoZ){var v=Em(h);c.eachRendered(function(d){return Rm(d,v.z,v.zlevel),!0})}}function l(h,c){c.eachRendered(function(v){if(!Xi(v)){var d=v.getTextContent(),g=v.getTextGuideLine();v.stateTransition&&(v.stateTransition=null),d&&d.stateTransition&&(d.stateTransition=null),g&&g.stateTransition&&(g.stateTransition=null),v.hasState()?(v.prevStates=v.currentStates,v.clearStates()):v.prevStates&&(v.prevStates=null)}})}function f(h,c){var v=h.getModel("stateAnimation"),d=h.isAnimationEnabled(),g=v.get("duration"),p=g>0?{duration:g,delay:v.get("delay"),easing:v.get("easing")}:null;c.eachRendered(function(m){if(m.states&&m.states.emphasis){if(Xi(m))return;if(m instanceof mt&&mw(m),m.__dirty){var y=m.prevStates;y&&m.useStates(y)}if(d){m.stateTransition=p;var _=m.getTextContent(),S=m.getTextGuideLine();_&&(_.stateTransition=p),S&&(S.stateTransition=p)}m.__dirty&&a(m)}})}Yd=function(h){return new((function(c){z(v,c);function v(){return c!==null&&c.apply(this,arguments)||this}return v.prototype.getCoordinateSystems=function(){return h._coordSysMgr.getCoordinateSystems()},v.prototype.getComponentByElement=function(d){for(;d;){var g=d.__ecComponentInfo;if(g!=null)return h._model.getComponent(g.mainType,g.index);d=d.parent}},v.prototype.enterEmphasis=function(d,g){Kl(d,g),oe(h)},v.prototype.leaveEmphasis=function(d,g){Ql(d,g),oe(h)},v.prototype.enterBlur=function(d){sw(d),oe(h)},v.prototype.leaveBlur=function(d){um(d),oe(h)},v.prototype.enterSelect=function(d){lm(d),oe(h)},v.prototype.leaveSelect=function(d){fm(d),oe(h)},v.prototype.getModel=function(){return h.getModel()},v.prototype.getViewOfComponentModel=function(d){return h.getViewOfComponentModel(d)},v.prototype.getViewOfSeriesModel=function(d){return h.getViewOfSeriesModel(d)},v.prototype.getECUpdateCycleVersion=function(){return h[io]},v.prototype.usingTHL=function(){return h._usingTHL},v})(nm))(h)},qy=function(h){function c(v,d){for(var g=0;g=0)){$d.push(r);var o=Ay.wrapStageHandler(r,i);o.__prio=t,o.__raw=r,e.push(o)}}function e0(e,t){Cf[e]=t}function QM(e,t,r){var n=KC("registerMap");n&&n(e,t,r)}var jM=Jb;mn(Xh,IC);mn(Ys,PC);mn(Ys,EC);mn(Xh,WC);mn(Ys,YC);mn(Uy,DM);Jy(sy);t0(PM,Eb);e0("default",RC);fi({type:on,event:on,update:on},Nt);fi({type:Ao,event:Ao,update:Ao},Nt);fi({type:Jo,event:lh,update:Jo,action:Nt,refineEvent:Qh,publishNonRefinedEvent:!0});fi({type:ql,event:lh,update:ql,action:Nt,refineEvent:Qh,publishNonRefinedEvent:!0});fi({type:ts,event:lh,update:ts,action:Nt,refineEvent:Qh,publishNonRefinedEvent:!0});function Qh(e,t,r,n){return{eventContent:{selected:cw(r),isFromClick:t.isFromClick||!1}}}jy("default",{});jy("dark",Ey);function wi(e){return e==null?0:e.length||1}function qd(e){return e}var JM=(function(){function e(t,r,n,i,a,o){this._old=t,this._new=r,this._oldKeyGetter=n||qd,this._newKeyGetter=i||qd,this.context=a,this._diffModeMultiple=o==="multiple"}return e.prototype.add=function(t){return this._add=t,this},e.prototype.update=function(t){return this._update=t,this},e.prototype.updateManyToOne=function(t){return this._updateManyToOne=t,this},e.prototype.updateOneToMany=function(t){return this._updateOneToMany=t,this},e.prototype.updateManyToMany=function(t){return this._updateManyToMany=t,this},e.prototype.remove=function(t){return this._remove=t,this},e.prototype.execute=function(){this[this._diffModeMultiple?"_executeMultiple":"_executeOneToOne"]()},e.prototype._executeOneToOne=function(){var t=this._old,r=this._new,n={},i=new Array(t.length),a=new Array(r.length);this._initIndexMap(t,null,i,"_oldKeyGetter"),this._initIndexMap(r,n,a,"_newKeyGetter");for(var o=0;o1){var f=u.shift();u.length===1&&(n[s]=u[0]),this._update&&this._update(f,o)}else l===1?(n[s]=null,this._update&&this._update(u,o)):this._remove&&this._remove(o)}this._performRestAdd(a,n)},e.prototype._executeMultiple=function(){var t=this._old,r=this._new,n={},i={},a=[],o=[];this._initIndexMap(t,n,a,"_oldKeyGetter"),this._initIndexMap(r,i,o,"_newKeyGetter");for(var s=0;s1&&c===1)this._updateManyToOne&&this._updateManyToOne(f,l),i[u]=null;else if(h===1&&c>1)this._updateOneToMany&&this._updateOneToMany(f,l),i[u]=null;else if(h===1&&c===1)this._update&&this._update(f,l),i[u]=null;else if(h>1&&c>1)this._updateManyToMany&&this._updateManyToMany(f,l),i[u]=null;else if(h>1)for(var v=0;v1)for(var s=0;s30}var xi=H,ur=Y,oD=typeof Int32Array>"u"?Array:Int32Array,sD="e\0\0",Kd=-1,uD=["hasItemOption","_nameList","_idList","_invertedIndicesMap","_dimSummary","userOutput","_rawData","_dimValueGetter","_nameDimIdx","_idDimIdx","_nameRepeatCount"],lD=["_approximateExtent"],Qd,uo,bi,Ci,il,Mi,al,fD=(function(){function e(t,r){this.type="list",this._dimOmitted=!1,this._nameList=[],this._idList=[],this._visual={},this._layout={},this._itemVisuals=[],this._itemLayouts=[],this._graphicEls=[],this._approximateExtent={},this._calculationInfo={},this.hasItemOption=!1,this.TRANSFERABLE_METHODS=["cloneShallow","downSample","minmaxDownSample","lttbDownSample","map"],this.CHANGABLE_METHODS=["filterSelf","selectRange"],this.DOWNSAMPLE_METHODS=["downSample","minmaxDownSample","lttbDownSample"];var n,i=!1;n0(t)?(n=t.dimensions,this._dimOmitted=t.isDimensionOmitted(),this._schema=t):(i=!0,n=t),n=n||["x","y"];for(var a={},o=[],s={},u=!1,l={},f=0;f=r)){var n=this._store,i=n.getProvider();this._updateOrdinalMeta();var a=this._nameList,o=this._idList,s=i.getSource().sourceFormat,u=s===ae;if(u&&!i.pure)for(var l=[],f=t;f0},e.prototype.ensureUniqueItemVisual=function(t,r){var n=this._itemVisuals,i=n[t];i||(i=n[t]={});var a=i[r];return a==null&&(a=this.getVisual(r),B(a)?a=a.slice():xi(a)&&(a=k({},a)),i[r]=a),a},e.prototype.setItemVisual=function(t,r,n){var i=this._itemVisuals[t]||{};this._itemVisuals[t]=i,xi(r)?k(i,r):i[r]=n},e.prototype.clearAllVisual=function(){this._visual={},this._itemVisuals=[]},e.prototype.setLayout=function(t,r){xi(t)?k(this._layout,t):this._layout[t]=r},e.prototype.getLayout=function(t){return this._layout[t]},e.prototype.getItemLayout=function(t){return this._itemLayouts[t]},e.prototype.setItemLayout=function(t,r,n){this._itemLayouts[t]=n?k(this._itemLayouts[t]||{},r):r},e.prototype.clearItemLayouts=function(){this._itemLayouts.length=0},e.prototype.setItemGraphicEl=function(t,r){var n=this.hostModel&&this.hostModel.seriesIndex;qT(n,this.dataType,t,r),this._graphicEls[t]=r},e.prototype.getItemGraphicEl=function(t){return this._graphicEls[t]},e.prototype.eachItemGraphicEl=function(t,r){b(this._graphicEls,function(n,i){n&&t&&t.call(r,n,i)})},e.prototype.cloneShallow=function(t){return t||(t=new e(this._schema?this._schema:ur(this.dimensions,this._getDimInfo,this),this.hostModel)),il(t,this),t._store=this._store,t},e.prototype.wrapMethod=function(t,r){var n=this[t];j(n)&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(t),this[t]=function(){var i=n.apply(this,arguments);return r.apply(this,[i].concat(Xf(arguments)))})},e.internalField=(function(){Qd=function(t){var r=t._invertedIndicesMap;b(r,function(n,i){var a=t._dimInfos[i],o=a.ordinalMeta,s=t._store;if(o){n=r[i]=new oD(o.categories.length);for(var u=0;u1&&(u+="__ec__"+f),i[r]=u}}})(),e})();function hD(e,t){Vh(e)||(e=uy(e)),t=t||{};var r=t.coordDimensions||[],n=t.dimensionsDefine||e.dimensionsDefine||[],i=W(),a=[],o=cD(e,r,n,t.dimensionsCount),s=t.canOmitUnusedDimensions&&a0(o),u=n===e.dimensionsDefine,l=u?i0(e):jh(n),f=t.encodeDefine;!f&&t.encodeDefaulter&&(f=t.encodeDefaulter(e,o));for(var h=W(f),c=new gy(o),v=0;v0&&(M.name=M.name+(C-1))}),new r0({source:e,dimensions:a,fullDimensionCount:o,dimensionOmitted:s})}function cD(e,t,r,n){var i=Math.max(e.dimensionsDetectedCount||1,t.length,r.length,n||0);return b(t,function(a){var o;H(a)&&(o=a.dimsDef)&&(i=Math.max(i,o.length))}),i}function vD(e,t,r){if(r||t.hasKey(e)){for(var n=0;t.hasKey(e+n);)n++;e+=n}return t.set(e,!0),e}var dD=(function(){function e(t){this.coordSysDims=[],this.axisMap=W(),this.categoryAxisMap=W(),this.coordSysName=t}return e})();function pD(e){var t=e.get("coordinateSystem"),r=new dD(t),n=gD[t];if(n)return n(e,r,r.axisMap,r.categoryAxisMap),r}var gD={cartesian2d:function(e,t,r,n){var i=e.getReferringComponents("xAxis",pe).models[0],a=e.getReferringComponents("yAxis",pe).models[0];t.coordSysDims=["x","y"],r.set("x",i),r.set("y",a),En(i)&&(n.set("x",i),t.firstCategoryDimIndex=0),En(a)&&(n.set("y",a),t.firstCategoryDimIndex==null&&(t.firstCategoryDimIndex=1))},singleAxis:function(e,t,r,n){var i=e.getReferringComponents("singleAxis",pe).models[0];t.coordSysDims=["single"],r.set("single",i),En(i)&&(n.set("single",i),t.firstCategoryDimIndex=0)},polar:function(e,t,r,n){var i=e.getReferringComponents("polar",pe).models[0],a=i.findAxisModel("radiusAxis"),o=i.findAxisModel("angleAxis");t.coordSysDims=["radius","angle"],r.set("radius",a),r.set("angle",o),En(a)&&(n.set("radius",a),t.firstCategoryDimIndex=0),En(o)&&(n.set("angle",o),t.firstCategoryDimIndex==null&&(t.firstCategoryDimIndex=1))},geo:function(e,t,r,n){t.coordSysDims=["lng","lat"]},parallel:function(e,t,r,n){var i=e.ecModel,a=i.getComponent("parallel",e.get("parallelIndex")),o=t.coordSysDims=a.dimensions.slice();b(a.parallelAxisIndex,function(s,u){var l=i.getComponent("parallelAxis",s),f=o[u];r.set(f,l),En(l)&&(n.set(f,l),t.firstCategoryDimIndex==null&&(t.firstCategoryDimIndex=u))})},matrix:function(e,t,r,n){var i=e.getReferringComponents("matrix",pe).models[0];t.coordSysDims=["x","y"];var a=i.getDimensionModel("x"),o=i.getDimensionModel("y");r.set("x",a),r.set("y",o),n.set("x",a),n.set("y",o)}};function En(e){return e.get("type")==="category"}function mD(e,t,r){r=r||{};var n=r.byIndex,i=r.stackedCoordDimension,a,o,s;yD(t)?a=t:(o=t.schema,a=o.dimensions,s=t.store);var u=!!(e&&e.get("stack")),l,f,h,c,v=!0;function d(S){return S.type!=="ordinal"&&S.type!=="time"}if(b(a,function(S,T){F(S)&&(a[T]=S={name:S}),d(S)||(v=!1)}),b(a,function(S,T){u&&!S.isExtraCoord&&(!n&&!l&&S.ordinalMeta&&(l=S),!f&&d(S)&&(!v||S.coordDim!=="x"&&S.coordDim!=="angle")&&(!i||i===S.coordDim)&&(f=S))}),f&&!n&&!l&&(n=!0),f){h="__\0ecstackresult_"+e.id,c="__\0ecstackedover_"+e.id,l&&(l.createInvertedIndices=!0);var g=f.coordDim,p=f.type,m=0;b(a,function(S){S.coordDim===g&&m++});var y={name:h,coordDim:g,coordDimIndex:m,type:p,isExtraCoord:!0,isCalculationCoord:!0,storeDimIndex:a.length},_={name:c,coordDim:c,coordDimIndex:m+1,type:p,isExtraCoord:!0,isCalculationCoord:!0,storeDimIndex:a.length+1};o?(s&&(y.storeDimIndex=s.ensureCalculationDimension(c,p),_.storeDimIndex=s.ensureCalculationDimension(h,p)),o.appendCalculationDimension(y),o.appendCalculationDimension(_)):(a.push(y),a.push(_))}return{stackedDimension:f&&f.name,stackedByDimension:l&&l.name,isStackedByIndex:n,stackedOverDimension:c,stackResultDimension:h}}function yD(e){return!n0(e.schema)}function _D(e,t){return!!t&&t===e.getCalculationInfo("stackedDimension")}function SD(e,t){return _D(e,t)?e.getCalculationInfo("stackResultDimension"):t}function TD(e,t){var r=e.get("coordinateSystem"),n=kh.get(r),i;return t&&t.coordSysDims&&(i=Y(t.coordSysDims,function(a){var o={name:a},s=t.axisMap.get(a);if(s){var u=s.get("type");o.type=rD(u)}return o})),i||(i=n&&(n.getDimensionsInfo?n.getDimensionsInfo():n.dimensions.slice())||["x","y"]),i}function wD(e,t,r){var n,i;return r&&b(e,function(a,o){var s=a.coordDim,u=r.categoryAxisMap.get(s);u&&(n==null&&(n=o),a.ordinalMeta=u.getOrdinalMeta(),t&&(a.createInvertedIndices=!0)),a.otherDims.itemName!=null&&(i=!0)}),!i&&n!=null&&(e[n].otherDims.itemName=0),n}function Y2(e,t,r){r=r||{};var n=t.getSourceManager(),i,a=!1;i=n.getSource(),a=i.sourceFormat===ae;var o=pD(t),s=TD(t,o),u=r.useEncodeDefaulter,l=j(u)?u:u?Ct(lb,s,t):null,f={coordDimensions:s,generateCoord:r.generateCoord,encodeDefine:t.getEncode(),encodeDefaulter:l,canOmitUnusedDimensions:!a},h=hD(i,f),c=wD(h.dimensions,r.createInvertedIndices,o),v=a?null:n.getSharedDataStore(h),d=mD(t,{schema:h,store:v}),g=new fD(h,t);g.setCalculationInfo(d);var p=c!=null&&xD(i)?function(m,y,_,S){return S===c?_:this.defaultDimValueGetter(m,y,_,S)}:null;return g.hasItemOption=!1,g.initData(a?i:v,null,p),g}function xD(e){if(e.sourceFormat===ae){var t=bD(e.data||[]);return!B(wa(t))}}function bD(e){for(var t=0;t=t[0]&&e<=t[1]},getExtent:function(){return this._extents[me].slice()},getExtentUnsafe:function(e){return this._extents[e]},setExtent:function(e,t){jd(this._extents,me,e,t)},setExtent2:function(e,t,r){var n=this._extents;n[e]||(n[e]=n[me].slice()),jd(n,e,t,r)},freeze:function(){}};function jd(e,t,r,n){jn(r,n)&&(e[t][0]=r,e[t][1]=n)}function l0(e){return cs(e)||ni(e)}function cs(e){return e.type==="interval"}function tc(e){return e.type==="time"}function ni(e){return e.type==="log"}function Xe(e){return e.type==="ordinal"}function ED(e){var t=jf(e),r=dn(10,t),n=er(e/r);return n?n===2?n=3:n===3?n=5:n*=2:n=1,at(n*r,-t)}function cn(e){return dr(e)+2}function lo(e,t){return ra(e)/ra(t)}function ol(e,t,r){var n=r&&r.lookup;if(n){for(var i=0;i1&&a/o>2&&(i=Math.round(Math.ceil(i/o)*o)),i!==n[0]&&u(n[0],!0,!0);for(var s=i;s<=n[1];s+=o)u(s,!1,s===n[0]||s===n[1]);s-o!==n[1]&&u(n[1],!0,!0);function u(l,f,h){r({value:l,offInterval:f},h)}}var c0=(function(e){z(t,e);function t(r){var n=e.call(this)||this;n.type="ordinal",n.parse=t.parse,s0(n,t.decoratedMethods);var i=r.ordinalMeta;i||(i=new Mf({})),B(i)&&(i=new Mf({categories:Y(i,function(o){return H(o)?o.value:o})})),n._ordinalMeta=i;var a=Jh(null,null,r.extent||[0,i.categories.length-1]);return n._mapper=a.mapper,u0(n),n}return t.parse=function(r){return r==null?r=NaN:F(r)?(r=this._ordinalMeta.getOrdinal(r),r==null&&(r=NaN)):r=er(r),r},t.prototype.getTicks=function(){var r=[];return h0(this,0,function(n){r.push(n)}),r},t.prototype.getMinorTicks=function(r){},t.prototype.setSortInfo=function(r){if(r==null){this._ordinalNumbersByTick=this._ticksByOrdinalNumber=null;return}for(var n=r.ordinalNumbers,i=this._ordinalNumbersByTick=[],a=this._ticksByOrdinalNumber=[],o=0,s=this._ordinalMeta.categories.length,u=ne(s,n.length);o=0&&r=0&&r=0&&ro[0]&&go[1]||!isFinite(g)||!isFinite(o[1]))break}else{if(p>d)break;g=ne(g,o[1]),p===d&&(g=o[1])}if(h.push({value:g}),g=at(g+i,s),l){var m=l.calcNiceTickMultiple(g,v);m>=0&&(g=at(g+m*i,s))}if(h.length>0&&g===h[h.length-1].value)break;if(h.length>c)return[]}var y=h.length?h[h.length-1].value:o[1];return a[1]>y&&h.push({value:r.expandToNicedExtent?at(y+i,s):a[1]}),h},t.prototype.getMinorTicks=function(r){return rc(this,r,Mh(this),this._cfg.interval)},t.prototype.getLabel=function(r,n){if(r==null)return"";var i=n&&n.precision;i==null?i=dr(r.value)||0:i==="auto"&&(i=this._cfg.intervalPrecision);var a=at(r.value,i,!0);return $m(a)},t.type="interval",t})(Me);Me.registerClass($n);var OD=function(e,t,r,n){for(;r>>1;e[i][1]16?16:e>7.5?7:e>3.5?4:e>1.5?2:1}function ND(e){var t=30*ge;return e/=t,e>6?6:e>3?3:e>2?2:1}function FD(e){return e/=Zi,e>12?12:e>6?6:e>3.5?4:e>2?2:1}function Jd(e,t){return e/=t?Ah:Dh,e>30?30:e>20?20:e>15?15:e>10?10:e>5?5:e>2?2:1}function zD(e){return ht(Jf(e,!0),1)}function HD(e,t,r){var n=Math.max(0,st(sn,t)-1);return uf(new Date(e),sn[n],r).getTime()}function VD(e,t){var r=new Date(0);r[e](1);var n=r.getTime();r[e](1+t);var i=r.getTime()-n;return function(a,o){return Math.max(0,Math.round((o-a)/i))}}function GD(e,t,r,n,i,a){var o=3e3,s=Gx,u=0;function l(R,N,X,$,J,q,tt){for(var et=VD(J,R),V=N,it=new Date(V);Vo));)if(it[J](it[$]()+R),V=it.getTime(),a){var ut=a.calcNiceTickMultiple(V,et);ut>0&&(it[J](it[$]()+ut*R),V=it.getTime())}tt.push({value:V,notAdd:V>n[1]})}function f(R,N,X){var $=[],J=!N.length;if(!kD($i(R),n[0],n[1],r)){J&&(N=[{value:HD(n[0],R,r)},{value:n[1]}]);for(var q=0;q=n[0]&&tt<=n[1]&&l(V,tt,et,it,ut,jt,$),R==="year"&&X.length>1&&q===0&&X.unshift({value:X[0].value-V})}}for(var q=0;q<$.length;q++)X.push($[q])}}for(var h=[],c=[],v=0,d=0,g=0;g=n[0]&&S<=n[1]&&v++)}var T=i/t;if(v>T*1.5&&d>T/1.5||(h.push(y),v>T||e===s[g]))break}c=[]}}}for(var w=kt(Y(h,function(R){return kt(R,function(N){return N.value>=n[0]&&N.value<=n[1]&&!N.notAdd})}),function(R){return R.length>0}),x=w.length-1,D=[],g=0;gn[0])&&D.unshift({value:n[0],time:{level:0,upperTimeUnit:P,lowerTimeUnit:P},notNice:!0}),(!L||L.values&&(a=s);var u=fo.length,l=Math.min(OD(fo,a,0,u),u-1),f=fo[l][1],h=fo[Math.max(l-1,0)][0];e.setTimeInterval({approxInterval:a,interval:f,minLevelUnit:h})};Me.registerClass(v0);var ho=0,co=1,d0=(function(e){z(t,e);function t(r){var n=e.call(this)||this;n.type="log",n.parse=$n.parse,n.base=r.logBase||10;var i=[],a=[];n._lookup={from:i,to:a},i[ho]=i[co]=a[ho]=a[co]=NaN,s0(n,t.mapperMethods),r.breakOption;var o={};return n.powStub=new $n({breakParsed:o.original}),n.intervalStub=new $n({breakParsed:o.transformed}),u0(n,n.intervalStub),n}return t.prototype.getTicks=function(r){var n=this.base,i=this.powStub,a=this.intervalStub,o=a.getExtent(),s=i.getExtent(),u={lookup:{from:o,to:s}};return Y(a.getTicks(r||{}),function(l){var f=l.value,h=ol(f,n,u),c;return{value:h,break:c}},this)},t.prototype.getMinorTicks=function(r){return rc(this,r,Mh(this.powStub),this.intervalStub.getConfig().interval)},t.prototype.getLabel=function(r,n){return this.intervalStub.getLabel(r,n)},t.type="log",t.mapperMethods={needTransform:function(){return!0},normalize:function(r){return this.intervalStub.normalize(lo(r,this.base))},scale:function(r){return ol(this.intervalStub.scale(r),this.base,null)},transformIn:function(r,n){return r=lo(r,this.base),n&&n.depth===fs?r:this.intervalStub.transformIn(r,n)},transformOut:function(r,n){var i=n?n.depth:null;return tp.depth=i,ep.lookup=this._lookup,ol(i===fs?r:this.intervalStub.transformOut(r,tp),this.base,ep)},contain:function(r){return this.powStub.contain(r)},setExtent:function(r,n){this.setExtent2(me,r,n)},setExtent2:function(r,n,i){if(!(!jn(n,i)||n<=0||i<=0)){var a=rp,o=rp;if(r===me){var s=this._lookup;a=s.to,o=s.from}this.powStub.setExtent2(r,a[ho]=n,a[co]=i);var u=this.base;this.intervalStub.setExtent2(r,o[ho]=lo(n,u),o[co]=lo(i,u))}},getFilter:function(){return{g:0}},sanitize:function(r,n){return jn(n[0],n[1])&&Ge(r)&&r<=0&&(r=n[0]),r},getDefaultStartValue:function(){return 1},getExtent:function(){return this.powStub.getExtent()},getExtentUnsafe:function(r,n){return n===null?this.powStub.getExtentUnsafe(r,null):this.intervalStub.getExtentUnsafe(r,n)}},t})(Me);Me.registerClass(d0);var tp={},ep={},rp=[],p0={value:1,category:1,time:1,log:1},g0=vt();function WD(e){var t=e.get("type");return(t==null||!qt(p0,t)&&!Me.getClass(t))&&(t="value"),t}function YD(e,t,r){var n;switch(t){case"category":return new c0({ordinalMeta:e.getOrdinalMeta?e.getOrdinalMeta():e.getCategories(),extent:Ee()});case"time":return new v0({locale:e.ecModel.getLocaleModel(),useUTC:e.ecModel.get("useUTC"),breakOption:n});case"log":return new d0({logBase:e.get("logBase"),breakOption:n});case"value":return new $n({breakOption:n});default:return new(Me.getClass(t)||$n)({})}}function XD(e,t,r){var n=e.getExtentUnsafe(me,null),i=n[0],a=n[1];return jn(i,a)?i===t||a===t?$D:it?ZD:Df:Df}var ZD=1,$D=2,Df=3;function qD(e){g0(e).noOnMyZero=!0}function KD(e){return g0(e).noOnMyZero}function Zs(e){var t=e.getLabelModel().get("formatter");if(e.type==="time"){var r=Ux(t);return function(i,a){return e.scale.getFormattedLabel(i,a,r)}}else{if(F(t))return function(i){var a=e.scale.getLabel(i),o=t.replace("{value}",a??"");return o};if(j(t)){if(e.type==="category")return function(i,a){return t(vs(e,i),i.value-e.scale.getExtent()[0],null)};var n=Hs();return function(i,a){var o=null;return n&&(o=n.makeAxisLabelFormatterParamBreak(o,i.break)),t(vs(e,i),a,o)}}else return function(i){return e.scale.getLabel(i)}}}function vs(e,t){var r=e.scale;return Xe(r)?r.getLabel(t):t.value}function nc(e){var t=e.get("interval");return t??"auto"}function QD(e){return e.type==="category"&&nc(e.getLabelModel())===0}function jD(e,t){var r={};return b(e.mapDimensionsAll(t),function(n){r[SD(e,n)]=!0}),gt(r)}function ii(e){return e==="middle"||e==="center"}function da(e){return e.getShallow("show")}function JD(e,t,r){var n=e.get("breaks",!0);n==null}function m0(e,t,r,n,i,a){var o=ni(e),s=o?e.intervalStub:e;if(s.setExtent(n[0],n[1]),o){var u=e.powStub,l={depth:fs},f=e.transformOut(n[0],l),h=e.transformOut(n[1],l),c=RD(r,n);t[0]&&!c[0]&&(f=i[0]),t[1]&&!c[1]&&(h=i[1]),u.setExtent(f,h)}s.setConfig(a)}function $s(e,t){return Xe(e)?e.getRawOrdinalNumber(t.value):t.value}function y0(e,t){return Xe(e)&&!!t.get("boundaryGap")}var tA=(function(){function e(){}return e.prototype.needIncludeZero=function(){return!this.option.scale},e.prototype.getCoordSysModel=function(){},e})(),eA=YS(),np="|&",hi=vt(),rA=-2,X2=-1,nA=vt();function _0(e,t){var r=e.model,n=hi(li(r.ecModel)).keyed,i=n&&n.get(t);return i&&i.get(r.uid)}function iA(e,t){return T0(_0(e,t))}function aA(e,t){var r=[];return S0(e.model.ecModel,function(n){for(var i=0;i0&&h[1]>0&&!c[0]&&(h[0]=0),h[0]<0&&h[1]<0&&!c[1]&&(h[1]=0));var S=!1;h[0]>h[1]&&(h.reverse(),S=!0);var T=Di(t,r.get("startValue",!0)),w=T!=null;!Ge(T)&&i&&(T=t.getDefaultStartValue?t.getDefaultStartValue():0),Ge(T)&&(w||!y||_)&&(Th[1]&&!c[1]&&(h[1]=T,c[1]=!0));var x=this._i={scale:t,dataMM:f,noZoomEffMM:h,zoomMM:[],fixMM:c,zoomFixMM:[!1,!1],startValue:T,isBlank:m,incl0:_,tggAxInv:S,ctnShp:a};ap(x,h)}return e.prototype.makeNoZoom=function(){return this._i.noZoomEffMM.slice()},e.prototype.makeFinal=function(){var t=this._i,r=t.zoomMM,n=t.noZoomEffMM,i=t.zoomFixMM,a=t.fixMM,o={fixMM:a,zoomFixMM:i,isBlank:t.isBlank,incl0:t.incl0,tggAxInv:t.tggAxInv,ctnShp:t.ctnShp,effMM:n.slice()},s=o.effMM;return r[0]!=null&&(s[0]=r[0],a[0]=i[0]=!0),r[1]!=null&&(s[1]=r[1],a[1]=i[1]=!0),ap(t,s),o},e.prototype.makeRenderInfo=function(){return{startValue:this._i.startValue}},e.prototype.setZoomMM=function(t,r){this._i.zoomMM[t]=r},e})();function ap(e,t){var r=e.scale,n=e.dataMM;r.sanitize&&(t[0]=r.sanitize(t[0],n),t[1]=r.sanitize(t[1],n),WS(t))}function Di(e,t){return t==null?null:ea(t)?NaN:e.parse(t)}function hA(e,t){var r;if(Xe(e))r=[0,0];else{var n=t.get("boundaryGap");typeof n=="boolean"&&(n=null),r=B(n)?n:[n,n]}return[op(r[0]),op(r[1])]}function op(e){return Qn(typeof e=="boolean"?0:e,1)||0}function M0(e){var t=uA(e.scale);return t.extent||(t.extent=Ee()),t}function cA(e,t){M0(e).dimIdxInCoord=t.get(e.dim)}function vA(e,t){var r=e.scale,n=e.model,i=e.dim;r.rawExtentInfo||dA(r,e,i,n,t)}function dA(e,t,r,n,i){var a=M0(t),o=a.extent,s=!1;oA(t,function(f){if(f.boxCoordinateSystem){var h=Jm(f).coord,c=a.dimIdxInCoord;if(c>=0){if(B(h)){var v=h[c];v!=null&&!B(v)&&VS(o,e.parse(v))}}}else if(f.coordinateSystem){var d=f.getData();if(d){var g=e.getFilter?e.getFilter():null;b(jD(d,r),function(p){GS(o,d.getApproximateExtent(p,g))})}f.__requireStartValue&&f.__requireStartValue(t)&&(s=!0)}});var u=gA(e,t,n),l=new C0(e,n,o,s,u);D0(e,l,i),a.extent=null}function pA(e,t){var r=e.scale;D0(r,new C0(r,e.model,t,!1,!1),fA)}function D0(e,t,r){e.rawExtentInfo=t,t.from=r}function j2(e,t){ic.set(e,t)}var ic=W();function A0(e,t,r,n,i){e.rawExtentInfo||pA({scale:e,model:t},Ee());var a=e.rawExtentInfo.makeFinal(),o=a.effMM;return e.setExtent(o[0],o[1]),e.setBlank(a.isBlank),n&&a.tggAxInv&&r&&!r.get("legacyMinMaxDontInverseAxis")&&(n.inverse=!n.inverse),a}function gA(e,t,r){var n=y0(e,r),i=r.get("containShape",!0);if(i==null&&!n&&(i=!0),!i)return!1;var a=!1;return x0(t,function(o){a=!!ic.get(o)||a}),a}function mA(e,t,r,n){if(r.ctnShp){var i;if(x0(e,function(s){var u=ic.get(s);if(u){var l=u(e,n);l&&(i=i||[0,0],Vg(i,l[0]),Gg(i,l[1]),qD(e))}}),!!i){var a=t.getExtent();if(Xe(t))e.onBand||t.setExtent2(ca,ne(a[0],a[0]+i[0]),ht(a[1],a[1]+i[1]));else{var o=a.slice();r.zoomFixMM[0]||(o[0]=ne(o[0],t.transformOut(t.transformIn(o[0],null)+i[0],null))),r.zoomFixMM[1]||(o[1]=ht(o[1],t.transformOut(t.transformIn(o[1],null)+i[1],null))),(o[0]a[1])&&t.setExtent2(ca,o[0],o[1])}}}}function sp(e,t){var r=ni(e),n=r?e.intervalStub:e,i=t.fixMinMax||[],a=r?e.getExtent():null,o=n.getExtent(),s=f0(o,i,t.rawExtentResult);n.setExtent(s[0],s[1]),s=n.getExtent();var u=r?_A(n,t):yA(n,t),l=u.intervalPrecision,f=u.interval,h=t.userInterval;h!=null&&(u.interval=h,u.intervalPrecision=cn(h)),i[0]||(s[0]=at(ln(s[0]/f)*f,l)),i[1]||(s[1]=at(Ta(s[1]/f)*f,l)),h!=null&&(u.niceExtent=s.slice()),m0(e,i,o,s,a,u)}function yA(e,t){var r=ec(t.splitNumber,5),n=Xs(e),i=t.minInterval,a=t.maxInterval,o=Jf(n/r,!0);i!=null&&oa&&(o=a);var s=cn(o),u=e.getExtent(),l=[at(Ta(u[0]/o)*o,s),at(ln(u[1]/o)*o,s)];return{interval:o,intervalPrecision:s,niceExtent:l}}function _A(e,t){var r=ec(t.splitNumber,10),n=e.getExtent(),i=Xs(e),a=ht(Og(i),1),o=r/i*a;o<=.5&&(a*=10);var s=cn(a),u=[at(Ta(n[0]/a)*a,s),at(ln(n[1]/a)*a,s)];return{intervalPrecision:s,interval:a,niceExtent:u}}function up(e){var t=e.scale,r=e.model,n=r.axis,i=r.ecModel;SA(t,r,n,i)}function SA(e,t,r,n,i){var a=A0(e,t,n,r),o=cs(e)||tc(e);TA(e,{splitNumber:t.get("splitNumber"),fixMinMax:a.fixMM,userInterval:t.get("interval"),minInterval:o?t.get("minInterval"):null,maxInterval:o?t.get("maxInterval"):null,rawExtentResult:a}),r&&n&&mA(r,e,a,n)}function TA(e,t){wA[e.type](e,t)}var wA={interval:sp,log:sp,time:UD,ordinal:Nt},lp=[],xA={registerPreprocessor:Jy,registerProcessor:t0,registerPostInit:ZM,registerPostUpdate:$M,registerUpdateLifecycle:qh,registerAction:fi,registerCoordinateSystem:qM,registerLayout:KM,registerVisual:mn,registerTransform:jM,registerLoading:e0,registerMap:QM,registerImpl:qC,PRIORITY:HM,ComponentModel:ft,ComponentView:Ue,SeriesModel:hn,ChartView:un,registerComponentModel:function(e){ft.registerClass(e)},registerComponentView:function(e){Ue.registerClass(e)},registerSeriesModel:function(e){hn.registerClass(e)},registerChartView:function(e){un.registerClass(e)},registerCustomSeries:function(e,t){},registerSubTypeDefaulter:function(e,t){ft.registerSubTypeDefaulter(e,t)},registerPainter:function(e,t){hS(e,t)}};function vn(e){if(B(e)){b(e,function(t){vn(t)});return}st(lp,e)>=0||(lp.push(e),j(e)&&(e={install:e}),e.install(xA))}var bA=vt(),ji=vt(),xe={estimate:1,determine:2};function ds(e){return{out:{noPxChangeTryDetermine:[]},kind:e}}function CA(e,t){var r=e.getLabelModel().get("customValues");if(r){var n=e.scale;return{labels:Y(L0(r,n),function(i,a){return{formattedLabel:Zs(e)(i,a),rawLabel:n.getLabel(i),tick:i}})}}return e.type==="category"?DA(e,t):LA(e)}function MA(e,t,r){var n=e.scale,i=e.getTickModel().get("customValues");return i?{ticks:L0(i,n)}:e.type==="category"?AA(e,t):{ticks:n.getTicks(r)}}function L0(e,t){var r=t.getExtent(),n=[];return b(e,function(i){i=t.parse(i),i>=r[0]&&i<=r[1]&&n.push(i)}),nh(n,$S,null),Eg(n),Y(n,function(i){return{value:i}})}function DA(e,t){var r=e.getLabelModel(),n=I0(e,r,t);return!r.get("show")||e.scale.isBlank()?{labels:[]}:n}function I0(e,t,r){var n=PA(e),i=nc(t),a=r.kind===xe.estimate;if(!a){var o=E0(n,i);if(o)return o}var s,u;j(i)?s=ps(e,i,!1):(u=i==="auto"?EA(e,r):i,s=ps(e,u,!1));var l={labels:s,labelCategoryInterval:u};return a?r.out.noPxChangeTryDetermine.push(function(){return If(n,i,l),!0}):If(n,i,l),l}function AA(e,t){var r=IA(e),n=nc(t),i=E0(r,n);if(i)return i;var a,o;if((!t.get("show")||e.scale.isBlank())&&(a=[]),j(n))a=ps(e,n,!0);else if(n==="auto"){var s=I0(e,e.getLabelModel(),ds(xe.determine));o=s.labelCategoryInterval,a=Y(s.labels,function(u){return u.tick})}else o=n,a=ps(e,o,!0);return If(r,n,{ticks:a,tickCategoryInterval:o})}function LA(e){var t=e.scale.getTicks(),r=Zs(e);return{labels:Y(t,function(n,i){return{formattedLabel:r(n,i),rawLabel:e.scale.getLabel(n),tick:n}})}}var IA=P0("axisTick"),PA=P0("axisLabel");function P0(e){return function(r){return ji(r)[e]||(ji(r)[e]={list:[]})}}function E0(e,t){for(var r=0;rf&&(l=Math.max(1,Math.floor(u/f)));for(var h=s[0],c=e.dataToCoord(h+1)-e.dataToCoord(h),v=Math.abs(c*Math.cos(a)),d=Math.abs(c*Math.sin(a)),g=0,p=0;h<=s[1];h+=l){var m=0,y=0,_=Dg(i({value:h}),n.font,"center","top");m=_.width*1.3,y=_.height*1.3,g=Math.max(g,m,7),p=Math.max(p,y,7)}var S=g/v,T=p/d;isNaN(S)&&(S=1/0),isNaN(T)&&(T=1/0);var w=Math.max(0,Math.floor(Math.min(S,T)));if(r===xe.estimate)return t.out.noPxChangeTryDetermine.push(_t(OA,null,e,w,u)),w;var x=R0(e,w,u);return x??w}function OA(e,t,r){return R0(e,t,r)==null}function R0(e,t,r){var n=bA(e.model),i=e.getExtent(),a=n.lastAutoInterval,o=n.lastTickCount;if(a!=null&&o!=null&&Math.abs(a-t)<=1&&Math.abs(o-r)<=1&&a>t&&n.axisExtent0===i[0]&&n.axisExtent1===i[1])return a;n.lastTickCount=r,n.lastAutoInterval=t,n.axisExtent0=i[0],n.axisExtent1=i[1]}function kA(e){var t=e.getLabelModel();return{axisRotate:e.getRotate?e.getRotate():e.isHorizontal&&!e.isHorizontal()?90:0,labelRotate:t.get("rotate")||0,font:t.getFont()}}function ps(e,t,r){var n=Zs(e),i=e.scale,a=[],o=j(t);return h0(i,o?0:t,function(s,u){var l=i.getLabel(s);if(o){var f=!!t(s.value,l);if(s.offInterval=!f,!f&&!u)return}a.push(r?s:{formattedLabel:n(s),rawLabel:l,tick:s})}),a}var BA=.8;function qs(e,t){t=t||{};var r={w:NaN,w2:NaN},n=e.scale,i=t.fromStat,a=t.min,o=LD(n);Ge(o)||(o=NaN);var s=e.getExtent(),u=Lt(s[1]-s[0]);return Xe(n)?NA(r,e,o,u):i&&FA(r,e,o,u,i),a!=null&&(r.w=Ge(r.w)?ht(a,r.w):a),r}function NA(e,t,r,n){var i=t.onBand,a=r+(i?1:0);a===0&&(a=1),e.w=n/a,!i&&r&&n&&(e.w2=e.w*r/n)}function FA(e,t,r,n,i){var a=!1,o=-1/0;b(i.key?[iA(t,i.key)]:aA(t,i.sers||[]),function(s){var u=s.liPosMinGap;u!=null&&(u>0?(u>o&&(o=u),a=!1):u===rA&&(a=!0))}),Ge(r)&&r>0&&Ge(o)?(e.w=n/r*o,e.w2=o):a&&(e.w=n*BA,e.w2=e.w*r/n)}var fp=[0,1],zA=(function(){function e(t,r,n){this.onBand=!1,this.inverse=!1,this.dim=t,this.scale=r,this._extent=n||[0,0]}return e.prototype.contain=function(t){var r=this._extent,n=Math.min(r[0],r[1]),i=Math.max(r[0],r[1]);return t>=n&&t<=i},e.prototype.containData=function(t){return this.scale.contain(this.scale.parse(t))},e.prototype.getExtent=function(){return this._extent.slice()},e.prototype.setExtent=function(t,r){var n=this._extent;n[0]=t,n[1]=r},e.prototype.dataToCoord=function(t,r){var n=this.scale;return t=n.normalize(n.parse(t)),qc(t,fp,hp(this),r)},e.prototype.coordToData=function(t,r){var n=qc(t,hp(this),fp,r);return this.scale.scale(n)},e.prototype.pointToData=function(t,r){},e.prototype.getTicksCoords=function(t){t=t||{};var r=t.tickModel||this.getTickModel(),n=MA(this,r,{breakTicks:t.breakTicks,pruneByBreak:t.pruneByBreak}),i=Y(n.ticks,function(s){return{coord:this.dataToCoord($s(this.scale,s)),tick:s}},this),a=r.get("alignWithLabel"),o=HA(this,i,a);return Y(i,function(s){return{coord:s.coord,tickValue:s.tick.value,onBand:o}})},e.prototype.getMinorTicksCoords=function(){if(Xe(this.scale))return[];var t=this.model.getModel("minorTick"),r=t.get("splitNumber");r>0&&r<100||(r=5);var n=this.scale.getMinorTicks(r),i=Y(n,function(a){return Y(a,function(o){return{coord:this.dataToCoord(o),tickValue:o}},this)},this);return i},e.prototype.getViewLabels=function(t){return t=t||ds(xe.determine),CA(this,t).labels},e.prototype.getLabelModel=function(){return this.model.getModel("axisLabel")},e.prototype.getTickModel=function(){return this.model.getModel("axisTick")},e.prototype.getBandWidth=function(){return qs(this,{min:1}).w},e.prototype.calculateCategoryInterval=function(t){return t=t||ds(xe.determine),RA(this,t)},e})();function hp(e){var t=e.getExtent();if(e.onBand){var r=t[1]-t[0],n=r/e.scale.count()/2;t[0]+=n,t[1]-=n}return t}function HA(e,t,r){var n=t.length;if(!e.onBand||r||!n)return!1;var i=qs(e).w;if(!i)return!1;b(t,function(s){s.coord-=i/2});var a=e.scale.getExtent(),o=t[n-1];return o.tick.offInterval&&t.pop(),t.push({coord:o.coord+i,tick:{value:a[1]+1}}),!0}var cp=["label","labelLine","layoutOption","priority","defaultAttr","marginForce","minMarginForce","marginDefault","suggestIgnore"],VA=1,gs=2,O0=VA|gs;function ms(e,t,r){r=r||O0,t?e.dirty|=r:e.dirty&=~r}function k0(e,t){return t=t||O0,e.dirty==null||!!(e.dirty&t)}function Cr(e){if(e)return k0(e)&&GA(e,e.label,e),e}function GA(e,t,r){var n=t.getComputedTransform();e.transform=wh(e.transform,n);var i=e.localRect=oa(e.localRect,t.getBoundingRect()),a=t.style,o=a.margin,s=r&&r.marginForce,u=r&&r.minMarginForce,l=r&&r.marginDefault,f=a.__marginType;f==null&&l&&(o=l,f=Vn.textMargin);for(var h=0;h<4;h++)sl[h]=f===Vn.minMargin&&u&&u[h]!=null?u[h]:s&&s[h]!=null?s[h]:o?o[h]:0;f===Vn.textMargin&&es(i,sl,!1,!1);var c=e.rect=oa(e.rect,i);return n&&c.applyTransform(n),f===Vn.minMargin&&es(c,sl,!1,!1),e.axisAligned=Th(n),(e.label=e.label||{}).ignore=t.ignore,ms(e,!1),ms(e,!0,gs),e}var sl=[0,0,0,0];function UA(e,t,r){return e.transform=wh(e.transform,r),e.localRect=oa(e.localRect,t),e.rect=oa(e.rect,t),r&&e.rect.applyTransform(r),e.axisAligned=Th(r),e.obb=void 0,(e.label=e.label||{}).ignore=!1,e}function WA(e,t){if(e){e.label.x+=t.x,e.label.y+=t.y,e.label.markRedraw();var r=e.transform;r&&(r[4]+=t.x,r[5]+=t.y);var n=e.rect;n&&(n.x+=t.x,n.y+=t.y);var i=e.obb;i&&i.fromBoundingRect(e.localRect,r)}}function vp(e,t){for(var r=0;r0){S(C*M,0,a);var A=C+x;A<0&&T(-A*M,1)}else T(-x*M,1)}}function S(x,D,M){x!==0&&(f=!0);for(var C=D;C0)for(var A=0;A0;A--){var E=M[A-1]*P;S(-E,A,a)}}}function w(x){var D=x<0?-1:1;x=Math.abs(x);for(var M=Math.ceil(x/(a-1)),C=0;C0?S(M,0,C+1):S(-M,a-C-1,a),x-=M,x<=0)return}return f}function YA(e){var t=[];e.sort(function(l,f){return(f.suggestIgnore?1:0)-(l.suggestIgnore?1:0)||f.priority-l.priority});function r(l){if(!l.ignore){var f=l.ensureState("emphasis");f.ignore==null&&(f.ignore=!1)}l.ignore=!0}for(var n=0;n(r[n]=t(n),r),{})}function $A(e,t,r){yo([r,e,t],([n,i,a],o,s)=>{let u=null;if(n&&i&&a){const{offsetWidth:l,offsetHeight:f}=n,{throttle:h=100,onResize:c}=a===!0?{}:a;let v=!1;const d=()=>{i.resize(),c==null||c()},g=h?Wh(d,h):d;u=new ResizeObserver(()=>{!v&&(v=!0,n.offsetWidth===l&&n.offsetHeight===f)||n.offsetWidth===0||n.offsetHeight===0||g()}),u.observe(n)}s(()=>{u&&(u.disconnect(),u=null)})})}const qA={autoresize:[Boolean,Object]},KA=Symbol();function QA(e,t,r){const n=_o(KA,{}),i=Pi(()=>({...So(n),...r==null?void 0:r.value}));tg(()=>{const a=e.value;a&&(t.value?a.showLoading(i.value):a.hideLoading())})}const jA={loading:Boolean,loadingOptions:Object};function B0(){return typeof window<"u"&&typeof document<"u"}const JA=/^on[^a-z]/,N0=e=>JA.test(e);function tL(e){const t={};for(const r in e)N0(r)||(t[r]=e[r]);return t}function eL(e){const t=Number(e);return Number.isInteger(t)&&t>=0&&te===t||e.startsWith(t+"-"))}function iL(e,t){const r=B0()?document.createElement("div"):void 0,n=Ks({}),i=Ks({}),a=Ks({}),o=Sl(!1),s=()=>o.value&&r?_l(x_,{to:r},Object.entries(e).filter(([h])=>ul(h)).map(([h,c])=>{const v=h;return _l("div",{ref:d=>{d instanceof HTMLElement&&(n[v]=d)},style:{display:"contents"}},i[v]?c==null?void 0:c(a[v]):void 0)})):void 0;function u(h){return h!==null&&typeof h=="object"&&!Array.isArray(h)}function l(h){const c={...h},v=(d,g)=>{const p=d[g];if(Array.isArray(p))return d[g]=[...p],d[g];if(u(p))return d[g]={...p},d[g];if(p===void 0)return d[g]=eL(g)?[]:{},d[g]};return Object.keys(e).filter(d=>ul(d)).forEach(d=>{const[g,...p]=d.split("-"),m=z0[g];if(!m)return;const y=[...p,...m];if(y.length===0)return;let _=c;for(let S=0;S(i[d]=!0,a[d]=S,n[d])}),c}let f=[];return T_(()=>{const h=Object.keys(e).filter(ul);rL(h,f)||(f.forEach(c=>{h.includes(c)||(delete a[c],delete i[c],delete n[c])}),f=h,t())}),eg(()=>{o.value=!0}),w_(()=>{r==null||r.remove()}),{teleportedSlots:s,patchOption:l}}let lr=null;const Pf="x-vue-echarts";function aL(){if(lr!=null)return lr;const e=globalThis.customElements;if(!B0()||!(e!=null&&e.get))return lr=!1,lr;if(!e.get(Pf))try{class t extends HTMLElement{constructor(){super(...arguments);cc(this,"__dispose",null)}disconnectedCallback(){this.__dispose&&(this.__dispose(),this.__dispose=null)}}e.define(Pf,t)}catch{return lr=!1,lr}return lr=!0,lr}function oL(e){if(!F0(e))return;const t=e.id;if(typeof t=="string")return t;if(typeof t=="number"&&Number.isFinite(t))return String(t)}function pp(e){const t=e,r=Array.isArray(t.options)?t.options.length:0,n=Array.isArray(t.media)?t.media.length:0,i=Object.create(null),a=[],o=[];for(const s of Object.keys(t)){if(s==="options"||s==="media")continue;const u=t[s];if(Array.isArray(u)){const l=u,f=new Set;let h=0;for(let c=0;c0?Array.from(f).sort():[],noIdCount:h}}else F0(u)?a.push(s):u!==void 0&&o.push(s)}return a.length>1&&a.sort(),o.length>1&&o.sort(),{optionsLength:r,mediaLength:n,arrays:i,objects:a,scalars:o}}function gp(e,t){if(e.length===0)return[];if(t.length===0)return e.slice();const r=new Set(t),n=[];for(let i=0;i0)return{option:t,signature:r,plan:{notMerge:!0}};const n=new Set,i=new Map,a=gp(e.objects,r.objects);for(let l=0;l0||f.noIdCount>0)&&(i.set(l,[]),n.add(l));continue}if(sL(f.idsSorted,h.idsSorted)){n.add(l);continue}h.noIdCount0){const l={...t};i.forEach((f,h)=>{l[h]=f}),o=l,s=pp(o)}const u=n.size>0?Array.from(n).sort():void 0;return{option:o,signature:s,plan:u?{notMerge:!1,replaceMerge:u}:{notMerge:!1}}}var mp=`x-vue-echarts{display:block;width:100%;height:100%;min-width:0;} +x-vue-echarts>:first-child,x-vue-echarts>:first-child>canvas{border-radius:inherit;} +`;if(typeof document<"u")if(Array.isArray(document.adoptedStyleSheets)&&"replaceSync"in CSSStyleSheet.prototype){const e=new CSSStyleSheet;e.replaceSync(mp),document.adoptedStyleSheets=[...document.adoptedStyleSheets,e]}else{const e=document.createElement("style");e.textContent=mp,document.head.appendChild(e)}const lL=aL(),fL=Symbol(),hL=Symbol(),cL=Symbol();var vL=m_({name:"Echarts",inheritAttrs:!1,props:{option:Object,theme:{type:[Object,String]},initOptions:Object,updateOptions:Object,group:String,manualUpdate:Boolean,...qA,...jA},emits:{},slots:Object,setup(e,{attrs:t,expose:r,slots:n}){const i=Sl(),a=Sl(),o=_o(fL,null),s=_o(hL,null),u=_o(cL,null),{autoresize:l,manualUpdate:f,loading:h,loadingOptions:c}=y_(e),v=Pi(()=>e.theme||So(o)),d=Pi(()=>e.initOptions||So(s)||void 0),g=Pi(()=>e.updateOptions||So(u)),p=Pi(()=>tL(t)),m={},y=new Map,{teleportedSlots:_,patchOption:S}=iL(n,()=>{!f.value&&e.option&&a.value&&x(a.value,e.option)});let T;function w(I){const L={},P=((I==null?void 0:I.replaceMerge)??[]).filter(E=>E!=null);return P.length>0&&(L.replaceMerge=[...new Set(P)]),(I==null?void 0:I.notMerge)!==void 0&&(L.notMerge=I.notMerge),L}function x(I,L,P,E=!1){const R=S(L);if(E){I.setOption(R,P??{}),T=void 0;return}if(g.value){const $=P??g.value;I.setOption(R,$),T=void 0;return}const N=uL(T,R),X=w(N.plan);I.setOption(N.option,X),T=N.signature}Object.keys(t).filter(I=>N0(I)).forEach(I=>{if(I.indexOf("Native:")===2){const R=`on${I.charAt(9).toUpperCase()}${I.slice(10)}`;m[R]=t[I];return}let L=I.charAt(2).toLowerCase()+I.slice(3),P;L.indexOf("zr:")===0&&(P=!0,L=L.substring(3));let E;L.substring(L.length-4)==="Once"&&(E=!0,L=L.substring(0,L.length-4)),y.set({event:L,zr:P,once:E},t[I])});function D(){if(!i.value)return;const I=a.value=YM(i.value,v.value,d.value);e.group&&(I.group=e.group),y.forEach((E,{zr:R,once:N,event:X})=>{if(!E)return;const $=R?I.getZr():I;if(N){const J=E;let q=!1;E=(...tt)=>{q||(q=!0,J(...tt),$.off(X,E))}}$.on(X,E)});function L(){I&&!I.isDisposed()&&I.resize()}function P(){const{option:E}=e;if(f.value){E&&x(I,E,void 0,!0);return}E&&x(I,E)}l.value?S_(()=>{L(),P()}):P()}const M=(I,L,P)=>{if(!e.manualUpdate)return;const E=typeof L=="boolean"?{notMerge:L,lazyUpdate:P}:L;a.value&&x(a.value,I,E??void 0,!0)};function C(){a.value&&(a.value.dispose(),a.value=void 0),T=void 0}yo(()=>e.option,I=>{if(!I){T=void 0;return}f.value||a.value&&x(a.value,I)},{deep:!0}),yo([f,d],()=>{C(),D()},{deep:!0}),yo(v,I=>{var L;(L=a.value)==null||L.setTheme(I||{})},{deep:!0}),tg(()=>{e.group&&a.value&&(a.value.group=e.group)});const A=ZA(a);return QA(a,h,c),$A(a,l,i),eg(()=>{D()}),__(()=>{lL&&i.value?i.value.__dispose=C:C()}),r({setOption:M,root:i,chart:a,...A}),(()=>_l(Pf,{...p.value,...m,ref:i,class:["echarts",p.value.class]},_()))}}),tP=vL;function yp(e,t,r){var n=ee.createCanvas(),i=t.getWidth(),a=t.getHeight(),o=n.style;return o&&(o.position="absolute",o.left="0",o.top="0",o.width=i+"px",o.height=a+"px",n.setAttribute("data-zr-dom-id",e)),n.width=i*r,n.height=a*r,n}function ll(e){return!e.__cursors.get(Tm)}function _p(e){var t=e.__cursors.get(Tm);return{startIdx:t?t.startIdx:0,endIdx:t?t.endIdx:0}}var H0=(function(e){z(t,e);function t(r,n,i){var a=e.call(this)||this;a.motionBlur=!1,a.lastFrameAlpha=.7,a.dpr=1,a.virtual=!1,a.config={},a.zlevel=0,a.zlevel2=Lo,a.maxRepaintRectCount=5,a.__dirty=!0,a.__firstTimePaint=!0,a.__prevIdx={startIdx:0,endIdx:0};var o;i=i||$o,typeof r=="string"?o=yp(r,n,i):H(r)&&(o=r,r=o.id),a.id=r,a.dom=o;var s=o.style;return s&&(sg(o),o.onselectstart=function(){return!1},s.padding="0",s.margin="0",s.borderWidth="0"),a.painter=n,a.dpr=i,a}return t.prototype.afterBrush=function(){this.__prevIdx=_p(this)},t.prototype.initContext=function(){this.ctx=this.dom.getContext("2d"),this.ctx.dpr=this.dpr},t.prototype.setUnpainted=function(){this.__firstTimePaint=!0},t.prototype.createBackBuffer=function(){var r=this.dpr;this.domBack=yp("back-"+this.id,this.painter,r),this.ctxBack=this.domBack.getContext("2d"),r!==1&&this.ctxBack.scale(r,r)},t.prototype.createRepaintRects=function(r,n,i,a){if(this.__firstTimePaint)return this.__firstTimePaint=!1,null;var o=[],s=this.maxRepaintRectCount,u=!1,l=new Z(0,0,0,0);function f(S){if(!(!S.isFinite()||S.isZero()))if(o.length===0){var T=new Z(0,0,0,0);T.copy(S),o.push(T)}else{for(var w=!1,x=1/0,D=0,M=0;M=s)}}for(var h=_p(this),c=h.startIdx;c=0)&&(o=!0)}),!(!o&&!a.__dirty)){var s=n._opts.useDirtyRect&&!ll(a)?a.createRepaintRects(t,r,n._width,n._height):null,u=n._i.layerStack[0],l=!0;if(a.__dirty){l=!1,a.__dirty=!1;var f=a.zlevel===u.zl&&a.zlevel2===u.zl2?n._backgroundColor:null;a.clear(!1,f,s)}vo(a,function(h){var c=n._paintPerCursor(a,h,t,s,l);i=i&&c})}},po),K.wxa&&Rt(this._i,function(a){a&&a.ctx&&a.ctx.draw&&a.ctx.draw()}),i},e.prototype._paintPerCursor=function(t,r,n,i,a){var o=t.ctx;if(i)if(!i.length)r.drawIdx=r.endIdx;else for(var s=this.dpr,u=0;u=r.endIdx},e.prototype._paintPerCursorInRect=function(t,r,n,i,a){for(var o={inHover:!1,allClipped:!1,prevEl:null,viewWidth:this._width,viewHeight:this._height,beforeBrushParam:{contentRetained:a}},s=t.ctx,u=ll(t),l=u&&ee.getTime(),f=r.drawIdx,h=r.notClearIdx,c=h>=0?Math.min(h,f):f;c15){c++;break}}}}Zn(s,o),r.drawIdx=Math.max(c,f)},e.prototype.getLayer=function(t,r){return this._ensureLayer(t,0,r)},e.prototype._ensureLayer=function(t,r,n){r=r||0;var i=this._singleCanvas;i&&!this._needsManuallyCompositing&&(t=Kr,r=0);var a=cl(this._i,t)[r];return a||(a=Tp("zr_"+t+"."+r,this,t,r),this._layerConfig[t]&<(a,this._layerConfig[t],!0),(n||i&&t!==Kr)&&(a.virtual=!0),this._insertLayer(a,t,r,!1),a.initContext()),a},e.prototype.insertLayer=function(t,r){this._insertLayer(r,t,0,!1)},e.prototype._insertLayer=function(t,r,n,i){var a=this._i,o=a.layers,s=a.layerStack,u=this._domRoot,l=null;if(!(o[r]&&o[r][n])&&pL(t)){for(var f=s.length,h=0;h0&&(l=cl(a,s[h-1].zl)[s[h-1].zl2]),s.splice(h,0,{zl:r,zl2:n}),cl(a,r)[n]=t,!i&&!t.virtual)if(l){var c=l.dom;c.nextSibling?u.insertBefore(t.dom,c.nextSibling):u.appendChild(t.dom)}else u.firstChild?u.insertBefore(t.dom,u.firstChild):u.appendChild(t.dom);t.painter||(t.painter=this)}},e.prototype.eachLayer=function(t,r){return Rt(this._i,function(n,i){t.call(r,n,i)})},e.prototype.eachBuiltinLayer=function(t,r){return Rt(this._i,function(n,i){t.call(r,n,i)},Ji)},e.prototype.eachOtherLayer=function(t,r){return Rt(this._i,function(n,i){t.call(r,n,i)},Ef)},e.prototype.getLayers=function(){var t={};return Rt(this._i,function(r,n,i){t[r.id]=r}),t},e.prototype._updateLayerStatus=function(t,r){var n=this;if(n._singleCanvas)for(var i=1;i=0;_--){var S=y.get(m[_]);if(!S.used)p.__dirty=!0,y.removeKey(m[_]),m.splice(_,1);else{var T=S.endIdxNew;(ll(p)?T=0;i--){var a=r[i];if(a.zl===t){var o=n[t][a.zl2];if(o.__builtin__)continue;if(r.splice(i,1),n[t][a.zl2]=void 0,!o.virtual){var s=o.dom.parentNode;s&&s.removeChild(o.dom)}}}},e.prototype.resize=function(t,r){if(this._domRoot.style){var n=this._domRoot;n.style.display="none";var i=this._opts,a=this.root;t!=null&&(i.width=t),r!=null&&(i.height=r),t=no(a,0,i),r=no(a,1,i),n.style.display="",(this._width!==t||r!==this._height)&&(n.style.width=t+"px",n.style.height=r+"px",Rt(this._i,function(o){o.resize(t,r)}),this.refresh({paintAll:!0})),this._width=t,this._height=r}else{if(t==null||r==null)return;this._width=t,this._height=r,this._ensureLayer(Kr).resize(t,r)}return this},e.prototype.clearLayer=function(t){b(this._i.layers[t],function(r){r&&!r.__builtin__&&r.clear()})},e.prototype.dispose=function(){this.root.innerHTML="",this.root=this.storage=this._domRoot=this._i=null},e.prototype.getRenderedCanvas=function(t){if(t=t||{},this._singleCanvas&&!this._compositeManually)return this._i.layers[Kr][0].dom;var r=new H0("image",this,t.pixelRatio||this.dpr);r.initContext(),r.clear(!1,t.backgroundColor||this._backgroundColor);var n=r.ctx;if(t.pixelRatio<=this.dpr){this.refresh();var i=r.dom.width,a=r.dom.height;Rt(this._i,function(h){h.__builtin__?n.drawImage(h.dom,0,0,i,a):h.renderToCanvas&&(n.save(),h.renderToCanvas(n),n.restore())})}else{for(var o={inHover:!1,viewWidth:this._width,viewHeight:this._height,beforeBrushParam:{}},s=this.storage.getDisplayList(!0),u=0,l=s.length;u=0&&n.push(t[a])}return n.join(" ")}var SL=typeof Float32Array!==ui?Float32Array:void 0,iP=typeof Float64Array!==ui?Float64Array:void 0;function aP(e){return TL({ctor:SL},e).arr}function TL(e,t){var r=e.arr,n=e.ctor;if(t>Kc&&(t=Kc),!r||e.typed&&r.lengtht&&(t=e[r]);return isFinite(t)?t:NaN},min:function(e){for(var t=1/0,r=0;r10&&o.type==="cartesian2d"&&a){var u=o.getBaseAxis(),l=o.getOtherAxis(u),f=u.getExtent(),h=n.getDevicePixelRatio(),c=Math.abs(f[1]-f[0])*(h||1),v=Math.round(s/c);if(isFinite(v)&&v>1){a==="lttb"?t.setData(i.lttbDownSample(i.mapDimension(l.dim),1/v)):a==="minmax"&&t.setData(i.minmaxDownSample(i.mapDimension(l.dim),1/v));var d=void 0;F(a)?d=bL[a]:j(a)&&(d=a),d&&t.setData(i.downSample(i.mapDimension(l.dim),1/v,d,CL))}}}}}var ML=(function(e){z(t,e);function t(r,n,i,a,o){var s=e.call(this,r,n,i)||this;return s.index=0,s.type=a||"value",s.position=o||"bottom",s}return t.prototype.isHorizontal=function(){var r=this.position;return r==="top"||r==="bottom"},t.prototype.getGlobalExtent=function(r){var n=this.getExtent();return n[0]=this.toGlobalCoord(n[0]),n[1]=this.toGlobalCoord(n[1]),r&&n[0]>n[1]&&n.reverse(),n},t.prototype.pointToData=function(r,n){return this.coordToData(this.toLocalCoord(r[this.dim==="x"?0:1]),n)},t.prototype.setCategorySortInfo=function(r){if(this.type!=="category")return!1;this.model.option.categorySortInfo=r,this.scale.setSortInfo(r)},t})(zA),DL=null;function AL(){return DL}var LL="expandAxisBreak",pr=Math.PI,IL=[[1,2,1,2],[5,3,5,3],[8,3,8,3]],PL=[[0,1,0,1],[0,3,0,3],[0,3,0,3]],ai=vt(),U0=vt(),W0=(function(){function e(t){this.recordMap={},this.resolveAxisNameOverlap=t}return e.prototype.ensureRecord=function(t){var r=t.axis.dim,n=t.componentIndex,i=this.recordMap,a=i[r]||(i[r]=[]);return a[n]||(a[n]={ready:{}})},e})();function EL(e,t,r,n){var i=r.axis,a=t.ensureRecord(r),o=[],s,u=oc(e.axisName)&&ii(e.nameLocation);b(n,function(d){var g=Cr(d);if(!(!g||g.label.ignore)){o.push(g);var p=a.transGroup;u&&(p.transform?ya(Ai,p.transform):ma(Ai),g.transform&&Vi(Ai,Ai,g.transform),Z.copy(go,g.localRect),go.applyTransform(Ai),s?s.union(go):Z.copy(s=new Z(0,0,0,0),go))}});var l=Math.abs(a.dirVec.x)>.1?"x":"y",f=a.transGroup[l];if(o.sort(function(d,g){return Math.abs(d.label[l]-f)-Math.abs(g.label[l]-f)}),u&&s){var h=i.getExtent(),c=Math.min(h[0],h[1]),v=Math.max(h[0],h[1])-c;s.union(new Z(c,0,v,1))}a.stOccupiedRect=s,a.labelInfoList=o}var Ai=Be(),go=new Z(0,0,0,0),Y0=function(e,t,r,n,i,a){if(ii(e.nameLocation)){var o=a.stOccupiedRect;o&&X0(UA({},o,a.transGroup.transform),n,i)}else Z0(a.labelInfoList,a.dirVec,n,i)};function X0(e,t,r){var n=new ct;ac(e,t,n,{direction:Math.atan2(r.y,r.x),bidirectional:!1,touchThreshold:.05})&&WA(t,n)}function Z0(e,t,r,n){for(var i=ct.dot(n,t)>=0,a=0,o=e.length;a0?"top":"bottom",a="center"):Ko(i-pr)?(o=n>0?"bottom":"top",a="center"):(o="middle",i>0&&i0?"right":"left":a=n>0?"left":"right"),{rotation:i,textAlign:a,textVerticalAlign:o}},e.makeAxisEventDataBase=function(t){var r={componentType:t.mainType,componentIndex:t.componentIndex};return r[t.mainType+"Index"]=t.componentIndex,r},e.isLabelSilent=function(t){var r=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||r&&r.show)},e})(),RL=["axisLine","axisTickLabelEstimate","axisTickLabelDetermine","axisName"],OL={axisLine:function(e,t,r,n,i,a,o){var s=n.get(["axisLine","show"]);if(s==="auto"&&(s=!0,e.raw.axisLineAutoShow!=null&&(s=!!e.raw.axisLineAutoShow)),!!s){var u=n.axis.getExtent(),l=a.transform,f=[u[0],0],h=[u[1],0],c=f[0]>h[0];l&&(ye(f,f,l),ye(h,h,l));var v=k({lineCap:"round"},n.getModel(["axisLine","lineStyle"]).getLineStyle()),d={strokeContainThreshold:e.raw.strokeContainThreshold||5,silent:!0,z2:1,style:v};if(n.get(["axisLine","breakLine"])&&ns(n.axis.scale))AL().buildAxisBreakLine(n,i,a,d);else{var g=new xr(k({shape:{x1:f[0],y1:f[1],x2:h[0],y2:h[1]}},d));aa(g.shape,g.style.lineWidth),g.anid="line",i.add(g)}var p=n.get(["axisLine","symbol"]);if(p!=null){var m=n.get(["axisLine","symbolSize"]);F(p)&&(p=[p,p]),(F(m)||Tt(m))&&(m=[m,m]);var y=hM(n.get(["axisLine","symbolOffset"])||0,m),_=m[0],S=m[1];b([{rotate:e.rotation+Math.PI/2,offset:y[0],r:0},{rotate:e.rotation-Math.PI/2,offset:y[1],r:Math.sqrt((f[0]-h[0])*(f[0]-h[0])+(f[1]-h[1])*(f[1]-h[1]))}],function(T,w){if(p[w]!=="none"&&p[w]!=null){var x=Yh(p[w],-_/2,-S/2,_,S,v.stroke,!0),D=T.r+T.offset,M=c?h:f;x.attr({rotation:T.rotate,x:M[0]+D*Math.cos(e.rotation),y:M[1]-D*Math.sin(e.rotation),silent:!0,z2:11}),i.add(x)}})}}},axisTickLabelEstimate:function(e,t,r,n,i,a,o,s){var u=xp(t,i,s);u&&wp(e,t,r,n,i,a,o,xe.estimate)},axisTickLabelDetermine:function(e,t,r,n,i,a,o,s){var u=xp(t,i,s);u&&wp(e,t,r,n,i,a,o,xe.determine);var l=FL(e,i,a,n);NL(e,t.labelLayoutList,l),zL(e,i,a,n,e.tickDirection)},axisName:function(e,t,r,n,i,a,o,s){var u=r.ensureRecord(n);t.nameEl&&(i.remove(t.nameEl),t.nameEl=u.nameLayout=u.nameLocation=null);var l=e.axisName;if(oc(l)){var f=e.nameLocation,h=e.nameDirection,c=n.getModel("nameTextStyle"),v=n.get("nameGap")||0,d=n.axis.getExtent(),g=n.axis.inverse?-1:1,p=new ct(0,0),m=new ct(0,0);f==="start"?(p.x=d[0]-g*v,m.x=-g):f==="end"?(p.x=d[1]+g*v,m.x=g):(p.x=(d[0]+d[1])/2,p.y=e.labelOffset+h*v,m.y=h);var y=Be();m.transform(Kf(y,y,e.rotation));var _=n.get("nameRotate");_!=null&&(_=_*pr/180);var S,T;ii(f)?S=_r.innerTextLayout(e.rotation,_??e.rotation,h):(S=kL(e.rotation,f,_||0,d),T=e.raw.axisNameAvailableWidth,T!=null&&(T=Math.abs(T/Math.sin(S.rotation)),!isFinite(T)&&(T=null)));var w=c.getFont(),x=n.get("nameTruncate",!0)||{},D=x.ellipsis,M=Vo(e.raw.nameTruncateMaxWidth,x.maxWidth,T),C=s.nameMarginLevel||0,A=new ie({x:p.x,y:p.y,rotation:S.rotation,silent:_r.isLabelSilent(n),style:ei(c,{text:l,font:w,overflow:"truncate",width:M,ellipsis:D,fill:c.getTextColor()||n.get(["axisLine","lineStyle","color"]),align:c.get("align")||S.textAlign,verticalAlign:c.get("verticalAlign")||S.textVerticalAlign}),z2:1});if(Ns({el:A,componentModel:n,itemName:l}),A.__fullText=l,A.anid="name",n.get("triggerEvent")){var I=_r.makeAxisEventDataBase(n);I.targetType="axisName",I.name=l,yt(A).eventData=I}a.add(A),A.updateTransform(),t.nameEl=A;var L=u.nameLayout=Cr({label:A,priority:A.z2,defaultAttr:{ignore:A.ignore},marginDefault:ii(f)?IL[C]:PL[C]});if(u.nameLocation=f,i.add(A),A.decomposeTransform(),e.shouldNameMoveOverlap&&L){var P=r.ensureRecord(n);r.resolveAxisNameOverlap(e,r,n,L,m,P)}}}};function wp(e,t,r,n,i,a,o,s){q0(t)||HL(e,t,i,s,n,o);var u=t.labelLayoutList;VL(e,n,u,a),e.rotation;var l=e.optionHideOverlap;BL(n,u,l),l&&YA(kt(u,function(f){return f&&!f.label.ignore})),EL(e,r,n,u)}function kL(e,t,r,n){var i=Rg(r-e),a,o,s=n[0]>n[1],u=t==="start"&&!s||t!=="start"&&s;return Ko(i-pr/2)?(o=u?"bottom":"top",a="center"):Ko(i-pr*1.5)?(o=u?"top":"bottom",a="center"):(o="middle",ipr/2?a=u?"left":"right":a=u?"right":"left"),{rotation:i,textAlign:a,textVerticalAlign:o}}function BL(e,t,r){var n=e.axis,i=e.get(["axisLabel","customValues"]);if(QD(n))return;function a(l,f,h){var c=Cr(t[f]),v=Cr(t[h]),d=n.scale;if(!(!c||!v)){if(l==null){if(!r&&i)return;var g=ai(c.label).labelInfo.tick;if(tc(d)&&g.notNice||Xe(d)&&g.offInterval){kn(c.label);return}}if(l===!1||c.suggestIgnore){kn(c.label);return}if(v.suggestIgnore){kn(v.label);return}var p=.1;if(!r){var m=[0,0,0,0];c=vp({marginForce:m},c),v=vp({marginForce:m},v)}ac(c,v,null,{touchThreshold:p})&&kn(l?v.label:c.label)}}var o=e.get(["axisLabel","showMinLabel"]),s=e.get(["axisLabel","showMaxLabel"]),u=t.length;a(o,0,1),a(s,u-1,u-2)}function NL(e,t,r){e.showMinorTicks||b(t,function(n){if(n&&n.label.ignore)for(var i=0;i=x[1])return!0})):S[1]?(M=x[1],P(function(){if(X(),L=at(I-C*d,A),E(),D<=x[0])return!0})):P(function(){L=at(Ta(x[0]/C)*C,A),I=at(ln(x[1]/C)*C,A);var tt=er((I-L)/C);if(tt<=d){var et=d-tt,V=void 0,it=i.incl0||a;if(it&&x[0]===0)V=[0,et];else if(it&&x[1]===0)V=[et,0];else{var ut=ln(et/2);V=et%2===0?[ut,ut]:D+M=x[1])return!0}})}m0(r,S,w,[D,M],T,{interval:C,intervalCount:d,intervalPrecision:A,niceExtent:[L,I]})}var Dp=[[3,1],[0,2]],eI=(function(){function e(t,r,n){this.type="grid",this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this.axisPointerEnabled=!0,this.dimensions=zo,this._initCartesian(t,r,n),this.model=t}return e.prototype.getRect=function(){return this._rect},e.prototype.update=function(t,r){var n=this._axesMap;b(this._axesList,function(o){vA(o,lA);var s=o.scale;Xe(s)&&s.setSortInfo(o.model.get("categorySortInfo"))});function i(o){for(var s=gt(o),u=[],l=s.length-1;l>=0;l--){var f=o[+s[l]];f.__alignTo?u.push(f):up(f)}b(u,function(h){nI(h,h.__alignTo)?up(h):tI(h,h.__alignTo.scale)})}i(n.x),i(n.y);var a={};b(n.x,function(o){Ap(n,"y",o,a)}),b(n.y,function(o){Ap(n,"x",o,a)}),this.resize(this.model,r)},e.prototype.resize=function(t,r,n){var i=Nh(t,r),a=this._rect=fn(t.getBoxLayoutParams(),i.refContainer),o=this._axesMap,s=this._coordsList,u=t.get("containLabel");if(j0(o,a),!n){var l=aI(a,s,o,u,r),f=void 0;if(u)f=Ep(a.clone(),"axisLabel",null,a,o,l,i);else{var h=oI(t,a,i),c=h.outerBoundsRect,v=h.parsedOuterBoundsContain,d=h.outerBoundsClamp;c&&(f=Ep(c,v,d,a,o,l,i))}J0(a,o,xe.determine,null,f,i),b(this._coordsList,function(g){g.calcAffineTransform()})}},e.prototype.getAxis=function(t,r){var n=this._axesMap[t];if(n!=null)return n[r||0]},e.prototype.getAxes=function(){return this._axesList.slice()},e.prototype.getCartesian=function(t,r){if(t!=null&&r!=null){var n="x"+t+"y"+r;return this._coordsMap[n]}H(t)&&(r=t.yAxisIndex,t=t.xAxisIndex);for(var i=0,a=this._coordsList;i=0;i--){var a=e[+t[i]];l0(a.scale)&&JD(a.model,a.type)==null&&(a.model.get("alignTicks")&&a.model.get("interval")==null?n.push(a):r=a)}r||(r=n.pop()),r&&b(n,function(o){o.__alignTo=r})}function nI(e,t){return ns(e.scale)||ns(t.scale)||t.scale.getTicks().length<2}function iI(e,t){var r=e.getExtent(),n=r[0]+r[1];e.toGlobalCoord=e.dim==="x"?function(i){return i+t}:function(i){return n-i+t},e.toLocalCoord=e.dim==="x"?function(i){return i-t}:function(i){return n-i+t}}function j0(e,t){b(e.x,function(r){return Pp(r,t.x,t.width)}),b(e.y,function(r){return Pp(r,t.y,t.height)})}function Pp(e,t,r){var n=[0,r],i=e.inverse?1:0;e.setExtent(n[i],n[1-i]),iI(e,t)}function Ep(e,t,r,n,i,a,o){J0(n,i,xe.estimate,t,!1,o);var s=[0,0,0,0];l(0),l(1),f(n,0,NaN),f(n,1,NaN);var u=z_(s,function(c){return c>0})==null;return es(n,s,!0,!0,r),j0(i,n),u;function l(c){b(i[cr[c]],function(v){if(da(v.model)){var d=a.ensureRecord(v.model),g=d.labelInfoList;if(g)for(var p=0;p0&&!ea(v)&&v>1e-4&&(c/=v),c}}function aI(e,t,r,n,i){var a=new W0(sI);return b(r,function(o){return b(o,function(s){if(da(s.model)){var u=!n;s.axisBuilder=YL(e,t,s.model,i,a,u)}})}),a}function J0(e,t,r,n,i,a){var o=r===xe.determine;b(t,function(l){return b(l,function(f){da(f.model)&&(XL(f.axisBuilder,e,f.model),f.axisBuilder.build(o?{axisTickLabelDetermine:!0}:{axisTickLabelEstimate:!0},{noPxChange:i}))})});var s={x:0,y:0};u(0),u(1);function u(l){s[cr[1-l]]=e[ti[l]]<=a.refContainer[ti[l]]*.5?0:1-l===1?2:1}b(t,function(l,f){return b(l,function(h){da(h.model)&&((n==="all"||o)&&h.axisBuilder.build({axisName:!0},{nameMarginLevel:s[f]}),o&&h.axisBuilder.build({axisLine:!0}))})})}function oI(e,t,r){var n,i=e.get("outerBoundsMode",!0);i==="same"?n=t.clone():(i==null||i==="auto")&&(n=fn(e.get("outerBounds",!0)||K0,r.refContainer));var a=e.get("outerBoundsContain",!0),o;a==null||a==="auto"||st(["all","axisLabel"],a)<0?o="all":o=a;var s=[Wl(G(e.get("outerBoundsClampWidth",!0),_s[0]),t.width),Wl(G(e.get("outerBoundsClampHeight",!0),_s[1]),t.height)];return{outerBoundsRect:n,parsedOuterBoundsContain:o,outerBoundsClamp:s}}var sI=function(e,t,r,n,i,a){var o=r.axis.dim==="x"?"y":"x";Y0(e,t,r,n,i,a),ii(e.nameLocation)||b(t.recordMap[o],function(s){s&&s.labelInfoList&&s.dirVec&&Z0(s.labelInfoList,s.dirVec,n,i)})};function uI(e,t){var r={axesInfo:{},seriesInvolved:!1,coordSysAxesInfo:{},coordSysMap:{}};return lI(r,e,t),r.seriesInvolved&&hI(r,e),r}function lI(e,t,r){var n=t.getComponent("tooltip"),i=t.getComponent("axisPointer"),a=i.get("link",!0)||[],o=[];b(r.getCoordinateSystems(),function(s){if(!s.axisPointerEnabled)return;var u=pa(s.model),l=e.coordSysAxesInfo[u]={};e.coordSysMap[u]=s;var f=s.model,h=f.getModel("tooltip",n);if(b(s.getAxes(),Ct(g,!1,null)),s.getTooltipAxes&&n&&h.get("show")){var c=h.get("trigger")==="axis",v=h.get(["axisPointer","type"])==="cross",d=s.getTooltipAxes(h.get(["axisPointer","axis"]));(c||v)&&b(d.baseAxes,Ct(g,v?"cross":!0,c)),v&&b(d.otherAxes,Ct(g,"cross",!1))}function g(p,m,y){var _=y.model.getModel("axisPointer",i),S=_.get("show");if(!(!S||S==="auto"&&!p&&!kf(_))){m==null&&(m=_.get("triggerTooltip")),_=p?fI(y,h,i,t,p,m):_;var T=_.get("snap"),w=_.get("triggerEmphasis"),x=pa(y.model),D=m||T||y.type==="category",M=e.axesInfo[x]={key:x,axis:y,coordSys:s,axisPointerModel:_,triggerTooltip:m,triggerEmphasis:w,involveSeries:D,snap:T,useHandle:kf(_),seriesModels:[],linkGroup:null};l[x]=M,e.seriesInvolved=e.seriesInvolved||D;var C=cI(a,y);if(C!=null){var A=o[C]||(o[C]={axesInfo:{}});A.axesInfo[x]=M,A.mapper=a[C].mapper,M.linkGroup=A}}}})}function fI(e,t,r,n,i,a){var o=t.getModel("axisPointer"),s=["type","snap","lineStyle","shadowStyle","label","animation","animationDurationUpdate","animationEasingUpdate","z"],u={};b(s,function(c){u[c]=rt(o.get(c))}),u.snap=e.type!=="category"&&!!a,o.get("type")==="cross"&&(u.type="line");var l=u.label||(u.label={});if(l.show==null&&(l.show=!1),i==="cross"){var f=o.get(["label","show"]);if(l.show=f??!0,!a){var h=u.lineStyle=o.get("crossStyle");h&&pt(l,h.textStyle)}}return e.model.getModel("axisPointer",new St(u,r,n))}function hI(e,t){t.eachSeries(function(r){var n=r.coordinateSystem,i=r.get(["tooltip","trigger"],!0),a=r.get(["tooltip","show"],!0);!n||!n.model||i==="none"||i===!1||i==="item"||a===!1||r.get(["axisPointer","show"],!0)===!1||b(e.coordSysAxesInfo[pa(n.model)],function(o){var s=o.axis;n.getAxis(s.dim)===s&&(o.seriesModels.push(r),o.seriesDataCount==null&&(o.seriesDataCount=0),o.seriesDataCount+=r.getData().count())})})}function cI(e,t){for(var r=t.model,n=t.dim,i=0;i=0||e===t}function vI(e){var t=uc(e);if(t){var r=t.axisPointerModel,n=t.axis.scale,i=r.option,a=r.get("status"),o=r.get("value");o!=null&&(o=n.parse(o));var s=kf(r);a==null&&(i.status=s?"show":"hide");var u=n.getExtent();(o==null||o>u[1])&&(o=u[1]),os)return!0;if(o){var u=uc(t).seriesDataCount,l=i.getExtent();return Math.abs(l[0]-l[1])/u>s}return!1}return n===!0},e.prototype.makeElOption=function(t,r,n,i,a){},e.prototype.createPointerEl=function(t,r,n,i){var a=r.pointer;if(a){var o=Qr(t).pointerEl=new yx[a.type](kp(r.pointer));t.add(o)}},e.prototype.createLabelEl=function(t,r,n,i){if(r.label){var a=Qr(t).labelEl=new ie(kp(r.label));t.add(a),Np(a,i)}},e.prototype.updatePointerEl=function(t,r,n){var i=Qr(t).pointerEl;i&&r.pointer&&(i.setStyle(r.pointer.style),n(i,{shape:r.pointer.shape}))},e.prototype.updateLabelEl=function(t,r,n,i){var a=Qr(t).labelEl;a&&(a.setStyle(r.label.style),n(a,{x:r.label.x,y:r.label.y}),Np(a,i))},e.prototype._renderHandle=function(t){if(!(this._dragging||!this.updateHandleTransform)){var r=this._axisPointerModel,n=this._api.getZr(),i=this._handle,a=r.getModel("handle"),o=r.get("status");if(!a.get("show")||!o||o==="hide"){i&&n.remove(i),this._handle=null;return}var s;this._handle||(s=!0,i=this._handle=Sh(a.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(l){lg(l.event)},onmousedown:dl(this._onHandleDragMove,this,0,0),drift:dl(this._onHandleDragMove,this),ondragend:dl(this._onHandleDragEnd,this)}),n.add(i)),Fp(i,r,!1),i.setStyle(a.getItemStyle(null,["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"]));var u=a.get("size");B(u)||(u=[u,u]),i.scaleX=u[0]/2,i.scaleY=u[1]/2,Cy(this,"_doDispatchAxisPointer",a.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,s)}},e.prototype._moveHandleToValue=function(t,r){Bp(this._axisPointerModel,!r&&this._moveAnimation,this._handle,pl(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},e.prototype._onHandleDragMove=function(t,r){var n=this._handle;if(n){this._dragging=!0;var i=this.updateHandleTransform(pl(n),[t,r],this._axisModel,this._axisPointerModel);this._payloadInfo=i,n.stopAnimation(),n.attr(pl(i)),Qr(n).lastProp=null,this._doDispatchAxisPointer()}},e.prototype._doDispatchAxisPointer=function(){var t=this._handle;if(t){var r=this._payloadInfo,n=this._axisModel;this._api.dispatchAction({type:"updateAxisPointer",x:r.cursorPoint[0],y:r.cursorPoint[1],tooltipOption:r.tooltipOption,axesInfo:[{axisDim:n.axis.dim,axisIndex:n.componentIndex}]})}},e.prototype._onHandleDragEnd=function(){this._dragging=!1;var t=this._handle;if(t){var r=this._axisPointerModel.get("value");this._moveHandleToValue(r),this._api.dispatchAction({type:"hideTip"})}},e.prototype.clear=function(t){this._lastValue=null,this._lastStatus=null;var r=t.getZr(),n=this._group,i=this._handle;r&&n&&(this._lastGraphicKey=null,n&&r.remove(n),i&&r.remove(i),this._group=null,this._handle=null,this._payloadInfo=null),pf(this,"_doDispatchAxisPointer")},e.prototype.doClear=function(){},e.prototype.buildLabel=function(t,r,n){return n=n||0,{x:t[n],y:t[1-n],width:r[n],height:r[1-n]}},e})();function Bp(e,t,r,n){n_(Qr(r).lastProp,n)||(Qr(r).lastProp=n,t?Ma(r,n,e):(r.stopAnimation(),r.attr(n)))}function n_(e,t){if(H(e)&&H(t)){var r=!0;return b(t,function(n,i){r=r&&n_(e[i],n)}),!!r}else return e===t}function Np(e,t){e[t.get(["label","show"])?"show":"hide"]()}function pl(e){return{x:e.x||0,y:e.y||0,rotation:e.rotation||0}}function Fp(e,t,r){var n=t.get("z"),i=t.get("zlevel");e&&e.traverse(function(a){a.type!=="group"&&(n!=null&&(a.z=n),i!=null&&(a.zlevel=i),a.silent=r)})}function xI(e){var t=e.get("type"),r=e.getModel(t+"Style"),n;return t==="line"?(n=r.getLineStyle(),n.fill=null):t==="shadow"&&(n=r.getAreaStyle(),n.stroke=null),n}function bI(e,t,r,n,i){var a=r.get("value"),o=i_(a,t.axis,t.ecModel,r.get("seriesDataIndices"),{precision:r.get(["label","precision"]),formatter:r.get(["label","formatter"])}),s=r.getModel("label"),u=Gs(s.get("padding")||0),l=s.getFont(),f=Dg(o,l),h=i.position,c=f.width+u[1]+u[3],v=f.height+u[0]+u[2],d=i.align;d==="right"&&(h[0]-=c),d==="center"&&(h[0]-=c/2);var g=i.verticalAlign;g==="bottom"&&(h[1]-=v),g==="middle"&&(h[1]-=v/2),CI(h,c,v,n);var p=s.get("backgroundColor");(!p||p==="auto")&&(p=t.get(["axisLine","lineStyle","color"])),e.label={x:h[0],y:h[1],style:ei(s,{text:o,font:l,fill:s.getTextColor(),padding:u,backgroundColor:p}),z2:10}}function CI(e,t,r,n){var i=n.getWidth(),a=n.getHeight();e[0]=Math.min(e[0]+t,i)-t,e[1]=Math.min(e[1]+r,a)-r,e[0]=Math.max(e[0],0),e[1]=Math.max(e[1],0)}function i_(e,t,r,n,i){e=t.scale.parse(e);var a=t.scale.getLabel({value:e},{precision:i.precision}),o=i.formatter;if(o){var s={value:vs(t,{value:e}),axisDimension:t.dim,axisIndex:t.index,seriesData:[]};b(n,function(u){var l=r.getSeriesByIndex(u.seriesIndex),f=u.dataIndexInside,h=l&&l.getDataParams(f);h&&s.seriesData.push(h)}),F(o)?a=o.replace("{value}",a):j(o)&&(a=o(s))}return a}function a_(e,t,r){var n=Be();return Kf(n,n,r.rotation),Al(n,n,r.position),_h([e.dataToCoord(t),(r.labelOffset||0)+(r.labelDirection||1)*(r.labelMargin||0)],n)}function MI(e,t,r,n,i,a){var o=_r.innerTextLayout(r.rotation,0,r.labelDirection);r.labelMargin=i.get(["label","margin"]),bI(t,n,i,a,{position:a_(n.axis,e,r),align:o.textAlign,verticalAlign:o.textVerticalAlign})}function DI(e,t,r){return r=r||0,{x1:e[r],y1:e[1-r],x2:t[r],y2:t[1-r]}}function AI(e,t,r){return r=r||0,{x:e[r],y:e[1-r],width:t[r],height:t[1-r]}}function LI(e,t,r){return qs(e,{fromStat:{sers:Y(t,function(n){return r.getSeriesByIndex(n.seriesIndex)})},min:1}).w}function II(e,t,r){return[ht(ne(t[0],t[1]),e-r/2),ne(e+r/2,ht(t[0],t[1]))]}var PI=(function(e){z(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.makeElOption=function(r,n,i,a,o){var s=i.axis,u=s.grid,l=a.get("type"),f=s.getGlobalExtent(),h=zp(u,s).getOtherAxis(s).getGlobalExtent(),c=s.toGlobalCoord(s.dataToCoord(n,!0));if(l&&l!=="none"){var v=xI(a),d=EI[l](s,c,f,h,a.get("seriesDataIndices"),a.ecModel);d.style=v,r.graphicKey=d.type,r.pointer=d}var g=ys(u.getRect(),i);MI(n,r,g,i,a,o)},t.prototype.getHandleTransform=function(r,n,i){var a=ys(n.axis.grid.getRect(),n,{labelInside:!1});a.labelMargin=i.get(["handle","margin"]);var o=a_(n.axis,r,a);return{x:o[0],y:o[1],rotation:a.rotation+(a.labelDirection<0?Math.PI:0)}},t.prototype.updateHandleTransform=function(r,n,i,a){var o=i.axis,s=o.grid,u=o.getGlobalExtent(!0),l=zp(s,o).getOtherAxis(o).getGlobalExtent(),f=o.dim==="x"?0:1,h=[r.x,r.y];h[f]+=n[f],h[f]=ne(u[1],h[f]),h[f]=ht(u[0],h[f]);var c=(l[1]+l[0])/2,v=[c,c];v[f]=h[f];var d=[{verticalAlign:"middle"},{align:"center"}];return{x:h[0],y:h[1],rotation:r.rotation,cursorPoint:v,tooltipOption:d[f]}},t})(wI);function zp(e,t){var r={};return r[t.dim+"AxisIndex"]=t.index,e.getCartesian(r)}var EI={line:function(e,t,r,n){var i=DI([t,n[0]],[t,n[1]],Hp(e));return{type:"Line",subPixelOptimize:!0,shape:i}},shadow:function(e,t,r,n,i,a){var o=LI(e,i,a),s=n[1]-n[0],u=II(t,r,o),l=u[0],f=u[1];return{type:"Rect",shape:AI([l,n[0]],[f-l,s],Hp(e))}}};function Hp(e){return e.dim==="x"?0:1}var RI=(function(e){z(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.type=t.type,r}return t.type="axisPointer",t.defaultOption={show:"auto",z:50,type:"line",snap:!1,triggerTooltip:!0,triggerEmphasis:!0,value:null,status:null,link:[],animation:null,animationDurationUpdate:200,lineStyle:{color:U.color.border,width:1,type:"dashed"},shadowStyle:{color:U.color.shadowTint},label:{show:!0,formatter:null,precision:"auto",margin:3,color:U.color.neutral00,padding:[5,7,5,7],backgroundColor:U.color.accent60,borderColor:null,borderWidth:0,borderRadius:3},handle:{show:!1,icon:"M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z",size:45,margin:50,color:U.color.accent40,throttle:40}},t})(ft),Je=vt(),OI=b;function o_(e,t,r){if(!K.node){var n=t.getZr();Je(n).records||(Je(n).records={}),kI(n,t);var i=Je(n).records[e]||(Je(n).records[e]={});i.handler=r}}function kI(e,t){if(Je(e).initialized)return;Je(e).initialized=!0,r("click",Ct(gl,"click")),r("mousemove",Ct(gl,"mousemove")),r("mousewheel",Ct(gl,"mousewheel")),r("globalout",NI);function r(n,i){e.on(n,function(a){var o=FI(t);OI(Je(e).records,function(s){s&&i(s,a,o.dispatchAction)}),BI(o.pendings,t)})}}function BI(e,t){var r=e.showTip.length,n=e.hideTip.length,i;r?i=e.showTip[r-1]:n&&(i=e.hideTip[n-1]),i&&(i.dispatchAction=null,t.dispatchAction(i))}function NI(e,t,r){e.handler("leave",null,r)}function gl(e,t,r,n){t.handler(e,r,n)}function FI(e){var t={showTip:[],hideTip:[]},r=function(n){var i=t[n.type];i?i.push(n):(n.dispatchAction=r,e.dispatchAction(n))};return{dispatchAction:r,pendings:t}}function Nf(e,t){if(!K.node){var r=t.getZr(),n=(Je(r).records||{})[e];n&&(Je(r).records[e]=null)}}var zI=(function(e){z(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.type=t.type,r}return t.prototype.render=function(r,n,i){var a=n.getComponent("tooltip"),o=r.get("triggerOn")||a&&a.get("triggerOn")||"mousemove|click|mousewheel";o_("axisPointer",i,function(s,u,l){o!=="none"&&(s==="leave"||o.indexOf(s)>=0)&&l({type:"updateAxisPointer",currTrigger:s,x:u&&u.offsetX,y:u&&u.offsetY})})},t.prototype.remove=function(r,n){Nf("axisPointer",n)},t.prototype.dispose=function(r,n){Nf("axisPointer",n)},t.type="axisPointer",t})(Ue);function s_(e,t){var r=[],n=e.seriesIndex,i;if(n==null||!(i=t.getSeriesByIndex(n)))return{point:[]};var a=i.getData(),o=xa(a,e);if(o==null||o<0||B(o))return{point:[]};var s=a.getItemGraphicEl(o),u=i.coordinateSystem;if(i.getTooltipPosition)r=i.getTooltipPosition(o)||[];else if(u&&u.dataToPoint)if(e.isStacked){var l=u.getBaseAxis(),f=u.getOtherAxis(l),h=f.dim,c=l.dim,v=h==="x"||h==="radius"?1:0,d=a.mapDimension(c),g=[];g[v]=a.get(d,o),g[1-v]=a.get(a.getCalculationInfo("stackResultDimension"),o),r=u.dataToPoint(g)||[]}else r=u.dataToPoint(a.getValues(Y(u.dimensions,function(m){return a.mapDimension(m)}),o))||[];else if(s){var p=s.getBoundingRect().clone();p.applyTransform(s.transform),r=[p.x+p.width/2,p.y+p.height/2]}return{point:r,el:s}}var Vp=vt();function HI(e,t,r){var n=e.currTrigger,i=[e.x,e.y],a=e,o=e.dispatchAction||_t(r.dispatchAction,r),s=t.getComponent("axisPointer").coordSysAxesInfo;if(s){Ho(i)&&(i=s_({seriesIndex:a.seriesIndex,dataIndex:a.dataIndex},t).point);var u=Ho(i),l=a.axesInfo,f=s.axesInfo,h=n==="leave"||Ho(i),c={},v={},d={list:[],map:{}},g={showPointer:Ct(GI,v),showTooltip:Ct(UI,d)};b(s.coordSysMap,function(m,y){var _=u||m.containPoint(i);b(s.coordSysAxesInfo[y],function(S,T){var w=S.axis,x=ZI(l,S);if(!h&&_&&(!l||x)){var D=x&&x.value;D==null&&!u&&(D=w.pointToData(i)),D!=null&&Gp(S,D,g,!1,c)}})});var p={};return b(f,function(m,y){var _=m.linkGroup;_&&!v[y]&&b(_.axesInfo,function(S,T){var w=v[T];if(S!==m&&w){var x=w.value;_.mapper&&(x=m.axis.scale.parse(_.mapper(x,Up(S),Up(m)))),p[m.key]=x}})}),b(p,function(m,y){Gp(f[y],m,g,!0,c)}),WI(v,f,c),YI(d,i,e,o),XI(f,o,r),c}}function Gp(e,t,r,n,i){var a=e.axis;if(!(a.scale.isBlank()||!a.containData(t))){if(!e.involveSeries){r.showPointer(e,t);return}var o=VI(t,e),s=o.payloadBatch,u=o.snapToValue;s[0]&&i.seriesIndex==null&&k(i,s[0]),!n&&e.snap&&a.containData(u)&&u!=null&&(t=u),r.showPointer(e,t,s),r.showTooltip(e,o,u)}}function VI(e,t){var r=t.axis,n=r.dim,i=e,a=[],o=Number.MAX_VALUE,s=-1;return b(t.seriesModels,function(u,l){var f=u.getData().mapDimensionsAll(n),h,c;if(u.getAxisTooltipData){var v=u.getAxisTooltipData(f,e,r);c=v.dataIndices,h=v.nestestValue}else{if(c=u.indicesOfNearest(n,f[0],e,r.type==="category"?.5:null),!c.length)return;h=u.getData().get(f[0],c[0])}if(Ge(h)){var d=e-h,g=Math.abs(d);g<=o&&((g=0&&s<0)&&(o=g,s=d,i=h,a.length=0),b(c,function(p){a.push({seriesIndex:u.seriesIndex,dataIndexInside:p,dataIndex:u.getData().getRawIndex(p)})}))}}),{payloadBatch:a,snapToValue:i}}function GI(e,t,r,n){e[t.key]={value:r,payloadBatch:n}}function UI(e,t,r,n){var i=r.payloadBatch,a=t.axis,o=a.model,s=t.axisPointerModel;if(!(!t.triggerTooltip||!i.length)){var u=t.coordSys.model,l=pa(u),f=e.map[l];f||(f=e.map[l]={coordSysId:u.id,coordSysIndex:u.componentIndex,coordSysType:u.type,coordSysMainType:u.mainType,dataByAxis:[]},e.list.push(f)),f.dataByAxis.push({axisDim:a.dim,axisIndex:o.componentIndex,axisType:o.type,axisId:o.id,value:n,valueLabelOpt:{precision:s.get(["label","precision"]),formatter:s.get(["label","formatter"])},seriesDataIndices:i.slice()})}}function WI(e,t,r){var n=r.axesInfo=[];b(t,function(i,a){var o=i.axisPointerModel.option,s=e[a];s?(!i.useHandle&&(o.status="show"),o.value=s.value,o.seriesDataIndices=(s.payloadBatch||[]).slice()):!i.useHandle&&(o.status="hide"),o.status==="show"&&n.push({axisDim:i.axis.dim,axisIndex:i.axis.model.componentIndex,value:o.value})})}function YI(e,t,r,n){if(Ho(t)||!e.list.length){n({type:"hideTip"});return}var i=((e.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};n({type:"showTip",escapeConnect:!0,x:t[0],y:t[1],tooltipOption:r.tooltipOption,position:r.position,dataIndexInside:i.dataIndexInside,dataIndex:i.dataIndex,seriesIndex:i.seriesIndex,dataByCoordSys:e.list})}function XI(e,t,r){var n=r.getZr(),i="axisPointerLastHighlights",a=Vp(n)[i]||{},o=Vp(n)[i]={};b(e,function(f,h){var c=f.axisPointerModel.option;c.status==="show"&&f.triggerEmphasis&&b(c.seriesDataIndices,function(v){o[v.seriesIndex+"|"+v.dataIndex]=v})});var s=[],u=[];function l(f){return{seriesIndex:f.seriesIndex,dataIndex:f.dataIndex}}b(a,function(f,h){!o[h]&&u.push(l(f))}),b(o,function(f,h){!a[h]&&s.push(l(f))}),u.length&&r.dispatchAction({type:"downplay",escapeConnect:!0,notBlur:!0,batch:u}),s.length&&r.dispatchAction({type:"highlight",escapeConnect:!0,notBlur:!0,batch:s})}function ZI(e,t){for(var r=0;r<(e||[]).length;r++){var n=e[r];if(t.axis.dim===n.axisDim&&t.axis.model.componentIndex===n.axisIndex)return n}}function Up(e){var t=e.axis.model,r={},n=r.axisDim=e.axis.dim;return r.axisIndex=r[n+"AxisIndex"]=t.componentIndex,r.axisName=r[n+"AxisName"]=t.name,r.axisId=r[n+"AxisId"]=t.id,r}function Ho(e){return!e||e[0]==null||isNaN(e[0])||e[1]==null||isNaN(e[1])}function u_(e){t_.registerAxisPointerClass("CartesianAxisPointer",PI),e.registerComponentModel(RI),e.registerComponentView(zI),e.registerPreprocessor(function(t){if(t){(!t.axisPointer||t.axisPointer.length===0)&&(t.axisPointer={});var r=t.axisPointer.link;r&&!B(r)&&(t.axisPointer.link=[r])}}),e.registerProcessor(e.PRIORITY.PROCESSOR.STATISTIC,{overallReset:function(t,r){t.getComponent("axisPointer").coordSysAxesInfo=uI(t,r)}}),e.registerAction({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},HI)}function fP(e){vn(TI),vn(u_)}function $I(e,t){var r=Gs(t.get("padding")),n=t.getItemStyle(["color","opacity"]);n.fill=t.get("backgroundColor");var i=new Mt({shape:{x:e.x-r[3],y:e.y-r[0],width:e.width+r[1]+r[3],height:e.height+r[0]+r[2],r:t.get("borderRadius")},style:n,silent:!0,z2:-1});return i}var qI=(function(e){z(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.type=t.type,r}return t.type="tooltip",t.dependencies=["axisPointer"],t.defaultOption={z:60,show:!0,showContent:!0,trigger:"item",triggerOn:"mousemove|click|mousewheel",alwaysShowContent:!1,renderMode:"auto",confine:null,showDelay:0,hideDelay:100,transitionDuration:.4,displayTransition:!0,enterable:!1,backgroundColor:U.color.neutral00,shadowBlur:10,shadowColor:"rgba(0, 0, 0, .2)",shadowOffsetX:1,shadowOffsetY:2,borderRadius:4,borderWidth:1,defaultBorderColor:U.color.border,padding:null,extraCssText:"",axisPointer:{type:"line",axis:"auto",animation:"auto",animationDurationUpdate:200,animationEasingUpdate:"exponentialOut",crossStyle:{color:U.color.borderShade,width:1,type:"dashed",textStyle:{}}},textStyle:{color:U.color.tertiary,fontSize:14}},t})(ft);function l_(e){var t=e.get("confine");return t!=null?!!t:e.get("renderMode")==="richText"}function f_(e){if(K.domSupported){for(var t=document.documentElement.style,r=0,n=e.length;r-1?(s+="top:50%",u+="translateY(-50%) rotate("+(l=a==="left"?-225:-45)+"deg)"):(s+="left:50%",u+="translateX(-50%) rotate("+(l=a==="top"?225:45)+"deg)");var f=l*Math.PI/180,h=o+i,c=h*Math.abs(Math.cos(f))+h*Math.abs(Math.sin(f)),v=Math.round(((c-Math.SQRT2*i)/2+Math.SQRT2*i-(c-h)/2)*100)/100;s+=";"+a+":-"+v+"px";var d=t+" solid "+i+"px;",g=["position:absolute;width:"+o+"px;height:"+o+"px;z-index:-1;",s+";"+u+";","border-bottom:"+d,"border-right:"+d,"background-color:"+n+";"];return'
    '}function r2(e,t,r){var n="cubic-bezier(0.23,1,0.32,1)",i="",a="";return r&&(i=" "+e/2+"s "+n,a="opacity"+i+",visibility"+i),t||(i=" "+e+"s "+n,a+=(a.length?",":"")+(K.transformSupported?""+lc+i:",left"+i+",top"+i)),jI+":"+a}function Wp(e,t,r){var n=e.toFixed(0)+"px",i=t.toFixed(0)+"px";if(!K.transformSupported)return r?"top:"+i+";left:"+n+";":[["top",i],["left",n]];var a=K.transform3dSupported,o="translate"+(a?"3d":"")+"("+n+","+i+(a?",0":"")+")";return r?"top:0;left:0;"+lc+":"+o+";":[["top",0],["left",0],[h_,o]]}function n2(e){var t=[],r=e.get("fontSize"),n=e.getTextColor();n&&t.push("color:"+n),t.push("font:"+e.getFont());var i=G(e.get("lineHeight"),Math.round(r*3/2));r&&t.push("line-height:"+i+"px");var a=e.get("textShadowColor"),o=e.get("textShadowBlur")||0,s=e.get("textShadowOffsetX")||0,u=e.get("textShadowOffsetY")||0;return a&&o&&t.push("text-shadow:"+s+"px "+u+"px "+o+"px "+a),b(["decoration","align"],function(l){var f=e.get(l);f&&t.push("text-"+l+":"+f)}),t.join(";")}function i2(e,t,r,n){var i=[],a=e.get("transitionDuration"),o=e.get("backgroundColor"),s=e.get("shadowBlur"),u=e.get("shadowColor"),l=e.get("shadowOffsetX"),f=e.get("shadowOffsetY"),h=e.getModel("textStyle"),c=xy(e,"html"),v=l+"px "+f+"px "+s+"px "+u;return i.push("box-shadow:"+v),t&&a>0&&i.push(r2(a,r,n)),o&&i.push("background-color:"+o),b(["width","color","radius"],function(d){var g="border-"+d,p=qm(g),m=e.get(p);m!=null&&i.push(g+":"+m+(d==="color"?"":"px"))}),i.push(n2(h)),c!=null&&i.push("padding:"+Gs(c).join("px ")+"px"),i.join(";")+";"}function Yp(e,t,r,n,i){var a=t&&t.painter;if(r){var o=a&&a.getViewportRoot();o&&r1(e,o,r,n,i)}else{e[0]=n,e[1]=i;var s=a&&a.getViewportRootOffset();s&&(e[0]+=s.offsetLeft,e[1]+=s.offsetTop)}e[2]=e[0]/t.getWidth(),e[3]=e[1]/t.getHeight()}var a2=(function(){function e(t,r){if(this._show=!1,this._styleCoord=[0,0,0,0],this._enterable=!0,this._alwaysShowContent=!1,this._firstShow=!0,this._longHide=!0,K.wxa)return null;var n=document.createElement("div");n.domBelongToZr=!0,this.el=n;var i=this._zr=t.getZr(),a=r.appendTo,o=a&&(F(a)?document.querySelector(a):ta(a)?a:j(a)&&a(t.getDom()));Yp(this._styleCoord,i,o,t.getWidth()/2,t.getHeight()/2),(o||t.getDom()).appendChild(n),this._api=t,this._container=o;var s=this;n.onmouseenter=function(){s._enterable&&(clearTimeout(s._hideTimeout),s._show=!0),s._inContent=!0},n.onmousemove=function(u){if(u=u||window.event,!s._enterable){var l=i.handler,f=i.painter.getViewportRoot();le(f,u,!0),l.dispatch("mousemove",u)}},n.onmouseleave=function(){s._inContent=!1,s._enterable&&s._show&&s.hideLater(s._hideDelay)}}return e.prototype.update=function(t){if(!this._container){var r=this._api.getDom(),n=QI(r,"position"),i=r.style;i.position!=="absolute"&&n!=="absolute"&&(i.position="relative")}var a=t.get("alwaysShowContent");a&&this._moveIfResized(),this._alwaysShowContent=a,this._enableDisplayTransition=t.get("displayTransition")&&t.get("transitionDuration")>0,this.el.className=t.get("className")||""},e.prototype.show=function(t,r){clearTimeout(this._hideTimeout),clearTimeout(this._longHideTimeout);var n=this.el,i=n.style,a=this._styleCoord;n.innerHTML?i.cssText=JI+i2(t,!this._firstShow,this._longHide,this._enableDisplayTransition)+Wp(a[0],a[1],!0)+("border-color:"+sa(r)+";")+(t.get("extraCssText")||"")+(";pointer-events:"+(this._enterable?"auto":"none")):i.display="none",this._show=!0,this._firstShow=!1,this._longHide=!1},e.prototype.setContent=function(t,r,n,i,a){var o=this.el;if(t==null){o.innerHTML="";return}var s="";if(F(a)&&n.get("trigger")==="item"&&!l_(n)&&(s=e2(n,i,a)),F(t))o.innerHTML=t+s;else if(t){o.innerHTML="",B(t)||(t=[t]);for(var u=0;u=0?this._tryShow(a,o):i==="leave"&&this._hide(o))},this))},t.prototype._keepShow=function(){var r=this._tooltipModel,n=this._ecModel,i=this._api,a=r.get("triggerOn");if(r.get("trigger")!=="axis"&&(this._lastDataByCoordSys=null,this._cbParamsList=null),this._lastX!=null&&this._lastY!=null&&a!=="none"&&a!=="click"){var o=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout(function(){!i.isDisposed()&&o.manuallyShowTip(r,n,i,{x:o._lastX,y:o._lastY,dataByCoordSys:o._lastDataByCoordSys})})}},t.prototype.manuallyShowTip=function(r,n,i,a){if(!(a.from===this.uid||K.node||!i.getDom())){var o=$p(a,i);this._ticket="";var s=a.dataByCoordSys,u=c2(a,n,i);if(u){var l=u.el.getBoundingRect().clone();l.applyTransform(u.el.transform),this._tryShow({offsetX:l.x+l.width/2,offsetY:l.y+l.height/2,target:u.el,position:a.position,positionDefault:"bottom"},o)}else if(a.tooltip&&a.x!=null&&a.y!=null){var f=s2;f.x=a.x,f.y=a.y,f.update(),yt(f).tooltipConfig={name:null,option:a.tooltip},this._tryShow({offsetX:a.x,offsetY:a.y,target:f},o)}else if(s)this._tryShow({offsetX:a.x,offsetY:a.y,position:a.position,dataByCoordSys:s,tooltipOption:a.tooltipOption},o);else if(a.seriesIndex!=null){if(this._manuallyAxisShowTip(r,n,i,a))return;var h=s_(a,n),c=h.point[0],v=h.point[1];c!=null&&v!=null&&this._tryShow({offsetX:c,offsetY:v,target:h.el,position:a.position,positionDefault:"bottom"},o)}else a.x!=null&&a.y!=null&&(i.dispatchAction({type:"updateAxisPointer",x:a.x,y:a.y}),this._tryShow({offsetX:a.x,offsetY:a.y,position:a.position,target:i.getZr().findHover(a.x,a.y).target},o))}},t.prototype.manuallyHideTip=function(r,n,i,a){var o=this._tooltipContent;this._tooltipModel&&o.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=this._lastDataByCoordSys=null,this._cbParamsList=null,a.from!==this.uid&&this._hide($p(a,i))},t.prototype._manuallyAxisShowTip=function(r,n,i,a){var o=a.seriesIndex,s=a.dataIndex,u=n.getComponent("axisPointer").coordSysAxesInfo;if(!(o==null||s==null||u==null)){var l=n.getSeriesByIndex(o);if(l){var f=l.getData(),h=Li([f.getItemModel(s),l,(l.coordinateSystem||{}).model],this._tooltipModel);if(h.get("trigger")==="axis")return i.dispatchAction({type:"updateAxisPointer",seriesIndex:o,dataIndex:s,position:a.position}),!0}}},t.prototype._tryShow=function(r,n){var i=r.target,a=this._tooltipModel;if(a){this._lastX=r.offsetX,this._lastY=r.offsetY;var o=r.dataByCoordSys;if(o&&o.length)this._showAxisTooltip(o,r);else if(i){var s=yt(i);if(s.ssrType==="legend")return;this._lastDataByCoordSys=null,this._cbParamsList=null;var u,l;zi(i,function(f){if(f.tooltipDisabled)return u=l=null,!0;u||l||(yt(f).dataIndex!=null?u=f:yt(f).tooltipConfig!=null&&(l=f))},!0),u?this._showSeriesItemTooltip(r,u,n):l?this._showComponentItemTooltip(r,l,n):this._hide(n)}else this._lastDataByCoordSys=null,this._cbParamsList=null,this._hide(n)}},t.prototype._showOrMove=function(r,n){var i=r.get("showDelay");n=_t(n,this),clearTimeout(this._showTimout),i>0?this._showTimout=setTimeout(n,i):n()},t.prototype._showAxisTooltip=function(r,n){var i=this._ecModel,a=this._tooltipModel,o=[n.offsetX,n.offsetY],s=Li([n.tooltipOption],a),u=this._renderMode,l=[],f=fa("section",{blocks:[],noHeader:!0}),h=[],c=new qu;b(r,function(y){b(y.dataByAxis,function(_){var S=i.getComponent(_.axisDim+"Axis",_.axisIndex),T=_.value,w=S.axis,x=w.scale.parse(T);if(!(!S||T==null)){var D=i_(T,w,i,_.seriesDataIndices,_.valueLabelOpt),M=fa("section",{header:D,noHeader:!Oe(D),sortBlocks:!0,blocks:[]});f.blocks.push(M),b(_.seriesDataIndices,function(C){var A=i.getSeriesByIndex(C.seriesIndex),I=C.dataIndexInside,L=A.getDataParams(I);if(!(L.dataIndex<0)){L.axisDim=_.axisDim,L.axisIndex=_.axisIndex,L.axisType=_.axisType,L.axisId=_.axisId,L.axisValue=vs(S.axis,{value:x}),L.axisValueLabel=D,L.marker=c.makeTooltipMarker("item",sa(L.color),u);var P=fd(A.formatTooltip(I,!0,null)),E=P.frag;if(E){var R=Li([A],a).get("valueFormatter");M.blocks.push(R?k({valueFormatter:R},E):E)}P.text&&h.push(P.text),l.push(L)}})}})}),f.blocks.reverse(),h.reverse();var v=n.position,d=s.get("order"),g=pd(f,c,u,d,i.get("useUTC"),s.get("textStyle"));g&&h.unshift(g);var p=u==="richText"?` + +`:"
    ",m=h.join(p);this._showOrMove(s,function(){this._updateContentNotChangedOnAxis(r,l)?this._updatePosition(s,v,o[0],o[1],this._tooltipContent,l):this._showTooltipContent(s,m,l,Math.random()+"",o[0],o[1],v,null,c)})},t.prototype._showSeriesItemTooltip=function(r,n,i){var a=this._ecModel,o=yt(n),s=o.seriesIndex,u=a.getSeriesByIndex(s),l=o.dataModel||u,f=o.dataIndex,h=o.dataType,c=l.getData(h),v=this._renderMode,d=r.positionDefault,g=Li([c.getItemModel(f),l,u&&(u.coordinateSystem||{}).model],this._tooltipModel,d?{position:d}:null),p=g.get("trigger");if(!(p!=null&&p!=="item")){var m=l.getDataParams(f,h),y=new qu;m.marker=y.makeTooltipMarker("item",sa(m.color),v);var _=fd(l.formatTooltip(f,!1,h)),S=g.get("order"),T=g.get("valueFormatter"),w=_.frag,x=w?pd(T?k({valueFormatter:T},w):w,y,v,S,a.get("useUTC"),g.get("textStyle")):_.text,D="item_"+l.name+"_"+f;this._showOrMove(g,function(){this._showTooltipContent(g,x,m,D,r.offsetX,r.offsetY,r.position,r.target,y)}),i({type:"showTip",dataIndexInside:f,dataIndex:c.getRawIndex(f),seriesIndex:s,from:this.uid})}},t.prototype._showComponentItemTooltip=function(r,n,i){var a=this._renderMode==="html",o=yt(n),s=o.tooltipConfig,u=s.option||{},l=u.encodeHTMLContent;if(F(u)){var f=u;u={content:f,formatter:f},l=!0}l&&a&&u.content&&(u=rt(u),u.content=Yt(u.content));var h=[u],c=this._ecModel.getComponent(o.componentMainType,o.componentIndex);c&&h.push(c),h.push({formatter:u.content});var v=r.positionDefault,d=Li(h,this._tooltipModel,v?{position:v}:null),g=d.get("content"),p=Math.random()+"",m=new qu;this._showOrMove(d,function(){var y=rt(d.get("formatterParams")||{});this._showTooltipContent(d,g,y,p,r.offsetX,r.offsetY,r.position,n,m)}),i({type:"showTip",from:this.uid})},t.prototype._showTooltipContent=function(r,n,i,a,o,s,u,l,f){if(this._ticket="",!(!r.get("showContent")||!r.get("show"))){var h=this._tooltipContent;h.setEnterable(r.get("enterable"));var c=r.get("formatter");u=u||r.get("position");var v=n,d=this._getNearestPoint([o,s],i,r.get("trigger"),r.get("borderColor"),r.get("defaultBorderColor",!0)),g=d.color;if(c)if(F(c)){var p=r.ecModel.get("useUTC"),m=B(i)?i[0]:i,y=m&&m.axisType&&m.axisType.indexOf("time")>=0;v=c,y&&(v=Vs(m.axisValue,v,p)),v=Km(v,i,!0)}else if(j(c)){var _=_t(function(S,T){S===this._ticket&&(h.setContent(T,f,r,g,u),this._updatePosition(r,u,o,s,h,i,l))},this);this._ticket=a,v=c(i,a,_)}else v=c;h.setContent(v,f,r,g,u),h.show(r,g),this._updatePosition(r,u,o,s,h,i,l)}},t.prototype._getNearestPoint=function(r,n,i,a,o){if(i==="axis"||B(n))return{color:a||o};if(!B(n))return{color:a||n.color||n.borderColor}},t.prototype._updatePosition=function(r,n,i,a,o,s,u){var l=this._api.getWidth(),f=this._api.getHeight();n=n||r.get("position");var h=o.getSize(),c=r.get("align"),v=r.get("verticalAlign"),d=u&&u.getBoundingRect().clone();if(u&&d.applyTransform(u.transform),j(n)&&(n=n([i,a],s,o.el,d,{viewSize:[l,f],contentSize:h.slice()})),B(n))i=Bt(n[0],l),a=Bt(n[1],f);else if(H(n)){var g=n;g.width=h[0],g.height=h[1];var p=fn(g,{width:l,height:f});i=p.x,a=p.y,c=null,v=null}else if(F(n)&&u){var m=h2(n,d,h,r.get("borderWidth"));i=m[0],a=m[1]}else{var m=l2(i,a,o,l,f,c?null:20,v?null:20);i=m[0],a=m[1]}if(c&&(i-=qp(c)?h[0]/2:c==="right"?h[0]:0),v&&(a-=qp(v)?h[1]/2:v==="bottom"?h[1]:0),l_(r)){var m=f2(i,a,o,l,f);i=m[0],a=m[1]}o.moveTo(i,a)},t.prototype._updateContentNotChangedOnAxis=function(r,n){var i=this._lastDataByCoordSys,a=this._cbParamsList,o=!!i&&i.length===r.length;return o&&b(i,function(s,u){var l=s.dataByAxis||[],f=r[u]||{},h=f.dataByAxis||[];o=o&&l.length===h.length,o&&b(l,function(c,v){var d=h[v]||{},g=c.seriesDataIndices||[],p=d.seriesDataIndices||[];o=o&&c.value===d.value&&c.axisType===d.axisType&&c.axisId===d.axisId&&g.length===p.length,o&&b(g,function(m,y){var _=p[y];o=o&&m.seriesIndex===_.seriesIndex&&m.dataIndex===_.dataIndex}),a&&b(c.seriesDataIndices,function(m){var y=m.seriesIndex,_=n[y],S=a[y];_&&S&&S.data!==_.data&&(o=!1)})})}),this._lastDataByCoordSys=r,this._cbParamsList=n,!!o},t.prototype._hide=function(r){this._lastDataByCoordSys=null,this._cbParamsList=null,r({type:"hideTip",from:this.uid})},t.prototype.dispose=function(r,n){K.node||!n.getDom()||(pf(this,"_updatePosition"),this._tooltipContent.dispose(),Nf("itemTooltip",n),this._tooltipContent=null,this._tooltipModel=null,this._lastDataByCoordSys=null,this._cbParamsList=null)},t.type="tooltip",t})(Ue);function Li(e,t,r){var n=t.ecModel,i;r?(i=new St(r,n,n),i=new St(t.option,i,n)):i=t;for(var a=e.length-1;a>=0;a--){var o=e[a];o&&(o instanceof St&&(o=o.get("tooltip",!0)),F(o)&&(o={formatter:o}),o&&(i=new St(o,i,n)))}return i}function $p(e,t){return e.dispatchAction||_t(t.dispatchAction,t)}function l2(e,t,r,n,i,a,o){var s=r.getSize(),u=s[0],l=s[1];return a!=null&&(e+u+a+2>n?e-=u+a:e+=a),o!=null&&(t+l+o>i?t-=l+o:t+=o),[e,t]}function f2(e,t,r,n,i){var a=r.getSize(),o=a[0],s=a[1];return e=Math.min(e+o,n)-o,t=Math.min(t+s,i)-s,e=Math.max(e,0),t=Math.max(t,0),[e,t]}function h2(e,t,r,n){var i=r[0],a=r[1],o=Math.ceil(Math.SQRT2*n)+8,s=0,u=0,l=t.width,f=t.height;switch(e){case"inside":s=t.x+l/2-i/2,u=t.y+f/2-a/2;break;case"top":s=t.x+l/2-i/2,u=t.y-a-o;break;case"bottom":s=t.x+l/2-i/2,u=t.y+f+o;break;case"left":s=t.x-i-o,u=t.y+f/2-a/2;break;case"right":s=t.x+l+o,u=t.y+f/2-a/2}return[s,u]}function qp(e){return e==="center"||e==="middle"}function c2(e,t,r){var n=rh(e).queryOptionMap,i=n.keys()[0];if(!(!i||i==="series")){var a=ba(t,i,n.get(i),{useDefault:!1,enableAll:!1,enableNone:!1}),o=a.models[0];if(o){var s=r.getViewOfComponentModel(o),u;if(s.group.traverse(function(l){var f=yt(l).tooltipConfig;if(f&&f.name===e.name)return u=l,!0}),u)return{componentMainType:i,componentIndex:o.componentIndex,el:u}}}}function hP(e){vn(u_),e.registerComponentModel(qI),e.registerComponentView(u2),e.registerAction({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},Nt),e.registerAction({type:"hideTip",event:"hideTip",update:"tooltip:manuallyHideTip"},Nt)}var v2=function(e,t){if(t==="all")return{type:"all",title:e.getLocaleModel().get(["legend","selector","all"])};if(t==="inverse")return{type:"inverse",title:e.getLocaleModel().get(["legend","selector","inverse"])}},Ff=(function(e){z(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.type=t.type,r.layoutMode={type:"box",ignoreSize:!0},r}return t.prototype.init=function(r,n,i){this.mergeDefaultAndTheme(r,i),r.selected=r.selected||{},this._updateSelector(r)},t.prototype.mergeOption=function(r,n){e.prototype.mergeOption.call(this,r,n),this._updateSelector(r)},t.prototype._updateSelector=function(r){var n=r.selector,i=this.ecModel;n===!0&&(n=r.selector=["all","inverse"]),B(n)&&b(n,function(a,o){F(a)&&(a={type:a}),n[o]=lt(a,v2(i,a.type))})},t.prototype.optionUpdated=function(){this._updateData(this.ecModel);var r=this._data;if(r[0]&&this.get("selectedMode")==="single"){for(var n=!1,i=0;i=0},t.prototype.getOrient=function(){return this.get("orient")==="vertical"?{index:1,name:"vertical"}:{index:0,name:"horizontal"}},t.type="legend.plain",t.dependencies=["series"],t.defaultOption={z:4,show:!0,orient:"horizontal",left:"center",bottom:U.size.m,align:"auto",backgroundColor:U.color.transparent,borderColor:U.color.border,borderRadius:0,borderWidth:0,padding:5,itemGap:8,itemWidth:25,itemHeight:14,symbolRotate:"inherit",symbolKeepAspect:!0,inactiveColor:U.color.disabled,inactiveBorderColor:U.color.disabled,inactiveBorderWidth:"auto",itemStyle:{color:"inherit",opacity:"inherit",borderColor:"inherit",borderWidth:"auto",borderCap:"inherit",borderJoin:"inherit",borderDashOffset:"inherit",borderMiterLimit:"inherit"},lineStyle:{width:"auto",color:"inherit",inactiveColor:U.color.disabled,inactiveWidth:2,opacity:"inherit",type:"inherit",cap:"inherit",join:"inherit",dashOffset:"inherit",miterLimit:"inherit"},textStyle:{color:U.color.secondary},selectedMode:!0,selector:!1,selectorLabel:{show:!0,borderRadius:10,padding:[3,5,3,5],fontSize:12,fontFamily:"sans-serif",color:U.color.tertiary,borderWidth:1,borderColor:U.color.border},emphasis:{selectorLabel:{show:!0,color:U.color.quaternary}},selectorPosition:"auto",selectorItemGap:7,selectorButtonGap:10,tooltip:{show:!1},triggerEvent:!1},t})(ft),Rn=Ct,zf=b,mo=re,v_=(function(e){z(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.type=t.type,r.newlineDisabled=!1,r}return t.prototype.init=function(){this.group.add(this._contentGroup=new mo),this.group.add(this._selectorGroup=new mo),this._isFirstRender=!0},t.prototype.getContentGroup=function(){return this._contentGroup},t.prototype.getSelectorGroup=function(){return this._selectorGroup},t.prototype.render=function(r,n,i){var a=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),!!r.get("show",!0)){var o=r.get("align"),s=r.get("orient");(!o||o==="auto")&&(o=r.get("left")==="right"&&s==="vertical"?"right":"left");var u=r.get("selector",!0),l=r.get("selectorPosition",!0);u&&(!l||l==="auto")&&(l=s==="horizontal"?"end":"start"),this.renderInner(o,r,n,i,u,s,l);var f=Nh(r,i).refContainer,h=r.getBoxLayoutParams(),c=r.get("padding"),v=fn(h,f,c),d=this.layoutInner(r,o,v,a,u,l),g=fn(pt({width:d.width,height:d.height},h),f,c);this.group.x=g.x-d.x,this.group.y=g.y-d.y,this.group.markRedraw(),this.group.add(this._backgroundEl=$I(d,r))}},t.prototype.resetInner=function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl),this.getSelectorGroup().removeAll()},t.prototype.renderInner=function(r,n,i,a,o,s,u){var l=this.getContentGroup(),f=W(),h=n.get("selectedMode"),c=n.get("triggerEvent"),v=[];i.eachRawSeries(function(d){!d.get("legendHoverLink")&&v.push(d.id)}),zf(n.getData(),function(d,g){var p=this,m=d.get("name");if(!this.newlineDisabled&&(m===""||m===` +`)){var y=new mo;y.newline=!0,l.add(y);return}var _=i.getSeriesByName(m)[0];if(!f.get(m))if(_){var S=_.getData(),T=S.getVisual("legendLineStyle")||{},w=S.getVisual("legendIcon"),x=S.getVisual("style"),D=this._createItem(_,m,g,d,n,r,T,x,w,h,a);D.on("click",Rn(Kp,m,null,a,v)).on("mouseover",Rn(Hf,_.name,null,a,v)).on("mouseout",Rn(Vf,_.name,null,a,v)),i.ssr&&D.eachChild(function(M){var C=yt(M);C.seriesIndex=_.seriesIndex,C.dataIndex=g,C.ssrType="legend"}),c&&D.eachChild(function(M){p.packEventData(M,n,_,g,m)}),f.set(m,!0)}else i.eachRawSeries(function(M){var C=this;if(!f.get(m)&&M.legendVisualProvider){var A=M.legendVisualProvider;if(!A.containName(m))return;var I=A.indexOfName(m),L=A.getItemVisual(I,"style"),P=A.getItemVisual(I,"legendIcon"),E=Ne(L.fill);E&&E[3]===0&&(E[3]=.2,L=k(k({},L),{fill:_a(E,"rgba")}));var R=this._createItem(M,m,g,d,n,r,{},L,P,h,a);R.on("click",Rn(Kp,null,m,a,v)).on("mouseover",Rn(Hf,null,m,a,v)).on("mouseout",Rn(Vf,null,m,a,v)),i.ssr&&R.eachChild(function(N){var X=yt(N);X.seriesIndex=M.seriesIndex,X.dataIndex=g,X.ssrType="legend"}),c&&R.eachChild(function(N){C.packEventData(N,n,M,g,m)}),f.set(m,!0)}},this)},this),o&&this._createSelector(o,n,a,s,u)},t.prototype.packEventData=function(r,n,i,a,o){var s={componentType:"legend",componentIndex:n.componentIndex,dataIndex:a,value:o,seriesIndex:i.seriesIndex};yt(r).eventData=s},t.prototype._createSelector=function(r,n,i,a,o){var s=this.getSelectorGroup();zf(r,function(l){var f=l.type,h=new ie({style:{x:0,y:0,align:"center",verticalAlign:"middle"},onclick:function(){i.dispatchAction({type:f==="all"?"legendAllSelect":"legendInverseSelect",legendId:n.id})}});s.add(h);var c=n.getModel("selectorLabel"),v=n.getModel(["emphasis","selectorLabel"]);_x(h,{normal:c,emphasis:v},{defaultText:l.title}),tf(h)})},t.prototype._createItem=function(r,n,i,a,o,s,u,l,f,h,c){var v=r.visualDrawType,d=o.get("itemWidth"),g=o.get("itemHeight"),p=o.isSelected(n),m=a.get("symbolRotate"),y=a.get("symbolKeepAspect"),_=a.get("icon");f=_||f||"roundRect";var S=d2(f,a,u,l,v,p,c),T=new mo,w=a.getModel("textStyle");if(j(r.getLegendIcon)&&(!_||_==="inherit"))T.add(r.getLegendIcon({itemWidth:d,itemHeight:g,icon:f,iconRotate:m,itemStyle:S.itemStyle,lineStyle:S.lineStyle,symbolKeepAspect:y}));else{var x=_==="inherit"&&r.getData().getVisual("symbol")?m==="inherit"?r.getData().getVisual("symbolRotate"):m:0;T.add(p2({itemWidth:d,itemHeight:g,icon:f,iconRotate:x,itemStyle:S.itemStyle,symbolKeepAspect:y}))}var D=s==="left"?d+5:-5,M=s,C=o.get("formatter"),A=n;F(C)&&C?A=C.replace("{name}",n??""):j(C)&&(A=C(n));var I=p?w.getTextColor():a.get("inactiveColor");T.add(new ie({style:ei(w,{text:A,x:D,y:g/2,fill:I,align:M,verticalAlign:"middle"},{inheritColor:I})}));var L=new Mt({shape:T.getBoundingRect(),style:{fill:"transparent"}}),P=a.getModel("tooltip");return P.get("show")&&Ns({el:L,componentModel:o,itemName:n,itemTooltipOption:P.option}),T.add(L),T.eachChild(function(E){E.silent=!0}),L.silent=!h,this.getContentGroup().add(T),tf(T),T.__legendDataIndex=i,T},t.prototype.layoutInner=function(r,n,i,a,o,s){var u=this.getContentGroup(),l=this.getSelectorGroup();qi(r.get("orient"),u,r.get("itemGap"),i.width,i.height);var f=u.getBoundingRect(),h=[-f.x,-f.y];if(l.markRedraw(),u.markRedraw(),o){qi("horizontal",l,r.get("selectorItemGap",!0));var c=l.getBoundingRect(),v=[-c.x,-c.y],d=r.get("selectorButtonGap",!0),g=r.getOrient().index,p=g===0?"width":"height",m=g===0?"height":"width",y=g===0?"y":"x";s==="end"?v[g]+=f[p]+d:h[g]+=c[p]+d,v[1-g]+=f[m]/2-c[m]/2,l.x=v[0],l.y=v[1],u.x=h[0],u.y=h[1];var _={x:0,y:0};return _[p]=f[p]+d+c[p],_[m]=Math.max(f[m],c[m]),_[y]=Math.min(0,c[y]+v[1-g]),_}else return u.x=h[0],u.y=h[1],this.group.getBoundingRect()},t.prototype.remove=function(){this.getContentGroup().removeAll(),this._isFirstRender=!0},t.type="legend.plain",t})(Ue);function d2(e,t,r,n,i,a,o){function s(p,m){p.lineWidth==="auto"&&(p.lineWidth=m.lineWidth>0?2:0),zf(p,function(y,_){p[_]==="inherit"&&(p[_]=m[_])})}var u=t.getModel("itemStyle"),l=u.getItemStyle(),f=e.lastIndexOf("empty",0)===0?"fill":"stroke",h=u.getShallow("decal");l.decal=!h||h==="inherit"?n.decal:Sf(h,o),l.fill==="inherit"&&(l.fill=n[i]),l.stroke==="inherit"&&(l.stroke=n[f]),l.opacity==="inherit"&&(l.opacity=(i==="fill"?n:r).opacity),s(l,n);var c=t.getModel("lineStyle"),v=c.getLineStyle();if(s(v,r),l.fill==="auto"&&(l.fill=n.fill),l.stroke==="auto"&&(l.stroke=n.fill),v.stroke==="auto"&&(v.stroke=n.fill),!a){var d=t.get("inactiveBorderWidth"),g=l[f];l.lineWidth=d==="auto"?n.lineWidth>0&&g?2:0:l.lineWidth,l.fill=t.get("inactiveColor"),l.stroke=t.get("inactiveBorderColor"),v.stroke=c.get("inactiveColor"),v.lineWidth=c.get("inactiveWidth")}return{itemStyle:l,lineStyle:v}}function p2(e){var t=e.icon||"roundRect",r=Yh(t,0,0,e.itemWidth,e.itemHeight,e.itemStyle.fill,e.symbolKeepAspect);return r.setStyle(e.itemStyle),r.rotation=(e.iconRotate||0)*Math.PI/180,r.setOrigin([e.itemWidth/2,e.itemHeight/2]),t.indexOf("empty")>-1&&(r.style.stroke=r.style.fill,r.style.fill=U.color.neutral00,r.style.lineWidth=2),r}function Kp(e,t,r,n){Vf(e,t,r,n),r.dispatchAction({type:"legendToggleSelect",name:e??t}),Hf(e,t,r,n)}function Hf(e,t,r,n){r.usingTHL()||r.dispatchAction({type:"highlight",seriesName:e,name:t,excludeSeriesId:n})}function Vf(e,t,r,n){r.usingTHL()||r.dispatchAction({type:"downplay",seriesName:e,name:t,excludeSeriesId:n})}function Ii(e,t,r){var n=e==="allSelect"||e==="inverseSelect",i={},a=[];r.eachComponent({mainType:"legend",query:t},function(s){n?s[e]():s[e](t.name),Qp(s,i),a.push(s.componentIndex)});var o={};return r.eachComponent("legend",function(s){b(i,function(u,l){s[u?"select":"unSelect"](l)}),Qp(s,o)}),n?{selected:o,legendIndex:a}:{name:t.name,selected:o}}function Qp(e,t){var r=t||{};return b(e.getData(),function(n){var i=n.get("name");if(!(i===` +`||i==="")){var a=e.isSelected(i);qt(r,i)?r[i]=r[i]&&a:r[i]=a}}),r}function g2(e){e.registerAction("legendToggleSelect","legendselectchanged",Ct(Ii,"toggleSelected")),e.registerAction("legendAllSelect","legendselectall",Ct(Ii,"allSelect")),e.registerAction("legendInverseSelect","legendinverseselect",Ct(Ii,"inverseSelect")),e.registerAction("legendSelect","legendselected",Ct(Ii,"select")),e.registerAction("legendUnSelect","legendunselected",Ct(Ii,"unSelect"))}var m2=ih(y2);function y2(e){var t=e.findComponents({mainType:"legend"});t&&t.length&&e.filterSeries(function(r){for(var n=0;ni[o],p=[-v.x,-v.y];n||(p[a]=f[l]);var m=[0,0],y=[-d.x,-d.y],_=G(r.get("pageButtonGap",!0),r.get("itemGap",!0));if(g){var S=r.get("pageButtonPosition",!0);S==="end"?y[a]+=i[o]-d[o]:m[a]+=d[o]+_}y[1-a]+=v[s]/2-d[s]/2,f.setPosition(p),h.setPosition(m),c.setPosition(y);var T={x:0,y:0};if(T[o]=g?i[o]:v[o],T[s]=Math.max(v[s],d[s]),T[u]=Math.min(0,d[u]+y[1-a]),h.__rectSize=i[o],g){var w={x:0,y:0};w[o]=Math.max(i[o]-d[o]-_,0),w[s]=T[s],h.setClipPath(new Mt({shape:w})),h.__rectSize=w[o]}else c.eachChild(function(D){D.attr({invisible:!0,silent:!0})});var x=this._getPageInfo(r);return x.pageIndex!=null&&Ma(f,{x:x.contentPosition[0],y:x.contentPosition[1]},g?r:null),this._updatePageInfoView(r,x),T},t.prototype._pageGo=function(r,n,i){var a=this._getPageInfo(n)[r];a!=null&&i.dispatchAction({type:"legendScroll",scrollDataIndex:a,legendId:n.id})},t.prototype._updatePageInfoView=function(r,n){var i=this._controllerGroup;b(["pagePrev","pageNext"],function(f){var h=f+"DataIndex",c=n[h]!=null,v=i.childOfName(f);v&&(v.setStyle("fill",c?r.get("pageIconColor",!0):r.get("pageIconInactiveColor",!0)),v.cursor=c?"pointer":"default")});var a=i.childOfName("pageText"),o=r.get("pageFormatter"),s=n.pageIndex,u=s!=null?s+1:0,l=n.pageCount;a&&o&&a.setStyle("text",F(o)?o.replace("{current}",u==null?"":u+"").replace("{total}",l==null?"":l+""):o({current:u,total:l}))},t.prototype._getPageInfo=function(r){var n=r.get("scrollDataIndex",!0),i=this.getContentGroup(),a=this._containerGroup.__rectSize,o=r.getOrient().index,s=ml[o],u=yl[o],l=this._findTargetItemIndex(n),f=i.children(),h=f[l],c=f.length,v=c?1:0,d={contentPosition:[i.x,i.y],pageCount:v,pageIndex:v-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!h)return d;var g=S(h);d.contentPosition[o]=-g.s;for(var p=l+1,m=g,y=g,_=null;p<=c;++p)_=S(f[p]),(!_&&y.e>m.s+a||_&&!T(_,m.s))&&(y.i>m.i?m=y:m=_,m&&(d.pageNextDataIndex==null&&(d.pageNextDataIndex=m.i),++d.pageCount)),y=_;for(var p=l-1,m=g,y=g,_=null;p>=-1;--p)_=S(f[p]),(!_||!T(y,_.s))&&m.i=x&&w.s<=x+a}},t.prototype._findTargetItemIndex=function(r){if(!this._showController)return 0;var n,i=this.getContentGroup(),a;return i.eachChild(function(o,s){var u=o.__legendDataIndex;a==null&&u!=null&&(a=s),u===r&&(n=s)}),n??a},t.type="legend.scroll",t})(v_);function T2(e){e.registerAction("legendScroll","legendscroll",function(t,r){var n=t.scrollDataIndex;n!=null&&r.eachComponent({mainType:"legend",subType:"scroll",query:t},function(i){i.setScrollDataIndex(n)})})}function w2(e){vn(d_),e.registerComponentModel(_2),e.registerComponentView(S2),T2(e)}function cP(e){vn(d_),vn(w2)}export{B2 as $,np as A,Bt as B,Fo as C,wv as D,b as E,iP as F,qt as G,ne as H,ht as I,Y2 as J,hn as K,X2 as L,qS as M,Rx as N,U as O,ct as P,Ag as Q,Tt as R,wr as S,B as T,Y as U,Qn as V,Pm as W,Bs as X,Ma as Y,Jw as Z,z as _,ph as a,Jn as a$,xh as a0,re as a1,oP as a2,yt as a3,un as a4,Os as a5,Mt as a6,k as a7,N2 as a8,_x as a9,Gn as aA,U2 as aB,vn as aC,eP as aD,fP as aE,hP as aF,cP as aG,tP as aH,xr as aI,at as aJ,ei as aK,qT as aL,pn as aM,Yh as aN,z2 as aO,F as aP,j as aQ,A2 as aR,hD as aS,fD as aT,Kl as aU,Ql as aV,hM as aW,wm as aX,W2 as aY,Cm as aZ,H as a_,rP as aa,F2 as ab,nP as ac,O2 as ad,k2 as ae,sP as af,P2 as ag,mt as ah,Wh as ai,uP as aj,_t as ak,Ct as al,G2 as am,L2 as an,Jc as ao,vt as ap,H2 as aq,Z as ar,GA as as,J2 as at,E2 as au,V2 as av,xT as aw,qc as ax,rt as ay,ie as az,j_ as b,mg as b0,Vt as b1,sa as b2,xa as b3,R2 as b4,HS as b5,$s as b6,Uw as b7,wL as b8,xL as b9,Nh as bA,Da as bB,fn as bC,mf as bD,tf as bE,sx as bF,ux as bG,_h as bH,dh as bI,VS as ba,D2 as bb,Ee as bc,fi as bd,Nt as be,Em as bf,M2 as bg,lg as bh,Ye as bi,_S as bj,JC as bk,st as bl,lt as bm,I2 as bn,pe as bo,ft as bp,Ue as bq,WS as br,tc as bs,yS as bt,Ta as bu,ln as bv,vA as bw,Q2 as bx,Cy as by,pf as bz,q2 as c,pt as d,W as e,Eg as f,w0 as g,Xb as h,Ge as i,rA as j,Xe as k,C2 as l,qs as m,K2 as n,$2 as o,Yb as p,lP as q,G as r,_D as s,TL as t,aP as u,bC as v,YS as w,j2 as x,Z2 as y,Lt as z}; diff --git a/frontend/dist/assets/javascript-iXu5QeM3.js b/frontend/dist/assets/javascript-iXu5QeM3.js new file mode 100644 index 0000000..08038ab --- /dev/null +++ b/frontend/dist/assets/javascript-iXu5QeM3.js @@ -0,0 +1 @@ +function fr(x){var pr=x.statementIndent,ur=x.jsonld,br=x.json||ur,k=x.typescript,U=x.wordCharacters||/[\w$\xa1-\uffff]/,wr=(function(){function r(y){return{type:y,style:"keyword"}}var e=r("keyword a"),t=r("keyword b"),f=r("keyword c"),u=r("keyword d"),c=r("operator"),m={type:"atom",style:"atom"};return{if:r("if"),while:e,with:e,else:t,do:t,try:t,finally:t,return:u,break:u,continue:u,new:r("new"),delete:f,void:f,throw:f,debugger:r("debugger"),var:r("var"),const:r("var"),let:r("var"),function:r("function"),catch:r("catch"),for:r("for"),switch:r("switch"),case:r("case"),default:r("default"),in:c,typeof:c,instanceof:c,true:m,false:m,null:m,undefined:m,NaN:m,Infinity:m,this:r("this"),class:r("class"),super:r("atom"),yield:f,export:r("export"),import:r("import"),extends:f,await:f}})(),hr=/[+\-*&%=<>!?|~^@]/,Or=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function qr(r){for(var e=!1,t,f=!1;(t=r.next())!=null;){if(!e){if(t=="/"&&!f)return;t=="["?f=!0:f&&t=="]"&&(f=!1)}e=!e&&t=="\\"}}var D,G;function b(r,e,t){return D=r,G=t,e}function S(r,e){var t=r.next();if(t=='"'||t=="'")return e.tokenize=Nr(t),e.tokenize(r,e);if(t=="."&&r.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return b("number","number");if(t=="."&&r.match(".."))return b("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(t))return b(t);if(t=="="&&r.eat(">"))return b("=>","operator");if(t=="0"&&r.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return b("number","number");if(/\d/.test(t))return r.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),b("number","number");if(t=="/")return r.eat("*")?(e.tokenize=H,H(r,e)):r.eat("/")?(r.skipToEnd(),b("comment","comment")):ce(r,e,1)?(qr(r),r.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),b("regexp","string.special")):(r.eat("="),b("operator","operator",r.current()));if(t=="`")return e.tokenize=L,L(r,e);if(t=="#"&&r.peek()=="!")return r.skipToEnd(),b("meta","meta");if(t=="#"&&r.eatWhile(U))return b("variable","property");if(t=="<"&&r.match("!--")||t=="-"&&r.match("->")&&!/\S/.test(r.string.slice(0,r.start)))return r.skipToEnd(),b("comment","comment");if(hr.test(t))return(t!=">"||!e.lexical||e.lexical.type!=">")&&(r.eat("=")?(t=="!"||t=="=")&&r.eat("="):/[<>*+\-|&?]/.test(t)&&(r.eat(t),t==">"&&r.eat(t))),t=="?"&&r.eat(".")?b("."):b("operator","operator",r.current());if(U.test(t)){r.eatWhile(U);var f=r.current();if(e.lastType!="."){if(wr.propertyIsEnumerable(f)){var u=wr[f];return b(u.type,u.style,f)}if(f=="async"&&r.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return b("async","keyword",f)}return b("variable","variable",f)}}function Nr(r){return function(e,t){var f=!1,u;if(ur&&e.peek()=="@"&&e.match(Or))return t.tokenize=S,b("jsonld-keyword","meta");for(;(u=e.next())!=null&&!(u==r&&!f);)f=!f&&u=="\\";return f||(t.tokenize=S),b("string","string")}}function H(r,e){for(var t=!1,f;f=r.next();){if(f=="/"&&t){e.tokenize=S;break}t=f=="*"}return b("comment","comment")}function L(r,e){for(var t=!1,f;(f=r.next())!=null;){if(!t&&(f=="`"||f=="$"&&r.eat("{"))){e.tokenize=S;break}t=!t&&f=="\\"}return b("quasi","string.special",r.current())}var Br="([{}])";function ar(r,e){e.fatArrowAt&&(e.fatArrowAt=null);var t=r.string.indexOf("=>",r.start);if(!(t<0)){if(k){var f=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(r.string.slice(r.start,t));f&&(t=f.index)}for(var u=0,c=!1,m=t-1;m>=0;--m){var y=r.string.charAt(m),v=Br.indexOf(y);if(v>=0&&v<3){if(!u){++m;break}if(--u==0){y=="("&&(c=!0);break}}else if(v>=3&&v<6)++u;else if(U.test(y))c=!0;else if(/["'\/`]/.test(y))for(;;--m){if(m==0)return;var K=r.string.charAt(m-1);if(K==y&&r.string.charAt(m-2)!="\\"){m--;break}}else if(c&&!u){++m;break}}c&&!u&&(e.fatArrowAt=m)}}var Fr={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function xr(r,e,t,f,u,c){this.indented=r,this.column=e,this.type=t,this.prev=u,this.info=c,f!=null&&(this.align=f)}function Jr(r,e){for(var t=r.localVars;t;t=t.next)if(t.name==e)return!0;for(var f=r.context;f;f=f.prev)for(var t=f.vars;t;t=t.next)if(t.name==e)return!0}function Mr(r,e,t,f,u){var c=r.cc;for(i.state=r,i.stream=u,i.marked=null,i.cc=c,i.style=e,r.lexical.hasOwnProperty("align")||(r.lexical.align=!0);;){var m=c.length?c.pop():br?p:w;if(m(t,f)){for(;c.length&&c[c.length-1].lex;)c.pop()();return i.marked?i.marked:t=="variable"&&Jr(r,f)?"variableName.local":e}}}var i={state:null,marked:null,cc:null};function o(){for(var r=arguments.length-1;r>=0;r--)i.cc.push(arguments[r])}function n(){return o.apply(null,arguments),!0}function or(r,e){for(var t=e;t;t=t.next)if(t.name==r)return!0;return!1}function q(r){var e=i.state;if(i.marked="def",e.context){if(e.lexical.info=="var"&&e.context&&e.context.block){var t=gr(r,e.context);if(t!=null){e.context=t;return}}else if(!or(r,e.localVars)){e.localVars=new Q(r,e.localVars);return}}x.globalVars&&!or(r,e.globalVars)&&(e.globalVars=new Q(r,e.globalVars))}function gr(r,e){if(e)if(e.block){var t=gr(r,e.prev);return t?t==e.prev?e:new P(t,e.vars,!0):null}else return or(r,e.vars)?e:new P(e.prev,new Q(r,e.vars),!1);else return null}function X(r){return r=="public"||r=="private"||r=="protected"||r=="abstract"||r=="readonly"}function P(r,e,t){this.prev=r,this.vars=e,this.block=t}function Q(r,e){this.name=r,this.next=e}var Dr=new Q("this",new Q("arguments",null));function E(){i.state.context=new P(i.state.context,i.state.localVars,!1),i.state.localVars=Dr}function Y(){i.state.context=new P(i.state.context,i.state.localVars,!0),i.state.localVars=null}E.lex=Y.lex=!0;function T(){i.state.localVars=i.state.context.vars,i.state.context=i.state.context.prev}T.lex=!0;function s(r,e){var t=function(){var f=i.state,u=f.indented;if(f.lexical.type=="stat")u=f.lexical.indented;else for(var c=f.lexical;c&&c.type==")"&&c.align;c=c.prev)u=c.indented;f.lexical=new xr(u,i.stream.column(),r,null,f.lexical,e)};return t.lex=!0,t}function a(){var r=i.state;r.lexical.prev&&(r.lexical.type==")"&&(r.indented=r.lexical.indented),r.lexical=r.lexical.prev)}a.lex=!0;function l(r){function e(t){return t==r?n():r==";"||t=="}"||t==")"||t=="]"?o():n(e)}return e}function w(r,e){return r=="var"?n(s("vardef",e),mr,l(";"),a):r=="keyword a"?n(s("form"),sr,w,a):r=="keyword b"?n(s("form"),w,a):r=="keyword d"?i.stream.match(/^\s*$/,!1)?n():n(s("stat"),N,l(";"),a):r=="debugger"?n(l(";")):r=="{"?n(s("}"),Y,rr,a,T):r==";"?n():r=="if"?(i.state.lexical.info=="else"&&i.state.cc[i.state.cc.length-1]==a&&i.state.cc.pop()(),n(s("form"),sr,w,a,jr)):r=="function"?n(_):r=="for"?n(s("form"),Y,zr,w,T,a):r=="class"||k&&e=="interface"?(i.marked="keyword",n(s("form",r=="class"?r:e),Sr,a)):r=="variable"?k&&e=="declare"?(i.marked="keyword",n(w)):k&&(e=="module"||e=="enum"||e=="type")&&i.stream.match(/^\s*\w/,!1)?(i.marked="keyword",e=="enum"?n($r):e=="type"?n(_r,l("operator"),d,l(";")):n(s("form"),V,l("{"),s("}"),rr,a,a)):k&&e=="namespace"?(i.marked="keyword",n(s("form"),p,w,a)):k&&e=="abstract"?(i.marked="keyword",n(w)):n(s("stat"),Kr):r=="switch"?n(s("form"),sr,l("{"),s("}","switch"),Y,rr,a,a,T):r=="case"?n(p,l(":")):r=="default"?n(l(":")):r=="catch"?n(s("form"),E,Lr,w,a,T):r=="export"?n(s("stat"),fe,a):r=="import"?n(s("stat"),ue,a):r=="async"?n(w):e=="@"?n(p,w):o(s("stat"),p,l(";"),a)}function Lr(r){if(r=="(")return n(O,l(")"))}function p(r,e){return yr(r,e,!1)}function g(r,e){return yr(r,e,!0)}function sr(r){return r!="("?o():n(s(")"),N,l(")"),a)}function yr(r,e,t){if(i.state.fatArrowAt==i.stream.start){var f=t?Tr:vr;if(r=="(")return n(E,s(")"),h(O,")"),a,l("=>"),f,T);if(r=="variable")return o(E,V,l("=>"),f,T)}var u=t?B:I;return Fr.hasOwnProperty(r)?n(u):r=="function"?n(_,u):r=="class"||k&&e=="interface"?(i.marked="keyword",n(s("form"),ie,a)):r=="keyword c"||r=="async"?n(t?g:p):r=="("?n(s(")"),N,l(")"),a,u):r=="operator"||r=="spread"?n(t?g:p):r=="["?n(s("]"),oe,a,u):r=="{"?R(C,"}",null,u):r=="quasi"?o(Z,u):r=="new"?n(Qr(t)):n()}function N(r){return r.match(/[;\}\)\],]/)?o():o(p)}function I(r,e){return r==","?n(N):B(r,e,!1)}function B(r,e,t){var f=t==!1?I:B,u=t==!1?p:g;if(r=="=>")return n(E,t?Tr:vr,T);if(r=="operator")return/\+\+|--/.test(e)||k&&e=="!"?n(f):k&&e=="<"&&i.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?n(s(">"),h(d,">"),a,f):e=="?"?n(p,l(":"),u):n(u);if(r=="quasi")return o(Z,f);if(r!=";"){if(r=="(")return R(g,")","call",f);if(r==".")return n(Ur,f);if(r=="[")return n(s("]"),N,l("]"),a,f);if(k&&e=="as")return i.marked="keyword",n(d,f);if(r=="regexp")return i.state.lastType=i.marked="operator",i.stream.backUp(i.stream.pos-i.stream.start-1),n(u)}}function Z(r,e){return r!="quasi"?o():e.slice(e.length-2)!="${"?n(Z):n(N,Pr)}function Pr(r){if(r=="}")return i.marked="string.special",i.state.tokenize=L,n(Z)}function vr(r){return ar(i.stream,i.state),o(r=="{"?w:p)}function Tr(r){return ar(i.stream,i.state),o(r=="{"?w:g)}function Qr(r){return function(e){return e=="."?n(r?Wr:Rr):e=="variable"&&k?n(Cr,r?B:I):o(r?g:p)}}function Rr(r,e){if(e=="target")return i.marked="keyword",n(I)}function Wr(r,e){if(e=="target")return i.marked="keyword",n(B)}function Kr(r){return r==":"?n(a,w):o(I,l(";"),a)}function Ur(r){if(r=="variable")return i.marked="property",n()}function C(r,e){if(r=="async")return i.marked="property",n(C);if(r=="variable"||i.style=="keyword"){if(i.marked="property",e=="get"||e=="set")return n(Gr);var t;return k&&i.state.fatArrowAt==i.stream.start&&(t=i.stream.match(/^\s*:\s*/,!1))&&(i.state.fatArrowAt=i.stream.pos+t[0].length),n($)}else{if(r=="number"||r=="string")return i.marked=ur?"property":i.style+" property",n($);if(r=="jsonld-keyword")return n($);if(k&&X(e))return i.marked="keyword",n(C);if(r=="[")return n(p,F,l("]"),$);if(r=="spread")return n(g,$);if(e=="*")return i.marked="keyword",n(C);if(r==":")return o($)}}function Gr(r){return r!="variable"?o($):(i.marked="property",n(_))}function $(r){if(r==":")return n(g);if(r=="(")return o(_)}function h(r,e,t){function f(u,c){if(t?t.indexOf(u)>-1:u==","){var m=i.state.lexical;return m.info=="call"&&(m.pos=(m.pos||0)+1),n(function(y,v){return y==e||v==e?o():o(r)},f)}return u==e||c==e?n():t&&t.indexOf(";")>-1?o(r):n(l(e))}return function(u,c){return u==e||c==e?n():o(r,f)}}function R(r,e,t){for(var f=3;f"),d);if(r=="quasi")return o(cr,A)}function Yr(r){if(r=="=>")return n(d)}function lr(r){return r.match(/[\}\)\]]/)?n():r==","||r==";"?n(lr):o(W,lr)}function W(r,e){if(r=="variable"||i.style=="keyword")return i.marked="property",n(W);if(e=="?"||r=="number"||r=="string")return n(W);if(r==":")return n(d);if(r=="[")return n(l("variable"),Hr,l("]"),W);if(r=="(")return o(M,W);if(!r.match(/[;\}\)\],]/))return n()}function cr(r,e){return r!="quasi"?o():e.slice(e.length-2)!="${"?n(cr):n(d,Zr)}function Zr(r){if(r=="}")return i.marked="string.special",i.state.tokenize=L,n(cr)}function dr(r,e){return r=="variable"&&i.stream.match(/^\s*[?:]/,!1)||e=="?"?n(dr):r==":"?n(d):r=="spread"?n(dr):o(d)}function A(r,e){if(e=="<")return n(s(">"),h(d,">"),a,A);if(e=="|"||r=="."||e=="&")return n(d);if(r=="[")return n(d,l("]"),A);if(e=="extends"||e=="implements")return i.marked="keyword",n(d);if(e=="?")return n(d,l(":"),d)}function Cr(r,e){if(e=="<")return n(s(">"),h(d,">"),a,A)}function er(){return o(d,re)}function re(r,e){if(e=="=")return n(d)}function mr(r,e){return e=="enum"?(i.marked="keyword",n($r)):o(V,F,z,ne)}function V(r,e){if(k&&X(e))return i.marked="keyword",n(V);if(r=="variable")return q(e),n();if(r=="spread")return n(V);if(r=="[")return R(ee,"]");if(r=="{")return R(Ar,"}")}function Ar(r,e){return r=="variable"&&!i.stream.match(/^\s*:/,!1)?(q(e),n(z)):(r=="variable"&&(i.marked="property"),r=="spread"?n(V):r=="}"?o():r=="["?n(p,l("]"),l(":"),Ar):n(l(":"),V,z))}function ee(){return o(V,z)}function z(r,e){if(e=="=")return n(g)}function ne(r){if(r==",")return n(mr)}function jr(r,e){if(r=="keyword b"&&e=="else")return n(s("form","else"),w,a)}function zr(r,e){if(e=="await")return n(zr);if(r=="(")return n(s(")"),te,a)}function te(r){return r=="var"?n(mr,J):r=="variable"?n(J):o(J)}function J(r,e){return r==")"?n():r==";"?n(J):e=="in"||e=="of"?(i.marked="keyword",n(p,J)):o(p,J)}function _(r,e){if(e=="*")return i.marked="keyword",n(_);if(r=="variable")return q(e),n(_);if(r=="(")return n(E,s(")"),h(O,")"),a,Vr,w,T);if(k&&e=="<")return n(s(">"),h(er,">"),a,_)}function M(r,e){if(e=="*")return i.marked="keyword",n(M);if(r=="variable")return q(e),n(M);if(r=="(")return n(E,s(")"),h(O,")"),a,Vr,T);if(k&&e=="<")return n(s(">"),h(er,">"),a,M)}function _r(r,e){if(r=="keyword"||r=="variable")return i.marked="type",n(_r);if(e=="<")return n(s(">"),h(er,">"),a)}function O(r,e){return e=="@"&&n(p,O),r=="spread"?n(O):k&&X(e)?(i.marked="keyword",n(O)):k&&r=="this"?n(F,z):o(V,F,z)}function ie(r,e){return r=="variable"?Sr(r,e):nr(r,e)}function Sr(r,e){if(r=="variable")return q(e),n(nr)}function nr(r,e){if(e=="<")return n(s(">"),h(er,">"),a,nr);if(e=="extends"||e=="implements"||k&&r==",")return e=="implements"&&(i.marked="keyword"),n(k?d:p,nr);if(r=="{")return n(s("}"),j,a)}function j(r,e){if(r=="async"||r=="variable"&&(e=="static"||e=="get"||e=="set"||k&&X(e))&&i.stream.match(/^\s+#?[\w$\xa1-\uffff]/,!1))return i.marked="keyword",n(j);if(r=="variable"||i.style=="keyword")return i.marked="property",n(tr,j);if(r=="number"||r=="string")return n(tr,j);if(r=="[")return n(p,F,l("]"),tr,j);if(e=="*")return i.marked="keyword",n(j);if(k&&r=="(")return o(M,j);if(r==";"||r==",")return n(j);if(r=="}")return n();if(e=="@")return n(p,j)}function tr(r,e){if(e=="!"||e=="?")return n(tr);if(r==":")return n(d,z);if(e=="=")return n(g);var t=i.state.lexical.prev,f=t&&t.info=="interface";return o(f?M:_)}function fe(r,e){return e=="*"?(i.marked="keyword",n(kr,l(";"))):e=="default"?(i.marked="keyword",n(p,l(";"))):r=="{"?n(h(Er,"}"),kr,l(";")):o(w)}function Er(r,e){if(e=="as")return i.marked="keyword",n(l("variable"));if(r=="variable")return o(g,Er)}function ue(r){return r=="string"?n():r=="("?o(p):r=="."?o(I):o(ir,Ir,kr)}function ir(r,e){return r=="{"?R(ir,"}"):(r=="variable"&&q(e),e=="*"&&(i.marked="keyword"),n(ae))}function Ir(r){if(r==",")return n(ir,Ir)}function ae(r,e){if(e=="as")return i.marked="keyword",n(ir)}function kr(r,e){if(e=="from")return i.marked="keyword",n(p)}function oe(r){return r=="]"?n():o(h(g,"]"))}function $r(){return o(s("form"),V,l("{"),s("}"),h(se,"}"),a,a)}function se(){return o(V,z)}function le(r,e){return r.lastType=="operator"||r.lastType==","||hr.test(e.charAt(0))||/[,.]/.test(e.charAt(0))}function ce(r,e,t){return e.tokenize==S&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(e.lastType)||e.lastType=="quasi"&&/\{\s*$/.test(r.string.slice(0,r.pos-t))}return{name:x.name,startState:function(r){var e={tokenize:S,lastType:"sof",cc:[],lexical:new xr(-r,0,"block",!1),localVars:x.localVars,context:x.localVars&&new P(null,null,!1),indented:0};return x.globalVars&&typeof x.globalVars=="object"&&(e.globalVars=x.globalVars),e},token:function(r,e){if(r.sol()&&(e.lexical.hasOwnProperty("align")||(e.lexical.align=!1),e.indented=r.indentation(),ar(r,e)),e.tokenize!=H&&r.eatSpace())return null;var t=e.tokenize(r,e);return D=="comment"?t:(e.lastType=D=="operator"&&(G=="++"||G=="--")?"incdec":D,Mr(e,t,D,G,r))},indent:function(r,e,t){if(r.tokenize==H||r.tokenize==L)return null;if(r.tokenize!=S)return 0;var f=e&&e.charAt(0),u=r.lexical,c;if(!/^\s*else\b/.test(e))for(var m=r.cc.length-1;m>=0;--m){var y=r.cc[m];if(y==a)u=u.prev;else if(y!=jr&&y!=T)break}for(;(u.type=="stat"||u.type=="form")&&(f=="}"||(c=r.cc[r.cc.length-1])&&(c==I||c==B)&&!/^[,\.=+\-*:?[\(]/.test(e));)u=u.prev;pr&&u.type==")"&&u.prev.type=="stat"&&(u=u.prev);var v=u.type,K=f==v;return v=="vardef"?u.indented+(r.lastType=="operator"||r.lastType==","?u.info.length+1:0):v=="form"&&f=="{"?u.indented:v=="form"?u.indented+t.unit:v=="stat"?u.indented+(le(r,e)?pr||t.unit:0):u.info=="switch"&&!K&&x.doubleIndentSwitch!=!1?u.indented+(/^(?:case|default)\b/.test(e)?t.unit:2*t.unit):u.align?u.column+(K?0:1):u.indented+(K?0:t.unit)},languageData:{indentOnInput:/^\s*(?:case .*?:|default:|\{|\})$/,commentTokens:br?void 0:{line:"//",block:{open:"/*",close:"*/"}},closeBrackets:{brackets:["(","[","{","'",'"',"`"]},wordChars:"$"}}}const de=fr({name:"javascript"}),me=fr({name:"json",json:!0}),ke=fr({name:"json",jsonld:!0}),pe=fr({name:"typescript",typescript:!0});export{de as javascript,me as json,ke as jsonld,pe as typescript}; diff --git a/frontend/dist/assets/julia-DuME0IfC.js b/frontend/dist/assets/julia-DuME0IfC.js new file mode 100644 index 0000000..71ee6ad --- /dev/null +++ b/frontend/dist/assets/julia-DuME0IfC.js @@ -0,0 +1 @@ +function o(e,n,i){return typeof i>"u"&&(i=""),typeof n>"u"&&(n="\\b"),new RegExp("^"+i+"(("+e.join(")|(")+"))"+n)}var v="\\\\[0-7]{1,3}",k="\\\\x[A-Fa-f0-9]{1,2}",F=`\\\\[abefnrtv0%?'"\\\\]`,g="([^\\u0027\\u005C\\uD800-\\uDFFF]|[\\uD800-\\uDFFF][\\uDC00-\\uDFFF])",a=["[<>]:","[<>=]=","<<=?",">>>?=?","=>","--?>","<--[->]?","\\/\\/","\\.{2,3}","[\\.\\\\%*+\\-<>!\\/^|&]=?","\\?","\\$","~",":"],b=o(["[<>]:","[<>=]=","[!=]==","<<=?",">>>?=?","=>?","--?>","<--[->]?","\\/\\/","[\\\\%*+\\-<>!\\/^|&\\u00F7\\u22BB]=?","\\?","\\$","~",":","\\u00D7","\\u2208","\\u2209","\\u220B","\\u220C","\\u2218","\\u221A","\\u221B","\\u2229","\\u222A","\\u2260","\\u2264","\\u2265","\\u2286","\\u2288","\\u228A","\\u22C5","\\b(in|isa)\\b(?!.?\\()"],""),y=/^[;,()[\]{}]/,m=/^[_A-Za-z\u00A1-\u2217\u2219-\uFFFF][\w\u00A1-\u2217\u2219-\uFFFF]*!*/,x=o([v,k,F,g],"'"),z=["begin","function","type","struct","immutable","let","macro","for","while","quote","if","else","elseif","try","finally","catch","do"],A=["end","else","elseif","catch","finally"],p=["if","else","elseif","while","for","begin","let","end","do","try","catch","finally","return","break","continue","global","local","const","export","import","importall","using","function","where","macro","module","baremodule","struct","type","mutable","immutable","quote","typealias","abstract","primitive","bitstype"],h=["true","false","nothing","NaN","Inf"],E=o(z),C=o(A),_=o(p),w=o(h),D=/^@[_A-Za-z\u00A1-\uFFFF][\w\u00A1-\uFFFF]*!*/,T=/^:[_A-Za-z\u00A1-\uFFFF][\w\u00A1-\uFFFF]*!*/,P=/^(`|([_A-Za-z\u00A1-\uFFFF]*"("")?))/,B=o(a,"","@"),G=o(a,"",":");function l(e){return e.nestedArrays>0}function S(e){return e.nestedGenerators>0}function t(e,n){return typeof n>"u"&&(n=0),e.scopes.length<=n?null:e.scopes[e.scopes.length-(n+1)]}function f(e,n){if(e.match("#=",!1))return n.tokenize=I,n.tokenize(e,n);var i=n.leavingExpr;if(e.sol()&&(i=!1),n.leavingExpr=!1,i&&e.match(/^'+/))return"operator";if(e.match(/\.{4,}/))return"error";if(e.match(/\.{1,3}/))return"operator";if(e.eatSpace())return null;var r=e.peek();if(r==="#")return e.skipToEnd(),"comment";if(r==="["&&(n.scopes.push("["),n.nestedArrays++),r==="("&&(n.scopes.push("("),n.nestedGenerators++),l(n)&&r==="]"){for(;n.scopes.length&&t(n)!=="[";)n.scopes.pop();n.scopes.pop(),n.nestedArrays--,n.leavingExpr=!0}if(S(n)&&r===")"){for(;n.scopes.length&&t(n)!=="(";)n.scopes.pop();n.scopes.pop(),n.nestedGenerators--,n.leavingExpr=!0}if(l(n)){if(n.lastToken=="end"&&e.match(":"))return"operator";if(e.match("end"))return"number"}var u;if((u=e.match(E,!1))&&n.scopes.push(u[0]),e.match(C,!1)&&n.scopes.pop(),e.match(/^::(?![:\$])/))return n.tokenize=$,n.tokenize(e,n);if(!i&&(e.match(T)||e.match(G)))return"builtin";if(e.match(b))return"operator";if(e.match(/^\.?\d/,!1)){var s=RegExp(/^im\b/),c=!1;if(e.match(/^0x\.[0-9a-f_]+p[\+\-]?[_\d]+/i)&&(c=!0),e.match(/^0x[0-9a-f_]+/i)&&(c=!0),e.match(/^0b[01_]+/i)&&(c=!0),e.match(/^0o[0-7_]+/i)&&(c=!0),e.match(/^(?:(?:\d[_\d]*)?\.(?!\.)(?:\d[_\d]*)?|\d[_\d]*\.(?!\.)(?:\d[_\d]*))?([Eef][\+\-]?[_\d]+)?/i)&&(c=!0),e.match(/^\d[_\d]*(e[\+\-]?\d+)?/i)&&(c=!0),c)return e.match(s),n.leavingExpr=!0,"number"}if(e.match("'"))return n.tokenize=O,n.tokenize(e,n);if(e.match(P))return n.tokenize=Z(e.current()),n.tokenize(e,n);if(e.match(D)||e.match(B))return"meta";if(e.match(y))return null;if(e.match(_))return"keyword";if(e.match(w))return"builtin";var d=n.isDefinition||n.lastToken=="function"||n.lastToken=="macro"||n.lastToken=="type"||n.lastToken=="struct"||n.lastToken=="immutable";return e.match(m)?d?e.peek()==="."?(n.isDefinition=!0,"variable"):(n.isDefinition=!1,"def"):(n.leavingExpr=!0,"variable"):(e.next(),"error")}function $(e,n){return e.match(/.*?(?=[,;{}()=\s]|$)/),e.match("{")?n.nestedParameters++:e.match("}")&&n.nestedParameters>0&&n.nestedParameters--,n.nestedParameters>0?e.match(/.*?(?={|})/)||e.next():n.nestedParameters==0&&(n.tokenize=f),"builtin"}function I(e,n){return e.match("#=")&&n.nestedComments++,e.match(/.*?(?=(#=|=#))/)||e.skipToEnd(),e.match("=#")&&(n.nestedComments--,n.nestedComments==0&&(n.tokenize=f)),"comment"}function O(e,n){var i=!1,r;if(e.match(x))i=!0;else if(r=e.match(/\\u([a-f0-9]{1,4})(?=')/i)){var u=parseInt(r[1],16);(u<=55295||u>=57344)&&(i=!0,e.next())}else if(r=e.match(/\\U([A-Fa-f0-9]{5,8})(?=')/)){var u=parseInt(r[1],16);u<=1114111&&(i=!0,e.next())}return i?(n.leavingExpr=!0,n.tokenize=f,"string"):(e.match(/^[^']+(?=')/)||e.skipToEnd(),e.match("'")&&(n.tokenize=f),"error")}function Z(e){e.substr(-3)==='"""'?e='"""':e.substr(-1)==='"'&&(e='"');function n(i,r){if(i.eat("\\"))i.next();else{if(i.match(e))return r.tokenize=f,r.leavingExpr=!0,"string";i.eat(/[`"]/)}return i.eatWhile(/[^\\`"]/),"string"}return n}const j={name:"julia",startState:function(){return{tokenize:f,scopes:[],lastToken:null,leavingExpr:!1,isDefinition:!1,nestedArrays:0,nestedComments:0,nestedGenerators:0,nestedParameters:0,firstParenPos:-1}},token:function(e,n){var i=n.tokenize(e,n),r=e.current();return r&&i&&(n.lastToken=r),i},indent:function(e,n,i){var r=0;return(n==="]"||n===")"||/^end\b/.test(n)||/^else/.test(n)||/^catch\b/.test(n)||/^elseif\b/.test(n)||/^finally/.test(n))&&(r=-1),(e.scopes.length+r)*i.unit},languageData:{indentOnInput:/^\s*(end|else|catch|finally)\b$/,commentTokens:{line:"#",block:{open:"#=",close:"=#"}},closeBrackets:{brackets:["(","[","{",'"']},autocomplete:p.concat(h)}};export{j as julia}; diff --git a/frontend/dist/assets/livescript-BwQOo05w.js b/frontend/dist/assets/livescript-BwQOo05w.js new file mode 100644 index 0000000..e61e366 --- /dev/null +++ b/frontend/dist/assets/livescript-BwQOo05w.js @@ -0,0 +1 @@ +var f=function(e,n){var g=n.next||"start";{n.next=n.next;var k=x[g];if(k.splice){for(var l=0;l|\\b(?:e(?:lse|xport)|d(?:o|efault)|t(?:ry|hen)|finally|import(?:\\s*all)?|const|var|let|new|catch(?:\\s*"+s+")?))\\s*$"),r="(?![$\\w]|-[A-Za-z]|\\s*:(?![:=]))",o={token:"string",regex:".+"},x={start:[{token:"docComment",regex:"/\\*",next:"comment"},{token:"comment",regex:"#.*"},{token:"keyword",regex:"(?:t(?:h(?:is|row|en)|ry|ypeof!?)|c(?:on(?:tinue|st)|a(?:se|tch)|lass)|i(?:n(?:stanceof)?|mp(?:ort(?:\\s+all)?|lements)|[fs])|d(?:e(?:fault|lete|bugger)|o)|f(?:or(?:\\s+own)?|inally|unction)|s(?:uper|witch)|e(?:lse|x(?:tends|port)|val)|a(?:nd|rguments)|n(?:ew|ot)|un(?:less|til)|w(?:hile|ith)|o[fr]|return|break|let|var|loop)"+r},{token:"atom",regex:"(?:true|false|yes|no|on|off|null|void|undefined)"+r},{token:"invalid",regex:"(?:p(?:ackage|r(?:ivate|otected)|ublic)|i(?:mplements|nterface)|enum|static|yield)"+r},{token:"className.standard",regex:"(?:R(?:e(?:gExp|ferenceError)|angeError)|S(?:tring|yntaxError)|E(?:rror|valError)|Array|Boolean|Date|Function|Number|Object|TypeError|URIError)"+r},{token:"variableName.function.standard",regex:"(?:is(?:NaN|Finite)|parse(?:Int|Float)|Math|JSON|(?:en|de)codeURI(?:Component)?)"+r},{token:"variableName.standard",regex:"(?:t(?:hat|il|o)|f(?:rom|allthrough)|it|by|e)"+r},{token:"variableName",regex:s+"\\s*:(?![:=])"},{token:"variableName",regex:s},{token:"operatorKeyword",regex:"(?:\\.{3}|\\s+\\?)"},{token:"keyword",regex:"(?:@+|::|\\.\\.)",next:"key"},{token:"operatorKeyword",regex:"\\.\\s*",next:"key"},{token:"string",regex:"\\\\\\S[^\\s,;)}\\]]*"},{token:"docString",regex:"'''",next:"qdoc"},{token:"docString",regex:'"""',next:"qqdoc"},{token:"string",regex:"'",next:"qstring"},{token:"string",regex:'"',next:"qqstring"},{token:"string",regex:"`",next:"js"},{token:"string",regex:"<\\[",next:"words"},{token:"regexp",regex:"//",next:"heregex"},{token:"regexp",regex:"\\/(?:[^[\\/\\n\\\\]*(?:(?:\\\\.|\\[[^\\]\\n\\\\]*(?:\\\\.[^\\]\\n\\\\]*)*\\])[^[\\/\\n\\\\]*)*)\\/[gimy$]{0,4}",next:"key"},{token:"number",regex:"(?:0x[\\da-fA-F][\\da-fA-F_]*|(?:[2-9]|[12]\\d|3[0-6])r[\\da-zA-Z][\\da-zA-Z_]*|(?:\\d[\\d_]*(?:\\.\\d[\\d_]*)?|\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[\\w$]*)"},{token:"paren",regex:"[({[]"},{token:"paren",regex:"[)}\\]]",next:"key"},{token:"operatorKeyword",regex:"\\S+"},{token:"content",regex:"\\s+"}],heregex:[{token:"regexp",regex:".*?//[gimy$?]{0,4}",next:"start"},{token:"regexp",regex:"\\s*#{"},{token:"comment",regex:"\\s+(?:#.*)?"},{token:"regexp",regex:"\\S+"}],key:[{token:"operatorKeyword",regex:"[.?@!]+"},{token:"variableName",regex:s,next:"start"},{token:"content",regex:"",next:"start"}],comment:[{token:"docComment",regex:".*?\\*/",next:"start"},{token:"docComment",regex:".+"}],qdoc:[{token:"string",regex:".*?'''",next:"key"},o],qqdoc:[{token:"string",regex:'.*?"""',next:"key"},o],qstring:[{token:"string",regex:"[^\\\\']*(?:\\\\.[^\\\\']*)*'",next:"key"},o],qqstring:[{token:"string",regex:'[^\\\\"]*(?:\\\\.[^\\\\"]*)*"',next:"key"},o],js:[{token:"string",regex:"[^\\\\`]*(?:\\\\.[^\\\\`]*)*`",next:"key"},o],words:[{token:"string",regex:".*?\\]>",next:"key"},o]};for(var d in x){var a=x[d];if(a.splice)for(var i=0,p=a.length;in("/log-files",{date:t}),e=t=>n("/log-content",{file:t}),i=()=>n("/training-log-files"),s=t=>n("/training-log-content",{file:t});export{e as a,s as b,i as c,g}; diff --git a/frontend/dist/assets/login-hero-flow-cfjqVyxM.jpg b/frontend/dist/assets/login-hero-flow-cfjqVyxM.jpg new file mode 100644 index 0000000..5c139c4 Binary files /dev/null and b/frontend/dist/assets/login-hero-flow-cfjqVyxM.jpg differ diff --git a/frontend/dist/assets/logo-CxXS7KxG.js b/frontend/dist/assets/logo-CxXS7KxG.js new file mode 100644 index 0000000..c5346b0 --- /dev/null +++ b/frontend/dist/assets/logo-CxXS7KxG.js @@ -0,0 +1 @@ +const o="/logo.png";export{o as _}; diff --git a/frontend/dist/assets/lua-VAEuO923.js b/frontend/dist/assets/lua-VAEuO923.js new file mode 100644 index 0000000..43f1a1e --- /dev/null +++ b/frontend/dist/assets/lua-VAEuO923.js @@ -0,0 +1 @@ +function c(e){return new RegExp("^(?:"+e.join("|")+")","i")}function o(e){return new RegExp("^(?:"+e.join("|")+")$","i")}var d=o(["_G","_VERSION","assert","collectgarbage","dofile","error","getfenv","getmetatable","ipairs","load","loadfile","loadstring","module","next","pairs","pcall","print","rawequal","rawget","rawset","require","select","setfenv","setmetatable","tonumber","tostring","type","unpack","xpcall","coroutine.create","coroutine.resume","coroutine.running","coroutine.status","coroutine.wrap","coroutine.yield","debug.debug","debug.getfenv","debug.gethook","debug.getinfo","debug.getlocal","debug.getmetatable","debug.getregistry","debug.getupvalue","debug.setfenv","debug.sethook","debug.setlocal","debug.setmetatable","debug.setupvalue","debug.traceback","close","flush","lines","read","seek","setvbuf","write","io.close","io.flush","io.input","io.lines","io.open","io.output","io.popen","io.read","io.stderr","io.stdin","io.stdout","io.tmpfile","io.type","io.write","math.abs","math.acos","math.asin","math.atan","math.atan2","math.ceil","math.cos","math.cosh","math.deg","math.exp","math.floor","math.fmod","math.frexp","math.huge","math.ldexp","math.log","math.log10","math.max","math.min","math.modf","math.pi","math.pow","math.rad","math.random","math.randomseed","math.sin","math.sinh","math.sqrt","math.tan","math.tanh","os.clock","os.date","os.difftime","os.execute","os.exit","os.getenv","os.remove","os.rename","os.setlocale","os.time","os.tmpname","package.cpath","package.loaded","package.loaders","package.loadlib","package.path","package.preload","package.seeall","string.byte","string.char","string.dump","string.find","string.format","string.gmatch","string.gsub","string.len","string.lower","string.match","string.rep","string.reverse","string.sub","string.upper","table.concat","table.insert","table.maxn","table.remove","table.sort"]),g=o(["and","break","elseif","false","nil","not","or","return","true","function","end","if","then","else","do","while","repeat","until","for","in","local"]),f=o(["function","if","repeat","do","\\(","{"]),h=o(["end","until","\\)","}"]),p=c(["end","until","\\)","}","else","elseif"]);function u(e){for(var t=0;e.eat("=");)++t;return e.eat("["),t}function l(e,t){var n=e.next();return n=="-"&&e.eat("-")?e.eat("[")&&/[\[=]/.test(e.peek())?(t.cur=s(u(e),"comment"))(e,t):(e.skipToEnd(),"comment"):n=='"'||n=="'"?(t.cur=m(n))(e,t):n=="["&&/[\[=]/.test(e.peek())?(t.cur=s(u(e),"string"))(e,t):/\d/.test(n)?(e.eatWhile(/[\w.%]/),"number"):/[\w_]/.test(n)?(e.eatWhile(/[\w\\\-_.]/),"variable"):null}function s(e,t){return function(n,i){for(var r=null,a;(a=n.next())!=null;)if(r==null)a=="]"&&(r=0);else if(a=="=")++r;else if(a=="]"&&r==e){i.cur=l;break}else r=null;return t}}function m(e){return function(t,n){for(var i=!1,r;(r=t.next())!=null&&!(r==e&&!i);)i=!i&&r=="\\";return i||(n.cur=l),"string"}}const b={name:"lua",startState:function(){return{basecol:0,indentDepth:0,cur:l}},token:function(e,t){if(e.eatSpace())return null;var n=t.cur(e,t),i=e.current();return n=="variable"&&(g.test(i)?n="keyword":d.test(i)&&(n="builtin")),n!="comment"&&n!="string"&&(f.test(i)?++t.indentDepth:h.test(i)&&--t.indentDepth),n},indent:function(e,t,n){var i=p.test(t);return e.basecol+n.unit*(e.indentDepth-(i?1:0))},languageData:{indentOnInput:/^\s*(?:end|until|else|\)|\})$/,commentTokens:{line:"--",block:{open:"--[[",close:"]]--"}}}};export{b as lua}; diff --git a/frontend/dist/assets/mathematica-DTrFuWx2.js b/frontend/dist/assets/mathematica-DTrFuWx2.js new file mode 100644 index 0000000..60ad366 --- /dev/null +++ b/frontend/dist/assets/mathematica-DTrFuWx2.js @@ -0,0 +1 @@ +var u="[a-zA-Z\\$][a-zA-Z0-9\\$]*",f="(?:\\d+)",c="(?:\\.\\d+|\\d+\\.\\d*|\\d+)",o="(?:\\.\\w+|\\w+\\.\\w*|\\w+)",l="(?:`(?:`?"+c+")?)",z=new RegExp("(?:"+f+"(?:\\^\\^"+o+l+"?(?:\\*\\^[+-]?\\d+)?))"),m=new RegExp("(?:"+c+l+"?(?:\\*\\^[+-]?\\d+)?)"),A=new RegExp("(?:`?)(?:"+u+")(?:`(?:"+u+"))*(?:`?)");function i(e,a){var n;return n=e.next(),n==='"'?(a.tokenize=Z,a.tokenize(e,a)):n==="("&&e.eat("*")?(a.commentLevel++,a.tokenize=$,a.tokenize(e,a)):(e.backUp(1),e.match(z,!0,!1)||e.match(m,!0,!1)?"number":e.match(/(?:In|Out)\[[0-9]*\]/,!0,!1)?"atom":e.match(/([a-zA-Z\$][a-zA-Z0-9\$]*(?:`[a-zA-Z0-9\$]+)*::usage)/,!0,!1)?"meta":e.match(/([a-zA-Z\$][a-zA-Z0-9\$]*(?:`[a-zA-Z0-9\$]+)*::[a-zA-Z\$][a-zA-Z0-9\$]*):?/,!0,!1)?"string.special":e.match(/([a-zA-Z\$][a-zA-Z0-9\$]*\s*:)(?:(?:[a-zA-Z\$][a-zA-Z0-9\$]*)|(?:[^:=>~@\^\&\*\)\[\]'\?,\|])).*/,!0,!1)||e.match(/[a-zA-Z\$][a-zA-Z0-9\$]*_+[a-zA-Z\$][a-zA-Z0-9\$]*/,!0,!1)||e.match(/[a-zA-Z\$][a-zA-Z0-9\$]*_+/,!0,!1)||e.match(/_+[a-zA-Z\$][a-zA-Z0-9\$]*/,!0,!1)?"variableName.special":e.match(/\\\[[a-zA-Z\$][a-zA-Z0-9\$]*\]/,!0,!1)?"character":e.match(/(?:\[|\]|{|}|\(|\))/,!0,!1)?"bracket":e.match(/(?:#[a-zA-Z\$][a-zA-Z0-9\$]*|#+[0-9]?)/,!0,!1)?"variableName.constant":e.match(A,!0,!1)?"keyword":e.match(/(?:\\|\+|\-|\*|\/|,|;|\.|:|@|~|=|>|<|&|\||_|`|'|\^|\?|!|%)/,!0,!1)?"operator":(e.next(),"error"))}function Z(e,a){for(var n,r=!1,t=!1;(n=e.next())!=null;){if(n==='"'&&!t){r=!0;break}t=!t&&n==="\\"}return r&&!t&&(a.tokenize=i),"string"}function $(e,a){for(var n,r;a.commentLevel>0&&(r=e.next())!=null;)n==="("&&r==="*"&&a.commentLevel++,n==="*"&&r===")"&&a.commentLevel--,n=r;return a.commentLevel<=0&&(a.tokenize=i),"comment"}const v={name:"mathematica",startState:function(){return{tokenize:i,commentLevel:0}},token:function(e,a){return e.eatSpace()?null:a.tokenize(e,a)},languageData:{commentTokens:{block:{open:"(*",close:"*)"}}}};export{v as mathematica}; diff --git a/frontend/dist/assets/mbox-CNhZ1qSd.js b/frontend/dist/assets/mbox-CNhZ1qSd.js new file mode 100644 index 0000000..aac92bf --- /dev/null +++ b/frontend/dist/assets/mbox-CNhZ1qSd.js @@ -0,0 +1 @@ +var o=["From","Sender","Reply-To","To","Cc","Bcc","Message-ID","In-Reply-To","References","Resent-From","Resent-Sender","Resent-To","Resent-Cc","Resent-Bcc","Resent-Message-ID","Return-Path","Received"],l=["Date","Subject","Comments","Keywords","Resent-Date"],u=/^[ \t]/,d=/^From /,f=new RegExp("^("+o.join("|")+"): "),c=new RegExp("^("+l.join("|")+"): "),t=/^[^:]+:/,m=/^[^ ]+@[^ ]+/,p=/^.*?(?=[^ ]+?@[^ ]+)/,H=/^<.*?>/,v=/^.*?(?=<.*>)/;function h(e){return e==="Subject"?"header":"string"}function R(e,r){if(e.sol()){if(r.inSeparator=!1,r.inHeader&&e.match(u))return null;if(r.inHeader=!1,r.header=null,e.match(d))return r.inHeaders=!0,r.inSeparator=!0,"atom";var n,i=!1;return(n=e.match(c))||(i=!0)&&(n=e.match(f))?(r.inHeaders=!0,r.inHeader=!0,r.emailPermitted=i,r.header=n[1],"atom"):r.inHeaders&&(n=e.match(t))?(r.inHeader=!0,r.emailPermitted=!0,r.header=n[1],"atom"):(r.inHeaders=!1,e.skipToEnd(),null)}if(r.inSeparator)return e.match(m)?"link":(e.match(p)||e.skipToEnd(),"atom");if(r.inHeader){var a=h(r.header);if(r.emailPermitted){if(e.match(H))return a+" link";if(e.match(v))return a}return e.skipToEnd(),a}return e.skipToEnd(),null}const k={name:"mbox",startState:function(){return{inSeparator:!1,inHeader:!1,emailPermitted:!1,header:null,inHeaders:!1}},token:R,blankLine:function(e){e.inHeaders=e.inSeparator=e.inHeader=!1},languageData:{autocomplete:o.concat(l)}};export{k as mbox}; diff --git a/frontend/dist/assets/mirc-CjQqDB4T.js b/frontend/dist/assets/mirc-CjQqDB4T.js new file mode 100644 index 0000000..105b6ea --- /dev/null +++ b/frontend/dist/assets/mirc-CjQqDB4T.js @@ -0,0 +1 @@ +function n(e){for(var $={},r=e.split(" "),i=0;i!?^\/\|]/;function d(e,$,r){return $.tokenize=r,r(e,$)}function o(e,$){var r=$.beforeParams;$.beforeParams=!1;var i=e.next();if(/[\[\]{}\(\),\.]/.test(i))return i=="("&&r?$.inParams=!0:i==")"&&($.inParams=!1),null;if(/\d/.test(i))return e.eatWhile(/[\w\.]/),"number";if(i=="\\")return e.eat("\\"),e.eat(/./),"number";if(i=="/"&&e.eat("*"))return d(e,$,m);if(i==";"&&e.match(/ *\( *\(/))return d(e,$,p);if(i==";"&&!$.inParams)return e.skipToEnd(),"comment";if(i=='"')return e.eat(/"/),"keyword";if(i=="$")return e.eatWhile(/[$_a-z0-9A-Z\.:]/),a&&a.propertyIsEnumerable(e.current().toLowerCase())?"keyword":($.beforeParams=!0,"builtin");if(i=="%")return e.eatWhile(/[^,\s()]/),$.beforeParams=!0,"string";if(c.test(i))return e.eatWhile(c),"operator";e.eatWhile(/[\w\$_{}]/);var t=e.current().toLowerCase();return s&&s.propertyIsEnumerable(t)?"keyword":l&&l.propertyIsEnumerable(t)?($.beforeParams=!0,"keyword"):null}function m(e,$){for(var r=!1,i;i=e.next();){if(i=="/"&&r){$.tokenize=o;break}r=i=="*"}return"comment"}function p(e,$){for(var r=0,i;i=e.next();){if(i==";"&&r==2){$.tokenize=o;break}i==")"?r++:i!=" "&&(r=0)}return"meta"}const u={name:"mirc",startState:function(){return{tokenize:o,beforeParams:!1,inParams:!1}},token:function(e,$){return e.eatSpace()?null:$.tokenize(e,$)}};export{u as mirc}; diff --git a/frontend/dist/assets/mllike-CXdrOF99.js b/frontend/dist/assets/mllike-CXdrOF99.js new file mode 100644 index 0000000..c99d9ff --- /dev/null +++ b/frontend/dist/assets/mllike-CXdrOF99.js @@ -0,0 +1 @@ +function y(i){var t={as:"keyword",do:"keyword",else:"keyword",end:"keyword",exception:"keyword",fun:"keyword",functor:"keyword",if:"keyword",in:"keyword",include:"keyword",let:"keyword",of:"keyword",open:"keyword",rec:"keyword",struct:"keyword",then:"keyword",type:"keyword",val:"keyword",while:"keyword",with:"keyword"},l=i.extraWords||{};for(var w in l)l.hasOwnProperty(w)&&(t[w]=i.extraWords[w]);var u=[];for(var a in t)u.push(a);function d(e,r){var o=e.next();if(o==='"')return r.tokenize=c,r.tokenize(e,r);if(o==="{"&&e.eat("|"))return r.longString=!0,r.tokenize=b,r.tokenize(e,r);if(o==="("&&e.match(/^\*(?!\))/))return r.commentLevel++,r.tokenize=f,r.tokenize(e,r);if(o==="~"||o==="?")return e.eatWhile(/\w/),"variableName.special";if(o==="`")return e.eatWhile(/\w/),"quote";if(o==="/"&&i.slashComments&&e.eat("/"))return e.skipToEnd(),"comment";if(/\d/.test(o))return o==="0"&&e.eat(/[bB]/)&&e.eatWhile(/[01]/),o==="0"&&e.eat(/[xX]/)&&e.eatWhile(/[0-9a-fA-F]/),o==="0"&&e.eat(/[oO]/)?e.eatWhile(/[0-7]/):(e.eatWhile(/[\d_]/),e.eat(".")&&e.eatWhile(/[\d]/),e.eat(/[eE]/)&&e.eatWhile(/[\d\-+]/)),"number";if(/[+\-*&%=<>!?|@\.~:]/.test(o))return"operator";if(/[\w\xa1-\uffff]/.test(o)){e.eatWhile(/[\w\xa1-\uffff]/);var n=e.current();return t.hasOwnProperty(n)?t[n]:"variable"}return null}function c(e,r){for(var o,n=!1,k=!1;(o=e.next())!=null;){if(o==='"'&&!k){n=!0;break}k=!k&&o==="\\"}return n&&!k&&(r.tokenize=d),"string"}function f(e,r){for(var o,n;r.commentLevel>0&&(n=e.next())!=null;)o==="("&&n==="*"&&r.commentLevel++,o==="*"&&n===")"&&r.commentLevel--,o=n;return r.commentLevel<=0&&(r.tokenize=d),"comment"}function b(e,r){for(var o,n;r.longString&&(n=e.next())!=null;)o==="|"&&n==="}"&&(r.longString=!1),o=n;return r.longString||(r.tokenize=d),"string"}return{startState:function(){return{tokenize:d,commentLevel:0,longString:!1}},token:function(e,r){return e.eatSpace()?null:r.tokenize(e,r)},languageData:{autocomplete:u,commentTokens:{line:i.slashComments?"//":void 0,block:{open:"(*",close:"*)"}}}}}const s=y({extraWords:{and:"keyword",assert:"keyword",begin:"keyword",class:"keyword",constraint:"keyword",done:"keyword",downto:"keyword",external:"keyword",function:"keyword",initializer:"keyword",lazy:"keyword",match:"keyword",method:"keyword",module:"keyword",mutable:"keyword",new:"keyword",nonrec:"keyword",object:"keyword",private:"keyword",sig:"keyword",to:"keyword",try:"keyword",value:"keyword",virtual:"keyword",when:"keyword",raise:"builtin",failwith:"builtin",true:"builtin",false:"builtin",asr:"builtin",land:"builtin",lor:"builtin",lsl:"builtin",lsr:"builtin",lxor:"builtin",mod:"builtin",or:"builtin",raise_notrace:"builtin",trace:"builtin",exit:"builtin",print_string:"builtin",print_endline:"builtin",int:"type",float:"type",bool:"type",char:"type",string:"type",unit:"type",List:"builtin"}}),h=y({extraWords:{abstract:"keyword",assert:"keyword",base:"keyword",begin:"keyword",class:"keyword",default:"keyword",delegate:"keyword","do!":"keyword",done:"keyword",downcast:"keyword",downto:"keyword",elif:"keyword",extern:"keyword",finally:"keyword",for:"keyword",function:"keyword",global:"keyword",inherit:"keyword",inline:"keyword",interface:"keyword",internal:"keyword",lazy:"keyword","let!":"keyword",match:"keyword",member:"keyword",module:"keyword",mutable:"keyword",namespace:"keyword",new:"keyword",null:"keyword",override:"keyword",private:"keyword",public:"keyword","return!":"keyword",return:"keyword",select:"keyword",static:"keyword",to:"keyword",try:"keyword",upcast:"keyword","use!":"keyword",use:"keyword",void:"keyword",when:"keyword","yield!":"keyword",yield:"keyword",atomic:"keyword",break:"keyword",checked:"keyword",component:"keyword",const:"keyword",constraint:"keyword",constructor:"keyword",continue:"keyword",eager:"keyword",event:"keyword",external:"keyword",fixed:"keyword",method:"keyword",mixin:"keyword",object:"keyword",parallel:"keyword",process:"keyword",protected:"keyword",pure:"keyword",sealed:"keyword",tailcall:"keyword",trait:"keyword",virtual:"keyword",volatile:"keyword",List:"builtin",Seq:"builtin",Map:"builtin",Set:"builtin",Option:"builtin",int:"builtin",string:"builtin",not:"builtin",true:"builtin",false:"builtin",raise:"builtin",failwith:"builtin"},slashComments:!0}),p=y({extraWords:{abstype:"keyword",and:"keyword",andalso:"keyword",case:"keyword",datatype:"keyword",fn:"keyword",handle:"keyword",infix:"keyword",infixr:"keyword",local:"keyword",nonfix:"keyword",op:"keyword",orelse:"keyword",raise:"keyword",withtype:"keyword",eqtype:"keyword",sharing:"keyword",sig:"keyword",signature:"keyword",structure:"keyword",where:"keyword",true:"keyword",false:"keyword",int:"builtin",real:"builtin",string:"builtin",char:"builtin",bool:"builtin"},slashComments:!0});export{h as fSharp,s as oCaml,p as sml}; diff --git a/frontend/dist/assets/model-gCK34aBo.js b/frontend/dist/assets/model-gCK34aBo.js new file mode 100644 index 0000000..4820eea --- /dev/null +++ b/frontend/dist/assets/model-gCK34aBo.js @@ -0,0 +1 @@ +import{aF as a,aH as m,aG as d,aI as l}from"./index-BKKvzUDD.js";const t=()=>a("/model-manage"),n=e=>a(`/model-manage/${e}`),g=()=>a("/model-manage/local-models"),c=()=>a("/model-manage/trained-models"),r=e=>d("/model-manage",e),M=(e,o)=>m(`/model-manage/${e}`,o),p=e=>l(`/model-manage/${e}`),i=(e,o="merged")=>l(`/model-manage/trained-models/${e}`,{type:o}),$=e=>d("/model-manage/merge",e),u=e=>`/modelTF/model-manage/trained-models/${encodeURIComponent(e)}/export`;export{c as a,i as b,n as c,p as d,u as e,g as f,t as g,r as h,$ as m,M as u}; diff --git a/frontend/dist/assets/modelica-Dc1JOy9r.js b/frontend/dist/assets/modelica-Dc1JOy9r.js new file mode 100644 index 0000000..197f2d8 --- /dev/null +++ b/frontend/dist/assets/modelica-Dc1JOy9r.js @@ -0,0 +1 @@ +function r(n){for(var e={},i=n.split(" "),l=0;l+\-\/^\[\]]/,s=/(:=|<=|>=|==|<>|\.\+|\.\-|\.\*|\.\/|\.\^)/,o=/[0-9]/,c=/[_a-zA-Z]/;function p(n,e){return n.skipToEnd(),e.tokenize=null,"comment"}function d(n,e){for(var i=!1,l;l=n.next();){if(i&&l=="/"){e.tokenize=null;break}i=l=="*"}return"comment"}function h(n,e){for(var i=!1,l;(l=n.next())!=null;){if(l=='"'&&!i){e.tokenize=null,e.sol=!1;break}i=!i&&l=="\\"}return"string"}function b(n,e){for(n.eatWhile(o);n.eat(o)||n.eat(c););var i=n.current();return e.sol&&(i=="package"||i=="model"||i=="when"||i=="connector")?e.level++:e.sol&&i=="end"&&e.level>0&&e.level--,e.tokenize=null,e.sol=!1,t.propertyIsEnumerable(i)?"keyword":a.propertyIsEnumerable(i)?"builtin":u.propertyIsEnumerable(i)?"atom":"variable"}function v(n,e){for(;n.eat(/[^']/););return e.tokenize=null,e.sol=!1,n.eat("'")?"variable":"error"}function g(n,e){return n.eatWhile(o),n.eat(".")&&n.eatWhile(o),(n.eat("e")||n.eat("E"))&&(n.eat("-")||n.eat("+"),n.eatWhile(o)),e.tokenize=null,e.sol=!1,"number"}const z={name:"modelica",startState:function(){return{tokenize:null,level:0,sol:!0}},token:function(n,e){if(e.tokenize!=null)return e.tokenize(n,e);if(n.sol()&&(e.sol=!0),n.eatSpace())return e.tokenize=null,null;var i=n.next();if(i=="/"&&n.eat("/"))e.tokenize=p;else if(i=="/"&&n.eat("*"))e.tokenize=d;else{if(s.test(i+n.peek()))return n.next(),e.tokenize=null,"operator";if(k.test(i))return e.tokenize=null,"operator";if(c.test(i))e.tokenize=b;else if(i=="'"&&n.peek()&&n.peek()!="'")e.tokenize=v;else if(i=='"')e.tokenize=h;else if(o.test(i))e.tokenize=g;else return e.tokenize=null,"error"}return e.tokenize(n,e)},indent:function(n,e,i){if(n.tokenize!=null)return null;var l=n.level;return/(algorithm)/.test(e)&&l--,/(equation)/.test(e)&&l--,/(initial algorithm)/.test(e)&&l--,/(initial equation)/.test(e)&&l--,/(end)/.test(e)&&l--,l>0?i.unit*l:0},languageData:{commentTokens:{line:"//",block:{open:"/*",close:"*/"}},autocomplete:f}};export{z as modelica}; diff --git a/frontend/dist/assets/models-DQoXB8yB.js b/frontend/dist/assets/models-DQoXB8yB.js new file mode 100644 index 0000000..6964f09 --- /dev/null +++ b/frontend/dist/assets/models-DQoXB8yB.js @@ -0,0 +1 @@ +import{ae as o,y as i}from"./index-BKKvzUDD.js";import{g as f}from"./model-gCK34aBo.js";const g=o("models",()=>{const n=i([]),a=i(!1);let t=null;async function l(e=!1){if(!(a.value&&!e))return t&&!e||(t=(async()=>{try{n.value=await f()||[],a.value=!0}catch{n.value=[]}finally{t=null}})()),t}function s(e){if(!e)return"-";const u=n.value.find(r=>r.id==e||r.id===String(e)||r.id===Number(e));return u?u.name:`模型${e}`}return{list:n,loaded:a,load:l,getModelName:s}});export{g as u}; diff --git a/frontend/dist/assets/mscgen-BA5vi2Kp.js b/frontend/dist/assets/mscgen-BA5vi2Kp.js new file mode 100644 index 0000000..670ef1b --- /dev/null +++ b/frontend/dist/assets/mscgen-BA5vi2Kp.js @@ -0,0 +1 @@ +function c(t){return{name:"mscgen",startState:i,copyState:s,token:u(t),languageData:{commentTokens:{line:"#",block:{open:"/*",close:"*/"}}}}}const a=c({keywords:["msc"],options:["hscale","width","arcgradient","wordwraparcs"],constants:["true","false","on","off"],attributes:["label","idurl","id","url","linecolor","linecolour","textcolor","textcolour","textbgcolor","textbgcolour","arclinecolor","arclinecolour","arctextcolor","arctextcolour","arctextbgcolor","arctextbgcolour","arcskip"],brackets:["\\{","\\}"],arcsWords:["note","abox","rbox","box"],arcsOthers:["\\|\\|\\|","\\.\\.\\.","---","--","<->","==","<<=>>","<=>","\\.\\.","<<>>","::","<:>","->","=>>","=>",">>",":>","<-","<<=","<=","<<","<:","x-","-x"],singlecomment:["//","#"],operators:["="]}),l=c({keywords:null,options:["hscale","width","arcgradient","wordwraparcs","wordwrapentities","watermark"],constants:["true","false","on","off","auto"],attributes:null,brackets:["\\{","\\}"],arcsWords:["note","abox","rbox","box","alt","else","opt","break","par","seq","strict","neg","critical","ignore","consider","assert","loop","ref","exc"],arcsOthers:["\\|\\|\\|","\\.\\.\\.","---","--","<->","==","<<=>>","<=>","\\.\\.","<<>>","::","<:>","->","=>>","=>",">>",":>","<-","<<=","<=","<<","<:","x-","-x"],singlecomment:["//","#"],operators:["="]}),b=c({keywords:["msc","xu"],options:["hscale","width","arcgradient","wordwraparcs","wordwrapentities","watermark"],constants:["true","false","on","off","auto"],attributes:["label","idurl","id","url","linecolor","linecolour","textcolor","textcolour","textbgcolor","textbgcolour","arclinecolor","arclinecolour","arctextcolor","arctextcolour","arctextbgcolor","arctextbgcolour","arcskip","title","deactivate","activate","activation"],brackets:["\\{","\\}"],arcsWords:["note","abox","rbox","box","alt","else","opt","break","par","seq","strict","neg","critical","ignore","consider","assert","loop","ref","exc"],arcsOthers:["\\|\\|\\|","\\.\\.\\.","---","--","<->","==","<<=>>","<=>","\\.\\.","<<>>","::","<:>","->","=>>","=>",">>",":>","<-","<<=","<=","<<","<:","x-","-x"],singlecomment:["//","#"],operators:["="]});function n(t){return new RegExp("^\\b("+t.join("|")+")\\b","i")}function o(t){return new RegExp("^(?:"+t.join("|")+")","i")}function i(){return{inComment:!1,inString:!1,inAttributeList:!1,inScript:!1}}function s(t){return{inComment:t.inComment,inString:t.inString,inAttributeList:t.inAttributeList,inScript:t.inScript}}function u(t){return function(r,e){if(r.match(o(t.brackets),!0,!0))return"bracket";if(!e.inComment){if(r.match(/\/\*[^\*\/]*/,!0,!0))return e.inComment=!0,"comment";if(r.match(o(t.singlecomment),!0,!0))return r.skipToEnd(),"comment"}if(e.inComment)return r.match(/[^\*\/]*\*\//,!0,!0)?e.inComment=!1:r.skipToEnd(),"comment";if(!e.inString&&r.match(/\"(\\\"|[^\"])*/,!0,!0))return e.inString=!0,"string";if(e.inString)return r.match(/[^\"]*\"/,!0,!0)?e.inString=!1:r.skipToEnd(),"string";if(t.keywords&&r.match(n(t.keywords),!0,!0)||r.match(n(t.options),!0,!0)||r.match(n(t.arcsWords),!0,!0)||r.match(o(t.arcsOthers),!0,!0))return"keyword";if(t.operators&&r.match(o(t.operators),!0,!0))return"operator";if(t.constants&&r.match(o(t.constants),!0,!0))return"variable";if(!t.inAttributeList&&t.attributes&&r.match("[",!0,!0))return t.inAttributeList=!0,"bracket";if(t.inAttributeList){if(t.attributes!==null&&r.match(n(t.attributes),!0,!0))return"attribute";if(r.match("]",!0,!0))return t.inAttributeList=!1,"bracket"}return r.next(),null}}export{a as mscgen,l as msgenny,b as xu}; diff --git a/frontend/dist/assets/mumps-BT43cFF4.js b/frontend/dist/assets/mumps-BT43cFF4.js new file mode 100644 index 0000000..cc81bd1 --- /dev/null +++ b/frontend/dist/assets/mumps-BT43cFF4.js @@ -0,0 +1 @@ +function o(e){return new RegExp("^(("+e.join(")|(")+"))\\b","i")}var i=new RegExp("^[\\+\\-\\*/&#!_?\\\\<>=\\'\\[\\]]"),$=new RegExp("^(('=)|(<=)|(>=)|('>)|('<)|([[)|(]])|(^$))"),t=new RegExp("^[\\.,:]"),c=new RegExp("[()]"),l=new RegExp("^[%A-Za-z][A-Za-z0-9]*"),a=["break","close","do","else","for","goto","halt","hang","if","job","kill","lock","merge","new","open","quit","read","set","tcommit","trollback","tstart","use","view","write","xecute","b","c","d","e","f","g","h","i","j","k","l","m","n","o","q","r","s","tc","tro","ts","u","v","w","x"],d=["\\$ascii","\\$char","\\$data","\\$ecode","\\$estack","\\$etrap","\\$extract","\\$find","\\$fnumber","\\$get","\\$horolog","\\$io","\\$increment","\\$job","\\$justify","\\$length","\\$name","\\$next","\\$order","\\$piece","\\$qlength","\\$qsubscript","\\$query","\\$quit","\\$random","\\$reverse","\\$select","\\$stack","\\$test","\\$text","\\$translate","\\$view","\\$x","\\$y","\\$a","\\$c","\\$d","\\$e","\\$ec","\\$es","\\$et","\\$f","\\$fn","\\$g","\\$h","\\$i","\\$j","\\$l","\\$n","\\$na","\\$o","\\$p","\\$q","\\$ql","\\$qs","\\$r","\\$re","\\$s","\\$st","\\$t","\\$tr","\\$v","\\$z"],u=o(d),f=o(a);function m(e,n){e.sol()&&(n.label=!0,n.commandMode=0);var r=e.peek();return r==" "||r==" "?(n.label=!1,n.commandMode==0?n.commandMode=1:(n.commandMode<0||n.commandMode==2)&&(n.commandMode=0)):r!="."&&n.commandMode>0&&(r==":"?n.commandMode=-1:n.commandMode=2),(r==="("||r===" ")&&(n.label=!1),r===";"?(e.skipToEnd(),"comment"):e.match(/^[-+]?\d+(\.\d+)?([eE][-+]?\d+)?/)?"number":r=='"'?e.skipTo('"')?(e.next(),"string"):(e.skipToEnd(),"error"):e.match($)||e.match(i)?"operator":e.match(t)?null:c.test(r)?(e.next(),"bracket"):n.commandMode>0&&e.match(f)?"controlKeyword":e.match(u)?"builtin":e.match(l)?"variable":r==="$"||r==="^"?(e.next(),"builtin"):r==="@"?(e.next(),"string.special"):/[\w%]/.test(r)?(e.eatWhile(/[\w%]/),"variable"):(e.next(),"error")}const s={name:"mumps",startState:function(){return{label:!1,commandMode:0}},token:function(e,n){var r=m(e,n);return n.label?"tag":r}};export{s as mumps}; diff --git a/frontend/dist/assets/nginx-DdIZxoE0.js b/frontend/dist/assets/nginx-DdIZxoE0.js new file mode 100644 index 0000000..379b172 --- /dev/null +++ b/frontend/dist/assets/nginx-DdIZxoE0.js @@ -0,0 +1 @@ +function n(_){for(var t={},i=_.split(" "),e=0;e*\/]/.test(e)?r(null,"select-op"):/[;{}:\[\]]/.test(e)?r(null,e):(_.eatWhile(/[\w\\\-]/),r("variable","variable"))}function c(_,t){for(var i=!1,e;(e=_.next())!=null;){if(i&&e=="/"){t.tokenize=a;break}i=e=="*"}return r("comment","comment")}function l(_,t){for(var i=0,e;(e=_.next())!=null;){if(i>=2&&e==">"){t.tokenize=a;break}i=e=="-"?i+1:0}return r("comment","comment")}function d(_){return function(t,i){for(var e=!1,o;(o=t.next())!=null&&!(o==_&&!e);)e=!e&&o=="\\";return e||(i.tokenize=a),r("string","string")}}const m={name:"nginx",startState:function(){return{tokenize:a,baseIndent:0,stack:[]}},token:function(_,t){if(_.eatSpace())return null;s=null;var i=t.tokenize(_,t),e=t.stack[t.stack.length-1];return s=="hash"&&e=="rule"?i="atom":i=="variable"&&(e=="rule"?i="number":(!e||e=="@media{")&&(i="tag")),e=="rule"&&/^[\{\};]$/.test(s)&&t.stack.pop(),s=="{"?e=="@media"?t.stack[t.stack.length-1]="@media{":t.stack.push("{"):s=="}"?t.stack.pop():s=="@media"?t.stack.push("@media"):e=="{"&&s!="comment"&&t.stack.push("rule"),i},indent:function(_,t,i){var e=_.stack.length;return/^\}/.test(t)&&(e-=_.stack[_.stack.length-1]=="rule"?2:1),_.baseIndent+e*i.unit},languageData:{indentOnInput:/^\s*\}$/}};export{m as nginx}; diff --git a/frontend/dist/assets/nsis-LdVXkNf5.js b/frontend/dist/assets/nsis-LdVXkNf5.js new file mode 100644 index 0000000..6b1598f --- /dev/null +++ b/frontend/dist/assets/nsis-LdVXkNf5.js @@ -0,0 +1 @@ +import{s as e}from"./simple-mode-GW_nhZxv.js";const n=e({start:[{regex:/(?:[+-]?)(?:0x[\d,a-f]+)|(?:0o[0-7]+)|(?:0b[0,1]+)|(?:\d+.?\d*)/,token:"number"},{regex:/"(?:[^\\"]|\\.)*"?/,token:"string"},{regex:/'(?:[^\\']|\\.)*'?/,token:"string"},{regex:/`(?:[^\\`]|\\.)*`?/,token:"string"},{regex:/^\s*(?:\!(addincludedir|addplugindir|appendfile|assert|cd|define|delfile|echo|error|execute|finalize|getdllversion|gettlbversion|include|insertmacro|macro|macroend|makensis|packhdr|pragma|searchparse|searchreplace|system|tempfile|undef|uninstfinalize|verbose|warning))\b/i,token:"keyword"},{regex:/^\s*(?:\!(if(?:n?def)?|ifmacron?def|macro))\b/i,token:"keyword",indent:!0},{regex:/^\s*(?:\!(else|endif|macroend))\b/i,token:"keyword",dedent:!0},{regex:/^\s*(?:Abort|AddBrandingImage|AddSize|AllowRootDirInstall|AllowSkipFiles|AutoCloseWindow|BGFont|BGGradient|BrandingText|BringToFront|Call|CallInstDLL|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|CRCCheck|CreateDirectory|CreateFont|CreateShortCut|Delete|DeleteINISec|DeleteINIStr|DeleteRegKey|DeleteRegValue|DetailPrint|DetailsButtonText|DirText|DirVar|DirVerify|EnableWindow|EnumRegKey|EnumRegValue|Exch|Exec|ExecShell|ExecShellWait|ExecWait|ExpandEnvStrings|File|FileBufSize|FileClose|FileErrorText|FileOpen|FileRead|FileReadByte|FileReadUTF16LE|FileReadWord|FileWriteUTF16LE|FileSeek|FileWrite|FileWriteByte|FileWriteWord|FindClose|FindFirst|FindNext|FindWindow|FlushINI|GetCurInstType|GetCurrentAddress|GetDlgItem|GetDLLVersion|GetDLLVersionLocal|GetErrorLevel|GetFileTime|GetFileTimeLocal|GetFullPathName|GetFunctionAddress|GetInstDirError|GetKnownFolderPath|GetLabelAddress|GetTempFileName|GetWinVer|Goto|HideWindow|Icon|IfAbort|IfErrors|IfFileExists|IfRebootFlag|IfRtlLanguage|IfShellVarContextAll|IfSilent|InitPluginsDir|InstallButtonText|InstallColors|InstallDir|InstallDirRegKey|InstProgressFlags|InstType|InstTypeGetText|InstTypeSetText|Int64Cmp|Int64CmpU|Int64Fmt|IntCmp|IntCmpU|IntFmt|IntOp|IntPtrCmp|IntPtrCmpU|IntPtrOp|IsWindow|LangString|LicenseBkColor|LicenseData|LicenseForceSelection|LicenseLangString|LicenseText|LoadAndSetImage|LoadLanguageFile|LockWindow|LogSet|LogText|ManifestDPIAware|ManifestLongPathAware|ManifestMaxVersionTested|ManifestSupportedOS|MessageBox|MiscButtonText|Name|Nop|OutFile|Page|PageCallbacks|PEAddResource|PEDllCharacteristics|PERemoveResource|PESubsysVer|Pop|Push|Quit|ReadEnvStr|ReadINIStr|ReadRegDWORD|ReadRegStr|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|RMDir|SearchPath|SectionGetFlags|SectionGetInstTypes|SectionGetSize|SectionGetText|SectionIn|SectionSetFlags|SectionSetInstTypes|SectionSetSize|SectionSetText|SendMessage|SetAutoClose|SetBrandingImage|SetCompress|SetCompressor|SetCompressorDictSize|SetCtlColors|SetCurInstType|SetDatablockOptimize|SetDateSave|SetDetailsPrint|SetDetailsView|SetErrorLevel|SetErrors|SetFileAttributes|SetFont|SetOutPath|SetOverwrite|SetRebootFlag|SetRegView|SetShellVarContext|SetSilent|ShowInstDetails|ShowUninstDetails|ShowWindow|SilentInstall|SilentUnInstall|Sleep|SpaceTexts|StrCmp|StrCmpS|StrCpy|StrLen|SubCaption|Target|Unicode|UninstallButtonText|UninstallCaption|UninstallIcon|UninstallSubCaption|UninstallText|UninstPage|UnRegDLL|Var|VIAddVersionKey|VIFileVersion|VIProductVersion|WindowIcon|WriteINIStr|WriteRegBin|WriteRegDWORD|WriteRegExpandStr|WriteRegMultiStr|WriteRegNone|WriteRegStr|WriteUninstaller|XPStyle)\b/i,token:"keyword"},{regex:/^\s*(?:Function|PageEx|Section(?:Group)?)\b/i,token:"keyword",indent:!0},{regex:/^\s*(?:(Function|PageEx|Section(?:Group)?)End)\b/i,token:"keyword",dedent:!0},{regex:/\b(?:ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HIDDEN|HKCC|HKCR(32|64)?|HKCU(32|64)?|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM(32|64)?|HKPD|HKU|IDABORT|IDCANCEL|IDD_DIR|IDD_INST|IDD_INSTFILES|IDD_LICENSE|IDD_SELCOM|IDD_UNINST|IDD_VERIFY|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|MB_YESNOCANCEL|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SW_HIDE|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWNORMAL|SYSTEM|TEMPORARY)\b/i,token:"atom"},{regex:/\b(?:admin|all|amd64-unicode|auto|both|bottom|bzip2|components|current|custom|directory|false|force|hide|highest|ifdiff|ifnewer|instfiles|lastused|leave|left|license|listonly|lzma|nevershow|none|normal|notset|off|on|right|show|silent|silentlog|textonly|top|true|try|un\.components|un\.custom|un\.directory|un\.instfiles|un\.license|uninstConfirm|user|Win10|Win7|Win8|WinVista|x-86-(ansi|unicode)|zlib)\b/i,token:"builtin"},{regex:/\$\{(?:And(?:If(?:Not)?|Unless)|Break|Case(?:2|3|4|5|Else)?|Continue|Default|Do(?:Until|While)?|Else(?:If(?:Not)?|Unless)?|End(?:If|Select|Switch)|Exit(?:Do|For|While)|For(?:Each)?|If(?:Cmd|Not(?:Then)?|Then)?|Loop(?:Until|While)?|Or(?:If(?:Not)?|Unless)|Select|Switch|Unless|While)\}/i,token:"variable-2",indent:!0},{regex:/\$\{(?:BannerTrimPath|DirState|DriveSpace|Get(BaseName|Drives|ExeName|ExePath|FileAttributes|FileExt|FileName|FileVersion|Options|OptionsS|Parameters|Parent|Root|Size|Time)|Locate|RefreshShellIcons)\}/i,token:"variable-2",dedent:!0},{regex:/\$\{(?:Memento(?:Section(?:Done|End|Restore|Save)?|UnselectedSection))\}/i,token:"variable-2",dedent:!0},{regex:/\$\{(?:Config(?:Read|ReadS|Write|WriteS)|File(?:Join|ReadFromEnd|Recode)|Line(?:Find|Read|Sum)|Text(?:Compare|CompareS)|TrimNewLines)\}/i,token:"variable-2",dedent:!0},{regex:/\$\{(?:(?:At(?:Least|Most)|Is)(?:ServicePack|Win(?:7|8|10|95|98|200(?:0|3|8(?:R2)?)|ME|NT4|Vista|XP))|Is(?:NT|Server))\}/i,token:"variable",dedent:!0},{regex:/\$\{(?:StrFilterS?|Version(?:Compare|Convert)|Word(?:AddS?|Find(?:(?:2|3)X)?S?|InsertS?|ReplaceS?))\}/i,token:"keyword",dedent:!0},{regex:/\$\{(?:RunningX64)\}/i,token:"variable",dedent:!0},{regex:/\$\{(?:Disable|Enable)X64FSRedirection\}/i,token:"keyword",dedent:!0},{regex:/(#|;).*/,token:"comment"},{regex:/\/\*/,token:"comment",next:"comment"},{regex:/[-+\/*=<>!]+/,token:"operator"},{regex:/\$\w[\w\.]*/,token:"variable"},{regex:/\${[\!\w\.:-]+}/,token:"variableName.constant"},{regex:/\$\([\!\w\.:-]+\)/,token:"atom"}],comment:[{regex:/.*?\*\//,token:"comment",next:"start"},{regex:/.*/,token:"comment"}],languageData:{name:"nsis",indentOnInput:/^\s*((Function|PageEx|Section|Section(Group)?)End|(\!(endif|macroend))|\$\{(End(If|Unless|While)|Loop(Until)|Next)\})$/i,commentTokens:{line:"#",block:{open:"/*",close:"*/"}}}});export{n as nsis}; diff --git a/frontend/dist/assets/ntriples-BfvgReVJ.js b/frontend/dist/assets/ntriples-BfvgReVJ.js new file mode 100644 index 0000000..680db89 --- /dev/null +++ b/frontend/dist/assets/ntriples-BfvgReVJ.js @@ -0,0 +1 @@ +var _={PRE_SUBJECT:0,WRITING_SUB_URI:1,WRITING_BNODE_URI:2,PRE_PRED:3,WRITING_PRED_URI:4,PRE_OBJ:5,WRITING_OBJ_URI:6,WRITING_OBJ_BNODE:7,WRITING_OBJ_LITERAL:8,WRITING_LIT_LANG:9,WRITING_LIT_TYPE:10,POST_OBJ:11,ERROR:12};function T(e,I){var R=e.location,i;R==_.PRE_SUBJECT&&I=="<"?i=_.WRITING_SUB_URI:R==_.PRE_SUBJECT&&I=="_"?i=_.WRITING_BNODE_URI:R==_.PRE_PRED&&I=="<"?i=_.WRITING_PRED_URI:R==_.PRE_OBJ&&I=="<"?i=_.WRITING_OBJ_URI:R==_.PRE_OBJ&&I=="_"?i=_.WRITING_OBJ_BNODE:R==_.PRE_OBJ&&I=='"'?i=_.WRITING_OBJ_LITERAL:R==_.WRITING_SUB_URI&&I==">"||R==_.WRITING_BNODE_URI&&I==" "?i=_.PRE_PRED:R==_.WRITING_PRED_URI&&I==">"?i=_.PRE_OBJ:R==_.WRITING_OBJ_URI&&I==">"||R==_.WRITING_OBJ_BNODE&&I==" "||R==_.WRITING_OBJ_LITERAL&&I=='"'||R==_.WRITING_LIT_LANG&&I==" "||R==_.WRITING_LIT_TYPE&&I==">"?i=_.POST_OBJ:R==_.WRITING_OBJ_LITERAL&&I=="@"?i=_.WRITING_LIT_LANG:R==_.WRITING_OBJ_LITERAL&&I=="^"?i=_.WRITING_LIT_TYPE:I==" "&&(R==_.PRE_SUBJECT||R==_.PRE_PRED||R==_.PRE_OBJ||R==_.POST_OBJ)?i=R:R==_.POST_OBJ&&I=="."?i=_.PRE_SUBJECT:i=_.ERROR,e.location=i}const u={name:"ntriples",startState:function(){return{location:_.PRE_SUBJECT,uris:[],anchors:[],bnodes:[],langs:[],types:[]}},token:function(e,I){var R=e.next();if(R=="<"){T(I,R);var i="";return e.eatWhile(function(n){return n!="#"&&n!=">"?(i+=n,!0):!1}),I.uris.push(i),e.match("#",!1)||(e.next(),T(I,">")),"variable"}if(R=="#"){var r="";return e.eatWhile(function(n){return n!=">"&&n!=" "?(r+=n,!0):!1}),I.anchors.push(r),"url"}if(R==">")return T(I,">"),"variable";if(R=="_"){T(I,R);var f="";return e.eatWhile(function(n){return n!=" "?(f+=n,!0):!1}),I.bnodes.push(f),e.next(),T(I," "),"builtin"}if(R=='"')return T(I,R),e.eatWhile(function(n){return n!='"'}),e.next(),e.peek()!="@"&&e.peek()!="^"&&T(I,'"'),"string";if(R=="@"){T(I,"@");var E="";return e.eatWhile(function(n){return n!=" "?(E+=n,!0):!1}),I.langs.push(E),e.next(),T(I," "),"string.special"}if(R=="^"){e.next(),T(I,"^");var l="";return e.eatWhile(function(n){return n!=">"?(l+=n,!0):!1}),I.types.push(l),e.next(),T(I,">"),"variable"}R==" "&&T(I,R),R=="."&&T(I,R)}};export{u as ntriples}; diff --git a/frontend/dist/assets/octave-Ck1zUtKM.js b/frontend/dist/assets/octave-Ck1zUtKM.js new file mode 100644 index 0000000..f5000f5 --- /dev/null +++ b/frontend/dist/assets/octave-Ck1zUtKM.js @@ -0,0 +1 @@ +function t(e){return new RegExp("^(("+e.join(")|(")+"))\\b")}var f=new RegExp("^[\\+\\-\\*/&|\\^~<>!@'\\\\]"),u=new RegExp("^[\\(\\[\\{\\},:=;\\.]"),a=new RegExp("^((==)|(~=)|(<=)|(>=)|(<<)|(>>)|(\\.[\\+\\-\\*/\\^\\\\]))"),l=new RegExp("^((!=)|(\\+=)|(\\-=)|(\\*=)|(/=)|(&=)|(\\|=)|(\\^=))"),c=new RegExp("^((>>=)|(<<=))"),p=new RegExp("^[\\]\\)]"),d=new RegExp("^[_A-Za-z¡-￿][_A-Za-z0-9¡-￿]*"),s=t(["error","eval","function","abs","acos","atan","asin","cos","cosh","exp","log","prod","sum","log10","max","min","sign","sin","sinh","sqrt","tan","reshape","break","zeros","default","margin","round","ones","rand","syn","ceil","floor","size","clear","zeros","eye","mean","std","cov","det","eig","inv","norm","rank","trace","expm","logm","sqrtm","linspace","plot","title","xlabel","ylabel","legend","text","grid","meshgrid","mesh","num2str","fft","ifft","arrayfun","cellfun","input","fliplr","flipud","ismember"]),h=t(["return","case","switch","else","elseif","end","endif","endfunction","if","otherwise","do","for","while","try","catch","classdef","properties","events","methods","global","persistent","endfor","endwhile","printf","sprintf","disp","until","continue","pkg"]);function o(e,n){return!e.sol()&&e.peek()==="'"?(e.next(),n.tokenize=i,"operator"):(n.tokenize=i,i(e,n))}function m(e,n){return e.match(/^.*%}/)?(n.tokenize=i,"comment"):(e.skipToEnd(),"comment")}function i(e,n){if(e.eatSpace())return null;if(e.match("%{"))return n.tokenize=m,e.skipToEnd(),"comment";if(e.match(/^[%#]/))return e.skipToEnd(),"comment";if(e.match(/^[0-9\.+-]/,!1)){if(e.match(/^[+-]?0x[0-9a-fA-F]+[ij]?/))return e.tokenize=i,"number";if(e.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?[ij]?/)||e.match(/^[+-]?\d+([EeDd][+-]?\d+)?[ij]?/))return"number"}if(e.match(t(["nan","NaN","inf","Inf"])))return"number";var r=e.match(/^"(?:[^"]|"")*("|$)/)||e.match(/^'(?:[^']|'')*('|$)/);return r?r[1]?"string":"error":e.match(h)?"keyword":e.match(s)?"builtin":e.match(d)?"variable":e.match(f)||e.match(a)?"operator":e.match(u)||e.match(l)||e.match(c)?null:e.match(p)?(n.tokenize=o,null):(e.next(),"error")}const g={name:"octave",startState:function(){return{tokenize:i}},token:function(e,n){var r=n.tokenize(e,n);return(r==="number"||r==="variable")&&(n.tokenize=o),r},languageData:{commentTokens:{line:"%"}}};export{g as octave}; diff --git a/frontend/dist/assets/omit-BTSq4AYh.js b/frontend/dist/assets/omit-BTSq4AYh.js new file mode 100644 index 0000000..9850e25 --- /dev/null +++ b/frontend/dist/assets/omit-BTSq4AYh.js @@ -0,0 +1 @@ +import{co as f,ck as u,cl as i,cq as s,cr as a}from"./index-BKKvzUDD.js";import{c,g as _,b as g}from"./_baseClone-B5RBzbh5.js";import{a as v}from"./index-GAnQrJsQ.js";function O(r,e,n){var o=-1,l=r.length;e<0&&(e=-e>l?0:l+e),n=n>l?l:n,n<0&&(n+=l),l=e>n?0:n-e>>>0,e>>>=0;for(var t=Array(l);++o1),t}),c(r,_(r),n),o&&(n=g(n,E|b|h,C));for(var l=e.length;l--;)w(n,e[l]);return n});export{G as o}; diff --git a/frontend/dist/assets/oz-BzwKVEFT.js b/frontend/dist/assets/oz-BzwKVEFT.js new file mode 100644 index 0000000..9742186 --- /dev/null +++ b/frontend/dist/assets/oz-BzwKVEFT.js @@ -0,0 +1 @@ +function o(e){return new RegExp("^(("+e.join(")|(")+"))\\b")}var k=/[\^@!\|<>#~\.\*\-\+\\/,=]/,s=/(<-)|(:=)|(=<)|(>=)|(<=)|(<:)|(>:)|(=:)|(\\=)|(\\=:)|(!!)|(==)|(::)/,p=/(:::)|(\.\.\.)|(=<:)|(>=:)/,f=["in","then","else","of","elseof","elsecase","elseif","catch","finally","with","require","prepare","import","export","define","do"],l=["end"],z=o(["true","false","nil","unit"]),m=o(["andthen","at","attr","declare","feat","from","lex","mod","div","mode","orelse","parser","prod","prop","scanner","self","syn","token"]),v=o(["local","proc","fun","case","class","if","cond","or","dis","choice","not","thread","try","raise","lock","for","suchthat","meth","functor"]),d=o(f),h=o(l);function i(e,n){if(e.eatSpace())return null;if(e.match(/[{}]/))return"bracket";if(e.match("[]"))return"keyword";if(e.match(p)||e.match(s))return"operator";if(e.match(z))return"atom";var t=e.match(v);if(t)return n.doInCurrentLine?n.doInCurrentLine=!1:n.currentIndent++,t[0]=="proc"||t[0]=="fun"?n.tokenize=x:t[0]=="class"?n.tokenize=g:t[0]=="meth"&&(n.tokenize=w),"keyword";if(e.match(d)||e.match(m))return"keyword";if(e.match(h))return n.currentIndent--,"keyword";var r=e.next();if(r=='"'||r=="'")return n.tokenize=y(r),n.tokenize(e,n);if(/[~\d]/.test(r)){if(r=="~")if(/^[0-9]/.test(e.peek())){if(e.next()=="0"&&e.match(/^[xX][0-9a-fA-F]+/)||e.match(/^[0-9]*(\.[0-9]+)?([eE][~+]?[0-9]+)?/))return"number"}else return null;return r=="0"&&e.match(/^[xX][0-9a-fA-F]+/)||e.match(/^[0-9]*(\.[0-9]+)?([eE][~+]?[0-9]+)?/)?"number":null}return r=="%"?(e.skipToEnd(),"comment"):r=="/"&&e.eat("*")?(n.tokenize=a,a(e,n)):k.test(r)?"operator":(e.eatWhile(/\w/),"variable")}function g(e,n){return e.eatSpace()?null:(e.match(/([A-Z][A-Za-z0-9_]*)|(`.+`)/),n.tokenize=i,"type")}function w(e,n){return e.eatSpace()?null:(e.match(/([a-zA-Z][A-Za-z0-9_]*)|(`.+`)/),n.tokenize=i,"def")}function x(e,n){return e.eatSpace()?null:!n.hasPassedFirstStage&&e.eat("{")?(n.hasPassedFirstStage=!0,"bracket"):n.hasPassedFirstStage?(e.match(/([A-Z][A-Za-z0-9_]*)|(`.+`)|\$/),n.hasPassedFirstStage=!1,n.tokenize=i,"def"):(n.tokenize=i,null)}function a(e,n){for(var t=!1,r;r=e.next();){if(r=="/"&&t){n.tokenize=i;break}t=r=="*"}return"comment"}function y(e){return function(n,t){for(var r=!1,u,c=!1;(u=n.next())!=null;){if(u==e&&!r){c=!0;break}r=!r&&u=="\\"}return(c||!r)&&(t.tokenize=i),"string"}}function b(){var e=f.concat(l);return new RegExp("[\\[\\]]|("+e.join("|")+")$")}const I={name:"oz",startState:function(){return{tokenize:i,currentIndent:0,doInCurrentLine:!1,hasPassedFirstStage:!1}},token:function(e,n){return e.sol()&&(n.doInCurrentLine=0),n.tokenize(e,n)},indent:function(e,n,t){var r=n.replace(/^\s+|\s+$/g,"");return r.match(h)||r.match(d)||r.match(/(\[])/)?t.unit*(e.currentIndent-1):e.currentIndent<0?0:e.currentIndent*t.unit},languageData:{indentOnInut:b(),commentTokens:{line:"%",block:{open:"/*",close:"*/"}}}};export{I as oz}; diff --git a/frontend/dist/assets/pascal--L3eBynH.js b/frontend/dist/assets/pascal--L3eBynH.js new file mode 100644 index 0000000..455009f --- /dev/null +++ b/frontend/dist/assets/pascal--L3eBynH.js @@ -0,0 +1 @@ +function c(r){for(var n={},e=r.split(" "),t=0;t!?|\/]/;function d(r,n){var e=r.next();if(e=="#"&&n.startOfLine)return r.skipToEnd(),"meta";if(e=='"'||e=="'")return n.tokenize=p(e),n.tokenize(r,n);if(e=="("&&r.eat("*"))return n.tokenize=l,l(r,n);if(e=="{")return n.tokenize=u,u(r,n);if(/[\[\]\(\),;\:\.]/.test(e))return null;if(/\d/.test(e))return r.eatWhile(/[\w\.]/),"number";if(e=="/"&&r.eat("/"))return r.skipToEnd(),"comment";if(a.test(e))return r.eatWhile(a),"operator";r.eatWhile(/[\w\$_]/);var t=r.current().toLowerCase();return s.propertyIsEnumerable(t)?"keyword":f.propertyIsEnumerable(t)?"atom":"variable"}function p(r){return function(n,e){for(var t=!1,i,o=!1;(i=n.next())!=null;){if(i==r&&!t){o=!0;break}t=!t&&i=="\\"}return(o||!t)&&(e.tokenize=null),"string"}}function l(r,n){for(var e=!1,t;t=r.next();){if(t==")"&&e){n.tokenize=null;break}e=t=="*"}return"comment"}function u(r,n){for(var e;e=r.next();)if(e=="}"){n.tokenize=null;break}return"comment"}const k={name:"pascal",startState:function(){return{tokenize:null}},token:function(r,n){if(r.eatSpace())return null;var e=(n.tokenize||d)(r,n);return e=="comment"||e=="meta",e},languageData:{indentOnInput:/^\s*[{}]$/,commentTokens:{block:{open:"(*",close:"*)"}}}};export{k as pascal}; diff --git a/frontend/dist/assets/perl-CdXCOZ3F.js b/frontend/dist/assets/perl-CdXCOZ3F.js new file mode 100644 index 0000000..12b1ea5 --- /dev/null +++ b/frontend/dist/assets/perl-CdXCOZ3F.js @@ -0,0 +1 @@ +function t(n,e){return n.string.charAt(n.pos+(e||0))}function O(n,e){if(e){var u=n.pos-e;return n.string.substr(u>=0?u:0,e)}else return n.string.substr(0,n.pos-1)}function g(n,e){var u=n.string.length,$=u-n.pos+1;return n.string.substr(n.pos,e&&e=($=n.string.length-1)?n.pos=$:n.pos=u}var p={"->":4,"++":4,"--":4,"**":4,"=~":4,"!~":4,"*":4,"/":4,"%":4,x:4,"+":4,"-":4,".":4,"<<":4,">>":4,"<":4,">":4,"<=":4,">=":4,lt:4,gt:4,le:4,ge:4,"==":4,"!=":4,"<=>":4,eq:4,ne:4,cmp:4,"~~":4,"&":4,"|":4,"^":4,"&&":4,"||":4,"//":4,"..":4,"...":4,"?":4,":":4,"=":4,"+=":4,"-=":4,"*=":4,",":4,"=>":4,"::":4,not:4,and:4,or:4,xor:4,BEGIN:[5,1],END:[5,1],PRINT:[5,1],PRINTF:[5,1],GETC:[5,1],READ:[5,1],READLINE:[5,1],DESTROY:[5,1],TIE:[5,1],TIEHANDLE:[5,1],UNTIE:[5,1],STDIN:5,STDIN_TOP:5,STDOUT:5,STDOUT_TOP:5,STDERR:5,STDERR_TOP:5,$ARG:5,$_:5,"@ARG":5,"@_":5,$LIST_SEPARATOR:5,'$"':5,$PROCESS_ID:5,$PID:5,$$:5,$REAL_GROUP_ID:5,$GID:5,"$(":5,$EFFECTIVE_GROUP_ID:5,$EGID:5,"$)":5,$PROGRAM_NAME:5,$0:5,$SUBSCRIPT_SEPARATOR:5,$SUBSEP:5,"$;":5,$REAL_USER_ID:5,$UID:5,"$<":5,$EFFECTIVE_USER_ID:5,$EUID:5,"$>":5,$a:5,$b:5,$COMPILING:5,"$^C":5,$DEBUGGING:5,"$^D":5,"${^ENCODING}":5,$ENV:5,"%ENV":5,$SYSTEM_FD_MAX:5,"$^F":5,"@F":5,"${^GLOBAL_PHASE}":5,"$^H":5,"%^H":5,"@INC":5,"%INC":5,$INPLACE_EDIT:5,"$^I":5,"$^M":5,$OSNAME:5,"$^O":5,"${^OPEN}":5,$PERLDB:5,"$^P":5,$SIG:5,"%SIG":5,$BASETIME:5,"$^T":5,"${^TAINT}":5,"${^UNICODE}":5,"${^UTF8CACHE}":5,"${^UTF8LOCALE}":5,$PERL_VERSION:5,"$^V":5,"${^WIN32_SLOPPY_STAT}":5,$EXECUTABLE_NAME:5,"$^X":5,$1:5,$MATCH:5,"$&":5,"${^MATCH}":5,$PREMATCH:5,"$`":5,"${^PREMATCH}":5,$POSTMATCH:5,"$'":5,"${^POSTMATCH}":5,$LAST_PAREN_MATCH:5,"$+":5,$LAST_SUBMATCH_RESULT:5,"$^N":5,"@LAST_MATCH_END":5,"@+":5,"%LAST_PAREN_MATCH":5,"%+":5,"@LAST_MATCH_START":5,"@-":5,"%LAST_MATCH_START":5,"%-":5,$LAST_REGEXP_CODE_RESULT:5,"$^R":5,"${^RE_DEBUG_FLAGS}":5,"${^RE_TRIE_MAXBUF}":5,$ARGV:5,"@ARGV":5,ARGV:5,ARGVOUT:5,$OUTPUT_FIELD_SEPARATOR:5,$OFS:5,"$,":5,$INPUT_LINE_NUMBER:5,$NR:5,"$.":5,$INPUT_RECORD_SEPARATOR:5,$RS:5,"$/":5,$OUTPUT_RECORD_SEPARATOR:5,$ORS:5,"$\\":5,$OUTPUT_AUTOFLUSH:5,"$|":5,$ACCUMULATOR:5,"$^A":5,$FORMAT_FORMFEED:5,"$^L":5,$FORMAT_PAGE_NUMBER:5,"$%":5,$FORMAT_LINES_LEFT:5,"$-":5,$FORMAT_LINE_BREAK_CHARACTERS:5,"$:":5,$FORMAT_LINES_PER_PAGE:5,"$=":5,$FORMAT_TOP_NAME:5,"$^":5,$FORMAT_NAME:5,"$~":5,"${^CHILD_ERROR_NATIVE}":5,$EXTENDED_OS_ERROR:5,"$^E":5,$EXCEPTIONS_BEING_CAUGHT:5,"$^S":5,$WARNING:5,"$^W":5,"${^WARNING_BITS}":5,$OS_ERROR:5,$ERRNO:5,"$!":5,"%OS_ERROR":5,"%ERRNO":5,"%!":5,$CHILD_ERROR:5,"$?":5,$EVAL_ERROR:5,"$@":5,$OFMT:5,"$#":5,"$*":5,$ARRAY_BASE:5,"$[":5,$OLD_PERL_VERSION:5,"$]":5,if:[1,1],elsif:[1,1],else:[1,1],while:[1,1],unless:[1,1],for:[1,1],foreach:[1,1],abs:1,accept:1,alarm:1,atan2:1,bind:1,binmode:1,bless:1,bootstrap:1,break:1,caller:1,chdir:1,chmod:1,chomp:1,chop:1,chown:1,chr:1,chroot:1,close:1,closedir:1,connect:1,continue:[1,1],cos:1,crypt:1,dbmclose:1,dbmopen:1,default:1,defined:1,delete:1,die:1,do:1,dump:1,each:1,endgrent:1,endhostent:1,endnetent:1,endprotoent:1,endpwent:1,endservent:1,eof:1,eval:1,exec:1,exists:1,exit:1,exp:1,fcntl:1,fileno:1,flock:1,fork:1,format:1,formline:1,getc:1,getgrent:1,getgrgid:1,getgrnam:1,gethostbyaddr:1,gethostbyname:1,gethostent:1,getlogin:1,getnetbyaddr:1,getnetbyname:1,getnetent:1,getpeername:1,getpgrp:1,getppid:1,getpriority:1,getprotobyname:1,getprotobynumber:1,getprotoent:1,getpwent:1,getpwnam:1,getpwuid:1,getservbyname:1,getservbyport:1,getservent:1,getsockname:1,getsockopt:1,given:1,glob:1,gmtime:1,goto:1,grep:1,hex:1,import:1,index:1,int:1,ioctl:1,join:1,keys:1,kill:1,last:1,lc:1,lcfirst:1,length:1,link:1,listen:1,local:2,localtime:1,lock:1,log:1,lstat:1,m:null,map:1,mkdir:1,msgctl:1,msgget:1,msgrcv:1,msgsnd:1,my:2,new:1,next:1,no:1,oct:1,open:1,opendir:1,ord:1,our:2,pack:1,package:1,pipe:1,pop:1,pos:1,print:1,printf:1,prototype:1,push:1,q:null,qq:null,qr:null,quotemeta:null,qw:null,qx:null,rand:1,read:1,readdir:1,readline:1,readlink:1,readpipe:1,recv:1,redo:1,ref:1,rename:1,require:1,reset:1,return:1,reverse:1,rewinddir:1,rindex:1,rmdir:1,s:null,say:1,scalar:1,seek:1,seekdir:1,select:1,semctl:1,semget:1,semop:1,send:1,setgrent:1,sethostent:1,setnetent:1,setpgrp:1,setpriority:1,setprotoent:1,setpwent:1,setservent:1,setsockopt:1,shift:1,shmctl:1,shmget:1,shmread:1,shmwrite:1,shutdown:1,sin:1,sleep:1,socket:1,socketpair:1,sort:1,splice:1,split:1,sprintf:1,sqrt:1,srand:1,stat:1,state:1,study:1,sub:1,substr:1,symlink:1,syscall:1,sysopen:1,sysread:1,sysseek:1,system:1,syswrite:1,tell:1,telldir:1,tie:1,tied:1,time:1,times:1,tr:null,truncate:1,uc:1,ucfirst:1,umask:1,undef:1,unlink:1,unpack:1,unshift:1,untie:1,use:1,utime:1,values:1,vec:1,wait:1,waitpid:1,wantarray:1,warn:1,when:1,write:1,y:null},f="string.special",l=/[goseximacplud]/;function r(n,e,u,$,E){return e.chain=null,e.style=null,e.tail=null,e.tokenize=function(i,R){for(var _=!1,A,d=0;A=i.next();){if(A===u[d]&&!_)return u[++d]!==void 0?(R.chain=u[d],R.style=$,R.tail=E):E&&i.eatWhile(E),R.tokenize=T,$;_=!_&&A=="\\"}return $},e.tokenize(n,e)}function S(n,e,u){return e.tokenize=function($,E){return $.string==u&&(E.tokenize=T),$.skipToEnd(),"string"},e.tokenize(n,e)}function T(n,e){if(n.eatSpace())return null;if(e.chain)return r(n,e,e.chain,e.style,e.tail);if(n.match(/^(\-?((\d[\d_]*)?\.\d+(e[+-]?\d+)?|\d+\.\d*)|0x[\da-fA-F_]+|0b[01_]+|\d[\d_]*(e[+-]?\d+)?)/))return"number";if(n.match(/^<<(?=[_a-zA-Z])/))return n.eatWhile(/\w/),S(n,e,n.current().substr(2));if(n.sol()&&n.match(/^\=item(?!\w)/))return S(n,e,"=cut");var u=n.next();if(u=='"'||u=="'"){if(O(n,3)=="<<"+u){var $=n.pos;n.eatWhile(/\w/);var E=n.current().substr(1);if(E&&n.eat(u))return S(n,e,E);n.pos=$}return r(n,e,[u],"string")}if(u=="q"){var i=t(n,-2);if(!(i&&/\w/.test(i))){if(i=t(n,0),i=="x"){if(i=t(n,1),i=="(")return o(n,2),r(n,e,[")"],f,l);if(i=="[")return o(n,2),r(n,e,["]"],f,l);if(i=="{")return o(n,2),r(n,e,["}"],f,l);if(i=="<")return o(n,2),r(n,e,[">"],f,l);if(/[\^'"!~\/]/.test(i))return o(n,1),r(n,e,[n.eat(i)],f,l)}else if(i=="q"){if(i=t(n,1),i=="(")return o(n,2),r(n,e,[")"],"string");if(i=="[")return o(n,2),r(n,e,["]"],"string");if(i=="{")return o(n,2),r(n,e,["}"],"string");if(i=="<")return o(n,2),r(n,e,[">"],"string");if(/[\^'"!~\/]/.test(i))return o(n,1),r(n,e,[n.eat(i)],"string")}else if(i=="w"){if(i=t(n,1),i=="(")return o(n,2),r(n,e,[")"],"bracket");if(i=="[")return o(n,2),r(n,e,["]"],"bracket");if(i=="{")return o(n,2),r(n,e,["}"],"bracket");if(i=="<")return o(n,2),r(n,e,[">"],"bracket");if(/[\^'"!~\/]/.test(i))return o(n,1),r(n,e,[n.eat(i)],"bracket")}else if(i=="r"){if(i=t(n,1),i=="(")return o(n,2),r(n,e,[")"],f,l);if(i=="[")return o(n,2),r(n,e,["]"],f,l);if(i=="{")return o(n,2),r(n,e,["}"],f,l);if(i=="<")return o(n,2),r(n,e,[">"],f,l);if(/[\^'"!~\/]/.test(i))return o(n,1),r(n,e,[n.eat(i)],f,l)}else if(/[\^'"!~\/(\[{<]/.test(i)){if(i=="(")return o(n,1),r(n,e,[")"],"string");if(i=="[")return o(n,1),r(n,e,["]"],"string");if(i=="{")return o(n,1),r(n,e,["}"],"string");if(i=="<")return o(n,1),r(n,e,[">"],"string");if(/[\^'"!~\/]/.test(i))return r(n,e,[n.eat(i)],"string")}}}if(u=="m"){var i=t(n,-2);if(!(i&&/\w/.test(i))&&(i=n.eat(/[(\[{<\^'"!~\/]/),i)){if(/[\^'"!~\/]/.test(i))return r(n,e,[i],f,l);if(i=="(")return r(n,e,[")"],f,l);if(i=="[")return r(n,e,["]"],f,l);if(i=="{")return r(n,e,["}"],f,l);if(i=="<")return r(n,e,[">"],f,l)}}if(u=="s"){var i=/[\/>\]})\w]/.test(t(n,-2));if(!i&&(i=n.eat(/[(\[{<\^'"!~\/]/),i))return i=="["?r(n,e,["]","]"],f,l):i=="{"?r(n,e,["}","}"],f,l):i=="<"?r(n,e,[">",">"],f,l):i=="("?r(n,e,[")",")"],f,l):r(n,e,[i,i],f,l)}if(u=="y"){var i=/[\/>\]})\w]/.test(t(n,-2));if(!i&&(i=n.eat(/[(\[{<\^'"!~\/]/),i))return i=="["?r(n,e,["]","]"],f,l):i=="{"?r(n,e,["}","}"],f,l):i=="<"?r(n,e,[">",">"],f,l):i=="("?r(n,e,[")",")"],f,l):r(n,e,[i,i],f,l)}if(u=="t"){var i=/[\/>\]})\w]/.test(t(n,-2));if(!i&&(i=n.eat("r"),i&&(i=n.eat(/[(\[{<\^'"!~\/]/),i)))return i=="["?r(n,e,["]","]"],f,l):i=="{"?r(n,e,["}","}"],f,l):i=="<"?r(n,e,[">",">"],f,l):i=="("?r(n,e,[")",")"],f,l):r(n,e,[i,i],f,l)}if(u=="`")return r(n,e,[u],"builtin");if(u=="/")return/~\s*$/.test(O(n))?r(n,e,[u],f,l):"operator";if(u=="$"){var $=n.pos;if(n.eatWhile(/\d/)||n.eat("{")&&n.eatWhile(/\d/)&&n.eat("}"))return"builtin";n.pos=$}if(/[$@%]/.test(u)){var $=n.pos;if(n.eat("^")&&n.eat(/[A-Z]/)||!/[@$%&]/.test(t(n,-2))&&n.eat(/[=|\\\-#?@;:&`~\^!\[\]*'"$+.,\/<>()]/)){var i=n.current();if(p[i])return"builtin"}n.pos=$}if(/[$@%&]/.test(u)&&(n.eatWhile(/[\w$]/)||n.eat("{")&&n.eatWhile(/[\w$]/)&&n.eat("}"))){var i=n.current();return p[i]?"builtin":"variable"}if(u=="#"&&t(n,-2)!="$")return n.skipToEnd(),"comment";if(/[:+\-\^*$&%@=<>!?|\/~\.]/.test(u)){var $=n.pos;if(n.eatWhile(/[:+\-\^*$&%@=<>!?|\/~\.]/),p[n.current()])return"operator";n.pos=$}if(u=="_"&&n.pos==1){if(g(n,6)=="_END__")return r(n,e,["\0"],"comment");if(g(n,7)=="_DATA__")return r(n,e,["\0"],"builtin");if(g(n,7)=="_C__")return r(n,e,["\0"],"string")}if(/\w/.test(u)){var $=n.pos;if(t(n,-2)=="{"&&(t(n,0)=="}"||n.eatWhile(/\w/)&&t(n,0)=="}"))return"string";n.pos=$}if(/[A-Z]/.test(u)){var R=t(n,-2),$=n.pos;if(n.eatWhile(/[A-Z_]/),/[\da-z]/.test(t(n,0)))n.pos=$;else{var i=p[n.current()];return i?(i[1]&&(i=i[0]),R!=":"?i==1?"keyword":i==2?"def":i==3?"atom":i==4?"operator":i==5?"builtin":"meta":"meta"):"meta"}}if(/[a-zA-Z_]/.test(u)){var R=t(n,-2);n.eatWhile(/\w/);var i=p[n.current()];return i?(i[1]&&(i=i[0]),R!=":"?i==1?"keyword":i==2?"def":i==3?"atom":i==4?"operator":i==5?"builtin":"meta":"meta"):"meta"}return null}const I={name:"perl",startState:function(){return{tokenize:T,chain:null,style:null,tail:null}},token:function(n,e){return(e.tokenize||T)(n,e)},languageData:{commentTokens:{line:"#"},wordChars:"$"}};export{I as perl}; diff --git a/frontend/dist/assets/pig-CevX1Tat.js b/frontend/dist/assets/pig-CevX1Tat.js new file mode 100644 index 0000000..db4ece2 --- /dev/null +++ b/frontend/dist/assets/pig-CevX1Tat.js @@ -0,0 +1 @@ +function r(e){for(var T={},O=e.split(" "),E=0;E=&?:\/!|]/;function L(e,T,O){return T.tokenize=O,O(e,T)}function u(e,T){for(var O=!1,E;E=e.next();){if(E=="/"&&O){T.tokenize=A;break}O=E=="*"}return"comment"}function C(e){return function(T,O){for(var E=!1,N,R=!1;(N=T.next())!=null;){if(N==e&&!E){R=!0;break}E=!E&&N=="\\"}return(R||!E)&&(O.tokenize=A),"error"}}function A(e,T){var O=e.next();return O=='"'||O=="'"?L(e,T,C(O)):/[\[\]{}\(\),;\.]/.test(O)?null:/\d/.test(O)?(e.eatWhile(/[\w\.]/),"number"):O=="/"?e.eat("*")?L(e,T,u):(e.eatWhile(I),"operator"):O=="-"?e.eat("-")?(e.skipToEnd(),"comment"):(e.eatWhile(I),"operator"):I.test(O)?(e.eatWhile(I),"operator"):(e.eatWhile(/[\w\$_]/),n&&n.propertyIsEnumerable(e.current().toUpperCase())&&!e.eat(")")&&!e.eat(".")?"keyword":S&&S.propertyIsEnumerable(e.current().toUpperCase())?"builtin":t&&t.propertyIsEnumerable(e.current().toUpperCase())?"type":"variable")}const G={name:"pig",startState:function(){return{tokenize:A,startOfLine:!0}},token:function(e,T){if(e.eatSpace())return null;var O=T.tokenize(e,T);return O},languageData:{autocomplete:(i+o+U).split(" ")}};export{G as pig}; diff --git a/frontend/dist/assets/powershell-CFHJl5sT.js b/frontend/dist/assets/powershell-CFHJl5sT.js new file mode 100644 index 0000000..80a1cc1 --- /dev/null +++ b/frontend/dist/assets/powershell-CFHJl5sT.js @@ -0,0 +1 @@ +function a(e,n){n=n||{};for(var r=n.prefix!==void 0?n.prefix:"^",t=n.suffix!==void 0?n.suffix:"\\b",i=0;i/,k=a([b,C],{suffix:""}),h=/^((0x[\da-f]+)|((\d+\.\d+|\d\.|\.\d+|\d+)(e[\+\-]?\d+)?))[ld]?([kmgtp]b)?/i,x=/^[A-Za-z\_][A-Za-z\-\_\d]*\b/,E=/[A-Z]:|%|\?/i,w=a([/Add-(Computer|Content|History|Member|PSSnapin|Type)/,/Checkpoint-Computer/,/Clear-(Content|EventLog|History|Host|Item(Property)?|Variable)/,/Compare-Object/,/Complete-Transaction/,/Connect-PSSession/,/ConvertFrom-(Csv|Json|SecureString|StringData)/,/Convert-Path/,/ConvertTo-(Csv|Html|Json|SecureString|Xml)/,/Copy-Item(Property)?/,/Debug-Process/,/Disable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)/,/Disconnect-PSSession/,/Enable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)/,/(Enter|Exit)-PSSession/,/Export-(Alias|Clixml|Console|Counter|Csv|FormatData|ModuleMember|PSSession)/,/ForEach-Object/,/Format-(Custom|List|Table|Wide)/,new RegExp("Get-(Acl|Alias|AuthenticodeSignature|ChildItem|Command|ComputerRestorePoint|Content|ControlPanelItem|Counter|Credential|Culture|Date|Event|EventLog|EventSubscriber|ExecutionPolicy|FormatData|Help|History|Host|HotFix|Item|ItemProperty|Job|Location|Member|Module|PfxCertificate|Process|PSBreakpoint|PSCallStack|PSDrive|PSProvider|PSSession|PSSessionConfiguration|PSSnapin|Random|Service|TraceSource|Transaction|TypeData|UICulture|Unique|Variable|Verb|WinEvent|WmiObject)"),/Group-Object/,/Import-(Alias|Clixml|Counter|Csv|LocalizedData|Module|PSSession)/,/ImportSystemModules/,/Invoke-(Command|Expression|History|Item|RestMethod|WebRequest|WmiMethod)/,/Join-Path/,/Limit-EventLog/,/Measure-(Command|Object)/,/Move-Item(Property)?/,new RegExp("New-(Alias|Event|EventLog|Item(Property)?|Module|ModuleManifest|Object|PSDrive|PSSession|PSSessionConfigurationFile|PSSessionOption|PSTransportOption|Service|TimeSpan|Variable|WebServiceProxy|WinEvent)"),/Out-(Default|File|GridView|Host|Null|Printer|String)/,/Pause/,/(Pop|Push)-Location/,/Read-Host/,/Receive-(Job|PSSession)/,/Register-(EngineEvent|ObjectEvent|PSSessionConfiguration|WmiEvent)/,/Remove-(Computer|Event|EventLog|Item(Property)?|Job|Module|PSBreakpoint|PSDrive|PSSession|PSSnapin|TypeData|Variable|WmiObject)/,/Rename-(Computer|Item(Property)?)/,/Reset-ComputerMachinePassword/,/Resolve-Path/,/Restart-(Computer|Service)/,/Restore-Computer/,/Resume-(Job|Service)/,/Save-Help/,/Select-(Object|String|Xml)/,/Send-MailMessage/,new RegExp("Set-(Acl|Alias|AuthenticodeSignature|Content|Date|ExecutionPolicy|Item(Property)?|Location|PSBreakpoint|PSDebug|PSSessionConfiguration|Service|StrictMode|TraceSource|Variable|WmiInstance)"),/Show-(Command|ControlPanelItem|EventLog)/,/Sort-Object/,/Split-Path/,/Start-(Job|Process|Service|Sleep|Transaction|Transcript)/,/Stop-(Computer|Job|Process|Service|Transcript)/,/Suspend-(Job|Service)/,/TabExpansion2/,/Tee-Object/,/Test-(ComputerSecureChannel|Connection|ModuleManifest|Path|PSSessionConfigurationFile)/,/Trace-Command/,/Unblock-File/,/Undo-Transaction/,/Unregister-(Event|PSSessionConfiguration)/,/Update-(FormatData|Help|List|TypeData)/,/Use-Transaction/,/Wait-(Event|Job|Process)/,/Where-Object/,/Write-(Debug|Error|EventLog|Host|Output|Progress|Verbose|Warning)/,/cd|help|mkdir|more|oss|prompt/,/ac|asnp|cat|cd|chdir|clc|clear|clhy|cli|clp|cls|clv|cnsn|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|dnsn|ebp/,/echo|epal|epcsv|epsn|erase|etsn|exsn|fc|fl|foreach|ft|fw|gal|gbp|gc|gci|gcm|gcs|gdr|ghy|gi|gjb|gl|gm|gmo|gp|gps/,/group|gsn|gsnp|gsv|gu|gv|gwmi|h|history|icm|iex|ihy|ii|ipal|ipcsv|ipmo|ipsn|irm|ise|iwmi|iwr|kill|lp|ls|man|md/,/measure|mi|mount|move|mp|mv|nal|ndr|ni|nmo|npssc|nsn|nv|ogv|oh|popd|ps|pushd|pwd|r|rbp|rcjb|rcsn|rd|rdr|ren|ri/,/rjb|rm|rmdir|rmo|rni|rnp|rp|rsn|rsnp|rujb|rv|rvpa|rwmi|sajb|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls/,/sort|sp|spjb|spps|spsv|start|sujb|sv|swmi|tee|trcm|type|where|wjb|write/],{prefix:"",suffix:""}),y=a([/[$?^_]|Args|ConfirmPreference|ConsoleFileName|DebugPreference|Error|ErrorActionPreference|ErrorView|ExecutionContext/,/FormatEnumerationLimit|Home|Host|Input|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount/,/MaximumHistoryCount|MaximumVariableCount|MyInvocation|NestedPromptLevel|OutputEncoding|Pid|Profile|ProgressPreference/,/PSBoundParameters|PSCommandPath|PSCulture|PSDefaultParameterValues|PSEmailServer|PSHome|PSScriptRoot|PSSessionApplicationName/,/PSSessionConfigurationName|PSSessionOption|PSUICulture|PSVersionTable|Pwd|ShellId|StackTrace|VerbosePreference/,/WarningPreference|WhatIfPreference/,/Event|EventArgs|EventSubscriber|Sender/,/Matches|Ofs|ForEach|LastExitCode|PSCmdlet|PSItem|PSSenderInfo|This/,/true|false|null/],{prefix:"\\$",suffix:""}),M=a([E,w,y],{suffix:f}),p={keyword:P,number:h,operator:k,builtin:M,punctuation:d,variable:x};function o(e,n){var r=n.returnStack[n.returnStack.length-1];if(r&&r.shouldReturnFrom(n))return n.tokenize=r.tokenize,n.returnStack.pop(),n.tokenize(e,n);if(e.eatSpace())return null;if(e.eat("("))return n.bracketNesting+=1,"punctuation";if(e.eat(")"))return n.bracketNesting-=1,"punctuation";for(var t in p)if(e.match(p[t]))return t;var i=e.next();if(i==="'")return R(e,n);if(i==="$")return s(e,n);if(i==='"')return v(e,n);if(i==="<"&&e.eat("#"))return n.tokenize=S,S(e,n);if(i==="#")return e.skipToEnd(),"comment";if(i==="@"){var l=e.eat(/["']/);if(l&&e.eol())return n.tokenize=u,n.startQuote=l[0],u(e,n);if(e.eol())return"error";if(e.peek().match(/[({]/))return"punctuation";if(e.peek().match(c))return s(e,n)}return"error"}function R(e,n){for(var r;(r=e.peek())!=null;)if(e.next(),r==="'"&&!e.eat("'"))return n.tokenize=o,"string";return"error"}function v(e,n){for(var r;(r=e.peek())!=null;){if(r==="$")return n.tokenize=I,"string";if(e.next(),r==="`"){e.next();continue}if(r==='"'&&!e.eat('"'))return n.tokenize=o,"string"}return"error"}function I(e,n){return g(e,n,v)}function z(e,n){return n.tokenize=u,n.startQuote='"',u(e,n)}function T(e,n){return g(e,n,z)}function g(e,n,r){if(e.match("$(")){var t=n.bracketNesting;return n.returnStack.push({shouldReturnFrom:function(i){return i.bracketNesting===t},tokenize:r}),n.tokenize=o,n.bracketNesting+=1,"punctuation"}else return e.next(),n.returnStack.push({shouldReturnFrom:function(){return!0},tokenize:r}),n.tokenize=s,n.tokenize(e,n)}function S(e,n){for(var r=!1,t;(t=e.next())!=null;){if(r&&t==">"){n.tokenize=o;break}r=t==="#"}return"comment"}function s(e,n){var r=e.peek();return e.eat("{")?(n.tokenize=m,m(e,n)):r!=null&&r.match(c)?(e.eatWhile(c),n.tokenize=o,"variable"):(n.tokenize=o,"error")}function m(e,n){for(var r;(r=e.next())!=null;)if(r==="}"){n.tokenize=o;break}return"variable"}function u(e,n){var r=n.startQuote;if(e.sol()&&e.match(new RegExp(r+"@")))n.tokenize=o;else if(r==='"')for(;!e.eol();){var t=e.peek();if(t==="$")return n.tokenize=T,"string";e.next(),t==="`"&&e.next()}else e.skipToEnd();return"string"}const D={name:"powershell",startState:function(){return{returnStack:[],bracketNesting:0,tokenize:o}},token:function(e,n){return n.tokenize(e,n)},languageData:{commentTokens:{line:"#",block:{open:"<#",close:"#>"}}}};export{D as powerShell}; diff --git a/frontend/dist/assets/properties-C78fOPTZ.js b/frontend/dist/assets/properties-C78fOPTZ.js new file mode 100644 index 0000000..449af6e --- /dev/null +++ b/frontend/dist/assets/properties-C78fOPTZ.js @@ -0,0 +1 @@ +const f={name:"properties",token:function(e,i){var o=e.sol()||i.afterSection,l=e.eol();if(i.afterSection=!1,o&&(i.nextMultiline?(i.inMultiline=!0,i.nextMultiline=!1):i.position="def"),l&&!i.nextMultiline&&(i.inMultiline=!1,i.position="def"),o)for(;e.eatSpace(););var n=e.next();return o&&(n==="#"||n==="!"||n===";")?(i.position="comment",e.skipToEnd(),"comment"):o&&n==="["?(i.afterSection=!0,e.skipTo("]"),e.eat("]"),"header"):n==="="||n===":"?(i.position="quote",null):(n==="\\"&&i.position==="quote"&&e.eol()&&(i.nextMultiline=!0),i.position)},startState:function(){return{position:"def",nextMultiline:!1,inMultiline:!1,afterSection:!1}}};export{f as properties}; diff --git a/frontend/dist/assets/protobuf-ChK-085T.js b/frontend/dist/assets/protobuf-ChK-085T.js new file mode 100644 index 0000000..64dfb2c --- /dev/null +++ b/frontend/dist/assets/protobuf-ChK-085T.js @@ -0,0 +1 @@ +function t(e){return new RegExp("^(("+e.join(")|(")+"))\\b","i")}var n=["package","message","import","syntax","required","optional","repeated","reserved","default","extensions","packed","bool","bytes","double","enum","float","string","int32","int64","uint32","uint64","sint32","sint64","fixed32","fixed64","sfixed32","sfixed64","option","service","rpc","returns"],r=t(n),i=new RegExp("^[_A-Za-z¡-￿][_A-Za-z0-9¡-￿]*");function f(e){return e.eatSpace()?null:e.match("//")?(e.skipToEnd(),"comment"):e.match(/^[0-9\.+-]/,!1)&&(e.match(/^[+-]?0x[0-9a-fA-F]+/)||e.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?/)||e.match(/^[+-]?\d+([EeDd][+-]?\d+)?/))?"number":e.match(/^"([^"]|(""))*"/)||e.match(/^'([^']|(''))*'/)?"string":e.match(r)?"keyword":e.match(i)?"variable":(e.next(),null)}const u={name:"protobuf",token:f,languageData:{autocomplete:n}};export{u as protobuf}; diff --git a/frontend/dist/assets/pug-DeIclll2.js b/frontend/dist/assets/pug-DeIclll2.js new file mode 100644 index 0000000..d1a2063 --- /dev/null +++ b/frontend/dist/assets/pug-DeIclll2.js @@ -0,0 +1 @@ +import{javascript as e}from"./javascript-iXu5QeM3.js";var f={"{":"}","(":")","[":"]"};function p(i){if(typeof i!="object")return i;let n={};for(let t in i){let r=i[t];n[t]=r instanceof Array?r.slice():r}return n}class u{constructor(n){this.indentUnit=n,this.javaScriptLine=!1,this.javaScriptLineExcludesColon=!1,this.javaScriptArguments=!1,this.javaScriptArgumentsDepth=0,this.isInterpolating=!1,this.interpolationNesting=0,this.jsState=e.startState(n),this.restOfLine="",this.isIncludeFiltered=!1,this.isEach=!1,this.lastTag="",this.isAttrs=!1,this.attrsNest=[],this.inAttributeName=!0,this.attributeIsType=!1,this.attrValue="",this.indentOf=1/0,this.indentToken=""}copy(){var n=new u(this.indentUnit);return n.javaScriptLine=this.javaScriptLine,n.javaScriptLineExcludesColon=this.javaScriptLineExcludesColon,n.javaScriptArguments=this.javaScriptArguments,n.javaScriptArgumentsDepth=this.javaScriptArgumentsDepth,n.isInterpolating=this.isInterpolating,n.interpolationNesting=this.interpolationNesting,n.jsState=(e.copyState||p)(this.jsState),n.restOfLine=this.restOfLine,n.isIncludeFiltered=this.isIncludeFiltered,n.isEach=this.isEach,n.lastTag=this.lastTag,n.isAttrs=this.isAttrs,n.attrsNest=this.attrsNest.slice(),n.inAttributeName=this.inAttributeName,n.attributeIsType=this.attributeIsType,n.attrValue=this.attrValue,n.indentOf=this.indentOf,n.indentToken=this.indentToken,n}}function h(i,n){if(i.sol()&&(n.javaScriptLine=!1,n.javaScriptLineExcludesColon=!1),n.javaScriptLine){if(n.javaScriptLineExcludesColon&&i.peek()===":"){n.javaScriptLine=!1,n.javaScriptLineExcludesColon=!1;return}var t=e.token(i,n.jsState);return i.eol()&&(n.javaScriptLine=!1),t||!0}}function d(i,n){if(n.javaScriptArguments){if(n.javaScriptArgumentsDepth===0&&i.peek()!=="("){n.javaScriptArguments=!1;return}if(i.peek()==="("?n.javaScriptArgumentsDepth++:i.peek()===")"&&n.javaScriptArgumentsDepth--,n.javaScriptArgumentsDepth===0){n.javaScriptArguments=!1;return}var t=e.token(i,n.jsState);return t||!0}}function s(i){if(i.match(/^yield\b/))return"keyword"}function S(i){if(i.match(/^(?:doctype) *([^\n]+)?/))return"meta"}function o(i,n){if(i.match("#{"))return n.isInterpolating=!0,n.interpolationNesting=0,"punctuation"}function v(i,n){if(n.isInterpolating){if(i.peek()==="}"){if(n.interpolationNesting--,n.interpolationNesting<0)return i.next(),n.isInterpolating=!1,"punctuation"}else i.peek()==="{"&&n.interpolationNesting++;return e.token(i,n.jsState)||!0}}function g(i,n){if(i.match(/^case\b/))return n.javaScriptLine=!0,"keyword"}function j(i,n){if(i.match(/^when\b/))return n.javaScriptLine=!0,n.javaScriptLineExcludesColon=!0,"keyword"}function k(i){if(i.match(/^default\b/))return"keyword"}function b(i,n){if(i.match(/^extends?\b/))return n.restOfLine="string","keyword"}function A(i,n){if(i.match(/^append\b/))return n.restOfLine="variable","keyword"}function y(i,n){if(i.match(/^prepend\b/))return n.restOfLine="variable","keyword"}function L(i,n){if(i.match(/^block\b *(?:(prepend|append)\b)?/))return n.restOfLine="variable","keyword"}function w(i,n){if(i.match(/^include\b/))return n.restOfLine="string","keyword"}function N(i,n){if(i.match(/^include:([a-zA-Z0-9\-]+)/,!1)&&i.match("include"))return n.isIncludeFiltered=!0,"keyword"}function x(i,n){if(n.isIncludeFiltered){var t=l(i,n);return n.isIncludeFiltered=!1,n.restOfLine="string",t}}function T(i,n){if(i.match(/^mixin\b/))return n.javaScriptLine=!0,"keyword"}function I(i,n){if(i.match(/^\+([-\w]+)/))return i.match(/^\( *[-\w]+ *=/,!1)||(n.javaScriptArguments=!0,n.javaScriptArgumentsDepth=0),"variable";if(i.match("+#{",!1))return i.next(),n.mixinCallAfter=!0,o(i,n)}function O(i,n){if(n.mixinCallAfter)return n.mixinCallAfter=!1,i.match(/^\( *[-\w]+ *=/,!1)||(n.javaScriptArguments=!0,n.javaScriptArgumentsDepth=0),!0}function C(i,n){if(i.match(/^(if|unless|else if|else)\b/))return n.javaScriptLine=!0,"keyword"}function E(i,n){if(i.match(/^(- *)?(each|for)\b/))return n.isEach=!0,"keyword"}function D(i,n){if(n.isEach){if(i.match(/^ in\b/))return n.javaScriptLine=!0,n.isEach=!1,"keyword";if(i.sol()||i.eol())n.isEach=!1;else if(i.next()){for(;!i.match(/^ in\b/,!1)&&i.next(););return"variable"}}}function F(i,n){if(i.match(/^while\b/))return n.javaScriptLine=!0,"keyword"}function m(i,n){var t;if(t=i.match(/^(\w(?:[-:\w]*\w)?)\/?/))return n.lastTag=t[1].toLowerCase(),"tag"}function l(i,n){if(i.match(/^:([\w\-]+)/))return c(i,n),"atom"}function V(i,n){if(i.match(/^(!?=|-)/))return n.javaScriptLine=!0,"punctuation"}function U(i){if(i.match(/^#([\w-]+)/))return"builtin"}function z(i){if(i.match(/^\.([\w-]+)/))return"className"}function B(i,n){if(i.peek()=="(")return i.next(),n.isAttrs=!0,n.attrsNest=[],n.inAttributeName=!0,n.attrValue="",n.attributeIsType=!1,"punctuation"}function a(i,n){if(n.isAttrs){if(f[i.peek()]&&n.attrsNest.push(f[i.peek()]),n.attrsNest[n.attrsNest.length-1]===i.peek())n.attrsNest.pop();else if(i.eat(")"))return n.isAttrs=!1,"punctuation";if(n.inAttributeName&&i.match(/^[^=,\)!]+/))return(i.peek()==="="||i.peek()==="!")&&(n.inAttributeName=!1,n.jsState=e.startState(2),n.lastTag==="script"&&i.current().trim().toLowerCase()==="type"?n.attributeIsType=!0:n.attributeIsType=!1),"attribute";var t=e.token(i,n.jsState);if(n.attrsNest.length===0&&(t==="string"||t==="variable"||t==="keyword"))try{return Function("","var x "+n.attrValue.replace(/,\s*$/,"").replace(/^!/,"")),n.inAttributeName=!0,n.attrValue="",i.backUp(i.current().length),a(i,n)}catch{}return n.attrValue+=i.current(),t||!0}}function M(i,n){if(i.match(/^&attributes\b/))return n.javaScriptArguments=!0,n.javaScriptArgumentsDepth=0,"keyword"}function R(i){if(i.sol()&&i.eatSpace())return"indent"}function Z(i,n){if(i.match(/^ *\/\/(-)?([^\n]*)/))return n.indentOf=i.indentation(),n.indentToken="comment","comment"}function $(i){if(i.match(/^: */))return"colon"}function q(i,n){if(i.match(/^(?:\| ?| )([^\n]+)/))return"string";if(i.match(/^(<[^\n]*)/,!1))return c(i,n),i.skipToEnd(),n.indentToken}function G(i,n){if(i.eat("."))return c(i,n),"dot"}function H(i){return i.next(),null}function c(i,n){n.indentOf=i.indentation(),n.indentToken="string"}function J(i,n){if(i.sol()&&(n.restOfLine=""),n.restOfLine){i.skipToEnd();var t=n.restOfLine;return n.restOfLine="",t}}function K(i){return new u(i)}function P(i){return i.copy()}function Q(i,n){var t=J(i,n)||v(i,n)||x(i,n)||D(i,n)||a(i,n)||h(i,n)||d(i,n)||O(i,n)||s(i)||S(i)||o(i,n)||g(i,n)||j(i,n)||k(i)||b(i,n)||A(i,n)||y(i,n)||L(i,n)||w(i,n)||N(i,n)||T(i,n)||I(i,n)||C(i,n)||E(i,n)||F(i,n)||m(i,n)||l(i,n)||V(i,n)||U(i)||z(i)||B(i,n)||M(i,n)||R(i)||q(i,n)||Z(i,n)||$(i)||G(i,n)||H(i);return t===!0?null:t}const X={startState:K,copyState:P,token:Q};export{X as pug}; diff --git a/frontend/dist/assets/puppet-DMA9R1ak.js b/frontend/dist/assets/puppet-DMA9R1ak.js new file mode 100644 index 0000000..751e8b4 --- /dev/null +++ b/frontend/dist/assets/puppet-DMA9R1ak.js @@ -0,0 +1 @@ +var c={},s=/({)?([a-z][a-z0-9_]*)?((::[a-z][a-z0-9_]*)*::)?[a-zA-Z0-9_]+(})?/;function a(e,n){for(var i=n.split(" "),o=0;o.*/,!1),t=e.match(/(\s+)?[\w:_]+(\s+)?{/,!1),f=e.match(/(\s+)?[@]{1,2}[\w:_]+(\s+)?{/,!1),r=e.next();if(r==="$")return e.match(s)?n.continueString?"variableName.special":"variable":"error";if(n.continueString)return e.backUp(1),u(e,n);if(n.inDefinition){if(e.match(/(\s+)?[\w:_]+(\s+)?/))return"def";e.match(/\s+{/),n.inDefinition=!1}return n.inInclude?(e.match(/(\s+)?\S+(\s+)?/),n.inInclude=!1,"def"):e.match(/(\s+)?\w+\(/)?(e.backUp(1),"def"):o?(e.match(/(\s+)?\w+/),"tag"):i&&c.hasOwnProperty(i)?(e.backUp(1),e.match(/[\w]+/),e.match(/\s+\S+\s+{/,!1)&&(n.inDefinition=!0),i=="include"&&(n.inInclude=!0),c[i]):/(^|\s+)[A-Z][\w:_]+/.test(i)?(e.backUp(1),e.match(/(^|\s+)[A-Z][\w:_]+/),"def"):t?(e.match(/(\s+)?[\w:_]+/),"def"):f?(e.match(/(\s+)?[@]{1,2}/),"atom"):r=="#"?(e.skipToEnd(),"comment"):r=="'"||r=='"'?(n.pending=r,u(e,n)):r=="{"||r=="}"?"bracket":r=="/"?(e.match(/^[^\/]*\//),"string.special"):r.match(/[0-9]/)?(e.eatWhile(/[0-9]+/),"number"):r=="="?(e.peek()==">"&&e.next(),"operator"):(e.eatWhile(/[\w-]/),null)}const p={name:"puppet",startState:function(){var e={};return e.inDefinition=!1,e.inInclude=!1,e.continueString=!1,e.pending=!1,e},token:function(e,n){return e.eatSpace()?null:l(e,n)}};export{p as puppet}; diff --git a/frontend/dist/assets/python-BuPzkPfP.js b/frontend/dist/assets/python-BuPzkPfP.js new file mode 100644 index 0000000..edd2b6e --- /dev/null +++ b/frontend/dist/assets/python-BuPzkPfP.js @@ -0,0 +1 @@ +function s(o){return new RegExp("^(("+o.join(")|(")+"))\\b")}var N=s(["and","or","not","is"]),E=["as","assert","break","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","lambda","pass","raise","return","try","while","with","yield","in","False","True"],F=["abs","all","any","bin","bool","bytearray","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip","__import__","NotImplemented","Ellipsis","__debug__"];function c(o){return o.scopes[o.scopes.length-1]}function A(o){for(var p="error",O=o.delimiters||o.singleDelimiters||/^[\(\)\[\]\{\}@,:`=;\.\\]/,h=[o.singleOperators,o.doubleOperators,o.doubleDelimiters,o.tripleDelimiters,o.operators||/^([-+*/%\/&|^]=?|[<>=]+|\/\/=?|\*\*=?|!=|[~!@]|\.\.\.)/],g=0;gi?S(n,e):l0&&_(n,e)&&(t+=" "+p),t}}return v(n,e)}function v(n,e,r){if(n.eatSpace())return null;if(!r&&n.match(/^#.*/))return"comment";if(n.match(/^[0-9\.]/,!1)){var i=!1;if(n.match(/^[\d_]*\.\d+(e[\+\-]?\d+)?/i)&&(i=!0),n.match(/^[\d_]+\.\d*/)&&(i=!0),n.match(/^\.\d+/)&&(i=!0),i)return n.eat(/J/i),"number";var l=!1;if(n.match(/^0x[0-9a-f_]+/i)&&(l=!0),n.match(/^0b[01_]+/i)&&(l=!0),n.match(/^0o[0-7_]+/i)&&(l=!0),n.match(/^[1-9][\d_]*(e[\+\-]?[\d_]+)?/)&&(n.eat(/J/i),l=!0),n.match(/^0(?![\dx])/i)&&(l=!0),l)return n.eat(/L/i),"number"}if(n.match(w)){var t=n.current().toLowerCase().indexOf("f")!==-1;return t?(e.tokenize=R(n.current(),e.tokenize),e.tokenize(n,e)):(e.tokenize=B(n.current(),e.tokenize),e.tokenize(n,e))}for(var u=0;u=0;)n=n.substr(1);var r=n.length==1,i="string";function l(u){return function(f,b){var T=v(f,b,!0);return T=="punctuation"&&(f.current()=="{"?b.tokenize=l(u+1):f.current()=="}"&&(u>1?b.tokenize=l(u-1):b.tokenize=t)),T}}function t(u,f){for(;!u.eol();)if(u.eatWhile(/[^'"\{\}\\]/),u.eat("\\")){if(u.next(),r&&u.eol())return i}else{if(u.match(n))return f.tokenize=e,i;if(u.match("{{"))return i;if(u.match("{",!1))return f.tokenize=l(0),u.current()?i:f.tokenize(u,f);if(u.match("}}"))return i;if(u.match("}"))return p;u.eat(/['"]/)}if(r){if(o.singleLineStringErrors)return p;f.tokenize=e}return i}return t.isString=!0,t}function B(n,e){for(;"rubf".indexOf(n.charAt(0).toLowerCase())>=0;)n=n.substr(1);var r=n.length==1,i="string";function l(t,u){for(;!t.eol();)if(t.eatWhile(/[^'"\\]/),t.eat("\\")){if(t.next(),r&&t.eol())return i}else{if(t.match(n))return u.tokenize=e,i;t.eat(/['"]/)}if(r){if(o.singleLineStringErrors)return p;u.tokenize=e}return i}return l.isString=!0,l}function S(n,e){for(;c(e).type!="py";)e.scopes.pop();e.scopes.push({offset:c(e).offset+n.indentUnit,type:"py",align:null})}function m(n,e,r){var i=n.match(/^[\s\[\{\(]*(?:#|$)/,!1)?null:n.column()+1;e.scopes.push({offset:e.indent+(k||n.indentUnit),type:r,align:i})}function _(n,e){for(var r=n.indentation();e.scopes.length>1&&c(e).offset>r;){if(c(e).type!="py")return!0;e.scopes.pop()}return c(e).offset!=r}function D(n,e){n.sol()&&(e.beginningOfLine=!0,e.dedent=!1);var r=e.tokenize(n,e),i=n.current();if(e.beginningOfLine&&i=="@")return n.match(y,!1)?"meta":x?"operator":p;if(/\S/.test(i)&&(e.beginningOfLine=!1),(r=="variable"||r=="builtin")&&e.lastToken=="meta"&&(r="meta"),(i=="pass"||i=="return")&&(e.dedent=!0),i=="lambda"&&(e.lambda=!0),i==":"&&!e.lambda&&c(e).type=="py"&&n.match(/^\s*(?:#|$)/,!1)&&S(n,e),i.length==1&&!/string|comment/.test(r)){var l="[({".indexOf(i);if(l!=-1&&m(n,e,"])}".slice(l,l+1)),l="])}".indexOf(i),l!=-1)if(c(e).type==i)e.indent=e.scopes.pop().offset-(k||n.indentUnit);else return p}return e.dedent&&n.eol()&&c(e).type=="py"&&e.scopes.length>1&&e.scopes.pop(),r}return{name:"python",startState:function(){return{tokenize:z,scopes:[{offset:0,type:"py",align:null}],indent:0,lastToken:null,lambda:!1,dedent:0}},token:function(n,e){var r=e.errorToken;r&&(e.errorToken=!1);var i=D(n,e);return i&&i!="comment"&&(e.lastToken=i=="keyword"||i=="punctuation"?n.current():i),i=="punctuation"&&(i=null),n.eol()&&e.lambda&&(e.lambda=!1),r?p:i},indent:function(n,e,r){if(n.tokenize!=z)return n.tokenize.isString?null:0;var i=c(n),l=i.type==e.charAt(0)||i.type=="py"&&!n.dedent&&/^(else:|elif |except |finally:)/.test(e);return i.align!=null?i.align-(l?1:0):i.offset-(l?k||r.unit:0)},languageData:{autocomplete:E.concat(F).concat(["exec","print"]),indentOnInput:/^\s*([\}\]\)]|else:|elif |except |finally:)$/,commentTokens:{line:"#"},closeBrackets:{brackets:["(","[","{","'",'"',"'''",'"""']}}}}var U=function(o){return o.split(" ")};const Z=A({}),P=A({extra_keywords:U("by cdef cimport cpdef ctypedef enum except extern gil include nogil property public readonly struct union DEF IF ELIF ELSE")});export{P as cython,A as mkPython,Z as python}; diff --git a/frontend/dist/assets/q-pXgVlZs6.js b/frontend/dist/assets/q-pXgVlZs6.js new file mode 100644 index 0000000..c5639bb --- /dev/null +++ b/frontend/dist/assets/q-pXgVlZs6.js @@ -0,0 +1 @@ +var c,p=x(["abs","acos","aj","aj0","all","and","any","asc","asin","asof","atan","attr","avg","avgs","bin","by","ceiling","cols","cor","cos","count","cov","cross","csv","cut","delete","deltas","desc","dev","differ","distinct","div","do","each","ej","enlist","eval","except","exec","exit","exp","fby","fills","first","fkeys","flip","floor","from","get","getenv","group","gtime","hclose","hcount","hdel","hopen","hsym","iasc","idesc","if","ij","in","insert","inter","inv","key","keys","last","like","list","lj","load","log","lower","lsq","ltime","ltrim","mavg","max","maxs","mcount","md5","mdev","med","meta","min","mins","mmax","mmin","mmu","mod","msum","neg","next","not","null","or","over","parse","peach","pj","plist","prd","prds","prev","prior","rand","rank","ratios","raze","read0","read1","reciprocal","reverse","rload","rotate","rsave","rtrim","save","scan","select","set","setenv","show","signum","sin","sqrt","ss","ssr","string","sublist","sum","sums","sv","system","tables","tan","til","trim","txf","type","uj","ungroup","union","update","upper","upsert","value","var","view","views","vs","wavg","where","where","while","within","wj","wj1","wsum","xasc","xbar","xcol","xcols","xdesc","xexp","xgroup","xkey","xlog","xprev","xrank"]),f=/[|/&^!+:\\\-*%$=~#;@><,?_\'\"\[\(\]\)\s{}]/;function x(n){return new RegExp("^("+n.join("|")+")$")}function r(n,e){var o=n.sol(),i=n.next();if(c=null,o){if(i=="/")return(e.tokenize=s)(n,e);if(i=="\\")return n.eol()||/\s/.test(n.peek())?(n.skipToEnd(),/^\\\s*$/.test(n.current())?(e.tokenize=v)(n):e.tokenize=r,"comment"):(e.tokenize=r,"builtin")}if(/\s/.test(i))return n.peek()=="/"?(n.skipToEnd(),"comment"):"null";if(i=='"')return(e.tokenize=m)(n,e);if(i=="`")return n.eatWhile(/[A-Za-z\d_:\/.]/),"macroName";if(i=="."&&/\d/.test(n.peek())||/\d/.test(i)){var t=null;return n.backUp(1),n.match(/^\d{4}\.\d{2}(m|\.\d{2}([DT](\d{2}(:\d{2}(:\d{2}(\.\d{1,9})?)?)?)?)?)/)||n.match(/^\d+D(\d{2}(:\d{2}(:\d{2}(\.\d{1,9})?)?)?)/)||n.match(/^\d{2}:\d{2}(:\d{2}(\.\d{1,9})?)?/)||n.match(/^\d+[ptuv]{1}/)?t="temporal":(n.match(/^0[NwW]{1}/)||n.match(/^0x[\da-fA-F]*/)||n.match(/^[01]+[b]{1}/)||n.match(/^\d+[chijn]{1}/)||n.match(/-?\d*(\.\d*)?(e[+\-]?\d+)?(e|f)?/))&&(t="number"),t&&(!(i=n.peek())||f.test(i))?t:(n.next(),"error")}return/[A-Za-z]|\./.test(i)?(n.eatWhile(/[A-Za-z._\d]/),p.test(n.current())?"keyword":"variable"):/[|/&^!+:\\\-*%$=~#;@><\.,?_\']/.test(i)||/[{}\(\[\]\)]/.test(i)?null:"error"}function s(n,e){return n.skipToEnd(),/^\/\s*$/.test(n.current())?(e.tokenize=k)(n,e):e.tokenize=r,"comment"}function k(n,e){var o=n.sol()&&n.peek()=="\\";return n.skipToEnd(),o&&/^\\\s*$/.test(n.current())&&(e.tokenize=r),"comment"}function v(n){return n.skipToEnd(),"comment"}function m(n,e){for(var o=!1,i,t=!1;i=n.next();){if(i=='"'&&!o){t=!0;break}o=!o&&i=="\\"}return t&&(e.tokenize=r),"string"}function l(n,e,o){n.context={prev:n.context,indent:n.indent,col:o,type:e}}function u(n){n.indent=n.context.indent,n.context=n.context.prev}const a={name:"q",startState:function(){return{tokenize:r,context:null,indent:0,col:0}},token:function(n,e){n.sol()&&(e.context&&e.context.align==null&&(e.context.align=!1),e.indent=n.indentation());var o=e.tokenize(n,e);if(o!="comment"&&e.context&&e.context.align==null&&e.context.type!="pattern"&&(e.context.align=!0),c=="(")l(e,")",n.column());else if(c=="[")l(e,"]",n.column());else if(c=="{")l(e,"}",n.column());else if(/[\]\}\)]/.test(c)){for(;e.context&&e.context.type=="pattern";)u(e);e.context&&c==e.context.type&&u(e)}else c=="."&&e.context&&e.context.type=="pattern"?u(e):/atom|string|variable/.test(o)&&e.context&&(/[\}\]]/.test(e.context.type)?l(e,"pattern",n.column()):e.context.type=="pattern"&&!e.context.align&&(e.context.align=!0,e.context.col=n.column()));return o},indent:function(n,e,o){var i=e&&e.charAt(0),t=n.context;if(/[\]\}]/.test(i))for(;t&&t.type=="pattern";)t=t.prev;var d=t&&i==t.type;return t?t.type=="pattern"?t.col:t.align?t.col+(d?0:1):t.indent+(d?0:o.unit):0},languageData:{commentTokens:{line:"/"}}};export{a as q}; diff --git a/frontend/dist/assets/r-B6wPVr8A.js b/frontend/dist/assets/r-B6wPVr8A.js new file mode 100644 index 0000000..6200ced --- /dev/null +++ b/frontend/dist/assets/r-B6wPVr8A.js @@ -0,0 +1 @@ +function f(e){for(var n={},r=0;r=!&|~$:]/,t;function p(e,n){t=null;var r=e.next();if(r=="#")return e.skipToEnd(),"comment";if(r=="0"&&e.eat("x"))return e.eatWhile(/[\da-f]/i),"number";if(r=="."&&e.eat(/\d/))return e.match(/\d*(?:e[+\-]?\d+)?/),"number";if(/\d/.test(r))return e.match(/\d*(?:\.\d+)?(?:e[+\-]\d+)?L?/),"number";if(r=="'"||r=='"')return n.tokenize=E(r),"string";if(r=="`")return e.match(/[^`]+`/),"string.special";if(r=="."&&e.match(/.(?:[.]|\d+)/))return"keyword";if(/[a-zA-Z\.]/.test(r)){e.eatWhile(/[\w\.]/);var i=e.current();return h.propertyIsEnumerable(i)?"atom":N.propertyIsEnumerable(i)?(A.propertyIsEnumerable(i)&&!e.match(/\s*if(\s+|$)/,!1)&&(t="block"),"keyword"):m.propertyIsEnumerable(i)?"builtin":"variable"}else return r=="%"?(e.skipTo("%")&&e.next(),"variableName.special"):r=="<"&&e.eat("-")||r=="<"&&e.match("<-")||r=="-"&&e.match(/>>?/)||r=="="&&n.ctx.argList?"operator":k.test(r)?(r=="$"||e.eatWhile(k),"operator"):/[\(\){}\[\];]/.test(r)?(t=r,r==";"?"punctuation":null):null}function E(e){return function(n,r){if(n.eat("\\")){var i=n.next();return i=="x"?n.match(/^[a-f0-9]{2}/i):(i=="u"||i=="U")&&n.eat("{")&&n.skipTo("}")?n.next():i=="u"?n.match(/^[a-f0-9]{4}/i):i=="U"?n.match(/^[a-f0-9]{8}/i):/[0-7]/.test(i)&&n.match(/^[0-7]{1,2}/),"string.special"}else{for(var l;(l=n.next())!=null;){if(l==e){r.tokenize=p;break}if(l=="\\"){n.backUp(1);break}}return"string"}}}var v=1,u=2,c=4;function o(e,n,r){e.ctx={type:n,indent:e.indent,flags:0,column:r.column(),prev:e.ctx}}function x(e,n){var r=e.ctx;e.ctx={type:r.type,indent:r.indent,flags:r.flags|n,column:r.column,prev:r.prev}}function a(e){e.indent=e.ctx.indent,e.ctx=e.ctx.prev}const I={name:"r",startState:function(e){return{tokenize:p,ctx:{type:"top",indent:-e,flags:u},indent:0,afterIdent:!1}},token:function(e,n){if(e.sol()&&((n.ctx.flags&3)==0&&(n.ctx.flags|=u),n.ctx.flags&c&&a(n),n.indent=e.indentation()),e.eatSpace())return null;var r=n.tokenize(e,n);return r!="comment"&&(n.ctx.flags&u)==0&&x(n,v),(t==";"||t=="{"||t=="}")&&n.ctx.type=="block"&&a(n),t=="{"?o(n,"}",e):t=="("?(o(n,")",e),n.afterIdent&&(n.ctx.argList=!0)):t=="["?o(n,"]",e):t=="block"?o(n,"block",e):t==n.ctx.type?a(n):n.ctx.type=="block"&&r!="comment"&&x(n,c),n.afterIdent=r=="variable"||r=="keyword",r},indent:function(e,n,r){if(e.tokenize!=p)return 0;var i=n&&n.charAt(0),l=e.ctx,d=i==l.type;return l.flags&c&&(l=l.prev),l.type=="block"?l.indent+(i=="{"?0:r.unit):l.flags&v?l.column+(d?0:1):l.indent+(d?0:r.unit)},languageData:{wordChars:".",commentTokens:{line:"#"},autocomplete:b.concat(g,s)}};export{I as r}; diff --git a/frontend/dist/assets/raf-C-x62Pcl.js b/frontend/dist/assets/raf-C-x62Pcl.js new file mode 100644 index 0000000..4f10a18 --- /dev/null +++ b/frontend/dist/assets/raf-C-x62Pcl.js @@ -0,0 +1 @@ +import{bA as o}from"./index-BKKvzUDD.js";const e="update:modelValue",s="change",n="input",i=t=>o?window.requestAnimationFrame(t):setTimeout(t,16),c=t=>o?window.cancelAnimationFrame(t):clearTimeout(t);export{s as C,n as I,e as U,c,i as r}; diff --git a/frontend/dist/assets/rpm-CTu-6PCP.js b/frontend/dist/assets/rpm-CTu-6PCP.js new file mode 100644 index 0000000..9734d1b --- /dev/null +++ b/frontend/dist/assets/rpm-CTu-6PCP.js @@ -0,0 +1 @@ +var o=/^-+$/,a=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ?\d{1,2} \d{2}:\d{2}(:\d{2})? [A-Z]{3,4} \d{4} - /,c=/^[\w+.-]+@[\w.-]+/;const h={name:"rpmchanges",token:function(r){return r.sol()&&(r.match(o)||r.match(a))?"tag":r.match(c)?"string":(r.next(),null)}};var i=/^(i386|i586|i686|x86_64|ppc64le|ppc64|ppc|ia64|s390x|s390|sparc64|sparcv9|sparc|noarch|alphaev6|alpha|hppa|mipsel)/,t=/^[a-zA-Z0-9()]+:/,l=/^%(debug_package|package|description|prep|build|install|files|clean|changelog|preinstall|preun|postinstall|postun|pretrans|posttrans|pre|post|triggerin|triggerun|verifyscript|check|triggerpostun|triggerprein|trigger)/,p=/^%(ifnarch|ifarch|if)/,f=/^%(else|endif)/,u=/^(\!|\?|\<\=|\<|\>\=|\>|\=\=|\&\&|\|\|)/;const d={name:"rpmspec",startState:function(){return{controlFlow:!1,macroParameters:!1,section:!1}},token:function(r,e){var n=r.peek();if(n=="#")return r.skipToEnd(),"comment";if(r.sol()){if(r.match(t))return"header";if(r.match(l))return"atom"}if(r.match(/^\$\w+/)||r.match(/^\$\{\w+\}/))return"def";if(r.match(f))return"keyword";if(r.match(p))return e.controlFlow=!0,"keyword";if(e.controlFlow){if(r.match(u))return"operator";if(r.match(/^(\d+)/))return"number";r.eol()&&(e.controlFlow=!1)}if(r.match(i))return r.eol()&&(e.controlFlow=!1),"number";if(r.match(/^%[\w]+/))return r.match("(")&&(e.macroParameters=!0),"keyword";if(e.macroParameters){if(r.match(/^\d+/))return"number";if(r.match(")"))return e.macroParameters=!1,"keyword"}return r.match(/^%\{\??[\w \-\:\!]+\}/)?(r.eol()&&(e.controlFlow=!1),"def"):(r.next(),null)}};export{h as rpmChanges,d as rpmSpec}; diff --git a/frontend/dist/assets/ruby-B2Rjki9n.js b/frontend/dist/assets/ruby-B2Rjki9n.js new file mode 100644 index 0000000..a95f357 --- /dev/null +++ b/frontend/dist/assets/ruby-B2Rjki9n.js @@ -0,0 +1 @@ +function k(e){for(var i={},n=0,o=e.length;n]/)?(e.eat(/[\<\>]/),"atom"):e.eat(/[\+\-\*\/\&\|\:\!]/)?"atom":e.eat(/[a-zA-Z$@_\xa1-\uffff]/)?(e.eatWhile(/[\w$\xa1-\uffff]/),e.eat(/[\?\!\=]/),"atom"):"operator";if(n=="@"&&e.match(/^@?[a-zA-Z_\xa1-\uffff]/))return e.eat("@"),e.eatWhile(/[\w\xa1-\uffff]/),"propertyName";if(n=="$")return e.eat(/[a-zA-Z_]/)?e.eatWhile(/[\w]/):e.eat(/\d/)?e.eat(/\d/):e.next(),"variableName.special";if(/[a-zA-Z_\xa1-\uffff]/.test(n))return e.eatWhile(/[\w\xa1-\uffff]/),e.eat(/[\?\!]/),e.eat(":")?"atom":"variable";if(n=="|"&&(i.varList||i.lastTok=="{"||i.lastTok=="do"))return f="|",null;if(/[\(\)\[\]{}\\;]/.test(n))return f=n,null;if(n=="-"&&e.eat(">"))return"operator";if(/[=+\-\/*:\.^%<>~|]/.test(n)){var t=e.eatWhile(/[=+\-\/*:\.^%<>~|]/);return n=="."&&!t&&(f="."),"operator"}else return null}}}function g(e){for(var i=e.pos,n=0,o,l=!1,r=!1;(o=e.next())!=null;)if(r)r=!1;else{if("[{(".indexOf(o)>-1)n++;else if("]})".indexOf(o)>-1){if(n--,n<0)break}else if(o=="/"&&n==0){l=!0;break}r=o=="\\"}return e.backUp(e.pos-i),l}function a(e){return e||(e=1),function(i,n){if(i.peek()=="}"){if(e==1)return n.tokenize.pop(),n.tokenize[n.tokenize.length-1](i,n);n.tokenize[n.tokenize.length-1]=a(e-1)}else i.peek()=="{"&&(n.tokenize[n.tokenize.length-1]=a(e+1));return p(i,n)}}function y(){var e=!1;return function(i,n){return e?(n.tokenize.pop(),n.tokenize[n.tokenize.length-1](i,n)):(e=!0,p(i,n))}}function d(e,i,n,o){return function(l,r){var u=!1,t;for(r.context.type==="read-quoted-paused"&&(r.context=r.context.prev,l.eat("}"));(t=l.next())!=null;){if(t==e&&(o||!u)){r.tokenize.pop();break}if(n&&t=="#"&&!u){if(l.eat("{")){e=="}"&&(r.context={prev:r.context,type:"read-quoted-paused"}),r.tokenize.push(a());break}else if(/[@\$]/.test(l.peek())){r.tokenize.push(y());break}}u=!u&&t=="\\"}return i}}function s(e,i){return function(n,o){return i&&n.eatSpace(),n.match(e)?o.tokenize.pop():n.skipToEnd(),"string"}}function w(e,i){return e.sol()&&e.match("=end")&&e.eol()&&i.tokenize.pop(),e.skipToEnd(),"comment"}const E={name:"ruby",startState:function(e){return{tokenize:[p],indented:0,context:{type:"top",indented:-e},continuedLine:!1,lastTok:null,varList:!1}},token:function(e,i){f=null,e.sol()&&(i.indented=e.indentation());var n=i.tokenize[i.tokenize.length-1](e,i),o,l=f;if(n=="variable"){var r=e.current();n=i.lastTok=="."?"property":x.propertyIsEnumerable(e.current())?"keyword":/^[A-Z]/.test(r)?"tag":i.lastTok=="def"||i.lastTok=="class"||i.varList?"def":"variable",n=="keyword"&&(l=r,z.propertyIsEnumerable(r)?o="indent":b.propertyIsEnumerable(r)?o="dedent":((r=="if"||r=="unless")&&e.column()==e.indentation()||r=="do"&&i.context.indented=|!=|<>)/,p=/[=\(:\),{}.*<>+\-\/^\[\]]/;function s(e,r,o){if(o)for(var i=r.split(" "),n=0;ninteger char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt #f floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? #t tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?"),q=w("define let letrec let* lambda define-macro defmacro let-syntax letrec-syntax let-values let*-values define-syntax syntax-rules define-values when unless");function C(e,n,i){this.indent=e,this.type=n,this.prev=i}function s(e,n,i){e.indentStack=new C(n,i,e.indentStack)}function N(e){e.indentStack=e.indentStack.prev}var M=new RegExp(/^(?:[-+]i|[-+][01]+#*(?:\/[01]+#*)?i|[-+]?[01]+#*(?:\/[01]+#*)?@[-+]?[01]+#*(?:\/[01]+#*)?|[-+]?[01]+#*(?:\/[01]+#*)?[-+](?:[01]+#*(?:\/[01]+#*)?)?i|[-+]?[01]+#*(?:\/[01]+#*)?)(?=[()\s;"]|$)/i),Q=new RegExp(/^(?:[-+]i|[-+][0-7]+#*(?:\/[0-7]+#*)?i|[-+]?[0-7]+#*(?:\/[0-7]+#*)?@[-+]?[0-7]+#*(?:\/[0-7]+#*)?|[-+]?[0-7]+#*(?:\/[0-7]+#*)?[-+](?:[0-7]+#*(?:\/[0-7]+#*)?)?i|[-+]?[0-7]+#*(?:\/[0-7]+#*)?)(?=[()\s;"]|$)/i),I=new RegExp(/^(?:[-+]i|[-+][\da-f]+#*(?:\/[\da-f]+#*)?i|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?@[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?[-+](?:[\da-f]+#*(?:\/[\da-f]+#*)?)?i|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?)(?=[()\s;"]|$)/i),R=new RegExp(/^(?:[-+]i|[-+](?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)i|[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)@[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)|[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)[-+](?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)?i|(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*))(?=[()\s;"]|$)/i);function B(e){return e.match(M)}function $(e){return e.match(Q)}function u(e,n){return n===!0&&e.backUp(1),e.match(R)}function O(e){return e.match(I)}function y(e,n){for(var i,t=!1;(i=e.next())!=null;){if(i==n.token&&!t){n.state.mode=!1;break}t=!t&&i=="\\"}}const U={name:"scheme",startState:function(){return{indentStack:null,indentation:0,mode:!1,sExprComment:!1,sExprQuote:!1}},token:function(e,n){if(n.indentStack==null&&e.sol()&&(n.indentation=e.indentation()),e.eatSpace())return null;var i=null;switch(n.mode){case"string":y(e,{token:'"',state:n}),i=g;break;case"symbol":y(e,{token:"|",state:n}),i=x;break;case"comment":for(var t,p=!1;(t=e.next())!=null;){if(t=="#"&&p){n.mode=!1;break}p=t=="|"}i=a;break;case"s-expr-comment":if(n.mode=!1,e.peek()=="("||e.peek()=="[")n.sExprComment=0;else{e.eatWhile(/[^\s\(\)\[\]]/),i=a;break}default:var r=e.next();if(r=='"')n.mode="string",i=g;else if(r=="'")e.peek()=="("||e.peek()=="["?(typeof n.sExprQuote!="number"&&(n.sExprQuote=0),i=c):(e.eatWhile(/[\w_\-!$%&*+\.\/:<=>?@\^~]/),i=c);else if(r=="|")n.mode="symbol",i=x;else if(r=="#")if(e.eat("|"))n.mode="comment",i=a;else if(e.eat(/[tf]/i))i=c;else if(e.eat(";"))n.mode="s-expr-comment",i=a;else{var l=null,o=!1,m=!0;e.eat(/[ei]/i)?o=!0:e.backUp(1),e.match(/^#b/i)?l=B:e.match(/^#o/i)?l=$:e.match(/^#x/i)?l=O:e.match(/^#d/i)?l=u:e.match(/^[-+0-9.]/,!1)?(m=!1,l=u):o||e.eat("#"),l!=null&&(m&&!o&&e.match(/^#[ei]/i),l(e)&&(i=b))}else if(/^[-+0-9.]/.test(r)&&u(e,!0))i=b;else if(r==";")e.skipToEnd(),i=a;else if(r=="("||r=="["){for(var d="",f=e.column(),h;(h=e.eat(/[^\s\(\[\;\)\]]/))!=null;)d+=h;d.length>0&&q.propertyIsEnumerable(d)?s(n,f+S,r):(e.eatSpace(),e.eol()||e.peek()==";"?s(n,f+1,r):s(n,f+e.current().length,r)),e.backUp(e.current().length-1),typeof n.sExprComment=="number"&&n.sExprComment++,typeof n.sExprQuote=="number"&&n.sExprQuote++,i=v}else r==")"||r=="]"?(i=v,n.indentStack!=null&&n.indentStack.type==(r==")"?"(":"[")&&(N(n),typeof n.sExprComment=="number"&&--n.sExprComment==0&&(i=a,n.sExprComment=!1),typeof n.sExprQuote=="number"&&--n.sExprQuote==0&&(i=c,n.sExprQuote=!1))):(e.eatWhile(/[\w_\-!$%&*+\.\/:<=>?@\^~]/),k&&k.propertyIsEnumerable(e.current())?i=E:i="variable")}return typeof n.sExprComment=="number"?a:typeof n.sExprQuote=="number"?c:i},indent:function(e){return e.indentStack==null?e.indentation:e.indentStack.indent},languageData:{closeBrackets:{brackets:["(","[","{",'"']},commentTokens:{line:";;"}}};export{U as scheme}; diff --git a/frontend/dist/assets/scroll-BkzZKETR.js b/frontend/dist/assets/scroll-BkzZKETR.js new file mode 100644 index 0000000..4e4858a --- /dev/null +++ b/frontend/dist/assets/scroll-BkzZKETR.js @@ -0,0 +1 @@ +import{bA as c,c$ as w,bL as a,d0 as m,bd as h}from"./index-BKKvzUDD.js";import{r as v,c as y}from"./raf-C-x62Pcl.js";let n;const S=o=>{var s;if(!c)return 0;if(n!==void 0)return n;const e=document.createElement("div");e.className=`${o}-scrollbar__wrap`,e.style.visibility="hidden",e.style.width="100px",e.style.position="absolute",e.style.top="-9999px",document.body.appendChild(e);const r=e.offsetWidth;e.style.overflow="scroll";const t=document.createElement("div");t.style.width="100%",e.appendChild(t);const l=t.offsetWidth;return(s=e.parentNode)==null||s.removeChild(e),n=r-l,n};function g(o,e){if(!c)return;if(!e){o.scrollTop=0;return}const r=[];let t=e.offsetParent;for(;t!==null&&o!==t&&o.contains(t);)r.push(t),t=t.offsetParent;const l=e.offsetTop+r.reduce((u,d)=>u+d.offsetTop,0),s=l+e.offsetHeight,i=o.scrollTop,f=i+o.clientHeight;lf&&(o.scrollTop=s-o.clientHeight)}export{S as g,g as s}; diff --git a/frontend/dist/assets/shell-CjFT_Tl9.js b/frontend/dist/assets/shell-CjFT_Tl9.js new file mode 100644 index 0000000..965d43b --- /dev/null +++ b/frontend/dist/assets/shell-CjFT_Tl9.js @@ -0,0 +1 @@ +var c={};function s(n,e){for(var i=0;i1&&n.eat("$");var i=n.next();return/['"({]/.test(i)?(e.tokens[0]=l(i,i=="("?"quote":i=="{"?"def":"string"),u(n,e)):(/\d/.test(i)||n.eatWhile(/\w/),e.tokens.shift(),"def")};function w(n){return function(e,i){return e.sol()&&e.string==n&&i.tokens.shift(),e.skipToEnd(),"string.special"}}function u(n,e){return(e.tokens[0]||d)(n,e)}const v={name:"shell",startState:function(){return{tokens:[]}},token:function(n,e){return u(n,e)},languageData:{autocomplete:k.concat(h,p),closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"#"}}};export{v as shell}; diff --git a/frontend/dist/assets/sieve-C3Gn_uJK.js b/frontend/dist/assets/sieve-C3Gn_uJK.js new file mode 100644 index 0000000..06cc3a2 --- /dev/null +++ b/frontend/dist/assets/sieve-C3Gn_uJK.js @@ -0,0 +1 @@ +function l(n){for(var e={},i=n.split(" "),r=0;r2&&r.token&&typeof r.token!="string"){e.pending=[];for(var o=2;o-1)return null;var d=e.indent.length-1,u=n[e.state];n:for(;;){for(var r=0;r=@%|&?!.,:;^]/,p=/true|false|nil|self|super|thisContext/,l=function(e,n){this.next=e,this.parent=n},r=function(e,n,t){this.name=e,this.context=n,this.eos=t},c=function(){this.context=new l(h,null),this.expectVariable=!0,this.indentation=0,this.userIndentationDelta=0};c.prototype.userIndent=function(e,n){this.userIndentationDelta=e>0?e/n-this.indentation:0};var h=function(e,n,t){var i=new r(null,n,!1),a=e.next();return a==='"'?i=u(e,new l(u,n)):a==="'"?i=s(e,new l(s,n)):a==="#"?e.peek()==="'"?(e.next(),i=f(e,new l(f,n))):e.eatWhile(/[^\s.{}\[\]()]/)?i.name="string.special":i.name="meta":a==="$"?(e.next()==="<"&&(e.eatWhile(/[^\s>]/),e.next()),i.name="string.special"):a==="|"&&t.expectVariable?i.context=new l(x,n):/[\[\]{}()]/.test(a)?(i.name="bracket",i.eos=/[\[{(]/.test(a),a==="["?t.indentation++:a==="]"&&(t.indentation=Math.max(0,t.indentation-1))):o.test(a)?(e.eatWhile(o),i.name="operator",i.eos=a!==";"):/\d/.test(a)?(e.eatWhile(/[\w\d]/),i.name="number"):/[\w_]/.test(a)?(e.eatWhile(/[\w\d_]/),i.name=t.expectVariable?p.test(e.current())?"keyword":"variable":null):i.eos=t.expectVariable,i},u=function(e,n){return e.eatWhile(/[^"]/),new r("comment",e.eat('"')?n.parent:n,!0)},s=function(e,n){return e.eatWhile(/[^']/),new r("string",e.eat("'")?n.parent:n,!1)},f=function(e,n){return e.eatWhile(/[^']/),new r("string.special",e.eat("'")?n.parent:n,!1)},x=function(e,n){var t=new r(null,n,!1),i=e.next();return i==="|"?(t.context=n.parent,t.eos=!0):(e.eatWhile(/[^|]/),t.name="variable"),t};const d={name:"smalltalk",startState:function(){return new c},token:function(e,n){if(n.userIndent(e.indentation(),e.indentUnit),e.eatSpace())return null;var t=n.context.next(e,n.context,n);return n.context=t.context,n.expectVariable=t.eos,t.name},blankLine:function(e,n){e.userIndent(0,n)},indent:function(e,n,t){var i=e.context.next===h&&n&&n.charAt(0)==="]"?-1:e.userIndentationDelta;return(e.indentation+i)*t.unit},languageData:{indentOnInput:/^\s*\]$/}};export{d as smalltalk}; diff --git a/frontend/dist/assets/solr-DehyRSwq.js b/frontend/dist/assets/solr-DehyRSwq.js new file mode 100644 index 0000000..4229b56 --- /dev/null +++ b/frontend/dist/assets/solr-DehyRSwq.js @@ -0,0 +1 @@ +var u=/[^\s\|\!\+\-\*\?\~\^\&\:\(\)\[\]\{\}\"\\]/,f=/[\|\!\+\-\*\?\~\^\&]/,l=/^(OR|AND|NOT|TO)$/;function k(n){return parseFloat(n).toString()===n}function a(n){return function(e,r){for(var t=!1,o;(o=e.next())!=null&&!(o==n&&!t);)t=!t&&o=="\\";return t||(r.tokenize=i),"string"}}function c(n){return function(e,r){return n=="|"?e.eat(/\|/):n=="&"&&e.eat(/\&/),r.tokenize=i,"operator"}}function s(n){return function(e,r){for(var t=n;(n=e.peek())&&n.match(u)!=null;)t+=e.next();return r.tokenize=i,l.test(t)?"operator":k(t)?"number":e.peek()==":"?"propertyName":"string"}}function i(n,e){var r=n.next();return r=='"'?e.tokenize=a(r):f.test(r)?e.tokenize=c(r):u.test(r)&&(e.tokenize=s(r)),e.tokenize!=i?e.tokenize(n,e):null}const p={name:"solr",startState:function(){return{tokenize:i}},token:function(n,e){return n.eatSpace()?null:e.tokenize(n,e)}};export{p as solr}; diff --git a/frontend/dist/assets/sparql-DkYu6x3z.js b/frontend/dist/assets/sparql-DkYu6x3z.js new file mode 100644 index 0000000..61ab1ec --- /dev/null +++ b/frontend/dist/assets/sparql-DkYu6x3z.js @@ -0,0 +1 @@ +var u;function s(n){return new RegExp("^(?:"+n.join("|")+")$","i")}var d=s(["str","lang","langmatches","datatype","bound","sameterm","isiri","isuri","iri","uri","bnode","count","sum","min","max","avg","sample","group_concat","rand","abs","ceil","floor","round","concat","substr","strlen","replace","ucase","lcase","encode_for_uri","contains","strstarts","strends","strbefore","strafter","year","month","day","hours","minutes","seconds","timezone","tz","now","uuid","struuid","md5","sha1","sha256","sha384","sha512","coalesce","if","strlang","strdt","isnumeric","regex","exists","isblank","isliteral","a","bind"]),F=s(["base","prefix","select","distinct","reduced","construct","describe","ask","from","named","where","order","limit","offset","filter","optional","graph","by","asc","desc","as","having","undef","values","group","minus","in","not","service","silent","using","insert","delete","union","true","false","with","data","copy","to","move","add","create","drop","clear","load","into"]),x=/[*+\-<>=&|\^\/!\?]/,a="[A-Za-z_\\-0-9]",h=new RegExp("[A-Za-z]"),g=new RegExp("(("+a+"|\\.)*("+a+"))?:");function p(n,e){var t=n.next();if(u=null,t=="$"||t=="?")return t=="?"&&n.match(/\s/,!1)?"operator":(n.match(/^[A-Za-z0-9_\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][A-Za-z0-9_\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]*/),"variableName.local");if(t=="<"&&!n.match(/^[\s\u00a0=]/,!1))return n.match(/^[^\s\u00a0>]*>?/),"atom";if(t=='"'||t=="'")return e.tokenize=v(t),e.tokenize(n,e);if(/[{}\(\),\.;\[\]]/.test(t))return u=t,"bracket";if(t=="#")return n.skipToEnd(),"comment";if(x.test(t))return"operator";if(t==":")return f(n),"atom";if(t=="@")return n.eatWhile(/[a-z\d\-]/i),"meta";if(h.test(t)&&n.match(g))return f(n),"atom";n.eatWhile(/[_\w\d]/);var i=n.current();return d.test(i)?"builtin":F.test(i)?"keyword":"variable"}function f(n){n.match(/(\.(?=[\w_\-\\%])|[:\w_-]|\\[-\\_~.!$&'()*+,;=/?#@%]|%[a-f\d][a-f\d])+/i)}function v(n){return function(e,t){for(var i=!1,r;(r=e.next())!=null;){if(r==n&&!i){t.tokenize=p;break}i=!i&&r=="\\"}return"string"}}function o(n,e,t){n.context={prev:n.context,indent:n.indent,col:t,type:e}}function c(n){n.indent=n.context.indent,n.context=n.context.prev}const m={name:"sparql",startState:function(){return{tokenize:p,context:null,indent:0,col:0}},token:function(n,e){if(n.sol()&&(e.context&&e.context.align==null&&(e.context.align=!1),e.indent=n.indentation()),n.eatSpace())return null;var t=e.tokenize(n,e);if(t!="comment"&&e.context&&e.context.align==null&&e.context.type!="pattern"&&(e.context.align=!0),u=="(")o(e,")",n.column());else if(u=="[")o(e,"]",n.column());else if(u=="{")o(e,"}",n.column());else if(/[\]\}\)]/.test(u)){for(;e.context&&e.context.type=="pattern";)c(e);e.context&&u==e.context.type&&(c(e),u=="}"&&e.context&&e.context.type=="pattern"&&c(e))}else u=="."&&e.context&&e.context.type=="pattern"?c(e):/atom|string|variable/.test(t)&&e.context&&(/[\}\]]/.test(e.context.type)?o(e,"pattern",n.column()):e.context.type=="pattern"&&!e.context.align&&(e.context.align=!0,e.context.col=n.column()));return t},indent:function(n,e,t){var i=e&&e.charAt(0),r=n.context;if(/[\]\}]/.test(i))for(;r&&r.type=="pattern";)r=r.prev;var l=r&&i==r.type;return r?r.type=="pattern"?r.col:r.align?r.col+(l?0:1):r.indent+(l?0:t.unit):0},languageData:{commentTokens:{line:"#"}}};export{m as sparql}; diff --git a/frontend/dist/assets/spreadsheet-BCZA_wO0.js b/frontend/dist/assets/spreadsheet-BCZA_wO0.js new file mode 100644 index 0000000..c66187c --- /dev/null +++ b/frontend/dist/assets/spreadsheet-BCZA_wO0.js @@ -0,0 +1 @@ +const i={name:"spreadsheet",startState:function(){return{stringType:null,stack:[]}},token:function(e,n){if(e){switch(n.stack.length===0&&(e.peek()=='"'||e.peek()=="'")&&(n.stringType=e.peek(),e.next(),n.stack.unshift("string")),n.stack[0]){case"string":for(;n.stack[0]==="string"&&!e.eol();)e.peek()===n.stringType?(e.next(),n.stack.shift()):e.peek()==="\\"?(e.next(),e.next()):e.match(/^.[^\\\"\']*/);return"string";case"characterClass":for(;n.stack[0]==="characterClass"&&!e.eol();)e.match(/^[^\]\\]+/)||e.match(/^\\./)||n.stack.shift();return"operator"}var c=e.peek();switch(c){case"[":return e.next(),n.stack.unshift("characterClass"),"bracket";case":":return e.next(),"operator";case"\\":return e.match(/\\[a-z]+/)?"string.special":(e.next(),"atom");case".":case",":case";":case"*":case"-":case"+":case"^":case"<":case"/":case"=":return e.next(),"atom";case"$":return e.next(),"builtin"}return e.match(/\d+/)?e.match(/^\w+/)?"error":"number":e.match(/^[a-zA-Z_]\w*/)?e.match(/(?=[\(.])/,!1)?"keyword":"variable":["[","]","(",")","{","}"].indexOf(c)!=-1?(e.next(),"bracket"):(e.eatSpace()||e.next(),null)}}};export{i as spreadsheet}; diff --git a/frontend/dist/assets/sql-D0XecflT.js b/frontend/dist/assets/sql-D0XecflT.js new file mode 100644 index 0000000..c7ae761 --- /dev/null +++ b/frontend/dist/assets/sql-D0XecflT.js @@ -0,0 +1 @@ +function s(a){var c=a.client||{},h=a.atoms||{false:!0,true:!0,null:!0},p=a.builtin||e(z),S=a.keywords||e(d),_=a.operatorChars||/^[*+\-%<>!=&|~^\/]/,o=a.support||{},y=a.hooks||{},C=a.dateSQL||{date:!0,time:!0,timestamp:!0},Q=a.backslashStringEscapes!==!1,j=a.brackets||/^[\{}\(\)\[\]]/,v=a.punctuation||/^[;.,:]/;function g(t,i){var r=t.next();if(y[r]){var n=y[r](t,i);if(n!==!1)return n}if(o.hexNumber&&(r=="0"&&t.match(/^[xX][0-9a-fA-F]+/)||(r=="x"||r=="X")&&t.match(/^'[0-9a-fA-F]*'/)))return"number";if(o.binaryNumber&&((r=="b"||r=="B")&&t.match(/^'[01]+'/)||r=="0"&&t.match(/^b[01]*/)))return"number";if(r.charCodeAt(0)>47&&r.charCodeAt(0)<58)return t.match(/^[0-9]*(\.[0-9]+)?([eE][-+]?[0-9]+)?/),o.decimallessFloat&&t.match(/^\.(?!\.)/),"number";if(r=="?"&&(t.eatSpace()||t.eol()||t.eat(";")))return"macroName";if(r=="'"||r=='"'&&o.doubleQuote)return i.tokenize=x(r),i.tokenize(t,i);if((o.nCharCast&&(r=="n"||r=="N")||o.charsetCast&&r=="_"&&t.match(/[a-z][a-z0-9]*/i))&&(t.peek()=="'"||t.peek()=='"'))return"keyword";if(o.escapeConstant&&(r=="e"||r=="E")&&(t.peek()=="'"||t.peek()=='"'&&o.doubleQuote))return i.tokenize=function(m,k){return(k.tokenize=x(m.next(),!0))(m,k)},"keyword";if(o.commentSlashSlash&&r=="/"&&t.eat("/"))return t.skipToEnd(),"comment";if(o.commentHash&&r=="#"||r=="-"&&t.eat("-")&&(!o.commentSpaceRequired||t.eat(" ")))return t.skipToEnd(),"comment";if(r=="/"&&t.eat("*"))return i.tokenize=b(1),i.tokenize(t,i);if(r=="."){if(o.zerolessFloat&&t.match(/^(?:\d+(?:e[+-]?\d+)?)/i))return"number";if(t.match(/^\.+/))return null;if(o.ODBCdotTable&&t.match(/^[\w\d_$#]+/))return"type"}else{if(_.test(r))return t.eatWhile(_),"operator";if(j.test(r))return"bracket";if(v.test(r))return t.eatWhile(v),"punctuation";if(r=="{"&&(t.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/)||t.match(/^( )*(d|D|t|T|ts|TS)( )*"[^"]*"( )*}/)))return"number";t.eatWhile(/^[_\w\d]/);var l=t.current().toLowerCase();return C.hasOwnProperty(l)&&(t.match(/^( )+'[^']*'/)||t.match(/^( )+"[^"]*"/))?"number":h.hasOwnProperty(l)?"atom":p.hasOwnProperty(l)?"type":S.hasOwnProperty(l)?"keyword":c.hasOwnProperty(l)?"builtin":null}}function x(t,i){return function(r,n){for(var l=!1,m;(m=r.next())!=null;){if(m==t&&!l){n.tokenize=g;break}l=(Q||i)&&!l&&m=="\\"}return"string"}}function b(t){return function(i,r){var n=i.match(/^.*?(\/\*|\*\/)/);return n?n[1]=="/*"?r.tokenize=b(t+1):t>1?r.tokenize=b(t-1):r.tokenize=g:i.skipToEnd(),"comment"}}function w(t,i,r){i.context={prev:i.context,indent:t.indentation(),col:t.column(),type:r}}function L(t){t.indent=t.context.indent,t.context=t.context.prev}return{name:"sql",startState:function(){return{tokenize:g,context:null}},token:function(t,i){if(t.sol()&&i.context&&i.context.align==null&&(i.context.align=!1),i.tokenize==g&&t.eatSpace())return null;var r=i.tokenize(t,i);if(r=="comment")return r;i.context&&i.context.align==null&&(i.context.align=!0);var n=t.current();return n=="("?w(t,i,")"):n=="["?w(t,i,"]"):i.context&&i.context.type==n&&L(i),r},indent:function(t,i,r){var n=t.context;if(!n)return null;var l=i.charAt(0)==n.type;return n.align?n.col+(l?0:1):n.indent+(l?0:r.unit)},languageData:{commentTokens:{line:o.commentSlashSlash?"//":o.commentHash?"#":"--",block:{open:"/*",close:"*/"}},closeBrackets:{brackets:["(","[","{","'",'"',"`"]}}}}function f(a){for(var c;(c=a.next())!=null;)if(c=="`"&&!a.eat("`"))return"string.special";return a.backUp(a.current().length-1),a.eatWhile(/\w/)?"string.special":null}function N(a){for(var c;(c=a.next())!=null;)if(c=='"'&&!a.eat('"'))return"string.special";return a.backUp(a.current().length-1),a.eatWhile(/\w/)?"string.special":null}function u(a){return a.eat("@")&&(a.match("session."),a.match("local."),a.match("global.")),a.eat("'")?(a.match(/^.*'/),"string.special"):a.eat('"')?(a.match(/^.*"/),"string.special"):a.eat("`")?(a.match(/^.*`/),"string.special"):a.match(/^[0-9a-zA-Z$\.\_]+/)?"string.special":null}function q(a){return a.eat("N")?"atom":a.match(/^[a-zA-Z.#!?]/)?"string.special":null}var d="alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit ";function e(a){for(var c={},h=a.split(" "),p=0;p!=^\&|\/]/,brackets:/^[\{}\(\)]/,punctuation:/^[;.,:/]/,backslashStringEscapes:!1,dateSQL:e("date datetimeoffset datetime2 smalldatetime datetime time"),hooks:{"@":u}}),B=s({client:e("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"),keywords:e(d+"accessible action add after algorithm all analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general get global grant grants group group_concat handler hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"),builtin:e("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"),atoms:e("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^]/,dateSQL:e("date time timestamp"),support:e("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"),hooks:{"@":u,"`":f,"\\":q}}),D=s({client:e("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"),keywords:e(d+"accessible action add after algorithm all always analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general generated get global grant grants group group_concat handler hard hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password persistent phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show shutdown signal slave slow smallint snapshot soft soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views virtual warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"),builtin:e("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"),atoms:e("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^]/,dateSQL:e("date time timestamp"),support:e("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"),hooks:{"@":u,"`":f,"\\":q}}),O=s({client:e("auth backup bail binary changes check clone databases dbinfo dump echo eqp exit explain fullschema headers help import imposter indexes iotrace limit lint load log mode nullvalue once open output print prompt quit read restore save scanstats schema separator session shell show stats system tables testcase timeout timer trace vfsinfo vfslist vfsname width"),keywords:e(d+"abort action add after all analyze attach autoincrement before begin cascade case cast check collate column commit conflict constraint cross current_date current_time current_timestamp database default deferrable deferred detach each else end escape except exclusive exists explain fail for foreign full glob if ignore immediate index indexed initially inner instead intersect isnull key left limit match natural no notnull null of offset outer plan pragma primary query raise recursive references regexp reindex release rename replace restrict right rollback row savepoint temp temporary then to transaction trigger unique using vacuum view virtual when with without"),builtin:e("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text clob bigint int int2 int8 integer float double char varchar date datetime year unsigned signed numeric real"),atoms:e("null current_date current_time current_timestamp"),operatorChars:/^[*+\-%<>!=&|/~]/,dateSQL:e("date time timestamp datetime"),support:e("decimallessFloat zerolessFloat"),hooks:{"@":u,":":u,"?":u,$:u,'"':N,"`":f}}),$=s({client:{},keywords:e("add all allow alter and any apply as asc authorize batch begin by clustering columnfamily compact consistency count create custom delete desc distinct drop each_quorum exists filtering from grant if in index insert into key keyspace keyspaces level limit local_one local_quorum modify nan norecursive nosuperuser not of on one order password permission permissions primary quorum rename revoke schema select set storage superuser table three to token truncate ttl two type unlogged update use user users using values where with writetime"),builtin:e("ascii bigint blob boolean counter decimal double float frozen inet int list map static text timestamp timeuuid tuple uuid varchar varint"),atoms:e("false true infinity NaN"),operatorChars:/^[<>=]/,dateSQL:{},support:e("commentSlashSlash decimallessFloat"),hooks:{}}),E=s({client:e("appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define describe echo editfile embedded escape exec execute feedback flagger flush heading headsep instance linesize lno loboffset logsource long longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar release repfooter repheader serveroutput shiftinout show showmode size spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout time timing trimout trimspool ttitle underline verify version wrap"),keywords:e("abort accept access add all alter and any array arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body boolean by case cast char char_base check close cluster clusters colauth column comment commit compress connect connected constant constraint crash create current currval cursor data_base database date dba deallocate debugoff debugon decimal declare default definition delay delete desc digits dispose distinct do drop else elseif elsif enable end entry escape exception exception_init exchange exclusive exists exit external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging long loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base object of off offline on online only open option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw read rebuild record ref references refresh release rename replace resource restrict return returning returns reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate session set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work"),builtin:e("abs acos add_months ascii asin atan atan2 average bfile bfilename bigserial bit blob ceil character chartorowid chr clob concat convert cos cosh count dec decode deref dual dump dup_val_on_index empty error exp false float floor found glb greatest hextoraw initcap instr instrb int integer isopen last_day least length lengthb ln lower lpad ltrim lub make_ref max min mlslabel mod months_between natural naturaln nchar nclob new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort no_data_found notfound null number numeric nvarchar2 nvl others power rawtohex real reftohex round rowcount rowidtochar rowtype rpad rtrim serial sign signtype sin sinh smallint soundex sqlcode sqlerrm sqrt stddev string substr substrb sum sysdate tan tanh to_char text to_date to_label to_multi_byte to_number to_single_byte translate true trunc uid unlogged upper user userenv varchar varchar2 variance varying vsize xml"),operatorChars:/^[*\/+\-%<>!=~]/,dateSQL:e("date time timestamp"),support:e("doubleQuote nCharCast zerolessFloat binaryNumber hexNumber")}),A=s({keywords:e("select alter $elem$ $key$ $value$ add after all analyze and archive as asc before between binary both bucket buckets by cascade case cast change cluster clustered clusterstatus collection column columns comment compute concatenate continue create cross cursor data database databases dbproperties deferred delete delimited desc describe directory disable distinct distribute drop else enable end escaped exclusive exists explain export extended external fetch fields fileformat first format formatted from full function functions grant group having hold_ddltime idxproperties if import in index indexes inpath inputdriver inputformat insert intersect into is items join keys lateral left like limit lines load local location lock locks mapjoin materialized minus msck no_drop nocompress not of offline on option or order out outer outputdriver outputformat overwrite partition partitioned partitions percent plus preserve procedure purge range rcfile read readonly reads rebuild recordreader recordwriter recover reduce regexp rename repair replace restrict revoke right rlike row schema schemas semi sequencefile serde serdeproperties set shared show show_database sort sorted ssl statistics stored streamtable table tables tablesample tblproperties temporary terminated textfile then tmp to touch transform trigger unarchive undo union uniquejoin unlock update use using utc utc_tmestamp view when where while with admin authorization char compact compactions conf cube current current_date current_timestamp day decimal defined dependency directories elem_type exchange file following for grouping hour ignore inner interval jar less logical macro minute month more none noscan over owner partialscan preceding pretty principals protection reload rewrite role roles rollup rows second server sets skewed transactions truncate unbounded unset uri user values window year"),builtin:e("bool boolean long timestamp tinyint smallint bigint int float double date datetime unsigned string array struct map uniontype key_type utctimestamp value_type varchar"),atoms:e("false true null unknown"),operatorChars:/^[*+\-%<>!=]/,dateSQL:e("date timestamp"),support:e("ODBCdotTable doubleQuote binaryNumber hexNumber")}),P=s({client:e("source"),keywords:e(d+"a abort abs absent absolute access according action ada add admin after aggregate alias all allocate also alter always analyse analyze and any are array array_agg array_max_cardinality as asc asensitive assert assertion assignment asymmetric at atomic attach attribute attributes authorization avg backward base64 before begin begin_frame begin_partition bernoulli between bigint binary bit bit_length blob blocked bom boolean both breadth by c cache call called cardinality cascade cascaded case cast catalog catalog_name ceil ceiling chain char char_length character character_length character_set_catalog character_set_name character_set_schema characteristics characters check checkpoint class class_origin clob close cluster coalesce cobol collate collation collation_catalog collation_name collation_schema collect column column_name columns command_function command_function_code comment comments commit committed concurrently condition condition_number configuration conflict connect connection connection_name constant constraint constraint_catalog constraint_name constraint_schema constraints constructor contains content continue control conversion convert copy corr corresponding cost count covar_pop covar_samp create cross csv cube cume_dist current current_catalog current_date current_default_transform_group current_path current_role current_row current_schema current_time current_timestamp current_transform_group_for_type current_user cursor cursor_name cycle data database datalink datatype date datetime_interval_code datetime_interval_precision day db deallocate debug dec decimal declare default defaults deferrable deferred defined definer degree delete delimiter delimiters dense_rank depends depth deref derived desc describe descriptor detach detail deterministic diagnostics dictionary disable discard disconnect dispatch distinct dlnewcopy dlpreviouscopy dlurlcomplete dlurlcompleteonly dlurlcompletewrite dlurlpath dlurlpathonly dlurlpathwrite dlurlscheme dlurlserver dlvalue do document domain double drop dump dynamic dynamic_function dynamic_function_code each element else elseif elsif empty enable encoding encrypted end end_frame end_partition endexec enforced enum equals errcode error escape event every except exception exclude excluding exclusive exec execute exists exit exp explain expression extension external extract false family fetch file filter final first first_value flag float floor following for force foreach foreign fortran forward found frame_row free freeze from fs full function functions fusion g general generated get global go goto grant granted greatest group grouping groups handler having header hex hierarchy hint hold hour id identity if ignore ilike immediate immediately immutable implementation implicit import in include including increment indent index indexes indicator info inherit inherits initially inline inner inout input insensitive insert instance instantiable instead int integer integrity intersect intersection interval into invoker is isnull isolation join k key key_member key_type label lag language large last last_value lateral lead leading leakproof least left length level library like like_regex limit link listen ln load local localtime localtimestamp location locator lock locked log logged loop lower m map mapping match matched materialized max max_cardinality maxvalue member merge message message_length message_octet_length message_text method min minute minvalue mod mode modifies module month more move multiset mumps name names namespace national natural nchar nclob nesting new next nfc nfd nfkc nfkd nil no none normalize normalized not nothing notice notify notnull nowait nth_value ntile null nullable nullif nulls number numeric object occurrences_regex octet_length octets of off offset oids old on only open operator option options or order ordering ordinality others out outer output over overlaps overlay overriding owned owner p pad parallel parameter parameter_mode parameter_name parameter_ordinal_position parameter_specific_catalog parameter_specific_name parameter_specific_schema parser partial partition pascal passing passthrough password path percent percent_rank percentile_cont percentile_disc perform period permission pg_context pg_datatype_name pg_exception_context pg_exception_detail pg_exception_hint placing plans pli policy portion position position_regex power precedes preceding precision prepare prepared preserve primary print_strict_params prior privileges procedural procedure procedures program public publication query quote raise range rank read reads real reassign recheck recovery recursive ref references referencing refresh regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy reindex relative release rename repeatable replace replica requiring reset respect restart restore restrict result result_oid return returned_cardinality returned_length returned_octet_length returned_sqlstate returning returns reverse revoke right role rollback rollup routine routine_catalog routine_name routine_schema routines row row_count row_number rows rowtype rule savepoint scale schema schema_name schemas scope scope_catalog scope_name scope_schema scroll search second section security select selective self sensitive sequence sequences serializable server server_name session session_user set setof sets share show similar simple size skip slice smallint snapshot some source space specific specific_name specifictype sql sqlcode sqlerror sqlexception sqlstate sqlwarning sqrt stable stacked standalone start state statement static statistics stddev_pop stddev_samp stdin stdout storage strict strip structure style subclass_origin submultiset subscription substring substring_regex succeeds sum symmetric sysid system system_time system_user t table table_name tables tablesample tablespace temp template temporary text then ties time timestamp timezone_hour timezone_minute to token top_level_count trailing transaction transaction_active transactions_committed transactions_rolled_back transform transforms translate translate_regex translation treat trigger trigger_catalog trigger_name trigger_schema trim trim_array true truncate trusted type types uescape unbounded uncommitted under unencrypted union unique unknown unlink unlisten unlogged unnamed unnest until untyped update upper uri usage use_column use_variable user user_defined_type_catalog user_defined_type_code user_defined_type_name user_defined_type_schema using vacuum valid validate validator value value_of values var_pop var_samp varbinary varchar variable_conflict variadic varying verbose version versioning view views volatile warning when whenever where while whitespace width_bucket window with within without work wrapper write xml xmlagg xmlattributes xmlbinary xmlcast xmlcomment xmlconcat xmldeclaration xmldocument xmlelement xmlexists xmlforest xmliterate xmlnamespaces xmlparse xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltext xmlvalidate year yes zone"),builtin:e("bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml"),atoms:e("false true null unknown"),operatorChars:/^[*\/+\-%<>!=&|^\/#@?~]/,backslashStringEscapes:!1,dateSQL:e("date time timestamp"),support:e("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast escapeConstant")}),W=s({keywords:e("ancestor and asc by contains desc descendant distinct from group has in is limit offset on order select superset where"),atoms:e("false true"),builtin:e("blob datetime first key __key__ string integer double boolean null"),operatorChars:/^[*+\-%<>!=]/}),H=s({client:e("source"),keywords:e("abort absolute access action active add admin after aggregate all also alter always analyse analyze and any array as asc assertion assignment asymmetric at authorization backward before begin between bigint binary bit boolean both by cache called cascade cascaded case cast chain char character characteristics check checkpoint class close cluster coalesce codegen collate column comment commit committed concurrency concurrently configuration connection constraint constraints contains content continue conversion copy cost cpu_rate_limit create createdb createexttable createrole createuser cross csv cube current current_catalog current_date current_role current_schema current_time current_timestamp current_user cursor cycle data database day deallocate dec decimal declare decode default defaults deferrable deferred definer delete delimiter delimiters deny desc dictionary disable discard distinct distributed do document domain double drop dxl each else enable encoding encrypted end enum errors escape every except exchange exclude excluding exclusive execute exists explain extension external extract false family fetch fields filespace fill filter first float following for force foreign format forward freeze from full function global grant granted greatest group group_id grouping handler hash having header hold host hour identity if ignore ilike immediate immutable implicit in including inclusive increment index indexes inherit inherits initially inline inner inout input insensitive insert instead int integer intersect interval into invoker is isnull isolation join key language large last leading least left level like limit list listen load local localtime localtimestamp location lock log login mapping master match maxvalue median merge minute minvalue missing mode modifies modify month move name names national natural nchar new newline next no nocreatedb nocreateexttable nocreaterole nocreateuser noinherit nologin none noovercommit nosuperuser not nothing notify notnull nowait null nullif nulls numeric object of off offset oids old on only operator option options or order ordered others out outer over overcommit overlaps overlay owned owner parser partial partition partitions passing password percent percentile_cont percentile_disc placing plans position preceding precision prepare prepared preserve primary prior privileges procedural procedure protocol queue quote randomly range read readable reads real reassign recheck recursive ref references reindex reject relative release rename repeatable replace replica reset resource restart restrict returning returns revoke right role rollback rollup rootpartition row rows rule savepoint scatter schema scroll search second security segment select sequence serializable session session_user set setof sets share show similar simple smallint some split sql stable standalone start statement statistics stdin stdout storage strict strip subpartition subpartitions substring superuser symmetric sysid system table tablespace temp template temporary text then threshold ties time timestamp to trailing transaction treat trigger trim true truncate trusted type unbounded uncommitted unencrypted union unique unknown unlisten until update user using vacuum valid validation validator value values varchar variadic varying verbose version view volatile web when where whitespace window with within without work writable write xml xmlattributes xmlconcat xmlelement xmlexists xmlforest xmlparse xmlpi xmlroot xmlserialize year yes zone"),builtin:e("bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml"),atoms:e("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^\/#@?~]/,dateSQL:e("date time timestamp"),support:e("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast")}),R=s({keywords:e("add after all alter analyze and anti archive array as asc at between bucket buckets by cache cascade case cast change clear cluster clustered codegen collection column columns comment commit compact compactions compute concatenate cost create cross cube current current_date current_timestamp database databases data dbproperties defined delete delimited deny desc describe dfs directories distinct distribute drop else end escaped except exchange exists explain export extended external false fields fileformat first following for format formatted from full function functions global grant group grouping having if ignore import in index indexes inner inpath inputformat insert intersect interval into is items join keys last lateral lazy left like limit lines list load local location lock locks logical macro map minus msck natural no not null nulls of on optimize option options or order out outer outputformat over overwrite partition partitioned partitions percent preceding principals purge range recordreader recordwriter recover reduce refresh regexp rename repair replace reset restrict revoke right rlike role roles rollback rollup row rows schema schemas select semi separated serde serdeproperties set sets show skewed sort sorted start statistics stored stratify struct table tables tablesample tblproperties temp temporary terminated then to touch transaction transactions transform true truncate unarchive unbounded uncache union unlock unset use using values view when where window with"),builtin:e("tinyint smallint int bigint boolean float double string binary timestamp decimal array map struct uniontype delimited serde sequencefile textfile rcfile inputformat outputformat"),atoms:e("false true null"),operatorChars:/^[*\/+\-%<>!=~&|^]/,dateSQL:e("date time timestamp"),support:e("ODBCdotTable doubleQuote zerolessFloat")}),I=s({client:e("source"),keywords:e("alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit after all and as at asc avedev avg between by case cast coalesce count create current_timestamp day days delete define desc distinct else end escape events every exists false first from full group having hour hours in inner insert instanceof into irstream is istream join last lastweekday left limit like max match_recognize matches median measures metadatasql min minute minutes msec millisecond milliseconds not null offset on or order outer output partition pattern prev prior regexp retain-union retain-intersection right rstream sec second seconds select set some snapshot sql stddev sum then true unidirectional until update variable weekday when where window"),builtin:{},atoms:e("false true null"),operatorChars:/^[*+\-%<>!=&|^\/#@?~]/,dateSQL:e("time"),support:e("decimallessFloat zerolessFloat binaryNumber hexNumber")});export{$ as cassandra,I as esper,H as gpSQL,W as gql,A as hive,D as mariaDB,T as msSQL,B as mySQL,P as pgSQL,E as plSQL,R as sparkSQL,s as sql,O as sqlite,F as standardSQL}; diff --git a/frontend/dist/assets/stex-C3f8Ysf7.js b/frontend/dist/assets/stex-C3f8Ysf7.js new file mode 100644 index 0000000..cec927d --- /dev/null +++ b/frontend/dist/assets/stex-C3f8Ysf7.js @@ -0,0 +1 @@ +function k(b){function h(t,n){t.cmdState.push(n)}function g(t){return t.cmdState.length>0?t.cmdState[t.cmdState.length-1]:null}function p(t){var n=t.cmdState.pop();n&&n.closeBracket()}function s(t){for(var n=t.cmdState,e=n.length-1;e>=0;e--){var a=n[e];if(a.name!="DEFAULT")return a}return{styleIdentifier:function(){return null}}}function i(t,n,e){return function(){this.name=t,this.bracketNo=0,this.style=n,this.styles=e,this.argument=null,this.styleIdentifier=function(){return this.styles[this.bracketNo-1]||null},this.openBracket=function(){return this.bracketNo++,"bracket"},this.closeBracket=function(){}}}var r={};r.importmodule=i("importmodule","tag",["string","builtin"]),r.documentclass=i("documentclass","tag",["","atom"]),r.usepackage=i("usepackage","tag",["atom"]),r.begin=i("begin","tag",["atom"]),r.end=i("end","tag",["atom"]),r.label=i("label","tag",["atom"]),r.ref=i("ref","tag",["atom"]),r.eqref=i("eqref","tag",["atom"]),r.cite=i("cite","tag",["atom"]),r.bibitem=i("bibitem","tag",["atom"]),r.Bibitem=i("Bibitem","tag",["atom"]),r.RBibitem=i("RBibitem","tag",["atom"]),r.DEFAULT=function(){this.name="DEFAULT",this.style="tag",this.styleIdentifier=this.openBracket=this.closeBracket=function(){}};function f(t,n){t.f=n}function l(t,n){var e;if(t.match(/^\\[a-zA-Z@\xc0-\u1fff\u2060-\uffff]+/)){var a=t.current().slice(1);return e=r.hasOwnProperty(a)?r[a]:r.DEFAULT,e=new e,h(n,e),f(n,d),e.style}if(t.match(/^\\[$&%#{}_]/)||t.match(/^\\[,;!\/\\]/))return"tag";if(t.match("\\["))return f(n,function(m,c){return o(m,c,"\\]")}),"keyword";if(t.match("\\("))return f(n,function(m,c){return o(m,c,"\\)")}),"keyword";if(t.match("$$"))return f(n,function(m,c){return o(m,c,"$$")}),"keyword";if(t.match("$"))return f(n,function(m,c){return o(m,c,"$")}),"keyword";var u=t.next();if(u=="%")return t.skipToEnd(),"comment";if(u=="}"||u=="]"){if(e=g(n),e)e.closeBracket(u),f(n,d);else return"error";return"bracket"}else return u=="{"||u=="["?(e=r.DEFAULT,e=new e,h(n,e),"bracket"):/\d/.test(u)?(t.eatWhile(/[\w.%]/),"atom"):(t.eatWhile(/[\w\-_]/),e=s(n),e.name=="begin"&&(e.argument=t.current()),e.styleIdentifier())}function o(t,n,e){if(t.eatSpace())return null;if(e&&t.match(e))return f(n,l),"keyword";if(t.match(/^\\[a-zA-Z@]+/))return"tag";if(t.match(/^[a-zA-Z]+/))return"variableName.special";if(t.match(/^\\[$&%#{}_]/)||t.match(/^\\[,;!\/]/)||t.match(/^[\^_&]/))return"tag";if(t.match(/^[+\-<>|=,\/@!*:;'"`~#?]/))return null;if(t.match(/^(\d+\.\d*|\d*\.\d+|\d+)/))return"number";var a=t.next();return a=="{"||a=="}"||a=="["||a=="]"||a=="("||a==")"?"bracket":a=="%"?(t.skipToEnd(),"comment"):"error"}function d(t,n){var e=t.peek(),a;return e=="{"||e=="["?(a=g(n),a.openBracket(e),t.eat(e),f(n,l),"bracket"):/[ \t\r]/.test(e)?(t.eat(e),null):(f(n,l),p(n),l(t,n))}return{name:"stex",startState:function(){var t=b?function(n,e){return o(n,e)}:l;return{cmdState:[],f:t}},copyState:function(t){return{cmdState:t.cmdState.slice(),f:t.f}},token:function(t,n){return n.f(t,n)},blankLine:function(t){t.f=l,t.cmdState.length=0},languageData:{commentTokens:{line:"%"}}}}const y=k(!1),S=k(!0);export{y as stex,S as stexMath}; diff --git a/frontend/dist/assets/style-CLmeZurA.css b/frontend/dist/assets/style-CLmeZurA.css new file mode 100644 index 0000000..787ba2f --- /dev/null +++ b/frontend/dist/assets/style-CLmeZurA.css @@ -0,0 +1 @@ +.md-editor .md-editor-preview{--md-theme-color: var(--md-color);--md-theme-color-reverse: #eee;--md-theme-color-hover: #eee;--md-theme-color-hover-inset: #ddd;--md-theme-link-color: #2d8cf0;--md-theme-link-hover-color: #73d13d;--md-theme-border-color: #e6e6e6;--md-theme-border-color-reverse: #bebebe;--md-theme-border-color-inset: #d6d6d6;--md-theme-bg-color: #fff;--md-theme-bg-color-inset: #ececec;--md-theme-code-copy-tips-color: inherit;--md-theme-code-copy-tips-bg-color: #fff;--md-theme-code-active-color: #61aeee;--md-theme-radius-s: 2px;--md-theme-radius-m: 5px}.md-editor-dark .md-editor-preview{--md-theme-color: var(--md-color);--md-theme-color-reverse: #222;--md-theme-color-hover: #191919;--md-theme-color-hover-inset: #444;--md-theme-link-color: #2d8cf0;--md-theme-link-hover-color: #73d13d;--md-theme-border-color: #2d2d2d;--md-theme-border-color-reverse: #e6e6e6;--md-theme-border-color-inset: #5a5a5a;--md-theme-bg-color: #000;--md-theme-bg-color-inset: #111;--md-theme-code-copy-tips-color: inherit;--md-theme-code-copy-tips-bg-color: #3a3a3a;--md-theme-code-active-color: #e6c07b;--md-theme-radius-s: 2px;--md-theme-radius-m: 5px}.md-editor .md-editor-admonition-note{--md-admonition-color: #212121;--md-admonition-bg-color: #FFFFFF;--md-admonition-border-color: rgb(166.2, 166.2, 166.2)}.md-editor .md-editor-admonition-tip{--md-admonition-color: #616161;--md-admonition-bg-color: #F5F5F5;--md-admonition-border-color: rgb(185.8, 185.8, 185.8)}.md-editor .md-editor-admonition-info{--md-admonition-color: #424242;--md-admonition-bg-color: #F0F0F0;--md-admonition-border-color: rgb(170.4, 170.4, 170.4)}.md-editor .md-editor-admonition-quote{--md-admonition-color: #455a64;--md-admonition-bg-color: #eceff1;--md-admonition-border-color: rgb(169.2, 179.4, 184.6)}.md-editor .md-editor-admonition-abstract{--md-admonition-color: #0288d1;--md-admonition-bg-color: #e1f5fe;--md-admonition-border-color: rgb(135.8, 201.4, 236)}.md-editor .md-editor-admonition-attention{--md-admonition-color: #1e88e5;--md-admonition-bg-color: #e3f2fd;--md-admonition-border-color: rgb(148.2, 199.6, 243.4)}.md-editor .md-editor-admonition-example{--md-admonition-color: #5e35b1;--md-admonition-bg-color: #ede7f6;--md-admonition-border-color: rgb(179.8, 159.8, 218.4)}.md-editor .md-editor-admonition-hint{--md-admonition-color: #00897B;--md-admonition-bg-color: #E0F2F1;--md-admonition-border-color: rgb(134.4, 200, 193.8)}.md-editor .md-editor-admonition-success{--md-admonition-color: #388e3c;--md-admonition-bg-color: #e8f5e9;--md-admonition-border-color: rgb(161.6, 203.8, 163.8)}.md-editor .md-editor-admonition-question{--md-admonition-color: #f9a825;--md-admonition-bg-color: #fffde7;--md-admonition-border-color: rgb(252.6, 219, 153.4)}.md-editor .md-editor-admonition-caution{--md-admonition-color: #fb8c00;--md-admonition-bg-color: #fff8e1;--md-admonition-border-color: rgb(253.4, 204.8, 135)}.md-editor .md-editor-admonition-warning{--md-admonition-color: #f57c00;--md-admonition-bg-color: #fff3e0;--md-admonition-border-color: rgb(251, 195.4, 134.4)}.md-editor .md-editor-admonition-danger{--md-admonition-color: #d84315;--md-admonition-bg-color: #ffebee;--md-admonition-border-color: rgb(239.4, 167.8, 151.2)}.md-editor .md-editor-admonition-failure{--md-admonition-color: #d32f2f;--md-admonition-bg-color: #fee2e6;--md-admonition-border-color: rgb(236.8, 154.4, 156.8)}.md-editor .md-editor-admonition-bug{--md-admonition-color: #c31a1a;--md-admonition-bg-color: #fddadd;--md-admonition-border-color: rgb(229.8, 141.2, 143)}.md-editor .md-editor-admonition-error{--md-admonition-color: #b71c1c;--md-admonition-bg-color: #fdd2d6;--md-admonition-border-color: rgb(225, 137.2, 139.6)}.md-editor-dark .md-editor-admonition-note{--md-admonition-color: #E0E0E0;--md-admonition-bg-color: #1E1E1E;--md-admonition-border-color: rgb(107.6, 107.6, 107.6)}.md-editor-dark .md-editor-admonition-tip{--md-admonition-color: #B0B0B0;--md-admonition-bg-color: #262626;--md-admonition-border-color: rgb(93.2, 93.2, 93.2)}.md-editor-dark .md-editor-admonition-info{--md-admonition-color: #B3B3B3;--md-admonition-bg-color: #2B2B2B;--md-admonition-border-color: rgb(97.4, 97.4, 97.4)}.md-editor-dark .md-editor-admonition-quote{--md-admonition-color: #b0bec5;--md-admonition-bg-color: #263238;--md-admonition-border-color: rgb(93.2, 106, 112.4)}.md-editor-dark .md-editor-admonition-abstract{--md-admonition-color: #81d4fa;--md-admonition-bg-color: #012f45;--md-admonition-border-color: rgb(52.2, 113, 141.4)}.md-editor-dark .md-editor-admonition-attention{--md-admonition-color: #64b5f6;--md-admonition-bg-color: #102a4c;--md-admonition-border-color: rgb(49.6, 97.6, 144)}.md-editor-dark .md-editor-admonition-example{--md-admonition-color: #9575cd;--md-admonition-bg-color: #271b52;--md-admonition-border-color: rgb(83, 63, 131.2)}.md-editor-dark .md-editor-admonition-hint{--md-admonition-color: #4DB6AC;--md-admonition-bg-color: #003D3A;--md-admonition-border-color: rgb(30.8, 109.4, 103.6)}.md-editor-dark .md-editor-admonition-success{--md-admonition-color: #81c784;--md-admonition-bg-color: #1b5e20;--md-admonition-border-color: rgb(67.8, 136, 72)}.md-editor-dark .md-editor-admonition-question{--md-admonition-color: #ffd54f;--md-admonition-bg-color: #3e2f00;--md-admonition-border-color: rgb(139.2, 113.4, 31.6)}.md-editor-dark .md-editor-admonition-caution{--md-admonition-color: #ffcc80;--md-admonition-bg-color: #3e2600;--md-admonition-border-color: rgb(139.2, 104.4, 51.2)}.md-editor-dark .md-editor-admonition-warning{--md-admonition-color: #ffb74d;--md-admonition-bg-color: #3d2600;--md-admonition-border-color: rgb(138.6, 96, 30.8)}.md-editor-dark .md-editor-admonition-danger{--md-admonition-color: #ef9a9a;--md-admonition-bg-color: #3c0000;--md-admonition-border-color: rgb(131.6, 61.6, 61.6)}.md-editor-dark .md-editor-admonition-failure{--md-admonition-color: #ef9a9a;--md-admonition-bg-color: #3c0900;--md-admonition-border-color: rgb(131.6, 67, 61.6)}.md-editor-dark .md-editor-admonition-bug{--md-admonition-color: #e68381;--md-admonition-bg-color: #300000;--md-admonition-border-color: rgb(120.8, 52.4, 51.6)}.md-editor-dark .md-editor-admonition-error{--md-admonition-color: #ef5350;--md-admonition-bg-color: #300000;--md-admonition-border-color: rgb(124.4, 33.2, 32)}.md-editor-preview .md-editor-admonition{background-color:var(--md-admonition-bg-color);border:1px solid var(--md-admonition-border-color);border-radius:var(--md-theme-radius-m);color:var(--md-admonition-color);display:flow-root;font-size:14px;font-weight:400;margin:1rem 0;padding:1em 1em .5em;page-break-inside:avoid}.md-editor-preview .md-editor-admonition-title{margin:0;padding:0;position:relative;font-weight:700}.md-editor-preview .md-editor-admonition p{margin:.5em 0;padding:0}.md-editor-preview .md-editor-admonition p:first-of-type{margin-top:0}.md-editor-preview .md-editor-admonition+p:empty,.md-editor-preview .md-editor-admonition+p:empty+p:empty{display:none}.md-editor-preview .md-editor-mermaid{overflow:hidden;line-height:normal}.md-editor-preview .md-editor-mermaid:not([data-processed]){white-space:pre}.md-editor-preview [class=md-editor-mermaid][data-grab]{cursor:grab}.md-editor-preview [class=md-editor-mermaid][data-grab]:active{cursor:grabbing}.md-editor-preview [class=md-editor-mermaid][data-processed]{position:relative;display:flex;justify-content:center;align-items:center}.md-editor-preview [class=md-editor-mermaid][data-processed] svg{transform-origin:top left}.md-editor-preview [class=md-editor-mermaid][data-processed] .md-editor-mermaid-action{position:absolute;top:10px;right:10px;z-index:1;opacity:0;transition:opacity .3s;cursor:pointer}.md-editor-preview [class=md-editor-mermaid][data-processed] .md-editor-mermaid-action svg{width:20px;height:20px}.md-editor-preview [class=md-editor-mermaid][data-processed]:hover .md-editor-mermaid-action{opacity:1}.md-editor-katex-block{text-align:center;margin:20px}.md-editor-katex-inline,.md-editor-katex-block{display:none}.md-editor-katex-inline[data-processed]{display:initial}.md-editor-katex-block[data-processed]{display:block}.md-editor .md-editor-preview{--md-theme-code-inline-color: #3594f7;--md-theme-code-inline-bg-color: rgba(59, 170, 250, .1);--md-theme-code-inline-radius: var(--md-theme-radius-s);--md-theme-code-block-color: #a9b7c6;--md-theme-code-block-bg-color: #282c34;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color);--md-theme-code-block-radius: var(--md-theme-radius-m)}.md-editor-dark .md-editor-preview{--md-theme-code-inline-color: #3594f7;--md-theme-code-inline-bg-color: rgba(59, 170, 250, .1);--md-theme-code-inline-radius: var(--md-theme-radius-s);--md-theme-code-block-color: #a9b7c6;--md-theme-code-block-bg-color: #1a1a1a;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color);--md-theme-code-block-radius: var(--md-theme-radius-m)}.md-editor-preview code{color:var(--md-theme-code-inline-color);background-color:var(--md-theme-code-inline-bg-color);border-radius:var(--md-theme-code-inline-radius);padding:2px 4px;line-height:22px}.md-editor-preview .md-editor-code{color:var(--md-theme-code-block-color);font-size:12px;line-height:1;margin:20px 0;position:relative}.md-editor-preview .md-editor-code input[type=radio],.md-editor-preview .md-editor-code input[type=radio]+pre,.md-editor-preview .md-editor-code input[type=radio]+span.md-editor-code-lang{display:none}.md-editor-preview .md-editor-code input:checked+pre,.md-editor-preview .md-editor-code input:checked+span.md-editor-code-lang{display:block}.md-editor-preview .md-editor-code input:checked+label{border-bottom:1px solid;color:var(--md-theme-code-active-color)}.md-editor-preview .md-editor-code .md-editor-code-head{display:grid;grid-template:"1fr 1fr";justify-content:space-between;height:32px;width:100%;font-size:12px;background-color:var(--md-theme-code-before-bg-color);margin-bottom:0;border-top-left-radius:var(--md-theme-code-block-radius);border-top-right-radius:var(--md-theme-code-block-radius);-webkit-tap-highlight-color:rgba(0,0,0,0);list-style:none;position:sticky;top:0;z-index:10000}.md-editor-preview .md-editor-code .md-editor-code-head::-webkit-details-marker{display:none}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag{margin-left:12px}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag span{display:inline-block;width:10px;height:10px;border-radius:50%;margin-top:11px}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag span:nth-of-type(1){background-color:#ec6a5e}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag span:nth-of-type(2){background-color:#f4bf4f}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag span:nth-of-type(3){background-color:#61c554}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag span+span{margin-left:4px}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag ul.md-editor-codetab-label{box-sizing:border-box;white-space:nowrap;-webkit-user-select:none;user-select:none;background-color:var(--md-theme-code-block-bg-color);margin-top:8px;padding:0}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag ul.md-editor-codetab-label li{line-height:1;list-style:none;display:inline-block;position:relative;vertical-align:super;margin:0}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag ul.md-editor-codetab-label li label{cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-block;font-size:14px}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag ul.md-editor-codetab-label li+li{margin-left:12px}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-action{display:flex;align-items:center}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-action>*{margin-right:10px}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-lang{line-height:32px}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button:not(data-is-icon){cursor:pointer;line-height:32px;position:initial}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button:not(data-is-icon) .md-editor-icon{width:15px;height:15px;display:inline-block;vertical-align:sub}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon]{cursor:pointer;line-height:1;position:relative}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon] .md-editor-icon{width:15px;height:15px;display:inline-block;vertical-align:sub}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon]:before{content:attr(data-tips);color:var(--md-theme-code-copy-tips-color);background-color:var(--md-theme-code-copy-tips-bg-color);position:absolute;font-size:12px;font-family:sans-serif;width:max-content;text-align:center;padding:4px;border-radius:var(--md-theme-radius-s);box-shadow:0 0 2px #0003;left:-10px;top:50%;transform:translate(-100%,-50%)}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon]:after{content:"";color:var(--md-theme-code-copy-tips-bg-color);position:absolute;width:0;height:0;border:5px solid rgba(0,0,0,0);border-right-width:0;border-left-color:currentColor;left:-10px;top:50%;transform:translateY(-50%);filter:drop-shadow(4px 0 2px rgba(0,0,0,.2))}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon]:before,.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon]:after{visibility:hidden;transition:.3s}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon]:hover:before,.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon]:hover:after{visibility:visible}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-collapse-tips{margin-right:12px}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-collapse-tips .md-editor-icon,.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-collapse-tips .md-editor-iconfont{width:16px;height:16px;font-size:16px;display:inline-block;vertical-align:sub;transform:rotate(0);transition:transform .1s}.md-editor-preview .md-editor-code pre{position:relative;margin:0}.md-editor-preview .md-editor-code pre code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace;font-size:14px;color:var(--md-theme-code-block-color);background-color:var(--md-theme-code-before-bg-color);display:block;line-height:1.6;overflow:auto;padding:1em;position:relative;border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:var(--md-theme-code-block-radius);border-bottom-right-radius:var(--md-theme-code-block-radius)}.md-editor-preview .md-editor-code pre code .md-editor-code-block{display:inline-block;width:100%;overflow:auto;vertical-align:bottom;color:var(--md-theme-code-block-color)}.md-editor-preview details.md-editor-code .md-editor-code-head{cursor:pointer}.md-editor-preview details.md-editor-code:not(open) .md-editor-code-head{border-bottom-left-radius:var(--md-theme-code-block-radius);border-bottom-right-radius:var(--md-theme-code-block-radius)}.md-editor-preview details.md-editor-code[open] .md-editor-code-head{border-bottom-left-radius:0;border-bottom-right-radius:0}.md-editor-preview details.md-editor-code[open] .md-editor-code-head .md-editor-collapse-tips .md-editor-icon,.md-editor-preview details.md-editor-code[open] .md-editor-code-head .md-editor-collapse-tips .md-editor-iconfont{transform:rotate(-90deg)}.md-editor-scrn span[rn-wrapper]{position:absolute;pointer-events:none;top:1em;font-size:100%;left:0;width:3em;letter-spacing:-1px;-webkit-user-select:none;user-select:none;counter-reset:linenumber}.md-editor-scrn span[rn-wrapper]>span{display:block;pointer-events:none;counter-increment:linenumber}.md-editor-scrn span[rn-wrapper]>span:before{color:#999;display:block;padding-right:.5em;text-align:right;content:counter(linenumber)}.md-editor-scrn pre code{padding-left:3.5em!important}.md-editor-preview figure{margin:0 0 1em;display:inline-flex;flex-direction:column;text-align:center}.md-editor-preview figure figcaption{color:var(--md-theme-color);font-size:.875em;margin-top:5px}.md-editor .md-editor-preview{--md-theme-heading-color: var(--md-theme-color);--md-theme-heading-border: none;--md-theme-heading-1-color: var(--md-theme-heading-color);--md-theme-heading-1-border: var(--md-theme-heading-border);--md-theme-heading-2-color: var(--md-theme-heading-color);--md-theme-heading-2-border: var(--md-theme-heading-border);--md-theme-heading-3-color: var(--md-theme-heading-color);--md-theme-heading-3-border: var(--md-theme-heading-border);--md-theme-heading-4-color: var(--md-theme-heading-color);--md-theme-heading-4-border: var(--md-theme-heading-border);--md-theme-heading-5-color: var(--md-theme-heading-color);--md-theme-heading-5-border: var(--md-theme-heading-border);--md-theme-heading-6-color: var(--md-theme-heading-color);--md-theme-heading-6-border: var(--md-theme-heading-border)}.md-editor-preview h1,.md-editor-preview h2,.md-editor-preview h3,.md-editor-preview h4,.md-editor-preview h5,.md-editor-preview h6{position:relative;word-break:break-all;margin:1.4em 0 .8em;font-weight:700}.md-editor-preview h1 a,.md-editor-preview h2 a,.md-editor-preview h3 a,.md-editor-preview h4 a,.md-editor-preview h5 a,.md-editor-preview h6 a,.md-editor-preview h1 a:hover,.md-editor-preview h2 a:hover,.md-editor-preview h3 a:hover,.md-editor-preview h4 a:hover,.md-editor-preview h5 a:hover,.md-editor-preview h6 a:hover{color:inherit}.md-editor-preview h1{color:var(--md-theme-heading-1-color);border-bottom:var(--md-theme-heading-1-border)}.md-editor-preview h2{color:var(--md-theme-heading-2-color);border-bottom:var(--md-theme-heading-2-border)}.md-editor-preview h3{color:var(--md-theme-heading-3-color);border-bottom:var(--md-theme-heading-3-border)}.md-editor-preview h4{color:var(--md-theme-heading-4-color);border-bottom:var(--md-theme-heading-4-border)}.md-editor-preview h5{color:var(--md-theme-heading-5-color);border-bottom:var(--md-theme-heading-5-border)}.md-editor-preview h6{color:var(--md-theme-heading-6-color);border-bottom:var(--md-theme-heading-6-border)}.md-editor-preview h1{font-size:2em}.md-editor-preview h2{font-size:1.5em}.md-editor-preview h3{font-size:1.25em}.md-editor-preview h4{font-size:1em}.md-editor-preview h5{font-size:.875em}.md-editor-preview h6{font-size:.85em}.md-editor-preview hr{height:1px;margin:10px 0;border:none;border-top:1px solid var(--md-theme-border-color)}.md-editor-preview a{color:var(--md-theme-link-color);text-decoration:none;transition:color .1s}.md-editor-preview a:hover{color:var(--md-theme-link-hover-color)}.md-editor-preview a:empty:before{content:attr(href)}.md-editor-preview ol,.md-editor-preview ul{padding-left:2em}.md-editor-preview ol .task-list-item,.md-editor-preview ul .task-list-item{list-style-type:none}.md-editor-preview ol .task-list-item input,.md-editor-preview ul .task-list-item input{margin-left:-1.5em;margin-right:.1em}.md-editor-preview img{max-width:100%}.md-editor-preview p:empty{display:none}.md-editor .md-editor-preview{--md-theme-quote-color: var(--md-theme-color);--md-theme-quote-border: none;--md-theme-quote-bg-color: inherit}.md-editor-preview blockquote{padding:0 1em;color:var(--md-theme-quote-color);border-left:var(--md-theme-quote-border);background-color:var(--md-theme-quote-bg-color)}.md-editor .md-editor-preview{--md-theme-table-stripe-color: #fafafa;--md-theme-table-tr-bg-color: inherit;--md-theme-table-td-border-color: var(--md-theme-border-color)}.md-editor-dark .md-editor-preview{--md-theme-table-stripe-color: #0c0c0c;--md-theme-table-tr-bg-color: inherit;--md-theme-table-td-border-color: var(--md-theme-border-color)}.md-editor-preview table tr{background-color:var(--md-theme-table-tr-bg-color)}.md-editor-preview table tr th,.md-editor-preview table tr td{border:1px solid var(--md-theme-table-td-border-color)}.md-editor-preview table tr:nth-child(2n){background-color:var(--md-theme-table-stripe-color)}.md-editor-preview{color:var(--md-theme-color)}.md-editor-preview ::-webkit-scrollbar{width:6px;height:6px}.md-editor-preview ::-webkit-scrollbar-button:vertical{display:none}.md-editor-preview ::-webkit-scrollbar-corner,.md-editor-preview ::-webkit-scrollbar-track,.md-editor-preview ::-webkit-scrollbar-thumb{border-radius:2px}.md-editor .md-editor-preview ::-webkit-scrollbar-corner,.md-editor .md-editor-preview ::-webkit-scrollbar-track{background-color:#e2e2e2}.md-editor .md-editor-preview ::-webkit-scrollbar-thumb{background-color:#0000004d}.md-editor .md-editor-preview ::-webkit-scrollbar-thumb:vertical:hover{background-color:#00000059}.md-editor .md-editor-preview ::-webkit-scrollbar-thumb:vertical:active{background-color:#00000061}.md-editor-dark .md-editor-preview ::-webkit-scrollbar-corner,.md-editor-dark .md-editor-preview ::-webkit-scrollbar-track{background-color:#0f0f0f}.md-editor-dark .md-editor-preview ::-webkit-scrollbar-thumb{background-color:#2d2d2d}.md-editor-dark .md-editor-preview ::-webkit-scrollbar-thumb:vertical:hover{background-color:#3a3a3a}.md-editor-dark .md-editor-preview ::-webkit-scrollbar-thumb:vertical:active{background-color:#3a3a3a}.md-editor div.default-theme{--md-theme-code-copy-tips-color: #141414}.md-editor-dark div.default-theme{--md-theme-code-copy-tips-color: inherit}div.default-theme img{margin:0 auto;box-sizing:border-box}div.default-theme a{display:inline-flex;line-height:1;border-bottom:none}div.default-theme a:hover{border-bottom:1px solid}div.default-theme a[target=_blank]{align-items:center}div.default-theme a[target=_blank]:after{content:"";display:inline-block;width:16px;height:16px;margin-left:2px;background-color:currentColor;-webkit-mask-image:url('data:image/svg+xml;utf8,');mask-image:url('data:image/svg+xml;utf8,');-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}div.default-theme ol,div.default-theme ul{margin:.6em 0}div.default-theme ol li,div.default-theme ul li{line-height:1.6;margin:.5em 0}div.default-theme p{line-height:1.6;margin:.5rem 0}.md-editor div.default-theme{--md-theme-quote-border: 5px solid #35b378;--md-theme-quote-bg-color: var(--md-theme-bg-color-inset)}div.default-theme blockquote{margin:20px 0;padding:0 1.2em;line-height:2em;display:flow-root}.md-editor default-theme{--md-theme-table-stripe-color: #fafafa}.md-editor-dark default-theme{--md-theme-table-stripe-color: #0c0c0c}div.default-theme table{overflow:auto;border-spacing:0;border-collapse:collapse;margin-bottom:1em;margin-top:1em}div.default-theme table tr th,div.default-theme table tr td{word-wrap:break-word;padding:8px 14px}div.default-theme table tbody tr:hover{background-color:var(--md-theme-color-hover)}div.default-theme blockquote table{line-height:initial}div.default-theme blockquote table tr th,div.default-theme blockquote table tr td{border-color:var(--md-theme-border-color-inset)}div.default-theme blockquote table tbody tr:nth-child(n){background-color:inherit}div.default-theme blockquote table tbody tr:hover{background-color:var(--md-theme-color-hover-inset)}.md-editor div.vuepress-theme{--md-theme-code-inline-color: #d63200;--md-theme-code-inline-bg-color: #f8f8f8;--md-theme-code-block-color: #747384;--md-theme-code-block-bg-color: #f8f8f8;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color);--md-theme-code-block-radius: 2px}.md-editor-dark div.vuepress-theme{--md-theme-code-inline-color: #e06c75;--md-theme-code-inline-bg-color: #1a1a1a;--md-theme-code-block-color: #999;--md-theme-code-block-bg-color: #1a1a1a;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color);--md-theme-code-block-radius: 2px}div.vuepress-theme code{padding:3px 5px;margin:0 2px}div.vuepress-theme .md-editor-code pre{font-size:.875em;margin:0 0 1em}div.vuepress-theme .md-editor-code pre code{white-space:pre;padding:22px 1em;margin:0}div.vuepress-theme .md-editor-code pre code span[rn-wrapper]{top:22px}.md-editor div.vuepress-theme{--md-theme-heading-color: #273849;--md-theme-heading-2-border: 1px solid var(--md-theme-border-color)}.md-editor-dark div.vuepress-theme{--md-theme-heading-color: #999;--md-theme-heading-2-border: 1px solid var(--md-theme-border-color)}div.vuepress-theme h1,div.vuepress-theme h2,div.vuepress-theme h3,div.vuepress-theme h4,div.vuepress-theme h5,div.vuepress-theme h6{font-weight:600;line-height:1.45;position:relative;margin-top:1em}div.vuepress-theme h1{font-size:2.2em;margin:1em 0}div.vuepress-theme h2{font-size:1.65em;padding-bottom:.3em}div.vuepress-theme h3{line-height:1.35em}.md-editor div.vuepress-theme{--md-theme-link-color: #42b983}div.vuepress-theme a{font-weight:600}div.vuepress-theme ul,div.vuepress-theme ol{position:relative;line-height:1.4em;margin:1.2em 0;z-index:1}div.vuepress-theme ul li,div.vuepress-theme ol li{margin:1.2em 0}div.vuepress-theme p{word-spacing:.05em;line-height:1.6em;margin:1.2em 0;position:relative}.md-editor div.vuepress-theme{--md-theme-quote-border: 4px solid #42b983}div.vuepress-theme blockquote{margin:2em 0;padding-left:20px}div.vuepress-theme blockquote p{margin-left:0;margin-top:1.2em;margin-bottom:0;padding:0}.md-editor div.vuepress-theme{--md-theme-table-td-border-color: #dfe2e5;--md-theme-table-stripe-color: #f6f8fa}.md-editor-dark div.vuepress-theme{--md-theme-table-td-border-color: #2d2d2d;--md-theme-table-stripe-color: #0c0c0c}div.vuepress-theme table{border-collapse:collapse;margin:1rem 0;display:block;overflow-x:auto}div.vuepress-theme table tr th,div.vuepress-theme table tr td{padding:.6em 1em}.md-editor div.vuepress-theme{--md-theme-color: #304455}.md-editor-dark div.vuepress-theme{--md-theme-color: #999}div.vuepress-theme{font-size:16px;color:var(--md-theme-color)}div.vuepress-theme em{color:#4f5959;padding:0 6px 0 4px}.md-editor div.github-theme{--md-theme-code-inline-color: inherit;--md-theme-code-inline-bg-color: #eff1f2;--md-theme-code-inline-radius: 6px;--md-theme-code-block-color: inherit;--md-theme-code-block-bg-color: #f6f8fa;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color);--md-theme-code-block-radius: 6px}.md-editor-dark div.github-theme{--md-theme-code-inline-color: #c9d1d9;--md-theme-code-inline-bg-color: #2d3339;--md-theme-code-inline-radius: 6px;--md-theme-code-block-color: #a9b7c6;--md-theme-code-block-bg-color: #161b22;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color);--md-theme-code-block-radius: 6px}div.github-theme code{padding:.2em .4em;margin:0}div.github-theme pre code{padding:22px 1em;margin-bottom:0;word-break:normal;letter-spacing:1px}.md-editor div.github-theme{--md-theme-heading-color: inherit;--md-theme-heading-6-color: #2d3339;--md-theme-heading-1-border: 1px solid #d9dee4;--md-theme-heading-2-border: 1px solid #d9dee4}.md-editor-dark div.github-theme{--md-theme-heading-color: #c9d1d9;--md-theme-heading-6-color: #768390;--md-theme-heading-1-border: 1px solid #373e47;--md-theme-heading-2-border: 1px solid #373e47}div.github-theme h1,div.github-theme h2,div.github-theme h3,div.github-theme h4,div.github-theme h5,div.github-theme h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}div.github-theme h1{padding-bottom:.3em;font-size:2em}div.github-theme h2{padding-bottom:.3em;font-size:1.5em}div.github-theme h3{font-size:1.25em}div.github-theme h4{font-size:1em}div.github-theme h5{font-size:.875em}div.github-theme h6{font-size:.85em}.md-editor div.github-theme{--md-theme-heading-bg-color: #fff}.md-editor-dark div.github-theme{--md-theme-heading-bg-color: #22272e}div.github-theme img{background-color:var(--md-theme-heading-bg-color)}.md-editor div.github-theme{--md-theme-link-color: #539bf5;--md-theme-link-hover-color: #539bf5}div.github-theme a:hover{text-decoration:underline}div.github-theme ol li+li,div.github-theme ul li+li{margin-top:.25em}.md-editor div.github-theme{--md-theme-quote-color: #57606a;--md-theme-quote-border: .25em solid #d0d7de}.md-editor-dark div.github-theme{--md-theme-quote-color: #8b949e;--md-theme-quote-border: .25em solid #444c56}div.github-theme blockquote{margin:0;padding:0 1em}.md-editor div.github-theme{--md-theme-table-stripe-color: #f7f8fa;--md-theme-table-tr-bg-color: #fff;--md-theme-table-td-border-color: #d0d7de}.md-editor-dark div.github-theme{--md-theme-table-stripe-color: #161b22;--md-theme-table-tr-bg-color: transparent;--md-theme-table-td-border-color: #30363d}div.github-theme table{display:block;max-width:100%;overflow:auto;border-spacing:0;border-collapse:collapse}div.github-theme table tr th,div.github-theme table tr td{padding:6px 13px}.md-editor div.github-theme{--md-theme-color: #222}.md-editor-dark div.github-theme{--md-theme-color: #c9d1d9}div.github-theme{line-height:1.5;color:var(--md-theme-color)}div.github-theme p,div.github-theme blockquote,div.github-theme ul,div.github-theme ol,div.github-theme dl,div.github-theme table,div.github-theme pre,div.github-theme details{margin-top:0;margin-bottom:16px}.md-editor div.cyanosis-theme,.md-editor-dark div.cyanosis-theme{--md-theme-code-inline-color: var(--md-theme-code-color);--md-theme-code-inline-bg-color: var(--md-theme-code-bg-color);--md-theme-code-block-color: var(--md-theme-base-color);--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color)}div.cyanosis-theme code{padding:.065em .4em;font-family:Menlo,Monaco,Consolas,Courier New,monospace;overflow-x:auto}div.cyanosis-theme code::selection{background-color:var(--md-theme-slct-codebg-color)}div.cyanosis-theme .md-editor-code pre{font-family:Menlo,Monaco,Consolas,Courier New,monospace}div.cyanosis-theme .md-editor-code pre code{padding:11px 12px 22px;margin:0;word-break:normal;line-height:1.75}div.cyanosis-theme .md-editor-code pre code span[rn-wrapper]{top:11px}.md-editor div.cyanosis-theme{--md-theme-heading-color: var(--md-theme-title-color)}div.cyanosis-theme h1{padding-bottom:4px;margin-top:36px;margin-bottom:10px;font-size:30px;line-height:1.5;transition:color .35s}div.cyanosis-theme h2{position:relative;padding-left:10px;padding-right:10px;padding-bottom:10px;margin-top:36px;margin-bottom:10px;font-size:24px;line-height:1.5;border-bottom:1px solid var(--md-theme-border-color-2);transition:color .35s}div.cyanosis-theme h2:before{content:"「";position:absolute;top:-6px;left:-14px}div.cyanosis-theme h2:after{content:"」";position:relative;top:6px;right:auto}div.cyanosis-theme h3{position:relative;padding-bottom:0;margin-top:30px;margin-bottom:10px;font-size:20px;line-height:1.5;padding-left:6px;transition:color .35s}div.cyanosis-theme h3:before{content:"»";padding-right:6px;color:var(--md-theme-strong-color)}div.cyanosis-theme h4{padding-bottom:0;margin-top:24px;margin-bottom:10px;font-size:16px;line-height:1.5;padding-left:6px;transition:color .35s}div.cyanosis-theme h5{padding-bottom:0;margin-top:18px;margin-bottom:10px;font-size:14px;line-height:1.5;padding-left:6px;transition:color .35s}div.cyanosis-theme h6{padding-bottom:0;margin-top:12px;margin-bottom:10px;font-size:12px;line-height:1.5;padding-left:6px;transition:color .35s}div.cyanosis-theme h1::selection,div.cyanosis-theme h2::selection,div.cyanosis-theme h3::selection,div.cyanosis-theme h4::selection,div.cyanosis-theme h5::selection,div.cyanosis-theme h6::selection{color:var(--md-theme-slct-title-color);background-color:var(--md-theme-slct-titlebg-color)}@media(max-width:720px){div.cyanosis-theme h1{font-size:24px}div.cyanosis-theme h2{font-size:20px}div.cyanosis-theme h3{font-size:18px}}.md-editor div.cyanosis-theme{--md-theme-link-color: var(--md-theme-link-color);--md-theme-link-hover-color: var(--md-theme-linkh-color)}div.cyanosis-theme a{position:relative;display:inline-block;text-decoration:none;border-bottom:1px solid var(--md-theme-border-color)}div.cyanosis-theme a:hover{border-bottom-color:var(--md-theme-linkh-color)}div.cyanosis-theme a:active{color:var(--md-theme-linkh-color)}div.cyanosis-theme a:after{position:absolute;content:"";top:100%;left:0;width:100%;opacity:0;border-bottom:1px solid var(--md-theme-border-color);transition:top .3s,opacity .3s;transform:translateZ(0)}div.cyanosis-theme a:hover:after{top:0;opacity:1;border-bottom-color:var(--md-theme-linkh-color)}div.cyanosis-theme ol,div.cyanosis-theme ul{margin:0}div.cyanosis-theme ol li,div.cyanosis-theme ul li{margin-bottom:0;list-style:inherit}div.cyanosis-theme ol li .task-list-item,div.cyanosis-theme ul li .task-list-item{list-style:none}div.cyanosis-theme ol li .task-list-item ul,div.cyanosis-theme ol li .task-list-item ol,div.cyanosis-theme ul li .task-list-item ul,div.cyanosis-theme ul li .task-list-item ol{margin-top:0}div.cyanosis-theme ol ul,div.cyanosis-theme ol ol,div.cyanosis-theme ul ul,div.cyanosis-theme ul ol{margin-top:4px}div.cyanosis-theme ol li{padding-left:6px}div.cyanosis-theme ol li::selection,div.cyanosis-theme ul li::selection{color:var(--md-theme-slct-text-color);background-color:var(--md-theme-slct-bg-color)}div.cyanosis-theme .task-list-item-checkbox{position:relative}div.cyanosis-theme .contains-task-list input[type=checkbox]:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;width:inherit;height:inherit;background:#f0f8ff;border:1px solid #add6ff;border-radius:var(--md-theme-radius-s);box-sizing:border-box;z-index:1}div.cyanosis-theme .contains-task-list input[type=checkbox][checked]:after{content:"✓";position:absolute;top:-12px;left:0;right:0;bottom:0;width:0;height:0;color:#f55;font-size:20px;font-weight:700;z-index:2}div.cyanosis-theme p{line-height:inherit;margin-top:16px;margin-bottom:16px}div.cyanosis-theme p::selection{color:var(--md-theme-slct-text-color);background-color:var(--md-theme-slct-bg-color)}.md-editor div.cyanosis-theme{--md-theme-quote-color: var(--md-theme-blockquote-color);--md-theme-quote-border: 4px solid var(--md-theme-strong-color);--md-theme-quote-bg-color: var(--md-theme-blockquote-bg-color)}div.cyanosis-theme blockquote{padding:1px 20px;margin:22px 0;transition:color .35s}div.cyanosis-theme blockquote:after{display:block;content:""}div.cyanosis-theme blockquote>p{margin:10px 0}div.cyanosis-theme blockquote>b,div.cyanosis-theme blockquote>strong{color:var(--md-theme-strong-color)}div.cyanosis-theme table{display:inline-block!important;width:auto;max-width:100%;overflow:auto;border:1px solid var(--md-theme-table-border-color);border-spacing:0;border-collapse:collapse}div.cyanosis-theme table thead{color:#000;text-align:left;background:#f6f6f6}div.cyanosis-theme table tr:nth-child(2n){background-color:var(--md-theme-table-tr-nc-color)}div.cyanosis-theme table tr:hover{background-color:var(--md-theme-table-trh-color)}div.cyanosis-theme table th,div.cyanosis-theme table td{padding:12px 8px;line-height:24px;border:1px solid var(--md-theme-table-border-color)}div.cyanosis-theme table th{color:var(--md-theme-table-tht-color);background-color:var(--md-theme-table-th-color)}div.cyanosis-theme table td{min-width:120px}div.cyanosis-theme table thead th::selection{background-color:#0000}div.cyanosis-theme table tbody td::selection{background-color:var(--md-theme-slct-bg-color)}.md-editor div.cyanosis-theme{--md-theme-base-color:#353535;--md-theme-title-color:#005bb7;--md-theme-strong-color:#2196f3;--md-theme-em-color:#4fc3f7;--md-theme-del-color:#ccc;--md-theme-link-color:#3da8f5;--md-theme-linkh-color:#007fff;--md-theme-border-color:#bedcff;--md-theme-border-color-2:#ececec;--md-theme-bg-color:#fff;--md-theme-blockquote-color:#8c8c8c;--md-theme-blockquote-bg-color:#f0fdff;--md-theme-code-color:#c2185b;--md-theme-code-bg-color:#fff4f4;--md-theme-code-block-bg-color:#f8f8f8;--md-theme-table-border-color:#c3e0fd;--md-theme-table-th-color:#dff0ff;--md-theme-table-tht-color:#005bb7;--md-theme-table-tr-nc-color:#f7fbff;--md-theme-table-trh-color:#e0edf7;--md-theme-slct-title-color:#005bb7;--md-theme-slct-titlebg-color:rgba(175,207,247,.25);--md-theme-slct-text-color:#c80000;--md-theme-slct-bg-color:rgba(175,207,247,.25);--md-theme-slct-del-color:#999;--md-theme-slct-elbg-color:#e8ebec;--md-theme-slct-codebg-color:#ffeaeb;--md-theme-slct-prebg-color:rgba(160,200,255,.25)}.md-editor-dark div.cyanosis-theme{--md-theme-base-color:#cacaca;--md-theme-title-color:#ddd;--md-theme-strong-color:#fe9900;--md-theme-em-color:#ffd28e;--md-theme-del-color:#ccc;--md-theme-link-color:#ffb648;--md-theme-linkh-color:#fe9900;--md-theme-border-color:#ffe3ba;--md-theme-border-color-2:#ffcb7b;--md-theme-bg-color:#2f2f2f;--md-theme-blockquote-color:#c7c7c7;--md-theme-blockquote-bg-color:rgba(255,199,116,.1);--md-theme-code-color:#000;--md-theme-code-bg-color:#ffcb7b;--md-theme-code-block-bg-color:rgba(30,25,18,.5);--md-theme-table-border-color:#fe9900;--md-theme-table-th-color:#ffb648;--md-theme-table-tht-color:#000;--md-theme-table-tr-nc-color:#6d5736;--md-theme-table-trh-color:#947443;--md-theme-slct-title-color:#000;--md-theme-slct-titlebg-color:#fe9900;--md-theme-slct-text-color:#00c888;--md-theme-slct-bg-color:rgba(175,207,247,.25);--md-theme-slct-del-color:#999;--md-theme-slct-elbg-color:#000;--md-theme-slct-codebg-color:#ffcb7b;--md-theme-slct-prebg-color:rgba(160,200,255,.25)}div.cyanosis-theme{word-break:break-word;line-height:1.75;font-weight:400;overflow-x:hidden;color:var(--md-theme-base-color);transition:color .35s}div.cyanosis-theme hr{position:relative;width:98%;height:1px;margin-top:32px;margin-bottom:32px;background-image:linear-gradient(90deg,var(--md-theme-link-color),rgba(255,0,0,.3),rgba(37,163,65,.3),rgba(255,0,0,.3),var(--md-theme-link-color));border-width:0;overflow:visible}div.cyanosis-theme b,div.cyanosis-theme strong{color:var(--md-theme-strong-color)}div.cyanosis-theme i,div.cyanosis-theme em{color:var(--md-theme-em-color)}div.cyanosis-theme del{color:var(--md-theme-del-color)}div.cyanosis-theme details>summary{outline:none;color:var(--md-theme-title-color);font-size:20px;font-weight:bolder;border-bottom:1px solid var(--md-theme-border-color);cursor:pointer}div.cyanosis-theme details>p{padding:10px 20px;margin:10px 0 0;color:#666;background-color:var(--md-theme-blockquote-bg-color);border:2px dashed var(--md-theme-strong-color)}div.cyanosis-theme a::selection,div.cyanosis-theme b::selection,div.cyanosis-theme strong::selection,div.cyanosis-theme i::selection,div.cyanosis-theme em::selection{background-color:var(--md-theme-slct-elbg-color)}div.cyanosis-theme del::selection{color:var(--md-theme-slct-del-color);background-color:var(--md-theme-slct-elbg-color)}.md-editor div.mk-cute-theme,.md-editor-dark div.mk-cute-theme{--md-theme-code-inline-color: #4ec9b0;--md-theme-code-inline-bg-color: #282c34;--md-theme-code-block-color: #4ec9b0;--md-theme-code-block-bg-color: #282c34;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color);--md-theme-code-block-radius: 10px}div.mk-cute-theme code{font-family:Menlo,Monaco,Consolas,Courier New,monospace;overflow-x:auto;padding:.14em .46em;margin:0 4px}div.mk-cute-theme .md-editor-code pre code{font-family:Menlo,Monaco,Consolas,Courier New,monospace;padding:22px;margin:0;word-break:normal;line-height:1.75}div.mk-cute-theme .md-editor-code pre code span[rn-wrapper]{top:22px}.md-editor div.mk-cute-theme{--md-theme-heading-color: #36ace1}div.mk-cute-theme h1:before,div.mk-cute-theme h2:before,div.mk-cute-theme h3:before,div.mk-cute-theme h4:before,div.mk-cute-theme h5:before,div.mk-cute-theme h6:before{content:"";display:block;position:absolute;left:0;top:0;bottom:0;margin:auto;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAF8UlEQVRIS71Wa2wUVRT+7r0zu9t2t/RBaSioPCpYbIUfaEIQUogSAwZDAlUSGwgg/CBATExMCJH1D2hIfOEjFEUEhViCgBgIUCH44OkjPAMGBVqhpUCfW3Zn5z7MuQOE0hYxMdxJdmd25s53vnO+851leMCLPWA8/CfA2TsvL8n7q+nTFfNLG+4VqInHOeJLDQMzdz/3r4DGGDb9lxu+aPcE7U61JHDMDePcuv0O21ShugOefqDdtBie3Dk6K/O+Ab+qOjJiz7Ahv6c8hbDDwRiQlgYGDOcaWyEcjg8On+j71IpJndjGt9XO+jM7+pkywNvbazIfercieSdoJ4bE5sWjyZqMpDdeaQNXMNC34ME3LV8B56+1w3AOgk+EXe/Ub6uiLB6XdH/G/mYjeBCcFwnt3zQqWt4t4NjjnhzQ1CGkBhwOCMFAB71U0qsYgRlwBtQ1tiEJAy44OBdQUmFK3aWS06NLT+ukZAQoKCCjsfbDmk6p78RwX3ncWffmIj8U4kh6GpEwh+9rGy23LDU4GBrrm9DsuDYIGMAYIC/EUNQ7Cq1hn+WM2TI8f+jEyCmvjfn1FssuojHx6tDkyZOaCzr8TNpASzDAk8amlRIrEylcSGsYrcGIstIYWhgDDIM2BiGH3ywFkGAC1U9n38bpVqWGdk6r4HMWrZZaG1D5KLn0qYyBEAKnG1otAxLR8L7Z9nfP13CJHQ/ST4vK8sVHe8JsU0U6uO5hlexo8PI7vNDQomwoBRAwpSmtgJAAztS3QLsOsmBQlBtFJMQhlbbPUBBUR7o2hqHVddLbRsfCPQJ+u3TPw8uGl1yklAlHIJZKo3//XEhlLCtifPFyM7xwCI/lZ8IKTTBbS7pPLIggZZsSQ+zXbT4UYSsnet3UMM5HPT5LGbrDGYQroClyT2Jwnyj9aN949e8mDCwuRFoqKxRHUJ21BSDRELuQYGhvbMVV32Dp2RuxcfHSRBfAYTsbU9nJdFj5EiLkglHkRInC1xoxKbH9hQJIaTDvxxTCUddWl4wg0dCCtqSPDmoVx4Eitpxh64ZtsT6b5ie6pPRkfF90TllxOzEwmipMKRRgHODGgCuJkqIcvDdC2BZ5Y+tlHHMzkAKghbAxcQqQDiKrFBxhqg5MHTivS1tQ+sdsvaQl5Yd6yfdRXNQLsQwXnq/AQFLXEIIjzBSuNaaR0SuEtkQKl9IKjAsbJaWfzo1USDsM6zceDJfeVGgnhhN2N7YOyo5kJz1pa2AbgfrO1gRwXW6vSRQNtddR+EhvKGmseskgTtY2Q7kucYWWgToPHzyUyXry0iXfnBtfl5f/PaWPvPNW/zkOAQegJHltFE5dSaCskHqPVEnqpMAMEgkPtR1pKxyh/N0/vTToubtH1G3RmLjhM8ubKXfWB2mRa9ySOaWS2uT8lTZ0cI6I52Ngv7zAbW9mQVm1cpytu441P38XeXTlQu+e46nyh+bjLkMZRU0MCYTCJWZSG1y7cBWNURpxBlxqFBfEwGnGGhaYPSNwhpSv4DK+/vPynBk9MqRIiOWs8a2WJTm9a+cgh6SaMIMz9W1WjYHHMtv0wSmZdWB9gdsya/rcYVg7JoffCdqlD6ceTpiY59tM0PhJp5WNvra+BQkejCMyBarr8KKYDcZi8sDaCDKYFIGRk+FnSVXzyTO9JxBwF8DLc1dlLn65ooNEYN0fBsu21fTvL6PXnhxXlnLIqqhYYBian4lQ2Lk9ogiALsimiLC1QYfhlV1Hnxh7JfcMqxrpd7U2GFa5t9nOd7Kr+kg4uWvnCpromlJeXlq3Os3ZLOlrZBmNQf1ybVqpxhbA7mRIOCy1+esDOWhIyDv/+3Q7LRbsqH+rKRJ+nba+/+WW7II1s9vvVBuNr7KNF1WUM1bSt5f1Vq01jUVkKfnx8uoti3Or5rbd9782M61azJz/rFywYU/OyKqK1p5G2MS1Z18tGFDwTkvIxcK9RwaMP3a9/tbc62lPj/Nw5B9ey9Ehy/MY4oEqelgNleuyCgdXJlmc3fO5Ll56r5f+n/f+AWFf9jvBgaHpAAAAAElFTkSuQmCC);animation:spin 2s linear 0s infinite}div.mk-cute-theme h1{position:relative;font-size:30px;padding:12px 38px;margin:30px 0}div.mk-cute-theme h1:before{width:30px;height:30px;background-size:30px 30px}div.mk-cute-theme h2{position:relative;font-size:24px;padding:12px 36px;margin:28px 0}div.mk-cute-theme h2:before{width:28px;height:28px;background-size:28px 28px}div.mk-cute-theme h3{position:relative;font-size:18px;padding:4px 32px;margin:26px 0}div.mk-cute-theme h3:before{width:24px;height:24px;background-size:24px 24px}div.mk-cute-theme h4{position:relative;padding:4px 28px;font-size:16px;margin:22px 0}div.mk-cute-theme h4:before{width:20px;height:20px;background-size:20px 20px}div.mk-cute-theme h5{position:relative;padding:4px 26px;font-size:15px;margin:20px 0}div.mk-cute-theme h5:before{width:18px;height:18px;background-size:18px 18px}div.mk-cute-theme h6{position:relative;padding:4px 22px;font-size:14px;margin:16px 0}div.mk-cute-theme h6:before{width:16px;height:16px;background-size:16px 16px}@media(max-width:720px){div.mk-cute-theme h1{font-size:24px}div.mk-cute-theme h2{font-size:20px}div.mk-cute-theme h3{font-size:18px}}.md-editor div.mk-cute-theme{--md-theme-link-color: #409eff;--md-theme-link-hover-color: #007bff}div.mk-cute-theme a{display:inline-block;border-bottom:1px solid #409eff}div.mk-cute-theme a:hover,div.mk-cute-theme a:active{border-bottom:1px solid #007bff}div.mk-cute-theme ol li,div.mk-cute-theme ul li{margin-bottom:0;list-style:inherit}div.mk-cute-theme ol li .task-list-item,div.mk-cute-theme ul li .task-list-item{list-style:none}div.mk-cute-theme ol li .task-list-item ul,div.mk-cute-theme ol li .task-list-item ol,div.mk-cute-theme ul li .task-list-item ul,div.mk-cute-theme ul li .task-list-item ol{margin-top:0}div.mk-cute-theme ol ul,div.mk-cute-theme ol ol,div.mk-cute-theme ul ul,div.mk-cute-theme ul ol{margin-top:3px}div.mk-cute-theme ol li{padding-left:6px}div.mk-cute-theme p{line-height:inherit;margin-top:22px;margin-bottom:22px}.md-editor div.mk-cute-theme{--md-theme-quote-color: #fff;--md-theme-quote-border: 4px solid #409eff;--md-theme-quote-bg-color: rgba(54, 172, 225, .75)}.md-editor-dark div.mk-cute-theme{--md-theme-quote-color: inherit;--md-theme-quote-border: 4px solid #265d97;--md-theme-quote-bg-color: rgba(18, 80, 108, .75)}div.mk-cute-theme blockquote{position:relative;padding:8px 26px;margin:16px 0;border-radius:var(--md-theme-radius-m)}div.mk-cute-theme blockquote:before{content:"❝";top:10px;left:8px;color:#409eff;font-size:20px;line-height:1;font-weight:700;position:absolute;opacity:.7}div.mk-cute-theme blockquote:after{content:"❞";font-size:20px;position:absolute;right:8px;bottom:0;color:#409eff;opacity:.7}div.mk-cute-theme blockquote>p,div.mk-cute-theme blockquote ul li,div.mk-cute-theme blockquote ol li{color:var(--md-theme-quote-color)}.md-editor div.mk-cute-theme{--md-theme-table-color: #000;--md-theme-table-border-color: #f6f6f6;--md-theme-table-thead-bg-color: #f6f6f6;--md-theme-table-stripe-color: #fcfcfc}.md-editor-dark div.mk-cute-theme{--md-theme-table-color: inherit;--md-theme-table-border-color: #1c1c1c;--md-theme-table-thead-bg-color: rgba(28, 28, 28, .631372549);--md-theme-table-stripe-color: rgba(28, 28, 28, .631372549)}div.mk-cute-theme table{display:inline-block;width:auto;max-width:100%;overflow:auto;border:solid 1px var(--md-theme-table-border-color)}div.mk-cute-theme table thead{background-color:var(--md-theme-table-thead-bg-color);color:var(--md-theme-table-color);text-align:left}div.mk-cute-theme table tr th,div.mk-cute-theme table tr td{padding:12px 7px;line-height:24px;border:none}div.mk-cute-theme table tr td{min-width:120px}div.mk-cute-theme blockquote table tbody{color:var(--md-theme-color)}div.mk-cute-theme blockquote table tr{background-color:var(--md-theme-table-stripe-color)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.md-editor div.mk-cute-theme{--md-theme-color: #36ace1;background-image:linear-gradient(90deg,#323a4240 3%,#0000 3%),linear-gradient(360deg,#323a4240 3%,#0000 3%)}.md-editor-dark div.mk-cute-theme{background-image:linear-gradient(90deg,#d9eafb40 3%,#0000 3%),linear-gradient(360deg,#d9eafb40 3%,#0000 3%);--md-theme-bg-color-scrollbar-thumb: #4d4d4d}div.mk-cute-theme{word-break:break-word;line-height:1.75;font-weight:400;overflow-x:hidden;background-size:20px 20px;background-position:center center}div.mk-cute-theme hr{position:relative;width:98%;height:1px;border:none;margin-top:32px;margin-bottom:32px;background-image:linear-gradient(to right,#36ace1,#dff0fe,#36ace1);overflow:visible}div.mk-cute-theme del{color:#36ace1}.md-editor div.smart-blue-theme{--md-theme-code-inline-color: #d63200;--md-theme-code-inline-bg-color: #fff5f5;--md-theme-code-block-color: #333;--md-theme-code-block-bg-color: #f8f8f8;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color)}.md-editor-dark div.smart-blue-theme{--md-theme-code-inline-color: #e06c75;--md-theme-code-inline-bg-color: #1a1a1a;--md-theme-code-block-color: #999;--md-theme-code-block-bg-color: #1a1a1a;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color)}div.smart-blue-theme code{overflow-x:auto;padding:.065em .4em}div.smart-blue-theme .md-editor-code pre{font-family:Menlo,Monaco,Consolas,Courier New,monospace}div.smart-blue-theme .md-editor-code pre code{padding:22px 12px;margin:0;word-break:normal}div.smart-blue-theme .md-editor-code pre code span[rn-wrapper]{top:22px}.md-editor div.smart-blue-theme{--md-theme-heading-color: #135ce0}div.smart-blue-theme h1,div.smart-blue-theme h2,div.smart-blue-theme h3,div.smart-blue-theme h4,div.smart-blue-theme h5,div.smart-blue-theme h6{padding:30px 0;margin:0}div.smart-blue-theme h1 a,div.smart-blue-theme h2 a,div.smart-blue-theme h3 a,div.smart-blue-theme h4 a,div.smart-blue-theme h5 a,div.smart-blue-theme h6 a{border:none}div.smart-blue-theme h1{position:relative;text-align:center;font-size:22px;margin:50px 0}div.smart-blue-theme h2{position:relative;font-size:20px;border-left:4px solid;padding:0 0 0 10px;margin:30px 0}div.smart-blue-theme h3{font-size:16px}div.smart-blue-theme img{margin:0 auto}.md-editor div.smart-blue-theme{--md-theme-link-color: #036aca}.md-editor-dark div.smart-blue-theme{--md-theme-link-color: #2d7dc7}div.smart-blue-theme a{font-weight:400}div.smart-blue-theme ul,div.smart-blue-theme ol{margin-top:1em}div.smart-blue-theme li{line-height:2;margin-bottom:0;list-style:inherit}div.smart-blue-theme p{line-height:2;font-weight:400}div.smart-blue-theme *+p{margin-top:16px}.md-editor div.smart-blue-theme{--md-theme-quote-color: #666;--md-theme-quote-bg-color: #fff9f9;--md-theme-quote-border-color: #b2aec5}.md-editor-dark div.smart-blue-theme{--md-theme-quote-color: #999;--md-theme-quote-bg-color: #2a2a2a;--md-theme-quote-border-color: #0063bb}div.smart-blue-theme blockquote{background-color:var(--md-theme-quote-bg-color);margin:2em 0;padding:2px 20px;border-left:4px solid var(--md-theme-quote-border-color)}div.smart-blue-theme blockquote p{color:var(--md-theme-quote-color);line-height:2}.md-editor div.smart-blue-theme{--md-theme-table-td-border-color: #dfe2e5;--md-theme-table-stripe-color: #f6f8fa}.md-editor-dark div.smart-blue-theme{--md-theme-table-td-border-color: #2d2d2d;--md-theme-table-stripe-color: #0c0c0c}div.smart-blue-theme table{border-collapse:collapse;margin:1rem 0;overflow-x:auto}div.smart-blue-theme table tr th,div.smart-blue-theme table tr td{padding:.6em 1em}div.smart-blue-theme blockquote table{line-height:initial}div.smart-blue-theme blockquote table tr th,div.smart-blue-theme blockquote table tr td{border-color:var(--md-theme-border-color-inset)}div.smart-blue-theme blockquote table tbody tr:nth-child(n){background-color:inherit}.md-editor div.smart-blue-theme{--md-theme-color: #595959}.md-editor div.smart-blue-theme{background-image:linear-gradient(90deg,#3c0a1e0a 3%,#0000 3%),linear-gradient(360deg,#3c0a1e0a 3%,#0000 3%)}.md-editor-dark div.smart-blue-theme{--md-theme-color: #999}.md-editor-dark div.smart-blue-theme{background-image:linear-gradient(90deg,#cfcfcf0a 3%,#fff0 3%),linear-gradient(360deg,#cfcfcf0a 3%,#fff0 3%)}div.smart-blue-theme{color:var(--md-theme-color);font-family:-apple-system,system-ui,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Arial,sans-serif;background-size:20px 20px;background-position:center center}div.smart-blue-theme strong,div.smart-blue-theme em strong{color:#036aca}div.smart-blue-theme hr{border-top:1px solid #135ce0}.md-editor-checkbox{cursor:pointer;width:12px;height:12px;border:1px solid var(--md-border-color);background-color:var(--md-bk-color-outstand);border-radius:2px;line-height:1;text-align:center}.md-editor-checkbox:after{content:"";font-weight:700}.md-editor-checkbox-checked:after{content:"✓"}.md-editor-divider{position:relative;display:inline-block;width:1px;top:.1em;height:.9em;margin:0 8px;background-color:var(--md-border-color)}.md-editor-dropdown{overflow:hidden;box-sizing:border-box;position:absolute;transition:all .3s;opacity:1;z-index:20000;background-color:var(--md-bk-color)}.md-editor-dropdown-hidden{opacity:0;visibility:hidden}.md-editor-dropdown-overlay{margin-top:6px}.md-editor-modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20000;height:100%;background-color:var(--md-modal-mask)}.md-editor-modal{display:block;background-color:var(--md-bk-color);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol;border-radius:3px;border:1px solid var(--md-border-color);position:fixed;z-index:20001;box-shadow:var(--md-modal-shadow)}.md-editor-modal-header{cursor:grab;display:flex;justify-content:space-between;padding:10px 24px;color:var(--md-color);font-weight:600;font-size:16px;line-height:22px;word-wrap:break-word;-webkit-user-select:none;user-select:none;border-bottom:1px solid var(--md-border-color);position:relative}.md-editor-modal-body{padding:20px;font-size:14px;word-wrap:break-word;height:calc(100% - 43px);box-sizing:border-box}.md-editor-modal .md-editor-modal-func{position:absolute;top:10px;right:10px}.md-editor-modal .md-editor-modal-func .md-editor-modal-adjust,.md-editor-modal .md-editor-modal-func .md-editor-modal-close{cursor:pointer;width:24px;height:24px;line-height:24px;text-align:center;display:inline-block}.md-editor-modal .md-editor-modal-func .md-editor-modal-adjust{padding-right:10px}.animation{animation-duration:.15s;animation-fill-mode:forwards}@keyframes zoomIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoom-in{animation-name:zoomIn;animation-duration:.15s;animation-fill-mode:forwards}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;transform:scale3d(.3,.3,.3)}to{opacity:0}}.zoom-out{animation-name:zoomOut;animation-duration:.15s;animation-fill-mode:forwards}.md-editor-content{position:relative;display:flex;flex:1;height:0;flex-shrink:0}.md-editor-content-wrapper{display:flex;flex:1;width:0;position:relative}.md-editor-resize-operate{position:absolute;width:2px;height:100%;background-color:var(--md-bk-color);z-index:1;cursor:col-resize}.md-editor-input-wrapper{box-sizing:border-box}.md-editor-html{font-size:16px;word-break:break-all}.md-editor-footer{height:24px;flex-shrink:0;font-size:12px;color:var(--md-color);border-top:1px solid var(--md-border-color);display:flex;justify-content:space-between}.md-editor-footer-item{display:inline-flex;align-items:center;height:100%;padding:0 10px}.md-editor-footer-item+.md-editor-footer-item{padding-left:0}.md-editor-footer-label{padding-right:5px;line-height:1}.md-editor-clip{position:relative;display:flex;height:calc(100% - 52px)}.md-editor-clip-main,.md-editor-clip-preview{width:50%;height:100%;border:1px solid var(--md-border-color)}.md-editor-clip-main{margin-right:1em}.md-editor-clip-main .md-editor-clip-cropper{position:relative;width:100%;height:100%}.md-editor-clip-main .md-editor-clip-cropper .md-editor-clip-delete{position:absolute;top:0;right:0;font-size:0;background-color:var(--md-bk-color-outstand);border-bottom-left-radius:4px;color:var(--md-color);cursor:pointer}.md-editor-clip-main .md-editor-clip-upload{display:flex;align-items:center;justify-content:center;width:100%;height:100%;cursor:pointer}.md-editor-clip-main .md-editor-clip-upload .md-editor-icon,.md-editor-clip-main .md-editor-clip-upload .md-editor-iconfont{width:auto;height:40px;font-size:40px}.md-editor-clip-preview-target{width:100%;height:100%;overflow:hidden}.md-editor-form-item{margin-bottom:20px;text-align:center}.md-editor-form-item:last-of-type{margin-bottom:0}.md-editor-label{font-size:14px;color:var(--md-color);width:80px;text-align:center;display:inline-block}.md-editor-input{border-radius:4px;padding:4px 11px;color:var(--md-color);font-size:14px;line-height:1.5715;background-color:var(--md-bk-color);background-image:none;border:1px solid var(--md-border-color);transition:all .2s}.md-editor-input:focus,.md-editor-input:hover{border-color:var(--md-border-hover-color);outline:0}.md-editor-input:focus{border-color:var(--md-border-active-color)}.md-editor-btn{font-weight:400;text-align:center;vertical-align:middle;cursor:pointer;border:1px solid var(--md-border-color);white-space:nowrap;-webkit-user-select:none;user-select:none;height:32px;padding:0 15px;font-size:14px;border-radius:4px;transition:all .2s linear;color:var(--md-color);background-color:var(--md-bk-color);border-color:var(--md-border-color);margin-left:10px}.md-editor-btn:first-of-type{margin-left:0}.md-editor-btn:hover{color:var(--md-hover-color);background-color:var(--md-bk-color);border-color:var(--md-border-hover-color)}.md-editor-btn-row{width:100%}@media(max-width:688px){.md-editor-modal-clip .md-editor-modal{max-width:calc(100% - 20px);max-height:calc(100% - 20px);margin:10px;left:0!important}.md-editor-modal-clip .md-editor-clip{flex-direction:column}.md-editor-modal-clip .md-editor-clip-main,.md-editor-modal-clip .md-editor-clip-preview{width:100%;height:0;flex:1}.md-editor-modal-clip .md-editor-clip-main{margin-bottom:1em}}.md-editor-menu{margin:0;padding:0;border-radius:3px;border:1px solid var(--md-border-color);background-color:inherit}.md-editor-menu-item{list-style:none;font-size:12px;color:var(--md-color);padding:4px 10px;cursor:pointer;line-height:16px}.md-editor-menu-item:first-of-type{padding-top:8px}.md-editor-menu-item:last-of-type{padding-bottom:8px}.md-editor-menu-item:hover{background-color:var(--md-bk-hover-color)}.md-editor-table-shape{padding:4px;border-radius:3px;border:1px solid var(--md-border-color);display:flex;flex-direction:column}.md-editor-table-shape-row{display:flex}.md-editor-table-shape-col{padding:2px;cursor:pointer}.md-editor-table-shape-col-default{width:16px;height:16px;background-color:#e0e0e0;border-radius:3px;transition:all .2s}.md-editor-table-shape-col-include{background-color:#aaa}.md-editor-toolbar-wrapper{overflow-x:auto;overflow-y:hidden;scrollbar-width:none;flex-shrink:0;padding:4px;border-bottom:1px solid var(--md-border-color)}.md-editor-toolbar-wrapper::-webkit-scrollbar{height:0!important}.md-editor-toolbar-wrapper .md-editor-toolbar{display:flex;justify-content:space-between;align-items:center;box-sizing:content-box}.md-editor-toolbar-wrapper .md-editor-toolbar-item{display:flex;flex-direction:column;align-items:center;margin:0 2px;padding:0 2px;transition:all .3s;border-radius:3px;cursor:pointer;list-style:none;-webkit-user-select:none;user-select:none;text-align:center}.md-editor-toolbar-wrapper .md-editor-toolbar-item-name{font-size:12px;word-break:keep-all;white-space:nowrap}.md-editor-toolbar-wrapper .md-editor-toolbar-item:hover,.md-editor-toolbar-wrapper .md-editor-toolbar-active{background-color:var(--md-bk-color-outstand)}.md-editor-toolbar-wrapper .md-editor-toolbar-left,.md-editor-toolbar-wrapper .md-editor-toolbar-right{padding:1px 0;display:flex;align-items:center}.md-editor-toolbar-wrapper .md-editor-stn .md-editor-toolbar-item{padding:0 6px}.md-editor-dark .md-editor-table-shape-col-default{background-color:#222}.md-editor-dark .md-editor-table-shape-col-include{background-color:#555}.md-editor .cm-editor{font-size:14px;height:100%}.md-editor .cm-editor.cm-focused{outline:none}.md-editor .cm-editor .cm-tooltip.cm-tooltip-autocomplete{border-radius:3px}.md-editor .cm-editor .cm-tooltip.cm-tooltip-autocomplete>ul{border-radius:3px;min-width:fit-content;max-width:fit-content}.md-editor .cm-editor .cm-tooltip.cm-tooltip-autocomplete>ul li{background-color:var(--md-bk-color);color:var(--md-color);padding:4px 10px;line-height:16px}.md-editor .cm-editor .cm-tooltip.cm-tooltip-autocomplete>ul li .cm-completionIcon{width:auto}.md-editor .cm-editor .cm-tooltip.cm-tooltip-autocomplete>ul li[aria-selected]{background-color:var(--md-bk-hover-color)}.md-editor .cm-editor .cm-tooltip.cm-tooltip-autocomplete .cm-completionInfo{margin-top:-2px;margin-left:3px;padding:4px 9px;border-radius:3px;overflow:hidden;background-color:var(--md-bk-hover-color);color:var(--md-color)}.md-editor-input-wrapper:has(+*) .cm-scroller{overflow-y:scroll}.md-editor .cm-scroller .cm-content[contenteditable=true]{margin:10px;min-height:calc(100% - 20px)}.md-editor .cm-scroller .cm-gutters+.cm-content[contenteditable=true]{margin:0;min-height:100%}.md-editor .cm-scroller .cm-line{line-height:inherit}.md-editor .ͼ1 .cm-scroller{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace;line-height:20px}.md-editor .cm-search .cm-textfield{border-radius:4px;padding:4px 11px;color:var(--md-color);font-size:10px;background-image:none;border:1px solid var(--md-border-color);transition:all .2s}.md-editor .cm-search .cm-textfield:focus,.md-editor .cm-search .cm-textfield:hover{border-color:var(--md-border-hover-color);outline:0}.md-editor .cm-search .cm-textfield:focus{border-color:var(--md-border-active-color)}.md-editor .cm-search .cm-button{font-weight:400;text-align:center;vertical-align:middle;cursor:pointer;border:1px solid var(--md-border-color);white-space:nowrap;-webkit-user-select:none;user-select:none;height:20px;padding:0 15px;font-size:10px;border-radius:4px;transition:all .2s linear;color:var(--md-color);background-color:inherit;background-image:none;border-color:var(--md-border-color)}.md-editor .cm-search .cm-button:first-of-type{margin-left:0}.md-editor .cm-search .cm-button:hover{color:var(--md-hover-color);background-color:inherit;border-color:var(--md-border-hover-color)}.md-editor .cm-search input[type=checkbox]{vertical-align:sub}.md-editor .cm-search input[type=checkbox]:after{display:block;content:"";font-weight:700;cursor:pointer;width:12px;height:12px;border:1px solid var(--md-border-color);background-color:var(--md-bk-color-outstand);border-radius:2px;line-height:1;text-align:center}.md-editor .cm-search input[type=checkbox]:checked:after{content:"✓";color:var(--md-color)}.md-editor .cm-search button[name=close]{color:inherit;cursor:pointer;right:6px}.md-editor-catalog-editor{--md-color: #3f4a54;--md-hover-color: #000;--md-bk-color: #fff;--md-bk-color-outstand: #f2f2f2;--md-bk-hover-color: #f5f7fa;--md-border-color: #e6e6e6;--md-border-hover-color: #b9b9b9;--md-border-active-color: #999;--md-modal-mask: #00000073;--md-modal-shadow: 0px 6px 24px 2px #00000019;--md-scrollbar-bg-color: #e2e2e2;--md-scrollbar-thumb-color: #0000004d;--md-scrollbar-thumb-hover-color: #00000059;--md-scrollbar-thumb-active-color: #00000061;overflow:auto;height:100%;background-color:var(--md-bk-color);border-left:1px solid var(--md-border-color);width:200px;box-sizing:border-box;margin:0;padding:5px 10px;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum";z-index:10002}.md-editor-catalog-fixed{position:absolute;top:0;right:0}.md-editor-catalog-flat{position:initial;flex-shrink:0}.md-editor-catalog-indicator{height:18px;width:4px;background-color:#73d13d;position:absolute;border-radius:4px;transition:top .3s}.md-editor-catalog>.md-editor-catalog-link{padding:5px 8px}.md-editor-catalog-link{padding:5px 0 5px 1em;display:flex;flex-direction:column}.md-editor-catalog-link span{display:inline-block;width:100%;position:relative;overflow:hidden;color:var(--md-color);white-space:nowrap;text-overflow:ellipsis;transition:color .3s;cursor:pointer;line-height:18px}.md-editor-catalog-link span:hover{color:#73d13d}.md-editor-catalog-wrapper>.md-editor-catalog-link{padding-top:5px;padding-bottom:5px}.md-editor-catalog-wrapper>.md-editor-catalog-link:first-of-type{padding-top:10px}.md-editor-catalog-wrapper>.md-editor-catalog-link:last-of-type{padding-bottom:0}.md-editor-catalog-active>span{color:#73d13d}.md-editor-catalog-dark{--md-color: #999;--md-hover-color: #bbb;--md-bk-color: #000;--md-bk-color-outstand: #333;--md-bk-hover-color: #1b1a1a;--md-border-color: #2d2d2d;--md-border-hover-color: #636262;--md-border-active-color: #777;--md-modal-mask: #00000073;--md-modal-shadow: 0px 6px 24px 2px #00000066;--md-scrollbar-bg-color: #0f0f0f;--md-scrollbar-thumb-color: #2d2d2d;--md-scrollbar-thumb-hover-color: #3a3a3a;--md-scrollbar-thumb-active-color: #3a3a3a}.md-editor{--md-color: #3f4a54;--md-hover-color: #000;--md-bk-color: #fff;--md-bk-color-outstand: #f2f2f2;--md-bk-hover-color: #f5f7fa;--md-border-color: #e6e6e6;--md-border-hover-color: #b9b9b9;--md-border-active-color: #999;--md-modal-mask: #00000073;--md-modal-shadow: 0px 6px 24px 2px #00000019;--md-scrollbar-bg-color: #e2e2e2;--md-scrollbar-thumb-color: #0000004d;--md-scrollbar-thumb-hover-color: #00000059;--md-scrollbar-thumb-active-color: #00000061;color:var(--md-color);font-family:-apple-system,BlinkMacSystemFont,Segoe UI Variable,Segoe UI,system-ui,ui-sans-serif,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";width:100%;height:500px;position:relative;box-sizing:border-box;border:1px solid var(--md-border-color);display:flex;flex-direction:column;overflow:hidden;background-color:var(--md-bk-color)}.md-editor ::-webkit-scrollbar{width:6px;height:6px}.md-editor ::-webkit-scrollbar-corner,.md-editor ::-webkit-scrollbar-track{background-color:var(--md-scrollbar-bg-color)}.md-editor ::-webkit-scrollbar-thumb{border-radius:2px;background-color:var(--md-scrollbar-thumb-color)}.md-editor ::-webkit-scrollbar-button:vertical{display:none}.md-editor ::-webkit-scrollbar-thumb:vertical:hover{background-color:var(--md-scrollbar-thumb-hover-color)}.md-editor ::-webkit-scrollbar-thumb:vertical:active{background-color:var(--md-scrollbar-thumb-active-color)}.md-editor .md-editor-fullscreen{position:fixed!important;top:0;right:0;bottom:0;left:0;width:auto!important;height:auto!important;z-index:10000}svg.md-editor-icon{width:16px;height:16px;padding:4px;fill:none;overflow:hidden;display:block;box-sizing:content-box}.md-editor .lucide-list-icon,.md-editor .lucide-list-ordered-icon,.md-editor .lucide-list-todo-icon{width:18px;height:18px;padding:3px}.md-editor-preview-wrapper{position:relative;flex:1;box-sizing:border-box;overflow:auto}.md-editor-preview{font-size:16px;word-break:break-all;display:flow-root;padding:10px 20px}.md-editor-modal-container{--md-color: #3f4a54;--md-hover-color: #000;--md-bk-color: #fff;--md-bk-color-outstand: #f2f2f2;--md-bk-hover-color: #f5f7fa;--md-border-color: #e6e6e6;--md-border-hover-color: #b9b9b9;--md-border-active-color: #999;--md-modal-mask: #00000073;--md-modal-shadow: 0px 6px 24px 2px #00000019;--md-scrollbar-bg-color: #e2e2e2;--md-scrollbar-thumb-color: #0000004d;--md-scrollbar-thumb-hover-color: #00000059;--md-scrollbar-thumb-active-color: #00000061;color:var(--md-color);font-family:-apple-system,BlinkMacSystemFont,Segoe UI Variable,Segoe UI,system-ui,ui-sans-serif,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"}.md-editor-modal-container ::-webkit-scrollbar{width:6px;height:6px}.md-editor-modal-container ::-webkit-scrollbar-corner,.md-editor-modal-container ::-webkit-scrollbar-track{background-color:var(--md-scrollbar-bg-color)}.md-editor-modal-container ::-webkit-scrollbar-thumb{border-radius:2px;background-color:var(--md-scrollbar-thumb-color)}.md-editor-modal-container ::-webkit-scrollbar-button:vertical{display:none}.md-editor-modal-container ::-webkit-scrollbar-thumb:vertical:hover{background-color:var(--md-scrollbar-thumb-hover-color)}.md-editor-modal-container ::-webkit-scrollbar-thumb:vertical:active{background-color:var(--md-scrollbar-thumb-active-color)}.md-editor-modal-container .lucide-xicon{width:20px;height:20px;padding:2px}.md-editor-previewOnly{border:none;height:auto;overflow:visible}.md-editor-previewOnly .md-editor-content{height:100%}.md-editor-previewOnly .md-editor-preview{padding:0}.md-editor-previewOnly .md-editor-preview-wrapper{overflow:visible}.md-editor-dark,.md-editor-modal-container[data-theme=dark]{--md-color: #999;--md-hover-color: #bbb;--md-bk-color: #000;--md-bk-color-outstand: #333;--md-bk-hover-color: #1b1a1a;--md-border-color: #2d2d2d;--md-border-hover-color: #636262;--md-border-active-color: #777;--md-modal-mask: #00000073;--md-modal-shadow: 0px 6px 24px 2px #00000066;--md-scrollbar-bg-color: #0f0f0f;--md-scrollbar-thumb-color: #2d2d2d;--md-scrollbar-thumb-hover-color: #3a3a3a;--md-scrollbar-thumb-active-color: #3a3a3a}.medium-zoom-overlay,.medium-zoom-image--opened{z-index:100001}.md-editor-fullscreen{position:fixed!important;top:0;right:0;bottom:0;left:0;width:auto!important;height:auto!important;z-index:10000}.md-editor-disabled{cursor:not-allowed!important} diff --git a/frontend/dist/assets/stylus-B533Al4x.js b/frontend/dist/assets/stylus-B533Al4x.js new file mode 100644 index 0000000..3f4ccb7 --- /dev/null +++ b/frontend/dist/assets/stylus-B533Al4x.js @@ -0,0 +1 @@ +var B=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","bgsound","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","nobr","noframes","noscript","object","ol","optgroup","option","output","p","param","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","track","u","ul","var","video"],$=["domain","regexp","url-prefix","url"],R=["all","aural","braille","handheld","print","projection","screen","tty","tv","embossed"],I=["width","min-width","max-width","height","min-height","max-height","device-width","min-device-width","max-device-width","device-height","min-device-height","max-device-height","aspect-ratio","min-aspect-ratio","max-aspect-ratio","device-aspect-ratio","min-device-aspect-ratio","max-device-aspect-ratio","color","min-color","max-color","color-index","min-color-index","max-color-index","monochrome","min-monochrome","max-monochrome","resolution","min-resolution","max-resolution","scan","grid","dynamic-range","video-dynamic-range"],O=["align-content","align-items","align-self","alignment-adjust","alignment-baseline","anchor-point","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","appearance","azimuth","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","baseline-shift","binding","bleed","bookmark-label","bookmark-level","bookmark-state","bookmark-target","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","color","color-profile","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","crop","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","drop-initial-after-adjust","drop-initial-after-align","drop-initial-before-adjust","drop-initial-before-align","drop-initial-size","drop-initial-value","elevation","empty-cells","fit","fit-position","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","float-offset","flow-from","flow-into","font","font-feature-settings","font-family","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-synthesis","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-weight","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-position","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","inline-box-align","justify-content","left","letter-spacing","line-break","line-height","line-stacking","line-stacking-ruby","line-stacking-shift","line-stacking-strategy","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marker-offset","marks","marquee-direction","marquee-loop","marquee-play-count","marquee-speed","marquee-style","max-height","max-width","min-height","min-width","move-to","nav-down","nav-index","nav-left","nav-right","nav-up","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-style","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","page-policy","pause","pause-after","pause-before","perspective","perspective-origin","pitch","pitch-range","play-during","position","presentation-level","punctuation-trim","quotes","region-break-after","region-break-before","region-break-inside","region-fragment","rendering-intent","resize","rest","rest-after","rest-before","richness","right","rotation","rotation-point","ruby-align","ruby-overhang","ruby-position","ruby-span","shape-image-threshold","shape-inside","shape-margin","shape-outside","size","speak","speak-as","speak-header","speak-numeral","speak-punctuation","speech-rate","stress","string-set","tab-size","table-layout","target","target-name","target-new","target-position","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-height","text-indent","text-justify","text-outline","text-overflow","text-shadow","text-size-adjust","text-space-collapse","text-transform","text-underline-position","text-wrap","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","z-index","clip-path","clip-rule","mask","enable-background","filter","flood-color","flood-opacity","lighting-color","stop-color","stop-opacity","pointer-events","color-interpolation","color-interpolation-filters","color-rendering","fill","fill-opacity","fill-rule","image-rendering","marker","marker-end","marker-mid","marker-start","shape-rendering","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-rendering","baseline-shift","dominant-baseline","glyph-orientation-horizontal","glyph-orientation-vertical","text-anchor","writing-mode","font-smoothing","osx-font-smoothing"],W=["scrollbar-arrow-color","scrollbar-base-color","scrollbar-dark-shadow-color","scrollbar-face-color","scrollbar-highlight-color","scrollbar-shadow-color","scrollbar-3d-light-color","scrollbar-track-color","shape-inside","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","zoom"],C=["font-family","src","unicode-range","font-variant","font-feature-settings","font-stretch","font-weight","font-style"],N=["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"],S=["above","absolute","activeborder","additive","activecaption","afar","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","amharic","amharic-abegede","antialiased","appworkspace","arabic-indic","armenian","asterisks","attr","auto","avoid","avoid-column","avoid-page","avoid-region","background","backwards","baseline","below","bidi-override","binary","bengali","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","buttonface","buttonhighlight","buttonshadow","buttontext","calc","cambodian","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","cjk-earthly-branch","cjk-heavenly-stem","cjk-ideographic","clear","clip","close-quote","col-resize","collapse","column","compact","condensed","conic-gradient","contain","content","contents","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","dashed","decimal","decimal-leading-zero","default","default-button","destination-atop","destination-in","destination-out","destination-over","devanagari","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic","ethiopic-abegede","ethiopic-abegede-am-et","ethiopic-abegede-gez","ethiopic-abegede-ti-er","ethiopic-abegede-ti-et","ethiopic-halehame-aa-er","ethiopic-halehame-aa-et","ethiopic-halehame-am-et","ethiopic-halehame-gez","ethiopic-halehame-om-et","ethiopic-halehame-sid-et","ethiopic-halehame-so-et","ethiopic-halehame-ti-er","ethiopic-halehame-ti-et","ethiopic-halehame-tig","ethiopic-numeric","ew-resize","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fixed","flat","flex","footnotes","forwards","from","geometricPrecision","georgian","graytext","groove","gujarati","gurmukhi","hand","hangul","hangul-consonant","hebrew","help","hidden","hide","high","higher","highlight","highlighttext","hiragana","hiragana-iroha","horizontal","hsl","hsla","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-table","inset","inside","intrinsic","invert","italic","japanese-formal","japanese-informal","justify","kannada","katakana","katakana-iroha","keep-all","khmer","korean-hangul-formal","korean-hanja-formal","korean-hanja-informal","landscape","lao","large","larger","left","level","lighter","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-alpha","lower-armenian","lower-greek","lower-hexadecimal","lower-latin","lower-norwegian","lower-roman","lowercase","ltr","malayalam","match","matrix","matrix3d","media-play-button","media-slider","media-sliderthumb","media-volume-slider","media-volume-sliderthumb","medium","menu","menulist","menulist-button","menutext","message-box","middle","min-intrinsic","mix","mongolian","monospace","move","multiple","myanmar","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","octal","open-quote","optimizeLegibility","optimizeSpeed","oriya","oromo","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","persian","perspective","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeating-conic-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row-resize","rtl","run-in","running","s-resize","sans-serif","scale","scale3d","scaleX","scaleY","scaleZ","scroll","scrollbar","scroll-position","se-resize","searchfield","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","semi-condensed","semi-expanded","separate","serif","show","sidama","simp-chinese-formal","simp-chinese-informal","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","solid","somali","source-atop","source-in","source-out","source-over","space","spell-out","square","square-button","standard","start","static","status-bar","stretch","stroke","sub","subpixel-antialiased","super","sw-resize","symbolic","symbols","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","tamil","telugu","text","text-bottom","text-top","textarea","textfield","thai","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","tibetan","tigre","tigrinya-er","tigrinya-er-abegede","tigrinya-et","tigrinya-et-abegede","to","top","trad-chinese-formal","trad-chinese-informal","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","up","upper-alpha","upper-armenian","upper-greek","upper-hexadecimal","upper-latin","upper-norwegian","upper-roman","uppercase","urdu","url","var","vertical","vertical-text","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","x-large","x-small","xor","xx-large","xx-small","bicubic","optimizespeed","grayscale","row","row-reverse","wrap","wrap-reverse","column-reverse","flex-start","flex-end","space-between","space-around","unset"],T=["in","and","or","not","is not","is a","is","isnt","defined","if unless"],E=["for","if","else","unless","from","to"],U=["null","true","false","href","title","type","not-allowed","readonly","disabled"],A=["@font-face","@keyframes","@media","@viewport","@page","@host","@supports","@block","@css"],G=B.concat($,R,I,O,W,N,S,C,T,E,U,A);function F(i){return i=i.sort(function(e,r){return r>e}),new RegExp("^(("+i.join(")|(")+"))\\b")}function p(i){for(var e={},r=0;r]=?|\?:|\~)/,de=F(T),se=p(E),X=new RegExp(/^\-(moz|ms|o|webkit)-/i),ue=p(U),q="",c={},g,m,P,t;function fe(i,e){if(q=i.string.match(/(^[\w-]+\s*=\s*$)|(^\s*[\w-]+\s*=\s*[\w-])|(^\s*(\.|#|@|\$|\&|\[|\d|\+|::?|\{|\>|~|\/)?\s*[\w-]*([a-z0-9-]|\*|\/\*)(\(|,)?)/),e.context.line.firstWord=q?q[0].replace(/^\s*/,""):"",e.context.line.indent=i.indentation(),g=i.peek(),i.match("//"))return i.skipToEnd(),["comment","comment"];if(i.match("/*"))return e.tokenize=K,K(i,e);if(g=='"'||g=="'")return i.next(),e.tokenize=Y(g),e.tokenize(i,e);if(g=="@")return i.next(),i.eatWhile(/[\w\\-]/),["def",i.current()];if(g=="#"){if(i.next(),i.match(/^[0-9a-f]{3}([0-9a-f]([0-9a-f]{2}){0,2})?\b(?!-)/i))return["atom","atom"];if(i.match(/^[a-z][\w-]*/i))return["builtin","hash"]}return i.match(X)?["meta","vendor-prefixes"]:i.match(/^-?[0-9]?\.?[0-9]/)?(i.eatWhile(/[a-z%]/i),["number","unit"]):g=="!"?(i.next(),[i.match(/^(important|optional)/i)?"keyword":"operator","important"]):g=="."&&i.match(/^\.[a-z][\w-]*/i)?["qualifier","qualifier"]:i.match(oe)?(i.peek()=="("&&(e.tokenize=pe),["property","word"]):i.match(/^[a-z][\w-]*\(/i)?(i.backUp(1),["keyword","mixin"]):i.match(/^(\+|-)[a-z][\w-]*\(/i)?(i.backUp(1),["keyword","block-mixin"]):i.string.match(/^\s*&/)&&i.match(/^[-_]+[a-z][\w-]*/)?["qualifier","qualifier"]:i.match(/^(\/|&)(-|_|:|\.|#|[a-z])/)?(i.backUp(1),["variableName.special","reference"]):i.match(/^&{1}\s*$/)?["variableName.special","reference"]:i.match(de)?["operator","operator"]:i.match(/^\$?[-_]*[a-z0-9]+[\w-]*/i)?i.match(/^(\.|\[)[\w-\'\"\]]+/i,!1)&&!b(i.current())?(i.match("."),["variable","variable-name"]):["variable","word"]:i.match(ce)?["operator",i.current()]:/[:;,{}\[\]\(\)]/.test(g)?(i.next(),[null,g]):(i.next(),[null,null])}function K(i,e){for(var r=!1,o;(o=i.next())!=null;){if(r&&o=="/"){e.tokenize=null;break}r=o=="*"}return["comment","comment"]}function Y(i){return function(e,r){for(var o=!1,l;(l=e.next())!=null;){if(l==i&&!o){i==")"&&e.backUp(1);break}o=!o&&l=="\\"}return(l==i||!o&&i!=")")&&(r.tokenize=null),["string","string"]}}function pe(i,e){return i.next(),i.match(/\s*[\"\')]/,!1)?e.tokenize=null:e.tokenize=Y(")"),[null,"("]}function Z(i,e,r,o){this.type=i,this.indent=e,this.prev=r,this.line=o||{firstWord:"",indent:0}}function n(i,e,r,o){return o=o>=0?o:e.indentUnit,i.context=new Z(r,e.indentation()+o,i.context),r}function v(i,e,r){var o=i.context.indent-e.indentUnit;return r=r||!1,i.context=i.context.prev,r&&(i.context.indent=o),i.context.type}function he(i,e,r){return c[r.context.type](i,e,r)}function _(i,e,r,o){for(var l=1;l>0;l--)r.context=r.context.prev;return he(i,e,r)}function b(i){return i.toLowerCase()in J}function x(i){return i=i.toLowerCase(),i in Q||i in le}function w(i){return i.toLowerCase()in se}function L(i){return i.toLowerCase().match(X)}function y(i){var e=i.toLowerCase(),r="variable";return b(i)?r="tag":w(i)?r="block-keyword":x(i)?r="property":e in ie||e in ue?r="atom":e=="return"||e in re?r="keyword":i.match(/^[A-Z]/)&&(r="string"),r}function V(i,e){return a(e)&&(i=="{"||i=="]"||i=="hash"||i=="qualifier")||i=="block-mixin"}function D(i,e){return i=="{"&&e.match(/^\s*\$?[\w-]+/i,!1)}function M(i,e){return i==":"&&e.match(/^[a-z-]+/,!1)}function k(i){return i.sol()||i.string.match(new RegExp("^\\s*"+H(i.current())))}function a(i){return i.eol()||i.match(/^\s*$/,!1)}function u(i){var e=/^\s*[-_]*[a-z0-9]+[\w-]*/i,r=typeof i=="string"?i.match(e):i.string.match(e);return r?r[0].replace(/^\s*/,""):""}c.block=function(i,e,r){if(i=="comment"&&k(e)||i==","&&a(e)||i=="mixin")return n(r,e,"block",0);if(D(i,e))return n(r,e,"interpolation");if(a(e)&&i=="]"&&!/^\s*(\.|#|:|\[|\*|&)/.test(e.string)&&!b(u(e)))return n(r,e,"block",0);if(V(i,e))return n(r,e,"block");if(i=="}"&&a(e))return n(r,e,"block",0);if(i=="variable-name")return e.string.match(/^\s?\$[\w-\.\[\]\'\"]+$/)||w(u(e))?n(r,e,"variableName"):n(r,e,"variableName",0);if(i=="=")return!a(e)&&!w(u(e))?n(r,e,"block",0):n(r,e,"block");if(i=="*"&&(a(e)||e.match(/\s*(,|\.|#|\[|:|{)/,!1)))return t="tag",n(r,e,"block");if(M(i,e))return n(r,e,"pseudo");if(/@(font-face|media|supports|(-moz-)?document)/.test(i))return n(r,e,a(e)?"block":"atBlock");if(/@(-(moz|ms|o|webkit)-)?keyframes$/.test(i))return n(r,e,"keyframes");if(/@extends?/.test(i))return n(r,e,"extend",0);if(i&&i.charAt(0)=="@")return e.indentation()>0&&x(e.current().slice(1))?(t="variable","block"):/(@import|@require|@charset)/.test(i)?n(r,e,"block",0):n(r,e,"block");if(i=="reference"&&a(e))return n(r,e,"block");if(i=="(")return n(r,e,"parens");if(i=="vendor-prefixes")return n(r,e,"vendorPrefixes");if(i=="word"){var o=e.current();if(t=y(o),t=="property")return k(e)?n(r,e,"block",0):(t="atom","block");if(t=="tag"){if(/embed|menu|pre|progress|sub|table/.test(o)&&x(u(e))||e.string.match(new RegExp("\\[\\s*"+o+"|"+o+"\\s*\\]")))return t="atom","block";if(j.test(o)&&(k(e)&&e.string.match(/=/)||!k(e)&&!e.string.match(/^(\s*\.|#|\&|\[|\/|>|\*)/)&&!b(u(e))))return t="variable",w(u(e))?"block":n(r,e,"block",0);if(a(e))return n(r,e,"block")}if(t=="block-keyword")return t="keyword",e.current(/(if|unless)/)&&!k(e)?"block":n(r,e,"block");if(o=="return")return n(r,e,"block",0);if(t=="variable"&&e.string.match(/^\s?\$[\w-\.\[\]\'\"]+$/))return n(r,e,"block")}return r.context.type};c.parens=function(i,e,r){if(i=="(")return n(r,e,"parens");if(i==")")return r.context.prev.type=="parens"?v(r,e):e.string.match(/^[a-z][\w-]*\(/i)&&a(e)||w(u(e))||/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(u(e))||!e.string.match(/^-?[a-z][\w-\.\[\]\'\"]*\s*=/)&&b(u(e))?n(r,e,"block"):e.string.match(/^[\$-]?[a-z][\w-\.\[\]\'\"]*\s*=/)||e.string.match(/^\s*(\(|\)|[0-9])/)||e.string.match(/^\s+[a-z][\w-]*\(/i)||e.string.match(/^\s+[\$-]?[a-z]/i)?n(r,e,"block",0):a(e)?n(r,e,"block"):n(r,e,"block",0);if(i&&i.charAt(0)=="@"&&x(e.current().slice(1))&&(t="variable"),i=="word"){var o=e.current();t=y(o),t=="tag"&&j.test(o)&&(t="variable"),(t=="property"||o=="to")&&(t="atom")}return i=="variable-name"?n(r,e,"variableName"):M(i,e)?n(r,e,"pseudo"):r.context.type};c.vendorPrefixes=function(i,e,r){return i=="word"?(t="property",n(r,e,"block",0)):v(r,e)};c.pseudo=function(i,e,r){return x(u(e.string))?_(i,e,r):(e.match(/^[a-z-]+/),t="variableName.special",a(e)?n(r,e,"block"):v(r,e))};c.atBlock=function(i,e,r){if(i=="(")return n(r,e,"atBlock_parens");if(V(i,e))return n(r,e,"block");if(D(i,e))return n(r,e,"interpolation");if(i=="word"){var o=e.current().toLowerCase();if(/^(only|not|and|or)$/.test(o)?t="keyword":ne.hasOwnProperty(o)?t="tag":ae.hasOwnProperty(o)?t="attribute":te.hasOwnProperty(o)?t="property":ee.hasOwnProperty(o)?t="string.special":t=y(e.current()),t=="tag"&&a(e))return n(r,e,"block")}return i=="operator"&&/^(not|and|or)$/.test(e.current())&&(t="keyword"),r.context.type};c.atBlock_parens=function(i,e,r){if(i=="{"||i=="}")return r.context.type;if(i==")")return a(e)?n(r,e,"block"):n(r,e,"atBlock");if(i=="word"){var o=e.current().toLowerCase();return t=y(o),/^(max|min)/.test(o)&&(t="property"),t=="tag"&&(j.test(o)?t="variable":t="atom"),r.context.type}return c.atBlock(i,e,r)};c.keyframes=function(i,e,r){return e.indentation()=="0"&&(i=="}"&&k(e)||i=="]"||i=="hash"||i=="qualifier"||b(e.current()))?_(i,e,r):i=="{"?n(r,e,"keyframes"):i=="}"?k(e)?v(r,e,!0):n(r,e,"keyframes"):i=="unit"&&/^[0-9]+\%$/.test(e.current())?n(r,e,"keyframes"):i=="word"&&(t=y(e.current()),t=="block-keyword")?(t="keyword",n(r,e,"keyframes")):/@(font-face|media|supports|(-moz-)?document)/.test(i)?n(r,e,a(e)?"block":"atBlock"):i=="mixin"?n(r,e,"block",0):r.context.type};c.interpolation=function(i,e,r){return i=="{"&&v(r,e)&&n(r,e,"block"),i=="}"?e.string.match(/^\s*(\.|#|:|\[|\*|&|>|~|\+|\/)/i)||e.string.match(/^\s*[a-z]/i)&&b(u(e))?n(r,e,"block"):!e.string.match(/^(\{|\s*\&)/)||e.match(/\s*[\w-]/,!1)?n(r,e,"block",0):n(r,e,"block"):i=="variable-name"?n(r,e,"variableName",0):(i=="word"&&(t=y(e.current()),t=="tag"&&(t="atom")),r.context.type)};c.extend=function(i,e,r){return i=="["||i=="="?"extend":i=="]"?v(r,e):i=="word"?(t=y(e.current()),"extend"):v(r,e)};c.variableName=function(i,e,r){return i=="string"||i=="["||i=="]"||e.current().match(/^(\.|\$)/)?(e.current().match(/^\.[\w-]+/i)&&(t="variable"),"variableName"):_(i,e,r)};const ge={name:"stylus",startState:function(){return{tokenize:null,state:"block",context:new Z("block",0,null)}},token:function(i,e){return!e.tokenize&&i.eatSpace()?null:(m=(e.tokenize||fe)(i,e),m&&typeof m=="object"&&(P=m[1],m=m[0]),t=m,e.state=c[e.state](P,i,e),t)},indent:function(i,e,r){var o=i.context,l=e&&e.charAt(0),f=o.indent,z=u(e),h=o.line.indent,d=i.context.prev?i.context.prev.line.firstWord:"",s=i.context.prev?i.context.prev.line.indent:h;return o.prev&&(l=="}"&&(o.type=="block"||o.type=="atBlock"||o.type=="keyframes")||l==")"&&(o.type=="parens"||o.type=="atBlock_parens")||l=="{"&&o.type=="at")?f=o.indent-r.unit:/(\})/.test(l)||(/@|\$|\d/.test(l)||/^\{/.test(e)||/^\s*\/(\/|\*)/.test(e)||/^\s*\/\*/.test(d)||/^\s*[\w-\.\[\]\'\"]+\s*(\?|:|\+)?=/i.test(e)||/^(\+|-)?[a-z][\w-]*\(/i.test(e)||/^return/.test(e)||w(z)?f=h:/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(l)||b(z)?/\,\s*$/.test(d)?f=s:/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(d)||b(d)?f=h<=s?s:s+r.unit:f=h:!/,\s*$/.test(e)&&(L(z)||x(z))&&(w(d)?f=h<=s?s:s+r.unit:/^\{/.test(d)?f=h<=s?h:s+r.unit:L(d)||x(d)?f=h>=s?s:h:/^(\.|#|:|\[|\*|&|@|\+|\-|>|~|\/)/.test(d)||/=\s*$/.test(d)||b(d)||/^\$[\w-\.\[\]\'\"]/.test(d)?f=s+r.unit:f=h)),f},languageData:{indentOnInput:/^\s*\}$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}},autocomplete:G}};export{ge as stylus}; diff --git a/frontend/dist/assets/swift-BzpIVaGY.js b/frontend/dist/assets/swift-BzpIVaGY.js new file mode 100644 index 0000000..743846e --- /dev/null +++ b/frontend/dist/assets/swift-BzpIVaGY.js @@ -0,0 +1 @@ +function c(n){for(var e={},t=0;t~^?!",_=":;,.(){}[]",s=/^\-?0b[01][01_]*/,k=/^\-?0o[0-7][0-7_]*/,x=/^\-?0x[\dA-Fa-f][\dA-Fa-f_]*(?:(?:\.[\dA-Fa-f][\dA-Fa-f_]*)?[Pp]\-?\d[\d_]*)?/,y=/^\-?\d[\d_]*(?:\.\d[\d_]*)?(?:[Ee]\-?\d[\d_]*)?/,g=/^\$\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\1/,w=/^\.(?:\$\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\1)/,z=/^\#[A-Za-z]+/,b=/^@(?:\$\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\1)/;function f(n,e,t){if(n.sol()&&(e.indented=n.indentation()),n.eatSpace())return null;var i=n.peek();if(i=="/"){if(n.match("//"))return n.skipToEnd(),"comment";if(n.match("/*"))return e.tokenize.push(a),a(n,e)}if(n.match(z))return"builtin";if(n.match(b))return"attribute";if(n.match(s)||n.match(k)||n.match(x)||n.match(y))return"number";if(n.match(w))return"property";if(h.indexOf(i)>-1)return n.next(),"operator";if(_.indexOf(i)>-1)return n.next(),n.match(".."),"punctuation";var r;if(r=n.match(/("""|"|')/)){var o=I.bind(null,r[0]);return e.tokenize.push(o),o(n,e)}if(n.match(g)){var u=n.current();return v.hasOwnProperty(u)?"type":d.hasOwnProperty(u)?"atom":l.hasOwnProperty(u)?(p.hasOwnProperty(u)&&(e.prev="define"),"keyword"):t=="define"?"def":"variable"}return n.next(),null}function A(){var n=0;return function(e,t,i){var r=f(e,t,i);if(r=="punctuation"){if(e.current()=="(")++n;else if(e.current()==")"){if(n==0)return e.backUp(1),t.tokenize.pop(),t.tokenize[t.tokenize.length-1](e,t);--n}}return r}}function I(n,e,t){for(var i=n.length==1,r,o=!1;r=e.peek();)if(o){if(e.next(),r=="(")return t.tokenize.push(A()),"string";o=!1}else{if(e.match(n))return t.tokenize.pop(),"string";e.next(),o=r=="\\"}return i&&t.tokenize.pop(),"string"}function a(n,e){for(var t;t=n.next();)if(t==="/"&&n.eat("*"))e.tokenize.push(a);else if(t==="*"&&n.eat("/")){e.tokenize.pop();break}return"comment"}function O(n,e,t){this.prev=n,this.align=e,this.indented=t}function m(n,e){var t=e.match(/^\s*($|\/[\/\*]|[)}\]])/,!1)?null:e.column()+1;n.context=new O(n.context,t,n.indented)}function S(n){n.context&&(n.indented=n.context.indented,n.context=n.context.prev)}const C={name:"swift",startState:function(){return{prev:null,context:null,indented:0,tokenize:[]}},token:function(n,e){var t=e.prev;e.prev=null;var i=e.tokenize[e.tokenize.length-1]||f,r=i(n,e,t);if(!r||r=="comment"?e.prev=t:e.prev||(e.prev=r),r=="punctuation"){var o=/[\(\[\{]|([\]\)\}])/.exec(n.current());o&&(o[1]?S:m)(e,n)}return r},indent:function(n,e,t){var i=n.context;if(!i)return 0;var r=/^[\]\}\)]/.test(e);return i.align!=null?i.align-(r?1:0):i.indented+(r?0:t.unit)},languageData:{indentOnInput:/^\s*[\)\}\]]$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}},closeBrackets:{brackets:["(","[","{","'",'"',"`"]}}};export{C as swift}; diff --git a/frontend/dist/assets/tcl-DVfN8rqt.js b/frontend/dist/assets/tcl-DVfN8rqt.js new file mode 100644 index 0000000..61923b4 --- /dev/null +++ b/frontend/dist/assets/tcl-DVfN8rqt.js @@ -0,0 +1 @@ +function s(r){for(var n={},t=r.split(" "),e=0;e!?^\/\|]/;function i(r,n,t){return n.tokenize=t,t(r,n)}function o(r,n){var t=n.beforeParams;n.beforeParams=!1;var e=r.next();if((e=='"'||e=="'")&&n.inParams)return i(r,n,p(e));if(/[\[\]{}\(\),;\.]/.test(e))return e=="("&&t?n.inParams=!0:e==")"&&(n.inParams=!1),null;if(/\d/.test(e))return r.eatWhile(/[\w\.]/),"number";if(e=="#")return r.eat("*")?i(r,n,d):e=="#"&&r.match(/ *\[ *\[/)?i(r,n,k):(r.skipToEnd(),"comment");if(e=='"')return r.skipTo(/"/),"comment";if(e=="$")return r.eatWhile(/[$_a-z0-9A-Z\.{:]/),r.eatWhile(/}/),n.beforeParams=!0,"builtin";if(c.test(e))return r.eatWhile(c),"comment";r.eatWhile(/[\w\$_{}\xa1-\uffff]/);var a=r.current().toLowerCase();return f&&f.propertyIsEnumerable(a)?"keyword":u&&u.propertyIsEnumerable(a)?(n.beforeParams=!0,"keyword"):null}function p(r){return function(n,t){for(var e=!1,a,l=!1;(a=n.next())!=null;){if(a==r&&!e){l=!0;break}e=!e&&a=="\\"}return l&&(t.tokenize=o),"string"}}function d(r,n){for(var t=!1,e;e=r.next();){if(e=="#"&&t){n.tokenize=o;break}t=e=="*"}return"comment"}function k(r,n){for(var t=0,e;e=r.next();){if(e=="#"&&t==2){n.tokenize=o;break}e=="]"?t++:e!=" "&&(t=0)}return"meta"}const m={name:"tcl",startState:function(){return{tokenize:o,beforeParams:!1,inParams:!1}},token:function(r,n){return r.eatSpace()?null:n.tokenize(r,n)},languageData:{commentTokens:{line:"#"}}};export{m as tcl}; diff --git a/frontend/dist/assets/textile-CnDTJFAw.js b/frontend/dist/assets/textile-CnDTJFAw.js new file mode 100644 index 0000000..34a99f8 --- /dev/null +++ b/frontend/dist/assets/textile-CnDTJFAw.js @@ -0,0 +1 @@ +var f={addition:"inserted",attributes:"propertyName",bold:"strong",cite:"keyword",code:"monospace",definitionList:"list",deletion:"deleted",div:"punctuation",em:"emphasis",footnote:"variable",footCite:"qualifier",header:"heading",html:"comment",image:"atom",italic:"emphasis",link:"link",linkDefinition:"link",list1:"list",list2:"list.special",list3:"list",notextile:"string.special",pre:"operator",p:"content",quote:"bracket",span:"quote",specialChar:"character",strong:"strong",sub:"content.special",sup:"content.special",table:"variableName.special",tableHeading:"operator"};function h(i,e){e.mode=r.newLayout,e.tableHeading=!1,e.layoutType==="definitionList"&&e.spanningLayout&&i.match(l("definitionListEnd"),!1)&&(e.spanningLayout=!1)}function s(i,e,n){if(n==="_")return i.eat("_")?a(i,e,"italic",/__/,2):a(i,e,"em",/_/,1);if(n==="*")return i.eat("*")?a(i,e,"bold",/\*\*/,2):a(i,e,"strong",/\*/,1);if(n==="[")return i.match(/\d+\]/)&&(e.footCite=!0),u(e);if(n==="("){var o=i.match(/^(r|tm|c)\)/);if(o)return f.specialChar}if(n==="<"&&i.match(/(\w+)[^>]+>[^<]+<\/\1>/))return f.html;if(n==="?"&&i.eat("?"))return a(i,e,"cite",/\?\?/,2);if(n==="="&&i.eat("="))return a(i,e,"notextile",/==/,2);if(n==="-"&&!i.eat("-"))return a(i,e,"deletion",/-/,1);if(n==="+")return a(i,e,"addition",/\+/,1);if(n==="~")return a(i,e,"sub",/~/,1);if(n==="^")return a(i,e,"sup",/\^/,1);if(n==="%")return a(i,e,"span",/%/,1);if(n==="@")return a(i,e,"code",/@/,1);if(n==="!"){var c=a(i,e,"image",/(?:\([^\)]+\))?!/,1);return i.match(/^:\S+/),c}return u(e)}function a(i,e,n,o,c){var d=i.pos>c?i.string.charAt(i.pos-c-1):null,p=i.peek();if(e[n]){if((!p||/\W/.test(p))&&d&&/\S/.test(d)){var y=u(e);return e[n]=!1,y}}else(!d||/\W/.test(d))&&p&&/\S/.test(p)&&i.match(new RegExp("^.*\\S"+o.source+"(?:\\W|$)"),!1)&&(e[n]=!0,e.mode=r.attributes);return u(e)}function u(i){var e=b(i);if(e)return e;var n=[];return i.layoutType&&n.push(f[i.layoutType]),n=n.concat(g(i,"addition","bold","cite","code","deletion","em","footCite","image","italic","link","span","strong","sub","sup","table","tableHeading")),i.layoutType==="header"&&n.push(f.header+"-"+i.header),n.length?n.join(" "):null}function b(i){var e=i.layoutType;switch(e){case"notextile":case"code":case"pre":return f[e];default:return i.notextile?f.notextile+(e?" "+f[e]:""):null}}function g(i){for(var e=[],n=1;n]+)?>(?:[^<]+<\/\1>)?/,link:/[^"]+":\S/,linkDefinition:/\[[^\s\]]+\]\S+/,list:/(?:#+|\*+)/,notextile:"notextile",para:"p",pre:"pre",table:"table",tableCellAttributes:/[\/\\]\d+/,tableHeading:/\|_\./,tableText:/[^"_\*\[\(\?\+~\^%@|-]+/,text:/[^!"_=\*\[\(<\?\+~\^%@-]+/},attributes:{align:/(?:<>|<|>|=)/,selector:/\([^\(][^\)]+\)/,lang:/\[[^\[\]]+\]/,pad:/(?:\(+|\)+){1,2}/,css:/\{[^\}]+\}/},createRe:function(i){switch(i){case"drawTable":return t.makeRe("^",t.single.drawTable,"$");case"html":return t.makeRe("^",t.single.html,"(?:",t.single.html,")*","$");case"linkDefinition":return t.makeRe("^",t.single.linkDefinition,"$");case"listLayout":return t.makeRe("^",t.single.list,l("allAttributes"),"*\\s+");case"tableCellAttributes":return t.makeRe("^",t.choiceRe(t.single.tableCellAttributes,l("allAttributes")),"+\\.");case"type":return t.makeRe("^",l("allTypes"));case"typeLayout":return t.makeRe("^",l("allTypes"),l("allAttributes"),"*\\.\\.?","(\\s+|$)");case"attributes":return t.makeRe("^",l("allAttributes"),"+");case"allTypes":return t.choiceRe(t.single.div,t.single.foot,t.single.header,t.single.bc,t.single.bq,t.single.notextile,t.single.pre,t.single.table,t.single.para);case"allAttributes":return t.choiceRe(t.attributes.selector,t.attributes.css,t.attributes.lang,t.attributes.align,t.attributes.pad);default:return t.makeRe("^",t.single[i])}},makeRe:function(){for(var i="",e=0;e$/,v=/^$/,S=/^\{\{\{$/,y=/^\}\}\}$/,$=/.*?\}\}\}/;function o(e,t,r){return t.tokenize=r,r(e,t)}function i(e,t){var r=e.sol(),n=e.peek();if(t.block=!1,r&&/[<\/\*{}\-]/.test(n)){if(e.match(S))return t.block=!0,o(e,t,u);if(e.match(a))return"quote";if(e.match(h)||e.match(d)||e.match(p)||e.match(w)||e.match(b)||e.match(v))return"comment";if(e.match(k))return"contentSeparator"}if(e.next(),r&&/[\/\*!#;:>|]/.test(n)){if(n=="!")return e.skipToEnd(),"header";if(n=="*")return e.eatWhile("*"),"comment";if(n=="#")return e.eatWhile("#"),"comment";if(n==";")return e.eatWhile(";"),"comment";if(n==":")return e.eatWhile(":"),"comment";if(n==">")return e.eatWhile(">"),"quote";if(n=="|")return"header"}if(n=="{"&&e.match("{{"))return o(e,t,u);if(/[hf]/i.test(n)&&/[ti]/i.test(e.peek())&&e.match(/\b(ttps?|tp|ile):\/\/[\-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i))return"link";if(n=='"')return"string";if(n=="~"||/[\[\]]/.test(n)&&e.match(n))return"brace";if(n=="@")return e.eatWhile(f),"link";if(/\d/.test(n))return e.eatWhile(/\d/),"number";if(n=="/"){if(e.eat("%"))return o(e,t,z);if(e.eat("/"))return o(e,t,W)}if(n=="_"&&e.eat("_"))return o(e,t,x);if(n=="-"&&e.eat("-")){if(e.peek()!=" ")return o(e,t,g);if(e.peek()==" ")return"brace"}return n=="'"&&e.eat("'")?o(e,t,C):n=="<"&&e.eat("<")?o(e,t,T):(e.eatWhile(/[\w\$_]/),c.propertyIsEnumerable(e.current())?"keyword":null)}function z(e,t){for(var r=!1,n;n=e.next();){if(n=="/"&&r){t.tokenize=i;break}r=n=="%"}return"comment"}function C(e,t){for(var r=!1,n;n=e.next();){if(n=="'"&&r){t.tokenize=i;break}r=n=="'"}return"strong"}function u(e,t){var r=t.block;return r&&e.current()?"comment":!r&&e.match($)||r&&e.sol()&&e.match(y)?(t.tokenize=i,"comment"):(e.next(),"comment")}function W(e,t){for(var r=!1,n;n=e.next();){if(n=="/"&&r){t.tokenize=i;break}r=n=="/"}return"emphasis"}function x(e,t){for(var r=!1,n;n=e.next();){if(n=="_"&&r){t.tokenize=i;break}r=n=="_"}return"link"}function g(e,t){for(var r=!1,n;n=e.next();){if(n=="-"&&r){t.tokenize=i;break}r=n=="-"}return"deleted"}function T(e,t){if(e.current()=="<<")return"meta";var r=e.next();return r?r==">"&&e.peek()==">"?(e.next(),t.tokenize=i,"meta"):(e.eatWhile(/[\w\$_]/),l.propertyIsEnumerable(e.current())?"keyword":null):(t.tokenize=i,null)}const m={name:"tiddlywiki",startState:function(){return{tokenize:i}},token:function(e,t){if(e.eatSpace())return null;var r=t.tokenize(e,t);return r}};export{m as tiddlyWiki}; diff --git a/frontend/dist/assets/tiki-DGYXhP31.js b/frontend/dist/assets/tiki-DGYXhP31.js new file mode 100644 index 0000000..d1f6738 --- /dev/null +++ b/frontend/dist/assets/tiki-DGYXhP31.js @@ -0,0 +1 @@ +function c(e,t,n){return function(r,a){for(;!r.eol();){if(r.match(t)){a.tokenize=o;break}r.next()}return n&&(a.tokenize=n),e}}function f(e){return function(t,n){for(;!t.eol();)t.next();return n.tokenize=o,e}}function o(e,t){function n(p){return t.tokenize=p,p(e,t)}var r=e.sol(),a=e.next();switch(a){case"{":return e.eat("/"),e.eatSpace(),e.eatWhile(/[^\s\u00a0=\"\'\/?(}]/),t.tokenize=h,"tag";case"_":if(e.eat("_"))return n(c("strong","__",o));break;case"'":if(e.eat("'"))return n(c("em","''",o));break;case"(":if(e.eat("("))return n(c("link","))",o));break;case"[":return n(c("url","]",o));case"|":if(e.eat("|"))return n(c("comment","||"));break;case"-":if(e.eat("="))return n(c("header string","=-",o));if(e.eat("-"))return n(c("error tw-deleted","--",o));break;case"=":if(e.match("=="))return n(c("tw-underline","===",o));break;case":":if(e.eat(":"))return n(c("comment","::"));break;case"^":return n(c("tw-box","^"));case"~":if(e.match("np~"))return n(c("meta","~/np~"));break}if(r)switch(a){case"!":return e.match("!!!!!")||e.match("!!!!")||e.match("!!!")||e.match("!!"),n(f("header string"));case"*":case"#":case"+":return n(f("tw-listitem bracket"))}return null}var g,s;function h(e,t){var n=e.next(),r=e.peek();return n=="}"?(t.tokenize=o,"tag"):n=="("||n==")"?"bracket":n=="="?(s="equals",r==">"&&(e.next(),r=e.peek()),/[\'\"]/.test(r)||(t.tokenize=z()),"operator"):/[\'\"]/.test(n)?(t.tokenize=w(n),t.tokenize(e,t)):(e.eatWhile(/[^\s\u00a0=\"\'\/?]/),"keyword")}function w(e){return function(t,n){for(;!t.eol();)if(t.next()==e){n.tokenize=h;break}return"string"}}function z(){return function(e,t){for(;!e.eol();){var n=e.next(),r=e.peek();if(n==" "||n==","||/[ )}]/.test(r)){t.tokenize=h;break}}return"string"}}var i,l;function k(){for(var e=arguments.length-1;e>=0;e--)i.cc.push(arguments[e])}function u(){return k.apply(null,arguments),!0}function b(e,t){var n=i.context&&i.context.noIndent;i.context={prev:i.context,pluginName:e,indent:i.indented,startOfLine:t,noIndent:n}}function x(){i.context&&(i.context=i.context.prev)}function L(e){if(e=="openPlugin")return i.pluginName=g,u(d,N(i.startOfLine));if(e=="closePlugin"){var t=!1;return i.context?(t=i.context.pluginName!=g,x()):t=!0,t&&(l="error"),u(P(t))}else return e=="string"&&((!i.context||i.context.name!="!cdata")&&b("!cdata"),i.tokenize==o&&x()),u()}function N(e){return function(t){return t=="selfclosePlugin"||t=="endPlugin"||t=="endPlugin"&&b(i.pluginName,e),u()}}function P(e){return function(t){return e&&(l="error"),t=="endPlugin"?u():k()}}function d(e){return e=="keyword"?(l="attribute",u(d)):e=="equals"?u(O,d):k()}function O(e){return e=="keyword"?(l="string",u()):e=="string"?u(v):k()}function v(e){return e=="string"?u(v):k()}const S={name:"tiki",startState:function(){return{tokenize:o,cc:[],indented:0,startOfLine:!0,pluginName:null,context:null}},token:function(e,t){if(e.sol()&&(t.startOfLine=!0,t.indented=e.indentation()),e.eatSpace())return null;l=s=g=null;var n=t.tokenize(e,t);if((n||s)&&n!="comment")for(i=t;;){var r=t.cc.pop()||L;if(r(s||n))break}return t.startOfLine=!1,l||n},indent:function(e,t,n){var r=e.context;if(r&&r.noIndent)return 0;for(r&&/^{\//.test(t)&&(r=r.prev);r&&!r.startOfLine;)r=r.prev;return r?r.indent+n.unit:0}};export{S as tiki}; diff --git a/frontend/dist/assets/toNumber-Dkj3QRv9.js b/frontend/dist/assets/toNumber-Dkj3QRv9.js new file mode 100644 index 0000000..a47d96c --- /dev/null +++ b/frontend/dist/assets/toNumber-Dkj3QRv9.js @@ -0,0 +1 @@ +import{d1 as s,cs as e}from"./index-BKKvzUDD.js";var f=/\s/;function c(r){for(var t=r.length;t--&&f.test(r.charAt(t)););return t}var o=/^\s+/;function a(r){return r&&r.slice(0,c(r)+1).replace(o,"")}var n=NaN,m=/^[-+]0x[0-9a-f]+$/i,p=/^0b[01]+$/i,b=/^0o[0-7]+$/i,d=parseInt;function I(r){if(typeof r=="number")return r;if(s(r))return n;if(e(r)){var t=typeof r.valueOf=="function"?r.valueOf():r;r=e(t)?t+"":t}if(typeof r!="string")return r===0?r:+r;r=a(r);var i=p.test(r);return i||b.test(r)?d(r.slice(2),i?2:8):m.test(r)?n:+r}export{I as t}; diff --git a/frontend/dist/assets/toml-Bm5Em-hy.js b/frontend/dist/assets/toml-Bm5Em-hy.js new file mode 100644 index 0000000..72d38e6 --- /dev/null +++ b/frontend/dist/assets/toml-Bm5Em-hy.js @@ -0,0 +1 @@ +const r={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(n,e){let i;if(!e.inString&&(i=n.match(/^('''|"""|'|")/))&&(e.stringType=i[0],e.inString=!0),n.sol()&&!e.inString&&e.inArray===0&&(e.lhs=!0),e.inString){for(;e.inString;)if(n.match(e.stringType))e.inString=!1;else if(n.peek()==="\\")n.next(),n.next();else{if(n.eol())break;n.match(/^.[^\\\"\']*/)}return e.lhs?"property":"string"}else{if(e.inArray&&n.peek()==="]")return n.next(),e.inArray--,"bracket";if(e.lhs&&n.peek()==="["&&n.skipTo("]"))return n.next(),n.peek()==="]"&&n.next(),"atom";if(n.peek()==="#")return n.skipToEnd(),"comment";if(n.eatSpace())return null;if(e.lhs&&n.eatWhile(function(l){return l!="="&&l!=" "}))return"property";if(e.lhs&&n.peek()==="=")return n.next(),e.lhs=!1,null;if(!e.lhs&&n.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!e.lhs&&(n.match("true")||n.match("false")))return"atom";if(!e.lhs&&n.peek()==="[")return e.inArray++,n.next(),"bracket";if(!e.lhs&&n.match(/^\-?\d+(?:\.\d+)?/))return"number";n.eatSpace()||n.next()}return null},languageData:{commentTokens:{line:"#"}}};export{r as toml}; diff --git a/frontend/dist/assets/tools-BSjcVinb.js b/frontend/dist/assets/tools-BSjcVinb.js new file mode 100644 index 0000000..d2675b6 --- /dev/null +++ b/frontend/dist/assets/tools-BSjcVinb.js @@ -0,0 +1 @@ +import{ae as d,y as f,D as v}from"./index-BKKvzUDD.js";const m=d("tools",()=>{const a="customTools",o=f(n());function n(){try{return JSON.parse(localStorage.getItem(a)||"[]")}catch{return[]}}v(o,e=>{localStorage.setItem(a,JSON.stringify(e))},{deep:!0});function u(e){o.value.push(e)}function l(e,t){const r=o.value.findIndex(c=>c.id===e);r!==-1&&(o.value[r]={...o.value[r],...t})}function s(e){o.value=o.value.filter(t=>t.id!==e)}function i(e){return o.value.find(t=>t.id===e)}return{tools:o,addTool:u,updateTool:l,removeTool:s,getTool:i}});export{m as u}; diff --git a/frontend/dist/assets/troff-wAsdV37c.js b/frontend/dist/assets/troff-wAsdV37c.js new file mode 100644 index 0000000..bc38dc7 --- /dev/null +++ b/frontend/dist/assets/troff-wAsdV37c.js @@ -0,0 +1 @@ +var h={};function u(n){if(n.eatSpace())return null;var t=n.sol(),c=n.next();if(c==="\\")return n.match("fB")||n.match("fR")||n.match("fI")||n.match("u")||n.match("d")||n.match("%")||n.match("&")?"string":n.match("m[")?(n.skipTo("]"),n.next(),"string"):n.match("s+")||n.match("s-")?(n.eatWhile(/[\d-]/),"string"):((n.match("(")||n.match("*("))&&n.eatWhile(/[\w-]/),"string");if(t&&(c==="."||c==="'")&&n.eat("\\")&&n.eat('"'))return n.skipToEnd(),"comment";if(t&&c==="."){if(n.match("B ")||n.match("I ")||n.match("R "))return"attribute";if(n.match("TH ")||n.match("SH ")||n.match("SS ")||n.match("HP "))return n.skipToEnd(),"quote";if(n.match(/[A-Z]/)&&n.match(/[A-Z]/)||n.match(/[a-z]/)&&n.match(/[a-z]/))return"attribute"}n.eatWhile(/[\w-]/);var i=n.current();return h.hasOwnProperty(i)?h[i]:null}function f(n,t){return(t.tokens[0]||u)(n,t)}const o={name:"troff",startState:function(){return{tokens:[]}},token:function(n,t){return f(n,t)}};export{o as troff}; diff --git a/frontend/dist/assets/ttcn-CfJYG6tj.js b/frontend/dist/assets/ttcn-CfJYG6tj.js new file mode 100644 index 0000000..671ae05 --- /dev/null +++ b/frontend/dist/assets/ttcn-CfJYG6tj.js @@ -0,0 +1 @@ +function o(e){for(var t={},n=e.split(" "),r=0;r!\/]/,l;function T(e,t){var n=e.next();if(n=='"'||n=="'")return t.tokenize=N(n),t.tokenize(e,t);if(/[\[\]{}\(\),;\\:\?\.]/.test(n))return l=n,"punctuation";if(n=="#")return e.skipToEnd(),"atom";if(n=="%")return e.eatWhile(/\b/),"atom";if(/\d/.test(n))return e.eatWhile(/[\w\.]/),"number";if(n=="/"){if(e.eat("*"))return t.tokenize=m,m(e,t);if(e.eat("/"))return e.skipToEnd(),"comment"}if(d.test(n))return n=="@"&&(e.match("try")||e.match("catch")||e.match("lazy"))?"keyword":(e.eatWhile(d),"operator");e.eatWhile(/[\w\$_\xa1-\uffff]/);var r=e.current();return y.propertyIsEnumerable(r)?"keyword":v.propertyIsEnumerable(r)?"builtin":x.propertyIsEnumerable(r)||k.propertyIsEnumerable(r)||O.propertyIsEnumerable(r)||g.propertyIsEnumerable(r)||w.propertyIsEnumerable(r)||E.propertyIsEnumerable(r)?"def":C.propertyIsEnumerable(r)||I.propertyIsEnumerable(r)||z.propertyIsEnumerable(r)?"string":L.propertyIsEnumerable(r)?"typeName.standard":M.propertyIsEnumerable(r)?"modifier":S.propertyIsEnumerable(r)?"atom":"variable"}function N(e){return function(t,n){for(var r=!1,c,f=!1;(c=t.next())!=null;){if(c==e&&!r){var s=t.peek();s&&(s=s.toLowerCase(),(s=="b"||s=="h"||s=="o")&&t.next()),f=!0;break}r=!r&&c=="\\"}return f&&(n.tokenize=null),"string"}}function m(e,t){for(var n=!1,r;r=e.next();){if(r=="/"&&n){t.tokenize=null;break}n=r=="*"}return"comment"}function b(e,t,n,r,c){this.indented=e,this.column=t,this.type=n,this.align=r,this.prev=c}function a(e,t,n){var r=e.indented;return e.context&&e.context.type=="statement"&&(r=e.context.indented),e.context=new b(r,t,n,null,e.context)}function u(e){var t=e.context.type;return(t==")"||t=="]"||t=="}")&&(e.indented=e.context.indented),e.context=e.context.prev}const P={name:"ttcn",startState:function(){return{tokenize:null,context:new b(0,0,"top",!1),indented:0,startOfLine:!0}},token:function(e,t){var n=t.context;if(e.sol()&&(n.align==null&&(n.align=!1),t.indented=e.indentation(),t.startOfLine=!0),e.eatSpace())return null;l=null;var r=(t.tokenize||T)(e,t);if(r=="comment")return r;if(n.align==null&&(n.align=!0),(l==";"||l==":"||l==",")&&n.type=="statement")u(t);else if(l=="{")a(t,e.column(),"}");else if(l=="[")a(t,e.column(),"]");else if(l=="(")a(t,e.column(),")");else if(l=="}"){for(;n.type=="statement";)n=u(t);for(n.type=="}"&&(n=u(t));n.type=="statement";)n=u(t)}else l==n.type?u(t):W&&((n.type=="}"||n.type=="top")&&l!=";"||n.type=="statement"&&l=="newstatement")&&a(t,e.column(),"statement");return t.startOfLine=!1,r},languageData:{indentOnInput:/^\s*[{}]$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}},autocomplete:h}};export{P as ttcn}; diff --git a/frontend/dist/assets/ttcn-cfg-B9xdYoR4.js b/frontend/dist/assets/ttcn-cfg-B9xdYoR4.js new file mode 100644 index 0000000..7d3a7eb --- /dev/null +++ b/frontend/dist/assets/ttcn-cfg-B9xdYoR4.js @@ -0,0 +1 @@ +function I(e){for(var n={},T=e.split(" "),E=0;E=&|]/;function x(e,n){var t=e.next();if(r=null,t=="<"&&!e.match(/^[\s\u00a0=]/,!1))return e.match(/^[^\s\u00a0>]*>?/),"atom";if(t=='"'||t=="'")return n.tokenize=v(t),n.tokenize(e,n);if(/[{}\(\),\.;\[\]]/.test(t))return r=t,null;if(t=="#")return e.skipToEnd(),"comment";if(f.test(t))return e.eatWhile(f),null;if(t==":")return"operator";if(e.eatWhile(/[_\w\d]/),e.peek()==":")return"variableName.special";var i=e.current();return d.test(i)?"meta":t>="A"&&t<="Z"?"comment":"keyword";var i=e.current()}function v(e){return function(n,t){for(var i=!1,o;(o=n.next())!=null;){if(o==e&&!i){t.tokenize=x;break}i=!i&&o=="\\"}return"string"}}function l(e,n,t){e.context={prev:e.context,indent:e.indent,col:t,type:n}}function c(e){e.indent=e.context.indent,e.context=e.context.prev}const g={name:"turtle",startState:function(){return{tokenize:x,context:null,indent:0,col:0}},token:function(e,n){if(e.sol()&&(n.context&&n.context.align==null&&(n.context.align=!1),n.indent=e.indentation()),e.eatSpace())return null;var t=n.tokenize(e,n);if(t!="comment"&&n.context&&n.context.align==null&&n.context.type!="pattern"&&(n.context.align=!0),r=="(")l(n,")",e.column());else if(r=="[")l(n,"]",e.column());else if(r=="{")l(n,"}",e.column());else if(/[\]\}\)]/.test(r)){for(;n.context&&n.context.type=="pattern";)c(n);n.context&&r==n.context.type&&c(n)}else r=="."&&n.context&&n.context.type=="pattern"?c(n):/atom|string|variable/.test(t)&&n.context&&(/[\}\]]/.test(n.context.type)?l(n,"pattern",e.column()):n.context.type=="pattern"&&!n.context.align&&(n.context.align=!0,n.context.col=e.column()));return t},indent:function(e,n,t){var i=n&&n.charAt(0),o=e.context;if(/[\]\}]/.test(i))for(;o&&o.type=="pattern";)o=o.prev;var u=o&&i==o.type;return o?o.type=="pattern"?o.col:o.align?o.col+(u?0:1):o.indent+(u?0:t.unit):0},languageData:{commentTokens:{line:"#"}}};export{g as turtle}; diff --git a/frontend/dist/assets/use-dialog-DmridEEy.js b/frontend/dist/assets/use-dialog-DmridEEy.js new file mode 100644 index 0000000..bba50b1 --- /dev/null +++ b/frontend/dist/assets/use-dialog-DmridEEy.js @@ -0,0 +1 @@ +import{U}from"./raf-C-x62Pcl.js";import{b as V,i as te,k as le,R as x,N as ae,bI as se,y as f,u as ie,D as L,G as ue,O as k,j as l,bA as re,am as ce,a3 as fe,aK as de,a6 as ve,bd as z,P as ye}from"./index-BKKvzUDD.js";import{a as ge}from"./index-DfyOU94W.js";import{f as M}from"./index-BjEW7-SA.js";const be=V({center:Boolean,alignCenter:{type:Boolean,default:void 0},closeIcon:{type:te},draggable:{type:Boolean,default:void 0},overflow:{type:Boolean,default:void 0},fullscreen:Boolean,headerClass:String,bodyClass:String,footerClass:String,showClose:{type:Boolean,default:!0},title:{type:String,default:""},ariaLevel:{type:String,default:"2"}}),Ee={close:()=>!0},Se=V({...be,appendToBody:Boolean,appendTo:{type:x([String,Object]),default:"body"},beforeClose:{type:x(Function)},destroyOnClose:Boolean,closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},modal:{type:Boolean,default:!0},modalPenetrable:Boolean,openDelay:{type:Number,default:0},closeDelay:{type:Number,default:0},top:{type:String},modelValue:Boolean,modalClass:String,headerClass:String,bodyClass:String,footerClass:String,width:{type:[String,Number]},zIndex:{type:Number},trapFocus:Boolean,headerAriaLevel:{type:String,default:"2"},transition:{type:x([String,Object]),default:void 0}}),De={open:()=>!0,opened:()=>!0,close:()=>!0,closed:()=>!0,[U]:e=>le(e),openAutoFocus:()=>!0,closeAutoFocus:()=>!0},Oe=Symbol("dialogInjectionKey"),p="dialog-fade",me="ElDialog",xe=(e,a)=>{const i=ae().emit,{nextZIndex:d}=se();let P="";const $=M(),G=M(),s=f(!1),C=f(!1),v=f(!1),y=f(e.zIndex??d()),g=f(!1);let u,r;const h=ie(),K=l(()=>{var o;return((o=h.value)==null?void 0:o.namespace)??"el"}),b=l(()=>{var o;return(o=h.value)==null?void 0:o.dialog}),Z=l(()=>{const o={},n=`--${K.value}-dialog`;if(!e.fullscreen){e.top&&(o[`${n}-margin-top`]=e.top);const c=ce(e.width);c&&(o[`${n}-width`]=c)}return o}),q=l(()=>{var o;return(e.draggable??((o=b.value)==null?void 0:o.draggable)??!1)&&!e.fullscreen}),F=l(()=>{var o;return e.alignCenter??((o=b.value)==null?void 0:o.alignCenter)??!1}),W=l(()=>{var o;return e.overflow??((o=b.value)==null?void 0:o.overflow)??!1}),w=l(()=>e.modalPenetrable&&!e.modal&&!e.fullscreen),J=l(()=>F.value?{display:"flex"}:{}),Q=l(()=>{var c;const o=e.transition??((c=b.value)==null?void 0:c.transition)??"dialog-fade",n={name:o,onAfterEnter:A,onBeforeLeave:I,onAfterLeave:B};if(fe(o)){const t={...o},O=(m,ne)=>_=>{ve(m)?m.forEach(j=>{z(j)&&j(_)}):z(m)&&m(_),ne()};return t.onAfterEnter=O(t.onAfterEnter,A),t.onBeforeLeave=O(t.onBeforeLeave,I),t.onAfterLeave=O(t.onAfterLeave,B),t.name||(t.name=p,de(me,`transition.name is missing when using object syntax, fallback to '${p}'`)),t}return n});function A(){i("opened")}function B(){i("closed"),i(U,!1),e.destroyOnClose&&(v.value=!1),g.value=!1}function I(){g.value=!0,i("close")}function N(){r==null||r(),u==null||u(),e.openDelay&&e.openDelay>0?{stop:u}=k(()=>T(),e.openDelay):T()}function E(){u==null||u(),r==null||r(),e.closeDelay&&e.closeDelay>0?{stop:r}=k(()=>D(),e.closeDelay):D()}function S(){function o(n){n||(C.value=!0,s.value=!1)}e.beforeClose?e.beforeClose(o):E()}function X(){e.closeOnClickModal&&S()}function T(){re&&(s.value=!0)}function D(){s.value=!1}function Y(){i("openAutoFocus")}function H(){i("closeAutoFocus")}function R(o){var n;((n=o.detail)==null?void 0:n.focusReason)==="pointer"&&o.preventDefault()}e.lockScroll&&ge(s);function ee(){e.closeOnPressEscape&&S()}function oe(){!s.value||!w.value||e.zIndex!==void 0||(y.value=d())}return L(()=>e.zIndex,()=>{y.value=e.zIndex??d()}),L(()=>e.modelValue,o=>{o?(C.value=!1,g.value=!1,N(),v.value=!0,y.value=e.zIndex??d(),ye(()=>{i("open"),a.value&&(a.value.parentElement.scrollTop=0,a.value.parentElement.scrollLeft=0,a.value.scrollTop=0)})):s.value&&E()}),L(()=>e.fullscreen,o=>{a.value&&(o?(P=a.value.style.transform,a.value.style.transform=""):a.value.style.transform=P)}),ue(()=>{e.modelValue&&(s.value=!0,v.value=!0,N())}),{afterEnter:A,afterLeave:B,beforeLeave:I,handleClose:S,onModalClick:X,close:E,doClose:D,onOpenAutoFocus:Y,onCloseAutoFocus:H,onCloseRequested:ee,onFocusoutPrevented:R,bringToFront:oe,titleId:$,bodyId:G,closed:C,style:Z,overlayDialogStyle:J,rendered:v,visible:s,zIndex:y,transitionConfig:Q,_draggable:q,_alignCenter:F,_overflow:W,closing:g,penetrable:w}};export{be as a,Oe as b,De as c,Ee as d,Se as e,xe as u}; diff --git a/frontend/dist/assets/usePolling-C6448AR2.js b/frontend/dist/assets/usePolling-C6448AR2.js new file mode 100644 index 0000000..b6e3d75 --- /dev/null +++ b/frontend/dist/assets/usePolling-C6448AR2.js @@ -0,0 +1 @@ +import{G as g,H as p,y as d}from"./index-BKKvzUDD.js";function T(m,a=5e3,v={}){const{immediate:h=!0,pauseWhenHidden:o=!0,onError:r}=v,e=d(!1),n=d(!1);let t=null;function i(){t&&(clearTimeout(t),t=null)}function s(){if(i(),!e.value||o&&document.hidden)return;const l=typeof a=="function"?a():a;t=setTimeout(()=>void u(),Math.max(0,l))}async function u(){if(i(),!(!e.value||n.value)&&!(o&&document.hidden)){n.value=!0;try{await m()}catch(l){r==null||r(l)}finally{n.value=!1,s()}}}function c(){e.value=!1,i()}function y(){e.value||(e.value=!0,h?u():s())}function f(){!o||!e.value||(document.hidden?i():u())}return g(()=>document.addEventListener("visibilitychange",f)),p(()=>{c(),document.removeEventListener("visibilitychange",f)}),{start:y,stop:c,run:u,isActive:e,isRunning:n}}export{T as u}; diff --git a/frontend/dist/assets/validator-Fn0bm4xU.js b/frontend/dist/assets/validator-Fn0bm4xU.js new file mode 100644 index 0000000..fa27f39 --- /dev/null +++ b/frontend/dist/assets/validator-Fn0bm4xU.js @@ -0,0 +1 @@ +import{aj as i}from"./index-BKKvzUDD.js";const n=o=>["",...i].includes(o);export{n as i}; diff --git a/frontend/dist/assets/vb-CmGdzxic.js b/frontend/dist/assets/vb-CmGdzxic.js new file mode 100644 index 0000000..eb7b398 --- /dev/null +++ b/frontend/dist/assets/vb-CmGdzxic.js @@ -0,0 +1 @@ +var u="error";function o(e){return new RegExp("^(("+e.join(")|(")+"))\\b","i")}var b=new RegExp("^[\\+\\-\\*/%&\\\\|\\^~<>!]"),k=new RegExp("^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]"),x=new RegExp("^((==)|(<>)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\*\\*))"),m=new RegExp("^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))"),I=new RegExp("^((//=)|(>>=)|(<<=)|(\\*\\*=))"),R=new RegExp("^[_A-Za-z][_A-Za-z0-9]*"),a=["class","module","sub","enum","select","while","if","function","get","set","property","try","structure","synclock","using","with"],f=["else","elseif","case","catch","finally"],h=["next","loop"],s=["and","andalso","or","orelse","xor","in","not","is","isnot","like"],O=o(s),v=["#const","#else","#elseif","#end","#if","#region","addhandler","addressof","alias","as","byref","byval","cbool","cbyte","cchar","cdate","cdbl","cdec","cint","clng","cobj","compare","const","continue","csbyte","cshort","csng","cstr","cuint","culng","cushort","declare","default","delegate","dim","directcast","each","erase","error","event","exit","explicit","false","for","friend","gettype","goto","handles","implements","imports","infer","inherits","interface","isfalse","istrue","lib","me","mod","mustinherit","mustoverride","my","mybase","myclass","namespace","narrowing","new","nothing","notinheritable","notoverridable","of","off","on","operator","option","optional","out","overloads","overridable","overrides","paramarray","partial","private","protected","public","raiseevent","readonly","redim","removehandler","resume","return","shadows","shared","static","step","stop","strict","then","throw","to","true","trycast","typeof","until","until","when","widening","withevents","writeonly"],p=["object","boolean","char","string","byte","sbyte","short","ushort","int16","uint16","integer","uinteger","int32","uint32","long","ulong","int64","uint64","decimal","single","double","float","date","datetime","intptr","uintptr"],z=o(v),E=o(p),C='"',S=o(a),g=o(f),y=o(h),w=o(["end"]),T=o(["do"]);function l(e,n){n.currentIndent++}function c(e,n){n.currentIndent--}function d(e,n){if(e.eatSpace())return null;var i=e.peek();if(i==="'")return e.skipToEnd(),"comment";if(e.match(/^((&H)|(&O))?[0-9\.a-f]/i,!1)){var r=!1;if((e.match(/^\d*\.\d+F?/i)||e.match(/^\d+\.\d*F?/)||e.match(/^\.\d+F?/))&&(r=!0),r)return e.eat(/J/i),"number";var t=!1;if(e.match(/^&H[0-9a-f]+/i)||e.match(/^&O[0-7]+/i)?t=!0:e.match(/^[1-9]\d*F?/)?(e.eat(/J/i),t=!0):e.match(/^0(?![\dx])/i)&&(t=!0),t)return e.eat(/L/i),"number"}return e.match(C)?(n.tokenize=F(e.current()),n.tokenize(e,n)):e.match(I)||e.match(m)?null:e.match(x)||e.match(b)||e.match(O)?"operator":e.match(k)?null:e.match(T)?(l(e,n),n.doInCurrentLine=!0,"keyword"):e.match(S)?(n.doInCurrentLine?n.doInCurrentLine=!1:l(e,n),"keyword"):e.match(g)?"keyword":e.match(w)?(c(e,n),c(e,n),"keyword"):e.match(y)?(c(e,n),"keyword"):e.match(E)||e.match(z)?"keyword":e.match(R)?"variable":(e.next(),u)}function F(e){var n=e.length==1,i="string";return function(r,t){for(;!r.eol();){if(r.eatWhile(/[^'"]/),r.match(e))return t.tokenize=d,i;r.eat(/['"]/)}return n&&(t.tokenize=d),i}}function K(e,n){var i=n.tokenize(e,n),r=e.current();if(r===".")return i=n.tokenize(e,n),i==="variable"?"variable":u;var t="[({".indexOf(r);return t!==-1&&l(e,n),t="])}".indexOf(r),t!==-1&&c(e,n)?u:i}const L={name:"vb",startState:function(){return{tokenize:d,lastToken:null,currentIndent:0,nextLineIndent:0,doInCurrentLine:!1}},token:function(e,n){e.sol()&&(n.currentIndent+=n.nextLineIndent,n.nextLineIndent=0,n.doInCurrentLine=0);var i=K(e,n);return n.lastToken={style:i,content:e.current()},i},indent:function(e,n,i){var r=n.replace(/^\s+|\s+$/g,"");return r.match(y)||r.match(w)||r.match(g)?i.unit*(e.currentIndent-1):e.currentIndent<0?0:e.currentIndent*i.unit},languageData:{closeBrackets:{brackets:["(","[","{",'"']},commentTokens:{line:"'"},autocomplete:a.concat(f).concat(h).concat(s).concat(v).concat(p)}};export{L as vb}; diff --git a/frontend/dist/assets/vbscript-BuJXcnF6.js b/frontend/dist/assets/vbscript-BuJXcnF6.js new file mode 100644 index 0000000..f10f7a0 --- /dev/null +++ b/frontend/dist/assets/vbscript-BuJXcnF6.js @@ -0,0 +1 @@ +function p(h){var v="error";function i(e){return new RegExp("^(("+e.join(")|(")+"))\\b","i")}var y=new RegExp("^[\\+\\-\\*/&\\\\\\^<>=]"),g=new RegExp("^((<>)|(<=)|(>=))"),m=new RegExp("^[\\.,]"),w=new RegExp("^[\\(\\)]"),k=new RegExp("^[A-Za-z][_A-Za-z0-9]*"),x=["class","sub","select","while","if","function","property","with","for"],C=["else","elseif","case"],I=["next","loop","wend"],S=i(["and","or","not","xor","is","mod","eqv","imp"]),O=["dim","redim","then","until","randomize","byval","byref","new","property","exit","in","const","private","public","get","set","let","stop","on error resume next","on error goto 0","option explicit","call","me"],D=["true","false","nothing","empty","null"],R=["abs","array","asc","atn","cbool","cbyte","ccur","cdate","cdbl","chr","cint","clng","cos","csng","cstr","date","dateadd","datediff","datepart","dateserial","datevalue","day","escape","eval","execute","exp","filter","formatcurrency","formatdatetime","formatnumber","formatpercent","getlocale","getobject","getref","hex","hour","inputbox","instr","instrrev","int","fix","isarray","isdate","isempty","isnull","isnumeric","isobject","join","lbound","lcase","left","len","loadpicture","log","ltrim","rtrim","trim","maths","mid","minute","month","monthname","msgbox","now","oct","replace","rgb","right","rnd","round","scriptengine","scriptenginebuildversion","scriptenginemajorversion","scriptengineminorversion","second","setlocale","sgn","sin","space","split","sqr","strcomp","string","strreverse","tan","time","timer","timeserial","timevalue","typename","ubound","ucase","unescape","vartype","weekday","weekdayname","year"],E=["vbBlack","vbRed","vbGreen","vbYellow","vbBlue","vbMagenta","vbCyan","vbWhite","vbBinaryCompare","vbTextCompare","vbSunday","vbMonday","vbTuesday","vbWednesday","vbThursday","vbFriday","vbSaturday","vbUseSystemDayOfWeek","vbFirstJan1","vbFirstFourDays","vbFirstFullWeek","vbGeneralDate","vbLongDate","vbShortDate","vbLongTime","vbShortTime","vbObjectError","vbOKOnly","vbOKCancel","vbAbortRetryIgnore","vbYesNoCancel","vbYesNo","vbRetryCancel","vbCritical","vbQuestion","vbExclamation","vbInformation","vbDefaultButton1","vbDefaultButton2","vbDefaultButton3","vbDefaultButton4","vbApplicationModal","vbSystemModal","vbOK","vbCancel","vbAbort","vbRetry","vbIgnore","vbYes","vbNo","vbCr","VbCrLf","vbFormFeed","vbLf","vbNewLine","vbNullChar","vbNullString","vbTab","vbVerticalTab","vbUseDefault","vbTrue","vbFalse","vbEmpty","vbNull","vbInteger","vbLong","vbSingle","vbDouble","vbCurrency","vbDate","vbString","vbObject","vbError","vbBoolean","vbVariant","vbDataObject","vbDecimal","vbByte","vbArray"],a=["WScript","err","debug","RegExp"],L=["description","firstindex","global","helpcontext","helpfile","ignorecase","length","number","pattern","source","value","count"],T=["clear","execute","raise","replace","test","write","writeline","close","open","state","eof","update","addnew","end","createobject","quit"],j=["server","response","request","session","application"],F=["buffer","cachecontrol","charset","contenttype","expires","expiresabsolute","isclientconnected","pics","status","clientcertificate","cookies","form","querystring","servervariables","totalbytes","contents","staticobjects","codepage","lcid","sessionid","timeout","scripttimeout"],B=["addheader","appendtolog","binarywrite","end","flush","redirect","binaryread","remove","removeall","lock","unlock","abandon","getlasterror","htmlencode","mappath","transfer","urlencode"],c=T.concat(L);a=a.concat(E),h.isASP&&(a=a.concat(j),c=c.concat(B,F));var W=i(O),z=i(D),A=i(R),K=i(a),N=i(c),M='"',P=i(x),b=i(C),d=i(I),s=i(["end"]),q=i(["do"]),V=i(["on error resume next","exit"]),Y=i(["rem"]);function f(e,n){n.currentIndent++}function u(e,n){n.currentIndent--}function l(e,n){if(e.eatSpace())return null;var r=e.peek();if(r==="'"||e.match(Y))return e.skipToEnd(),"comment";if(e.match(/^((&H)|(&O))?[0-9\.]/i,!1)&&!e.match(/^((&H)|(&O))?[0-9\.]+[a-z_]/i,!1)){var t=!1;if((e.match(/^\d*\.\d+/i)||e.match(/^\d+\.\d*/)||e.match(/^\.\d+/))&&(t=!0),t)return e.eat(/J/i),"number";var o=!1;if(e.match(/^&H[0-9a-f]+/i)||e.match(/^&O[0-7]+/i)?o=!0:e.match(/^[1-9]\d*F?/)?(e.eat(/J/i),o=!0):e.match(/^0(?![\dx])/i)&&(o=!0),o)return e.eat(/L/i),"number"}return e.match(M)?(n.tokenize=_(e.current()),n.tokenize(e,n)):e.match(g)||e.match(y)||e.match(S)?"operator":e.match(m)?null:e.match(w)?"bracket":e.match(V)?(n.doInCurrentLine=!0,"keyword"):e.match(q)?(f(e,n),n.doInCurrentLine=!0,"keyword"):e.match(P)?(n.doInCurrentLine?n.doInCurrentLine=!1:f(e,n),"keyword"):e.match(b)?"keyword":e.match(s)?(u(e,n),u(e,n),"keyword"):e.match(d)?(n.doInCurrentLine?n.doInCurrentLine=!1:u(e,n),"keyword"):e.match(W)?"keyword":e.match(z)?"atom":e.match(N)?"variableName.special":e.match(A)||e.match(K)?"builtin":e.match(k)?"variable":(e.next(),v)}function _(e){var n=e.length==1,r="string";return function(t,o){for(;!t.eol();){if(t.eatWhile(/[^'"]/),t.match(e))return o.tokenize=l,r;t.eat(/['"]/)}return n&&(o.tokenize=l),r}}function H(e,n){var r=n.tokenize(e,n),t=e.current();return t==="."?(r=n.tokenize(e,n),t=e.current(),r&&(r.substr(0,8)==="variable"||r==="builtin"||r==="keyword")?((r==="builtin"||r==="keyword")&&(r="variable"),c.indexOf(t.substr(1))>-1&&(r="keyword"),r):v):r}return{name:"vbscript",startState:function(){return{tokenize:l,lastToken:null,currentIndent:0,nextLineIndent:0,doInCurrentLine:!1,ignoreKeyword:!1}},token:function(e,n){e.sol()&&(n.currentIndent+=n.nextLineIndent,n.nextLineIndent=0,n.doInCurrentLine=0);var r=H(e,n);return n.lastToken={style:r,content:e.current()},r===null&&(r=null),r},indent:function(e,n,r){var t=n.replace(/^\s+|\s+$/g,"");return t.match(d)||t.match(s)||t.match(b)?r.unit*(e.currentIndent-1):e.currentIndent<0?0:e.currentIndent*r.unit}}}const J=p({}),U=p({isASP:!0});export{J as vbScript,U as vbScriptASP}; diff --git a/frontend/dist/assets/velocity-D8B20fx6.js b/frontend/dist/assets/velocity-D8B20fx6.js new file mode 100644 index 0000000..9f87ece --- /dev/null +++ b/frontend/dist/assets/velocity-D8B20fx6.js @@ -0,0 +1 @@ +function u(n){for(var e={},i=n.split(" "),r=0;r!?:\/|]/;function o(n,e,i){return e.tokenize=i,i(n,e)}function t(n,e){var i=e.beforeParams;e.beforeParams=!1;var r=n.next();if(r=="'"&&!e.inString&&e.inParams)return e.lastTokenWasBuiltin=!1,o(n,e,p(r));if(r=='"'){if(e.lastTokenWasBuiltin=!1,e.inString)return e.inString=!1,"string";if(e.inParams)return o(n,e,p(r))}else{if(/[\[\]{}\(\),;\.]/.test(r))return r=="("&&i?e.inParams=!0:r==")"&&(e.inParams=!1,e.lastTokenWasBuiltin=!0),null;if(/\d/.test(r))return e.lastTokenWasBuiltin=!1,n.eatWhile(/[\w\.]/),"number";if(r=="#"&&n.eat("*"))return e.lastTokenWasBuiltin=!1,o(n,e,h);if(r=="#"&&n.match(/ *\[ *\[/))return e.lastTokenWasBuiltin=!1,o(n,e,b);if(r=="#"&&n.eat("#"))return e.lastTokenWasBuiltin=!1,n.skipToEnd(),"comment";if(r=="$")return n.eat("!"),n.eatWhile(/[\w\d\$_\.{}-]/),c&&c.propertyIsEnumerable(n.current())?"keyword":(e.lastTokenWasBuiltin=!0,e.beforeParams=!0,"builtin");if(k.test(r))return e.lastTokenWasBuiltin=!1,n.eatWhile(k),"operator";n.eatWhile(/[\w\$_{}@]/);var l=n.current();return s&&s.propertyIsEnumerable(l)?"keyword":a&&a.propertyIsEnumerable(l)||n.current().match(/^#@?[a-z0-9_]+ *$/i)&&n.peek()=="("&&!(a&&a.propertyIsEnumerable(l.toLowerCase()))?(e.beforeParams=!0,e.lastTokenWasBuiltin=!1,"keyword"):e.inString?(e.lastTokenWasBuiltin=!1,"string"):n.pos>l.length&&n.string.charAt(n.pos-l.length-1)=="."&&e.lastTokenWasBuiltin?"builtin":(e.lastTokenWasBuiltin=!1,null)}}function p(n){return function(e,i){for(var r=!1,l,f=!1;(l=e.next())!=null;){if(l==n&&!r){f=!0;break}if(n=='"'&&e.peek()=="$"&&!r){i.inString=!0,f=!0;break}r=!r&&l=="\\"}return f&&(i.tokenize=t),"string"}}function h(n,e){for(var i=!1,r;r=n.next();){if(r=="#"&&i){e.tokenize=t;break}i=r=="*"}return"comment"}function b(n,e){for(var i=0,r;r=n.next();){if(r=="#"&&i==2){e.tokenize=t;break}r=="]"?i++:r!=" "&&(i=0)}return"meta"}const W={name:"velocity",startState:function(){return{tokenize:t,beforeParams:!1,inParams:!1,inString:!1,lastTokenWasBuiltin:!1}},token:function(n,e){return n.eatSpace()?null:e.tokenize(n,e)},languageData:{commentTokens:{line:"##",block:{open:"#*",close:"*#"}}}};export{W as velocity}; diff --git a/frontend/dist/assets/verilog-C6RDOZhf.js b/frontend/dist/assets/verilog-C6RDOZhf.js new file mode 100644 index 0000000..2a1290d --- /dev/null +++ b/frontend/dist/assets/verilog-C6RDOZhf.js @@ -0,0 +1 @@ +function A(i){var o=i.statementIndentUnit,u=i.dontAlignCalls,c=i.noIndentKeywords||[],s=i.multiLineStrings,a=i.hooks||{};function g(e){for(var n={},t=e.split(" "),r=0;r=0)return r}var l=e.context,y=n&&n.charAt(0);l.type=="statement"&&y=="}"&&(l=l.prev);var x=!1,$=n.match(M);return $&&(x=N($[0],l.type)),l.type=="statement"?l.indented+(y=="{"?0:o||t.unit):U.test(l.type)&&l.align&&!u?l.column+(x?0:1):l.type==")"&&!x?l.indented+(o||t.unit):l.indented+(x?0:t.unit)},languageData:{indentOnInput:P(),commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}}}const J=A({});var z={"|":"link",">":"property",$:"variable",$$:"variable","?$":"qualifier","?*":"qualifier","-":"contentSeparator","/":"property","/-":"property","@":"variableName.special","@-":"variableName.special","@++":"variableName.special","@+=":"variableName.special","@+=-":"variableName.special","@--":"variableName.special","@-=":"variableName.special","%+":"tag","%-":"tag","%":"tag",">>":"tag","<<":"tag","<>":"tag","#":"tag","^":"attribute","^^":"attribute","^!":"attribute","*":"variable","**":"variable","\\":"keyword",'"':"comment"},E={"/":"beh-hier",">":"beh-hier","-":"phys-hier","|":"pipe","?":"when","@":"stage","\\":"keyword"},S=3,q=/^([~!@#\$%\^&\*-\+=\?\/\\\|'"<>]+)([\d\w_]*)/,F=/^[! ] */,G=/^\/[\/\*]/;const Q=A({hooks:{electricInput:!1,token:function(i,o){var u=void 0,c;if(i.sol()&&!o.tlvInBlockComment){i.peek()=="\\"&&(u="def",i.skipToEnd(),i.string.match(/\\SV/)?o.tlvCodeActive=!1:i.string.match(/\\TLV/)&&(o.tlvCodeActive=!0)),o.tlvCodeActive&&i.pos==0&&o.indented==0&&(c=i.match(F,!1))&&(o.indented=c[0].length);var s=o.indented,a=s/S;if(a<=o.tlvIndentationStyle.length){var g=i.string.length==s,h=a*S;if(h0||(o.tlvIndentationStyle[a]=E[k],a++))}if(!g)for(;o.tlvIndentationStyle.length>a;)o.tlvIndentationStyle.pop()}o.tlvNextIndent=s}if(o.tlvCodeActive){var c;if(u===void 0)if(o.tlvInBlockComment)i.match(/^.*?\*\//)?o.tlvInBlockComment=!1:i.skipToEnd(),u="comment";else if((c=i.match(G))&&!o.tlvInBlockComment)c[0]=="//"?i.skipToEnd():o.tlvInBlockComment=!0,u="comment";else if(c=i.match(q)){var b=c[1],I=c[2];z.hasOwnProperty(b)&&(I.length>0||i.eol())?u=z[b]:i.backUp(i.current().length-1)}else i.match(/^\t+/)?u="invalid":i.match(/^[\[\]{}\(\);\:]+/)?u="meta":(c=i.match(/^[mM]4([\+_])?[\w\d_]*/))?u=c[1]=="+"?"keyword.special":"keyword":i.match(/^ +/)?i.eol()&&(u="error"):i.match(/^[\w\d_]+/)?u="number":i.next()}else i.match(/^[mM]4([\w\d_]*)/)&&(u="keyword");return u},indent:function(i){return i.tlvCodeActive==!0?i.tlvNextIndent:-1},startState:function(i){i.tlvIndentationStyle=[],i.tlvCodeActive=!0,i.tlvNextIndent=-1,i.tlvInBlockComment=!1}}});export{Q as tlv,J as verilog}; diff --git a/frontend/dist/assets/vhdl-lSbBsy5d.js b/frontend/dist/assets/vhdl-lSbBsy5d.js new file mode 100644 index 0000000..3b344d6 --- /dev/null +++ b/frontend/dist/assets/vhdl-lSbBsy5d.js @@ -0,0 +1 @@ +function f(e){for(var t={},n=e.split(","),r=0;r{if(!r(s))return m(c,"[getNormalizedProps] must be a VNode"),{};const o=s.props||{},t=(r(s.type)?s.type.props:void 0)||{},e={};return Object.keys(t).forEach(a=>{i(t[a],"default")&&(e[a]=t[a].default)}),Object.keys(o).forEach(a=>{e[b(a)]=o[a]}),e},n=s=>{const o=p(s)?s:[s],t=[];return o.forEach(e=>{var a;p(e)?t.push(...n(e)):r(e)&&((a=e.component)!=null&&a.subTree)?t.push(e,...n(e.component.subTree)):r(e)&&p(e.children)?t.push(...n(e.children)):r(e)&&e.shapeFlag===2?t.push(...n(e.type())):t.push(e)}),t};export{C as a,y as b,n as f,E as g,g as i}; diff --git a/frontend/dist/assets/webidl-ZXfAyPTL.js b/frontend/dist/assets/webidl-ZXfAyPTL.js new file mode 100644 index 0000000..88c9e0c --- /dev/null +++ b/frontend/dist/assets/webidl-ZXfAyPTL.js @@ -0,0 +1 @@ +function a(e){return new RegExp("^(("+e.join(")|(")+"))\\b")}var l=["Clamp","Constructor","EnforceRange","Exposed","ImplicitThis","Global","PrimaryGlobal","LegacyArrayClass","LegacyUnenumerableNamedProperties","LenientThis","NamedConstructor","NewObject","NoInterfaceObject","OverrideBuiltins","PutForwards","Replaceable","SameObject","TreatNonObjectAsNull","TreatNullAs","EmptyString","Unforgeable","Unscopeable"],u=a(l),o=["unsigned","short","long","unrestricted","float","double","boolean","byte","octet","Promise","ArrayBuffer","DataView","Int8Array","Int16Array","Int32Array","Uint8Array","Uint16Array","Uint32Array","Uint8ClampedArray","Float32Array","Float64Array","ByteString","DOMString","USVString","sequence","object","RegExp","Error","DOMException","FrozenArray","any","void"],m=a(o),c=["attribute","callback","const","deleter","dictionary","enum","getter","implements","inherit","interface","iterable","legacycaller","maplike","partial","required","serializer","setlike","setter","static","stringifier","typedef","optional","readonly","or"],s=a(c),f=["true","false","Infinity","NaN","null"],y=a(f),d=["callback","dictionary","enum","interface"],p=a(d),b=["typedef"],v=a(b),A=/^[:<=>?]/,g=/^-?([1-9][0-9]*|0[Xx][0-9A-Fa-f]+|0[0-7]*)/,h=/^-?(([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)([Ee][+-]?[0-9]+)?|[0-9]+[Ee][+-]?[0-9]+)/,i=/^_?[A-Za-z][0-9A-Z_a-z-]*/,D=/^_?[A-Za-z][0-9A-Z_a-z-]*(?=\s*;)/,k=/^"[^"]*"/,E=/^\/\*.*?\*\//,C=/^\/\*.*/,w=/^.*?\*\//;function N(e,r){if(e.eatSpace())return null;if(r.inComment)return e.match(w)?(r.inComment=!1,"comment"):(e.skipToEnd(),"comment");if(e.match("//"))return e.skipToEnd(),"comment";if(e.match(E))return"comment";if(e.match(C))return r.inComment=!0,"comment";if(e.match(/^-?[0-9\.]/,!1)&&(e.match(g)||e.match(h)))return"number";if(e.match(k))return"string";if(r.startDef&&e.match(i))return"def";if(r.endDef&&e.match(D))return r.endDef=!1,"def";if(e.match(s))return"keyword";if(e.match(m)){var t=r.lastToken,n=(e.match(/^\s*(.+?)\b/,!1)||[])[1];return t===":"||t==="implements"||n==="implements"||n==="="?"builtin":"type"}return e.match(u)?"builtin":e.match(y)?"atom":e.match(i)?"variable":e.match(A)?"operator":(e.next(),null)}const S={name:"webidl",startState:function(){return{inComment:!1,lastToken:"",startDef:!1,endDef:!1}},token:function(e,r){var t=N(e,r);if(t){var n=e.current();r.lastToken=n,t==="keyword"?(r.startDef=p.test(n),r.endDef=r.endDef||v.test(n)):r.startDef=!1}return t},languageData:{autocomplete:l.concat(o).concat(c).concat(f)}};export{S as webIDL}; diff --git a/frontend/dist/assets/xquery-DzFWVndE.js b/frontend/dist/assets/xquery-DzFWVndE.js new file mode 100644 index 0000000..0ffb311 --- /dev/null +++ b/frontend/dist/assets/xquery-DzFWVndE.js @@ -0,0 +1 @@ +var d=(function(){function e(w){return{type:w,style:"keyword"}}for(var n=e("operator"),t={type:"atom",style:"atom"},i={type:"punctuation",style:null},o={type:"axis_specifier",style:"qualifier"},l={",":i},p=["after","all","allowing","ancestor","ancestor-or-self","any","array","as","ascending","at","attribute","base-uri","before","boundary-space","by","case","cast","castable","catch","child","collation","comment","construction","contains","content","context","copy","copy-namespaces","count","decimal-format","declare","default","delete","descendant","descendant-or-self","descending","diacritics","different","distance","document","document-node","element","else","empty","empty-sequence","encoding","end","entire","every","exactly","except","external","first","following","following-sibling","for","from","ftand","ftnot","ft-option","ftor","function","fuzzy","greatest","group","if","import","in","inherit","insensitive","insert","instance","intersect","into","invoke","is","item","language","last","lax","least","let","levels","lowercase","map","modify","module","most","namespace","next","no","node","nodes","no-inherit","no-preserve","not","occurs","of","only","option","order","ordered","ordering","paragraph","paragraphs","parent","phrase","preceding","preceding-sibling","preserve","previous","processing-instruction","relationship","rename","replace","return","revalidation","same","satisfies","schema","schema-attribute","schema-element","score","self","sensitive","sentence","sentences","sequence","skip","sliding","some","stable","start","stemming","stop","strict","strip","switch","text","then","thesaurus","times","to","transform","treat","try","tumbling","type","typeswitch","union","unordered","update","updating","uppercase","using","validate","value","variable","version","weight","when","where","wildcards","window","with","without","word","words","xquery"],r=0,a=p.length;r",">=","<","<=",".","|","?","and","or","div","idiv","mod","*","/","+","-"],r=0,a=f.length;r\"\'\/?]/);)p+=r;return x(e,n,S(p,l))}else{if(t=="{")return s(n,{type:"codeblock"}),null;if(t=="}")return c(n),null;if(b(n))return t==">"?"tag":t=="/"&&e.eat(">")?(c(n),"tag"):"variable";if(/\d/.test(t))return e.match(/^\d*(?:\.\d*)?(?:E[+\-]?\d+)?/),"atom";if(t==="("&&e.eat(":"))return s(n,{type:"comment"}),x(e,n,z);if(!o&&(t==='"'||t==="'"))return m(e,n,t);if(t==="$")return x(e,n,T);if(t===":"&&e.eat("="))return"keyword";if(t==="(")return s(n,{type:"paren"}),null;if(t===")")return c(n),null;if(t==="[")return s(n,{type:"bracket"}),null;if(t==="]")return c(n),null;var a=d.propertyIsEnumerable(t)&&d[t];if(o&&t==='"')for(;e.next()!=='"';);if(o&&t==="'")for(;e.next()!=="'";);a||e.eatWhile(/[\w\$_-]/);var g=e.eat(":");!e.eat(":")&&g&&e.eatWhile(/[\w\$_-]/),e.match(/^[ \t]*\(/,!1)&&(i=!0);var f=e.current();return a=d.propertyIsEnumerable(f)&&d[f],i&&!a&&(a={type:"function_call",style:"def"}),D(n)?(c(n),"variable"):((f=="element"||f=="attribute"||a.type=="axis_specifier")&&s(n,{type:"xmlconstructor"}),a?a.style:"variable")}}function z(e,n){for(var t=!1,i=!1,o=0,l;l=e.next();){if(l==")"&&t)if(o>0)o--;else{c(n);break}else l==":"&&i&&o++;t=l==":",i=l=="("}return"comment"}function I(e,n){return function(t,i){for(var o;o=t.next();)if(o==e){c(i),n&&(i.tokenize=n);break}else if(t.match("{",!1)&&h(i))return s(i,{type:"codeblock"}),i.tokenize=u,"string";return"string"}}function m(e,n,t,i){let o=I(t,i);return s(n,{type:"string",name:t,tokenize:o}),x(e,n,o)}function T(e,n){var t=/[\w\$_-]/;if(e.eat('"')){for(;e.next()!=='"';);e.eat(":")}else e.eatWhile(t),e.match(":=",!1)||e.eat(":");return e.eatWhile(t),n.tokenize=u,"variable"}function S(e,n){return function(t,i){if(t.eatSpace(),n&&t.eat(">"))return c(i),i.tokenize=u,"tag";if(t.eat("/")||s(i,{type:"tag",name:e,tokenize:u}),t.eat(">"))i.tokenize=u;else return i.tokenize=y,"tag";return"tag"}}function y(e,n){var t=e.next();return t=="/"&&e.eat(">")?(h(n)&&c(n),b(n)&&c(n),"tag"):t==">"?(h(n)&&c(n),"tag"):t=="="?null:t=='"'||t=="'"?m(e,n,t,y):(h(n)||s(n,{type:"attribute",tokenize:y}),e.eat(/[a-zA-Z_:]/),e.eatWhile(/[-a-zA-Z0-9_:.]/),e.eatSpace(),(e.match(">",!1)||e.match("/",!1))&&(c(n),n.tokenize=u),"attribute")}function N(e,n){for(var t;t=e.next();)if(t=="-"&&e.match("->",!0))return n.tokenize=u,"comment"}function E(e,n){for(var t;t=e.next();)if(t=="]"&&e.match("]",!0))return n.tokenize=u,"comment"}function A(e,n){for(var t;t=e.next();)if(t=="?"&&e.match(">",!0))return n.tokenize=u,"processingInstruction"}function b(e){return k(e,"tag")}function h(e){return k(e,"attribute")}function D(e){return k(e,"xmlconstructor")}function _(e){return e.current()==='"'?e.match(/^[^\"]+\"\:/,!1):e.current()==="'"?e.match(/^[^\"]+\'\:/,!1):!1}function k(e,n){return e.stack.length&&e.stack[e.stack.length-1].type==n}function s(e,n){e.stack.push(n)}function c(e){e.stack.pop();var n=e.stack.length&&e.stack[e.stack.length-1].tokenize;e.tokenize=n||u}const C={name:"xquery",startState:function(){return{tokenize:u,cc:[],stack:[]}},token:function(e,n){if(e.eatSpace())return null;var t=n.tokenize(e,n);return t},languageData:{commentTokens:{block:{open:"(:",close:":)"}}}};export{C as xQuery}; diff --git a/frontend/dist/assets/yacas-BJ4BC0dw.js b/frontend/dist/assets/yacas-BJ4BC0dw.js new file mode 100644 index 0000000..4ea3241 --- /dev/null +++ b/frontend/dist/assets/yacas-BJ4BC0dw.js @@ -0,0 +1 @@ +function t(e){for(var n={},r=e.split(" "),o=0;o|<|&|\||_|`|'|\^|\?|!|%|#)/,!0,!1)?"operator":"error"}function v(e,n){for(var r,o=!1,i=!1;(r=e.next())!=null;){if(r==='"'&&!i){o=!0;break}i=!i&&r==="\\"}return o&&!i&&(n.tokenize=l),"string"}function h(e,n){for(var r,o;(o=e.next())!=null;){if(r==="*"&&o==="/"){n.tokenize=l;break}r=o}return"comment"}function c(e){var n=null;return e.scopes.length>0&&(n=e.scopes[e.scopes.length-1]),n}const b={name:"yacas",startState:function(){return{tokenize:l,scopes:[]}},token:function(e,n){return e.eatSpace()?null:n.tokenize(e,n)},indent:function(e,n,r){if(e.tokenize!==l&&e.tokenize!==null)return null;var o=0;return(n==="]"||n==="];"||n==="}"||n==="};"||n===");")&&(o=-1),(e.scopes.length+o)*r.unit},languageData:{electricInput:/[{}\[\]()\;]/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}};export{b as yacas}; diff --git a/frontend/dist/assets/z80-Hz9HOZM7.js b/frontend/dist/assets/z80-Hz9HOZM7.js new file mode 100644 index 0000000..c0ab5ea --- /dev/null +++ b/frontend/dist/assets/z80-Hz9HOZM7.js @@ -0,0 +1 @@ +function o(t){var n,l;t?(n=/^(exx?|(ld|cp)([di]r?)?|[lp]ea|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|[de]i|halt|im|in([di]mr?|ir?|irx|2r?)|ot(dmr?|[id]rx|imr?)|out(0?|[di]r?|[di]2r?)|tst(io)?|slp)(\.([sl]?i)?[sl])?\b/i,l=/^(((call|j[pr]|rst|ret[in]?)(\.([sl]?i)?[sl])?)|(rs|st)mix)\b/i):(n=/^(exx?|(ld|cp|in)([di]r?)?|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|rst|[de]i|halt|im|ot[di]r|out[di]?)\b/i,l=/^(call|j[pr]|ret[in]?|b_?(call|jump))\b/i);var u=/^(af?|bc?|c|de?|e|hl?|l|i[xy]?|r|sp)\b/i,d=/^(n?[zc]|p[oe]?|m)\b/i,f=/^([hl][xy]|i[xy][hl]|slia|sll)\b/i,c=/^([\da-f]+h|[0-7]+o|[01]+b|\d+d?)\b/i;return{name:"z80",startState:function(){return{context:0}},token:function(e,i){if(e.column()||(i.context=0),e.eatSpace())return null;var r;if(e.eatWhile(/\w/))if(t&&e.eat(".")&&e.eatWhile(/\w/),r=e.current(),e.indentation()){if((i.context==1||i.context==4)&&u.test(r))return i.context=4,"variable";if(i.context==2&&d.test(r))return i.context=4,"variableName.special";if(n.test(r))return i.context=1,"keyword";if(l.test(r))return i.context=2,"keyword";if(i.context==4&&c.test(r))return"number";if(f.test(r))return"error"}else return e.match(c)?"number":null;else{if(e.eat(";"))return e.skipToEnd(),"comment";if(e.eat('"')){for(;(r=e.next())&&r!='"';)r=="\\"&&e.next();return"string"}else if(e.eat("'")){if(e.match(/\\?.'/))return"number"}else if(e.eat(".")||e.sol()&&e.eat("#")){if(i.context=5,e.eatWhile(/\w/))return"def"}else if(e.eat("$")){if(e.eatWhile(/[\da-f]/i))return"number"}else if(e.eat("%")){if(e.eatWhile(/[01]/))return"number"}else e.next()}return null}}}const a=o(!1),s=o(!0);export{s as ez80,a as z80}; diff --git a/frontend/dist/favicon.ico b/frontend/dist/favicon.ico new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/frontend/dist/favicon.ico @@ -0,0 +1 @@ + diff --git a/frontend/dist/index.html b/frontend/dist/index.html new file mode 100644 index 0000000..482e158 --- /dev/null +++ b/frontend/dist/index.html @@ -0,0 +1,17 @@ + + + + + + + + + + 远光软件微调平台 + + + + +
    + + diff --git a/frontend/dist/logo.png b/frontend/dist/logo.png new file mode 100644 index 0000000..1de89ad Binary files /dev/null and b/frontend/dist/logo.png differ diff --git a/frontend/src/api/modules/compute.ts b/frontend/src/api/modules/compute.ts new file mode 100644 index 0000000..6d80d34 --- /dev/null +++ b/frontend/src/api/modules/compute.ts @@ -0,0 +1,85 @@ +import { get, post, put } from '../request' + +export interface ComputeNode { + id: string + code: string + name: string + api_base_url: string + file_gateway_url: string + enabled: boolean + scheduler_status: string + scheduler_weight: number + tags: string[] + gpu_count: number + current_running_jobs: number + max_parallel_jobs: number + data_root: string + model_root: string + log_root: string + last_health_check_at?: string +} + +export interface ComputeGpu { + id: number + node_id: string + node_code: string + node_name: string + name: string + uuid: string + status: string + gpu_percent: number + memory_used_gb: number + memory_total_gb: number + memory_percent: number + temperature: number + power_w: number + power_limit_w: number + processes?: Array<{ + pid: number + name: string + memory_used_gb: number + task_name?: string + user?: string + }> +} + +export interface ComputeQueueItem { + id: string + name: string + status: string + progress: number + compute_node_id?: string + gpus: number[] + create_time?: string +} + +export interface ResourceReplica { + id: string + node_id: string + resource_type: string + resource_id: string + local_path: string + status: string + sync_status: string + create_time: string +} + +export const getComputeNodes = () => get('/compute/nodes') + +export const updateComputeNode = (id: string, data: Partial) => + put(`/compute/nodes/${id}`, data) + +export const testComputeNode = (id: string) => + post<{ node_id: string; success: boolean; latency_ms: number }>(`/compute/nodes/${id}/test-connection`) + +export const enableComputeNode = (id: string) => post(`/compute/nodes/${id}/enable`) + +export const disableComputeNode = (id: string) => post(`/compute/nodes/${id}/disable`) + +export const drainComputeNode = (id: string) => post(`/compute/nodes/${id}/drain`) + +export const getComputeGpus = () => get('/compute/gpus') + +export const getComputeQueue = () => get('/compute/queue') + +export const getNodeReplicas = (id: string) => get(`/compute/nodes/${id}/replicas`) diff --git a/frontend/src/api/modules/dataset.ts b/frontend/src/api/modules/dataset.ts index e15c30b..546a4cf 100644 --- a/frontend/src/api/modules/dataset.ts +++ b/frontend/src/api/modules/dataset.ts @@ -89,10 +89,10 @@ export const downloadFileUrl = ( fileId: string | number, versionId?: string, ) => { - const baseUrl = `/api/dataset-manage/download/${datasetId}/${fileId}` + const baseUrl = `/modelTF/dataset-manage/download/${datasetId}/${fileId}` return versionId ? `${baseUrl}?version_id=${encodeURIComponent(versionId)}` : baseUrl } /** 打包下载数据集 URL */ export const downloadDatasetUrl = (datasetId: string | number) => - `/api/dataset-manage/download/${datasetId}` + `/modelTF/dataset-manage/download/${datasetId}` diff --git a/frontend/src/api/modules/model.ts b/frontend/src/api/modules/model.ts index 68aa240..6006b94 100644 --- a/frontend/src/api/modules/model.ts +++ b/frontend/src/api/modules/model.ts @@ -45,4 +45,4 @@ export const mergeModel = (data: { /** 导出已训练模型权重 */ export const exportModelUrl = (modelName: string) => - `/api/model-manage/trained-models/${encodeURIComponent(modelName)}/export` + `/modelTF/model-manage/trained-models/${encodeURIComponent(modelName)}/export` diff --git a/frontend/src/api/request.ts b/frontend/src/api/request.ts index 4c44b53..9c39c92 100644 --- a/frontend/src/api/request.ts +++ b/frontend/src/api/request.ts @@ -12,8 +12,8 @@ export interface ApiResult { } const service: AxiosInstance = axios.create({ - // 统一走相对路径,由 Vite 代理转发到 http://localhost:7861 - baseURL: '/api', + // Use a relative path; Vite proxies /modelTF to http://localhost:17861 in local development. + baseURL: '/modelTF', timeout: 30000, }) @@ -40,7 +40,8 @@ service.interceptors.response.use( return Promise.reject(new Error(message)) }, (error) => { - const message = error.response?.data?.message || error.message || '网络异常' + const detail = error.response?.data?.detail + const message = detail?.message || error.response?.data?.message || detail || error.message || '网络异常' ElMessage.error(message) return Promise.reject(error) }, diff --git a/frontend/src/assets/login-hero-flow.jpg b/frontend/src/assets/login-hero-flow.jpg new file mode 100644 index 0000000..5c139c4 Binary files /dev/null and b/frontend/src/assets/login-hero-flow.jpg differ diff --git a/frontend/src/components/AppSidebar.vue b/frontend/src/components/AppSidebar.vue index 97372f5..86473a7 100644 --- a/frontend/src/components/AppSidebar.vue +++ b/frontend/src/components/AppSidebar.vue @@ -68,6 +68,12 @@ const menuGroups: MenuGroup[] = [ title: '其他工具', items: [{ key: 'data-convert', label: '数据类型转换', icon: 'fa-exchange', to: '/data-convert', permission: 'data-convert' }], }, + { + title: '算力资源', + items: [ + { key: 'compute', label: '算力节点', icon: 'fa-microchip', to: '/compute', permission: 'compute' }, + ], + }, { title: '系统设置', items: [ diff --git a/frontend/src/env.d.ts b/frontend/src/env.d.ts index 443a7fa..9137277 100644 --- a/frontend/src/env.d.ts +++ b/frontend/src/env.d.ts @@ -1,7 +1,7 @@ /// interface ImportMetaEnv { - /** 是否启用前端 Mock;开发环境默认开启,生产环境默认关闭。 */ + /** 是否启用前端 Mock;默认关闭,仅限隔离前端开发时显式开启。 */ readonly VITE_ENABLE_MOCK?: 'true' | 'false' } diff --git a/frontend/src/main.ts b/frontend/src/main.ts index b4496e6..f111253 100644 --- a/frontend/src/main.ts +++ b/frontend/src/main.ts @@ -17,10 +17,8 @@ app.use(createPinia()) app.use(router) async function bootstrap() { - // 开发环境默认使用 Mock;生产环境只有显式开启时才加载整套 Mock 数据。 - // 这样真实部署不会被前端适配器截断请求,也不会把 Mock 数据打进首屏包。 + // Mock 仅允许显式开启。开发环境默认联调真实后端契约。 const shouldEnableMock = import.meta.env.VITE_ENABLE_MOCK === 'true' - || (import.meta.env.DEV && import.meta.env.VITE_ENABLE_MOCK !== 'false') if (shouldEnableMock) { const { installMockAdapter } = await import('@/mock/adapter') diff --git a/frontend/src/mock/users.ts b/frontend/src/mock/users.ts new file mode 100644 index 0000000..ff340b3 --- /dev/null +++ b/frontend/src/mock/users.ts @@ -0,0 +1,144 @@ +import type { + CreateUserPayload, + LoginResponse, + PermissionCode, + SystemUser, + UpdateUserAccessPayload, +} from '@/types' + +const STORAGE_KEY = 'mock:system-users' + +const allPermissions: PermissionCode[] = [ + 'dashboard', + 'fine-tune', + 'model-eval', + 'model-inference', + 'model-manage', + 'dataset', + 'data-process', + 'data-convert', + 'compute', + 'hardware', + 'logs', + 'user-settings', +] + +const defaultPasswords: Record = { + admin: 'admin123', + operator: 'operator123', +} + +export class UserMutationError extends Error { + status: number + + constructor(message: string, status = 400) { + super(message) + this.name = 'UserMutationError' + this.status = status + } +} + +function defaultUsers(): SystemUser[] { + return [ + { + id: 'u_admin', + username: 'admin', + display_name: 'Platform Admin', + role: 'admin', + status: 'active', + permissions: allPermissions, + create_time: '2026-01-01T00:00:00Z', + protected: true, + }, + { + id: 'u_operator', + username: 'operator', + display_name: 'Platform Operator', + role: 'operator', + status: 'active', + permissions: allPermissions.filter((item) => item !== 'user-settings'), + create_time: '2026-01-01T00:00:00Z', + protected: false, + }, + ] +} + +function readUsers(): SystemUser[] { + const raw = localStorage.getItem(STORAGE_KEY) + if (!raw) return defaultUsers() + try { + const users = JSON.parse(raw) as SystemUser[] + return users.length ? users : defaultUsers() + } catch { + return defaultUsers() + } +} + +function writeUsers(users: SystemUser[]) { + localStorage.setItem(STORAGE_KEY, JSON.stringify(users)) +} + +export function listMockUsers(): SystemUser[] { + return readUsers() +} + +export function authenticateMockUser(username: string, password: string): LoginResponse { + const users = readUsers() + const user = users.find((item) => item.username === username) + if (!user || user.status !== 'active') { + throw new UserMutationError('Invalid username or disabled account', 401) + } + const expected = defaultPasswords[username] || 'platform123' + if (password !== expected) { + throw new UserMutationError('Invalid username or password', 401) + } + user.last_login = new Date().toISOString() + writeUsers(users) + return { + token: `mock-token-${user.id}`, + user, + } +} + +export function createMockUser(payload: CreateUserPayload): SystemUser { + const users = readUsers() + if (users.some((item) => item.username === payload.username)) { + throw new UserMutationError('Username already exists', 409) + } + const user: SystemUser = { + id: `u_${Date.now()}`, + username: payload.username, + display_name: payload.display_name || payload.username, + role: payload.role, + status: payload.status || 'active', + permissions: payload.permissions || [], + create_time: new Date().toISOString(), + protected: false, + } + defaultPasswords[user.username] = payload.password || 'platform123' + users.push(user) + writeUsers(users) + return user +} + +export function updateMockUserAccess(id: string, payload: UpdateUserAccessPayload): SystemUser { + const users = readUsers() + const user = users.find((item) => item.id === id) + if (!user) throw new UserMutationError('User not found', 404) + if (payload.role) user.role = payload.role + if (payload.status) user.status = payload.status + if (payload.permissions) user.permissions = payload.permissions + writeUsers(users) + return user +} + +export function deleteMockUser(id: string, currentUsername: string): { deleted: string } { + const users = readUsers() + const user = users.find((item) => item.id === id) + if (!user) throw new UserMutationError('User not found', 404) + if (user.protected || user.username === currentUsername) { + throw new UserMutationError('Protected or current user cannot be deleted', 400) + } + writeUsers(users.filter((item) => item.id !== id)) + return { deleted: id } +} diff --git a/frontend/src/plugins/echarts-hardware.ts b/frontend/src/plugins/echarts-hardware.ts new file mode 100644 index 0000000..f7c1f9f --- /dev/null +++ b/frontend/src/plugins/echarts-hardware.ts @@ -0,0 +1,17 @@ +import { use } from 'echarts/core' +import { CanvasRenderer } from 'echarts/renderers' +import { GaugeChart, LineChart } from 'echarts/charts' +import { + GridComponent, + LegendComponent, + TooltipComponent, +} from 'echarts/components' + +use([ + CanvasRenderer, + LineChart, + GaugeChart, + GridComponent, + TooltipComponent, + LegendComponent, +]) diff --git a/frontend/src/plugins/echarts-training-log.ts b/frontend/src/plugins/echarts-training-log.ts new file mode 100644 index 0000000..4ce6041 --- /dev/null +++ b/frontend/src/plugins/echarts-training-log.ts @@ -0,0 +1,18 @@ +import { use } from 'echarts/core' +import { CanvasRenderer } from 'echarts/renderers' +import { LineChart } from 'echarts/charts' +import { + DataZoomComponent, + GridComponent, + LegendComponent, + TooltipComponent, +} from 'echarts/components' + +use([ + CanvasRenderer, + LineChart, + GridComponent, + TooltipComponent, + LegendComponent, + DataZoomComponent, +]) diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts index a51b5f3..c02d992 100644 --- a/frontend/src/router/index.ts +++ b/frontend/src/router/index.ts @@ -197,6 +197,24 @@ const routes: RouteRecordRaw[] = [ component: () => import('@/views/data-convert/DataConvertView.vue'), meta: { title: '数据类型转换' }, }, + { + path: 'compute', + name: 'compute', + component: () => import('@/views/compute/ComputeNodesView.vue'), + meta: { title: '算力节点', pageSurface: 'self', permission: 'compute' }, + }, + { + path: 'compute/gpus', + redirect: '/compute?tab=gpus', + }, + { + path: 'compute/queue', + redirect: '/compute?tab=queue', + }, + { + path: 'compute/nodes', + redirect: '/compute?tab=nodes', + }, // 系统设置 { path: 'permission-denied', @@ -264,6 +282,7 @@ const permissionBySegment: Record = { dataset: 'dataset', 'data-process': 'data-process', 'data-convert': 'data-convert', + compute: 'compute', tools: 'data-convert', hardware: 'hardware', logs: 'logs', diff --git a/frontend/src/stores/auth.ts b/frontend/src/stores/auth.ts index a4949d9..5a3eb24 100644 --- a/frontend/src/stores/auth.ts +++ b/frontend/src/stores/auth.ts @@ -15,6 +15,7 @@ const allPermissions: PermissionCode[] = [ 'dataset', 'data-process', 'data-convert', + 'compute', 'hardware', 'logs', 'user-settings', diff --git a/frontend/src/types/index.ts b/frontend/src/types/index.ts index b664c6c..450bcf4 100644 --- a/frontend/src/types/index.ts +++ b/frontend/src/types/index.ts @@ -394,6 +394,7 @@ export type PermissionCode = | 'dataset' | 'data-process' | 'data-convert' + | 'compute' | 'hardware' | 'logs' | 'user-settings' diff --git a/frontend/src/views/compute/ComputeNodesView.vue b/frontend/src/views/compute/ComputeNodesView.vue new file mode 100644 index 0000000..835d4ca --- /dev/null +++ b/frontend/src/views/compute/ComputeNodesView.vue @@ -0,0 +1,376 @@ + + + + + diff --git a/frontend/src/views/eval/create/BasicMetricSetupStep.vue b/frontend/src/views/eval/create/BasicMetricSetupStep.vue new file mode 100644 index 0000000..962a96d --- /dev/null +++ b/frontend/src/views/eval/create/BasicMetricSetupStep.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/frontend/src/views/eval/create/StartEvalStep.vue b/frontend/src/views/eval/create/StartEvalStep.vue new file mode 100644 index 0000000..8c48e6d --- /dev/null +++ b/frontend/src/views/eval/create/StartEvalStep.vue @@ -0,0 +1,49 @@ + + + + + diff --git a/frontend/src/views/guide/GuideView.vue b/frontend/src/views/guide/GuideView.vue new file mode 100644 index 0000000..4e7a078 --- /dev/null +++ b/frontend/src/views/guide/GuideView.vue @@ -0,0 +1,12 @@ + + + diff --git a/frontend/src/views/login/LoginView.vue b/frontend/src/views/login/LoginView.vue index 3b5e5e8..a13c282 100644 --- a/frontend/src/views/login/LoginView.vue +++ b/frontend/src/views/login/LoginView.vue @@ -11,8 +11,8 @@ const loginFormRef = ref() const loading = ref(false) const loginForm = reactive({ - username: 'admin', - password: 'admin', + username: '', + password: '', }) const rules: FormRules = { diff --git a/frontend/src/views/system/PermissionDeniedView.vue b/frontend/src/views/system/PermissionDeniedView.vue new file mode 100644 index 0000000..c00917b --- /dev/null +++ b/frontend/src/views/system/PermissionDeniedView.vue @@ -0,0 +1,12 @@ + + + diff --git a/frontend/src/views/system/UserCreateView.vue b/frontend/src/views/system/UserCreateView.vue new file mode 100644 index 0000000..b6cfb4f --- /dev/null +++ b/frontend/src/views/system/UserCreateView.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/frontend/src/views/system/UserPermissionView.vue b/frontend/src/views/system/UserPermissionView.vue new file mode 100644 index 0000000..a79c2b8 --- /dev/null +++ b/frontend/src/views/system/UserPermissionView.vue @@ -0,0 +1,12 @@ + + + diff --git a/frontend/src/views/system/UserSettingsView.vue b/frontend/src/views/system/UserSettingsView.vue new file mode 100644 index 0000000..ccf4534 --- /dev/null +++ b/frontend/src/views/system/UserSettingsView.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index 4e77070..0dc2a57 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -22,11 +22,11 @@ export default defineConfig({ }, }, server: { - port: 6801, + port: 16801, proxy: { - // 后端服务固定在 7861 端口,前端统一走 /api 相对路径 - '/api': { - target: 'http://localhost:7861', + // Frontend uses /modelTF and proxies to the local five-digit backend port. + '/modelTF': { + target: 'http://localhost:17861', changeOrigin: true, }, },