From 87e2fa5d650e43d90d47ed3fe2671f66149c4dda Mon Sep 17 00:00:00 2001
From: lvlizhe <1482084534@qq.com>
Date: Tue, 7 Jul 2026 11:24:53 +0800
Subject: [PATCH 1/5] =?UTF-8?q?Add=20plugin=20=E8=BF=9B=E7=A8=8B=E7=AB=AF?=
=?UTF-8?q?=E5=8F=A3=E7=AE=A1=E7=90=86=20v1.0.0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- feat: process port manager plugin - search processes by PID/port/name/path, kill with one click
- chore: add plugin description
- chore: readme
- feat: 使用 react-icons 库替换文本字符图标
- style: 自定义滚动条样式匹配主窗体风格
- feat: 将 Kill 确认弹窗改为页面级别模态框
- chore: readme
- style: 将主容器背景设为全透明
- fix: 修复透明背景下的颜色协调问题
- fix: 修复 hover 高亮边距不一致问题
- fix: 确保 pm-body 占满全部宽度
- fix: 修复滚动条与背景融合问题
- fix: 仅修改滚动条颜色不改变背景
- feat: 替换 logo 为 SVG 格式,更新截图和插件配置
- docs: 在 README 中展示 logo
- docs: 添加 MIT 协议文件
- docs: 添加与常见进程管理工具的对比优势
- docs: 简化优势描述为纯要点
- feat: 移除 Kill 按钮,改为右键直接 Kill,结果提示移至顶部
- feat: 右键弹出确认弹窗后再 Kill
- feat: 顶部改为操作提示「右键可 Kill 进程」,Kill 结果用 toast
- fix: 修复 JSX 结构导致的构建报错
- fix: 缩短弹窗动画时间,消除右键弹窗延迟感
- optimize: 优化界面和文档
- optimize: 优化文档
---
plugins/process-manager/.gitignore | 32 +
plugins/process-manager/LICENSE | 21 +
plugins/process-manager/README.md | 202 ++
.../2026-07-06-process-manager-design.md | 167 ++
.../specs/2026-07-06-process-manager-plan.md | 45 +
plugins/process-manager/index.html | 11 +
plugins/process-manager/package-lock.json | 1880 +++++++++++++++++
plugins/process-manager/package.json | 23 +
plugins/process-manager/pnpm-lock.yaml | 1059 ++++++++++
plugins/process-manager/public/logo.svg | 33 +
plugins/process-manager/public/plugin.json | 32 +
.../public/preload/package.json | 3 +
.../public/preload/services.js | 79 +
plugins/process-manager/snapshot/image1.png | Bin 0 -> 163127 bytes
plugins/process-manager/snapshot/image2.png | Bin 0 -> 105331 bytes
plugins/process-manager/snapshot/image3.png | Bin 0 -> 129590 bytes
plugins/process-manager/snapshot/image4.png | Bin 0 -> 74493 bytes
plugins/process-manager/src/App.tsx | 29 +
.../src/ProcessManager/index.css | 448 ++++
.../src/ProcessManager/index.tsx | 160 ++
.../src/ProcessManager/search.ts | 64 +
.../src/ProcessManager/useProcessData.ts | 60 +
plugins/process-manager/src/env.d.ts | 36 +
plugins/process-manager/src/main.css | 14 +
plugins/process-manager/src/main.tsx | 6 +
plugins/process-manager/tsconfig.json | 19 +
plugins/process-manager/vite.config.js | 8 +
27 files changed, 4431 insertions(+)
create mode 100644 plugins/process-manager/.gitignore
create mode 100644 plugins/process-manager/LICENSE
create mode 100644 plugins/process-manager/README.md
create mode 100644 plugins/process-manager/docs/superpowers/specs/2026-07-06-process-manager-design.md
create mode 100644 plugins/process-manager/docs/superpowers/specs/2026-07-06-process-manager-plan.md
create mode 100644 plugins/process-manager/index.html
create mode 100644 plugins/process-manager/package-lock.json
create mode 100644 plugins/process-manager/package.json
create mode 100644 plugins/process-manager/pnpm-lock.yaml
create mode 100644 plugins/process-manager/public/logo.svg
create mode 100644 plugins/process-manager/public/plugin.json
create mode 100644 plugins/process-manager/public/preload/package.json
create mode 100644 plugins/process-manager/public/preload/services.js
create mode 100644 plugins/process-manager/snapshot/image1.png
create mode 100644 plugins/process-manager/snapshot/image2.png
create mode 100644 plugins/process-manager/snapshot/image3.png
create mode 100644 plugins/process-manager/snapshot/image4.png
create mode 100644 plugins/process-manager/src/App.tsx
create mode 100644 plugins/process-manager/src/ProcessManager/index.css
create mode 100644 plugins/process-manager/src/ProcessManager/index.tsx
create mode 100644 plugins/process-manager/src/ProcessManager/search.ts
create mode 100644 plugins/process-manager/src/ProcessManager/useProcessData.ts
create mode 100644 plugins/process-manager/src/env.d.ts
create mode 100644 plugins/process-manager/src/main.css
create mode 100644 plugins/process-manager/src/main.tsx
create mode 100644 plugins/process-manager/tsconfig.json
create mode 100644 plugins/process-manager/vite.config.js
diff --git a/plugins/process-manager/.gitignore b/plugins/process-manager/.gitignore
new file mode 100644
index 00000000..2cbd7ded
--- /dev/null
+++ b/plugins/process-manager/.gitignore
@@ -0,0 +1,32 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
+
+# vibe coding
+.agents
+.reasonix
+reasonix*
+.opencode
+skills-lock.json
+
diff --git a/plugins/process-manager/LICENSE b/plugins/process-manager/LICENSE
new file mode 100644
index 00000000..2339c405
--- /dev/null
+++ b/plugins/process-manager/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2026 lvlizhe
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/plugins/process-manager/README.md b/plugins/process-manager/README.md
new file mode 100644
index 00000000..1aa91281
--- /dev/null
+++ b/plugins/process-manager/README.md
@@ -0,0 +1,202 @@
+
+
+
+
+进程端口管理
+Process Port Manager — 为 ZTools 打造的进程端口管理插件
+
+
+
+
+
+
+> 🤖 **本项目由 [Vibe Coding](https://github.com/nicepkg/vibe-coding) 维护** — AI 辅助驱动的开发模式,让想法快速变为代码。
+
+---
+
+## 💡 为什么选择 Process Port Manager?
+
+- **UI 和谐统一** — 背景、字体、配色沿用 ZTools 本身,如同原生功能,无视觉割裂感
+- **信息简洁清晰** — 只展示进程名、PID、端口、路径等关键信息,点击任意字段即可一键复制
+- **开放源代码** — MIT 协议开源,可自由修改、扩展、二次开发
+
+---
+
+
+## 📸 界面预览
+### 暗黑
+
+
+
+### 明亮
+
+
+
+## ✨ 功能特性
+
+- **🔍 多维搜索** — 支持按进程名、PID、端口号、文件路径模糊搜索,一处输入全字段匹配
+- **📋 一键复制** — 点击进程名 / PID / 端口号 / 路径即可复制到剪贴板
+- **⚡ 一键 Kill** — 确认后通过 `taskkill /F` 强制终止进程
+- **🔄 自动刷新** — 5 秒缓存 TTL,进度条直观展示缓存倒计时
+- **🌙 暗色模式** — 跟随系统主题自适应
+- **🪟 Windows 原生** — 基于 `wmic` / `netstat` / `tasklist`,无第三方依赖
+
+
+## 🚀 快速开始
+
+### 安装依赖
+
+```bash
+npm install
+```
+
+### 开发模式
+
+```bash
+npm run dev
+```
+
+开发服务器将在 `http://localhost:5173` 启动。ZTools 会自动加载开发版本。
+
+### 构建生产版本
+
+```bash
+npm run build
+```
+
+构建产物将输出到 `dist/` 目录。
+
+## 📁 项目结构
+
+```
+.
+├── public/
+│ ├── logo.svg # 插件图标(SVG)
+│ ├── plugin.json # 插件配置(功能指令、平台等)
+│ └── preload/
+│ └── services.js # Node.js 层:进程枚举、端口扫描、Kill
+├── src/
+│ ├── main.tsx # 入口文件
+│ ├── main.css # 全局样式(含暗色模式)
+│ ├── App.tsx # 根组件(路由分发)
+│ ├── env.d.ts # 类型声明(ztools / services)
+│ └── ProcessManager/
+│ ├── index.tsx # 主界面组件
+│ ├── index.css # 组件样式
+│ ├── search.ts # 多功能搜索(进程名/PID/端口/路径)
+│ └── useProcessData.ts # 进程数据获取 + 缓存 + 定时刷新
+├── index.html
+├── vite.config.js
+├── tsconfig.json
+├── package.json
+└── README.md
+```
+
+## 🧠 核心逻辑
+
+### 数据流
+
+```
+┌─────────────────────┐
+│ services.js │ ← Node.js preload
+│ ─ listProcesses() │ wmic / tasklist
+│ ─ scanPorts() │ netstat -ano
+│ ─ killProcess() │ taskkill /F
+└────────┬────────────┘
+ │ window.services.*
+ ▼
+┌─────────────────────┐
+│ useProcessData.ts │ ← 5s 缓存 + 防抖刷新
+│ ─ processes[] │
+│ ─ refresh() │
+└────────┬────────────┘
+ ▼
+┌─────────────────────┐
+│ search.ts │ ← 按 PID/端口/进程名/路径 过滤
+│ ─ searchProcesses()│
+└────────┬────────────┘
+ ▼
+┌─────────────────────┐
+│ ProcessManager │ ← React 组件渲染
+│ → 进程列表 + Kill │
+└─────────────────────┘
+```
+
+### 主要依赖
+
+| 模块 | 职责 |
+| -------------------------- | --------------------------------------------------------------------- |
+| `services.js` | 通过 `wmic` 枚举进程、`netstat -ano` 扫描端口、`taskkill /F` 终止进程 |
+| `useProcessData.ts` | 管理进程数据状态,5 秒缓存 TTL,自动/手动刷新 |
+| `search.ts` | 多字段模糊匹配:进程名、PID、端口、路径 |
+| `ProcessManager/index.tsx` | 主界面:搜索栏、结果列表、Kill 按钮、Toast 提示 |
+
+## 🔧 插件配置
+
+编辑 `public/plugin.json`:
+
+```json
+{
+ "name": "process-manager",
+ "title": "进程端口管理",
+ "description": "快速搜索进程、端口、PID、路径,支持一键 Kill 进程,支持深色模式",
+ "features": [
+ {
+ "code": "process",
+ "explain": "快速搜索进程、端口、PID,支持一键 Kill",
+ "cmds": ["pid", "port", "process", "端口", "进程", "进程管理"]
+ }
+ ],
+ "platform": ["win32"]
+}
+```
+
+触发指令:`pid` / `port` / `process` / `端口` / `进程` / `进程管理`
+
+> ⚠ 当前仅支持 Windows 平台(依赖 `wmic`、`netstat`、`taskkill`)。
+
+## 📦 构建与发布
+
+```bash
+npm run build # 构建
+```
+
+将 `dist/` 目录中的所有文件复制到 ZTools 插件目录即可使用。
+
+## 🎨 样式开发
+
+组件使用 CSS 变量实现主题适配与暗色模式:
+
+```css
+/* 跟随 ZTools 主题 */
+.pm {
+ background: var(--bg-color);
+ color: var(--text-color);
+}
+
+/* 暗色模式自适应 */
+@media (prefers-color-scheme: dark) {
+ .pm-item {
+ background: #2a2a2a;
+ }
+}
+```
+
+## 🤖 Vibe Coding 说明
+
+本项目采用 **Vibe Coding** 理念进行维护:
+
+- **AI 优先** — 需求描述直接转化为可用代码,快速迭代
+- **最小阻力** — 减少手动配置,聚焦核心功能
+- **持续优化** — 在 AI 辅助下不断重构和完善
+
+欢迎通过 Issue 或 PR 贡献想法和改进!
+
+
+## 📄 开源协议
+
+MIT License
+
+---
+
+**优化建议或问题?欢迎提出 Issue!** 🎉
diff --git a/plugins/process-manager/docs/superpowers/specs/2026-07-06-process-manager-design.md b/plugins/process-manager/docs/superpowers/specs/2026-07-06-process-manager-design.md
new file mode 100644
index 00000000..0bb2ad9b
--- /dev/null
+++ b/plugins/process-manager/docs/superpowers/specs/2026-07-06-process-manager-design.md
@@ -0,0 +1,167 @@
+# Process Port Manager — Design Spec
+
+## Overview
+
+A ZTools plugin (utools-like launcher) for searching and killing Windows processes by PID, port number, process name, or file path. Built with React 18 + Vite + TypeScript, following the existing plugin template patterns.
+
+## Architecture
+
+**Approach: React component + preload services backend**
+
+```
+preload/services.js src/ProcessManager/
+ listProcesses() index.tsx (UI component)
+ scanPorts() index.css
+ killProcess(pid) useProcessData.ts (collection + cache hook)
+ search.ts (smart matching engine)
+```
+
+- `services.js` — thin system-command layer, exposes 3 async methods
+- React component — state management, search filtering, cache control, rendering
+- `search.ts` — pure function: `(keyword, processes) => filtered[]` with auto-detect matching
+
+## Data Flow
+
+```
+User types "8080"
+ │
+ ▼
+search.ts smart matching
+ │ auto-detects: number → match PID + Port
+ ▼
+Filter in cached process list
+ │
+ ├─ click Kill ──► services.killProcess(pid) ──► toast result
+ │
+ └─ continue typing ──► real-time filter (cache only, no re-collect)
+```
+
+**Cache strategy:**
+- On feature enter: call `listProcesses()` + `scanPorts()` once
+- Merge data by PID into `ProcessInfo[]`
+- Cache for 5 seconds
+- Within 5s: search filters cache only
+- After 5s: auto-refresh on next keystroke
+
+## Preload Services API
+
+```ts
+interface ProcessRaw { pid: number; name: string; path: string; status: string }
+interface PortEntry { port: number; pid: number; protocol: string }
+
+services.listProcesses(): Promise
+services.scanPorts(): Promise
+services.killProcess(pid: number): Promise<{ success: boolean; error?: string }>
+```
+
+**Windows implementation:**
+- `listProcesses` → `tasklist /FO CSV /NH`
+- `scanPorts` → `netstat -ano` parse all TCP/UDP (listening + established)
+- `killProcess` → `taskkill /PID /F`, catch error on permission failure
+
+## Smart Matching Engine
+
+Pure function with no side effects. Matching priority:
+
+| Input | Match behavior |
+|---|---|
+| `8080` (numeric) | Match PID and Port |
+| `chrome` (alpha) | Match process name (case-insensitive) |
+| `nginx.exe` (has `.exe`) | Match name + path |
+| `C:\Users` (has path sep) | Match file path |
+| `443 8080` (multiple nums) | Match multiple ports/PIDs |
+
+Sorting: exact match > prefix match > fuzzy contains.
+
+## Core Types
+
+```ts
+interface ProcessInfo {
+ pid: number
+ name: string
+ path: string
+ ports: number[]
+}
+```
+
+## UI Layout
+
+```
+┌─────────────────────────────────────┐
+│ 🔍 搜索进程... │
+│ [进程名] [PID] [路径...] [✕] │
+│ 🔌 8080 🔌 443 🔌 3000 │
+├─────────────────────────────────────┤
+│ [chrome.exe] [1234] 路径... [✕] │
+│ 🔌 8080 🔌 443 │
+├─────────────────────────────────────┤
+│ [node.exe] [5678] 路径... [✕] │
+│ 🔌 9229 │
+├─────────────────────────────────────┤
+│ 共3个结果 5s后自动刷新 │
+└─────────────────────────────────────┘
+```
+
+- **Row 1**: `[name tag] [PID tag] [path...]` + Kill `✕` button right-aligned, vertically centered
+- **Row 2**: Port tags `🔌 port`
+- Every info element is clickable to copy its content (toast: "已复制: xxx")
+- Search auto-focuses, real-time filtering
+
+## Interaction
+
+- Enter via ZTools command trigger (keywords: `pid`, `port`, `process`, `端口`, `进程`, `进程管理`)
+- Kill button click → confirmation dialog → `services.killProcess(pid)` → success/error toast
+- Permission errors shown as toast, not thrown
+
+## Theme / Color Scheme
+
+### Light — Blue-Purple (default)
+| Element | Background | Text |
+|---|---|---|
+| Process name tag | `#e8eaf6` | `#283593` |
+| PID tag | `#f3e8ff` | `#7c3aed` |
+| Port tag | `#eef2ff` | `#4f6ef7` |
+| Path | transparent | `#b0b0c0` |
+| Search box | `#f0f2f5` | `#333` |
+| Kill button | `#fee2e2` | `#ef4444` |
+| Kill hover | `#ef4444` | `#fff` |
+
+### Dark — Terminal Green
+| Element | Background | Text |
+|---|---|---|
+| Background | `#0d1117` | — |
+| Process name tag | `#1a3a2a` | `#7ee787` |
+| PID tag | `#3a2a1a` | `#d29922` |
+| Port tag | `#1a2a3a` | `#58a6ff` |
+| Path | transparent | `#8b949e` |
+| Search box | `#21262d` | `#c9d1d9` |
+| Kill button | `#3a1a1a` | `#fca5a5` |
+| Kill hover | `#ef4444` | `#fff` |
+
+## Theme Switching
+
+Theme follows the OS-level `prefers-color-scheme` media query. No manual toggle. When the user switches their OS between light/dark mode, the plugin adapts automatically via CSS media queries.
+
+Implementation: define two CSS classless theme blocks scoped by `@media (prefers-color-scheme: light/dark)`.
+
+## YAGNI Exclusions
+
+- No CPU/memory usage display (not needed for port/process search)
+- No process status tag (removed as not meaningful)
+- No continuous polling — cached 5s refresh only
+- No batch kill — single process kill only
+- No remote process management — local Windows only
+
+## Files to Create
+
+### New files
+- `src/ProcessManager/index.tsx` — main component
+- `src/ProcessManager/index.css` — styles
+- `src/ProcessManager/search.ts` — matching engine
+- `src/ProcessManager/useProcessData.ts` — data hook
+
+### Modified files
+- `public/plugin.json` — register new feature with cmds: `pid`, `port`, `process`, `端口`, `进程`, `进程管理`
+- `public/preload/services.js` — add listProcesses, scanPorts, killProcess
+- `src/App.tsx` — add ProcessManager route
+- `src/env.d.ts` — add types for new services
diff --git a/plugins/process-manager/docs/superpowers/specs/2026-07-06-process-manager-plan.md b/plugins/process-manager/docs/superpowers/specs/2026-07-06-process-manager-plan.md
new file mode 100644
index 00000000..f7aa6cd7
--- /dev/null
+++ b/plugins/process-manager/docs/superpowers/specs/2026-07-06-process-manager-plan.md
@@ -0,0 +1,45 @@
+# Process Port Manager — Implementation Plan
+
+## Step 1: preload services (`public/preload/services.js`)
+- Add `listProcesses()` using `tasklist /FO CSV /NH` (Windows)
+- Add `scanPorts()` using `netstat -ano` parsing
+- Add `killProcess(pid)` using `taskkill /PID /F`
+- Wrap all in try/catch, return structured results
+
+## Step 2: type declarations (`src/env.d.ts`)
+- Add `ProcessRaw`, `PortEntry`, `ProcessInfo` interfaces
+- Extend `Window.services` with new methods
+
+## Step 3: plugin config (`public/plugin.json`)
+- Register new feature `code: "process"` with cmds: `pid`, `port`, `process`, `端口`, `进程`, `进程管理`
+
+## Step 4: smart matching engine (`src/ProcessManager/search.ts`)
+- Pure function `searchProcesses(keyword, list): ProcessInfo[]`
+- Numeric detection → match PID + Port
+- Alpha detection → match name (case-insensitive)
+- Path detection → match path
+- Multiple values → OR match
+- Sort: exact > prefix > fuzzy
+
+## Step 5: data hook (`src/ProcessManager/useProcessData.ts`)
+- On mount: call `services.listProcesses()` + `services.scanPorts()`
+- Merge by PID into `ProcessInfo[]`
+- Cache with 5s TTL
+- Expose `processes`, `loading`, `refresh`, `lastFetched`
+
+## Step 6: UI component (`src/ProcessManager/index.tsx` + `index.css`)
+- Search input (auto-focus, controlled)
+- Result list with items showing: [name tag] [PID tag] [path...] + Kill button
+- Port tags on second row
+- Click-to-copy on each info element
+- Kill confirmation → call services.killProcess
+- Theme light/dark via `prefers-color-scheme`
+- Footer with count + refresh timer
+
+## Step 7: routing (`src/App.tsx`)
+- Import ProcessManager
+- Add route `process` → ProcessManager
+
+## Step 8: verify
+- `npm run build` passes
+- UI matches mockups
diff --git a/plugins/process-manager/index.html b/plugins/process-manager/index.html
new file mode 100644
index 00000000..84b7eb68
--- /dev/null
+++ b/plugins/process-manager/index.html
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/process-manager/package-lock.json b/plugins/process-manager/package-lock.json
new file mode 100644
index 00000000..d000b048
--- /dev/null
+++ b/plugins/process-manager/package-lock.json
@@ -0,0 +1,1880 @@
+{
+ "name": "process-manager",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "process-manager",
+ "version": "1.0.0",
+ "dependencies": {
+ "react": "^19.0.0",
+ "react-dom": "^19.0.0",
+ "react-icons": "^5.7.0"
+ },
+ "devDependencies": {
+ "@types/react": "^19.0.8",
+ "@types/react-dom": "^19.0.3",
+ "@vitejs/plugin-react": "^4.3.1",
+ "@ztools-center/ztools-api-types": "^1.0.1",
+ "typescript": "^5.3.0",
+ "vite": "^6.0.11"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.29.7.tgz",
+ "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.29.7",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.29.7.tgz",
+ "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.29.7.tgz",
+ "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.29.7",
+ "@babel/generator": "^7.29.7",
+ "@babel/helper-compilation-targets": "^7.29.7",
+ "@babel/helper-module-transforms": "^7.29.7",
+ "@babel/helpers": "^7.29.7",
+ "@babel/parser": "^7.29.7",
+ "@babel/template": "^7.29.7",
+ "@babel/traverse": "^7.29.7",
+ "@babel/types": "^7.29.7",
+ "@jridgewell/remapping": "^2.3.5",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.29.7.tgz",
+ "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.29.7",
+ "@babel/types": "^7.29.7",
+ "@jridgewell/gen-mapping": "^0.3.12",
+ "@jridgewell/trace-mapping": "^0.3.28",
+ "jsesc": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz",
+ "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.29.7",
+ "@babel/helper-validator-option": "^7.29.7",
+ "browserslist": "^4.24.0",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-globals": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-globals/-/helper-globals-7.29.7.tgz",
+ "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz",
+ "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.29.7",
+ "@babel/types": "^7.29.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz",
+ "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz",
+ "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz",
+ "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz",
+ "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz",
+ "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.29.7.tgz",
+ "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/template": "^7.29.7",
+ "@babel/types": "^7.29.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.29.7.tgz",
+ "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.29.7"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx-self": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.29.7.tgz",
+ "integrity": "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx-source": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.29.7.tgz",
+ "integrity": "sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.29.7.tgz",
+ "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.29.7",
+ "@babel/parser": "^7.29.7",
+ "@babel/types": "^7.29.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.29.7.tgz",
+ "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.29.7",
+ "@babel/generator": "^7.29.7",
+ "@babel/helper-globals": "^7.29.7",
+ "@babel/parser": "^7.29.7",
+ "@babel/template": "^7.29.7",
+ "@babel/types": "^7.29.7",
+ "debug": "^4.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.29.7.tgz",
+ "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz",
+ "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.25.12.tgz",
+ "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz",
+ "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.25.12.tgz",
+ "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz",
+ "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz",
+ "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz",
+ "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz",
+ "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz",
+ "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz",
+ "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz",
+ "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz",
+ "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz",
+ "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz",
+ "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz",
+ "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz",
+ "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz",
+ "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz",
+ "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz",
+ "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz",
+ "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz",
+ "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmmirror.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz",
+ "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz",
+ "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz",
+ "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz",
+ "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz",
+ "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.13",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
+ "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.0",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
+ "node_modules/@jridgewell/remapping": {
+ "version": "2.3.5",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/remapping/-/remapping-2.3.5.tgz",
+ "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.31",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
+ "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@rolldown/pluginutils": {
+ "version": "1.0.0-beta.27",
+ "resolved": "https://registry.npmmirror.com/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz",
+ "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.62.2",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.2.tgz",
+ "integrity": "sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.62.2",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.2.tgz",
+ "integrity": "sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.62.2",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.2.tgz",
+ "integrity": "sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.62.2",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.2.tgz",
+ "integrity": "sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-arm64": {
+ "version": "4.62.2",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.2.tgz",
+ "integrity": "sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-x64": {
+ "version": "4.62.2",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.2.tgz",
+ "integrity": "sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.62.2",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.2.tgz",
+ "integrity": "sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.62.2",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.2.tgz",
+ "integrity": "sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.62.2",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.2.tgz",
+ "integrity": "sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.62.2",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.2.tgz",
+ "integrity": "sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loong64-gnu": {
+ "version": "4.62.2",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.2.tgz",
+ "integrity": "sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loong64-musl": {
+ "version": "4.62.2",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.2.tgz",
+ "integrity": "sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-ppc64-gnu": {
+ "version": "4.62.2",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.2.tgz",
+ "integrity": "sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-ppc64-musl": {
+ "version": "4.62.2",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.2.tgz",
+ "integrity": "sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.62.2",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.2.tgz",
+ "integrity": "sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-musl": {
+ "version": "4.62.2",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.2.tgz",
+ "integrity": "sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.62.2",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.2.tgz",
+ "integrity": "sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.62.2",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.2.tgz",
+ "integrity": "sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-musl": {
+ "version": "4.62.2",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.2.tgz",
+ "integrity": "sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-openbsd-x64": {
+ "version": "4.62.2",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.2.tgz",
+ "integrity": "sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-openharmony-arm64": {
+ "version": "4.62.2",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.2.tgz",
+ "integrity": "sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.62.2",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.2.tgz",
+ "integrity": "sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.62.2",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.2.tgz",
+ "integrity": "sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-gnu": {
+ "version": "4.62.2",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.2.tgz",
+ "integrity": "sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.62.2",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.2.tgz",
+ "integrity": "sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@types/babel__core": {
+ "version": "7.20.5",
+ "resolved": "https://registry.npmmirror.com/@types/babel__core/-/babel__core-7.20.5.tgz",
+ "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7",
+ "@types/babel__generator": "*",
+ "@types/babel__template": "*",
+ "@types/babel__traverse": "*"
+ }
+ },
+ "node_modules/@types/babel__generator": {
+ "version": "7.27.0",
+ "resolved": "https://registry.npmmirror.com/@types/babel__generator/-/babel__generator-7.27.0.tgz",
+ "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__template": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmmirror.com/@types/babel__template/-/babel__template-7.4.4.tgz",
+ "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__traverse": {
+ "version": "7.28.0",
+ "resolved": "https://registry.npmmirror.com/@types/babel__traverse/-/babel__traverse-7.28.0.tgz",
+ "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.28.2"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.9.tgz",
+ "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/react": {
+ "version": "19.2.17",
+ "resolved": "https://registry.npmmirror.com/@types/react/-/react-19.2.17.tgz",
+ "integrity": "sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "csstype": "^3.2.2"
+ }
+ },
+ "node_modules/@types/react-dom": {
+ "version": "19.2.3",
+ "resolved": "https://registry.npmmirror.com/@types/react-dom/-/react-dom-19.2.3.tgz",
+ "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "^19.2.0"
+ }
+ },
+ "node_modules/@vitejs/plugin-react": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmmirror.com/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz",
+ "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.28.0",
+ "@babel/plugin-transform-react-jsx-self": "^7.27.1",
+ "@babel/plugin-transform-react-jsx-source": "^7.27.1",
+ "@rolldown/pluginutils": "1.0.0-beta.27",
+ "@types/babel__core": "^7.20.5",
+ "react-refresh": "^0.17.0"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0"
+ }
+ },
+ "node_modules/@ztools-center/ztools-api-types": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/@ztools-center/ztools-api-types/-/ztools-api-types-1.0.3.tgz",
+ "integrity": "sha512-dv1eOAIasAupqKaQL/gESk1i2+RebdM/1gvZhrvH2D/bo3enCUsAGJ8nrHnlCLBSOGB81eC/SU0IH8BNsUlmvA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/baseline-browser-mapping": {
+ "version": "2.10.42",
+ "resolved": "https://registry.npmmirror.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.42.tgz",
+ "integrity": "sha512-c/jurFrDLyui7o1J86yLkRu4LMsTYcBohveus7/I2Hzdn9KIP2bdJPTue/lR1KH46enoPbD77GKeSYNdyPoD3Q==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "baseline-browser-mapping": "dist/cli.cjs"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.28.5",
+ "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.28.5.tgz",
+ "integrity": "sha512-Cu2E6QejHWzuDMTkuwgpABFgDfZrXLQq5V13YOACZx4mFAG4IwGTbTfHPMr4WtxlHoXSM8FIuRwYYCz5XiabaQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "baseline-browser-mapping": "^2.10.42",
+ "caniuse-lite": "^1.0.30001800",
+ "electron-to-chromium": "^1.5.387",
+ "node-releases": "^2.0.50",
+ "update-browserslist-db": "^1.2.3"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001802",
+ "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001802.tgz",
+ "integrity": "sha512-vmv8ub2xwTNmljSKf82mtCk5JH7hC+YgzLj3P5zotvA0tPQ9016tdNNOG8WRca1IxOnhSsivB+J0z5FeE5LOUw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0"
+ },
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/csstype": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.2.3.tgz",
+ "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.5.387",
+ "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.387.tgz",
+ "integrity": "sha512-TaxwufTFDufvPEoXdhwVrA3UdFWBeWGkYoJ1K8ldF1xe6gKfth6iRNS5lTQ5JPNOHdGQm8PT1QYKUqFLCiUefQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/esbuild": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.25.12.tgz",
+ "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.25.12",
+ "@esbuild/android-arm": "0.25.12",
+ "@esbuild/android-arm64": "0.25.12",
+ "@esbuild/android-x64": "0.25.12",
+ "@esbuild/darwin-arm64": "0.25.12",
+ "@esbuild/darwin-x64": "0.25.12",
+ "@esbuild/freebsd-arm64": "0.25.12",
+ "@esbuild/freebsd-x64": "0.25.12",
+ "@esbuild/linux-arm": "0.25.12",
+ "@esbuild/linux-arm64": "0.25.12",
+ "@esbuild/linux-ia32": "0.25.12",
+ "@esbuild/linux-loong64": "0.25.12",
+ "@esbuild/linux-mips64el": "0.25.12",
+ "@esbuild/linux-ppc64": "0.25.12",
+ "@esbuild/linux-riscv64": "0.25.12",
+ "@esbuild/linux-s390x": "0.25.12",
+ "@esbuild/linux-x64": "0.25.12",
+ "@esbuild/netbsd-arm64": "0.25.12",
+ "@esbuild/netbsd-x64": "0.25.12",
+ "@esbuild/openbsd-arm64": "0.25.12",
+ "@esbuild/openbsd-x64": "0.25.12",
+ "@esbuild/openharmony-arm64": "0.25.12",
+ "@esbuild/sunos-x64": "0.25.12",
+ "@esbuild/win32-arm64": "0.25.12",
+ "@esbuild/win32-ia32": "0.25.12",
+ "@esbuild/win32-x64": "0.25.12"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/fdir": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmmirror.com/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/jsesc": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-3.1.0.tgz",
+ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.15",
+ "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.15.tgz",
+ "integrity": "sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.50",
+ "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.50.tgz",
+ "integrity": "sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.5.tgz",
+ "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.5.16",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.16.tgz",
+ "integrity": "sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.12",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/react": {
+ "version": "19.2.7",
+ "resolved": "https://registry.npmmirror.com/react/-/react-19.2.7.tgz",
+ "integrity": "sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "19.2.7",
+ "resolved": "https://registry.npmmirror.com/react-dom/-/react-dom-19.2.7.tgz",
+ "integrity": "sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ==",
+ "license": "MIT",
+ "dependencies": {
+ "scheduler": "^0.27.0"
+ },
+ "peerDependencies": {
+ "react": "^19.2.7"
+ }
+ },
+ "node_modules/react-icons": {
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.7.0.tgz",
+ "integrity": "sha512-LBLy340Rzqy6+/yVhZKT3B/QpP1BZaesGqasf09HPOBzRarcDIFH0WwXlXQfE7q7ipxK4MSiC5DIBWURCny6fw==",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "*"
+ }
+ },
+ "node_modules/react-refresh": {
+ "version": "0.17.0",
+ "resolved": "https://registry.npmmirror.com/react-refresh/-/react-refresh-0.17.0.tgz",
+ "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rollup": {
+ "version": "4.62.2",
+ "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.62.2.tgz",
+ "integrity": "sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "1.0.9"
+ },
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=18.0.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-android-arm-eabi": "4.62.2",
+ "@rollup/rollup-android-arm64": "4.62.2",
+ "@rollup/rollup-darwin-arm64": "4.62.2",
+ "@rollup/rollup-darwin-x64": "4.62.2",
+ "@rollup/rollup-freebsd-arm64": "4.62.2",
+ "@rollup/rollup-freebsd-x64": "4.62.2",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.62.2",
+ "@rollup/rollup-linux-arm-musleabihf": "4.62.2",
+ "@rollup/rollup-linux-arm64-gnu": "4.62.2",
+ "@rollup/rollup-linux-arm64-musl": "4.62.2",
+ "@rollup/rollup-linux-loong64-gnu": "4.62.2",
+ "@rollup/rollup-linux-loong64-musl": "4.62.2",
+ "@rollup/rollup-linux-ppc64-gnu": "4.62.2",
+ "@rollup/rollup-linux-ppc64-musl": "4.62.2",
+ "@rollup/rollup-linux-riscv64-gnu": "4.62.2",
+ "@rollup/rollup-linux-riscv64-musl": "4.62.2",
+ "@rollup/rollup-linux-s390x-gnu": "4.62.2",
+ "@rollup/rollup-linux-x64-gnu": "4.62.2",
+ "@rollup/rollup-linux-x64-musl": "4.62.2",
+ "@rollup/rollup-openbsd-x64": "4.62.2",
+ "@rollup/rollup-openharmony-arm64": "4.62.2",
+ "@rollup/rollup-win32-arm64-msvc": "4.62.2",
+ "@rollup/rollup-win32-ia32-msvc": "4.62.2",
+ "@rollup/rollup-win32-x64-gnu": "4.62.2",
+ "@rollup/rollup-win32-x64-msvc": "4.62.2",
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/scheduler": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/scheduler/-/scheduler-0.27.0.tgz",
+ "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==",
+ "license": "MIT"
+ },
+ "node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/tinyglobby": {
+ "version": "0.2.17",
+ "resolved": "https://registry.npmmirror.com/tinyglobby/-/tinyglobby-0.2.17.tgz",
+ "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/SuperchupuDev"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.9.3",
+ "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.9.3.tgz",
+ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
+ "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.1"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/vite": {
+ "version": "6.4.3",
+ "resolved": "https://registry.npmmirror.com/vite/-/vite-6.4.3.tgz",
+ "integrity": "sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "esbuild": "^0.25.0",
+ "fdir": "^6.4.4",
+ "picomatch": "^4.0.2",
+ "postcss": "^8.5.3",
+ "rollup": "^4.34.9",
+ "tinyglobby": "^0.2.13"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ },
+ "peerDependencies": {
+ "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
+ "jiti": ">=1.21.0",
+ "less": "*",
+ "lightningcss": "^1.21.0",
+ "sass": "*",
+ "sass-embedded": "*",
+ "stylus": "*",
+ "sugarss": "*",
+ "terser": "^5.16.0",
+ "tsx": "^4.8.1",
+ "yaml": "^2.4.2"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "jiti": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "lightningcss": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "sass-embedded": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ },
+ "tsx": {
+ "optional": true
+ },
+ "yaml": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true,
+ "license": "ISC"
+ }
+ }
+}
diff --git a/plugins/process-manager/package.json b/plugins/process-manager/package.json
new file mode 100644
index 00000000..8327b646
--- /dev/null
+++ b/plugins/process-manager/package.json
@@ -0,0 +1,23 @@
+{
+ "name": "process-manager",
+ "version": "1.0.0",
+ "description": "",
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "tsc && vite build"
+ },
+ "dependencies": {
+ "react": "^19.0.0",
+ "react-dom": "^19.0.0",
+ "react-icons": "^5.7.0"
+ },
+ "devDependencies": {
+ "@types/react": "^19.0.8",
+ "@types/react-dom": "^19.0.3",
+ "@vitejs/plugin-react": "^4.3.1",
+ "@ztools-center/ztools-api-types": "^1.0.1",
+ "typescript": "^5.3.0",
+ "vite": "^6.0.11"
+ }
+}
diff --git a/plugins/process-manager/pnpm-lock.yaml b/plugins/process-manager/pnpm-lock.yaml
new file mode 100644
index 00000000..63b770f3
--- /dev/null
+++ b/plugins/process-manager/pnpm-lock.yaml
@@ -0,0 +1,1059 @@
+lockfileVersion: '6.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+dependencies:
+ react:
+ specifier: ^19.0.0
+ version: 19.2.7
+ react-dom:
+ specifier: ^19.0.0
+ version: 19.2.7(react@19.2.7)
+
+devDependencies:
+ '@types/react':
+ specifier: ^19.0.8
+ version: 19.2.17
+ '@types/react-dom':
+ specifier: ^19.0.3
+ version: 19.2.3(@types/react@19.2.17)
+ '@vitejs/plugin-react':
+ specifier: ^4.3.1
+ version: 4.7.0(vite@6.4.3)
+ '@ztools-center/ztools-api-types':
+ specifier: ^1.0.1
+ version: 1.0.3
+ typescript:
+ specifier: ^5.3.0
+ version: 5.9.3
+ vite:
+ specifier: ^6.0.11
+ version: 6.4.3
+
+packages:
+
+ /@babel/code-frame@7.29.7:
+ resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-validator-identifier': 7.29.7
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+ dev: true
+
+ /@babel/compat-data@7.29.7:
+ resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/core@7.29.7:
+ resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': 7.29.7
+ '@babel/generator': 7.29.7
+ '@babel/helper-compilation-targets': 7.29.7
+ '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7)
+ '@babel/helpers': 7.29.7
+ '@babel/parser': 7.29.7
+ '@babel/template': 7.29.7
+ '@babel/traverse': 7.29.7
+ '@babel/types': 7.29.7
+ '@jridgewell/remapping': 2.3.5
+ convert-source-map: 2.0.0
+ debug: 4.4.3
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/generator@7.29.7:
+ resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/parser': 7.29.7
+ '@babel/types': 7.29.7
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+ jsesc: 3.1.0
+ dev: true
+
+ /@babel/helper-compilation-targets@7.29.7:
+ resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/compat-data': 7.29.7
+ '@babel/helper-validator-option': 7.29.7
+ browserslist: 4.28.5
+ lru-cache: 5.1.1
+ semver: 6.3.1
+ dev: true
+
+ /@babel/helper-globals@7.29.7:
+ resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/helper-module-imports@7.29.7:
+ resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/traverse': 7.29.7
+ '@babel/types': 7.29.7
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7):
+ resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.29.7
+ '@babel/helper-module-imports': 7.29.7
+ '@babel/helper-validator-identifier': 7.29.7
+ '@babel/traverse': 7.29.7
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/helper-plugin-utils@7.29.7:
+ resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/helper-string-parser@7.29.7:
+ resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/helper-validator-identifier@7.29.7:
+ resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/helper-validator-option@7.29.7:
+ resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/helpers@7.29.7:
+ resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/template': 7.29.7
+ '@babel/types': 7.29.7
+ dev: true
+
+ /@babel/parser@7.29.7:
+ resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+ dependencies:
+ '@babel/types': 7.29.7
+ dev: true
+
+ /@babel/plugin-transform-react-jsx-self@7.29.7(@babel/core@7.29.7):
+ resolution: {integrity: sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.29.7
+ '@babel/helper-plugin-utils': 7.29.7
+ dev: true
+
+ /@babel/plugin-transform-react-jsx-source@7.29.7(@babel/core@7.29.7):
+ resolution: {integrity: sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.29.7
+ '@babel/helper-plugin-utils': 7.29.7
+ dev: true
+
+ /@babel/template@7.29.7:
+ resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': 7.29.7
+ '@babel/parser': 7.29.7
+ '@babel/types': 7.29.7
+ dev: true
+
+ /@babel/traverse@7.29.7:
+ resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': 7.29.7
+ '@babel/generator': 7.29.7
+ '@babel/helper-globals': 7.29.7
+ '@babel/parser': 7.29.7
+ '@babel/template': 7.29.7
+ '@babel/types': 7.29.7
+ debug: 4.4.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/types@7.29.7:
+ resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-string-parser': 7.29.7
+ '@babel/helper-validator-identifier': 7.29.7
+ dev: true
+
+ /@esbuild/aix-ppc64@0.25.12:
+ resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [aix]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/android-arm64@0.25.12:
+ resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/android-arm@0.25.12:
+ resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/android-x64@0.25.12:
+ resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/darwin-arm64@0.25.12:
+ resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/darwin-x64@0.25.12:
+ resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/freebsd-arm64@0.25.12:
+ resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/freebsd-x64@0.25.12:
+ resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-arm64@0.25.12:
+ resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-arm@0.25.12:
+ resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-ia32@0.25.12:
+ resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-loong64@0.25.12:
+ resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==}
+ engines: {node: '>=18'}
+ cpu: [loong64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-mips64el@0.25.12:
+ resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==}
+ engines: {node: '>=18'}
+ cpu: [mips64el]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-ppc64@0.25.12:
+ resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-riscv64@0.25.12:
+ resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==}
+ engines: {node: '>=18'}
+ cpu: [riscv64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-s390x@0.25.12:
+ resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==}
+ engines: {node: '>=18'}
+ cpu: [s390x]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-x64@0.25.12:
+ resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/netbsd-arm64@0.25.12:
+ resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [netbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/netbsd-x64@0.25.12:
+ resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [netbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/openbsd-arm64@0.25.12:
+ resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/openbsd-x64@0.25.12:
+ resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [openbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/openharmony-arm64@0.25.12:
+ resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openharmony]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/sunos-x64@0.25.12:
+ resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [sunos]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/win32-arm64@0.25.12:
+ resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/win32-ia32@0.25.12:
+ resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/win32-x64@0.25.12:
+ resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@jridgewell/gen-mapping@0.3.13:
+ resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.5
+ '@jridgewell/trace-mapping': 0.3.31
+ dev: true
+
+ /@jridgewell/remapping@2.3.5:
+ resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+ dev: true
+
+ /@jridgewell/resolve-uri@3.1.2:
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
+ dev: true
+
+ /@jridgewell/sourcemap-codec@1.5.5:
+ resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
+ dev: true
+
+ /@jridgewell/trace-mapping@0.3.31:
+ resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.5.5
+ dev: true
+
+ /@rolldown/pluginutils@1.0.0-beta.27:
+ resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==}
+ dev: true
+
+ /@rollup/rollup-android-arm-eabi@4.62.2:
+ resolution: {integrity: sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==}
+ cpu: [arm]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-android-arm64@4.62.2:
+ resolution: {integrity: sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==}
+ cpu: [arm64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-darwin-arm64@4.62.2:
+ resolution: {integrity: sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-darwin-x64@4.62.2:
+ resolution: {integrity: sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-freebsd-arm64@4.62.2:
+ resolution: {integrity: sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==}
+ cpu: [arm64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-freebsd-x64@4.62.2:
+ resolution: {integrity: sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==}
+ cpu: [x64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-arm-gnueabihf@4.62.2:
+ resolution: {integrity: sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-arm-musleabihf@4.62.2:
+ resolution: {integrity: sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA==}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-arm64-gnu@4.62.2:
+ resolution: {integrity: sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA==}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-arm64-musl@4.62.2:
+ resolution: {integrity: sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ==}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-loong64-gnu@4.62.2:
+ resolution: {integrity: sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg==}
+ cpu: [loong64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-loong64-musl@4.62.2:
+ resolution: {integrity: sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ==}
+ cpu: [loong64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-ppc64-gnu@4.62.2:
+ resolution: {integrity: sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A==}
+ cpu: [ppc64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-ppc64-musl@4.62.2:
+ resolution: {integrity: sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w==}
+ cpu: [ppc64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-riscv64-gnu@4.62.2:
+ resolution: {integrity: sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg==}
+ cpu: [riscv64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-riscv64-musl@4.62.2:
+ resolution: {integrity: sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q==}
+ cpu: [riscv64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-s390x-gnu@4.62.2:
+ resolution: {integrity: sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg==}
+ cpu: [s390x]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-x64-gnu@4.62.2:
+ resolution: {integrity: sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A==}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-x64-musl@4.62.2:
+ resolution: {integrity: sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg==}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-openbsd-x64@4.62.2:
+ resolution: {integrity: sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg==}
+ cpu: [x64]
+ os: [openbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-openharmony-arm64@4.62.2:
+ resolution: {integrity: sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA==}
+ cpu: [arm64]
+ os: [openharmony]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-win32-arm64-msvc@4.62.2:
+ resolution: {integrity: sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg==}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-win32-ia32-msvc@4.62.2:
+ resolution: {integrity: sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q==}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-win32-x64-gnu@4.62.2:
+ resolution: {integrity: sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg==}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-win32-x64-msvc@4.62.2:
+ resolution: {integrity: sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA==}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@types/babel__core@7.20.5:
+ resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
+ dependencies:
+ '@babel/parser': 7.29.7
+ '@babel/types': 7.29.7
+ '@types/babel__generator': 7.27.0
+ '@types/babel__template': 7.4.4
+ '@types/babel__traverse': 7.28.0
+ dev: true
+
+ /@types/babel__generator@7.27.0:
+ resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==}
+ dependencies:
+ '@babel/types': 7.29.7
+ dev: true
+
+ /@types/babel__template@7.4.4:
+ resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
+ dependencies:
+ '@babel/parser': 7.29.7
+ '@babel/types': 7.29.7
+ dev: true
+
+ /@types/babel__traverse@7.28.0:
+ resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==}
+ dependencies:
+ '@babel/types': 7.29.7
+ dev: true
+
+ /@types/estree@1.0.9:
+ resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==}
+ dev: true
+
+ /@types/react-dom@19.2.3(@types/react@19.2.17):
+ resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==}
+ peerDependencies:
+ '@types/react': ^19.2.0
+ dependencies:
+ '@types/react': 19.2.17
+ dev: true
+
+ /@types/react@19.2.17:
+ resolution: {integrity: sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==}
+ dependencies:
+ csstype: 3.2.3
+ dev: true
+
+ /@vitejs/plugin-react@4.7.0(vite@6.4.3):
+ resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
+ dependencies:
+ '@babel/core': 7.29.7
+ '@babel/plugin-transform-react-jsx-self': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-react-jsx-source': 7.29.7(@babel/core@7.29.7)
+ '@rolldown/pluginutils': 1.0.0-beta.27
+ '@types/babel__core': 7.20.5
+ react-refresh: 0.17.0
+ vite: 6.4.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@ztools-center/ztools-api-types@1.0.3:
+ resolution: {integrity: sha512-dv1eOAIasAupqKaQL/gESk1i2+RebdM/1gvZhrvH2D/bo3enCUsAGJ8nrHnlCLBSOGB81eC/SU0IH8BNsUlmvA==}
+ dev: true
+
+ /baseline-browser-mapping@2.10.42:
+ resolution: {integrity: sha512-c/jurFrDLyui7o1J86yLkRu4LMsTYcBohveus7/I2Hzdn9KIP2bdJPTue/lR1KH46enoPbD77GKeSYNdyPoD3Q==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+ dev: true
+
+ /browserslist@4.28.5:
+ resolution: {integrity: sha512-Cu2E6QejHWzuDMTkuwgpABFgDfZrXLQq5V13YOACZx4mFAG4IwGTbTfHPMr4WtxlHoXSM8FIuRwYYCz5XiabaQ==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+ dependencies:
+ baseline-browser-mapping: 2.10.42
+ caniuse-lite: 1.0.30001802
+ electron-to-chromium: 1.5.387
+ node-releases: 2.0.50
+ update-browserslist-db: 1.2.3(browserslist@4.28.5)
+ dev: true
+
+ /caniuse-lite@1.0.30001802:
+ resolution: {integrity: sha512-vmv8ub2xwTNmljSKf82mtCk5JH7hC+YgzLj3P5zotvA0tPQ9016tdNNOG8WRca1IxOnhSsivB+J0z5FeE5LOUw==}
+ dev: true
+
+ /convert-source-map@2.0.0:
+ resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+ dev: true
+
+ /csstype@3.2.3:
+ resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
+ dev: true
+
+ /debug@4.4.3:
+ resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.1.3
+ dev: true
+
+ /electron-to-chromium@1.5.387:
+ resolution: {integrity: sha512-TaxwufTFDufvPEoXdhwVrA3UdFWBeWGkYoJ1K8ldF1xe6gKfth6iRNS5lTQ5JPNOHdGQm8PT1QYKUqFLCiUefQ==}
+ dev: true
+
+ /esbuild@0.25.12:
+ resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==}
+ engines: {node: '>=18'}
+ hasBin: true
+ requiresBuild: true
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.25.12
+ '@esbuild/android-arm': 0.25.12
+ '@esbuild/android-arm64': 0.25.12
+ '@esbuild/android-x64': 0.25.12
+ '@esbuild/darwin-arm64': 0.25.12
+ '@esbuild/darwin-x64': 0.25.12
+ '@esbuild/freebsd-arm64': 0.25.12
+ '@esbuild/freebsd-x64': 0.25.12
+ '@esbuild/linux-arm': 0.25.12
+ '@esbuild/linux-arm64': 0.25.12
+ '@esbuild/linux-ia32': 0.25.12
+ '@esbuild/linux-loong64': 0.25.12
+ '@esbuild/linux-mips64el': 0.25.12
+ '@esbuild/linux-ppc64': 0.25.12
+ '@esbuild/linux-riscv64': 0.25.12
+ '@esbuild/linux-s390x': 0.25.12
+ '@esbuild/linux-x64': 0.25.12
+ '@esbuild/netbsd-arm64': 0.25.12
+ '@esbuild/netbsd-x64': 0.25.12
+ '@esbuild/openbsd-arm64': 0.25.12
+ '@esbuild/openbsd-x64': 0.25.12
+ '@esbuild/openharmony-arm64': 0.25.12
+ '@esbuild/sunos-x64': 0.25.12
+ '@esbuild/win32-arm64': 0.25.12
+ '@esbuild/win32-ia32': 0.25.12
+ '@esbuild/win32-x64': 0.25.12
+ dev: true
+
+ /escalade@3.2.0:
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /fdir@6.5.0(picomatch@4.0.5):
+ resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ picomatch: ^3 || ^4
+ peerDependenciesMeta:
+ picomatch:
+ optional: true
+ dependencies:
+ picomatch: 4.0.5
+ dev: true
+
+ /fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /gensync@1.0.0-beta.2:
+ resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+ dev: true
+
+ /jsesc@3.1.0:
+ resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
+ engines: {node: '>=6'}
+ hasBin: true
+ dev: true
+
+ /json5@2.2.3:
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+ engines: {node: '>=6'}
+ hasBin: true
+ dev: true
+
+ /lru-cache@5.1.1:
+ resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+ dependencies:
+ yallist: 3.1.1
+ dev: true
+
+ /ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+ dev: true
+
+ /nanoid@3.3.15:
+ resolution: {integrity: sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+ dev: true
+
+ /node-releases@2.0.50:
+ resolution: {integrity: sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg==}
+ engines: {node: '>=18'}
+ dev: true
+
+ /picocolors@1.1.1:
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+ dev: true
+
+ /picomatch@4.0.5:
+ resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /postcss@8.5.16:
+ resolution: {integrity: sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==}
+ engines: {node: ^10 || ^12 || >=14}
+ dependencies:
+ nanoid: 3.3.15
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+ dev: true
+
+ /react-dom@19.2.7(react@19.2.7):
+ resolution: {integrity: sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ==}
+ peerDependencies:
+ react: ^19.2.7
+ dependencies:
+ react: 19.2.7
+ scheduler: 0.27.0
+ dev: false
+
+ /react-refresh@0.17.0:
+ resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /react@19.2.7:
+ resolution: {integrity: sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /rollup@4.62.2:
+ resolution: {integrity: sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==}
+ engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+ hasBin: true
+ dependencies:
+ '@types/estree': 1.0.9
+ optionalDependencies:
+ '@rollup/rollup-android-arm-eabi': 4.62.2
+ '@rollup/rollup-android-arm64': 4.62.2
+ '@rollup/rollup-darwin-arm64': 4.62.2
+ '@rollup/rollup-darwin-x64': 4.62.2
+ '@rollup/rollup-freebsd-arm64': 4.62.2
+ '@rollup/rollup-freebsd-x64': 4.62.2
+ '@rollup/rollup-linux-arm-gnueabihf': 4.62.2
+ '@rollup/rollup-linux-arm-musleabihf': 4.62.2
+ '@rollup/rollup-linux-arm64-gnu': 4.62.2
+ '@rollup/rollup-linux-arm64-musl': 4.62.2
+ '@rollup/rollup-linux-loong64-gnu': 4.62.2
+ '@rollup/rollup-linux-loong64-musl': 4.62.2
+ '@rollup/rollup-linux-ppc64-gnu': 4.62.2
+ '@rollup/rollup-linux-ppc64-musl': 4.62.2
+ '@rollup/rollup-linux-riscv64-gnu': 4.62.2
+ '@rollup/rollup-linux-riscv64-musl': 4.62.2
+ '@rollup/rollup-linux-s390x-gnu': 4.62.2
+ '@rollup/rollup-linux-x64-gnu': 4.62.2
+ '@rollup/rollup-linux-x64-musl': 4.62.2
+ '@rollup/rollup-openbsd-x64': 4.62.2
+ '@rollup/rollup-openharmony-arm64': 4.62.2
+ '@rollup/rollup-win32-arm64-msvc': 4.62.2
+ '@rollup/rollup-win32-ia32-msvc': 4.62.2
+ '@rollup/rollup-win32-x64-gnu': 4.62.2
+ '@rollup/rollup-win32-x64-msvc': 4.62.2
+ fsevents: 2.3.3
+ dev: true
+
+ /scheduler@0.27.0:
+ resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==}
+ dev: false
+
+ /semver@6.3.1:
+ resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
+ hasBin: true
+ dev: true
+
+ /source-map-js@1.2.1:
+ resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /tinyglobby@0.2.17:
+ resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==}
+ engines: {node: '>=12.0.0'}
+ dependencies:
+ fdir: 6.5.0(picomatch@4.0.5)
+ picomatch: 4.0.5
+ dev: true
+
+ /typescript@5.9.3:
+ resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+ dev: true
+
+ /update-browserslist-db@1.2.3(browserslist@4.28.5):
+ resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+ dependencies:
+ browserslist: 4.28.5
+ escalade: 3.2.0
+ picocolors: 1.1.1
+ dev: true
+
+ /vite@6.4.3:
+ resolution: {integrity: sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==}
+ engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
+ jiti: '>=1.21.0'
+ less: '*'
+ lightningcss: ^1.21.0
+ sass: '*'
+ sass-embedded: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.16.0
+ tsx: ^4.8.1
+ yaml: ^2.4.2
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ jiti:
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ tsx:
+ optional: true
+ yaml:
+ optional: true
+ dependencies:
+ esbuild: 0.25.12
+ fdir: 6.5.0(picomatch@4.0.5)
+ picomatch: 4.0.5
+ postcss: 8.5.16
+ rollup: 4.62.2
+ tinyglobby: 0.2.17
+ optionalDependencies:
+ fsevents: 2.3.3
+ dev: true
+
+ /yallist@3.1.1:
+ resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
+ dev: true
diff --git a/plugins/process-manager/public/logo.svg b/plugins/process-manager/public/logo.svg
new file mode 100644
index 00000000..7300af33
--- /dev/null
+++ b/plugins/process-manager/public/logo.svg
@@ -0,0 +1,33 @@
+
\ No newline at end of file
diff --git a/plugins/process-manager/public/plugin.json b/plugins/process-manager/public/plugin.json
new file mode 100644
index 00000000..3511a65b
--- /dev/null
+++ b/plugins/process-manager/public/plugin.json
@@ -0,0 +1,32 @@
+{
+ "$schema": "node_modules/@ztools-center/ztools-api-types/resource/ztools.schema.json",
+ "name": "process-manager",
+ "title": "进程端口管理",
+ "description": "快速搜索进程、端口、PID、路径,支持一键 Kill 进程,支持深色模式",
+ "author": "",
+ "version": "1.0.0",
+ "main": "index.html",
+ "preload": "preload/services.js",
+ "logo": "logo.svg",
+ "development": {
+ "main": "http://localhost:5173"
+ },
+ "features": [
+ {
+ "code": "process",
+ "explain": "快速搜索进程、端口、PID,支持一键 Kill",
+ "icon": "logo.svg",
+ "cmds": [
+ "pid",
+ "port",
+ "process",
+ "端口",
+ "进程",
+ "进程管理"
+ ]
+ }
+ ],
+ "platform": [
+ "win32"
+ ]
+}
\ No newline at end of file
diff --git a/plugins/process-manager/public/preload/package.json b/plugins/process-manager/public/preload/package.json
new file mode 100644
index 00000000..5bbefffb
--- /dev/null
+++ b/plugins/process-manager/public/preload/package.json
@@ -0,0 +1,3 @@
+{
+ "type": "commonjs"
+}
diff --git a/plugins/process-manager/public/preload/services.js b/plugins/process-manager/public/preload/services.js
new file mode 100644
index 00000000..1705ed44
--- /dev/null
+++ b/plugins/process-manager/public/preload/services.js
@@ -0,0 +1,79 @@
+const { exec } = require('node:child_process')
+
+function execAsync(cmd, timeout) {
+ return new Promise((resolve) => {
+ exec(cmd, { encoding: 'utf-8', timeout }, (err, stdout) => {
+ resolve(err ? '' : stdout)
+ })
+ })
+}
+
+function parseWmicCsv(output) {
+ const lines = output.trim().split('\n')
+ if (lines.length < 2) return []
+ const header = lines[0].split(',').map(h => h.trim().toLowerCase())
+ const nameIdx = header.indexOf('name')
+ const pidIdx = header.indexOf('processid')
+ const pathIdx = header.indexOf('executablepath')
+ if (nameIdx === -1 || pidIdx === -1) return []
+
+ return lines.slice(1).map(line => {
+ const parts = line.startsWith('"')
+ ? line.replace(/^"|"$/g, '').split('","')
+ : line.split(',')
+ return {
+ name: (parts[nameIdx] || '').trim(),
+ pid: parseInt(parts[pidIdx], 10) || 0,
+ path: (parts[pathIdx] || '').trim()
+ }
+ }).filter(p => p && p.pid > 0)
+}
+
+function parseNetstat(output) {
+ const lines = output.trim().split('\n')
+ const ports = []
+ for (const line of lines) {
+ const parts = line.trim().split(/\s+/)
+ if (parts.length < 5) continue
+ const addr = parts[1]
+ const pid = parseInt(parts[4], 10)
+ if (!addr || isNaN(pid)) continue
+ const portMatch = addr.match(/:(\d+)$/)
+ if (portMatch) {
+ ports.push({ port: parseInt(portMatch[1], 10), pid, protocol: parts[0] })
+ }
+ }
+ return ports
+}
+
+window.services = {
+ async listProcesses() {
+ let raw = await execAsync('wmic process get ProcessId,Name,ExecutablePath /FORMAT:CSV', 8000)
+ if (raw) return parseWmicCsv(raw)
+ raw = await execAsync('tasklist /FO CSV /NH', 5000)
+ if (!raw) return []
+ const lines = raw.trim().split('\n')
+ return lines.map(line => {
+ const parts = line.replace(/^"|"$/g, '').split('","')
+ return { name: parts[0] || '', pid: parseInt(parts[1], 10) || 0, path: '' }
+ }).filter(p => p.pid > 0)
+ },
+
+ async scanPorts() {
+ const raw = await execAsync('netstat -ano', 5000)
+ return raw ? parseNetstat(raw) : []
+ },
+
+ async killProcess(pid) {
+ return new Promise((resolve) => {
+ exec(`taskkill /PID ${pid} /F`, { encoding: 'utf-8', timeout: 3000 }, (err) => {
+ if (err) {
+ const msg = err.stderr || err.message || '未知错误'
+ resolve({ success: false, error: msg.trim() })
+ } else {
+ resolve({ success: true })
+ }
+ })
+ })
+ }
+}
diff --git a/plugins/process-manager/snapshot/image1.png b/plugins/process-manager/snapshot/image1.png
new file mode 100644
index 0000000000000000000000000000000000000000..199a0f937d0b513e25c843ff9b11427a4a96310b
GIT binary patch
literal 163127
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
z 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