pac-proxy-cli 1.0.4 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,14 +1,15 @@
1
1
  # pac-proxy-cli
2
2
 
3
- 本机运行的 PAC / 全局代理 / 抓包 工具,提供 Web 界面与本地代理服务。支持设置系统代理、PAC 规则、HTTPS 抓包和查看流量记录。
3
+ 本机运行的 PAC / 全局代理 / 抓包工具,提供 Web 控制台与本地代理服务。支持内置代理客户端、系统代理自动设置、PAC 规则管理、HTTPS 抓包与流量记录。
4
4
 
5
5
  ## 功能特性
6
6
 
7
- - **多种代理模式**:全局代理、PAC 代理、抓包代理,一键切换。
8
- - **PAC 规则**:按域名/URL 规则匹配,选择「代理」或「直连」,支持优先级
7
+ - **多种代理模式**:全局代理、PAC 代理、抓包代理,一键切换
8
+ - **内置代理客户端**:托管上游代理进程生命周期,自动作为上游代理,无需手动启动
9
+ - **PAC 规则**:按域名/URL 规则匹配,选择「代理」或「直连」,支持优先级、搜索、导入/导出
9
10
  - **上游代理**:支持 SOCKS5 / HTTP 上游,本地将 SOCKS5 转为 HTTP 代理并按规则转发
10
11
  - **流量记录**:查看经本机代理的请求;抓包模式下可查看解密后的请求/响应、搜索与筛选
11
- - **抓包代理 (MITM)**:HTTPS 解密、自动生成 CA 证书供下载安装,便于本地调试与分析
12
+ - **抓包代理 (MITM)**:HTTPS 解密、自动生成 CA 证书供下载安装
12
13
  - **本地 / 远程模式**:本地模式配置仅存本机;远程模式需登录,PAC 规则可同步云端
13
14
 
14
15
  ## 环境要求
@@ -18,19 +19,17 @@
18
19
 
19
20
  ## 启动
20
21
 
21
- 确保本机已安装 Node.js 18 及以上,在终端执行:
22
-
23
22
  ```bash
24
- npx pac-proxy serve --port 5174
23
+ npx pac-proxy-cli serve --port 5174
25
24
  ```
26
25
 
27
- 不指定 `--port` 时默认使用 5174。启动后会输出控制台地址,例如:
26
+ 不指定 `--port` 时默认使用 5174。启动后会输出控制台地址:
28
27
 
29
28
  ```
30
29
  控制台已启动: http://127.0.0.1:5174
31
30
  ```
32
31
 
33
- 在浏览器中打开该地址即可使用。如需长期使用,也可全局安装后直接运行:
32
+ 在浏览器中打开该地址即可使用。如需长期使用,可全局安装:
34
33
 
35
34
  ```bash
36
35
  npm install -g pac-proxy-cli
@@ -46,65 +45,81 @@ pac-proxy serve --port 5174
46
45
  - **本地模式**:无需登录,所有配置保存在本机(默认目录 `~/.pac-proxy`)
47
46
  - **远程模式**:需注册/登录,PAC 规则与云端同步(依赖远程服务地址配置)
48
47
 
49
- 选择后进入控制台,之后可在顶部「切换模式」中更改。
48
+ 选择后进入控制台,之后可在侧边栏底部「切换模式」中更改。
50
49
 
51
50
  ### 2. 代理设置
52
51
 
53
52
  在 **代理设置** 页可进行:
54
53
 
55
- | 操作 | 说明 |
56
- |------------|------|
57
- | **全局代理** | 系统代理指向本机代理端口,所有 HTTP/HTTPS 经本地转发(可配置上游) |
58
- | **PAC 代理** | 系统使用自动代理配置(PAC),由本机提供 PAC 脚本,按规则决定代理或直连 |
59
- | **抓包代理** | 与全局类似,但流量经 MITM 解密,可查看请求/响应内容;需安装 CA 证书 |
60
- | **清除代理设置** | 关闭系统代理并停止本地代理服务 |
54
+ | 操作 | 说明 |
55
+ |------|------|
56
+ | **全局代理** | 系统代理指向本机代理端口,所有 HTTP/HTTPS 经本地转发 |
57
+ | **PAC 代理** | 系统使用自动代理配置(PAC),按规则决定代理或直连 |
58
+ | **抓包代理** | 流量经 MITM 解密,可查看请求/响应内容;需安装 CA 证书 |
59
+ | **清除代理** | 关闭系统代理并停止本地代理服务 |
61
60
 
62
- - **上游代理地址**:如 `socks5://127.0.0.1:1080` 或 `http://proxy.example.com:8080`,留空则直连
61
+ - **上游代理地址**:如 `socks5://127.0.0.1:1080` 或 `http://proxy.example.com:8080`
63
62
  - **HTTP/HTTPS 代理端口**:本地代理监听端口,默认 5175 / 5176
64
- - 保存后若开启「自动设置系统代理」,会尝试写入系统代理(支持 macOS / Windows / Linux GNOME)
63
+ - 若启用了内置代理客户端,上游代理地址会自动托管,无需手动填写
64
+
65
+ ### 3. 代理客户端
66
+
67
+ 在 **代理客户端** 页可配置并托管上游代理进程:
68
+
69
+ - 填写服务器地址、端口、密码、加密方式、本地 SOCKS5 端口
70
+ - 启用后,node-cli 会自动启动代理进程并将其 SOCKS5 输出作为上游代理
71
+ - 页面实时显示进程状态(运行中 / 已停止)、PID 及最近日志
72
+ - 可手动启动 / 停止进程
73
+
74
+ 代理客户端二进制按平台按需安装(仅下载当前平台对应的 ~10MB 文件):
65
75
 
66
- 若自动设置失败,页面会提示错误原因,可改为手动在系统或浏览器中设置代理为 `127.0.0.1:端口`。
76
+ | 平台 | 对应包 |
77
+ |------|--------|
78
+ | Windows x64 | `pac-proxy-client-win32-x64` |
79
+ | macOS x64 | `pac-proxy-client-darwin-x64` |
80
+ | Linux x64 | `pac-proxy-client-linux-x64` |
67
81
 
68
- ### 3. PAC 规则
82
+ ### 4. PAC 规则
69
83
 
70
84
  在 **PAC 规则** 页管理「代理 / 直连」规则:
71
85
 
72
86
  - 每条规则包含:匹配模式(如 `*.google.com`)、动作(代理 / 直连)、优先级
73
87
  - 按优先级从高到低匹配,命中则按该条动作执行
88
+ - 支持搜索、导入 JSON 文件(合并模式)、导出、复制规则列表
74
89
  - 本地模式下规则保存在本机;远程模式下规则与云端同步
75
90
 
76
- ### 4. 流量记录
91
+ ### 5. 流量记录
77
92
 
78
93
  在 **流量记录** 页可查看经本机代理的请求:
79
94
 
80
- - **非抓包模式**:列表展示时间、类型、方法、URL、动作(代理/直连),最多保留 500
81
- - **抓包模式**:展示更详细列表,支持按 URL 搜索、按方法/状态码/类型筛选、排序与分页;点击「详情」可查看请求/响应头与 body(可复制 URL)
95
+ - **非抓包模式**:列表展示时间、类型、方法、URL、动作,最多保留 500 条;支持自动刷新(每 5 秒)
96
+ - **抓包模式**:支持按 URL 搜索、按方法/状态码/类型筛选、排序与分页;点击行可查看请求/响应头与 body
82
97
 
83
- ### 5. 抓包代理与 CA 证书
98
+ ### 6. 抓包代理与 CA 证书
84
99
 
85
100
  选择「抓包代理」并保存后:
86
101
 
87
- 1. 系统代理会指向本机抓包代理端口,所有流量经本地解密
88
- 2. 首次产生 HTTPS 请求后,会在默认数据目录下生成根 CA
89
- 3. 在代理设置页点击 **下载 CA 证书**,将证书安装到系统或浏览器「受信任的根证书」
90
- 4. 安装后即可正常访问 HTTPS 站点,并在「流量记录」中查看解密后的请求/响应
102
+ 1. 系统代理指向本机抓包代理端口
103
+ 2. 首次产生 HTTPS 请求后,在数据目录下自动生成根 CA
104
+ 3. 在代理设置页点击 **下载 CA 证书**,安装到系统或浏览器「受信任的根证书」
105
+ 4. 安装后可在「流量记录」中查看解密后的请求/响应
91
106
 
92
- **注意**:CA 仅限本机抓包使用,请勿安装到他人设备或生产环境。
107
+ > CA 仅限本机抓包使用,请勿安装到他人设备或生产环境。
93
108
 
94
- ## 系统代理支持说明
109
+ ## 系统代理支持
95
110
 
96
111
  | 平台 | 说明 |
97
112
  |------|------|
98
- | **macOS** | 通过 `networksetup` 设置;若遇权限问题,可配置 sudo 免密或手动在 系统设置 → 网络 → 代理 中设置 |
99
- | **Windows** | 通过注册表写入;失败时可手动在 设置 → 网络和 Internet → 代理 中设置 |
100
- | **Linux** | 仅支持 **GNOME**(`gsettings`);需在图形会话中运行。KDE / XFCE 等请手动在系统设置中配置代理 |
113
+ | **macOS** | 通过 `networksetup` 设置;遇权限问题可手动在「系统设置 → 网络 → 代理」中配置 |
114
+ | **Windows** | 通过注册表写入;失败时可手动在「设置 → 网络和 Internet → 代理」中配置 |
115
+ | **Linux** | 仅支持 **GNOME**(`gsettings`);KDE / XFCE 等请手动在系统设置中配置 |
101
116
 
102
117
  ## 环境变量
103
118
 
104
119
  | 变量 | 说明 |
105
120
  |------|------|
106
121
  | `PAC_PROXY_HOME` | 数据与配置根目录,默认 `~/.pac-proxy` |
107
- | `REMOTE_SERVER_URL` | 远程模式下的服务端地址(需在运行目录的 .env 或 .env.local 中配置,供登录与 PAC 规则同步) |
122
+ | `REMOTE_SERVER_URL` | 远程模式服务端地址(在运行目录的 `.env``.env.local` 中配置) |
108
123
 
109
124
  ## 许可证
110
125
 
@@ -0,0 +1,28 @@
1
+ (function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))s(o);new MutationObserver(o=>{for(const r of o)if(r.type==="childList")for(const l of r.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&s(l)}).observe(document,{childList:!0,subtree:!0});function n(o){const r={};return o.integrity&&(r.integrity=o.integrity),o.referrerPolicy&&(r.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?r.credentials="include":o.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function s(o){if(o.ep)return;o.ep=!0;const r=n(o);fetch(o.href,r)}})();/**
2
+ * @vue/shared v3.5.29
3
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
+ * @license MIT
5
+ **/function lo(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const de={},nn=[],ut=()=>{},Br=()=>!1,us=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),io=e=>e.startsWith("onUpdate:"),Te=Object.assign,ao=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Si=Object.prototype.hasOwnProperty,ce=(e,t)=>Si.call(e,t),q=Array.isArray,sn=e=>Bn(e)==="[object Map]",dn=e=>Bn(e)==="[object Set]",Io=e=>Bn(e)==="[object Date]",Z=e=>typeof e=="function",xe=e=>typeof e=="string",dt=e=>typeof e=="symbol",ue=e=>e!==null&&typeof e=="object",Hr=e=>(ue(e)||Z(e))&&Z(e.then)&&Z(e.catch),Fr=Object.prototype.toString,Bn=e=>Fr.call(e),Ei=e=>Bn(e).slice(8,-1),jr=e=>Bn(e)==="[object Object]",co=e=>xe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,bn=lo(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),fs=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Ai=/-\w/g,Je=fs(e=>e.replace(Ai,t=>t.slice(1).toUpperCase())),Ti=/\B([A-Z])/g,Jt=fs(e=>e.replace(Ti,"-$1").toLowerCase()),ds=fs(e=>e.charAt(0).toUpperCase()+e.slice(1)),Es=fs(e=>e?`on${ds(e)}`:""),$t=(e,t)=>!Object.is(e,t),Jn=(e,...t)=>{for(let n=0;n<e.length;n++)e[n](...t)},Gr=(e,t,n,s=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},ps=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Ri=e=>{const t=xe(e)?Number(e):NaN;return isNaN(t)?e:t};let Mo;const hs=()=>Mo||(Mo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function gs(e){if(q(e)){const t={};for(let n=0;n<e.length;n++){const s=e[n],o=xe(s)?Ni(s):gs(s);if(o)for(const r in o)t[r]=o[r]}return t}else if(xe(e)||ue(e))return e}const Pi=/;(?![^(]*\))/g,Oi=/:([^]+)/,ki=/\/\*[^]*?\*\//g;function Ni(e){const t={};return e.replace(ki,"").split(Pi).forEach(n=>{if(n){const s=n.split(Oi);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function _e(e){let t="";if(xe(e))t=e;else if(q(e))for(let n=0;n<e.length;n++){const s=_e(e[n]);s&&(t+=s+" ")}else if(ue(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}const Ii="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Mi=lo(Ii);function Kr(e){return!!e||e===""}function $i(e,t){if(e.length!==t.length)return!1;let n=!0;for(let s=0;n&&s<e.length;s++)n=Dt(e[s],t[s]);return n}function Dt(e,t){if(e===t)return!0;let n=Io(e),s=Io(t);if(n||s)return n&&s?e.getTime()===t.getTime():!1;if(n=dt(e),s=dt(t),n||s)return e===t;if(n=q(e),s=q(t),n||s)return n&&s?$i(e,t):!1;if(n=ue(e),s=ue(t),n||s){if(!n||!s)return!1;const o=Object.keys(e).length,r=Object.keys(t).length;if(o!==r)return!1;for(const l in e){const a=e.hasOwnProperty(l),i=t.hasOwnProperty(l);if(a&&!i||!a&&i||!Dt(e[l],t[l]))return!1}}return String(e)===String(t)}function uo(e,t){return e.findIndex(n=>Dt(n,t))}const Wr=e=>!!(e&&e.__v_isRef===!0),z=e=>xe(e)?e:e==null?"":q(e)||ue(e)&&(e.toString===Fr||!Z(e.toString))?Wr(e)?z(e.value):JSON.stringify(e,zr,2):String(e),zr=(e,t)=>Wr(t)?zr(e,t.value):sn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,o],r)=>(n[As(s,r)+" =>"]=o,n),{})}:dn(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>As(n))}:dt(t)?As(t):ue(t)&&!q(t)&&!jr(t)?String(t):t,As=(e,t="")=>{var n;return dt(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/**
6
+ * @vue/reactivity v3.5.29
7
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
8
+ * @license MIT
9
+ **/let He;class Li{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.__v_skip=!0,this.parent=He,!t&&He&&(this.index=(He.scopes||(He.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].pause();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].resume();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].resume()}}run(t){if(this._active){const n=He;try{return He=this,t()}finally{He=n}}}on(){++this._on===1&&(this.prevScope=He,He=this)}off(){this._on>0&&--this._on===0&&(He=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n<s;n++)this.effects[n].stop();for(this.effects.length=0,n=0,s=this.cleanups.length;n<s;n++)this.cleanups[n]();if(this.cleanups.length=0,this.scopes){for(n=0,s=this.scopes.length;n<s;n++)this.scopes[n].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const o=this.parent.scopes.pop();o&&o!==this&&(this.parent.scopes[this.index]=o,o.index=this.index)}this.parent=void 0}}}function Di(){return He}let ge;const Ts=new WeakSet;class qr{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,He&&He.active&&He.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Ts.has(this)&&(Ts.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Qr(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,$o(this),Yr(this);const t=ge,n=Qe;ge=this,Qe=!0;try{return this.fn()}finally{Xr(this),ge=t,Qe=n,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)ho(t);this.deps=this.depsTail=void 0,$o(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Ts.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){Fs(this)&&this.run()}get dirty(){return Fs(this)}}let Jr=0,wn,xn;function Qr(e,t=!1){if(e.flags|=8,t){e.next=xn,xn=e;return}e.next=wn,wn=e}function fo(){Jr++}function po(){if(--Jr>0)return;if(xn){let t=xn;for(xn=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;wn;){let t=wn;for(wn=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function Yr(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Xr(e){let t,n=e.depsTail,s=n;for(;s;){const o=s.prevDep;s.version===-1?(s===n&&(n=o),ho(s),Vi(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=o}e.deps=t,e.depsTail=n}function Fs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Zr(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Zr(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===kn)||(e.globalVersion=kn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Fs(e))))return;e.flags|=2;const t=e.dep,n=ge,s=Qe;ge=e,Qe=!0;try{Yr(e);const o=e.fn(e._value);(t.version===0||$t(o,e._value))&&(e.flags|=128,e._value=o,t.version++)}catch(o){throw t.version++,o}finally{ge=n,Qe=s,Xr(e),e.flags&=-3}}function ho(e,t=!1){const{dep:n,prevSub:s,nextSub:o}=e;if(s&&(s.nextSub=o,e.prevSub=void 0),o&&(o.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let r=n.computed.deps;r;r=r.nextDep)ho(r,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Vi(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Qe=!0;const el=[];function wt(){el.push(Qe),Qe=!1}function xt(){const e=el.pop();Qe=e===void 0?!0:e}function $o(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=ge;ge=void 0;try{t()}finally{ge=n}}}let kn=0;class Ui{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class go{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!ge||!Qe||ge===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==ge)n=this.activeLink=new Ui(ge,this),ge.deps?(n.prevDep=ge.depsTail,ge.depsTail.nextDep=n,ge.depsTail=n):ge.deps=ge.depsTail=n,tl(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=ge.depsTail,n.nextDep=void 0,ge.depsTail.nextDep=n,ge.depsTail=n,ge.deps===n&&(ge.deps=s)}return n}trigger(t){this.version++,kn++,this.notify(t)}notify(t){fo();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{po()}}}function tl(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)tl(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const js=new WeakMap,Wt=Symbol(""),Gs=Symbol(""),Nn=Symbol("");function Ne(e,t,n){if(Qe&&ge){let s=js.get(e);s||js.set(e,s=new Map);let o=s.get(n);o||(s.set(n,o=new go),o.map=s,o.key=n),o.track()}}function yt(e,t,n,s,o,r){const l=js.get(e);if(!l){kn++;return}const a=i=>{i&&i.trigger()};if(fo(),t==="clear")l.forEach(a);else{const i=q(e),u=i&&co(n);if(i&&n==="length"){const f=Number(s);l.forEach((d,m)=>{(m==="length"||m===Nn||!dt(m)&&m>=f)&&a(d)})}else switch((n!==void 0||l.has(void 0))&&a(l.get(n)),u&&a(l.get(Nn)),t){case"add":i?u&&a(l.get("length")):(a(l.get(Wt)),sn(e)&&a(l.get(Gs)));break;case"delete":i||(a(l.get(Wt)),sn(e)&&a(l.get(Gs)));break;case"set":sn(e)&&a(l.get(Wt));break}}po()}function Xt(e){const t=ie(e);return t===e?t:(Ne(t,"iterate",Nn),ze(e)?t:t.map(Xe))}function ms(e){return Ne(e=ie(e),"iterate",Nn),e}function Nt(e,t){return Ct(e)?ln(zt(e)?Xe(t):t):Xe(t)}const Bi={__proto__:null,[Symbol.iterator](){return Rs(this,Symbol.iterator,e=>Nt(this,e))},concat(...e){return Xt(this).concat(...e.map(t=>q(t)?Xt(t):t))},entries(){return Rs(this,"entries",e=>(e[1]=Nt(this,e[1]),e))},every(e,t){return ht(this,"every",e,t,void 0,arguments)},filter(e,t){return ht(this,"filter",e,t,n=>n.map(s=>Nt(this,s)),arguments)},find(e,t){return ht(this,"find",e,t,n=>Nt(this,n),arguments)},findIndex(e,t){return ht(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return ht(this,"findLast",e,t,n=>Nt(this,n),arguments)},findLastIndex(e,t){return ht(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return ht(this,"forEach",e,t,void 0,arguments)},includes(...e){return Ps(this,"includes",e)},indexOf(...e){return Ps(this,"indexOf",e)},join(e){return Xt(this).join(e)},lastIndexOf(...e){return Ps(this,"lastIndexOf",e)},map(e,t){return ht(this,"map",e,t,void 0,arguments)},pop(){return gn(this,"pop")},push(...e){return gn(this,"push",e)},reduce(e,...t){return Lo(this,"reduce",e,t)},reduceRight(e,...t){return Lo(this,"reduceRight",e,t)},shift(){return gn(this,"shift")},some(e,t){return ht(this,"some",e,t,void 0,arguments)},splice(...e){return gn(this,"splice",e)},toReversed(){return Xt(this).toReversed()},toSorted(e){return Xt(this).toSorted(e)},toSpliced(...e){return Xt(this).toSpliced(...e)},unshift(...e){return gn(this,"unshift",e)},values(){return Rs(this,"values",e=>Nt(this,e))}};function Rs(e,t,n){const s=ms(e),o=s[t]();return s!==e&&!ze(e)&&(o._next=o.next,o.next=()=>{const r=o._next();return r.done||(r.value=n(r.value)),r}),o}const Hi=Array.prototype;function ht(e,t,n,s,o,r){const l=ms(e),a=l!==e&&!ze(e),i=l[t];if(i!==Hi[t]){const d=i.apply(e,r);return a?Xe(d):d}let u=n;l!==e&&(a?u=function(d,m){return n.call(this,Nt(e,d),m,e)}:n.length>2&&(u=function(d,m){return n.call(this,d,m,e)}));const f=i.call(l,u,s);return a&&o?o(f):f}function Lo(e,t,n,s){const o=ms(e);let r=n;return o!==e&&(ze(e)?n.length>3&&(r=function(l,a,i){return n.call(this,l,a,i,e)}):r=function(l,a,i){return n.call(this,l,Nt(e,a),i,e)}),o[t](r,...s)}function Ps(e,t,n){const s=ie(e);Ne(s,"iterate",Nn);const o=s[t](...n);return(o===-1||o===!1)&&yo(n[0])?(n[0]=ie(n[0]),s[t](...n)):o}function gn(e,t,n=[]){wt(),fo();const s=ie(e)[t].apply(e,n);return po(),xt(),s}const Fi=lo("__proto__,__v_isRef,__isVue"),nl=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(dt));function ji(e){dt(e)||(e=String(e));const t=ie(this);return Ne(t,"has",e),t.hasOwnProperty(e)}class sl{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const o=this._isReadonly,r=this._isShallow;if(n==="__v_isReactive")return!o;if(n==="__v_isReadonly")return o;if(n==="__v_isShallow")return r;if(n==="__v_raw")return s===(o?r?Zi:il:r?ll:rl).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const l=q(t);if(!o){let i;if(l&&(i=Bi[n]))return i;if(n==="hasOwnProperty")return ji}const a=Reflect.get(t,n,Me(t)?t:s);if((dt(n)?nl.has(n):Fi(n))||(o||Ne(t,"get",n),r))return a;if(Me(a)){const i=l&&co(n)?a:a.value;return o&&ue(i)?es(i):i}return ue(a)?o?es(a):pn(a):a}}class ol extends sl{constructor(t=!1){super(!1,t)}set(t,n,s,o){let r=t[n];const l=q(t)&&co(n);if(!this._isShallow){const u=Ct(r);if(!ze(s)&&!Ct(s)&&(r=ie(r),s=ie(s)),!l&&Me(r)&&!Me(s))return u||(r.value=s),!0}const a=l?Number(n)<t.length:ce(t,n),i=Reflect.set(t,n,s,Me(t)?t:o);return t===ie(o)&&(a?$t(s,r)&&yt(t,"set",n,s):yt(t,"add",n,s)),i}deleteProperty(t,n){const s=ce(t,n);t[n];const o=Reflect.deleteProperty(t,n);return o&&s&&yt(t,"delete",n,void 0),o}has(t,n){const s=Reflect.has(t,n);return(!dt(n)||!nl.has(n))&&Ne(t,"has",n),s}ownKeys(t){return Ne(t,"iterate",q(t)?"length":Wt),Reflect.ownKeys(t)}}class Gi extends sl{constructor(t=!1){super(!0,t)}set(t,n){return!0}deleteProperty(t,n){return!0}}const Ki=new ol,Wi=new Gi,zi=new ol(!0);const Ks=e=>e,Gn=e=>Reflect.getPrototypeOf(e);function qi(e,t,n){return function(...s){const o=this.__v_raw,r=ie(o),l=sn(r),a=e==="entries"||e===Symbol.iterator&&l,i=e==="keys"&&l,u=o[e](...s),f=n?Ks:t?ln:Xe;return!t&&Ne(r,"iterate",i?Gs:Wt),Te(Object.create(u),{next(){const{value:d,done:m}=u.next();return m?{value:d,done:m}:{value:a?[f(d[0]),f(d[1])]:f(d),done:m}}})}}function Kn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Ji(e,t){const n={get(o){const r=this.__v_raw,l=ie(r),a=ie(o);e||($t(o,a)&&Ne(l,"get",o),Ne(l,"get",a));const{has:i}=Gn(l),u=t?Ks:e?ln:Xe;if(i.call(l,o))return u(r.get(o));if(i.call(l,a))return u(r.get(a));r!==l&&r.get(o)},get size(){const o=this.__v_raw;return!e&&Ne(ie(o),"iterate",Wt),o.size},has(o){const r=this.__v_raw,l=ie(r),a=ie(o);return e||($t(o,a)&&Ne(l,"has",o),Ne(l,"has",a)),o===a?r.has(o):r.has(o)||r.has(a)},forEach(o,r){const l=this,a=l.__v_raw,i=ie(a),u=t?Ks:e?ln:Xe;return!e&&Ne(i,"iterate",Wt),a.forEach((f,d)=>o.call(r,u(f),u(d),l))}};return Te(n,e?{add:Kn("add"),set:Kn("set"),delete:Kn("delete"),clear:Kn("clear")}:{add(o){!t&&!ze(o)&&!Ct(o)&&(o=ie(o));const r=ie(this);return Gn(r).has.call(r,o)||(r.add(o),yt(r,"add",o,o)),this},set(o,r){!t&&!ze(r)&&!Ct(r)&&(r=ie(r));const l=ie(this),{has:a,get:i}=Gn(l);let u=a.call(l,o);u||(o=ie(o),u=a.call(l,o));const f=i.call(l,o);return l.set(o,r),u?$t(r,f)&&yt(l,"set",o,r):yt(l,"add",o,r),this},delete(o){const r=ie(this),{has:l,get:a}=Gn(r);let i=l.call(r,o);i||(o=ie(o),i=l.call(r,o)),a&&a.call(r,o);const u=r.delete(o);return i&&yt(r,"delete",o,void 0),u},clear(){const o=ie(this),r=o.size!==0,l=o.clear();return r&&yt(o,"clear",void 0,void 0),l}}),["keys","values","entries",Symbol.iterator].forEach(o=>{n[o]=qi(o,e,t)}),n}function mo(e,t){const n=Ji(e,t);return(s,o,r)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?s:Reflect.get(ce(n,o)&&o in s?n:s,o,r)}const Qi={get:mo(!1,!1)},Yi={get:mo(!1,!0)},Xi={get:mo(!0,!1)};const rl=new WeakMap,ll=new WeakMap,il=new WeakMap,Zi=new WeakMap;function ea(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ta(e){return e.__v_skip||!Object.isExtensible(e)?0:ea(Ei(e))}function pn(e){return Ct(e)?e:vo(e,!1,Ki,Qi,rl)}function al(e){return vo(e,!1,zi,Yi,ll)}function es(e){return vo(e,!0,Wi,Xi,il)}function vo(e,t,n,s,o){if(!ue(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const r=ta(e);if(r===0)return e;const l=o.get(e);if(l)return l;const a=new Proxy(e,r===2?s:n);return o.set(e,a),a}function zt(e){return Ct(e)?zt(e.__v_raw):!!(e&&e.__v_isReactive)}function Ct(e){return!!(e&&e.__v_isReadonly)}function ze(e){return!!(e&&e.__v_isShallow)}function yo(e){return e?!!e.__v_raw:!1}function ie(e){const t=e&&e.__v_raw;return t?ie(t):e}function na(e){return!ce(e,"__v_skip")&&Object.isExtensible(e)&&Gr(e,"__v_skip",!0),e}const Xe=e=>ue(e)?pn(e):e,ln=e=>ue(e)?es(e):e;function Me(e){return e?e.__v_isRef===!0:!1}function ee(e){return cl(e,!1)}function sa(e){return cl(e,!0)}function cl(e,t){return Me(e)?e:new oa(e,t)}class oa{constructor(t,n){this.dep=new go,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:ie(t),this._value=n?t:Xe(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||ze(t)||Ct(t);t=s?t:ie(t),$t(t,n)&&(this._rawValue=t,this._value=s?t:Xe(t),this.dep.trigger())}}function ft(e){return Me(e)?e.value:e}const ra={get:(e,t,n)=>t==="__v_raw"?e:ft(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const o=e[t];return Me(o)&&!Me(n)?(o.value=n,!0):Reflect.set(e,t,n,s)}};function ul(e){return zt(e)?e:new Proxy(e,ra)}class la{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new go(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=kn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&ge!==this)return Qr(this,!0),!0}get value(){const t=this.dep.track();return Zr(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function ia(e,t,n=!1){let s,o;return Z(e)?s=e:(s=e.get,o=e.set),new la(s,o,n)}const Wn={},ts=new WeakMap;let Gt;function aa(e,t=!1,n=Gt){if(n){let s=ts.get(n);s||ts.set(n,s=[]),s.push(e)}}function ca(e,t,n=de){const{immediate:s,deep:o,once:r,scheduler:l,augmentJob:a,call:i}=n,u=_=>o?_:ze(_)||o===!1||o===0?_t(_,1):_t(_);let f,d,m,g,v=!1,b=!1;if(Me(e)?(d=()=>e.value,v=ze(e)):zt(e)?(d=()=>u(e),v=!0):q(e)?(b=!0,v=e.some(_=>zt(_)||ze(_)),d=()=>e.map(_=>{if(Me(_))return _.value;if(zt(_))return u(_);if(Z(_))return i?i(_,2):_()})):Z(e)?t?d=i?()=>i(e,2):e:d=()=>{if(m){wt();try{m()}finally{xt()}}const _=Gt;Gt=f;try{return i?i(e,3,[g]):e(g)}finally{Gt=_}}:d=ut,t&&o){const _=d,N=o===!0?1/0:o;d=()=>_t(_(),N)}const E=Di(),$=()=>{f.stop(),E&&E.active&&ao(E.effects,f)};if(r&&t){const _=t;t=(...N)=>{_(...N),$()}}let R=b?new Array(e.length).fill(Wn):Wn;const T=_=>{if(!(!(f.flags&1)||!f.dirty&&!_))if(t){const N=f.run();if(o||v||(b?N.some((J,j)=>$t(J,R[j])):$t(N,R))){m&&m();const J=Gt;Gt=f;try{const j=[N,R===Wn?void 0:b&&R[0]===Wn?[]:R,g];R=N,i?i(t,3,j):t(...j)}finally{Gt=J}}}else f.run()};return a&&a(T),f=new qr(d),f.scheduler=l?()=>l(T,!1):T,g=_=>aa(_,!1,f),m=f.onStop=()=>{const _=ts.get(f);if(_){if(i)i(_,4);else for(const N of _)N();ts.delete(f)}},t?s?T(!0):R=f.run():l?l(T.bind(null,!0),!0):f.run(),$.pause=f.pause.bind(f),$.resume=f.resume.bind(f),$.stop=$,$}function _t(e,t=1/0,n){if(t<=0||!ue(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,Me(e))_t(e.value,t,n);else if(q(e))for(let s=0;s<e.length;s++)_t(e[s],t,n);else if(dn(e)||sn(e))e.forEach(s=>{_t(s,t,n)});else if(jr(e)){for(const s in e)_t(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&_t(e[s],t,n)}return e}/**
10
+ * @vue/runtime-core v3.5.29
11
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
12
+ * @license MIT
13
+ **/function Hn(e,t,n,s){try{return s?e(...s):e()}catch(o){vs(o,t,n)}}function Ze(e,t,n,s){if(Z(e)){const o=Hn(e,t,n,s);return o&&Hr(o)&&o.catch(r=>{vs(r,t,n)}),o}if(q(e)){const o=[];for(let r=0;r<e.length;r++)o.push(Ze(e[r],t,n,s));return o}}function vs(e,t,n,s=!0){const o=t?t.vnode:null,{errorHandler:r,throwUnhandledErrorInProduction:l}=t&&t.appContext.config||de;if(t){let a=t.parent;const i=t.proxy,u=`https://vuejs.org/error-reference/#runtime-${n}`;for(;a;){const f=a.ec;if(f){for(let d=0;d<f.length;d++)if(f[d](e,i,u)===!1)return}a=a.parent}if(r){wt(),Hn(r,null,10,[e,i,u]),xt();return}}ua(e,n,o,s,l)}function ua(e,t,n,s=!0,o=!1){if(o)throw e;console.error(e)}const De=[];let it=-1;const on=[];let It=null,Zt=0;const fl=Promise.resolve();let ns=null;function _o(e){const t=ns||fl;return e?t.then(this?e.bind(this):e):t}function fa(e){let t=it+1,n=De.length;for(;t<n;){const s=t+n>>>1,o=De[s],r=In(o);r<e||r===e&&o.flags&2?t=s+1:n=s}return t}function bo(e){if(!(e.flags&1)){const t=In(e),n=De[De.length-1];!n||!(e.flags&2)&&t>=In(n)?De.push(e):De.splice(fa(t),0,e),e.flags|=1,dl()}}function dl(){ns||(ns=fl.then(hl))}function da(e){q(e)?on.push(...e):It&&e.id===-1?It.splice(Zt+1,0,e):e.flags&1||(on.push(e),e.flags|=1),dl()}function Do(e,t,n=it+1){for(;n<De.length;n++){const s=De[n];if(s&&s.flags&2){if(e&&s.id!==e.uid)continue;De.splice(n,1),n--,s.flags&4&&(s.flags&=-2),s(),s.flags&4||(s.flags&=-2)}}}function pl(e){if(on.length){const t=[...new Set(on)].sort((n,s)=>In(n)-In(s));if(on.length=0,It){It.push(...t);return}for(It=t,Zt=0;Zt<It.length;Zt++){const n=It[Zt];n.flags&4&&(n.flags&=-2),n.flags&8||n(),n.flags&=-2}It=null,Zt=0}}const In=e=>e.id==null?e.flags&2?-1:1/0:e.id;function hl(e){try{for(it=0;it<De.length;it++){const t=De[it];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),Hn(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;it<De.length;it++){const t=De[it];t&&(t.flags&=-2)}it=-1,De.length=0,pl(),ns=null,(De.length||on.length)&&hl()}}let je=null,gl=null;function ss(e){const t=je;return je=e,gl=e&&e.type.__scopeId||null,t}function ct(e,t=je,n){if(!t||e._n)return e;const s=(...o)=>{s._d&&ls(-1);const r=ss(t);let l;try{l=e(...o)}finally{ss(r),s._d&&ls(1)}return l};return s._n=!0,s._c=!0,s._d=!0,s}function Ae(e,t){if(je===null)return e;const n=ws(je),s=e.dirs||(e.dirs=[]);for(let o=0;o<t.length;o++){let[r,l,a,i=de]=t[o];r&&(Z(r)&&(r={mounted:r,updated:r}),r.deep&&_t(l),s.push({dir:r,instance:n,value:l,oldValue:void 0,arg:a,modifiers:i}))}return e}function Ht(e,t,n,s){const o=e.dirs,r=t&&t.dirs;for(let l=0;l<o.length;l++){const a=o[l];r&&(a.oldValue=r[l].value);let i=a.dir[s];i&&(wt(),Ze(i,n,8,[e.el,a,e,t]),xt())}}function Qn(e,t){if(Ie){let n=Ie.provides;const s=Ie.parent&&Ie.parent.provides;s===n&&(n=Ie.provides=Object.create(s)),n[e]=t}}function Ye(e,t,n=!1){const s=Wl();if(s||rn){let o=rn?rn._context.provides:s?s.parent==null||s.ce?s.vnode.appContext&&s.vnode.appContext.provides:s.parent.provides:void 0;if(o&&e in o)return o[e];if(arguments.length>1)return n&&Z(t)?t.call(s&&s.proxy):t}}const pa=Symbol.for("v-scx"),ha=()=>Ye(pa);function Cn(e,t,n){return ml(e,t,n)}function ml(e,t,n=de){const{immediate:s,deep:o,flush:r,once:l}=n,a=Te({},n),i=t&&s||!t&&r!=="post";let u;if(Vn){if(r==="sync"){const g=ha();u=g.__watcherHandles||(g.__watcherHandles=[])}else if(!i){const g=()=>{};return g.stop=ut,g.resume=ut,g.pause=ut,g}}const f=Ie;a.call=(g,v,b)=>Ze(g,f,v,b);let d=!1;r==="post"?a.scheduler=g=>{ke(g,f&&f.suspense)}:r!=="sync"&&(d=!0,a.scheduler=(g,v)=>{v?g():bo(g)}),a.augmentJob=g=>{t&&(g.flags|=4),d&&(g.flags|=2,f&&(g.id=f.uid,g.i=f))};const m=ca(e,t,a);return Vn&&(u?u.push(m):i&&m()),m}function ga(e,t,n){const s=this.proxy,o=xe(e)?e.includes(".")?vl(s,e):()=>s[e]:e.bind(s,s);let r;Z(t)?r=t:(r=t.handler,n=t);const l=Fn(this),a=ml(o,r.bind(s),n);return l(),a}function vl(e,t){const n=t.split(".");return()=>{let s=e;for(let o=0;o<n.length&&s;o++)s=s[n[o]];return s}}const yl=Symbol("_vte"),ma=e=>e.__isTeleport,Sn=e=>e&&(e.disabled||e.disabled===""),Vo=e=>e&&(e.defer||e.defer===""),Uo=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Bo=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Ws=(e,t)=>{const n=e&&e.to;return xe(n)?t?t(n):null:n},_l={name:"Teleport",__isTeleport:!0,process(e,t,n,s,o,r,l,a,i,u){const{mc:f,pc:d,pbc:m,o:{insert:g,querySelector:v,createText:b,createComment:E}}=u,$=Sn(t.props);let{shapeFlag:R,children:T,dynamicChildren:_}=t;if(e==null){const N=t.el=b(""),J=t.anchor=b("");g(N,n,s),g(J,n,s);const j=(V,X)=>{R&16&&f(T,V,X,o,r,l,a,i)},le=()=>{const V=t.target=Ws(t.props,v),X=zs(V,t,b,g);V&&(l!=="svg"&&Uo(V)?l="svg":l!=="mathml"&&Bo(V)&&(l="mathml"),o&&o.isCE&&(o.ce._teleportTargets||(o.ce._teleportTargets=new Set)).add(V),$||(j(V,X),Yn(t,!1)))};$&&(j(n,J),Yn(t,!0)),Vo(t.props)?(t.el.__isMounted=!1,ke(()=>{le(),delete t.el.__isMounted},r)):le()}else{if(Vo(t.props)&&e.el.__isMounted===!1){ke(()=>{_l.process(e,t,n,s,o,r,l,a,i,u)},r);return}t.el=e.el,t.targetStart=e.targetStart;const N=t.anchor=e.anchor,J=t.target=e.target,j=t.targetAnchor=e.targetAnchor,le=Sn(e.props),V=le?n:J,X=le?N:j;if(l==="svg"||Uo(J)?l="svg":(l==="mathml"||Bo(J))&&(l="mathml"),_?(m(e.dynamicChildren,_,V,o,r,l,a),So(e,t,!0)):i||d(e,t,V,X,o,r,l,a,!1),$)le?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):zn(t,n,N,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const te=t.target=Ws(t.props,v);te&&zn(t,te,null,u,0)}else le&&zn(t,J,j,u,1);Yn(t,$)}},remove(e,t,n,{um:s,o:{remove:o}},r){const{shapeFlag:l,children:a,anchor:i,targetStart:u,targetAnchor:f,target:d,props:m}=e;if(d&&(o(u),o(f)),r&&o(i),l&16){const g=r||!Sn(m);for(let v=0;v<a.length;v++){const b=a[v];s(b,t,n,g,!!b.dynamicChildren)}}},move:zn,hydrate:va};function zn(e,t,n,{o:{insert:s},m:o},r=2){r===0&&s(e.targetAnchor,t,n);const{el:l,anchor:a,shapeFlag:i,children:u,props:f}=e,d=r===2;if(d&&s(l,t,n),(!d||Sn(f))&&i&16)for(let m=0;m<u.length;m++)o(u[m],t,n,2);d&&s(a,t,n)}function va(e,t,n,s,o,r,{o:{nextSibling:l,parentNode:a,querySelector:i,insert:u,createText:f}},d){function m(E,$){let R=$;for(;R;){if(R&&R.nodeType===8){if(R.data==="teleport start anchor")t.targetStart=R;else if(R.data==="teleport anchor"){t.targetAnchor=R,E._lpa=t.targetAnchor&&l(t.targetAnchor);break}}R=l(R)}}function g(E,$){$.anchor=d(l(E),$,a(E),n,s,o,r)}const v=t.target=Ws(t.props,i),b=Sn(t.props);if(v){const E=v._lpa||v.firstChild;t.shapeFlag&16&&(b?(g(e,t),m(v,E),t.targetAnchor||zs(v,t,f,u,a(e)===v?e:null)):(t.anchor=l(e),m(v,E),t.targetAnchor||zs(v,t,f,u),d(E&&l(E),t,v,n,s,o,r))),Yn(t,b)}else b&&t.shapeFlag&16&&(g(e,t),t.targetStart=e,t.targetAnchor=l(e));return t.anchor&&l(t.anchor)}const ya=_l;function Yn(e,t){const n=e.ctx;if(n&&n.ut){let s,o;for(t?(s=e.el,o=e.anchor):(s=e.targetStart,o=e.targetAnchor);s&&s!==o;)s.nodeType===1&&s.setAttribute("data-v-owner",n.uid),s=s.nextSibling;n.ut()}}function zs(e,t,n,s,o=null){const r=t.targetStart=n(""),l=t.targetAnchor=n("");return r[yl]=l,e&&(s(r,e,o),s(l,e,o)),l}const Ot=Symbol("_leaveCb"),mn=Symbol("_enterCb");function _a(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Ut(()=>{e.isMounted=!0}),Al(()=>{e.isUnmounting=!0}),e}const We=[Function,Array],ba={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:We,onEnter:We,onAfterEnter:We,onEnterCancelled:We,onBeforeLeave:We,onLeave:We,onAfterLeave:We,onLeaveCancelled:We,onBeforeAppear:We,onAppear:We,onAfterAppear:We,onAppearCancelled:We};function wa(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function qs(e,t,n,s,o){const{appear:r,mode:l,persisted:a=!1,onBeforeEnter:i,onEnter:u,onAfterEnter:f,onEnterCancelled:d,onBeforeLeave:m,onLeave:g,onAfterLeave:v,onLeaveCancelled:b,onBeforeAppear:E,onAppear:$,onAfterAppear:R,onAppearCancelled:T}=t,_=String(e.key),N=wa(n,e),J=(V,X)=>{V&&Ze(V,s,9,X)},j=(V,X)=>{const te=X[1];J(V,X),q(V)?V.every(L=>L.length<=1)&&te():V.length<=1&&te()},le={mode:l,persisted:a,beforeEnter(V){let X=i;if(!n.isMounted)if(r)X=E||i;else return;V[Ot]&&V[Ot](!0);const te=N[_];te&&en(e,te)&&te.el[Ot]&&te.el[Ot](),J(X,[V])},enter(V){if(N[_]===e)return;let X=u,te=f,L=d;if(!n.isMounted)if(r)X=$||u,te=R||f,L=T||d;else return;let se=!1;V[mn]=G=>{se||(se=!0,G?J(L,[V]):J(te,[V]),le.delayedLeave&&le.delayedLeave(),V[mn]=void 0)};const Ce=V[mn].bind(null,!1);X?j(X,[V,Ce]):Ce()},leave(V,X){const te=String(e.key);if(V[mn]&&V[mn](!0),n.isUnmounting)return X();J(m,[V]);let L=!1;V[Ot]=Ce=>{L||(L=!0,X(),Ce?J(b,[V]):J(v,[V]),V[Ot]=void 0,N[te]===e&&delete N[te])};const se=V[Ot].bind(null,!1);N[te]=e,g?j(g,[V,se]):se()},clone(V){return qs(V,t,n,s)}};return le}function Mn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Mn(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function bl(e,t=!1,n){let s=[],o=0;for(let r=0;r<e.length;r++){let l=e[r];const a=n==null?l.key:String(n)+String(l.key!=null?l.key:r);l.type===Ee?(l.patchFlag&128&&o++,s=s.concat(bl(l.children,t,a))):(t||l.type!==St)&&s.push(a!=null?qt(l,{key:a}):l)}if(o>1)for(let r=0;r<s.length;r++)s[r].patchFlag=-2;return s}function wl(e,t){return Z(e)?Te({name:e.name},t,{setup:e}):e}function xl(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function Ho(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}const os=new WeakMap;function En(e,t,n,s,o=!1){if(q(e)){e.forEach((b,E)=>En(b,t&&(q(t)?t[E]:t),n,s,o));return}if(An(s)&&!o){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&En(e,t,n,s.component.subTree);return}const r=s.shapeFlag&4?ws(s.component):s.el,l=o?null:r,{i:a,r:i}=e,u=t&&t.r,f=a.refs===de?a.refs={}:a.refs,d=a.setupState,m=ie(d),g=d===de?Br:b=>Ho(f,b)?!1:ce(m,b),v=(b,E)=>!(E&&Ho(f,E));if(u!=null&&u!==i){if(Fo(t),xe(u))f[u]=null,g(u)&&(d[u]=null);else if(Me(u)){const b=t;v(u,b.k)&&(u.value=null),b.k&&(f[b.k]=null)}}if(Z(i))Hn(i,a,12,[l,f]);else{const b=xe(i),E=Me(i);if(b||E){const $=()=>{if(e.f){const R=b?g(i)?d[i]:f[i]:v()||!e.k?i.value:f[e.k];if(o)q(R)&&ao(R,r);else if(q(R))R.includes(r)||R.push(r);else if(b)f[i]=[r],g(i)&&(d[i]=f[i]);else{const T=[r];v(i,e.k)&&(i.value=T),e.k&&(f[e.k]=T)}}else b?(f[i]=l,g(i)&&(d[i]=l)):E&&(v(i,e.k)&&(i.value=l),e.k&&(f[e.k]=l))};if(l){const R=()=>{$(),os.delete(e)};R.id=-1,os.set(e,R),ke(R,n)}else Fo(e),$()}}}function Fo(e){const t=os.get(e);t&&(t.flags|=8,os.delete(e))}hs().requestIdleCallback;hs().cancelIdleCallback;const An=e=>!!e.type.__asyncLoader,Cl=e=>e.type.__isKeepAlive;function xa(e,t){Sl(e,"a",t)}function Ca(e,t){Sl(e,"da",t)}function Sl(e,t,n=Ie){const s=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(ys(t,s,n),n){let o=n.parent;for(;o&&o.parent;)Cl(o.parent.vnode)&&Sa(s,t,n,o),o=o.parent}}function Sa(e,t,n,s){const o=ys(t,e,s,!0);wo(()=>{ao(s[t],o)},n)}function ys(e,t,n=Ie,s=!1){if(n){const o=n[e]||(n[e]=[]),r=t.__weh||(t.__weh=(...l)=>{wt();const a=Fn(n),i=Ze(t,n,e,l);return a(),xt(),i});return s?o.unshift(r):o.push(r),r}}const Et=e=>(t,n=Ie)=>{(!Vn||e==="sp")&&ys(e,(...s)=>t(...s),n)},Ea=Et("bm"),Ut=Et("m"),Aa=Et("bu"),El=Et("u"),Al=Et("bum"),wo=Et("um"),Ta=Et("sp"),Ra=Et("rtg"),Pa=Et("rtc");function Oa(e,t=Ie){ys("ec",e,t)}const ka="components";function $n(e,t){return Ia(ka,e,!0,t)||e}const Na=Symbol.for("v-ndc");function Ia(e,t,n=!0,s=!1){const o=je||Ie;if(o){const r=o.type;{const a=vc(r,!1);if(a&&(a===t||a===Je(t)||a===ds(Je(t))))return r}const l=jo(o[e]||r[e],t)||jo(o.appContext[e],t);return!l&&s?r:l}}function jo(e,t){return e&&(e[t]||e[Je(t)]||e[ds(Je(t))])}function Ln(e,t,n,s){let o;const r=n,l=q(e);if(l||xe(e)){const a=l&&zt(e);let i=!1,u=!1;a&&(i=!ze(e),u=Ct(e),e=ms(e)),o=new Array(e.length);for(let f=0,d=e.length;f<d;f++)o[f]=t(i?u?ln(Xe(e[f])):Xe(e[f]):e[f],f,void 0,r)}else if(typeof e=="number"){o=new Array(e);for(let a=0;a<e;a++)o[a]=t(a+1,a,void 0,r)}else if(ue(e))if(e[Symbol.iterator])o=Array.from(e,(a,i)=>t(a,i,void 0,r));else{const a=Object.keys(e);o=new Array(a.length);for(let i=0,u=a.length;i<u;i++){const f=a[i];o[i]=t(e[f],f,i,r)}}else o=[];return o}const Js=e=>e?zl(e)?ws(e):Js(e.parent):null,Tn=Te(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Js(e.parent),$root:e=>Js(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Rl(e),$forceUpdate:e=>e.f||(e.f=()=>{bo(e.update)}),$nextTick:e=>e.n||(e.n=_o.bind(e.proxy)),$watch:e=>ga.bind(e)}),Os=(e,t)=>e!==de&&!e.__isScriptSetup&&ce(e,t),Ma={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:o,props:r,accessCache:l,type:a,appContext:i}=e;if(t[0]!=="$"){const m=l[t];if(m!==void 0)switch(m){case 1:return s[t];case 2:return o[t];case 4:return n[t];case 3:return r[t]}else{if(Os(s,t))return l[t]=1,s[t];if(o!==de&&ce(o,t))return l[t]=2,o[t];if(ce(r,t))return l[t]=3,r[t];if(n!==de&&ce(n,t))return l[t]=4,n[t];Qs&&(l[t]=0)}}const u=Tn[t];let f,d;if(u)return t==="$attrs"&&Ne(e.attrs,"get",""),u(e);if((f=a.__cssModules)&&(f=f[t]))return f;if(n!==de&&ce(n,t))return l[t]=4,n[t];if(d=i.config.globalProperties,ce(d,t))return d[t]},set({_:e},t,n){const{data:s,setupState:o,ctx:r}=e;return Os(o,t)?(o[t]=n,!0):s!==de&&ce(s,t)?(s[t]=n,!0):ce(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(r[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:o,props:r,type:l}},a){let i;return!!(n[a]||e!==de&&a[0]!=="$"&&ce(e,a)||Os(t,a)||ce(r,a)||ce(s,a)||ce(Tn,a)||ce(o.config.globalProperties,a)||(i=l.__cssModules)&&i[a])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ce(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Go(e){return q(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Qs=!0;function $a(e){const t=Rl(e),n=e.proxy,s=e.ctx;Qs=!1,t.beforeCreate&&Ko(t.beforeCreate,e,"bc");const{data:o,computed:r,methods:l,watch:a,provide:i,inject:u,created:f,beforeMount:d,mounted:m,beforeUpdate:g,updated:v,activated:b,deactivated:E,beforeDestroy:$,beforeUnmount:R,destroyed:T,unmounted:_,render:N,renderTracked:J,renderTriggered:j,errorCaptured:le,serverPrefetch:V,expose:X,inheritAttrs:te,components:L,directives:se,filters:Ce}=t;if(u&&La(u,s,null),l)for(const U in l){const ne=l[U];Z(ne)&&(s[U]=ne.bind(n))}if(o){const U=o.call(n,n);ue(U)&&(e.data=pn(U))}if(Qs=!0,r)for(const U in r){const ne=r[U],pt=Z(ne)?ne.bind(n,n):Z(ne.get)?ne.get.bind(n,n):ut,Tt=!Z(ne)&&Z(ne.set)?ne.set.bind(n):ut,tt=Se({get:pt,set:Tt});Object.defineProperty(s,U,{enumerable:!0,configurable:!0,get:()=>tt.value,set:Ve=>tt.value=Ve})}if(a)for(const U in a)Tl(a[U],s,n,U);if(i){const U=Z(i)?i.call(n):i;Reflect.ownKeys(U).forEach(ne=>{Qn(ne,U[ne])})}f&&Ko(f,e,"c");function O(U,ne){q(ne)?ne.forEach(pt=>U(pt.bind(n))):ne&&U(ne.bind(n))}if(O(Ea,d),O(Ut,m),O(Aa,g),O(El,v),O(xa,b),O(Ca,E),O(Oa,le),O(Pa,J),O(Ra,j),O(Al,R),O(wo,_),O(Ta,V),q(X))if(X.length){const U=e.exposed||(e.exposed={});X.forEach(ne=>{Object.defineProperty(U,ne,{get:()=>n[ne],set:pt=>n[ne]=pt,enumerable:!0})})}else e.exposed||(e.exposed={});N&&e.render===ut&&(e.render=N),te!=null&&(e.inheritAttrs=te),L&&(e.components=L),se&&(e.directives=se),V&&xl(e)}function La(e,t,n=ut){q(e)&&(e=Ys(e));for(const s in e){const o=e[s];let r;ue(o)?"default"in o?r=Ye(o.from||s,o.default,!0):r=Ye(o.from||s):r=Ye(o),Me(r)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>r.value,set:l=>r.value=l}):t[s]=r}}function Ko(e,t,n){Ze(q(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Tl(e,t,n,s){let o=s.includes(".")?vl(n,s):()=>n[s];if(xe(e)){const r=t[e];Z(r)&&Cn(o,r)}else if(Z(e))Cn(o,e.bind(n));else if(ue(e))if(q(e))e.forEach(r=>Tl(r,t,n,s));else{const r=Z(e.handler)?e.handler.bind(n):t[e.handler];Z(r)&&Cn(o,r,e)}}function Rl(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:o,optionsCache:r,config:{optionMergeStrategies:l}}=e.appContext,a=r.get(t);let i;return a?i=a:!o.length&&!n&&!s?i=t:(i={},o.length&&o.forEach(u=>rs(i,u,l,!0)),rs(i,t,l)),ue(t)&&r.set(t,i),i}function rs(e,t,n,s=!1){const{mixins:o,extends:r}=t;r&&rs(e,r,n,!0),o&&o.forEach(l=>rs(e,l,n,!0));for(const l in t)if(!(s&&l==="expose")){const a=Da[l]||n&&n[l];e[l]=a?a(e[l],t[l]):t[l]}return e}const Da={data:Wo,props:zo,emits:zo,methods:_n,computed:_n,beforeCreate:$e,created:$e,beforeMount:$e,mounted:$e,beforeUpdate:$e,updated:$e,beforeDestroy:$e,beforeUnmount:$e,destroyed:$e,unmounted:$e,activated:$e,deactivated:$e,errorCaptured:$e,serverPrefetch:$e,components:_n,directives:_n,watch:Ua,provide:Wo,inject:Va};function Wo(e,t){return t?e?function(){return Te(Z(e)?e.call(this,this):e,Z(t)?t.call(this,this):t)}:t:e}function Va(e,t){return _n(Ys(e),Ys(t))}function Ys(e){if(q(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function $e(e,t){return e?[...new Set([].concat(e,t))]:t}function _n(e,t){return e?Te(Object.create(null),e,t):t}function zo(e,t){return e?q(e)&&q(t)?[...new Set([...e,...t])]:Te(Object.create(null),Go(e),Go(t??{})):t}function Ua(e,t){if(!e)return t;if(!t)return e;const n=Te(Object.create(null),e);for(const s in t)n[s]=$e(e[s],t[s]);return n}function Pl(){return{app:null,config:{isNativeTag:Br,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Ba=0;function Ha(e,t){return function(s,o=null){Z(s)||(s=Te({},s)),o!=null&&!ue(o)&&(o=null);const r=Pl(),l=new WeakSet,a=[];let i=!1;const u=r.app={_uid:Ba++,_component:s,_props:o,_container:null,_context:r,_instance:null,version:_c,get config(){return r.config},set config(f){},use(f,...d){return l.has(f)||(f&&Z(f.install)?(l.add(f),f.install(u,...d)):Z(f)&&(l.add(f),f(u,...d))),u},mixin(f){return r.mixins.includes(f)||r.mixins.push(f),u},component(f,d){return d?(r.components[f]=d,u):r.components[f]},directive(f,d){return d?(r.directives[f]=d,u):r.directives[f]},mount(f,d,m){if(!i){const g=u._ceVNode||me(s,o);return g.appContext=r,m===!0?m="svg":m===!1&&(m=void 0),e(g,f,m),i=!0,u._container=f,f.__vue_app__=u,ws(g.component)}},onUnmount(f){a.push(f)},unmount(){i&&(Ze(a,u._instance,16),e(null,u._container),delete u._container.__vue_app__)},provide(f,d){return r.provides[f]=d,u},runWithContext(f){const d=rn;rn=u;try{return f()}finally{rn=d}}};return u}}let rn=null;const Fa=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Je(t)}Modifiers`]||e[`${Jt(t)}Modifiers`];function ja(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||de;let o=n;const r=t.startsWith("update:"),l=r&&Fa(s,t.slice(7));l&&(l.trim&&(o=n.map(f=>xe(f)?f.trim():f)),l.number&&(o=n.map(ps)));let a,i=s[a=Es(t)]||s[a=Es(Je(t))];!i&&r&&(i=s[a=Es(Jt(t))]),i&&Ze(i,e,6,o);const u=s[a+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,Ze(u,e,6,o)}}const Ga=new WeakMap;function Ol(e,t,n=!1){const s=n?Ga:t.emitsCache,o=s.get(e);if(o!==void 0)return o;const r=e.emits;let l={},a=!1;if(!Z(e)){const i=u=>{const f=Ol(u,t,!0);f&&(a=!0,Te(l,f))};!n&&t.mixins.length&&t.mixins.forEach(i),e.extends&&i(e.extends),e.mixins&&e.mixins.forEach(i)}return!r&&!a?(ue(e)&&s.set(e,null),null):(q(r)?r.forEach(i=>l[i]=null):Te(l,r),ue(e)&&s.set(e,l),l)}function _s(e,t){return!e||!us(t)?!1:(t=t.slice(2).replace(/Once$/,""),ce(e,t[0].toLowerCase()+t.slice(1))||ce(e,Jt(t))||ce(e,t))}function qo(e){const{type:t,vnode:n,proxy:s,withProxy:o,propsOptions:[r],slots:l,attrs:a,emit:i,render:u,renderCache:f,props:d,data:m,setupState:g,ctx:v,inheritAttrs:b}=e,E=ss(e);let $,R;try{if(n.shapeFlag&4){const _=o||s,N=_;$=at(u.call(N,_,f,d,g,m,v)),R=a}else{const _=t;$=at(_.length>1?_(d,{attrs:a,slots:l,emit:i}):_(d,null)),R=t.props?a:Ka(a)}}catch(_){Rn.length=0,vs(_,e,1),$=me(St)}let T=$;if(R&&b!==!1){const _=Object.keys(R),{shapeFlag:N}=T;_.length&&N&7&&(r&&_.some(io)&&(R=Wa(R,r)),T=qt(T,R,!1,!0))}return n.dirs&&(T=qt(T,null,!1,!0),T.dirs=T.dirs?T.dirs.concat(n.dirs):n.dirs),n.transition&&Mn(T,n.transition),$=T,ss(E),$}const Ka=e=>{let t;for(const n in e)(n==="class"||n==="style"||us(n))&&((t||(t={}))[n]=e[n]);return t},Wa=(e,t)=>{const n={};for(const s in e)(!io(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function za(e,t,n){const{props:s,children:o,component:r}=e,{props:l,children:a,patchFlag:i}=t,u=r.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&i>=0){if(i&1024)return!0;if(i&16)return s?Jo(s,l,u):!!l;if(i&8){const f=t.dynamicProps;for(let d=0;d<f.length;d++){const m=f[d];if(kl(l,s,m)&&!_s(u,m))return!0}}}else return(o||a)&&(!a||!a.$stable)?!0:s===l?!1:s?l?Jo(s,l,u):!0:!!l;return!1}function Jo(e,t,n){const s=Object.keys(t);if(s.length!==Object.keys(e).length)return!0;for(let o=0;o<s.length;o++){const r=s[o];if(kl(t,e,r)&&!_s(n,r))return!0}return!1}function kl(e,t,n){const s=e[n],o=t[n];return n==="style"&&ue(s)&&ue(o)?!Dt(s,o):s!==o}function qa({vnode:e,parent:t},n){for(;t;){const s=t.subTree;if(s.suspense&&s.suspense.activeBranch===e&&(s.el=e.el),s===e)(e=t.vnode).el=n,t=t.parent;else break}}const Nl={},Il=()=>Object.create(Nl),Ml=e=>Object.getPrototypeOf(e)===Nl;function Ja(e,t,n,s=!1){const o={},r=Il();e.propsDefaults=Object.create(null),$l(e,t,o,r);for(const l in e.propsOptions[0])l in o||(o[l]=void 0);n?e.props=s?o:al(o):e.type.props?e.props=o:e.props=r,e.attrs=r}function Qa(e,t,n,s){const{props:o,attrs:r,vnode:{patchFlag:l}}=e,a=ie(o),[i]=e.propsOptions;let u=!1;if((s||l>0)&&!(l&16)){if(l&8){const f=e.vnode.dynamicProps;for(let d=0;d<f.length;d++){let m=f[d];if(_s(e.emitsOptions,m))continue;const g=t[m];if(i)if(ce(r,m))g!==r[m]&&(r[m]=g,u=!0);else{const v=Je(m);o[v]=Xs(i,a,v,g,e,!1)}else g!==r[m]&&(r[m]=g,u=!0)}}}else{$l(e,t,o,r)&&(u=!0);let f;for(const d in a)(!t||!ce(t,d)&&((f=Jt(d))===d||!ce(t,f)))&&(i?n&&(n[d]!==void 0||n[f]!==void 0)&&(o[d]=Xs(i,a,d,void 0,e,!0)):delete o[d]);if(r!==a)for(const d in r)(!t||!ce(t,d))&&(delete r[d],u=!0)}u&&yt(e.attrs,"set","")}function $l(e,t,n,s){const[o,r]=e.propsOptions;let l=!1,a;if(t)for(let i in t){if(bn(i))continue;const u=t[i];let f;o&&ce(o,f=Je(i))?!r||!r.includes(f)?n[f]=u:(a||(a={}))[f]=u:_s(e.emitsOptions,i)||(!(i in s)||u!==s[i])&&(s[i]=u,l=!0)}if(r){const i=ie(n),u=a||de;for(let f=0;f<r.length;f++){const d=r[f];n[d]=Xs(o,i,d,u[d],e,!ce(u,d))}}return l}function Xs(e,t,n,s,o,r){const l=e[n];if(l!=null){const a=ce(l,"default");if(a&&s===void 0){const i=l.default;if(l.type!==Function&&!l.skipFactory&&Z(i)){const{propsDefaults:u}=o;if(n in u)s=u[n];else{const f=Fn(o);s=u[n]=i.call(null,t),f()}}else s=i;o.ce&&o.ce._setProp(n,s)}l[0]&&(r&&!a?s=!1:l[1]&&(s===""||s===Jt(n))&&(s=!0))}return s}const Ya=new WeakMap;function Ll(e,t,n=!1){const s=n?Ya:t.propsCache,o=s.get(e);if(o)return o;const r=e.props,l={},a=[];let i=!1;if(!Z(e)){const f=d=>{i=!0;const[m,g]=Ll(d,t,!0);Te(l,m),g&&a.push(...g)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!r&&!i)return ue(e)&&s.set(e,nn),nn;if(q(r))for(let f=0;f<r.length;f++){const d=Je(r[f]);Qo(d)&&(l[d]=de)}else if(r)for(const f in r){const d=Je(f);if(Qo(d)){const m=r[f],g=l[d]=q(m)||Z(m)?{type:m}:Te({},m),v=g.type;let b=!1,E=!0;if(q(v))for(let $=0;$<v.length;++$){const R=v[$],T=Z(R)&&R.name;if(T==="Boolean"){b=!0;break}else T==="String"&&(E=!1)}else b=Z(v)&&v.name==="Boolean";g[0]=b,g[1]=E,(b||ce(g,"default"))&&a.push(d)}}const u=[l,a];return ue(e)&&s.set(e,u),u}function Qo(e){return e[0]!=="$"&&!bn(e)}const xo=e=>e==="_"||e==="_ctx"||e==="$stable",Co=e=>q(e)?e.map(at):[at(e)],Xa=(e,t,n)=>{if(t._n)return t;const s=ct((...o)=>Co(t(...o)),n);return s._c=!1,s},Dl=(e,t,n)=>{const s=e._ctx;for(const o in e){if(xo(o))continue;const r=e[o];if(Z(r))t[o]=Xa(o,r,s);else if(r!=null){const l=Co(r);t[o]=()=>l}}},Vl=(e,t)=>{const n=Co(t);e.slots.default=()=>n},Ul=(e,t,n)=>{for(const s in t)(n||!xo(s))&&(e[s]=t[s])},Za=(e,t,n)=>{const s=e.slots=Il();if(e.vnode.shapeFlag&32){const o=t._;o?(Ul(s,t,n),n&&Gr(s,"_",o,!0)):Dl(t,s)}else t&&Vl(e,t)},ec=(e,t,n)=>{const{vnode:s,slots:o}=e;let r=!0,l=de;if(s.shapeFlag&32){const a=t._;a?n&&a===1?r=!1:Ul(o,t,n):(r=!t.$stable,Dl(t,o)),l=t}else t&&(Vl(e,t),l={default:1});if(r)for(const a in o)!xo(a)&&l[a]==null&&delete o[a]},ke=rc;function tc(e){return nc(e)}function nc(e,t){const n=hs();n.__VUE__=!0;const{insert:s,remove:o,patchProp:r,createElement:l,createText:a,createComment:i,setText:u,setElementText:f,parentNode:d,nextSibling:m,setScopeId:g=ut,insertStaticContent:v}=e,b=(p,h,y,w=null,S=null,x=null,I=void 0,k=null,P=!!h.dynamicChildren)=>{if(p===h)return;p&&!en(p,h)&&(w=C(p),Ve(p,S,x,!0),p=null),h.patchFlag===-2&&(P=!1,h.dynamicChildren=null);const{type:A,ref:Q,shapeFlag:D}=h;switch(A){case bs:E(p,h,y,w);break;case St:$(p,h,y,w);break;case Ns:p==null&&R(h,y,w,I);break;case Ee:L(p,h,y,w,S,x,I,k,P);break;default:D&1?N(p,h,y,w,S,x,I,k,P):D&6?se(p,h,y,w,S,x,I,k,P):(D&64||D&128)&&A.process(p,h,y,w,S,x,I,k,P,K)}Q!=null&&S?En(Q,p&&p.ref,x,h||p,!h):Q==null&&p&&p.ref!=null&&En(p.ref,null,x,p,!0)},E=(p,h,y,w)=>{if(p==null)s(h.el=a(h.children),y,w);else{const S=h.el=p.el;h.children!==p.children&&u(S,h.children)}},$=(p,h,y,w)=>{p==null?s(h.el=i(h.children||""),y,w):h.el=p.el},R=(p,h,y,w)=>{[p.el,p.anchor]=v(p.children,h,y,w,p.el,p.anchor)},T=({el:p,anchor:h},y,w)=>{let S;for(;p&&p!==h;)S=m(p),s(p,y,w),p=S;s(h,y,w)},_=({el:p,anchor:h})=>{let y;for(;p&&p!==h;)y=m(p),o(p),p=y;o(h)},N=(p,h,y,w,S,x,I,k,P)=>{if(h.type==="svg"?I="svg":h.type==="math"&&(I="mathml"),p==null)J(h,y,w,S,x,I,k,P);else{const A=p.el&&p.el._isVueCE?p.el:null;try{A&&A._beginPatch(),V(p,h,S,x,I,k,P)}finally{A&&A._endPatch()}}},J=(p,h,y,w,S,x,I,k)=>{let P,A;const{props:Q,shapeFlag:D,transition:W,dirs:Y}=p;if(P=p.el=l(p.type,x,Q&&Q.is,Q),D&8?f(P,p.children):D&16&&le(p.children,P,null,w,S,ks(p,x),I,k),Y&&Ht(p,null,w,"created"),j(P,p,p.scopeId,I,w),Q){for(const he in Q)he!=="value"&&!bn(he)&&r(P,he,null,Q[he],x,w);"value"in Q&&r(P,"value",null,Q.value,x),(A=Q.onVnodeBeforeMount)&&rt(A,w,p)}Y&&Ht(p,null,w,"beforeMount");const re=sc(S,W);re&&W.beforeEnter(P),s(P,h,y),((A=Q&&Q.onVnodeMounted)||re||Y)&&ke(()=>{A&&rt(A,w,p),re&&W.enter(P),Y&&Ht(p,null,w,"mounted")},S)},j=(p,h,y,w,S)=>{if(y&&g(p,y),w)for(let x=0;x<w.length;x++)g(p,w[x]);if(S){let x=S.subTree;if(h===x||Fl(x.type)&&(x.ssContent===h||x.ssFallback===h)){const I=S.vnode;j(p,I,I.scopeId,I.slotScopeIds,S.parent)}}},le=(p,h,y,w,S,x,I,k,P=0)=>{for(let A=P;A<p.length;A++){const Q=p[A]=k?vt(p[A]):at(p[A]);b(null,Q,h,y,w,S,x,I,k)}},V=(p,h,y,w,S,x,I)=>{const k=h.el=p.el;let{patchFlag:P,dynamicChildren:A,dirs:Q}=h;P|=p.patchFlag&16;const D=p.props||de,W=h.props||de;let Y;if(y&&Ft(y,!1),(Y=W.onVnodeBeforeUpdate)&&rt(Y,y,h,p),Q&&Ht(h,p,y,"beforeUpdate"),y&&Ft(y,!0),(D.innerHTML&&W.innerHTML==null||D.textContent&&W.textContent==null)&&f(k,""),A?X(p.dynamicChildren,A,k,y,w,ks(h,S),x):I||ne(p,h,k,null,y,w,ks(h,S),x,!1),P>0){if(P&16)te(k,D,W,y,S);else if(P&2&&D.class!==W.class&&r(k,"class",null,W.class,S),P&4&&r(k,"style",D.style,W.style,S),P&8){const re=h.dynamicProps;for(let he=0;he<re.length;he++){const fe=re[he],Ue=D[fe],Be=W[fe];(Be!==Ue||fe==="value")&&r(k,fe,Ue,Be,S,y)}}P&1&&p.children!==h.children&&f(k,h.children)}else!I&&A==null&&te(k,D,W,y,S);((Y=W.onVnodeUpdated)||Q)&&ke(()=>{Y&&rt(Y,y,h,p),Q&&Ht(h,p,y,"updated")},w)},X=(p,h,y,w,S,x,I)=>{for(let k=0;k<h.length;k++){const P=p[k],A=h[k],Q=P.el&&(P.type===Ee||!en(P,A)||P.shapeFlag&198)?d(P.el):y;b(P,A,Q,null,w,S,x,I,!0)}},te=(p,h,y,w,S)=>{if(h!==y){if(h!==de)for(const x in h)!bn(x)&&!(x in y)&&r(p,x,h[x],null,S,w);for(const x in y){if(bn(x))continue;const I=y[x],k=h[x];I!==k&&x!=="value"&&r(p,x,k,I,S,w)}"value"in y&&r(p,"value",h.value,y.value,S)}},L=(p,h,y,w,S,x,I,k,P)=>{const A=h.el=p?p.el:a(""),Q=h.anchor=p?p.anchor:a("");let{patchFlag:D,dynamicChildren:W,slotScopeIds:Y}=h;Y&&(k=k?k.concat(Y):Y),p==null?(s(A,y,w),s(Q,y,w),le(h.children||[],y,Q,S,x,I,k,P)):D>0&&D&64&&W&&p.dynamicChildren&&p.dynamicChildren.length===W.length?(X(p.dynamicChildren,W,y,S,x,I,k),(h.key!=null||S&&h===S.subTree)&&So(p,h,!0)):ne(p,h,y,Q,S,x,I,k,P)},se=(p,h,y,w,S,x,I,k,P)=>{h.slotScopeIds=k,p==null?h.shapeFlag&512?S.ctx.activate(h,y,w,I,P):Ce(h,y,w,S,x,I,P):G(p,h,P)},Ce=(p,h,y,w,S,x,I)=>{const k=p.component=dc(p,w,S);if(Cl(p)&&(k.ctx.renderer=K),pc(k,!1,I),k.asyncDep){if(S&&S.registerDep(k,O,I),!p.el){const P=k.subTree=me(St);$(null,P,h,y),p.placeholder=P.el}}else O(k,p,h,y,S,x,I)},G=(p,h,y)=>{const w=h.component=p.component;if(za(p,h,y))if(w.asyncDep&&!w.asyncResolved){U(w,h,y);return}else w.next=h,w.update();else h.el=p.el,w.vnode=h},O=(p,h,y,w,S,x,I)=>{const k=()=>{if(p.isMounted){let{next:D,bu:W,u:Y,parent:re,vnode:he}=p;{const st=Bl(p);if(st){D&&(D.el=he.el,U(p,D,I)),st.asyncDep.then(()=>{ke(()=>{p.isUnmounted||A()},S)});return}}let fe=D,Ue;Ft(p,!1),D?(D.el=he.el,U(p,D,I)):D=he,W&&Jn(W),(Ue=D.props&&D.props.onVnodeBeforeUpdate)&&rt(Ue,re,D,he),Ft(p,!0);const Be=qo(p),nt=p.subTree;p.subTree=Be,b(nt,Be,d(nt.el),C(nt),p,S,x),D.el=Be.el,fe===null&&qa(p,Be.el),Y&&ke(Y,S),(Ue=D.props&&D.props.onVnodeUpdated)&&ke(()=>rt(Ue,re,D,he),S)}else{let D;const{el:W,props:Y}=h,{bm:re,m:he,parent:fe,root:Ue,type:Be}=p,nt=An(h);Ft(p,!1),re&&Jn(re),!nt&&(D=Y&&Y.onVnodeBeforeMount)&&rt(D,fe,h),Ft(p,!0);{Ue.ce&&Ue.ce._hasShadowRoot()&&Ue.ce._injectChildStyle(Be);const st=p.subTree=qo(p);b(null,st,y,w,p,S,x),h.el=st.el}if(he&&ke(he,S),!nt&&(D=Y&&Y.onVnodeMounted)){const st=h;ke(()=>rt(D,fe,st),S)}(h.shapeFlag&256||fe&&An(fe.vnode)&&fe.vnode.shapeFlag&256)&&p.a&&ke(p.a,S),p.isMounted=!0,h=y=w=null}};p.scope.on();const P=p.effect=new qr(k);p.scope.off();const A=p.update=P.run.bind(P),Q=p.job=P.runIfDirty.bind(P);Q.i=p,Q.id=p.uid,P.scheduler=()=>bo(Q),Ft(p,!0),A()},U=(p,h,y)=>{h.component=p;const w=p.vnode.props;p.vnode=h,p.next=null,Qa(p,h.props,w,y),ec(p,h.children,y),wt(),Do(p),xt()},ne=(p,h,y,w,S,x,I,k,P=!1)=>{const A=p&&p.children,Q=p?p.shapeFlag:0,D=h.children,{patchFlag:W,shapeFlag:Y}=h;if(W>0){if(W&128){Tt(A,D,y,w,S,x,I,k,P);return}else if(W&256){pt(A,D,y,w,S,x,I,k,P);return}}Y&8?(Q&16&&Ke(A,S,x),D!==A&&f(y,D)):Q&16?Y&16?Tt(A,D,y,w,S,x,I,k,P):Ke(A,S,x,!0):(Q&8&&f(y,""),Y&16&&le(D,y,w,S,x,I,k,P))},pt=(p,h,y,w,S,x,I,k,P)=>{p=p||nn,h=h||nn;const A=p.length,Q=h.length,D=Math.min(A,Q);let W;for(W=0;W<D;W++){const Y=h[W]=P?vt(h[W]):at(h[W]);b(p[W],Y,y,null,S,x,I,k,P)}A>Q?Ke(p,S,x,!0,!1,D):le(h,y,w,S,x,I,k,P,D)},Tt=(p,h,y,w,S,x,I,k,P)=>{let A=0;const Q=h.length;let D=p.length-1,W=Q-1;for(;A<=D&&A<=W;){const Y=p[A],re=h[A]=P?vt(h[A]):at(h[A]);if(en(Y,re))b(Y,re,y,null,S,x,I,k,P);else break;A++}for(;A<=D&&A<=W;){const Y=p[D],re=h[W]=P?vt(h[W]):at(h[W]);if(en(Y,re))b(Y,re,y,null,S,x,I,k,P);else break;D--,W--}if(A>D){if(A<=W){const Y=W+1,re=Y<Q?h[Y].el:w;for(;A<=W;)b(null,h[A]=P?vt(h[A]):at(h[A]),y,re,S,x,I,k,P),A++}}else if(A>W)for(;A<=D;)Ve(p[A],S,x,!0),A++;else{const Y=A,re=A,he=new Map;for(A=re;A<=W;A++){const Fe=h[A]=P?vt(h[A]):at(h[A]);Fe.key!=null&&he.set(Fe.key,A)}let fe,Ue=0;const Be=W-re+1;let nt=!1,st=0;const hn=new Array(Be);for(A=0;A<Be;A++)hn[A]=0;for(A=Y;A<=D;A++){const Fe=p[A];if(Ue>=Be){Ve(Fe,S,x,!0);continue}let ot;if(Fe.key!=null)ot=he.get(Fe.key);else for(fe=re;fe<=W;fe++)if(hn[fe-re]===0&&en(Fe,h[fe])){ot=fe;break}ot===void 0?Ve(Fe,S,x,!0):(hn[ot-re]=A+1,ot>=st?st=ot:nt=!0,b(Fe,h[ot],y,null,S,x,I,k,P),Ue++)}const Oo=nt?oc(hn):nn;for(fe=Oo.length-1,A=Be-1;A>=0;A--){const Fe=re+A,ot=h[Fe],ko=h[Fe+1],No=Fe+1<Q?ko.el||Hl(ko):w;hn[A]===0?b(null,ot,y,No,S,x,I,k,P):nt&&(fe<0||A!==Oo[fe]?tt(ot,y,No,2):fe--)}}},tt=(p,h,y,w,S=null)=>{const{el:x,type:I,transition:k,children:P,shapeFlag:A}=p;if(A&6){tt(p.component.subTree,h,y,w);return}if(A&128){p.suspense.move(h,y,w);return}if(A&64){I.move(p,h,y,K);return}if(I===Ee){s(x,h,y);for(let D=0;D<P.length;D++)tt(P[D],h,y,w);s(p.anchor,h,y);return}if(I===Ns){T(p,h,y);return}if(w!==2&&A&1&&k)if(w===0)k.beforeEnter(x),s(x,h,y),ke(()=>k.enter(x),S);else{const{leave:D,delayLeave:W,afterLeave:Y}=k,re=()=>{p.ctx.isUnmounted?o(x):s(x,h,y)},he=()=>{x._isLeaving&&x[Ot](!0),D(x,()=>{re(),Y&&Y()})};W?W(x,re,he):he()}else s(x,h,y)},Ve=(p,h,y,w=!1,S=!1)=>{const{type:x,props:I,ref:k,children:P,dynamicChildren:A,shapeFlag:Q,patchFlag:D,dirs:W,cacheIndex:Y}=p;if(D===-2&&(S=!1),k!=null&&(wt(),En(k,null,y,p,!0),xt()),Y!=null&&(h.renderCache[Y]=void 0),Q&256){h.ctx.deactivate(p);return}const re=Q&1&&W,he=!An(p);let fe;if(he&&(fe=I&&I.onVnodeBeforeUnmount)&&rt(fe,h,p),Q&6)Bt(p.component,y,w);else{if(Q&128){p.suspense.unmount(y,w);return}re&&Ht(p,null,h,"beforeUnmount"),Q&64?p.type.remove(p,h,y,K,w):A&&!A.hasOnce&&(x!==Ee||D>0&&D&64)?Ke(A,h,y,!1,!0):(x===Ee&&D&384||!S&&Q&16)&&Ke(P,h,y),w&&Qt(p)}(he&&(fe=I&&I.onVnodeUnmounted)||re)&&ke(()=>{fe&&rt(fe,h,p),re&&Ht(p,null,h,"unmounted")},y)},Qt=p=>{const{type:h,el:y,anchor:w,transition:S}=p;if(h===Ee){Yt(y,w);return}if(h===Ns){_(p);return}const x=()=>{o(y),S&&!S.persisted&&S.afterLeave&&S.afterLeave()};if(p.shapeFlag&1&&S&&!S.persisted){const{leave:I,delayLeave:k}=S,P=()=>I(y,x);k?k(p.el,x,P):P()}else x()},Yt=(p,h)=>{let y;for(;p!==h;)y=m(p),o(p),p=y;o(h)},Bt=(p,h,y)=>{const{bum:w,scope:S,job:x,subTree:I,um:k,m:P,a:A}=p;Yo(P),Yo(A),w&&Jn(w),S.stop(),x&&(x.flags|=8,Ve(I,p,h,y)),k&&ke(k,h),ke(()=>{p.isUnmounted=!0},h)},Ke=(p,h,y,w=!1,S=!1,x=0)=>{for(let I=x;I<p.length;I++)Ve(p[I],h,y,w,S)},C=p=>{if(p.shapeFlag&6)return C(p.component.subTree);if(p.shapeFlag&128)return p.suspense.next();const h=m(p.anchor||p.el),y=h&&h[yl];return y?m(y):h};let B=!1;const M=(p,h,y)=>{let w;p==null?h._vnode&&(Ve(h._vnode,null,null,!0),w=h._vnode.component):b(h._vnode||null,p,h,null,null,null,y),h._vnode=p,B||(B=!0,Do(w),pl(),B=!1)},K={p:b,um:Ve,m:tt,r:Qt,mt:Ce,mc:le,pc:ne,pbc:X,n:C,o:e};return{render:M,hydrate:void 0,createApp:Ha(M)}}function ks({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function Ft({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function sc(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function So(e,t,n=!1){const s=e.children,o=t.children;if(q(s)&&q(o))for(let r=0;r<s.length;r++){const l=s[r];let a=o[r];a.shapeFlag&1&&!a.dynamicChildren&&((a.patchFlag<=0||a.patchFlag===32)&&(a=o[r]=vt(o[r]),a.el=l.el),!n&&a.patchFlag!==-2&&So(l,a)),a.type===bs&&(a.patchFlag===-1&&(a=o[r]=vt(a)),a.el=l.el),a.type===St&&!a.el&&(a.el=l.el)}}function oc(e){const t=e.slice(),n=[0];let s,o,r,l,a;const i=e.length;for(s=0;s<i;s++){const u=e[s];if(u!==0){if(o=n[n.length-1],e[o]<u){t[s]=o,n.push(s);continue}for(r=0,l=n.length-1;r<l;)a=r+l>>1,e[n[a]]<u?r=a+1:l=a;u<e[n[r]]&&(r>0&&(t[s]=n[r-1]),n[r]=s)}}for(r=n.length,l=n[r-1];r-- >0;)n[r]=l,l=t[l];return n}function Bl(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Bl(t)}function Yo(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}function Hl(e){if(e.placeholder)return e.placeholder;const t=e.component;return t?Hl(t.subTree):null}const Fl=e=>e.__isSuspense;function rc(e,t){t&&t.pendingBranch?q(e)?t.effects.push(...e):t.effects.push(e):da(e)}const Ee=Symbol.for("v-fgt"),bs=Symbol.for("v-txt"),St=Symbol.for("v-cmt"),Ns=Symbol.for("v-stc"),Rn=[];let Ge=null;function H(e=!1){Rn.push(Ge=e?null:[])}function lc(){Rn.pop(),Ge=Rn[Rn.length-1]||null}let Dn=1;function ls(e,t=!1){Dn+=e,e<0&&Ge&&t&&(Ge.hasOnce=!0)}function jl(e){return e.dynamicChildren=Dn>0?Ge||nn:null,lc(),Dn>0&&Ge&&Ge.push(e),e}function F(e,t,n,s,o,r){return jl(c(e,t,n,s,o,r,!0))}function Gl(e,t,n,s,o){return jl(me(e,t,n,s,o,!0))}function is(e){return e?e.__v_isVNode===!0:!1}function en(e,t){return e.type===t.type&&e.key===t.key}const Kl=({key:e})=>e??null,Xn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?xe(e)||Me(e)||Z(e)?{i:je,r:e,k:t,f:!!n}:e:null);function c(e,t=null,n=null,s=0,o=null,r=e===Ee?0:1,l=!1,a=!1){const i={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Kl(t),ref:t&&Xn(t),scopeId:gl,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:s,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:je};return a?(Eo(i,n),r&128&&e.normalize(i)):n&&(i.shapeFlag|=xe(n)?8:16),Dn>0&&!l&&Ge&&(i.patchFlag>0||r&6)&&i.patchFlag!==32&&Ge.push(i),i}const me=ic;function ic(e,t=null,n=null,s=0,o=null,r=!1){if((!e||e===Na)&&(e=St),is(e)){const a=qt(e,t,!0);return n&&Eo(a,n),Dn>0&&!r&&Ge&&(a.shapeFlag&6?Ge[Ge.indexOf(e)]=a:Ge.push(a)),a.patchFlag=-2,a}if(yc(e)&&(e=e.__vccOpts),t){t=ac(t);let{class:a,style:i}=t;a&&!xe(a)&&(t.class=_e(a)),ue(i)&&(yo(i)&&!q(i)&&(i=Te({},i)),t.style=gs(i))}const l=xe(e)?1:Fl(e)?128:ma(e)?64:ue(e)?4:Z(e)?2:0;return c(e,t,n,s,o,l,r,!0)}function ac(e){return e?yo(e)||Ml(e)?Te({},e):e:null}function qt(e,t,n=!1,s=!1){const{props:o,ref:r,patchFlag:l,children:a,transition:i}=e,u=t?cc(o||{},t):o,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&Kl(u),ref:t&&t.ref?n&&r?q(r)?r.concat(Xn(t)):[r,Xn(t)]:Xn(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ee?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:i,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&qt(e.ssContent),ssFallback:e.ssFallback&&qt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return i&&s&&Mn(f,i.clone(f)),f}function pe(e=" ",t=0){return me(bs,null,e,t)}function ve(e="",t=!1){return t?(H(),Gl(St,null,e)):me(St,null,e)}function at(e){return e==null||typeof e=="boolean"?me(St):q(e)?me(Ee,null,e.slice()):is(e)?vt(e):me(bs,null,String(e))}function vt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:qt(e)}function Eo(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(q(t))n=16;else if(typeof t=="object")if(s&65){const o=t.default;o&&(o._c&&(o._d=!1),Eo(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!Ml(t)?t._ctx=je:o===3&&je&&(je.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else Z(t)?(t={default:t,_ctx:je},n=32):(t=String(t),s&64?(n=16,t=[pe(t)]):n=8);e.children=t,e.shapeFlag|=n}function cc(...e){const t={};for(let n=0;n<e.length;n++){const s=e[n];for(const o in s)if(o==="class")t.class!==s.class&&(t.class=_e([t.class,s.class]));else if(o==="style")t.style=gs([t.style,s.style]);else if(us(o)){const r=t[o],l=s[o];l&&r!==l&&!(q(r)&&r.includes(l))&&(t[o]=r?[].concat(r,l):l)}else o!==""&&(t[o]=s[o])}return t}function rt(e,t,n,s=null){Ze(e,t,7,[n,s])}const uc=Pl();let fc=0;function dc(e,t,n){const s=e.type,o=(t?t.appContext:e.appContext)||uc,r={uid:fc++,vnode:e,type:s,parent:t,appContext:o,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new Li(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(o.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Ll(s,o),emitsOptions:Ol(s,o),emit:null,emitted:null,propsDefaults:de,inheritAttrs:s.inheritAttrs,ctx:de,data:de,props:de,attrs:de,slots:de,refs:de,setupState:de,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return r.ctx={_:r},r.root=t?t.root:r,r.emit=ja.bind(null,r),e.ce&&e.ce(r),r}let Ie=null;const Wl=()=>Ie||je;let as,Zs;{const e=hs(),t=(n,s)=>{let o;return(o=e[n])||(o=e[n]=[]),o.push(s),r=>{o.length>1?o.forEach(l=>l(r)):o[0](r)}};as=t("__VUE_INSTANCE_SETTERS__",n=>Ie=n),Zs=t("__VUE_SSR_SETTERS__",n=>Vn=n)}const Fn=e=>{const t=Ie;return as(e),e.scope.on(),()=>{e.scope.off(),as(t)}},Xo=()=>{Ie&&Ie.scope.off(),as(null)};function zl(e){return e.vnode.shapeFlag&4}let Vn=!1;function pc(e,t=!1,n=!1){t&&Zs(t);const{props:s,children:o}=e.vnode,r=zl(e);Ja(e,s,r,t),Za(e,o,n||t);const l=r?hc(e,t):void 0;return t&&Zs(!1),l}function hc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Ma);const{setup:s}=n;if(s){wt();const o=e.setupContext=s.length>1?mc(e):null,r=Fn(e),l=Hn(s,e,0,[e.props,o]),a=Hr(l);if(xt(),r(),(a||e.sp)&&!An(e)&&xl(e),a){if(l.then(Xo,Xo),t)return l.then(i=>{Zo(e,i)}).catch(i=>{vs(i,e,0)});e.asyncDep=l}else Zo(e,l)}else ql(e)}function Zo(e,t,n){Z(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ue(t)&&(e.setupState=ul(t)),ql(e)}function ql(e,t,n){const s=e.type;e.render||(e.render=s.render||ut);{const o=Fn(e);wt();try{$a(e)}finally{xt(),o()}}}const gc={get(e,t){return Ne(e,"get",""),e[t]}};function mc(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,gc),slots:e.slots,emit:e.emit,expose:t}}function ws(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(ul(na(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Tn)return Tn[n](e)},has(t,n){return n in t||n in Tn}})):e.proxy}function vc(e,t=!0){return Z(e)?e.displayName||e.name:e.name||t&&e.__name}function yc(e){return Z(e)&&"__vccOpts"in e}const Se=(e,t)=>ia(e,t,Vn);function Jl(e,t,n){try{ls(-1);const s=arguments.length;return s===2?ue(t)&&!q(t)?is(t)?me(e,null,[t]):me(e,t):me(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&is(n)&&(n=[n]),me(e,t,n))}finally{ls(1)}}const _c="3.5.29";/**
14
+ * @vue/runtime-dom v3.5.29
15
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
16
+ * @license MIT
17
+ **/let eo;const er=typeof window<"u"&&window.trustedTypes;if(er)try{eo=er.createPolicy("vue",{createHTML:e=>e})}catch{}const Ql=eo?e=>eo.createHTML(e):e=>e,bc="http://www.w3.org/2000/svg",wc="http://www.w3.org/1998/Math/MathML",mt=typeof document<"u"?document:null,tr=mt&&mt.createElement("template"),xc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const o=t==="svg"?mt.createElementNS(bc,e):t==="mathml"?mt.createElementNS(wc,e):n?mt.createElement(e,{is:n}):mt.createElement(e);return e==="select"&&s&&s.multiple!=null&&o.setAttribute("multiple",s.multiple),o},createText:e=>mt.createTextNode(e),createComment:e=>mt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>mt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,o,r){const l=n?n.previousSibling:t.lastChild;if(o&&(o===r||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===r||!(o=o.nextSibling)););else{tr.innerHTML=Ql(s==="svg"?`<svg>${e}</svg>`:s==="mathml"?`<math>${e}</math>`:e);const a=tr.content;if(s==="svg"||s==="mathml"){const i=a.firstChild;for(;i.firstChild;)a.appendChild(i.firstChild);a.removeChild(i)}t.insertBefore(a,n)}return[l?l.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Rt="transition",vn="animation",an=Symbol("_vtc"),Yl={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Cc=Te({},ba,Yl),jt=(e,t=[])=>{q(e)?e.forEach(n=>n(...t)):e&&e(...t)},nr=e=>e?q(e)?e.some(t=>t.length>1):e.length>1:!1;function Sc(e){const t={};for(const L in e)L in Yl||(t[L]=e[L]);if(e.css===!1)return t;const{name:n="v",type:s,duration:o,enterFromClass:r=`${n}-enter-from`,enterActiveClass:l=`${n}-enter-active`,enterToClass:a=`${n}-enter-to`,appearFromClass:i=r,appearActiveClass:u=l,appearToClass:f=a,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:m=`${n}-leave-active`,leaveToClass:g=`${n}-leave-to`}=e,v=Ec(o),b=v&&v[0],E=v&&v[1],{onBeforeEnter:$,onEnter:R,onEnterCancelled:T,onLeave:_,onLeaveCancelled:N,onBeforeAppear:J=$,onAppear:j=R,onAppearCancelled:le=T}=t,V=(L,se,Ce,G)=>{L._enterCancelled=G,kt(L,se?f:a),kt(L,se?u:l),Ce&&Ce()},X=(L,se)=>{L._isLeaving=!1,kt(L,d),kt(L,g),kt(L,m),se&&se()},te=L=>(se,Ce)=>{const G=L?j:R,O=()=>V(se,L,Ce);jt(G,[se,O]),sr(()=>{kt(se,L?i:r),lt(se,L?f:a),nr(G)||or(se,s,b,O)})};return Te(t,{onBeforeEnter(L){jt($,[L]),lt(L,r),lt(L,l)},onBeforeAppear(L){jt(J,[L]),lt(L,i),lt(L,u)},onEnter:te(!1),onAppear:te(!0),onLeave(L,se){L._isLeaving=!0;const Ce=()=>X(L,se);lt(L,d),L._enterCancelled?(lt(L,m),to(L)):(to(L),lt(L,m)),sr(()=>{L._isLeaving&&(kt(L,d),lt(L,g),nr(_)||or(L,s,E,Ce))}),jt(_,[L,Ce])},onEnterCancelled(L){V(L,!1,void 0,!0),jt(T,[L])},onAppearCancelled(L){V(L,!0,void 0,!0),jt(le,[L])},onLeaveCancelled(L){X(L),jt(N,[L])}})}function Ec(e){if(e==null)return null;if(ue(e))return[Is(e.enter),Is(e.leave)];{const t=Is(e);return[t,t]}}function Is(e){return Ri(e)}function lt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[an]||(e[an]=new Set)).add(t)}function kt(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[an];n&&(n.delete(t),n.size||(e[an]=void 0))}function sr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Ac=0;function or(e,t,n,s){const o=e._endId=++Ac,r=()=>{o===e._endId&&s()};if(n!=null)return setTimeout(r,n);const{type:l,timeout:a,propCount:i}=Xl(e,t);if(!l)return s();const u=l+"end";let f=0;const d=()=>{e.removeEventListener(u,m),r()},m=g=>{g.target===e&&++f>=i&&d()};setTimeout(()=>{f<i&&d()},a+1),e.addEventListener(u,m)}function Xl(e,t){const n=window.getComputedStyle(e),s=v=>(n[v]||"").split(", "),o=s(`${Rt}Delay`),r=s(`${Rt}Duration`),l=rr(o,r),a=s(`${vn}Delay`),i=s(`${vn}Duration`),u=rr(a,i);let f=null,d=0,m=0;t===Rt?l>0&&(f=Rt,d=l,m=r.length):t===vn?u>0&&(f=vn,d=u,m=i.length):(d=Math.max(l,u),f=d>0?l>u?Rt:vn:null,m=f?f===Rt?r.length:i.length:0);const g=f===Rt&&/\b(?:transform|all)(?:,|$)/.test(s(`${Rt}Property`).toString());return{type:f,timeout:d,propCount:m,hasTransform:g}}function rr(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((n,s)=>lr(n)+lr(e[s])))}function lr(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function to(e){return(e?e.ownerDocument:document).body.offsetHeight}function Tc(e,t,n){const s=e[an];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const ir=Symbol("_vod"),Rc=Symbol("_vsh"),Pc=Symbol(""),Oc=/(?:^|;)\s*display\s*:/;function kc(e,t,n){const s=e.style,o=xe(n);let r=!1;if(n&&!o){if(t)if(xe(t))for(const l of t.split(";")){const a=l.slice(0,l.indexOf(":")).trim();n[a]==null&&Zn(s,a,"")}else for(const l in t)n[l]==null&&Zn(s,l,"");for(const l in n)l==="display"&&(r=!0),Zn(s,l,n[l])}else if(o){if(t!==n){const l=s[Pc];l&&(n+=";"+l),s.cssText=n,r=Oc.test(n)}}else t&&e.removeAttribute("style");ir in e&&(e[ir]=r?s.display:"",e[Rc]&&(s.display="none"))}const ar=/\s*!important$/;function Zn(e,t,n){if(q(n))n.forEach(s=>Zn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Nc(e,t);ar.test(n)?e.setProperty(Jt(s),n.replace(ar,""),"important"):e[s]=n}}const cr=["Webkit","Moz","ms"],Ms={};function Nc(e,t){const n=Ms[t];if(n)return n;let s=Je(t);if(s!=="filter"&&s in e)return Ms[t]=s;s=ds(s);for(let o=0;o<cr.length;o++){const r=cr[o]+s;if(r in e)return Ms[t]=r}return t}const ur="http://www.w3.org/1999/xlink";function fr(e,t,n,s,o,r=Mi(t)){s&&t.startsWith("xlink:")?n==null?e.removeAttributeNS(ur,t.slice(6,t.length)):e.setAttributeNS(ur,t,n):n==null||r&&!Kr(n)?e.removeAttribute(t):e.setAttribute(t,r?"":dt(n)?String(n):n)}function dr(e,t,n,s,o){if(t==="innerHTML"||t==="textContent"){n!=null&&(e[t]=t==="innerHTML"?Ql(n):n);return}const r=e.tagName;if(t==="value"&&r!=="PROGRESS"&&!r.includes("-")){const a=r==="OPTION"?e.getAttribute("value")||"":e.value,i=n==null?e.type==="checkbox"?"on":"":String(n);(a!==i||!("_value"in e))&&(e.value=i),n==null&&e.removeAttribute(t),e._value=n;return}let l=!1;if(n===""||n==null){const a=typeof e[t];a==="boolean"?n=Kr(n):n==null&&a==="string"?(n="",l=!0):a==="number"&&(n=0,l=!0)}try{e[t]=n}catch{}l&&e.removeAttribute(o||t)}function bt(e,t,n,s){e.addEventListener(t,n,s)}function Ic(e,t,n,s){e.removeEventListener(t,n,s)}const pr=Symbol("_vei");function Mc(e,t,n,s,o=null){const r=e[pr]||(e[pr]={}),l=r[t];if(s&&l)l.value=s;else{const[a,i]=$c(t);if(s){const u=r[t]=Vc(s,o);bt(e,a,u,i)}else l&&(Ic(e,a,l,i),r[t]=void 0)}}const hr=/(?:Once|Passive|Capture)$/;function $c(e){let t;if(hr.test(e)){t={};let s;for(;s=e.match(hr);)e=e.slice(0,e.length-s[0].length),t[s[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):Jt(e.slice(2)),t]}let $s=0;const Lc=Promise.resolve(),Dc=()=>$s||(Lc.then(()=>$s=0),$s=Date.now());function Vc(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Ze(Uc(s,n.value),t,5,[s])};return n.value=e,n.attached=Dc(),n}function Uc(e,t){if(q(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>o=>!o._stopped&&s&&s(o))}else return t}const gr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Bc=(e,t,n,s,o,r)=>{const l=o==="svg";t==="class"?Tc(e,s,l):t==="style"?kc(e,n,s):us(t)?io(t)||Mc(e,t,n,s,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Hc(e,t,s,l))?(dr(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&fr(e,t,s,l,r,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!xe(s))?dr(e,Je(t),s,r,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),fr(e,t,s,l))};function Hc(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&gr(t)&&Z(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return gr(t)&&xe(n)?!1:t in e}const Zl=new WeakMap,ei=new WeakMap,cs=Symbol("_moveCb"),mr=Symbol("_enterCb"),Fc=e=>(delete e.props.mode,e),jc=Fc({name:"TransitionGroup",props:Te({},Cc,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=Wl(),s=_a();let o,r;return El(()=>{if(!o.length)return;const l=e.moveClass||`${e.name||"v"}-move`;if(!qc(o[0].el,n.vnode.el,l)){o=[];return}o.forEach(Kc),o.forEach(Wc);const a=o.filter(zc);to(n.vnode.el),a.forEach(i=>{const u=i.el,f=u.style;lt(u,l),f.transform=f.webkitTransform=f.transitionDuration="";const d=u[cs]=m=>{m&&m.target!==u||(!m||m.propertyName.endsWith("transform"))&&(u.removeEventListener("transitionend",d),u[cs]=null,kt(u,l))};u.addEventListener("transitionend",d)}),o=[]}),()=>{const l=ie(e),a=Sc(l);let i=l.tag||Ee;if(o=[],r)for(let u=0;u<r.length;u++){const f=r[u];f.el&&f.el instanceof Element&&(o.push(f),Mn(f,qs(f,a,s,n)),Zl.set(f,ti(f.el)))}r=t.default?bl(t.default()):[];for(let u=0;u<r.length;u++){const f=r[u];f.key!=null&&Mn(f,qs(f,a,s,n))}return me(i,null,r)}}}),Gc=jc;function Kc(e){const t=e.el;t[cs]&&t[cs](),t[mr]&&t[mr]()}function Wc(e){ei.set(e,ti(e.el))}function zc(e){const t=Zl.get(e),n=ei.get(e),s=t.left-n.left,o=t.top-n.top;if(s||o){const r=e.el,l=r.style,a=r.getBoundingClientRect();let i=1,u=1;return r.offsetWidth&&(i=a.width/r.offsetWidth),r.offsetHeight&&(u=a.height/r.offsetHeight),(!Number.isFinite(i)||i===0)&&(i=1),(!Number.isFinite(u)||u===0)&&(u=1),Math.abs(i-1)<.01&&(i=1),Math.abs(u-1)<.01&&(u=1),l.transform=l.webkitTransform=`translate(${s/i}px,${o/u}px)`,l.transitionDuration="0s",e}}function ti(e){const t=e.getBoundingClientRect();return{left:t.left,top:t.top}}function qc(e,t,n){const s=e.cloneNode(),o=e[an];o&&o.forEach(a=>{a.split(/\s+/).forEach(i=>i&&s.classList.remove(i))}),n.split(/\s+/).forEach(a=>a&&s.classList.add(a)),s.style.display="none";const r=t.nodeType===1?t:t.parentNode;r.appendChild(s);const{hasTransform:l}=Xl(s);return r.removeChild(s),l}const Vt=e=>{const t=e.props["onUpdate:modelValue"]||!1;return q(t)?n=>Jn(t,n):t};function Jc(e){e.target.composing=!0}function vr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const qe=Symbol("_assign");function yr(e,t,n){return t&&(e=e.trim()),n&&(e=ps(e)),e}const Oe={created(e,{modifiers:{lazy:t,trim:n,number:s}},o){e[qe]=Vt(o);const r=s||o.props&&o.props.type==="number";bt(e,t?"change":"input",l=>{l.target.composing||e[qe](yr(e.value,n,r))}),(n||r)&&bt(e,"change",()=>{e.value=yr(e.value,n,r)}),t||(bt(e,"compositionstart",Jc),bt(e,"compositionend",vr),bt(e,"change",vr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:o,number:r}},l){if(e[qe]=Vt(l),e.composing)return;const a=(r||e.type==="number")&&!/^0\d/.test(e.value)?ps(e.value):e.value,i=t??"";a!==i&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||o&&e.value.trim()===i)||(e.value=i))}},Qc={deep:!0,created(e,t,n){e[qe]=Vt(n),bt(e,"change",()=>{const s=e._modelValue,o=cn(e),r=e.checked,l=e[qe];if(q(s)){const a=uo(s,o),i=a!==-1;if(r&&!i)l(s.concat(o));else if(!r&&i){const u=[...s];u.splice(a,1),l(u)}}else if(dn(s)){const a=new Set(s);r?a.add(o):a.delete(o),l(a)}else l(ni(e,r))})},mounted:_r,beforeUpdate(e,t,n){e[qe]=Vt(n),_r(e,t,n)}};function _r(e,{value:t,oldValue:n},s){e._modelValue=t;let o;if(q(t))o=uo(t,s.props.value)>-1;else if(dn(t))o=t.has(s.props.value);else{if(t===n)return;o=Dt(t,ni(e,!0))}e.checked!==o&&(e.checked=o)}const Yc={created(e,{value:t},n){e.checked=Dt(t,n.props.value),e[qe]=Vt(n),bt(e,"change",()=>{e[qe](cn(e))})},beforeUpdate(e,{value:t,oldValue:n},s){e[qe]=Vt(s),t!==n&&(e.checked=Dt(t,s.props.value))}},Pn={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const o=dn(t);bt(e,"change",()=>{const r=Array.prototype.filter.call(e.options,l=>l.selected).map(l=>n?ps(cn(l)):cn(l));e[qe](e.multiple?o?new Set(r):r:r[0]),e._assigning=!0,_o(()=>{e._assigning=!1})}),e[qe]=Vt(s)},mounted(e,{value:t}){br(e,t)},beforeUpdate(e,t,n){e[qe]=Vt(n)},updated(e,{value:t}){e._assigning||br(e,t)}};function br(e,t){const n=e.multiple,s=q(t);if(!(n&&!s&&!dn(t))){for(let o=0,r=e.options.length;o<r;o++){const l=e.options[o],a=cn(l);if(n)if(s){const i=typeof a;i==="string"||i==="number"?l.selected=t.some(u=>String(u)===String(a)):l.selected=uo(t,a)>-1}else l.selected=t.has(a);else if(Dt(cn(l),t)){e.selectedIndex!==o&&(e.selectedIndex=o);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function cn(e){return"_value"in e?e._value:e.value}function ni(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Xc={created(e,t,n){qn(e,t,n,null,"created")},mounted(e,t,n){qn(e,t,n,null,"mounted")},beforeUpdate(e,t,n,s){qn(e,t,n,s,"beforeUpdate")},updated(e,t,n,s){qn(e,t,n,s,"updated")}};function Zc(e,t){switch(e){case"SELECT":return Pn;case"TEXTAREA":return Oe;default:switch(t){case"checkbox":return Qc;case"radio":return Yc;default:return Oe}}}function qn(e,t,n,s,o){const l=Zc(e.tagName,n.props&&n.props.type)[o];l&&l(e,t,n,s)}const eu=["ctrl","shift","alt","meta"],tu={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>eu.some(n=>e[`${n}Key`]&&!t.includes(n))},xs=(e,t)=>{if(!e)return e;const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(o,...r)=>{for(let l=0;l<t.length;l++){const a=tu[t[l]];if(a&&a(o,t))return}return e(o,...r)})},nu=Te({patchProp:Bc},xc);let wr;function su(){return wr||(wr=tc(nu))}const ou=(...e)=>{const t=su().createApp(...e),{mount:n}=t;return t.mount=s=>{const o=lu(s);if(!o)return;const r=t._component;!Z(r)&&!r.render&&!r.template&&(r.template=o.innerHTML),o.nodeType===1&&(o.textContent="");const l=n(o,!1,ru(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),l},t};function ru(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function lu(e){return xe(e)?document.querySelector(e):e}/*!
18
+ * vue-router v4.6.4
19
+ * (c) 2025 Eduardo San Martin Morote
20
+ * @license MIT
21
+ */const tn=typeof document<"u";function si(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function iu(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&si(e.default)}const ae=Object.assign;function Ls(e,t){const n={};for(const s in t){const o=t[s];n[s]=et(o)?o.map(e):e(o)}return n}const On=()=>{},et=Array.isArray;function xr(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}const oi=/#/g,au=/&/g,cu=/\//g,uu=/=/g,fu=/\?/g,ri=/\+/g,du=/%5B/g,pu=/%5D/g,li=/%5E/g,hu=/%60/g,ii=/%7B/g,gu=/%7C/g,ai=/%7D/g,mu=/%20/g;function Ao(e){return e==null?"":encodeURI(""+e).replace(gu,"|").replace(du,"[").replace(pu,"]")}function vu(e){return Ao(e).replace(ii,"{").replace(ai,"}").replace(li,"^")}function no(e){return Ao(e).replace(ri,"%2B").replace(mu,"+").replace(oi,"%23").replace(au,"%26").replace(hu,"`").replace(ii,"{").replace(ai,"}").replace(li,"^")}function yu(e){return no(e).replace(uu,"%3D")}function _u(e){return Ao(e).replace(oi,"%23").replace(fu,"%3F")}function bu(e){return _u(e).replace(cu,"%2F")}function Un(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const wu=/\/$/,xu=e=>e.replace(wu,"");function Ds(e,t,n="/"){let s,o={},r="",l="";const a=t.indexOf("#");let i=t.indexOf("?");return i=a>=0&&i>a?-1:i,i>=0&&(s=t.slice(0,i),r=t.slice(i,a>0?a:t.length),o=e(r.slice(1))),a>=0&&(s=s||t.slice(0,a),l=t.slice(a,t.length)),s=Au(s??t,n),{fullPath:s+r+l,path:s,query:o,hash:Un(l)}}function Cu(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Cr(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Su(e,t,n){const s=t.matched.length-1,o=n.matched.length-1;return s>-1&&s===o&&un(t.matched[s],n.matched[o])&&ci(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function un(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function ci(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!Eu(e[n],t[n]))return!1;return!0}function Eu(e,t){return et(e)?Sr(e,t):et(t)?Sr(t,e):(e==null?void 0:e.valueOf())===(t==null?void 0:t.valueOf())}function Sr(e,t){return et(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function Au(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),o=s[s.length-1];(o===".."||o===".")&&s.push("");let r=n.length-1,l,a;for(l=0;l<s.length;l++)if(a=s[l],a!==".")if(a==="..")r>1&&r--;else break;return n.slice(0,r).join("/")+"/"+s.slice(l).join("/")}const Pt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let so=function(e){return e.pop="pop",e.push="push",e}({}),Vs=function(e){return e.back="back",e.forward="forward",e.unknown="",e}({});function Tu(e){if(!e)if(tn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),xu(e)}const Ru=/^[^#]+#/;function Pu(e,t){return e.replace(Ru,"#")+t}function Ou(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const Cs=()=>({left:window.scrollX,top:window.scrollY});function ku(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),o=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=Ou(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Er(e,t){return(history.state?history.state.position-t:-1)+e}const oo=new Map;function Nu(e,t){oo.set(e,t)}function Iu(e){const t=oo.get(e);return oo.delete(e),t}function Mu(e){return typeof e=="string"||e&&typeof e=="object"}function ui(e){return typeof e=="string"||typeof e=="symbol"}let we=function(e){return e[e.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",e[e.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",e[e.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",e[e.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",e[e.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",e}({});const fi=Symbol("");we.MATCHER_NOT_FOUND+"",we.NAVIGATION_GUARD_REDIRECT+"",we.NAVIGATION_ABORTED+"",we.NAVIGATION_CANCELLED+"",we.NAVIGATION_DUPLICATED+"";function fn(e,t){return ae(new Error,{type:e,[fi]:!0},t)}function gt(e,t){return e instanceof Error&&fi in e&&(t==null||!!(e.type&t))}const $u=["params","query","hash"];function Lu(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const n of $u)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}function Du(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;s<n.length;++s){const o=n[s].replace(ri," "),r=o.indexOf("="),l=Un(r<0?o:o.slice(0,r)),a=r<0?null:Un(o.slice(r+1));if(l in t){let i=t[l];et(i)||(i=t[l]=[i]),i.push(a)}else t[l]=a}return t}function Ar(e){let t="";for(let n in e){const s=e[n];if(n=yu(n),s==null){s!==void 0&&(t+=(t.length?"&":"")+n);continue}(et(s)?s.map(o=>o&&no(o)):[s&&no(s)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+n,o!=null&&(t+="="+o))})}return t}function Vu(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=et(s)?s.map(o=>o==null?null:""+o):s==null?s:""+s)}return t}const Uu=Symbol(""),Tr=Symbol(""),Ss=Symbol(""),To=Symbol(""),ro=Symbol("");function yn(){let e=[];function t(s){return e.push(s),()=>{const o=e.indexOf(s);o>-1&&e.splice(o,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Mt(e,t,n,s,o,r=l=>l()){const l=s&&(s.enterCallbacks[o]=s.enterCallbacks[o]||[]);return()=>new Promise((a,i)=>{const u=m=>{m===!1?i(fn(we.NAVIGATION_ABORTED,{from:n,to:t})):m instanceof Error?i(m):Mu(m)?i(fn(we.NAVIGATION_GUARD_REDIRECT,{from:t,to:m})):(l&&s.enterCallbacks[o]===l&&typeof m=="function"&&l.push(m),a())},f=r(()=>e.call(s&&s.instances[o],t,n,u));let d=Promise.resolve(f);e.length<3&&(d=d.then(u)),d.catch(m=>i(m))})}function Us(e,t,n,s,o=r=>r()){const r=[];for(const l of e)for(const a in l.components){let i=l.components[a];if(!(t!=="beforeRouteEnter"&&!l.instances[a]))if(si(i)){const u=(i.__vccOpts||i)[t];u&&r.push(Mt(u,n,s,l,a,o))}else{let u=i();r.push(()=>u.then(f=>{if(!f)throw new Error(`Couldn't resolve component "${a}" at "${l.path}"`);const d=iu(f)?f.default:f;l.mods[a]=f,l.components[a]=d;const m=(d.__vccOpts||d)[t];return m&&Mt(m,n,s,l,a,o)()}))}}return r}function Bu(e,t){const n=[],s=[],o=[],r=Math.max(t.matched.length,e.matched.length);for(let l=0;l<r;l++){const a=t.matched[l];a&&(e.matched.find(u=>un(u,a))?s.push(a):n.push(a));const i=e.matched[l];i&&(t.matched.find(u=>un(u,i))||o.push(i))}return[n,s,o]}/*!
22
+ * vue-router v4.6.4
23
+ * (c) 2025 Eduardo San Martin Morote
24
+ * @license MIT
25
+ */let Hu=()=>location.protocol+"//"+location.host;function di(e,t){const{pathname:n,search:s,hash:o}=t,r=e.indexOf("#");if(r>-1){let l=o.includes(e.slice(r))?e.slice(r).length:1,a=o.slice(l);return a[0]!=="/"&&(a="/"+a),Cr(a,"")}return Cr(n,e)+s+o}function Fu(e,t,n,s){let o=[],r=[],l=null;const a=({state:m})=>{const g=di(e,location),v=n.value,b=t.value;let E=0;if(m){if(n.value=g,t.value=m,l&&l===v){l=null;return}E=b?m.position-b.position:0}else s(g);o.forEach($=>{$(n.value,v,{delta:E,type:so.pop,direction:E?E>0?Vs.forward:Vs.back:Vs.unknown})})};function i(){l=n.value}function u(m){o.push(m);const g=()=>{const v=o.indexOf(m);v>-1&&o.splice(v,1)};return r.push(g),g}function f(){if(document.visibilityState==="hidden"){const{history:m}=window;if(!m.state)return;m.replaceState(ae({},m.state,{scroll:Cs()}),"")}}function d(){for(const m of r)m();r=[],window.removeEventListener("popstate",a),window.removeEventListener("pagehide",f),document.removeEventListener("visibilitychange",f)}return window.addEventListener("popstate",a),window.addEventListener("pagehide",f),document.addEventListener("visibilitychange",f),{pauseListeners:i,listen:u,destroy:d}}function Rr(e,t,n,s=!1,o=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:o?Cs():null}}function ju(e){const{history:t,location:n}=window,s={value:di(e,n)},o={value:t.state};o.value||r(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function r(i,u,f){const d=e.indexOf("#"),m=d>-1?(n.host&&document.querySelector("base")?e:e.slice(d))+i:Hu()+e+i;try{t[f?"replaceState":"pushState"](u,"",m),o.value=u}catch(g){console.error(g),n[f?"replace":"assign"](m)}}function l(i,u){r(i,ae({},t.state,Rr(o.value.back,i,o.value.forward,!0),u,{position:o.value.position}),!0),s.value=i}function a(i,u){const f=ae({},o.value,t.state,{forward:i,scroll:Cs()});r(f.current,f,!0),r(i,ae({},Rr(s.value,i,null),{position:f.position+1},u),!1),s.value=i}return{location:s,state:o,push:a,replace:l}}function Gu(e){e=Tu(e);const t=ju(e),n=Fu(e,t.state,t.location,t.replace);function s(r,l=!0){l||n.pauseListeners(),history.go(r)}const o=ae({location:"",base:e,go:s,createHref:Pu.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}let Kt=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e}({});var Re=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e}(Re||{});const Ku={type:Kt.Static,value:""},Wu=/[a-zA-Z0-9_]/;function zu(e){if(!e)return[[]];if(e==="/")return[[Ku]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(g){throw new Error(`ERR (${n})/"${u}": ${g}`)}let n=Re.Static,s=n;const o=[];let r;function l(){r&&o.push(r),r=[]}let a=0,i,u="",f="";function d(){u&&(n===Re.Static?r.push({type:Kt.Static,value:u}):n===Re.Param||n===Re.ParamRegExp||n===Re.ParamRegExpEnd?(r.length>1&&(i==="*"||i==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),r.push({type:Kt.Param,value:u,regexp:f,repeatable:i==="*"||i==="+",optional:i==="*"||i==="?"})):t("Invalid state to consume buffer"),u="")}function m(){u+=i}for(;a<e.length;){if(i=e[a++],i==="\\"&&n!==Re.ParamRegExp){s=n,n=Re.EscapeNext;continue}switch(n){case Re.Static:i==="/"?(u&&d(),l()):i===":"?(d(),n=Re.Param):m();break;case Re.EscapeNext:m(),n=s;break;case Re.Param:i==="("?n=Re.ParamRegExp:Wu.test(i)?m():(d(),n=Re.Static,i!=="*"&&i!=="?"&&i!=="+"&&a--);break;case Re.ParamRegExp:i===")"?f[f.length-1]=="\\"?f=f.slice(0,-1)+i:n=Re.ParamRegExpEnd:f+=i;break;case Re.ParamRegExpEnd:d(),n=Re.Static,i!=="*"&&i!=="?"&&i!=="+"&&a--,f="";break;default:t("Unknown state");break}}return n===Re.ParamRegExp&&t(`Unfinished custom RegExp for param "${u}"`),d(),l(),o}const Pr="[^/]+?",qu={sensitive:!1,strict:!1,start:!0,end:!0};var Le=function(e){return e[e._multiplier=10]="_multiplier",e[e.Root=90]="Root",e[e.Segment=40]="Segment",e[e.SubSegment=30]="SubSegment",e[e.Static=40]="Static",e[e.Dynamic=20]="Dynamic",e[e.BonusCustomRegExp=10]="BonusCustomRegExp",e[e.BonusWildcard=-50]="BonusWildcard",e[e.BonusRepeatable=-20]="BonusRepeatable",e[e.BonusOptional=-8]="BonusOptional",e[e.BonusStrict=.7000000000000001]="BonusStrict",e[e.BonusCaseSensitive=.25]="BonusCaseSensitive",e}(Le||{});const Ju=/[.+*?^${}()[\]/\\]/g;function Qu(e,t){const n=ae({},qu,t),s=[];let o=n.start?"^":"";const r=[];for(const u of e){const f=u.length?[]:[Le.Root];n.strict&&!u.length&&(o+="/");for(let d=0;d<u.length;d++){const m=u[d];let g=Le.Segment+(n.sensitive?Le.BonusCaseSensitive:0);if(m.type===Kt.Static)d||(o+="/"),o+=m.value.replace(Ju,"\\$&"),g+=Le.Static;else if(m.type===Kt.Param){const{value:v,repeatable:b,optional:E,regexp:$}=m;r.push({name:v,repeatable:b,optional:E});const R=$||Pr;if(R!==Pr){g+=Le.BonusCustomRegExp;try{`${R}`}catch(_){throw new Error(`Invalid custom RegExp for param "${v}" (${R}): `+_.message)}}let T=b?`((?:${R})(?:/(?:${R}))*)`:`(${R})`;d||(T=E&&u.length<2?`(?:/${T})`:"/"+T),E&&(T+="?"),o+=T,g+=Le.Dynamic,E&&(g+=Le.BonusOptional),b&&(g+=Le.BonusRepeatable),R===".*"&&(g+=Le.BonusWildcard)}f.push(g)}s.push(f)}if(n.strict&&n.end){const u=s.length-1;s[u][s[u].length-1]+=Le.BonusStrict}n.strict||(o+="/?"),n.end?o+="$":n.strict&&!o.endsWith("/")&&(o+="(?:/|$)");const l=new RegExp(o,n.sensitive?"":"i");function a(u){const f=u.match(l),d={};if(!f)return null;for(let m=1;m<f.length;m++){const g=f[m]||"",v=r[m-1];d[v.name]=g&&v.repeatable?g.split("/"):g}return d}function i(u){let f="",d=!1;for(const m of e){(!d||!f.endsWith("/"))&&(f+="/"),d=!1;for(const g of m)if(g.type===Kt.Static)f+=g.value;else if(g.type===Kt.Param){const{value:v,repeatable:b,optional:E}=g,$=v in u?u[v]:"";if(et($)&&!b)throw new Error(`Provided param "${v}" is an array but it is not repeatable (* or + modifiers)`);const R=et($)?$.join("/"):$;if(!R)if(E)m.length<2&&(f.endsWith("/")?f=f.slice(0,-1):d=!0);else throw new Error(`Missing required param "${v}"`);f+=R}}return f||"/"}return{re:l,score:s,keys:r,parse:a,stringify:i}}function Yu(e,t){let n=0;for(;n<e.length&&n<t.length;){const s=t[n]-e[n];if(s)return s;n++}return e.length<t.length?e.length===1&&e[0]===Le.Static+Le.Segment?-1:1:e.length>t.length?t.length===1&&t[0]===Le.Static+Le.Segment?1:-1:0}function pi(e,t){let n=0;const s=e.score,o=t.score;for(;n<s.length&&n<o.length;){const r=Yu(s[n],o[n]);if(r)return r;n++}if(Math.abs(o.length-s.length)===1){if(Or(s))return 1;if(Or(o))return-1}return o.length-s.length}function Or(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}const Xu={strict:!1,end:!0,sensitive:!1};function Zu(e,t,n){const s=Qu(zu(e.path),n),o=ae(s,{record:e,parent:t,children:[],alias:[]});return t&&!o.record.aliasOf==!t.record.aliasOf&&t.children.push(o),o}function ef(e,t){const n=[],s=new Map;t=xr(Xu,t);function o(d){return s.get(d)}function r(d,m,g){const v=!g,b=Nr(d);b.aliasOf=g&&g.record;const E=xr(t,d),$=[b];if("alias"in d){const _=typeof d.alias=="string"?[d.alias]:d.alias;for(const N of _)$.push(Nr(ae({},b,{components:g?g.record.components:b.components,path:N,aliasOf:g?g.record:b})))}let R,T;for(const _ of $){const{path:N}=_;if(m&&N[0]!=="/"){const J=m.record.path,j=J[J.length-1]==="/"?"":"/";_.path=m.record.path+(N&&j+N)}if(R=Zu(_,m,E),g?g.alias.push(R):(T=T||R,T!==R&&T.alias.push(R),v&&d.name&&!Ir(R)&&l(d.name)),hi(R)&&i(R),b.children){const J=b.children;for(let j=0;j<J.length;j++)r(J[j],R,g&&g.children[j])}g=g||R}return T?()=>{l(T)}:On}function l(d){if(ui(d)){const m=s.get(d);m&&(s.delete(d),n.splice(n.indexOf(m),1),m.children.forEach(l),m.alias.forEach(l))}else{const m=n.indexOf(d);m>-1&&(n.splice(m,1),d.record.name&&s.delete(d.record.name),d.children.forEach(l),d.alias.forEach(l))}}function a(){return n}function i(d){const m=sf(d,n);n.splice(m,0,d),d.record.name&&!Ir(d)&&s.set(d.record.name,d)}function u(d,m){let g,v={},b,E;if("name"in d&&d.name){if(g=s.get(d.name),!g)throw fn(we.MATCHER_NOT_FOUND,{location:d});E=g.record.name,v=ae(kr(m.params,g.keys.filter(T=>!T.optional).concat(g.parent?g.parent.keys.filter(T=>T.optional):[]).map(T=>T.name)),d.params&&kr(d.params,g.keys.map(T=>T.name))),b=g.stringify(v)}else if(d.path!=null)b=d.path,g=n.find(T=>T.re.test(b)),g&&(v=g.parse(b),E=g.record.name);else{if(g=m.name?s.get(m.name):n.find(T=>T.re.test(m.path)),!g)throw fn(we.MATCHER_NOT_FOUND,{location:d,currentLocation:m});E=g.record.name,v=ae({},m.params,d.params),b=g.stringify(v)}const $=[];let R=g;for(;R;)$.unshift(R.record),R=R.parent;return{name:E,path:b,params:v,matched:$,meta:nf($)}}e.forEach(d=>r(d));function f(){n.length=0,s.clear()}return{addRoute:r,resolve:u,removeRoute:l,clearRoutes:f,getRoutes:a,getRecordMatcher:o}}function kr(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function Nr(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:tf(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function tf(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function Ir(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function nf(e){return e.reduce((t,n)=>ae(t,n.meta),{})}function sf(e,t){let n=0,s=t.length;for(;n!==s;){const r=n+s>>1;pi(e,t[r])<0?s=r:n=r+1}const o=of(e);return o&&(s=t.lastIndexOf(o,s-1)),s}function of(e){let t=e;for(;t=t.parent;)if(hi(t)&&pi(e,t)===0)return t}function hi({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Mr(e){const t=Ye(Ss),n=Ye(To),s=Se(()=>{const i=ft(e.to);return t.resolve(i)}),o=Se(()=>{const{matched:i}=s.value,{length:u}=i,f=i[u-1],d=n.matched;if(!f||!d.length)return-1;const m=d.findIndex(un.bind(null,f));if(m>-1)return m;const g=$r(i[u-2]);return u>1&&$r(f)===g&&d[d.length-1].path!==g?d.findIndex(un.bind(null,i[u-2])):m}),r=Se(()=>o.value>-1&&uf(n.params,s.value.params)),l=Se(()=>o.value>-1&&o.value===n.matched.length-1&&ci(n.params,s.value.params));function a(i={}){if(cf(i)){const u=t[ft(e.replace)?"replace":"push"](ft(e.to)).catch(On);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>u),u}return Promise.resolve()}return{route:s,href:Se(()=>s.value.href),isActive:r,isExactActive:l,navigate:a}}function rf(e){return e.length===1?e[0]:e}const lf=wl({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:Mr,setup(e,{slots:t}){const n=pn(Mr(e)),{options:s}=Ye(Ss),o=Se(()=>({[Lr(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[Lr(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const r=t.default&&rf(t.default(n));return e.custom?r:Jl("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},r)}}}),af=lf;function cf(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function uf(e,t){for(const n in t){const s=t[n],o=e[n];if(typeof s=="string"){if(s!==o)return!1}else if(!et(o)||o.length!==s.length||s.some((r,l)=>r.valueOf()!==o[l].valueOf()))return!1}return!0}function $r(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Lr=(e,t,n)=>e??t??n,ff=wl({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=Ye(ro),o=Se(()=>e.route||s.value),r=Ye(Tr,0),l=Se(()=>{let u=ft(r);const{matched:f}=o.value;let d;for(;(d=f[u])&&!d.components;)u++;return u}),a=Se(()=>o.value.matched[l.value]);Qn(Tr,Se(()=>l.value+1)),Qn(Uu,a),Qn(ro,o);const i=ee();return Cn(()=>[i.value,a.value,e.name],([u,f,d],[m,g,v])=>{f&&(f.instances[d]=u,g&&g!==f&&u&&u===m&&(f.leaveGuards.size||(f.leaveGuards=g.leaveGuards),f.updateGuards.size||(f.updateGuards=g.updateGuards))),u&&f&&(!g||!un(f,g)||!m)&&(f.enterCallbacks[d]||[]).forEach(b=>b(u))},{flush:"post"}),()=>{const u=o.value,f=e.name,d=a.value,m=d&&d.components[f];if(!m)return Dr(n.default,{Component:m,route:u});const g=d.props[f],v=g?g===!0?u.params:typeof g=="function"?g(u):g:null,E=Jl(m,ae({},v,t,{onVnodeUnmounted:$=>{$.component.isUnmounted&&(d.instances[f]=null)},ref:i}));return Dr(n.default,{Component:E,route:u})||E}}});function Dr(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const df=ff;function pf(e){const t=ef(e.routes,e),n=e.parseQuery||Du,s=e.stringifyQuery||Ar,o=e.history,r=yn(),l=yn(),a=yn(),i=sa(Pt);let u=Pt;tn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const f=Ls.bind(null,C=>""+C),d=Ls.bind(null,bu),m=Ls.bind(null,Un);function g(C,B){let M,K;return ui(C)?(M=t.getRecordMatcher(C),K=B):K=C,t.addRoute(K,M)}function v(C){const B=t.getRecordMatcher(C);B&&t.removeRoute(B)}function b(){return t.getRoutes().map(C=>C.record)}function E(C){return!!t.getRecordMatcher(C)}function $(C,B){if(B=ae({},B||i.value),typeof C=="string"){const y=Ds(n,C,B.path),w=t.resolve({path:y.path},B),S=o.createHref(y.fullPath);return ae(y,w,{params:m(w.params),hash:Un(y.hash),redirectedFrom:void 0,href:S})}let M;if(C.path!=null)M=ae({},C,{path:Ds(n,C.path,B.path).path});else{const y=ae({},C.params);for(const w in y)y[w]==null&&delete y[w];M=ae({},C,{params:d(y)}),B.params=d(B.params)}const K=t.resolve(M,B),oe=C.hash||"";K.params=f(m(K.params));const p=Cu(s,ae({},C,{hash:vu(oe),path:K.path})),h=o.createHref(p);return ae({fullPath:p,hash:oe,query:s===Ar?Vu(C.query):C.query||{}},K,{redirectedFrom:void 0,href:h})}function R(C){return typeof C=="string"?Ds(n,C,i.value.path):ae({},C)}function T(C,B){if(u!==C)return fn(we.NAVIGATION_CANCELLED,{from:B,to:C})}function _(C){return j(C)}function N(C){return _(ae(R(C),{replace:!0}))}function J(C,B){const M=C.matched[C.matched.length-1];if(M&&M.redirect){const{redirect:K}=M;let oe=typeof K=="function"?K(C,B):K;return typeof oe=="string"&&(oe=oe.includes("?")||oe.includes("#")?oe=R(oe):{path:oe},oe.params={}),ae({query:C.query,hash:C.hash,params:oe.path!=null?{}:C.params},oe)}}function j(C,B){const M=u=$(C),K=i.value,oe=C.state,p=C.force,h=C.replace===!0,y=J(M,K);if(y)return j(ae(R(y),{state:typeof y=="object"?ae({},oe,y.state):oe,force:p,replace:h}),B||M);const w=M;w.redirectedFrom=B;let S;return!p&&Su(s,K,M)&&(S=fn(we.NAVIGATION_DUPLICATED,{to:w,from:K}),tt(K,K,!0,!1)),(S?Promise.resolve(S):X(w,K)).catch(x=>gt(x)?gt(x,we.NAVIGATION_GUARD_REDIRECT)?x:Tt(x):ne(x,w,K)).then(x=>{if(x){if(gt(x,we.NAVIGATION_GUARD_REDIRECT))return j(ae({replace:h},R(x.to),{state:typeof x.to=="object"?ae({},oe,x.to.state):oe,force:p}),B||w)}else x=L(w,K,!0,h,oe);return te(w,K,x),x})}function le(C,B){const M=T(C,B);return M?Promise.reject(M):Promise.resolve()}function V(C){const B=Yt.values().next().value;return B&&typeof B.runWithContext=="function"?B.runWithContext(C):C()}function X(C,B){let M;const[K,oe,p]=Bu(C,B);M=Us(K.reverse(),"beforeRouteLeave",C,B);for(const y of K)y.leaveGuards.forEach(w=>{M.push(Mt(w,C,B))});const h=le.bind(null,C,B);return M.push(h),Ke(M).then(()=>{M=[];for(const y of r.list())M.push(Mt(y,C,B));return M.push(h),Ke(M)}).then(()=>{M=Us(oe,"beforeRouteUpdate",C,B);for(const y of oe)y.updateGuards.forEach(w=>{M.push(Mt(w,C,B))});return M.push(h),Ke(M)}).then(()=>{M=[];for(const y of p)if(y.beforeEnter)if(et(y.beforeEnter))for(const w of y.beforeEnter)M.push(Mt(w,C,B));else M.push(Mt(y.beforeEnter,C,B));return M.push(h),Ke(M)}).then(()=>(C.matched.forEach(y=>y.enterCallbacks={}),M=Us(p,"beforeRouteEnter",C,B,V),M.push(h),Ke(M))).then(()=>{M=[];for(const y of l.list())M.push(Mt(y,C,B));return M.push(h),Ke(M)}).catch(y=>gt(y,we.NAVIGATION_CANCELLED)?y:Promise.reject(y))}function te(C,B,M){a.list().forEach(K=>V(()=>K(C,B,M)))}function L(C,B,M,K,oe){const p=T(C,B);if(p)return p;const h=B===Pt,y=tn?history.state:{};M&&(K||h?o.replace(C.fullPath,ae({scroll:h&&y&&y.scroll},oe)):o.push(C.fullPath,oe)),i.value=C,tt(C,B,M,h),Tt()}let se;function Ce(){se||(se=o.listen((C,B,M)=>{if(!Bt.listening)return;const K=$(C),oe=J(K,Bt.currentRoute.value);if(oe){j(ae(oe,{replace:!0,force:!0}),K).catch(On);return}u=K;const p=i.value;tn&&Nu(Er(p.fullPath,M.delta),Cs()),X(K,p).catch(h=>gt(h,we.NAVIGATION_ABORTED|we.NAVIGATION_CANCELLED)?h:gt(h,we.NAVIGATION_GUARD_REDIRECT)?(j(ae(R(h.to),{force:!0}),K).then(y=>{gt(y,we.NAVIGATION_ABORTED|we.NAVIGATION_DUPLICATED)&&!M.delta&&M.type===so.pop&&o.go(-1,!1)}).catch(On),Promise.reject()):(M.delta&&o.go(-M.delta,!1),ne(h,K,p))).then(h=>{h=h||L(K,p,!1),h&&(M.delta&&!gt(h,we.NAVIGATION_CANCELLED)?o.go(-M.delta,!1):M.type===so.pop&&gt(h,we.NAVIGATION_ABORTED|we.NAVIGATION_DUPLICATED)&&o.go(-1,!1)),te(K,p,h)}).catch(On)}))}let G=yn(),O=yn(),U;function ne(C,B,M){Tt(C);const K=O.list();return K.length?K.forEach(oe=>oe(C,B,M)):console.error(C),Promise.reject(C)}function pt(){return U&&i.value!==Pt?Promise.resolve():new Promise((C,B)=>{G.add([C,B])})}function Tt(C){return U||(U=!C,Ce(),G.list().forEach(([B,M])=>C?M(C):B()),G.reset()),C}function tt(C,B,M,K){const{scrollBehavior:oe}=e;if(!tn||!oe)return Promise.resolve();const p=!M&&Iu(Er(C.fullPath,0))||(K||!M)&&history.state&&history.state.scroll||null;return _o().then(()=>oe(C,B,p)).then(h=>h&&ku(h)).catch(h=>ne(h,C,B))}const Ve=C=>o.go(C);let Qt;const Yt=new Set,Bt={currentRoute:i,listening:!0,addRoute:g,removeRoute:v,clearRoutes:t.clearRoutes,hasRoute:E,getRoutes:b,resolve:$,options:e,push:_,replace:N,go:Ve,back:()=>Ve(-1),forward:()=>Ve(1),beforeEach:r.add,beforeResolve:l.add,afterEach:a.add,onError:O.add,isReady:pt,install(C){C.component("RouterLink",af),C.component("RouterView",df),C.config.globalProperties.$router=Bt,Object.defineProperty(C.config.globalProperties,"$route",{enumerable:!0,get:()=>ft(i)}),tn&&!Qt&&i.value===Pt&&(Qt=!0,_(o.location).catch(K=>{}));const B={};for(const K in Pt)Object.defineProperty(B,K,{get:()=>i.value[K],enumerable:!0});C.provide(Ss,Bt),C.provide(To,al(B)),C.provide(ro,i);const M=C.unmount;Yt.add(C),C.unmount=function(){Yt.delete(C),Yt.size<1&&(u=Pt,se&&se(),se=null,i.value=Pt,Qt=!1,U=!1),M()}}};function Ke(C){return C.reduce((B,M)=>B.then(()=>V(M)),Promise.resolve())}return Bt}function jn(){return Ye(Ss)}function gi(e){return Ye(To)}const Pe=pn({mode:null,user:null,remoteBaseUrl:"",token:""});function Ro(){return es(Pe)}function Po(e){Pe.mode=e,typeof localStorage<"u"&&localStorage.setItem("pac_proxy_mode",e)}function mi(){if(typeof localStorage<"u"){const e=localStorage.getItem("pac_proxy_mode");(e==="local"||e==="remote")&&(Pe.mode=e);const t=localStorage.getItem("pac_proxy_token");t&&(Pe.token=t);const n=localStorage.getItem("pac_proxy_remote_base_url");if(n&&typeof n=="string"&&(Pe.remoteBaseUrl=n),Pe.mode==="remote"&&Pe.token)try{const s=JSON.parse(atob(Pe.token.split(".")[1]));Pe.user={username:s.username}}catch{}}return Pe.mode}function vi(e){Pe.user=e}function yi(e){Pe.remoteBaseUrl=e||"",typeof localStorage<"u"&&(e?localStorage.setItem("pac_proxy_remote_base_url",e):localStorage.removeItem("pac_proxy_remote_base_url"))}function _i(e){Pe.token=e,typeof localStorage<"u"&&(e?localStorage.setItem("pac_proxy_token",e):localStorage.removeItem("pac_proxy_token"))}function hf(){return Pe.token||typeof localStorage<"u"&&localStorage.getItem("pac_proxy_token")}function gf(){Pe.token="",Pe.user=null,Pe.remoteBaseUrl="",Pe.mode=null,typeof localStorage<"u"&&(localStorage.removeItem("pac_proxy_token"),localStorage.removeItem("pac_proxy_mode"),localStorage.removeItem("pac_proxy_remote_base_url"))}const mf=()=>{const e=hf(),t={"Content-Type":"application/json"};return e&&(t.Authorization="Bearer "+e),t};async function be(e,t={}){const n=await fetch("/api/local"+e,{...t,headers:{"Content-Type":"application/json",...t.headers}});if(!n.ok)throw new Error((await n.json().catch(()=>({}))).error||n.statusText);return n.json()}async function Bs(e,t,n={}){const s=(e||"").trim().replace(/\/$/,"");if(!s)throw new Error("未配置远程服务器地址。请在 packages/node-cli/.env 中配置 REMOTE_SERVER_URL(填 node-server 的地址,例如 http://127.0.0.1:3000),重启 node-cli 后重新登录。");const o=s+"/api"+t,r=await fetch(o,{...n,headers:{...mf(),...n.headers}});if(!r.ok)throw new Error((await r.json().catch(()=>({}))).error||r.statusText);return r.json()}function bi(e,t){const n={getProxy:()=>be("/proxy"),setProxy:s=>be("/proxy",{method:"PUT",body:JSON.stringify(s)})};return e==="local"?{...n,getPacRules:()=>be("/pac-rules"),setPacRules:s=>be("/pac-rules",{method:"PUT",body:JSON.stringify(s)}),getConfig:()=>be("/config")}:{...n,getPacRules:()=>Bs(t,"/pac-rules"),setPacRules:async s=>{await Bs(t,"/pac-rules",{method:"PUT",body:JSON.stringify(s)}),await be("/pac-rules",{method:"PUT",body:JSON.stringify(s)})},getConfig:()=>Bs(t,"/config")}}const Lt=pn([]);let wi=0;function vf(){return Lt}function ye(e,t="success",n=2500){const s=++wi;Lt.push({id:s,msg:e,type:t}),setTimeout(()=>{const o=Lt.findIndex(r=>r.id===s);o>=0&&Lt.splice(o,1)},n)}function Vr(e){return new Promise(t=>{const n=++wi;Lt.push({id:n,msg:e,type:"confirm",resolve:t})})}function Ur(e,t){const n=Lt.findIndex(s=>s.id===e);n>=0&&(Lt[n].resolve(t),Lt.splice(n,1))}const At=(e,t)=>{const n=e.__vccOpts||e;for(const[s,o]of t)n[s]=o;return n},yf={class:"toast-container"},_f={key:0,class:"toast-confirm-mask"},bf={class:"toast-confirm"},wf={class:"toast-confirm-msg"},xf={class:"toast-confirm-actions"},Cf=["onClick"],Sf=["onClick"],Ef={class:"toast-icon"},Af={key:0,viewBox:"0 0 20 20",fill:"currentColor"},Tf={key:1,viewBox:"0 0 20 20",fill:"currentColor"},Rf={key:2,viewBox:"0 0 20 20",fill:"currentColor"},Pf={class:"toast-msg"},Of={__name:"Toast",setup(e){const t=vf();return(n,s)=>(H(),Gl(ya,{to:"body"},[c("div",yf,[me(Gc,{name:"toast"},{default:ct(()=>[(H(!0),F(Ee,null,Ln(ft(t),o=>(H(),F(Ee,{key:o.id},[o.type==="confirm"?(H(),F("div",_f,[c("div",bf,[c("p",wf,z(o.msg),1),c("div",xf,[c("button",{class:"tc-btn cancel",onClick:r=>ft(Ur)(o.id,!1)},"取消",8,Cf),c("button",{class:"tc-btn ok",onClick:r=>ft(Ur)(o.id,!0)},"确定",8,Sf)])])])):(H(),F("div",{key:1,class:_e(["toast",o.type])},[c("span",Ef,[o.type==="success"?(H(),F("svg",Af,[...s[0]||(s[0]=[c("path",{"fill-rule":"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z","clip-rule":"evenodd"},null,-1)])])):o.type==="error"?(H(),F("svg",Tf,[...s[1]||(s[1]=[c("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z","clip-rule":"evenodd"},null,-1)])])):(H(),F("svg",Rf,[...s[2]||(s[2]=[c("path",{"fill-rule":"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z","clip-rule":"evenodd"},null,-1)])]))]),c("span",Pf,z(o.msg),1)],2))],64))),128))]),_:1})])]))}},kf=At(Of,[["__scopeId","data-v-5cf00320"]]),Nf={class:"app-layout"},If={key:0,class:"sidebar"},Mf={class:"side-nav"},$f={class:"sidebar-footer"},Lf={key:0,class:"topbar"},Df={class:"topbar-left"},Vf={class:"page-title"},Uf={key:0,class:"topbar-right"},Bf={class:"username"},Hf={class:"main"},Ff={__name:"App",setup(e){const t=gi(),n=jn(),s=Ro(),o=Se(()=>s.mode||"local"),r=Se(()=>o.value==="remote"),l=Se(()=>s.user),a=Se(()=>o.value==="local"?"本地模式":"远程模式"),i=Se(()=>t.path!=="/"),u=Se(()=>t.path!=="/"&&!t.path.startsWith("/login")&&!t.path.startsWith("/register")),f=Se(()=>t.path==="/"||t.path.startsWith("/login")||t.path.startsWith("/register")),d={"/console/proxy":"代理设置","/console/shadowsocks":"Shadowsocks","/console/pac-rules":"PAC 规则","/console/traffic":"流量记录"},m=Se(()=>d[t.path]||"");async function g(){try{const v=await be("/config");await be("/config",{method:"PUT",body:JSON.stringify({...v,mode:"local"})})}catch{}gf(),n.push("/")}return(v,b)=>{const E=$n("router-link"),$=$n("router-view");return H(),F(Ee,null,[c("div",Nf,[u.value?(H(),F("aside",If,[b[5]||(b[5]=c("div",{class:"sidebar-logo"},[c("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[c("circle",{cx:"12",cy:"12",r:"10"}),c("path",{d:"M12 8v4l3 3"})]),c("span",null,"PAC Proxy")],-1)),c("nav",Mf,[me(E,{to:"/console/proxy","active-class":"active"},{default:ct(()=>[...b[0]||(b[0]=[c("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[c("rect",{x:"2",y:"3",width:"20",height:"14",rx:"2"}),c("path",{d:"M8 21h8M12 17v4"})],-1),pe(" 代理设置 ",-1)])]),_:1}),me(E,{to:"/console/shadowsocks","active-class":"active"},{default:ct(()=>[...b[1]||(b[1]=[c("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[c("rect",{x:"3",y:"11",width:"18",height:"11",rx:"2"}),c("path",{d:"M7 11V7a5 5 0 0110 0v4"})],-1),pe(" Shadowsocks ",-1)])]),_:1}),me(E,{to:"/console/pac-rules","active-class":"active"},{default:ct(()=>[...b[2]||(b[2]=[c("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[c("path",{d:"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2"}),c("rect",{x:"9",y:"3",width:"6",height:"4",rx:"1"}),c("path",{d:"M9 12h6M9 16h4"})],-1),pe(" PAC 规则 ",-1)])]),_:1}),me(E,{to:"/console/traffic","active-class":"active"},{default:ct(()=>[...b[3]||(b[3]=[c("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[c("path",{d:"M22 12h-4l-3 9L9 3l-3 9H2"})],-1),pe(" 流量记录 ",-1)])]),_:1})]),c("div",$f,[c("span",{class:_e(["mode-badge",o.value])},z(a.value),3),me(E,{to:"/",class:"switch-mode-link"},{default:ct(()=>[...b[4]||(b[4]=[pe("切换模式",-1)])]),_:1})])])):ve("",!0),c("div",{class:_e(["content-wrap",{"content-standalone":f.value}])},[i.value?(H(),F("header",Lf,[c("div",Df,[c("span",Vf,z(m.value),1)]),r.value&&l.value?(H(),F("div",Uf,[c("span",Bf,z(l.value.username),1),c("button",{type:"button",class:"logout-btn",onClick:g},"退出登录")])):ve("",!0)])):ve("",!0),c("main",Hf,[me($)])],2)]),me(kf)],64)}}},jf=At(Ff,[["__scopeId","data-v-ee1bb6ce"]]),Gf={class:"mode-select"},Kf={class:"card"},Wf={class:"options"},zf={__name:"ModeSelect",setup(e){const t=jn();async function n(s){if(Po(s),s==="local"){try{const o=await be("/config");await be("/config",{method:"PUT",body:JSON.stringify({...o,mode:"local"})})}catch{}t.push("/console")}else t.push("/login")}return(s,o)=>(H(),F("div",Gf,[c("div",Kf,[o[4]||(o[4]=c("h1",null,"选择运行模式",-1)),o[5]||(o[5]=c("p",{class:"desc"},"请选择控制台使用方式,选择后可随时在设置中切换。",-1)),c("div",Wf,[c("button",{class:"option local",onClick:o[0]||(o[0]=r=>n("local"))},[...o[2]||(o[2]=[c("span",{class:"title"},"本地模式",-1),c("span",{class:"sub"},"无需登录,配置保存在本机,由 node-cli 维护",-1)])]),c("button",{class:"option remote",onClick:o[1]||(o[1]=r=>n("remote"))},[...o[3]||(o[3]=[c("span",{class:"title"},"远程模式",-1),c("span",{class:"sub"},"需注册/登录,配置与数据保存在云端",-1)])])])])]))}},qf=At(zf,[["__scopeId","data-v-b465f762"]]),Jf={class:"auth-page"},Qf={class:"card"},Yf={class:"field"},Xf={class:"field"},Zf={key:0,class:"error"},ed=["disabled"],td={class:"footer"},nd={__name:"Login",setup(e){const t=jn(),n=ee(""),s=ee(""),o=ee(""),r=ee(""),l=ee(!1);Ut(async()=>{try{const i=await fetch("/api/local/remote-server-url"),{url:u}=await i.json();n.value=u||""}catch{n.value=""}});async function a(){if(r.value="",!n.value){r.value="请在 node-cli 目录下的 .env 中配置 REMOTE_SERVER_URL";return}l.value=!0;try{const i=n.value.replace(/\/$/,""),u=await fetch(i+"/api/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:s.value,password:o.value})}),f=await u.json().catch(()=>({}));if(!u.ok)throw new Error(f.error||"登录失败");Po("remote"),yi(i),_i(f.token),vi(f.user||{username:s.value});try{const d=await be("/config");await be("/config",{method:"PUT",body:JSON.stringify({...d,mode:"remote"})});const m=await fetch(i+"/api/pac-rules",{headers:{Authorization:"Bearer "+f.token}}).then(g=>g.json()).catch(()=>[]);Array.isArray(m)&&await be("/pac-rules",{method:"PUT",body:JSON.stringify(m)})}catch{}t.push("/console")}catch(i){r.value=i.message}finally{l.value=!1}}return(i,u)=>{const f=$n("router-link");return H(),F("div",Jf,[c("div",Qf,[u[6]||(u[6]=c("h1",null,"登录",-1)),u[7]||(u[7]=c("p",{class:"desc"},"远程模式需登录后使用云端配置。",-1)),c("form",{onSubmit:xs(a,["prevent"]),class:"form"},[c("div",Yf,[u[2]||(u[2]=c("label",null,"用户名",-1)),Ae(c("input",{"onUpdate:modelValue":u[0]||(u[0]=d=>s.value=d),type:"text",required:""},null,512),[[Oe,s.value]])]),c("div",Xf,[u[3]||(u[3]=c("label",null,"密码",-1)),Ae(c("input",{"onUpdate:modelValue":u[1]||(u[1]=d=>o.value=d),type:"password",required:""},null,512),[[Oe,o.value]])]),r.value?(H(),F("p",Zf,z(r.value),1)):ve("",!0),c("button",{type:"submit",class:"btn primary",disabled:l.value},"登录",8,ed)],32),c("p",td,[u[5]||(u[5]=pe("还没有账号? ",-1)),me(f,{to:"/register"},{default:ct(()=>[...u[4]||(u[4]=[pe("注册",-1)])]),_:1})])])])}}},sd=At(nd,[["__scopeId","data-v-d4d57b91"]]),od={class:"auth-page"},rd={class:"card"},ld={class:"field"},id={class:"field"},ad={key:0,class:"error"},cd={key:1,class:"success"},ud=["disabled"],fd={class:"footer"},dd={__name:"Register",setup(e){const t=jn(),n=ee(""),s=ee(""),o=ee(""),r=ee(""),l=ee(""),a=ee(!1);Ut(async()=>{try{const u=await fetch("/api/local/remote-server-url"),{url:f}=await u.json();n.value=f||""}catch{n.value=""}});async function i(){if(r.value="",l.value="",!n.value){r.value="请在 node-cli 目录下的 .env 中配置 REMOTE_SERVER_URL";return}a.value=!0;try{const u=n.value.replace(/\/$/,""),f=await fetch(u+"/api/auth/register",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:s.value,password:o.value})}),d=await f.json().catch(()=>({}));if(!f.ok)throw new Error(d.error||"注册失败");l.value="注册成功,正在自动登录…";const m=await fetch(u+"/api/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:s.value,password:o.value})}),g=await m.json().catch(()=>({}));if(!m.ok)throw new Error(g.error||"自动登录失败");Po("remote"),yi(u),_i(g.token),vi(g.user||{username:s.value}),l.value="注册成功,已自动登录";try{const v=await be("/config");await be("/config",{method:"PUT",body:JSON.stringify({...v,mode:"remote"})});const b=await fetch(u+"/api/pac-rules",{headers:{Authorization:"Bearer "+g.token}}).then(E=>E.json()).catch(()=>[]);Array.isArray(b)&&await be("/pac-rules",{method:"PUT",body:JSON.stringify(b)})}catch{}t.push("/console")}catch(u){r.value=u.message}finally{a.value=!1}}return(u,f)=>{const d=$n("router-link");return H(),F("div",od,[c("div",rd,[f[6]||(f[6]=c("h1",null,"注册",-1)),f[7]||(f[7]=c("p",{class:"desc"},"注册后可在远程模式下同步配置。",-1)),c("form",{onSubmit:xs(i,["prevent"]),class:"form"},[c("div",ld,[f[2]||(f[2]=c("label",null,"用户名",-1)),Ae(c("input",{"onUpdate:modelValue":f[0]||(f[0]=m=>s.value=m),type:"text",required:""},null,512),[[Oe,s.value]])]),c("div",id,[f[3]||(f[3]=c("label",null,"密码",-1)),Ae(c("input",{"onUpdate:modelValue":f[1]||(f[1]=m=>o.value=m),type:"password",required:""},null,512),[[Oe,o.value]])]),r.value?(H(),F("p",ad,z(r.value),1)):ve("",!0),l.value?(H(),F("p",cd,z(l.value),1)):ve("",!0),c("button",{type:"submit",class:"btn primary",disabled:a.value},"注册",8,ud)],32),c("p",fd,[f[5]||(f[5]=pe("已有账号? ",-1)),me(d,{to:"/login"},{default:ct(()=>[...f[4]||(f[4]=[pe("登录",-1)])]),_:1})])])])}}},pd=At(dd,[["__scopeId","data-v-a1c8458c"]]),hd={class:"proxy-settings"},gd={class:"card"},md={class:"mode-cards"},vd=["onClick","disabled"],yd=["innerHTML"],_d={class:"mode-label"},bd={class:"mode-desc"},wd={key:0,class:"ca-download"},xd={class:"card"},Cd={class:"field"},Sd={key:0,class:"upstream-managed"},Ed={class:"row"},Ad={class:"field"},Td={class:"field"},Rd={class:"actions"},Pd=["disabled"],Od={key:0,class:"btn-spinner"},kd={key:0,class:"card status-card"},Nd={class:"status-line"},Id={key:0,class:"status-port"},Md={key:0,class:"hint"},$d={key:1,class:"hint error"},Ld={key:2,class:"hint"},Dd={key:3,class:"hint"},Vd="/api/local/ca-cert",Ud={__name:"ProxySettings",setup(e){const t=Ro();jn();function n(){return bi(t.mode,t.remoteBaseUrl)}const s=ee(!1),o=ee(1080),r=[{key:"global",label:"全局代理",desc:"所有流量走上游代理",icon:'<svg viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM4.332 8.027a6.012 6.012 0 011.912-2.706C6.512 5.73 6.974 6 7.5 6A1.5 1.5 0 019 7.5V8a2 2 0 004 0 2 2 0 011.523-1.943A5.977 5.977 0 0116 10c0 .34-.028.675-.083 1H15a2 2 0 00-2 2v2.197A5.973 5.973 0 0110 16v-2a2 2 0 00-2-2 2 2 0 01-2-2 2 2 0 00-1.668-1.973z" clip-rule="evenodd"/></svg>'},{key:"pac",label:"PAC 代理",desc:"按规则智能分流",icon:'<svg viewBox="0 0 20 20" fill="currentColor"><path d="M5 3a2 2 0 00-2 2v2a2 2 0 002 2h2a2 2 0 002-2V5a2 2 0 00-2-2H5zM5 11a2 2 0 00-2 2v2a2 2 0 002 2h2a2 2 0 002-2v-2a2 2 0 00-2-2H5zM11 5a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2V5zM14 11a1 1 0 011 1v1h1a1 1 0 110 2h-1v1a1 1 0 11-2 0v-1h-1a1 1 0 110-2h1v-1a1 1 0 011-1z"/></svg>'},{key:"mitm",label:"抓包代理",desc:"解密 HTTPS 流量",icon:'<svg viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z" clip-rule="evenodd"/></svg>'},{key:"clear",label:"清除代理",desc:"恢复直连",icon:'<svg viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd"/></svg>'}],l=ee({enabled:!1,mode:"pac",upstream:"socks5://127.0.0.1:1080",httpPort:5175,httpsPort:5176,applySystemProxy:!0}),a=ee(!1),i=ee(null);async function u(){try{const g=await fetch("/api/local/proxy-status");i.value=await g.json()}catch{i.value={running:!1,port:null}}}function f(){return{enabled:!!l.value.enabled,mode:l.value.mode||"pac",upstream:String(l.value.upstream??"").trim()||"socks5://127.0.0.1:1080",httpPort:Number(l.value.httpPort)||5175,httpsPort:Number(l.value.httpsPort)||5176,applySystemProxy:l.value.applySystemProxy!==!1}}async function d(g){if(!a.value){g==="clear"?(l.value.enabled=!1,l.value.applySystemProxy=!0):(l.value.enabled=!0,l.value.mode=g,l.value.applySystemProxy=!0),a.value=!0;try{const v=f();if(await be("/proxy",{method:"PUT",body:JSON.stringify(v)}),t.mode==="remote")try{const E=await n().getPacRules();await be("/pac-rules",{method:"PUT",body:JSON.stringify(E)})}catch{}await u(),ye(g==="clear"?"已清除系统代理设置":`已切换至${{global:"全局代理",pac:"PAC 代理",mitm:"抓包代理",clear:"已清除代理"}[g]}`,"success")}catch(v){ye("操作失败:"+v.message,"error")}finally{a.value=!1}}}Ut(async()=>{try{const[g,v]=await Promise.all([be("/proxy"),fetch("/api/local/sslocal").then(b=>b.json()).catch(()=>({}))]);if(l.value={...l.value,...g},s.value=v.enabled===!0,o.value=v.localPort||1080,t.mode==="remote")try{const b=await n().getPacRules();await be("/pac-rules",{method:"PUT",body:JSON.stringify(b)})}catch{}await u()}catch{}});async function m(){a.value=!0;try{const g=f();if(await be("/proxy",{method:"PUT",body:JSON.stringify(g)}),t.mode==="remote")try{const v=await n().getPacRules();await be("/pac-rules",{method:"PUT",body:JSON.stringify(v)})}catch{}await u(),ye("设置已保存","success")}catch(g){ye("保存失败:"+g.message,"error")}finally{a.value=!1}}return(g,v)=>{const b=$n("router-link");return H(),F("div",hd,[c("div",gd,[v[5]||(v[5]=c("h3",null,"代理模式",-1)),v[6]||(v[6]=c("p",{class:"desc"},"一键设置本机系统代理(支持 macOS、Windows、Linux GNOME)。",-1)),c("div",md,[(H(),F(Ee,null,Ln(r,E=>c("button",{key:E.key,class:_e(["mode-card",{active:l.value.enabled&&l.value.mode===E.key,clear:E.key==="clear","active-clear":!l.value.enabled&&E.key==="clear"}]),onClick:$=>d(E.key),disabled:a.value,type:"button"},[c("span",{class:"mode-icon",innerHTML:E.icon},null,8,yd),c("span",_d,z(E.label),1),c("span",bd,z(E.desc),1)],10,vd)),64))]),l.value.enabled&&l.value.mode==="mitm"?(H(),F("div",wd,[v[3]||(v[3]=c("span",{class:"ca-label"},"CA 证书(用于解密 HTTPS,需安装到系统/浏览器信任):",-1)),c("a",{class:"btn btn-ca",href:Vd,download:"pac-proxy-ca.crt",target:"_blank",rel:"noopener"},"下载 CA 证书"),v[4]||(v[4]=c("p",{class:"ca-hint"},"仅限本机抓包使用,请勿安装到他人设备或生产环境。",-1))])):ve("",!0)]),c("div",xd,[v[12]||(v[12]=c("h3",null,"上游代理与端口",-1)),v[13]||(v[13]=c("p",{class:"desc"},[pe("上游代理地址(如 "),c("code",null,"socks5://127.0.0.1:1080"),pe(" 或 "),c("code",null,"http://proxy.example.com"),pe(")。本地模式下可将 SOCKS5 转为 HTTP 代理并按规则执行策略。")],-1)),c("div",Cd,[v[9]||(v[9]=c("label",null,"上游代理地址",-1)),s.value?(H(),F("div",Sd,[v[8]||(v[8]=c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{"fill-rule":"evenodd",d:"M5 9V7a5 5 0 0110 0v2a2 2 0 012 2v5a2 2 0 01-2 2H5a2 2 0 01-2-2v-5a2 2 0 012-2zm8-2v2H7V7a3 3 0 016 0z","clip-rule":"evenodd"})],-1)),pe(" 由 Shadowsocks 托管(socks5://127.0.0.1:"+z(o.value)+") ",1),me(b,{to:"/console/shadowsocks"},{default:ct(()=>[...v[7]||(v[7]=[pe("管理",-1)])]),_:1})])):Ae((H(),F("input",{key:1,"onUpdate:modelValue":v[0]||(v[0]=E=>l.value.upstream=E),placeholder:"socks5://127.0.0.1:1080"},null,512)),[[Oe,l.value.upstream]])]),c("div",Ed,[c("div",Ad,[v[10]||(v[10]=c("label",null,"HTTP 代理端口",-1)),Ae(c("input",{"onUpdate:modelValue":v[1]||(v[1]=E=>l.value.httpPort=E),type:"number",min:"1",max:"65535"},null,512),[[Oe,l.value.httpPort,void 0,{number:!0}]])]),c("div",Td,[v[11]||(v[11]=c("label",null,"HTTPS 代理端口",-1)),Ae(c("input",{"onUpdate:modelValue":v[2]||(v[2]=E=>l.value.httpsPort=E),type:"number",min:"1",max:"65535"},null,512),[[Oe,l.value.httpsPort,void 0,{number:!0}]])])]),c("div",Rd,[c("button",{class:"btn primary",onClick:m,disabled:a.value},[a.value?(H(),F("span",Od)):ve("",!0),pe(" "+z(a.value?"保存中…":"保存设置"),1)],8,Pd)])]),i.value!==null?(H(),F("div",kd,[v[16]||(v[16]=c("h3",null,"代理状态",-1)),c("p",Nd,[c("span",{class:_e(["status-dot",i.value.running?"on":"off"])},null,2),c("span",{class:_e(i.value.running?"status-on":"status-off")},z(i.value.running?"运行中":"已关闭"),3),i.value.running?(H(),F("span",Id,"端口 "+z(i.value.port),1)):ve("",!0)]),i.value.running&&l.value.applySystemProxy&&i.value.systemProxyOk!==!1?(H(),F("p",Md," 已尝试自动设置"+z(l.value.mode==="pac"?" PAC 代理":l.value.mode==="mitm"?"抓包代理":"系统代理")+"(127.0.0.1:"+z(i.value.port)+")。 ",1)):i.value.running&&l.value.applySystemProxy&&i.value.systemProxyError?(H(),F("p",$d," 自动设置系统代理失败:"+z(i.value.systemProxyError)+" 请手动在「系统设置 → 网络 → 代理」中设置。 ",1)):i.value.running?(H(),F("p",Ld,[v[14]||(v[14]=pe(" 请将系统或浏览器的 HTTP/HTTPS 代理设置为 ",-1)),c("strong",null,"127.0.0.1:"+z(i.value.port),1),v[15]||(v[15]=pe("。 ",-1))])):l.value.enabled?(H(),F("p",Dd," 保存后若仍显示已关闭,请查看终端是否有端口占用报错。 ")):ve("",!0)])):ve("",!0)])}}},Bd=At(Ud,[["__scopeId","data-v-44d33970"]]),Hd={class:"pac-rules"},Fd={class:"card"},jd={class:"card-header"},Gd={key:0,class:"rule-count"},Kd={key:0,class:"desc"},Wd={key:1,class:"desc"},zd={class:"toolbar"},qd=["disabled"],Jd=["disabled"],Qd={class:"search-wrap"},Yd={class:"table-wrap"},Xd={class:"table"},Zd={class:"pattern-cell"},ep={class:"priority-cell"},tp={class:"ops-cell"},np=["onClick"],sp=["onClick"],op={key:0},rp={key:1},lp={colspan:"4",class:"empty"},ip={class:"modal-content"},ap={class:"field"},cp={class:"field"},up={class:"action-toggle"},fp={class:"field"},dp={class:"modal-actions"},pp=["disabled"],hp={__name:"PacRules",setup(e){const t=Ro();function n(){return bi(t.mode,t.remoteBaseUrl)}const s=ee([]),o=ee(null),r=ee({pattern:"",action:"proxy",priority:0}),l=ee(!1),a=ee(""),i=ee(null),u=Se(()=>[...s.value].sort((T,_)=>(_.priority??0)-(T.priority??0))),f=Se(()=>{const T=a.value.trim().toLowerCase();return T?u.value.filter(_=>_.pattern.toLowerCase().includes(T)):u.value});Ut(d);async function d(){try{if(s.value=await n().getPacRules(),Array.isArray(s.value)||(s.value=[]),t.mode==="remote")try{await be("/pac-rules",{method:"PUT",body:JSON.stringify(s.value)})}catch{}}catch{s.value=[]}}function m(T=null){T?r.value={id:T.id,pattern:T.pattern,action:T.action||"proxy",priority:T.priority??0}:r.value={pattern:"",action:"proxy",priority:0},o.value=!0}async function g(){const{id:T,pattern:_,action:N,priority:J}=r.value;if(!_.trim()){ye("请填写 URL 匹配字符","error");return}l.value=!0;try{let j=[...s.value];if(T){const le=j.findIndex(V=>V.id===T);le>=0&&(j[le]={...j[le],pattern:_.trim(),action:N,priority:J})}else{if(j.find(V=>V.pattern.trim()===_.trim())){ye(`规则「${_.trim()}」已存在`,"error"),l.value=!1;return}j.push({id:String(Date.now()),pattern:_.trim(),action:N||"proxy",priority:Number(J)||0})}await n().setPacRules(j),s.value=j,o.value=null,ye(T?"规则已更新":"规则已添加","success")}catch(j){ye("保存失败:"+j.message,"error")}finally{l.value=!1}}async function v(T){if(!await Vr(`确定删除规则「${T.pattern}」?`))return;const N=s.value.filter(J=>J.id!==T.id);try{await n().setPacRules(N),s.value=N,ye("规则已删除","success")}catch(J){ye("删除失败:"+J.message,"error")}}async function b(){if(s.value.length)try{await navigator.clipboard.writeText(s.value.map(T=>(T.pattern||"").trim()).filter(Boolean).join(`
26
+ `)),ye("已复制到剪贴板","success")}catch(T){ye("复制失败:"+T.message,"error")}}function E(){if(!s.value.length)return;const T=new Blob([JSON.stringify(s.value,null,2)],{type:"application/json"}),_=URL.createObjectURL(T),N=document.createElement("a");N.href=_,N.download=`pac-rules-${new Date().toISOString().slice(0,10)}.json`,N.click(),URL.revokeObjectURL(_)}function $(){var T;(T=i.value)==null||T.click()}async function R(T){var N;const _=(N=T.target.files)==null?void 0:N[0];if(_){T.target.value="";try{const J=await _.text(),j=JSON.parse(J);if(!Array.isArray(j)){ye("文件格式错误,需为规则数组","error");return}if(!await Vr(`导入 ${j.length} 条规则,将与现有规则合并(相同 pattern 会覆盖)。确定继续?`))return;const V=[...s.value];for(const X of j){if(!X.pattern)continue;const te=V.findIndex(se=>se.pattern===X.pattern),L={id:X.id||String(Date.now()+Math.random()),pattern:X.pattern,action:X.action||"proxy",priority:Number(X.priority)||0};te>=0?V[te]=L:V.push(L)}await n().setPacRules(V),s.value=V,ye(`已导入 ${j.length} 条规则`,"success")}catch(J){ye("导入失败:"+J.message,"error")}}}return(T,_)=>(H(),F("div",Hd,[c("div",Fd,[c("div",jd,[c("div",null,[c("h3",null,[_[8]||(_[8]=pe("PAC 规则 ",-1)),s.value.length?(H(),F("span",Gd,z(s.value.length),1)):ve("",!0)]),ft(t).mode==="remote"?(H(),F("p",Kd,"远程模式下规则保存在云端,PAC 模式时由本机按云端规则执行。")):(H(),F("p",Wd,"按优先级从高到低匹配,命中后选择「代理」或「直连」。"))])]),c("div",zd,[c("button",{class:"btn primary",onClick:_[0]||(_[0]=N=>m())},[..._[9]||(_[9]=[c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{"fill-rule":"evenodd",d:"M10 3a1 1 0 011 1v5h5a1 1 0 110 2h-5v5a1 1 0 11-2 0v-5H4a1 1 0 110-2h5V4a1 1 0 011-1z","clip-rule":"evenodd"})],-1),pe(" 新增规则 ",-1)])]),c("button",{class:"btn",onClick:$,title:"导入 JSON"},[..._[10]||(_[10]=[c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{"fill-rule":"evenodd",d:"M3 17a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM6.293 6.707a1 1 0 010-1.414l3-3a1 1 0 011.414 0l3 3a1 1 0 01-1.414 1.414L11 5.414V13a1 1 0 11-2 0V5.414L7.707 6.707a1 1 0 01-1.414 0z","clip-rule":"evenodd"})],-1),pe(" 导入 ",-1)])]),c("button",{class:"btn",onClick:E,disabled:!s.value.length,title:"导出 JSON"},[..._[11]||(_[11]=[c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{"fill-rule":"evenodd",d:"M3 17a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zm3.293-7.707a1 1 0 011.414 0L9 10.586V3a1 1 0 112 0v7.586l1.293-1.293a1 1 0 111.414 1.414l-3 3a1 1 0 01-1.414 0l-3-3a1 1 0 010-1.414z","clip-rule":"evenodd"})],-1),pe(" 导出 ",-1)])],8,qd),c("button",{class:"btn",onClick:b,disabled:!s.value.length,title:"复制规则"},[..._[12]||(_[12]=[c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{d:"M8 3a1 1 0 011-1h2a1 1 0 110 2H9a1 1 0 01-1-1z"}),c("path",{d:"M6 3a2 2 0 00-2 2v11a2 2 0 002 2h8a2 2 0 002-2V5a2 2 0 00-2-2 3 3 0 01-3 3H9a3 3 0 01-3-3z"})],-1),pe(" 复制 ",-1)])],8,Jd),c("div",Qd,[_[13]||(_[13]=c("svg",{class:"search-icon",viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{"fill-rule":"evenodd",d:"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z","clip-rule":"evenodd"})],-1)),Ae(c("input",{class:"search-input","onUpdate:modelValue":_[1]||(_[1]=N=>a.value=N),placeholder:"搜索规则…"},null,512),[[Oe,a.value]])])]),c("div",Yd,[c("table",Xd,[_[17]||(_[17]=c("thead",null,[c("tr",null,[c("th",null,"URL 匹配字符"),c("th",null,"动作"),c("th",null,"优先级"),c("th",null,"操作")])],-1)),c("tbody",null,[(H(!0),F(Ee,null,Ln(f.value,N=>(H(),F("tr",{key:N.id},[c("td",Zd,z(N.pattern),1),c("td",null,[c("span",{class:_e(["action-badge",N.action])},z(N.action==="proxy"?"代理":"直连"),3)]),c("td",ep,z(N.priority),1),c("td",tp,[c("button",{class:"icon-btn",onClick:J=>m(N),title:"编辑"},[..._[14]||(_[14]=[c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{d:"M13.586 3.586a2 2 0 112.828 2.828l-.793.793-2.828-2.828.793-.793zM11.379 5.793L3 14.172V17h2.828l8.38-8.379-2.83-2.828z"})],-1)])],8,np),c("button",{class:"icon-btn danger",onClick:J=>v(N),title:"删除"},[..._[15]||(_[15]=[c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{"fill-rule":"evenodd",d:"M9 2a1 1 0 00-.894.553L7.382 4H4a1 1 0 000 2v10a2 2 0 002 2h8a2 2 0 002-2V6a1 1 0 100-2h-3.382l-.724-1.447A1 1 0 0011 2H9zM7 8a1 1 0 012 0v6a1 1 0 11-2 0V8zm5-1a1 1 0 00-1 1v6a1 1 0 102 0V8a1 1 0 00-1-1z","clip-rule":"evenodd"})],-1)])],8,sp)])]))),128)),s.value.length?f.value.length?ve("",!0):(H(),F("tr",rp,[c("td",lp,"未找到匹配「"+z(a.value)+"」的规则",1)])):(H(),F("tr",op,[..._[16]||(_[16]=[c("td",{colspan:"4",class:"empty"},"暂无规则,点击「新增规则」开始添加",-1)])]))])])])]),o.value?(H(),F("div",{key:0,class:"modal",onClick:_[7]||(_[7]=xs(N=>o.value=null,["self"]))},[c("div",ip,[c("h3",null,z(r.value.id?"编辑规则":"新增规则"),1),c("div",ap,[_[18]||(_[18]=c("label",null,"URL 匹配字符",-1)),Ae(c("input",{"onUpdate:modelValue":_[2]||(_[2]=N=>r.value.pattern=N),placeholder:"例如 *.google.com",autofocus:""},null,512),[[Oe,r.value.pattern]])]),c("div",cp,[_[19]||(_[19]=c("label",null,"动作",-1)),c("div",up,[c("button",{type:"button",class:_e(["toggle-opt",{active:r.value.action==="proxy"}]),onClick:_[3]||(_[3]=N=>r.value.action="proxy")},"代理",2),c("button",{type:"button",class:_e(["toggle-opt",{active:r.value.action==="direct"}]),onClick:_[4]||(_[4]=N=>r.value.action="direct")},"直连",2)])]),c("div",fp,[_[20]||(_[20]=c("label",null,"优先级(数字越大越优先)",-1)),Ae(c("input",{"onUpdate:modelValue":_[5]||(_[5]=N=>r.value.priority=N),type:"number"},null,512),[[Oe,r.value.priority,void 0,{number:!0}]])]),c("div",dp,[c("button",{class:"btn",onClick:_[6]||(_[6]=N=>o.value=null)},"取消"),c("button",{class:"btn primary",onClick:g,disabled:l.value},"保存",8,pp)])])])):ve("",!0),c("input",{ref_key:"fileInput",ref:i,type:"file",accept:".json",style:{display:"none"},onChange:R},null,544)]))}},gp=At(hp,[["__scopeId","data-v-abe2d935"]]),mp={class:"traffic-page"},vp={key:0,class:"card"},yp={class:"toolbar"},_p={class:"auto-refresh"},bp=["title"],wp=["disabled"],xp={key:0,class:"record-count"},Cp={class:"table-wrap"},Sp={class:"table"},Ep={class:"time-cell"},Ap=["title"],Tp={key:0},Rp={key:1,class:"card capture-card"},Pp={class:"toolbar"},Op=["title"],kp=["disabled"],Np={class:"table-wrap"},Ip={class:"table capture-table"},Mp=["onClick"],$p={class:"time-cell"},Lp=["title"],Dp=["onClick"],Vp={key:0},Up={key:0,class:"pagination"},Bp={class:"pagination-info"},Hp=["disabled"],Fp=["disabled"],jp={key:3,class:"drawer"},Gp={class:"drawer-tabs"},Kp={class:"drawer-body"},Wp={class:"drawer-url-section"},zp={class:"drawer-url-head"},qp={class:"drawer-url"},Jp={class:"detail-section"},Qp={class:"headers-pre"},Yp={class:"detail-section"},Xp={class:"body-pre"},Zp={class:"detail-section"},eh={class:"headers-pre"},th={class:"detail-section"},nh={class:"body-pre"},Hs=50,sh={__name:"Traffic",setup(e){const t=ee([]),n=ee(!1),s=ee(!1),o=ee(!1);let r=null;const l=ee([]),a=ee(0),i=ee(0),u=ee({q:"",method:"",status:"",type:"",sort:"time",order:"desc"});let f=null;const d=ee(null),m=ee("request"),g=ee(!1),v=gi();function b(G){return G?new Date(G).toLocaleString("zh-CN",{hour12:!1}):"-"}function E(G){return!G||typeof G!="object"?"":Object.entries(G).map(([O,U])=>`${O}: ${U}`).join(`
27
+ `)}function $(G){if(G==null||G==="")return"(空)";const O=typeof G=="string"?G:String(G);try{return JSON.stringify(JSON.parse(O),null,2)}catch{return O}}function R(G){return G>=200&&G<300?"status-2xx":G>=300&&G<400?"status-3xx":G>=400&&G<500?"status-4xx":G>=500?"status-5xx":""}async function T(){try{const O=await(await fetch("/api/local/proxy")).json();s.value=(O.mode||"")==="mitm"}catch{s.value=!1}}async function _(){n.value=!0;try{const G=await fetch("/api/local/traffic");t.value=await G.json(),Array.isArray(t.value)||(t.value=[])}catch{t.value=[]}finally{n.value=!1}}function N(){o.value=!o.value,o.value?(r=setInterval(_,5e3),ye("自动刷新已开启(每 5 秒)","info")):(clearInterval(r),r=null,ye("自动刷新已关闭","info"))}function J(){f&&clearTimeout(f),f=setTimeout(j,300)}async function j(){n.value=!0;try{const G=new URLSearchParams;u.value.q&&G.set("q",u.value.q),u.value.method&&G.set("method",u.value.method);const O=String(u.value.status??"").trim();O!==""&&!Number.isNaN(Number(O))&&G.set("status",O),u.value.type&&G.set("type",u.value.type),G.set("sort",u.value.sort),G.set("order",u.value.order),G.set("limit",String(Hs)),G.set("offset",String(i.value));const ne=await(await fetch("/api/local/capture?"+G.toString())).json();l.value=ne.list||[],a.value=ne.total??0}catch{l.value=[],a.value=0}finally{n.value=!1}}function le(){i.value=Math.max(0,i.value-Hs),j()}function V(){i.value+=Hs,j()}function X(){u.value.order=u.value.order==="desc"?"asc":"desc",j()}function te(G){d.value=G,m.value="request"}function L(){d.value=null}async function se(){var G;if((G=d.value)!=null&&G.url)try{await navigator.clipboard.writeText(d.value.url),g.value=!0,setTimeout(()=>{g.value=!1},1500)}catch{ye("复制失败","error")}}async function Ce(){await T(),s.value?(i.value=0,await j()):await _()}return Ut(Ce),wo(()=>{r&&clearInterval(r)}),Cn(()=>v.path,G=>{G==="/console/traffic"&&Ce()}),(G,O)=>(H(),F("div",mp,[s.value?(H(),F("div",Rp,[O[17]||(O[17]=c("div",{class:"capture-banner"},[c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{"fill-rule":"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z","clip-rule":"evenodd"})]),pe(" 当前为抓包代理,可查看解密后的请求与响应。 ")],-1)),c("div",Pp,[Ae(c("input",{"onUpdate:modelValue":O[0]||(O[0]=U=>u.value.q=U),type:"text",placeholder:"搜索 URL…",class:"search-input",onInput:J},null,544),[[Oe,u.value.q]]),Ae(c("select",{"onUpdate:modelValue":O[1]||(O[1]=U=>u.value.method=U),class:"filter-select",onChange:j},[...O[12]||(O[12]=[c("option",{value:""},"全部方法",-1),c("option",null,"GET",-1),c("option",null,"POST",-1),c("option",null,"PUT",-1),c("option",null,"PATCH",-1),c("option",null,"DELETE",-1),c("option",null,"HEAD",-1),c("option",null,"OPTIONS",-1)])],544),[[Pn,u.value.method]]),Ae(c("input",{"onUpdate:modelValue":O[2]||(O[2]=U=>u.value.status=U),type:"text",placeholder:"状态码",class:"status-input",onInput:J},null,544),[[Oe,u.value.status]]),Ae(c("select",{"onUpdate:modelValue":O[3]||(O[3]=U=>u.value.type=U),class:"filter-select",onChange:j},[...O[13]||(O[13]=[c("option",{value:""},"全部类型",-1),c("option",null,"document",-1),c("option",null,"xhr",-1),c("option",null,"script",-1),c("option",null,"stylesheet",-1),c("option",null,"image",-1),c("option",null,"font",-1),c("option",null,"other",-1)])],544),[[Pn,u.value.type]]),Ae(c("select",{"onUpdate:modelValue":O[4]||(O[4]=U=>u.value.sort=U),class:"filter-select",onChange:j},[...O[14]||(O[14]=[c("option",{value:"time"},"按时间",-1),c("option",{value:"method"},"按方法",-1),c("option",{value:"status"},"按状态",-1),c("option",{value:"url"},"按 URL",-1)])],544),[[Pn,u.value.sort]]),c("button",{type:"button",class:"sort-order-btn",onClick:X,title:u.value.order==="desc"?"倒序":"正序"},z(u.value.order==="desc"?"↓":"↑"),9,Op),c("button",{class:"btn",onClick:j,disabled:n.value},"刷新",8,kp)]),c("div",Np,[c("table",Ip,[O[16]||(O[16]=c("thead",null,[c("tr",null,[c("th",null,"时间"),c("th",null,"方法"),c("th",null,"URL"),c("th",null,"状态"),c("th",null,"类型"),c("th")])],-1)),c("tbody",null,[(H(!0),F(Ee,null,Ln(l.value,U=>(H(),F("tr",{key:U.id,onClick:ne=>te(U),class:"row-clickable"},[c("td",$p,z(b(U.time)),1),c("td",null,[c("span",{class:_e(["method-tag",U.method])},z(U.method),3)]),c("td",{class:"url-cell",title:U.url},z(U.url),9,Lp),c("td",null,[c("span",{class:_e(["status-tag",R(U.statusCode)])},z(U.statusCode),3)]),c("td",null,z(U.type),1),c("td",null,[c("button",{type:"button",class:"btn-link",onClick:xs(ne=>te(U),["stop"])},"详情",8,Dp)])],8,Mp))),128)),!l.value.length&&!n.value?(H(),F("tr",Vp,[...O[15]||(O[15]=[c("td",{colspan:"6",class:"empty"},"暂无抓包记录,请通过抓包代理访问网页。",-1)])])):ve("",!0)])])]),a.value>0?(H(),F("div",Up,[c("span",Bp,"共 "+z(a.value)+" 条",1),c("button",{class:"btn small",disabled:i.value<=0,onClick:le},"上一页",8,Hp),c("button",{class:"btn small",disabled:i.value+l.value.length>=a.value,onClick:V},"下一页",8,Fp)])):ve("",!0)])):(H(),F("div",vp,[c("div",yp,[c("div",_p,[c("button",{type:"button",class:_e(["toggle-btn",{on:o.value}]),onClick:N,title:o.value?"关闭自动刷新":"开启自动刷新(每 5 秒)"},[...O[7]||(O[7]=[c("span",{class:"toggle-knob"},null,-1)])],10,bp),O[8]||(O[8]=c("span",{class:"toggle-label"},"自动刷新",-1))]),c("button",{class:"btn",onClick:_,disabled:n.value},[...O[9]||(O[9]=[c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{"fill-rule":"evenodd",d:"M4 2a1 1 0 011 1v2.101a7.002 7.002 0 0111.601 2.566 1 1 0 11-1.885.666A5.002 5.002 0 005.999 7H9a1 1 0 010 2H4a1 1 0 01-1-1V3a1 1 0 011-1zm.008 9.057a1 1 0 011.276.61A5.002 5.002 0 0014.001 13H11a1 1 0 110-2h5a1 1 0 011 1v5a1 1 0 11-2 0v-2.101a7.002 7.002 0 01-11.601-2.566 1 1 0 01.61-1.276z","clip-rule":"evenodd"})],-1),pe(" 刷新 ",-1)])],8,wp),t.value.length?(H(),F("span",xp,z(t.value.length)+" 条记录",1)):ve("",!0)]),c("div",Cp,[c("table",Sp,[O[11]||(O[11]=c("thead",null,[c("tr",null,[c("th",null,"时间"),c("th",null,"类型"),c("th",null,"方法"),c("th",null,"URL / 主机"),c("th",null,"动作")])],-1)),c("tbody",null,[(H(!0),F(Ee,null,Ln(t.value,U=>(H(),F("tr",{key:U.time+(U.url||"")},[c("td",Ep,z(b(U.time)),1),c("td",null,z(U.type),1),c("td",null,[c("span",{class:_e(["method-tag",U.method])},z(U.method),3)]),c("td",{class:"url-cell",title:U.url},z(U.url),9,Ap),c("td",null,[c("span",{class:_e(["action-badge",U.action])},z(U.action==="proxy"?"代理":"直连"),3)])]))),128)),!t.value.length&&!n.value?(H(),F("tr",Tp,[...O[10]||(O[10]=[c("td",{colspan:"5",class:"empty"},"暂无记录,请确保代理已开启并有流量经过。",-1)])])):ve("",!0)])])])])),d.value?(H(),F("div",{key:2,class:"drawer-mask",onClick:L})):ve("",!0),d.value?(H(),F("div",jp,[c("div",{class:"drawer-header"},[O[18]||(O[18]=c("span",{class:"drawer-title"},"请求详情",-1)),c("button",{type:"button",class:"drawer-close",onClick:L},"×")]),c("div",Gp,[c("button",{type:"button",class:_e({active:m.value==="request"}),onClick:O[5]||(O[5]=U=>m.value="request")},"请求",2),c("button",{type:"button",class:_e({active:m.value==="response"}),onClick:O[6]||(O[6]=U=>m.value="response")},"响应",2)]),c("div",Kp,[c("div",Wp,[c("div",zp,[c("span",{class:_e(["drawer-method-tag",d.value.method])},z(d.value.method),3),c("button",{type:"button",class:"btn-copy-url",onClick:se},z(g.value?"已复制":"复制 URL"),1)]),c("pre",qp,z(d.value.url),1)]),m.value==="request"?(H(),F(Ee,{key:0},[c("div",Jp,[O[19]||(O[19]=c("h4",null,"Request Headers",-1)),c("pre",Qp,z(E(d.value.requestHeaders)),1)]),c("div",Yp,[O[20]||(O[20]=c("h4",null,"Request Body",-1)),c("pre",Xp,z($(d.value.requestBody)),1)])],64)):(H(),F(Ee,{key:1},[c("div",Zp,[O[21]||(O[21]=c("h4",null,"Response Headers",-1)),c("pre",eh,z(E(d.value.responseHeaders)),1)]),c("div",th,[O[22]||(O[22]=c("h4",null,"Response Body",-1)),c("pre",nh,z($(d.value.responseBody)),1)])],64))])])):ve("",!0)]))}},oh=At(sh,[["__scopeId","data-v-4331eb78"]]),rh={class:"shadowsocks-page"},lh={class:"card"},ih={class:"enable-row"},ah=["disabled"],ch={class:"card"},uh={class:"fields"},fh={class:"field field-wide"},dh={class:"field"},ph={class:"field field-wide"},hh={class:"password-wrap"},gh=["type"],mh={key:0,viewBox:"0 0 20 20",fill:"currentColor"},vh={key:1,viewBox:"0 0 20 20",fill:"currentColor"},yh={class:"field"},_h={class:"field"},bh={class:"actions"},wh=["disabled"],xh={key:0,class:"btn-spinner"},Ch={class:"card status-card"},Sh={class:"status-header"},Eh={class:"status-actions"},Ah=["disabled"],Th=["disabled"],Rh=["disabled"],Ph={class:"status-line"},Oh={key:0,class:"status-pid"},kh={key:1,class:"status-port"},Nh={key:0,class:"status-error"},Ih={class:"log-section"},Mh={class:"log-count"},$h={key:0,class:"log-pre"},Lh={__name:"Shadowsocks",setup(e){const t=ee({enabled:!1,server:"",serverPort:8388,localPort:1080,password:"",method:"aes-256-gcm",timeout:300}),n=ee({running:!1,pid:null,error:null,logs:[]}),s=ee(!1),o=ee(!1),r=ee(!1),l=ee(!1);async function a(){try{const g=await fetch("/api/local/sslocal");t.value={...t.value,...await g.json()}}catch{}}async function i(){try{const g=await fetch("/api/local/sslocal-status");n.value=await g.json()}catch{}}Ut(async()=>{await a(),await i()});async function u(){s.value=!0;try{const g=await fetch("/api/local/sslocal",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t.value)});if(!g.ok)throw new Error((await g.json()).error||g.statusText);t.value={...t.value,...await g.json()},await i(),ye("设置已保存","success")}catch(g){ye("保存失败:"+g.message,"error")}finally{s.value=!1}}async function f(){t.value.enabled=!t.value.enabled,await u()}async function d(){o.value=!0;try{const g=await fetch("/api/local/sslocal/start",{method:"POST"}),v=await g.json();if(!g.ok)throw new Error(v.error||g.statusText);n.value=v,ye("sslocal 已启动","success")}catch(g){ye("启动失败:"+g.message,"error"),await i()}finally{o.value=!1}}async function m(){o.value=!0;try{await fetch("/api/local/sslocal/stop",{method:"POST"}),await i(),ye("sslocal 已停止","info")}catch(g){ye("停止失败:"+g.message,"error")}finally{o.value=!1}}return(g,v)=>{var b;return H(),F("div",rh,[c("div",lh,[c("div",ih,[v[8]||(v[8]=c("div",null,[c("h3",null,"Shadowsocks (sslocal)"),c("p",{class:"desc"},"启用后将自动管理 sslocal 进程,并将其 SOCKS5 输出作为上游代理。")],-1)),c("button",{type:"button",class:_e(["toggle-btn",{on:t.value.enabled}]),onClick:f,disabled:s.value},[...v[7]||(v[7]=[c("span",{class:"toggle-knob"},null,-1)])],10,ah)])]),c("div",ch,[v[17]||(v[17]=c("h3",null,"服务器配置",-1)),c("div",uh,[c("div",fh,[v[9]||(v[9]=c("label",null,"服务器地址",-1)),Ae(c("input",{"onUpdate:modelValue":v[0]||(v[0]=E=>t.value.server=E),placeholder:"example.com 或 1.2.3.4"},null,512),[[Oe,t.value.server]])]),c("div",dh,[v[10]||(v[10]=c("label",null,"服务器端口",-1)),Ae(c("input",{"onUpdate:modelValue":v[1]||(v[1]=E=>t.value.serverPort=E),type:"number",min:"1",max:"65535"},null,512),[[Oe,t.value.serverPort,void 0,{number:!0}]])]),c("div",ph,[v[13]||(v[13]=c("label",null,"密码",-1)),c("div",hh,[Ae(c("input",{"onUpdate:modelValue":v[2]||(v[2]=E=>t.value.password=E),type:r.value?"text":"password",placeholder:"密码"},null,8,gh),[[Xc,t.value.password]]),c("button",{type:"button",class:"eye-btn",onClick:v[3]||(v[3]=E=>r.value=!r.value),tabindex:"-1"},[r.value?(H(),F("svg",vh,[...v[12]||(v[12]=[c("path",{"fill-rule":"evenodd",d:"M3.707 2.293a1 1 0 00-1.414 1.414l14 14a1 1 0 001.414-1.414l-1.473-1.473A10.014 10.014 0 0019.542 10C18.268 5.943 14.478 3 10 3a9.958 9.958 0 00-4.512 1.074l-1.78-1.781zm4.261 4.26l1.514 1.515a2.003 2.003 0 012.45 2.45l1.514 1.514a4 4 0 00-5.478-5.478z","clip-rule":"evenodd"},null,-1),c("path",{d:"M12.454 16.697L9.75 13.992a4 4 0 01-3.742-3.741L2.335 6.578A9.98 9.98 0 00.458 10c1.274 4.057 5.064 7 9.542 7 .847 0 1.669-.105 2.454-.303z"},null,-1)])])):(H(),F("svg",mh,[...v[11]||(v[11]=[c("path",{d:"M10 12a2 2 0 100-4 2 2 0 000 4z"},null,-1),c("path",{"fill-rule":"evenodd",d:"M.458 10C1.732 5.943 5.522 3 10 3s8.268 2.943 9.542 7c-1.274 4.057-5.064 7-9.542 7S1.732 14.057.458 10zM14 10a4 4 0 11-8 0 4 4 0 018 0z","clip-rule":"evenodd"},null,-1)])]))])])]),c("div",yh,[v[15]||(v[15]=c("label",null,"加密方式",-1)),Ae(c("select",{"onUpdate:modelValue":v[4]||(v[4]=E=>t.value.method=E)},[...v[14]||(v[14]=[c("option",null,"aes-256-gcm",-1),c("option",null,"aes-128-gcm",-1),c("option",null,"chacha20-ietf-poly1305",-1),c("option",null,"2022-blake3-aes-256-gcm",-1),c("option",null,"2022-blake3-aes-128-gcm",-1),c("option",null,"2022-blake3-chacha20-poly1305",-1)])],512),[[Pn,t.value.method]])]),c("div",_h,[v[16]||(v[16]=c("label",null,"本地 SOCKS5 端口",-1)),Ae(c("input",{"onUpdate:modelValue":v[5]||(v[5]=E=>t.value.localPort=E),type:"number",min:"1",max:"65535"},null,512),[[Oe,t.value.localPort,void 0,{number:!0}]])])]),c("div",bh,[c("button",{class:"btn primary",onClick:u,disabled:s.value},[s.value?(H(),F("span",xh)):ve("",!0),pe(" "+z(s.value?"保存中…":"保存设置"),1)],8,wh)])]),c("div",Ch,[c("div",Sh,[v[19]||(v[19]=c("h3",null,"运行状态",-1)),c("div",Eh,[c("button",{class:"btn",onClick:d,disabled:o.value||n.value.running},"启动",8,Ah),c("button",{class:"btn danger",onClick:m,disabled:o.value||!n.value.running},"停止",8,Th),c("button",{class:"btn icon-only",onClick:i,disabled:o.value,title:"刷新状态"},[...v[18]||(v[18]=[c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{"fill-rule":"evenodd",d:"M4 2a1 1 0 011 1v2.101a7.002 7.002 0 0111.601 2.566 1 1 0 11-1.885.666A5.002 5.002 0 005.999 7H9a1 1 0 010 2H4a1 1 0 01-1-1V3a1 1 0 011-1zm.008 9.057a1 1 0 011.276.61A5.002 5.002 0 0014.001 13H11a1 1 0 110-2h5a1 1 0 011 1v5a1 1 0 11-2 0v-2.101a7.002 7.002 0 01-11.601-2.566 1 1 0 01.61-1.276z","clip-rule":"evenodd"})],-1)])],8,Rh)])]),c("p",Ph,[c("span",{class:_e(["status-dot",n.value.running?"on":"off"])},null,2),c("span",{class:_e(n.value.running?"status-on":"status-off")},z(n.value.running?"运行中":"已停止"),3),n.value.running&&n.value.pid?(H(),F("span",Oh,"PID "+z(n.value.pid),1)):ve("",!0),n.value.running?(H(),F("span",kh,"→ socks5://127.0.0.1:"+z(t.value.localPort),1)):ve("",!0)]),n.value.error?(H(),F("p",Nh,z(n.value.error),1)):ve("",!0),c("div",Ih,[c("button",{type:"button",class:"log-toggle",onClick:v[6]||(v[6]=E=>l.value=!l.value)},[(H(),F("svg",{viewBox:"0 0 20 20",fill:"currentColor",style:gs({transform:l.value?"rotate(90deg)":"none"})},[...v[20]||(v[20]=[c("path",{"fill-rule":"evenodd",d:"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z","clip-rule":"evenodd"},null,-1)])],4)),v[21]||(v[21]=pe(" 最近日志 ",-1)),c("span",Mh,z(((b=n.value.logs)==null?void 0:b.length)??0)+" 行",1)]),l.value?(H(),F("pre",$h,z((n.value.logs||[]).join(`
28
+ `)||"(暂无日志)"),1)):ve("",!0)])])])}}},Dh=At(Lh,[["__scopeId","data-v-2ef4dba1"]]),Vh=[{path:"/",name:"ModeSelect",component:qf,meta:{title:"选择模式"}},{path:"/login",name:"Login",component:sd,meta:{title:"登录"}},{path:"/register",name:"Register",component:pd,meta:{title:"注册"}},{path:"/console",redirect:"/console/traffic"},{path:"/console/traffic",name:"Traffic",component:oh,meta:{title:"流量记录"}},{path:"/console/proxy",name:"ProxySettings",component:Bd,meta:{title:"代理设置"}},{path:"/console/pac-rules",name:"PacRules",component:gp,meta:{title:"PAC 规则"}},{path:"/console/shadowsocks",name:"Shadowsocks",component:Dh,meta:{title:"Shadowsocks"}}],xi=pf({history:Gu(),routes:Vh});xi.beforeEach((e,t,n)=>{const s=mi();e.path!=="/"&&!e.path.startsWith("/login")&&!e.path.startsWith("/register")&&!s?n("/"):n()});mi();const Ci=ou(jf);Ci.use(xi);Ci.mount("#app");