@devframes/plugin-code-server 0.7.4 → 0.7.6

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/dist/types.d.mts CHANGED
@@ -1,25 +1,63 @@
1
1
  //#region src/types.d.ts
2
- /** Lifecycle state of the managed code-server process. */
2
+ /** Lifecycle state of the managed editor process. */
3
3
  type CodeServerStatus = 'stopped' | 'starting' | 'running' | 'error';
4
4
  /**
5
- * Result of probing the host for a usable `code-server` binary. Drives the
6
- * launcher UI: when `installed` is false the SPA renders install instructions
7
- * instead of a launch button.
5
+ * Which editor server binary the plugin launches in `mode: 'local'`:
6
+ *
7
+ * - `'code-server'` — Coder's open-source
8
+ * [code-server](https://github.com/coder/code-server) (`code-server …`). The
9
+ * plugin runs it with password auth and hands the client a session cookie, so
10
+ * the embedded editor opens already signed in.
11
+ * - `'ms-code-serve-web'` — Microsoft's official
12
+ * [`code serve-web`](https://code.visualstudio.com/docs/remote/vscode-server)
13
+ * (ships with the `code` CLI). The plugin generates a connection token and
14
+ * hands it to the client as a `?tkn=` query parameter.
15
+ */
16
+ type CodeServerBackend = 'code-server' | 'ms-code-serve-web';
17
+ /**
18
+ * How the editor is served:
19
+ *
20
+ * - `'local'` — a local server ({@link CodeServerBackend}) embedded from this
21
+ * machine's origin.
22
+ * - `'tunnel'` — Microsoft's `code tunnel`, which registers a remote tunnel and
23
+ * embeds the hosted `vscode.dev` editor. First launch prints a device-login
24
+ * prompt (surfaced as {@link CodeServerLogin}); authentication is handled by
25
+ * `vscode.dev` itself, not this plugin.
26
+ */
27
+ type CodeServerMode = 'local' | 'tunnel';
28
+ /**
29
+ * Result of probing the host for a usable editor binary. Drives the launcher
30
+ * UI: when `installed` is false the SPA renders install instructions instead of
31
+ * a launch button.
8
32
  */
9
33
  interface CodeServerDetection {
10
34
  /** Whether detection has run at least once on this context. */
11
35
  checked: boolean;
12
- /** Whether the `code-server` binary resolved and reported a version. */
36
+ /** Whether the resolved binary reported a version. */
13
37
  installed: boolean;
14
- /** Version string reported by `code-server --version`, when installed. */
38
+ /** Version string reported by `<bin> --version`, when installed. */
15
39
  version?: string;
16
- /** The binary name / path probed (configurable via options). */
40
+ /** The binary name / path probed. */
17
41
  bin: string;
42
+ /** The resolved backend (meaningful in `mode: 'local'`). */
43
+ backend: CodeServerBackend;
44
+ /** The resolved mode. */
45
+ mode: CodeServerMode;
18
46
  }
19
- /** Serializable, secret-free description of the code-server process. */
47
+ /**
48
+ * A device-login prompt emitted by `code tunnel` on first launch. Surfaced to
49
+ * the client so the user can complete authentication in their browser.
50
+ */
51
+ interface CodeServerLogin {
52
+ /** The verification URL to open (e.g. `https://github.com/login/device`). */
53
+ url: string;
54
+ /** The one-time code to enter there. */
55
+ code: string;
56
+ }
57
+ /** Serializable, secret-free description of the editor process. */
20
58
  interface CodeServerServerInfo {
21
59
  status: CodeServerStatus;
22
- /** Port code-server is bound to, when starting/running. */
60
+ /** Port the local server is bound to, when starting/running. */
23
61
  port?: number;
24
62
  /** Epoch ms the current process was started. */
25
63
  startedAt?: number;
@@ -27,31 +65,42 @@ interface CodeServerServerInfo {
27
65
  pid?: number;
28
66
  /** Last error message, when `status === 'error'`. */
29
67
  error?: string;
68
+ /** Device-login prompt while a tunnel is authenticating. */
69
+ login?: CodeServerLogin;
30
70
  }
31
71
  /**
32
72
  * The full shared-state payload broadcast to subscribed clients. Deliberately
33
- * carries no authentication material — see {@link CodeServerAuth}.
73
+ * carries no authentication material — see {@link CodeServerConnect}.
34
74
  */
35
75
  interface CodeServerSharedState {
36
76
  detection: CodeServerDetection;
37
77
  server: CodeServerServerInfo;
38
78
  }
39
79
  /**
40
- * Auto-authentication handoff for the iframe. code-server runs with password
41
- * auth (`HASHED_PASSWORD`); the valid session is the SHA-256 of a server-side
42
- * token. The client sets `cookieName=cookieValue` for the current host before
43
- * loading the iframe, so the editor loads already signed in — no login page.
80
+ * How the client reaches the running editor. May carry a secret (session
81
+ * cookie or connection token), so it is returned only from the `start` /
82
+ * `status` RPCs to the already-authorized client — never published to shared
83
+ * state.
44
84
  *
45
- * Returned only from the `start` / `status` RPCs (the connection is already
46
- * authorized with devframe's auth), never published to shared state.
85
+ * - `url` set → embed it verbatim (tunnel mode's `vscode.dev` URL).
86
+ * - otherwise → the client builds `<page-origin-host>:<port><path>` and, when
87
+ * `cookie` is present, sets it (cookies are port-agnostic, so a cookie set on
88
+ * the launcher's origin reaches the editor on its own port) before loading.
47
89
  */
48
- interface CodeServerAuth {
49
- cookieName: string;
50
- cookieValue: string;
90
+ interface CodeServerConnect {
91
+ /** Absolute URL to embed. When set, used verbatim (tunnel mode). */
92
+ url?: string;
93
+ /** Path + query to open relative to the editor origin (local mode). */
94
+ path?: string;
95
+ /** Session cookie to set before the iframe loads (`code-server` backend). */
96
+ cookie?: {
97
+ name: string;
98
+ value: string;
99
+ };
51
100
  }
52
- /** Result of the `status` query — shared state plus auth when running. */
101
+ /** Result of the `status` query — shared state plus connect info when running. */
53
102
  interface CodeServerStatusResult extends CodeServerSharedState {
54
- auth?: CodeServerAuth;
103
+ connect?: CodeServerConnect;
55
104
  }
56
105
  /** Result of the `start` action — identical shape to {@link CodeServerStatusResult}. */
57
106
  type CodeServerStartResult = CodeServerStatusResult;
@@ -60,28 +109,52 @@ interface CodeServerStartRequest {
60
109
  /** Workspace folder to open. Defaults to the configured / context cwd. */
61
110
  folder?: string;
62
111
  }
63
- /** Options accepted by {@link createCodeServerDevframe}. */
112
+ /** Options accepted by {@link import('./index').createCodeServerDevframe}. */
64
113
  interface CodeServerOptions {
65
- /** code-server binary to detect and launch. Defaults to `code-server` (PATH). */
114
+ /**
115
+ * How the editor is served (default `'local'`). `'tunnel'` uses Microsoft's
116
+ * `code tunnel` and embeds `vscode.dev`.
117
+ */
118
+ mode?: CodeServerMode;
119
+ /**
120
+ * Which local server to launch in `mode: 'local'`. When unset, the plugin
121
+ * auto-detects: it prefers `code-server` on PATH, then falls back to the
122
+ * `code` CLI's `serve-web`.
123
+ */
124
+ backend?: CodeServerBackend;
125
+ /**
126
+ * Editor binary to detect and launch. Defaults to the resolved backend's
127
+ * binary (`code-server` or `code`), or `code` in tunnel mode.
128
+ */
66
129
  bin?: string;
67
- /** Workspace folder code-server opens. Defaults to `ctx.cwd`. */
130
+ /** Workspace folder the editor opens. Defaults to `ctx.cwd`. */
68
131
  cwd?: string;
69
- /** Force a specific code-server port. Defaults to a free port near 8080. */
132
+ /** Force a specific server port (local mode). Defaults to a free port near 8080. */
70
133
  serverPort?: number;
71
- /** Host code-server binds to. Defaults to `0.0.0.0` so the preview is reachable. */
134
+ /** Host the local server binds to. Defaults to `127.0.0.1`. */
72
135
  host?: string;
73
- /** Extra CLI arguments forwarded verbatim to code-server. */
136
+ /** Extra CLI arguments forwarded verbatim to the editor binary. */
74
137
  args?: string[];
75
- /** Environment variables merged into the code-server process. */
138
+ /** Environment variables merged into the editor process. */
76
139
  env?: Record<string, string>;
77
140
  /**
78
- * `--cookie-suffix` passed to code-server, isolating its session cookie from
79
- * other local code-server instances. Supported on recent code-server only;
80
- * left unset by default for compatibility.
141
+ * `--cookie-suffix` passed to `code-server`, isolating its session cookie
142
+ * from other local code-server instances. `code-server` backend only.
81
143
  */
82
144
  cookieSuffix?: string;
83
- /** Milliseconds to wait for code-server readiness before failing. */
145
+ /** Milliseconds to wait for the editor to become ready before failing. */
84
146
  startTimeout?: number;
147
+ /** Launch the editor automatically when the plugin is set up, rather than on demand. */
148
+ startOnBoot?: boolean;
149
+ /**
150
+ * When the target port already answers a health probe, adopt that running
151
+ * server instead of spawning a new one. Auto-authentication applies only to
152
+ * servers this plugin launches, so an adopted server opens with whatever auth
153
+ * it was started with.
154
+ */
155
+ reuseExistingServer?: boolean;
156
+ /** Options for `mode: 'tunnel'`. */
157
+ tunnel?: CodeServerTunnelOptions;
85
158
  /** Mount path override for the launcher SPA. */
86
159
  basePath?: string;
87
160
  /** Launcher SPA dist dir override. Defaults to the bundled SPA. */
@@ -95,5 +168,13 @@ interface CodeServerOptions {
95
168
  /** Prefer a random port for the launcher SPA. */
96
169
  random?: boolean;
97
170
  }
171
+ /** Options for `mode: 'tunnel'`. */
172
+ interface CodeServerTunnelOptions {
173
+ /**
174
+ * The machine name registered with the tunnel service and used to build the
175
+ * `vscode.dev/tunnel/<name>` URL. Defaults to the device hostname.
176
+ */
177
+ name?: string;
178
+ }
98
179
  //#endregion
99
- export { CodeServerAuth, CodeServerDetection, CodeServerOptions, CodeServerServerInfo, CodeServerSharedState, CodeServerStartRequest, CodeServerStartResult, CodeServerStatus, CodeServerStatusResult };
180
+ export { CodeServerBackend, CodeServerConnect, CodeServerDetection, CodeServerLogin, CodeServerMode, CodeServerOptions, CodeServerServerInfo, CodeServerSharedState, CodeServerStartRequest, CodeServerStartResult, CodeServerStatus, CodeServerStatusResult, CodeServerTunnelOptions };
package/dist/vite.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { n as createCodeServerDevframe } from "./src-8iDqPfSS.mjs";
1
+ import { n as createCodeServerDevframe } from "./src-EUgoe7om.mjs";
2
2
  import { viteDevBridge } from "devframe/helpers/vite";
3
3
  //#region src/vite.ts
4
4
  /**
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@devframes/plugin-code-server",
3
3
  "type": "module",
4
- "version": "0.7.4",
5
- "description": "Run code-server (VS Code in the browser) as a devframe panel — detect a local install, launch it on demand, and embed the editor in an auto-authenticated iframe.",
4
+ "version": "0.7.6",
5
+ "description": "Run VS Code in the browser (code-server, code serve-web, or a tunnel) as a devframe panel — detect a local install, launch it on demand, and embed the editor in an auto-authenticated iframe.",
6
6
  "author": "Anthony Fu <anthonyfu117@hotmail.com>",
7
7
  "license": "MIT",
8
8
  "homepage": "https://github.com/devframes/devframe#readme",
@@ -41,7 +41,7 @@
41
41
  ],
42
42
  "peerDependencies": {
43
43
  "vite": "^8.0.0",
44
- "devframe": "0.7.4"
44
+ "devframe": "0.7.6"
45
45
  },
46
46
  "peerDependenciesMeta": {
47
47
  "vite": {
@@ -51,23 +51,25 @@
51
51
  "dependencies": {
52
52
  "cac": "^7.0.0",
53
53
  "get-port-please": "^3.2.0",
54
- "iframe-pane": "^1.1.0",
55
- "nostics": "^1.1.4"
54
+ "nostics": "^1.2.0"
56
55
  },
57
56
  "devDependencies": {
58
- "@antfu/design": "^0.3.0",
57
+ "@antfu/design": "^0.3.2",
59
58
  "@iconify-json/ph": "^1.2.2",
60
- "@storybook/html-vite": "^10.5.0",
59
+ "@storybook/addon-docs": "^10.5.2",
60
+ "@storybook/vue3-vite": "^10.5.2",
61
61
  "@types/node": "^26.1.1",
62
+ "@vitejs/plugin-vue": "^6.0.8",
62
63
  "colorjs.io": "^0.7.0",
63
64
  "h3": "2.0.1-rc.22",
64
- "storybook": "^10.5.0",
65
- "tsdown": "^0.22.7",
65
+ "storybook": "^10.5.2",
66
+ "tsdown": "^0.22.12",
66
67
  "unocss": "^66.7.5",
67
- "vite": "^8.1.4",
68
+ "vite": "^8.1.5",
68
69
  "vitest": "^4.1.10",
70
+ "vue": "^3.5.40",
69
71
  "ws": "^8.21.1",
70
- "devframe": "0.7.4"
72
+ "devframe": "0.7.6"
71
73
  },
72
74
  "scripts": {
73
75
  "build": "tsdown && vite build --config src/spa/vite.config.ts",
@@ -1,2 +0,0 @@
1
- (function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=`__connection.json`,t=`__rpc-dump/index.json`,n=`devframe_otp`,r=`devframe_auth_token`;function i(e){return typeof e==`string`?`'${e}'`:new a().serialize(e)}var a=function(){class e{#e=new Map;compare(e,t){let n=typeof e,r=typeof t;return n===`string`&&r===`string`?e.localeCompare(t):n===`number`&&r===`number`?e-t:String.prototype.localeCompare.call(this.serialize(e,!0),this.serialize(t,!0))}serialize(e,t){if(e===null)return`null`;switch(typeof e){case`string`:return t?e:`'${e}'`;case`bigint`:return`${e}n`;case`object`:return this.$object(e);case`function`:return this.$function(e)}return String(e)}serializeObject(e){let t=Object.prototype.toString.call(e);if(t!==`[object Object]`)return this.serializeBuiltInType(t.length<10?`unknown:${t}`:t.slice(8,-1),e);let n=e.constructor,r=n===Object||n===void 0?``:n.name;if(r!==``&&globalThis[r]===n)return this.serializeBuiltInType(r,e);if(typeof e.toJSON==`function`){let t=e.toJSON();return r+(typeof t==`object`&&t?this.$object(t):`(${this.serialize(t)})`)}return this.serializeObjectEntries(r,Object.entries(e))}serializeBuiltInType(e,t){let n=this[`$`+e];if(n)return n.call(this,t);if(typeof t?.entries==`function`)return this.serializeObjectEntries(e,t.entries());throw Error(`Cannot serialize ${e}`)}serializeObjectEntries(e,t){let n=Array.from(t).sort((e,t)=>this.compare(e[0],t[0])),r=`${e}{`;for(let e=0;e<n.length;e++){let[t,i]=n[e];r+=`${this.serialize(t,!0)}:${this.serialize(i)}`,e<n.length-1&&(r+=`,`)}return r+`}`}$object(e){let t=this.#e.get(e);return t===void 0&&(this.#e.set(e,`#${this.#e.size}`),t=this.serializeObject(e),this.#e.set(e,t)),t}$function(e){let t=Function.prototype.toString.call(e);return t.slice(-15)===`[native code] }`?`${e.name||``}()[native]`:`${e.name}(${e.length})${t.replace(/\s*\n\s*/g,``)}`}$Array(e){let t=`[`;for(let n=0;n<e.length;n++)t+=this.serialize(e[n]),n<e.length-1&&(t+=`,`);return t+`]`}$Date(e){try{return`Date(${e.toISOString()})`}catch{return`Date(null)`}}$ArrayBuffer(e){return`ArrayBuffer[${new Uint8Array(e).join(`,`)}]`}$Set(e){return`Set${this.$Array(Array.from(e).sort((e,t)=>this.compare(e,t)))}`}$Map(e){return this.serializeObjectEntries(`Map`,e.entries())}}for(let t of[`Error`,`RegExp`,`URL`])e.prototype[`$`+t]=function(e){return`${t}(${e})`};for(let t of[`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float32Array`,`Float64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`,`)}]`};for(let t of[`BigInt64Array`,`BigUint64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`n,`)}${e.length>0?`n`:``}]`};return e}(),o=[1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225],s=[1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998],c=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_`,l=[],u=class{_data=new d;_hash=new d([...o]);_nDataBytes=0;_minBufferSize=0;finalize(e){e&&this._append(e);let t=this._nDataBytes*8,n=this._data.sigBytes*8;return this._data.words[n>>>5]|=128<<24-n%32,this._data.words[(n+64>>>9<<4)+14]=Math.floor(t/4294967296),this._data.words[(n+64>>>9<<4)+15]=t,this._data.sigBytes=this._data.words.length*4,this._process(),this._hash}_doProcessBlock(e,t){let n=this._hash.words,r=n[0],i=n[1],a=n[2],o=n[3],c=n[4],u=n[5],d=n[6],f=n[7];for(let n=0;n<64;n++){if(n<16)l[n]=e[t+n]|0;else{let e=l[n-15],t=(e<<25|e>>>7)^(e<<14|e>>>18)^e>>>3,r=l[n-2],i=(r<<15|r>>>17)^(r<<13|r>>>19)^r>>>10;l[n]=t+l[n-7]+i+l[n-16]}let p=c&u^~c&d,m=r&i^r&a^i&a,h=(r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22),g=(c<<26|c>>>6)^(c<<21|c>>>11)^(c<<7|c>>>25),_=f+g+p+s[n]+l[n],v=h+m;f=d,d=u,u=c,c=o+_|0,o=a,a=i,i=r,r=_+v|0}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+a|0,n[3]=n[3]+o|0,n[4]=n[4]+c|0,n[5]=n[5]+u|0,n[6]=n[6]+d|0,n[7]=n[7]+f|0}_append(e){typeof e==`string`&&(e=d.fromUtf8(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes}_process(e){let t,n=this._data.sigBytes/64;n=e?Math.ceil(n):Math.max((n|0)-this._minBufferSize,0);let r=n*16,i=Math.min(r*4,this._data.sigBytes);if(r){for(let e=0;e<r;e+=16)this._doProcessBlock(this._data.words,e);t=this._data.words.splice(0,r),this._data.sigBytes-=i}return new d(t,i)}},d=class e{words;sigBytes;constructor(e,t){e=this.words=e||[],this.sigBytes=t===void 0?e.length*4:t}static fromUtf8(t){let n=unescape(encodeURIComponent(t)),r=n.length,i=[];for(let e=0;e<r;e++)i[e>>>2]|=(n.charCodeAt(e)&255)<<24-e%4*8;return new e(i,r)}toBase64(){let e=[];for(let t=0;t<this.sigBytes;t+=3){let n=this.words[t>>>2]>>>24-t%4*8&255,r=this.words[t+1>>>2]>>>24-(t+1)%4*8&255,i=this.words[t+2>>>2]>>>24-(t+2)%4*8&255,a=n<<16|r<<8|i;for(let n=0;n<4&&t*8+n*6<this.sigBytes*8;n++)e.push(c.charAt(a>>>6*(3-n)&63))}return e.join(``)}concat(e){if(this.words[this.sigBytes>>>2]&=4294967295<<32-this.sigBytes%4*8,this.words.length=Math.ceil(this.sigBytes/4),this.sigBytes%4)for(let t=0;t<e.sigBytes;t++){let n=e.words[t>>>2]>>>24-t%4*8&255;this.words[this.sigBytes+t>>>2]|=n<<24-(this.sigBytes+t)%4*8}else for(let t=0;t<e.sigBytes;t+=4)this.words[this.sigBytes+t>>>2]=e.words[t>>>2];this.sigBytes+=e.sigBytes}};function f(e){return new u().finalize(e).toBase64()}function p(e){return f(i(e))}function m(e){return p(e)}function h(e,...t){return typeof e==`function`?e(...t):e}var g=Error.captureStackTrace,_=class e extends Error{name=`Diagnostic`;docs;fix;sources;get why(){return this.message}constructor(t,n=e){super(t.why,{cause:t.cause}),this.fix=t.fix,this.docs=t.docs,this.sources=t.sources,g?.(this,n)}toJSON(){return{name:this.name,why:this.why,fix:this.fix,docs:this.docs,sources:this.sources,cause:this.cause,stack:this.stack}}};function v(e,t){return typeof e==`string`?`${e}/${t.toLowerCase()}`:e?.(t)}function y(e){let t=e.reporters??[],n={},{docsBase:r}=e;for(let i of Object.keys(e.codes)){let a=e.codes[i],o=a.docs===!1?void 0:a.docs||v(r,i),s=(e={},n={})=>{let r=new _({why:h(a.why,e),fix:h(a.fix,e),docs:o,cause:e.cause,sources:e.sources},s);r.name=i;for(let e of t)e(r,n);return r};n[i]=s}return n}function b(e,t){let n=`\x1B[${e}m`,r=`\x1B[${t}m`;return((e,...t)=>{if(Array.isArray(e)&&`raw`in e){let i=e,a=``;for(let e=0;e<i.length;e++)a+=i[e],e<t.length&&(a+=String(t[e]));return`${n}${a}${r}`}return`${n}${String(e)}${r}`})}var x={blue:b(34,39),cyan:b(36,39),gray:b(90,39),green:b(32,39),red:b(31,39),yellow:b(33,39),bold:b(1,22),dim:b(2,22),reset:b(0,0),underline:b(4,24)};function ee(e){return t=>{let n=`${e.bold(e.red(`[${t.name}]`))} ${t.message}`,r=[];return t.fix&&r.push(`${e.dim(`fix:`)} ${t.fix}`),t.sources?.length&&r.push(`${e.dim(`sources:`)} ${t.sources.join(`, `)}`),t.docs&&r.push(`${e.dim(`see:`)} ${e.cyan(t.docs)}`),r.length===0?n:[n,...r.map((t,n)=>`${e.dim(n<r.length-1?`├▶`:`╰▶`)} ${t}`)].join(`
2
- `)}}var te=ee(x);function ne(e,{method:t=`warn`}={}){console[t](te(e))}var S=y({docsBase:`https://devfra.me/errors`,reporters:[ne],codes:{DF0019:{why:e=>`RPC function "${e.name}" has \`agent\` set but \`jsonSerializable\` is not \`true\` — MCP requires JSON-serializable data.`,fix:"Set `jsonSerializable: true` if the payload is JSON-safe, or remove `agent` to keep it RPC-only."},DF0020:{why:e=>`RPC function "${e.name}" declares \`jsonSerializable: true\` but the value at "${e.path}" is a ${e.type}.`,fix:"Either drop `jsonSerializable: true` (falls back to structured-clone) or change the value to a JSON-safe shape."},DF0021:{why:e=>`RPC function "${e.name}" is already registered`,fix:"Use the `force` parameter to overwrite an existing registration."},DF0022:{why:e=>`RPC function "${e.name}" is not registered. Use register() to add new functions.`},DF0023:{why:e=>`RPC function "${e.name}" is not registered`},DF0024:{why:e=>`Either handler or setup function must be provided for RPC function "${e.name}"`},DF0025:{why:e=>`Function "${e.name}" not found in dump store`},DF0026:{why:e=>`No dump match for "${e.name}" with args: ${e.args}`},DF0027:{why:e=>`Function "${e.name}" with type "${e.type}" cannot have dump configuration. Only "static" and "query" types support dumps.`},DF0028:{why:e=>`Function "${e.name}" with type "${e.type}" cannot use \`snapshot: true\`. Only "query" functions support this sugar; "static" functions have equivalent default behavior already.`,fix:"Remove `snapshot: true`, or change the function type to `query`."}}});function re(e){let t=e.cause instanceof Error?e.cause:ie(e.cause)?re(e.cause):e.cause,n=t===void 0?Error(e.message):Error(e.message,{cause:t});n.name=e.name;for(let t of Object.keys(e))t===`name`||t===`message`||t===`cause`||(n[t]=e[t]);return n}function ie(e){return typeof e==`object`&&!!e&&typeof e.message==`string`&&typeof e.name==`string`}async function ae(e,t){if(!e.setup)return{};if(typeof t==`object`&&t){e.__cache??=new WeakMap;let n=e.__cache,r=n.get(t);return r||(r=Promise.resolve(e.setup(t)),r.catch(()=>{n.get(t)===r&&n.delete(t)}),n.set(t,r)),await r}if(!e.__promise){let n=Promise.resolve(e.setup(t));n.catch(()=>{e.__promise===n&&(e.__promise=void 0)}),e.__promise=n}return await e.__promise}async function oe(e,t){if(e.handler)return e.handler;let n=await ae(e,t);if(!n.handler)throw S.DF0024({name:e.name});return n.handler}var se=class{cacheMap=new Map;options;keySerializer;constructor(e){this.options=e,this.keySerializer=e.keySerializer||(e=>m(e))}updateOptions(e){this.options={...this.options,...e}}cached(e,t){let n=this.cacheMap.get(e);if(n)return n.get(this.keySerializer(t))}has(e,t){return this.cacheMap.get(e)?.has(this.keySerializer(t))??!1}apply(e,t){let n=this.cacheMap.get(e.m)||new Map;n.set(this.keySerializer(e.a),t),this.cacheMap.set(e.m,n)}validate(e){return this.options.functions.includes(e)}clear(e){e?this.cacheMap.delete(e):this.cacheMap.clear()}},ce=class{context;definitions=new Map;functions;_onChanged=[];constructor(e){this.context=e;let t=this.definitions,n=this;this.functions=new Proxy({},{get(e,r){let i=t.get(r);if(i)return oe(i,n.context)},has(e,n){return t.has(n)},getOwnPropertyDescriptor(e,n){return{value:t.get(n)?.handler,configurable:!0,enumerable:!0}},ownKeys(){return Array.from(t.keys())}})}register(e,t=!1){if(this.definitions.has(e.name)&&!t)throw S.DF0021({name:e.name});le(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}update(e,t=!1){if(!this.definitions.has(e.name)&&!t)throw S.DF0022({name:e.name});le(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}onChanged(e){return this._onChanged.push(e),()=>{let t=this._onChanged.indexOf(e);t!==-1&&this._onChanged.splice(t,1)}}async getHandler(e){return await oe(this.definitions.get(e),this.context)}getSchema(e){let t=this.definitions.get(e);if(!t)throw S.DF0023({name:String(e)});return{args:t.args,returns:t.returns}}has(e){return this.definitions.has(e)}get(e){return this.definitions.get(e)}list(){return Array.from(this.definitions.keys())}};function le(e){if(e.agent&&e.jsonSerializable!==!0)throw S.DF0019({name:e.name})}function ue(e,t=``){return JSON.stringify(e,function(e,n){let r=this,i=r==null?n:r[e];if(i===void 0){if(Array.isArray(r))throw C(t,`undefined`,r,e);return n}if(i===null)return n;if(typeof i==`bigint`)throw C(t,`BigInt`,r,e);if(typeof i==`object`){if(i instanceof Map)throw C(t,`Map`,r,e);if(i instanceof Set)throw C(t,`Set`,r,e);if(i instanceof Date)throw C(t,`Date`,r,e);if(Array.isArray(i))return n;let a=Object.getPrototypeOf(i);if(a!==null&&a!==Object.prototype)throw C(t,i.constructor?.name??`class instance`,r,e)}return n})}function C(e,t,n,r){let i=de(n,r);return S.DF0020({name:e||`<anonymous>`,type:t,path:i})}function de(e,t){return Array.isArray(e)?`[${t}]`:t===``?`<root>`:t}function fe(){let e={};function t(t,...n){let r=e[t]||[];for(let e=0,t=r.length;e<t;e++){let t=r[e];t&&t(...n)}}function n(n,...r){t(n,...r),delete e[n]}function r(t,n){return(e[t]||=[]).push(n),()=>{e[t]=e[t]?.filter(e=>n!==e)}}function i(e,t){let n=r(e,((...e)=>(n(),t(...e))));return n}return{_listeners:e,emit:t,emitOnce:n,on:r,once:i}}String.fromCharCode;var pe=/^[\s\w\0+.-]{2,}:([/\\]{1,2})/,me=/^[\s\w\0+.-]{2,}:([/\\]{2})?/,he=/^([/\\]\s*){2,}[^/\\]/,ge=/\/$|\/\?|\/#/,_e=/^\.?\//;function ve(e,t={}){return typeof t==`boolean`&&(t={acceptRelative:t}),t.strict?pe.test(e):me.test(e)||(t.acceptRelative?he.test(e):!1)}function ye(e=``,t){return t?ge.test(e):e.endsWith(`/`)}function be(e=``,t){if(!t)return(ye(e)?e.slice(0,-1):e)||`/`;if(!ye(e,!0))return e||`/`;let n=e,r=``,i=e.indexOf(`#`);i!==-1&&(n=e.slice(0,i),r=e.slice(i));let[a,...o]=n.split(`?`);return((a.endsWith(`/`)?a.slice(0,-1):a)||`/`)+(o.length>0?`?${o.join(`?`)}`:``)+r}function xe(e=``,t){if(!t)return e.endsWith(`/`)?e:e+`/`;if(ye(e,!0))return e||`/`;let n=e,r=``,i=e.indexOf(`#`);if(i!==-1&&(n=e.slice(0,i),r=e.slice(i),!n))return r;let[a,...o]=n.split(`?`);return a+`/`+(o.length>0?`?${o.join(`?`)}`:``)+r}function Se(e,t){if(Ce(t)||ve(e))return e;let n=be(t);if(e.startsWith(n)){let t=e[n.length];if(!t||t===`/`||t===`?`)return e}return Te(n,e)}function Ce(e){return!e||e===`/`}function we(e){return e&&e!==`/`}function Te(e,...t){let n=e||``;for(let e of t.filter(e=>we(e)))if(n){let t=e.replace(_e,``);n=xe(n)+t}else n=e;return n}function Ee(e,t){let n=e.match(me);return n||=e.match(/^\/{2,}/),n?t+e.slice(n[0].length):t+e}function De(e=n){try{return new URLSearchParams(globalThis.location?.search).get(e)||void 0}catch{return}}function Oe(e){try{let t=new URL(globalThis.location.href);if(!t.searchParams.has(e))return;t.searchParams.delete(e),globalThis.history?.replaceState(globalThis.history.state,``,t.href)}catch{}}function ke(e=n){let t=De(e);return t&&Oe(e),t}async function Ae(e,t={}){let n=ke(t.param??`devframe_otp`);return n?e.isTrusted?!0:e.requestTrustWithCode(n):!1}var je=Symbol.for(`immer-nothing`),Me=Symbol.for(`immer-draftable`),w=Symbol.for(`immer-state`);function T(e,...t){throw Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var E=Object,D=E.getPrototypeOf,Ne=`constructor`,Pe=`prototype`,Fe=`configurable`,Ie=`enumerable`,Le=`writable`,Re=`value`,O=e=>!!e&&!!e[w];function k(e){return e?Ve(e)||Ge(e)||!!e[Me]||!!e[Ne]?.[Me]||Ke(e)||qe(e):!1}var ze=E[Pe][Ne].toString(),Be=new WeakMap;function Ve(e){if(!e||!N(e))return!1;let t=D(e);if(t===null||t===E[Pe])return!0;let n=E.hasOwnProperty.call(t,Ne)&&t[Ne];if(n===Object)return!0;if(!P(n))return!1;let r=Be.get(n);return r===void 0&&(r=Function.toString.call(n),Be.set(n,r)),r===ze}function He(e,t,n=!0){A(e)===0?(n?Reflect.ownKeys(e):E.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function A(e){let t=e[w];return t?t.type_:Ge(e)?1:Ke(e)?2:qe(e)?3:0}var j=(e,t,n=A(e))=>n===2?e.has(t):E[Pe].hasOwnProperty.call(e,t),M=(e,t,n=A(e))=>n===2?e.get(t):e[t],Ue=(e,t,n,r=A(e))=>{r===2?e.set(t,n):r===3?e.add(n):e[t]=n};function We(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}var Ge=Array.isArray,Ke=e=>e instanceof Map,qe=e=>e instanceof Set,N=e=>typeof e==`object`,P=e=>typeof e==`function`,Je=e=>typeof e==`boolean`;function Ye(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var Xe=e=>N(e)?e?.[w]:null,F=e=>e.copy_||e.base_,Ze=e=>e.modified_?e.copy_:e.base_;function Qe(e,t){if(Ke(e))return new Map(e);if(qe(e))return new Set(e);if(Ge(e))return Array[Pe].slice.call(e);let n=Ve(e);if(t===!0||t===`class_only`&&!n){let t=E.getOwnPropertyDescriptors(e);delete t[w];let n=Reflect.ownKeys(t);for(let r=0;r<n.length;r++){let i=n[r],a=t[i];a[Le]===!1&&(a[Le]=!0,a[Fe]=!0),(a.get||a.set)&&(t[i]={[Fe]:!0,[Le]:!0,[Ie]:a[Ie],[Re]:e[i]})}return E.create(D(e),t)}else{let t=D(e);if(t!==null&&n)return{...e};let r=E.create(t);return E.assign(r,e)}}function $e(e,t=!1){return nt(e)||O(e)||!k(e)?e:(A(e)>1&&E.defineProperties(e,{set:tt,add:tt,clear:tt,delete:tt}),E.freeze(e),t&&He(e,(e,t)=>{$e(t,!0)},!1),e)}function et(){T(2)}var tt={[Re]:et};function nt(e){return e===null||!N(e)?!0:E.isFrozen(e)}var rt=`MapSet`,it=`Patches`,at=`ArrayMethods`,ot={};function I(e){let t=ot[e];return t||T(0,e),t}var st=e=>!!ot[e];function ct(e,t){ot[e]||(ot[e]=t)}var lt,ut=()=>lt,dt=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:st(rt)?I(rt):void 0,arrayMethodsPlugin_:st(at)?I(at):void 0});function ft(e,t){t&&(e.patchPlugin_=I(it),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function pt(e){mt(e),e.drafts_.forEach(gt),e.drafts_=null}function mt(e){e===lt&&(lt=e.parent_)}var ht=e=>lt=dt(lt,e);function gt(e){let t=e[w];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function _t(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];if(e!==void 0&&e!==n){n[w].modified_&&(pt(t),T(4)),k(e)&&(e=vt(t,e));let{patchPlugin_:r}=t;r&&r.generateReplacementPatches_(n[w].base_,e,t)}else e=vt(t,n);return yt(t,e,!0),pt(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===je?void 0:e}function vt(e,t){if(nt(t))return t;let n=t[w];if(!n)return Dt(t,e.handledSet_,e);if(!xt(n,e))return t;if(!n.modified_)return n.base_;if(!n.finalized_){let{callbacks_:t}=n;if(t)for(;t.length>0;)t.pop()(e);Tt(n,e)}return n.copy_}function yt(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&$e(t,n)}function bt(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var xt=(e,t)=>e.scope_===t,St=[];function Ct(e,t,n,r){let i=F(e),a=e.type_;if(r!==void 0&&M(i,r,a)===t){Ue(i,r,n,a);return}if(!e.draftLocations_){let t=e.draftLocations_=new Map;He(i,(e,n)=>{if(O(n)){let r=t.get(n)||[];r.push(e),t.set(n,r)}})}let o=e.draftLocations_.get(t)??St;for(let e of o)Ue(i,e,n,a)}function wt(e,t,n){e.callbacks_.push(function(r){let i=t;if(!i||!xt(i,r))return;r.mapSetPlugin_?.fixSetContents(i);let a=Ze(i);Ct(e,i.draft_??i,a,n),Tt(i,r)})}function Tt(e,t){if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){let{patchPlugin_:n}=t;if(n){let r=n.getPath(e);r&&n.generatePatches_(e,r,t)}bt(e)}}function Et(e,t,n){let{scope_:r}=e;if(O(n)){let i=n[w];xt(i,r)&&i.callbacks_.push(function(){Ft(e),Ct(e,n,Ze(i),t)})}else k(n)&&e.callbacks_.push(function(){let i=F(e);e.type_===3?i.has(n)&&Dt(n,r.handledSet_,r):M(i,t,e.type_)===n&&r.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&Dt(M(e.copy_,t,e.type_),r.handledSet_,r)})}function Dt(e,t,n){return!n.immer_.autoFreeze_&&n.unfinalizedDrafts_<1||O(e)||t.has(e)||!k(e)||nt(e)?e:(t.add(e),He(e,(r,i)=>{if(O(i)){let t=i[w];xt(t,n)&&(Ue(e,r,Ze(t),e.type_),bt(t))}else k(i)&&Dt(i,t,n)}),e)}function Ot(e,t){let n=Ge(e),r={type_:+!!n,scope_:t?t.scope_:ut(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0},i=r,a=kt;n&&(i=[r],a=At);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,[s,r]}var kt={get(e,t){if(t===w)return e;if(t===`constructor`||t===`__proto__`){let n=F(e)[t];return new Proxy(n||{},{get:(e,t)=>t===`__proto__`||t===`prototype`?Object.freeze(Object.create(null)):Reflect.get(e,t),set:()=>!0,apply:(e,t,n)=>Reflect.apply(e,t,n)})}let n=e.scope_.arrayMethodsPlugin_,r=e.type_===1&&typeof t==`string`;if(r&&n?.isArrayOperationMethod(t))return n.createMethodInterceptor(e,t);let i=F(e);if(!j(i,t,e.type_))return Mt(e,i,t);let a=i[t];if(e.finalized_||!k(a)||r&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&Ye(t))return a;if(a===jt(e.base_,t)){Ft(e);let n=e.type_===1?+t:t,r=Lt(e.scope_,a,e,n);return e.copy_[n]=r}return a},has(e,t){return t===`constructor`||t===`__proto__`||t===`prototype`?!1:t in F(e)},ownKeys(e){return Reflect.ownKeys(F(e))},set(e,t,n){if(t===`constructor`||t===`__proto__`||t===`prototype`)return!0;let r=Nt(F(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=jt(F(e),t),i=r?.[w];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_.set(t,!1),!0;if(We(n,r)&&(n!==void 0||j(e.base_,t,e.type_)))return!0;Ft(e),Pt(e)}return e.copy_[t]===n&&(n!==void 0||j(e.copy_,t,e.type_))||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_.set(t,!0),Et(e,t,n),!0)},deleteProperty(e,t){return Ft(e),jt(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),Pt(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=F(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{[Le]:!0,[Fe]:e.type_!==1||t!==`length`,[Ie]:r[Ie],[Re]:n[t]}},defineProperty(){T(11)},getPrototypeOf(e){return D(e.base_)},setPrototypeOf(){T(12)}},At={};for(let e in kt){let t=kt[e];At[e]=function(){let e=arguments;return e[0]=e[0][0],t.apply(this,e)}}At.deleteProperty=function(e,t){return At.set.call(this,e,t,void 0)},At.set=function(e,t,n){return kt.set.call(this,e[0],t,n,e[0])};function jt(e,t){let n=e[w];return(n?F(n):e)[t]}function Mt(e,t,n){let r=Nt(t,n);return r?Re in r?r[Re]:r.get?.call(e.draft_):void 0}function Nt(e,t){if(!(t in e))return;let n=D(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=D(n)}}function Pt(e){e.modified_||(e.modified_=!0,e.parent_&&Pt(e.parent_))}function Ft(e){e.copy_||=(e.assigned_=new Map,Qe(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var It=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,n)=>{if(P(e)&&!P(t)){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}P(t)||T(6),n!==void 0&&!P(n)&&T(7);let r;if(k(e)){let i=ht(this),a=Lt(i,e,void 0),o=!0;try{r=t(a),o=!1}finally{o?pt(i):mt(i)}return ft(i,n),_t(r,i)}else if(!e||!N(e)){if(r=t(e),r===void 0&&(r=e),r===je&&(r=void 0),this.autoFreeze_&&$e(r,!0),n){let t=[],i=[];I(it).generateReplacementPatches_(e,r,{patches_:t,inversePatches_:i}),n(t,i)}return r}else T(1,e)},this.produceWithPatches=(e,t)=>{if(P(e))return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},Je(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),Je(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),Je(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){k(e)||T(8),O(e)&&(e=Rt(e));let t=ht(this),n=Lt(t,e,void 0);return n[w].isManual_=!0,mt(t),n}finishDraft(e,t){let n=e&&e[w];(!n||!n.isManual_)&&T(9);let{scope_:r}=n;return ft(r,t),_t(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=I(it).applyPatches_;return O(e)?r(e,t):this.produce(e,e=>r(e,t))}};function Lt(e,t,n,r){let[i,a]=Ke(t)?I(rt).proxyMap_(t,n):qe(t)?I(rt).proxySet_(t,n):Ot(t,n);return(n?.scope_??ut()).drafts_.push(i),a.callbacks_=n?.callbacks_??[],a.key_=r,n&&r!==void 0?wt(n,a,r):a.callbacks_.push(function(e){e.mapSetPlugin_?.fixSetContents(a);let{patchPlugin_:t}=e;a.modified_&&t&&t.generatePatches_(a,[],e)}),i}function Rt(e){return O(e)||T(10,e),zt(e)}function zt(e){if(!k(e)||nt(e))return e;let t=e[w],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=Qe(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=Qe(e,!0);return He(n,(e,t)=>{Ue(n,e,zt(t))},r),t&&(t.finalized_=!1),n}function Bt(){function e(n,r=[]){if(n.key_!==void 0){let e=n.parent_.copy_??n.parent_.base_,t=Xe(M(e,n.key_)),i=M(e,n.key_);if(i===void 0||i!==n.draft_&&i!==n.base_&&i!==n.copy_||t!=null&&t.base_!==n.base_)return null;let a=n.parent_.type_===3,o;if(a){let e=n.parent_;o=Array.from(e.drafts_.keys()).indexOf(n.key_)}else o=n.key_;if(!(a&&e.size>o||j(e,o)))return null;r.push(o)}if(n.parent_)return e(n.parent_,r);r.reverse();try{t(n.copy_,r)}catch{return null}return r}function t(e,t){let n=e;for(let e=0;e<t.length-1;e++){let r=t[e];if(n=M(n,r),!N(n)||n===null)throw Error(`Cannot resolve path at '${t.join(`/`)}'`)}return n}let n=`replace`,r=`remove`;function i(e,t,n){if(e.scope_.processedForPatches_.has(e))return;e.scope_.processedForPatches_.add(e);let{patches_:r,inversePatches_:i}=n;switch(e.type_){case 0:case 2:return o(e,t,r,i);case 1:return a(e,t,r,i);case 3:return s(e,t,r,i)}}function a(e,t,i,a){let{base_:o,assigned_:s}=e,c=e.copy_;c.length<o.length&&([o,c]=[c,o],[i,a]=[a,i]);let l=e.allIndicesReassigned_===!0;for(let e=0;e<o.length;e++){let r=c[e],u=o[e];if((l||s?.get(e.toString()))&&r!==u){let o=r?.[w];if(o&&o.modified_)continue;let s=t.concat([e]);i.push({op:n,path:s,value:d(r)}),a.push({op:n,path:s,value:d(u)})}}for(let e=o.length;e<c.length;e++){let n=t.concat([e]);i.push({op:`add`,path:n,value:d(c[e])})}for(let e=c.length-1;o.length<=e;--e){let n=t.concat([e]);a.push({op:r,path:n})}}function o(e,t,i,a){let{base_:o,copy_:s,type_:c}=e;He(e.assigned_,(e,l)=>{let u=M(o,e,c),f=M(s,e,c),p=l?j(o,e)?n:`add`:r;if(u===f&&p===n)return;let m=t.concat(e);i.push(p===r?{op:p,path:m}:{op:p,path:m,value:d(f)}),a.push(p===`add`?{op:r,path:m}:p===r?{op:`add`,path:m,value:d(u)}:{op:n,path:m,value:d(u)})})}function s(e,t,n,i){let{base_:a,copy_:o}=e,s=0;a.forEach(e=>{if(!o.has(e)){let a=t.concat([s]);n.push({op:r,path:a,value:e}),i.unshift({op:`add`,path:a,value:e})}s++}),s=0,o.forEach(e=>{if(!a.has(e)){let a=t.concat([s]);n.push({op:`add`,path:a,value:e}),i.unshift({op:r,path:a,value:e})}s++})}function c(e,t,r){let{patches_:i,inversePatches_:a}=r;i.push({op:n,path:[],value:t===je?void 0:t}),a.push({op:n,path:[],value:e})}function l(e,t){return t.forEach(t=>{let{path:i,op:a}=t,o=e;for(let e=0;e<i.length-1;e++){let t=A(o),n=i[e];typeof n!=`string`&&typeof n!=`number`&&(n=``+n),(t===0||t===1)&&(n===`__proto__`||n===Ne)&&T(19),P(o)&&n===Pe&&T(19),o=M(o,n),N(o)||T(18,i.join(`/`))}let s=A(o),c=u(t.value),l=i[i.length-1];switch(a){case n:switch(s){case 2:return o.set(l,c);case 3:T(16);default:return o[l]=c}case`add`:switch(s){case 1:return l===`-`?o.push(c):o.splice(l,0,c);case 2:return o.set(l,c);case 3:return o.add(c);default:return o[l]=c}case r:switch(s){case 1:return o.splice(l,1);case 2:return o.delete(l);case 3:return o.delete(t.value);default:return delete o[l]}default:T(17,a)}}),e}function u(e){if(!k(e))return e;if(Ge(e))return e.map(u);if(Ke(e))return new Map(Array.from(e.entries()).map(([e,t])=>[e,u(t)]));if(qe(e))return new Set(Array.from(e).map(u));let t=Object.create(D(e));for(let n in e)t[n]=u(e[n]);return j(e,Me)&&(t[Me]=e[Me]),t}function d(e){return O(e)?u(e):e}ct(it,{applyPatches_:l,generatePatches_:i,generateReplacementPatches_:c,getPath:e})}var Vt=new It,Ht=Vt.produce,Ut=Vt.produceWithPatches.bind(Vt),Wt=Vt.applyPatches.bind(Vt),Gt=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function Kt(e=21){let t=``,n=e;for(;n--;)t+=Gt[Math.random()*64|0];return t}var qt=1e3;function Jt(e,t){if(e.add(t),e.size>qt){let t=e.values().next().value;t!==void 0&&e.delete(t)}}function Yt(e){let{enablePatches:t=!1}=e,n=fe(),r=e.initialValue,i=new Set;return{on:n.on,value:()=>r,patch:(e,t=Kt())=>{i.has(t)||(Bt(),r=Wt(r,e),Jt(i,t),n.emit(`updated`,r,void 0,t))},mutate:(e,a=Kt())=>{if(!i.has(a))if(Jt(i,a),t){let[t,i]=Ut(r,e);r=t,n.emit(`updated`,r,i,a)}else r=Ht(r,e),n.emit(`updated`,r,void 0,a)},syncIds:i}}function Xt(e){let t=new Map,n=new Map,r=new Set,i=e.connectionMeta.backend===`static`;function a(e,t){let r=n.get(e);return r&&typeof r==`object`&&!Array.isArray(r)&&typeof t==`object`&&!Array.isArray(t)?{...r,...t}:t}e.client.register({name:`devframe:rpc:client-state:updated`,type:`event`,handler:(e,n,r)=>{let i=t.get(e);!i||i.syncIds.has(r)||i.mutate(()=>a(e,n),r)}}),e.client.register({name:`devframe:rpc:client-state:patch`,type:`event`,handler:(e,n,r)=>{let i=t.get(e);!i||i.syncIds.has(r)||i.patch(n,r)}});function o(t,n){let r=[];return r.push(n.on(`updated`,(n,r,a)=>{i||(r?e.callEvent(`devframe:rpc:server-state:patch`,t,r,a):e.callEvent(`devframe:rpc:server-state:set`,t,n,a))})),()=>{for(let e of r)e()}}return{keys:()=>Array.from(t.keys()),onKeyAdded(e){return r.add(e),()=>{r.delete(e)}},get:async(s,c)=>{if(c?.initialValue!==void 0&&n.set(s,c.initialValue),t.has(s))return t.get(s);let l=Yt({initialValue:c?.initialValue,enablePatches:!1});async function u(){if(i||e.callEvent(`devframe:rpc:server-state:subscribe`,s),c?.initialValue!==void 0){t.set(s,l);for(let e of r)e(s);return e.call(`devframe:rpc:server-state:get`,s).then(e=>{e!==void 0&&l.mutate(()=>a(s,e))}).catch(e=>{console.error(`Error getting server state`,e)}),o(s,l),l}else{let n=await e.call(`devframe:rpc:server-state:get`,s);l.mutate(()=>a(s,n)),t.set(s,l);for(let e of r)e(s);return o(s,l),l}}return new Promise(t=>{if(e.isTrusted)u().then(t);else{t(l);let n=!1;e.events.on(`rpc:is-trusted:updated`,e=>{e&&!n&&(n=!0,u())})}})}}}var Zt=typeof self==`object`?self:globalThis;function Qt(e,t){let n=(t,n)=>(e.set(n,t),t),r=i=>{if(e.has(i))return e.get(i);let[a,o]=t[i];switch(a){case 0:case-1:return n(o,i);case 1:{let e=n([],i);for(let t of o)e.push(r(t));return e}case 2:{let e=n({},i);for(let[t,n]of o)e[r(t)]=r(n);return e}case 3:return n(new Date(o),i);case 4:{let{source:e,flags:t}=o;return n(new RegExp(e,t),i)}case 5:{let e=n(new Map,i);for(let[t,n]of o)e.set(r(t),r(n));return e}case 6:{let e=n(new Set,i);for(let t of o)e.add(r(t));return e}case 7:{let{name:e,message:t}=o;return n(new Zt[e](t),i)}case 8:return n(BigInt(o),i);case`BigInt`:return n(Object(BigInt(o)),i);case`ArrayBuffer`:return n(new Uint8Array(o).buffer,o);case`DataView`:{let{buffer:e}=new Uint8Array(o);return n(new DataView(e),o)}}return n(new Zt[a](o),i)};return r}function $t(e){return Qt(new Map,e)(0)}var L=``,{toString:en}={},{keys:tn}=Object;function nn(e){let t=typeof e;if(t!==`object`||!e)return[0,t];let n=en.call(e).slice(8,-1);switch(n){case`Array`:return[1,L];case`Object`:return[2,L];case`Date`:return[3,L];case`RegExp`:return[4,L];case`Map`:return[5,L];case`Set`:return[6,L];case`DataView`:return[1,n]}return n.includes(`Array`)?[1,n]:n.includes(`Error`)?[7,n]:[2,n]}function rn([e,t]){return e===0&&(t===`function`||t===`symbol`)}function an(e,t,n,r){let i=(e,t)=>{let i=r.push(e)-1;return n.set(t,i),i},a=r=>{if(n.has(r))return n.get(r);let[o,s]=nn(r);switch(o){case 0:{let t=r;switch(s){case`bigint`:o=8,t=r.toString();break;case`function`:case`symbol`:if(e)throw TypeError(`unable to serialize ${s}`);t=null;break;case`undefined`:return i([-1],r)}return i([o,t],r)}case 1:{if(s){let e=r;return s===`DataView`?e=new Uint8Array(r.buffer):s===`ArrayBuffer`&&(e=new Uint8Array(r)),i([s,[...e]],r)}let e=[],t=i([o,e],r);for(let t of r)e.push(a(t));return t}case 2:{if(s)switch(s){case`BigInt`:return i([s,r.toString()],r);case`Boolean`:case`Number`:case`String`:return i([s,r.valueOf()],r)}if(t&&`toJSON`in r)return a(r.toJSON());let n=[],c=i([o,n],r);for(let t of tn(r))(e||!rn(nn(r[t])))&&n.push([a(t),a(r[t])]);return c}case 3:return i([o,r.toISOString()],r);case 4:{let{source:e,flags:t}=r;return i([o,{source:e,flags:t}],r)}case 5:{let t=[],n=i([o,t],r);for(let[n,i]of r)(e||!(rn(nn(n))||rn(nn(i))))&&t.push([a(n),a(i)]);return n}case 6:{let t=[],n=i([o,t],r);for(let n of r)(e||!rn(nn(n)))&&t.push(a(n));return n}}let{message:c}=r;return i([o,{name:s,message:c}],r)};return a}function on(e,t={}){let n=[];return an(!(t.json||t.lossy),!!t.json,new Map,n)(e),n}var{parse:sn,stringify:cn}=JSON,ln={json:!0,lossy:!0};function un(e){return $t(sn(e))}function dn(e){return cn(on(e,ln))}function fn(e){return $t(e)}function pn(e){return dn(e)}function mn(e){return un(e)}function hn(e){return typeof e==`object`&&!!e&&e.type===`static`&&typeof e.path==`string`}function gn(e){return typeof e==`object`&&!!e&&e.type===`query`&&typeof e.records==`object`&&e.records!==null}function _n(e){return typeof e==`object`&&!!e&&(`output`in e||`error`in e)}function vn(e){if(e.error)throw re(e.error);return e.output}function yn(e){return e.some(e=>e!=null)}function bn(e){return typeof e==`object`&&e&&`serialization`in e&&`data`in e?e.data:e}function xn(e,t){let n=new Map,r=new Map;function i(e,t){return t===`structured-clone`&&Array.isArray(e)?fn(e):e}function a(e,t){return i(bn(e),t)}async function o(e){n.has(e.path)||n.set(e.path,t(e.path).then(t=>a(t,e.serialization)));let r=await n.get(e.path);return _n(r)?vn(r):r}async function s(e,n){return r.has(e)||r.set(e,t(e).then(e=>a(e,n))),await r.get(e)}async function c(t,n){if(!(t in e))throw Error(`[devframe-rpc] Function "${t}" not found in dump store`);let r=e[t];if(hn(r)){if(yn(n))throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`);return await o(r)}if(gn(r)){let e=m(n),i=r.records[e];if(i)return vn(await s(i,r.serialization));if(r.fallback)return vn(await s(r.fallback,r.serialization));throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}if(!yn(n))return r;throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}return{call:async(e,t)=>await c(e,t),callOptional:async(t,n)=>{if(t in e)return await c(t,n)},callEvent:async(e,t)=>{}}}async function Sn(e){let n=xn(await e.fetchJsonFromBases(t),e.fetchJsonFromBases);return{isTrusted:!0,status:`connected`,connectionError:null,requestTrust:async()=>!0,requestTrustWithToken:async()=>!0,requestTrustWithCode:async()=>null,ensureTrusted:async()=>!0,call:(...e)=>n.call(e[0],e.slice(1)),callEvent:(...e)=>n.callEvent(e[0],e.slice(1)),callOptional:(...e)=>n.callOptional(e[0],e.slice(1))}}var Cn=256,wn=class extends Error{name=`StreamClosedError`};function Tn(e={}){let t=e.id??Kt(),n=Math.max(0,e.replayWindow??0),r=fe(),i=new AbortController,a=[],o=!1,s=0;function c(e){if(o)throw new wn(`Cannot write to a closed stream "${t}"`);s+=1,n>0&&(a.push({seq:s,chunk:e}),a.length>n&&a.splice(0,a.length-n)),r.emit(`chunk`,s,e)}function l(e){if(o)return;o=!0;let t=Dn(e);i.abort(e),r.emit(`end`,t)}function u(){o||(o=!0,i.signal.aborted||i.abort(`stream closed`),r.emit(`end`,void 0))}function d(e){o||i.signal.aborted||i.abort(e??`aborted`)}let f=new WritableStream({write(e){c(e)},close(){u()},abort(e){l(e)}});return{id:t,signal:i.signal,get closed(){return o},get lastSeq(){return s},write:c,error:l,close:u,abort:d,writable:f,events:r,buffer:a}}function En(e={}){let t=e.id??Kt(),n=Math.max(1,e.highWaterMark??Cn),r=[],i=0,a=!1,o=!1,s,c,l,u;function d(){if(c){if(r.length>0){let e=r.shift(),t=c;c=void 0,t.resolve({value:e,done:!1});return}if(a){let e=c;if(c=void 0,s){let t=Error(s.message);t.name=s.name,e.reject(t)}else e.resolve({value:void 0,done:!0})}}}function f(){if(l){for(;r.length>0;){let e=r.shift();try{l.enqueue(e)}catch{break}}if(a&&l){try{if(s){let e=Error(s.message);e.name=s.name,l.error(e)}else l.close()}catch{}l=void 0}}}function p(t,s){if(!(a||o)&&!(t<=i)){if(i=t,r.push(s),r.length>n){let t=r.length-n;r.splice(0,t),e.onOverflow?.(t)}d(),u&&f()}}function m(e){a||(a=!0,s=e,d(),u&&f())}function h(){o||a||(o=!0,e.onCancel?.(),m(void 0))}function g(){return u||(u=new ReadableStream({start(e){l=e,f()},cancel(){h()}}),u)}return{id:t,get cancelled(){return o},get done(){return a},get lastSeenSeq(){return i},get readable(){return g()},cancel:h,_push:p,_end:m,[Symbol.asyncIterator](){return{next(){if(r.length>0)return Promise.resolve({value:r.shift(),done:!1});if(a){if(s){let e=Error(s.message);return e.name=s.name,Promise.reject(e)}return Promise.resolve({value:void 0,done:!0})}return new Promise((e,t)=>{c={resolve:e,reject:t}})},return(){return h(),Promise.resolve({value:void 0,done:!0})}}}}}function Dn(e){if(e instanceof Error)return{name:e.name||`Error`,message:e.message};if(typeof e==`string`)return{name:`Error`,message:e};try{return{name:`Error`,message:JSON.stringify(e)}}catch{return{name:`Error`,message:String(e)}}}var On=``;function kn(e,t){return`${e}${On}${t}`}function An(e){let t=new Map,n=new Map;e.client.register({name:`devframe:streaming:chunk`,type:`event`,handler(e,n,r,i){t.get(kn(e,n))?._push(r,i)}}),e.client.register({name:`devframe:streaming:end`,type:`event`,handler(e,n,r){let i=kn(e,n),a=t.get(i);a&&(a._end(r),t.delete(i))}}),e.client.register({name:`devframe:streaming:upload-cancel`,type:`event`,handler(e,t){let r=kn(e,t),i=n.get(r);i&&(i.abort(`server cancelled upload`),n.delete(r))}}),e.events.on(`rpc:is-trusted:updated`,n=>{if(n)for(let[n,r]of t){if(r.cancelled||r.done)continue;let t=n.indexOf(On);if(t<0)continue;let i=n.slice(0,t),a=n.slice(t+1);e.callEvent(`devframe:streaming:subscribe`,i,a,{afterSeq:r.lastSeenSeq})}});function r(n,r,i={}){let a=kn(n,r),o=t.get(a);if(o)return o;let s=En({id:r,highWaterMark:i.highWaterMark,onOverflow(e){console.warn(`[devframe] DF0029: Stream "${n}#${r}" dropped ${e} chunk(s) after exceeding the client high-water mark.`)},onCancel(){e.callEvent(`devframe:streaming:cancel`,n,r),t.delete(a)}});if(t.set(a,s),e.isTrusted)e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:0});else{let i=e.events.on(`rpc:is-trusted:updated`,o=>{o&&(i(),t.has(a)&&!s.cancelled&&!s.done&&e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:s.lastSeenSeq}))})}return s}function i(t,r){let i=kn(t,r),a=n.get(i);if(a)return a;let o=Tn({id:r});return o.events.on(`chunk`,(n,i)=>{e.callEvent(`devframe:streaming:upload-chunk`,t,r,n,i)}),o.events.on(`end`,a=>{e.callEvent(`devframe:streaming:upload-end`,t,r,a),n.delete(i)}),n.set(i,o),o}return{subscribe:r,upload:i}}var jn=`q`,Mn=`s`;function Nn(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}var Pn=Math.random.bind(Math),Fn=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function In(e=21){let t=``,n=e;for(;n--;)t+=Fn[Pn()*64|0];return t}var Ln=6e4,Rn=e=>e,zn=Rn,{clearTimeout:Bn,setTimeout:Vn}=globalThis;function Hn(e,t){let{post:n,on:r,off:i=()=>{},eventNames:a=[],serialize:o=Rn,deserialize:s=zn,resolver:c,bind:l=`rpc`,timeout:u=Ln,proxify:d=!0}=t,f=!1,p=new Map,m,h;async function g(e,r,i,a){if(f)throw Error(`[birpc] rpc is closed, cannot call "${e}"`);let s={m:e,a:r,t:jn};a&&(s.o=!0);let c=async e=>n(o(e));if(i){await c(s);return}if(m)try{await m}finally{m=void 0}let{promise:l,resolve:d,reject:g}=Nn(),_=In();s.i=_;let v;async function y(n=s){return u>=0&&(v=Vn(()=>{try{if(t.onTimeoutError?.call(h,e,r)!==!0)throw Error(`[birpc] timeout on calling "${e}"`)}catch(e){g(e)}p.delete(_)},u),typeof v==`object`&&(v=v.unref?.())),p.set(_,{resolve:d,reject:g,timeoutId:v,method:e}),await c(n),l}try{t.onRequest?await t.onRequest.call(h,s,y,d):await y()}catch(e){if(t.onGeneralError?.call(h,e)!==!0)throw e;return}finally{Bn(v),p.delete(_)}return l}let _={$call:(e,...t)=>g(e,t,!1),$callOptional:(e,...t)=>g(e,t,!1,!0),$callEvent:(e,...t)=>g(e,t,!0),$callRaw:e=>g(e.method,e.args,e.event,e.optional),$rejectPendingCalls:y,get $closed(){return f},get $meta(){return t.meta},$close:v,$functions:e};h=d?new Proxy({},{get(t,n){if(Object.prototype.hasOwnProperty.call(_,n))return _[n];if(n===`then`&&!a.includes(`then`)&&!(`then`in e))return;let r=(...e)=>g(n,e,!0);if(a.includes(n))return r.asEvent=r,r;let i=(...e)=>g(n,e,!1);return i.asEvent=r,i}}):_;function v(e){f=!0,p.forEach(({reject:t,method:n})=>{let r=Error(`[birpc] rpc is closed, cannot call "${n}"`);if(e)return e.cause??=r,t(e);t(r)}),p.clear(),i(b)}function y(e){let t=Array.from(p.values()).map(({method:t,reject:n})=>e?e({method:t,reject:n}):n(Error(`[birpc]: rejected pending call "${t}".`)));return p.clear(),t}async function b(r,...i){let a;try{a=s(r)}catch(e){if(t.onGeneralError?.call(h,e)!==!0)throw e;return}if(a.t===jn){let{m:r,a:s,o:u}=a,d,f,p=await(c?c.call(h,r,e[r]):e[r]);if(u&&(p||=()=>void 0),!p)f=Error(`[birpc] function "${r}" not found`);else try{d=await p.apply(l===`rpc`?h:e,s)}catch(e){f=e}if(a.i){if(f&&t.onFunctionError&&t.onFunctionError.call(h,f,r,s)===!0)return;if(!f)try{await n(o({t:Mn,i:a.i,r:d}),...i);return}catch(e){if(f=e,t.onGeneralError?.call(h,e,r,s)!==!0)throw e}try{await n(o({t:Mn,i:a.i,e:f}),...i)}catch(e){if(t.onGeneralError?.call(h,e,r,s)!==!0)throw e}}}else{let{i:e,r:t,e:n}=a,r=p.get(e);r&&(Bn(r.timeoutId),n?r.reject(n):r.resolve(t)),p.delete(e)}}return m=r(b),h}function Un(e,t){let{channel:n,rpcOptions:r={}}=t;return Hn(e,{...n,timeout:-1,...r,proxify:!1})}function Wn(){}var Gn=new Map;function Kn(e){let t=e.url;e.authToken&&(t=`${t}?${r}=${encodeURIComponent(e.authToken)}`);let n=new WebSocket(t),{onConnected:i=Wn,onError:a=Wn,onDisconnected:o=Wn,definitions:s=Gn}=e;n.addEventListener(`open`,e=>{i(e)}),n.addEventListener(`error`,e=>{let t=e instanceof Error?e:Error(e.type);a(t)}),n.addEventListener(`close`,e=>{o(e)});let c=new Map;return{on:e=>{n.addEventListener(`message`,t=>{e(t.data)})},post:e=>{if(n.readyState===WebSocket.OPEN){n.send(e);return}if(n.readyState===WebSocket.CONNECTING){let t=()=>{i(),n.readyState===WebSocket.OPEN&&n.send(e)},r=()=>i();function i(){n.removeEventListener(`open`,t),n.removeEventListener(`close`,r)}n.addEventListener(`open`,t),n.addEventListener(`close`,r);return}a(Error(`Devframe WebSocket is not open; message dropped`))},serialize:e=>{let t;return e.t===`q`?t=e.m:(t=c.get(e.i),c.delete(e.i)),!(e.t===`s`&&`e`in e)&&t&&s.get(t)?.jsonSerializable===!0?ue(e,t??``):`s:${pn(e)}`},deserialize:e=>{let t=e.startsWith(`s:`)?mn(e.slice(2)):JSON.parse(e);return t.t===`q`&&t.i&&t.m&&c.set(t.i,t.m),t}}}function qn(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}var Jn=``,Yn=`?`,Xn=`major`,R=`model`,z=`name`,B=`type`,V=`vendor`,H=`version`,U=`architecture`,Zn=`console`,W=`mobile`,G=`tablet`,K=`smarttv`,q=`wearable`,Qn=`embedded`,$n=500,er=`Amazon`,tr=`Apple`,nr=`ASUS`,rr=`BlackBerry`,J=`Browser`,ir=`Chrome`,ar=`Edge`,or=`Firefox`,sr=`Google`,cr=`Huawei`,lr=`LG`,ur=`Microsoft`,dr=`Motorola`,fr=`Opera`,pr=`Samsung`,mr=`Sharp`,hr=`Sony`,gr=`Xiaomi`,_r=`Zebra`,vr=`Facebook`,yr=`Chromium OS`,br=`Mac OS`;function xr(e,t={}){let n={};for(let r of Object.keys(e)){let i=t[r];i&&i.length%2==0?n[r]=[...i,...e[r]]:n[r]=e[r]}return n}function Sr(e){let t={};for(let n=0;n<e.length;n++)t[e[n].toUpperCase()]=e[n];return t}function Cr(e){return e.toLowerCase()}function wr(e,t){return typeof e==`string`?Cr(t).includes(Cr(e)):!1}function Tr(e){return typeof e==`string`?e.replace(/[^\d.]/g,Jn).split(`.`)[0]:void 0}function Er(e,t){let n=e.replace(/^\s+/,Jn);return t===void 0?n:n.substring(0,t)}function Dr(e,t,n){let r=n??{};for(let n=0;n<t.length;n+=2){let i=t[n],a=t[n+1];for(let t=0;t<i.length;t++){let n=i[t];if(!n)break;let o=n.exec(e);if(o){for(let e=0;e<a.length;e++){let t=o[e+1],n=a[e];if(Array.isArray(n)){let e=n[0],i=n.length;if(i===2){let i=n[1];typeof i==`function`?r[e]=i(t,void 0,r):r[e]=i}else if(i===3){let i=n[1],a=n[2];typeof i==`function`&&!(`exec`in i)&&!(`test`in i)?r[e]=t?i(t,a,r):void 0:r[e]=t?t.replace(i,a):void 0}else i===4&&(r[e]=t?n[3](t.replace(n[1],n[2]),void 0,r):void 0)}else r[n]=t||void 0}return r}}}return r}function Or(e,t){for(let n in t){let r=t[n];if(Array.isArray(r)&&r.length>0){for(let t=0;t<r.length;t++)if(wr(r[t],e))return n===Yn?void 0:n}else if(wr(r,e))return n===Yn?void 0:n}return e}var kr={"1.0":`/8`,"1.2":`/1`,"1.3":`/3`,"2.0":`/412`,"2.0.2":`/416`,"2.0.3":`/417`,"2.0.4":`/419`,"?":`/`},Ar={ME:`4.90`,"NT 3.11":`NT3.51`,"NT 4.0":`NT4.0`,2e3:`NT 5.0`,XP:[`NT 5.1`,`NT 5.2`],Vista:`NT 6.0`,7:`NT 6.1`,8:`NT 6.2`,"8.1":`NT 6.3`,10:[`NT 6.4`,`NT 10.0`],RT:`ARM`},jr={browser:[[/\b(?:crmo|crios)\/([\w.]+)/i],[H,[z,`Chrome`]],[/edg(?:e|ios|a)?\/([\w.]+)/i],[H,[z,`Edge`]],[/(opera mini)\/([-\w.]+)/i,/(opera [mobileta]{3,6})\b.+version\/([-\w.]+)/i,/(opera)(?:.+version\/|[/ ]+)([\w.]+)/i],[z,H],[/opios[/ ]+([\w.]+)/i],[H,[z,`${fr} Mini`]],[/\bop(?:rg)?x\/([\w.]+)/i],[H,[z,`${fr} GX`]],[/\bopr\/([\w.]+)/i],[H,[z,fr]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[/ ]?([\w.]+)/i],[H,[z,`Baidu`]],[/(kindle)\/([\w.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[/ ]?([\w.]*)/i,/(avant|iemobile|slim)\s?(?:browser)?[/ ]?([\w.]*)/i,/(?:ms|\()(ie) ([\w.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w.]+)/i,/(heytap|ovi)browser\/([\d.]+)/i,/(weibo)__([\d.]+)/i],[z,H],[/\bddg\/([\w.]+)/i],[H,[z,`DuckDuckGo`]],[/(?:\buc? ?browser|juc.+ucweb)[/ ]?([\w.]+)/i],[H,[z,`UC${J}`]],[/microm.+\bqbcore\/([\w.]+)/i,/\bqbcore\/([\w.]+).+microm/i,/micromessenger\/([\w.]+)/i],[H,[z,`WeChat`]],[/konqueror\/([\w.]+)/i],[H,[z,`Konqueror`]],[/trident.+rv[: ]([\w.]{1,9})\b.+like gecko/i],[H,[z,`IE`]],[/ya(?:search)?browser\/([\w.]+)/i],[H,[z,`Yandex`]],[/slbrowser\/([\w.]+)/i],[H,[z,`Smart Lenovo ${J}`]],[/(avast|avg)\/([\w.]+)/i],[[z,/(.+)/,`$1 Secure ${J}`],H],[/\bfocus\/([\w.]+)/i],[H,[z,`${or} Focus`]],[/\bopt\/([\w.]+)/i],[H,[z,`${fr} Touch`]],[/coc_coc\w+\/([\w.]+)/i],[H,[z,`Coc Coc`]],[/dolfin\/([\w.]+)/i],[H,[z,`Dolphin`]],[/coast\/([\w.]+)/i],[H,[z,`${fr} Coast`]],[/miuibrowser\/([\w.]+)/i],[H,[z,`MIUI ${J}`]],[/fxios\/([-\w.]+)/i],[H,[z,or]],[/\bqihu|(qi?ho{0,2}|360)browser/i],[[z,`360 ${J}`]],[/(oculus|sailfish|huawei|vivo)browser\/([\w.]+)/i],[[z,/(.+)/,`$1 ${J}`],H],[/samsungbrowser\/([\w.]+)/i],[H,[z,`${pr} Internet`]],[/(comodo_dragon)\/([\w.]+)/i],[[z,/_/g,` `],H],[/metasr[/ ]?([\d.]+)/i],[H,[z,`Sogou Explorer`]],[/(sogou)mo\w+\/([\d.]+)/i],[[z,`Sogou Mobile`],H],[/(electron)\/([\w.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w.]+))/i,/m?(qqbrowser|2345Explorer)[/ ]?([\w.]+)/i],[z,H],[/(lbbrowser)/i,/\[(linkedin)app\]/i],[z],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w.]+);)/i],[[z,vr],H],[/(Klarna)\/([\w.]+)/i,/(kakao(?:talk|story))[/ ]([\w.]+)/i,/(naver)\(.*?(\d+\.[\w.]+).*\)/i,/safari (line)\/([\w.]+)/i,/\b(line)\/([\w.]+)\/iab/i,/(alipay)client\/([\w.]+)/i,/(twitter)(?:and| f.+e\/([\w.]+))/i,/(chromium|instagram|snapchat)[/ ]([-\w.]+)/i],[z,H],[/\bgsa\/([\w.]+) .*safari\//i],[H,[z,`GSA`]],[/musical_ly(?:.+app_?version\/|_)([\w.]+)/i],[H,[z,`TikTok`]],[/headlesschrome(?:\/([\w.]+)| )/i],[H,[z,`${ir} Headless`]],[/ wv\).+(chrome)\/([\w.]+)/i],[[z,`${ir} WebView`],H],[/droid.+ version\/([\w.]+)\b.+(?:mobile safari|safari)/i],[H,[z,`Android ${J}`]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w.]+)/i],[z,H],[/version\/([\w.,]+) .*mobile\/\w+ (safari)/i],[H,[z,`Mobile Safari`]],[/version\/([\w(.|,)]+) .*(mobile ?safari|safari)/i],[H,z],[/webkit.+?(mobile ?safari|safari)(\/[\w.]+)/i],[z,[H,Or,kr]],[/(webkit|khtml)\/([\w.]+)/i],[z,H],[/(navigator|netscape\d?)\/([-\w.]+)/i],[[z,`Netscape`],H],[/mobile vr; rv:([\w.]+)\).+firefox/i],[H,[z,`${or} Reality`]],[/ekiohf.+(flow)\/([\w.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[/ ]?([\w.+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w.]+)$/i,/(firefox)\/([\w.]+)/i,/(mozilla)\/([\w.]+) .+rv:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[. ]?browser)[-/ ]?v?([\w.]+)/i,/(links) \(([\w.]+)/i,/panasonic;(viera)/i],[z,H],[/(cobalt)\/([\w.]+)/i],[z,[H,/master.|lts./,``]]],cpu:[[/(amd|x(?:(?:86|64)[-_])?|wow|win)64[;)]/i],[[U,`amd64`]],[/(ia32(?=;))/i],[[U,Cr]],[/((?:i[346]|x)86)[;)]/i],[[U,`ia32`]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[U,`arm64`]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[U,`armhf`]],[/windows (ce|mobile); ppc;/i],[[U,`arm`]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[U,/ower/,Jn,Cr]],[/(sun4\w)[;)]/i],[[U,`sparc`]],[/(avr32|ia64(?=;)|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[U,Cr]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[R,[V,pr],[B,G]],[/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?\d+a?|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[R,[V,pr],[B,W]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[R,[V,tr],[B,W]],[/\((ipad);[-\w),; ]+apple/i,/applecoremedia\/[\w.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[R,[V,tr],[B,G]],[/(macintosh);/i],[R,[V,tr]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[R,[V,mr],[B,W]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[R,[V,cr],[B,G]],[/(?:huawei|honor)([-\w ]+)[;)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][0-359c][adn]?)\b(?!.+d\/s)/i],[R,[V,cr],[B,W]],[/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?[\w ]+)(?: bui|\))/i,/oid[^)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?\d?\w?[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[R,/_/g,` `],[V,gr],[B,W]],[/oid[^)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,/\b(mi[-_ ]?pad[\w ]+)(?: bui|\))/i],[[R,/_/g,` `],[V,gr],[B,G]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[R,[V,`OPPO`],[B,W]],[/\b(opd2\d{3}a?) bui/i],[R,[V,`OPPO`],[B,G]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[R,[V,`Vivo`],[B,W]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[R,[V,`Realme`],[B,W]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w() ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[R,[V,dr],[B,W]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[R,[V,dr],[B,G]],[/((?=lg)?[vl]k-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[R,[V,lr],[B,G]],[/(lm(?:-?f100[nv]?|-[\w.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?(\w+) bui/i],[R,[V,lr],[B,W]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab[\w ]+|yt[-\w]{6}|tb[-\w]{6})/i],[R,[V,`Lenovo`],[B,G]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w.]*)/i],[[R,/_/g,` `],[V,`Nokia`],[B,W]],[/(pixel c)\b/i],[R,[V,sr],[B,G]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[R,[V,sr],[B,W]],[/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]?\d\.))/i],[R,[V,hr],[B,W]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[R,`Xperia Tablet`],[V,hr],[B,G]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[R,[V,`OnePlus`],[B,W]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[R,[V,er],[B,G]],[/((?:sd|kf)[0349hijor-uw]+)( bui|\)).+silk\//i],[[R,/(.+)/g,`Fire Phone $1`],[V,er],[B,W]],[/(playbook);[-\w),; ]+(rim)/i],[R,V,[B,G]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[R,[V,rr],[B,W]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[R,[V,nr],[B,G]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[R,[V,nr],[B,W]],[/(nexus 9)/i],[R,[V,`HTC`],[B,G]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!;|\.)|sony(?!-bra))[-_ ]?([-\w]*)/i],[V,[R,/_/g,` `],[B,W]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[R,[V,`Acer`],[B,G]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[R,[V,`Meizu`],[B,W]],[/; ((?:power )?armor[\w ]{0,8})(?: bui|\))/i],[R,[V,`Ulefone`],[B,W]],[/(blackberry|benq|palm(?=-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[V,R,[B,W]],[/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[V,R,[B,G]],[/(surface duo)/i],[R,[V,ur],[B,G]],[/droid [\d.]+; (fp\du?)(?: b|\))/i],[R,[V,`Fairphone`],[B,W]],[/(u304aa)/i],[R,[V,`AT&T`],[B,W]],[/\bsie-(\w*)/i],[R,[V,`Siemens`],[B,W]],[/\b(rct\w+) b/i],[R,[V,`RCA`],[B,G]],[/\b(venue[\d ]{2,7}) b/i],[R,[V,`Dell`],[B,G]],[/\b(q(?:mv|ta)\w+) b/i],[R,[V,`Verizon`],[B,G]],[/\b(?:barnes[& ]+noble |bn[rt])([\w+ ]*) b/i],[R,[V,`Barnes & Noble`],[B,G]],[/\b(tm\d{3}\w+) b/i],[R,[V,`NuVision`],[B,G]],[/\b(k88) b/i],[R,[V,`ZTE`],[B,G]],[/\b(nx\d{3}j) b/i],[R,[V,`ZTE`],[B,W]],[/\b(gen\d{3}) b.+49h/i],[R,[V,`Swiss`],[B,W]],[/\b(zur\d{3}) b/i],[R,[V,`Swiss`],[B,G]],[/\b((zeki)?tb.*\b) b/i],[R,[V,`Zeki`],[B,G]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[V,`Dragon Touch`],R,[B,G]],[/\b(ns-?\w{0,9}) b/i],[R,[V,`Insignia`],[B,G]],[/\b((nxa|next)-?\w{0,9}) b/i],[R,[V,`NextBook`],[B,G]],[/\b(xtreme_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[V,`Voice`],R,[B,W]],[/\b(lvtel-)?(v1[12]) b/i],[[V,`LvTel`],R,[B,W]],[/\b(ph-1) /i],[R,[V,`Essential`],[B,W]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[R,[V,`Envizen`],[B,G]],[/\b(trio[-\w. ]+) b/i],[R,[V,`MachSpeed`],[B,G]],[/\btu_(1491) b/i],[R,[V,`Rotor`],[B,G]],[/(shield[\w ]+) b/i],[R,[V,`Nvidia`],[B,G]],[/(sprint) (\w+)/i],[V,R,[B,W]],[/(kin\.[onetw]{3})/i],[[R,/\./g,` `],[V,ur],[B,W]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[R,[V,_r],[B,G]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[R,[V,_r],[B,W]],[/smart-tv.+(samsung)/i],[V,[B,K]],[/hbbtv.+maple;(\d+)/i],[[R,/^/,`SmartTV`],[V,pr],[B,K]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[V,lr],[B,K]],[/(apple) ?tv/i],[V,[R,`${tr} TV`],[B,K]],[/crkey/i],[[R,`${ir}cast`],[V,sr],[B,K]],[/droid.+aft(\w+)( bui|\))/i],[R,[V,er],[B,K]],[/\(dtv[);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[R,[V,mr],[B,K]],[/(bravia[\w ]+)( bui|\))/i],[R,[V,hr],[B,K]],[/(mitv-\w{5}) bui/i],[R,[V,gr],[B,K]],[/Hbbtv.*(technisat) (.*);/i],[V,R,[B,K]],[/\b(roku)[\dx]*[)/]((?:dvp-)?[\d.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w+ ]*; *(\w[^;]*);([^;]*)/i],[[V,Er],[R,Er],[B,K]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[B,K]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[V,R,[B,Zn]],[/droid.+; (shield) bui/i],[R,[V,`Nvidia`],[B,Zn]],[/(playstation [345portablevi]+)/i],[R,[V,hr],[B,Zn]],[/\b(xbox(?: one)?(?!; xbox))[); ]/i],[R,[V,ur],[B,Zn]],[/((pebble))app/i],[V,R,[B,q]],[/(watch)(?: ?os[,/]|\d,\d\/)[\d.]+/i],[R,[V,tr],[B,q]],[/droid.+; (glass) \d/i],[R,[V,sr],[B,q]],[/droid.+; (wt63?0{2,3})\)/i],[R,[V,_r],[B,q]],[/(quest( \d| pro)?)/i],[R,[V,vr],[B,q]],[/(tesla)(?: qtcarbrowser|\/[-\w.]+)/i],[V,[B,Qn]],[/(aeobc)\b/i],[R,[V,er],[B,Qn]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[R,[B,W]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[R,[B,G]],[/\b((tablet|tab)[;/]|focus\/\d(?!.+mobile))/i],[[B,G]],[/(phone|mobile(?:[;/]| [ \w/.]*safari)|pda(?=.+windows ce))/i],[[B,W]],[/(android[-\w. ]{0,9});.+buil/i],[R,[V,`Generic`]]],engine:[[/windows.+ edge\/([\w.]+)/i],[H,[z,`${ar}HTML`]],[/webkit\/537\.36.+chrome\/(?!27)([\w.]+)/i],[H,[z,`Blink`]],[/(presto)\/([\w.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w.]+)/i,/ekioh(flow)\/([\w.]+)/i,/(khtml|tasman|links)[/ ]\(?([\w.]+)/i,/(icab)[/ ]([23]\.[\d.]+)/i,/\b(libweb)/i],[z,H],[/rv:([\w.]{1,9})\b.+(gecko)/i],[H,z]],os:[[/microsoft (windows) (vista|xp)/i],[z,H],[/(windows (?:phone(?: os)?|mobile))[/ ]?([.\w ]*)/i],[z,[H,Or,Ar]],[/windows nt 6\.2; (arm)/i,/windows[/ ]?([ntce\d. ]+\w)(?!.+xbox)/i,/(?:win(?=[39n])|win 9x )([nt\d.]+)/i],[[H,Or,Ar],[z,`Windows`]],[/ip[honead]{2,4}\b(?:.*os (\w+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[/ ])([\d.]+)/i,/cfnetwork\/.+darwin/i],[[H,/_/g,`.`],[z,`iOS`]],[/(mac os x) ?([\w. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[z,br],[H,/_/g,`.`]],[/droid ([\w.]+)\b.+(android[- ]x86|harmonyos)/i],[H,z],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-/ ]?([\w.]*)/i,/(blackberry)\w*\/([\w.]*)/i,/(tizen|kaios)[/ ]([\w.]+)/i,/\((series40);/i],[z,H],[/\(bb(10);/i],[H,[z,rr]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-/ ]?([\w.]*)/i],[H,[z,`Symbian`]],[/mozilla\/[\d.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w.]+)/i],[H,[z,`${or} OS`]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w.]+)/i],[H,[z,`webOS`]],[/watch(?: ?os[,/]|\d,\d\/)([\d.]+)/i],[H,[z,`watchOS`]],[/crkey\/([\d.]+)/i],[H,[z,`${ir}cast`]],[/(cros) \w+(?:\)| ([\w.]+)\b)/i],[[z,yr],H],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w.]*)/i,/(mint)[/() ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-/ ]?(?!chrom|package)([-\w.]*)/i,/(hurd|linux) ?([\w.]*)/i,/(gnu) ?([\w.]*)/i,/\b([-e-hrntopcs]{0,5}bsd|dragonfly)[/ ]?(?!amd|[ix346]{1,2}86)([\w.]*)/i,/(haiku) (\w+)/i],[z,H],[/(sunos) ?([\w.]*)/i],[[z,`Solaris`],H],[/((?:open)?solaris)[-/ ]?([\w.]*)/i,/(aix) ((\d)(?=[.) ])[\w.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w.]*)/i],[z,H]]};function Mr(e){return typeof e==`object`&&!!e}Object.freeze(Sr([z,H,Xn])),Object.freeze(Sr([U])),Object.freeze(Sr([R,V,B,Zn,W,K,G,q,Qn])),Object.freeze(Sr([z,H])),Object.freeze(Sr([z,H]));function Nr(){if(!(typeof window>`u`||!window.navigator))return window.navigator}function Pr(e){return e.length>$n?Er(e,$n):e}function Fr(e){if(typeof e==`string`)return{ua:Pr(e),isSelfNavigator:!1,navigator:void 0,userAgentData:void 0,regexMap:jr};let t=Nr(),n=Pr(t&&t.userAgent?t.userAgent:Jn);return{ua:n,isSelfNavigator:!!(t&&t.userAgent===n),navigator:t,userAgentData:t?.userAgentData,regexMap:jr}}function Ir(e,t){if(!t&&!Mr(e))return Fr(e);let n=Nr(),r=Mr(e)?void 0:e,i=Mr(e)?e:t,a=Pr(r||(n&&n.userAgent?n.userAgent:Jn)),o=n?.userAgentData;return{ua:a,isSelfNavigator:!!(n&&n.userAgent===a),navigator:n,userAgentData:o,regexMap:i?xr(jr,i):jr}}function Lr(e){let t={name:void 0,version:void 0,major:void 0};return Dr(e.ua,e.regexMap.browser,t),t.major=Tr(t.version),e.isSelfNavigator&&e.navigator?.brave&&typeof e.navigator.brave.isBrave==`function`&&(t.name=`Brave`),t}function Rr(e){let t={architecture:void 0};return Dr(e.ua,e.regexMap.cpu,t),t}function zr(e){let t={vendor:void 0,model:void 0,type:void 0};return Dr(e.ua,e.regexMap.device,t),e.isSelfNavigator&&!t.type&&e.userAgentData?.mobile&&(t.type=W),e.isSelfNavigator&&t.model===`Macintosh`&&e.navigator&&e.navigator.standalone!==void 0&&e.navigator.maxTouchPoints&&e.navigator.maxTouchPoints>2&&(t.model=`iPad`,t.type=G),t}function Br(e){let t={name:void 0,version:void 0};return Dr(e.ua,e.regexMap.engine,t),t}function Vr(e){let t={name:void 0,version:void 0};return Dr(e.ua,e.regexMap.os,t),e.isSelfNavigator&&!t.name&&e.userAgentData?.platform&&e.userAgentData.platform!==`Unknown`&&(t.name=e.userAgentData.platform.replace(/chrome os/i,yr).replace(/macos/i,br)),t}function Hr(e,t){let n,r,i,a,o,s,c=()=>n||=Ir(e,t);return{get ua(){return c().ua},get browser(){return r||=Lr(c()),r},get engine(){return i||=Br(c()),i},get os(){return a||=Vr(c()),a},get device(){return o||=zr(c()),o},get cpu(){return s||=Rr(c()),s}}}var Y=class extends Error{name=`DevframeConnectionError`;kind;constructor(e,t,n){super(t,n),this.kind=e}};function Ur(e,t,n){let r=n.protocol===`https:`?`wss:`:`ws:`,i=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})();if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${n.hostname}:${e.port}`,i=new URL(e.path??`/`,`${r}//${t}`);return i.protocol=r,i.href}let t=new URL(e.path??``,i);return t.protocol=r,t.href}if(typeof e==`number`)return`${r}//${n.hostname}:${e}`;let a=e??``;if(/^wss?:\/\//i.test(a))return a;if(/^https?:\/\//i.test(a))return Ee(a,/^https/i.test(a)?`wss://`:`ws://`);let o=new URL(a,i);return o.protocol=r,o.href}function Wr(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},wsOptions:s={},callTimeout:c=0}=e,l=!1,u=`connecting`,d=null,f=qn(),p=Ur(n.websocket,r??`./`,location);function m(e,t=null){if(t?d=t:e===`connected`&&(d=null),e===u)return;let n=u;u=e,i.emit(`connection:status`,e,n)}let h=new Set;function g(e){for(let t of[...h])t.reject(e)}function _(){return u===`disconnected`||u===`error`?new Y(`connection`,`[devframe] Not connected to the devframe server`,{cause:d??void 0}):u===`unauthorized`?new Y(`auth`,`[devframe] Not authorized by the devframe server`,{cause:d??void 0}):null}function v(e,t){return new Promise((n,r)=>{let a=!1,o,s={reject(e){a||(l(),i.emit(`rpc:error`,e,t),r(e))}};function l(){a=!0,h.delete(s),o&&clearTimeout(o)}h.add(s),c>0&&(o=setTimeout(()=>{s.reject(new Y(`timeout`,`[devframe] RPC call "${t}" timed out after ${c}ms`))},c)),e.then(e=>{a||(l(),n(e))},e=>{if(a)return;l();let n=e instanceof Error?e:Error(String(e));i.emit(`rpc:error`,n,t),r(n)})})}let y=new Map;for(let e of n.jsonSerializableMethods??[])y.set(e,{jsonSerializable:!0});let b=Un(a.functions,{channel:Kn({url:p,authToken:t,definitions:y,...s,onConnected(e){s.onConnected?.(e)},onError(e){m(`error`,e),i.emit(`connection:error`,e),g(new Y(`connection`,`[devframe] Connection to the devframe server failed`,{cause:e})),s.onError?.(e)},onDisconnected(e){u!==`error`&&m(`disconnected`),g(new Y(`connection`,`[devframe] Disconnected from the devframe server`,{cause:d??void 0})),s.onDisconnected?.(e)}}),rpcOptions:o});a.register({name:`devframe:auth:revoked`,type:`event`,handler:()=>{l=!1;let e=new Y(`auth`,`[devframe] The devframe server revoked this client's trust`);m(`unauthorized`,e),i.emit(`connection:error`,e),g(e),i.emit(`rpc:is-trusted:updated`,!1)}});let x=t;function ee(){let e=Hr(navigator.userAgent);return[e.browser.name,e.browser.version,`|`,e.os.name,e.os.version,e.device.type].filter(e=>e).join(` `)}async function te(e){x=e;let t=await b.$call(`anonymous:devframe:auth`,{authToken:e,ua:ee(),origin:location.origin});if(l=t.isTrusted,l)f.resolve(!0),m(`connected`);else{let e=new Y(`auth`,`[devframe] The devframe server refused this client's credentials`);m(`unauthorized`,e),i.emit(`connection:error`,e)}return i.emit(`rpc:is-trusted:updated`,l),t.isTrusted}async function ne(e){let t=(await b.$call(`anonymous:devframe:auth:exchange`,{code:e,ua:ee(),origin:location.origin}))?.authToken??null;return t&&(x=t,l=!0,f.resolve(!0),m(`connected`),i.emit(`rpc:is-trusted:updated`,!0)),t}async function S(){return l?!0:te(x??``)}async function re(e=6e4){if(l&&f.resolve(!0),e<=0)return f.promise;let t=()=>{};return await Promise.race([f.promise.then(t),new Promise((n,r)=>{let i=setTimeout(()=>{r(Error(`[devframe] Timeout waiting for rpc to be trusted`))},e);t=()=>clearTimeout(i)})]),l}return{get isTrusted(){return l},get status(){return u},get connectionError(){return d},requestTrust:S,requestTrustWithToken:te,requestTrustWithCode:ne,ensureTrusted:re,call:(...e)=>{let t=String(e[0]),n=_();return n?(i.emit(`rpc:error`,n,t),Promise.reject(n)):v(b.$call(...e),t)},callEvent:(...e)=>{let t=_();if(t){i.emit(`rpc:error`,t,String(e[0]));return}return b.$callEvent(...e)},callOptional:(...e)=>{let t=String(e[0]),n=_();return n?(i.emit(`rpc:error`,n,t),Promise.reject(n)):v(b.$callOptional(...e),t)}}}function Gr(e){return e.includes(`:`)}function X(e,t){return Gr(t)?t:`${e}:${t}`}function Kr(e,t,n){let r=`devframe:settings:${n}:${t}`,i;function a(){return i||=e.sharedState.get(r,{initialValue:{}}),i}return{async get(e){return(await a()).value()[e]},async set(e,t){(await a()).mutate(n=>{n[e]=t})},async delete(e){(await a()).mutate(t=>{delete t[e]})},async all(){return(await a()).value()},async onChange(e){return(await a()).on(`updated`,t=>e(t))}}}function qr(e,t){return{global:Kr(e,t,`global`),project:Kr(e,t,`project`)}}function Jr(e,t){return{namespace:t,base:e,rpc:{namespace:t,register(n){if(Gr(n.name))throw Error(`[devframe] Scoped client RPC registration for namespace "${t}" received an already-namespaced function name "${n.name}". Pass a bare name without a ":" separator.`);e.client.register({...n,name:`${t}:${n.name}`})},call:((n,...r)=>e.call(X(t,n),...r)),callEvent:((n,...r)=>e.callEvent(X(t,n),...r)),callOptional:((n,...r)=>e.callOptional(X(t,n),...r)),sharedState:((n,r)=>e.sharedState.get(X(t,n),r)),streaming:{subscribe:(n,r,i)=>e.streaming.subscribe(X(t,n),r,i),upload:(n,r)=>e.streaming.upload(X(t,n),r)}},settings:qr(e,t),scope:e.scope}}var Yr=`__DEVFRAME_CONNECTION_META__`,Z=`__DEVFRAME_CONNECTION_AUTH_TOKEN__`;function Xr(e){let t=[()=>e,()=>localStorage.getItem(Z)??void 0,()=>window?.[Z],()=>globalThis?.[Z],()=>parent.window?.[Z]];for(let e of t)try{let t=e();if(t)return t}catch{}}function Zr(e){try{localStorage.setItem(Z,e)}catch{}globalThis[Z]=e}function Qr(){let e=[()=>window?.[Yr],()=>globalThis?.[Yr],()=>parent.window?.[Yr]];for(let t of e)try{let e=t();if(e)return e}catch{}}async function $r(t={}){let{baseURL:n=`./`,rpcOptions:r={},cacheOptions:i=!1}=t,a=fe(),o=Array.isArray(n)?n:[n],s=t.connectionMeta||Qr(),c=o[0]??`./`,l=t.connectionMeta?void 0:s?.baseUrl;function u(){if(l)return l;let t=Se(e,c);try{return new URL(t,globalThis.location?.href).href}catch{return t}}if(!s){let t=[];for(let n of o)try{s=await fetch(Se(e,n)).then(e=>e.json()),c=n,globalThis[Yr]={...s,baseUrl:u()};break}catch(e){t.push(e)}if(!s)throw Error(`Failed to get connection meta from ${o.join(`, `)}`,{cause:t})}let d=new se({functions:[],...typeof t.cacheOptions==`object`?t.cacheOptions:{}}),f={rpc:void 0},p=Xr(t.authToken||s.authToken);p&&Zr(p);let m=new ce(f);async function h(e){let t=[c,...o.filter(e=>e!==c)].filter(e=>e!=null),n=[];for(let r of t)try{return await fetch(Se(e,r)).then(t=>{if(!t.ok)throw Error(`Failed to fetch ${e} from ${r}: ${t.status}`);return t.json()})}catch(e){n.push(e)}throw Error(`Failed to load ${e} from ${t.join(`, `)}`,{cause:n})}let g=s.backend===`static`?await Sn({fetchJsonFromBases:h}):Wr({authToken:p,connectionMeta:s,metaBaseUrl:u(),events:a,clientRpc:m,callTimeout:t.callTimeout,rpcOptions:{...r,async onRequest(e,t,n){if(await r.onRequest?.call(this,e,t,n),i&&d?.validate(e.m)){if(d.has(e.m,e.a))return n(d.cached(e.m,e.a));let r=await t(e);d.apply(e,r)}else await t(e)}},wsOptions:t.wsOptions}),_;try{_=new BroadcastChannel(`devframe-auth`)}catch{}let v={events:a,get isTrusted(){return g.isTrusted},get status(){return g.status},get connectionError(){return g.connectionError},connectionMeta:s,ensureTrusted:g.ensureTrusted,requestTrust:g.requestTrust,requestTrustWithToken:async e=>(Zr(e),g.requestTrustWithToken(e)),requestTrustWithCode:async e=>{let t=await g.requestTrustWithCode(e);if(!t)return!1;Zr(t);try{_?.postMessage({type:`auth-update`,authToken:t})}catch{}return!0},call:g.call,callEvent:g.callEvent,callOptional:g.callOptional,client:m,sharedState:void 0,streaming:void 0,cacheManager:d,scope:void 0};v.sharedState=Xt(v),v.streaming=An(v);let y=new Map;v.scope=(e=>{if(!e)return v;let t=y.get(e);return t||(t=Jr(v,e),y.set(e,t)),t}),f.rpc=v;function b(){try{return typeof window<`u`&&window.self===window.top}catch{return!1}}async function x(){if(!(t.simpleAuth===!1||!b())&&typeof globalThis.prompt==`function`)for(;!v.isTrusted;){let e=globalThis.prompt(`devframe: enter the authentication code shown in your terminal`);if(e==null)return;let t=e.trim();if(t&&await v.requestTrustWithCode(t))return}}async function ee(){let e=await g.requestTrust(),n=t.otpParam??`devframe_otp`,r=n?await Ae(v,{param:n}):!1;e||r||v.isTrusted||await x()}return ee(),_&&(_.onmessage=e=>{e.data?.type===`auth-update`&&e.data.authToken&&v.requestTrustWithToken(e.data.authToken)}),v}var ei=$r,ti=`devframes:plugin:code-server:state`;function Q(...e){return e.filter(Boolean).join(` `)}function ni({variant:e=`primary`,size:t=`md`,class:n}={}){let r={primary:`btn-primary`,secondary:`btn-action`,outline:`btn-action`,ghost:`inline-flex items-center justify-center gap-1.5 rounded px2 py1 op75 hover:op100 hover:bg-active transition disabled:pointer-events-none disabled:op30!`,destructive:`btn-action text-error border-error/30!`,link:`inline-flex items-center gap-1.5 color-active hover:underline underline-offset-2`},i=t===`sm`?e===`primary`?`text-sm px-2.5! py-1!`:`text-sm`:t===`lg`?`text-base px-4! py-2!`:``;return Q(r[e],i,n)}function ri(e){return Q(`color-active hover:underline underline-offset-2`,e)}function ii(e){return Q(`inline-block size-4 rounded-full border-2 border-current border-t-transparent animate-spin`,e)}var ai={connecting:{icon:`i-ph-plugs-connected-duotone`,title:`Connecting…`,body:`Establishing a connection to the devframe server.`},disconnected:{icon:`i-ph-plugs-duotone`,title:`Disconnected`,body:`Lost the connection to the devframe server. Reload once it is back up.`},unauthorized:{icon:`i-ph-lock-key-duotone`,title:`Not authorized`,body:`Reopen the link printed by your dev server, then reload.`},error:{icon:`i-ph-warning-octagon-duotone`,title:`Connection failed`,body:`Could not reach the devframe server.`}};function oi(e){let t=document.createElement(`div`);t.className=`absolute inset-0 flex flex-col items-center justify-center gap-4 bg-base color-base p-8 text-center z-nav`,t.hidden=!0,e.append(t);function n(e,n){if(e===`connected`)return t.hidden=!0,t.replaceChildren(),!1;let r=ai[e];t.replaceChildren();let i=document.createElement(`div`);i.className=Q(r.icon,`text-4xl color-active`),t.append(i);let a=document.createElement(`div`);a.className=`flex flex-col gap-1`;let o=document.createElement(`p`);o.className=`text-lg font-medium`,o.textContent=r.title;let s=document.createElement(`p`);if(s.className=`text-sm color-muted max-w-sm`,s.textContent=r.body,a.append(o,s),n&&e===`error`){let e=document.createElement(`code`);e.className=`mt-1 max-w-sm break-words font-mono text-xs color-faint`,e.textContent=n,a.append(e)}if(t.append(a),e!==`connecting`){let e=document.createElement(`button`);e.type=`button`,e.className=ni({variant:`primary`,size:`sm`}),e.textContent=`Reload`,e.addEventListener(`click`,()=>location.reload()),t.append(e)}return t.hidden=!1,!0}return{update:n,dispose(){t.remove()}}}function si(e){let t=e.ownerDocument?.defaultView;return t?.HTMLIFrameElement?e instanceof t.HTMLIFrameElement:typeof HTMLIFrameElement<`u`?e instanceof HTMLIFrameElement:`src`in e}function ci(e={}){let t=new Map,n=new Map,r=e.maxPanes??1/0,i,a,o=0,s,c=!1,l=0;function u(){let t=e.document??globalThis.document;if(!t)throw Error("[iframe-pane] No document available. Provide `options.document` or run in a DOM environment.");return t}function d(){return u().defaultView}function f(){if(e.container){let t=e.container,n=t.ownerDocument.defaultView?.getComputedStyle(t).position;return(!n||n===`static`)&&(t.style.position=`relative`),t}if(!i){let t=u();i=t.createElement(`div`),i.setAttribute(`data-iframe-panes`,``),Object.assign(i.style,{position:`fixed`,inset:`0`,pointerEvents:`none`}),e.zIndex!=null&&(i.style.zIndex=String(e.zIndex)),t.body.appendChild(i)}return i}function p(){return!a&&typeof ResizeObserver<`u`&&(a=new ResizeObserver(e=>{for(let t of e)n.get(t.target)?.forEach(e=>e.update())})),a}function m(){if(s!=null)return;let e=d();if(!e){h();return}s=e.requestAnimationFrame(()=>{s=void 0,h()})}function h(){for(let e of n.values())for(let t of e)t.update()}let g=()=>m();function _(){let e=d();e&&(n.size>0?(e.addEventListener(`scroll`,g,{capture:!0,passive:!0}),e.addEventListener(`resize`,g,{passive:!0})):(e.removeEventListener(`scroll`,g,{capture:!0}),e.removeEventListener(`resize`,g),s!=null&&(e.cancelAnimationFrame(s),s=void 0)))}function v(e,t){let r=n.get(t);r||(r=new Set,n.set(t,r),p()?.observe(t)),r.add(e),_()}function y(e,t){let r=n.get(t);r&&(r.delete(e),r.size===0&&(n.delete(t),a?.unobserve(t)),_())}function b(e){e.element.style.pointerEvents=o>0?`none`:e.stateStyle.pointerEvents}function x(e){if(t.size<=r)return;let n=[...t.values()].filter(t=>!t.isMounted&&t!==e).sort((e,t)=>e.lastActiveAt-t.lastActiveAt);for(let e of n){if(t.size<=r)break;e.dispose()}}class ee{id;element;styleDefault;styleActive;styleHidden;stateKeys;target=null;isVisible=!1;isDisposed=!1;lastActiveAt=0;constructor(t,n){this.id=t,this.styleDefault={...e.styleDefault,...n.style},this.styleActive={opacity:`1`,pointerEvents:`auto`,...e.styleActive,...n.styleActive},this.styleHidden={opacity:`0.001`,pointerEvents:`none`,...e.styleHidden,...n.styleHidden},this.stateKeys=[...new Set([...Object.keys(this.styleActive),...Object.keys(this.styleHidden)])];let r=u(),i=this.element=n.element??r.createElement(n.tagName??`iframe`);if(i.setAttribute(`data-iframe-pane`,t),Object.assign(i.style,{display:`block`,position:`absolute`,left:`0px`,top:`0px`,border:`0`},this.styleDefault),n.attrs)for(let[e,t]of Object.entries(n.attrs))i.setAttribute(e,t);this.applyState(),n.onCreated?.(i),n.src!=null&&si(i)&&(i.src=n.src),f().appendChild(i)}get iframe(){return si(this.element)?this.element:void 0}get isMounted(){return this.target!=null}get stateStyle(){return this.isVisible?this.styleActive:this.styleHidden}applyState(){let e=this.stateStyle,t={};for(let n of this.stateKeys)n in e||(t[n]=this.styleDefault[n]??``);Object.assign(this.element.style,t,e),o>0&&(this.element.style.pointerEvents=`none`)}touch(){this.lastActiveAt=++l}mount(e){this.assertNotDisposed(),this.target!==e&&(this.target&&y(this,this.target),this.target=e,v(this,e)),this.show()}unmount(){this.target&&=(y(this,this.target),null),this.hide()}show(){this.assertNotDisposed(),this.touch(),this.isVisible=!0,this.applyState(),this.update()}hide(){this.isDisposed||(this.isVisible=!1,this.applyState())}update(){if(this.isDisposed||!this.target||!this.isVisible)return;let e=this.target.getBoundingClientRect(),t=f().getBoundingClientRect();Object.assign(this.element.style,{left:`${e.left-t.left}px`,top:`${e.top-t.top}px`,width:`${e.width}px`,height:`${e.height}px`})}dispose(){this.isDisposed||(this.unmount(),this.isDisposed=!0,this.element.remove(),t.delete(this.id),e.onPaneDisposed?.(this))}assertNotDisposed(){if(this.isDisposed)throw Error(`[iframe-pane] Pane "${this.id}" has been disposed`)}}return{list(){return[...t.values()]},get(e){return t.get(e)},has(e){return t.has(e)},ensure:((n,r={})=>{if(c)throw Error(`[iframe-pane] Manager has been disposed`);let i=t.get(n);return i?i.touch():(i=new ee(n,r),i.touch(),t.set(n,i),e.onPaneCreated?.(i),x(i)),i}),get maxPanes(){return r},set maxPanes(e){r=e,x()},get isPointerLocked(){return o>0},lockPointerEvents(){o++,t.forEach(b);let e=!1;return()=>{e||(e=!0,o--,t.forEach(b))}},updateAll:h,get container(){return e.container??i},get isDisposed(){return c},dispose(){if(!c){c=!0;for(let e of[...t.values()])e.dispose();a?.disconnect(),a=void 0,_(),i?.remove(),i=void 0}}}}var li=`https://coder.com/docs/code-server/latest/install`,ui=`https://github.com/coder/code-server`,di=ci(),fi=0,pi=[{label:`Install script (Linux / macOS)`,command:`curl -fsSL https://code-server.dev/install.sh | sh`},{label:`npm`,command:`npm install -g code-server`},{label:`Homebrew`,command:`brew install code-server`}];function mi(e){let{detection:t,server:n,auth:r,busy:i}=e;return n.status===`running`&&n.port!=null?r?`running`:`starting`:n.status===`starting`||i&&n.status!==`error`?`starting`:t.checked?t.installed?`launch`:`not-installed`:`connecting`}function $(e,t,n){let r=document.createElement(e);return t&&(r.className=t),n!=null&&(r.textContent=n),r}function hi(e,t=``){return $(`span`,Q(e,`shrink-0`,t))}function gi(){let e=$(`p`,`flex items-center gap-1.5 mb-2.5 text-xs tracking-wider uppercase color-muted`);return e.append(hi(`i-ph-code-duotone`,`text-sm`),document.createTextNode(`code-server`)),e}function _i(e){return`${location.protocol}//${location.hostname}:${e}/`}function vi(e){document.cookie=`${e.cookieName}=${e.cookieValue}; path=/; SameSite=Lax`}function yi(e,t={}){let n=t.resolveEditorUrl??_i,r=t.applyAuth??vi,i=()=>t.actions?.launch?.(),a=()=>t.actions?.recheck?.(),o=$(`div`,`absolute inset-0 flex flex-col of-hidden bg-base color-base font-sans`);e.append(o);let s=`code-server-editor-${++fi}`,c=$(`div`,`dcs-frame flex-1 w-full`),l=null;function u(...e){di.get(s)?.unmount(),l=null;let t=$(`div`,`flex-1 flex items-center justify-center p-6`),n=$(`div`,`w-full max-w-[560px]`);n.append(...e),t.append(n),o.replaceChildren(t)}function d(){let e=$(`div`,`flex items-center gap-2.5`);e.append($(`div`,ii(`color-muted`)),$(`span`,`text-sm color-muted`,`Connecting to devframe…`)),u(e)}function f(e){let t=[];t.push(gi()),t.push($(`h1`,`mb-2 text-[1.35rem] font-semibold`,`code-server is not installed`)),t.push($(`p`,`mb-5 text-sm leading-relaxed color-muted`,`Install code-server (VS Code in the browser) to open the editor here. Pick whichever fits your setup, then re-check.`));let n=$(`div`,`flex flex-col gap-3 mb-5`);for(let{label:e,command:t}of pi){let r=$(`div`);r.append($(`label`,`block mb-1 text-xs color-muted`,e));let i=$(`div`,`flex items-center gap-2 px-2.5 py-2 rounded-md border border-base bg-secondary`);i.append($(`code`,`flex-1 of-x-auto whitespace-nowrap font-mono text-xs color-base`,t));let a=$(`button`,ni({variant:`outline`,size:`sm`,class:`shrink-0 text-[11px]`}),`Copy`);a.onclick=()=>{navigator.clipboard?.writeText(t).then(()=>{a.textContent=`Copied`,setTimeout(()=>{a.textContent=`Copy`},1200)}).catch(()=>{})},i.append(a),r.append(i),n.append(r)}t.push(n);let r=$(`div`,`flex flex-wrap items-center gap-2.5`),i=$(`button`,ni({variant:`primary`}));i.append(hi(`i-ph-arrows-clockwise`,Q(`size-4`,e&&`animate-spin`)),document.createTextNode(e?`Checking…`:`Re-check`)),i.disabled=e,i.onclick=a,r.append(i),r.append(g(`Installation docs`,li)),r.append(g(`GitHub`,ui)),t.push(r),u(...t)}function p(e){let{detection:t,server:n,busy:r}=e,a=[];a.push(gi()),a.push($(`h1`,`mb-2 text-[1.35rem] font-semibold`,`Launch the editor`)),a.push($(`p`,`mb-5 text-sm leading-relaxed color-muted`,`Start a code-server instance scoped to this workspace and open VS Code right here. The server runs with a generated password and the editor is signed in automatically.`)),n.status===`error`&&n.error&&a.push($(`div`,`mb-4 px-3 py-2.5 rounded-md border border-error/35 bg-error/10 text-error text-sm whitespace-pre-wrap break-words`,n.error));let o=$(`div`,`flex flex-wrap gap-x-4 gap-y-1.5 mb-5 text-xs color-muted`);if(t.version){let e=$(`span`);e.append(document.createTextNode(`version `),$(`code`,`font-mono color-base`,t.version)),o.append(e)}let s=$(`span`);s.append(document.createTextNode(`binary `),$(`code`,`font-mono color-base`,t.bin)),o.append(s),a.push(o);let c=$(`div`,`flex flex-wrap items-center gap-2.5`),l=$(`button`,ni({variant:`primary`}));r?l.append($(`span`,ii()),document.createTextNode(`Starting…`)):l.append(hi(`i-ph-rocket-launch-duotone`,`size-4`),document.createTextNode(`Launch code-server`)),l.disabled=r??!1,l.onclick=i,c.append(l),a.push(c),u(...a)}function m(){let e=$(`div`,`flex items-center gap-2.5`);e.append($(`div`,ii(`color-muted`)),$(`span`,`text-sm color-muted`,`Starting code-server…`)),u(e)}function h(e){let t=n(e.server.port);l!==t&&(e.auth&&r(e.auth),l=t);let i=di.ensure(s,{src:t,attrs:{allow:`clipboard-read; clipboard-write; cross-origin-isolated`},style:{border:`0`}});i.iframe.src!==t&&(i.iframe.src=t),o.firstElementChild!==c&&o.replaceChildren(c),i.mount(c)}function g(e,t){let n=$(`a`,ri(`inline-flex items-center gap-1 text-sm`));return n.append(document.createTextNode(e),hi(`i-ph-arrow-square-out`,`size-3.5`)),n.href=t,n.target=`_blank`,n.rel=`noreferrer`,n}function _(e){switch(mi(e)){case`running`:h(e);break;case`starting`:m();break;case`connecting`:d();break;case`not-installed`:f(e.busy??!1);break;case`launch`:p(e);break}}return{update:_,dispose(){di.get(s)?.dispose(),o.remove()}}}async function bi(e,t={}){let n=t.rpc??await ei();n.connectionMeta.backend===`websocket`&&await n.ensureTrusted(5e3).catch(()=>{}),e.style.position||(e.style.position=`relative`);let r=oi(e),i=()=>{r.update(n.status,n.connectionError?.message)};i();let a=n.events.on(`connection:status`,i),o={checked:!1,installed:!1,bin:`code-server`},s={status:`stopped`},c,l=!1,u=!1,d=yi(e,{actions:{launch:h,recheck:_}});function f(){u||d.update({detection:o,server:s,auth:c,busy:l})}function p(e){o=e.detection,s=e.server,e.auth&&(c=e.auth)}async function m(e,...t){try{return await n.call(e,...t)}catch(e){s={status:`error`,error:e instanceof Error?e.message:String(e)};return}}async function h(){if(l)return;l=!0,f();let e=await m(`devframes:plugin:code-server:start`,{});e&&p(e),l=!1,f()}async function g(){if(l)return;l=!0,f();let e=await m(`devframes:plugin:code-server:stop`);e&&p(e),c=void 0,l=!1,f()}async function _(){l||(l=!0,f(),await m(`devframes:plugin:code-server:detect`),l=!1,f())}f();let v=await m(`devframes:plugin:code-server:status`);v&&p(v),f();let y=await n.sharedState.get(ti,{initialValue:{detection:o,server:s}}),b=y.value();o=b.detection??o,s=b.server??s;let x=y.on(`updated`,e=>{if(o=e.detection??o,s=e.server??s,s.status===`running`&&!c){m(`devframes:plugin:code-server:status`).then(e=>{e?.auth&&(c=e.auth),f()});return}f()});return f(),{rpc:n,stop:g,dispose(){u=!0,x?.(),a?.(),r.dispose(),d.dispose()}}}var xi=document.getElementById(`app`);if(!xi)throw Error(`#app mount node missing from index.html`);bi(xi).catch(e=>{xi.textContent=`Failed to connect: ${e instanceof Error?e.message:String(e)}`});
@@ -1 +0,0 @@
1
- @supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--un-bg-opacity:100%;--un-border-opacity:100%;--un-leading:initial;--un-ring-opacity:100%;--un-text-opacity:100%}}@property --un-text-opacity{syntax:"<percentage>";inherits:false;initial-value:100%}@property --un-leading{syntax:"*";inherits:false}@property --un-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --un-border-opacity{syntax:"<percentage>";inherits:false;initial-value:100%}@property --un-bg-opacity{syntax:"<percentage>";inherits:false;initial-value:100%}@property --un-ring-opacity{syntax:"<percentage>";inherits:false;initial-value:100%}@property --un-inset-ring-color{syntax:"*";inherits:false}@property --un-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --un-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --un-inset-shadow-color{syntax:"*";inherits:false}@property --un-ring-color{syntax:"*";inherits:false}@property --un-ring-inset{syntax:"*";inherits:false}@property --un-ring-offset-color{syntax:"*";inherits:false}@property --un-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --un-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --un-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --un-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --un-shadow-color{syntax:"*";inherits:false}:root,:host{--radius-md:.375rem;--spacing:.25rem;--colors-white:#fff;--text-xs-fontSize:.75rem;--text-xs-lineHeight:1rem;--colors-neutral-800:oklch(26.9% 0 0);--colors-neutral-200:oklch(92.2% 0 0);--tracking-wider:.05em;--font-sans:DM Sans,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--fontWeight-semibold:600;--leading-relaxed:1.625;--font-mono:DM Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--colors-error-DEFAULT:#f63d68;--fontWeight-medium:500;--container-sm:24rem;--radius-DEFAULT:.25rem;--default-transition-timingFunction:cubic-bezier(.4, 0, .2, 1);--default-transition-duration:.15s;--radius-lg:.5rem;--radius-xl:.75rem;--colors-success-DEFAULT:#12b76a;--colors-neutral-400:oklch(70.8% 0 0);--text-sm-fontSize:.875rem;--text-sm-lineHeight:1.25rem;--text-4xl-fontSize:2.25rem;--text-4xl-lineHeight:2.5rem;--text-lg-fontSize:1.125rem;--text-lg-lineHeight:1.75rem;--text-base-fontSize:1rem;--text-base-lineHeight:1.5rem;--colors-primary-500:#578861;--leading-none:1;--colors-blue-400:oklch(70.7% .165 254.624);--colors-amber-400:oklch(82.8% .189 84.429);--colors-green-400:oklch(79.2% .209 151.711);--colors-red-400:oklch(70.4% .191 22.216);--colors-sky-400:oklch(74.6% .16 232.661);--colors-violet-400:oklch(70.2% .183 293.541);--colors-rose-400:oklch(71.2% .194 13.428);--colors-teal-400:oklch(77.7% .152 181.912);--colors-orange-400:oklch(75% .183 55.934);--colors-emerald-400:oklch(76.5% .177 163.223);--colors-primary-DEFAULT:#3a6a45;--colors-neutral-600:oklch(43.9% 0 0);--colors-primary-600:#40704b;--colors-neutral-500:oklch(55.6% 0 0);--colors-blue-700:oklch(48.8% .243 264.376);--colors-blue-600:oklch(54.6% .245 262.881);--colors-amber-700:oklch(55.5% .163 48.998);--colors-amber-600:oklch(66.6% .179 58.318);--colors-green-700:oklch(52.7% .154 150.069);--colors-green-600:oklch(62.7% .194 149.214);--colors-red-700:oklch(50.5% .213 27.518);--colors-red-600:oklch(57.7% .245 27.325);--colors-sky-700:oklch(50% .134 242.749);--colors-sky-600:oklch(58.8% .158 241.966);--colors-violet-700:oklch(49.1% .27 292.581);--colors-violet-600:oklch(54.1% .281 293.009);--colors-rose-700:oklch(51.4% .222 16.935);--colors-rose-600:oklch(58.6% .253 17.585);--colors-teal-700:oklch(51.1% .096 186.391);--colors-teal-600:oklch(60% .118 184.704);--colors-orange-700:oklch(55.3% .195 38.402);--colors-orange-600:oklch(64.6% .222 41.116);--colors-emerald-700:oklch(50.8% .118 165.612);--colors-emerald-600:oklch(59.6% .145 163.225);--colors-primary-300:#93c69d;--colors-blue-300:oklch(80.9% .105 251.813);--colors-amber-300:oklch(87.9% .169 91.605);--colors-green-300:oklch(87.1% .15 154.449);--colors-red-300:oklch(80.8% .114 19.571);--colors-sky-300:oklch(82.8% .111 230.318);--colors-violet-300:oklch(81.1% .111 293.571);--colors-rose-300:oklch(81% .117 11.638);--colors-teal-300:oklch(85.5% .138 181.071);--colors-orange-300:oklch(83.7% .128 66.29);--colors-emerald-300:oklch(84.5% .143 164.978);--colors-primary-400:#75a67e;--default-font-family:var(--font-sans);--default-monoFont-family:var(--font-mono)}*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-featureSettings,normal);font-variation-settings:var(--default-font-variationSettings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-monoFont-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-monoFont-featureSettings,normal);font-variation-settings:var(--default-monoFont-variationSettings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden~=until-found])){display:none!important}*,:before,:after{border-color:#8882}.i-ph-arrow-square-out{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' width='1.11em' height='1.11em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M224 104a8 8 0 0 1-16 0V59.32l-66.33 66.34a8 8 0 0 1-11.32-11.32L196.68 48H152a8 8 0 0 1 0-16h64a8 8 0 0 1 8 8Zm-40 24a8 8 0 0 0-8 8v72H48V80h72a8 8 0 0 0 0-16H48a16 16 0 0 0-16 16v128a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-72a8 8 0 0 0-8-8'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;color:inherit;background-color:currentColor;width:1.11em;height:1.11em;-webkit-mask-size:100% 100%;mask-size:100% 100%}.i-ph-arrows-clockwise{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' width='1.11em' height='1.11em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M224 48v48a8 8 0 0 1-8 8h-48a8 8 0 0 1 0-16h28.69l-14.63-14.63a79.56 79.56 0 0 0-56.13-23.43h-.45a79.52 79.52 0 0 0-55.89 22.77a8 8 0 0 1-11.18-11.44a96 96 0 0 1 135 .79L208 76.69V48a8 8 0 0 1 16 0m-37.59 135.29a80 80 0 0 1-112.47-.66L59.31 168H88a8 8 0 0 0 0-16H40a8 8 0 0 0-8 8v48a8 8 0 0 0 16 0v-28.69l14.63 14.63A95.43 95.43 0 0 0 130 222.06h.53a95.36 95.36 0 0 0 67.07-27.33a8 8 0 0 0-11.18-11.44Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;color:inherit;background-color:currentColor;width:1.11em;height:1.11em;-webkit-mask-size:100% 100%;mask-size:100% 100%}.i-ph-code-duotone{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' width='1.11em' height='1.11em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='currentColor'%3E%3Cpath d='m240 128l-48 40H64l-48-40l48-40h128Z' opacity='.2'/%3E%3Cpath d='M69.12 94.15L28.5 128l40.62 33.85a8 8 0 1 1-10.24 12.29l-48-40a8 8 0 0 1 0-12.29l48-40a8 8 0 0 1 10.24 12.3m176 27.7l-48-40a8 8 0 1 0-10.24 12.3L227.5 128l-40.62 33.85a8 8 0 1 0 10.24 12.29l48-40a8 8 0 0 0 0-12.29m-82.39-89.37a8 8 0 0 0-10.25 4.79l-64 176a8 8 0 0 0 4.79 10.26A8.1 8.1 0 0 0 96 224a8 8 0 0 0 7.52-5.27l64-176a8 8 0 0 0-4.79-10.25'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;color:inherit;background-color:currentColor;width:1.11em;height:1.11em;-webkit-mask-size:100% 100%;mask-size:100% 100%}.i-ph-lock-key-duotone{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' width='1.11em' height='1.11em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='currentColor'%3E%3Cpath d='M208 88H48a8 8 0 0 0-8 8v112a8 8 0 0 0 8 8h160a8 8 0 0 0 8-8V96a8 8 0 0 0-8-8m-80 72a20 20 0 1 1 20-20a20 20 0 0 1-20 20' opacity='.2'/%3E%3Cpath d='M208 80h-32V56a48 48 0 0 0-96 0v24H48a16 16 0 0 0-16 16v112a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16V96a16 16 0 0 0-16-16M96 56a32 32 0 0 1 64 0v24H96Zm112 152H48V96h160zm-80-96a28 28 0 0 0-8 54.83V184a8 8 0 0 0 16 0v-17.17a28 28 0 0 0-8-54.83m0 40a12 12 0 1 1 12-12a12 12 0 0 1-12 12'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;color:inherit;background-color:currentColor;width:1.11em;height:1.11em;-webkit-mask-size:100% 100%;mask-size:100% 100%}.i-ph-plugs-connected-duotone{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' width='1.11em' height='1.11em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='currentColor'%3E%3Cpath d='m185 127l-58 58a24 24 0 0 1-33.94 0L71 162.91A24 24 0 0 1 71 129l58-58a24 24 0 0 1 33.94 0L185 93.09a24 24 0 0 1 0 33.91' opacity='.2'/%3E%3Cpath d='M237.66 18.34a8 8 0 0 0-11.32 0l-52.4 52.41l-5.37-5.38a32.05 32.05 0 0 0-45.26 0L100 88.69l-6.34-6.35a8 8 0 0 0-11.32 11.32l6.35 6.34l-23.32 23.31a32 32 0 0 0 0 45.26l5.38 5.37l-52.41 52.4a8 8 0 0 0 11.32 11.32l52.4-52.41l5.37 5.38a32.06 32.06 0 0 0 45.26 0L156 167.31l6.34 6.35a8 8 0 0 0 11.32-11.32l-6.35-6.34l23.32-23.31a32 32 0 0 0 0-45.26l-5.38-5.37l52.41-52.4a8 8 0 0 0 0-11.32m-116.29 161a16 16 0 0 1-22.62 0l-22.06-22.09a16 16 0 0 1 0-22.62L100 111.31L144.69 156Zm57.94-57.94L156 144.69L111.31 100l23.32-23.31a16 16 0 0 1 22.62 0l22.06 22a16 16 0 0 1 0 22.63ZM88.57 35a8 8 0 0 1 14.86-6l8 20a8 8 0 0 1-14.86 6Zm-64 58A8 8 0 0 1 35 88.57l20 8a8 8 0 0 1-6 14.86l-20-8A8 8 0 0 1 24.57 93m206.86 70a8 8 0 0 1-10.4 4.46l-20-8a8 8 0 1 1 5.97-14.89l20 8a8 8 0 0 1 4.43 10.43m-64 58.06a8 8 0 0 1-14.86 5.94l-8-20a8 8 0 0 1 14.86-6Z'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;color:inherit;background-color:currentColor;width:1.11em;height:1.11em;-webkit-mask-size:100% 100%;mask-size:100% 100%}.i-ph-plugs-duotone{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' width='1.11em' height='1.11em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='currentColor'%3E%3Cpath d='m76 124l56 56l-29 29a24 24 0 0 1-33.94 0L47 186.91A24 24 0 0 1 47 153Zm133-54.91L186.91 47A24 24 0 0 0 153 47l-29 29l56 56l29-29a24 24 0 0 0 0-33.91' opacity='.2'/%3E%3Cpath d='M149.66 138.34a8 8 0 0 0-11.32 0L120 156.69L99.31 136l18.35-18.34a8 8 0 0 0-11.32-11.32L88 124.69l-18.34-18.35a8 8 0 0 0-11.32 11.32l6.35 6.34l-23.32 23.31a32 32 0 0 0 0 45.26l5.38 5.37l-28.41 28.4a8 8 0 0 0 11.32 11.32l28.4-28.41l5.37 5.38a32 32 0 0 0 45.26 0L132 191.31l6.34 6.35a8 8 0 0 0 11.32-11.32L131.31 168l18.35-18.34a8 8 0 0 0 0-11.32m-52.29 65a16 16 0 0 1-22.62 0l-22.06-22.09a16 16 0 0 1 0-22.62L76 135.31L120.69 180Zm140.29-185a8 8 0 0 0-11.32 0l-28.4 28.41l-5.37-5.38a32.05 32.05 0 0 0-45.26 0L124 64.69l-6.34-6.35a8 8 0 0 0-11.32 11.32l80 80a8 8 0 0 0 11.32-11.32l-6.35-6.34l23.32-23.31a32 32 0 0 0 0-45.26l-5.38-5.37l28.41-28.4a8 8 0 0 0 0-11.32m-34.35 79L180 120.69L135.31 76l23.32-23.31a16 16 0 0 1 22.62 0l22.06 22a16 16 0 0 1 0 22.68Z'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;color:inherit;background-color:currentColor;width:1.11em;height:1.11em;-webkit-mask-size:100% 100%;mask-size:100% 100%}.i-ph-rocket-launch-duotone{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' width='1.11em' height='1.11em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='currentColor'%3E%3Cpath d='M184 120v61.65a8 8 0 0 1-2.34 5.65l-34.35 34.35a8 8 0 0 1-13.57-4.53L128 176Zm-48-48H74.35a8 8 0 0 0-5.65 2.34l-34.35 34.35a8 8 0 0 0 4.53 13.57L80 128ZM40 216c37.65 0 50.69-19.69 54.56-28.18l-26.38-26.38C59.69 165.31 40 178.35 40 216' opacity='.2'/%3E%3Cpath d='M223.85 47.12a16 16 0 0 0-15-15c-12.58-.75-44.73.4-71.41 27.07L132.69 64H74.36A15.9 15.9 0 0 0 63 68.68L28.7 103a16 16 0 0 0 9.07 27.16l38.47 5.37l44.21 44.21l5.37 38.49a15.94 15.94 0 0 0 10.78 12.92a16.1 16.1 0 0 0 5.1.83a15.9 15.9 0 0 0 11.3-4.68l34.32-34.3a15.9 15.9 0 0 0 4.68-11.36v-58.33l4.77-4.77c26.68-26.68 27.83-58.83 27.08-71.42M74.36 80h42.33l-39.53 39.52L40 114.34Zm74.41-9.45a76.65 76.65 0 0 1 59.11-22.47a76.46 76.46 0 0 1-22.42 59.16L128 164.68L91.32 128ZM176 181.64L141.67 216l-5.19-37.17L176 139.31Zm-74.16 9.5C97.34 201 82.29 224 40 224a8 8 0 0 1-8-8c0-42.29 23-57.34 32.86-61.85a8 8 0 0 1 6.64 14.56c-6.43 2.93-20.62 12.36-23.12 38.91c26.55-2.5 36-16.69 38.91-23.12a8 8 0 1 1 14.56 6.64Z'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;color:inherit;background-color:currentColor;width:1.11em;height:1.11em;-webkit-mask-size:100% 100%;mask-size:100% 100%}.i-ph-warning-octagon-duotone{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' width='1.11em' height='1.11em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='currentColor'%3E%3Cpath d='M224 91.55v72.9a8 8 0 0 1-2.34 5.66l-51.55 51.55a8 8 0 0 1-5.66 2.34h-72.9a8 8 0 0 1-5.66-2.34l-51.55-51.55a8 8 0 0 1-2.34-5.66v-72.9a8 8 0 0 1 2.34-5.66l51.55-51.55A8 8 0 0 1 91.55 32h72.9a8 8 0 0 1 5.66 2.34l51.55 51.55a8 8 0 0 1 2.34 5.66' opacity='.2'/%3E%3Cpath d='M120 136V80a8 8 0 0 1 16 0v56a8 8 0 0 1-16 0m112-44.45v72.9a15.86 15.86 0 0 1-4.69 11.31l-51.55 51.55a15.86 15.86 0 0 1-11.31 4.69h-72.9a15.86 15.86 0 0 1-11.31-4.69l-51.55-51.55A15.86 15.86 0 0 1 24 164.45v-72.9a15.86 15.86 0 0 1 4.69-11.31l51.55-51.55A15.86 15.86 0 0 1 91.55 24h72.9a15.86 15.86 0 0 1 11.31 4.69l51.55 51.55A15.86 15.86 0 0 1 232 91.55m-16 0L164.45 40h-72.9L40 91.55v72.9L91.55 216h72.9L216 164.45ZM128 160a12 12 0 1 0 12 12a12 12 0 0 0-12-12'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;color:inherit;background-color:currentColor;width:1.11em;height:1.11em;-webkit-mask-size:100% 100%;mask-size:100% 100%}.badge{font-size:var(--text-xs-fontSize);line-height:var(--un-leading,var(--text-xs-lineHeight));--un-leading:var(--leading-none);line-height:var(--leading-none);--un-font-weight:var(--fontWeight-medium);font-weight:var(--fontWeight-medium);padding-inline:calc(var(--spacing) * 1.5);padding-block:calc(var(--spacing) * .5);border-radius:var(--radius-md);gap:calc(var(--spacing) * 1);align-items:center;display:inline-flex}.badge-active{font-size:var(--text-xs-fontSize);line-height:var(--un-leading,var(--text-xs-lineHeight));color:color-mix(in srgb, var(--colors-primary-600) var(--un-text-opacity), transparent);--un-leading:var(--leading-none);line-height:var(--leading-none);--un-font-weight:var(--fontWeight-medium);font-weight:var(--fontWeight-medium);padding-inline:calc(var(--spacing) * 1.5);padding-block:calc(var(--spacing) * .5);border-radius:var(--radius-md);background-color:color-mix(in srgb, var(--colors-primary-DEFAULT) 10%, transparent);gap:calc(var(--spacing) * 1);align-items:center;display:inline-flex}.badge-muted{font-size:var(--text-xs-fontSize);line-height:var(--un-leading,var(--text-xs-lineHeight));color:color-mix(in srgb, var(--colors-neutral-600) var(--un-text-opacity), transparent);--un-leading:var(--leading-none);line-height:var(--leading-none);--un-font-weight:var(--fontWeight-medium);font-weight:var(--fontWeight-medium);padding-inline:calc(var(--spacing) * 1.5);padding-block:calc(var(--spacing) * .5);border-radius:var(--radius-md);background-color:color-mix(in oklab, #8881 var(--un-bg-opacity), transparent);gap:calc(var(--spacing) * 1);align-items:center;display:inline-flex}.badge-color-amber{color:color-mix(in srgb, var(--colors-amber-700) var(--un-text-opacity), transparent);border-width:1px;border-color:color-mix(in srgb, var(--colors-amber-600) 15%, transparent);background-color:color-mix(in srgb, var(--colors-amber-400) 20%, transparent)}.dark .badge-color-amber{color:color-mix(in srgb, var(--colors-amber-300) var(--un-text-opacity), transparent);border-color:color-mix(in srgb, var(--colors-amber-300) 15%, transparent);background-color:color-mix(in srgb, var(--colors-amber-400) 10%, transparent)}.badge-color-blue{color:color-mix(in srgb, var(--colors-blue-700) var(--un-text-opacity), transparent);border-width:1px;border-color:color-mix(in srgb, var(--colors-blue-600) 15%, transparent);background-color:color-mix(in srgb, var(--colors-blue-400) 20%, transparent)}.dark .badge-color-blue{color:color-mix(in srgb, var(--colors-blue-300) var(--un-text-opacity), transparent);border-color:color-mix(in srgb, var(--colors-blue-300) 15%, transparent);background-color:color-mix(in srgb, var(--colors-blue-400) 10%, transparent)}.badge-color-emerald{color:color-mix(in srgb, var(--colors-emerald-700) var(--un-text-opacity), transparent);border-width:1px;border-color:color-mix(in srgb, var(--colors-emerald-600) 15%, transparent);background-color:color-mix(in srgb, var(--colors-emerald-400) 20%, transparent)}.dark .badge-color-emerald{color:color-mix(in srgb, var(--colors-emerald-300) var(--un-text-opacity), transparent);border-color:color-mix(in srgb, var(--colors-emerald-300) 15%, transparent);background-color:color-mix(in srgb, var(--colors-emerald-400) 10%, transparent)}.badge-color-green{color:color-mix(in srgb, var(--colors-green-700) var(--un-text-opacity), transparent);border-width:1px;border-color:color-mix(in srgb, var(--colors-green-600) 15%, transparent);background-color:color-mix(in srgb, var(--colors-green-400) 20%, transparent)}.dark .badge-color-green{color:color-mix(in srgb, var(--colors-green-300) var(--un-text-opacity), transparent);border-color:color-mix(in srgb, var(--colors-green-300) 15%, transparent);background-color:color-mix(in srgb, var(--colors-green-400) 10%, transparent)}.badge-color-orange{color:color-mix(in srgb, var(--colors-orange-700) var(--un-text-opacity), transparent);border-width:1px;border-color:color-mix(in srgb, var(--colors-orange-600) 15%, transparent);background-color:color-mix(in srgb, var(--colors-orange-400) 20%, transparent)}.dark .badge-color-orange{color:color-mix(in srgb, var(--colors-orange-300) var(--un-text-opacity), transparent);border-color:color-mix(in srgb, var(--colors-orange-300) 15%, transparent);background-color:color-mix(in srgb, var(--colors-orange-400) 10%, transparent)}.badge-color-red{color:color-mix(in srgb, var(--colors-red-700) var(--un-text-opacity), transparent);border-width:1px;border-color:color-mix(in srgb, var(--colors-red-600) 15%, transparent);background-color:color-mix(in srgb, var(--colors-red-400) 20%, transparent)}.dark .badge-color-red{color:color-mix(in srgb, var(--colors-red-300) var(--un-text-opacity), transparent);border-color:color-mix(in srgb, var(--colors-red-300) 15%, transparent);background-color:color-mix(in srgb, var(--colors-red-400) 10%, transparent)}.badge-color-rose{color:color-mix(in srgb, var(--colors-rose-700) var(--un-text-opacity), transparent);border-width:1px;border-color:color-mix(in srgb, var(--colors-rose-600) 15%, transparent);background-color:color-mix(in srgb, var(--colors-rose-400) 20%, transparent)}.dark .badge-color-rose{color:color-mix(in srgb, var(--colors-rose-300) var(--un-text-opacity), transparent);border-color:color-mix(in srgb, var(--colors-rose-300) 15%, transparent);background-color:color-mix(in srgb, var(--colors-rose-400) 10%, transparent)}.badge-color-sky{color:color-mix(in srgb, var(--colors-sky-700) var(--un-text-opacity), transparent);border-width:1px;border-color:color-mix(in srgb, var(--colors-sky-600) 15%, transparent);background-color:color-mix(in srgb, var(--colors-sky-400) 20%, transparent)}.dark .badge-color-sky{color:color-mix(in srgb, var(--colors-sky-300) var(--un-text-opacity), transparent);border-color:color-mix(in srgb, var(--colors-sky-300) 15%, transparent);background-color:color-mix(in srgb, var(--colors-sky-400) 10%, transparent)}.badge-color-teal{color:color-mix(in srgb, var(--colors-teal-700) var(--un-text-opacity), transparent);border-width:1px;border-color:color-mix(in srgb, var(--colors-teal-600) 15%, transparent);background-color:color-mix(in srgb, var(--colors-teal-400) 20%, transparent)}.dark .badge-color-teal{color:color-mix(in srgb, var(--colors-teal-300) var(--un-text-opacity), transparent);border-color:color-mix(in srgb, var(--colors-teal-300) 15%, transparent);background-color:color-mix(in srgb, var(--colors-teal-400) 10%, transparent)}.badge-color-violet{color:color-mix(in srgb, var(--colors-violet-700) var(--un-text-opacity), transparent);border-width:1px;border-color:color-mix(in srgb, var(--colors-violet-600) 15%, transparent);background-color:color-mix(in srgb, var(--colors-violet-400) 20%, transparent)}.dark .badge-color-violet{color:color-mix(in srgb, var(--colors-violet-300) var(--un-text-opacity), transparent);border-color:color-mix(in srgb, var(--colors-violet-300) 15%, transparent);background-color:color-mix(in srgb, var(--colors-violet-400) 10%, transparent)}.btn-primary{color:color-mix(in srgb, var(--colors-white) var(--un-text-opacity), transparent);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 1.5);--un-outline-style:none;border-radius:var(--radius-DEFAULT);background-color:color-mix(in srgb, var(--colors-primary-500) var(--un-bg-opacity), transparent);gap:calc(var(--spacing) * 2);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,--un-gradient-from,--un-gradient-via,--un-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration));outline-style:none;align-items:center;display:flex}.dark .badge-active{color:color-mix(in srgb, var(--colors-primary-300) var(--un-text-opacity), transparent);background-color:color-mix(in srgb, var(--colors-primary-DEFAULT) 15%, transparent)}.dark .badge-muted,.dark .color-muted{color:color-mix(in srgb, var(--colors-neutral-400) var(--un-text-opacity), transparent)}.color-active{color:color-mix(in srgb, var(--colors-primary-600) var(--un-text-opacity), transparent)}.dark .color-active{color:color-mix(in srgb, var(--colors-primary-300) var(--un-text-opacity), transparent)}.color-base,.data-\[state\=active\]\:color-base[data-state=active]{color:color-mix(in srgb, var(--colors-neutral-800) var(--un-text-opacity), transparent)}.dark .color-base,.dark .data-\[state\=active\]\:color-base[data-state=active]{color:color-mix(in srgb, var(--colors-neutral-200) var(--un-text-opacity), transparent)}.color-faint,.dark .color-faint{color:color-mix(in srgb, var(--colors-neutral-500) var(--un-text-opacity), transparent)}.color-muted{color:color-mix(in srgb, var(--colors-neutral-600) var(--un-text-opacity), transparent)}.dark .hover\:color-base:hover{color:color-mix(in srgb, var(--colors-neutral-200) var(--un-text-opacity), transparent)}.hover\:color-base:hover{color:color-mix(in srgb, var(--colors-neutral-800) var(--un-text-opacity), transparent)}.dark .placeholder\:color-faint::placeholder,.placeholder\:color-faint::placeholder{color:color-mix(in srgb, var(--colors-neutral-500) var(--un-text-opacity), transparent)}.btn-action{padding-inline:calc(var(--spacing) * 2);padding-block:calc(var(--spacing) * 1);--un-outline-style:none;border-width:1px;border-color:color-mix(in oklab, #8882 var(--un-border-opacity), transparent);border-radius:var(--radius-DEFAULT);opacity:.75;gap:calc(var(--spacing) * 2);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,--un-gradient-from,--un-gradient-via,--un-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration));outline-style:none;align-items:center;display:flex}.btn-icon{--un-outline-style:none;opacity:.65;width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,--un-gradient-from,--un-gradient-via,--un-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration));border-radius:3.40282e38px;outline-style:none;justify-content:center;align-items:center;display:flex}.btn-icon-square{--un-outline-style:none;border-width:1px;border-color:color-mix(in oklab, #8882 var(--un-border-opacity), transparent);border-radius:var(--radius-DEFAULT);opacity:.65;width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,--un-gradient-from,--un-gradient-via,--un-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration));outline-style:none;justify-content:center;align-items:center;display:flex}.border-base{border-color:color-mix(in oklab, #8882 var(--un-border-opacity), transparent)}.border-base\!{border-color:color-mix(in oklab, #8882 var(--un-border-opacity), transparent)!important}.dark .focus-visible\:border-active:focus-visible{border-color:color-mix(in srgb, var(--colors-primary-400) 25%, transparent)}.focus-visible\:border-active:focus-visible{border-color:color-mix(in srgb, var(--colors-primary-600) 25%, transparent)}.bg-active{background-color:color-mix(in srgb, var(--colors-primary-DEFAULT) 10%, transparent)}.dark .bg-active{background-color:color-mix(in srgb, var(--colors-primary-DEFAULT) 15%, transparent)}.bg-base,.data-\[state\=active\]\:bg-base[data-state=active]{background-color:color-mix(in srgb, var(--colors-white) var(--un-bg-opacity), transparent)}.dark .bg-base,.dark .data-\[state\=active\]\:bg-base[data-state=active]{background-color:color-mix(in oklab, #111 var(--un-bg-opacity), transparent)}.bg-secondary{background-color:color-mix(in oklab, #fdfdfd var(--un-bg-opacity), transparent)}.dark .bg-secondary{background-color:color-mix(in oklab, #101010 var(--un-bg-opacity), transparent)}.dark .hover\:bg-active:hover{background-color:color-mix(in srgb, var(--colors-primary-DEFAULT) 15%, transparent)}.hover\:bg-active:hover{background-color:color-mix(in srgb, var(--colors-primary-DEFAULT) 10%, transparent)}.btn-action:hover{background-color:color-mix(in srgb, var(--colors-primary-DEFAULT) 10%, transparent);opacity:1}.dark .btn-action:hover{background-color:color-mix(in srgb, var(--colors-primary-DEFAULT) 15%, transparent)}.btn-icon:hover{background-color:color-mix(in srgb, var(--colors-primary-DEFAULT) 10%, transparent);opacity:1}.dark .btn-icon:hover{background-color:color-mix(in srgb, var(--colors-primary-DEFAULT) 15%, transparent)}.btn-icon-square:hover{background-color:color-mix(in srgb, var(--colors-primary-DEFAULT) 10%, transparent);opacity:1}.dark .btn-icon-square:hover{background-color:color-mix(in srgb, var(--colors-primary-DEFAULT) 15%, transparent)}.btn-primary:hover{background-color:color-mix(in srgb, var(--colors-primary-600) var(--un-bg-opacity), transparent)}.dark .btn-icon,.dark .btn-icon-square,.dark .op-fade{opacity:.55}.op-fade{opacity:.65}.btn-action:disabled{pointer-events:none;opacity:.3!important}.btn-icon:disabled,.btn-icon-square:disabled{opacity:.3;pointer-events:none}.btn-primary:disabled{opacity:.5;pointer-events:none}.container{width:100%}.btn-action:focus-visible,.btn-icon:focus-visible,.btn-icon-square:focus-visible,.btn-primary:focus-visible{--un-ring-shadow:var(--un-ring-inset,) 0 0 0 calc(2px + var(--un-ring-offset-width)) var(--un-ring-color,currentColor);box-shadow:var(--un-inset-shadow), var(--un-inset-ring-shadow), var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow);--un-ring-color:color-mix(in srgb, var(--colors-primary-500) 40%, transparent)}.z-nav{z-index:30}@supports (color:color-mix(in lab, red, red)){.badge-color-amber{color:color-mix(in oklab, var(--colors-amber-700) var(--un-text-opacity), transparent);border-color:color-mix(in oklab, var(--colors-amber-600) 15%, transparent);background-color:color-mix(in oklab, var(--colors-amber-400) 20%, transparent)}.dark .badge-color-amber{color:color-mix(in oklab, var(--colors-amber-300) var(--un-text-opacity), transparent);border-color:color-mix(in oklab, var(--colors-amber-300) 15%, transparent);background-color:color-mix(in oklab, var(--colors-amber-400) 10%, transparent)}.badge-color-blue{color:color-mix(in oklab, var(--colors-blue-700) var(--un-text-opacity), transparent);border-color:color-mix(in oklab, var(--colors-blue-600) 15%, transparent);background-color:color-mix(in oklab, var(--colors-blue-400) 20%, transparent)}.dark .badge-color-blue{color:color-mix(in oklab, var(--colors-blue-300) var(--un-text-opacity), transparent);border-color:color-mix(in oklab, var(--colors-blue-300) 15%, transparent);background-color:color-mix(in oklab, var(--colors-blue-400) 10%, transparent)}.badge-color-emerald{color:color-mix(in oklab, var(--colors-emerald-700) var(--un-text-opacity), transparent);border-color:color-mix(in oklab, var(--colors-emerald-600) 15%, transparent);background-color:color-mix(in oklab, var(--colors-emerald-400) 20%, transparent)}.dark .badge-color-emerald{color:color-mix(in oklab, var(--colors-emerald-300) var(--un-text-opacity), transparent);border-color:color-mix(in oklab, var(--colors-emerald-300) 15%, transparent);background-color:color-mix(in oklab, var(--colors-emerald-400) 10%, transparent)}.badge-color-green{color:color-mix(in oklab, var(--colors-green-700) var(--un-text-opacity), transparent);border-color:color-mix(in oklab, var(--colors-green-600) 15%, transparent);background-color:color-mix(in oklab, var(--colors-green-400) 20%, transparent)}.dark .badge-color-green{color:color-mix(in oklab, var(--colors-green-300) var(--un-text-opacity), transparent);border-color:color-mix(in oklab, var(--colors-green-300) 15%, transparent);background-color:color-mix(in oklab, var(--colors-green-400) 10%, transparent)}.badge-color-orange{color:color-mix(in oklab, var(--colors-orange-700) var(--un-text-opacity), transparent);border-color:color-mix(in oklab, var(--colors-orange-600) 15%, transparent);background-color:color-mix(in oklab, var(--colors-orange-400) 20%, transparent)}.dark .badge-color-orange{color:color-mix(in oklab, var(--colors-orange-300) var(--un-text-opacity), transparent);border-color:color-mix(in oklab, var(--colors-orange-300) 15%, transparent);background-color:color-mix(in oklab, var(--colors-orange-400) 10%, transparent)}.badge-color-red{color:color-mix(in oklab, var(--colors-red-700) var(--un-text-opacity), transparent);border-color:color-mix(in oklab, var(--colors-red-600) 15%, transparent);background-color:color-mix(in oklab, var(--colors-red-400) 20%, transparent)}.dark .badge-color-red{color:color-mix(in oklab, var(--colors-red-300) var(--un-text-opacity), transparent);border-color:color-mix(in oklab, var(--colors-red-300) 15%, transparent);background-color:color-mix(in oklab, var(--colors-red-400) 10%, transparent)}.badge-color-rose{color:color-mix(in oklab, var(--colors-rose-700) var(--un-text-opacity), transparent);border-color:color-mix(in oklab, var(--colors-rose-600) 15%, transparent);background-color:color-mix(in oklab, var(--colors-rose-400) 20%, transparent)}.dark .badge-color-rose{color:color-mix(in oklab, var(--colors-rose-300) var(--un-text-opacity), transparent);border-color:color-mix(in oklab, var(--colors-rose-300) 15%, transparent);background-color:color-mix(in oklab, var(--colors-rose-400) 10%, transparent)}.badge-color-sky{color:color-mix(in oklab, var(--colors-sky-700) var(--un-text-opacity), transparent);border-color:color-mix(in oklab, var(--colors-sky-600) 15%, transparent);background-color:color-mix(in oklab, var(--colors-sky-400) 20%, transparent)}.dark .badge-color-sky{color:color-mix(in oklab, var(--colors-sky-300) var(--un-text-opacity), transparent);border-color:color-mix(in oklab, var(--colors-sky-300) 15%, transparent);background-color:color-mix(in oklab, var(--colors-sky-400) 10%, transparent)}.badge-color-teal{color:color-mix(in oklab, var(--colors-teal-700) var(--un-text-opacity), transparent);border-color:color-mix(in oklab, var(--colors-teal-600) 15%, transparent);background-color:color-mix(in oklab, var(--colors-teal-400) 20%, transparent)}.dark .badge-color-teal{color:color-mix(in oklab, var(--colors-teal-300) var(--un-text-opacity), transparent);border-color:color-mix(in oklab, var(--colors-teal-300) 15%, transparent);background-color:color-mix(in oklab, var(--colors-teal-400) 10%, transparent)}.badge-color-violet{color:color-mix(in oklab, var(--colors-violet-700) var(--un-text-opacity), transparent);border-color:color-mix(in oklab, var(--colors-violet-600) 15%, transparent);background-color:color-mix(in oklab, var(--colors-violet-400) 20%, transparent)}.dark .badge-color-violet{color:color-mix(in oklab, var(--colors-violet-300) var(--un-text-opacity), transparent);border-color:color-mix(in oklab, var(--colors-violet-300) 15%, transparent);background-color:color-mix(in oklab, var(--colors-violet-400) 10%, transparent)}.btn-primary{color:color-mix(in oklab, var(--colors-white) var(--un-text-opacity), transparent);background-color:color-mix(in oklab, var(--colors-primary-500) var(--un-bg-opacity), transparent)}.badge-active{color:color-mix(in oklab, var(--colors-primary-600) var(--un-text-opacity), transparent);background-color:color-mix(in oklab, var(--colors-primary-DEFAULT) 10%, transparent)}.dark .badge-active{color:color-mix(in oklab, var(--colors-primary-300) var(--un-text-opacity), transparent);background-color:color-mix(in oklab, var(--colors-primary-DEFAULT) 15%, transparent)}.badge-muted{color:color-mix(in oklab, var(--colors-neutral-600) var(--un-text-opacity), transparent)}.dark .badge-muted{color:color-mix(in oklab, var(--colors-neutral-400) var(--un-text-opacity), transparent)}.color-active{color:color-mix(in oklab, var(--colors-primary-600) var(--un-text-opacity), transparent)}.dark .color-active{color:color-mix(in oklab, var(--colors-primary-300) var(--un-text-opacity), transparent)}.color-base{color:color-mix(in oklab, var(--colors-neutral-800) var(--un-text-opacity), transparent)}.dark .color-base,.dark .data-\[state\=active\]\:color-base[data-state=active]{color:color-mix(in oklab, var(--colors-neutral-200) var(--un-text-opacity), transparent)}.data-\[state\=active\]\:color-base[data-state=active]{color:color-mix(in oklab, var(--colors-neutral-800) var(--un-text-opacity), transparent)}.color-faint,.dark .color-faint{color:color-mix(in oklab, var(--colors-neutral-500) var(--un-text-opacity), transparent)}.color-muted{color:color-mix(in oklab, var(--colors-neutral-600) var(--un-text-opacity), transparent)}.dark .color-muted{color:color-mix(in oklab, var(--colors-neutral-400) var(--un-text-opacity), transparent)}.dark .hover\:color-base:hover{color:color-mix(in oklab, var(--colors-neutral-200) var(--un-text-opacity), transparent)}.hover\:color-base:hover{color:color-mix(in oklab, var(--colors-neutral-800) var(--un-text-opacity), transparent)}.dark .placeholder\:color-faint::placeholder,.placeholder\:color-faint::placeholder{color:color-mix(in oklab, var(--colors-neutral-500) var(--un-text-opacity), transparent)}.dark .focus-visible\:border-active:focus-visible{border-color:color-mix(in oklab, var(--colors-primary-400) 25%, transparent)}.focus-visible\:border-active:focus-visible{border-color:color-mix(in oklab, var(--colors-primary-600) 25%, transparent)}.bg-active{background-color:color-mix(in oklab, var(--colors-primary-DEFAULT) 10%, transparent)}.dark .bg-active{background-color:color-mix(in oklab, var(--colors-primary-DEFAULT) 15%, transparent)}.bg-base,.data-\[state\=active\]\:bg-base[data-state=active]{background-color:color-mix(in oklab, var(--colors-white) var(--un-bg-opacity), transparent)}.dark .hover\:bg-active:hover{background-color:color-mix(in oklab, var(--colors-primary-DEFAULT) 15%, transparent)}.hover\:bg-active:hover,.btn-action:hover{background-color:color-mix(in oklab, var(--colors-primary-DEFAULT) 10%, transparent)}.dark .btn-action:hover{background-color:color-mix(in oklab, var(--colors-primary-DEFAULT) 15%, transparent)}.btn-icon:hover{background-color:color-mix(in oklab, var(--colors-primary-DEFAULT) 10%, transparent)}.dark .btn-icon:hover{background-color:color-mix(in oklab, var(--colors-primary-DEFAULT) 15%, transparent)}.btn-icon-square:hover{background-color:color-mix(in oklab, var(--colors-primary-DEFAULT) 10%, transparent)}.dark .btn-icon-square:hover{background-color:color-mix(in oklab, var(--colors-primary-DEFAULT) 15%, transparent)}.btn-primary:hover{background-color:color-mix(in oklab, var(--colors-primary-600) var(--un-bg-opacity), transparent)}.btn-action:focus-visible,.btn-icon:focus-visible,.btn-icon-square:focus-visible,.btn-primary:focus-visible{--un-ring-color:color-mix(in oklab, var(--colors-primary-500) 40%, transparent)}}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}@property --scroll-fade-t{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-b{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-s{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-e{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-mask{syntax:"*";inherits:false}@property --shimmer-angle{syntax:"<angle>";inherits:true;initial-value:20deg}@property --shimmer-image{syntax:"*";inherits:false}@property --shimmer-text-fill{syntax:"*";inherits:false}.text-\[1\.35rem\]{font-size:1.35rem}.text-\[11px\]{font-size:11px}.text-4xl{font-size:var(--text-4xl-fontSize);line-height:var(--un-leading,var(--text-4xl-lineHeight))}.text-base{font-size:var(--text-base-fontSize);line-height:var(--un-leading,var(--text-base-lineHeight))}.text-lg{font-size:var(--text-lg-fontSize);line-height:var(--un-leading,var(--text-lg-lineHeight))}.text-sm{font-size:var(--text-sm-fontSize);line-height:var(--un-leading,var(--text-sm-lineHeight))}.text-xs{font-size:var(--text-xs-fontSize);line-height:var(--un-leading,var(--text-xs-lineHeight))}.text-error{color:color-mix(in srgb, var(--colors-error-DEFAULT) var(--un-text-opacity), transparent)}.leading-relaxed{--un-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.tracking-wider{--un-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.font-medium{--un-font-weight:var(--fontWeight-medium);font-weight:var(--fontWeight-medium)}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.font-semibold{--un-font-weight:var(--fontWeight-semibold);font-weight:var(--fontWeight-semibold)}.tab{tab-size:4}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\.5{margin-bottom:calc(var(--spacing) * 2.5)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.me{margin-inline-end:calc(var(--spacing) * 4)}.ms{margin-inline-start:calc(var(--spacing) * 4)}.mt-1{margin-top:calc(var(--spacing) * 1)}.p-1{padding:calc(var(--spacing) * 1)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px{padding-inline:calc(var(--spacing) * 4)}.px-2,.px2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-2\.5\!{padding-inline:calc(var(--spacing) * 2.5)!important}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4\!{padding-inline:calc(var(--spacing) * 4)!important}.py-1,.py1{padding-block:calc(var(--spacing) * 1)}.py-1\!{padding-block:calc(var(--spacing) * 1)!important}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\!{padding-block:calc(var(--spacing) * 2)!important}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.text-center{text-align:center}.outline{outline-style:var(--un-outline-style);outline-width:1px}.outline-none{--un-outline-style:none;outline-style:none}.b,.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-current{border-color:currentColor}.border-error\/30\!{border-color:color-mix(in srgb, var(--colors-error-DEFAULT) 30%, transparent)!important}.border-error\/35{border-color:color-mix(in srgb, var(--colors-error-DEFAULT) 35%, transparent)}.border-transparent{border-color:#0000}.border-t-transparent{border-top-color:#0000}.rounded{border-radius:var(--radius-DEFAULT)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.bg-error{background-color:color-mix(in srgb, var(--colors-error-DEFAULT) var(--un-bg-opacity), transparent)}.bg-error\/10{background-color:color-mix(in srgb, var(--colors-error-DEFAULT) 10%, transparent)}.bg-neutral-400{background-color:color-mix(in srgb, var(--colors-neutral-400) var(--un-bg-opacity), transparent)}.bg-success{background-color:color-mix(in srgb, var(--colors-success-DEFAULT) var(--un-bg-opacity), transparent)}.op100\!{opacity:1!important}.op75{opacity:.75}.hover\:op100:hover{opacity:1}.disabled\:op30\!:disabled{opacity:.3!important}.underline,.hover\:underline:hover{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.flex{display:flex}.inline-flex{display:inline-flex}.flex-1{flex:1}.shrink-0{flex-shrink:0}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-y-1\.5{row-gap:calc(var(--spacing) * 1.5)}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.h-10{height:calc(var(--spacing) * 10)}.h-7\!{height:calc(var(--spacing) * 7)!important}.h-8{height:calc(var(--spacing) * 8)}.h1{height:calc(var(--spacing) * 1)}.max-w-\[560px\]{max-width:560px}.max-w-52{max-width:calc(var(--spacing) * 52)}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:calc(var(--spacing) * 0)}.w-7\!{width:calc(var(--spacing) * 7)!important}.w-full{width:100%}.w-max{width:max-content}.block{display:block}.inline-block{display:inline-block}.cursor-pointer{cursor:pointer}.disabled\:pointer-events-none:disabled{pointer-events:none}.resize{resize:both}.select-none{-webkit-user-select:none;user-select:none}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.uppercase{text-transform:uppercase}.ring{--un-ring-shadow:var(--un-ring-inset,) 0 0 0 calc(1px + var(--un-ring-offset-width)) var(--un-ring-color,currentColor);box-shadow:var(--un-inset-shadow), var(--un-inset-ring-shadow), var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow)}.focus-visible\:ring-2:focus-visible{--un-ring-shadow:var(--un-ring-inset,) 0 0 0 calc(2px + var(--un-ring-offset-width)) var(--un-ring-color,currentColor);box-shadow:var(--un-inset-shadow), var(--un-inset-ring-shadow), var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow)}.focus-visible\:ring-primary-500\/40:focus-visible{--un-ring-color:color-mix(in srgb, var(--colors-primary-500) 40%, transparent)}.data-\[state\=active\]\:shadow-sm[data-state=active],.shadow-sm{--un-shadow:0 1px 3px 0 var(--un-shadow-color,#0000001a),0 1px 2px -1px var(--un-shadow-color,#0000001a);box-shadow:var(--un-inset-shadow), var(--un-inset-ring-shadow), var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,--un-gradient-from,--un-gradient-via,--un-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration))}.items-center{align-items:center}.inset-0{inset:calc(var(--spacing) * 0)}.justify-center{justify-content:center}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.of-hidden{overflow:hidden}.of-x-auto{overflow-x:auto}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-spin{animation:1s linear infinite spin}.filter{filter:var(--un-blur,) var(--un-brightness,) var(--un-contrast,) var(--un-grayscale,) var(--un-hue-rotate,) var(--un-invert,) var(--un-saturate,) var(--un-sepia,) var(--un-drop-shadow,)}@supports (color:color-mix(in lab, red, red)){.text-error{color:color-mix(in oklab, var(--colors-error-DEFAULT) var(--un-text-opacity), transparent)}.border-error\/30\!{border-color:color-mix(in oklab, var(--colors-error-DEFAULT) 30%, transparent)!important}.border-error\/35{border-color:color-mix(in oklab, var(--colors-error-DEFAULT) 35%, transparent)}.bg-error{background-color:color-mix(in oklab, var(--colors-error-DEFAULT) var(--un-bg-opacity), transparent)}.bg-error\/10{background-color:color-mix(in oklab, var(--colors-error-DEFAULT) 10%, transparent)}.bg-neutral-400{background-color:color-mix(in oklab, var(--colors-neutral-400) var(--un-bg-opacity), transparent)}.bg-success{background-color:color-mix(in oklab, var(--colors-success-DEFAULT) var(--un-bg-opacity), transparent)}.focus-visible\:ring-primary-500\/40:focus-visible{--un-ring-color:color-mix(in oklab, var(--colors-primary-500) 40%, transparent)}}@property --un-backdrop-blur{syntax:"*";inherits:false}@property --un-backdrop-brightness{syntax:"*";inherits:false}@property --un-backdrop-contrast{syntax:"*";inherits:false}@property --un-backdrop-grayscale{syntax:"*";inherits:false}@property --un-backdrop-hue-rotate{syntax:"*";inherits:false}@property --un-backdrop-invert{syntax:"*";inherits:false}@property --un-backdrop-opacity{syntax:"*";inherits:false}@property --un-backdrop-saturate{syntax:"*";inherits:false}@property --un-backdrop-sepia{syntax:"*";inherits:false}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}html.dark{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html{color:color-mix(in srgb, var(--colors-neutral-800) var(--un-text-opacity), transparent);background-color:color-mix(in srgb, var(--colors-white) var(--un-bg-opacity), transparent)}@supports (color:color-mix(in lab, red, red)){html{color:color-mix(in oklab, var(--colors-neutral-800) var(--un-text-opacity), transparent);background-color:color-mix(in oklab, var(--colors-white) var(--un-bg-opacity), transparent)}}.dark html{color:color-mix(in srgb, var(--colors-neutral-200) var(--un-text-opacity), transparent);background-color:color-mix(in oklab, #111 var(--un-bg-opacity), transparent)}@supports (color:color-mix(in lab, red, red)){.dark html{color:color-mix(in oklab, var(--colors-neutral-200) var(--un-text-opacity), transparent)}}*{scrollbar-width:thin;scrollbar-color:#88888859 transparent}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#8888884d;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#88888880}@keyframes af-spin{to{transform:rotate(360deg)}}@keyframes af-spin-reverse{to{transform:rotate(-360deg)}}.af-spin{animation:1s linear infinite af-spin}::view-transition-old(root){mix-blend-mode:normal;animation:none}::view-transition-new(root){mix-blend-mode:normal;animation:none}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:9999}html.dark::view-transition-old(root){z-index:9999}html.dark::view-transition-new(root){z-index:1}@media (prefers-reduced-motion:reduce){::view-transition-old(root){animation:none!important}::view-transition-new(root){animation:none!important}}[data-reka-popper-content-wrapper]{z-index:70}[data-af-animate][data-state=open]{animation:.15s both af-fade-in}[data-af-animate][data-state=closed]{animation:.15s both af-fade-out}[data-af-modal][data-state=open]{animation:.18s cubic-bezier(.16,1,.3,1) both af-modal-in}[data-af-modal][data-state=closed]{animation:.15s both af-modal-out}[data-af-drawer]{animation-duration:.22s;animation-timing-function:cubic-bezier(.32,.72,0,1);animation-fill-mode:both}[data-af-drawer][data-side=right]{animation-name:af-slide-right}[data-af-drawer][data-side=left]{animation-name:af-slide-left}[data-af-drawer][data-side=top]{animation-name:af-slide-top}[data-af-drawer][data-side=bottom]{animation-name:af-slide-bottom}[data-af-drawer][data-state=closed]{animation-direction:reverse}@keyframes af-fade-in{0%{opacity:0}}@keyframes af-fade-out{to{opacity:0}}@keyframes af-modal-in{0%{opacity:0;transform:translate(-50%,-50%)scale(.96)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}@keyframes af-modal-out{0%{opacity:1;transform:translate(-50%,-50%)scale(1)}to{opacity:0;transform:translate(-50%,-50%)scale(.96)}}@keyframes af-slide-right{0%{transform:translate(100%)}}@keyframes af-slide-left{0%{transform:translate(-100%)}}@keyframes af-slide-top{0%{transform:translateY(-100%)}}@keyframes af-slide-bottom{0%{transform:translateY(100%)}}@media (prefers-reduced-motion:reduce){[data-af-animate],[data-af-modal],[data-af-drawer]{animation:none!important}}.v-popper__popper .v-popper__inner{font-size:var(--text-xs-fontSize);line-height:var(--un-leading,var(--text-xs-lineHeight));color:color-mix(in srgb, var(--colors-neutral-800) var(--un-text-opacity), transparent);padding-inline:calc(var(--spacing) * 2);padding-block:calc(var(--spacing) * 1);border-width:1px;border-color:color-mix(in oklab, #8882 var(--un-border-opacity), transparent);border-radius:var(--radius-md);background-color:color-mix(in srgb, var(--colors-white) 75%, transparent);--un-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--un-backdrop-blur,) var(--un-backdrop-brightness,) var(--un-backdrop-contrast,) var(--un-backdrop-grayscale,) var(--un-backdrop-hue-rotate,) var(--un-backdrop-invert,) var(--un-backdrop-opacity,) var(--un-backdrop-saturate,) var(--un-backdrop-sepia,);backdrop-filter:var(--un-backdrop-blur,) var(--un-backdrop-brightness,) var(--un-backdrop-contrast,) var(--un-backdrop-grayscale,) var(--un-backdrop-hue-rotate,) var(--un-backdrop-invert,) var(--un-backdrop-opacity,) var(--un-backdrop-saturate,) var(--un-backdrop-sepia,);box-shadow:0 4px 16px #0000001f}@supports (color:color-mix(in lab, red, red)){.v-popper__popper .v-popper__inner{color:color-mix(in oklab, var(--colors-neutral-800) var(--un-text-opacity), transparent);background-color:color-mix(in oklab, var(--colors-white) 75%, transparent)}}.dark .v-popper__popper .v-popper__inner{color:color-mix(in srgb, var(--colors-neutral-200) var(--un-text-opacity), transparent);background-color:oklab(17.7638% -2.23517e-8 0/.75)}@supports (color:color-mix(in lab, red, red)){.dark .v-popper__popper .v-popper__inner{color:color-mix(in oklab, var(--colors-neutral-200) var(--un-text-opacity), transparent)}}.v-popper__popper .v-popper__arrow-outer{border-color:color-mix(in oklab, #8882 var(--un-border-opacity), transparent)}.v-popper__popper .v-popper__arrow-inner{border-color:color-mix(in srgb, var(--colors-white) 75%, transparent);visibility:visible}@supports (color:color-mix(in lab, red, red)){.v-popper__popper .v-popper__arrow-inner{border-color:color-mix(in oklab, var(--colors-white) 75%, transparent)}}.dark .v-popper__popper .v-popper__arrow-inner{border-color:oklab(17.7638% -2.23517e-8 0/.75)}.v-popper--theme-dropdown .v-popper__inner{padding:calc(var(--spacing) * 1)}.splitpanes{width:100%;height:100%;display:flex}.splitpanes--vertical{flex-direction:row}.splitpanes--horizontal{flex-direction:column}.splitpanes--dragging *{-webkit-user-select:none;user-select:none}.splitpanes__pane{width:100%;height:100%;overflow:hidden}.splitpanes--vertical>.splitpanes__pane{transition:width .2s ease-out}.splitpanes--horizontal>.splitpanes__pane{transition:height .2s ease-out}.splitpanes--dragging>.splitpanes__pane{pointer-events:none;transition:none}.splitpanes__splitter{touch-action:none;background-color:color-mix(in oklab, #8882 var(--un-bg-opacity), transparent);transition:background-color .2s;position:relative}.splitpanes__splitter:hover{background-color:color-mix(in oklab, #8886 var(--un-bg-opacity), transparent)}.splitpanes--vertical>.splitpanes__splitter{cursor:col-resize;min-width:1px}.splitpanes--horizontal>.splitpanes__splitter{cursor:row-resize;min-height:1px}.splitpanes__splitter:before{content:"";z-index:1;position:absolute;inset:-4px}html,body{height:100%;margin:0}#app{height:100%;position:relative}