ideawave 0.0.93 → 0.0.95
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/index.mjs +28 -28
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
function R8(){let X=globalThis.performance?.now?.()??Date.now();return Math.round(X*10)/10}function E(X,Z={}){if(typeof process<"u"&&process.env.IDEAWAVE_AGENT_RUNTIME_TRACE==="0")return;let W=Object.fromEntries(Object.entries(Z).filter(([,J])=>J!==void 0));console.info("[agent-runtime-trace]",JSON.stringify({event:X,epochMs:Date.now(),monotonicMs:R8(),...typeof document>"u"?{}:{visibility:document.visibilityState},...W}))}var O8=600000,f8=60000,tX=200,C8=2,u=new Map,q0=null;function h8(X){X.then((Z)=>Z.dispose()).catch(()=>{return})}function N1(X){for(let Z of X.idleWaiters)Z();X.idleWaiters.clear()}function L0(X,Z){if(u.get(X)!==Z)return;u.delete(X),N1(Z),h8(Z.sessionPromise)}function N8(){if(q0!==null)return;q0=setInterval(()=>{let X=Date.now();for(let[Z,W]of u){if(W.inUse)continue;if(X-W.lastUsed<O8)continue;L0(Z,W)}if(u.size===0&&q0!==null)clearInterval(q0),q0=null},f8),q0.unref?.()}function M8(){if(u.size<tX)return;let X=null,Z=1/0;for(let[J,K]of u){if(K.inUse)continue;if(K.lastUsed>=Z)continue;X=J,Z=K.lastUsed}if(!X)return;let W=u.get(X);if(!W)return;L0(X,W)}function g8(){let X=0;while(u.size>tX){let Z=null,W=null;for(let[J,K]of u){if(K.inUse)continue;if(W&&K.lastUsed>=W.lastUsed)continue;Z=J,W=K}if(!Z||!W)break;L0(Z,W),X+=1}if(X>0)E("session_pool.global_idle_trimmed",{evictedSessions:X,poolEntries:u.size})}function D8(X){let Z=Array.from(u.entries()).filter(([,J])=>J.frontendSessionId===X&&!J.inUse).sort(([,J],[,K])=>J.lastUsed-K.lastUsed),W=Z.length-C8;if(W<=0)return;for(let[J,K]of Z.slice(0,W))L0(J,K);E("session_pool.frontend_idle_trimmed",{frontendSessionId:X,evictedSessions:W,poolEntries:u.size})}function $2(X,Z,W){let J=typeof W==="string"?{kind:"agent-card",id:W}:W;return`${X}:${Z}:${J.kind}:${J.id}`}function $8(X,Z){if(X.length===0)return!0;let W=X[X.length-1],J=Z.indexOf(W);if(J===-1||J>X.length-1)return!1;for(let K=0;K<J;K+=1)if(Z[K]!==X[X.length-1-J+K])return!1;return!0}async function M1(X){let Z=u.get(X.key);if(Z){if(Z.inUse)return E("session_pool.wait_for_idle",{frontendSessionId:Z.frontendSessionId,poolEntries:u.size}),await new Promise((J)=>Z.idleWaiters.add(J)),M1(X);if(Z.fingerprint!==X.fingerprint)L0(X.key,Z);else if(X.transcriptIds&&Z.transcriptIds&&!$8(Z.transcriptIds,X.transcriptIds))E("session_pool.transcript_rewritten",{frontendSessionId:Z.frontendSessionId,poolEntries:u.size}),L0(X.key,Z);else{Z.inUse=!0,Z.lastUsed=Date.now();try{let J=await Z.sessionPromise;if(J.isAlive()){if(X.transcriptIds)Z.transcriptIds=X.transcriptIds;if(Z.frontendSessionId)E("session_pool.reuse",{frontendSessionId:Z.frontendSessionId,poolEntries:u.size});return J}}catch{}L0(X.key,Z)}}let W=X.open();if(M8(),u.set(X.key,{key:X.key,frontendSessionId:X.frontendSessionId??null,fingerprint:X.fingerprint,sessionPromise:W,lastUsed:Date.now(),inUse:!0,idleWaiters:new Set,transcriptIds:X.transcriptIds??null}),N8(),X.frontendSessionId)E("session_pool.open",{frontendSessionId:X.frontendSessionId,poolEntries:u.size});try{return await W}catch(J){let K=u.get(X.key);if(K?.sessionPromise===W)L0(X.key,K);throw J}}function G2(X,Z=!1){let W=u.get(X);if(!W)return;if(Z){L0(X,W);return}if(W.inUse=!1,W.lastUsed=Date.now(),W.frontendSessionId)D8(W.frontendSessionId),E("session_pool.release",{frontendSessionId:W.frontendSessionId,poolEntries:u.size});if(g8(),u.get(X)===W)N1(W)}async function eX(X){let Z=Array.from(u.entries()).filter(([,W])=>W.frontendSessionId===X);for(let[W,J]of Z)u.delete(W),N1(J);return await Promise.all(Z.map(([,W])=>W.sessionPromise.then((J)=>J.dispose()).catch(()=>{return}))),E("session_pool.frontend_evicted",{frontendSessionId:X,evictedSessions:Z.length,poolEntries:u.size}),Z.length}async function G8(){let X=Array.from(u.values());u.clear();for(let Z of X)N1(Z);if(q0!==null)clearInterval(q0),q0=null;await Promise.all(X.map((Z)=>Z.sessionPromise.then((W)=>W.dispose()).catch(()=>{return})))}function m2(X){let Z=Object.entries(X.configValues??{}),W=Z.length>0?JSON.stringify(Object.fromEntries(Z.sort(([J],[K])=>J.localeCompare(K)))):"";return[X.adapterId,X.configId??"",X.modelId??"",W,X.mcpUrl??"",X.mcpRoutingScope??"",X.runFolder??"",X.toolSurface??"full"].join(" ")}var nX=!1;function m8(){if(nX)return;nX=!0;let X=()=>{G8()};process.once("beforeExit",X),process.once("SIGTERM",X),process.once("SIGINT",X)}m8();import{readFileSync as S8}from"node:fs";import{homedir as E8}from"node:os";import{posix as k8,win32 as _8}from"node:path";function X3(){return process.platform==="win32"?_8:k8}function I8(){let X=E8(),Z=X3();switch(process.platform){case"win32":return process.env.APPDATA??Z.join(X,"AppData","Roaming");case"darwin":return Z.join(X,"Library","Application Support");default:return process.env.XDG_CONFIG_HOME??Z.join(X,".config")}}function Z3(){let X=process.env.IDEAWAVE_MCP_JSON_PATH;if(X&&X.trim().length>0)return X;return X3().join(I8(),"ideawave","mcp.json")}var Q3=null;function J3(X){Q3=X}var u8=86400000;function l8(){let X;try{X=S8(Z3(),"utf8")}catch{return null}let Z;try{Z=JSON.parse(X)}catch{return null}if(typeof Z.url!=="string")return null;if(typeof Z.startedAt==="string"){let W=Date.parse(Z.startedAt);if(!Number.isNaN(W)){if(Date.now()-W>u8)return null}}if(typeof Z.pid==="number"&&Z.pid>0)try{process.kill(Z.pid,0)}catch(W){if(W?.code!=="EPERM")return null}return{url:Z.url}}function W3(X,Z={}){let W=[];if(Z.userId&&Z.userId.trim().length>0)W.push({name:"X-Ideawave-User-Id",value:Z.userId.trim()});if(Z.frontendSessionId&&Z.frontendSessionId.trim().length>0)W.push({name:"X-Ideawave-Frontend-Session-Id",value:Z.frontendSessionId.trim()});if(Z.toolSurface&&Z.toolSurface!=="full")W.push({name:"X-Ideawave-Tool-Surface",value:Z.toolSurface});if(Z.imagesSupported)W.push({name:"X-Ideawave-Images-Supported",value:"1"});if(Z.cardId&&Z.cardId.trim().length>0)W.push({name:"X-Ideawave-Card-Id",value:Z.cardId.trim()});if(Z.executionTarget)W.push({name:"X-Ideawave-Execution-Kind",value:Z.executionTarget.kind}),W.push({name:"X-Ideawave-Execution-Id",value:Z.executionTarget.id});if(Z.ideateClaims)W.push({name:"X-Ideawave-Ideate-Claims",value:JSON.stringify(Z.ideateClaims)});if(Z.boardId&&Z.boardId.trim().length>0)W.push({name:"X-Ideawave-Board-Id",value:Z.boardId.trim()});if(Z.runFolder&&Z.runFolder.trim().length>0)W.push({name:"X-Ideawave-Run-Folder",value:Z.runFolder.trim()});return{type:"http",name:"ideawave-board",url:X,headers:W}}function E2(X={}){let Z=Q3;if(Z)return W3(Z.url,X);let W=l8();if(!W)return null;return W3(W.url,X)}import t0 from"node:fs/promises";import d8 from"node:path";import A8 from"node:os";import g1 from"node:path";function T8(){let X=A8.homedir();switch(process.platform){case"win32":return process.env.APPDATA??g1.join(X,"AppData","Roaming");case"darwin":return g1.join(X,"Library","Application Support");default:return process.env.XDG_CONFIG_HOME??g1.join(X,".config")}}function D1(){let X=process.env.IDEAWAVE_RUNTIME_CONFIG_PATH;if(X)return X;return g1.join(T8(),"ideawave","runtimes.json")}import{z as D}from"zod";var K3=D.object({id:D.string(),name:D.string().nullable().default(null),description:D.string().nullable().default(null)}),z3=D.union([D.string(),D.boolean()]),c8=D.object({value:D.string(),name:D.string(),description:D.string().nullable().default(null),group:D.string().nullable().default(null),groupName:D.string().nullable().default(null)}),V3=D.object({id:D.string(),name:D.string(),category:D.string().nullable().default(null),description:D.string().nullable().default(null),type:D.enum(["select","boolean"]),currentValue:z3.nullable().default(null),options:D.array(c8).default([])}),k2=D.record(D.string(),z3).default({}),a8=D.discriminatedUnion("kind",[D.object({id:D.string(),kind:D.literal("registered"),adapterId:D.enum(["claude-code","opencode","codex","copilot"]),displayName:D.string(),runFolder:D.string().nullable(),defaultModelId:D.string().nullable().default(null),defaultConfigValues:k2,discoveredModels:D.array(K3).default([]),discoveredConfigOptions:D.array(V3).default([]),discoveredAt:D.string().nullable().default(null)}),D.object({id:D.string(),kind:D.literal("custom"),displayName:D.string(),command:D.string(),args:D.array(D.string()),env:D.record(D.string(),D.string()),runFolder:D.string().nullable(),defaultModelId:D.string().nullable().default(null),defaultConfigValues:k2,discoveredModels:D.array(K3).default([]),discoveredConfigOptions:D.array(V3).default([]),discoveredAt:D.string().nullable().default(null)})]),Y3=D.object({runtimeConfigId:D.string(),runFolder:D.string().nullable(),modelId:D.string().nullable().default(null),configValues:k2}),$1=D.object({version:D.literal(1),globalDefaultConfigId:D.string().nullable(),runtimes:D.array(a8),boardOverrides:D.record(D.string(),Y3).default({}),cardOverrides:D.record(D.string(),Y3).default({})});var i8={version:1,globalDefaultConfigId:null,runtimes:[],boardOverrides:{},cardOverrides:{}},j3=new Map;function p8(X){return j3.get(X)??Promise.resolve()}function s8(X,Z){j3.set(X,Z)}async function J0(X){let Z=X??D1(),W;try{W=await t0.readFile(Z,"utf-8")}catch(K){if(K.code==="ENOENT")return structuredClone(i8);throw K}return $1.parse(JSON.parse(W))}async function z0(X,Z){let W=Z??D1(),J=p8(W).then(async()=>{let K=await J0(W),V=structuredClone(K),H=await X(V);return await r8(V,W),H});return s8(W,J.catch(()=>{return})),J}async function r8(X,Z){let W=Z??D1(),J=d8.dirname(W);await t0.mkdir(J,{recursive:!0});let K=`${W}.tmp.${process.pid}.${Math.random().toString(36).slice(2)}`,V=JSON.stringify(X,null,2);await t0.writeFile(K,V,"utf-8");try{await t0.rename(K,W)}catch(H){throw await t0.unlink(K).catch(()=>{return}),H}}import{spawn as K9}from"node:child_process";import{closeSync as V9,existsSync as B3,mkdirSync as q3,openSync as Y9,readFileSync as z9,renameSync as j9,rmSync as L3,statSync as H9,unlinkSync as w9,writeFileSync as U9}from"node:fs";import U3 from"node:os";import D0 from"node:path";var o8=/\.(?:cmd|bat)$/i;function n8(X){return process.platform==="win32"&&o8.test(X)}function G1(X){return n8(X)?{shell:!0,windowsHide:!0}:{}}import{execFile as Q9}from"node:child_process";import{promisify as J9}from"node:util";import{execFile as t8}from"node:child_process";import{promisify as e8}from"node:util";var X9=e8(t8),_2=new Map,H3=5000,Z9=/\.(?:cmd|bat|com|exe)$/i;function W9(X){let Z=X.split(/\r?\n/).map((W)=>W.trim()).filter((W)=>W.length>0);if(Z.length===0)return null;if(process.platform!=="win32")return Z[0]??null;return Z.find((W)=>Z9.test(W))??Z[0]??null}async function w3(X,Z=X9){let W=_2.get(X);if(W&&W.expiresAt>Date.now())return W.value;let J=process.platform==="win32"?"where":"which";try{let{stdout:K}=await Z(J,[X],{timeout:2000}),V=W9(K);return _2.set(X,{value:V,expiresAt:Date.now()+H3}),V}catch{return _2.set(X,{value:null,expiresAt:Date.now()+H3}),null}}class e0 extends Error{code;constructor(X,Z){super(X);this.name="AcpError",this.code=Z}}class g0 extends e0{constructor(X="No ACP runtime configured"){super(X,"RUNTIME_NOT_CONFIGURED");this.name="RuntimeNotConfiguredError"}}class S extends e0{constructor(X){super(X,"RUNTIME_UNREACHABLE");this.name="RuntimeUnreachableError"}}class l0 extends e0{authMethods;constructor(X,Z){super(X,"AUTH_REQUIRED");this.name="AuthRequiredError",this.authMethods=Z}}class w0 extends e0{constructor(X="ACP session timed out"){super(X,"SESSION_TIMEOUT");this.name="SessionTimeoutError"}}var VJ=J9(Q9);function a(X,...Z){return w3(X,...Z)}function Q0(X){let Z={};for(let[W,J]of Object.entries(process.env))if(typeof J==="string")Z[W]=J;return{...Z,...X??{}}}var S2=[{adapterId:"claude-code",runtimeBinary:"claude",packageName:"@agentclientprotocol/claude-agent-acp",version:"0.66.0",warmupArgs:["--cli","--help"]},{adapterId:"codex",runtimeBinary:"codex",packageName:"@agentclientprotocol/codex-acp",version:"1.2.0",warmupArgs:["--version"]}],F9=1800000,m1=new Map;function u2(){if(process.env.IDEAWAVE_ACP_BRIDGE_CACHE_DIR)return process.env.IDEAWAVE_ACP_BRIDGE_CACHE_DIR;if(process.platform==="win32"){let X=process.env.LOCALAPPDATA??D0.join(U3.homedir(),"AppData","Local");return D0.join(X,"ideawave","acp-bridges")}return D0.join(process.env.XDG_CACHE_HOME??D0.join(U3.homedir(),".cache"),"ideawave","acp-bridges")}function B9(X){return X.replace(/^@/,"").replace(/[/\\]/g,"-")}function E1(){return D0.join(u2(),"install-state.json")}function l2(X){return D0.join(u2(),`${B9(X.packageName)}@${X.version}.install.lock`)}function A2(){return process.platform==="win32"?"npx.cmd":"npx"}function T2(X){return`${X.packageName}@${X.version}`}function P3(){let X=E1();if(!B3(X))return{};try{return JSON.parse(z9(X,"utf8"))}catch{return{}}}function I2(X,Z){let W=u2();q3(W,{recursive:!0});let J=P3();J.bridges={...J.bridges??{},[X.adapterId]:Z},U9(`${E1()}.tmp`,`${JSON.stringify(J,null,2)}
|
|
3
|
-
`),j9(`${E1()}.tmp`,E1())}function x3(X){return S2.find((Z)=>Z.packageName===X)??null}function K0(X,Z,W){return{adapterId:X.adapterId,packageName:X.packageName,version:X.version,status:Z,...W?{error:W}:{}}}function F3(X,Z){return Z?.packageName===X.packageName&&Z.version===X.version}function b3(X){try{return Date.now()-H9(X).mtimeMs>F9}catch{return!1}}function q9(X){let Z=l2(X);if(!B3(Z))return!1;if(b3(Z))return L3(Z,{force:!0}),!1;return!0}function L9(X){let Z=l2(X);if(q3(D0.dirname(Z),{recursive:!0}),b3(Z))L3(Z,{force:!0});try{let W=Y9(Z,"wx");return V9(W),!0}catch{return!1}}function P9(X){w9(l2(X))}function c2(X){let Z=P3().bridges?.[X.adapterId];if(F3(X,Z)&&Z.status==="ready")return K0(X,"ready");if(m1.has(X.adapterId)||q9(X))return K0(X,"installing");if(F3(X,Z)&&Z.status==="failed")return K0(X,"failed",Z.error);return K0(X,"missing")}function X1(X,Z){X?.onStatusChange?.(Z)}function x9(X,Z){let W=c2(X);if(W.status==="ready")return X1(Z,W),W;if(W.status==="installing"){let w=m1.get(X.adapterId);if(w&&Z?.onStatusChange)w.then((q)=>X1(Z,q));return X1(Z,W),W}if(!L9(X))return K0(X,"installing");let J=K0(X,"installing");I2(X,J),X1(Z,J);let K=()=>{},V=new Promise((w)=>{K=w});m1.set(X.adapterId,V);let H=!1,U=(w)=>{if(H)return;H=!0;try{P9(X)}catch{}I2(X,w),X1(Z,w),m1.delete(X.adapterId),K(w)},F;try{let w=A2();F=K9(w,["-y",T2(X),...X.warmupArgs],{stdio:"ignore",windowsHide:!0,...G1(w)})}catch(w){let q=K0(X,"failed",w instanceof Error?w.message:String(w));return U(q),q}return F.on("error",(w)=>{U(K0(X,"failed",w.message))}),F.on("close",(w)=>{if(w===0){U(K0(X,"ready"));return}U(K0(X,"failed",`npx warmup exited ${w??"null"}`))}),F.unref(),J}function A0(X){let Z=x3(X);return Z?c2(Z):null}async function v3(X){let Z=[];for(let W of S2){if(!await a(W.runtimeBinary)){Z.push(K0(W,"not_needed"));continue}Z.push(x9(W,X))}return Z.filter((W)=>W.status!=="not_needed")}function k1(X){let Z=x3(X);if(!Z)return null;if(c2(Z).status!=="ready")return null;return{command:A2(),args:["-y",T2(Z)],env:{}}}function a2(X,Z){if(X.command!==A2())return!1;let W=S2.find((J)=>X.args.includes(T2(J)));if(!W)return!1;return I2(W,K0(W,"failed",Z)),!0}var y3="claude",d2="@agentclientprotocol/claude-agent-acp",R3=["claude-agent-acp","claude-code-acp"],O3="Install Claude Code from https://github.com/anthropics/claude-code",f3={id:"claude-code",displayName:"Claude Code",kind:"registered",supportsImages:!0,resolveSpawnConfig:async()=>{if(!await a(y3))throw new S(`Claude Code CLI not found. ${O3}`);let Z=k1(d2);if(Z)return{command:Z.command,args:Z.args,env:Q0(Z.env)};let W=A0(d2),J=W?.status==="installing";for(let V of R3){let H=await a(V);if(H&&!J&&W?.status!=="failed")return{command:H,args:[],env:Q0()}}let K=W?.status==="failed"?`Claude Code ACP bridge install failed. ${W.error??"Restart IdeaWave CLI so it can warm the pinned bridge again."}`:"Claude Code ACP bridge is not ready. Keep IdeaWave CLI running and retry in a moment.";throw new S(K)},checkReadiness:async()=>{if(!await a(y3))return{status:"not_installed",detail:O3};let Z=A0(d2);if(Z?.status==="ready")return{status:"ready"};if(Z?.status==="installing")return{status:"not_running",detail:"Installing Claude Code ACP bridge..."};if(Z?.status==="failed")return{status:"not_running",detail:Z.error??"Claude Code ACP bridge install failed. Restart IdeaWave CLI so it can warm the pinned bridge again."};for(let W of R3)if(await a(W))return{status:"ready"};return{status:"not_running",detail:"Installing Claude Code ACP bridge..."}},authHint:"Run `claude login` (or set ANTHROPIC_API_KEY)."};var C3="codex",i2="@agentclientprotocol/codex-acp",h3="codex-acp",N3="Install Codex CLI from https://developers.openai.com/codex/cli",M3={id:"codex",displayName:"Codex",kind:"registered",resolveSpawnConfig:async()=>{if(!await a(C3))throw new S(`Codex CLI not found. ${N3}`);let Z=k1(i2);if(Z)return{command:Z.command,args:Z.args,env:Q0(Z.env)};let W=A0(i2),J=W?.status==="installing",K=await a(h3);if(K&&!J&&W?.status!=="failed")return{command:K,args:[],env:Q0()};let V=W?.status==="failed"?`Codex ACP bridge install failed. ${W.error??"Restart IdeaWave CLI so it can warm the pinned bridge again."}`:"Codex ACP bridge is not ready. Keep IdeaWave CLI running and retry in a moment.";throw new S(V)},checkReadiness:async()=>{if(!await a(C3))return{status:"not_installed",detail:N3};let Z=A0(i2);if(Z?.status==="ready")return{status:"ready"};if(Z?.status==="installing")return{status:"not_running",detail:"Installing Codex ACP bridge..."};if(Z?.status==="failed")return{status:"not_running",detail:Z.error??"Codex ACP bridge install failed. Restart IdeaWave CLI so it can warm the pinned bridge again."};if(await a(h3))return{status:"ready"};return{status:"not_running",detail:"Installing Codex ACP bridge..."}},authHint:"Run `codex login` (or set OPENAI_API_KEY)."};var g3="copilot",D3="copilot-acp",$3="npm i -g @github/copilot",G3={id:"copilot",displayName:"GitHub Copilot",kind:"registered",resolveSpawnConfig:async()=>{let X=await a(g3);if(X)return{command:X,args:["--acp"],env:Q0()};let Z=await a(D3);if(Z)return{command:Z,args:[],env:Q0()};throw new S(`Copilot not installed. Run: ${$3}`)},checkReadiness:async()=>{if(await a(g3))return{status:"ready"};if(await a(D3))return{status:"ready"};return{status:"not_installed",detail:$3}},authHint:"Run `gh auth login` (or `copilot login`)."};import b9 from"node:fs/promises";function v9(X){return X.startsWith("/")||/^[a-zA-Z]:[\\/]/.test(X)}async function m3(X){if(v9(X))try{return await b9.access(X),!0}catch{return!1}return await a(X)!==null}var E3={id:"custom",displayName:"Custom ACP",kind:"custom",resolveSpawnConfig:async(X)=>{if(X.kind!=="custom")throw new S("customAdapter received non-custom entry");if(!await m3(X.command))throw new S(`custom: command "${X.command}" not found`);return{command:X.command,args:X.args,env:Q0(X.env)}},checkReadiness:async(X)=>{if(X.kind!=="custom")return{status:"unknown"};return await m3(X.command)?{status:"ready"}:{status:"not_installed"}}};var k3="opencode",_3="Install OpenCode from https://opencode.ai",I3={id:"opencode",displayName:"OpenCode",kind:"registered",resolveSpawnConfig:async()=>{let X=await a(k3);if(!X)throw new S(`OpenCode not installed. ${_3}`);return{command:X,args:["acp"],env:Q0()}},checkReadiness:async()=>{if(!await a(k3))return{status:"not_installed",detail:_3};return{status:"ready"}},authHint:"Run `opencode auth login <provider>` (or set the provider's API-key env var)."};var S3={"claude-code":f3,opencode:I3,codex:M3,copilot:G3};function U0(X){if(X.kind==="custom")return E3;let Z=S3[X.adapterId];if(!Z)throw Error(`Unknown registered adapter: ${X.adapterId}`);return Z}function T0(){return Object.values(S3)}var p2=new Map,_1=new Map,y9=30000;function I1(X,Z){let W=p2.get(X);if(W&&W.expiresAt>Date.now())return Promise.resolve(W.value);let J=_1.get(X);if(J)return J;let K=Z().then((V)=>{return p2.set(X,{value:V,expiresAt:Date.now()+y9}),V}).finally(()=>{_1.delete(X)});return _1.set(X,K),K}async function u3(X){let Z=await Promise.all(T0().map((V)=>I1(V.id,async()=>({adapterId:V.id,...await V.checkReadiness({id:"__probe__",kind:"registered",adapterId:V.id,displayName:V.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null})})))),J=(await J0(X)).runtimes.filter((V)=>V.kind==="custom"),K=await Promise.all(J.map((V)=>I1(`custom:${V.id}`,async()=>({adapterId:V.id,...await U0(V).checkReadiness(V)}))));return[...Z,...K]}async function l3(X,Z){let W=T0().find((V)=>V.id===X);if(W)return I1(W.id,async()=>({adapterId:W.id,...await W.checkReadiness({id:"__probe__",kind:"registered",adapterId:W.id,displayName:W.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null})}));let K=(await J0(Z)).runtimes.find((V)=>V.id===X);if(!K||K.kind!=="custom")return null;return I1(`custom:${K.id}`,async()=>({adapterId:K.id,...await U0(K).checkReadiness(K)}))}function A3(){p2.clear(),_1.clear()}import{createHash as X7,randomBytes as Z7,randomUUID as a6}from"node:crypto";import*as m0 from"css-tree";var R9=new Set([65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111]),l="�",Y;(function(X){X[X.EOF=-1]="EOF",X[X.NULL=0]="NULL",X[X.TABULATION=9]="TABULATION",X[X.CARRIAGE_RETURN=13]="CARRIAGE_RETURN",X[X.LINE_FEED=10]="LINE_FEED",X[X.FORM_FEED=12]="FORM_FEED",X[X.SPACE=32]="SPACE",X[X.EXCLAMATION_MARK=33]="EXCLAMATION_MARK",X[X.QUOTATION_MARK=34]="QUOTATION_MARK",X[X.AMPERSAND=38]="AMPERSAND",X[X.APOSTROPHE=39]="APOSTROPHE",X[X.HYPHEN_MINUS=45]="HYPHEN_MINUS",X[X.SOLIDUS=47]="SOLIDUS",X[X.DIGIT_0=48]="DIGIT_0",X[X.DIGIT_9=57]="DIGIT_9",X[X.SEMICOLON=59]="SEMICOLON",X[X.LESS_THAN_SIGN=60]="LESS_THAN_SIGN",X[X.EQUALS_SIGN=61]="EQUALS_SIGN",X[X.GREATER_THAN_SIGN=62]="GREATER_THAN_SIGN",X[X.QUESTION_MARK=63]="QUESTION_MARK",X[X.LATIN_CAPITAL_A=65]="LATIN_CAPITAL_A",X[X.LATIN_CAPITAL_Z=90]="LATIN_CAPITAL_Z",X[X.RIGHT_SQUARE_BRACKET=93]="RIGHT_SQUARE_BRACKET",X[X.GRAVE_ACCENT=96]="GRAVE_ACCENT",X[X.LATIN_SMALL_A=97]="LATIN_SMALL_A",X[X.LATIN_SMALL_Z=122]="LATIN_SMALL_Z"})(Y||(Y={}));var t={DASH_DASH:"--",CDATA_START:"[CDATA[",DOCTYPE:"doctype",SCRIPT:"script",PUBLIC:"public",SYSTEM:"system"};function S1(X){return X>=55296&&X<=57343}function T3(X){return X>=56320&&X<=57343}function c3(X,Z){return(X-55296)*1024+9216+Z}function u1(X){return X!==32&&X!==10&&X!==13&&X!==9&&X!==12&&X>=1&&X<=31||X>=127&&X<=159}function l1(X){return X>=64976&&X<=65007||R9.has(X)}var L;(function(X){X.controlCharacterInInputStream="control-character-in-input-stream",X.noncharacterInInputStream="noncharacter-in-input-stream",X.surrogateInInputStream="surrogate-in-input-stream",X.nonVoidHtmlElementStartTagWithTrailingSolidus="non-void-html-element-start-tag-with-trailing-solidus",X.endTagWithAttributes="end-tag-with-attributes",X.endTagWithTrailingSolidus="end-tag-with-trailing-solidus",X.unexpectedSolidusInTag="unexpected-solidus-in-tag",X.unexpectedNullCharacter="unexpected-null-character",X.unexpectedQuestionMarkInsteadOfTagName="unexpected-question-mark-instead-of-tag-name",X.invalidFirstCharacterOfTagName="invalid-first-character-of-tag-name",X.unexpectedEqualsSignBeforeAttributeName="unexpected-equals-sign-before-attribute-name",X.missingEndTagName="missing-end-tag-name",X.unexpectedCharacterInAttributeName="unexpected-character-in-attribute-name",X.unknownNamedCharacterReference="unknown-named-character-reference",X.missingSemicolonAfterCharacterReference="missing-semicolon-after-character-reference",X.unexpectedCharacterAfterDoctypeSystemIdentifier="unexpected-character-after-doctype-system-identifier",X.unexpectedCharacterInUnquotedAttributeValue="unexpected-character-in-unquoted-attribute-value",X.eofBeforeTagName="eof-before-tag-name",X.eofInTag="eof-in-tag",X.missingAttributeValue="missing-attribute-value",X.missingWhitespaceBetweenAttributes="missing-whitespace-between-attributes",X.missingWhitespaceAfterDoctypePublicKeyword="missing-whitespace-after-doctype-public-keyword",X.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers="missing-whitespace-between-doctype-public-and-system-identifiers",X.missingWhitespaceAfterDoctypeSystemKeyword="missing-whitespace-after-doctype-system-keyword",X.missingQuoteBeforeDoctypePublicIdentifier="missing-quote-before-doctype-public-identifier",X.missingQuoteBeforeDoctypeSystemIdentifier="missing-quote-before-doctype-system-identifier",X.missingDoctypePublicIdentifier="missing-doctype-public-identifier",X.missingDoctypeSystemIdentifier="missing-doctype-system-identifier",X.abruptDoctypePublicIdentifier="abrupt-doctype-public-identifier",X.abruptDoctypeSystemIdentifier="abrupt-doctype-system-identifier",X.cdataInHtmlContent="cdata-in-html-content",X.incorrectlyOpenedComment="incorrectly-opened-comment",X.eofInScriptHtmlCommentLikeText="eof-in-script-html-comment-like-text",X.eofInDoctype="eof-in-doctype",X.nestedComment="nested-comment",X.abruptClosingOfEmptyComment="abrupt-closing-of-empty-comment",X.eofInComment="eof-in-comment",X.incorrectlyClosedComment="incorrectly-closed-comment",X.eofInCdata="eof-in-cdata",X.absenceOfDigitsInNumericCharacterReference="absence-of-digits-in-numeric-character-reference",X.nullCharacterReference="null-character-reference",X.surrogateCharacterReference="surrogate-character-reference",X.characterReferenceOutsideUnicodeRange="character-reference-outside-unicode-range",X.controlCharacterReference="control-character-reference",X.noncharacterCharacterReference="noncharacter-character-reference",X.missingWhitespaceBeforeDoctypeName="missing-whitespace-before-doctype-name",X.missingDoctypeName="missing-doctype-name",X.invalidCharacterSequenceAfterDoctypeName="invalid-character-sequence-after-doctype-name",X.duplicateAttribute="duplicate-attribute",X.nonConformingDoctype="non-conforming-doctype",X.missingDoctype="missing-doctype",X.misplacedDoctype="misplaced-doctype",X.endTagWithoutMatchingOpenElement="end-tag-without-matching-open-element",X.closingOfElementWithOpenChildElements="closing-of-element-with-open-child-elements",X.disallowedContentInNoscriptInHead="disallowed-content-in-noscript-in-head",X.openElementsLeftAfterEof="open-elements-left-after-eof",X.abandonedHeadElementChild="abandoned-head-element-child",X.misplacedStartTagForHeadElement="misplaced-start-tag-for-head-element",X.nestedNoscriptInHead="nested-noscript-in-head",X.eofInElementThatCanContainOnlyText="eof-in-element-that-can-contain-only-text"})(L||(L={}));var f9=65536;class s2{constructor(X){this.handler=X,this.html="",this.pos=-1,this.lastGapPos=-2,this.gapStack=[],this.skipNextNewLine=!1,this.lastChunkWritten=!1,this.endOfChunkHit=!1,this.bufferWaterline=f9,this.isEol=!1,this.lineStartPos=0,this.droppedBufferSize=0,this.line=1,this.lastErrOffset=-1}get col(){return this.pos-this.lineStartPos+Number(this.lastGapPos!==this.pos)}get offset(){return this.droppedBufferSize+this.pos}getError(X,Z){let{line:W,col:J,offset:K}=this,V=J+Z,H=K+Z;return{code:X,startLine:W,endLine:W,startCol:V,endCol:V,startOffset:H,endOffset:H}}_err(X){if(this.handler.onParseError&&this.lastErrOffset!==this.offset)this.lastErrOffset=this.offset,this.handler.onParseError(this.getError(X,0))}_addGap(){this.gapStack.push(this.lastGapPos),this.lastGapPos=this.pos}_processSurrogate(X){if(this.pos!==this.html.length-1){let Z=this.html.charCodeAt(this.pos+1);if(T3(Z))return this.pos++,this._addGap(),c3(X,Z)}else if(!this.lastChunkWritten)return this.endOfChunkHit=!0,Y.EOF;return this._err(L.surrogateInInputStream),X}willDropParsedChunk(){return this.pos>this.bufferWaterline}dropParsedChunk(){if(this.willDropParsedChunk())this.html=this.html.substring(this.pos),this.lineStartPos-=this.pos,this.droppedBufferSize+=this.pos,this.pos=0,this.lastGapPos=-2,this.gapStack.length=0}write(X,Z){if(this.html.length>0)this.html+=X;else this.html=X;this.endOfChunkHit=!1,this.lastChunkWritten=Z}insertHtmlAtCurrentPos(X){this.html=this.html.substring(0,this.pos+1)+X+this.html.substring(this.pos+1),this.endOfChunkHit=!1}startsWith(X,Z){if(this.pos+X.length>this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,!1;if(Z)return this.html.startsWith(X,this.pos);for(let W=0;W<X.length;W++)if((this.html.charCodeAt(this.pos+W)|32)!==X.charCodeAt(W))return!1;return!0}peek(X){let Z=this.pos+X;if(Z>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,Y.EOF;let W=this.html.charCodeAt(Z);return W===Y.CARRIAGE_RETURN?Y.LINE_FEED:W}advance(){if(this.pos++,this.isEol)this.isEol=!1,this.line++,this.lineStartPos=this.pos;if(this.pos>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,Y.EOF;let X=this.html.charCodeAt(this.pos);if(X===Y.CARRIAGE_RETURN)return this.isEol=!0,this.skipNextNewLine=!0,Y.LINE_FEED;if(X===Y.LINE_FEED){if(this.isEol=!0,this.skipNextNewLine)return this.line--,this.skipNextNewLine=!1,this._addGap(),this.advance()}if(this.skipNextNewLine=!1,S1(X))X=this._processSurrogate(X);if(!(this.handler.onParseError===null||X>31&&X<127||X===Y.LINE_FEED||X===Y.CARRIAGE_RETURN||X>159&&X<64976))this._checkForProblematicCharacters(X);return X}_checkForProblematicCharacters(X){if(u1(X))this._err(L.controlCharacterInInputStream);else if(l1(X))this._err(L.noncharacterInInputStream)}retreat(X){this.pos-=X;while(this.pos<this.lastGapPos)this.lastGapPos=this.gapStack.pop(),this.pos--;this.isEol=!1}}var k;(function(X){X[X.CHARACTER=0]="CHARACTER",X[X.NULL_CHARACTER=1]="NULL_CHARACTER",X[X.WHITESPACE_CHARACTER=2]="WHITESPACE_CHARACTER",X[X.START_TAG=3]="START_TAG",X[X.END_TAG=4]="END_TAG",X[X.COMMENT=5]="COMMENT",X[X.DOCTYPE=6]="DOCTYPE",X[X.EOF=7]="EOF",X[X.HIBERNATION=8]="HIBERNATION"})(k||(k={}));function A1(X,Z){for(let W=X.attrs.length-1;W>=0;W--)if(X.attrs[W].name===Z)return X.attrs[W].value;return null}var h9=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]);function a3(X){if(X>=55296&&X<=57343||X>1114111)return 65533;return h9.get(X)??X}function d3(X){let Z=atob(X),W=Z.length&-2,J=new Uint16Array(W/2);for(let K=0,V=0;K<W;K+=2){let H=Z.charCodeAt(K),U=Z.charCodeAt(K+1);J[V++]=H|U<<8}return J}var r2=d3("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IA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YwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWls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ZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg");var r;(function(X){X[X.VALUE_LENGTH=49152]="VALUE_LENGTH",X[X.FLAG13=8192]="FLAG13",X[X.BRANCH_LENGTH=8064]="BRANCH_LENGTH",X[X.JUMP_TABLE=127]="JUMP_TABLE"})(r||(r={}));var c;(function(X){X[X.NUM=35]="NUM",X[X.SEMI=59]="SEMI",X[X.EQUALS=61]="EQUALS",X[X.ZERO=48]="ZERO",X[X.NINE=57]="NINE",X[X.LOWER_A=97]="LOWER_A",X[X.LOWER_F=102]="LOWER_F",X[X.LOWER_X=120]="LOWER_X",X[X.LOWER_Z=122]="LOWER_Z",X[X.UPPER_A=65]="UPPER_A",X[X.UPPER_F=70]="UPPER_F",X[X.UPPER_Z=90]="UPPER_Z"})(c||(c={}));var i3=32;function o2(X){return X>=c.ZERO&&X<=c.NINE}function N9(X){return X>=c.UPPER_A&&X<=c.UPPER_F||X>=c.LOWER_A&&X<=c.LOWER_F}function M9(X){return X>=c.UPPER_A&&X<=c.UPPER_Z||X>=c.LOWER_A&&X<=c.LOWER_Z||o2(X)}function g9(X){return X===c.EQUALS||M9(X)}var p;(function(X){X[X.EntityStart=0]="EntityStart",X[X.NumericStart=1]="NumericStart",X[X.NumericDecimal=2]="NumericDecimal",X[X.NumericHex=3]="NumericHex",X[X.NamedEntity=4]="NamedEntity"})(p||(p={}));var F0;(function(X){X[X.Legacy=0]="Legacy",X[X.Strict=1]="Strict",X[X.Attribute=2]="Attribute"})(F0||(F0={}));class n2{decodeTree;emitCodePoint;errors;constructor(X,Z,W){this.decodeTree=X,this.emitCodePoint=Z,this.errors=W}state=p.EntityStart;consumed=1;result=0;treeIndex=0;excess=1;decodeMode=F0.Strict;runConsumed=0;startEntity(X){this.decodeMode=X,this.state=p.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(X,Z){switch(this.state){case p.EntityStart:{if(X.charCodeAt(Z)===c.NUM)return this.state=p.NumericStart,this.consumed+=1,this.stateNumericStart(X,Z+1);return this.state=p.NamedEntity,this.stateNamedEntity(X,Z)}case p.NumericStart:return this.stateNumericStart(X,Z);case p.NumericDecimal:return this.stateNumericDecimal(X,Z);case p.NumericHex:return this.stateNumericHex(X,Z);case p.NamedEntity:return this.stateNamedEntity(X,Z)}}stateNumericStart(X,Z){if(Z>=X.length)return-1;if((X.charCodeAt(Z)|i3)===c.LOWER_X)return this.state=p.NumericHex,this.consumed+=1,this.stateNumericHex(X,Z+1);return this.state=p.NumericDecimal,this.stateNumericDecimal(X,Z)}stateNumericHex(X,Z){while(Z<X.length){let W=X.charCodeAt(Z);if(o2(W)||N9(W)){let J=W<=c.NINE?W-c.ZERO:(W|i3)-c.LOWER_A+10;this.result=this.result*16+J,this.consumed++,Z++}else return this.emitNumericEntity(W,3)}return-1}stateNumericDecimal(X,Z){while(Z<X.length){let W=X.charCodeAt(Z);if(o2(W))this.result=this.result*10+(W-c.ZERO),this.consumed++,Z++;else return this.emitNumericEntity(W,2)}return-1}emitNumericEntity(X,Z){if(this.consumed<=Z)return this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(X===c.SEMI)this.consumed+=1;else if(this.decodeMode===F0.Strict)return 0;if(this.emitCodePoint(a3(this.result),this.consumed),this.errors){if(X!==c.SEMI)this.errors.missingSemicolonAfterCharacterReference();this.errors.validateNumericCharacterReference(this.result)}return this.consumed}stateNamedEntity(X,Z){let{decodeTree:W}=this,J=W[this.treeIndex],K=(J&r.VALUE_LENGTH)>>14;while(Z<X.length){if(K===0&&(J&r.FLAG13)!==0){let H=(J&r.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let U=J&r.JUMP_TABLE;if(X.charCodeAt(Z)!==U)return this.result===0?0:this.emitNotTerminatedNamedEntity();Z++,this.excess++,this.runConsumed++}while(this.runConsumed<H){if(Z>=X.length)return-1;let U=this.runConsumed-1,F=W[this.treeIndex+1+(U>>1)],w=U%2===0?F&255:F>>8&255;if(X.charCodeAt(Z)!==w)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();Z++,this.excess++,this.runConsumed++}this.runConsumed=0,this.treeIndex+=1+(H>>1),J=W[this.treeIndex],K=(J&r.VALUE_LENGTH)>>14}if(Z>=X.length)break;let V=X.charCodeAt(Z);if(V===c.SEMI&&K!==0&&(J&r.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,K,this.consumed+this.excess);if(this.treeIndex=D9(W,J,this.treeIndex+Math.max(1,K),V),this.treeIndex<0)return this.result===0||this.decodeMode===F0.Attribute&&(K===0||g9(V))?0:this.emitNotTerminatedNamedEntity();if(J=W[this.treeIndex],K=(J&r.VALUE_LENGTH)>>14,K!==0){if(V===c.SEMI)return this.emitNamedEntityData(this.treeIndex,K,this.consumed+this.excess);if(this.decodeMode!==F0.Strict&&(J&r.FLAG13)===0)this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0}Z++,this.excess++}return-1}emitNotTerminatedNamedEntity(){let{result:X,decodeTree:Z}=this,W=(Z[X]&r.VALUE_LENGTH)>>14;return this.emitNamedEntityData(X,W,this.consumed),this.errors?.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(X,Z,W){let{decodeTree:J}=this;if(this.emitCodePoint(Z===1?J[X]&~(r.VALUE_LENGTH|r.FLAG13):J[X+1],W),Z===3)this.emitCodePoint(J[X+2],W);return W}end(){switch(this.state){case p.NamedEntity:return this.result!==0&&(this.decodeMode!==F0.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case p.NumericDecimal:return this.emitNumericEntity(0,2);case p.NumericHex:return this.emitNumericEntity(0,3);case p.NumericStart:return this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case p.EntityStart:return 0}}}function D9(X,Z,W,J){let K=(Z&r.BRANCH_LENGTH)>>7,V=Z&r.JUMP_TABLE;if(K===0)return V!==0&&J===V?W:-1;if(V){let w=J-V;return w<0||w>=K?-1:X[W+w]-1}let H=K+1>>1,U=0,F=K-1;while(U<=F){let w=U+F>>>1,q=w>>1,O=X[W+q]>>(w&1)*8&255;if(O<J)U=w+1;else if(O>J)F=w-1;else return X[W+H+w]}return-1}var P;(function(X){X.HTML="http://www.w3.org/1999/xhtml",X.MATHML="http://www.w3.org/1998/Math/MathML",X.SVG="http://www.w3.org/2000/svg",X.XLINK="http://www.w3.org/1999/xlink",X.XML="http://www.w3.org/XML/1998/namespace",X.XMLNS="http://www.w3.org/2000/xmlns/"})(P||(P={}));var P0;(function(X){X.TYPE="type",X.ACTION="action",X.ENCODING="encoding",X.PROMPT="prompt",X.NAME="name",X.COLOR="color",X.FACE="face",X.SIZE="size"})(P0||(P0={}));var e;(function(X){X.NO_QUIRKS="no-quirks",X.QUIRKS="quirks",X.LIMITED_QUIRKS="limited-quirks"})(e||(e={}));var B;(function(X){X.A="a",X.ADDRESS="address",X.ANNOTATION_XML="annotation-xml",X.APPLET="applet",X.AREA="area",X.ARTICLE="article",X.ASIDE="aside",X.B="b",X.BASE="base",X.BASEFONT="basefont",X.BGSOUND="bgsound",X.BIG="big",X.BLOCKQUOTE="blockquote",X.BODY="body",X.BR="br",X.BUTTON="button",X.CAPTION="caption",X.CENTER="center",X.CODE="code",X.COL="col",X.COLGROUP="colgroup",X.DD="dd",X.DESC="desc",X.DETAILS="details",X.DIALOG="dialog",X.DIR="dir",X.DIV="div",X.DL="dl",X.DT="dt",X.EM="em",X.EMBED="embed",X.FIELDSET="fieldset",X.FIGCAPTION="figcaption",X.FIGURE="figure",X.FONT="font",X.FOOTER="footer",X.FOREIGN_OBJECT="foreignObject",X.FORM="form",X.FRAME="frame",X.FRAMESET="frameset",X.H1="h1",X.H2="h2",X.H3="h3",X.H4="h4",X.H5="h5",X.H6="h6",X.HEAD="head",X.HEADER="header",X.HGROUP="hgroup",X.HR="hr",X.HTML="html",X.I="i",X.IMG="img",X.IMAGE="image",X.INPUT="input",X.IFRAME="iframe",X.KEYGEN="keygen",X.LABEL="label",X.LI="li",X.LINK="link",X.LISTING="listing",X.MAIN="main",X.MALIGNMARK="malignmark",X.MARQUEE="marquee",X.MATH="math",X.MENU="menu",X.META="meta",X.MGLYPH="mglyph",X.MI="mi",X.MO="mo",X.MN="mn",X.MS="ms",X.MTEXT="mtext",X.NAV="nav",X.NOBR="nobr",X.NOFRAMES="noframes",X.NOEMBED="noembed",X.NOSCRIPT="noscript",X.OBJECT="object",X.OL="ol",X.OPTGROUP="optgroup",X.OPTION="option",X.P="p",X.PARAM="param",X.PLAINTEXT="plaintext",X.PRE="pre",X.RB="rb",X.RP="rp",X.RT="rt",X.RTC="rtc",X.RUBY="ruby",X.S="s",X.SCRIPT="script",X.SEARCH="search",X.SECTION="section",X.SELECT="select",X.SOURCE="source",X.SMALL="small",X.SPAN="span",X.STRIKE="strike",X.STRONG="strong",X.STYLE="style",X.SUB="sub",X.SUMMARY="summary",X.SUP="sup",X.TABLE="table",X.TBODY="tbody",X.TEMPLATE="template",X.TEXTAREA="textarea",X.TFOOT="tfoot",X.TD="td",X.TH="th",X.THEAD="thead",X.TITLE="title",X.TR="tr",X.TRACK="track",X.TT="tt",X.U="u",X.UL="ul",X.SVG="svg",X.VAR="var",X.WBR="wbr",X.XMP="xmp"})(B||(B={}));var Q;(function(X){X[X.UNKNOWN=0]="UNKNOWN",X[X.A=1]="A",X[X.ADDRESS=2]="ADDRESS",X[X.ANNOTATION_XML=3]="ANNOTATION_XML",X[X.APPLET=4]="APPLET",X[X.AREA=5]="AREA",X[X.ARTICLE=6]="ARTICLE",X[X.ASIDE=7]="ASIDE",X[X.B=8]="B",X[X.BASE=9]="BASE",X[X.BASEFONT=10]="BASEFONT",X[X.BGSOUND=11]="BGSOUND",X[X.BIG=12]="BIG",X[X.BLOCKQUOTE=13]="BLOCKQUOTE",X[X.BODY=14]="BODY",X[X.BR=15]="BR",X[X.BUTTON=16]="BUTTON",X[X.CAPTION=17]="CAPTION",X[X.CENTER=18]="CENTER",X[X.CODE=19]="CODE",X[X.COL=20]="COL",X[X.COLGROUP=21]="COLGROUP",X[X.DD=22]="DD",X[X.DESC=23]="DESC",X[X.DETAILS=24]="DETAILS",X[X.DIALOG=25]="DIALOG",X[X.DIR=26]="DIR",X[X.DIV=27]="DIV",X[X.DL=28]="DL",X[X.DT=29]="DT",X[X.EM=30]="EM",X[X.EMBED=31]="EMBED",X[X.FIELDSET=32]="FIELDSET",X[X.FIGCAPTION=33]="FIGCAPTION",X[X.FIGURE=34]="FIGURE",X[X.FONT=35]="FONT",X[X.FOOTER=36]="FOOTER",X[X.FOREIGN_OBJECT=37]="FOREIGN_OBJECT",X[X.FORM=38]="FORM",X[X.FRAME=39]="FRAME",X[X.FRAMESET=40]="FRAMESET",X[X.H1=41]="H1",X[X.H2=42]="H2",X[X.H3=43]="H3",X[X.H4=44]="H4",X[X.H5=45]="H5",X[X.H6=46]="H6",X[X.HEAD=47]="HEAD",X[X.HEADER=48]="HEADER",X[X.HGROUP=49]="HGROUP",X[X.HR=50]="HR",X[X.HTML=51]="HTML",X[X.I=52]="I",X[X.IMG=53]="IMG",X[X.IMAGE=54]="IMAGE",X[X.INPUT=55]="INPUT",X[X.IFRAME=56]="IFRAME",X[X.KEYGEN=57]="KEYGEN",X[X.LABEL=58]="LABEL",X[X.LI=59]="LI",X[X.LINK=60]="LINK",X[X.LISTING=61]="LISTING",X[X.MAIN=62]="MAIN",X[X.MALIGNMARK=63]="MALIGNMARK",X[X.MARQUEE=64]="MARQUEE",X[X.MATH=65]="MATH",X[X.MENU=66]="MENU",X[X.META=67]="META",X[X.MGLYPH=68]="MGLYPH",X[X.MI=69]="MI",X[X.MO=70]="MO",X[X.MN=71]="MN",X[X.MS=72]="MS",X[X.MTEXT=73]="MTEXT",X[X.NAV=74]="NAV",X[X.NOBR=75]="NOBR",X[X.NOFRAMES=76]="NOFRAMES",X[X.NOEMBED=77]="NOEMBED",X[X.NOSCRIPT=78]="NOSCRIPT",X[X.OBJECT=79]="OBJECT",X[X.OL=80]="OL",X[X.OPTGROUP=81]="OPTGROUP",X[X.OPTION=82]="OPTION",X[X.P=83]="P",X[X.PARAM=84]="PARAM",X[X.PLAINTEXT=85]="PLAINTEXT",X[X.PRE=86]="PRE",X[X.RB=87]="RB",X[X.RP=88]="RP",X[X.RT=89]="RT",X[X.RTC=90]="RTC",X[X.RUBY=91]="RUBY",X[X.S=92]="S",X[X.SCRIPT=93]="SCRIPT",X[X.SEARCH=94]="SEARCH",X[X.SECTION=95]="SECTION",X[X.SELECT=96]="SELECT",X[X.SOURCE=97]="SOURCE",X[X.SMALL=98]="SMALL",X[X.SPAN=99]="SPAN",X[X.STRIKE=100]="STRIKE",X[X.STRONG=101]="STRONG",X[X.STYLE=102]="STYLE",X[X.SUB=103]="SUB",X[X.SUMMARY=104]="SUMMARY",X[X.SUP=105]="SUP",X[X.TABLE=106]="TABLE",X[X.TBODY=107]="TBODY",X[X.TEMPLATE=108]="TEMPLATE",X[X.TEXTAREA=109]="TEXTAREA",X[X.TFOOT=110]="TFOOT",X[X.TD=111]="TD",X[X.TH=112]="TH",X[X.THEAD=113]="THEAD",X[X.TITLE=114]="TITLE",X[X.TR=115]="TR",X[X.TRACK=116]="TRACK",X[X.TT=117]="TT",X[X.U=118]="U",X[X.UL=119]="UL",X[X.SVG=120]="SVG",X[X.VAR=121]="VAR",X[X.WBR=122]="WBR",X[X.XMP=123]="XMP"})(Q||(Q={}));var $9=new Map([[B.A,Q.A],[B.ADDRESS,Q.ADDRESS],[B.ANNOTATION_XML,Q.ANNOTATION_XML],[B.APPLET,Q.APPLET],[B.AREA,Q.AREA],[B.ARTICLE,Q.ARTICLE],[B.ASIDE,Q.ASIDE],[B.B,Q.B],[B.BASE,Q.BASE],[B.BASEFONT,Q.BASEFONT],[B.BGSOUND,Q.BGSOUND],[B.BIG,Q.BIG],[B.BLOCKQUOTE,Q.BLOCKQUOTE],[B.BODY,Q.BODY],[B.BR,Q.BR],[B.BUTTON,Q.BUTTON],[B.CAPTION,Q.CAPTION],[B.CENTER,Q.CENTER],[B.CODE,Q.CODE],[B.COL,Q.COL],[B.COLGROUP,Q.COLGROUP],[B.DD,Q.DD],[B.DESC,Q.DESC],[B.DETAILS,Q.DETAILS],[B.DIALOG,Q.DIALOG],[B.DIR,Q.DIR],[B.DIV,Q.DIV],[B.DL,Q.DL],[B.DT,Q.DT],[B.EM,Q.EM],[B.EMBED,Q.EMBED],[B.FIELDSET,Q.FIELDSET],[B.FIGCAPTION,Q.FIGCAPTION],[B.FIGURE,Q.FIGURE],[B.FONT,Q.FONT],[B.FOOTER,Q.FOOTER],[B.FOREIGN_OBJECT,Q.FOREIGN_OBJECT],[B.FORM,Q.FORM],[B.FRAME,Q.FRAME],[B.FRAMESET,Q.FRAMESET],[B.H1,Q.H1],[B.H2,Q.H2],[B.H3,Q.H3],[B.H4,Q.H4],[B.H5,Q.H5],[B.H6,Q.H6],[B.HEAD,Q.HEAD],[B.HEADER,Q.HEADER],[B.HGROUP,Q.HGROUP],[B.HR,Q.HR],[B.HTML,Q.HTML],[B.I,Q.I],[B.IMG,Q.IMG],[B.IMAGE,Q.IMAGE],[B.INPUT,Q.INPUT],[B.IFRAME,Q.IFRAME],[B.KEYGEN,Q.KEYGEN],[B.LABEL,Q.LABEL],[B.LI,Q.LI],[B.LINK,Q.LINK],[B.LISTING,Q.LISTING],[B.MAIN,Q.MAIN],[B.MALIGNMARK,Q.MALIGNMARK],[B.MARQUEE,Q.MARQUEE],[B.MATH,Q.MATH],[B.MENU,Q.MENU],[B.META,Q.META],[B.MGLYPH,Q.MGLYPH],[B.MI,Q.MI],[B.MO,Q.MO],[B.MN,Q.MN],[B.MS,Q.MS],[B.MTEXT,Q.MTEXT],[B.NAV,Q.NAV],[B.NOBR,Q.NOBR],[B.NOFRAMES,Q.NOFRAMES],[B.NOEMBED,Q.NOEMBED],[B.NOSCRIPT,Q.NOSCRIPT],[B.OBJECT,Q.OBJECT],[B.OL,Q.OL],[B.OPTGROUP,Q.OPTGROUP],[B.OPTION,Q.OPTION],[B.P,Q.P],[B.PARAM,Q.PARAM],[B.PLAINTEXT,Q.PLAINTEXT],[B.PRE,Q.PRE],[B.RB,Q.RB],[B.RP,Q.RP],[B.RT,Q.RT],[B.RTC,Q.RTC],[B.RUBY,Q.RUBY],[B.S,Q.S],[B.SCRIPT,Q.SCRIPT],[B.SEARCH,Q.SEARCH],[B.SECTION,Q.SECTION],[B.SELECT,Q.SELECT],[B.SOURCE,Q.SOURCE],[B.SMALL,Q.SMALL],[B.SPAN,Q.SPAN],[B.STRIKE,Q.STRIKE],[B.STRONG,Q.STRONG],[B.STYLE,Q.STYLE],[B.SUB,Q.SUB],[B.SUMMARY,Q.SUMMARY],[B.SUP,Q.SUP],[B.TABLE,Q.TABLE],[B.TBODY,Q.TBODY],[B.TEMPLATE,Q.TEMPLATE],[B.TEXTAREA,Q.TEXTAREA],[B.TFOOT,Q.TFOOT],[B.TD,Q.TD],[B.TH,Q.TH],[B.THEAD,Q.THEAD],[B.TITLE,Q.TITLE],[B.TR,Q.TR],[B.TRACK,Q.TRACK],[B.TT,Q.TT],[B.U,Q.U],[B.UL,Q.UL],[B.SVG,Q.SVG],[B.VAR,Q.VAR],[B.WBR,Q.WBR],[B.XMP,Q.XMP]]);function $0(X){var Z;return(Z=$9.get(X))!==null&&Z!==void 0?Z:Q.UNKNOWN}var R=Q,p3={[P.HTML]:new Set([R.ADDRESS,R.APPLET,R.AREA,R.ARTICLE,R.ASIDE,R.BASE,R.BASEFONT,R.BGSOUND,R.BLOCKQUOTE,R.BODY,R.BR,R.BUTTON,R.CAPTION,R.CENTER,R.COL,R.COLGROUP,R.DD,R.DETAILS,R.DIR,R.DIV,R.DL,R.DT,R.EMBED,R.FIELDSET,R.FIGCAPTION,R.FIGURE,R.FOOTER,R.FORM,R.FRAME,R.FRAMESET,R.H1,R.H2,R.H3,R.H4,R.H5,R.H6,R.HEAD,R.HEADER,R.HGROUP,R.HR,R.HTML,R.IFRAME,R.IMG,R.INPUT,R.LI,R.LINK,R.LISTING,R.MAIN,R.MARQUEE,R.MENU,R.META,R.NAV,R.NOEMBED,R.NOFRAMES,R.NOSCRIPT,R.OBJECT,R.OL,R.P,R.PARAM,R.PLAINTEXT,R.PRE,R.SCRIPT,R.SECTION,R.SELECT,R.SOURCE,R.STYLE,R.SUMMARY,R.TABLE,R.TBODY,R.TD,R.TEMPLATE,R.TEXTAREA,R.TFOOT,R.TH,R.THEAD,R.TITLE,R.TR,R.TRACK,R.UL,R.WBR,R.XMP]),[P.MATHML]:new Set([R.MI,R.MO,R.MN,R.MS,R.MTEXT,R.ANNOTATION_XML]),[P.SVG]:new Set([R.TITLE,R.FOREIGN_OBJECT,R.DESC]),[P.XLINK]:new Set,[P.XML]:new Set,[P.XMLNS]:new Set},Z1=new Set([R.H1,R.H2,R.H3,R.H4,R.H5,R.H6]),G9=new Set([B.STYLE,B.SCRIPT,B.XMP,B.IFRAME,B.NOEMBED,B.NOFRAMES,B.PLAINTEXT]);function s3(X,Z){return G9.has(X)||Z&&X===B.NOSCRIPT}var z;(function(X){X[X.DATA=0]="DATA",X[X.RCDATA=1]="RCDATA",X[X.RAWTEXT=2]="RAWTEXT",X[X.SCRIPT_DATA=3]="SCRIPT_DATA",X[X.PLAINTEXT=4]="PLAINTEXT",X[X.TAG_OPEN=5]="TAG_OPEN",X[X.END_TAG_OPEN=6]="END_TAG_OPEN",X[X.TAG_NAME=7]="TAG_NAME",X[X.RCDATA_LESS_THAN_SIGN=8]="RCDATA_LESS_THAN_SIGN",X[X.RCDATA_END_TAG_OPEN=9]="RCDATA_END_TAG_OPEN",X[X.RCDATA_END_TAG_NAME=10]="RCDATA_END_TAG_NAME",X[X.RAWTEXT_LESS_THAN_SIGN=11]="RAWTEXT_LESS_THAN_SIGN",X[X.RAWTEXT_END_TAG_OPEN=12]="RAWTEXT_END_TAG_OPEN",X[X.RAWTEXT_END_TAG_NAME=13]="RAWTEXT_END_TAG_NAME",X[X.SCRIPT_DATA_LESS_THAN_SIGN=14]="SCRIPT_DATA_LESS_THAN_SIGN",X[X.SCRIPT_DATA_END_TAG_OPEN=15]="SCRIPT_DATA_END_TAG_OPEN",X[X.SCRIPT_DATA_END_TAG_NAME=16]="SCRIPT_DATA_END_TAG_NAME",X[X.SCRIPT_DATA_ESCAPE_START=17]="SCRIPT_DATA_ESCAPE_START",X[X.SCRIPT_DATA_ESCAPE_START_DASH=18]="SCRIPT_DATA_ESCAPE_START_DASH",X[X.SCRIPT_DATA_ESCAPED=19]="SCRIPT_DATA_ESCAPED",X[X.SCRIPT_DATA_ESCAPED_DASH=20]="SCRIPT_DATA_ESCAPED_DASH",X[X.SCRIPT_DATA_ESCAPED_DASH_DASH=21]="SCRIPT_DATA_ESCAPED_DASH_DASH",X[X.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN=22]="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN",X[X.SCRIPT_DATA_ESCAPED_END_TAG_OPEN=23]="SCRIPT_DATA_ESCAPED_END_TAG_OPEN",X[X.SCRIPT_DATA_ESCAPED_END_TAG_NAME=24]="SCRIPT_DATA_ESCAPED_END_TAG_NAME",X[X.SCRIPT_DATA_DOUBLE_ESCAPE_START=25]="SCRIPT_DATA_DOUBLE_ESCAPE_START",X[X.SCRIPT_DATA_DOUBLE_ESCAPED=26]="SCRIPT_DATA_DOUBLE_ESCAPED",X[X.SCRIPT_DATA_DOUBLE_ESCAPED_DASH=27]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH",X[X.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH=28]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH",X[X.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN=29]="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN",X[X.SCRIPT_DATA_DOUBLE_ESCAPE_END=30]="SCRIPT_DATA_DOUBLE_ESCAPE_END",X[X.BEFORE_ATTRIBUTE_NAME=31]="BEFORE_ATTRIBUTE_NAME",X[X.ATTRIBUTE_NAME=32]="ATTRIBUTE_NAME",X[X.AFTER_ATTRIBUTE_NAME=33]="AFTER_ATTRIBUTE_NAME",X[X.BEFORE_ATTRIBUTE_VALUE=34]="BEFORE_ATTRIBUTE_VALUE",X[X.ATTRIBUTE_VALUE_DOUBLE_QUOTED=35]="ATTRIBUTE_VALUE_DOUBLE_QUOTED",X[X.ATTRIBUTE_VALUE_SINGLE_QUOTED=36]="ATTRIBUTE_VALUE_SINGLE_QUOTED",X[X.ATTRIBUTE_VALUE_UNQUOTED=37]="ATTRIBUTE_VALUE_UNQUOTED",X[X.AFTER_ATTRIBUTE_VALUE_QUOTED=38]="AFTER_ATTRIBUTE_VALUE_QUOTED",X[X.SELF_CLOSING_START_TAG=39]="SELF_CLOSING_START_TAG",X[X.BOGUS_COMMENT=40]="BOGUS_COMMENT",X[X.MARKUP_DECLARATION_OPEN=41]="MARKUP_DECLARATION_OPEN",X[X.COMMENT_START=42]="COMMENT_START",X[X.COMMENT_START_DASH=43]="COMMENT_START_DASH",X[X.COMMENT=44]="COMMENT",X[X.COMMENT_LESS_THAN_SIGN=45]="COMMENT_LESS_THAN_SIGN",X[X.COMMENT_LESS_THAN_SIGN_BANG=46]="COMMENT_LESS_THAN_SIGN_BANG",X[X.COMMENT_LESS_THAN_SIGN_BANG_DASH=47]="COMMENT_LESS_THAN_SIGN_BANG_DASH",X[X.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH=48]="COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH",X[X.COMMENT_END_DASH=49]="COMMENT_END_DASH",X[X.COMMENT_END=50]="COMMENT_END",X[X.COMMENT_END_BANG=51]="COMMENT_END_BANG",X[X.DOCTYPE=52]="DOCTYPE",X[X.BEFORE_DOCTYPE_NAME=53]="BEFORE_DOCTYPE_NAME",X[X.DOCTYPE_NAME=54]="DOCTYPE_NAME",X[X.AFTER_DOCTYPE_NAME=55]="AFTER_DOCTYPE_NAME",X[X.AFTER_DOCTYPE_PUBLIC_KEYWORD=56]="AFTER_DOCTYPE_PUBLIC_KEYWORD",X[X.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER=57]="BEFORE_DOCTYPE_PUBLIC_IDENTIFIER",X[X.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED=58]="DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED",X[X.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED=59]="DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED",X[X.AFTER_DOCTYPE_PUBLIC_IDENTIFIER=60]="AFTER_DOCTYPE_PUBLIC_IDENTIFIER",X[X.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS=61]="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS",X[X.AFTER_DOCTYPE_SYSTEM_KEYWORD=62]="AFTER_DOCTYPE_SYSTEM_KEYWORD",X[X.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER=63]="BEFORE_DOCTYPE_SYSTEM_IDENTIFIER",X[X.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED=64]="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED",X[X.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED=65]="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED",X[X.AFTER_DOCTYPE_SYSTEM_IDENTIFIER=66]="AFTER_DOCTYPE_SYSTEM_IDENTIFIER",X[X.BOGUS_DOCTYPE=67]="BOGUS_DOCTYPE",X[X.CDATA_SECTION=68]="CDATA_SECTION",X[X.CDATA_SECTION_BRACKET=69]="CDATA_SECTION_BRACKET",X[X.CDATA_SECTION_END=70]="CDATA_SECTION_END",X[X.CHARACTER_REFERENCE=71]="CHARACTER_REFERENCE",X[X.AMBIGUOUS_AMPERSAND=72]="AMBIGUOUS_AMPERSAND"})(z||(z={}));var o={DATA:z.DATA,RCDATA:z.RCDATA,RAWTEXT:z.RAWTEXT,SCRIPT_DATA:z.SCRIPT_DATA,PLAINTEXT:z.PLAINTEXT,CDATA_SECTION:z.CDATA_SECTION};function E9(X){return X>=Y.DIGIT_0&&X<=Y.DIGIT_9}function W1(X){return X>=Y.LATIN_CAPITAL_A&&X<=Y.LATIN_CAPITAL_Z}function k9(X){return X>=Y.LATIN_SMALL_A&&X<=Y.LATIN_SMALL_Z}function b0(X){return k9(X)||W1(X)}function r3(X){return b0(X)||E9(X)}function T1(X){return X+32}function n3(X){return X===Y.SPACE||X===Y.LINE_FEED||X===Y.TABULATION||X===Y.FORM_FEED}function o3(X){return n3(X)||X===Y.SOLIDUS||X===Y.GREATER_THAN_SIGN}function _9(X){if(X===Y.NULL)return L.nullCharacterReference;else if(X>1114111)return L.characterReferenceOutsideUnicodeRange;else if(S1(X))return L.surrogateCharacterReference;else if(l1(X))return L.noncharacterCharacterReference;else if(u1(X)||X===Y.CARRIAGE_RETURN)return L.controlCharacterReference;return null}class c1{constructor(X,Z){this.options=X,this.handler=Z,this.paused=!1,this.inLoop=!1,this.inForeignNode=!1,this.lastStartTagName="",this.active=!1,this.state=z.DATA,this.returnState=z.DATA,this.entityStartPos=0,this.consumedAfterSnapshot=-1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr={name:"",value:""},this.preprocessor=new s2(Z),this.currentLocation=this.getCurrentLocation(-1),this.entityDecoder=new n2(r2,(W,J)=>{this.preprocessor.pos=this.entityStartPos+J-1,this._flushCodePointConsumedAsCharacterReference(W)},Z.onParseError?{missingSemicolonAfterCharacterReference:()=>{this._err(L.missingSemicolonAfterCharacterReference,1)},absenceOfDigitsInNumericCharacterReference:(W)=>{this._err(L.absenceOfDigitsInNumericCharacterReference,this.entityStartPos-this.preprocessor.pos+W)},validateNumericCharacterReference:(W)=>{let J=_9(W);if(J)this._err(J,1)}}:void 0)}_err(X,Z=0){var W,J;(J=(W=this.handler).onParseError)===null||J===void 0||J.call(W,this.preprocessor.getError(X,Z))}getCurrentLocation(X){if(!this.options.sourceCodeLocationInfo)return null;return{startLine:this.preprocessor.line,startCol:this.preprocessor.col-X,startOffset:this.preprocessor.offset-X,endLine:-1,endCol:-1,endOffset:-1}}_runParsingLoop(){if(this.inLoop)return;this.inLoop=!0;while(this.active&&!this.paused){this.consumedAfterSnapshot=0;let X=this._consume();if(!this._ensureHibernation())this._callState(X)}this.inLoop=!1}pause(){this.paused=!0}resume(X){if(!this.paused)throw Error("Parser was already resumed");if(this.paused=!1,this.inLoop)return;if(this._runParsingLoop(),!this.paused)X===null||X===void 0||X()}write(X,Z,W){if(this.active=!0,this.preprocessor.write(X,Z),this._runParsingLoop(),!this.paused)W===null||W===void 0||W()}insertHtmlAtCurrentPos(X){this.active=!0,this.preprocessor.insertHtmlAtCurrentPos(X),this._runParsingLoop()}_ensureHibernation(){if(this.preprocessor.endOfChunkHit)return this.preprocessor.retreat(this.consumedAfterSnapshot),this.consumedAfterSnapshot=0,this.active=!1,!0;return!1}_consume(){return this.consumedAfterSnapshot++,this.preprocessor.advance()}_advanceBy(X){this.consumedAfterSnapshot+=X;for(let Z=0;Z<X;Z++)this.preprocessor.advance()}_consumeSequenceIfMatch(X,Z){if(this.preprocessor.startsWith(X,Z))return this._advanceBy(X.length-1),!0;return!1}_createStartTagToken(){this.currentToken={type:k.START_TAG,tagName:"",tagID:Q.UNKNOWN,selfClosing:!1,ackSelfClosing:!1,attrs:[],location:this.getCurrentLocation(1)}}_createEndTagToken(){this.currentToken={type:k.END_TAG,tagName:"",tagID:Q.UNKNOWN,selfClosing:!1,ackSelfClosing:!1,attrs:[],location:this.getCurrentLocation(2)}}_createCommentToken(X){this.currentToken={type:k.COMMENT,data:"",location:this.getCurrentLocation(X)}}_createDoctypeToken(X){this.currentToken={type:k.DOCTYPE,name:X,forceQuirks:!1,publicId:null,systemId:null,location:this.currentLocation}}_createCharacterToken(X,Z){this.currentCharacterToken={type:X,chars:Z,location:this.currentLocation}}_createAttr(X){this.currentAttr={name:X,value:""},this.currentLocation=this.getCurrentLocation(0)}_leaveAttrName(){var X,Z;let W=this.currentToken;if(A1(W,this.currentAttr.name)===null){if(W.attrs.push(this.currentAttr),W.location&&this.currentLocation){let J=(X=(Z=W.location).attrs)!==null&&X!==void 0?X:Z.attrs=Object.create(null);J[this.currentAttr.name]=this.currentLocation,this._leaveAttrValue()}}else this._err(L.duplicateAttribute)}_leaveAttrValue(){if(this.currentLocation)this.currentLocation.endLine=this.preprocessor.line,this.currentLocation.endCol=this.preprocessor.col,this.currentLocation.endOffset=this.preprocessor.offset}prepareToken(X){if(this._emitCurrentCharacterToken(X.location),this.currentToken=null,X.location)X.location.endLine=this.preprocessor.line,X.location.endCol=this.preprocessor.col+1,X.location.endOffset=this.preprocessor.offset+1;this.currentLocation=this.getCurrentLocation(-1)}emitCurrentTagToken(){let X=this.currentToken;if(this.prepareToken(X),X.tagID=$0(X.tagName),X.type===k.START_TAG)this.lastStartTagName=X.tagName,this.handler.onStartTag(X);else{if(X.attrs.length>0)this._err(L.endTagWithAttributes);if(X.selfClosing)this._err(L.endTagWithTrailingSolidus);this.handler.onEndTag(X)}this.preprocessor.dropParsedChunk()}emitCurrentComment(X){this.prepareToken(X),this.handler.onComment(X),this.preprocessor.dropParsedChunk()}emitCurrentDoctype(X){this.prepareToken(X),this.handler.onDoctype(X),this.preprocessor.dropParsedChunk()}_emitCurrentCharacterToken(X){if(this.currentCharacterToken){if(X&&this.currentCharacterToken.location)this.currentCharacterToken.location.endLine=X.startLine,this.currentCharacterToken.location.endCol=X.startCol,this.currentCharacterToken.location.endOffset=X.startOffset;switch(this.currentCharacterToken.type){case k.CHARACTER:{this.handler.onCharacter(this.currentCharacterToken);break}case k.NULL_CHARACTER:{this.handler.onNullCharacter(this.currentCharacterToken);break}case k.WHITESPACE_CHARACTER:{this.handler.onWhitespaceCharacter(this.currentCharacterToken);break}}this.currentCharacterToken=null}}_emitEOFToken(){let X=this.getCurrentLocation(0);if(X)X.endLine=X.startLine,X.endCol=X.startCol,X.endOffset=X.startOffset;this._emitCurrentCharacterToken(X),this.handler.onEof({type:k.EOF,location:X}),this.active=!1}_appendCharToCurrentCharacterToken(X,Z){if(this.currentCharacterToken)if(this.currentCharacterToken.type===X){this.currentCharacterToken.chars+=Z;return}else this.currentLocation=this.getCurrentLocation(0),this._emitCurrentCharacterToken(this.currentLocation),this.preprocessor.dropParsedChunk();this._createCharacterToken(X,Z)}_emitCodePoint(X){let Z=n3(X)?k.WHITESPACE_CHARACTER:X===Y.NULL?k.NULL_CHARACTER:k.CHARACTER;this._appendCharToCurrentCharacterToken(Z,X<65536?String.fromCharCode(X):String.fromCodePoint(X))}_emitChars(X){this._appendCharToCurrentCharacterToken(k.CHARACTER,X)}_startCharacterReference(){this.returnState=this.state,this.state=z.CHARACTER_REFERENCE,this.entityStartPos=this.preprocessor.pos,this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute()?F0.Attribute:F0.Legacy)}_isCharacterReferenceInAttribute(){return this.returnState===z.ATTRIBUTE_VALUE_DOUBLE_QUOTED||this.returnState===z.ATTRIBUTE_VALUE_SINGLE_QUOTED||this.returnState===z.ATTRIBUTE_VALUE_UNQUOTED}_flushCodePointConsumedAsCharacterReference(X){if(this._isCharacterReferenceInAttribute())this.currentAttr.value+=String.fromCodePoint(X);else this._emitCodePoint(X)}_callState(X){switch(this.state){case z.DATA:{this._stateData(X);break}case z.RCDATA:{this._stateRcdata(X);break}case z.RAWTEXT:{this._stateRawtext(X);break}case z.SCRIPT_DATA:{this._stateScriptData(X);break}case z.PLAINTEXT:{this._statePlaintext(X);break}case z.TAG_OPEN:{this._stateTagOpen(X);break}case z.END_TAG_OPEN:{this._stateEndTagOpen(X);break}case z.TAG_NAME:{this._stateTagName(X);break}case z.RCDATA_LESS_THAN_SIGN:{this._stateRcdataLessThanSign(X);break}case z.RCDATA_END_TAG_OPEN:{this._stateRcdataEndTagOpen(X);break}case z.RCDATA_END_TAG_NAME:{this._stateRcdataEndTagName(X);break}case z.RAWTEXT_LESS_THAN_SIGN:{this._stateRawtextLessThanSign(X);break}case z.RAWTEXT_END_TAG_OPEN:{this._stateRawtextEndTagOpen(X);break}case z.RAWTEXT_END_TAG_NAME:{this._stateRawtextEndTagName(X);break}case z.SCRIPT_DATA_LESS_THAN_SIGN:{this._stateScriptDataLessThanSign(X);break}case z.SCRIPT_DATA_END_TAG_OPEN:{this._stateScriptDataEndTagOpen(X);break}case z.SCRIPT_DATA_END_TAG_NAME:{this._stateScriptDataEndTagName(X);break}case z.SCRIPT_DATA_ESCAPE_START:{this._stateScriptDataEscapeStart(X);break}case z.SCRIPT_DATA_ESCAPE_START_DASH:{this._stateScriptDataEscapeStartDash(X);break}case z.SCRIPT_DATA_ESCAPED:{this._stateScriptDataEscaped(X);break}case z.SCRIPT_DATA_ESCAPED_DASH:{this._stateScriptDataEscapedDash(X);break}case z.SCRIPT_DATA_ESCAPED_DASH_DASH:{this._stateScriptDataEscapedDashDash(X);break}case z.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataEscapedLessThanSign(X);break}case z.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:{this._stateScriptDataEscapedEndTagOpen(X);break}case z.SCRIPT_DATA_ESCAPED_END_TAG_NAME:{this._stateScriptDataEscapedEndTagName(X);break}case z.SCRIPT_DATA_DOUBLE_ESCAPE_START:{this._stateScriptDataDoubleEscapeStart(X);break}case z.SCRIPT_DATA_DOUBLE_ESCAPED:{this._stateScriptDataDoubleEscaped(X);break}case z.SCRIPT_DATA_DOUBLE_ESCAPED_DASH:{this._stateScriptDataDoubleEscapedDash(X);break}case z.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH:{this._stateScriptDataDoubleEscapedDashDash(X);break}case z.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataDoubleEscapedLessThanSign(X);break}case z.SCRIPT_DATA_DOUBLE_ESCAPE_END:{this._stateScriptDataDoubleEscapeEnd(X);break}case z.BEFORE_ATTRIBUTE_NAME:{this._stateBeforeAttributeName(X);break}case z.ATTRIBUTE_NAME:{this._stateAttributeName(X);break}case z.AFTER_ATTRIBUTE_NAME:{this._stateAfterAttributeName(X);break}case z.BEFORE_ATTRIBUTE_VALUE:{this._stateBeforeAttributeValue(X);break}case z.ATTRIBUTE_VALUE_DOUBLE_QUOTED:{this._stateAttributeValueDoubleQuoted(X);break}case z.ATTRIBUTE_VALUE_SINGLE_QUOTED:{this._stateAttributeValueSingleQuoted(X);break}case z.ATTRIBUTE_VALUE_UNQUOTED:{this._stateAttributeValueUnquoted(X);break}case z.AFTER_ATTRIBUTE_VALUE_QUOTED:{this._stateAfterAttributeValueQuoted(X);break}case z.SELF_CLOSING_START_TAG:{this._stateSelfClosingStartTag(X);break}case z.BOGUS_COMMENT:{this._stateBogusComment(X);break}case z.MARKUP_DECLARATION_OPEN:{this._stateMarkupDeclarationOpen(X);break}case z.COMMENT_START:{this._stateCommentStart(X);break}case z.COMMENT_START_DASH:{this._stateCommentStartDash(X);break}case z.COMMENT:{this._stateComment(X);break}case z.COMMENT_LESS_THAN_SIGN:{this._stateCommentLessThanSign(X);break}case z.COMMENT_LESS_THAN_SIGN_BANG:{this._stateCommentLessThanSignBang(X);break}case z.COMMENT_LESS_THAN_SIGN_BANG_DASH:{this._stateCommentLessThanSignBangDash(X);break}case z.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH:{this._stateCommentLessThanSignBangDashDash(X);break}case z.COMMENT_END_DASH:{this._stateCommentEndDash(X);break}case z.COMMENT_END:{this._stateCommentEnd(X);break}case z.COMMENT_END_BANG:{this._stateCommentEndBang(X);break}case z.DOCTYPE:{this._stateDoctype(X);break}case z.BEFORE_DOCTYPE_NAME:{this._stateBeforeDoctypeName(X);break}case z.DOCTYPE_NAME:{this._stateDoctypeName(X);break}case z.AFTER_DOCTYPE_NAME:{this._stateAfterDoctypeName(X);break}case z.AFTER_DOCTYPE_PUBLIC_KEYWORD:{this._stateAfterDoctypePublicKeyword(X);break}case z.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateBeforeDoctypePublicIdentifier(X);break}case z.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypePublicIdentifierDoubleQuoted(X);break}case z.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypePublicIdentifierSingleQuoted(X);break}case z.AFTER_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateAfterDoctypePublicIdentifier(X);break}case z.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS:{this._stateBetweenDoctypePublicAndSystemIdentifiers(X);break}case z.AFTER_DOCTYPE_SYSTEM_KEYWORD:{this._stateAfterDoctypeSystemKeyword(X);break}case z.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateBeforeDoctypeSystemIdentifier(X);break}case z.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypeSystemIdentifierDoubleQuoted(X);break}case z.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypeSystemIdentifierSingleQuoted(X);break}case z.AFTER_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateAfterDoctypeSystemIdentifier(X);break}case z.BOGUS_DOCTYPE:{this._stateBogusDoctype(X);break}case z.CDATA_SECTION:{this._stateCdataSection(X);break}case z.CDATA_SECTION_BRACKET:{this._stateCdataSectionBracket(X);break}case z.CDATA_SECTION_END:{this._stateCdataSectionEnd(X);break}case z.CHARACTER_REFERENCE:{this._stateCharacterReference();break}case z.AMBIGUOUS_AMPERSAND:{this._stateAmbiguousAmpersand(X);break}default:throw Error("Unknown state")}}_stateData(X){switch(X){case Y.LESS_THAN_SIGN:{this.state=z.TAG_OPEN;break}case Y.AMPERSAND:{this._startCharacterReference();break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this._emitCodePoint(X);break}case Y.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateRcdata(X){switch(X){case Y.AMPERSAND:{this._startCharacterReference();break}case Y.LESS_THAN_SIGN:{this.state=z.RCDATA_LESS_THAN_SIGN;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this._emitChars(l);break}case Y.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateRawtext(X){switch(X){case Y.LESS_THAN_SIGN:{this.state=z.RAWTEXT_LESS_THAN_SIGN;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this._emitChars(l);break}case Y.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateScriptData(X){switch(X){case Y.LESS_THAN_SIGN:{this.state=z.SCRIPT_DATA_LESS_THAN_SIGN;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this._emitChars(l);break}case Y.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_statePlaintext(X){switch(X){case Y.NULL:{this._err(L.unexpectedNullCharacter),this._emitChars(l);break}case Y.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateTagOpen(X){if(b0(X))this._createStartTagToken(),this.state=z.TAG_NAME,this._stateTagName(X);else switch(X){case Y.EXCLAMATION_MARK:{this.state=z.MARKUP_DECLARATION_OPEN;break}case Y.SOLIDUS:{this.state=z.END_TAG_OPEN;break}case Y.QUESTION_MARK:{this._err(L.unexpectedQuestionMarkInsteadOfTagName),this._createCommentToken(1),this.state=z.BOGUS_COMMENT,this._stateBogusComment(X);break}case Y.EOF:{this._err(L.eofBeforeTagName),this._emitChars("<"),this._emitEOFToken();break}default:this._err(L.invalidFirstCharacterOfTagName),this._emitChars("<"),this.state=z.DATA,this._stateData(X)}}_stateEndTagOpen(X){if(b0(X))this._createEndTagToken(),this.state=z.TAG_NAME,this._stateTagName(X);else switch(X){case Y.GREATER_THAN_SIGN:{this._err(L.missingEndTagName),this.state=z.DATA;break}case Y.EOF:{this._err(L.eofBeforeTagName),this._emitChars("</"),this._emitEOFToken();break}default:this._err(L.invalidFirstCharacterOfTagName),this._createCommentToken(2),this.state=z.BOGUS_COMMENT,this._stateBogusComment(X)}}_stateTagName(X){let Z=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:{this.state=z.BEFORE_ATTRIBUTE_NAME;break}case Y.SOLIDUS:{this.state=z.SELF_CLOSING_START_TAG;break}case Y.GREATER_THAN_SIGN:{this.state=z.DATA,this.emitCurrentTagToken();break}case Y.NULL:{this._err(L.unexpectedNullCharacter),Z.tagName+=l;break}case Y.EOF:{this._err(L.eofInTag),this._emitEOFToken();break}default:Z.tagName+=String.fromCodePoint(W1(X)?T1(X):X)}}_stateRcdataLessThanSign(X){if(X===Y.SOLIDUS)this.state=z.RCDATA_END_TAG_OPEN;else this._emitChars("<"),this.state=z.RCDATA,this._stateRcdata(X)}_stateRcdataEndTagOpen(X){if(b0(X))this.state=z.RCDATA_END_TAG_NAME,this._stateRcdataEndTagName(X);else this._emitChars("</"),this.state=z.RCDATA,this._stateRcdata(X)}handleSpecialEndTag(X){if(!this.preprocessor.startsWith(this.lastStartTagName,!1))return!this._ensureHibernation();this._createEndTagToken();let Z=this.currentToken;switch(Z.tagName=this.lastStartTagName,this.preprocessor.peek(this.lastStartTagName.length)){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:return this._advanceBy(this.lastStartTagName.length),this.state=z.BEFORE_ATTRIBUTE_NAME,!1;case Y.SOLIDUS:return this._advanceBy(this.lastStartTagName.length),this.state=z.SELF_CLOSING_START_TAG,!1;case Y.GREATER_THAN_SIGN:return this._advanceBy(this.lastStartTagName.length),this.emitCurrentTagToken(),this.state=z.DATA,!1;default:return!this._ensureHibernation()}}_stateRcdataEndTagName(X){if(this.handleSpecialEndTag(X))this._emitChars("</"),this.state=z.RCDATA,this._stateRcdata(X)}_stateRawtextLessThanSign(X){if(X===Y.SOLIDUS)this.state=z.RAWTEXT_END_TAG_OPEN;else this._emitChars("<"),this.state=z.RAWTEXT,this._stateRawtext(X)}_stateRawtextEndTagOpen(X){if(b0(X))this.state=z.RAWTEXT_END_TAG_NAME,this._stateRawtextEndTagName(X);else this._emitChars("</"),this.state=z.RAWTEXT,this._stateRawtext(X)}_stateRawtextEndTagName(X){if(this.handleSpecialEndTag(X))this._emitChars("</"),this.state=z.RAWTEXT,this._stateRawtext(X)}_stateScriptDataLessThanSign(X){switch(X){case Y.SOLIDUS:{this.state=z.SCRIPT_DATA_END_TAG_OPEN;break}case Y.EXCLAMATION_MARK:{this.state=z.SCRIPT_DATA_ESCAPE_START,this._emitChars("<!");break}default:this._emitChars("<"),this.state=z.SCRIPT_DATA,this._stateScriptData(X)}}_stateScriptDataEndTagOpen(X){if(b0(X))this.state=z.SCRIPT_DATA_END_TAG_NAME,this._stateScriptDataEndTagName(X);else this._emitChars("</"),this.state=z.SCRIPT_DATA,this._stateScriptData(X)}_stateScriptDataEndTagName(X){if(this.handleSpecialEndTag(X))this._emitChars("</"),this.state=z.SCRIPT_DATA,this._stateScriptData(X)}_stateScriptDataEscapeStart(X){if(X===Y.HYPHEN_MINUS)this.state=z.SCRIPT_DATA_ESCAPE_START_DASH,this._emitChars("-");else this.state=z.SCRIPT_DATA,this._stateScriptData(X)}_stateScriptDataEscapeStartDash(X){if(X===Y.HYPHEN_MINUS)this.state=z.SCRIPT_DATA_ESCAPED_DASH_DASH,this._emitChars("-");else this.state=z.SCRIPT_DATA,this._stateScriptData(X)}_stateScriptDataEscaped(X){switch(X){case Y.HYPHEN_MINUS:{this.state=z.SCRIPT_DATA_ESCAPED_DASH,this._emitChars("-");break}case Y.LESS_THAN_SIGN:{this.state=z.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this._emitChars(l);break}case Y.EOF:{this._err(L.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateScriptDataEscapedDash(X){switch(X){case Y.HYPHEN_MINUS:{this.state=z.SCRIPT_DATA_ESCAPED_DASH_DASH,this._emitChars("-");break}case Y.LESS_THAN_SIGN:{this.state=z.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this.state=z.SCRIPT_DATA_ESCAPED,this._emitChars(l);break}case Y.EOF:{this._err(L.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=z.SCRIPT_DATA_ESCAPED,this._emitCodePoint(X)}}_stateScriptDataEscapedDashDash(X){switch(X){case Y.HYPHEN_MINUS:{this._emitChars("-");break}case Y.LESS_THAN_SIGN:{this.state=z.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case Y.GREATER_THAN_SIGN:{this.state=z.SCRIPT_DATA,this._emitChars(">");break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this.state=z.SCRIPT_DATA_ESCAPED,this._emitChars(l);break}case Y.EOF:{this._err(L.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=z.SCRIPT_DATA_ESCAPED,this._emitCodePoint(X)}}_stateScriptDataEscapedLessThanSign(X){if(X===Y.SOLIDUS)this.state=z.SCRIPT_DATA_ESCAPED_END_TAG_OPEN;else if(b0(X))this._emitChars("<"),this.state=z.SCRIPT_DATA_DOUBLE_ESCAPE_START,this._stateScriptDataDoubleEscapeStart(X);else this._emitChars("<"),this.state=z.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(X)}_stateScriptDataEscapedEndTagOpen(X){if(b0(X))this.state=z.SCRIPT_DATA_ESCAPED_END_TAG_NAME,this._stateScriptDataEscapedEndTagName(X);else this._emitChars("</"),this.state=z.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(X)}_stateScriptDataEscapedEndTagName(X){if(this.handleSpecialEndTag(X))this._emitChars("</"),this.state=z.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(X)}_stateScriptDataDoubleEscapeStart(X){if(this.preprocessor.startsWith(t.SCRIPT,!1)&&o3(this.preprocessor.peek(t.SCRIPT.length))){this._emitCodePoint(X);for(let Z=0;Z<t.SCRIPT.length;Z++)this._emitCodePoint(this._consume());this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED}else if(!this._ensureHibernation())this.state=z.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(X)}_stateScriptDataDoubleEscaped(X){switch(X){case Y.HYPHEN_MINUS:{this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED_DASH,this._emitChars("-");break}case Y.LESS_THAN_SIGN:{this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this._emitChars(l);break}case Y.EOF:{this._err(L.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateScriptDataDoubleEscapedDash(X){switch(X){case Y.HYPHEN_MINUS:{this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH,this._emitChars("-");break}case Y.LESS_THAN_SIGN:{this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(l);break}case Y.EOF:{this._err(L.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(X)}}_stateScriptDataDoubleEscapedDashDash(X){switch(X){case Y.HYPHEN_MINUS:{this._emitChars("-");break}case Y.LESS_THAN_SIGN:{this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case Y.GREATER_THAN_SIGN:{this.state=z.SCRIPT_DATA,this._emitChars(">");break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(l);break}case Y.EOF:{this._err(L.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(X)}}_stateScriptDataDoubleEscapedLessThanSign(X){if(X===Y.SOLIDUS)this.state=z.SCRIPT_DATA_DOUBLE_ESCAPE_END,this._emitChars("/");else this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(X)}_stateScriptDataDoubleEscapeEnd(X){if(this.preprocessor.startsWith(t.SCRIPT,!1)&&o3(this.preprocessor.peek(t.SCRIPT.length))){this._emitCodePoint(X);for(let Z=0;Z<t.SCRIPT.length;Z++)this._emitCodePoint(this._consume());this.state=z.SCRIPT_DATA_ESCAPED}else if(!this._ensureHibernation())this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(X)}_stateBeforeAttributeName(X){switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:break;case Y.SOLIDUS:case Y.GREATER_THAN_SIGN:case Y.EOF:{this.state=z.AFTER_ATTRIBUTE_NAME,this._stateAfterAttributeName(X);break}case Y.EQUALS_SIGN:{this._err(L.unexpectedEqualsSignBeforeAttributeName),this._createAttr("="),this.state=z.ATTRIBUTE_NAME;break}default:this._createAttr(""),this.state=z.ATTRIBUTE_NAME,this._stateAttributeName(X)}}_stateAttributeName(X){switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:case Y.SOLIDUS:case Y.GREATER_THAN_SIGN:case Y.EOF:{this._leaveAttrName(),this.state=z.AFTER_ATTRIBUTE_NAME,this._stateAfterAttributeName(X);break}case Y.EQUALS_SIGN:{this._leaveAttrName(),this.state=z.BEFORE_ATTRIBUTE_VALUE;break}case Y.QUOTATION_MARK:case Y.APOSTROPHE:case Y.LESS_THAN_SIGN:{this._err(L.unexpectedCharacterInAttributeName),this.currentAttr.name+=String.fromCodePoint(X);break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this.currentAttr.name+=l;break}default:this.currentAttr.name+=String.fromCodePoint(W1(X)?T1(X):X)}}_stateAfterAttributeName(X){switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:break;case Y.SOLIDUS:{this.state=z.SELF_CLOSING_START_TAG;break}case Y.EQUALS_SIGN:{this.state=z.BEFORE_ATTRIBUTE_VALUE;break}case Y.GREATER_THAN_SIGN:{this.state=z.DATA,this.emitCurrentTagToken();break}case Y.EOF:{this._err(L.eofInTag),this._emitEOFToken();break}default:this._createAttr(""),this.state=z.ATTRIBUTE_NAME,this._stateAttributeName(X)}}_stateBeforeAttributeValue(X){switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:break;case Y.QUOTATION_MARK:{this.state=z.ATTRIBUTE_VALUE_DOUBLE_QUOTED;break}case Y.APOSTROPHE:{this.state=z.ATTRIBUTE_VALUE_SINGLE_QUOTED;break}case Y.GREATER_THAN_SIGN:{this._err(L.missingAttributeValue),this.state=z.DATA,this.emitCurrentTagToken();break}default:this.state=z.ATTRIBUTE_VALUE_UNQUOTED,this._stateAttributeValueUnquoted(X)}}_stateAttributeValueDoubleQuoted(X){switch(X){case Y.QUOTATION_MARK:{this.state=z.AFTER_ATTRIBUTE_VALUE_QUOTED;break}case Y.AMPERSAND:{this._startCharacterReference();break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this.currentAttr.value+=l;break}case Y.EOF:{this._err(L.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(X)}}_stateAttributeValueSingleQuoted(X){switch(X){case Y.APOSTROPHE:{this.state=z.AFTER_ATTRIBUTE_VALUE_QUOTED;break}case Y.AMPERSAND:{this._startCharacterReference();break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this.currentAttr.value+=l;break}case Y.EOF:{this._err(L.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(X)}}_stateAttributeValueUnquoted(X){switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:{this._leaveAttrValue(),this.state=z.BEFORE_ATTRIBUTE_NAME;break}case Y.AMPERSAND:{this._startCharacterReference();break}case Y.GREATER_THAN_SIGN:{this._leaveAttrValue(),this.state=z.DATA,this.emitCurrentTagToken();break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this.currentAttr.value+=l;break}case Y.QUOTATION_MARK:case Y.APOSTROPHE:case Y.LESS_THAN_SIGN:case Y.EQUALS_SIGN:case Y.GRAVE_ACCENT:{this._err(L.unexpectedCharacterInUnquotedAttributeValue),this.currentAttr.value+=String.fromCodePoint(X);break}case Y.EOF:{this._err(L.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(X)}}_stateAfterAttributeValueQuoted(X){switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:{this._leaveAttrValue(),this.state=z.BEFORE_ATTRIBUTE_NAME;break}case Y.SOLIDUS:{this._leaveAttrValue(),this.state=z.SELF_CLOSING_START_TAG;break}case Y.GREATER_THAN_SIGN:{this._leaveAttrValue(),this.state=z.DATA,this.emitCurrentTagToken();break}case Y.EOF:{this._err(L.eofInTag),this._emitEOFToken();break}default:this._err(L.missingWhitespaceBetweenAttributes),this.state=z.BEFORE_ATTRIBUTE_NAME,this._stateBeforeAttributeName(X)}}_stateSelfClosingStartTag(X){switch(X){case Y.GREATER_THAN_SIGN:{let Z=this.currentToken;Z.selfClosing=!0,this.state=z.DATA,this.emitCurrentTagToken();break}case Y.EOF:{this._err(L.eofInTag),this._emitEOFToken();break}default:this._err(L.unexpectedSolidusInTag),this.state=z.BEFORE_ATTRIBUTE_NAME,this._stateBeforeAttributeName(X)}}_stateBogusComment(X){let Z=this.currentToken;switch(X){case Y.GREATER_THAN_SIGN:{this.state=z.DATA,this.emitCurrentComment(Z);break}case Y.EOF:{this.emitCurrentComment(Z),this._emitEOFToken();break}case Y.NULL:{this._err(L.unexpectedNullCharacter),Z.data+=l;break}default:Z.data+=String.fromCodePoint(X)}}_stateMarkupDeclarationOpen(X){if(this._consumeSequenceIfMatch(t.DASH_DASH,!0))this._createCommentToken(t.DASH_DASH.length+1),this.state=z.COMMENT_START;else if(this._consumeSequenceIfMatch(t.DOCTYPE,!1))this.currentLocation=this.getCurrentLocation(t.DOCTYPE.length+1),this.state=z.DOCTYPE;else if(this._consumeSequenceIfMatch(t.CDATA_START,!0))if(this.inForeignNode)this.state=z.CDATA_SECTION;else this._err(L.cdataInHtmlContent),this._createCommentToken(t.CDATA_START.length+1),this.currentToken.data="[CDATA[",this.state=z.BOGUS_COMMENT;else if(!this._ensureHibernation())this._err(L.incorrectlyOpenedComment),this._createCommentToken(2),this.state=z.BOGUS_COMMENT,this._stateBogusComment(X)}_stateCommentStart(X){switch(X){case Y.HYPHEN_MINUS:{this.state=z.COMMENT_START_DASH;break}case Y.GREATER_THAN_SIGN:{this._err(L.abruptClosingOfEmptyComment),this.state=z.DATA;let Z=this.currentToken;this.emitCurrentComment(Z);break}default:this.state=z.COMMENT,this._stateComment(X)}}_stateCommentStartDash(X){let Z=this.currentToken;switch(X){case Y.HYPHEN_MINUS:{this.state=z.COMMENT_END;break}case Y.GREATER_THAN_SIGN:{this._err(L.abruptClosingOfEmptyComment),this.state=z.DATA,this.emitCurrentComment(Z);break}case Y.EOF:{this._err(L.eofInComment),this.emitCurrentComment(Z),this._emitEOFToken();break}default:Z.data+="-",this.state=z.COMMENT,this._stateComment(X)}}_stateComment(X){let Z=this.currentToken;switch(X){case Y.HYPHEN_MINUS:{this.state=z.COMMENT_END_DASH;break}case Y.LESS_THAN_SIGN:{Z.data+="<",this.state=z.COMMENT_LESS_THAN_SIGN;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),Z.data+=l;break}case Y.EOF:{this._err(L.eofInComment),this.emitCurrentComment(Z),this._emitEOFToken();break}default:Z.data+=String.fromCodePoint(X)}}_stateCommentLessThanSign(X){let Z=this.currentToken;switch(X){case Y.EXCLAMATION_MARK:{Z.data+="!",this.state=z.COMMENT_LESS_THAN_SIGN_BANG;break}case Y.LESS_THAN_SIGN:{Z.data+="<";break}default:this.state=z.COMMENT,this._stateComment(X)}}_stateCommentLessThanSignBang(X){if(X===Y.HYPHEN_MINUS)this.state=z.COMMENT_LESS_THAN_SIGN_BANG_DASH;else this.state=z.COMMENT,this._stateComment(X)}_stateCommentLessThanSignBangDash(X){if(X===Y.HYPHEN_MINUS)this.state=z.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH;else this.state=z.COMMENT_END_DASH,this._stateCommentEndDash(X)}_stateCommentLessThanSignBangDashDash(X){if(X!==Y.GREATER_THAN_SIGN&&X!==Y.EOF)this._err(L.nestedComment);this.state=z.COMMENT_END,this._stateCommentEnd(X)}_stateCommentEndDash(X){let Z=this.currentToken;switch(X){case Y.HYPHEN_MINUS:{this.state=z.COMMENT_END;break}case Y.EOF:{this._err(L.eofInComment),this.emitCurrentComment(Z),this._emitEOFToken();break}default:Z.data+="-",this.state=z.COMMENT,this._stateComment(X)}}_stateCommentEnd(X){let Z=this.currentToken;switch(X){case Y.GREATER_THAN_SIGN:{this.state=z.DATA,this.emitCurrentComment(Z);break}case Y.EXCLAMATION_MARK:{this.state=z.COMMENT_END_BANG;break}case Y.HYPHEN_MINUS:{Z.data+="-";break}case Y.EOF:{this._err(L.eofInComment),this.emitCurrentComment(Z),this._emitEOFToken();break}default:Z.data+="--",this.state=z.COMMENT,this._stateComment(X)}}_stateCommentEndBang(X){let Z=this.currentToken;switch(X){case Y.HYPHEN_MINUS:{Z.data+="--!",this.state=z.COMMENT_END_DASH;break}case Y.GREATER_THAN_SIGN:{this._err(L.incorrectlyClosedComment),this.state=z.DATA,this.emitCurrentComment(Z);break}case Y.EOF:{this._err(L.eofInComment),this.emitCurrentComment(Z),this._emitEOFToken();break}default:Z.data+="--!",this.state=z.COMMENT,this._stateComment(X)}}_stateDoctype(X){switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:{this.state=z.BEFORE_DOCTYPE_NAME;break}case Y.GREATER_THAN_SIGN:{this.state=z.BEFORE_DOCTYPE_NAME,this._stateBeforeDoctypeName(X);break}case Y.EOF:{this._err(L.eofInDoctype),this._createDoctypeToken(null);let Z=this.currentToken;Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(L.missingWhitespaceBeforeDoctypeName),this.state=z.BEFORE_DOCTYPE_NAME,this._stateBeforeDoctypeName(X)}}_stateBeforeDoctypeName(X){if(W1(X))this._createDoctypeToken(String.fromCharCode(T1(X))),this.state=z.DOCTYPE_NAME;else switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:break;case Y.NULL:{this._err(L.unexpectedNullCharacter),this._createDoctypeToken(l),this.state=z.DOCTYPE_NAME;break}case Y.GREATER_THAN_SIGN:{this._err(L.missingDoctypeName),this._createDoctypeToken(null);let Z=this.currentToken;Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this.state=z.DATA;break}case Y.EOF:{this._err(L.eofInDoctype),this._createDoctypeToken(null);let Z=this.currentToken;Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._createDoctypeToken(String.fromCodePoint(X)),this.state=z.DOCTYPE_NAME}}_stateDoctypeName(X){let Z=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:{this.state=z.AFTER_DOCTYPE_NAME;break}case Y.GREATER_THAN_SIGN:{this.state=z.DATA,this.emitCurrentDoctype(Z);break}case Y.NULL:{this._err(L.unexpectedNullCharacter),Z.name+=l;break}case Y.EOF:{this._err(L.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:Z.name+=String.fromCodePoint(W1(X)?T1(X):X)}}_stateAfterDoctypeName(X){let Z=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:break;case Y.GREATER_THAN_SIGN:{this.state=z.DATA,this.emitCurrentDoctype(Z);break}case Y.EOF:{this._err(L.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:if(this._consumeSequenceIfMatch(t.PUBLIC,!1))this.state=z.AFTER_DOCTYPE_PUBLIC_KEYWORD;else if(this._consumeSequenceIfMatch(t.SYSTEM,!1))this.state=z.AFTER_DOCTYPE_SYSTEM_KEYWORD;else if(!this._ensureHibernation())this._err(L.invalidCharacterSequenceAfterDoctypeName),Z.forceQuirks=!0,this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateAfterDoctypePublicKeyword(X){let Z=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:{this.state=z.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;break}case Y.QUOTATION_MARK:{this._err(L.missingWhitespaceAfterDoctypePublicKeyword),Z.publicId="",this.state=z.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;break}case Y.APOSTROPHE:{this._err(L.missingWhitespaceAfterDoctypePublicKeyword),Z.publicId="",this.state=z.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;break}case Y.GREATER_THAN_SIGN:{this._err(L.missingDoctypePublicIdentifier),Z.forceQuirks=!0,this.state=z.DATA,this.emitCurrentDoctype(Z);break}case Y.EOF:{this._err(L.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(L.missingQuoteBeforeDoctypePublicIdentifier),Z.forceQuirks=!0,this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateBeforeDoctypePublicIdentifier(X){let Z=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:break;case Y.QUOTATION_MARK:{Z.publicId="",this.state=z.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;break}case Y.APOSTROPHE:{Z.publicId="",this.state=z.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;break}case Y.GREATER_THAN_SIGN:{this._err(L.missingDoctypePublicIdentifier),Z.forceQuirks=!0,this.state=z.DATA,this.emitCurrentDoctype(Z);break}case Y.EOF:{this._err(L.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(L.missingQuoteBeforeDoctypePublicIdentifier),Z.forceQuirks=!0,this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateDoctypePublicIdentifierDoubleQuoted(X){let Z=this.currentToken;switch(X){case Y.QUOTATION_MARK:{this.state=z.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),Z.publicId+=l;break}case Y.GREATER_THAN_SIGN:{this._err(L.abruptDoctypePublicIdentifier),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this.state=z.DATA;break}case Y.EOF:{this._err(L.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:Z.publicId+=String.fromCodePoint(X)}}_stateDoctypePublicIdentifierSingleQuoted(X){let Z=this.currentToken;switch(X){case Y.APOSTROPHE:{this.state=z.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),Z.publicId+=l;break}case Y.GREATER_THAN_SIGN:{this._err(L.abruptDoctypePublicIdentifier),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this.state=z.DATA;break}case Y.EOF:{this._err(L.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:Z.publicId+=String.fromCodePoint(X)}}_stateAfterDoctypePublicIdentifier(X){let Z=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:{this.state=z.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;break}case Y.GREATER_THAN_SIGN:{this.state=z.DATA,this.emitCurrentDoctype(Z);break}case Y.QUOTATION_MARK:{this._err(L.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),Z.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case Y.APOSTROPHE:{this._err(L.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),Z.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case Y.EOF:{this._err(L.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(L.missingQuoteBeforeDoctypeSystemIdentifier),Z.forceQuirks=!0,this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateBetweenDoctypePublicAndSystemIdentifiers(X){let Z=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:break;case Y.GREATER_THAN_SIGN:{this.emitCurrentDoctype(Z),this.state=z.DATA;break}case Y.QUOTATION_MARK:{Z.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case Y.APOSTROPHE:{Z.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case Y.EOF:{this._err(L.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(L.missingQuoteBeforeDoctypeSystemIdentifier),Z.forceQuirks=!0,this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateAfterDoctypeSystemKeyword(X){let Z=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:{this.state=z.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;break}case Y.QUOTATION_MARK:{this._err(L.missingWhitespaceAfterDoctypeSystemKeyword),Z.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case Y.APOSTROPHE:{this._err(L.missingWhitespaceAfterDoctypeSystemKeyword),Z.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case Y.GREATER_THAN_SIGN:{this._err(L.missingDoctypeSystemIdentifier),Z.forceQuirks=!0,this.state=z.DATA,this.emitCurrentDoctype(Z);break}case Y.EOF:{this._err(L.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(L.missingQuoteBeforeDoctypeSystemIdentifier),Z.forceQuirks=!0,this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateBeforeDoctypeSystemIdentifier(X){let Z=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:break;case Y.QUOTATION_MARK:{Z.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case Y.APOSTROPHE:{Z.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case Y.GREATER_THAN_SIGN:{this._err(L.missingDoctypeSystemIdentifier),Z.forceQuirks=!0,this.state=z.DATA,this.emitCurrentDoctype(Z);break}case Y.EOF:{this._err(L.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(L.missingQuoteBeforeDoctypeSystemIdentifier),Z.forceQuirks=!0,this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateDoctypeSystemIdentifierDoubleQuoted(X){let Z=this.currentToken;switch(X){case Y.QUOTATION_MARK:{this.state=z.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),Z.systemId+=l;break}case Y.GREATER_THAN_SIGN:{this._err(L.abruptDoctypeSystemIdentifier),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this.state=z.DATA;break}case Y.EOF:{this._err(L.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:Z.systemId+=String.fromCodePoint(X)}}_stateDoctypeSystemIdentifierSingleQuoted(X){let Z=this.currentToken;switch(X){case Y.APOSTROPHE:{this.state=z.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),Z.systemId+=l;break}case Y.GREATER_THAN_SIGN:{this._err(L.abruptDoctypeSystemIdentifier),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this.state=z.DATA;break}case Y.EOF:{this._err(L.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:Z.systemId+=String.fromCodePoint(X)}}_stateAfterDoctypeSystemIdentifier(X){let Z=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:break;case Y.GREATER_THAN_SIGN:{this.emitCurrentDoctype(Z),this.state=z.DATA;break}case Y.EOF:{this._err(L.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(L.unexpectedCharacterAfterDoctypeSystemIdentifier),this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateBogusDoctype(X){let Z=this.currentToken;switch(X){case Y.GREATER_THAN_SIGN:{this.emitCurrentDoctype(Z),this.state=z.DATA;break}case Y.NULL:{this._err(L.unexpectedNullCharacter);break}case Y.EOF:{this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:}}_stateCdataSection(X){switch(X){case Y.RIGHT_SQUARE_BRACKET:{this.state=z.CDATA_SECTION_BRACKET;break}case Y.EOF:{this._err(L.eofInCdata),this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateCdataSectionBracket(X){if(X===Y.RIGHT_SQUARE_BRACKET)this.state=z.CDATA_SECTION_END;else this._emitChars("]"),this.state=z.CDATA_SECTION,this._stateCdataSection(X)}_stateCdataSectionEnd(X){switch(X){case Y.GREATER_THAN_SIGN:{this.state=z.DATA;break}case Y.RIGHT_SQUARE_BRACKET:{this._emitChars("]");break}default:this._emitChars("]]"),this.state=z.CDATA_SECTION,this._stateCdataSection(X)}}_stateCharacterReference(){let X=this.entityDecoder.write(this.preprocessor.html,this.preprocessor.pos);if(X<0)if(this.preprocessor.lastChunkWritten)X=this.entityDecoder.end();else{this.active=!1,this.preprocessor.pos=this.preprocessor.html.length-1,this.consumedAfterSnapshot=0,this.preprocessor.endOfChunkHit=!0;return}if(X===0)this.preprocessor.pos=this.entityStartPos,this._flushCodePointConsumedAsCharacterReference(Y.AMPERSAND),this.state=!this._isCharacterReferenceInAttribute()&&r3(this.preprocessor.peek(1))?z.AMBIGUOUS_AMPERSAND:this.returnState;else this.state=this.returnState}_stateAmbiguousAmpersand(X){if(r3(X))this._flushCodePointConsumedAsCharacterReference(X);else{if(X===Y.SEMICOLON)this._err(L.unknownNamedCharacterReference);this.state=this.returnState,this._callState(X)}}}var Z6=new Set([Q.DD,Q.DT,Q.LI,Q.OPTGROUP,Q.OPTION,Q.P,Q.RB,Q.RP,Q.RT,Q.RTC]),t3=new Set([...Z6,Q.CAPTION,Q.COLGROUP,Q.TBODY,Q.TD,Q.TFOOT,Q.TH,Q.THEAD,Q.TR]),a1=new Set([Q.APPLET,Q.CAPTION,Q.HTML,Q.MARQUEE,Q.OBJECT,Q.TABLE,Q.TD,Q.TEMPLATE,Q.TH]),I9=new Set([...a1,Q.OL,Q.UL]),S9=new Set([...a1,Q.BUTTON]),e3=new Set([Q.ANNOTATION_XML,Q.MI,Q.MN,Q.MO,Q.MS,Q.MTEXT]),X6=new Set([Q.DESC,Q.FOREIGN_OBJECT,Q.TITLE]),u9=new Set([Q.TR,Q.TEMPLATE,Q.HTML]),l9=new Set([Q.TBODY,Q.TFOOT,Q.THEAD,Q.TEMPLATE,Q.HTML]),A9=new Set([Q.TABLE,Q.TEMPLATE,Q.HTML]),T9=new Set([Q.TD,Q.TH]);class t2{get currentTmplContentOrNode(){return this._isInTemplate()?this.treeAdapter.getTemplateContent(this.current):this.current}constructor(X,Z,W){this.treeAdapter=Z,this.handler=W,this.items=[],this.tagIDs=[],this.stackTop=-1,this.tmplCount=0,this.currentTagId=Q.UNKNOWN,this.current=X}_indexOf(X){return this.items.lastIndexOf(X,this.stackTop)}_isInTemplate(){return this.currentTagId===Q.TEMPLATE&&this.treeAdapter.getNamespaceURI(this.current)===P.HTML}_updateCurrentElement(){this.current=this.items[this.stackTop],this.currentTagId=this.tagIDs[this.stackTop]}push(X,Z){if(this.stackTop++,this.items[this.stackTop]=X,this.current=X,this.tagIDs[this.stackTop]=Z,this.currentTagId=Z,this._isInTemplate())this.tmplCount++;this.handler.onItemPush(X,Z,!0)}pop(){let X=this.current;if(this.tmplCount>0&&this._isInTemplate())this.tmplCount--;this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(X,!0)}replace(X,Z){let W=this._indexOf(X);if(this.items[W]=Z,W===this.stackTop)this.current=Z}insertAfter(X,Z,W){let J=this._indexOf(X)+1;if(this.items.splice(J,0,Z),this.tagIDs.splice(J,0,W),this.stackTop++,J===this.stackTop)this._updateCurrentElement();if(this.current&&this.currentTagId!==void 0)this.handler.onItemPush(this.current,this.currentTagId,J===this.stackTop)}popUntilTagNamePopped(X){let Z=this.stackTop+1;do Z=this.tagIDs.lastIndexOf(X,Z-1);while(Z>0&&this.treeAdapter.getNamespaceURI(this.items[Z])!==P.HTML);this.shortenToLength(Math.max(Z,0))}shortenToLength(X){while(this.stackTop>=X){let Z=this.current;if(this.tmplCount>0&&this._isInTemplate())this.tmplCount-=1;this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(Z,this.stackTop<X)}}popUntilElementPopped(X){let Z=this._indexOf(X);this.shortenToLength(Math.max(Z,0))}popUntilPopped(X,Z){let W=this._indexOfTagNames(X,Z);this.shortenToLength(Math.max(W,0))}popUntilNumberedHeaderPopped(){this.popUntilPopped(Z1,P.HTML)}popUntilTableCellPopped(){this.popUntilPopped(T9,P.HTML)}popAllUpToHtmlElement(){this.tmplCount=0,this.shortenToLength(1)}_indexOfTagNames(X,Z){for(let W=this.stackTop;W>=0;W--)if(X.has(this.tagIDs[W])&&this.treeAdapter.getNamespaceURI(this.items[W])===Z)return W;return-1}clearBackTo(X,Z){let W=this._indexOfTagNames(X,Z);this.shortenToLength(W+1)}clearBackToTableContext(){this.clearBackTo(A9,P.HTML)}clearBackToTableBodyContext(){this.clearBackTo(l9,P.HTML)}clearBackToTableRowContext(){this.clearBackTo(u9,P.HTML)}remove(X){let Z=this._indexOf(X);if(Z>=0)if(Z===this.stackTop)this.pop();else this.items.splice(Z,1),this.tagIDs.splice(Z,1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(X,!1)}tryPeekProperlyNestedBodyElement(){return this.stackTop>=1&&this.tagIDs[1]===Q.BODY?this.items[1]:null}contains(X){return this._indexOf(X)>-1}getCommonAncestor(X){let Z=this._indexOf(X)-1;return Z>=0?this.items[Z]:null}isRootHtmlElementCurrent(){return this.stackTop===0&&this.tagIDs[0]===Q.HTML}hasInDynamicScope(X,Z){for(let W=this.stackTop;W>=0;W--){let J=this.tagIDs[W];switch(this.treeAdapter.getNamespaceURI(this.items[W])){case P.HTML:{if(J===X)return!0;if(Z.has(J))return!1;break}case P.SVG:{if(X6.has(J))return!1;break}case P.MATHML:{if(e3.has(J))return!1;break}}}return!0}hasInScope(X){return this.hasInDynamicScope(X,a1)}hasInListItemScope(X){return this.hasInDynamicScope(X,I9)}hasInButtonScope(X){return this.hasInDynamicScope(X,S9)}hasNumberedHeaderInScope(){for(let X=this.stackTop;X>=0;X--){let Z=this.tagIDs[X];switch(this.treeAdapter.getNamespaceURI(this.items[X])){case P.HTML:{if(Z1.has(Z))return!0;if(a1.has(Z))return!1;break}case P.SVG:{if(X6.has(Z))return!1;break}case P.MATHML:{if(e3.has(Z))return!1;break}}}return!0}hasInTableScope(X){for(let Z=this.stackTop;Z>=0;Z--){if(this.treeAdapter.getNamespaceURI(this.items[Z])!==P.HTML)continue;switch(this.tagIDs[Z]){case X:return!0;case Q.TABLE:case Q.HTML:return!1}}return!0}hasTableBodyContextInTableScope(){for(let X=this.stackTop;X>=0;X--){if(this.treeAdapter.getNamespaceURI(this.items[X])!==P.HTML)continue;switch(this.tagIDs[X]){case Q.TBODY:case Q.THEAD:case Q.TFOOT:return!0;case Q.TABLE:case Q.HTML:return!1}}return!0}hasInSelectScope(X){for(let Z=this.stackTop;Z>=0;Z--){if(this.treeAdapter.getNamespaceURI(this.items[Z])!==P.HTML)continue;switch(this.tagIDs[Z]){case X:return!0;case Q.OPTION:case Q.OPTGROUP:break;default:return!1}}return!0}generateImpliedEndTags(){while(this.currentTagId!==void 0&&Z6.has(this.currentTagId))this.pop()}generateImpliedEndTagsThoroughly(){while(this.currentTagId!==void 0&&t3.has(this.currentTagId))this.pop()}generateImpliedEndTagsWithExclusion(X){while(this.currentTagId!==void 0&&this.currentTagId!==X&&t3.has(this.currentTagId))this.pop()}}var j0;(function(X){X[X.Marker=0]="Marker",X[X.Element=1]="Element"})(j0||(j0={}));var W6={type:j0.Marker};class e2{constructor(X){this.treeAdapter=X,this.entries=[],this.bookmark=null}_getNoahArkConditionCandidates(X,Z){let W=[],J=Z.length,K=this.treeAdapter.getTagName(X),V=this.treeAdapter.getNamespaceURI(X);for(let H=0;H<this.entries.length;H++){let U=this.entries[H];if(U.type===j0.Marker)break;let{element:F}=U;if(this.treeAdapter.getTagName(F)===K&&this.treeAdapter.getNamespaceURI(F)===V){let w=this.treeAdapter.getAttrList(F);if(w.length===J)W.push({idx:H,attrs:w})}}return W}_ensureNoahArkCondition(X){if(this.entries.length<3)return;let Z=this.treeAdapter.getAttrList(X),W=this._getNoahArkConditionCandidates(X,Z);if(W.length<3)return;let J=new Map(Z.map((V)=>[V.name,V.value])),K=0;for(let V=0;V<W.length;V++){let H=W[V];if(H.attrs.every((U)=>J.get(U.name)===U.value)){if(K+=1,K>=3)this.entries.splice(H.idx,1)}}}insertMarker(){this.entries.unshift(W6)}pushElement(X,Z){this._ensureNoahArkCondition(X),this.entries.unshift({type:j0.Element,element:X,token:Z})}insertElementAfterBookmark(X,Z){let W=this.entries.indexOf(this.bookmark);this.entries.splice(W,0,{type:j0.Element,element:X,token:Z})}removeEntry(X){let Z=this.entries.indexOf(X);if(Z!==-1)this.entries.splice(Z,1)}clearToLastMarker(){let X=this.entries.indexOf(W6);if(X===-1)this.entries.length=0;else this.entries.splice(0,X+1)}getElementEntryInScopeWithTagName(X){let Z=this.entries.find((W)=>W.type===j0.Marker||this.treeAdapter.getTagName(W.element)===X);return Z&&Z.type===j0.Element?Z:null}getElementEntry(X){return this.entries.find((Z)=>Z.type===j0.Element&&Z.element===X)}}var V0={createDocument(){return{nodeName:"#document",mode:e.NO_QUIRKS,childNodes:[]}},createDocumentFragment(){return{nodeName:"#document-fragment",childNodes:[]}},createElement(X,Z,W){return{nodeName:X,tagName:X,attrs:W,namespaceURI:Z,childNodes:[],parentNode:null}},createCommentNode(X){return{nodeName:"#comment",data:X,parentNode:null}},createTextNode(X){return{nodeName:"#text",value:X,parentNode:null}},appendChild(X,Z){X.childNodes.push(Z),Z.parentNode=X},insertBefore(X,Z,W){let J=X.childNodes.indexOf(W);X.childNodes.splice(J,0,Z),Z.parentNode=X},setTemplateContent(X,Z){X.content=Z},getTemplateContent(X){return X.content},setDocumentType(X,Z,W,J){let K=X.childNodes.find((V)=>V.nodeName==="#documentType");if(K)K.name=Z,K.publicId=W,K.systemId=J;else{let V={nodeName:"#documentType",name:Z,publicId:W,systemId:J,parentNode:null};V0.appendChild(X,V)}},setDocumentMode(X,Z){X.mode=Z},getDocumentMode(X){return X.mode},detachNode(X){if(X.parentNode){let Z=X.parentNode.childNodes.indexOf(X);X.parentNode.childNodes.splice(Z,1),X.parentNode=null}},insertText(X,Z){if(X.childNodes.length>0){let W=X.childNodes[X.childNodes.length-1];if(V0.isTextNode(W)){W.value+=Z;return}}V0.appendChild(X,V0.createTextNode(Z))},insertTextBefore(X,Z,W){let J=X.childNodes[X.childNodes.indexOf(W)-1];if(J&&V0.isTextNode(J))J.value+=Z;else V0.insertBefore(X,V0.createTextNode(Z),W)},adoptAttributes(X,Z){let W=new Set(X.attrs.map((J)=>J.name));for(let J=0;J<Z.length;J++)if(!W.has(Z[J].name))X.attrs.push(Z[J])},getFirstChild(X){return X.childNodes[0]},getChildNodes(X){return X.childNodes},getParentNode(X){return X.parentNode},getAttrList(X){return X.attrs},getTagName(X){return X.tagName},getNamespaceURI(X){return X.namespaceURI},getTextNodeContent(X){return X.value},getCommentNodeContent(X){return X.data},getDocumentTypeNodeName(X){return X.name},getDocumentTypeNodePublicId(X){return X.publicId},getDocumentTypeNodeSystemId(X){return X.systemId},isTextNode(X){return X.nodeName==="#text"},isCommentNode(X){return X.nodeName==="#comment"},isDocumentTypeNode(X){return X.nodeName==="#documentType"},isElementNode(X){return Object.prototype.hasOwnProperty.call(X,"tagName")},setNodeSourceCodeLocation(X,Z){X.sourceCodeLocation=Z},getNodeSourceCodeLocation(X){return X.sourceCodeLocation},updateNodeSourceCodeLocation(X,Z){X.sourceCodeLocation={...X.sourceCodeLocation,...Z}}};var J6="html",c9="about:legacy-compat",a9="http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd",K6=["+//silmaril//dtd html pro v0r11 19970101//","-//as//dtd html 3.0 aswedit + extensions//","-//advasoft ltd//dtd html 3.0 aswedit + extensions//","-//ietf//dtd html 2.0 level 1//","-//ietf//dtd html 2.0 level 2//","-//ietf//dtd html 2.0 strict level 1//","-//ietf//dtd html 2.0 strict level 2//","-//ietf//dtd html 2.0 strict//","-//ietf//dtd html 2.0//","-//ietf//dtd html 2.1e//","-//ietf//dtd html 3.0//","-//ietf//dtd html 3.2 final//","-//ietf//dtd html 3.2//","-//ietf//dtd html 3//","-//ietf//dtd html level 0//","-//ietf//dtd html level 1//","-//ietf//dtd html level 2//","-//ietf//dtd html level 3//","-//ietf//dtd html strict level 0//","-//ietf//dtd html strict level 1//","-//ietf//dtd html strict level 2//","-//ietf//dtd html strict level 3//","-//ietf//dtd html strict//","-//ietf//dtd html//","-//metrius//dtd metrius presentational//","-//microsoft//dtd internet explorer 2.0 html strict//","-//microsoft//dtd internet explorer 2.0 html//","-//microsoft//dtd internet explorer 2.0 tables//","-//microsoft//dtd internet explorer 3.0 html strict//","-//microsoft//dtd internet explorer 3.0 html//","-//microsoft//dtd internet explorer 3.0 tables//","-//netscape comm. corp.//dtd html//","-//netscape comm. corp.//dtd strict html//","-//o'reilly and associates//dtd html 2.0//","-//o'reilly and associates//dtd html extended 1.0//","-//o'reilly and associates//dtd html extended relaxed 1.0//","-//sq//dtd html 2.0 hotmetal + extensions//","-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//","-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//","-//spyglass//dtd html 2.0 extended//","-//sun microsystems corp.//dtd hotjava html//","-//sun microsystems corp.//dtd hotjava strict html//","-//w3c//dtd html 3 1995-03-24//","-//w3c//dtd html 3.2 draft//","-//w3c//dtd html 3.2 final//","-//w3c//dtd html 3.2//","-//w3c//dtd html 3.2s draft//","-//w3c//dtd html 4.0 frameset//","-//w3c//dtd html 4.0 transitional//","-//w3c//dtd html experimental 19960712//","-//w3c//dtd html experimental 970421//","-//w3c//dtd w3 html//","-//w3o//dtd w3 html 3.0//","-//webtechs//dtd mozilla html 2.0//","-//webtechs//dtd mozilla html//"],d9=[...K6,"-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"],i9=new Set(["-//w3o//dtd w3 html strict 3.0//en//","-/w3c/dtd html 4.0 transitional/en","html"]),V6=["-//w3c//dtd xhtml 1.0 frameset//","-//w3c//dtd xhtml 1.0 transitional//"],p9=[...V6,"-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"];function Q6(X,Z){return Z.some((W)=>X.startsWith(W))}function Y6(X){return X.name===J6&&X.publicId===null&&(X.systemId===null||X.systemId===c9)}function z6(X){if(X.name!==J6)return e.QUIRKS;let{systemId:Z}=X;if(Z&&Z.toLowerCase()===a9)return e.QUIRKS;let{publicId:W}=X;if(W!==null){if(W=W.toLowerCase(),i9.has(W))return e.QUIRKS;let J=Z===null?d9:K6;if(Q6(W,J))return e.QUIRKS;if(J=Z===null?V6:p9,Q6(W,J))return e.LIMITED_QUIRKS}return e.NO_QUIRKS}var j6={TEXT_HTML:"text/html",APPLICATION_XML:"application/xhtml+xml"},r9="definitionurl",o9="definitionURL",n9=new Map(["attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map((X)=>[X.toLowerCase(),X])),t9=new Map([["xlink:actuate",{prefix:"xlink",name:"actuate",namespace:P.XLINK}],["xlink:arcrole",{prefix:"xlink",name:"arcrole",namespace:P.XLINK}],["xlink:href",{prefix:"xlink",name:"href",namespace:P.XLINK}],["xlink:role",{prefix:"xlink",name:"role",namespace:P.XLINK}],["xlink:show",{prefix:"xlink",name:"show",namespace:P.XLINK}],["xlink:title",{prefix:"xlink",name:"title",namespace:P.XLINK}],["xlink:type",{prefix:"xlink",name:"type",namespace:P.XLINK}],["xml:lang",{prefix:"xml",name:"lang",namespace:P.XML}],["xml:space",{prefix:"xml",name:"space",namespace:P.XML}],["xmlns",{prefix:"",name:"xmlns",namespace:P.XMLNS}],["xmlns:xlink",{prefix:"xmlns",name:"xlink",namespace:P.XMLNS}]]),e9=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map((X)=>[X.toLowerCase(),X])),XZ=new Set([Q.B,Q.BIG,Q.BLOCKQUOTE,Q.BODY,Q.BR,Q.CENTER,Q.CODE,Q.DD,Q.DIV,Q.DL,Q.DT,Q.EM,Q.EMBED,Q.H1,Q.H2,Q.H3,Q.H4,Q.H5,Q.H6,Q.HEAD,Q.HR,Q.I,Q.IMG,Q.LI,Q.LISTING,Q.MENU,Q.META,Q.NOBR,Q.OL,Q.P,Q.PRE,Q.RUBY,Q.S,Q.SMALL,Q.SPAN,Q.STRONG,Q.STRIKE,Q.SUB,Q.SUP,Q.TABLE,Q.TT,Q.U,Q.UL,Q.VAR]);function H6(X){let Z=X.tagID;return Z===Q.FONT&&X.attrs.some(({name:J})=>J===P0.COLOR||J===P0.SIZE||J===P0.FACE)||XZ.has(Z)}function XX(X){for(let Z=0;Z<X.attrs.length;Z++)if(X.attrs[Z].name===r9){X.attrs[Z].name=o9;break}}function ZX(X){for(let Z=0;Z<X.attrs.length;Z++){let W=n9.get(X.attrs[Z].name);if(W!=null)X.attrs[Z].name=W}}function d1(X){for(let Z=0;Z<X.attrs.length;Z++){let W=t9.get(X.attrs[Z].name);if(W)X.attrs[Z].prefix=W.prefix,X.attrs[Z].name=W.name,X.attrs[Z].namespace=W.namespace}}function w6(X){let Z=e9.get(X.tagName);if(Z!=null)X.tagName=Z,X.tagID=$0(X.tagName)}function ZZ(X,Z){return Z===P.MATHML&&(X===Q.MI||X===Q.MO||X===Q.MN||X===Q.MS||X===Q.MTEXT)}function WZ(X,Z,W){if(Z===P.MATHML&&X===Q.ANNOTATION_XML){for(let J=0;J<W.length;J++)if(W[J].name===P0.ENCODING){let K=W[J].value.toLowerCase();return K===j6.TEXT_HTML||K===j6.APPLICATION_XML}}return Z===P.SVG&&(X===Q.FOREIGN_OBJECT||X===Q.DESC||X===Q.TITLE)}function U6(X,Z,W,J){return(!J||J===P.HTML)&&WZ(X,Z,W)||(!J||J===P.MATHML)&&ZZ(X,Z)}var QZ="hidden",JZ=8,KZ=3,j;(function(X){X[X.INITIAL=0]="INITIAL",X[X.BEFORE_HTML=1]="BEFORE_HTML",X[X.BEFORE_HEAD=2]="BEFORE_HEAD",X[X.IN_HEAD=3]="IN_HEAD",X[X.IN_HEAD_NO_SCRIPT=4]="IN_HEAD_NO_SCRIPT",X[X.AFTER_HEAD=5]="AFTER_HEAD",X[X.IN_BODY=6]="IN_BODY",X[X.TEXT=7]="TEXT",X[X.IN_TABLE=8]="IN_TABLE",X[X.IN_TABLE_TEXT=9]="IN_TABLE_TEXT",X[X.IN_CAPTION=10]="IN_CAPTION",X[X.IN_COLUMN_GROUP=11]="IN_COLUMN_GROUP",X[X.IN_TABLE_BODY=12]="IN_TABLE_BODY",X[X.IN_ROW=13]="IN_ROW",X[X.IN_CELL=14]="IN_CELL",X[X.IN_SELECT=15]="IN_SELECT",X[X.IN_SELECT_IN_TABLE=16]="IN_SELECT_IN_TABLE",X[X.IN_TEMPLATE=17]="IN_TEMPLATE",X[X.AFTER_BODY=18]="AFTER_BODY",X[X.IN_FRAMESET=19]="IN_FRAMESET",X[X.AFTER_FRAMESET=20]="AFTER_FRAMESET",X[X.AFTER_AFTER_BODY=21]="AFTER_AFTER_BODY",X[X.AFTER_AFTER_FRAMESET=22]="AFTER_AFTER_FRAMESET"})(j||(j={}));var VZ={startLine:-1,startCol:-1,startOffset:-1,endLine:-1,endCol:-1,endOffset:-1},P6=new Set([Q.TABLE,Q.TBODY,Q.TFOOT,Q.THEAD,Q.TR]),B6={scriptingEnabled:!0,sourceCodeLocationInfo:!1,treeAdapter:V0,onParseError:null};class r1{constructor(X,Z,W=null,J=null){if(this.fragmentContext=W,this.scriptHandler=J,this.currentToken=null,this.stopped=!1,this.insertionMode=j.INITIAL,this.originalInsertionMode=j.INITIAL,this.headElement=null,this.formElement=null,this.currentNotInHTML=!1,this.tmplInsertionModeStack=[],this.pendingCharacterTokens=[],this.hasNonWhitespacePendingCharacterToken=!1,this.framesetOk=!0,this.skipNextNewLine=!1,this.fosterParentingEnabled=!1,this.options={...B6,...X},this.treeAdapter=this.options.treeAdapter,this.onParseError=this.options.onParseError,this.onParseError)this.options.sourceCodeLocationInfo=!0;this.document=Z!==null&&Z!==void 0?Z:this.treeAdapter.createDocument(),this.tokenizer=new c1(this.options,this),this.activeFormattingElements=new e2(this.treeAdapter),this.fragmentContextID=W?$0(this.treeAdapter.getTagName(W)):Q.UNKNOWN,this._setContextModes(W!==null&&W!==void 0?W:this.document,this.fragmentContextID),this.openElements=new t2(this.document,this.treeAdapter,this)}static parse(X,Z){let W=new this(Z);return W.tokenizer.write(X,!0),W.document}static getFragmentParser(X,Z){let W={...B6,...Z};X!==null&&X!==void 0||(X=W.treeAdapter.createElement(B.TEMPLATE,P.HTML,[]));let J=W.treeAdapter.createElement("documentmock",P.HTML,[]),K=new this(W,J,X);if(K.fragmentContextID===Q.TEMPLATE)K.tmplInsertionModeStack.unshift(j.IN_TEMPLATE);return K._initTokenizerForFragmentParsing(),K._insertFakeRootElement(),K._resetInsertionMode(),K._findFormInFragmentContext(),K}getFragment(){let X=this.treeAdapter.getFirstChild(this.document),Z=this.treeAdapter.createDocumentFragment();return this._adoptNodes(X,Z),Z}_err(X,Z,W){var J;if(!this.onParseError)return;let K=(J=X.location)!==null&&J!==void 0?J:VZ,V={code:Z,startLine:K.startLine,startCol:K.startCol,startOffset:K.startOffset,endLine:W?K.startLine:K.endLine,endCol:W?K.startCol:K.endCol,endOffset:W?K.startOffset:K.endOffset};this.onParseError(V)}onItemPush(X,Z,W){var J,K;if((K=(J=this.treeAdapter).onItemPush)===null||K===void 0||K.call(J,X),W&&this.openElements.stackTop>0)this._setContextModes(X,Z)}onItemPop(X,Z){var W,J;if(this.options.sourceCodeLocationInfo)this._setEndLocation(X,this.currentToken);if((J=(W=this.treeAdapter).onItemPop)===null||J===void 0||J.call(W,X,this.openElements.current),Z){let K,V;if(this.openElements.stackTop===0&&this.fragmentContext)K=this.fragmentContext,V=this.fragmentContextID;else({current:K,currentTagId:V}=this.openElements);this._setContextModes(K,V)}}_setContextModes(X,Z){let W=X===this.document||X&&this.treeAdapter.getNamespaceURI(X)===P.HTML;this.currentNotInHTML=!W,this.tokenizer.inForeignNode=!W&&X!==void 0&&Z!==void 0&&!this._isIntegrationPoint(Z,X)}_switchToTextParsing(X,Z){this._insertElement(X,P.HTML),this.tokenizer.state=Z,this.originalInsertionMode=this.insertionMode,this.insertionMode=j.TEXT}switchToPlaintextParsing(){this.insertionMode=j.TEXT,this.originalInsertionMode=j.IN_BODY,this.tokenizer.state=o.PLAINTEXT}_getAdjustedCurrentElement(){return this.openElements.stackTop===0&&this.fragmentContext?this.fragmentContext:this.openElements.current}_findFormInFragmentContext(){let X=this.fragmentContext;while(X){if(this.treeAdapter.getTagName(X)===B.FORM){this.formElement=X;break}X=this.treeAdapter.getParentNode(X)}}_initTokenizerForFragmentParsing(){if(!this.fragmentContext||this.treeAdapter.getNamespaceURI(this.fragmentContext)!==P.HTML)return;switch(this.fragmentContextID){case Q.TITLE:case Q.TEXTAREA:{this.tokenizer.state=o.RCDATA;break}case Q.STYLE:case Q.XMP:case Q.IFRAME:case Q.NOEMBED:case Q.NOFRAMES:case Q.NOSCRIPT:{this.tokenizer.state=o.RAWTEXT;break}case Q.SCRIPT:{this.tokenizer.state=o.SCRIPT_DATA;break}case Q.PLAINTEXT:{this.tokenizer.state=o.PLAINTEXT;break}default:}}_setDocumentType(X){let Z=X.name||"",W=X.publicId||"",J=X.systemId||"";if(this.treeAdapter.setDocumentType(this.document,Z,W,J),X.location){let V=this.treeAdapter.getChildNodes(this.document).find((H)=>this.treeAdapter.isDocumentTypeNode(H));if(V)this.treeAdapter.setNodeSourceCodeLocation(V,X.location)}}_attachElementToTree(X,Z){if(this.options.sourceCodeLocationInfo){let W=Z&&{...Z,startTag:Z};this.treeAdapter.setNodeSourceCodeLocation(X,W)}if(this._shouldFosterParentOnInsertion())this._fosterParentElement(X);else{let W=this.openElements.currentTmplContentOrNode;this.treeAdapter.appendChild(W!==null&&W!==void 0?W:this.document,X)}}_appendElement(X,Z){let W=this.treeAdapter.createElement(X.tagName,Z,X.attrs);this._attachElementToTree(W,X.location)}_insertElement(X,Z){let W=this.treeAdapter.createElement(X.tagName,Z,X.attrs);this._attachElementToTree(W,X.location),this.openElements.push(W,X.tagID)}_insertFakeElement(X,Z){let W=this.treeAdapter.createElement(X,P.HTML,[]);this._attachElementToTree(W,null),this.openElements.push(W,Z)}_insertTemplate(X){let Z=this.treeAdapter.createElement(X.tagName,P.HTML,X.attrs),W=this.treeAdapter.createDocumentFragment();if(this.treeAdapter.setTemplateContent(Z,W),this._attachElementToTree(Z,X.location),this.openElements.push(Z,X.tagID),this.options.sourceCodeLocationInfo)this.treeAdapter.setNodeSourceCodeLocation(W,null)}_insertFakeRootElement(){let X=this.treeAdapter.createElement(B.HTML,P.HTML,[]);if(this.options.sourceCodeLocationInfo)this.treeAdapter.setNodeSourceCodeLocation(X,null);this.treeAdapter.appendChild(this.openElements.current,X),this.openElements.push(X,Q.HTML)}_appendCommentNode(X,Z){let W=this.treeAdapter.createCommentNode(X.data);if(this.treeAdapter.appendChild(Z,W),this.options.sourceCodeLocationInfo)this.treeAdapter.setNodeSourceCodeLocation(W,X.location)}_insertCharacters(X){let Z,W;if(this._shouldFosterParentOnInsertion())if({parent:Z,beforeElement:W}=this._findFosterParentingLocation(),W)this.treeAdapter.insertTextBefore(Z,X.chars,W);else this.treeAdapter.insertText(Z,X.chars);else Z=this.openElements.currentTmplContentOrNode,this.treeAdapter.insertText(Z,X.chars);if(!X.location)return;let J=this.treeAdapter.getChildNodes(Z),K=W?J.lastIndexOf(W):J.length,V=J[K-1];if(this.treeAdapter.getNodeSourceCodeLocation(V)){let{endLine:U,endCol:F,endOffset:w}=X.location;this.treeAdapter.updateNodeSourceCodeLocation(V,{endLine:U,endCol:F,endOffset:w})}else if(this.options.sourceCodeLocationInfo)this.treeAdapter.setNodeSourceCodeLocation(V,X.location)}_adoptNodes(X,Z){for(let W=this.treeAdapter.getFirstChild(X);W;W=this.treeAdapter.getFirstChild(X))this.treeAdapter.detachNode(W),this.treeAdapter.appendChild(Z,W)}_setEndLocation(X,Z){if(this.treeAdapter.getNodeSourceCodeLocation(X)&&Z.location){let W=Z.location,J=this.treeAdapter.getTagName(X),K=Z.type===k.END_TAG&&J===Z.tagName?{endTag:{...W},endLine:W.endLine,endCol:W.endCol,endOffset:W.endOffset}:{endLine:W.startLine,endCol:W.startCol,endOffset:W.startOffset};this.treeAdapter.updateNodeSourceCodeLocation(X,K)}}shouldProcessStartTagTokenInForeignContent(X){if(!this.currentNotInHTML)return!1;let Z,W;if(this.openElements.stackTop===0&&this.fragmentContext)Z=this.fragmentContext,W=this.fragmentContextID;else({current:Z,currentTagId:W}=this.openElements);if(X.tagID===Q.SVG&&this.treeAdapter.getTagName(Z)===B.ANNOTATION_XML&&this.treeAdapter.getNamespaceURI(Z)===P.MATHML)return!1;return this.tokenizer.inForeignNode||(X.tagID===Q.MGLYPH||X.tagID===Q.MALIGNMARK)&&W!==void 0&&!this._isIntegrationPoint(W,Z,P.HTML)}_processToken(X){switch(X.type){case k.CHARACTER:{this.onCharacter(X);break}case k.NULL_CHARACTER:{this.onNullCharacter(X);break}case k.COMMENT:{this.onComment(X);break}case k.DOCTYPE:{this.onDoctype(X);break}case k.START_TAG:{this._processStartTag(X);break}case k.END_TAG:{this.onEndTag(X);break}case k.EOF:{this.onEof(X);break}case k.WHITESPACE_CHARACTER:{this.onWhitespaceCharacter(X);break}}}_isIntegrationPoint(X,Z,W){let J=this.treeAdapter.getNamespaceURI(Z),K=this.treeAdapter.getAttrList(Z);return U6(X,J,K,W)}_reconstructActiveFormattingElements(){let X=this.activeFormattingElements.entries.length;if(X){let Z=this.activeFormattingElements.entries.findIndex((J)=>J.type===j0.Marker||this.openElements.contains(J.element)),W=Z===-1?X-1:Z-1;for(let J=W;J>=0;J--){let K=this.activeFormattingElements.entries[J];this._insertElement(K.token,this.treeAdapter.getNamespaceURI(K.element)),K.element=this.openElements.current}}}_closeTableCell(){this.openElements.generateImpliedEndTags(),this.openElements.popUntilTableCellPopped(),this.activeFormattingElements.clearToLastMarker(),this.insertionMode=j.IN_ROW}_closePElement(){this.openElements.generateImpliedEndTagsWithExclusion(Q.P),this.openElements.popUntilTagNamePopped(Q.P)}_resetInsertionMode(){for(let X=this.openElements.stackTop;X>=0;X--)switch(X===0&&this.fragmentContext?this.fragmentContextID:this.openElements.tagIDs[X]){case Q.TR:{this.insertionMode=j.IN_ROW;return}case Q.TBODY:case Q.THEAD:case Q.TFOOT:{this.insertionMode=j.IN_TABLE_BODY;return}case Q.CAPTION:{this.insertionMode=j.IN_CAPTION;return}case Q.COLGROUP:{this.insertionMode=j.IN_COLUMN_GROUP;return}case Q.TABLE:{this.insertionMode=j.IN_TABLE;return}case Q.BODY:{this.insertionMode=j.IN_BODY;return}case Q.FRAMESET:{this.insertionMode=j.IN_FRAMESET;return}case Q.SELECT:{this._resetInsertionModeForSelect(X);return}case Q.TEMPLATE:{this.insertionMode=this.tmplInsertionModeStack[0];return}case Q.HTML:{this.insertionMode=this.headElement?j.AFTER_HEAD:j.BEFORE_HEAD;return}case Q.TD:case Q.TH:{if(X>0){this.insertionMode=j.IN_CELL;return}break}case Q.HEAD:{if(X>0){this.insertionMode=j.IN_HEAD;return}break}}this.insertionMode=j.IN_BODY}_resetInsertionModeForSelect(X){if(X>0)for(let Z=X-1;Z>0;Z--){let W=this.openElements.tagIDs[Z];if(W===Q.TEMPLATE)break;else if(W===Q.TABLE){this.insertionMode=j.IN_SELECT_IN_TABLE;return}}this.insertionMode=j.IN_SELECT}_isElementCausesFosterParenting(X){return P6.has(X)}_shouldFosterParentOnInsertion(){return this.fosterParentingEnabled&&this.openElements.currentTagId!==void 0&&this._isElementCausesFosterParenting(this.openElements.currentTagId)}_findFosterParentingLocation(){for(let X=this.openElements.stackTop;X>=0;X--){let Z=this.openElements.items[X];switch(this.openElements.tagIDs[X]){case Q.TEMPLATE:{if(this.treeAdapter.getNamespaceURI(Z)===P.HTML)return{parent:this.treeAdapter.getTemplateContent(Z),beforeElement:null};break}case Q.TABLE:{let W=this.treeAdapter.getParentNode(Z);if(W)return{parent:W,beforeElement:Z};return{parent:this.openElements.items[X-1],beforeElement:null}}default:}}return{parent:this.openElements.items[0],beforeElement:null}}_fosterParentElement(X){let Z=this._findFosterParentingLocation();if(Z.beforeElement)this.treeAdapter.insertBefore(Z.parent,X,Z.beforeElement);else this.treeAdapter.appendChild(Z.parent,X)}_isSpecialElement(X,Z){let W=this.treeAdapter.getNamespaceURI(X);return p3[W].has(Z)}onCharacter(X){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){_5(this,X);return}switch(this.insertionMode){case j.INITIAL:{Q1(this,X);break}case j.BEFORE_HTML:{K1(this,X);break}case j.BEFORE_HEAD:{V1(this,X);break}case j.IN_HEAD:{Y1(this,X);break}case j.IN_HEAD_NO_SCRIPT:{z1(this,X);break}case j.AFTER_HEAD:{j1(this,X);break}case j.IN_BODY:case j.IN_CAPTION:case j.IN_CELL:case j.IN_TEMPLATE:{b6(this,X);break}case j.TEXT:case j.IN_SELECT:case j.IN_SELECT_IN_TABLE:{this._insertCharacters(X);break}case j.IN_TABLE:case j.IN_TABLE_BODY:case j.IN_ROW:{WX(this,X);break}case j.IN_TABLE_TEXT:{C6(this,X);break}case j.IN_COLUMN_GROUP:{p1(this,X);break}case j.AFTER_BODY:{s1(this,X);break}case j.AFTER_AFTER_BODY:{i1(this,X);break}default:}}onNullCharacter(X){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){k5(this,X);return}switch(this.insertionMode){case j.INITIAL:{Q1(this,X);break}case j.BEFORE_HTML:{K1(this,X);break}case j.BEFORE_HEAD:{V1(this,X);break}case j.IN_HEAD:{Y1(this,X);break}case j.IN_HEAD_NO_SCRIPT:{z1(this,X);break}case j.AFTER_HEAD:{j1(this,X);break}case j.TEXT:{this._insertCharacters(X);break}case j.IN_TABLE:case j.IN_TABLE_BODY:case j.IN_ROW:{WX(this,X);break}case j.IN_COLUMN_GROUP:{p1(this,X);break}case j.AFTER_BODY:{s1(this,X);break}case j.AFTER_AFTER_BODY:{i1(this,X);break}default:}}onComment(X){if(this.skipNextNewLine=!1,this.currentNotInHTML){QX(this,X);return}switch(this.insertionMode){case j.INITIAL:case j.BEFORE_HTML:case j.BEFORE_HEAD:case j.IN_HEAD:case j.IN_HEAD_NO_SCRIPT:case j.AFTER_HEAD:case j.IN_BODY:case j.IN_TABLE:case j.IN_CAPTION:case j.IN_COLUMN_GROUP:case j.IN_TABLE_BODY:case j.IN_ROW:case j.IN_CELL:case j.IN_SELECT:case j.IN_SELECT_IN_TABLE:case j.IN_TEMPLATE:case j.IN_FRAMESET:case j.AFTER_FRAMESET:{QX(this,X);break}case j.IN_TABLE_TEXT:{J1(this,X);break}case j.AFTER_BODY:{FZ(this,X);break}case j.AFTER_AFTER_BODY:case j.AFTER_AFTER_FRAMESET:{BZ(this,X);break}default:}}onDoctype(X){switch(this.skipNextNewLine=!1,this.insertionMode){case j.INITIAL:{qZ(this,X);break}case j.BEFORE_HEAD:case j.IN_HEAD:case j.IN_HEAD_NO_SCRIPT:case j.AFTER_HEAD:{this._err(X,L.misplacedDoctype);break}case j.IN_TABLE_TEXT:{J1(this,X);break}default:}}onStartTag(X){if(this.skipNextNewLine=!1,this.currentToken=X,this._processStartTag(X),X.selfClosing&&!X.ackSelfClosing)this._err(X,L.nonVoidHtmlElementStartTagWithTrailingSolidus)}_processStartTag(X){if(this.shouldProcessStartTagTokenInForeignContent(X))I5(this,X);else this._startTagOutsideForeignContent(X)}_startTagOutsideForeignContent(X){switch(this.insertionMode){case j.INITIAL:{Q1(this,X);break}case j.BEFORE_HTML:{LZ(this,X);break}case j.BEFORE_HEAD:{xZ(this,X);break}case j.IN_HEAD:{H0(this,X);break}case j.IN_HEAD_NO_SCRIPT:{yZ(this,X);break}case j.AFTER_HEAD:{OZ(this,X);break}case j.IN_BODY:{n(this,X);break}case j.IN_TABLE:{c0(this,X);break}case j.IN_TABLE_TEXT:{J1(this,X);break}case j.IN_CAPTION:{b5(this,X);break}case j.IN_COLUMN_GROUP:{YX(this,X);break}case j.IN_TABLE_BODY:{t1(this,X);break}case j.IN_ROW:{e1(this,X);break}case j.IN_CELL:{R5(this,X);break}case j.IN_SELECT:{M6(this,X);break}case j.IN_SELECT_IN_TABLE:{f5(this,X);break}case j.IN_TEMPLATE:{h5(this,X);break}case j.AFTER_BODY:{M5(this,X);break}case j.IN_FRAMESET:{g5(this,X);break}case j.AFTER_FRAMESET:{$5(this,X);break}case j.AFTER_AFTER_BODY:{m5(this,X);break}case j.AFTER_AFTER_FRAMESET:{E5(this,X);break}default:}}onEndTag(X){if(this.skipNextNewLine=!1,this.currentToken=X,this.currentNotInHTML)S5(this,X);else this._endTagOutsideForeignContent(X)}_endTagOutsideForeignContent(X){switch(this.insertionMode){case j.INITIAL:{Q1(this,X);break}case j.BEFORE_HTML:{PZ(this,X);break}case j.BEFORE_HEAD:{bZ(this,X);break}case j.IN_HEAD:{vZ(this,X);break}case j.IN_HEAD_NO_SCRIPT:{RZ(this,X);break}case j.AFTER_HEAD:{fZ(this,X);break}case j.IN_BODY:{n1(this,X);break}case j.TEXT:{j5(this,X);break}case j.IN_TABLE:{H1(this,X);break}case j.IN_TABLE_TEXT:{J1(this,X);break}case j.IN_CAPTION:{v5(this,X);break}case j.IN_COLUMN_GROUP:{y5(this,X);break}case j.IN_TABLE_BODY:{JX(this,X);break}case j.IN_ROW:{N6(this,X);break}case j.IN_CELL:{O5(this,X);break}case j.IN_SELECT:{g6(this,X);break}case j.IN_SELECT_IN_TABLE:{C5(this,X);break}case j.IN_TEMPLATE:{N5(this,X);break}case j.AFTER_BODY:{$6(this,X);break}case j.IN_FRAMESET:{D5(this,X);break}case j.AFTER_FRAMESET:{G5(this,X);break}case j.AFTER_AFTER_BODY:{i1(this,X);break}default:}}onEof(X){switch(this.insertionMode){case j.INITIAL:{Q1(this,X);break}case j.BEFORE_HTML:{K1(this,X);break}case j.BEFORE_HEAD:{V1(this,X);break}case j.IN_HEAD:{Y1(this,X);break}case j.IN_HEAD_NO_SCRIPT:{z1(this,X);break}case j.AFTER_HEAD:{j1(this,X);break}case j.IN_BODY:case j.IN_TABLE:case j.IN_CAPTION:case j.IN_COLUMN_GROUP:case j.IN_TABLE_BODY:case j.IN_ROW:case j.IN_CELL:case j.IN_SELECT:case j.IN_SELECT_IN_TABLE:{O6(this,X);break}case j.TEXT:{H5(this,X);break}case j.IN_TABLE_TEXT:{J1(this,X);break}case j.IN_TEMPLATE:{D6(this,X);break}case j.AFTER_BODY:case j.IN_FRAMESET:case j.AFTER_FRAMESET:case j.AFTER_AFTER_BODY:case j.AFTER_AFTER_FRAMESET:{VX(this,X);break}default:}}onWhitespaceCharacter(X){if(this.skipNextNewLine){if(this.skipNextNewLine=!1,X.chars.charCodeAt(0)===Y.LINE_FEED){if(X.chars.length===1)return;X.chars=X.chars.substr(1)}}if(this.tokenizer.inForeignNode){this._insertCharacters(X);return}switch(this.insertionMode){case j.IN_HEAD:case j.IN_HEAD_NO_SCRIPT:case j.AFTER_HEAD:case j.TEXT:case j.IN_COLUMN_GROUP:case j.IN_SELECT:case j.IN_SELECT_IN_TABLE:case j.IN_FRAMESET:case j.AFTER_FRAMESET:{this._insertCharacters(X);break}case j.IN_BODY:case j.IN_CAPTION:case j.IN_CELL:case j.IN_TEMPLATE:case j.AFTER_BODY:case j.AFTER_AFTER_BODY:case j.AFTER_AFTER_FRAMESET:{x6(this,X);break}case j.IN_TABLE:case j.IN_TABLE_BODY:case j.IN_ROW:{WX(this,X);break}case j.IN_TABLE_TEXT:{f6(this,X);break}default:}}}function YZ(X,Z){let W=X.activeFormattingElements.getElementEntryInScopeWithTagName(Z.tagName);if(W){if(!X.openElements.contains(W.element))X.activeFormattingElements.removeEntry(W),W=null;else if(!X.openElements.hasInScope(Z.tagID))W=null}else R6(X,Z);return W}function zZ(X,Z){let W=null,J=X.openElements.stackTop;for(;J>=0;J--){let K=X.openElements.items[J];if(K===Z.element)break;if(X._isSpecialElement(K,X.openElements.tagIDs[J]))W=K}if(!W)X.openElements.shortenToLength(Math.max(J,0)),X.activeFormattingElements.removeEntry(Z);return W}function jZ(X,Z,W){let J=Z,K=X.openElements.getCommonAncestor(Z);for(let V=0,H=K;H!==W;V++,H=K){K=X.openElements.getCommonAncestor(H);let U=X.activeFormattingElements.getElementEntry(H),F=U&&V>=KZ;if(!U||F){if(F)X.activeFormattingElements.removeEntry(U);X.openElements.remove(H)}else{if(H=HZ(X,U),J===Z)X.activeFormattingElements.bookmark=U;X.treeAdapter.detachNode(J),X.treeAdapter.appendChild(H,J),J=H}}return J}function HZ(X,Z){let W=X.treeAdapter.getNamespaceURI(Z.element),J=X.treeAdapter.createElement(Z.token.tagName,W,Z.token.attrs);return X.openElements.replace(Z.element,J),Z.element=J,J}function wZ(X,Z,W){let J=X.treeAdapter.getTagName(Z),K=$0(J);if(X._isElementCausesFosterParenting(K))X._fosterParentElement(W);else{let V=X.treeAdapter.getNamespaceURI(Z);if(K===Q.TEMPLATE&&V===P.HTML)Z=X.treeAdapter.getTemplateContent(Z);X.treeAdapter.appendChild(Z,W)}}function UZ(X,Z,W){let J=X.treeAdapter.getNamespaceURI(W.element),{token:K}=W,V=X.treeAdapter.createElement(K.tagName,J,K.attrs);X._adoptNodes(Z,V),X.treeAdapter.appendChild(Z,V),X.activeFormattingElements.insertElementAfterBookmark(V,K),X.activeFormattingElements.removeEntry(W),X.openElements.remove(W.element),X.openElements.insertAfter(Z,V,K.tagID)}function KX(X,Z){for(let W=0;W<JZ;W++){let J=YZ(X,Z);if(!J)break;let K=zZ(X,J);if(!K)break;X.activeFormattingElements.bookmark=J;let V=jZ(X,K,J.element),H=X.openElements.getCommonAncestor(J.element);if(X.treeAdapter.detachNode(V),H)wZ(X,H,V);UZ(X,K,J)}}function QX(X,Z){X._appendCommentNode(Z,X.openElements.currentTmplContentOrNode)}function FZ(X,Z){X._appendCommentNode(Z,X.openElements.items[0])}function BZ(X,Z){X._appendCommentNode(Z,X.document)}function VX(X,Z){if(X.stopped=!0,Z.location){let W=X.fragmentContext?0:2;for(let J=X.openElements.stackTop;J>=W;J--)X._setEndLocation(X.openElements.items[J],Z);if(!X.fragmentContext&&X.openElements.stackTop>=0){let J=X.openElements.items[0],K=X.treeAdapter.getNodeSourceCodeLocation(J);if(K&&!K.endTag){if(X._setEndLocation(J,Z),X.openElements.stackTop>=1){let V=X.openElements.items[1],H=X.treeAdapter.getNodeSourceCodeLocation(V);if(H&&!H.endTag)X._setEndLocation(V,Z)}}}}}function qZ(X,Z){X._setDocumentType(Z);let W=Z.forceQuirks?e.QUIRKS:z6(Z);if(!Y6(Z))X._err(Z,L.nonConformingDoctype);X.treeAdapter.setDocumentMode(X.document,W),X.insertionMode=j.BEFORE_HTML}function Q1(X,Z){X._err(Z,L.missingDoctype,!0),X.treeAdapter.setDocumentMode(X.document,e.QUIRKS),X.insertionMode=j.BEFORE_HTML,X._processToken(Z)}function LZ(X,Z){if(Z.tagID===Q.HTML)X._insertElement(Z,P.HTML),X.insertionMode=j.BEFORE_HEAD;else K1(X,Z)}function PZ(X,Z){let W=Z.tagID;if(W===Q.HTML||W===Q.HEAD||W===Q.BODY||W===Q.BR)K1(X,Z)}function K1(X,Z){X._insertFakeRootElement(),X.insertionMode=j.BEFORE_HEAD,X._processToken(Z)}function xZ(X,Z){switch(Z.tagID){case Q.HTML:{n(X,Z);break}case Q.HEAD:{X._insertElement(Z,P.HTML),X.headElement=X.openElements.current,X.insertionMode=j.IN_HEAD;break}default:V1(X,Z)}}function bZ(X,Z){let W=Z.tagID;if(W===Q.HEAD||W===Q.BODY||W===Q.HTML||W===Q.BR)V1(X,Z);else X._err(Z,L.endTagWithoutMatchingOpenElement)}function V1(X,Z){X._insertFakeElement(B.HEAD,Q.HEAD),X.headElement=X.openElements.current,X.insertionMode=j.IN_HEAD,X._processToken(Z)}function H0(X,Z){switch(Z.tagID){case Q.HTML:{n(X,Z);break}case Q.BASE:case Q.BASEFONT:case Q.BGSOUND:case Q.LINK:case Q.META:{X._appendElement(Z,P.HTML),Z.ackSelfClosing=!0;break}case Q.TITLE:{X._switchToTextParsing(Z,o.RCDATA);break}case Q.NOSCRIPT:{if(X.options.scriptingEnabled)X._switchToTextParsing(Z,o.RAWTEXT);else X._insertElement(Z,P.HTML),X.insertionMode=j.IN_HEAD_NO_SCRIPT;break}case Q.NOFRAMES:case Q.STYLE:{X._switchToTextParsing(Z,o.RAWTEXT);break}case Q.SCRIPT:{X._switchToTextParsing(Z,o.SCRIPT_DATA);break}case Q.TEMPLATE:{X._insertTemplate(Z),X.activeFormattingElements.insertMarker(),X.framesetOk=!1,X.insertionMode=j.IN_TEMPLATE,X.tmplInsertionModeStack.unshift(j.IN_TEMPLATE);break}case Q.HEAD:{X._err(Z,L.misplacedStartTagForHeadElement);break}default:Y1(X,Z)}}function vZ(X,Z){switch(Z.tagID){case Q.HEAD:{X.openElements.pop(),X.insertionMode=j.AFTER_HEAD;break}case Q.BODY:case Q.BR:case Q.HTML:{Y1(X,Z);break}case Q.TEMPLATE:{G0(X,Z);break}default:X._err(Z,L.endTagWithoutMatchingOpenElement)}}function G0(X,Z){if(X.openElements.tmplCount>0){if(X.openElements.generateImpliedEndTagsThoroughly(),X.openElements.currentTagId!==Q.TEMPLATE)X._err(Z,L.closingOfElementWithOpenChildElements);X.openElements.popUntilTagNamePopped(Q.TEMPLATE),X.activeFormattingElements.clearToLastMarker(),X.tmplInsertionModeStack.shift(),X._resetInsertionMode()}else X._err(Z,L.endTagWithoutMatchingOpenElement)}function Y1(X,Z){X.openElements.pop(),X.insertionMode=j.AFTER_HEAD,X._processToken(Z)}function yZ(X,Z){switch(Z.tagID){case Q.HTML:{n(X,Z);break}case Q.BASEFONT:case Q.BGSOUND:case Q.HEAD:case Q.LINK:case Q.META:case Q.NOFRAMES:case Q.STYLE:{H0(X,Z);break}case Q.NOSCRIPT:{X._err(Z,L.nestedNoscriptInHead);break}default:z1(X,Z)}}function RZ(X,Z){switch(Z.tagID){case Q.NOSCRIPT:{X.openElements.pop(),X.insertionMode=j.IN_HEAD;break}case Q.BR:{z1(X,Z);break}default:X._err(Z,L.endTagWithoutMatchingOpenElement)}}function z1(X,Z){let W=Z.type===k.EOF?L.openElementsLeftAfterEof:L.disallowedContentInNoscriptInHead;X._err(Z,W),X.openElements.pop(),X.insertionMode=j.IN_HEAD,X._processToken(Z)}function OZ(X,Z){switch(Z.tagID){case Q.HTML:{n(X,Z);break}case Q.BODY:{X._insertElement(Z,P.HTML),X.framesetOk=!1,X.insertionMode=j.IN_BODY;break}case Q.FRAMESET:{X._insertElement(Z,P.HTML),X.insertionMode=j.IN_FRAMESET;break}case Q.BASE:case Q.BASEFONT:case Q.BGSOUND:case Q.LINK:case Q.META:case Q.NOFRAMES:case Q.SCRIPT:case Q.STYLE:case Q.TEMPLATE:case Q.TITLE:{X._err(Z,L.abandonedHeadElementChild),X.openElements.push(X.headElement,Q.HEAD),H0(X,Z),X.openElements.remove(X.headElement);break}case Q.HEAD:{X._err(Z,L.misplacedStartTagForHeadElement);break}default:j1(X,Z)}}function fZ(X,Z){switch(Z.tagID){case Q.BODY:case Q.HTML:case Q.BR:{j1(X,Z);break}case Q.TEMPLATE:{G0(X,Z);break}default:X._err(Z,L.endTagWithoutMatchingOpenElement)}}function j1(X,Z){X._insertFakeElement(B.BODY,Q.BODY),X.insertionMode=j.IN_BODY,o1(X,Z)}function o1(X,Z){switch(Z.type){case k.CHARACTER:{b6(X,Z);break}case k.WHITESPACE_CHARACTER:{x6(X,Z);break}case k.COMMENT:{QX(X,Z);break}case k.START_TAG:{n(X,Z);break}case k.END_TAG:{n1(X,Z);break}case k.EOF:{O6(X,Z);break}default:}}function x6(X,Z){X._reconstructActiveFormattingElements(),X._insertCharacters(Z)}function b6(X,Z){X._reconstructActiveFormattingElements(),X._insertCharacters(Z),X.framesetOk=!1}function CZ(X,Z){if(X.openElements.tmplCount===0)X.treeAdapter.adoptAttributes(X.openElements.items[0],Z.attrs)}function hZ(X,Z){let W=X.openElements.tryPeekProperlyNestedBodyElement();if(W&&X.openElements.tmplCount===0)X.framesetOk=!1,X.treeAdapter.adoptAttributes(W,Z.attrs)}function NZ(X,Z){let W=X.openElements.tryPeekProperlyNestedBodyElement();if(X.framesetOk&&W)X.treeAdapter.detachNode(W),X.openElements.popAllUpToHtmlElement(),X._insertElement(Z,P.HTML),X.insertionMode=j.IN_FRAMESET}function MZ(X,Z){if(X.openElements.hasInButtonScope(Q.P))X._closePElement();X._insertElement(Z,P.HTML)}function gZ(X,Z){if(X.openElements.hasInButtonScope(Q.P))X._closePElement();if(X.openElements.currentTagId!==void 0&&Z1.has(X.openElements.currentTagId))X.openElements.pop();X._insertElement(Z,P.HTML)}function DZ(X,Z){if(X.openElements.hasInButtonScope(Q.P))X._closePElement();X._insertElement(Z,P.HTML),X.skipNextNewLine=!0,X.framesetOk=!1}function $Z(X,Z){let W=X.openElements.tmplCount>0;if(!X.formElement||W){if(X.openElements.hasInButtonScope(Q.P))X._closePElement();if(X._insertElement(Z,P.HTML),!W)X.formElement=X.openElements.current}}function GZ(X,Z){X.framesetOk=!1;let W=Z.tagID;for(let J=X.openElements.stackTop;J>=0;J--){let K=X.openElements.tagIDs[J];if(W===Q.LI&&K===Q.LI||(W===Q.DD||W===Q.DT)&&(K===Q.DD||K===Q.DT)){X.openElements.generateImpliedEndTagsWithExclusion(K),X.openElements.popUntilTagNamePopped(K);break}if(K!==Q.ADDRESS&&K!==Q.DIV&&K!==Q.P&&X._isSpecialElement(X.openElements.items[J],K))break}if(X.openElements.hasInButtonScope(Q.P))X._closePElement();X._insertElement(Z,P.HTML)}function mZ(X,Z){if(X.openElements.hasInButtonScope(Q.P))X._closePElement();X._insertElement(Z,P.HTML),X.tokenizer.state=o.PLAINTEXT}function EZ(X,Z){if(X.openElements.hasInScope(Q.BUTTON))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(Q.BUTTON);X._reconstructActiveFormattingElements(),X._insertElement(Z,P.HTML),X.framesetOk=!1}function kZ(X,Z){let W=X.activeFormattingElements.getElementEntryInScopeWithTagName(B.A);if(W)KX(X,Z),X.openElements.remove(W.element),X.activeFormattingElements.removeEntry(W);X._reconstructActiveFormattingElements(),X._insertElement(Z,P.HTML),X.activeFormattingElements.pushElement(X.openElements.current,Z)}function _Z(X,Z){X._reconstructActiveFormattingElements(),X._insertElement(Z,P.HTML),X.activeFormattingElements.pushElement(X.openElements.current,Z)}function IZ(X,Z){if(X._reconstructActiveFormattingElements(),X.openElements.hasInScope(Q.NOBR))KX(X,Z),X._reconstructActiveFormattingElements();X._insertElement(Z,P.HTML),X.activeFormattingElements.pushElement(X.openElements.current,Z)}function SZ(X,Z){X._reconstructActiveFormattingElements(),X._insertElement(Z,P.HTML),X.activeFormattingElements.insertMarker(),X.framesetOk=!1}function uZ(X,Z){if(X.treeAdapter.getDocumentMode(X.document)!==e.QUIRKS&&X.openElements.hasInButtonScope(Q.P))X._closePElement();X._insertElement(Z,P.HTML),X.framesetOk=!1,X.insertionMode=j.IN_TABLE}function v6(X,Z){X._reconstructActiveFormattingElements(),X._appendElement(Z,P.HTML),X.framesetOk=!1,Z.ackSelfClosing=!0}function y6(X){let Z=A1(X,P0.TYPE);return Z!=null&&Z.toLowerCase()===QZ}function lZ(X,Z){if(X._reconstructActiveFormattingElements(),X._appendElement(Z,P.HTML),!y6(Z))X.framesetOk=!1;Z.ackSelfClosing=!0}function AZ(X,Z){X._appendElement(Z,P.HTML),Z.ackSelfClosing=!0}function TZ(X,Z){if(X.openElements.hasInButtonScope(Q.P))X._closePElement();X._appendElement(Z,P.HTML),X.framesetOk=!1,Z.ackSelfClosing=!0}function cZ(X,Z){Z.tagName=B.IMG,Z.tagID=Q.IMG,v6(X,Z)}function aZ(X,Z){X._insertElement(Z,P.HTML),X.skipNextNewLine=!0,X.tokenizer.state=o.RCDATA,X.originalInsertionMode=X.insertionMode,X.framesetOk=!1,X.insertionMode=j.TEXT}function dZ(X,Z){if(X.openElements.hasInButtonScope(Q.P))X._closePElement();X._reconstructActiveFormattingElements(),X.framesetOk=!1,X._switchToTextParsing(Z,o.RAWTEXT)}function iZ(X,Z){X.framesetOk=!1,X._switchToTextParsing(Z,o.RAWTEXT)}function q6(X,Z){X._switchToTextParsing(Z,o.RAWTEXT)}function pZ(X,Z){X._reconstructActiveFormattingElements(),X._insertElement(Z,P.HTML),X.framesetOk=!1,X.insertionMode=X.insertionMode===j.IN_TABLE||X.insertionMode===j.IN_CAPTION||X.insertionMode===j.IN_TABLE_BODY||X.insertionMode===j.IN_ROW||X.insertionMode===j.IN_CELL?j.IN_SELECT_IN_TABLE:j.IN_SELECT}function sZ(X,Z){if(X.openElements.currentTagId===Q.OPTION)X.openElements.pop();X._reconstructActiveFormattingElements(),X._insertElement(Z,P.HTML)}function rZ(X,Z){if(X.openElements.hasInScope(Q.RUBY))X.openElements.generateImpliedEndTags();X._insertElement(Z,P.HTML)}function oZ(X,Z){if(X.openElements.hasInScope(Q.RUBY))X.openElements.generateImpliedEndTagsWithExclusion(Q.RTC);X._insertElement(Z,P.HTML)}function nZ(X,Z){if(X._reconstructActiveFormattingElements(),XX(Z),d1(Z),Z.selfClosing)X._appendElement(Z,P.MATHML);else X._insertElement(Z,P.MATHML);Z.ackSelfClosing=!0}function tZ(X,Z){if(X._reconstructActiveFormattingElements(),ZX(Z),d1(Z),Z.selfClosing)X._appendElement(Z,P.SVG);else X._insertElement(Z,P.SVG);Z.ackSelfClosing=!0}function L6(X,Z){X._reconstructActiveFormattingElements(),X._insertElement(Z,P.HTML)}function n(X,Z){switch(Z.tagID){case Q.I:case Q.S:case Q.B:case Q.U:case Q.EM:case Q.TT:case Q.BIG:case Q.CODE:case Q.FONT:case Q.SMALL:case Q.STRIKE:case Q.STRONG:{_Z(X,Z);break}case Q.A:{kZ(X,Z);break}case Q.H1:case Q.H2:case Q.H3:case Q.H4:case Q.H5:case Q.H6:{gZ(X,Z);break}case Q.P:case Q.DL:case Q.OL:case Q.UL:case Q.DIV:case Q.DIR:case Q.NAV:case Q.MAIN:case Q.MENU:case Q.ASIDE:case Q.CENTER:case Q.FIGURE:case Q.FOOTER:case Q.HEADER:case Q.HGROUP:case Q.DIALOG:case Q.DETAILS:case Q.ADDRESS:case Q.ARTICLE:case Q.SEARCH:case Q.SECTION:case Q.SUMMARY:case Q.FIELDSET:case Q.BLOCKQUOTE:case Q.FIGCAPTION:{MZ(X,Z);break}case Q.LI:case Q.DD:case Q.DT:{GZ(X,Z);break}case Q.BR:case Q.IMG:case Q.WBR:case Q.AREA:case Q.EMBED:case Q.KEYGEN:{v6(X,Z);break}case Q.HR:{TZ(X,Z);break}case Q.RB:case Q.RTC:{rZ(X,Z);break}case Q.RT:case Q.RP:{oZ(X,Z);break}case Q.PRE:case Q.LISTING:{DZ(X,Z);break}case Q.XMP:{dZ(X,Z);break}case Q.SVG:{tZ(X,Z);break}case Q.HTML:{CZ(X,Z);break}case Q.BASE:case Q.LINK:case Q.META:case Q.STYLE:case Q.TITLE:case Q.SCRIPT:case Q.BGSOUND:case Q.BASEFONT:case Q.TEMPLATE:{H0(X,Z);break}case Q.BODY:{hZ(X,Z);break}case Q.FORM:{$Z(X,Z);break}case Q.NOBR:{IZ(X,Z);break}case Q.MATH:{nZ(X,Z);break}case Q.TABLE:{uZ(X,Z);break}case Q.INPUT:{lZ(X,Z);break}case Q.PARAM:case Q.TRACK:case Q.SOURCE:{AZ(X,Z);break}case Q.IMAGE:{cZ(X,Z);break}case Q.BUTTON:{EZ(X,Z);break}case Q.APPLET:case Q.OBJECT:case Q.MARQUEE:{SZ(X,Z);break}case Q.IFRAME:{iZ(X,Z);break}case Q.SELECT:{pZ(X,Z);break}case Q.OPTION:case Q.OPTGROUP:{sZ(X,Z);break}case Q.NOEMBED:case Q.NOFRAMES:{q6(X,Z);break}case Q.FRAMESET:{NZ(X,Z);break}case Q.TEXTAREA:{aZ(X,Z);break}case Q.NOSCRIPT:{if(X.options.scriptingEnabled)q6(X,Z);else L6(X,Z);break}case Q.PLAINTEXT:{mZ(X,Z);break}case Q.COL:case Q.TH:case Q.TD:case Q.TR:case Q.HEAD:case Q.FRAME:case Q.TBODY:case Q.TFOOT:case Q.THEAD:case Q.CAPTION:case Q.COLGROUP:break;default:L6(X,Z)}}function eZ(X,Z){if(X.openElements.hasInScope(Q.BODY)){if(X.insertionMode=j.AFTER_BODY,X.options.sourceCodeLocationInfo){let W=X.openElements.tryPeekProperlyNestedBodyElement();if(W)X._setEndLocation(W,Z)}}}function X5(X,Z){if(X.openElements.hasInScope(Q.BODY))X.insertionMode=j.AFTER_BODY,$6(X,Z)}function Z5(X,Z){let W=Z.tagID;if(X.openElements.hasInScope(W))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(W)}function W5(X){let Z=X.openElements.tmplCount>0,{formElement:W}=X;if(!Z)X.formElement=null;if((W||Z)&&X.openElements.hasInScope(Q.FORM)){if(X.openElements.generateImpliedEndTags(),Z)X.openElements.popUntilTagNamePopped(Q.FORM);else if(W)X.openElements.remove(W)}}function Q5(X){if(!X.openElements.hasInButtonScope(Q.P))X._insertFakeElement(B.P,Q.P);X._closePElement()}function J5(X){if(X.openElements.hasInListItemScope(Q.LI))X.openElements.generateImpliedEndTagsWithExclusion(Q.LI),X.openElements.popUntilTagNamePopped(Q.LI)}function K5(X,Z){let W=Z.tagID;if(X.openElements.hasInScope(W))X.openElements.generateImpliedEndTagsWithExclusion(W),X.openElements.popUntilTagNamePopped(W)}function V5(X){if(X.openElements.hasNumberedHeaderInScope())X.openElements.generateImpliedEndTags(),X.openElements.popUntilNumberedHeaderPopped()}function Y5(X,Z){let W=Z.tagID;if(X.openElements.hasInScope(W))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(W),X.activeFormattingElements.clearToLastMarker()}function z5(X){X._reconstructActiveFormattingElements(),X._insertFakeElement(B.BR,Q.BR),X.openElements.pop(),X.framesetOk=!1}function R6(X,Z){let{tagName:W,tagID:J}=Z;for(let K=X.openElements.stackTop;K>0;K--){let V=X.openElements.items[K],H=X.openElements.tagIDs[K];if(J===H&&(J!==Q.UNKNOWN||X.treeAdapter.getTagName(V)===W)){if(X.openElements.generateImpliedEndTagsWithExclusion(J),X.openElements.stackTop>=K)X.openElements.shortenToLength(K);break}if(X._isSpecialElement(V,H))break}}function n1(X,Z){switch(Z.tagID){case Q.A:case Q.B:case Q.I:case Q.S:case Q.U:case Q.EM:case Q.TT:case Q.BIG:case Q.CODE:case Q.FONT:case Q.NOBR:case Q.SMALL:case Q.STRIKE:case Q.STRONG:{KX(X,Z);break}case Q.P:{Q5(X);break}case Q.DL:case Q.UL:case Q.OL:case Q.DIR:case Q.DIV:case Q.NAV:case Q.PRE:case Q.MAIN:case Q.MENU:case Q.ASIDE:case Q.BUTTON:case Q.CENTER:case Q.FIGURE:case Q.FOOTER:case Q.HEADER:case Q.HGROUP:case Q.DIALOG:case Q.ADDRESS:case Q.ARTICLE:case Q.DETAILS:case Q.SEARCH:case Q.SECTION:case Q.SUMMARY:case Q.LISTING:case Q.FIELDSET:case Q.BLOCKQUOTE:case Q.FIGCAPTION:{Z5(X,Z);break}case Q.LI:{J5(X);break}case Q.DD:case Q.DT:{K5(X,Z);break}case Q.H1:case Q.H2:case Q.H3:case Q.H4:case Q.H5:case Q.H6:{V5(X);break}case Q.BR:{z5(X);break}case Q.BODY:{eZ(X,Z);break}case Q.HTML:{X5(X,Z);break}case Q.FORM:{W5(X);break}case Q.APPLET:case Q.OBJECT:case Q.MARQUEE:{Y5(X,Z);break}case Q.TEMPLATE:{G0(X,Z);break}default:R6(X,Z)}}function O6(X,Z){if(X.tmplInsertionModeStack.length>0)D6(X,Z);else VX(X,Z)}function j5(X,Z){var W;if(Z.tagID===Q.SCRIPT)(W=X.scriptHandler)===null||W===void 0||W.call(X,X.openElements.current);X.openElements.pop(),X.insertionMode=X.originalInsertionMode}function H5(X,Z){X._err(Z,L.eofInElementThatCanContainOnlyText),X.openElements.pop(),X.insertionMode=X.originalInsertionMode,X.onEof(Z)}function WX(X,Z){if(X.openElements.currentTagId!==void 0&&P6.has(X.openElements.currentTagId))switch(X.pendingCharacterTokens.length=0,X.hasNonWhitespacePendingCharacterToken=!1,X.originalInsertionMode=X.insertionMode,X.insertionMode=j.IN_TABLE_TEXT,Z.type){case k.CHARACTER:{C6(X,Z);break}case k.WHITESPACE_CHARACTER:{f6(X,Z);break}}else w1(X,Z)}function w5(X,Z){X.openElements.clearBackToTableContext(),X.activeFormattingElements.insertMarker(),X._insertElement(Z,P.HTML),X.insertionMode=j.IN_CAPTION}function U5(X,Z){X.openElements.clearBackToTableContext(),X._insertElement(Z,P.HTML),X.insertionMode=j.IN_COLUMN_GROUP}function F5(X,Z){X.openElements.clearBackToTableContext(),X._insertFakeElement(B.COLGROUP,Q.COLGROUP),X.insertionMode=j.IN_COLUMN_GROUP,YX(X,Z)}function B5(X,Z){X.openElements.clearBackToTableContext(),X._insertElement(Z,P.HTML),X.insertionMode=j.IN_TABLE_BODY}function q5(X,Z){X.openElements.clearBackToTableContext(),X._insertFakeElement(B.TBODY,Q.TBODY),X.insertionMode=j.IN_TABLE_BODY,t1(X,Z)}function L5(X,Z){if(X.openElements.hasInTableScope(Q.TABLE))X.openElements.popUntilTagNamePopped(Q.TABLE),X._resetInsertionMode(),X._processStartTag(Z)}function P5(X,Z){if(y6(Z))X._appendElement(Z,P.HTML);else w1(X,Z);Z.ackSelfClosing=!0}function x5(X,Z){if(!X.formElement&&X.openElements.tmplCount===0)X._insertElement(Z,P.HTML),X.formElement=X.openElements.current,X.openElements.pop()}function c0(X,Z){switch(Z.tagID){case Q.TD:case Q.TH:case Q.TR:{q5(X,Z);break}case Q.STYLE:case Q.SCRIPT:case Q.TEMPLATE:{H0(X,Z);break}case Q.COL:{F5(X,Z);break}case Q.FORM:{x5(X,Z);break}case Q.TABLE:{L5(X,Z);break}case Q.TBODY:case Q.TFOOT:case Q.THEAD:{B5(X,Z);break}case Q.INPUT:{P5(X,Z);break}case Q.CAPTION:{w5(X,Z);break}case Q.COLGROUP:{U5(X,Z);break}default:w1(X,Z)}}function H1(X,Z){switch(Z.tagID){case Q.TABLE:{if(X.openElements.hasInTableScope(Q.TABLE))X.openElements.popUntilTagNamePopped(Q.TABLE),X._resetInsertionMode();break}case Q.TEMPLATE:{G0(X,Z);break}case Q.BODY:case Q.CAPTION:case Q.COL:case Q.COLGROUP:case Q.HTML:case Q.TBODY:case Q.TD:case Q.TFOOT:case Q.TH:case Q.THEAD:case Q.TR:break;default:w1(X,Z)}}function w1(X,Z){let W=X.fosterParentingEnabled;X.fosterParentingEnabled=!0,o1(X,Z),X.fosterParentingEnabled=W}function f6(X,Z){X.pendingCharacterTokens.push(Z)}function C6(X,Z){X.pendingCharacterTokens.push(Z),X.hasNonWhitespacePendingCharacterToken=!0}function J1(X,Z){let W=0;if(X.hasNonWhitespacePendingCharacterToken)for(;W<X.pendingCharacterTokens.length;W++)w1(X,X.pendingCharacterTokens[W]);else for(;W<X.pendingCharacterTokens.length;W++)X._insertCharacters(X.pendingCharacterTokens[W]);X.insertionMode=X.originalInsertionMode,X._processToken(Z)}var h6=new Set([Q.CAPTION,Q.COL,Q.COLGROUP,Q.TBODY,Q.TD,Q.TFOOT,Q.TH,Q.THEAD,Q.TR]);function b5(X,Z){let W=Z.tagID;if(h6.has(W)){if(X.openElements.hasInTableScope(Q.CAPTION))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(Q.CAPTION),X.activeFormattingElements.clearToLastMarker(),X.insertionMode=j.IN_TABLE,c0(X,Z)}else n(X,Z)}function v5(X,Z){let W=Z.tagID;switch(W){case Q.CAPTION:case Q.TABLE:{if(X.openElements.hasInTableScope(Q.CAPTION)){if(X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(Q.CAPTION),X.activeFormattingElements.clearToLastMarker(),X.insertionMode=j.IN_TABLE,W===Q.TABLE)H1(X,Z)}break}case Q.BODY:case Q.COL:case Q.COLGROUP:case Q.HTML:case Q.TBODY:case Q.TD:case Q.TFOOT:case Q.TH:case Q.THEAD:case Q.TR:break;default:n1(X,Z)}}function YX(X,Z){switch(Z.tagID){case Q.HTML:{n(X,Z);break}case Q.COL:{X._appendElement(Z,P.HTML),Z.ackSelfClosing=!0;break}case Q.TEMPLATE:{H0(X,Z);break}default:p1(X,Z)}}function y5(X,Z){switch(Z.tagID){case Q.COLGROUP:{if(X.openElements.currentTagId===Q.COLGROUP)X.openElements.pop(),X.insertionMode=j.IN_TABLE;break}case Q.TEMPLATE:{G0(X,Z);break}case Q.COL:break;default:p1(X,Z)}}function p1(X,Z){if(X.openElements.currentTagId===Q.COLGROUP)X.openElements.pop(),X.insertionMode=j.IN_TABLE,X._processToken(Z)}function t1(X,Z){switch(Z.tagID){case Q.TR:{X.openElements.clearBackToTableBodyContext(),X._insertElement(Z,P.HTML),X.insertionMode=j.IN_ROW;break}case Q.TH:case Q.TD:{X.openElements.clearBackToTableBodyContext(),X._insertFakeElement(B.TR,Q.TR),X.insertionMode=j.IN_ROW,e1(X,Z);break}case Q.CAPTION:case Q.COL:case Q.COLGROUP:case Q.TBODY:case Q.TFOOT:case Q.THEAD:{if(X.openElements.hasTableBodyContextInTableScope())X.openElements.clearBackToTableBodyContext(),X.openElements.pop(),X.insertionMode=j.IN_TABLE,c0(X,Z);break}default:c0(X,Z)}}function JX(X,Z){let W=Z.tagID;switch(Z.tagID){case Q.TBODY:case Q.TFOOT:case Q.THEAD:{if(X.openElements.hasInTableScope(W))X.openElements.clearBackToTableBodyContext(),X.openElements.pop(),X.insertionMode=j.IN_TABLE;break}case Q.TABLE:{if(X.openElements.hasTableBodyContextInTableScope())X.openElements.clearBackToTableBodyContext(),X.openElements.pop(),X.insertionMode=j.IN_TABLE,H1(X,Z);break}case Q.BODY:case Q.CAPTION:case Q.COL:case Q.COLGROUP:case Q.HTML:case Q.TD:case Q.TH:case Q.TR:break;default:H1(X,Z)}}function e1(X,Z){switch(Z.tagID){case Q.TH:case Q.TD:{X.openElements.clearBackToTableRowContext(),X._insertElement(Z,P.HTML),X.insertionMode=j.IN_CELL,X.activeFormattingElements.insertMarker();break}case Q.CAPTION:case Q.COL:case Q.COLGROUP:case Q.TBODY:case Q.TFOOT:case Q.THEAD:case Q.TR:{if(X.openElements.hasInTableScope(Q.TR))X.openElements.clearBackToTableRowContext(),X.openElements.pop(),X.insertionMode=j.IN_TABLE_BODY,t1(X,Z);break}default:c0(X,Z)}}function N6(X,Z){switch(Z.tagID){case Q.TR:{if(X.openElements.hasInTableScope(Q.TR))X.openElements.clearBackToTableRowContext(),X.openElements.pop(),X.insertionMode=j.IN_TABLE_BODY;break}case Q.TABLE:{if(X.openElements.hasInTableScope(Q.TR))X.openElements.clearBackToTableRowContext(),X.openElements.pop(),X.insertionMode=j.IN_TABLE_BODY,JX(X,Z);break}case Q.TBODY:case Q.TFOOT:case Q.THEAD:{if(X.openElements.hasInTableScope(Z.tagID)||X.openElements.hasInTableScope(Q.TR))X.openElements.clearBackToTableRowContext(),X.openElements.pop(),X.insertionMode=j.IN_TABLE_BODY,JX(X,Z);break}case Q.BODY:case Q.CAPTION:case Q.COL:case Q.COLGROUP:case Q.HTML:case Q.TD:case Q.TH:break;default:H1(X,Z)}}function R5(X,Z){let W=Z.tagID;if(h6.has(W)){if(X.openElements.hasInTableScope(Q.TD)||X.openElements.hasInTableScope(Q.TH))X._closeTableCell(),e1(X,Z)}else n(X,Z)}function O5(X,Z){let W=Z.tagID;switch(W){case Q.TD:case Q.TH:{if(X.openElements.hasInTableScope(W))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(W),X.activeFormattingElements.clearToLastMarker(),X.insertionMode=j.IN_ROW;break}case Q.TABLE:case Q.TBODY:case Q.TFOOT:case Q.THEAD:case Q.TR:{if(X.openElements.hasInTableScope(W))X._closeTableCell(),N6(X,Z);break}case Q.BODY:case Q.CAPTION:case Q.COL:case Q.COLGROUP:case Q.HTML:break;default:n1(X,Z)}}function M6(X,Z){switch(Z.tagID){case Q.HTML:{n(X,Z);break}case Q.OPTION:{if(X.openElements.currentTagId===Q.OPTION)X.openElements.pop();X._insertElement(Z,P.HTML);break}case Q.OPTGROUP:{if(X.openElements.currentTagId===Q.OPTION)X.openElements.pop();if(X.openElements.currentTagId===Q.OPTGROUP)X.openElements.pop();X._insertElement(Z,P.HTML);break}case Q.HR:{if(X.openElements.currentTagId===Q.OPTION)X.openElements.pop();if(X.openElements.currentTagId===Q.OPTGROUP)X.openElements.pop();X._appendElement(Z,P.HTML),Z.ackSelfClosing=!0;break}case Q.INPUT:case Q.KEYGEN:case Q.TEXTAREA:case Q.SELECT:{if(X.openElements.hasInSelectScope(Q.SELECT)){if(X.openElements.popUntilTagNamePopped(Q.SELECT),X._resetInsertionMode(),Z.tagID!==Q.SELECT)X._processStartTag(Z)}break}case Q.SCRIPT:case Q.TEMPLATE:{H0(X,Z);break}default:}}function g6(X,Z){switch(Z.tagID){case Q.OPTGROUP:{if(X.openElements.stackTop>0&&X.openElements.currentTagId===Q.OPTION&&X.openElements.tagIDs[X.openElements.stackTop-1]===Q.OPTGROUP)X.openElements.pop();if(X.openElements.currentTagId===Q.OPTGROUP)X.openElements.pop();break}case Q.OPTION:{if(X.openElements.currentTagId===Q.OPTION)X.openElements.pop();break}case Q.SELECT:{if(X.openElements.hasInSelectScope(Q.SELECT))X.openElements.popUntilTagNamePopped(Q.SELECT),X._resetInsertionMode();break}case Q.TEMPLATE:{G0(X,Z);break}default:}}function f5(X,Z){let W=Z.tagID;if(W===Q.CAPTION||W===Q.TABLE||W===Q.TBODY||W===Q.TFOOT||W===Q.THEAD||W===Q.TR||W===Q.TD||W===Q.TH)X.openElements.popUntilTagNamePopped(Q.SELECT),X._resetInsertionMode(),X._processStartTag(Z);else M6(X,Z)}function C5(X,Z){let W=Z.tagID;if(W===Q.CAPTION||W===Q.TABLE||W===Q.TBODY||W===Q.TFOOT||W===Q.THEAD||W===Q.TR||W===Q.TD||W===Q.TH){if(X.openElements.hasInTableScope(W))X.openElements.popUntilTagNamePopped(Q.SELECT),X._resetInsertionMode(),X.onEndTag(Z)}else g6(X,Z)}function h5(X,Z){switch(Z.tagID){case Q.BASE:case Q.BASEFONT:case Q.BGSOUND:case Q.LINK:case Q.META:case Q.NOFRAMES:case Q.SCRIPT:case Q.STYLE:case Q.TEMPLATE:case Q.TITLE:{H0(X,Z);break}case Q.CAPTION:case Q.COLGROUP:case Q.TBODY:case Q.TFOOT:case Q.THEAD:{X.tmplInsertionModeStack[0]=j.IN_TABLE,X.insertionMode=j.IN_TABLE,c0(X,Z);break}case Q.COL:{X.tmplInsertionModeStack[0]=j.IN_COLUMN_GROUP,X.insertionMode=j.IN_COLUMN_GROUP,YX(X,Z);break}case Q.TR:{X.tmplInsertionModeStack[0]=j.IN_TABLE_BODY,X.insertionMode=j.IN_TABLE_BODY,t1(X,Z);break}case Q.TD:case Q.TH:{X.tmplInsertionModeStack[0]=j.IN_ROW,X.insertionMode=j.IN_ROW,e1(X,Z);break}default:X.tmplInsertionModeStack[0]=j.IN_BODY,X.insertionMode=j.IN_BODY,n(X,Z)}}function N5(X,Z){if(Z.tagID===Q.TEMPLATE)G0(X,Z)}function D6(X,Z){if(X.openElements.tmplCount>0)X.openElements.popUntilTagNamePopped(Q.TEMPLATE),X.activeFormattingElements.clearToLastMarker(),X.tmplInsertionModeStack.shift(),X._resetInsertionMode(),X.onEof(Z);else VX(X,Z)}function M5(X,Z){if(Z.tagID===Q.HTML)n(X,Z);else s1(X,Z)}function $6(X,Z){var W;if(Z.tagID===Q.HTML){if(!X.fragmentContext)X.insertionMode=j.AFTER_AFTER_BODY;if(X.options.sourceCodeLocationInfo&&X.openElements.tagIDs[0]===Q.HTML){X._setEndLocation(X.openElements.items[0],Z);let J=X.openElements.items[1];if(J&&!((W=X.treeAdapter.getNodeSourceCodeLocation(J))===null||W===void 0?void 0:W.endTag))X._setEndLocation(J,Z)}}else s1(X,Z)}function s1(X,Z){X.insertionMode=j.IN_BODY,o1(X,Z)}function g5(X,Z){switch(Z.tagID){case Q.HTML:{n(X,Z);break}case Q.FRAMESET:{X._insertElement(Z,P.HTML);break}case Q.FRAME:{X._appendElement(Z,P.HTML),Z.ackSelfClosing=!0;break}case Q.NOFRAMES:{H0(X,Z);break}default:}}function D5(X,Z){if(Z.tagID===Q.FRAMESET&&!X.openElements.isRootHtmlElementCurrent()){if(X.openElements.pop(),!X.fragmentContext&&X.openElements.currentTagId!==Q.FRAMESET)X.insertionMode=j.AFTER_FRAMESET}}function $5(X,Z){switch(Z.tagID){case Q.HTML:{n(X,Z);break}case Q.NOFRAMES:{H0(X,Z);break}default:}}function G5(X,Z){if(Z.tagID===Q.HTML)X.insertionMode=j.AFTER_AFTER_FRAMESET}function m5(X,Z){if(Z.tagID===Q.HTML)n(X,Z);else i1(X,Z)}function i1(X,Z){X.insertionMode=j.IN_BODY,o1(X,Z)}function E5(X,Z){switch(Z.tagID){case Q.HTML:{n(X,Z);break}case Q.NOFRAMES:{H0(X,Z);break}default:}}function k5(X,Z){Z.chars=l,X._insertCharacters(Z)}function _5(X,Z){X._insertCharacters(Z),X.framesetOk=!1}function G6(X){while(X.treeAdapter.getNamespaceURI(X.openElements.current)!==P.HTML&&X.openElements.currentTagId!==void 0&&!X._isIntegrationPoint(X.openElements.currentTagId,X.openElements.current))X.openElements.pop()}function I5(X,Z){if(H6(Z))G6(X),X._startTagOutsideForeignContent(Z);else{let W=X._getAdjustedCurrentElement(),J=X.treeAdapter.getNamespaceURI(W);if(J===P.MATHML)XX(Z);else if(J===P.SVG)w6(Z),ZX(Z);if(d1(Z),Z.selfClosing)X._appendElement(Z,J);else X._insertElement(Z,J);Z.ackSelfClosing=!0}}function S5(X,Z){if(Z.tagID===Q.P||Z.tagID===Q.BR){G6(X),X._endTagOutsideForeignContent(Z);return}for(let W=X.openElements.stackTop;W>0;W--){let J=X.openElements.items[W];if(X.treeAdapter.getNamespaceURI(J)===P.HTML){X._endTagOutsideForeignContent(Z);break}let K=X.treeAdapter.getTagName(J);if(K.toLowerCase()===Z.tagName){Z.tagName=K,X.openElements.shortenToLength(W);break}}}var bK=typeof String.prototype.codePointAt==="function"?(X,Z)=>X.codePointAt(Z):(X,Z)=>(X.charCodeAt(Z)&64512)===55296?(X.charCodeAt(Z)-55296)*1024+X.charCodeAt(Z+1)-56320+65536:X.charCodeAt(Z);function m6(X,Z){return function(J){let K,V=0,H="";while(K=X.exec(J)){if(V!==K.index)H+=J.substring(V,K.index);H+=Z.get(K[0].charCodeAt(0)),V=K.index+1}return H+J.substring(V)}}var E6=m6(/["&\u00A0]/g,new Map([[34,"""],[38,"&"],[160," "]])),k6=m6(/[&<>\u00A0]/g,new Map([[38,"&"],[60,"<"],[62,">"],[160," "]]));var u5=new Set([B.AREA,B.BASE,B.BASEFONT,B.BGSOUND,B.BR,B.COL,B.EMBED,B.FRAME,B.HR,B.IMG,B.INPUT,B.KEYGEN,B.LINK,B.META,B.PARAM,B.SOURCE,B.TRACK,B.WBR]);function _6(X,Z){return Z.treeAdapter.isElementNode(X)&&Z.treeAdapter.getNamespaceURI(X)===P.HTML&&u5.has(Z.treeAdapter.getTagName(X))}var l5={treeAdapter:V0,scriptingEnabled:!0};function U1(X,Z){let W={...l5,...Z};if(_6(X,W))return"";return I6(X,W)}function I6(X,Z){let W="",J=Z.treeAdapter.isElementNode(X)&&Z.treeAdapter.getTagName(X)===B.TEMPLATE&&Z.treeAdapter.getNamespaceURI(X)===P.HTML?Z.treeAdapter.getTemplateContent(X):X,K=Z.treeAdapter.getChildNodes(J);if(K)for(let V of K)W+=A5(V,Z);return W}function A5(X,Z){if(Z.treeAdapter.isElementNode(X))return T5(X,Z);if(Z.treeAdapter.isTextNode(X))return a5(X,Z);if(Z.treeAdapter.isCommentNode(X))return d5(X,Z);if(Z.treeAdapter.isDocumentTypeNode(X))return i5(X,Z);return""}function T5(X,Z){let W=Z.treeAdapter.getTagName(X);return`<${W}${c5(X,Z)}>${_6(X,Z)?"":`${I6(X,Z)}</${W}>`}`}function c5(X,{treeAdapter:Z}){let W="";for(let J of Z.getAttrList(X)){if(W+=" ",J.namespace)switch(J.namespace){case P.XML:{W+=`xml:${J.name}`;break}case P.XMLNS:{if(J.name!=="xmlns")W+="xmlns:";W+=J.name;break}case P.XLINK:{W+=`xlink:${J.name}`;break}default:W+=`${J.prefix}:${J.name}`}else W+=J.name;W+=`="${E6(J.value)}"`}return W}function a5(X,Z){let{treeAdapter:W}=Z,J=W.getTextNodeContent(X),K=W.getParentNode(X),V=K&&W.isElementNode(K)&&W.getTagName(K);return V&&W.getNamespaceURI(K)===P.HTML&&s3(V,Z.scriptingEnabled)?J:k6(J)}function d5(X,{treeAdapter:Z}){return`<!--${Z.getCommentNodeContent(X)}-->`}function i5(X,{treeAdapter:Z}){return`<!DOCTYPE ${Z.getDocumentTypeNodeName(X)}>`}function X2(X,Z){return r1.parse(X,Z)}import{WebSocket as W2,WebSocketServer as W7}from"ws";import*as a0 from"css-tree";var F1=20971520,p5=new Set(["script","iframe","frame","frameset","object","embed","portal","base","audio","video","source","track","noscript","animate","animatemotion","animatetransform","discard","set"]),s5=new Set(["action","cite","data","formaction","href","ping","poster","src","srcset","xlink:href"]),zX=/^data:(?:image\/(?:png|jpe?g|gif|webp|avif|bmp|x-icon)|font\/[a-z0-9.+-]+|application\/(?:font-[a-z0-9.+-]+|vnd\.ms-fontobject|x-font-[a-z0-9.+-]+));/i,r5=new Set(["date","datetime-local","email","month","number","password","search","tel","text","time","url","week"]);function o5(X){return"tagName"in X}function S6(X,Z){return X.attrs.find((W)=>W.name.toLowerCase()===Z.toLowerCase())?.value??null}function B0(X,Z,W){let J=X.attrs.find((K)=>K.name.toLowerCase()===Z.toLowerCase());if(J)J.value=W;else X.attrs.push({name:Z,value:W})}function u6(X){try{let Z=a0.parse(X,{context:"stylesheet",parseCustomProperty:!0,positions:!1});return a0.walk(Z,{enter(W,J,K){if(W.type==="Atrule"&&W.name.toLowerCase()==="import"){K.remove(J);return}if(W.type==="Declaration"){let V=W.property.toLowerCase();if(V==="behavior"||V==="-moz-binding")K.remove(J);return}if(W.type==="Url"&&!zX.test(W.value)){W.value="data:,";return}if(W.type==="String"&&this.function&&["image-set","-webkit-image-set","src"].includes(this.function.name.toLowerCase())&&!zX.test(W.value))W.value="data:,"}}),a0.generate(Z)}catch{return""}}function n5(X){return u6(`x{${X}}`).replace(/^x\{/,"").replace(/\}$/,"")}function t5(X){let Z=X.tagName.toLowerCase();if(X.attrs=X.attrs.flatMap((W)=>{let J=W.name.toLowerCase();if(Z==="input"&&(J==="value"||J==="checked"))return[];if(J.startsWith("on")||J==="srcdoc"||J==="nonce")return[];if(J==="style"){let K=n5(W.value);return K?[{...W,value:K}]:[]}if(s5.has(J)){if(J==="src"&&zX.test(W.value))return[W];if(J==="href"&&W.value.startsWith("#"))return[W];return[]}if(J==="target"||J==="download"||J==="http-equiv")return[];return[W]}),Z==="form")B0(X,"inert",""),B0(X,"aria-disabled","true");else if(Z==="textarea"||Z==="input"&&r5.has((S6(X,"type")??"text").toLowerCase()))B0(X,"readonly",""),B0(X,"aria-readonly","true"),B0(X,"tabindex","-1");else if(Z==="button"||Z==="select"||Z==="input")B0(X,"disabled",""),B0(X,"aria-disabled","true"),B0(X,"tabindex","-1");if(S6(X,"contenteditable")!==null)B0(X,"contenteditable","false"),B0(X,"tabindex","-1"),X.childNodes=[];if(Z==="textarea"||Z==="select")X.childNodes=[];if(X.tagName==="style"&&X.childNodes){for(let W of X.childNodes)if("value"in W&&typeof W.value==="string")W.value=u6(W.value)}}function l6(X){let Z=[];for(let W of X.childNodes){if(o5(W)){let J=W.tagName.toLowerCase();if(p5.has(J))continue;if(J==="meta"&&W.attrs.some((K)=>K.name.toLowerCase()==="http-equiv"&&K.value.toLowerCase()!=="content-type"))continue;if(J==="link")continue;t5(W),l6(W)}Z.push(W)}X.childNodes=Z}function A6(X){if(Buffer.byteLength(X,"utf8")>F1)throw Error("Browser snapshot exceeds the 20 MiB limit");let Z=X2(X);l6(Z);let W=U1(Z);if(Buffer.byteLength(W,"utf8")>F1)throw Error("Sanitized browser snapshot exceeds the 20 MiB limit");return W}function v0(X){return JSON.stringify(X).replace(/</g,"\\u003c")}function e5(X){try{let Z=new URL(X);if(Z.protocol!=="https:"||Z.hostname!=="www.google.com"||Z.username||Z.password||Z.pathname!=="/"&&Z.pathname!=="/webhp")return null;return"https://www.google.com/search"}catch{return null}}function T6(X){let Z=v0(e5(X.sourceUrl));return`(() => {
|
|
2
|
+
function m8(){let X=globalThis.performance?.now?.()??Date.now();return Math.round(X*10)/10}function E(X,Z={}){if(typeof process<"u"&&process.env.IDEAWAVE_AGENT_RUNTIME_TRACE==="0")return;let W=Object.fromEntries(Object.entries(Z).filter(([,J])=>J!==void 0));console.info("[agent-runtime-trace]",JSON.stringify({event:X,epochMs:Date.now(),monotonicMs:m8(),...typeof document>"u"?{}:{visibility:document.visibilityState},...W}))}var E8=600000,k8=60000,K3=200,_8=4,u=new Map,L0=null;function I8(X){X.then((Z)=>Z.dispose()).catch(()=>{return})}function t0(X){for(let Z of X.idleWaiters)Z();X.idleWaiters.clear()}function P0(X,Z){if(u.get(X)!==Z)return;u.delete(X),t0(Z),I8(Z.sessionPromise)}function S8(){if(L0!==null)return;L0=setInterval(()=>{let X=Date.now();for(let[Z,W]of u){if(W.inUse)continue;if(X-W.lastUsed<E8)continue;P0(Z,W)}if(u.size===0&&L0!==null)clearInterval(L0),L0=null},k8),L0.unref?.()}function l8(){if(u.size<K3)return;let X=null,Z=1/0;for(let[J,K]of u){if(K.inUse)continue;if(K.lastUsed>=Z)continue;X=J,Z=K.lastUsed}if(!X)return;let W=u.get(X);if(!W)return;P0(X,W)}function u8(){let X=0;while(u.size>K3){let Z=null,W=null;for(let[J,K]of u){if(K.inUse)continue;if(W&&K.lastUsed>=W.lastUsed)continue;Z=J,W=K}if(!Z||!W)break;P0(Z,W),X+=1}if(X>0)E("session_pool.global_idle_trimmed",{evictedSessions:X,poolEntries:u.size})}function A8(X){let Z=Array.from(u.entries()).filter(([,J])=>J.frontendSessionId===X&&!J.inUse).sort(([,J],[,K])=>J.lastUsed-K.lastUsed),W=Z.length-_8;if(W<=0)return;for(let[J,K]of Z.slice(0,W))P0(J,K);E("session_pool.frontend_idle_trimmed",{frontendSessionId:X,evictedSessions:W,poolEntries:u.size})}function I2(X,Z,W){let J=typeof W==="string"?{kind:"agent-card",id:W}:W;return`${X}:${Z}:${J.kind}:${J.id}`}function T8(X,Z){if(X.length===0)return!0;let W=X[X.length-1],J=Z.indexOf(W);if(J===-1||J>X.length-1)return!1;for(let K=0;K<J;K+=1)if(Z[K]!==X[X.length-1-J+K])return!1;return!0}async function e0(X){let Z=u.get(X.key);if(Z){if(Z.inUse)return E("session_pool.wait_for_idle",{frontendSessionId:Z.frontendSessionId,poolEntries:u.size}),await new Promise((J)=>Z.idleWaiters.add(J)),e0(X);if(Z.fingerprint!==X.fingerprint)P0(X.key,Z);else if(X.transcriptIds&&Z.transcriptIds&&!T8(Z.transcriptIds,X.transcriptIds))E("session_pool.transcript_rewritten",{frontendSessionId:Z.frontendSessionId,poolEntries:u.size}),P0(X.key,Z);else{Z.inUse=!0,Z.lastUsed=Date.now();try{let J=await Z.sessionPromise;if(J.isAlive()){if(X.transcriptIds)Z.transcriptIds=X.transcriptIds;if(Z.frontendSessionId)E("session_pool.reuse",{frontendSessionId:Z.frontendSessionId,poolEntries:u.size});return J}}catch{}P0(X.key,Z)}}let W=X.open();if(l8(),u.set(X.key,{key:X.key,frontendSessionId:X.frontendSessionId??null,fingerprint:X.fingerprint,sessionPromise:W,lastUsed:Date.now(),inUse:!0,idleWaiters:new Set,transcriptIds:X.transcriptIds??null}),S8(),X.frontendSessionId)E("session_pool.open",{frontendSessionId:X.frontendSessionId,poolEntries:u.size});try{return await W}catch(J){let K=u.get(X.key);if(K?.sessionPromise===W)P0(X.key,K);throw J}}async function V3(X,Z){let W=u.get(X);if(!W||W.inUse||W.fingerprint!==Z)return null;u.delete(X),t0(W);try{let J=await W.sessionPromise;if(J.isAlive())return E("session_pool.spare_adopted",{frontendSessionId:W.frontendSessionId,poolEntries:u.size}),J;J.dispose()}catch{}return null}function g1(X,Z=!1){let W=u.get(X);if(!W)return;if(Z){P0(X,W);return}if(W.inUse=!1,W.lastUsed=Date.now(),W.frontendSessionId)A8(W.frontendSessionId),E("session_pool.release",{frontendSessionId:W.frontendSessionId,poolEntries:u.size});if(u8(),u.get(X)===W)t0(W)}async function Y3(X){let Z=Array.from(u.entries()).filter(([,W])=>W.frontendSessionId===X);for(let[W,J]of Z)u.delete(W),t0(J);return await Promise.all(Z.map(([,W])=>W.sessionPromise.then((J)=>J.dispose()).catch(()=>{return}))),E("session_pool.frontend_evicted",{frontendSessionId:X,evictedSessions:Z.length,poolEntries:u.size}),Z.length}async function c8(){let X=Array.from(u.values());u.clear();for(let Z of X)t0(Z);if(L0!==null)clearInterval(L0),L0=null;await Promise.all(X.map((Z)=>Z.sessionPromise.then((W)=>W.dispose()).catch(()=>{return})))}function D1(X){let Z=Object.entries(X.configValues??{}),W=Z.length>0?JSON.stringify(Object.fromEntries(Z.sort(([J],[K])=>J.localeCompare(K)))):"";return[X.adapterId,X.configId??"",X.modelId??"",W,X.mcpUrl??"",X.mcpRoutingScope??"",X.runFolder??"",X.toolSurface??"full"].join(" ")}var J3=!1;function a8(){if(J3)return;J3=!0;let X=()=>{c8()};process.once("beforeExit",X),process.once("SIGTERM",X),process.once("SIGINT",X)}a8();import{readFileSync as r8}from"node:fs";import{homedir as d8}from"node:os";import{posix as i8,win32 as p8}from"node:path";function z3(){return process.platform==="win32"?p8:i8}function s8(){let X=d8(),Z=z3();switch(process.platform){case"win32":return process.env.APPDATA??Z.join(X,"AppData","Roaming");case"darwin":return Z.join(X,"Library","Application Support");default:return process.env.XDG_CONFIG_HOME??Z.join(X,".config")}}function j3(){let X=process.env.IDEAWAVE_MCP_JSON_PATH;if(X&&X.trim().length>0)return X;return z3().join(s8(),"ideawave","mcp.json")}var w3=null;function U3(X){w3=X}var o8=86400000;function n8(){let X;try{X=r8(j3(),"utf8")}catch{return null}let Z;try{Z=JSON.parse(X)}catch{return null}if(typeof Z.url!=="string")return null;if(typeof Z.startedAt==="string"){let W=Date.parse(Z.startedAt);if(!Number.isNaN(W)){if(Date.now()-W>o8)return null}}if(typeof Z.pid==="number"&&Z.pid>0)try{process.kill(Z.pid,0)}catch(W){if(W?.code!=="EPERM")return null}return{url:Z.url}}function H3(X,Z={}){let W=[];if(Z.userId&&Z.userId.trim().length>0)W.push({name:"X-Ideawave-User-Id",value:Z.userId.trim()});if(Z.frontendSessionId&&Z.frontendSessionId.trim().length>0)W.push({name:"X-Ideawave-Frontend-Session-Id",value:Z.frontendSessionId.trim()});if(Z.toolSurface&&Z.toolSurface!=="full")W.push({name:"X-Ideawave-Tool-Surface",value:Z.toolSurface});if(Z.imagesSupported)W.push({name:"X-Ideawave-Images-Supported",value:"1"});if(Z.cardId&&Z.cardId.trim().length>0)W.push({name:"X-Ideawave-Card-Id",value:Z.cardId.trim()});if(Z.executionTarget)W.push({name:"X-Ideawave-Execution-Kind",value:Z.executionTarget.kind}),W.push({name:"X-Ideawave-Execution-Id",value:Z.executionTarget.id});if(Z.ideateClaims)W.push({name:"X-Ideawave-Ideate-Claims",value:JSON.stringify(Z.ideateClaims)});if(Z.boardId&&Z.boardId.trim().length>0)W.push({name:"X-Ideawave-Board-Id",value:Z.boardId.trim()});if(Z.runFolder&&Z.runFolder.trim().length>0)W.push({name:"X-Ideawave-Run-Folder",value:Z.runFolder.trim()});if(Z.poolSessionId&&Z.poolSessionId.trim().length>0)W.push({name:"X-Ideawave-Pool-Session-Id",value:Z.poolSessionId.trim()});return{type:"http",name:"ideawave-board",url:X,headers:W}}function $1(X={}){let Z=w3;if(Z)return H3(Z.url,X);let W=n8();if(!W)return null;return H3(W.url,X)}import X1 from"node:fs/promises";import W9 from"node:path";import t8 from"node:os";import G1 from"node:path";function e8(){let X=t8.homedir();switch(process.platform){case"win32":return process.env.APPDATA??G1.join(X,"AppData","Roaming");case"darwin":return G1.join(X,"Library","Application Support");default:return process.env.XDG_CONFIG_HOME??G1.join(X,".config")}}function m1(){let X=process.env.IDEAWAVE_RUNTIME_CONFIG_PATH;if(X)return X;return G1.join(e8(),"ideawave","runtimes.json")}import{z as $}from"zod";var F3=$.object({id:$.string(),name:$.string().nullable().default(null),description:$.string().nullable().default(null)}),L3=$.union([$.string(),$.boolean()]),X9=$.object({value:$.string(),name:$.string(),description:$.string().nullable().default(null),group:$.string().nullable().default(null),groupName:$.string().nullable().default(null)}),B3=$.object({id:$.string(),name:$.string(),category:$.string().nullable().default(null),description:$.string().nullable().default(null),type:$.enum(["select","boolean"]),currentValue:L3.nullable().default(null),options:$.array(X9).default([])}),S2=$.record($.string(),L3).default({}),Z9=$.discriminatedUnion("kind",[$.object({id:$.string(),kind:$.literal("registered"),adapterId:$.enum(["claude-code","opencode","codex","copilot"]),displayName:$.string(),runFolder:$.string().nullable(),defaultModelId:$.string().nullable().default(null),defaultConfigValues:S2,discoveredModels:$.array(F3).default([]),discoveredConfigOptions:$.array(B3).default([]),discoveredAt:$.string().nullable().default(null)}),$.object({id:$.string(),kind:$.literal("custom"),displayName:$.string(),command:$.string(),args:$.array($.string()),env:$.record($.string(),$.string()),runFolder:$.string().nullable(),defaultModelId:$.string().nullable().default(null),defaultConfigValues:S2,discoveredModels:$.array(F3).default([]),discoveredConfigOptions:$.array(B3).default([]),discoveredAt:$.string().nullable().default(null)})]),q3=$.object({runtimeConfigId:$.string(),runFolder:$.string().nullable(),modelId:$.string().nullable().default(null),configValues:S2}),E1=$.object({version:$.literal(1),globalDefaultConfigId:$.string().nullable(),runtimes:$.array(Z9),boardOverrides:$.record($.string(),q3).default({}),cardOverrides:$.record($.string(),q3).default({})});var Q9={version:1,globalDefaultConfigId:null,runtimes:[],boardOverrides:{},cardOverrides:{}},P3=new Map;function J9(X){return P3.get(X)??Promise.resolve()}function K9(X,Z){P3.set(X,Z)}async function J0(X){let Z=X??m1(),W;try{W=await X1.readFile(Z,"utf-8")}catch(K){if(K.code==="ENOENT")return structuredClone(Q9);throw K}return E1.parse(JSON.parse(W))}async function z0(X,Z){let W=Z??m1(),J=J9(W).then(async()=>{let K=await J0(W),V=structuredClone(K),j=await X(V);return await V9(V,W),j});return K9(W,J.catch(()=>{return})),J}async function V9(X,Z){let W=Z??m1(),J=W9.dirname(W);await X1.mkdir(J,{recursive:!0});let K=`${W}.tmp.${process.pid}.${Math.random().toString(36).slice(2)}`,V=JSON.stringify(X,null,2);await X1.writeFile(K,V,"utf-8");try{await X1.rename(K,W)}catch(j){throw await X1.unlink(K).catch(()=>{return}),j}}import{spawn as L9}from"node:child_process";import{closeSync as P9,existsSync as O3,mkdirSync as R3,openSync as x9,readFileSync as b9,renameSync as v9,rmSync as f3,statSync as y9,unlinkSync as O9,writeFileSync as R9}from"node:fs";import v3 from"node:os";import $0 from"node:path";var Y9=/\.(?:cmd|bat)$/i;function z9(X){return process.platform==="win32"&&Y9.test(X)}function k1(X){return z9(X)?{shell:!0,windowsHide:!0}:{}}import{execFile as B9}from"node:child_process";import{promisify as q9}from"node:util";import{execFile as j9}from"node:child_process";import{promisify as H9}from"node:util";var w9=H9(j9),l2=new Map,x3=5000,U9=/\.(?:cmd|bat|com|exe)$/i;function F9(X){let Z=X.split(/\r?\n/).map((W)=>W.trim()).filter((W)=>W.length>0);if(Z.length===0)return null;if(process.platform!=="win32")return Z[0]??null;return Z.find((W)=>U9.test(W))??Z[0]??null}async function b3(X,Z=w9){let W=l2.get(X);if(W&&W.expiresAt>Date.now())return W.value;let J=process.platform==="win32"?"where":"which";try{let{stdout:K}=await Z(J,[X],{timeout:2000}),V=F9(K);return l2.set(X,{value:V,expiresAt:Date.now()+x3}),V}catch{return l2.set(X,{value:null,expiresAt:Date.now()+x3}),null}}class Z1 extends Error{code;constructor(X,Z){super(X);this.name="AcpError",this.code=Z}}class x0 extends Z1{constructor(X="No ACP runtime configured"){super(X,"RUNTIME_NOT_CONFIGURED");this.name="RuntimeNotConfiguredError"}}class l extends Z1{constructor(X){super(X,"RUNTIME_UNREACHABLE");this.name="RuntimeUnreachableError"}}class u0 extends Z1{authMethods;constructor(X,Z){super(X,"AUTH_REQUIRED");this.name="AuthRequiredError",this.authMethods=Z}}class w0 extends Z1{constructor(X="ACP session timed out"){super(X,"SESSION_TIMEOUT");this.name="SessionTimeoutError"}}var xJ=q9(B9);function d(X,...Z){return b3(X,...Z)}function Q0(X){let Z={};for(let[W,J]of Object.entries(process.env))if(typeof J==="string")Z[W]=J;return{...Z,...X??{}}}var A2=[{adapterId:"claude-code",runtimeBinary:"claude",packageName:"@agentclientprotocol/claude-agent-acp",version:"0.66.0",warmupArgs:["--cli","--help"]},{adapterId:"codex",runtimeBinary:"codex",packageName:"@agentclientprotocol/codex-acp",version:"1.2.0",warmupArgs:["--version"]}],f9=1800000,_1=new Map;function T2(){if(process.env.IDEAWAVE_ACP_BRIDGE_CACHE_DIR)return process.env.IDEAWAVE_ACP_BRIDGE_CACHE_DIR;if(process.platform==="win32"){let X=process.env.LOCALAPPDATA??$0.join(v3.homedir(),"AppData","Local");return $0.join(X,"ideawave","acp-bridges")}return $0.join(process.env.XDG_CACHE_HOME??$0.join(v3.homedir(),".cache"),"ideawave","acp-bridges")}function C9(X){return X.replace(/^@/,"").replace(/[/\\]/g,"-")}function I1(){return $0.join(T2(),"install-state.json")}function c2(X){return $0.join(T2(),`${C9(X.packageName)}@${X.version}.install.lock`)}function a2(){return process.platform==="win32"?"npx.cmd":"npx"}function d2(X){return`${X.packageName}@${X.version}`}function C3(){let X=I1();if(!O3(X))return{};try{return JSON.parse(b9(X,"utf8"))}catch{return{}}}function u2(X,Z){let W=T2();R3(W,{recursive:!0});let J=C3();J.bridges={...J.bridges??{},[X.adapterId]:Z},R9(`${I1()}.tmp`,`${JSON.stringify(J,null,2)}
|
|
3
|
+
`),v9(`${I1()}.tmp`,I1())}function h3(X){return A2.find((Z)=>Z.packageName===X)??null}function K0(X,Z,W){return{adapterId:X.adapterId,packageName:X.packageName,version:X.version,status:Z,...W?{error:W}:{}}}function y3(X,Z){return Z?.packageName===X.packageName&&Z.version===X.version}function M3(X){try{return Date.now()-y9(X).mtimeMs>f9}catch{return!1}}function h9(X){let Z=c2(X);if(!O3(Z))return!1;if(M3(Z))return f3(Z,{force:!0}),!1;return!0}function M9(X){let Z=c2(X);if(R3($0.dirname(Z),{recursive:!0}),M3(Z))f3(Z,{force:!0});try{let W=x9(Z,"wx");return P9(W),!0}catch{return!1}}function N9(X){O9(c2(X))}function i2(X){let Z=C3().bridges?.[X.adapterId];if(y3(X,Z)&&Z.status==="ready")return K0(X,"ready");if(_1.has(X.adapterId)||h9(X))return K0(X,"installing");if(y3(X,Z)&&Z.status==="failed")return K0(X,"failed",Z.error);return K0(X,"missing")}function W1(X,Z){X?.onStatusChange?.(Z)}function g9(X,Z){let W=i2(X);if(W.status==="ready")return W1(Z,W),W;if(W.status==="installing"){let w=_1.get(X.adapterId);if(w&&Z?.onStatusChange)w.then((q)=>W1(Z,q));return W1(Z,W),W}if(!M9(X))return K0(X,"installing");let J=K0(X,"installing");u2(X,J),W1(Z,J);let K=()=>{},V=new Promise((w)=>{K=w});_1.set(X.adapterId,V);let j=!1,U=(w)=>{if(j)return;j=!0;try{N9(X)}catch{}u2(X,w),W1(Z,w),_1.delete(X.adapterId),K(w)},F;try{let w=a2();F=L9(w,["-y",d2(X),...X.warmupArgs],{stdio:"ignore",windowsHide:!0,...k1(w)})}catch(w){let q=K0(X,"failed",w instanceof Error?w.message:String(w));return U(q),q}return F.on("error",(w)=>{U(K0(X,"failed",w.message))}),F.on("close",(w)=>{if(w===0){U(K0(X,"ready"));return}U(K0(X,"failed",`npx warmup exited ${w??"null"}`))}),F.unref(),J}function A0(X){let Z=h3(X);return Z?i2(Z):null}async function N3(X){let Z=[];for(let W of A2){if(!await d(W.runtimeBinary)){Z.push(K0(W,"not_needed"));continue}Z.push(g9(W,X))}return Z.filter((W)=>W.status!=="not_needed")}function S1(X){let Z=h3(X);if(!Z)return null;if(i2(Z).status!=="ready")return null;return{command:a2(),args:["-y",d2(Z)],env:{}}}function l1(X,Z){if(X.command!==a2())return!1;let W=A2.find((J)=>X.args.includes(d2(J)));if(!W)return!1;return u2(W,K0(W,"failed",Z)),!0}var g3="claude",p2="@agentclientprotocol/claude-agent-acp",D3=["claude-agent-acp","claude-code-acp"],$3="Install Claude Code from https://github.com/anthropics/claude-code",G3={id:"claude-code",displayName:"Claude Code",kind:"registered",supportsImages:!0,resolveSpawnConfig:async()=>{if(!await d(g3))throw new l(`Claude Code CLI not found. ${$3}`);let Z=S1(p2);if(Z)return{command:Z.command,args:Z.args,env:Q0(Z.env)};let W=A0(p2),J=W?.status==="installing";for(let V of D3){let j=await d(V);if(j&&!J&&W?.status!=="failed")return{command:j,args:[],env:Q0()}}let K=W?.status==="failed"?`Claude Code ACP bridge install failed. ${W.error??"Restart IdeaWave CLI so it can warm the pinned bridge again."}`:"Claude Code ACP bridge is not ready. Keep IdeaWave CLI running and retry in a moment.";throw new l(K)},checkReadiness:async()=>{if(!await d(g3))return{status:"not_installed",detail:$3};let Z=A0(p2);if(Z?.status==="ready")return{status:"ready"};if(Z?.status==="installing")return{status:"not_running",detail:"Installing Claude Code ACP bridge..."};if(Z?.status==="failed")return{status:"not_running",detail:Z.error??"Claude Code ACP bridge install failed. Restart IdeaWave CLI so it can warm the pinned bridge again."};for(let W of D3)if(await d(W))return{status:"ready"};return{status:"not_running",detail:"Installing Claude Code ACP bridge..."}},authHint:"Run `claude login` (or set ANTHROPIC_API_KEY)."};var m3="codex",s2="@agentclientprotocol/codex-acp",E3="codex-acp",k3="Install Codex CLI from https://developers.openai.com/codex/cli",_3={id:"codex",displayName:"Codex",kind:"registered",resolveSpawnConfig:async()=>{if(!await d(m3))throw new l(`Codex CLI not found. ${k3}`);let Z=S1(s2);if(Z)return{command:Z.command,args:Z.args,env:Q0(Z.env)};let W=A0(s2),J=W?.status==="installing",K=await d(E3);if(K&&!J&&W?.status!=="failed")return{command:K,args:[],env:Q0()};let V=W?.status==="failed"?`Codex ACP bridge install failed. ${W.error??"Restart IdeaWave CLI so it can warm the pinned bridge again."}`:"Codex ACP bridge is not ready. Keep IdeaWave CLI running and retry in a moment.";throw new l(V)},checkReadiness:async()=>{if(!await d(m3))return{status:"not_installed",detail:k3};let Z=A0(s2);if(Z?.status==="ready")return{status:"ready"};if(Z?.status==="installing")return{status:"not_running",detail:"Installing Codex ACP bridge..."};if(Z?.status==="failed")return{status:"not_running",detail:Z.error??"Codex ACP bridge install failed. Restart IdeaWave CLI so it can warm the pinned bridge again."};if(await d(E3))return{status:"ready"};return{status:"not_running",detail:"Installing Codex ACP bridge..."}},authHint:"Run `codex login` (or set OPENAI_API_KEY)."};var I3="copilot",S3="copilot-acp",l3="npm i -g @github/copilot",u3={id:"copilot",displayName:"GitHub Copilot",kind:"registered",resolveSpawnConfig:async()=>{let X=await d(I3);if(X)return{command:X,args:["--acp"],env:Q0()};let Z=await d(S3);if(Z)return{command:Z,args:[],env:Q0()};throw new l(`Copilot not installed. Run: ${l3}`)},checkReadiness:async()=>{if(await d(I3))return{status:"ready"};if(await d(S3))return{status:"ready"};return{status:"not_installed",detail:l3}},authHint:"Run `gh auth login` (or `copilot login`)."};import D9 from"node:fs/promises";function $9(X){return X.startsWith("/")||/^[a-zA-Z]:[\\/]/.test(X)}async function A3(X){if($9(X))try{return await D9.access(X),!0}catch{return!1}return await d(X)!==null}var T3={id:"custom",displayName:"Custom ACP",kind:"custom",resolveSpawnConfig:async(X)=>{if(X.kind!=="custom")throw new l("customAdapter received non-custom entry");if(!await A3(X.command))throw new l(`custom: command "${X.command}" not found`);return{command:X.command,args:X.args,env:Q0(X.env)}},checkReadiness:async(X)=>{if(X.kind!=="custom")return{status:"unknown"};return await A3(X.command)?{status:"ready"}:{status:"not_installed"}}};var c3="opencode",a3="Install OpenCode from https://opencode.ai",d3={id:"opencode",displayName:"OpenCode",kind:"registered",resolveSpawnConfig:async()=>{let X=await d(c3);if(!X)throw new l(`OpenCode not installed. ${a3}`);return{command:X,args:["acp"],env:Q0()}},checkReadiness:async()=>{if(!await d(c3))return{status:"not_installed",detail:a3};return{status:"ready"}},authHint:"Run `opencode auth login <provider>` (or set the provider's API-key env var)."};var i3={"claude-code":G3,opencode:d3,codex:_3,copilot:u3};function U0(X){if(X.kind==="custom")return T3;let Z=i3[X.adapterId];if(!Z)throw Error(`Unknown registered adapter: ${X.adapterId}`);return Z}function T0(){return Object.values(i3)}var r2=new Map,u1=new Map,G9=30000;function A1(X,Z){let W=r2.get(X);if(W&&W.expiresAt>Date.now())return Promise.resolve(W.value);let J=u1.get(X);if(J)return J;let K=Z().then((V)=>{return r2.set(X,{value:V,expiresAt:Date.now()+G9}),V}).finally(()=>{u1.delete(X)});return u1.set(X,K),K}async function p3(X){let Z=await Promise.all(T0().map((V)=>A1(V.id,async()=>({adapterId:V.id,...await V.checkReadiness({id:"__probe__",kind:"registered",adapterId:V.id,displayName:V.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null})})))),J=(await J0(X)).runtimes.filter((V)=>V.kind==="custom"),K=await Promise.all(J.map((V)=>A1(`custom:${V.id}`,async()=>({adapterId:V.id,...await U0(V).checkReadiness(V)}))));return[...Z,...K]}async function s3(X,Z){let W=T0().find((V)=>V.id===X);if(W)return A1(W.id,async()=>({adapterId:W.id,...await W.checkReadiness({id:"__probe__",kind:"registered",adapterId:W.id,displayName:W.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null})}));let K=(await J0(Z)).runtimes.find((V)=>V.id===X);if(!K||K.kind!=="custom")return null;return A1(`custom:${K.id}`,async()=>({adapterId:K.id,...await U0(K).checkReadiness(K)}))}function r3(){r2.clear(),u1.clear()}import{createHash as w7,randomBytes as U7,randomUUID as t6}from"node:crypto";import*as E0 from"css-tree";var m9=new Set([65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111]),A="�",Y;(function(X){X[X.EOF=-1]="EOF",X[X.NULL=0]="NULL",X[X.TABULATION=9]="TABULATION",X[X.CARRIAGE_RETURN=13]="CARRIAGE_RETURN",X[X.LINE_FEED=10]="LINE_FEED",X[X.FORM_FEED=12]="FORM_FEED",X[X.SPACE=32]="SPACE",X[X.EXCLAMATION_MARK=33]="EXCLAMATION_MARK",X[X.QUOTATION_MARK=34]="QUOTATION_MARK",X[X.AMPERSAND=38]="AMPERSAND",X[X.APOSTROPHE=39]="APOSTROPHE",X[X.HYPHEN_MINUS=45]="HYPHEN_MINUS",X[X.SOLIDUS=47]="SOLIDUS",X[X.DIGIT_0=48]="DIGIT_0",X[X.DIGIT_9=57]="DIGIT_9",X[X.SEMICOLON=59]="SEMICOLON",X[X.LESS_THAN_SIGN=60]="LESS_THAN_SIGN",X[X.EQUALS_SIGN=61]="EQUALS_SIGN",X[X.GREATER_THAN_SIGN=62]="GREATER_THAN_SIGN",X[X.QUESTION_MARK=63]="QUESTION_MARK",X[X.LATIN_CAPITAL_A=65]="LATIN_CAPITAL_A",X[X.LATIN_CAPITAL_Z=90]="LATIN_CAPITAL_Z",X[X.RIGHT_SQUARE_BRACKET=93]="RIGHT_SQUARE_BRACKET",X[X.GRAVE_ACCENT=96]="GRAVE_ACCENT",X[X.LATIN_SMALL_A=97]="LATIN_SMALL_A",X[X.LATIN_SMALL_Z=122]="LATIN_SMALL_Z"})(Y||(Y={}));var t={DASH_DASH:"--",CDATA_START:"[CDATA[",DOCTYPE:"doctype",SCRIPT:"script",PUBLIC:"public",SYSTEM:"system"};function T1(X){return X>=55296&&X<=57343}function o3(X){return X>=56320&&X<=57343}function n3(X,Z){return(X-55296)*1024+9216+Z}function c1(X){return X!==32&&X!==10&&X!==13&&X!==9&&X!==12&&X>=1&&X<=31||X>=127&&X<=159}function a1(X){return X>=64976&&X<=65007||m9.has(X)}var L;(function(X){X.controlCharacterInInputStream="control-character-in-input-stream",X.noncharacterInInputStream="noncharacter-in-input-stream",X.surrogateInInputStream="surrogate-in-input-stream",X.nonVoidHtmlElementStartTagWithTrailingSolidus="non-void-html-element-start-tag-with-trailing-solidus",X.endTagWithAttributes="end-tag-with-attributes",X.endTagWithTrailingSolidus="end-tag-with-trailing-solidus",X.unexpectedSolidusInTag="unexpected-solidus-in-tag",X.unexpectedNullCharacter="unexpected-null-character",X.unexpectedQuestionMarkInsteadOfTagName="unexpected-question-mark-instead-of-tag-name",X.invalidFirstCharacterOfTagName="invalid-first-character-of-tag-name",X.unexpectedEqualsSignBeforeAttributeName="unexpected-equals-sign-before-attribute-name",X.missingEndTagName="missing-end-tag-name",X.unexpectedCharacterInAttributeName="unexpected-character-in-attribute-name",X.unknownNamedCharacterReference="unknown-named-character-reference",X.missingSemicolonAfterCharacterReference="missing-semicolon-after-character-reference",X.unexpectedCharacterAfterDoctypeSystemIdentifier="unexpected-character-after-doctype-system-identifier",X.unexpectedCharacterInUnquotedAttributeValue="unexpected-character-in-unquoted-attribute-value",X.eofBeforeTagName="eof-before-tag-name",X.eofInTag="eof-in-tag",X.missingAttributeValue="missing-attribute-value",X.missingWhitespaceBetweenAttributes="missing-whitespace-between-attributes",X.missingWhitespaceAfterDoctypePublicKeyword="missing-whitespace-after-doctype-public-keyword",X.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers="missing-whitespace-between-doctype-public-and-system-identifiers",X.missingWhitespaceAfterDoctypeSystemKeyword="missing-whitespace-after-doctype-system-keyword",X.missingQuoteBeforeDoctypePublicIdentifier="missing-quote-before-doctype-public-identifier",X.missingQuoteBeforeDoctypeSystemIdentifier="missing-quote-before-doctype-system-identifier",X.missingDoctypePublicIdentifier="missing-doctype-public-identifier",X.missingDoctypeSystemIdentifier="missing-doctype-system-identifier",X.abruptDoctypePublicIdentifier="abrupt-doctype-public-identifier",X.abruptDoctypeSystemIdentifier="abrupt-doctype-system-identifier",X.cdataInHtmlContent="cdata-in-html-content",X.incorrectlyOpenedComment="incorrectly-opened-comment",X.eofInScriptHtmlCommentLikeText="eof-in-script-html-comment-like-text",X.eofInDoctype="eof-in-doctype",X.nestedComment="nested-comment",X.abruptClosingOfEmptyComment="abrupt-closing-of-empty-comment",X.eofInComment="eof-in-comment",X.incorrectlyClosedComment="incorrectly-closed-comment",X.eofInCdata="eof-in-cdata",X.absenceOfDigitsInNumericCharacterReference="absence-of-digits-in-numeric-character-reference",X.nullCharacterReference="null-character-reference",X.surrogateCharacterReference="surrogate-character-reference",X.characterReferenceOutsideUnicodeRange="character-reference-outside-unicode-range",X.controlCharacterReference="control-character-reference",X.noncharacterCharacterReference="noncharacter-character-reference",X.missingWhitespaceBeforeDoctypeName="missing-whitespace-before-doctype-name",X.missingDoctypeName="missing-doctype-name",X.invalidCharacterSequenceAfterDoctypeName="invalid-character-sequence-after-doctype-name",X.duplicateAttribute="duplicate-attribute",X.nonConformingDoctype="non-conforming-doctype",X.missingDoctype="missing-doctype",X.misplacedDoctype="misplaced-doctype",X.endTagWithoutMatchingOpenElement="end-tag-without-matching-open-element",X.closingOfElementWithOpenChildElements="closing-of-element-with-open-child-elements",X.disallowedContentInNoscriptInHead="disallowed-content-in-noscript-in-head",X.openElementsLeftAfterEof="open-elements-left-after-eof",X.abandonedHeadElementChild="abandoned-head-element-child",X.misplacedStartTagForHeadElement="misplaced-start-tag-for-head-element",X.nestedNoscriptInHead="nested-noscript-in-head",X.eofInElementThatCanContainOnlyText="eof-in-element-that-can-contain-only-text"})(L||(L={}));var k9=65536;class o2{constructor(X){this.handler=X,this.html="",this.pos=-1,this.lastGapPos=-2,this.gapStack=[],this.skipNextNewLine=!1,this.lastChunkWritten=!1,this.endOfChunkHit=!1,this.bufferWaterline=k9,this.isEol=!1,this.lineStartPos=0,this.droppedBufferSize=0,this.line=1,this.lastErrOffset=-1}get col(){return this.pos-this.lineStartPos+Number(this.lastGapPos!==this.pos)}get offset(){return this.droppedBufferSize+this.pos}getError(X,Z){let{line:W,col:J,offset:K}=this,V=J+Z,j=K+Z;return{code:X,startLine:W,endLine:W,startCol:V,endCol:V,startOffset:j,endOffset:j}}_err(X){if(this.handler.onParseError&&this.lastErrOffset!==this.offset)this.lastErrOffset=this.offset,this.handler.onParseError(this.getError(X,0))}_addGap(){this.gapStack.push(this.lastGapPos),this.lastGapPos=this.pos}_processSurrogate(X){if(this.pos!==this.html.length-1){let Z=this.html.charCodeAt(this.pos+1);if(o3(Z))return this.pos++,this._addGap(),n3(X,Z)}else if(!this.lastChunkWritten)return this.endOfChunkHit=!0,Y.EOF;return this._err(L.surrogateInInputStream),X}willDropParsedChunk(){return this.pos>this.bufferWaterline}dropParsedChunk(){if(this.willDropParsedChunk())this.html=this.html.substring(this.pos),this.lineStartPos-=this.pos,this.droppedBufferSize+=this.pos,this.pos=0,this.lastGapPos=-2,this.gapStack.length=0}write(X,Z){if(this.html.length>0)this.html+=X;else this.html=X;this.endOfChunkHit=!1,this.lastChunkWritten=Z}insertHtmlAtCurrentPos(X){this.html=this.html.substring(0,this.pos+1)+X+this.html.substring(this.pos+1),this.endOfChunkHit=!1}startsWith(X,Z){if(this.pos+X.length>this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,!1;if(Z)return this.html.startsWith(X,this.pos);for(let W=0;W<X.length;W++)if((this.html.charCodeAt(this.pos+W)|32)!==X.charCodeAt(W))return!1;return!0}peek(X){let Z=this.pos+X;if(Z>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,Y.EOF;let W=this.html.charCodeAt(Z);return W===Y.CARRIAGE_RETURN?Y.LINE_FEED:W}advance(){if(this.pos++,this.isEol)this.isEol=!1,this.line++,this.lineStartPos=this.pos;if(this.pos>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,Y.EOF;let X=this.html.charCodeAt(this.pos);if(X===Y.CARRIAGE_RETURN)return this.isEol=!0,this.skipNextNewLine=!0,Y.LINE_FEED;if(X===Y.LINE_FEED){if(this.isEol=!0,this.skipNextNewLine)return this.line--,this.skipNextNewLine=!1,this._addGap(),this.advance()}if(this.skipNextNewLine=!1,T1(X))X=this._processSurrogate(X);if(!(this.handler.onParseError===null||X>31&&X<127||X===Y.LINE_FEED||X===Y.CARRIAGE_RETURN||X>159&&X<64976))this._checkForProblematicCharacters(X);return X}_checkForProblematicCharacters(X){if(c1(X))this._err(L.controlCharacterInInputStream);else if(a1(X))this._err(L.noncharacterInInputStream)}retreat(X){this.pos-=X;while(this.pos<this.lastGapPos)this.lastGapPos=this.gapStack.pop(),this.pos--;this.isEol=!1}}var _;(function(X){X[X.CHARACTER=0]="CHARACTER",X[X.NULL_CHARACTER=1]="NULL_CHARACTER",X[X.WHITESPACE_CHARACTER=2]="WHITESPACE_CHARACTER",X[X.START_TAG=3]="START_TAG",X[X.END_TAG=4]="END_TAG",X[X.COMMENT=5]="COMMENT",X[X.DOCTYPE=6]="DOCTYPE",X[X.EOF=7]="EOF",X[X.HIBERNATION=8]="HIBERNATION"})(_||(_={}));function d1(X,Z){for(let W=X.attrs.length-1;W>=0;W--)if(X.attrs[W].name===Z)return X.attrs[W].value;return null}var I9=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]);function t3(X){if(X>=55296&&X<=57343||X>1114111)return 65533;return I9.get(X)??X}function e3(X){let Z=atob(X),W=Z.length&-2,J=new Uint16Array(W/2);for(let K=0,V=0;K<W;K+=2){let j=Z.charCodeAt(K),U=Z.charCodeAt(K+1);J[V++]=j|U<<8}return J}var n2=e3("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IA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YwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWls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ZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg");var r;(function(X){X[X.VALUE_LENGTH=49152]="VALUE_LENGTH",X[X.FLAG13=8192]="FLAG13",X[X.BRANCH_LENGTH=8064]="BRANCH_LENGTH",X[X.JUMP_TABLE=127]="JUMP_TABLE"})(r||(r={}));var a;(function(X){X[X.NUM=35]="NUM",X[X.SEMI=59]="SEMI",X[X.EQUALS=61]="EQUALS",X[X.ZERO=48]="ZERO",X[X.NINE=57]="NINE",X[X.LOWER_A=97]="LOWER_A",X[X.LOWER_F=102]="LOWER_F",X[X.LOWER_X=120]="LOWER_X",X[X.LOWER_Z=122]="LOWER_Z",X[X.UPPER_A=65]="UPPER_A",X[X.UPPER_F=70]="UPPER_F",X[X.UPPER_Z=90]="UPPER_Z"})(a||(a={}));var X6=32;function t2(X){return X>=a.ZERO&&X<=a.NINE}function S9(X){return X>=a.UPPER_A&&X<=a.UPPER_F||X>=a.LOWER_A&&X<=a.LOWER_F}function l9(X){return X>=a.UPPER_A&&X<=a.UPPER_Z||X>=a.LOWER_A&&X<=a.LOWER_Z||t2(X)}function u9(X){return X===a.EQUALS||l9(X)}var p;(function(X){X[X.EntityStart=0]="EntityStart",X[X.NumericStart=1]="NumericStart",X[X.NumericDecimal=2]="NumericDecimal",X[X.NumericHex=3]="NumericHex",X[X.NamedEntity=4]="NamedEntity"})(p||(p={}));var F0;(function(X){X[X.Legacy=0]="Legacy",X[X.Strict=1]="Strict",X[X.Attribute=2]="Attribute"})(F0||(F0={}));class e2{decodeTree;emitCodePoint;errors;constructor(X,Z,W){this.decodeTree=X,this.emitCodePoint=Z,this.errors=W}state=p.EntityStart;consumed=1;result=0;treeIndex=0;excess=1;decodeMode=F0.Strict;runConsumed=0;startEntity(X){this.decodeMode=X,this.state=p.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(X,Z){switch(this.state){case p.EntityStart:{if(X.charCodeAt(Z)===a.NUM)return this.state=p.NumericStart,this.consumed+=1,this.stateNumericStart(X,Z+1);return this.state=p.NamedEntity,this.stateNamedEntity(X,Z)}case p.NumericStart:return this.stateNumericStart(X,Z);case p.NumericDecimal:return this.stateNumericDecimal(X,Z);case p.NumericHex:return this.stateNumericHex(X,Z);case p.NamedEntity:return this.stateNamedEntity(X,Z)}}stateNumericStart(X,Z){if(Z>=X.length)return-1;if((X.charCodeAt(Z)|X6)===a.LOWER_X)return this.state=p.NumericHex,this.consumed+=1,this.stateNumericHex(X,Z+1);return this.state=p.NumericDecimal,this.stateNumericDecimal(X,Z)}stateNumericHex(X,Z){while(Z<X.length){let W=X.charCodeAt(Z);if(t2(W)||S9(W)){let J=W<=a.NINE?W-a.ZERO:(W|X6)-a.LOWER_A+10;this.result=this.result*16+J,this.consumed++,Z++}else return this.emitNumericEntity(W,3)}return-1}stateNumericDecimal(X,Z){while(Z<X.length){let W=X.charCodeAt(Z);if(t2(W))this.result=this.result*10+(W-a.ZERO),this.consumed++,Z++;else return this.emitNumericEntity(W,2)}return-1}emitNumericEntity(X,Z){if(this.consumed<=Z)return this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(X===a.SEMI)this.consumed+=1;else if(this.decodeMode===F0.Strict)return 0;if(this.emitCodePoint(t3(this.result),this.consumed),this.errors){if(X!==a.SEMI)this.errors.missingSemicolonAfterCharacterReference();this.errors.validateNumericCharacterReference(this.result)}return this.consumed}stateNamedEntity(X,Z){let{decodeTree:W}=this,J=W[this.treeIndex],K=(J&r.VALUE_LENGTH)>>14;while(Z<X.length){if(K===0&&(J&r.FLAG13)!==0){let j=(J&r.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let U=J&r.JUMP_TABLE;if(X.charCodeAt(Z)!==U)return this.result===0?0:this.emitNotTerminatedNamedEntity();Z++,this.excess++,this.runConsumed++}while(this.runConsumed<j){if(Z>=X.length)return-1;let U=this.runConsumed-1,F=W[this.treeIndex+1+(U>>1)],w=U%2===0?F&255:F>>8&255;if(X.charCodeAt(Z)!==w)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();Z++,this.excess++,this.runConsumed++}this.runConsumed=0,this.treeIndex+=1+(j>>1),J=W[this.treeIndex],K=(J&r.VALUE_LENGTH)>>14}if(Z>=X.length)break;let V=X.charCodeAt(Z);if(V===a.SEMI&&K!==0&&(J&r.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,K,this.consumed+this.excess);if(this.treeIndex=A9(W,J,this.treeIndex+Math.max(1,K),V),this.treeIndex<0)return this.result===0||this.decodeMode===F0.Attribute&&(K===0||u9(V))?0:this.emitNotTerminatedNamedEntity();if(J=W[this.treeIndex],K=(J&r.VALUE_LENGTH)>>14,K!==0){if(V===a.SEMI)return this.emitNamedEntityData(this.treeIndex,K,this.consumed+this.excess);if(this.decodeMode!==F0.Strict&&(J&r.FLAG13)===0)this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0}Z++,this.excess++}return-1}emitNotTerminatedNamedEntity(){let{result:X,decodeTree:Z}=this,W=(Z[X]&r.VALUE_LENGTH)>>14;return this.emitNamedEntityData(X,W,this.consumed),this.errors?.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(X,Z,W){let{decodeTree:J}=this;if(this.emitCodePoint(Z===1?J[X]&~(r.VALUE_LENGTH|r.FLAG13):J[X+1],W),Z===3)this.emitCodePoint(J[X+2],W);return W}end(){switch(this.state){case p.NamedEntity:return this.result!==0&&(this.decodeMode!==F0.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case p.NumericDecimal:return this.emitNumericEntity(0,2);case p.NumericHex:return this.emitNumericEntity(0,3);case p.NumericStart:return this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case p.EntityStart:return 0}}}function A9(X,Z,W,J){let K=(Z&r.BRANCH_LENGTH)>>7,V=Z&r.JUMP_TABLE;if(K===0)return V!==0&&J===V?W:-1;if(V){let w=J-V;return w<0||w>=K?-1:X[W+w]-1}let j=K+1>>1,U=0,F=K-1;while(U<=F){let w=U+F>>>1,q=w>>1,y=X[W+q]>>(w&1)*8&255;if(y<J)U=w+1;else if(y>J)F=w-1;else return X[W+j+w]}return-1}var x;(function(X){X.HTML="http://www.w3.org/1999/xhtml",X.MATHML="http://www.w3.org/1998/Math/MathML",X.SVG="http://www.w3.org/2000/svg",X.XLINK="http://www.w3.org/1999/xlink",X.XML="http://www.w3.org/XML/1998/namespace",X.XMLNS="http://www.w3.org/2000/xmlns/"})(x||(x={}));var b0;(function(X){X.TYPE="type",X.ACTION="action",X.ENCODING="encoding",X.PROMPT="prompt",X.NAME="name",X.COLOR="color",X.FACE="face",X.SIZE="size"})(b0||(b0={}));var e;(function(X){X.NO_QUIRKS="no-quirks",X.QUIRKS="quirks",X.LIMITED_QUIRKS="limited-quirks"})(e||(e={}));var B;(function(X){X.A="a",X.ADDRESS="address",X.ANNOTATION_XML="annotation-xml",X.APPLET="applet",X.AREA="area",X.ARTICLE="article",X.ASIDE="aside",X.B="b",X.BASE="base",X.BASEFONT="basefont",X.BGSOUND="bgsound",X.BIG="big",X.BLOCKQUOTE="blockquote",X.BODY="body",X.BR="br",X.BUTTON="button",X.CAPTION="caption",X.CENTER="center",X.CODE="code",X.COL="col",X.COLGROUP="colgroup",X.DD="dd",X.DESC="desc",X.DETAILS="details",X.DIALOG="dialog",X.DIR="dir",X.DIV="div",X.DL="dl",X.DT="dt",X.EM="em",X.EMBED="embed",X.FIELDSET="fieldset",X.FIGCAPTION="figcaption",X.FIGURE="figure",X.FONT="font",X.FOOTER="footer",X.FOREIGN_OBJECT="foreignObject",X.FORM="form",X.FRAME="frame",X.FRAMESET="frameset",X.H1="h1",X.H2="h2",X.H3="h3",X.H4="h4",X.H5="h5",X.H6="h6",X.HEAD="head",X.HEADER="header",X.HGROUP="hgroup",X.HR="hr",X.HTML="html",X.I="i",X.IMG="img",X.IMAGE="image",X.INPUT="input",X.IFRAME="iframe",X.KEYGEN="keygen",X.LABEL="label",X.LI="li",X.LINK="link",X.LISTING="listing",X.MAIN="main",X.MALIGNMARK="malignmark",X.MARQUEE="marquee",X.MATH="math",X.MENU="menu",X.META="meta",X.MGLYPH="mglyph",X.MI="mi",X.MO="mo",X.MN="mn",X.MS="ms",X.MTEXT="mtext",X.NAV="nav",X.NOBR="nobr",X.NOFRAMES="noframes",X.NOEMBED="noembed",X.NOSCRIPT="noscript",X.OBJECT="object",X.OL="ol",X.OPTGROUP="optgroup",X.OPTION="option",X.P="p",X.PARAM="param",X.PLAINTEXT="plaintext",X.PRE="pre",X.RB="rb",X.RP="rp",X.RT="rt",X.RTC="rtc",X.RUBY="ruby",X.S="s",X.SCRIPT="script",X.SEARCH="search",X.SECTION="section",X.SELECT="select",X.SOURCE="source",X.SMALL="small",X.SPAN="span",X.STRIKE="strike",X.STRONG="strong",X.STYLE="style",X.SUB="sub",X.SUMMARY="summary",X.SUP="sup",X.TABLE="table",X.TBODY="tbody",X.TEMPLATE="template",X.TEXTAREA="textarea",X.TFOOT="tfoot",X.TD="td",X.TH="th",X.THEAD="thead",X.TITLE="title",X.TR="tr",X.TRACK="track",X.TT="tt",X.U="u",X.UL="ul",X.SVG="svg",X.VAR="var",X.WBR="wbr",X.XMP="xmp"})(B||(B={}));var Q;(function(X){X[X.UNKNOWN=0]="UNKNOWN",X[X.A=1]="A",X[X.ADDRESS=2]="ADDRESS",X[X.ANNOTATION_XML=3]="ANNOTATION_XML",X[X.APPLET=4]="APPLET",X[X.AREA=5]="AREA",X[X.ARTICLE=6]="ARTICLE",X[X.ASIDE=7]="ASIDE",X[X.B=8]="B",X[X.BASE=9]="BASE",X[X.BASEFONT=10]="BASEFONT",X[X.BGSOUND=11]="BGSOUND",X[X.BIG=12]="BIG",X[X.BLOCKQUOTE=13]="BLOCKQUOTE",X[X.BODY=14]="BODY",X[X.BR=15]="BR",X[X.BUTTON=16]="BUTTON",X[X.CAPTION=17]="CAPTION",X[X.CENTER=18]="CENTER",X[X.CODE=19]="CODE",X[X.COL=20]="COL",X[X.COLGROUP=21]="COLGROUP",X[X.DD=22]="DD",X[X.DESC=23]="DESC",X[X.DETAILS=24]="DETAILS",X[X.DIALOG=25]="DIALOG",X[X.DIR=26]="DIR",X[X.DIV=27]="DIV",X[X.DL=28]="DL",X[X.DT=29]="DT",X[X.EM=30]="EM",X[X.EMBED=31]="EMBED",X[X.FIELDSET=32]="FIELDSET",X[X.FIGCAPTION=33]="FIGCAPTION",X[X.FIGURE=34]="FIGURE",X[X.FONT=35]="FONT",X[X.FOOTER=36]="FOOTER",X[X.FOREIGN_OBJECT=37]="FOREIGN_OBJECT",X[X.FORM=38]="FORM",X[X.FRAME=39]="FRAME",X[X.FRAMESET=40]="FRAMESET",X[X.H1=41]="H1",X[X.H2=42]="H2",X[X.H3=43]="H3",X[X.H4=44]="H4",X[X.H5=45]="H5",X[X.H6=46]="H6",X[X.HEAD=47]="HEAD",X[X.HEADER=48]="HEADER",X[X.HGROUP=49]="HGROUP",X[X.HR=50]="HR",X[X.HTML=51]="HTML",X[X.I=52]="I",X[X.IMG=53]="IMG",X[X.IMAGE=54]="IMAGE",X[X.INPUT=55]="INPUT",X[X.IFRAME=56]="IFRAME",X[X.KEYGEN=57]="KEYGEN",X[X.LABEL=58]="LABEL",X[X.LI=59]="LI",X[X.LINK=60]="LINK",X[X.LISTING=61]="LISTING",X[X.MAIN=62]="MAIN",X[X.MALIGNMARK=63]="MALIGNMARK",X[X.MARQUEE=64]="MARQUEE",X[X.MATH=65]="MATH",X[X.MENU=66]="MENU",X[X.META=67]="META",X[X.MGLYPH=68]="MGLYPH",X[X.MI=69]="MI",X[X.MO=70]="MO",X[X.MN=71]="MN",X[X.MS=72]="MS",X[X.MTEXT=73]="MTEXT",X[X.NAV=74]="NAV",X[X.NOBR=75]="NOBR",X[X.NOFRAMES=76]="NOFRAMES",X[X.NOEMBED=77]="NOEMBED",X[X.NOSCRIPT=78]="NOSCRIPT",X[X.OBJECT=79]="OBJECT",X[X.OL=80]="OL",X[X.OPTGROUP=81]="OPTGROUP",X[X.OPTION=82]="OPTION",X[X.P=83]="P",X[X.PARAM=84]="PARAM",X[X.PLAINTEXT=85]="PLAINTEXT",X[X.PRE=86]="PRE",X[X.RB=87]="RB",X[X.RP=88]="RP",X[X.RT=89]="RT",X[X.RTC=90]="RTC",X[X.RUBY=91]="RUBY",X[X.S=92]="S",X[X.SCRIPT=93]="SCRIPT",X[X.SEARCH=94]="SEARCH",X[X.SECTION=95]="SECTION",X[X.SELECT=96]="SELECT",X[X.SOURCE=97]="SOURCE",X[X.SMALL=98]="SMALL",X[X.SPAN=99]="SPAN",X[X.STRIKE=100]="STRIKE",X[X.STRONG=101]="STRONG",X[X.STYLE=102]="STYLE",X[X.SUB=103]="SUB",X[X.SUMMARY=104]="SUMMARY",X[X.SUP=105]="SUP",X[X.TABLE=106]="TABLE",X[X.TBODY=107]="TBODY",X[X.TEMPLATE=108]="TEMPLATE",X[X.TEXTAREA=109]="TEXTAREA",X[X.TFOOT=110]="TFOOT",X[X.TD=111]="TD",X[X.TH=112]="TH",X[X.THEAD=113]="THEAD",X[X.TITLE=114]="TITLE",X[X.TR=115]="TR",X[X.TRACK=116]="TRACK",X[X.TT=117]="TT",X[X.U=118]="U",X[X.UL=119]="UL",X[X.SVG=120]="SVG",X[X.VAR=121]="VAR",X[X.WBR=122]="WBR",X[X.XMP=123]="XMP"})(Q||(Q={}));var T9=new Map([[B.A,Q.A],[B.ADDRESS,Q.ADDRESS],[B.ANNOTATION_XML,Q.ANNOTATION_XML],[B.APPLET,Q.APPLET],[B.AREA,Q.AREA],[B.ARTICLE,Q.ARTICLE],[B.ASIDE,Q.ASIDE],[B.B,Q.B],[B.BASE,Q.BASE],[B.BASEFONT,Q.BASEFONT],[B.BGSOUND,Q.BGSOUND],[B.BIG,Q.BIG],[B.BLOCKQUOTE,Q.BLOCKQUOTE],[B.BODY,Q.BODY],[B.BR,Q.BR],[B.BUTTON,Q.BUTTON],[B.CAPTION,Q.CAPTION],[B.CENTER,Q.CENTER],[B.CODE,Q.CODE],[B.COL,Q.COL],[B.COLGROUP,Q.COLGROUP],[B.DD,Q.DD],[B.DESC,Q.DESC],[B.DETAILS,Q.DETAILS],[B.DIALOG,Q.DIALOG],[B.DIR,Q.DIR],[B.DIV,Q.DIV],[B.DL,Q.DL],[B.DT,Q.DT],[B.EM,Q.EM],[B.EMBED,Q.EMBED],[B.FIELDSET,Q.FIELDSET],[B.FIGCAPTION,Q.FIGCAPTION],[B.FIGURE,Q.FIGURE],[B.FONT,Q.FONT],[B.FOOTER,Q.FOOTER],[B.FOREIGN_OBJECT,Q.FOREIGN_OBJECT],[B.FORM,Q.FORM],[B.FRAME,Q.FRAME],[B.FRAMESET,Q.FRAMESET],[B.H1,Q.H1],[B.H2,Q.H2],[B.H3,Q.H3],[B.H4,Q.H4],[B.H5,Q.H5],[B.H6,Q.H6],[B.HEAD,Q.HEAD],[B.HEADER,Q.HEADER],[B.HGROUP,Q.HGROUP],[B.HR,Q.HR],[B.HTML,Q.HTML],[B.I,Q.I],[B.IMG,Q.IMG],[B.IMAGE,Q.IMAGE],[B.INPUT,Q.INPUT],[B.IFRAME,Q.IFRAME],[B.KEYGEN,Q.KEYGEN],[B.LABEL,Q.LABEL],[B.LI,Q.LI],[B.LINK,Q.LINK],[B.LISTING,Q.LISTING],[B.MAIN,Q.MAIN],[B.MALIGNMARK,Q.MALIGNMARK],[B.MARQUEE,Q.MARQUEE],[B.MATH,Q.MATH],[B.MENU,Q.MENU],[B.META,Q.META],[B.MGLYPH,Q.MGLYPH],[B.MI,Q.MI],[B.MO,Q.MO],[B.MN,Q.MN],[B.MS,Q.MS],[B.MTEXT,Q.MTEXT],[B.NAV,Q.NAV],[B.NOBR,Q.NOBR],[B.NOFRAMES,Q.NOFRAMES],[B.NOEMBED,Q.NOEMBED],[B.NOSCRIPT,Q.NOSCRIPT],[B.OBJECT,Q.OBJECT],[B.OL,Q.OL],[B.OPTGROUP,Q.OPTGROUP],[B.OPTION,Q.OPTION],[B.P,Q.P],[B.PARAM,Q.PARAM],[B.PLAINTEXT,Q.PLAINTEXT],[B.PRE,Q.PRE],[B.RB,Q.RB],[B.RP,Q.RP],[B.RT,Q.RT],[B.RTC,Q.RTC],[B.RUBY,Q.RUBY],[B.S,Q.S],[B.SCRIPT,Q.SCRIPT],[B.SEARCH,Q.SEARCH],[B.SECTION,Q.SECTION],[B.SELECT,Q.SELECT],[B.SOURCE,Q.SOURCE],[B.SMALL,Q.SMALL],[B.SPAN,Q.SPAN],[B.STRIKE,Q.STRIKE],[B.STRONG,Q.STRONG],[B.STYLE,Q.STYLE],[B.SUB,Q.SUB],[B.SUMMARY,Q.SUMMARY],[B.SUP,Q.SUP],[B.TABLE,Q.TABLE],[B.TBODY,Q.TBODY],[B.TEMPLATE,Q.TEMPLATE],[B.TEXTAREA,Q.TEXTAREA],[B.TFOOT,Q.TFOOT],[B.TD,Q.TD],[B.TH,Q.TH],[B.THEAD,Q.THEAD],[B.TITLE,Q.TITLE],[B.TR,Q.TR],[B.TRACK,Q.TRACK],[B.TT,Q.TT],[B.U,Q.U],[B.UL,Q.UL],[B.SVG,Q.SVG],[B.VAR,Q.VAR],[B.WBR,Q.WBR],[B.XMP,Q.XMP]]);function G0(X){var Z;return(Z=T9.get(X))!==null&&Z!==void 0?Z:Q.UNKNOWN}var f=Q,Z6={[x.HTML]:new Set([f.ADDRESS,f.APPLET,f.AREA,f.ARTICLE,f.ASIDE,f.BASE,f.BASEFONT,f.BGSOUND,f.BLOCKQUOTE,f.BODY,f.BR,f.BUTTON,f.CAPTION,f.CENTER,f.COL,f.COLGROUP,f.DD,f.DETAILS,f.DIR,f.DIV,f.DL,f.DT,f.EMBED,f.FIELDSET,f.FIGCAPTION,f.FIGURE,f.FOOTER,f.FORM,f.FRAME,f.FRAMESET,f.H1,f.H2,f.H3,f.H4,f.H5,f.H6,f.HEAD,f.HEADER,f.HGROUP,f.HR,f.HTML,f.IFRAME,f.IMG,f.INPUT,f.LI,f.LINK,f.LISTING,f.MAIN,f.MARQUEE,f.MENU,f.META,f.NAV,f.NOEMBED,f.NOFRAMES,f.NOSCRIPT,f.OBJECT,f.OL,f.P,f.PARAM,f.PLAINTEXT,f.PRE,f.SCRIPT,f.SECTION,f.SELECT,f.SOURCE,f.STYLE,f.SUMMARY,f.TABLE,f.TBODY,f.TD,f.TEMPLATE,f.TEXTAREA,f.TFOOT,f.TH,f.THEAD,f.TITLE,f.TR,f.TRACK,f.UL,f.WBR,f.XMP]),[x.MATHML]:new Set([f.MI,f.MO,f.MN,f.MS,f.MTEXT,f.ANNOTATION_XML]),[x.SVG]:new Set([f.TITLE,f.FOREIGN_OBJECT,f.DESC]),[x.XLINK]:new Set,[x.XML]:new Set,[x.XMLNS]:new Set},Q1=new Set([f.H1,f.H2,f.H3,f.H4,f.H5,f.H6]),c9=new Set([B.STYLE,B.SCRIPT,B.XMP,B.IFRAME,B.NOEMBED,B.NOFRAMES,B.PLAINTEXT]);function W6(X,Z){return c9.has(X)||Z&&X===B.NOSCRIPT}var z;(function(X){X[X.DATA=0]="DATA",X[X.RCDATA=1]="RCDATA",X[X.RAWTEXT=2]="RAWTEXT",X[X.SCRIPT_DATA=3]="SCRIPT_DATA",X[X.PLAINTEXT=4]="PLAINTEXT",X[X.TAG_OPEN=5]="TAG_OPEN",X[X.END_TAG_OPEN=6]="END_TAG_OPEN",X[X.TAG_NAME=7]="TAG_NAME",X[X.RCDATA_LESS_THAN_SIGN=8]="RCDATA_LESS_THAN_SIGN",X[X.RCDATA_END_TAG_OPEN=9]="RCDATA_END_TAG_OPEN",X[X.RCDATA_END_TAG_NAME=10]="RCDATA_END_TAG_NAME",X[X.RAWTEXT_LESS_THAN_SIGN=11]="RAWTEXT_LESS_THAN_SIGN",X[X.RAWTEXT_END_TAG_OPEN=12]="RAWTEXT_END_TAG_OPEN",X[X.RAWTEXT_END_TAG_NAME=13]="RAWTEXT_END_TAG_NAME",X[X.SCRIPT_DATA_LESS_THAN_SIGN=14]="SCRIPT_DATA_LESS_THAN_SIGN",X[X.SCRIPT_DATA_END_TAG_OPEN=15]="SCRIPT_DATA_END_TAG_OPEN",X[X.SCRIPT_DATA_END_TAG_NAME=16]="SCRIPT_DATA_END_TAG_NAME",X[X.SCRIPT_DATA_ESCAPE_START=17]="SCRIPT_DATA_ESCAPE_START",X[X.SCRIPT_DATA_ESCAPE_START_DASH=18]="SCRIPT_DATA_ESCAPE_START_DASH",X[X.SCRIPT_DATA_ESCAPED=19]="SCRIPT_DATA_ESCAPED",X[X.SCRIPT_DATA_ESCAPED_DASH=20]="SCRIPT_DATA_ESCAPED_DASH",X[X.SCRIPT_DATA_ESCAPED_DASH_DASH=21]="SCRIPT_DATA_ESCAPED_DASH_DASH",X[X.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN=22]="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN",X[X.SCRIPT_DATA_ESCAPED_END_TAG_OPEN=23]="SCRIPT_DATA_ESCAPED_END_TAG_OPEN",X[X.SCRIPT_DATA_ESCAPED_END_TAG_NAME=24]="SCRIPT_DATA_ESCAPED_END_TAG_NAME",X[X.SCRIPT_DATA_DOUBLE_ESCAPE_START=25]="SCRIPT_DATA_DOUBLE_ESCAPE_START",X[X.SCRIPT_DATA_DOUBLE_ESCAPED=26]="SCRIPT_DATA_DOUBLE_ESCAPED",X[X.SCRIPT_DATA_DOUBLE_ESCAPED_DASH=27]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH",X[X.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH=28]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH",X[X.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN=29]="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN",X[X.SCRIPT_DATA_DOUBLE_ESCAPE_END=30]="SCRIPT_DATA_DOUBLE_ESCAPE_END",X[X.BEFORE_ATTRIBUTE_NAME=31]="BEFORE_ATTRIBUTE_NAME",X[X.ATTRIBUTE_NAME=32]="ATTRIBUTE_NAME",X[X.AFTER_ATTRIBUTE_NAME=33]="AFTER_ATTRIBUTE_NAME",X[X.BEFORE_ATTRIBUTE_VALUE=34]="BEFORE_ATTRIBUTE_VALUE",X[X.ATTRIBUTE_VALUE_DOUBLE_QUOTED=35]="ATTRIBUTE_VALUE_DOUBLE_QUOTED",X[X.ATTRIBUTE_VALUE_SINGLE_QUOTED=36]="ATTRIBUTE_VALUE_SINGLE_QUOTED",X[X.ATTRIBUTE_VALUE_UNQUOTED=37]="ATTRIBUTE_VALUE_UNQUOTED",X[X.AFTER_ATTRIBUTE_VALUE_QUOTED=38]="AFTER_ATTRIBUTE_VALUE_QUOTED",X[X.SELF_CLOSING_START_TAG=39]="SELF_CLOSING_START_TAG",X[X.BOGUS_COMMENT=40]="BOGUS_COMMENT",X[X.MARKUP_DECLARATION_OPEN=41]="MARKUP_DECLARATION_OPEN",X[X.COMMENT_START=42]="COMMENT_START",X[X.COMMENT_START_DASH=43]="COMMENT_START_DASH",X[X.COMMENT=44]="COMMENT",X[X.COMMENT_LESS_THAN_SIGN=45]="COMMENT_LESS_THAN_SIGN",X[X.COMMENT_LESS_THAN_SIGN_BANG=46]="COMMENT_LESS_THAN_SIGN_BANG",X[X.COMMENT_LESS_THAN_SIGN_BANG_DASH=47]="COMMENT_LESS_THAN_SIGN_BANG_DASH",X[X.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH=48]="COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH",X[X.COMMENT_END_DASH=49]="COMMENT_END_DASH",X[X.COMMENT_END=50]="COMMENT_END",X[X.COMMENT_END_BANG=51]="COMMENT_END_BANG",X[X.DOCTYPE=52]="DOCTYPE",X[X.BEFORE_DOCTYPE_NAME=53]="BEFORE_DOCTYPE_NAME",X[X.DOCTYPE_NAME=54]="DOCTYPE_NAME",X[X.AFTER_DOCTYPE_NAME=55]="AFTER_DOCTYPE_NAME",X[X.AFTER_DOCTYPE_PUBLIC_KEYWORD=56]="AFTER_DOCTYPE_PUBLIC_KEYWORD",X[X.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER=57]="BEFORE_DOCTYPE_PUBLIC_IDENTIFIER",X[X.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED=58]="DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED",X[X.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED=59]="DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED",X[X.AFTER_DOCTYPE_PUBLIC_IDENTIFIER=60]="AFTER_DOCTYPE_PUBLIC_IDENTIFIER",X[X.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS=61]="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS",X[X.AFTER_DOCTYPE_SYSTEM_KEYWORD=62]="AFTER_DOCTYPE_SYSTEM_KEYWORD",X[X.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER=63]="BEFORE_DOCTYPE_SYSTEM_IDENTIFIER",X[X.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED=64]="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED",X[X.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED=65]="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED",X[X.AFTER_DOCTYPE_SYSTEM_IDENTIFIER=66]="AFTER_DOCTYPE_SYSTEM_IDENTIFIER",X[X.BOGUS_DOCTYPE=67]="BOGUS_DOCTYPE",X[X.CDATA_SECTION=68]="CDATA_SECTION",X[X.CDATA_SECTION_BRACKET=69]="CDATA_SECTION_BRACKET",X[X.CDATA_SECTION_END=70]="CDATA_SECTION_END",X[X.CHARACTER_REFERENCE=71]="CHARACTER_REFERENCE",X[X.AMBIGUOUS_AMPERSAND=72]="AMBIGUOUS_AMPERSAND"})(z||(z={}));var o={DATA:z.DATA,RCDATA:z.RCDATA,RAWTEXT:z.RAWTEXT,SCRIPT_DATA:z.SCRIPT_DATA,PLAINTEXT:z.PLAINTEXT,CDATA_SECTION:z.CDATA_SECTION};function d9(X){return X>=Y.DIGIT_0&&X<=Y.DIGIT_9}function J1(X){return X>=Y.LATIN_CAPITAL_A&&X<=Y.LATIN_CAPITAL_Z}function i9(X){return X>=Y.LATIN_SMALL_A&&X<=Y.LATIN_SMALL_Z}function y0(X){return i9(X)||J1(X)}function Q6(X){return y0(X)||d9(X)}function i1(X){return X+32}function K6(X){return X===Y.SPACE||X===Y.LINE_FEED||X===Y.TABULATION||X===Y.FORM_FEED}function J6(X){return K6(X)||X===Y.SOLIDUS||X===Y.GREATER_THAN_SIGN}function p9(X){if(X===Y.NULL)return L.nullCharacterReference;else if(X>1114111)return L.characterReferenceOutsideUnicodeRange;else if(T1(X))return L.surrogateCharacterReference;else if(a1(X))return L.noncharacterCharacterReference;else if(c1(X)||X===Y.CARRIAGE_RETURN)return L.controlCharacterReference;return null}class p1{constructor(X,Z){this.options=X,this.handler=Z,this.paused=!1,this.inLoop=!1,this.inForeignNode=!1,this.lastStartTagName="",this.active=!1,this.state=z.DATA,this.returnState=z.DATA,this.entityStartPos=0,this.consumedAfterSnapshot=-1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr={name:"",value:""},this.preprocessor=new o2(Z),this.currentLocation=this.getCurrentLocation(-1),this.entityDecoder=new e2(n2,(W,J)=>{this.preprocessor.pos=this.entityStartPos+J-1,this._flushCodePointConsumedAsCharacterReference(W)},Z.onParseError?{missingSemicolonAfterCharacterReference:()=>{this._err(L.missingSemicolonAfterCharacterReference,1)},absenceOfDigitsInNumericCharacterReference:(W)=>{this._err(L.absenceOfDigitsInNumericCharacterReference,this.entityStartPos-this.preprocessor.pos+W)},validateNumericCharacterReference:(W)=>{let J=p9(W);if(J)this._err(J,1)}}:void 0)}_err(X,Z=0){var W,J;(J=(W=this.handler).onParseError)===null||J===void 0||J.call(W,this.preprocessor.getError(X,Z))}getCurrentLocation(X){if(!this.options.sourceCodeLocationInfo)return null;return{startLine:this.preprocessor.line,startCol:this.preprocessor.col-X,startOffset:this.preprocessor.offset-X,endLine:-1,endCol:-1,endOffset:-1}}_runParsingLoop(){if(this.inLoop)return;this.inLoop=!0;while(this.active&&!this.paused){this.consumedAfterSnapshot=0;let X=this._consume();if(!this._ensureHibernation())this._callState(X)}this.inLoop=!1}pause(){this.paused=!0}resume(X){if(!this.paused)throw Error("Parser was already resumed");if(this.paused=!1,this.inLoop)return;if(this._runParsingLoop(),!this.paused)X===null||X===void 0||X()}write(X,Z,W){if(this.active=!0,this.preprocessor.write(X,Z),this._runParsingLoop(),!this.paused)W===null||W===void 0||W()}insertHtmlAtCurrentPos(X){this.active=!0,this.preprocessor.insertHtmlAtCurrentPos(X),this._runParsingLoop()}_ensureHibernation(){if(this.preprocessor.endOfChunkHit)return this.preprocessor.retreat(this.consumedAfterSnapshot),this.consumedAfterSnapshot=0,this.active=!1,!0;return!1}_consume(){return this.consumedAfterSnapshot++,this.preprocessor.advance()}_advanceBy(X){this.consumedAfterSnapshot+=X;for(let Z=0;Z<X;Z++)this.preprocessor.advance()}_consumeSequenceIfMatch(X,Z){if(this.preprocessor.startsWith(X,Z))return this._advanceBy(X.length-1),!0;return!1}_createStartTagToken(){this.currentToken={type:_.START_TAG,tagName:"",tagID:Q.UNKNOWN,selfClosing:!1,ackSelfClosing:!1,attrs:[],location:this.getCurrentLocation(1)}}_createEndTagToken(){this.currentToken={type:_.END_TAG,tagName:"",tagID:Q.UNKNOWN,selfClosing:!1,ackSelfClosing:!1,attrs:[],location:this.getCurrentLocation(2)}}_createCommentToken(X){this.currentToken={type:_.COMMENT,data:"",location:this.getCurrentLocation(X)}}_createDoctypeToken(X){this.currentToken={type:_.DOCTYPE,name:X,forceQuirks:!1,publicId:null,systemId:null,location:this.currentLocation}}_createCharacterToken(X,Z){this.currentCharacterToken={type:X,chars:Z,location:this.currentLocation}}_createAttr(X){this.currentAttr={name:X,value:""},this.currentLocation=this.getCurrentLocation(0)}_leaveAttrName(){var X,Z;let W=this.currentToken;if(d1(W,this.currentAttr.name)===null){if(W.attrs.push(this.currentAttr),W.location&&this.currentLocation){let J=(X=(Z=W.location).attrs)!==null&&X!==void 0?X:Z.attrs=Object.create(null);J[this.currentAttr.name]=this.currentLocation,this._leaveAttrValue()}}else this._err(L.duplicateAttribute)}_leaveAttrValue(){if(this.currentLocation)this.currentLocation.endLine=this.preprocessor.line,this.currentLocation.endCol=this.preprocessor.col,this.currentLocation.endOffset=this.preprocessor.offset}prepareToken(X){if(this._emitCurrentCharacterToken(X.location),this.currentToken=null,X.location)X.location.endLine=this.preprocessor.line,X.location.endCol=this.preprocessor.col+1,X.location.endOffset=this.preprocessor.offset+1;this.currentLocation=this.getCurrentLocation(-1)}emitCurrentTagToken(){let X=this.currentToken;if(this.prepareToken(X),X.tagID=G0(X.tagName),X.type===_.START_TAG)this.lastStartTagName=X.tagName,this.handler.onStartTag(X);else{if(X.attrs.length>0)this._err(L.endTagWithAttributes);if(X.selfClosing)this._err(L.endTagWithTrailingSolidus);this.handler.onEndTag(X)}this.preprocessor.dropParsedChunk()}emitCurrentComment(X){this.prepareToken(X),this.handler.onComment(X),this.preprocessor.dropParsedChunk()}emitCurrentDoctype(X){this.prepareToken(X),this.handler.onDoctype(X),this.preprocessor.dropParsedChunk()}_emitCurrentCharacterToken(X){if(this.currentCharacterToken){if(X&&this.currentCharacterToken.location)this.currentCharacterToken.location.endLine=X.startLine,this.currentCharacterToken.location.endCol=X.startCol,this.currentCharacterToken.location.endOffset=X.startOffset;switch(this.currentCharacterToken.type){case _.CHARACTER:{this.handler.onCharacter(this.currentCharacterToken);break}case _.NULL_CHARACTER:{this.handler.onNullCharacter(this.currentCharacterToken);break}case _.WHITESPACE_CHARACTER:{this.handler.onWhitespaceCharacter(this.currentCharacterToken);break}}this.currentCharacterToken=null}}_emitEOFToken(){let X=this.getCurrentLocation(0);if(X)X.endLine=X.startLine,X.endCol=X.startCol,X.endOffset=X.startOffset;this._emitCurrentCharacterToken(X),this.handler.onEof({type:_.EOF,location:X}),this.active=!1}_appendCharToCurrentCharacterToken(X,Z){if(this.currentCharacterToken)if(this.currentCharacterToken.type===X){this.currentCharacterToken.chars+=Z;return}else this.currentLocation=this.getCurrentLocation(0),this._emitCurrentCharacterToken(this.currentLocation),this.preprocessor.dropParsedChunk();this._createCharacterToken(X,Z)}_emitCodePoint(X){let Z=K6(X)?_.WHITESPACE_CHARACTER:X===Y.NULL?_.NULL_CHARACTER:_.CHARACTER;this._appendCharToCurrentCharacterToken(Z,X<65536?String.fromCharCode(X):String.fromCodePoint(X))}_emitChars(X){this._appendCharToCurrentCharacterToken(_.CHARACTER,X)}_startCharacterReference(){this.returnState=this.state,this.state=z.CHARACTER_REFERENCE,this.entityStartPos=this.preprocessor.pos,this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute()?F0.Attribute:F0.Legacy)}_isCharacterReferenceInAttribute(){return this.returnState===z.ATTRIBUTE_VALUE_DOUBLE_QUOTED||this.returnState===z.ATTRIBUTE_VALUE_SINGLE_QUOTED||this.returnState===z.ATTRIBUTE_VALUE_UNQUOTED}_flushCodePointConsumedAsCharacterReference(X){if(this._isCharacterReferenceInAttribute())this.currentAttr.value+=String.fromCodePoint(X);else this._emitCodePoint(X)}_callState(X){switch(this.state){case z.DATA:{this._stateData(X);break}case z.RCDATA:{this._stateRcdata(X);break}case z.RAWTEXT:{this._stateRawtext(X);break}case z.SCRIPT_DATA:{this._stateScriptData(X);break}case z.PLAINTEXT:{this._statePlaintext(X);break}case z.TAG_OPEN:{this._stateTagOpen(X);break}case z.END_TAG_OPEN:{this._stateEndTagOpen(X);break}case z.TAG_NAME:{this._stateTagName(X);break}case z.RCDATA_LESS_THAN_SIGN:{this._stateRcdataLessThanSign(X);break}case z.RCDATA_END_TAG_OPEN:{this._stateRcdataEndTagOpen(X);break}case z.RCDATA_END_TAG_NAME:{this._stateRcdataEndTagName(X);break}case z.RAWTEXT_LESS_THAN_SIGN:{this._stateRawtextLessThanSign(X);break}case z.RAWTEXT_END_TAG_OPEN:{this._stateRawtextEndTagOpen(X);break}case z.RAWTEXT_END_TAG_NAME:{this._stateRawtextEndTagName(X);break}case z.SCRIPT_DATA_LESS_THAN_SIGN:{this._stateScriptDataLessThanSign(X);break}case z.SCRIPT_DATA_END_TAG_OPEN:{this._stateScriptDataEndTagOpen(X);break}case z.SCRIPT_DATA_END_TAG_NAME:{this._stateScriptDataEndTagName(X);break}case z.SCRIPT_DATA_ESCAPE_START:{this._stateScriptDataEscapeStart(X);break}case z.SCRIPT_DATA_ESCAPE_START_DASH:{this._stateScriptDataEscapeStartDash(X);break}case z.SCRIPT_DATA_ESCAPED:{this._stateScriptDataEscaped(X);break}case z.SCRIPT_DATA_ESCAPED_DASH:{this._stateScriptDataEscapedDash(X);break}case z.SCRIPT_DATA_ESCAPED_DASH_DASH:{this._stateScriptDataEscapedDashDash(X);break}case z.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataEscapedLessThanSign(X);break}case z.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:{this._stateScriptDataEscapedEndTagOpen(X);break}case z.SCRIPT_DATA_ESCAPED_END_TAG_NAME:{this._stateScriptDataEscapedEndTagName(X);break}case z.SCRIPT_DATA_DOUBLE_ESCAPE_START:{this._stateScriptDataDoubleEscapeStart(X);break}case z.SCRIPT_DATA_DOUBLE_ESCAPED:{this._stateScriptDataDoubleEscaped(X);break}case z.SCRIPT_DATA_DOUBLE_ESCAPED_DASH:{this._stateScriptDataDoubleEscapedDash(X);break}case z.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH:{this._stateScriptDataDoubleEscapedDashDash(X);break}case z.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataDoubleEscapedLessThanSign(X);break}case z.SCRIPT_DATA_DOUBLE_ESCAPE_END:{this._stateScriptDataDoubleEscapeEnd(X);break}case z.BEFORE_ATTRIBUTE_NAME:{this._stateBeforeAttributeName(X);break}case z.ATTRIBUTE_NAME:{this._stateAttributeName(X);break}case z.AFTER_ATTRIBUTE_NAME:{this._stateAfterAttributeName(X);break}case z.BEFORE_ATTRIBUTE_VALUE:{this._stateBeforeAttributeValue(X);break}case z.ATTRIBUTE_VALUE_DOUBLE_QUOTED:{this._stateAttributeValueDoubleQuoted(X);break}case z.ATTRIBUTE_VALUE_SINGLE_QUOTED:{this._stateAttributeValueSingleQuoted(X);break}case z.ATTRIBUTE_VALUE_UNQUOTED:{this._stateAttributeValueUnquoted(X);break}case z.AFTER_ATTRIBUTE_VALUE_QUOTED:{this._stateAfterAttributeValueQuoted(X);break}case z.SELF_CLOSING_START_TAG:{this._stateSelfClosingStartTag(X);break}case z.BOGUS_COMMENT:{this._stateBogusComment(X);break}case z.MARKUP_DECLARATION_OPEN:{this._stateMarkupDeclarationOpen(X);break}case z.COMMENT_START:{this._stateCommentStart(X);break}case z.COMMENT_START_DASH:{this._stateCommentStartDash(X);break}case z.COMMENT:{this._stateComment(X);break}case z.COMMENT_LESS_THAN_SIGN:{this._stateCommentLessThanSign(X);break}case z.COMMENT_LESS_THAN_SIGN_BANG:{this._stateCommentLessThanSignBang(X);break}case z.COMMENT_LESS_THAN_SIGN_BANG_DASH:{this._stateCommentLessThanSignBangDash(X);break}case z.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH:{this._stateCommentLessThanSignBangDashDash(X);break}case z.COMMENT_END_DASH:{this._stateCommentEndDash(X);break}case z.COMMENT_END:{this._stateCommentEnd(X);break}case z.COMMENT_END_BANG:{this._stateCommentEndBang(X);break}case z.DOCTYPE:{this._stateDoctype(X);break}case z.BEFORE_DOCTYPE_NAME:{this._stateBeforeDoctypeName(X);break}case z.DOCTYPE_NAME:{this._stateDoctypeName(X);break}case z.AFTER_DOCTYPE_NAME:{this._stateAfterDoctypeName(X);break}case z.AFTER_DOCTYPE_PUBLIC_KEYWORD:{this._stateAfterDoctypePublicKeyword(X);break}case z.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateBeforeDoctypePublicIdentifier(X);break}case z.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypePublicIdentifierDoubleQuoted(X);break}case z.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypePublicIdentifierSingleQuoted(X);break}case z.AFTER_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateAfterDoctypePublicIdentifier(X);break}case z.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS:{this._stateBetweenDoctypePublicAndSystemIdentifiers(X);break}case z.AFTER_DOCTYPE_SYSTEM_KEYWORD:{this._stateAfterDoctypeSystemKeyword(X);break}case z.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateBeforeDoctypeSystemIdentifier(X);break}case z.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypeSystemIdentifierDoubleQuoted(X);break}case z.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypeSystemIdentifierSingleQuoted(X);break}case z.AFTER_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateAfterDoctypeSystemIdentifier(X);break}case z.BOGUS_DOCTYPE:{this._stateBogusDoctype(X);break}case z.CDATA_SECTION:{this._stateCdataSection(X);break}case z.CDATA_SECTION_BRACKET:{this._stateCdataSectionBracket(X);break}case z.CDATA_SECTION_END:{this._stateCdataSectionEnd(X);break}case z.CHARACTER_REFERENCE:{this._stateCharacterReference();break}case z.AMBIGUOUS_AMPERSAND:{this._stateAmbiguousAmpersand(X);break}default:throw Error("Unknown state")}}_stateData(X){switch(X){case Y.LESS_THAN_SIGN:{this.state=z.TAG_OPEN;break}case Y.AMPERSAND:{this._startCharacterReference();break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this._emitCodePoint(X);break}case Y.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateRcdata(X){switch(X){case Y.AMPERSAND:{this._startCharacterReference();break}case Y.LESS_THAN_SIGN:{this.state=z.RCDATA_LESS_THAN_SIGN;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this._emitChars(A);break}case Y.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateRawtext(X){switch(X){case Y.LESS_THAN_SIGN:{this.state=z.RAWTEXT_LESS_THAN_SIGN;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this._emitChars(A);break}case Y.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateScriptData(X){switch(X){case Y.LESS_THAN_SIGN:{this.state=z.SCRIPT_DATA_LESS_THAN_SIGN;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this._emitChars(A);break}case Y.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_statePlaintext(X){switch(X){case Y.NULL:{this._err(L.unexpectedNullCharacter),this._emitChars(A);break}case Y.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateTagOpen(X){if(y0(X))this._createStartTagToken(),this.state=z.TAG_NAME,this._stateTagName(X);else switch(X){case Y.EXCLAMATION_MARK:{this.state=z.MARKUP_DECLARATION_OPEN;break}case Y.SOLIDUS:{this.state=z.END_TAG_OPEN;break}case Y.QUESTION_MARK:{this._err(L.unexpectedQuestionMarkInsteadOfTagName),this._createCommentToken(1),this.state=z.BOGUS_COMMENT,this._stateBogusComment(X);break}case Y.EOF:{this._err(L.eofBeforeTagName),this._emitChars("<"),this._emitEOFToken();break}default:this._err(L.invalidFirstCharacterOfTagName),this._emitChars("<"),this.state=z.DATA,this._stateData(X)}}_stateEndTagOpen(X){if(y0(X))this._createEndTagToken(),this.state=z.TAG_NAME,this._stateTagName(X);else switch(X){case Y.GREATER_THAN_SIGN:{this._err(L.missingEndTagName),this.state=z.DATA;break}case Y.EOF:{this._err(L.eofBeforeTagName),this._emitChars("</"),this._emitEOFToken();break}default:this._err(L.invalidFirstCharacterOfTagName),this._createCommentToken(2),this.state=z.BOGUS_COMMENT,this._stateBogusComment(X)}}_stateTagName(X){let Z=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:{this.state=z.BEFORE_ATTRIBUTE_NAME;break}case Y.SOLIDUS:{this.state=z.SELF_CLOSING_START_TAG;break}case Y.GREATER_THAN_SIGN:{this.state=z.DATA,this.emitCurrentTagToken();break}case Y.NULL:{this._err(L.unexpectedNullCharacter),Z.tagName+=A;break}case Y.EOF:{this._err(L.eofInTag),this._emitEOFToken();break}default:Z.tagName+=String.fromCodePoint(J1(X)?i1(X):X)}}_stateRcdataLessThanSign(X){if(X===Y.SOLIDUS)this.state=z.RCDATA_END_TAG_OPEN;else this._emitChars("<"),this.state=z.RCDATA,this._stateRcdata(X)}_stateRcdataEndTagOpen(X){if(y0(X))this.state=z.RCDATA_END_TAG_NAME,this._stateRcdataEndTagName(X);else this._emitChars("</"),this.state=z.RCDATA,this._stateRcdata(X)}handleSpecialEndTag(X){if(!this.preprocessor.startsWith(this.lastStartTagName,!1))return!this._ensureHibernation();this._createEndTagToken();let Z=this.currentToken;switch(Z.tagName=this.lastStartTagName,this.preprocessor.peek(this.lastStartTagName.length)){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:return this._advanceBy(this.lastStartTagName.length),this.state=z.BEFORE_ATTRIBUTE_NAME,!1;case Y.SOLIDUS:return this._advanceBy(this.lastStartTagName.length),this.state=z.SELF_CLOSING_START_TAG,!1;case Y.GREATER_THAN_SIGN:return this._advanceBy(this.lastStartTagName.length),this.emitCurrentTagToken(),this.state=z.DATA,!1;default:return!this._ensureHibernation()}}_stateRcdataEndTagName(X){if(this.handleSpecialEndTag(X))this._emitChars("</"),this.state=z.RCDATA,this._stateRcdata(X)}_stateRawtextLessThanSign(X){if(X===Y.SOLIDUS)this.state=z.RAWTEXT_END_TAG_OPEN;else this._emitChars("<"),this.state=z.RAWTEXT,this._stateRawtext(X)}_stateRawtextEndTagOpen(X){if(y0(X))this.state=z.RAWTEXT_END_TAG_NAME,this._stateRawtextEndTagName(X);else this._emitChars("</"),this.state=z.RAWTEXT,this._stateRawtext(X)}_stateRawtextEndTagName(X){if(this.handleSpecialEndTag(X))this._emitChars("</"),this.state=z.RAWTEXT,this._stateRawtext(X)}_stateScriptDataLessThanSign(X){switch(X){case Y.SOLIDUS:{this.state=z.SCRIPT_DATA_END_TAG_OPEN;break}case Y.EXCLAMATION_MARK:{this.state=z.SCRIPT_DATA_ESCAPE_START,this._emitChars("<!");break}default:this._emitChars("<"),this.state=z.SCRIPT_DATA,this._stateScriptData(X)}}_stateScriptDataEndTagOpen(X){if(y0(X))this.state=z.SCRIPT_DATA_END_TAG_NAME,this._stateScriptDataEndTagName(X);else this._emitChars("</"),this.state=z.SCRIPT_DATA,this._stateScriptData(X)}_stateScriptDataEndTagName(X){if(this.handleSpecialEndTag(X))this._emitChars("</"),this.state=z.SCRIPT_DATA,this._stateScriptData(X)}_stateScriptDataEscapeStart(X){if(X===Y.HYPHEN_MINUS)this.state=z.SCRIPT_DATA_ESCAPE_START_DASH,this._emitChars("-");else this.state=z.SCRIPT_DATA,this._stateScriptData(X)}_stateScriptDataEscapeStartDash(X){if(X===Y.HYPHEN_MINUS)this.state=z.SCRIPT_DATA_ESCAPED_DASH_DASH,this._emitChars("-");else this.state=z.SCRIPT_DATA,this._stateScriptData(X)}_stateScriptDataEscaped(X){switch(X){case Y.HYPHEN_MINUS:{this.state=z.SCRIPT_DATA_ESCAPED_DASH,this._emitChars("-");break}case Y.LESS_THAN_SIGN:{this.state=z.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this._emitChars(A);break}case Y.EOF:{this._err(L.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateScriptDataEscapedDash(X){switch(X){case Y.HYPHEN_MINUS:{this.state=z.SCRIPT_DATA_ESCAPED_DASH_DASH,this._emitChars("-");break}case Y.LESS_THAN_SIGN:{this.state=z.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this.state=z.SCRIPT_DATA_ESCAPED,this._emitChars(A);break}case Y.EOF:{this._err(L.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=z.SCRIPT_DATA_ESCAPED,this._emitCodePoint(X)}}_stateScriptDataEscapedDashDash(X){switch(X){case Y.HYPHEN_MINUS:{this._emitChars("-");break}case Y.LESS_THAN_SIGN:{this.state=z.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case Y.GREATER_THAN_SIGN:{this.state=z.SCRIPT_DATA,this._emitChars(">");break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this.state=z.SCRIPT_DATA_ESCAPED,this._emitChars(A);break}case Y.EOF:{this._err(L.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=z.SCRIPT_DATA_ESCAPED,this._emitCodePoint(X)}}_stateScriptDataEscapedLessThanSign(X){if(X===Y.SOLIDUS)this.state=z.SCRIPT_DATA_ESCAPED_END_TAG_OPEN;else if(y0(X))this._emitChars("<"),this.state=z.SCRIPT_DATA_DOUBLE_ESCAPE_START,this._stateScriptDataDoubleEscapeStart(X);else this._emitChars("<"),this.state=z.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(X)}_stateScriptDataEscapedEndTagOpen(X){if(y0(X))this.state=z.SCRIPT_DATA_ESCAPED_END_TAG_NAME,this._stateScriptDataEscapedEndTagName(X);else this._emitChars("</"),this.state=z.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(X)}_stateScriptDataEscapedEndTagName(X){if(this.handleSpecialEndTag(X))this._emitChars("</"),this.state=z.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(X)}_stateScriptDataDoubleEscapeStart(X){if(this.preprocessor.startsWith(t.SCRIPT,!1)&&J6(this.preprocessor.peek(t.SCRIPT.length))){this._emitCodePoint(X);for(let Z=0;Z<t.SCRIPT.length;Z++)this._emitCodePoint(this._consume());this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED}else if(!this._ensureHibernation())this.state=z.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(X)}_stateScriptDataDoubleEscaped(X){switch(X){case Y.HYPHEN_MINUS:{this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED_DASH,this._emitChars("-");break}case Y.LESS_THAN_SIGN:{this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this._emitChars(A);break}case Y.EOF:{this._err(L.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateScriptDataDoubleEscapedDash(X){switch(X){case Y.HYPHEN_MINUS:{this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH,this._emitChars("-");break}case Y.LESS_THAN_SIGN:{this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(A);break}case Y.EOF:{this._err(L.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(X)}}_stateScriptDataDoubleEscapedDashDash(X){switch(X){case Y.HYPHEN_MINUS:{this._emitChars("-");break}case Y.LESS_THAN_SIGN:{this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case Y.GREATER_THAN_SIGN:{this.state=z.SCRIPT_DATA,this._emitChars(">");break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(A);break}case Y.EOF:{this._err(L.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(X)}}_stateScriptDataDoubleEscapedLessThanSign(X){if(X===Y.SOLIDUS)this.state=z.SCRIPT_DATA_DOUBLE_ESCAPE_END,this._emitChars("/");else this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(X)}_stateScriptDataDoubleEscapeEnd(X){if(this.preprocessor.startsWith(t.SCRIPT,!1)&&J6(this.preprocessor.peek(t.SCRIPT.length))){this._emitCodePoint(X);for(let Z=0;Z<t.SCRIPT.length;Z++)this._emitCodePoint(this._consume());this.state=z.SCRIPT_DATA_ESCAPED}else if(!this._ensureHibernation())this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(X)}_stateBeforeAttributeName(X){switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:break;case Y.SOLIDUS:case Y.GREATER_THAN_SIGN:case Y.EOF:{this.state=z.AFTER_ATTRIBUTE_NAME,this._stateAfterAttributeName(X);break}case Y.EQUALS_SIGN:{this._err(L.unexpectedEqualsSignBeforeAttributeName),this._createAttr("="),this.state=z.ATTRIBUTE_NAME;break}default:this._createAttr(""),this.state=z.ATTRIBUTE_NAME,this._stateAttributeName(X)}}_stateAttributeName(X){switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:case Y.SOLIDUS:case Y.GREATER_THAN_SIGN:case Y.EOF:{this._leaveAttrName(),this.state=z.AFTER_ATTRIBUTE_NAME,this._stateAfterAttributeName(X);break}case Y.EQUALS_SIGN:{this._leaveAttrName(),this.state=z.BEFORE_ATTRIBUTE_VALUE;break}case Y.QUOTATION_MARK:case Y.APOSTROPHE:case Y.LESS_THAN_SIGN:{this._err(L.unexpectedCharacterInAttributeName),this.currentAttr.name+=String.fromCodePoint(X);break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this.currentAttr.name+=A;break}default:this.currentAttr.name+=String.fromCodePoint(J1(X)?i1(X):X)}}_stateAfterAttributeName(X){switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:break;case Y.SOLIDUS:{this.state=z.SELF_CLOSING_START_TAG;break}case Y.EQUALS_SIGN:{this.state=z.BEFORE_ATTRIBUTE_VALUE;break}case Y.GREATER_THAN_SIGN:{this.state=z.DATA,this.emitCurrentTagToken();break}case Y.EOF:{this._err(L.eofInTag),this._emitEOFToken();break}default:this._createAttr(""),this.state=z.ATTRIBUTE_NAME,this._stateAttributeName(X)}}_stateBeforeAttributeValue(X){switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:break;case Y.QUOTATION_MARK:{this.state=z.ATTRIBUTE_VALUE_DOUBLE_QUOTED;break}case Y.APOSTROPHE:{this.state=z.ATTRIBUTE_VALUE_SINGLE_QUOTED;break}case Y.GREATER_THAN_SIGN:{this._err(L.missingAttributeValue),this.state=z.DATA,this.emitCurrentTagToken();break}default:this.state=z.ATTRIBUTE_VALUE_UNQUOTED,this._stateAttributeValueUnquoted(X)}}_stateAttributeValueDoubleQuoted(X){switch(X){case Y.QUOTATION_MARK:{this.state=z.AFTER_ATTRIBUTE_VALUE_QUOTED;break}case Y.AMPERSAND:{this._startCharacterReference();break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this.currentAttr.value+=A;break}case Y.EOF:{this._err(L.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(X)}}_stateAttributeValueSingleQuoted(X){switch(X){case Y.APOSTROPHE:{this.state=z.AFTER_ATTRIBUTE_VALUE_QUOTED;break}case Y.AMPERSAND:{this._startCharacterReference();break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this.currentAttr.value+=A;break}case Y.EOF:{this._err(L.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(X)}}_stateAttributeValueUnquoted(X){switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:{this._leaveAttrValue(),this.state=z.BEFORE_ATTRIBUTE_NAME;break}case Y.AMPERSAND:{this._startCharacterReference();break}case Y.GREATER_THAN_SIGN:{this._leaveAttrValue(),this.state=z.DATA,this.emitCurrentTagToken();break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this.currentAttr.value+=A;break}case Y.QUOTATION_MARK:case Y.APOSTROPHE:case Y.LESS_THAN_SIGN:case Y.EQUALS_SIGN:case Y.GRAVE_ACCENT:{this._err(L.unexpectedCharacterInUnquotedAttributeValue),this.currentAttr.value+=String.fromCodePoint(X);break}case Y.EOF:{this._err(L.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(X)}}_stateAfterAttributeValueQuoted(X){switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:{this._leaveAttrValue(),this.state=z.BEFORE_ATTRIBUTE_NAME;break}case Y.SOLIDUS:{this._leaveAttrValue(),this.state=z.SELF_CLOSING_START_TAG;break}case Y.GREATER_THAN_SIGN:{this._leaveAttrValue(),this.state=z.DATA,this.emitCurrentTagToken();break}case Y.EOF:{this._err(L.eofInTag),this._emitEOFToken();break}default:this._err(L.missingWhitespaceBetweenAttributes),this.state=z.BEFORE_ATTRIBUTE_NAME,this._stateBeforeAttributeName(X)}}_stateSelfClosingStartTag(X){switch(X){case Y.GREATER_THAN_SIGN:{let Z=this.currentToken;Z.selfClosing=!0,this.state=z.DATA,this.emitCurrentTagToken();break}case Y.EOF:{this._err(L.eofInTag),this._emitEOFToken();break}default:this._err(L.unexpectedSolidusInTag),this.state=z.BEFORE_ATTRIBUTE_NAME,this._stateBeforeAttributeName(X)}}_stateBogusComment(X){let Z=this.currentToken;switch(X){case Y.GREATER_THAN_SIGN:{this.state=z.DATA,this.emitCurrentComment(Z);break}case Y.EOF:{this.emitCurrentComment(Z),this._emitEOFToken();break}case Y.NULL:{this._err(L.unexpectedNullCharacter),Z.data+=A;break}default:Z.data+=String.fromCodePoint(X)}}_stateMarkupDeclarationOpen(X){if(this._consumeSequenceIfMatch(t.DASH_DASH,!0))this._createCommentToken(t.DASH_DASH.length+1),this.state=z.COMMENT_START;else if(this._consumeSequenceIfMatch(t.DOCTYPE,!1))this.currentLocation=this.getCurrentLocation(t.DOCTYPE.length+1),this.state=z.DOCTYPE;else if(this._consumeSequenceIfMatch(t.CDATA_START,!0))if(this.inForeignNode)this.state=z.CDATA_SECTION;else this._err(L.cdataInHtmlContent),this._createCommentToken(t.CDATA_START.length+1),this.currentToken.data="[CDATA[",this.state=z.BOGUS_COMMENT;else if(!this._ensureHibernation())this._err(L.incorrectlyOpenedComment),this._createCommentToken(2),this.state=z.BOGUS_COMMENT,this._stateBogusComment(X)}_stateCommentStart(X){switch(X){case Y.HYPHEN_MINUS:{this.state=z.COMMENT_START_DASH;break}case Y.GREATER_THAN_SIGN:{this._err(L.abruptClosingOfEmptyComment),this.state=z.DATA;let Z=this.currentToken;this.emitCurrentComment(Z);break}default:this.state=z.COMMENT,this._stateComment(X)}}_stateCommentStartDash(X){let Z=this.currentToken;switch(X){case Y.HYPHEN_MINUS:{this.state=z.COMMENT_END;break}case Y.GREATER_THAN_SIGN:{this._err(L.abruptClosingOfEmptyComment),this.state=z.DATA,this.emitCurrentComment(Z);break}case Y.EOF:{this._err(L.eofInComment),this.emitCurrentComment(Z),this._emitEOFToken();break}default:Z.data+="-",this.state=z.COMMENT,this._stateComment(X)}}_stateComment(X){let Z=this.currentToken;switch(X){case Y.HYPHEN_MINUS:{this.state=z.COMMENT_END_DASH;break}case Y.LESS_THAN_SIGN:{Z.data+="<",this.state=z.COMMENT_LESS_THAN_SIGN;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),Z.data+=A;break}case Y.EOF:{this._err(L.eofInComment),this.emitCurrentComment(Z),this._emitEOFToken();break}default:Z.data+=String.fromCodePoint(X)}}_stateCommentLessThanSign(X){let Z=this.currentToken;switch(X){case Y.EXCLAMATION_MARK:{Z.data+="!",this.state=z.COMMENT_LESS_THAN_SIGN_BANG;break}case Y.LESS_THAN_SIGN:{Z.data+="<";break}default:this.state=z.COMMENT,this._stateComment(X)}}_stateCommentLessThanSignBang(X){if(X===Y.HYPHEN_MINUS)this.state=z.COMMENT_LESS_THAN_SIGN_BANG_DASH;else this.state=z.COMMENT,this._stateComment(X)}_stateCommentLessThanSignBangDash(X){if(X===Y.HYPHEN_MINUS)this.state=z.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH;else this.state=z.COMMENT_END_DASH,this._stateCommentEndDash(X)}_stateCommentLessThanSignBangDashDash(X){if(X!==Y.GREATER_THAN_SIGN&&X!==Y.EOF)this._err(L.nestedComment);this.state=z.COMMENT_END,this._stateCommentEnd(X)}_stateCommentEndDash(X){let Z=this.currentToken;switch(X){case Y.HYPHEN_MINUS:{this.state=z.COMMENT_END;break}case Y.EOF:{this._err(L.eofInComment),this.emitCurrentComment(Z),this._emitEOFToken();break}default:Z.data+="-",this.state=z.COMMENT,this._stateComment(X)}}_stateCommentEnd(X){let Z=this.currentToken;switch(X){case Y.GREATER_THAN_SIGN:{this.state=z.DATA,this.emitCurrentComment(Z);break}case Y.EXCLAMATION_MARK:{this.state=z.COMMENT_END_BANG;break}case Y.HYPHEN_MINUS:{Z.data+="-";break}case Y.EOF:{this._err(L.eofInComment),this.emitCurrentComment(Z),this._emitEOFToken();break}default:Z.data+="--",this.state=z.COMMENT,this._stateComment(X)}}_stateCommentEndBang(X){let Z=this.currentToken;switch(X){case Y.HYPHEN_MINUS:{Z.data+="--!",this.state=z.COMMENT_END_DASH;break}case Y.GREATER_THAN_SIGN:{this._err(L.incorrectlyClosedComment),this.state=z.DATA,this.emitCurrentComment(Z);break}case Y.EOF:{this._err(L.eofInComment),this.emitCurrentComment(Z),this._emitEOFToken();break}default:Z.data+="--!",this.state=z.COMMENT,this._stateComment(X)}}_stateDoctype(X){switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:{this.state=z.BEFORE_DOCTYPE_NAME;break}case Y.GREATER_THAN_SIGN:{this.state=z.BEFORE_DOCTYPE_NAME,this._stateBeforeDoctypeName(X);break}case Y.EOF:{this._err(L.eofInDoctype),this._createDoctypeToken(null);let Z=this.currentToken;Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(L.missingWhitespaceBeforeDoctypeName),this.state=z.BEFORE_DOCTYPE_NAME,this._stateBeforeDoctypeName(X)}}_stateBeforeDoctypeName(X){if(J1(X))this._createDoctypeToken(String.fromCharCode(i1(X))),this.state=z.DOCTYPE_NAME;else switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:break;case Y.NULL:{this._err(L.unexpectedNullCharacter),this._createDoctypeToken(A),this.state=z.DOCTYPE_NAME;break}case Y.GREATER_THAN_SIGN:{this._err(L.missingDoctypeName),this._createDoctypeToken(null);let Z=this.currentToken;Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this.state=z.DATA;break}case Y.EOF:{this._err(L.eofInDoctype),this._createDoctypeToken(null);let Z=this.currentToken;Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._createDoctypeToken(String.fromCodePoint(X)),this.state=z.DOCTYPE_NAME}}_stateDoctypeName(X){let Z=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:{this.state=z.AFTER_DOCTYPE_NAME;break}case Y.GREATER_THAN_SIGN:{this.state=z.DATA,this.emitCurrentDoctype(Z);break}case Y.NULL:{this._err(L.unexpectedNullCharacter),Z.name+=A;break}case Y.EOF:{this._err(L.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:Z.name+=String.fromCodePoint(J1(X)?i1(X):X)}}_stateAfterDoctypeName(X){let Z=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:break;case Y.GREATER_THAN_SIGN:{this.state=z.DATA,this.emitCurrentDoctype(Z);break}case Y.EOF:{this._err(L.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:if(this._consumeSequenceIfMatch(t.PUBLIC,!1))this.state=z.AFTER_DOCTYPE_PUBLIC_KEYWORD;else if(this._consumeSequenceIfMatch(t.SYSTEM,!1))this.state=z.AFTER_DOCTYPE_SYSTEM_KEYWORD;else if(!this._ensureHibernation())this._err(L.invalidCharacterSequenceAfterDoctypeName),Z.forceQuirks=!0,this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateAfterDoctypePublicKeyword(X){let Z=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:{this.state=z.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;break}case Y.QUOTATION_MARK:{this._err(L.missingWhitespaceAfterDoctypePublicKeyword),Z.publicId="",this.state=z.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;break}case Y.APOSTROPHE:{this._err(L.missingWhitespaceAfterDoctypePublicKeyword),Z.publicId="",this.state=z.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;break}case Y.GREATER_THAN_SIGN:{this._err(L.missingDoctypePublicIdentifier),Z.forceQuirks=!0,this.state=z.DATA,this.emitCurrentDoctype(Z);break}case Y.EOF:{this._err(L.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(L.missingQuoteBeforeDoctypePublicIdentifier),Z.forceQuirks=!0,this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateBeforeDoctypePublicIdentifier(X){let Z=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:break;case Y.QUOTATION_MARK:{Z.publicId="",this.state=z.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;break}case Y.APOSTROPHE:{Z.publicId="",this.state=z.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;break}case Y.GREATER_THAN_SIGN:{this._err(L.missingDoctypePublicIdentifier),Z.forceQuirks=!0,this.state=z.DATA,this.emitCurrentDoctype(Z);break}case Y.EOF:{this._err(L.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(L.missingQuoteBeforeDoctypePublicIdentifier),Z.forceQuirks=!0,this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateDoctypePublicIdentifierDoubleQuoted(X){let Z=this.currentToken;switch(X){case Y.QUOTATION_MARK:{this.state=z.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),Z.publicId+=A;break}case Y.GREATER_THAN_SIGN:{this._err(L.abruptDoctypePublicIdentifier),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this.state=z.DATA;break}case Y.EOF:{this._err(L.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:Z.publicId+=String.fromCodePoint(X)}}_stateDoctypePublicIdentifierSingleQuoted(X){let Z=this.currentToken;switch(X){case Y.APOSTROPHE:{this.state=z.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),Z.publicId+=A;break}case Y.GREATER_THAN_SIGN:{this._err(L.abruptDoctypePublicIdentifier),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this.state=z.DATA;break}case Y.EOF:{this._err(L.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:Z.publicId+=String.fromCodePoint(X)}}_stateAfterDoctypePublicIdentifier(X){let Z=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:{this.state=z.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;break}case Y.GREATER_THAN_SIGN:{this.state=z.DATA,this.emitCurrentDoctype(Z);break}case Y.QUOTATION_MARK:{this._err(L.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),Z.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case Y.APOSTROPHE:{this._err(L.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),Z.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case Y.EOF:{this._err(L.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(L.missingQuoteBeforeDoctypeSystemIdentifier),Z.forceQuirks=!0,this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateBetweenDoctypePublicAndSystemIdentifiers(X){let Z=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:break;case Y.GREATER_THAN_SIGN:{this.emitCurrentDoctype(Z),this.state=z.DATA;break}case Y.QUOTATION_MARK:{Z.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case Y.APOSTROPHE:{Z.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case Y.EOF:{this._err(L.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(L.missingQuoteBeforeDoctypeSystemIdentifier),Z.forceQuirks=!0,this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateAfterDoctypeSystemKeyword(X){let Z=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:{this.state=z.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;break}case Y.QUOTATION_MARK:{this._err(L.missingWhitespaceAfterDoctypeSystemKeyword),Z.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case Y.APOSTROPHE:{this._err(L.missingWhitespaceAfterDoctypeSystemKeyword),Z.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case Y.GREATER_THAN_SIGN:{this._err(L.missingDoctypeSystemIdentifier),Z.forceQuirks=!0,this.state=z.DATA,this.emitCurrentDoctype(Z);break}case Y.EOF:{this._err(L.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(L.missingQuoteBeforeDoctypeSystemIdentifier),Z.forceQuirks=!0,this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateBeforeDoctypeSystemIdentifier(X){let Z=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:break;case Y.QUOTATION_MARK:{Z.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case Y.APOSTROPHE:{Z.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case Y.GREATER_THAN_SIGN:{this._err(L.missingDoctypeSystemIdentifier),Z.forceQuirks=!0,this.state=z.DATA,this.emitCurrentDoctype(Z);break}case Y.EOF:{this._err(L.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(L.missingQuoteBeforeDoctypeSystemIdentifier),Z.forceQuirks=!0,this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateDoctypeSystemIdentifierDoubleQuoted(X){let Z=this.currentToken;switch(X){case Y.QUOTATION_MARK:{this.state=z.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),Z.systemId+=A;break}case Y.GREATER_THAN_SIGN:{this._err(L.abruptDoctypeSystemIdentifier),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this.state=z.DATA;break}case Y.EOF:{this._err(L.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:Z.systemId+=String.fromCodePoint(X)}}_stateDoctypeSystemIdentifierSingleQuoted(X){let Z=this.currentToken;switch(X){case Y.APOSTROPHE:{this.state=z.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),Z.systemId+=A;break}case Y.GREATER_THAN_SIGN:{this._err(L.abruptDoctypeSystemIdentifier),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this.state=z.DATA;break}case Y.EOF:{this._err(L.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:Z.systemId+=String.fromCodePoint(X)}}_stateAfterDoctypeSystemIdentifier(X){let Z=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:break;case Y.GREATER_THAN_SIGN:{this.emitCurrentDoctype(Z),this.state=z.DATA;break}case Y.EOF:{this._err(L.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(L.unexpectedCharacterAfterDoctypeSystemIdentifier),this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateBogusDoctype(X){let Z=this.currentToken;switch(X){case Y.GREATER_THAN_SIGN:{this.emitCurrentDoctype(Z),this.state=z.DATA;break}case Y.NULL:{this._err(L.unexpectedNullCharacter);break}case Y.EOF:{this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:}}_stateCdataSection(X){switch(X){case Y.RIGHT_SQUARE_BRACKET:{this.state=z.CDATA_SECTION_BRACKET;break}case Y.EOF:{this._err(L.eofInCdata),this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateCdataSectionBracket(X){if(X===Y.RIGHT_SQUARE_BRACKET)this.state=z.CDATA_SECTION_END;else this._emitChars("]"),this.state=z.CDATA_SECTION,this._stateCdataSection(X)}_stateCdataSectionEnd(X){switch(X){case Y.GREATER_THAN_SIGN:{this.state=z.DATA;break}case Y.RIGHT_SQUARE_BRACKET:{this._emitChars("]");break}default:this._emitChars("]]"),this.state=z.CDATA_SECTION,this._stateCdataSection(X)}}_stateCharacterReference(){let X=this.entityDecoder.write(this.preprocessor.html,this.preprocessor.pos);if(X<0)if(this.preprocessor.lastChunkWritten)X=this.entityDecoder.end();else{this.active=!1,this.preprocessor.pos=this.preprocessor.html.length-1,this.consumedAfterSnapshot=0,this.preprocessor.endOfChunkHit=!0;return}if(X===0)this.preprocessor.pos=this.entityStartPos,this._flushCodePointConsumedAsCharacterReference(Y.AMPERSAND),this.state=!this._isCharacterReferenceInAttribute()&&Q6(this.preprocessor.peek(1))?z.AMBIGUOUS_AMPERSAND:this.returnState;else this.state=this.returnState}_stateAmbiguousAmpersand(X){if(Q6(X))this._flushCodePointConsumedAsCharacterReference(X);else{if(X===Y.SEMICOLON)this._err(L.unknownNamedCharacterReference);this.state=this.returnState,this._callState(X)}}}var j6=new Set([Q.DD,Q.DT,Q.LI,Q.OPTGROUP,Q.OPTION,Q.P,Q.RB,Q.RP,Q.RT,Q.RTC]),V6=new Set([...j6,Q.CAPTION,Q.COLGROUP,Q.TBODY,Q.TD,Q.TFOOT,Q.TH,Q.THEAD,Q.TR]),s1=new Set([Q.APPLET,Q.CAPTION,Q.HTML,Q.MARQUEE,Q.OBJECT,Q.TABLE,Q.TD,Q.TEMPLATE,Q.TH]),s9=new Set([...s1,Q.OL,Q.UL]),r9=new Set([...s1,Q.BUTTON]),Y6=new Set([Q.ANNOTATION_XML,Q.MI,Q.MN,Q.MO,Q.MS,Q.MTEXT]),z6=new Set([Q.DESC,Q.FOREIGN_OBJECT,Q.TITLE]),o9=new Set([Q.TR,Q.TEMPLATE,Q.HTML]),n9=new Set([Q.TBODY,Q.TFOOT,Q.THEAD,Q.TEMPLATE,Q.HTML]),t9=new Set([Q.TABLE,Q.TEMPLATE,Q.HTML]),e9=new Set([Q.TD,Q.TH]);class XX{get currentTmplContentOrNode(){return this._isInTemplate()?this.treeAdapter.getTemplateContent(this.current):this.current}constructor(X,Z,W){this.treeAdapter=Z,this.handler=W,this.items=[],this.tagIDs=[],this.stackTop=-1,this.tmplCount=0,this.currentTagId=Q.UNKNOWN,this.current=X}_indexOf(X){return this.items.lastIndexOf(X,this.stackTop)}_isInTemplate(){return this.currentTagId===Q.TEMPLATE&&this.treeAdapter.getNamespaceURI(this.current)===x.HTML}_updateCurrentElement(){this.current=this.items[this.stackTop],this.currentTagId=this.tagIDs[this.stackTop]}push(X,Z){if(this.stackTop++,this.items[this.stackTop]=X,this.current=X,this.tagIDs[this.stackTop]=Z,this.currentTagId=Z,this._isInTemplate())this.tmplCount++;this.handler.onItemPush(X,Z,!0)}pop(){let X=this.current;if(this.tmplCount>0&&this._isInTemplate())this.tmplCount--;this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(X,!0)}replace(X,Z){let W=this._indexOf(X);if(this.items[W]=Z,W===this.stackTop)this.current=Z}insertAfter(X,Z,W){let J=this._indexOf(X)+1;if(this.items.splice(J,0,Z),this.tagIDs.splice(J,0,W),this.stackTop++,J===this.stackTop)this._updateCurrentElement();if(this.current&&this.currentTagId!==void 0)this.handler.onItemPush(this.current,this.currentTagId,J===this.stackTop)}popUntilTagNamePopped(X){let Z=this.stackTop+1;do Z=this.tagIDs.lastIndexOf(X,Z-1);while(Z>0&&this.treeAdapter.getNamespaceURI(this.items[Z])!==x.HTML);this.shortenToLength(Math.max(Z,0))}shortenToLength(X){while(this.stackTop>=X){let Z=this.current;if(this.tmplCount>0&&this._isInTemplate())this.tmplCount-=1;this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(Z,this.stackTop<X)}}popUntilElementPopped(X){let Z=this._indexOf(X);this.shortenToLength(Math.max(Z,0))}popUntilPopped(X,Z){let W=this._indexOfTagNames(X,Z);this.shortenToLength(Math.max(W,0))}popUntilNumberedHeaderPopped(){this.popUntilPopped(Q1,x.HTML)}popUntilTableCellPopped(){this.popUntilPopped(e9,x.HTML)}popAllUpToHtmlElement(){this.tmplCount=0,this.shortenToLength(1)}_indexOfTagNames(X,Z){for(let W=this.stackTop;W>=0;W--)if(X.has(this.tagIDs[W])&&this.treeAdapter.getNamespaceURI(this.items[W])===Z)return W;return-1}clearBackTo(X,Z){let W=this._indexOfTagNames(X,Z);this.shortenToLength(W+1)}clearBackToTableContext(){this.clearBackTo(t9,x.HTML)}clearBackToTableBodyContext(){this.clearBackTo(n9,x.HTML)}clearBackToTableRowContext(){this.clearBackTo(o9,x.HTML)}remove(X){let Z=this._indexOf(X);if(Z>=0)if(Z===this.stackTop)this.pop();else this.items.splice(Z,1),this.tagIDs.splice(Z,1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(X,!1)}tryPeekProperlyNestedBodyElement(){return this.stackTop>=1&&this.tagIDs[1]===Q.BODY?this.items[1]:null}contains(X){return this._indexOf(X)>-1}getCommonAncestor(X){let Z=this._indexOf(X)-1;return Z>=0?this.items[Z]:null}isRootHtmlElementCurrent(){return this.stackTop===0&&this.tagIDs[0]===Q.HTML}hasInDynamicScope(X,Z){for(let W=this.stackTop;W>=0;W--){let J=this.tagIDs[W];switch(this.treeAdapter.getNamespaceURI(this.items[W])){case x.HTML:{if(J===X)return!0;if(Z.has(J))return!1;break}case x.SVG:{if(z6.has(J))return!1;break}case x.MATHML:{if(Y6.has(J))return!1;break}}}return!0}hasInScope(X){return this.hasInDynamicScope(X,s1)}hasInListItemScope(X){return this.hasInDynamicScope(X,s9)}hasInButtonScope(X){return this.hasInDynamicScope(X,r9)}hasNumberedHeaderInScope(){for(let X=this.stackTop;X>=0;X--){let Z=this.tagIDs[X];switch(this.treeAdapter.getNamespaceURI(this.items[X])){case x.HTML:{if(Q1.has(Z))return!0;if(s1.has(Z))return!1;break}case x.SVG:{if(z6.has(Z))return!1;break}case x.MATHML:{if(Y6.has(Z))return!1;break}}}return!0}hasInTableScope(X){for(let Z=this.stackTop;Z>=0;Z--){if(this.treeAdapter.getNamespaceURI(this.items[Z])!==x.HTML)continue;switch(this.tagIDs[Z]){case X:return!0;case Q.TABLE:case Q.HTML:return!1}}return!0}hasTableBodyContextInTableScope(){for(let X=this.stackTop;X>=0;X--){if(this.treeAdapter.getNamespaceURI(this.items[X])!==x.HTML)continue;switch(this.tagIDs[X]){case Q.TBODY:case Q.THEAD:case Q.TFOOT:return!0;case Q.TABLE:case Q.HTML:return!1}}return!0}hasInSelectScope(X){for(let Z=this.stackTop;Z>=0;Z--){if(this.treeAdapter.getNamespaceURI(this.items[Z])!==x.HTML)continue;switch(this.tagIDs[Z]){case X:return!0;case Q.OPTION:case Q.OPTGROUP:break;default:return!1}}return!0}generateImpliedEndTags(){while(this.currentTagId!==void 0&&j6.has(this.currentTagId))this.pop()}generateImpliedEndTagsThoroughly(){while(this.currentTagId!==void 0&&V6.has(this.currentTagId))this.pop()}generateImpliedEndTagsWithExclusion(X){while(this.currentTagId!==void 0&&this.currentTagId!==X&&V6.has(this.currentTagId))this.pop()}}var j0;(function(X){X[X.Marker=0]="Marker",X[X.Element=1]="Element"})(j0||(j0={}));var H6={type:j0.Marker};class ZX{constructor(X){this.treeAdapter=X,this.entries=[],this.bookmark=null}_getNoahArkConditionCandidates(X,Z){let W=[],J=Z.length,K=this.treeAdapter.getTagName(X),V=this.treeAdapter.getNamespaceURI(X);for(let j=0;j<this.entries.length;j++){let U=this.entries[j];if(U.type===j0.Marker)break;let{element:F}=U;if(this.treeAdapter.getTagName(F)===K&&this.treeAdapter.getNamespaceURI(F)===V){let w=this.treeAdapter.getAttrList(F);if(w.length===J)W.push({idx:j,attrs:w})}}return W}_ensureNoahArkCondition(X){if(this.entries.length<3)return;let Z=this.treeAdapter.getAttrList(X),W=this._getNoahArkConditionCandidates(X,Z);if(W.length<3)return;let J=new Map(Z.map((V)=>[V.name,V.value])),K=0;for(let V=0;V<W.length;V++){let j=W[V];if(j.attrs.every((U)=>J.get(U.name)===U.value)){if(K+=1,K>=3)this.entries.splice(j.idx,1)}}}insertMarker(){this.entries.unshift(H6)}pushElement(X,Z){this._ensureNoahArkCondition(X),this.entries.unshift({type:j0.Element,element:X,token:Z})}insertElementAfterBookmark(X,Z){let W=this.entries.indexOf(this.bookmark);this.entries.splice(W,0,{type:j0.Element,element:X,token:Z})}removeEntry(X){let Z=this.entries.indexOf(X);if(Z!==-1)this.entries.splice(Z,1)}clearToLastMarker(){let X=this.entries.indexOf(H6);if(X===-1)this.entries.length=0;else this.entries.splice(0,X+1)}getElementEntryInScopeWithTagName(X){let Z=this.entries.find((W)=>W.type===j0.Marker||this.treeAdapter.getTagName(W.element)===X);return Z&&Z.type===j0.Element?Z:null}getElementEntry(X){return this.entries.find((Z)=>Z.type===j0.Element&&Z.element===X)}}var V0={createDocument(){return{nodeName:"#document",mode:e.NO_QUIRKS,childNodes:[]}},createDocumentFragment(){return{nodeName:"#document-fragment",childNodes:[]}},createElement(X,Z,W){return{nodeName:X,tagName:X,attrs:W,namespaceURI:Z,childNodes:[],parentNode:null}},createCommentNode(X){return{nodeName:"#comment",data:X,parentNode:null}},createTextNode(X){return{nodeName:"#text",value:X,parentNode:null}},appendChild(X,Z){X.childNodes.push(Z),Z.parentNode=X},insertBefore(X,Z,W){let J=X.childNodes.indexOf(W);X.childNodes.splice(J,0,Z),Z.parentNode=X},setTemplateContent(X,Z){X.content=Z},getTemplateContent(X){return X.content},setDocumentType(X,Z,W,J){let K=X.childNodes.find((V)=>V.nodeName==="#documentType");if(K)K.name=Z,K.publicId=W,K.systemId=J;else{let V={nodeName:"#documentType",name:Z,publicId:W,systemId:J,parentNode:null};V0.appendChild(X,V)}},setDocumentMode(X,Z){X.mode=Z},getDocumentMode(X){return X.mode},detachNode(X){if(X.parentNode){let Z=X.parentNode.childNodes.indexOf(X);X.parentNode.childNodes.splice(Z,1),X.parentNode=null}},insertText(X,Z){if(X.childNodes.length>0){let W=X.childNodes[X.childNodes.length-1];if(V0.isTextNode(W)){W.value+=Z;return}}V0.appendChild(X,V0.createTextNode(Z))},insertTextBefore(X,Z,W){let J=X.childNodes[X.childNodes.indexOf(W)-1];if(J&&V0.isTextNode(J))J.value+=Z;else V0.insertBefore(X,V0.createTextNode(Z),W)},adoptAttributes(X,Z){let W=new Set(X.attrs.map((J)=>J.name));for(let J=0;J<Z.length;J++)if(!W.has(Z[J].name))X.attrs.push(Z[J])},getFirstChild(X){return X.childNodes[0]},getChildNodes(X){return X.childNodes},getParentNode(X){return X.parentNode},getAttrList(X){return X.attrs},getTagName(X){return X.tagName},getNamespaceURI(X){return X.namespaceURI},getTextNodeContent(X){return X.value},getCommentNodeContent(X){return X.data},getDocumentTypeNodeName(X){return X.name},getDocumentTypeNodePublicId(X){return X.publicId},getDocumentTypeNodeSystemId(X){return X.systemId},isTextNode(X){return X.nodeName==="#text"},isCommentNode(X){return X.nodeName==="#comment"},isDocumentTypeNode(X){return X.nodeName==="#documentType"},isElementNode(X){return Object.prototype.hasOwnProperty.call(X,"tagName")},setNodeSourceCodeLocation(X,Z){X.sourceCodeLocation=Z},getNodeSourceCodeLocation(X){return X.sourceCodeLocation},updateNodeSourceCodeLocation(X,Z){X.sourceCodeLocation={...X.sourceCodeLocation,...Z}}};var U6="html",XZ="about:legacy-compat",ZZ="http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd",F6=["+//silmaril//dtd html pro v0r11 19970101//","-//as//dtd html 3.0 aswedit + extensions//","-//advasoft ltd//dtd html 3.0 aswedit + extensions//","-//ietf//dtd html 2.0 level 1//","-//ietf//dtd html 2.0 level 2//","-//ietf//dtd html 2.0 strict level 1//","-//ietf//dtd html 2.0 strict level 2//","-//ietf//dtd html 2.0 strict//","-//ietf//dtd html 2.0//","-//ietf//dtd html 2.1e//","-//ietf//dtd html 3.0//","-//ietf//dtd html 3.2 final//","-//ietf//dtd html 3.2//","-//ietf//dtd html 3//","-//ietf//dtd html level 0//","-//ietf//dtd html level 1//","-//ietf//dtd html level 2//","-//ietf//dtd html level 3//","-//ietf//dtd html strict level 0//","-//ietf//dtd html strict level 1//","-//ietf//dtd html strict level 2//","-//ietf//dtd html strict level 3//","-//ietf//dtd html strict//","-//ietf//dtd html//","-//metrius//dtd metrius presentational//","-//microsoft//dtd internet explorer 2.0 html strict//","-//microsoft//dtd internet explorer 2.0 html//","-//microsoft//dtd internet explorer 2.0 tables//","-//microsoft//dtd internet explorer 3.0 html strict//","-//microsoft//dtd internet explorer 3.0 html//","-//microsoft//dtd internet explorer 3.0 tables//","-//netscape comm. corp.//dtd html//","-//netscape comm. corp.//dtd strict html//","-//o'reilly and associates//dtd html 2.0//","-//o'reilly and associates//dtd html extended 1.0//","-//o'reilly and associates//dtd html extended relaxed 1.0//","-//sq//dtd html 2.0 hotmetal + extensions//","-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//","-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//","-//spyglass//dtd html 2.0 extended//","-//sun microsystems corp.//dtd hotjava html//","-//sun microsystems corp.//dtd hotjava strict html//","-//w3c//dtd html 3 1995-03-24//","-//w3c//dtd html 3.2 draft//","-//w3c//dtd html 3.2 final//","-//w3c//dtd html 3.2//","-//w3c//dtd html 3.2s draft//","-//w3c//dtd html 4.0 frameset//","-//w3c//dtd html 4.0 transitional//","-//w3c//dtd html experimental 19960712//","-//w3c//dtd html experimental 970421//","-//w3c//dtd w3 html//","-//w3o//dtd w3 html 3.0//","-//webtechs//dtd mozilla html 2.0//","-//webtechs//dtd mozilla html//"],WZ=[...F6,"-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"],QZ=new Set(["-//w3o//dtd w3 html strict 3.0//en//","-/w3c/dtd html 4.0 transitional/en","html"]),B6=["-//w3c//dtd xhtml 1.0 frameset//","-//w3c//dtd xhtml 1.0 transitional//"],JZ=[...B6,"-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"];function w6(X,Z){return Z.some((W)=>X.startsWith(W))}function q6(X){return X.name===U6&&X.publicId===null&&(X.systemId===null||X.systemId===XZ)}function L6(X){if(X.name!==U6)return e.QUIRKS;let{systemId:Z}=X;if(Z&&Z.toLowerCase()===ZZ)return e.QUIRKS;let{publicId:W}=X;if(W!==null){if(W=W.toLowerCase(),QZ.has(W))return e.QUIRKS;let J=Z===null?WZ:F6;if(w6(W,J))return e.QUIRKS;if(J=Z===null?B6:JZ,w6(W,J))return e.LIMITED_QUIRKS}return e.NO_QUIRKS}var P6={TEXT_HTML:"text/html",APPLICATION_XML:"application/xhtml+xml"},VZ="definitionurl",YZ="definitionURL",zZ=new Map(["attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map((X)=>[X.toLowerCase(),X])),jZ=new Map([["xlink:actuate",{prefix:"xlink",name:"actuate",namespace:x.XLINK}],["xlink:arcrole",{prefix:"xlink",name:"arcrole",namespace:x.XLINK}],["xlink:href",{prefix:"xlink",name:"href",namespace:x.XLINK}],["xlink:role",{prefix:"xlink",name:"role",namespace:x.XLINK}],["xlink:show",{prefix:"xlink",name:"show",namespace:x.XLINK}],["xlink:title",{prefix:"xlink",name:"title",namespace:x.XLINK}],["xlink:type",{prefix:"xlink",name:"type",namespace:x.XLINK}],["xml:lang",{prefix:"xml",name:"lang",namespace:x.XML}],["xml:space",{prefix:"xml",name:"space",namespace:x.XML}],["xmlns",{prefix:"",name:"xmlns",namespace:x.XMLNS}],["xmlns:xlink",{prefix:"xmlns",name:"xlink",namespace:x.XMLNS}]]),HZ=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map((X)=>[X.toLowerCase(),X])),wZ=new Set([Q.B,Q.BIG,Q.BLOCKQUOTE,Q.BODY,Q.BR,Q.CENTER,Q.CODE,Q.DD,Q.DIV,Q.DL,Q.DT,Q.EM,Q.EMBED,Q.H1,Q.H2,Q.H3,Q.H4,Q.H5,Q.H6,Q.HEAD,Q.HR,Q.I,Q.IMG,Q.LI,Q.LISTING,Q.MENU,Q.META,Q.NOBR,Q.OL,Q.P,Q.PRE,Q.RUBY,Q.S,Q.SMALL,Q.SPAN,Q.STRONG,Q.STRIKE,Q.SUB,Q.SUP,Q.TABLE,Q.TT,Q.U,Q.UL,Q.VAR]);function x6(X){let Z=X.tagID;return Z===Q.FONT&&X.attrs.some(({name:J})=>J===b0.COLOR||J===b0.SIZE||J===b0.FACE)||wZ.has(Z)}function WX(X){for(let Z=0;Z<X.attrs.length;Z++)if(X.attrs[Z].name===VZ){X.attrs[Z].name=YZ;break}}function QX(X){for(let Z=0;Z<X.attrs.length;Z++){let W=zZ.get(X.attrs[Z].name);if(W!=null)X.attrs[Z].name=W}}function r1(X){for(let Z=0;Z<X.attrs.length;Z++){let W=jZ.get(X.attrs[Z].name);if(W)X.attrs[Z].prefix=W.prefix,X.attrs[Z].name=W.name,X.attrs[Z].namespace=W.namespace}}function b6(X){let Z=HZ.get(X.tagName);if(Z!=null)X.tagName=Z,X.tagID=G0(X.tagName)}function UZ(X,Z){return Z===x.MATHML&&(X===Q.MI||X===Q.MO||X===Q.MN||X===Q.MS||X===Q.MTEXT)}function FZ(X,Z,W){if(Z===x.MATHML&&X===Q.ANNOTATION_XML){for(let J=0;J<W.length;J++)if(W[J].name===b0.ENCODING){let K=W[J].value.toLowerCase();return K===P6.TEXT_HTML||K===P6.APPLICATION_XML}}return Z===x.SVG&&(X===Q.FOREIGN_OBJECT||X===Q.DESC||X===Q.TITLE)}function v6(X,Z,W,J){return(!J||J===x.HTML)&&FZ(X,Z,W)||(!J||J===x.MATHML)&&UZ(X,Z)}var BZ="hidden",qZ=8,LZ=3,H;(function(X){X[X.INITIAL=0]="INITIAL",X[X.BEFORE_HTML=1]="BEFORE_HTML",X[X.BEFORE_HEAD=2]="BEFORE_HEAD",X[X.IN_HEAD=3]="IN_HEAD",X[X.IN_HEAD_NO_SCRIPT=4]="IN_HEAD_NO_SCRIPT",X[X.AFTER_HEAD=5]="AFTER_HEAD",X[X.IN_BODY=6]="IN_BODY",X[X.TEXT=7]="TEXT",X[X.IN_TABLE=8]="IN_TABLE",X[X.IN_TABLE_TEXT=9]="IN_TABLE_TEXT",X[X.IN_CAPTION=10]="IN_CAPTION",X[X.IN_COLUMN_GROUP=11]="IN_COLUMN_GROUP",X[X.IN_TABLE_BODY=12]="IN_TABLE_BODY",X[X.IN_ROW=13]="IN_ROW",X[X.IN_CELL=14]="IN_CELL",X[X.IN_SELECT=15]="IN_SELECT",X[X.IN_SELECT_IN_TABLE=16]="IN_SELECT_IN_TABLE",X[X.IN_TEMPLATE=17]="IN_TEMPLATE",X[X.AFTER_BODY=18]="AFTER_BODY",X[X.IN_FRAMESET=19]="IN_FRAMESET",X[X.AFTER_FRAMESET=20]="AFTER_FRAMESET",X[X.AFTER_AFTER_BODY=21]="AFTER_AFTER_BODY",X[X.AFTER_AFTER_FRAMESET=22]="AFTER_AFTER_FRAMESET"})(H||(H={}));var PZ={startLine:-1,startCol:-1,startOffset:-1,endLine:-1,endCol:-1,endOffset:-1},C6=new Set([Q.TABLE,Q.TBODY,Q.TFOOT,Q.THEAD,Q.TR]),O6={scriptingEnabled:!0,sourceCodeLocationInfo:!1,treeAdapter:V0,onParseError:null};class e1{constructor(X,Z,W=null,J=null){if(this.fragmentContext=W,this.scriptHandler=J,this.currentToken=null,this.stopped=!1,this.insertionMode=H.INITIAL,this.originalInsertionMode=H.INITIAL,this.headElement=null,this.formElement=null,this.currentNotInHTML=!1,this.tmplInsertionModeStack=[],this.pendingCharacterTokens=[],this.hasNonWhitespacePendingCharacterToken=!1,this.framesetOk=!0,this.skipNextNewLine=!1,this.fosterParentingEnabled=!1,this.options={...O6,...X},this.treeAdapter=this.options.treeAdapter,this.onParseError=this.options.onParseError,this.onParseError)this.options.sourceCodeLocationInfo=!0;this.document=Z!==null&&Z!==void 0?Z:this.treeAdapter.createDocument(),this.tokenizer=new p1(this.options,this),this.activeFormattingElements=new ZX(this.treeAdapter),this.fragmentContextID=W?G0(this.treeAdapter.getTagName(W)):Q.UNKNOWN,this._setContextModes(W!==null&&W!==void 0?W:this.document,this.fragmentContextID),this.openElements=new XX(this.document,this.treeAdapter,this)}static parse(X,Z){let W=new this(Z);return W.tokenizer.write(X,!0),W.document}static getFragmentParser(X,Z){let W={...O6,...Z};X!==null&&X!==void 0||(X=W.treeAdapter.createElement(B.TEMPLATE,x.HTML,[]));let J=W.treeAdapter.createElement("documentmock",x.HTML,[]),K=new this(W,J,X);if(K.fragmentContextID===Q.TEMPLATE)K.tmplInsertionModeStack.unshift(H.IN_TEMPLATE);return K._initTokenizerForFragmentParsing(),K._insertFakeRootElement(),K._resetInsertionMode(),K._findFormInFragmentContext(),K}getFragment(){let X=this.treeAdapter.getFirstChild(this.document),Z=this.treeAdapter.createDocumentFragment();return this._adoptNodes(X,Z),Z}_err(X,Z,W){var J;if(!this.onParseError)return;let K=(J=X.location)!==null&&J!==void 0?J:PZ,V={code:Z,startLine:K.startLine,startCol:K.startCol,startOffset:K.startOffset,endLine:W?K.startLine:K.endLine,endCol:W?K.startCol:K.endCol,endOffset:W?K.startOffset:K.endOffset};this.onParseError(V)}onItemPush(X,Z,W){var J,K;if((K=(J=this.treeAdapter).onItemPush)===null||K===void 0||K.call(J,X),W&&this.openElements.stackTop>0)this._setContextModes(X,Z)}onItemPop(X,Z){var W,J;if(this.options.sourceCodeLocationInfo)this._setEndLocation(X,this.currentToken);if((J=(W=this.treeAdapter).onItemPop)===null||J===void 0||J.call(W,X,this.openElements.current),Z){let K,V;if(this.openElements.stackTop===0&&this.fragmentContext)K=this.fragmentContext,V=this.fragmentContextID;else({current:K,currentTagId:V}=this.openElements);this._setContextModes(K,V)}}_setContextModes(X,Z){let W=X===this.document||X&&this.treeAdapter.getNamespaceURI(X)===x.HTML;this.currentNotInHTML=!W,this.tokenizer.inForeignNode=!W&&X!==void 0&&Z!==void 0&&!this._isIntegrationPoint(Z,X)}_switchToTextParsing(X,Z){this._insertElement(X,x.HTML),this.tokenizer.state=Z,this.originalInsertionMode=this.insertionMode,this.insertionMode=H.TEXT}switchToPlaintextParsing(){this.insertionMode=H.TEXT,this.originalInsertionMode=H.IN_BODY,this.tokenizer.state=o.PLAINTEXT}_getAdjustedCurrentElement(){return this.openElements.stackTop===0&&this.fragmentContext?this.fragmentContext:this.openElements.current}_findFormInFragmentContext(){let X=this.fragmentContext;while(X){if(this.treeAdapter.getTagName(X)===B.FORM){this.formElement=X;break}X=this.treeAdapter.getParentNode(X)}}_initTokenizerForFragmentParsing(){if(!this.fragmentContext||this.treeAdapter.getNamespaceURI(this.fragmentContext)!==x.HTML)return;switch(this.fragmentContextID){case Q.TITLE:case Q.TEXTAREA:{this.tokenizer.state=o.RCDATA;break}case Q.STYLE:case Q.XMP:case Q.IFRAME:case Q.NOEMBED:case Q.NOFRAMES:case Q.NOSCRIPT:{this.tokenizer.state=o.RAWTEXT;break}case Q.SCRIPT:{this.tokenizer.state=o.SCRIPT_DATA;break}case Q.PLAINTEXT:{this.tokenizer.state=o.PLAINTEXT;break}default:}}_setDocumentType(X){let Z=X.name||"",W=X.publicId||"",J=X.systemId||"";if(this.treeAdapter.setDocumentType(this.document,Z,W,J),X.location){let V=this.treeAdapter.getChildNodes(this.document).find((j)=>this.treeAdapter.isDocumentTypeNode(j));if(V)this.treeAdapter.setNodeSourceCodeLocation(V,X.location)}}_attachElementToTree(X,Z){if(this.options.sourceCodeLocationInfo){let W=Z&&{...Z,startTag:Z};this.treeAdapter.setNodeSourceCodeLocation(X,W)}if(this._shouldFosterParentOnInsertion())this._fosterParentElement(X);else{let W=this.openElements.currentTmplContentOrNode;this.treeAdapter.appendChild(W!==null&&W!==void 0?W:this.document,X)}}_appendElement(X,Z){let W=this.treeAdapter.createElement(X.tagName,Z,X.attrs);this._attachElementToTree(W,X.location)}_insertElement(X,Z){let W=this.treeAdapter.createElement(X.tagName,Z,X.attrs);this._attachElementToTree(W,X.location),this.openElements.push(W,X.tagID)}_insertFakeElement(X,Z){let W=this.treeAdapter.createElement(X,x.HTML,[]);this._attachElementToTree(W,null),this.openElements.push(W,Z)}_insertTemplate(X){let Z=this.treeAdapter.createElement(X.tagName,x.HTML,X.attrs),W=this.treeAdapter.createDocumentFragment();if(this.treeAdapter.setTemplateContent(Z,W),this._attachElementToTree(Z,X.location),this.openElements.push(Z,X.tagID),this.options.sourceCodeLocationInfo)this.treeAdapter.setNodeSourceCodeLocation(W,null)}_insertFakeRootElement(){let X=this.treeAdapter.createElement(B.HTML,x.HTML,[]);if(this.options.sourceCodeLocationInfo)this.treeAdapter.setNodeSourceCodeLocation(X,null);this.treeAdapter.appendChild(this.openElements.current,X),this.openElements.push(X,Q.HTML)}_appendCommentNode(X,Z){let W=this.treeAdapter.createCommentNode(X.data);if(this.treeAdapter.appendChild(Z,W),this.options.sourceCodeLocationInfo)this.treeAdapter.setNodeSourceCodeLocation(W,X.location)}_insertCharacters(X){let Z,W;if(this._shouldFosterParentOnInsertion())if({parent:Z,beforeElement:W}=this._findFosterParentingLocation(),W)this.treeAdapter.insertTextBefore(Z,X.chars,W);else this.treeAdapter.insertText(Z,X.chars);else Z=this.openElements.currentTmplContentOrNode,this.treeAdapter.insertText(Z,X.chars);if(!X.location)return;let J=this.treeAdapter.getChildNodes(Z),K=W?J.lastIndexOf(W):J.length,V=J[K-1];if(this.treeAdapter.getNodeSourceCodeLocation(V)){let{endLine:U,endCol:F,endOffset:w}=X.location;this.treeAdapter.updateNodeSourceCodeLocation(V,{endLine:U,endCol:F,endOffset:w})}else if(this.options.sourceCodeLocationInfo)this.treeAdapter.setNodeSourceCodeLocation(V,X.location)}_adoptNodes(X,Z){for(let W=this.treeAdapter.getFirstChild(X);W;W=this.treeAdapter.getFirstChild(X))this.treeAdapter.detachNode(W),this.treeAdapter.appendChild(Z,W)}_setEndLocation(X,Z){if(this.treeAdapter.getNodeSourceCodeLocation(X)&&Z.location){let W=Z.location,J=this.treeAdapter.getTagName(X),K=Z.type===_.END_TAG&&J===Z.tagName?{endTag:{...W},endLine:W.endLine,endCol:W.endCol,endOffset:W.endOffset}:{endLine:W.startLine,endCol:W.startCol,endOffset:W.startOffset};this.treeAdapter.updateNodeSourceCodeLocation(X,K)}}shouldProcessStartTagTokenInForeignContent(X){if(!this.currentNotInHTML)return!1;let Z,W;if(this.openElements.stackTop===0&&this.fragmentContext)Z=this.fragmentContext,W=this.fragmentContextID;else({current:Z,currentTagId:W}=this.openElements);if(X.tagID===Q.SVG&&this.treeAdapter.getTagName(Z)===B.ANNOTATION_XML&&this.treeAdapter.getNamespaceURI(Z)===x.MATHML)return!1;return this.tokenizer.inForeignNode||(X.tagID===Q.MGLYPH||X.tagID===Q.MALIGNMARK)&&W!==void 0&&!this._isIntegrationPoint(W,Z,x.HTML)}_processToken(X){switch(X.type){case _.CHARACTER:{this.onCharacter(X);break}case _.NULL_CHARACTER:{this.onNullCharacter(X);break}case _.COMMENT:{this.onComment(X);break}case _.DOCTYPE:{this.onDoctype(X);break}case _.START_TAG:{this._processStartTag(X);break}case _.END_TAG:{this.onEndTag(X);break}case _.EOF:{this.onEof(X);break}case _.WHITESPACE_CHARACTER:{this.onWhitespaceCharacter(X);break}}}_isIntegrationPoint(X,Z,W){let J=this.treeAdapter.getNamespaceURI(Z),K=this.treeAdapter.getAttrList(Z);return v6(X,J,K,W)}_reconstructActiveFormattingElements(){let X=this.activeFormattingElements.entries.length;if(X){let Z=this.activeFormattingElements.entries.findIndex((J)=>J.type===j0.Marker||this.openElements.contains(J.element)),W=Z===-1?X-1:Z-1;for(let J=W;J>=0;J--){let K=this.activeFormattingElements.entries[J];this._insertElement(K.token,this.treeAdapter.getNamespaceURI(K.element)),K.element=this.openElements.current}}}_closeTableCell(){this.openElements.generateImpliedEndTags(),this.openElements.popUntilTableCellPopped(),this.activeFormattingElements.clearToLastMarker(),this.insertionMode=H.IN_ROW}_closePElement(){this.openElements.generateImpliedEndTagsWithExclusion(Q.P),this.openElements.popUntilTagNamePopped(Q.P)}_resetInsertionMode(){for(let X=this.openElements.stackTop;X>=0;X--)switch(X===0&&this.fragmentContext?this.fragmentContextID:this.openElements.tagIDs[X]){case Q.TR:{this.insertionMode=H.IN_ROW;return}case Q.TBODY:case Q.THEAD:case Q.TFOOT:{this.insertionMode=H.IN_TABLE_BODY;return}case Q.CAPTION:{this.insertionMode=H.IN_CAPTION;return}case Q.COLGROUP:{this.insertionMode=H.IN_COLUMN_GROUP;return}case Q.TABLE:{this.insertionMode=H.IN_TABLE;return}case Q.BODY:{this.insertionMode=H.IN_BODY;return}case Q.FRAMESET:{this.insertionMode=H.IN_FRAMESET;return}case Q.SELECT:{this._resetInsertionModeForSelect(X);return}case Q.TEMPLATE:{this.insertionMode=this.tmplInsertionModeStack[0];return}case Q.HTML:{this.insertionMode=this.headElement?H.AFTER_HEAD:H.BEFORE_HEAD;return}case Q.TD:case Q.TH:{if(X>0){this.insertionMode=H.IN_CELL;return}break}case Q.HEAD:{if(X>0){this.insertionMode=H.IN_HEAD;return}break}}this.insertionMode=H.IN_BODY}_resetInsertionModeForSelect(X){if(X>0)for(let Z=X-1;Z>0;Z--){let W=this.openElements.tagIDs[Z];if(W===Q.TEMPLATE)break;else if(W===Q.TABLE){this.insertionMode=H.IN_SELECT_IN_TABLE;return}}this.insertionMode=H.IN_SELECT}_isElementCausesFosterParenting(X){return C6.has(X)}_shouldFosterParentOnInsertion(){return this.fosterParentingEnabled&&this.openElements.currentTagId!==void 0&&this._isElementCausesFosterParenting(this.openElements.currentTagId)}_findFosterParentingLocation(){for(let X=this.openElements.stackTop;X>=0;X--){let Z=this.openElements.items[X];switch(this.openElements.tagIDs[X]){case Q.TEMPLATE:{if(this.treeAdapter.getNamespaceURI(Z)===x.HTML)return{parent:this.treeAdapter.getTemplateContent(Z),beforeElement:null};break}case Q.TABLE:{let W=this.treeAdapter.getParentNode(Z);if(W)return{parent:W,beforeElement:Z};return{parent:this.openElements.items[X-1],beforeElement:null}}default:}}return{parent:this.openElements.items[0],beforeElement:null}}_fosterParentElement(X){let Z=this._findFosterParentingLocation();if(Z.beforeElement)this.treeAdapter.insertBefore(Z.parent,X,Z.beforeElement);else this.treeAdapter.appendChild(Z.parent,X)}_isSpecialElement(X,Z){let W=this.treeAdapter.getNamespaceURI(X);return Z6[W].has(Z)}onCharacter(X){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){p5(this,X);return}switch(this.insertionMode){case H.INITIAL:{K1(this,X);break}case H.BEFORE_HTML:{Y1(this,X);break}case H.BEFORE_HEAD:{z1(this,X);break}case H.IN_HEAD:{j1(this,X);break}case H.IN_HEAD_NO_SCRIPT:{H1(this,X);break}case H.AFTER_HEAD:{w1(this,X);break}case H.IN_BODY:case H.IN_CAPTION:case H.IN_CELL:case H.IN_TEMPLATE:{M6(this,X);break}case H.TEXT:case H.IN_SELECT:case H.IN_SELECT_IN_TABLE:{this._insertCharacters(X);break}case H.IN_TABLE:case H.IN_TABLE_BODY:case H.IN_ROW:{JX(this,X);break}case H.IN_TABLE_TEXT:{m6(this,X);break}case H.IN_COLUMN_GROUP:{n1(this,X);break}case H.AFTER_BODY:{t1(this,X);break}case H.AFTER_AFTER_BODY:{o1(this,X);break}default:}}onNullCharacter(X){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){i5(this,X);return}switch(this.insertionMode){case H.INITIAL:{K1(this,X);break}case H.BEFORE_HTML:{Y1(this,X);break}case H.BEFORE_HEAD:{z1(this,X);break}case H.IN_HEAD:{j1(this,X);break}case H.IN_HEAD_NO_SCRIPT:{H1(this,X);break}case H.AFTER_HEAD:{w1(this,X);break}case H.TEXT:{this._insertCharacters(X);break}case H.IN_TABLE:case H.IN_TABLE_BODY:case H.IN_ROW:{JX(this,X);break}case H.IN_COLUMN_GROUP:{n1(this,X);break}case H.AFTER_BODY:{t1(this,X);break}case H.AFTER_AFTER_BODY:{o1(this,X);break}default:}}onComment(X){if(this.skipNextNewLine=!1,this.currentNotInHTML){KX(this,X);return}switch(this.insertionMode){case H.INITIAL:case H.BEFORE_HTML:case H.BEFORE_HEAD:case H.IN_HEAD:case H.IN_HEAD_NO_SCRIPT:case H.AFTER_HEAD:case H.IN_BODY:case H.IN_TABLE:case H.IN_CAPTION:case H.IN_COLUMN_GROUP:case H.IN_TABLE_BODY:case H.IN_ROW:case H.IN_CELL:case H.IN_SELECT:case H.IN_SELECT_IN_TABLE:case H.IN_TEMPLATE:case H.IN_FRAMESET:case H.AFTER_FRAMESET:{KX(this,X);break}case H.IN_TABLE_TEXT:{V1(this,X);break}case H.AFTER_BODY:{fZ(this,X);break}case H.AFTER_AFTER_BODY:case H.AFTER_AFTER_FRAMESET:{CZ(this,X);break}default:}}onDoctype(X){switch(this.skipNextNewLine=!1,this.insertionMode){case H.INITIAL:{hZ(this,X);break}case H.BEFORE_HEAD:case H.IN_HEAD:case H.IN_HEAD_NO_SCRIPT:case H.AFTER_HEAD:{this._err(X,L.misplacedDoctype);break}case H.IN_TABLE_TEXT:{V1(this,X);break}default:}}onStartTag(X){if(this.skipNextNewLine=!1,this.currentToken=X,this._processStartTag(X),X.selfClosing&&!X.ackSelfClosing)this._err(X,L.nonVoidHtmlElementStartTagWithTrailingSolidus)}_processStartTag(X){if(this.shouldProcessStartTagTokenInForeignContent(X))s5(this,X);else this._startTagOutsideForeignContent(X)}_startTagOutsideForeignContent(X){switch(this.insertionMode){case H.INITIAL:{K1(this,X);break}case H.BEFORE_HTML:{MZ(this,X);break}case H.BEFORE_HEAD:{gZ(this,X);break}case H.IN_HEAD:{H0(this,X);break}case H.IN_HEAD_NO_SCRIPT:{GZ(this,X);break}case H.AFTER_HEAD:{EZ(this,X);break}case H.IN_BODY:{n(this,X);break}case H.IN_TABLE:{c0(this,X);break}case H.IN_TABLE_TEXT:{V1(this,X);break}case H.IN_CAPTION:{D5(this,X);break}case H.IN_COLUMN_GROUP:{jX(this,X);break}case H.IN_TABLE_BODY:{W2(this,X);break}case H.IN_ROW:{Q2(this,X);break}case H.IN_CELL:{m5(this,X);break}case H.IN_SELECT:{_6(this,X);break}case H.IN_SELECT_IN_TABLE:{k5(this,X);break}case H.IN_TEMPLATE:{I5(this,X);break}case H.AFTER_BODY:{l5(this,X);break}case H.IN_FRAMESET:{u5(this,X);break}case H.AFTER_FRAMESET:{T5(this,X);break}case H.AFTER_AFTER_BODY:{a5(this,X);break}case H.AFTER_AFTER_FRAMESET:{d5(this,X);break}default:}}onEndTag(X){if(this.skipNextNewLine=!1,this.currentToken=X,this.currentNotInHTML)r5(this,X);else this._endTagOutsideForeignContent(X)}_endTagOutsideForeignContent(X){switch(this.insertionMode){case H.INITIAL:{K1(this,X);break}case H.BEFORE_HTML:{NZ(this,X);break}case H.BEFORE_HEAD:{DZ(this,X);break}case H.IN_HEAD:{$Z(this,X);break}case H.IN_HEAD_NO_SCRIPT:{mZ(this,X);break}case H.AFTER_HEAD:{kZ(this,X);break}case H.IN_BODY:{Z2(this,X);break}case H.TEXT:{v5(this,X);break}case H.IN_TABLE:{U1(this,X);break}case H.IN_TABLE_TEXT:{V1(this,X);break}case H.IN_CAPTION:{$5(this,X);break}case H.IN_COLUMN_GROUP:{G5(this,X);break}case H.IN_TABLE_BODY:{VX(this,X);break}case H.IN_ROW:{k6(this,X);break}case H.IN_CELL:{E5(this,X);break}case H.IN_SELECT:{I6(this,X);break}case H.IN_SELECT_IN_TABLE:{_5(this,X);break}case H.IN_TEMPLATE:{S5(this,X);break}case H.AFTER_BODY:{l6(this,X);break}case H.IN_FRAMESET:{A5(this,X);break}case H.AFTER_FRAMESET:{c5(this,X);break}case H.AFTER_AFTER_BODY:{o1(this,X);break}default:}}onEof(X){switch(this.insertionMode){case H.INITIAL:{K1(this,X);break}case H.BEFORE_HTML:{Y1(this,X);break}case H.BEFORE_HEAD:{z1(this,X);break}case H.IN_HEAD:{j1(this,X);break}case H.IN_HEAD_NO_SCRIPT:{H1(this,X);break}case H.AFTER_HEAD:{w1(this,X);break}case H.IN_BODY:case H.IN_TABLE:case H.IN_CAPTION:case H.IN_COLUMN_GROUP:case H.IN_TABLE_BODY:case H.IN_ROW:case H.IN_CELL:case H.IN_SELECT:case H.IN_SELECT_IN_TABLE:{$6(this,X);break}case H.TEXT:{y5(this,X);break}case H.IN_TABLE_TEXT:{V1(this,X);break}case H.IN_TEMPLATE:{S6(this,X);break}case H.AFTER_BODY:case H.IN_FRAMESET:case H.AFTER_FRAMESET:case H.AFTER_AFTER_BODY:case H.AFTER_AFTER_FRAMESET:{zX(this,X);break}default:}}onWhitespaceCharacter(X){if(this.skipNextNewLine){if(this.skipNextNewLine=!1,X.chars.charCodeAt(0)===Y.LINE_FEED){if(X.chars.length===1)return;X.chars=X.chars.substr(1)}}if(this.tokenizer.inForeignNode){this._insertCharacters(X);return}switch(this.insertionMode){case H.IN_HEAD:case H.IN_HEAD_NO_SCRIPT:case H.AFTER_HEAD:case H.TEXT:case H.IN_COLUMN_GROUP:case H.IN_SELECT:case H.IN_SELECT_IN_TABLE:case H.IN_FRAMESET:case H.AFTER_FRAMESET:{this._insertCharacters(X);break}case H.IN_BODY:case H.IN_CAPTION:case H.IN_CELL:case H.IN_TEMPLATE:case H.AFTER_BODY:case H.AFTER_AFTER_BODY:case H.AFTER_AFTER_FRAMESET:{h6(this,X);break}case H.IN_TABLE:case H.IN_TABLE_BODY:case H.IN_ROW:{JX(this,X);break}case H.IN_TABLE_TEXT:{G6(this,X);break}default:}}}function xZ(X,Z){let W=X.activeFormattingElements.getElementEntryInScopeWithTagName(Z.tagName);if(W){if(!X.openElements.contains(W.element))X.activeFormattingElements.removeEntry(W),W=null;else if(!X.openElements.hasInScope(Z.tagID))W=null}else D6(X,Z);return W}function bZ(X,Z){let W=null,J=X.openElements.stackTop;for(;J>=0;J--){let K=X.openElements.items[J];if(K===Z.element)break;if(X._isSpecialElement(K,X.openElements.tagIDs[J]))W=K}if(!W)X.openElements.shortenToLength(Math.max(J,0)),X.activeFormattingElements.removeEntry(Z);return W}function vZ(X,Z,W){let J=Z,K=X.openElements.getCommonAncestor(Z);for(let V=0,j=K;j!==W;V++,j=K){K=X.openElements.getCommonAncestor(j);let U=X.activeFormattingElements.getElementEntry(j),F=U&&V>=LZ;if(!U||F){if(F)X.activeFormattingElements.removeEntry(U);X.openElements.remove(j)}else{if(j=yZ(X,U),J===Z)X.activeFormattingElements.bookmark=U;X.treeAdapter.detachNode(J),X.treeAdapter.appendChild(j,J),J=j}}return J}function yZ(X,Z){let W=X.treeAdapter.getNamespaceURI(Z.element),J=X.treeAdapter.createElement(Z.token.tagName,W,Z.token.attrs);return X.openElements.replace(Z.element,J),Z.element=J,J}function OZ(X,Z,W){let J=X.treeAdapter.getTagName(Z),K=G0(J);if(X._isElementCausesFosterParenting(K))X._fosterParentElement(W);else{let V=X.treeAdapter.getNamespaceURI(Z);if(K===Q.TEMPLATE&&V===x.HTML)Z=X.treeAdapter.getTemplateContent(Z);X.treeAdapter.appendChild(Z,W)}}function RZ(X,Z,W){let J=X.treeAdapter.getNamespaceURI(W.element),{token:K}=W,V=X.treeAdapter.createElement(K.tagName,J,K.attrs);X._adoptNodes(Z,V),X.treeAdapter.appendChild(Z,V),X.activeFormattingElements.insertElementAfterBookmark(V,K),X.activeFormattingElements.removeEntry(W),X.openElements.remove(W.element),X.openElements.insertAfter(Z,V,K.tagID)}function YX(X,Z){for(let W=0;W<qZ;W++){let J=xZ(X,Z);if(!J)break;let K=bZ(X,J);if(!K)break;X.activeFormattingElements.bookmark=J;let V=vZ(X,K,J.element),j=X.openElements.getCommonAncestor(J.element);if(X.treeAdapter.detachNode(V),j)OZ(X,j,V);RZ(X,K,J)}}function KX(X,Z){X._appendCommentNode(Z,X.openElements.currentTmplContentOrNode)}function fZ(X,Z){X._appendCommentNode(Z,X.openElements.items[0])}function CZ(X,Z){X._appendCommentNode(Z,X.document)}function zX(X,Z){if(X.stopped=!0,Z.location){let W=X.fragmentContext?0:2;for(let J=X.openElements.stackTop;J>=W;J--)X._setEndLocation(X.openElements.items[J],Z);if(!X.fragmentContext&&X.openElements.stackTop>=0){let J=X.openElements.items[0],K=X.treeAdapter.getNodeSourceCodeLocation(J);if(K&&!K.endTag){if(X._setEndLocation(J,Z),X.openElements.stackTop>=1){let V=X.openElements.items[1],j=X.treeAdapter.getNodeSourceCodeLocation(V);if(j&&!j.endTag)X._setEndLocation(V,Z)}}}}}function hZ(X,Z){X._setDocumentType(Z);let W=Z.forceQuirks?e.QUIRKS:L6(Z);if(!q6(Z))X._err(Z,L.nonConformingDoctype);X.treeAdapter.setDocumentMode(X.document,W),X.insertionMode=H.BEFORE_HTML}function K1(X,Z){X._err(Z,L.missingDoctype,!0),X.treeAdapter.setDocumentMode(X.document,e.QUIRKS),X.insertionMode=H.BEFORE_HTML,X._processToken(Z)}function MZ(X,Z){if(Z.tagID===Q.HTML)X._insertElement(Z,x.HTML),X.insertionMode=H.BEFORE_HEAD;else Y1(X,Z)}function NZ(X,Z){let W=Z.tagID;if(W===Q.HTML||W===Q.HEAD||W===Q.BODY||W===Q.BR)Y1(X,Z)}function Y1(X,Z){X._insertFakeRootElement(),X.insertionMode=H.BEFORE_HEAD,X._processToken(Z)}function gZ(X,Z){switch(Z.tagID){case Q.HTML:{n(X,Z);break}case Q.HEAD:{X._insertElement(Z,x.HTML),X.headElement=X.openElements.current,X.insertionMode=H.IN_HEAD;break}default:z1(X,Z)}}function DZ(X,Z){let W=Z.tagID;if(W===Q.HEAD||W===Q.BODY||W===Q.HTML||W===Q.BR)z1(X,Z);else X._err(Z,L.endTagWithoutMatchingOpenElement)}function z1(X,Z){X._insertFakeElement(B.HEAD,Q.HEAD),X.headElement=X.openElements.current,X.insertionMode=H.IN_HEAD,X._processToken(Z)}function H0(X,Z){switch(Z.tagID){case Q.HTML:{n(X,Z);break}case Q.BASE:case Q.BASEFONT:case Q.BGSOUND:case Q.LINK:case Q.META:{X._appendElement(Z,x.HTML),Z.ackSelfClosing=!0;break}case Q.TITLE:{X._switchToTextParsing(Z,o.RCDATA);break}case Q.NOSCRIPT:{if(X.options.scriptingEnabled)X._switchToTextParsing(Z,o.RAWTEXT);else X._insertElement(Z,x.HTML),X.insertionMode=H.IN_HEAD_NO_SCRIPT;break}case Q.NOFRAMES:case Q.STYLE:{X._switchToTextParsing(Z,o.RAWTEXT);break}case Q.SCRIPT:{X._switchToTextParsing(Z,o.SCRIPT_DATA);break}case Q.TEMPLATE:{X._insertTemplate(Z),X.activeFormattingElements.insertMarker(),X.framesetOk=!1,X.insertionMode=H.IN_TEMPLATE,X.tmplInsertionModeStack.unshift(H.IN_TEMPLATE);break}case Q.HEAD:{X._err(Z,L.misplacedStartTagForHeadElement);break}default:j1(X,Z)}}function $Z(X,Z){switch(Z.tagID){case Q.HEAD:{X.openElements.pop(),X.insertionMode=H.AFTER_HEAD;break}case Q.BODY:case Q.BR:case Q.HTML:{j1(X,Z);break}case Q.TEMPLATE:{m0(X,Z);break}default:X._err(Z,L.endTagWithoutMatchingOpenElement)}}function m0(X,Z){if(X.openElements.tmplCount>0){if(X.openElements.generateImpliedEndTagsThoroughly(),X.openElements.currentTagId!==Q.TEMPLATE)X._err(Z,L.closingOfElementWithOpenChildElements);X.openElements.popUntilTagNamePopped(Q.TEMPLATE),X.activeFormattingElements.clearToLastMarker(),X.tmplInsertionModeStack.shift(),X._resetInsertionMode()}else X._err(Z,L.endTagWithoutMatchingOpenElement)}function j1(X,Z){X.openElements.pop(),X.insertionMode=H.AFTER_HEAD,X._processToken(Z)}function GZ(X,Z){switch(Z.tagID){case Q.HTML:{n(X,Z);break}case Q.BASEFONT:case Q.BGSOUND:case Q.HEAD:case Q.LINK:case Q.META:case Q.NOFRAMES:case Q.STYLE:{H0(X,Z);break}case Q.NOSCRIPT:{X._err(Z,L.nestedNoscriptInHead);break}default:H1(X,Z)}}function mZ(X,Z){switch(Z.tagID){case Q.NOSCRIPT:{X.openElements.pop(),X.insertionMode=H.IN_HEAD;break}case Q.BR:{H1(X,Z);break}default:X._err(Z,L.endTagWithoutMatchingOpenElement)}}function H1(X,Z){let W=Z.type===_.EOF?L.openElementsLeftAfterEof:L.disallowedContentInNoscriptInHead;X._err(Z,W),X.openElements.pop(),X.insertionMode=H.IN_HEAD,X._processToken(Z)}function EZ(X,Z){switch(Z.tagID){case Q.HTML:{n(X,Z);break}case Q.BODY:{X._insertElement(Z,x.HTML),X.framesetOk=!1,X.insertionMode=H.IN_BODY;break}case Q.FRAMESET:{X._insertElement(Z,x.HTML),X.insertionMode=H.IN_FRAMESET;break}case Q.BASE:case Q.BASEFONT:case Q.BGSOUND:case Q.LINK:case Q.META:case Q.NOFRAMES:case Q.SCRIPT:case Q.STYLE:case Q.TEMPLATE:case Q.TITLE:{X._err(Z,L.abandonedHeadElementChild),X.openElements.push(X.headElement,Q.HEAD),H0(X,Z),X.openElements.remove(X.headElement);break}case Q.HEAD:{X._err(Z,L.misplacedStartTagForHeadElement);break}default:w1(X,Z)}}function kZ(X,Z){switch(Z.tagID){case Q.BODY:case Q.HTML:case Q.BR:{w1(X,Z);break}case Q.TEMPLATE:{m0(X,Z);break}default:X._err(Z,L.endTagWithoutMatchingOpenElement)}}function w1(X,Z){X._insertFakeElement(B.BODY,Q.BODY),X.insertionMode=H.IN_BODY,X2(X,Z)}function X2(X,Z){switch(Z.type){case _.CHARACTER:{M6(X,Z);break}case _.WHITESPACE_CHARACTER:{h6(X,Z);break}case _.COMMENT:{KX(X,Z);break}case _.START_TAG:{n(X,Z);break}case _.END_TAG:{Z2(X,Z);break}case _.EOF:{$6(X,Z);break}default:}}function h6(X,Z){X._reconstructActiveFormattingElements(),X._insertCharacters(Z)}function M6(X,Z){X._reconstructActiveFormattingElements(),X._insertCharacters(Z),X.framesetOk=!1}function _Z(X,Z){if(X.openElements.tmplCount===0)X.treeAdapter.adoptAttributes(X.openElements.items[0],Z.attrs)}function IZ(X,Z){let W=X.openElements.tryPeekProperlyNestedBodyElement();if(W&&X.openElements.tmplCount===0)X.framesetOk=!1,X.treeAdapter.adoptAttributes(W,Z.attrs)}function SZ(X,Z){let W=X.openElements.tryPeekProperlyNestedBodyElement();if(X.framesetOk&&W)X.treeAdapter.detachNode(W),X.openElements.popAllUpToHtmlElement(),X._insertElement(Z,x.HTML),X.insertionMode=H.IN_FRAMESET}function lZ(X,Z){if(X.openElements.hasInButtonScope(Q.P))X._closePElement();X._insertElement(Z,x.HTML)}function uZ(X,Z){if(X.openElements.hasInButtonScope(Q.P))X._closePElement();if(X.openElements.currentTagId!==void 0&&Q1.has(X.openElements.currentTagId))X.openElements.pop();X._insertElement(Z,x.HTML)}function AZ(X,Z){if(X.openElements.hasInButtonScope(Q.P))X._closePElement();X._insertElement(Z,x.HTML),X.skipNextNewLine=!0,X.framesetOk=!1}function TZ(X,Z){let W=X.openElements.tmplCount>0;if(!X.formElement||W){if(X.openElements.hasInButtonScope(Q.P))X._closePElement();if(X._insertElement(Z,x.HTML),!W)X.formElement=X.openElements.current}}function cZ(X,Z){X.framesetOk=!1;let W=Z.tagID;for(let J=X.openElements.stackTop;J>=0;J--){let K=X.openElements.tagIDs[J];if(W===Q.LI&&K===Q.LI||(W===Q.DD||W===Q.DT)&&(K===Q.DD||K===Q.DT)){X.openElements.generateImpliedEndTagsWithExclusion(K),X.openElements.popUntilTagNamePopped(K);break}if(K!==Q.ADDRESS&&K!==Q.DIV&&K!==Q.P&&X._isSpecialElement(X.openElements.items[J],K))break}if(X.openElements.hasInButtonScope(Q.P))X._closePElement();X._insertElement(Z,x.HTML)}function aZ(X,Z){if(X.openElements.hasInButtonScope(Q.P))X._closePElement();X._insertElement(Z,x.HTML),X.tokenizer.state=o.PLAINTEXT}function dZ(X,Z){if(X.openElements.hasInScope(Q.BUTTON))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(Q.BUTTON);X._reconstructActiveFormattingElements(),X._insertElement(Z,x.HTML),X.framesetOk=!1}function iZ(X,Z){let W=X.activeFormattingElements.getElementEntryInScopeWithTagName(B.A);if(W)YX(X,Z),X.openElements.remove(W.element),X.activeFormattingElements.removeEntry(W);X._reconstructActiveFormattingElements(),X._insertElement(Z,x.HTML),X.activeFormattingElements.pushElement(X.openElements.current,Z)}function pZ(X,Z){X._reconstructActiveFormattingElements(),X._insertElement(Z,x.HTML),X.activeFormattingElements.pushElement(X.openElements.current,Z)}function sZ(X,Z){if(X._reconstructActiveFormattingElements(),X.openElements.hasInScope(Q.NOBR))YX(X,Z),X._reconstructActiveFormattingElements();X._insertElement(Z,x.HTML),X.activeFormattingElements.pushElement(X.openElements.current,Z)}function rZ(X,Z){X._reconstructActiveFormattingElements(),X._insertElement(Z,x.HTML),X.activeFormattingElements.insertMarker(),X.framesetOk=!1}function oZ(X,Z){if(X.treeAdapter.getDocumentMode(X.document)!==e.QUIRKS&&X.openElements.hasInButtonScope(Q.P))X._closePElement();X._insertElement(Z,x.HTML),X.framesetOk=!1,X.insertionMode=H.IN_TABLE}function N6(X,Z){X._reconstructActiveFormattingElements(),X._appendElement(Z,x.HTML),X.framesetOk=!1,Z.ackSelfClosing=!0}function g6(X){let Z=d1(X,b0.TYPE);return Z!=null&&Z.toLowerCase()===BZ}function nZ(X,Z){if(X._reconstructActiveFormattingElements(),X._appendElement(Z,x.HTML),!g6(Z))X.framesetOk=!1;Z.ackSelfClosing=!0}function tZ(X,Z){X._appendElement(Z,x.HTML),Z.ackSelfClosing=!0}function eZ(X,Z){if(X.openElements.hasInButtonScope(Q.P))X._closePElement();X._appendElement(Z,x.HTML),X.framesetOk=!1,Z.ackSelfClosing=!0}function X5(X,Z){Z.tagName=B.IMG,Z.tagID=Q.IMG,N6(X,Z)}function Z5(X,Z){X._insertElement(Z,x.HTML),X.skipNextNewLine=!0,X.tokenizer.state=o.RCDATA,X.originalInsertionMode=X.insertionMode,X.framesetOk=!1,X.insertionMode=H.TEXT}function W5(X,Z){if(X.openElements.hasInButtonScope(Q.P))X._closePElement();X._reconstructActiveFormattingElements(),X.framesetOk=!1,X._switchToTextParsing(Z,o.RAWTEXT)}function Q5(X,Z){X.framesetOk=!1,X._switchToTextParsing(Z,o.RAWTEXT)}function R6(X,Z){X._switchToTextParsing(Z,o.RAWTEXT)}function J5(X,Z){X._reconstructActiveFormattingElements(),X._insertElement(Z,x.HTML),X.framesetOk=!1,X.insertionMode=X.insertionMode===H.IN_TABLE||X.insertionMode===H.IN_CAPTION||X.insertionMode===H.IN_TABLE_BODY||X.insertionMode===H.IN_ROW||X.insertionMode===H.IN_CELL?H.IN_SELECT_IN_TABLE:H.IN_SELECT}function K5(X,Z){if(X.openElements.currentTagId===Q.OPTION)X.openElements.pop();X._reconstructActiveFormattingElements(),X._insertElement(Z,x.HTML)}function V5(X,Z){if(X.openElements.hasInScope(Q.RUBY))X.openElements.generateImpliedEndTags();X._insertElement(Z,x.HTML)}function Y5(X,Z){if(X.openElements.hasInScope(Q.RUBY))X.openElements.generateImpliedEndTagsWithExclusion(Q.RTC);X._insertElement(Z,x.HTML)}function z5(X,Z){if(X._reconstructActiveFormattingElements(),WX(Z),r1(Z),Z.selfClosing)X._appendElement(Z,x.MATHML);else X._insertElement(Z,x.MATHML);Z.ackSelfClosing=!0}function j5(X,Z){if(X._reconstructActiveFormattingElements(),QX(Z),r1(Z),Z.selfClosing)X._appendElement(Z,x.SVG);else X._insertElement(Z,x.SVG);Z.ackSelfClosing=!0}function f6(X,Z){X._reconstructActiveFormattingElements(),X._insertElement(Z,x.HTML)}function n(X,Z){switch(Z.tagID){case Q.I:case Q.S:case Q.B:case Q.U:case Q.EM:case Q.TT:case Q.BIG:case Q.CODE:case Q.FONT:case Q.SMALL:case Q.STRIKE:case Q.STRONG:{pZ(X,Z);break}case Q.A:{iZ(X,Z);break}case Q.H1:case Q.H2:case Q.H3:case Q.H4:case Q.H5:case Q.H6:{uZ(X,Z);break}case Q.P:case Q.DL:case Q.OL:case Q.UL:case Q.DIV:case Q.DIR:case Q.NAV:case Q.MAIN:case Q.MENU:case Q.ASIDE:case Q.CENTER:case Q.FIGURE:case Q.FOOTER:case Q.HEADER:case Q.HGROUP:case Q.DIALOG:case Q.DETAILS:case Q.ADDRESS:case Q.ARTICLE:case Q.SEARCH:case Q.SECTION:case Q.SUMMARY:case Q.FIELDSET:case Q.BLOCKQUOTE:case Q.FIGCAPTION:{lZ(X,Z);break}case Q.LI:case Q.DD:case Q.DT:{cZ(X,Z);break}case Q.BR:case Q.IMG:case Q.WBR:case Q.AREA:case Q.EMBED:case Q.KEYGEN:{N6(X,Z);break}case Q.HR:{eZ(X,Z);break}case Q.RB:case Q.RTC:{V5(X,Z);break}case Q.RT:case Q.RP:{Y5(X,Z);break}case Q.PRE:case Q.LISTING:{AZ(X,Z);break}case Q.XMP:{W5(X,Z);break}case Q.SVG:{j5(X,Z);break}case Q.HTML:{_Z(X,Z);break}case Q.BASE:case Q.LINK:case Q.META:case Q.STYLE:case Q.TITLE:case Q.SCRIPT:case Q.BGSOUND:case Q.BASEFONT:case Q.TEMPLATE:{H0(X,Z);break}case Q.BODY:{IZ(X,Z);break}case Q.FORM:{TZ(X,Z);break}case Q.NOBR:{sZ(X,Z);break}case Q.MATH:{z5(X,Z);break}case Q.TABLE:{oZ(X,Z);break}case Q.INPUT:{nZ(X,Z);break}case Q.PARAM:case Q.TRACK:case Q.SOURCE:{tZ(X,Z);break}case Q.IMAGE:{X5(X,Z);break}case Q.BUTTON:{dZ(X,Z);break}case Q.APPLET:case Q.OBJECT:case Q.MARQUEE:{rZ(X,Z);break}case Q.IFRAME:{Q5(X,Z);break}case Q.SELECT:{J5(X,Z);break}case Q.OPTION:case Q.OPTGROUP:{K5(X,Z);break}case Q.NOEMBED:case Q.NOFRAMES:{R6(X,Z);break}case Q.FRAMESET:{SZ(X,Z);break}case Q.TEXTAREA:{Z5(X,Z);break}case Q.NOSCRIPT:{if(X.options.scriptingEnabled)R6(X,Z);else f6(X,Z);break}case Q.PLAINTEXT:{aZ(X,Z);break}case Q.COL:case Q.TH:case Q.TD:case Q.TR:case Q.HEAD:case Q.FRAME:case Q.TBODY:case Q.TFOOT:case Q.THEAD:case Q.CAPTION:case Q.COLGROUP:break;default:f6(X,Z)}}function H5(X,Z){if(X.openElements.hasInScope(Q.BODY)){if(X.insertionMode=H.AFTER_BODY,X.options.sourceCodeLocationInfo){let W=X.openElements.tryPeekProperlyNestedBodyElement();if(W)X._setEndLocation(W,Z)}}}function w5(X,Z){if(X.openElements.hasInScope(Q.BODY))X.insertionMode=H.AFTER_BODY,l6(X,Z)}function U5(X,Z){let W=Z.tagID;if(X.openElements.hasInScope(W))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(W)}function F5(X){let Z=X.openElements.tmplCount>0,{formElement:W}=X;if(!Z)X.formElement=null;if((W||Z)&&X.openElements.hasInScope(Q.FORM)){if(X.openElements.generateImpliedEndTags(),Z)X.openElements.popUntilTagNamePopped(Q.FORM);else if(W)X.openElements.remove(W)}}function B5(X){if(!X.openElements.hasInButtonScope(Q.P))X._insertFakeElement(B.P,Q.P);X._closePElement()}function q5(X){if(X.openElements.hasInListItemScope(Q.LI))X.openElements.generateImpliedEndTagsWithExclusion(Q.LI),X.openElements.popUntilTagNamePopped(Q.LI)}function L5(X,Z){let W=Z.tagID;if(X.openElements.hasInScope(W))X.openElements.generateImpliedEndTagsWithExclusion(W),X.openElements.popUntilTagNamePopped(W)}function P5(X){if(X.openElements.hasNumberedHeaderInScope())X.openElements.generateImpliedEndTags(),X.openElements.popUntilNumberedHeaderPopped()}function x5(X,Z){let W=Z.tagID;if(X.openElements.hasInScope(W))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(W),X.activeFormattingElements.clearToLastMarker()}function b5(X){X._reconstructActiveFormattingElements(),X._insertFakeElement(B.BR,Q.BR),X.openElements.pop(),X.framesetOk=!1}function D6(X,Z){let{tagName:W,tagID:J}=Z;for(let K=X.openElements.stackTop;K>0;K--){let V=X.openElements.items[K],j=X.openElements.tagIDs[K];if(J===j&&(J!==Q.UNKNOWN||X.treeAdapter.getTagName(V)===W)){if(X.openElements.generateImpliedEndTagsWithExclusion(J),X.openElements.stackTop>=K)X.openElements.shortenToLength(K);break}if(X._isSpecialElement(V,j))break}}function Z2(X,Z){switch(Z.tagID){case Q.A:case Q.B:case Q.I:case Q.S:case Q.U:case Q.EM:case Q.TT:case Q.BIG:case Q.CODE:case Q.FONT:case Q.NOBR:case Q.SMALL:case Q.STRIKE:case Q.STRONG:{YX(X,Z);break}case Q.P:{B5(X);break}case Q.DL:case Q.UL:case Q.OL:case Q.DIR:case Q.DIV:case Q.NAV:case Q.PRE:case Q.MAIN:case Q.MENU:case Q.ASIDE:case Q.BUTTON:case Q.CENTER:case Q.FIGURE:case Q.FOOTER:case Q.HEADER:case Q.HGROUP:case Q.DIALOG:case Q.ADDRESS:case Q.ARTICLE:case Q.DETAILS:case Q.SEARCH:case Q.SECTION:case Q.SUMMARY:case Q.LISTING:case Q.FIELDSET:case Q.BLOCKQUOTE:case Q.FIGCAPTION:{U5(X,Z);break}case Q.LI:{q5(X);break}case Q.DD:case Q.DT:{L5(X,Z);break}case Q.H1:case Q.H2:case Q.H3:case Q.H4:case Q.H5:case Q.H6:{P5(X);break}case Q.BR:{b5(X);break}case Q.BODY:{H5(X,Z);break}case Q.HTML:{w5(X,Z);break}case Q.FORM:{F5(X);break}case Q.APPLET:case Q.OBJECT:case Q.MARQUEE:{x5(X,Z);break}case Q.TEMPLATE:{m0(X,Z);break}default:D6(X,Z)}}function $6(X,Z){if(X.tmplInsertionModeStack.length>0)S6(X,Z);else zX(X,Z)}function v5(X,Z){var W;if(Z.tagID===Q.SCRIPT)(W=X.scriptHandler)===null||W===void 0||W.call(X,X.openElements.current);X.openElements.pop(),X.insertionMode=X.originalInsertionMode}function y5(X,Z){X._err(Z,L.eofInElementThatCanContainOnlyText),X.openElements.pop(),X.insertionMode=X.originalInsertionMode,X.onEof(Z)}function JX(X,Z){if(X.openElements.currentTagId!==void 0&&C6.has(X.openElements.currentTagId))switch(X.pendingCharacterTokens.length=0,X.hasNonWhitespacePendingCharacterToken=!1,X.originalInsertionMode=X.insertionMode,X.insertionMode=H.IN_TABLE_TEXT,Z.type){case _.CHARACTER:{m6(X,Z);break}case _.WHITESPACE_CHARACTER:{G6(X,Z);break}}else F1(X,Z)}function O5(X,Z){X.openElements.clearBackToTableContext(),X.activeFormattingElements.insertMarker(),X._insertElement(Z,x.HTML),X.insertionMode=H.IN_CAPTION}function R5(X,Z){X.openElements.clearBackToTableContext(),X._insertElement(Z,x.HTML),X.insertionMode=H.IN_COLUMN_GROUP}function f5(X,Z){X.openElements.clearBackToTableContext(),X._insertFakeElement(B.COLGROUP,Q.COLGROUP),X.insertionMode=H.IN_COLUMN_GROUP,jX(X,Z)}function C5(X,Z){X.openElements.clearBackToTableContext(),X._insertElement(Z,x.HTML),X.insertionMode=H.IN_TABLE_BODY}function h5(X,Z){X.openElements.clearBackToTableContext(),X._insertFakeElement(B.TBODY,Q.TBODY),X.insertionMode=H.IN_TABLE_BODY,W2(X,Z)}function M5(X,Z){if(X.openElements.hasInTableScope(Q.TABLE))X.openElements.popUntilTagNamePopped(Q.TABLE),X._resetInsertionMode(),X._processStartTag(Z)}function N5(X,Z){if(g6(Z))X._appendElement(Z,x.HTML);else F1(X,Z);Z.ackSelfClosing=!0}function g5(X,Z){if(!X.formElement&&X.openElements.tmplCount===0)X._insertElement(Z,x.HTML),X.formElement=X.openElements.current,X.openElements.pop()}function c0(X,Z){switch(Z.tagID){case Q.TD:case Q.TH:case Q.TR:{h5(X,Z);break}case Q.STYLE:case Q.SCRIPT:case Q.TEMPLATE:{H0(X,Z);break}case Q.COL:{f5(X,Z);break}case Q.FORM:{g5(X,Z);break}case Q.TABLE:{M5(X,Z);break}case Q.TBODY:case Q.TFOOT:case Q.THEAD:{C5(X,Z);break}case Q.INPUT:{N5(X,Z);break}case Q.CAPTION:{O5(X,Z);break}case Q.COLGROUP:{R5(X,Z);break}default:F1(X,Z)}}function U1(X,Z){switch(Z.tagID){case Q.TABLE:{if(X.openElements.hasInTableScope(Q.TABLE))X.openElements.popUntilTagNamePopped(Q.TABLE),X._resetInsertionMode();break}case Q.TEMPLATE:{m0(X,Z);break}case Q.BODY:case Q.CAPTION:case Q.COL:case Q.COLGROUP:case Q.HTML:case Q.TBODY:case Q.TD:case Q.TFOOT:case Q.TH:case Q.THEAD:case Q.TR:break;default:F1(X,Z)}}function F1(X,Z){let W=X.fosterParentingEnabled;X.fosterParentingEnabled=!0,X2(X,Z),X.fosterParentingEnabled=W}function G6(X,Z){X.pendingCharacterTokens.push(Z)}function m6(X,Z){X.pendingCharacterTokens.push(Z),X.hasNonWhitespacePendingCharacterToken=!0}function V1(X,Z){let W=0;if(X.hasNonWhitespacePendingCharacterToken)for(;W<X.pendingCharacterTokens.length;W++)F1(X,X.pendingCharacterTokens[W]);else for(;W<X.pendingCharacterTokens.length;W++)X._insertCharacters(X.pendingCharacterTokens[W]);X.insertionMode=X.originalInsertionMode,X._processToken(Z)}var E6=new Set([Q.CAPTION,Q.COL,Q.COLGROUP,Q.TBODY,Q.TD,Q.TFOOT,Q.TH,Q.THEAD,Q.TR]);function D5(X,Z){let W=Z.tagID;if(E6.has(W)){if(X.openElements.hasInTableScope(Q.CAPTION))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(Q.CAPTION),X.activeFormattingElements.clearToLastMarker(),X.insertionMode=H.IN_TABLE,c0(X,Z)}else n(X,Z)}function $5(X,Z){let W=Z.tagID;switch(W){case Q.CAPTION:case Q.TABLE:{if(X.openElements.hasInTableScope(Q.CAPTION)){if(X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(Q.CAPTION),X.activeFormattingElements.clearToLastMarker(),X.insertionMode=H.IN_TABLE,W===Q.TABLE)U1(X,Z)}break}case Q.BODY:case Q.COL:case Q.COLGROUP:case Q.HTML:case Q.TBODY:case Q.TD:case Q.TFOOT:case Q.TH:case Q.THEAD:case Q.TR:break;default:Z2(X,Z)}}function jX(X,Z){switch(Z.tagID){case Q.HTML:{n(X,Z);break}case Q.COL:{X._appendElement(Z,x.HTML),Z.ackSelfClosing=!0;break}case Q.TEMPLATE:{H0(X,Z);break}default:n1(X,Z)}}function G5(X,Z){switch(Z.tagID){case Q.COLGROUP:{if(X.openElements.currentTagId===Q.COLGROUP)X.openElements.pop(),X.insertionMode=H.IN_TABLE;break}case Q.TEMPLATE:{m0(X,Z);break}case Q.COL:break;default:n1(X,Z)}}function n1(X,Z){if(X.openElements.currentTagId===Q.COLGROUP)X.openElements.pop(),X.insertionMode=H.IN_TABLE,X._processToken(Z)}function W2(X,Z){switch(Z.tagID){case Q.TR:{X.openElements.clearBackToTableBodyContext(),X._insertElement(Z,x.HTML),X.insertionMode=H.IN_ROW;break}case Q.TH:case Q.TD:{X.openElements.clearBackToTableBodyContext(),X._insertFakeElement(B.TR,Q.TR),X.insertionMode=H.IN_ROW,Q2(X,Z);break}case Q.CAPTION:case Q.COL:case Q.COLGROUP:case Q.TBODY:case Q.TFOOT:case Q.THEAD:{if(X.openElements.hasTableBodyContextInTableScope())X.openElements.clearBackToTableBodyContext(),X.openElements.pop(),X.insertionMode=H.IN_TABLE,c0(X,Z);break}default:c0(X,Z)}}function VX(X,Z){let W=Z.tagID;switch(Z.tagID){case Q.TBODY:case Q.TFOOT:case Q.THEAD:{if(X.openElements.hasInTableScope(W))X.openElements.clearBackToTableBodyContext(),X.openElements.pop(),X.insertionMode=H.IN_TABLE;break}case Q.TABLE:{if(X.openElements.hasTableBodyContextInTableScope())X.openElements.clearBackToTableBodyContext(),X.openElements.pop(),X.insertionMode=H.IN_TABLE,U1(X,Z);break}case Q.BODY:case Q.CAPTION:case Q.COL:case Q.COLGROUP:case Q.HTML:case Q.TD:case Q.TH:case Q.TR:break;default:U1(X,Z)}}function Q2(X,Z){switch(Z.tagID){case Q.TH:case Q.TD:{X.openElements.clearBackToTableRowContext(),X._insertElement(Z,x.HTML),X.insertionMode=H.IN_CELL,X.activeFormattingElements.insertMarker();break}case Q.CAPTION:case Q.COL:case Q.COLGROUP:case Q.TBODY:case Q.TFOOT:case Q.THEAD:case Q.TR:{if(X.openElements.hasInTableScope(Q.TR))X.openElements.clearBackToTableRowContext(),X.openElements.pop(),X.insertionMode=H.IN_TABLE_BODY,W2(X,Z);break}default:c0(X,Z)}}function k6(X,Z){switch(Z.tagID){case Q.TR:{if(X.openElements.hasInTableScope(Q.TR))X.openElements.clearBackToTableRowContext(),X.openElements.pop(),X.insertionMode=H.IN_TABLE_BODY;break}case Q.TABLE:{if(X.openElements.hasInTableScope(Q.TR))X.openElements.clearBackToTableRowContext(),X.openElements.pop(),X.insertionMode=H.IN_TABLE_BODY,VX(X,Z);break}case Q.TBODY:case Q.TFOOT:case Q.THEAD:{if(X.openElements.hasInTableScope(Z.tagID)||X.openElements.hasInTableScope(Q.TR))X.openElements.clearBackToTableRowContext(),X.openElements.pop(),X.insertionMode=H.IN_TABLE_BODY,VX(X,Z);break}case Q.BODY:case Q.CAPTION:case Q.COL:case Q.COLGROUP:case Q.HTML:case Q.TD:case Q.TH:break;default:U1(X,Z)}}function m5(X,Z){let W=Z.tagID;if(E6.has(W)){if(X.openElements.hasInTableScope(Q.TD)||X.openElements.hasInTableScope(Q.TH))X._closeTableCell(),Q2(X,Z)}else n(X,Z)}function E5(X,Z){let W=Z.tagID;switch(W){case Q.TD:case Q.TH:{if(X.openElements.hasInTableScope(W))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(W),X.activeFormattingElements.clearToLastMarker(),X.insertionMode=H.IN_ROW;break}case Q.TABLE:case Q.TBODY:case Q.TFOOT:case Q.THEAD:case Q.TR:{if(X.openElements.hasInTableScope(W))X._closeTableCell(),k6(X,Z);break}case Q.BODY:case Q.CAPTION:case Q.COL:case Q.COLGROUP:case Q.HTML:break;default:Z2(X,Z)}}function _6(X,Z){switch(Z.tagID){case Q.HTML:{n(X,Z);break}case Q.OPTION:{if(X.openElements.currentTagId===Q.OPTION)X.openElements.pop();X._insertElement(Z,x.HTML);break}case Q.OPTGROUP:{if(X.openElements.currentTagId===Q.OPTION)X.openElements.pop();if(X.openElements.currentTagId===Q.OPTGROUP)X.openElements.pop();X._insertElement(Z,x.HTML);break}case Q.HR:{if(X.openElements.currentTagId===Q.OPTION)X.openElements.pop();if(X.openElements.currentTagId===Q.OPTGROUP)X.openElements.pop();X._appendElement(Z,x.HTML),Z.ackSelfClosing=!0;break}case Q.INPUT:case Q.KEYGEN:case Q.TEXTAREA:case Q.SELECT:{if(X.openElements.hasInSelectScope(Q.SELECT)){if(X.openElements.popUntilTagNamePopped(Q.SELECT),X._resetInsertionMode(),Z.tagID!==Q.SELECT)X._processStartTag(Z)}break}case Q.SCRIPT:case Q.TEMPLATE:{H0(X,Z);break}default:}}function I6(X,Z){switch(Z.tagID){case Q.OPTGROUP:{if(X.openElements.stackTop>0&&X.openElements.currentTagId===Q.OPTION&&X.openElements.tagIDs[X.openElements.stackTop-1]===Q.OPTGROUP)X.openElements.pop();if(X.openElements.currentTagId===Q.OPTGROUP)X.openElements.pop();break}case Q.OPTION:{if(X.openElements.currentTagId===Q.OPTION)X.openElements.pop();break}case Q.SELECT:{if(X.openElements.hasInSelectScope(Q.SELECT))X.openElements.popUntilTagNamePopped(Q.SELECT),X._resetInsertionMode();break}case Q.TEMPLATE:{m0(X,Z);break}default:}}function k5(X,Z){let W=Z.tagID;if(W===Q.CAPTION||W===Q.TABLE||W===Q.TBODY||W===Q.TFOOT||W===Q.THEAD||W===Q.TR||W===Q.TD||W===Q.TH)X.openElements.popUntilTagNamePopped(Q.SELECT),X._resetInsertionMode(),X._processStartTag(Z);else _6(X,Z)}function _5(X,Z){let W=Z.tagID;if(W===Q.CAPTION||W===Q.TABLE||W===Q.TBODY||W===Q.TFOOT||W===Q.THEAD||W===Q.TR||W===Q.TD||W===Q.TH){if(X.openElements.hasInTableScope(W))X.openElements.popUntilTagNamePopped(Q.SELECT),X._resetInsertionMode(),X.onEndTag(Z)}else I6(X,Z)}function I5(X,Z){switch(Z.tagID){case Q.BASE:case Q.BASEFONT:case Q.BGSOUND:case Q.LINK:case Q.META:case Q.NOFRAMES:case Q.SCRIPT:case Q.STYLE:case Q.TEMPLATE:case Q.TITLE:{H0(X,Z);break}case Q.CAPTION:case Q.COLGROUP:case Q.TBODY:case Q.TFOOT:case Q.THEAD:{X.tmplInsertionModeStack[0]=H.IN_TABLE,X.insertionMode=H.IN_TABLE,c0(X,Z);break}case Q.COL:{X.tmplInsertionModeStack[0]=H.IN_COLUMN_GROUP,X.insertionMode=H.IN_COLUMN_GROUP,jX(X,Z);break}case Q.TR:{X.tmplInsertionModeStack[0]=H.IN_TABLE_BODY,X.insertionMode=H.IN_TABLE_BODY,W2(X,Z);break}case Q.TD:case Q.TH:{X.tmplInsertionModeStack[0]=H.IN_ROW,X.insertionMode=H.IN_ROW,Q2(X,Z);break}default:X.tmplInsertionModeStack[0]=H.IN_BODY,X.insertionMode=H.IN_BODY,n(X,Z)}}function S5(X,Z){if(Z.tagID===Q.TEMPLATE)m0(X,Z)}function S6(X,Z){if(X.openElements.tmplCount>0)X.openElements.popUntilTagNamePopped(Q.TEMPLATE),X.activeFormattingElements.clearToLastMarker(),X.tmplInsertionModeStack.shift(),X._resetInsertionMode(),X.onEof(Z);else zX(X,Z)}function l5(X,Z){if(Z.tagID===Q.HTML)n(X,Z);else t1(X,Z)}function l6(X,Z){var W;if(Z.tagID===Q.HTML){if(!X.fragmentContext)X.insertionMode=H.AFTER_AFTER_BODY;if(X.options.sourceCodeLocationInfo&&X.openElements.tagIDs[0]===Q.HTML){X._setEndLocation(X.openElements.items[0],Z);let J=X.openElements.items[1];if(J&&!((W=X.treeAdapter.getNodeSourceCodeLocation(J))===null||W===void 0?void 0:W.endTag))X._setEndLocation(J,Z)}}else t1(X,Z)}function t1(X,Z){X.insertionMode=H.IN_BODY,X2(X,Z)}function u5(X,Z){switch(Z.tagID){case Q.HTML:{n(X,Z);break}case Q.FRAMESET:{X._insertElement(Z,x.HTML);break}case Q.FRAME:{X._appendElement(Z,x.HTML),Z.ackSelfClosing=!0;break}case Q.NOFRAMES:{H0(X,Z);break}default:}}function A5(X,Z){if(Z.tagID===Q.FRAMESET&&!X.openElements.isRootHtmlElementCurrent()){if(X.openElements.pop(),!X.fragmentContext&&X.openElements.currentTagId!==Q.FRAMESET)X.insertionMode=H.AFTER_FRAMESET}}function T5(X,Z){switch(Z.tagID){case Q.HTML:{n(X,Z);break}case Q.NOFRAMES:{H0(X,Z);break}default:}}function c5(X,Z){if(Z.tagID===Q.HTML)X.insertionMode=H.AFTER_AFTER_FRAMESET}function a5(X,Z){if(Z.tagID===Q.HTML)n(X,Z);else o1(X,Z)}function o1(X,Z){X.insertionMode=H.IN_BODY,X2(X,Z)}function d5(X,Z){switch(Z.tagID){case Q.HTML:{n(X,Z);break}case Q.NOFRAMES:{H0(X,Z);break}default:}}function i5(X,Z){Z.chars=A,X._insertCharacters(Z)}function p5(X,Z){X._insertCharacters(Z),X.framesetOk=!1}function u6(X){while(X.treeAdapter.getNamespaceURI(X.openElements.current)!==x.HTML&&X.openElements.currentTagId!==void 0&&!X._isIntegrationPoint(X.openElements.currentTagId,X.openElements.current))X.openElements.pop()}function s5(X,Z){if(x6(Z))u6(X),X._startTagOutsideForeignContent(Z);else{let W=X._getAdjustedCurrentElement(),J=X.treeAdapter.getNamespaceURI(W);if(J===x.MATHML)WX(Z);else if(J===x.SVG)b6(Z),QX(Z);if(r1(Z),Z.selfClosing)X._appendElement(Z,J);else X._insertElement(Z,J);Z.ackSelfClosing=!0}}function r5(X,Z){if(Z.tagID===Q.P||Z.tagID===Q.BR){u6(X),X._endTagOutsideForeignContent(Z);return}for(let W=X.openElements.stackTop;W>0;W--){let J=X.openElements.items[W];if(X.treeAdapter.getNamespaceURI(J)===x.HTML){X._endTagOutsideForeignContent(Z);break}let K=X.treeAdapter.getTagName(J);if(K.toLowerCase()===Z.tagName){Z.tagName=K,X.openElements.shortenToLength(W);break}}}var $K=typeof String.prototype.codePointAt==="function"?(X,Z)=>X.codePointAt(Z):(X,Z)=>(X.charCodeAt(Z)&64512)===55296?(X.charCodeAt(Z)-55296)*1024+X.charCodeAt(Z+1)-56320+65536:X.charCodeAt(Z);function A6(X,Z){return function(J){let K,V=0,j="";while(K=X.exec(J)){if(V!==K.index)j+=J.substring(V,K.index);j+=Z.get(K[0].charCodeAt(0)),V=K.index+1}return j+J.substring(V)}}var T6=A6(/["&\u00A0]/g,new Map([[34,"""],[38,"&"],[160," "]])),c6=A6(/[&<>\u00A0]/g,new Map([[38,"&"],[60,"<"],[62,">"],[160," "]]));var o5=new Set([B.AREA,B.BASE,B.BASEFONT,B.BGSOUND,B.BR,B.COL,B.EMBED,B.FRAME,B.HR,B.IMG,B.INPUT,B.KEYGEN,B.LINK,B.META,B.PARAM,B.SOURCE,B.TRACK,B.WBR]);function a6(X,Z){return Z.treeAdapter.isElementNode(X)&&Z.treeAdapter.getNamespaceURI(X)===x.HTML&&o5.has(Z.treeAdapter.getTagName(X))}var n5={treeAdapter:V0,scriptingEnabled:!0};function B1(X,Z){let W={...n5,...Z};if(a6(X,W))return"";return d6(X,W)}function d6(X,Z){let W="",J=Z.treeAdapter.isElementNode(X)&&Z.treeAdapter.getTagName(X)===B.TEMPLATE&&Z.treeAdapter.getNamespaceURI(X)===x.HTML?Z.treeAdapter.getTemplateContent(X):X,K=Z.treeAdapter.getChildNodes(J);if(K)for(let V of K)W+=t5(V,Z);return W}function t5(X,Z){if(Z.treeAdapter.isElementNode(X))return e5(X,Z);if(Z.treeAdapter.isTextNode(X))return Z7(X,Z);if(Z.treeAdapter.isCommentNode(X))return W7(X,Z);if(Z.treeAdapter.isDocumentTypeNode(X))return Q7(X,Z);return""}function e5(X,Z){let W=Z.treeAdapter.getTagName(X);return`<${W}${X7(X,Z)}>${a6(X,Z)?"":`${d6(X,Z)}</${W}>`}`}function X7(X,{treeAdapter:Z}){let W="";for(let J of Z.getAttrList(X)){if(W+=" ",J.namespace)switch(J.namespace){case x.XML:{W+=`xml:${J.name}`;break}case x.XMLNS:{if(J.name!=="xmlns")W+="xmlns:";W+=J.name;break}case x.XLINK:{W+=`xlink:${J.name}`;break}default:W+=`${J.prefix}:${J.name}`}else W+=J.name;W+=`="${T6(J.value)}"`}return W}function Z7(X,Z){let{treeAdapter:W}=Z,J=W.getTextNodeContent(X),K=W.getParentNode(X),V=K&&W.isElementNode(K)&&W.getTagName(K);return V&&W.getNamespaceURI(K)===x.HTML&&W6(V,Z.scriptingEnabled)?J:c6(J)}function W7(X,{treeAdapter:Z}){return`<!--${Z.getCommentNodeContent(X)}-->`}function Q7(X,{treeAdapter:Z}){return`<!DOCTYPE ${Z.getDocumentTypeNodeName(X)}>`}function J2(X,Z){return e1.parse(X,Z)}import{WebSocket as V2,WebSocketServer as F7}from"ws";import*as a0 from"css-tree";var q1=20971520,J7=new Set(["script","iframe","frame","frameset","object","embed","portal","base","audio","video","source","track","noscript","animate","animatemotion","animatetransform","discard","set"]),K7=new Set(["action","cite","data","formaction","href","ping","poster","src","srcset","xlink:href"]),HX=/^data:(?:image\/(?:png|jpe?g|gif|webp|avif|bmp|x-icon)|font\/[a-z0-9.+-]+|application\/(?:font-[a-z0-9.+-]+|vnd\.ms-fontobject|x-font-[a-z0-9.+-]+));/i,V7=new Set(["date","datetime-local","email","month","number","password","search","tel","text","time","url","week"]);function Y7(X){return"tagName"in X}function i6(X,Z){return X.attrs.find((W)=>W.name.toLowerCase()===Z.toLowerCase())?.value??null}function B0(X,Z,W){let J=X.attrs.find((K)=>K.name.toLowerCase()===Z.toLowerCase());if(J)J.value=W;else X.attrs.push({name:Z,value:W})}function p6(X){try{let Z=a0.parse(X,{context:"stylesheet",parseCustomProperty:!0,positions:!1});return a0.walk(Z,{enter(W,J,K){if(W.type==="Atrule"&&W.name.toLowerCase()==="import"){K.remove(J);return}if(W.type==="Declaration"){let V=W.property.toLowerCase();if(V==="behavior"||V==="-moz-binding")K.remove(J);return}if(W.type==="Url"&&!HX.test(W.value)){W.value="data:,";return}if(W.type==="String"&&this.function&&["image-set","-webkit-image-set","src"].includes(this.function.name.toLowerCase())&&!HX.test(W.value))W.value="data:,"}}),a0.generate(Z)}catch{return""}}function z7(X){return p6(`x{${X}}`).replace(/^x\{/,"").replace(/\}$/,"")}function j7(X){let Z=X.tagName.toLowerCase();if(X.attrs=X.attrs.flatMap((W)=>{let J=W.name.toLowerCase();if(Z==="input"&&(J==="value"||J==="checked"))return[];if(J.startsWith("on")||J==="srcdoc"||J==="nonce")return[];if(J==="style"){let K=z7(W.value);return K?[{...W,value:K}]:[]}if(K7.has(J)){if(J==="src"&&HX.test(W.value))return[W];if(J==="href"&&W.value.startsWith("#"))return[W];return[]}if(J==="target"||J==="download"||J==="http-equiv")return[];return[W]}),Z==="form")B0(X,"inert",""),B0(X,"aria-disabled","true");else if(Z==="textarea"||Z==="input"&&V7.has((i6(X,"type")??"text").toLowerCase()))B0(X,"readonly",""),B0(X,"aria-readonly","true"),B0(X,"tabindex","-1");else if(Z==="button"||Z==="select"||Z==="input")B0(X,"disabled",""),B0(X,"aria-disabled","true"),B0(X,"tabindex","-1");if(i6(X,"contenteditable")!==null)B0(X,"contenteditable","false"),B0(X,"tabindex","-1"),X.childNodes=[];if(Z==="textarea"||Z==="select")X.childNodes=[];if(X.tagName==="style"&&X.childNodes){for(let W of X.childNodes)if("value"in W&&typeof W.value==="string")W.value=p6(W.value)}}function s6(X){let Z=[];for(let W of X.childNodes){if(Y7(W)){let J=W.tagName.toLowerCase();if(J7.has(J))continue;if(J==="meta"&&W.attrs.some((K)=>K.name.toLowerCase()==="http-equiv"&&K.value.toLowerCase()!=="content-type"))continue;if(J==="link")continue;j7(W),s6(W)}Z.push(W)}X.childNodes=Z}function r6(X){if(Buffer.byteLength(X,"utf8")>q1)throw Error("Browser snapshot exceeds the 20 MiB limit");let Z=J2(X);s6(Z);let W=B1(Z);if(Buffer.byteLength(W,"utf8")>q1)throw Error("Sanitized browser snapshot exceeds the 20 MiB limit");return W}function O0(X){return JSON.stringify(X).replace(/</g,"\\u003c")}function H7(X){try{let Z=new URL(X);if(Z.protocol!=="https:"||Z.hostname!=="www.google.com"||Z.username||Z.password||Z.pathname!=="/"&&Z.pathname!=="/webhp")return null;return"https://www.google.com/search"}catch{return null}}function o6(X){let Z=O0(H7(X.sourceUrl));return`(() => {
|
|
4
4
|
"use strict";
|
|
5
|
-
let TOKEN = ${
|
|
6
|
-
let SOURCE_URL = ${
|
|
7
|
-
const REVISION = ${
|
|
8
|
-
const NAVIGATE_PREFIX = ${
|
|
9
|
-
const RESOURCE_PREFIX = ${
|
|
10
|
-
const PARENT_ORIGIN = ${
|
|
11
|
-
const FROZEN = ${
|
|
5
|
+
let TOKEN = ${O0(X.token)};
|
|
6
|
+
let SOURCE_URL = ${O0(X.sourceUrl)};
|
|
7
|
+
const REVISION = ${O0(X.revision)};
|
|
8
|
+
const NAVIGATE_PREFIX = ${O0(X.navigateUrlPrefix??null)};
|
|
9
|
+
const RESOURCE_PREFIX = ${O0(X.resourceUrlPrefix??null)};
|
|
10
|
+
const PARENT_ORIGIN = ${O0(X.parentOrigin??null)};
|
|
11
|
+
const FROZEN = ${O0(X.frozen===!0)};
|
|
12
12
|
const GOOGLE_HOMEPAGE_SEARCH_URL = ${Z};
|
|
13
13
|
const BRIDGE_SCRIPT = document.currentScript;
|
|
14
14
|
const parentPostMessage = window.parent.postMessage.bind(window.parent);
|
|
@@ -427,16 +427,16 @@ function R8(){let X=globalThis.performance?.now?.()??Date.now();return Math.roun
|
|
|
427
427
|
restoreFrozenScroll();
|
|
428
428
|
state();
|
|
429
429
|
}
|
|
430
|
-
})();`}function
|
|
430
|
+
})();`}function K2(X){return JSON.stringify(X).replace(/</g,"\\u003c")}function wX(X){return`(() => {
|
|
431
431
|
"use strict";
|
|
432
432
|
if (window.__browserKitHooked) return;
|
|
433
433
|
window.__browserKitHooked = true;
|
|
434
|
-
let REAL = ${
|
|
435
|
-
const PROXY_ORIGIN = ${
|
|
436
|
-
const PREFIX = ${
|
|
434
|
+
let REAL = ${K2(X.sourceUrl)};
|
|
435
|
+
const PROXY_ORIGIN = ${K2(X.proxyOrigin)};
|
|
436
|
+
const PREFIX = ${K2(X.proxyUrlPrefix)};
|
|
437
437
|
const PREFIX_PATH = new URL(PREFIX).pathname;
|
|
438
438
|
const SESSION_PATH = PREFIX_PATH.slice(0, -"/proxy/".length);
|
|
439
|
-
const SESSION_STORAGE_NAMESPACE = ${
|
|
439
|
+
const SESSION_STORAGE_NAMESPACE = ${K2(X.sessionStorageNamespace??"default")};
|
|
440
440
|
|
|
441
441
|
const currentRealUrl = () => {
|
|
442
442
|
try {
|
|
@@ -853,7 +853,7 @@ function R8(){let X=globalThis.performance?.now?.()??Date.now();return Math.roun
|
|
|
853
853
|
};
|
|
854
854
|
addEventListener("popstate", notifyNavigation);
|
|
855
855
|
addEventListener("hashchange", notifyNavigation);
|
|
856
|
-
})();`}var
|
|
856
|
+
})();`}var n6=new Set(["content-security-policy","content-security-policy-report-only","x-frame-options","cross-origin-opener-policy","cross-origin-embedder-policy","cross-origin-resource-policy","content-encoding","content-length","transfer-encoding","set-cookie","strict-transport-security","report-to","nel","permissions-policy","x-content-type-options"]);function R0(X,Z,W){if(!X)return X;let J=X.trim(),K=W.endsWith("/")?W:`${W}/`,V=new URL(K).pathname;if(J.startsWith(K)||J.startsWith(V)||/^(data|blob|mailto|tel|javascript):/i.test(J)||J.startsWith("#"))return J;try{let j=new URL(J,Z);if(j.protocol!=="http:"&&j.protocol!=="https:")return J;return`${K}${j.href}`}catch{return J}}function UX(X){let Z=(W)=>{let J=W.trim().replace(/^["']|["']$/g,"");if(!J||J.startsWith("data:"))return W;return R0(J,X.baseUrl,X.proxyUrlPrefix)};return X.css.replace(/url\(\s*([^)]+?)\s*\)/gi,(W,J)=>`url(${Z(J)})`).replace(/@import\s+(["'])([^"']+)\1/gi,(W,J,K)=>`@import ${J}${Z(K)}${J}`)}function FX(X){let Z=new URL(X.sourceUrl).origin,W=new URL(X.proxyUrlPrefix).pathname,J=X.html.replace(/<meta[^>]+http-equiv\s*=\s*["']?content-security-policy["']?[^>]*>/gi,"").replace(/\sintegrity\s*=\s*(["'])[^"']*\1/gi,"").replace(/(\b(?:href|src|action|poster)\s*=\s*["'])(https?:)\/\//gi,(U,F,w)=>`${F}${W}${w}//`).replace(/(\b(?:href|src|action|poster)\s*=\s*["'])\/\//gi,(U,F)=>`${F}${W}https://`).replace(/(\b(?:href|action|poster)\s*=\s*["'])\/(?!\/|browser-kit\/session\/)/gi,(U,F)=>`${F}${W}${Z}/`).replace(/(\bimport\s*\(\s*["'])\/(?!\/|browser-kit\/session\/)([^"']*)(["']\s*\))/g,(U,F,w,q)=>`${F}${W}${Z}/${w}${q}`).replace(/(\bimport\s*\(\s*\\["'])\/(?!\/|browser-kit\/session\/)([^"'\\]*)(\\["']\s*\))/g,(U,F,w,q)=>`${F}${W}${Z}/${w}${q}`);J=J.replace(/(<meta[^>]+http-equiv\s*=\s*["']?refresh["']?[^>]*content\s*=\s*["'][^"']*?url\s*=\s*)([^"'\s>]+)/gi,(U,F,w)=>F+R0(w,X.sourceUrl,X.proxyUrlPrefix)),J=J.replace(/\bsrcset\s*=\s*["']([^"']*)["']/gi,(U,F)=>{return`srcset="${F.split(",").map((q)=>{let v=q.trim().split(/\s+/),y=v.shift();if(!y)return"";return[/^https?:\/\//i.test(y)||y.startsWith("//")||y.startsWith("/")?R0(y,X.sourceUrl,X.proxyUrlPrefix):y,...v].join(" ")}).filter(Boolean).join(", ")}"`});let K=wX({sourceUrl:X.sourceUrl,proxyOrigin:X.proxyOrigin,proxyUrlPrefix:X.proxyUrlPrefix,sessionStorageNamespace:X.sessionStorageNamespace}),V=o6({token:X.bridgeToken,sourceUrl:X.sourceUrl,revision:X.revision,navigateUrlPrefix:X.navigateUrlPrefix,parentOrigin:X.proxyOrigin}),j=`<base href="${X.proxyUrlPrefix}${X.sourceUrl}"><script data-browser-kit-runtime>${K}</script><script data-ideawave-browser-bridge>${V}</script>`;if(/<head[^>]*>/i.test(J))return J.replace(/<head[^>]*>/i,(U)=>U+j);if(/<html[^>]*>/i.test(J))return J.replace(/<html[^>]*>/i,(U)=>U+j);return j+J}var BX="6";function qX(){return`
|
|
857
857
|
self.addEventListener("install", (event) => event.waitUntil(self.skipWaiting()));
|
|
858
858
|
self.addEventListener("activate", (event) => event.waitUntil(self.clients.claim()));
|
|
859
859
|
|
|
@@ -972,7 +972,7 @@ self.addEventListener("fetch", (event) => {
|
|
|
972
972
|
return proxy(event, route, url.href);
|
|
973
973
|
})());
|
|
974
974
|
});
|
|
975
|
-
`}var
|
|
975
|
+
`}var B7=1800000,z2="/browser-kit/session/",e6="__browser_kit_client_",q7=5242880;function L7(X){let Z=X??"";return Z.startsWith("[")?Z.slice(1,Z.indexOf("]")):Z.split(":")[0]??""}function d0(X){let Z=new URL(X);if(Z.protocol!=="http:"&&Z.protocol!=="https:")throw Error("Only HTTP(S) browser URLs are supported");return Z.href}function X4(X){return"tagName"in X}function Y2(X,Z){return X.attrs.find((W)=>W.name.toLowerCase()===Z)?.value??null}function L1(X,Z,W){let J=X.attrs.find((K)=>K.name.toLowerCase()===Z);if(J)J.value=W;else X.attrs.push({name:Z,value:W})}function W4(X){return(X.get("content-type")??"application/octet-stream").split(";")[0]?.trim().toLowerCase()??"application/octet-stream"}function Z4(X){let Z=W4(X.headers);if(!(/^image\/(?:png|jpeg|gif|webp|avif|bmp|x-icon)$/.test(Z)||/^(?:font\/|application\/(?:font-|vnd\.ms-fontobject|x-font-))/.test(Z)))return null;return`data:${Z};base64,${X.body.toString("base64")}`}function P7(X){let Z=new URL(X);if(Z.protocol!=="http:"&&Z.protocol!=="https:")throw Error("Browser frontend origin is invalid");return Z.origin}function i0(X){return JSON.stringify(X).replace(/</g,"\\u003c")}function x7(X){return w7("sha256").update(X).digest("hex").slice(0,24)}function LX(X){if(!X.startsWith(z2))return null;let Z=X.slice(z2.length),W=Z.indexOf("/");if(W<=0)return null;return{sessionId:Z.slice(0,W),route:Z.slice(W)}}function b7(X){let Z=new Headers;for(let[W,J]of Object.entries(X.headers))if(typeof J==="string")Z.set(W,J);else if(Array.isArray(J))Z.set(W,J.join(", "));return Z}async function v7(X){if(X.method==="GET"||X.method==="HEAD")return;let Z=[];for await(let W of X)Z.push(Buffer.isBuffer(W)?W:Buffer.from(W));return Z.length>0?Buffer.concat(Z):void 0}function y7(X){let Z={};return X.forEach((W,J)=>{Z[J]=W}),Z}function O7(X,Z){let J=`${`${z2}${encodeURIComponent(X.id)}`}/proxy/`;return`<!doctype html>
|
|
976
976
|
<html>
|
|
977
977
|
<head>
|
|
978
978
|
<meta charset="utf-8">
|
|
@@ -993,7 +993,7 @@ html,body,#view{border:0;margin:0;width:100%;height:100%;overflow:hidden;backgro
|
|
|
993
993
|
const FRONTEND_ORIGIN = ${i0(X.frontendOrigin)};
|
|
994
994
|
const INITIAL_URL = ${i0(Z)};
|
|
995
995
|
const PROXY_PATH_PREFIX = ${i0(J)};
|
|
996
|
-
const SERVICE_WORKER_VERSION = ${i0(
|
|
996
|
+
const SERVICE_WORKER_VERSION = ${i0(BX)};
|
|
997
997
|
const frame = document.getElementById("view");
|
|
998
998
|
const status = document.getElementById("status");
|
|
999
999
|
const showError = (error) => {
|
|
@@ -1034,7 +1034,7 @@ html,body,#view{border:0;margin:0;width:100%;height:100%;overflow:hidden;backgro
|
|
|
1034
1034
|
navigator.serviceWorker.addEventListener("controllerchange", changed);
|
|
1035
1035
|
});
|
|
1036
1036
|
};
|
|
1037
|
-
navigator.serviceWorker.register(${i0(`/browser-kit/sw.js?v=${
|
|
1037
|
+
navigator.serviceWorker.register(${i0(`/browser-kit/sw.js?v=${BX}`)}, { scope: "/" })
|
|
1038
1038
|
.then(waitForCurrentWorker)
|
|
1039
1039
|
.then(() => {
|
|
1040
1040
|
frame.src = PROXY_PATH_PREFIX + INITIAL_URL;
|
|
@@ -1043,31 +1043,31 @@ html,body,#view{border:0;margin:0;width:100%;height:100%;overflow:hidden;backgro
|
|
|
1043
1043
|
})();
|
|
1044
1044
|
</script>
|
|
1045
1045
|
</body>
|
|
1046
|
-
</html>`}class K2{sessions=new Map;profiles=new Map;socketServer=new W7({noServer:!0});sweepTimer;port=null;constructor(){this.sweepTimer=setInterval(()=>this.sweep(),60000),this.sweepTimer.unref?.()}setPort(X){this.port=X}profileForOrigin(X){let Z=this.profiles.get(X);if(Z)return Z;let W={frontendOrigin:X,wrapperHost:`iw-browser-${Y7(X)}`,cookies:new Map};return this.profiles.set(X,W),W}wrapperOrigin(X){if(!this.port)throw Error("Browser kit is not ready");return`http://${X.profile.wrapperHost}.localhost:${this.port}`}sessionPath(X){return`${J2}${encodeURIComponent(X.id)}`}proxyPathPrefix(X){return`${this.sessionPath(X)}/proxy/`}proxyUrlPrefix(X){return`${this.wrapperOrigin(X)}${this.proxyPathPrefix(X)}`}result(X){let Z=this.wrapperOrigin(X),W=this.sessionPath(X);return{proxySessionId:X.id,wrapperUrl:`${Z}${W}/wrapper`,bridgeToken:X.bridgeToken,navigateUrlPrefix:`${Z}${W}/navigate?url=`}}async handleRpc(X,Z,W){if(W.method==="open_proxy_session"){let J=W.params;if(typeof J.browserNodeId!=="string"||typeof J.url!=="string")throw Error("Browser proxy session input is invalid");let K=d0(J.url),V=V7(Z),H=this.profileForOrigin(V),U=[...this.sessions.values()].find((w)=>w.frontendOrigin===V&&w.browserNodeId===J.browserNodeId);if(U)return U.frontendSessionIds.add(X),U.currentUrl=K,U.lastUsedAt=Date.now(),this.result(U);let F={id:a6(),frontendSessionIds:new Set([X]),frontendOrigin:V,browserNodeId:J.browserNodeId,profile:H,bridgeToken:Z7(24).toString("base64url"),currentUrl:K,lastUsedAt:Date.now()};return this.sessions.set(F.id,F),this.result(F)}if(W.method==="close_proxy_session"){let J=W.params;if(typeof J.proxySessionId!=="string")throw Error("Browser proxy session input is invalid");let K=this.sessions.get(J.proxySessionId);if(K&&!K.frontendSessionIds.has(X))throw Error("Browser proxy session belongs to another frontend session");if(K)K.frontendSessionIds.delete(X),K.lastUsedAt=Date.now();return{closed:!0}}if(W.method==="build_snapshot"){let J=W.params;if(typeof J.proxySessionId!=="string"||typeof J.revision!=="string"||J.revision.length===0||J.revision.length>200||typeof J.html!=="string"||typeof J.sourceUrl!=="string"||J.title!==void 0&&typeof J.title!=="string"||J.scrollX!==void 0&&(typeof J.scrollX!=="number"||!Number.isFinite(J.scrollX))||J.scrollY!==void 0&&(typeof J.scrollY!=="number"||!Number.isFinite(J.scrollY)))throw Error("Browser snapshot input is invalid");let K=this.sessions.get(J.proxySessionId);if(!K||!K.frontendSessionIds.has(X))throw Error("Browser proxy session is unavailable");return K.lastUsedAt=Date.now(),this.buildSnapshot(K,{revision:J.revision,html:J.html,sourceUrl:d0(J.sourceUrl),title:J.title??"",scrollX:J.scrollX??0,scrollY:J.scrollY??0})}throw Error("Unsupported browser-kit RPC operation")}closeFrontendSession(X){for(let Z of this.sessions.values())if(Z.frontendSessionIds.delete(X))Z.lastUsedAt=Date.now()}async close(){clearInterval(this.sweepTimer),this.sessions.clear(),this.profiles.clear(),this.socketServer.close()}sweep(){let X=Date.now()-Q7;for(let Z of this.sessions.values())if(Z.frontendSessionIds.size===0&&Z.lastUsedAt<X)this.sessions.delete(Z.id)}profileForRequest(X){let Z=K7(X.headers.host);return[...this.profiles.values()].find((W)=>Z===`${W.wrapperHost}.localhost`)??null}escapedSessionForProfile(X){let Z=[...this.sessions.values()].filter((J)=>J.profile===X),W=Z.filter((J)=>J.frontendSessionIds.size>0);if(W.length===1)return W[0]??null;if(W.length===0&&Z.length===1)return Z[0]??null;return null}storeCookies(X,Z,W){for(let J of Z){let[K="",...V]=J.split(";"),H=K.indexOf("=");if(H<0)continue;let U=K.slice(0,H).trim(),F=K.slice(H+1).trim(),w=W.toLowerCase();for(let y of V){let O=y.indexOf("="),b=(O<0?y:y.slice(0,O)).trim().toLowerCase(),v=O<0?"":y.slice(O+1).trim();if(b==="domain"&&v)w=v.replace(/^\./,"").toLowerCase()}if(!X.cookies.has(w))X.cookies.set(w,new Map);let q=X.cookies.get(w);if(!q)continue;if(F===""||/(^|;)\s*max-age=0/i.test(J))q.delete(U);else q.set(U,F)}}storeClientCookies(X,Z){if(!Z)return;for(let W of Z.split(";")){let J=W.trim(),K=J.indexOf("=");if(K<1)continue;let V=J.slice(0,K);if(!V.startsWith(d6))continue;let H=V.slice(d6.length).split(".");if(H.length!==2)continue;try{let U=Buffer.from(H[0]??"","base64url").toString(),F=Buffer.from(H[1]??"","base64url").toString(),w=JSON.parse(decodeURIComponent(J.slice(K+1))),q=new URL(U).hostname.toLowerCase();if(!F||w.name!==F||typeof w.value!=="string")continue;if(!X.cookies.has(q))X.cookies.set(q,new Map);let y=X.cookies.get(q);if(!y)continue;if(w.deleted===!0)y.delete(F);else y.set(F,w.value)}catch{}}}cookieHeader(X,Z){let W=Z.toLowerCase(),J=[];for(let[K,V]of X.cookies)if(W===K||W.endsWith(`.${K}`))for(let[H,U]of V)J.push(`${H}=${U}`);return J.join("; ")}snapshotTarget(X,Z,W){let J=Z.trim();if(!J||/^(?:data|blob|mailto|tel|javascript):/i.test(J))return null;try{let K=new URL(J,this.wrapperOrigin(X));if(K.origin===this.wrapperOrigin(X)&&K.pathname.startsWith(this.proxyPathPrefix(X)))return d0(K.pathname.slice(this.proxyPathPrefix(X).length)+K.search+K.hash);return d0(new URL(J,W).href)}catch{return null}}async fetchSnapshotResource(X,Z,W){let J=d0(Z),K=W.resources.get(J);if(K)return K;let V=(async()=>{let H=J,U=null;for(let w=0;;w+=1){let q=new URL(H),y=new Headers({accept:"*/*",referer:`${q.origin}/`}),O=this.cookieHeader(X.profile,q.hostname);if(O)y.set("cookie",O);U=await fetch(H,{method:"GET",headers:y,redirect:"manual"});let b=U.headers.getSetCookie,v=typeof b==="function"?b.call(U.headers):[];if(v.length>0)this.storeCookies(X.profile,v,q.hostname);let f=U.headers.get("location");if(U.status>=300&&U.status<400&&f&&w<15){H=new URL(f,H).href;continue}break}if(!U?.ok)throw Error(`Snapshot resource returned ${U?.status??502}`);let F=Buffer.from(await U.arrayBuffer());if(F.byteLength>J7)throw Error("Snapshot resource exceeds the 5 MiB limit");if(W.totalBytes+F.byteLength>F1)throw Error("Browser snapshot exceeds the 20 MiB limit");return W.totalBytes+=F.byteLength,{url:H,headers:U.headers,body:F}})();return W.resources.set(J,V),V}async inlineSnapshotCss(X,Z,W,J){try{let K=m0.parse(Z,{context:"stylesheet",parseCustomProperty:!0,positions:!1}),V=new Set;m0.walk(K,(U)=>{if(U.type!=="Url")return;let F=this.snapshotTarget(X,U.value,W);if(F)V.add(F)});let H=new Map;return await Promise.all([...V].map(async(U)=>{try{let F=await this.fetchSnapshotResource(X,U,J),w=p6(F);if(!w)return;J.inlinedUrls.add(F.url),H.set(U,w)}catch{}})),m0.walk(K,{enter:(U,F,w)=>{if(U.type==="Atrule"&&U.name.toLowerCase()==="import"){w.remove(F);return}if(U.type!=="Url")return;let q=this.snapshotTarget(X,U.value,W);U.value=q?H.get(q)??"data:,":"data:,"}}),m0.generate(K)}catch{return""}}async inlineSnapshotTree(X,Z,W,J){let K=[];for(let V of Z.childNodes){if(i6(V)){let H=V.tagName.toLowerCase();if(H==="link"&&(Q2(V,"rel")??"").toLowerCase().split(/\s+/).includes("stylesheet")){let F=Q2(V,"href"),w=F?this.snapshotTarget(X,F,W):null;if(!w)continue;try{let q=await this.fetchSnapshotResource(X,w,J);if(s6(q.headers)!=="text/css")continue;V.tagName="style",V.nodeName="style",V.attrs=V.attrs.filter((y)=>y.name.toLowerCase()==="media"),V.childNodes=[{nodeName:"#text",value:await this.inlineSnapshotCss(X,q.body.toString("utf8"),q.url,J),parentNode:V}],J.inlinedUrls.add(q.url)}catch{continue}}else if(H==="style"){for(let F of V.childNodes)if("value"in F&&typeof F.value==="string")F.value=await this.inlineSnapshotCss(X,F.value,W,J)}let U=Q2(V,"style");if(U!==null){let F=await this.inlineSnapshotCss(X,`x{${U}}`,W,J);B1(V,"style",F.replace(/^x\{/,"").replace(/\}$/,""))}if(H==="img"){let F=Q2(V,"src"),w=F?this.snapshotTarget(X,F,W):null;if(w)try{let q=await this.fetchSnapshotResource(X,w,J),y=p6(q);if(B1(V,"src",y??"data:,"),y)J.inlinedUrls.add(q.url)}catch{B1(V,"src","data:,")}}await this.inlineSnapshotTree(X,V,W,J)}K.push(V)}Z.childNodes=K}setSnapshotScroll(X,Z,W){for(let J of X.childNodes){if(!i6(J))continue;if(J.tagName.toLowerCase()==="html")return B1(J,"data-ideawave-scroll-x",String(Z)),B1(J,"data-ideawave-scroll-y",String(W)),!0;if(this.setSnapshotScroll(J,Z,W))return!0}return!1}async buildSnapshot(X,Z){let W=Buffer.byteLength(Z.html,"utf8");if(W>F1)throw Error("Browser snapshot exceeds the 20 MiB limit");let J=X2(Z.html),K={resources:new Map,inlinedUrls:new Set,totalBytes:W};this.setSnapshotScroll(J,Z.scrollX,Z.scrollY),await this.inlineSnapshotTree(X,J,Z.sourceUrl,K);let V=U1(J),H=A6(V),U=Z.title.trim().slice(0,500)||V.match(/<title[^>]*>([^<]*)<\/title>/i)?.[1]?.trim()||"";return{html:H,sourceUrl:Z.sourceUrl,title:U,revision:Z.revision,byteLength:Buffer.byteLength(H,"utf8"),resourceCount:K.inlinedUrls.size,createdAt:new Date().toISOString()}}async proxy(X,Z,W,J){let K=J.pathname.slice(this.proxyPathPrefix(W).length)+J.search+J.hash;if(!/^https?:\/\//i.test(K)){Z.writeHead(400,{"content-type":"text/plain"}),Z.end(`Bad proxy target: ${K}`);return}let V=await j7(X),H=X.method??"GET",U=K,F=V,w=null;this.storeClientCookies(W.profile,X.headers.cookie);for(let f=0;;f+=1){let C=new URL(U),N=z7(X);for(let h of["host","connection","origin","referer","cookie","accept-encoding"])N.delete(h);let g=this.cookieHeader(W.profile,C.hostname);if(g)N.set("cookie",g);N.set("referer",`${C.origin}/`);let M={method:H,headers:N,redirect:"manual",...H!=="GET"&&H!=="HEAD"&&F?{body:F,duplex:"half"}:{}};try{w=await fetch(U,M)}catch(h){Z.writeHead(502,{"content-type":"text/plain"}),Z.end(`Proxy fetch error for ${U}: ${h instanceof Error?h.message:String(h)}`);return}let G=w.headers.getSetCookie,I=typeof G==="function"?G.call(w.headers):[];if(I.length>0)this.storeCookies(W.profile,I,C.hostname);let m=w.headers.get("location");if(w.status>=300&&w.status<400&&m&&f<15){if(U=new URL(m,U).href,w.status===303||H==="POST"&&(w.status===301||w.status===302))H="GET",F=void 0;continue}break}if(!w)throw Error("Browser proxy received no response");W.lastUsedAt=Date.now();let q=new Headers;w.headers.forEach((f,C)=>{if(!c6.has(C.toLowerCase()))q.set(C,f)}),q.set("access-control-allow-origin","*"),q.set("access-control-allow-credentials","true");for(let f of["location","content-location"]){let C=q.get(f);if(C)q.set(f,y0(C,U,this.proxyUrlPrefix(W)))}let y=q.get("refresh");if(y){let f=y.toLowerCase().indexOf("url=");if(f>=0)q.set("refresh",y.slice(0,f+4)+y0(y.slice(f+4).trim(),U,this.proxyUrlPrefix(W)))}let O=q.get("link");if(O){let f=O.replace(/<([^>]+)>/g,(C,N)=>`<${y0(N,U,this.proxyUrlPrefix(W))}>`).replace(/;\s*integrity\s*=\s*(?:"[^"]*"|'[^']*'|[^;,\s]+)/gi,"");q.set("link",f)}let b=(w.headers.get("content-type")??"").toLowerCase(),v;if(b.includes("text/html")){let f=a6();v=wX({html:await w.text(),sourceUrl:U,proxyOrigin:this.wrapperOrigin(W),proxyUrlPrefix:this.proxyUrlPrefix(W),bridgeToken:W.bridgeToken,revision:f,navigateUrlPrefix:`${this.wrapperOrigin(W)}${this.sessionPath(W)}/navigate?url=`,sessionStorageNamespace:W.id}),q.delete("etag"),q.delete("last-modified"),q.set("cache-control","no-store"),q.append("set-cookie",`__browser_kit_origin_${W.id}=${encodeURIComponent(new URL(U).origin)}; Path=/; SameSite=Lax`)}else if(b.includes("text/css"))v=HX({css:await w.text(),baseUrl:U,proxyUrlPrefix:this.proxyUrlPrefix(W)}),q.delete("etag"),q.delete("last-modified"),q.set("cache-control","no-store");else v=Buffer.from(await w.arrayBuffer());if(Z.writeHead(w.status,H7(q)),X.method==="HEAD")Z.end();else Z.end(v)}async handleHttpRequest(X,Z){let W=new URL(X.url??"/","http://localhost"),J=W.pathname.startsWith("/browser-kit/"),K=this.profileForRequest(X);if(!K){if(!J)return!1;return Z.writeHead(404,{"content-type":"text/plain"}),Z.end("Browser-kit profile not found"),!0}if(!J){let U=this.escapedSessionForProfile(K);if(!U)return Z.writeHead(409,{"content-type":"text/plain"}),Z.end("Browser-kit request could not be assigned to one active card"),!0;let F=null,w=X.headers.referer;if(w)try{let y=new URL(w),O=BX(y.pathname);if(O?.sessionId===U.id&&O.route.startsWith("/proxy/"))F=new URL(O.route.slice(7)).origin}catch{}if(!F){let y=`__browser_kit_origin_${U.id}=`,O=X.headers.cookie?.split(";").map((b)=>b.trim()).find((b)=>b.startsWith(y));if(O)try{F=decodeURIComponent(O.slice(y.length))}catch{}}if(!F)F=new URL(U.currentUrl).origin;let q=`${F}${W.pathname}${W.search}`;return Z.writeHead(307,{location:`${this.proxyUrlPrefix(U)}${q}`,"cache-control":"no-store"}),Z.end(),!0}if(W.pathname==="/browser-kit/sw.js"){if(X.method!=="GET"&&X.method!=="HEAD")return Z.writeHead(405),Z.end(),!0;if(Z.writeHead(200,{"content-type":"text/javascript; charset=utf-8","service-worker-allowed":"/","cache-control":"no-store"}),X.method==="HEAD")Z.end();else Z.end(FX());return!0}let V=BX(W.pathname),H=V?this.sessions.get(V.sessionId):void 0;if(!V||!H||H.profile!==K)return Z.writeHead(404,{"content-type":"text/plain"}),Z.end("Browser-kit session not found"),!0;if(H.lastUsedAt=Date.now(),V.route==="/wrapper"){if(X.method!=="GET"&&X.method!=="HEAD")return Z.writeHead(405),Z.end(),!0;let U=w7(H,H.currentUrl);if(Z.writeHead(200,{"content-type":"text/html; charset=utf-8","cache-control":"no-store","content-security-policy":`default-src 'self'; script-src 'self' 'unsafe-inline'; worker-src 'self'; style-src 'unsafe-inline'; frame-src 'self'; connect-src 'self'; frame-ancestors ${H.frontendOrigin}`,"access-control-allow-origin":H.frontendOrigin,vary:"Origin"}),X.method==="HEAD")Z.end();else Z.end(U);return!0}if(V.route==="/navigate"){if(X.method!=="GET"&&X.method!=="HEAD")return Z.writeHead(405),Z.end(),!0;let U=W.searchParams.get("url");if(!U)return Z.writeHead(400),Z.end(),!0;return H.currentUrl=d0(U),Z.writeHead(307,{location:`${this.proxyUrlPrefix(H)}${H.currentUrl}`,"cache-control":"no-store"}),Z.end(),!0}if(V.route.startsWith("/proxy/"))return await this.proxy(X,Z,H,W),!0;return Z.writeHead(404),Z.end(),!0}handleUpgrade(X,Z,W){let J=new URL(X.url??"/","http://localhost"),K=BX(J.pathname);if(!K?.route.startsWith("/proxy/"))return!1;let V=this.profileForRequest(X),H=this.sessions.get(K.sessionId);if(!V||!H||H.profile!==V)return Z.destroy(),!0;let U=K.route.slice(7)+J.search+J.hash;if(!/^wss?:\/\//i.test(U))return Z.destroy(),!0;return this.socketServer.handleUpgrade(X,Z,W,(F)=>{let w;try{let y=new URL(U),O={origin:y.origin},b=this.cookieHeader(H.profile,y.hostname);if(b)O.cookie=b;w=new W2(U,{headers:O})}catch{F.close(1011,"bad target");return}let q=[];w.binaryType="arraybuffer",w.on("open",()=>{for(let y of q)w.send(y);q.length=0}),F.on("message",(y)=>{if(w.readyState===W2.OPEN)w.send(y);else q.push(y)}),w.on("message",(y)=>{if(F.readyState===W2.OPEN)F.send(y)}),F.on("close",()=>w.close()),F.on("error",()=>w.close()),w.on("close",(y,O)=>{if(F.readyState===W2.OPEN)F.close(y>=1000&&y<=4999?y:1000,O.toString())}),w.on("error",()=>F.close(1011,"upstream error"))}),!0}}function U7(X){if(!X)return null;let Z=X.indexOf("/");if(Z<=0)return null;return X.slice(0,Z)}function V2(X){let Z=[...X.models];if(X.adapterId!=="opencode"||Z.length===0)return Z;let W=U7(X.currentModelId)??(Z.some((K)=>K.id.startsWith("opencode/"))?"opencode":null);if(!W)return Z;let J=Z.filter((K)=>K.id===X.currentModelId||K.id.startsWith(`${W}/`));return J.length>0?J:Z}import{Readable as g7,Writable as D7}from"node:stream";import{ClientSideConnection as K4,ndJsonStream as V4}from"@agentclientprotocol/sdk";import R0 from"node:fs/promises";import X0 from"node:path";class L1 extends Error{constructor(X){super(X);this.name="PathTraversalError"}}class LX extends Error{constructor(X){super(X);this.name="HiddenPathError"}}class PX extends Error{constructor(X){super(X);this.name="RunFolderFileTooLargeError"}}class q1 extends Error{constructor(X){super(X);this.name="RunFolderBinaryFileError"}}var F7=new Set([".bzr",".cache",".claude",".config",".env",".git",".hg",".idea",".obsidian",".svn",".vscode","node_modules"]),r6=1e6,B7=4096,q7=new TextDecoder("utf-8",{fatal:!0});function L7(X){return X.split(/[\\/]+/).filter((Z)=>Z.length>0)}function Y2(X){if(X0.isAbsolute(X))throw new L1("Absolute paths are not allowed");for(let Z of L7(X)){if(Z===".")continue;if(Z==="..")throw new L1("Parent-directory traversal is not allowed");if(Z.startsWith(".")||F7.has(Z))throw new LX(`Path segment "${Z}" is hidden or configuration data`)}}function P7(X){Y2(X);let Z=X0.normalize(X||".");return Z==="."?"":Z}function x7(X,Z,W){let J=X0.relative(X,Z);if(J===".."||J.startsWith(`..${X0.sep}`)||X0.isAbsolute(J))throw new L1(`Path "${W}" resolves outside the run folder`);if(J.length>0)Y2(J);return J}async function qX(X,Z){Y2(Z);let W=X0.resolve(X,Z||"."),J;try{J=await R0.realpath(W)}catch(K){if(K.code!=="ENOENT")throw K;let V=X0.dirname(W),H=[X0.basename(W)];while(V!==X&&V!==X0.dirname(V))try{V=await R0.realpath(V);break}catch(U){if(U.code!=="ENOENT")throw U;H.unshift(X0.basename(V)),V=X0.dirname(V)}J=X0.join(V,...H)}return x7(X,J,Z),J}async function b7(X,Z){let W=await R0.realpath(X);return qX(W,Z)}function v7(X){let Z=X.subarray(0,Math.min(X.length,B7));if(Z.length===0)return!1;let W=0;for(let J of Z){if(J===0)return!0;let K=J===9||J===10||J===12||J===13;if(J<32&&!K)W+=1}return W/Z.length>0.3}async function z2(X,Z){let W=await b7(X,Z),J=await R0.stat(W);if(!J.isFile())throw new q1(`Path "${Z}" is not a text file`);if(J.size>r6)throw new PX(`File "${Z}" is too large to read (${J.size} bytes, max ${r6} bytes)`);let K=await R0.readFile(W);if(v7(K))throw new q1(`File "${Z}" appears to be binary, not text`);try{return q7.decode(K)}catch{throw new q1(`File "${Z}" is not valid UTF-8 text`)}}function y7(X){if(X.isDirectory())return"directory";if(X.isFile())return"file";if(X.isSymbolicLink())return"symlink";return"other"}function o6(X){return X.split(X0.sep).join("/")}async function n6(X,Z=""){let W=await R0.realpath(X),J=P7(Z),K=await qX(W,J),V=await R0.readdir(K,{withFileTypes:!0}),H=[];for(let U of V){let F=J?X0.join(J,U.name):U.name;try{Y2(F);let w=await qX(W,F),q=await R0.stat(w);H.push({name:U.name,path:o6(F),type:y7(U),size:U.isFile()?q.size:null})}catch{}}return H.sort((U,F)=>{if(U.type==="directory"&&F.type!=="directory")return-1;if(U.type!=="directory"&&F.type==="directory")return 1;return U.name.localeCompare(F.name)}),{path:o6(J),absolutePath:K,entries:H}}var xX={fs:{readTextFile:!0,writeTextFile:!1},terminal:!1};function t6(X){return{readTextFile:async(Z)=>{return{content:await z2(X,Z.path)}}}}import{spawn as R7}from"node:child_process";function bX(X){let Z=R7(X.command,X.args,{cwd:X.cwd,env:X.env,stdio:["pipe","pipe","pipe"],...G1(X.command)});if(!Z.stdin||!Z.stdout||!Z.stderr)throw Error("Failed to allocate stdio streams for ACP subprocess");let{stdin:W,stdout:J,stderr:K}=Z,V=4096,H=[],U=0;K.on("data",(C)=>{H.push(C),U+=C.length;while(U>V*2&&H.length>1){let N=H.shift();if(N)U-=N.length}});let F=()=>{let C=Buffer.concat(H).toString("utf8");return C.length>V?C.slice(-V):C},w=!1,q=!1,y,O,b=new Promise((C)=>{y=C}),v=new Promise((C)=>{O=C}),f=(C)=>{if(q)return;if(q=!0,y(C),!w)O(C)};return Z.on("exit",(C,N)=>{f({code:C,signal:N,stderr:F()})}),Z.on("error",(C)=>{let N=F(),g=C?.message??String(C);f({code:null,signal:null,stderr:N?`${g}
|
|
1047
|
-
${N}`:g})}),{stdin:W,stdout:J,stderr:K,kill:(
|
|
1048
|
-
... truncated`}function
|
|
1046
|
+
</html>`}class j2{sessions=new Map;profiles=new Map;socketServer=new F7({noServer:!0});sweepTimer;port=null;constructor(){this.sweepTimer=setInterval(()=>this.sweep(),60000),this.sweepTimer.unref?.()}setPort(X){this.port=X}profileForOrigin(X){let Z=this.profiles.get(X);if(Z)return Z;let W={frontendOrigin:X,wrapperHost:`iw-browser-${x7(X)}`,cookies:new Map};return this.profiles.set(X,W),W}wrapperOrigin(X){if(!this.port)throw Error("Browser kit is not ready");return`http://${X.profile.wrapperHost}.localhost:${this.port}`}sessionPath(X){return`${z2}${encodeURIComponent(X.id)}`}proxyPathPrefix(X){return`${this.sessionPath(X)}/proxy/`}proxyUrlPrefix(X){return`${this.wrapperOrigin(X)}${this.proxyPathPrefix(X)}`}result(X){let Z=this.wrapperOrigin(X),W=this.sessionPath(X);return{proxySessionId:X.id,wrapperUrl:`${Z}${W}/wrapper`,bridgeToken:X.bridgeToken,navigateUrlPrefix:`${Z}${W}/navigate?url=`}}async handleRpc(X,Z,W){if(W.method==="open_proxy_session"){let J=W.params;if(typeof J.browserNodeId!=="string"||typeof J.url!=="string")throw Error("Browser proxy session input is invalid");let K=d0(J.url),V=P7(Z),j=this.profileForOrigin(V),U=[...this.sessions.values()].find((w)=>w.frontendOrigin===V&&w.browserNodeId===J.browserNodeId);if(U)return U.frontendSessionIds.add(X),U.currentUrl=K,U.lastUsedAt=Date.now(),this.result(U);let F={id:t6(),frontendSessionIds:new Set([X]),frontendOrigin:V,browserNodeId:J.browserNodeId,profile:j,bridgeToken:U7(24).toString("base64url"),currentUrl:K,lastUsedAt:Date.now()};return this.sessions.set(F.id,F),this.result(F)}if(W.method==="close_proxy_session"){let J=W.params;if(typeof J.proxySessionId!=="string")throw Error("Browser proxy session input is invalid");let K=this.sessions.get(J.proxySessionId);if(K&&!K.frontendSessionIds.has(X))throw Error("Browser proxy session belongs to another frontend session");if(K)K.frontendSessionIds.delete(X),K.lastUsedAt=Date.now();return{closed:!0}}if(W.method==="build_snapshot"){let J=W.params;if(typeof J.proxySessionId!=="string"||typeof J.revision!=="string"||J.revision.length===0||J.revision.length>200||typeof J.html!=="string"||typeof J.sourceUrl!=="string"||J.title!==void 0&&typeof J.title!=="string"||J.scrollX!==void 0&&(typeof J.scrollX!=="number"||!Number.isFinite(J.scrollX))||J.scrollY!==void 0&&(typeof J.scrollY!=="number"||!Number.isFinite(J.scrollY)))throw Error("Browser snapshot input is invalid");let K=this.sessions.get(J.proxySessionId);if(!K||!K.frontendSessionIds.has(X))throw Error("Browser proxy session is unavailable");return K.lastUsedAt=Date.now(),this.buildSnapshot(K,{revision:J.revision,html:J.html,sourceUrl:d0(J.sourceUrl),title:J.title??"",scrollX:J.scrollX??0,scrollY:J.scrollY??0})}throw Error("Unsupported browser-kit RPC operation")}closeFrontendSession(X){for(let Z of this.sessions.values())if(Z.frontendSessionIds.delete(X))Z.lastUsedAt=Date.now()}async close(){clearInterval(this.sweepTimer),this.sessions.clear(),this.profiles.clear(),this.socketServer.close()}sweep(){let X=Date.now()-B7;for(let Z of this.sessions.values())if(Z.frontendSessionIds.size===0&&Z.lastUsedAt<X)this.sessions.delete(Z.id)}profileForRequest(X){let Z=L7(X.headers.host);return[...this.profiles.values()].find((W)=>Z===`${W.wrapperHost}.localhost`)??null}escapedSessionForProfile(X){let Z=[...this.sessions.values()].filter((J)=>J.profile===X),W=Z.filter((J)=>J.frontendSessionIds.size>0);if(W.length===1)return W[0]??null;if(W.length===0&&Z.length===1)return Z[0]??null;return null}storeCookies(X,Z,W){for(let J of Z){let[K="",...V]=J.split(";"),j=K.indexOf("=");if(j<0)continue;let U=K.slice(0,j).trim(),F=K.slice(j+1).trim(),w=W.toLowerCase();for(let v of V){let y=v.indexOf("="),P=(y<0?v:v.slice(0,y)).trim().toLowerCase(),O=y<0?"":v.slice(y+1).trim();if(P==="domain"&&O)w=O.replace(/^\./,"").toLowerCase()}if(!X.cookies.has(w))X.cookies.set(w,new Map);let q=X.cookies.get(w);if(!q)continue;if(F===""||/(^|;)\s*max-age=0/i.test(J))q.delete(U);else q.set(U,F)}}storeClientCookies(X,Z){if(!Z)return;for(let W of Z.split(";")){let J=W.trim(),K=J.indexOf("=");if(K<1)continue;let V=J.slice(0,K);if(!V.startsWith(e6))continue;let j=V.slice(e6.length).split(".");if(j.length!==2)continue;try{let U=Buffer.from(j[0]??"","base64url").toString(),F=Buffer.from(j[1]??"","base64url").toString(),w=JSON.parse(decodeURIComponent(J.slice(K+1))),q=new URL(U).hostname.toLowerCase();if(!F||w.name!==F||typeof w.value!=="string")continue;if(!X.cookies.has(q))X.cookies.set(q,new Map);let v=X.cookies.get(q);if(!v)continue;if(w.deleted===!0)v.delete(F);else v.set(F,w.value)}catch{}}}cookieHeader(X,Z){let W=Z.toLowerCase(),J=[];for(let[K,V]of X.cookies)if(W===K||W.endsWith(`.${K}`))for(let[j,U]of V)J.push(`${j}=${U}`);return J.join("; ")}snapshotTarget(X,Z,W){let J=Z.trim();if(!J||/^(?:data|blob|mailto|tel|javascript):/i.test(J))return null;try{let K=new URL(J,this.wrapperOrigin(X));if(K.origin===this.wrapperOrigin(X)&&K.pathname.startsWith(this.proxyPathPrefix(X)))return d0(K.pathname.slice(this.proxyPathPrefix(X).length)+K.search+K.hash);return d0(new URL(J,W).href)}catch{return null}}async fetchSnapshotResource(X,Z,W){let J=d0(Z),K=W.resources.get(J);if(K)return K;let V=(async()=>{let j=J,U=null;for(let w=0;;w+=1){let q=new URL(j),v=new Headers({accept:"*/*",referer:`${q.origin}/`}),y=this.cookieHeader(X.profile,q.hostname);if(y)v.set("cookie",y);U=await fetch(j,{method:"GET",headers:v,redirect:"manual"});let P=U.headers.getSetCookie,O=typeof P==="function"?P.call(U.headers):[];if(O.length>0)this.storeCookies(X.profile,O,q.hostname);let M=U.headers.get("location");if(U.status>=300&&U.status<400&&M&&w<15){j=new URL(M,j).href;continue}break}if(!U?.ok)throw Error(`Snapshot resource returned ${U?.status??502}`);let F=Buffer.from(await U.arrayBuffer());if(F.byteLength>q7)throw Error("Snapshot resource exceeds the 5 MiB limit");if(W.totalBytes+F.byteLength>q1)throw Error("Browser snapshot exceeds the 20 MiB limit");return W.totalBytes+=F.byteLength,{url:j,headers:U.headers,body:F}})();return W.resources.set(J,V),V}async inlineSnapshotCss(X,Z,W,J){try{let K=E0.parse(Z,{context:"stylesheet",parseCustomProperty:!0,positions:!1}),V=new Set;E0.walk(K,(U)=>{if(U.type!=="Url")return;let F=this.snapshotTarget(X,U.value,W);if(F)V.add(F)});let j=new Map;return await Promise.all([...V].map(async(U)=>{try{let F=await this.fetchSnapshotResource(X,U,J),w=Z4(F);if(!w)return;J.inlinedUrls.add(F.url),j.set(U,w)}catch{}})),E0.walk(K,{enter:(U,F,w)=>{if(U.type==="Atrule"&&U.name.toLowerCase()==="import"){w.remove(F);return}if(U.type!=="Url")return;let q=this.snapshotTarget(X,U.value,W);U.value=q?j.get(q)??"data:,":"data:,"}}),E0.generate(K)}catch{return""}}async inlineSnapshotTree(X,Z,W,J){let K=[];for(let V of Z.childNodes){if(X4(V)){let j=V.tagName.toLowerCase();if(j==="link"&&(Y2(V,"rel")??"").toLowerCase().split(/\s+/).includes("stylesheet")){let F=Y2(V,"href"),w=F?this.snapshotTarget(X,F,W):null;if(!w)continue;try{let q=await this.fetchSnapshotResource(X,w,J);if(W4(q.headers)!=="text/css")continue;V.tagName="style",V.nodeName="style",V.attrs=V.attrs.filter((v)=>v.name.toLowerCase()==="media"),V.childNodes=[{nodeName:"#text",value:await this.inlineSnapshotCss(X,q.body.toString("utf8"),q.url,J),parentNode:V}],J.inlinedUrls.add(q.url)}catch{continue}}else if(j==="style"){for(let F of V.childNodes)if("value"in F&&typeof F.value==="string")F.value=await this.inlineSnapshotCss(X,F.value,W,J)}let U=Y2(V,"style");if(U!==null){let F=await this.inlineSnapshotCss(X,`x{${U}}`,W,J);L1(V,"style",F.replace(/^x\{/,"").replace(/\}$/,""))}if(j==="img"){let F=Y2(V,"src"),w=F?this.snapshotTarget(X,F,W):null;if(w)try{let q=await this.fetchSnapshotResource(X,w,J),v=Z4(q);if(L1(V,"src",v??"data:,"),v)J.inlinedUrls.add(q.url)}catch{L1(V,"src","data:,")}}await this.inlineSnapshotTree(X,V,W,J)}K.push(V)}Z.childNodes=K}setSnapshotScroll(X,Z,W){for(let J of X.childNodes){if(!X4(J))continue;if(J.tagName.toLowerCase()==="html")return L1(J,"data-ideawave-scroll-x",String(Z)),L1(J,"data-ideawave-scroll-y",String(W)),!0;if(this.setSnapshotScroll(J,Z,W))return!0}return!1}async buildSnapshot(X,Z){let W=Buffer.byteLength(Z.html,"utf8");if(W>q1)throw Error("Browser snapshot exceeds the 20 MiB limit");let J=J2(Z.html),K={resources:new Map,inlinedUrls:new Set,totalBytes:W};this.setSnapshotScroll(J,Z.scrollX,Z.scrollY),await this.inlineSnapshotTree(X,J,Z.sourceUrl,K);let V=B1(J),j=r6(V),U=Z.title.trim().slice(0,500)||V.match(/<title[^>]*>([^<]*)<\/title>/i)?.[1]?.trim()||"";return{html:j,sourceUrl:Z.sourceUrl,title:U,revision:Z.revision,byteLength:Buffer.byteLength(j,"utf8"),resourceCount:K.inlinedUrls.size,createdAt:new Date().toISOString()}}async proxy(X,Z,W,J){let K=J.pathname.slice(this.proxyPathPrefix(W).length)+J.search+J.hash;if(!/^https?:\/\//i.test(K)){Z.writeHead(400,{"content-type":"text/plain"}),Z.end(`Bad proxy target: ${K}`);return}let V=await v7(X),j=X.method??"GET",U=K,F=V,w=null;this.storeClientCookies(W.profile,X.headers.cookie);for(let M=0;;M+=1){let h=new URL(U),N=b7(X);for(let b of["host","connection","origin","referer","cookie","accept-encoding"])N.delete(b);let g=this.cookieHeader(W.profile,h.hostname);if(g)N.set("cookie",g);N.set("referer",`${h.origin}/`);let C={method:j,headers:N,redirect:"manual",...j!=="GET"&&j!=="HEAD"&&F?{body:F,duplex:"half"}:{}};try{w=await fetch(U,C)}catch(b){Z.writeHead(502,{"content-type":"text/plain"}),Z.end(`Proxy fetch error for ${U}: ${b instanceof Error?b.message:String(b)}`);return}let m=w.headers.getSetCookie,k=typeof m==="function"?m.call(w.headers):[];if(k.length>0)this.storeCookies(W.profile,k,h.hostname);let G=w.headers.get("location");if(w.status>=300&&w.status<400&&G&&M<15){if(U=new URL(G,U).href,w.status===303||j==="POST"&&(w.status===301||w.status===302))j="GET",F=void 0;continue}break}if(!w)throw Error("Browser proxy received no response");W.lastUsedAt=Date.now();let q=new Headers;w.headers.forEach((M,h)=>{if(!n6.has(h.toLowerCase()))q.set(h,M)}),q.set("access-control-allow-origin","*"),q.set("access-control-allow-credentials","true");for(let M of["location","content-location"]){let h=q.get(M);if(h)q.set(M,R0(h,U,this.proxyUrlPrefix(W)))}let v=q.get("refresh");if(v){let M=v.toLowerCase().indexOf("url=");if(M>=0)q.set("refresh",v.slice(0,M+4)+R0(v.slice(M+4).trim(),U,this.proxyUrlPrefix(W)))}let y=q.get("link");if(y){let M=y.replace(/<([^>]+)>/g,(h,N)=>`<${R0(N,U,this.proxyUrlPrefix(W))}>`).replace(/;\s*integrity\s*=\s*(?:"[^"]*"|'[^']*'|[^;,\s]+)/gi,"");q.set("link",M)}let P=(w.headers.get("content-type")??"").toLowerCase(),O;if(P.includes("text/html")){let M=t6();O=FX({html:await w.text(),sourceUrl:U,proxyOrigin:this.wrapperOrigin(W),proxyUrlPrefix:this.proxyUrlPrefix(W),bridgeToken:W.bridgeToken,revision:M,navigateUrlPrefix:`${this.wrapperOrigin(W)}${this.sessionPath(W)}/navigate?url=`,sessionStorageNamespace:W.id}),q.delete("etag"),q.delete("last-modified"),q.set("cache-control","no-store"),q.append("set-cookie",`__browser_kit_origin_${W.id}=${encodeURIComponent(new URL(U).origin)}; Path=/; SameSite=Lax`)}else if(P.includes("text/css"))O=UX({css:await w.text(),baseUrl:U,proxyUrlPrefix:this.proxyUrlPrefix(W)}),q.delete("etag"),q.delete("last-modified"),q.set("cache-control","no-store");else O=Buffer.from(await w.arrayBuffer());if(Z.writeHead(w.status,y7(q)),X.method==="HEAD")Z.end();else Z.end(O)}async handleHttpRequest(X,Z){let W=new URL(X.url??"/","http://localhost"),J=W.pathname.startsWith("/browser-kit/"),K=this.profileForRequest(X);if(!K){if(!J)return!1;return Z.writeHead(404,{"content-type":"text/plain"}),Z.end("Browser-kit profile not found"),!0}if(!J){let U=this.escapedSessionForProfile(K);if(!U)return Z.writeHead(409,{"content-type":"text/plain"}),Z.end("Browser-kit request could not be assigned to one active card"),!0;let F=null,w=X.headers.referer;if(w)try{let v=new URL(w),y=LX(v.pathname);if(y?.sessionId===U.id&&y.route.startsWith("/proxy/"))F=new URL(y.route.slice(7)).origin}catch{}if(!F){let v=`__browser_kit_origin_${U.id}=`,y=X.headers.cookie?.split(";").map((P)=>P.trim()).find((P)=>P.startsWith(v));if(y)try{F=decodeURIComponent(y.slice(v.length))}catch{}}if(!F)F=new URL(U.currentUrl).origin;let q=`${F}${W.pathname}${W.search}`;return Z.writeHead(307,{location:`${this.proxyUrlPrefix(U)}${q}`,"cache-control":"no-store"}),Z.end(),!0}if(W.pathname==="/browser-kit/sw.js"){if(X.method!=="GET"&&X.method!=="HEAD")return Z.writeHead(405),Z.end(),!0;if(Z.writeHead(200,{"content-type":"text/javascript; charset=utf-8","service-worker-allowed":"/","cache-control":"no-store"}),X.method==="HEAD")Z.end();else Z.end(qX());return!0}let V=LX(W.pathname),j=V?this.sessions.get(V.sessionId):void 0;if(!V||!j||j.profile!==K)return Z.writeHead(404,{"content-type":"text/plain"}),Z.end("Browser-kit session not found"),!0;if(j.lastUsedAt=Date.now(),V.route==="/wrapper"){if(X.method!=="GET"&&X.method!=="HEAD")return Z.writeHead(405),Z.end(),!0;let U=O7(j,j.currentUrl);if(Z.writeHead(200,{"content-type":"text/html; charset=utf-8","cache-control":"no-store","content-security-policy":`default-src 'self'; script-src 'self' 'unsafe-inline'; worker-src 'self'; style-src 'unsafe-inline'; frame-src 'self'; connect-src 'self'; frame-ancestors ${j.frontendOrigin}`,"access-control-allow-origin":j.frontendOrigin,vary:"Origin"}),X.method==="HEAD")Z.end();else Z.end(U);return!0}if(V.route==="/navigate"){if(X.method!=="GET"&&X.method!=="HEAD")return Z.writeHead(405),Z.end(),!0;let U=W.searchParams.get("url");if(!U)return Z.writeHead(400),Z.end(),!0;return j.currentUrl=d0(U),Z.writeHead(307,{location:`${this.proxyUrlPrefix(j)}${j.currentUrl}`,"cache-control":"no-store"}),Z.end(),!0}if(V.route.startsWith("/proxy/"))return await this.proxy(X,Z,j,W),!0;return Z.writeHead(404),Z.end(),!0}handleUpgrade(X,Z,W){let J=new URL(X.url??"/","http://localhost"),K=LX(J.pathname);if(!K?.route.startsWith("/proxy/"))return!1;let V=this.profileForRequest(X),j=this.sessions.get(K.sessionId);if(!V||!j||j.profile!==V)return Z.destroy(),!0;let U=K.route.slice(7)+J.search+J.hash;if(!/^wss?:\/\//i.test(U))return Z.destroy(),!0;return this.socketServer.handleUpgrade(X,Z,W,(F)=>{let w;try{let v=new URL(U),y={origin:v.origin},P=this.cookieHeader(j.profile,v.hostname);if(P)y.cookie=P;w=new V2(U,{headers:y})}catch{F.close(1011,"bad target");return}let q=[];w.binaryType="arraybuffer",w.on("open",()=>{for(let v of q)w.send(v);q.length=0}),F.on("message",(v)=>{if(w.readyState===V2.OPEN)w.send(v);else q.push(v)}),w.on("message",(v)=>{if(F.readyState===V2.OPEN)F.send(v)}),F.on("close",()=>w.close()),F.on("error",()=>w.close()),w.on("close",(v,y)=>{if(F.readyState===V2.OPEN)F.close(v>=1000&&v<=4999?v:1000,y.toString())}),w.on("error",()=>F.close(1011,"upstream error"))}),!0}}function R7(X){if(!X)return null;let Z=X.indexOf("/");if(Z<=0)return null;return X.slice(0,Z)}function H2(X){let Z=[...X.models];if(X.adapterId!=="opencode"||Z.length===0)return Z;let W=R7(X.currentModelId)??(Z.some((K)=>K.id.startsWith("opencode/"))?"opencode":null);if(!W)return Z;let J=Z.filter((K)=>K.id===X.currentModelId||K.id.startsWith(`${W}/`));return J.length>0?J:Z}import{Readable as u7,Writable as A7}from"node:stream";import{ClientSideConnection as F4,ndJsonStream as B4}from"@agentclientprotocol/sdk";import f0 from"node:fs/promises";import X0 from"node:path";class x1 extends Error{constructor(X){super(X);this.name="PathTraversalError"}}class xX extends Error{constructor(X){super(X);this.name="HiddenPathError"}}class bX extends Error{constructor(X){super(X);this.name="RunFolderFileTooLargeError"}}class P1 extends Error{constructor(X){super(X);this.name="RunFolderBinaryFileError"}}var f7=new Set([".bzr",".cache",".claude",".config",".env",".git",".hg",".idea",".obsidian",".svn",".vscode","node_modules"]),Q4=1e6,C7=4096,h7=new TextDecoder("utf-8",{fatal:!0});function M7(X){return X.split(/[\\/]+/).filter((Z)=>Z.length>0)}function w2(X){if(X0.isAbsolute(X))throw new x1("Absolute paths are not allowed");for(let Z of M7(X)){if(Z===".")continue;if(Z==="..")throw new x1("Parent-directory traversal is not allowed");if(Z.startsWith(".")||f7.has(Z))throw new xX(`Path segment "${Z}" is hidden or configuration data`)}}function N7(X){w2(X);let Z=X0.normalize(X||".");return Z==="."?"":Z}function g7(X,Z,W){let J=X0.relative(X,Z);if(J===".."||J.startsWith(`..${X0.sep}`)||X0.isAbsolute(J))throw new x1(`Path "${W}" resolves outside the run folder`);if(J.length>0)w2(J);return J}async function PX(X,Z){w2(Z);let W=X0.resolve(X,Z||"."),J;try{J=await f0.realpath(W)}catch(K){if(K.code!=="ENOENT")throw K;let V=X0.dirname(W),j=[X0.basename(W)];while(V!==X&&V!==X0.dirname(V))try{V=await f0.realpath(V);break}catch(U){if(U.code!=="ENOENT")throw U;j.unshift(X0.basename(V)),V=X0.dirname(V)}J=X0.join(V,...j)}return g7(X,J,Z),J}async function D7(X,Z){let W=await f0.realpath(X);return PX(W,Z)}function $7(X){let Z=X.subarray(0,Math.min(X.length,C7));if(Z.length===0)return!1;let W=0;for(let J of Z){if(J===0)return!0;let K=J===9||J===10||J===12||J===13;if(J<32&&!K)W+=1}return W/Z.length>0.3}async function U2(X,Z){let W=await D7(X,Z),J=await f0.stat(W);if(!J.isFile())throw new P1(`Path "${Z}" is not a text file`);if(J.size>Q4)throw new bX(`File "${Z}" is too large to read (${J.size} bytes, max ${Q4} bytes)`);let K=await f0.readFile(W);if($7(K))throw new P1(`File "${Z}" appears to be binary, not text`);try{return h7.decode(K)}catch{throw new P1(`File "${Z}" is not valid UTF-8 text`)}}function G7(X){if(X.isDirectory())return"directory";if(X.isFile())return"file";if(X.isSymbolicLink())return"symlink";return"other"}function J4(X){return X.split(X0.sep).join("/")}async function K4(X,Z=""){let W=await f0.realpath(X),J=N7(Z),K=await PX(W,J),V=await f0.readdir(K,{withFileTypes:!0}),j=[];for(let U of V){let F=J?X0.join(J,U.name):U.name;try{w2(F);let w=await PX(W,F),q=await f0.stat(w);j.push({name:U.name,path:J4(F),type:G7(U),size:U.isFile()?q.size:null})}catch{}}return j.sort((U,F)=>{if(U.type==="directory"&&F.type!=="directory")return-1;if(U.type!=="directory"&&F.type==="directory")return 1;return U.name.localeCompare(F.name)}),{path:J4(J),absolutePath:K,entries:j}}var vX={fs:{readTextFile:!0,writeTextFile:!1},terminal:!1};function V4(X){return{readTextFile:async(Z)=>{return{content:await U2(X,Z.path)}}}}import{spawn as m7}from"node:child_process";function yX(X){let Z=m7(X.command,X.args,{cwd:X.cwd,env:X.env,stdio:["pipe","pipe","pipe"],...k1(X.command)});if(!Z.stdin||!Z.stdout||!Z.stderr)throw Error("Failed to allocate stdio streams for ACP subprocess");let{stdin:W,stdout:J,stderr:K}=Z,V=4096,j=[],U=0;K.on("data",(h)=>{j.push(h),U+=h.length;while(U>V*2&&j.length>1){let N=j.shift();if(N)U-=N.length}});let F=()=>{let h=Buffer.concat(j).toString("utf8");return h.length>V?h.slice(-V):h},w=!1,q=!1,v,y,P=new Promise((h)=>{v=h}),O=new Promise((h)=>{y=h}),M=(h)=>{if(q)return;if(q=!0,v(h),!w)y(h)};return Z.on("exit",(h,N)=>{M({code:h,signal:N,stderr:F()})}),Z.on("error",(h)=>{let N=F(),g=h?.message??String(h);M({code:null,signal:null,stderr:N?`${g}
|
|
1047
|
+
${N}`:g})}),{stdin:W,stdout:J,stderr:K,kill:(h="SIGTERM")=>{if(w)return;w=!0;try{Z.kill(h)}catch{}},waitForExit:P,processCrashed:O}}var E7=["mcp_ideawave_board_","ideawave_board_","ideawave-board_","ideawave-board.","ideawave.board."];function k7(X){let Z=X.toLowerCase();for(let W of E7)if(Z.startsWith(W))return X.slice(W.length);if(/^mcp[-_.]/i.test(X))return X.slice(4);return X}function F2(X){return k7(X.trim())}function OX(X){let Z=F2(X);if(!Z)return"Tool";if(!/[-_.]/.test(Z))return Z.charAt(0).toUpperCase()+Z.slice(1);let W=Z.replace(/[-_.]+/g," ").replace(/\s+/g," ").trim();if(!W)return"Tool";return W.charAt(0).toUpperCase()+W.slice(1)}function RX(X){let Z=X?.toLowerCase();if(Z==="completed"||Z==="complete"||Z==="done"||Z==="success"||Z==="succeeded")return"completed";if(Z==="failed"||Z==="error"||Z==="errored")return"failed";return"running"}function fX(X){if(typeof X!=="string")return null;let Z=X.trim();return Z?Z:null}function Y4(X){if(typeof X!=="string")return"Tool";let Z=X.trim();return Z?Z:"Tool"}function _7(X,Z){if(!X||typeof X!=="object"||Array.isArray(X))return null;let W=X;for(let J of Z){let K=W[J];if(typeof K==="string"&&K.trim())return K.trim()}return null}function CX(X,Z){let W=X.trim().toLowerCase();if(W==="skill"||W==="workflow"||W==="tool"||W==="invalid"){let J=_7(Z,["skillName","workflowName","toolName","name","title"]);if(J){let K=W==="skill"?" skill":W==="workflow"?" workflow":"";return`${OX(J)}${K}`}}if(W==="invalid")return"Tool call";return OX(X)}var I7=33,z4=1600;function k0(X){if(X.length<=z4)return X;return`${X.slice(0,z4-22)}
|
|
1048
|
+
... truncated`}function q2(X){let Z=X.replace(/\r\n?/g,`
|
|
1049
1049
|
`),W=Z.trim();if(W.startsWith('"')&&W.endsWith('"')||W.startsWith("'")&&W.endsWith("'"))try{let K=JSON.parse(W);if(typeof K==="string")return K.replace(/\r\n?/g,`
|
|
1050
1050
|
`)}catch{return Z}if(!Z.includes("\\\""))return Z;let J=Z.replace(/\\r\\n/g,`
|
|
1051
1051
|
`).replace(/\\n/g,`
|
|
1052
1052
|
`).replace(/\\r/g,`
|
|
1053
|
-
`).replace(/\\t/g,"\t").replace(/\\"/g,'"');try{let K=JSON.parse(J);if(K!==null&&typeof K==="object")return J}catch{return Z}return Z}function
|
|
1053
|
+
`).replace(/\\t/g,"\t").replace(/\\"/g,'"');try{let K=JSON.parse(J);if(K!==null&&typeof K==="object")return J}catch{return Z}return Z}function v0(X){if(X===void 0||X===null)return null;if(typeof X==="string"){let Z=q2(X).trim();return Z?k0(Z):null}if(typeof X==="number"||typeof X==="boolean"||typeof X==="bigint")return String(X);try{return k0(JSON.stringify(X,null,2))}catch{return k0(q2(String(X)))}}function S7(X){if(!X||typeof X!=="object")return null;let Z=X;if(Z.type==="text"&&typeof Z.text==="string")return q2(Z.text);if(Z.type==="image")return"[image]";if(Z.type==="resource")return"[resource]";if(Z.type==="content"){let W=Z.content;if(W&&typeof W==="object"){let J=W;if(J.type==="text"&&typeof J.text==="string")return q2(J.text);if(J.type==="image")return"[image]";if(J.type==="resource")return"[resource]"}}if(Z.type==="diff")return`Diff: ${typeof Z.path==="string"?Z.path:"unknown file"}`;if(Z.type==="terminal")return`Terminal: ${typeof Z.terminalId==="string"?Z.terminalId:"terminal"}`;return v0(X)}function B2(X){if(!Array.isArray(X))return null;let Z=X.map(S7).filter((W)=>Boolean(W?.trim()));if(Z.length===0)return null;return k0(Z.join(`
|
|
1054
1054
|
|
|
1055
|
-
`))}function
|
|
1055
|
+
`))}function hX(X){if(!X||typeof X!=="object"||Array.isArray(X))return v0(X);let Z=X,W=B2(Z.content);if(W)return W;for(let V of["output","result","text","message"]){let j=v0(Z[V]);if(j)return j}let J=v0(Z.stdout),K=v0(Z.stderr);if(J||K)return k0([J?`stdout:
|
|
1056
1056
|
${J}`:null,K?`stderr:
|
|
1057
1057
|
${K}`:null].filter(Boolean).join(`
|
|
1058
1058
|
|
|
1059
|
-
`));return
|
|
1059
|
+
`));return v0(X)}function j4(X,Z){if(!Z)return X;if(!X)return Z;if(X===Z||X.endsWith(Z))return X;if(Z.startsWith(X))return Z;return k0(`${X}
|
|
1060
1060
|
|
|
1061
|
-
${Z}`)}function
|
|
1061
|
+
${Z}`)}function MX(X){if(!Array.isArray(X))return null;let Z=X.flatMap((W)=>{if(!W||typeof W!=="object")return[];let J=W;if(typeof J.path!=="string"||!J.path.trim())return[];let K=typeof J.line==="number"?`:${J.line}`:"";return[`${J.path}${K}`]});return Z.length>0?Z.slice(0,5):null}function H4(X){let{ctx:Z,appendText:W,appendToolActivity:J}=X,K=X.flushIntervalMs??I7,V="",j="",U=0,F=null,w=!1,q={},v=new Map,y=(b)=>{if(v.set(b.toolCallId,b),!J)return;J({boardId:Z.boardId,cardId:Z.cardId,runId:Z.runId,entry:b}).catch((R)=>{console.warn("[streamAdapter] appendToolActivity failed",R)})},P=(b)=>{let R=`${Z.runId}:thought`,D=v.get(R);if(!D||D.status!=="running")return;y({...D,status:"completed",completedAt:D.completedAt??b})},O=(b)=>{for(let R of v.values()){if(R.status!=="running"||R.rawTitle.toLowerCase()!=="toolsearch")continue;y({...R,status:"completed",completedAt:R.completedAt??b})}},M=(b)=>{for(let R of Array.from(v.values())){if(R.status!=="running")continue;if(R.kind==="thought"||R.rawTitle==="agent_thought")continue;y({...R,status:"completed",completedAt:R.completedAt??b})}},h="",N=0,g=null,C=null,m=(b)=>{if(b===h)return;h=b,N=Date.now(),W({boardId:Z.boardId,cardId:Z.cardId,runId:Z.runId,text:b}).catch((R)=>{console.warn("[streamAdapter] appendText failed",R)})},k=()=>{if(g!==null)clearTimeout(g),g=null;if(C!==null){let b=C;C=null,m(b)}},G=(b)=>{let R=Date.now()-N;if(R>=K&&g===null){m(b);return}if(C=b,g===null){let D=Math.max(0,K-R);g=setTimeout(()=>{g=null,k()},D)}};return{onSessionUpdate:async(b)=>{X.onAnyUpdate?.();let R=b.update;switch(q[R.sessionUpdate]=(q[R.sessionUpdate]??0)+1,R.sessionUpdate){case"agent_message_chunk":{let D=new Date().toISOString();if(P(D),R.content.type==="text"){if(R.content.text.length>0){if(w&&V.length>0&&!/\s$/.test(V)&&!/^\s/.test(R.content.text))V+=`
|
|
1062
1062
|
|
|
1063
|
-
`;V+=x.content.text,w=!1,m(V)}}else{let T=`agent_message_chunk:${x.content.type}`;q[T]=(q[T]??0)+1}return}case"agent_thought_chunk":{if(x.content.type!=="text")return;H+=x.content.text;let $=new Date().toISOString(),T=`${Z.runId}:thought`,i=y.get(T);O({toolCallId:T,rawTitle:"agent_thought",title:"Thought",kind:"thought",status:"running",startedAt:i?.startedAt??$,completedAt:null,contentPreview:E0(H.trim())});return}case"user_message_chunk":return;case"tool_call":{U+=1,w=V.length>0;let $=e6(x.title),T=yX(x.status),i=new Date().toISOString();b(i),v(i),O({toolCallId:x.toolCallId,rawTitle:$,title:OX($,x.rawInput),kind:RX(x.kind),status:T,startedAt:i,completedAt:T==="running"?null:i,inputPreview:x0(x.rawInput),outputPreview:fX(x.rawOutput),contentPreview:H2(x.content),locations:CX(x.locations)});return}case"tool_call_update":{let $=y.get(x.toolCallId);if(!$){let Z0=e6(x.title),W0=yX(x.status),h1=new Date().toISOString();O({toolCallId:x.toolCallId,rawTitle:Z0,title:OX(Z0,x.rawInput),kind:RX(x.kind),status:W0,startedAt:h1,completedAt:W0==="running"?null:h1,inputPreview:x0(x.rawInput),outputPreview:fX(x.rawOutput),contentPreview:H2(x.content),locations:CX(x.locations)});return}let T=x.status===void 0||x.status===null?$.status:yX(x.status),i=typeof x.title==="string"&&x.title.trim().length>0?x.title:$.rawTitle,S0=typeof x.title==="string"&&x.title.trim().length>0,_=T==="running"?$.completedAt:$.completedAt??new Date().toISOString(),s=x.content===void 0?$.contentPreview:Z4($.contentPreview,H2(x.content)),A=x.rawOutput===void 0?$.outputPreview:Z4($.outputPreview,fX(x.rawOutput));O({...$,rawTitle:i,title:S0?OX(i,x.rawInput):$.title,kind:x.kind===void 0?$.kind:RX(x.kind),status:T,completedAt:_,inputPreview:x.rawInput===void 0?$.inputPreview:x0(x.rawInput),outputPreview:A,contentPreview:s,locations:x.locations===void 0?$.locations:CX(x.locations)});return}case"plan":F=x.entries;return;case"available_commands_update":return;case"current_mode_update":return;default:return}},getFinalText:()=>V,getToolCallCount:()=>U,getLatestPlan:()=>F,getUpdateTypeCounts:()=>({...q}),flush:(h)=>{let x=new Date().toISOString();if(b(x),h?.completeOpenToolCalls)f(x);I()}}}var M7=new Set(["ECONNRESET","EPIPE"]);function U2(X){if(!X||typeof X!=="object")return!1;if(X instanceof Error&&X.message==="ACP connection closed")return!0;let Z="code"in X?X.code:void 0;return typeof Z==="string"&&M7.has(Z)}var P1=1,Q4=-32000;function J4(X){if(X.awaitingInput)return!1;return X.nowMs-X.lastUpdateMs>=X.windowMs}function Y4(X){if(!X||typeof X!=="object")return!1;return X.code===Q4}var $7=300000,G7=$7,m7=5000;function E7(X){let Z=Math.max(1,Math.round(X/1000));return`Runtime has not responded for ${Z} ${Z===1?"second":"seconds"}. Retry the agent run.`}function z4(){return{name:"ideawave-cli",title:"IdeaWave CLI",version:"0.0.93".trim()?"0.0.93":"dev"}}function j4(X){if(X===P1)return;throw new S(`Unsupported ACP protocol version ${X}; expected ${P1}`)}function H4(X){return g7.toWeb(X)}function w4(X){return D7.toWeb(X)}function hX(X){return X!==null&&typeof X==="object"}function k7(X){if(!Array.isArray(X))return[];let Z=[];for(let W of X){if(!hX(W))continue;if(typeof W.group==="string"&&Array.isArray(W.options)){let J=typeof W.name==="string"?W.name:W.group;for(let K of W.options){if(!hX(K))continue;if(typeof K.value!=="string"||typeof K.name!=="string")continue;Z.push({value:K.value,name:K.name,description:typeof K.description==="string"?K.description:null,group:W.group,groupName:J})}continue}if(typeof W.value!=="string"||typeof W.name!=="string")continue;Z.push({value:W.value,name:W.name,description:typeof W.description==="string"?W.description:null,group:null,groupName:null})}return Z}function _7(X){if(!hX(X))return null;if(typeof X.id!=="string"||typeof X.name!=="string")return null;let Z=typeof X.category==="string"?X.category:null,W=typeof X.description==="string"?X.description:null;if(X.type==="select"){let J=typeof X.currentValue==="string"?X.currentValue:null;return{id:X.id,name:X.name,category:Z,description:W,type:"select",currentValue:J,options:k7(X.options)}}if(X.type==="boolean"){let J=typeof X.currentValue==="boolean"?X.currentValue:typeof X.value==="boolean"?X.value:null;return{id:X.id,name:X.name,category:Z,description:W,type:"boolean",currentValue:J,options:[]}}return null}function NX(X){let Z=(X.configOptions??[]).map(_7).filter((U)=>U!==null),W=Z.find((U)=>U.type==="select"&&U.category==="model")??Z.find((U)=>U.type==="select"&&U.id==="model")??null,J=W?.options.map((U)=>({id:U.value,name:U.name,description:U.description??null})),K=I7(X.models),V=J&&J.length>0?J:K&&K.length>0?K:null,H=(typeof W?.currentValue==="string"?W.currentValue:null)??S7(X.models)??null;return{models:V,currentModelId:H,configOptions:Z,modelConfigId:W?.id??null}}function I7(X){if(!X||!Array.isArray(X.availableModels))return null;let Z=[];for(let W of X.availableModels){if(typeof W.modelId!=="string")continue;Z.push({id:W.modelId,name:typeof W.name==="string"?W.name:null,description:typeof W.description==="string"?W.description:null})}return Z.length>0?Z:null}function S7(X){return typeof X?.currentModelId==="string"?X.currentModelId:null}function u7(X,Z){let W=[];if(X.trim())W.push({type:"text",text:X});for(let J of Z)if(J.content.trim())W.push({type:"text",text:J.content});return W}var l7=500;function U4(X){return new Promise((Z)=>{let W=setTimeout(()=>Z({code:null,signal:null,stderr:""}),l7);X.then((J)=>{clearTimeout(W),Z(J)})})}function A7(X){if(typeof X.value==="boolean")return{sessionId:X.sessionId,configId:X.configId,type:"boolean",value:X.value};return{sessionId:X.sessionId,configId:X.configId,value:X.value}}function T7(X,Z){let W=NX({configOptions:Z.configOptions});return{models:W.models??X.models,currentModelId:W.currentModelId??X.currentModelId,configOptions:W.configOptions,modelConfigId:W.modelConfigId??X.modelConfigId}}function F4(X,Z){if(X==="default")return null;if(!Z||Z.length===0)return X;let W=Z.find((w)=>w.id===X);if(W)return W.id;let J=X.toLowerCase(),K=J.includes("opus")?"opus":J.includes("sonnet")?"sonnet":J.includes("haiku")?"haiku":null;if(!K)return X;let V=(w)=>`${w.id} ${w.name??""} ${w.description??""}`.toLowerCase(),H=Z.filter((w)=>V(w).includes(K));if(H.length===0)return X;let F=(J.includes("1m")?H.find((w)=>V(w).includes("1m")):void 0)??H[0];return F?F.id:X}async function F2(X){try{let Z=await X.conn.setSessionConfigOption(A7({sessionId:X.sessionId,configId:X.configId,value:X.value}));return T7(X.metadata,Z)}catch(Z){return console.warn(`[acp] setSessionConfigOption(${X.label}) failed; using agent default.`,Z instanceof Error?Z.message:Z),X.metadata}}async function MX(X){let Z=bX(X.spawn),W=[],J=0,K=4096;Z.stderr.on("data",(_)=>{W.push(_),J+=_.length;while(J>K*2&&W.length>1){let s=W.shift();if(s)J-=s.length}});let V=()=>{let _=Buffer.concat(W).toString("utf8");return _.length>K?_.slice(-K):_},H=t6(X.spawn.cwd),U={current:null},F={current:null},w={at:Date.now()},q=null,y=w4(Z.stdin),O=H4(Z.stdout),b=V4(y,O),f=new K4((_)=>({requestPermission:async(s)=>{let A=s.options,Z0=A?.find((W0)=>W0.kind==="allow_once")??A?.find((W0)=>W0.kind==="allow_always");if(Z0)return{outcome:{outcome:"selected",optionId:Z0.optionId}};return{outcome:{outcome:"cancelled"}}},sessionUpdate:async(s)=>{w.at=Date.now();let A=F.current;if(A){let W0=s.update.sessionUpdate;if(A.updateCount+=1,A.updateCount===1||A.lastUpdateType!==W0||W0==="tool_call"||W0==="tool_call_update")E("acp.session_update",{runId:A.runId,cardId:A.cardId,sessionId:q,updateType:W0,updateCount:A.updateCount,elapsedMs:Date.now()-A.startedAt});A.lastUpdateType=W0}let Z0=U.current;if(Z0)await Z0.onSessionUpdate(s)},readTextFile:H.readTextFile}),b),C=()=>Z.kill();if(X.signal)X.signal.addEventListener("abort",C);let N=()=>{if(X.signal)X.signal.removeEventListener("abort",C)},g=async(_,s)=>{if(N(),Z.kill(),Y4(_))throw new l0(_.message??"Authentication required",s);if(U2(_)){if(X.signal?.aborted)throw new S("ACP session cancelled: abort signal received");let A=await U4(Z.waitForExit);throw new S(`Runtime process exited before completion: ${A.stderr?.trim()??""}`)}throw _},M;try{M=await f.initialize({protocolVersion:P1,clientCapabilities:xX,clientInfo:z4()})}catch(_){throw await g(_,[]),Error("unreachable")}try{j4(M.protocolVersion)}catch(_){throw N(),Z.kill(),_}let G=M.authMethods?.map((_)=>_.id)??[],I;try{I=await f.newSession({cwd:X.spawn.cwd,mcpServers:X.mcpServers??[],...X.isolateAmbientToolSources?{_meta:{claudeCode:{options:{settingSources:[]}}}}:{}})}catch(_){throw await g(_,G),Error("unreachable")}let m=I.sessionId;q=m;let h=NX(I),x=X.modelId??null,$=x?F4(x,h.models):null;if($&&$!==h.currentModelId)if(h.modelConfigId)h=await F2({conn:f,sessionId:m,configId:h.modelConfigId,value:$,metadata:h,label:`${h.modelConfigId}=${$}`});else console.warn(`[acp] runtime did not advertise a model config option for ${$}; using agent default.`);for(let[_,s]of Object.entries(X.configValues??{}).sort(([A],[Z0])=>A.localeCompare(Z0))){if(_===h.modelConfigId)continue;if(!h.configOptions.some((A)=>A.id===_))continue;h=await F2({conn:f,sessionId:m,configId:_,value:s,metadata:h,label:`${_}=${String(s)}`})}N();let T=!1,i=async()=>{if(T)return;T=!0,Z.kill(),await Promise.race([Z.waitForExit,new Promise((_)=>setTimeout(_,2000))])},S0=!1;return Z.processCrashed.then(()=>{S0=!0}),{sessionId:m,availableModels:h.models,currentModelId:h.currentModelId,availableConfigOptions:h.configOptions,isAlive:()=>!T&&!S0,dispose:i,prompt:(_)=>c7({proc:Z,conn:f,sessionId:m,activeAdapter:U,activeTrace:F,lastUpdate:w,collectStderrTail:V},_)}}async function c7(X,Z){let{proc:W,conn:J,sessionId:K,activeAdapter:V,activeTrace:H,lastUpdate:U}=X,F=Date.now(),w=Z.heartbeatMs??G7,q=E7(w),y={boardId:Z.boardId,cardId:Z.cardId,runId:Z.runId},O=W4({ctx:y,appendText:Z.appendText,appendToolActivity:Z.appendToolActivity,onAnyUpdate:Z.onAnyUpdate});V.current=O,H.current={runId:Z.runId,cardId:Z.cardId,startedAt:F,updateCount:0,lastUpdateType:null},U.at=Date.now(),E("acp.prompt_started",{runId:Z.runId,cardId:Z.cardId,sessionId:K,heartbeatWindowMs:w});let b=!1,v=null,f=()=>W.kill();Z.signal.addEventListener("abort",f);try{let C=async()=>{let G=Math.min(m7,Math.max(50,Math.floor(w/2)));v=setInterval(()=>{let m=Z.isAwaitingInput?.()??!1;if(m){U.at=Date.now();return}if(J4({nowMs:Date.now(),lastUpdateMs:U.at,windowMs:w,awaitingInput:m}))b=!0,E("acp.inactivity_timeout",{runId:Z.runId,cardId:Z.cardId,sessionId:K,windowMs:w,silentForMs:Date.now()-U.at}),J.cancel({sessionId:K}).catch(()=>{return}),W.kill()},G);let I=u7(Z.prompt.systemPrompt,Z.prompt.messages);await J.prompt({sessionId:K,prompt:I}),E("acp.prompt_resolved",{runId:Z.runId,cardId:Z.cardId,sessionId:K,elapsedMs:Date.now()-F}),O.flush({completeOpenToolCalls:!0})},N=W.waitForExit.then((G)=>({kind:"exited",exit:G})),g=C().then(()=>({kind:"ok"})).catch(async(G)=>{if(U2(G))return W.kill(),{kind:"crashed",exit:await U4(W.waitForExit)};throw G}),M;try{M=await Promise.race([g,W.processCrashed.then((G)=>({kind:"crashed",exit:G})),N])}catch(G){if(b)throw new w0(q);throw G}if(b)throw new w0(q);if(M.kind!=="ok"&&Z.signal.aborted)throw new S("ACP session cancelled: abort signal received");if(M.kind==="crashed")throw new S(`Runtime process exited before completion: ${M.exit.stderr.trim()}`);if(M.kind==="exited"){if(b)throw new w0(q);throw new S(`Runtime process exited unexpectedly: ${M.exit.stderr.trim()}`)}return{modelReported:"unknown",finalText:O.getFinalText(),toolCallsExecuted:O.getToolCallCount(),stderrTail:X.collectStderrTail(),updateTypeCounts:O.getUpdateTypeCounts()}}finally{if(E("acp.prompt_finished",{runId:Z.runId,cardId:Z.cardId,sessionId:K,elapsedMs:Date.now()-F,timedOut:b,updateCount:H.current?.updateCount??0}),v!==null)clearInterval(v);Z.signal.removeEventListener("abort",f),O.flush({completeOpenToolCalls:!0}),V.current=null,H.current=null}}var a7=30000;async function B4(X){let Z=bX(X.spawn),W=w4(Z.stdin),J=H4(Z.stdout),K=V4(W,J),H=new K4((w)=>({requestPermission:async()=>({outcome:{outcome:"cancelled"}}),sessionUpdate:async()=>{return},readTextFile:async()=>({content:""})}),K),U=()=>Z.kill();if(X.signal)X.signal.addEventListener("abort",U);let F=null;try{let w=(async()=>{let y=await H.initialize({protocolVersion:P1,clientCapabilities:xX,clientInfo:z4()});j4(y.protocolVersion);let O=y.authMethods?.map((M)=>M.id)??[],b;try{b=await H.newSession({cwd:X.spawn.cwd,mcpServers:[]})}catch(M){if(Y4(M))throw new l0(M.message??"Authentication required",O);throw M}let v=NX(b),f=X.modelId??null,C=f?F4(f,v.models):null;if(C&&C!==v.currentModelId)if(v.modelConfigId)v=await F2({conn:H,sessionId:b.sessionId,configId:v.modelConfigId,value:C,metadata:v,label:`${v.modelConfigId}=${C}`});else console.warn(`[acp] runtime did not advertise a model config option for ${C}; discovering agent default models.`);for(let[M,G]of Object.entries(X.configValues??{}).sort(([I],[m])=>I.localeCompare(m))){if(M===v.modelConfigId)continue;if(!v.configOptions.some((I)=>I.id===M))continue;v=await F2({conn:H,sessionId:b.sessionId,configId:M,value:G,metadata:v,label:`${M}=${String(G)}`})}let N=v.models??[],g=v.currentModelId;return H.cancel({sessionId:b.sessionId}).catch(()=>{return}),{models:N,configOptions:v.configOptions,currentModelId:g}})(),q=new Promise((y,O)=>{F=setTimeout(()=>{O(new w0)},a7)});return await Promise.race([w,q])}catch(w){if(U2(w)){if(X.signal?.aborted)throw new S("ACP model discovery cancelled: abort signal received");throw new S("Runtime process exited during model discovery.")}throw w}finally{if(F)clearTimeout(F);if(X.signal)X.signal.removeEventListener("abort",U);Z.kill()}}import d7 from"node:fs/promises";import B2 from"node:os";async function q4(X){let Z={version:1,globalDefaultConfigId:null,runtimes:[],boardOverrides:{},cardOverrides:{}},W;try{W=await d7.readFile(X,"utf-8")}catch(J){if(J.code==="ENOENT")return structuredClone(Z);throw J}return $1.parse(JSON.parse(W))}function gX(X,Z,W){return{...X.defaultConfigValues??{},...Z?.configValues??{},...W?.configValues??{}}}async function O0(X){let Z=X.configPath?await q4(X.configPath):await J0(),W=X.cardId?Z.cardOverrides[X.cardId]:void 0;if(W?.runtimeConfigId){let K=Z.runtimes.find((V)=>V.id===W.runtimeConfigId);if(K)return{entry:K,adapter:U0(K),runFolder:W.runFolder??K.runFolder??B2.homedir(),modelId:W.modelId??K.defaultModelId??null,configValues:gX(K,void 0,W)}}let J=Z.boardOverrides[X.boardId];if(J?.runtimeConfigId){let K=Z.runtimes.find((V)=>V.id===J.runtimeConfigId);if(K)return{entry:K,adapter:U0(K),runFolder:J.runFolder??K.runFolder??B2.homedir(),modelId:J.modelId??K.defaultModelId??null,configValues:gX(K,J)}}if(Z.globalDefaultConfigId){let K=Z.runtimes.find((V)=>V.id===Z.globalDefaultConfigId);if(K)return{entry:K,adapter:U0(K),runFolder:W?.runFolder??J?.runFolder??K.runFolder??B2.homedir(),modelId:W?.modelId??J?.modelId??K.defaultModelId??null,configValues:gX(K,J,W)}}throw new g0}async function L4(X,Z={}){let J=(Z.configPath?await q4(Z.configPath):await J0()).runtimes.find((K)=>K.id===X);if(!J)return null;return{entry:J,adapter:U0(J),runFolder:J.runFolder??B2.homedir(),modelId:Z.modelId??J.defaultModelId??null,configValues:{...J.defaultConfigValues??{},...Z.configValues??{}}}}var P4=new Map;function DX(X,Z){if(!X)return;P4.set(X,Z)}function x4(X){if(!X)return!1;return P4.get(X)??!1}var k0=new Map,$X=new Set;function GX(X){k0.get(X)?.controller.abort()}function b4(X){for(let[Z,W]of k0){if(W.frontendSessionId!==X)continue;W.controller.abort(),k0.delete(Z)}}function v4(){for(let X of k0.values())X.controller.abort();k0.clear()}function y4(X,Z){if(Z?.aborted)return!0;return X instanceof Error&&/abort signal received|session cancelled/i.test(X.message)}function R4(X,Z,W,J){if((!Z.availableModels||Z.availableModels.length===0)&&Z.availableConfigOptions.length===0)return;z0((K)=>{let V=K.runtimes.find((H)=>H.id===X);if(V){if(Z.availableModels&&Z.availableModels.length>0)V.discoveredModels=V2({adapterId:W,models:Z.availableModels,currentModelId:Z.currentModelId??J});if(Z.availableConfigOptions.length>0)V.discoveredConfigOptions=Z.availableConfigOptions}}).catch(()=>{return})}function i7(X,Z){return`${X}
|
|
1063
|
+
`;V+=R.content.text,w=!1,G(V)}}else{let T=`agent_message_chunk:${R.content.type}`;q[T]=(q[T]??0)+1}return}case"agent_thought_chunk":{if(R.content.type!=="text")return;j+=R.content.text;let D=new Date().toISOString(),T=`${Z.runId}:thought`,I=v.get(T);y({toolCallId:T,rawTitle:"agent_thought",title:"Thought",kind:"thought",status:"running",startedAt:I?.startedAt??D,completedAt:null,contentPreview:k0(j.trim())});return}case"user_message_chunk":return;case"tool_call":{U+=1,w=V.length>0;let D=Y4(R.title),T=RX(R.status),I=new Date().toISOString();P(I),O(I),y({toolCallId:R.toolCallId,rawTitle:D,title:CX(D,R.rawInput),kind:fX(R.kind),status:T,startedAt:I,completedAt:T==="running"?null:I,inputPreview:v0(R.rawInput),outputPreview:hX(R.rawOutput),contentPreview:B2(R.content),locations:MX(R.locations)});return}case"tool_call_update":{let D=v.get(R.toolCallId);if(!D){let Z0=Y4(R.title),W0=RX(R.status),N1=new Date().toISOString();y({toolCallId:R.toolCallId,rawTitle:Z0,title:CX(Z0,R.rawInput),kind:fX(R.kind),status:W0,startedAt:N1,completedAt:W0==="running"?null:N1,inputPreview:v0(R.rawInput),outputPreview:hX(R.rawOutput),contentPreview:B2(R.content),locations:MX(R.locations)});return}let T=R.status===void 0||R.status===null?D.status:RX(R.status),I=typeof R.title==="string"&&R.title.trim().length>0?R.title:D.rawTitle,q0=typeof R.title==="string"&&R.title.trim().length>0,S=T==="running"?D.completedAt:D.completedAt??new Date().toISOString(),s=R.content===void 0?D.contentPreview:j4(D.contentPreview,B2(R.content)),c=R.rawOutput===void 0?D.outputPreview:j4(D.outputPreview,hX(R.rawOutput));y({...D,rawTitle:I,title:q0?CX(I,R.rawInput):D.title,kind:R.kind===void 0?D.kind:fX(R.kind),status:T,completedAt:S,inputPreview:R.rawInput===void 0?D.inputPreview:v0(R.rawInput),outputPreview:c,contentPreview:s,locations:R.locations===void 0?D.locations:MX(R.locations)});return}case"plan":F=R.entries;return;case"available_commands_update":return;case"current_mode_update":return;default:return}},getFinalText:()=>V,getToolCallCount:()=>U,getLatestPlan:()=>F,getUpdateTypeCounts:()=>({...q}),flush:(b)=>{let R=new Date().toISOString();if(P(R),b?.completeOpenToolCalls)M(R);k()}}}var l7=new Set(["ECONNRESET","EPIPE"]);function L2(X){if(!X||typeof X!=="object")return!1;if(X instanceof Error&&X.message==="ACP connection closed")return!0;let Z="code"in X?X.code:void 0;return typeof Z==="string"&&l7.has(Z)}var b1=1,w4=-32000;function U4(X){if(X.awaitingInput)return!1;return X.nowMs-X.lastUpdateMs>=X.windowMs}function q4(X){if(!X||typeof X!=="object")return!1;return X.code===w4}var T7=300000,c7=T7,a7=5000;function d7(X){let Z=Math.max(1,Math.round(X/1000));return`Runtime has not responded for ${Z} ${Z===1?"second":"seconds"}. Retry the agent run.`}function L4(){return{name:"ideawave-cli",title:"IdeaWave CLI",version:"0.0.95".trim()?"0.0.95":"dev"}}function P4(X){if(X===b1)return;throw new l(`Unsupported ACP protocol version ${X}; expected ${b1}`)}function x4(X){return u7.toWeb(X)}function b4(X){return A7.toWeb(X)}function NX(X){return X!==null&&typeof X==="object"}function i7(X){if(!Array.isArray(X))return[];let Z=[];for(let W of X){if(!NX(W))continue;if(typeof W.group==="string"&&Array.isArray(W.options)){let J=typeof W.name==="string"?W.name:W.group;for(let K of W.options){if(!NX(K))continue;if(typeof K.value!=="string"||typeof K.name!=="string")continue;Z.push({value:K.value,name:K.name,description:typeof K.description==="string"?K.description:null,group:W.group,groupName:J})}continue}if(typeof W.value!=="string"||typeof W.name!=="string")continue;Z.push({value:W.value,name:W.name,description:typeof W.description==="string"?W.description:null,group:null,groupName:null})}return Z}function p7(X){if(!NX(X))return null;if(typeof X.id!=="string"||typeof X.name!=="string")return null;let Z=typeof X.category==="string"?X.category:null,W=typeof X.description==="string"?X.description:null;if(X.type==="select"){let J=typeof X.currentValue==="string"?X.currentValue:null;return{id:X.id,name:X.name,category:Z,description:W,type:"select",currentValue:J,options:i7(X.options)}}if(X.type==="boolean"){let J=typeof X.currentValue==="boolean"?X.currentValue:typeof X.value==="boolean"?X.value:null;return{id:X.id,name:X.name,category:Z,description:W,type:"boolean",currentValue:J,options:[]}}return null}function gX(X){let Z=(X.configOptions??[]).map(p7).filter((U)=>U!==null),W=Z.find((U)=>U.type==="select"&&U.category==="model")??Z.find((U)=>U.type==="select"&&U.id==="model")??null,J=W?.options.map((U)=>({id:U.value,name:U.name,description:U.description??null})),K=s7(X.models),V=J&&J.length>0?J:K&&K.length>0?K:null,j=(typeof W?.currentValue==="string"?W.currentValue:null)??r7(X.models)??null;return{models:V,currentModelId:j,configOptions:Z,modelConfigId:W?.id??null}}function s7(X){if(!X||!Array.isArray(X.availableModels))return null;let Z=[];for(let W of X.availableModels){if(typeof W.modelId!=="string")continue;Z.push({id:W.modelId,name:typeof W.name==="string"?W.name:null,description:typeof W.description==="string"?W.description:null})}return Z.length>0?Z:null}function r7(X){return typeof X?.currentModelId==="string"?X.currentModelId:null}function o7(X,Z){let W=[];if(X.trim())W.push({type:"text",text:X});for(let J of Z)if(J.content.trim())W.push({type:"text",text:J.content});return W}var n7=500;function v4(X){return new Promise((Z)=>{let W=setTimeout(()=>Z({code:null,signal:null,stderr:""}),n7);X.then((J)=>{clearTimeout(W),Z(J)})})}function t7(X){if(typeof X.value==="boolean")return{sessionId:X.sessionId,configId:X.configId,type:"boolean",value:X.value};return{sessionId:X.sessionId,configId:X.configId,value:X.value}}function e7(X,Z){let W=gX({configOptions:Z.configOptions});return{models:W.models??X.models,currentModelId:W.currentModelId??X.currentModelId,configOptions:W.configOptions,modelConfigId:W.modelConfigId??X.modelConfigId}}function y4(X,Z){if(X==="default")return null;if(!Z||Z.length===0)return X;let W=Z.find((w)=>w.id===X);if(W)return W.id;let J=X.toLowerCase(),K=J.includes("opus")?"opus":J.includes("sonnet")?"sonnet":J.includes("haiku")?"haiku":null;if(!K)return X;let V=(w)=>`${w.id} ${w.name??""} ${w.description??""}`.toLowerCase(),j=Z.filter((w)=>V(w).includes(K));if(j.length===0)return X;let F=(J.includes("1m")?j.find((w)=>V(w).includes("1m")):void 0)??j[0];return F?F.id:X}async function P2(X){try{let Z=await X.conn.setSessionConfigOption(t7({sessionId:X.sessionId,configId:X.configId,value:X.value}));return e7(X.metadata,Z)}catch(Z){return console.warn(`[acp] setSessionConfigOption(${X.label}) failed; using agent default.`,Z instanceof Error?Z.message:Z),X.metadata}}async function x2(X){let Z=yX(X.spawn),W=[],J=0,K=4096;Z.stderr.on("data",(S)=>{W.push(S),J+=S.length;while(J>K*2&&W.length>1){let s=W.shift();if(s)J-=s.length}});let V=()=>{let S=Buffer.concat(W).toString("utf8");return S.length>K?S.slice(-K):S},j=V4(X.spawn.cwd),U={current:null},F={current:null},w={at:Date.now()},q=null,v=b4(Z.stdin),y=x4(Z.stdout),P=B4(v,y),M=new F4((S)=>({requestPermission:async(s)=>{let c=s.options,Z0=c?.find((W0)=>W0.kind==="allow_once")??c?.find((W0)=>W0.kind==="allow_always");if(Z0)return{outcome:{outcome:"selected",optionId:Z0.optionId}};return{outcome:{outcome:"cancelled"}}},sessionUpdate:async(s)=>{w.at=Date.now();let c=F.current;if(c){let W0=s.update.sessionUpdate;if(c.updateCount+=1,c.updateCount===1||c.lastUpdateType!==W0||W0==="tool_call"||W0==="tool_call_update")E("acp.session_update",{runId:c.runId,cardId:c.cardId,sessionId:q,updateType:W0,updateCount:c.updateCount,elapsedMs:Date.now()-c.startedAt});c.lastUpdateType=W0}let Z0=U.current;if(Z0)await Z0.onSessionUpdate(s)},readTextFile:j.readTextFile}),P),h=()=>Z.kill();if(X.signal)X.signal.addEventListener("abort",h);let N=()=>{if(X.signal)X.signal.removeEventListener("abort",h)},g=async(S,s)=>{if(N(),Z.kill(),q4(S))throw new u0(S.message??"Authentication required",s);if(L2(S)){if(X.signal?.aborted)throw new l("ACP session cancelled: abort signal received");let c=await v4(Z.waitForExit);throw new l(`Runtime process exited before completion: ${c.stderr?.trim()??""}`)}throw S},C;try{C=await M.initialize({protocolVersion:b1,clientCapabilities:vX,clientInfo:L4()})}catch(S){throw await g(S,[]),Error("unreachable")}try{P4(C.protocolVersion)}catch(S){throw N(),Z.kill(),S}let m=C.authMethods?.map((S)=>S.id)??[],k;try{k=await M.newSession({cwd:X.spawn.cwd,mcpServers:X.mcpServers??[],...X.isolateAmbientToolSources?{_meta:{claudeCode:{options:{settingSources:[]}}}}:{}})}catch(S){throw await g(S,m),Error("unreachable")}let G=k.sessionId;q=G;let b=gX(k),R=X.modelId??null,D=R?y4(R,b.models):null;if(D&&D!==b.currentModelId)if(b.modelConfigId)b=await P2({conn:M,sessionId:G,configId:b.modelConfigId,value:D,metadata:b,label:`${b.modelConfigId}=${D}`});else console.warn(`[acp] runtime did not advertise a model config option for ${D}; using agent default.`);for(let[S,s]of Object.entries(X.configValues??{}).sort(([c],[Z0])=>c.localeCompare(Z0))){if(S===b.modelConfigId)continue;if(!b.configOptions.some((c)=>c.id===S))continue;b=await P2({conn:M,sessionId:G,configId:S,value:s,metadata:b,label:`${S}=${String(s)}`})}N();let T=!1,I=async()=>{if(T)return;T=!0,Z.kill(),await Promise.race([Z.waitForExit,new Promise((S)=>setTimeout(S,2000))])},q0=!1;return Z.processCrashed.then(()=>{q0=!0}),{sessionId:G,availableModels:b.models,currentModelId:b.currentModelId,availableConfigOptions:b.configOptions,isAlive:()=>!T&&!q0,dispose:I,prompt:(S)=>XW({proc:Z,conn:M,sessionId:G,activeAdapter:U,activeTrace:F,lastUpdate:w,collectStderrTail:V},S)}}async function XW(X,Z){let{proc:W,conn:J,sessionId:K,activeAdapter:V,activeTrace:j,lastUpdate:U}=X,F=Date.now(),w=Z.heartbeatMs??c7,q=d7(w),v={boardId:Z.boardId,cardId:Z.cardId,runId:Z.runId},y=H4({ctx:v,appendText:Z.appendText,appendToolActivity:Z.appendToolActivity,onAnyUpdate:Z.onAnyUpdate});V.current=y,j.current={runId:Z.runId,cardId:Z.cardId,startedAt:F,updateCount:0,lastUpdateType:null},U.at=Date.now(),E("acp.prompt_started",{runId:Z.runId,cardId:Z.cardId,sessionId:K,heartbeatWindowMs:w});let P=!1,O=null,M=()=>W.kill();Z.signal.addEventListener("abort",M);try{let h=async()=>{let m=Math.min(a7,Math.max(50,Math.floor(w/2)));O=setInterval(()=>{let G=Z.isAwaitingInput?.()??!1;if(G){U.at=Date.now();return}if(U4({nowMs:Date.now(),lastUpdateMs:U.at,windowMs:w,awaitingInput:G}))P=!0,E("acp.inactivity_timeout",{runId:Z.runId,cardId:Z.cardId,sessionId:K,windowMs:w,silentForMs:Date.now()-U.at}),J.cancel({sessionId:K}).catch(()=>{return}),W.kill()},m);let k=o7(Z.prompt.systemPrompt,Z.prompt.messages);await J.prompt({sessionId:K,prompt:k}),E("acp.prompt_resolved",{runId:Z.runId,cardId:Z.cardId,sessionId:K,elapsedMs:Date.now()-F}),y.flush({completeOpenToolCalls:!0})},N=W.waitForExit.then((m)=>({kind:"exited",exit:m})),g=h().then(()=>({kind:"ok"})).catch(async(m)=>{if(L2(m))return W.kill(),{kind:"crashed",exit:await v4(W.waitForExit)};throw m}),C;try{C=await Promise.race([g,W.processCrashed.then((m)=>({kind:"crashed",exit:m})),N])}catch(m){if(P)throw new w0(q);throw m}if(P)throw new w0(q);if(C.kind!=="ok"&&Z.signal.aborted)throw new l("ACP session cancelled: abort signal received");if(C.kind==="crashed")throw new l(`Runtime process exited before completion: ${C.exit.stderr.trim()}`);if(C.kind==="exited"){if(P)throw new w0(q);throw new l(`Runtime process exited unexpectedly: ${C.exit.stderr.trim()}`)}return{modelReported:"unknown",finalText:y.getFinalText(),toolCallsExecuted:y.getToolCallCount(),stderrTail:X.collectStderrTail(),updateTypeCounts:y.getUpdateTypeCounts()}}finally{if(E("acp.prompt_finished",{runId:Z.runId,cardId:Z.cardId,sessionId:K,elapsedMs:Date.now()-F,timedOut:P,updateCount:j.current?.updateCount??0}),O!==null)clearInterval(O);Z.signal.removeEventListener("abort",M),y.flush({completeOpenToolCalls:!0}),V.current=null,j.current=null}}var ZW=30000;async function O4(X){let Z=yX(X.spawn),W=b4(Z.stdin),J=x4(Z.stdout),K=B4(W,J),j=new F4((w)=>({requestPermission:async()=>({outcome:{outcome:"cancelled"}}),sessionUpdate:async()=>{return},readTextFile:async()=>({content:""})}),K),U=()=>Z.kill();if(X.signal)X.signal.addEventListener("abort",U);let F=null;try{let w=(async()=>{let v=await j.initialize({protocolVersion:b1,clientCapabilities:vX,clientInfo:L4()});P4(v.protocolVersion);let y=v.authMethods?.map((C)=>C.id)??[],P;try{P=await j.newSession({cwd:X.spawn.cwd,mcpServers:[]})}catch(C){if(q4(C))throw new u0(C.message??"Authentication required",y);throw C}let O=gX(P),M=X.modelId??null,h=M?y4(M,O.models):null;if(h&&h!==O.currentModelId)if(O.modelConfigId)O=await P2({conn:j,sessionId:P.sessionId,configId:O.modelConfigId,value:h,metadata:O,label:`${O.modelConfigId}=${h}`});else console.warn(`[acp] runtime did not advertise a model config option for ${h}; discovering agent default models.`);for(let[C,m]of Object.entries(X.configValues??{}).sort(([k],[G])=>k.localeCompare(G))){if(C===O.modelConfigId)continue;if(!O.configOptions.some((k)=>k.id===C))continue;O=await P2({conn:j,sessionId:P.sessionId,configId:C,value:m,metadata:O,label:`${C}=${String(m)}`})}let N=O.models??[],g=O.currentModelId;return j.cancel({sessionId:P.sessionId}).catch(()=>{return}),{models:N,configOptions:O.configOptions,currentModelId:g}})(),q=new Promise((v,y)=>{F=setTimeout(()=>{y(new w0)},ZW)});return await Promise.race([w,q])}catch(w){if(L2(w)){if(X.signal?.aborted)throw new l("ACP model discovery cancelled: abort signal received");throw new l("Runtime process exited during model discovery.")}throw w}finally{if(F)clearTimeout(F);if(X.signal)X.signal.removeEventListener("abort",U);Z.kill()}}import WW from"node:fs/promises";import b2 from"node:os";async function R4(X){let Z={version:1,globalDefaultConfigId:null,runtimes:[],boardOverrides:{},cardOverrides:{}},W;try{W=await WW.readFile(X,"utf-8")}catch(J){if(J.code==="ENOENT")return structuredClone(Z);throw J}return E1.parse(JSON.parse(W))}function DX(X,Z,W){return{...X.defaultConfigValues??{},...Z?.configValues??{},...W?.configValues??{}}}async function C0(X){let Z=X.configPath?await R4(X.configPath):await J0(),W=X.cardId?Z.cardOverrides[X.cardId]:void 0;if(W?.runtimeConfigId){let K=Z.runtimes.find((V)=>V.id===W.runtimeConfigId);if(K)return{entry:K,adapter:U0(K),runFolder:W.runFolder??K.runFolder??b2.homedir(),modelId:W.modelId??K.defaultModelId??null,configValues:DX(K,void 0,W)}}let J=Z.boardOverrides[X.boardId];if(J?.runtimeConfigId){let K=Z.runtimes.find((V)=>V.id===J.runtimeConfigId);if(K)return{entry:K,adapter:U0(K),runFolder:J.runFolder??K.runFolder??b2.homedir(),modelId:J.modelId??K.defaultModelId??null,configValues:DX(K,J)}}if(Z.globalDefaultConfigId){let K=Z.runtimes.find((V)=>V.id===Z.globalDefaultConfigId);if(K)return{entry:K,adapter:U0(K),runFolder:W?.runFolder??J?.runFolder??K.runFolder??b2.homedir(),modelId:W?.modelId??J?.modelId??K.defaultModelId??null,configValues:DX(K,J,W)}}throw new x0}async function $X(X,Z={}){let J=(Z.configPath?await R4(Z.configPath):await J0()).runtimes.find((K)=>K.id===X);if(!J)return null;return{entry:J,adapter:U0(J),runFolder:J.runFolder??b2.homedir(),modelId:Z.modelId??J.defaultModelId??null,configValues:{...J.defaultConfigValues??{},...Z.configValues??{}}}}var GX=new Map;function f4(X,Z){GX.set(X,Z)}function C4(X){GX.delete(X)}function h4(X){if(!X)return null;return GX.get(X)??null}var M4=new Map;function mX(X,Z){if(!X)return;M4.set(X,Z)}function N4(X){if(!X)return!1;return M4.get(X)??!1}var _0=new Map,EX=new Set;function _X(X){_0.get(X)?.controller.abort()}function g4(X){for(let[Z,W]of _0){if(W.frontendSessionId!==X)continue;W.controller.abort(),_0.delete(Z)}}function D4(){for(let X of _0.values())X.controller.abort();_0.clear()}function IX(X,Z){if(Z?.aborted)return!0;return X instanceof Error&&/abort signal received|session cancelled/i.test(X.message)}function SX(X,Z,W,J){if((!Z.availableModels||Z.availableModels.length===0)&&Z.availableConfigOptions.length===0)return;z0((K)=>{let V=K.runtimes.find((j)=>j.id===X);if(V){if(Z.availableModels&&Z.availableModels.length>0)V.discoveredModels=H2({adapterId:W,models:Z.availableModels,currentModelId:Z.currentModelId??J});if(Z.availableConfigOptions.length>0)V.discoveredConfigOptions=Z.availableConfigOptions}}).catch(()=>{return})}function QW(X,Z){return`${X}
|
|
1064
1064
|
|
|
1065
1065
|
Runtime run folder:
|
|
1066
1066
|
- Effective run folder: ${Z}
|
|
1067
1067
|
- When the user says "my folder", "current folder", or "run folder", they mean this selected runtime folder.
|
|
1068
1068
|
- Use list_run_folder and read_run_folder_file for run-folder inspection. Do not use attached context-card tools for this unless the user asks about attached board context.
|
|
1069
|
-
- Filesystem access is read-only and limited to this folder. Hidden/config folders and outside-folder paths are unavailable.`}async function O4(X,Z){let W=Date.now(),J=X.executionTarget??{kind:"agent-card",id:X.cardId},K=new AbortController;if(k0.set(X.runId,{controller:K,frontendSessionId:X.frontendSessionId}),J.kind==="agent-card")$X.add(J.id);E("cli.run_started",{runId:X.runId,cardId:X.cardId,frontendSessionId:X.frontendSessionId});let V=$2(X.userId,X.frontendSessionId,J),H=!1,U=null;try{let w=(X.runtimeConfigIdHint?await L4(X.runtimeConfigIdHint,{modelId:X.modelHint??null}):null)??await O0({boardId:X.boardId,...J.kind==="agent-card"?{cardId:J.id}:{}}),q=await w.adapter.resolveSpawnConfig(w.entry),y=X.toolSurface??"full",O=w.adapter.supportsImages===!0;U=q;let b=E2({userId:X.userId,frontendSessionId:X.frontendSessionId,boardId:X.boardId,toolSurface:y,imagesSupported:O,cardId:X.cardId,executionTarget:J,ideateClaims:X.ideateClaims,runFolder:w.runFolder}),v=b?[b]:[];DX(X.cardId,O);let f=X.modelHint??w.modelId,C=m2({adapterId:w.adapter.id,configId:w.entry.id,modelId:f,configValues:w.configValues,mcpUrl:b?.url??null,mcpRoutingScope:X.ideateClaims?JSON.stringify(X.ideateClaims):null,runFolder:w.runFolder,toolSurface:y});E("cli.session_acquire_started",{runId:X.runId,cardId:X.cardId,frontendSessionId:X.frontendSessionId});let N=X.promptMessages.every((G)=>typeof G.id==="string")?X.promptMessages.map((G)=>G.id):void 0,g=await M1({key:V,frontendSessionId:X.frontendSessionId,fingerprint:C,transcriptIds:N,open:()=>MX({spawn:{...q,cwd:w.runFolder},mcpServers:v,isolateAmbientToolSources:y!=="full",modelId:f,configValues:w.configValues,signal:K.signal})});E("cli.session_acquired",{runId:X.runId,cardId:X.cardId,frontendSessionId:X.frontendSessionId,elapsedMs:Date.now()-W}),R4(w.entry.id,g,w.adapter.id,f);let M;try{let G=0,I="",m=0,h=1e4;E("cli.prompt_started",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-W}),M=await g.prompt({runId:X.runId,boardId:X.boardId,cardId:X.cardId,prompt:{systemPrompt:i7(X.systemPrompt,w.runFolder),messages:X.promptMessages.map((x)=>({role:x.role,content:x.content}))},signal:K.signal,appendText:async({text:x})=>{if(G+=1,G===1)E("cli.first_partial_text_forwarded",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-W,textLength:x.length});Z({type:"partial_text",runId:X.runId,cardId:X.cardId,text:x})},appendToolActivity:async({entry:x})=>{let $=`${x.toolCallId}:${x.status}`;if($!==I)I=$,E("cli.tool_activity_forwarded",{runId:X.runId,cardId:X.cardId,toolCallId:x.toolCallId,toolStatus:x.status,elapsedMs:Date.now()-W});Z({type:"tool_activity",runId:X.runId,cardId:X.cardId,activity:x})},onAnyUpdate:()=>{let x=Date.now();if(x-m<h)return;m=x,Z({type:"run_alive",runId:X.runId,cardId:X.cardId})}})}catch(G){if(!g.isAlive()||G instanceof S||G instanceof w0)H=!0;throw G}Z({type:"run_settled",runId:X.runId,cardId:X.cardId,result:{assistantContent:M.finalText,model:M.modelReported??null,latencyMs:Date.now()-W,errorText:null,partialText:null}}),E("cli.run_settled",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-W,hasError:!1})}catch(F){let w=F instanceof Error?F.message:"Agent run failed",q=y4(F,K.signal);if(F instanceof S&&U&&!q)a2(U,w);if(!q)console.error(`[ideawave-cli] run ${X.runId} failed:`,w);Z({type:"run_settled",runId:X.runId,cardId:X.cardId,result:{assistantContent:"",model:null,latencyMs:Date.now()-W,errorText:q?null:w,partialText:null,cancelled:q}}),E("cli.run_settled",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-W,hasError:!0,errorName:F instanceof Error?F.name:"unknown",errorMessage:w.slice(0,1000),cancelled:q})}finally{if(G2(V,H),k0.delete(X.runId),J.kind==="agent-card")$X.delete(J.id);E("cli.run_released",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-W,sessionDead:H})}}async function f4(X){if($X.has(X.cardId))return{status:"skipped"};let Z=$2(X.userId,X.frontendSessionId,X.cardId),W=null;try{let J=await O0({boardId:X.boardId,cardId:X.cardId}),K=await J.adapter.resolveSpawnConfig(J.entry);W=K;let V=E2({userId:X.userId,frontendSessionId:X.frontendSessionId,boardId:X.boardId,cardId:X.cardId,runFolder:J.runFolder}),H=V?[V]:[];DX(X.cardId,J.adapter.supportsImages===!0);let U=m2({adapterId:J.adapter.id,configId:J.entry.id,modelId:J.modelId,configValues:J.configValues,mcpUrl:V?.url??null,runFolder:J.runFolder}),F=new AbortController,w=await M1({key:Z,frontendSessionId:X.frontendSessionId,fingerprint:U,open:()=>MX({spawn:{...K,cwd:J.runFolder},mcpServers:H,modelId:J.modelId,configValues:J.configValues,signal:F.signal})});return R4(J.entry.id,w,J.adapter.id,J.modelId),G2(Z,!1),console.log(`[ideawave-cli] warmed runtime for card ${X.cardId}`),{status:"ready"}}catch(J){if(J instanceof g0)return{status:"skipped"};let K=J instanceof Error?J.message:String(J);if(J instanceof S&&W&&!y4(J))a2(W,K);if(J instanceof S&&/(not ready|installing|warming|retry in a moment)/i.test(K))return{status:"retryable",error:K};return console.warn(`[ideawave-cli] warmup failed for card ${X.cardId}:`,K),{status:"failed",error:K}}}var C4="browser-proxy-v5",h4="browser-proxy-v6";var N4="browser-dom-snapshot-v1",M4="ideate-orchestration-v1",p7=new Set(["hello","frontend_hello","cli_status","browser_status","bridge_probe","bridge_probe_ack","bridge_ping","bridge_pong","tool_metadata","run_turn","cancel_run","tool_result","request_tool_metadata","tool_call","partial_text","tool_activity","run_settled","run_alive","runtime_rpc","runtime_rpc_result","browser_rpc","browser_rpc_result","warmup_run","warmup_result"]);function q2(X){try{let Z=JSON.parse(X);if(Z&&typeof Z==="object"&&typeof Z.type==="string"&&p7.has(Z.type))return Z}catch{}return null}function L2(X){return JSON.stringify(X)}function g4(X){return[M4,...X?[C4,h4,N4]:[]]}import{chromium as YW}from"playwright-core";import{spawn as s7}from"node:child_process";import{existsSync as x1,readFileSync as r7}from"node:fs";import{createRequire as D4}from"node:module";import P2 from"node:os";import d from"node:path";var f0={phase:"checking"},p0=null,mX=0,o7=60000,n7=["install","--only-shell","chromium"];class b1 extends Error{constructor(){super("The lightweight screenshot engine is being installed in the background. Live browsing remains available; retry the screenshot shortly.");this.name="CaptureEngineInstallingError"}}class $4 extends Error{constructor(X){super(X?`The screenshot engine could not be installed: ${X}`:"The screenshot engine is unavailable. Retry after checking network access and disk space.");this.name="CaptureEngineUnavailableError"}}function t7(X){return X.phase==="failed"?new $4(X.error):new b1}function s0(){return{...f0}}function e7(X){let Z=X.exists??x1;for(let[W,J]of[[X.override,"explicit"],[X.managedShell,"headless-shell"],[X.system,"system-chromium"]])if(W&&Z(W))return{path:W,engine:J};return null}function G4(X,Z){let W=[],J=Z.IDEAWAVE_CAPTURE_EXECUTABLE_PATH??Z.IDEAWAVE_CHROMIUM_PATH;if(J)W.push(J);if(X==="win32"){let K=Z.ProgramFiles??"C:\\Program Files",V=Z["ProgramFiles(x86)"]??"C:\\Program Files (x86)";if(W.push(d.win32.join(K,"Google\\Chrome\\Application\\chrome.exe"),d.win32.join(V,"Google\\Chrome\\Application\\chrome.exe")),Z.LOCALAPPDATA)W.push(d.win32.join(Z.LOCALAPPDATA,"Google\\Chrome\\Application\\chrome.exe"));W.push(d.win32.join(V,"Microsoft\\Edge\\Application\\msedge.exe"),d.win32.join(K,"Microsoft\\Edge\\Application\\msedge.exe"))}else if(X==="darwin")W.push("/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","/Applications/Chromium.app/Contents/MacOS/Chromium","google-chrome","chromium");else W.push("google-chrome","google-chrome-stable","chromium","chromium-browser","msedge");return W}function XW(X){let Z=(process.env.PATH??"").split(d.delimiter),W=process.platform==="win32"?[".exe",".cmd",".bat",""]:[""];for(let J of Z){if(!J)continue;for(let K of W){let V=d.join(J,`${X}${K}`);if(x1(V))return V}}return null}function ZW(){let X=new Set([process.env.IDEAWAVE_CAPTURE_EXECUTABLE_PATH,process.env.IDEAWAVE_CHROMIUM_PATH]);for(let Z of G4(process.platform,process.env)){if(X.has(Z))continue;if(d.isAbsolute(Z)){if(x1(Z))return Z}else{let W=XW(Z);if(W)return W}}return null}function WW(){try{let X=D4(import.meta.url);return d.dirname(X.resolve("playwright-core/package.json"))}catch{return null}}function QW(X){let Z=process.env.PLAYWRIGHT_BROWSERS_PATH?.trim();if(Z==="0")return d.join(X,".local-browsers");if(Z)return Z.startsWith("~")?d.join(P2.homedir(),Z.slice(1)):d.resolve(Z);if(process.platform==="win32")return d.join(process.env.LOCALAPPDATA??d.join(P2.homedir(),"AppData","Local"),"ms-playwright");if(process.platform==="darwin")return d.join(P2.homedir(),"Library","Caches","ms-playwright");return d.join(P2.homedir(),".cache","ms-playwright")}function JW(){if(process.platform==="win32")return"win64";if(process.platform==="darwin")return process.arch==="arm64"?"mac-arm64":"mac-x64";return process.arch==="arm64"?"linux-arm64":"linux64"}function EX(){let X=WW();if(!X)return null;try{let W=JSON.parse(r7(d.join(X,"browsers.json"),"utf8")).browsers?.find((U)=>U.name==="chromium-headless-shell");if(!W?.revision)return null;let J=JW(),K=W.revisionOverrides?.[J]??W.revision,V=d.join(QW(X),`chromium_headless_shell-${K}`),H=process.platform==="win32"?["chrome-headless-shell-win64/chrome-headless-shell.exe","chrome-headless-shell-win32/chrome-headless-shell.exe"]:process.platform==="darwin"?[`chrome-headless-shell-${J}/chrome-headless-shell`,"chrome-headless-shell-mac-x64/chrome-headless-shell","chrome-headless-shell-mac-arm64/chrome-headless-shell"]:[`chrome-headless-shell-${J}/chrome-headless-shell`,"chrome-headless-shell-linux64/chrome-headless-shell"];for(let U of H){let F=d.join(V,...U.split("/"));if(x1(F))return F}}catch{return null}return null}function KW(){let X=process.env.IDEAWAVE_CAPTURE_EXECUTABLE_PATH??process.env.IDEAWAVE_CHROMIUM_PATH;return X&&x1(X)?X:null}function m4(){return e7({override:KW(),managedShell:EX(),system:ZW()})}function VW(){let Z=D4(import.meta.url).resolve("playwright-core/package.json"),W=d.join(d.dirname(Z),"cli.js");return new Promise((J,K)=>{let V=s7(process.execPath,[W,...n7],{stdio:"ignore",windowsHide:!0});V.once("error",K),V.once("exit",(H)=>{if(H===0)J();else K(Error(`Playwright headless-shell installer exited with code ${H}`))})})}function kX(X){let Z=EX();if(Z)return f0={phase:"ready",engine:"headless-shell",executablePath:Z},Promise.resolve(s0());if(p0)return p0;if(mX>0&&Date.now()-mX<o7)return Promise.resolve(s0());return f0=X?{phase:"ready",engine:X.engine,executablePath:X.path,installingManagedShell:!0}:{phase:"installing",installingManagedShell:!0},p0=(async()=>{try{await VW();let W=EX();if(!W)throw Error("Headless Shell finished installing but its executable was not found");f0={phase:"ready",engine:"headless-shell",executablePath:W}}catch(W){mX=Date.now(),f0=X?{phase:"ready",engine:X.engine,executablePath:X.path,error:W instanceof Error?W.message:String(W)}:{phase:"failed",error:W instanceof Error?W.message:String(W)}}finally{p0=null}return s0()})(),p0}function E4(){let X=m4();if(X?.engine==="explicit"||X?.engine==="headless-shell")return f0={phase:"ready",engine:X.engine,executablePath:X.path},Promise.resolve(s0());return kX(X)}async function k4(){let X=m4();if(X){if(f0={phase:"ready",engine:X.engine,executablePath:X.path,...X.engine==="system-chromium"&&p0?{installingManagedShell:!0}:{}},X.engine==="system-chromium")kX(X);return X.path}throw kX(null),t7(f0)}var zW=60000,jW=16,_0=null,x2=null,r0=null,_X=Promise.resolve(),b2=0,IX=0,HW=0;class v2 extends Error{constructor(){super("The capture queue is busy; retry shortly.");this.name="CaptureQueueFullError"}}function SX(){if(r0)clearTimeout(r0);r0=null}async function uX(){SX();let X=_0;if(_0=null,x2=null,X)await X.close().catch(()=>{return})}function wW(X=zW){SX(),r0=setTimeout(()=>{if(r0=null,IX===0&&b2===0)uX()},X),r0.unref?.()}async function UW(){let X=await k4();if(_0?.isConnected()&&x2===X)return _0;await uX();let Z=await YW.launch({headless:!0,executablePath:X,handleSIGHUP:!1,handleSIGINT:!1,handleSIGTERM:!1});return HW+=1,_0=Z,x2=X,Z.on("disconnected",()=>{if(_0===Z)_0=null,x2=null}),Z}function _4(X,Z){if(b2>=jW)return Promise.reject(new v2);b2+=1;let W,J,K=new Promise((V,H)=>{W=V,J=H});return _X=_X.then(async()=>{b2-=1,IX+=1,SX();let V=null,H;try{V=await(await UW()).newContext(X.context);let F=await V.newPage();H={ok:!0,value:await Z(F)}}catch(U){H={ok:!1,error:U}}finally{if(V)await V.close().catch(()=>{return});IX-=1,wW()}if(H.ok)W(H.value);else J(H.error)}),K}async function I4(){await _X.catch(()=>{return}),await uX()}import{randomUUID as RW}from"node:crypto";import{createServer as OW}from"node:http";import{WebSocket as p4,WebSocketServer as fW}from"ws";var lX="/cli-bridge",S4="/ping";function AX(X=43275,Z=43277){let W=[];for(let J=X;J<=Z;J+=1)W.push(J);return W}function u4(X=AX(),Z="127.0.0.1",W="/cli-bridge"){return X.map((J)=>`ws://${Z}:${J}${W}`)}var FW=800;function l4({candidates:X,createWebSocket:Z,timeoutMs:W=FW,maxConcurrent:J=1,staggerMs:K=0,setTimeoutFn:V=setTimeout,clearTimeoutFn:H=clearTimeout}){return new Promise((U,F)=>{let w=0,q=!1,y=null,O=new Map,b=Math.max(1,Math.floor(J)),v=()=>{if(y===null)return;H(y),y=null},f=(m)=>{let{socket:h,listeners:x,timer:$}=m;h.removeEventListener("open",x.open),h.removeEventListener("message",x.message),h.removeEventListener("error",x.error),h.removeEventListener("close",x.close),H($),O.delete(h)},C=(m)=>{v();for(let h of Array.from(O.values()))if(f(h),h.socket!==m)try{h.socket.close()}catch{}},N=()=>{if(q)return;if(w<X.length)return;if(O.size>0)return;if(y!==null)return;q=!0,F(Error("No IdeaWave CLI bridge is reachable"))},g=(m)=>{if(q)return;if(w>=X.length){N();return}if(O.size>=b)return;if(m<=0){v(),I();return}if(y!==null)return;y=V(()=>{y=null,I()},m)},M=()=>{if(q)return;if(O.size>=b)return;if(O.size===0||K<=0||b===1){g(0);return}g(K)},G=(m)=>{if(q)return;let h=O.get(m);if(!h)return;f(h);try{m.close()}catch{}M(),N()};function I(){if(q)return;if(O.size>=b)return;let m=X[w];if(w+=1,!m){N();return}let h;try{h=Z(m)}catch{M(),N();return}let x={open:()=>{if(q||!O.has(h))return;h.send(L2({type:"bridge_probe",protocolVersion:1}))},message:(T)=>{if(q||!O.has(h))return;if(q2(String(T?.data??""))?.type!=="bridge_probe_ack")return;q=!0,C(h),U({url:m,socket:h})},error:()=>G(h),close:()=>G(h)};h.addEventListener("open",x.open),h.addEventListener("message",x.message),h.addEventListener("error",x.error),h.addEventListener("close",x.close);let $=V(()=>G(h),W);O.set(h,{url:m,socket:h,listeners:x,timer:$}),M()}I()})}import{randomBytes as BW}from"node:crypto";import{mkdir as qW,writeFile as LW}from"node:fs/promises";import PW from"node:os";import A4 from"node:path";var xW=30000,bW=1024;function T4(X){let Z;try{Z=new URL(X)}catch{return!1}if(Z.protocol!=="http:"&&Z.protocol!=="https:")return!1;let W=Z.hostname.toLowerCase().replace(/^\[|\]$/g,"");if(W==="localhost"||W==="127.0.0.1"||W==="::1")return!0;let K=W==="ideawave.app"||W.endsWith(".ideawave.app");return Z.protocol==="https:"&&K&&Z.pathname.startsWith("/static_boards/")}async function vW(X,Z){let W=A4.join(PW.tmpdir(),"ideawave-screenshots");await qW(W,{recursive:!0});let J=A4.join(W,`board-${Date.now()}-${BW(4).toString("hex")}.png`);return await LW(J,X),{path:J,engine:Z}}async function c4(X){let Z=X.timeoutMs??xW;return _4({context:{viewport:{width:X.width,height:X.height},deviceScaleFactor:1}},async(W)=>{W.setDefaultTimeout(Z),W.setDefaultNavigationTimeout(Z);let J=await W.goto(X.url,{waitUntil:"networkidle",timeout:Z});if(!J?.ok())throw Error(`Static board responded with HTTP ${J?.status()??"unknown"}; request a fresh one-time token before retrying`);await W.locator('[data-ideawave-static-board-ready="true"]').waitFor({state:"attached",timeout:Z}),await W.evaluate(async()=>{if(document.fonts?.ready)await document.fonts.ready});let K=await W.screenshot({type:"png",animations:"disabled",caret:"hide",scale:"css"});if(K.byteLength<bW)throw Error("Headless Shell returned an empty screenshot");return vW(Buffer.from(K),s0().engine??"system-chromium")})}var v1="IDEAWAVE_CLI_ALLOW_RAILWAY_PR_PREVIEWS";function yW(X){return X==="1"||X?.toLowerCase()==="true"}function a4(X,Z){let J=X.includes("--dev")||yW(Z.IDEAWAVE_CLI_ALLOW_RAILWAY_PR_PREVIEWS),K=Z.APP_ENV==="development"||J;return{cliArgs:X.filter((V)=>V!=="--dev"),browserKitEnabled:!0,captureEngineEnabled:!K,allowRailwayPrPreviews:J}}var CW=0,hW=30000,NW=15000,MW="/screenshot",gW=65536,s4="http://127.0.0.1";async function r4(X=u4(),Z=(W)=>new p4(W,{headers:{origin:s4}})){try{let{url:W,socket:J}=await l4({candidates:X,createWebSocket:Z});try{J.close()}catch{}return W}catch{return null}}var DW=new Set(["https://ideawave-app-production.up.railway.app"]);function $W(X){return X==="ideawave.app"||X.endsWith(".ideawave.app")}function GW(X){return X==="1"||X?.toLowerCase()==="true"}function mW(X){return/^ideawave-app-ideawave-app-pr-\d+\.up\.railway\.app$/i.test(X)}function EW(){let X=process.env.IDEAWAVE_CLI_ALLOWED_ORIGINS;if(!X)return kW;let Z=new Set;for(let W of X.split(",")){let J=W.trim();if(!J)continue;try{Z.add(new URL(J).origin)}catch{}}return Z}var kW=new Set;function TX(X){if(!X)return!1;let Z;try{Z=new URL(X)}catch{return!1}if(DW.has(Z.origin))return!0;if(EW().has(Z.origin))return!0;if(Z.protocol==="https:"&&GW(process.env[v1])&&mW(Z.hostname))return!0;if(Z.protocol==="https:"&&$W(Z.hostname))return!0;if(Z.protocol!=="http:"&&Z.protocol!=="https:")return!1;return Z.hostname==="localhost"||Z.hostname==="127.0.0.1"||Z.hostname==="::1"}function o0(X,Z){if(X.readyState!==p4.OPEN)return;try{X.send(L2(Z))}catch{}}function _W(X){if(typeof X==="string")return X;if(Buffer.isBuffer(X))return X.toString("utf8");if(Array.isArray(X))return Buffer.concat(X).toString("utf8");return Buffer.from(X).toString("utf8")}function y2(X){if(typeof X==="string")return X;if(Array.isArray(X))return X[0]??null;return null}function d4(X,Z,W){X.write(`HTTP/1.1 ${Z} ${W}\r
|
|
1069
|
+
- Filesystem access is read-only and limited to this folder. Hidden/config folders and outside-folder paths are unavailable.`}var kX=new WeakMap;function $4(X,Z,W,J){return`${X}:${Z}:${W}-spare:${J}`}async function JW(X){let Z=await $X(X.runtimeConfigId,{modelId:X.modelId});if(!Z)throw new x0(`Ideate runtime ${X.runtimeConfigId} is not configured`);let W=await Z.adapter.resolveSpawnConfig(Z.entry),J=Z.adapter.supportsImages===!0,K=crypto.randomUUID(),V=$1({userId:X.userId,frontendSessionId:X.frontendSessionId,boardId:X.boardId,toolSurface:X.surface,imagesSupported:J,runFolder:Z.runFolder,poolSessionId:K}),j=X.modelId??Z.modelId,U=D1({adapterId:Z.adapter.id,configId:Z.entry.id,modelId:j,configValues:Z.configValues,mcpUrl:V?.url??null,mcpRoutingScope:null,runFolder:Z.runFolder,toolSurface:X.surface});return{resolved:Z,spawnConfig:W,imagesSupported:J,descriptor:V,poolSessionId:K,modelId:j,fingerprint:U}}async function lX(X){let Z=null;try{let W=await JW(X);Z=W.spawnConfig;let J=$4(X.userId,X.frontendSessionId,X.surface,X.boardId),K=new AbortController,V=await e0({key:J,frontendSessionId:X.frontendSessionId,fingerprint:W.fingerprint,open:async()=>{let j=await x2({spawn:{...W.spawnConfig,cwd:W.resolved.runFolder},mcpServers:W.descriptor?[W.descriptor]:[],isolateAmbientToolSources:!0,modelId:W.modelId,configValues:W.resolved.configValues,signal:K.signal});return kX.set(j,W.poolSessionId),j}});return SX(W.resolved.entry.id,V,W.resolved.adapter.id,W.modelId),g1(J,!1),console.log(`[ideawave-cli] warmed ${X.surface} spare for board ${X.boardId}`),{status:"ready"}}catch(W){if(W instanceof x0)return{status:"skipped"};let J=W instanceof Error?W.message:String(W);if(W instanceof l&&Z&&!IX(W))l1(Z,J);if(W instanceof l&&/(not ready|installing|warming|retry in a moment)/i.test(J))return{status:"retryable",error:J};return console.warn(`[ideawave-cli] ideate ${X.surface} warmup failed for board ${X.boardId}:`,J),{status:"failed",error:J}}}async function G4(X,Z){let W=Date.now(),J=X.executionTarget??{kind:"agent-card",id:X.cardId},K=new AbortController;if(_0.set(X.runId,{controller:K,frontendSessionId:X.frontendSessionId}),J.kind==="agent-card")EX.add(J.id);E("cli.run_started",{runId:X.runId,cardId:X.cardId,frontendSessionId:X.frontendSessionId});let V=I2(X.userId,X.frontendSessionId,J),j=!1,U=null,F=null;try{let q=(X.runtimeConfigIdHint?await $X(X.runtimeConfigIdHint,{modelId:X.modelHint??null}):null)??await C0({boardId:X.boardId,...J.kind==="agent-card"?{cardId:J.id}:{}}),v=await q.adapter.resolveSpawnConfig(q.entry),y=X.toolSurface??"full",P=(y==="ideate-coordinator"||y==="ideate-worker")&&X.ideateClaims?y:null,O=q.adapter.supportsImages===!0;U=v;let M=P?crypto.randomUUID():null,h=$1(P?{userId:X.userId,frontendSessionId:X.frontendSessionId,boardId:X.boardId,toolSurface:y,imagesSupported:O,runFolder:q.runFolder,poolSessionId:M}:{userId:X.userId,frontendSessionId:X.frontendSessionId,boardId:X.boardId,toolSurface:y,imagesSupported:O,cardId:X.cardId,executionTarget:J,ideateClaims:X.ideateClaims,runFolder:q.runFolder}),N=h?[h]:[];mX(X.cardId,O);let g=X.modelHint??q.modelId,C=D1({adapterId:q.adapter.id,configId:q.entry.id,modelId:g,configValues:q.configValues,mcpUrl:h?.url??null,mcpRoutingScope:!P&&X.ideateClaims?JSON.stringify(X.ideateClaims):null,runFolder:q.runFolder,toolSurface:y});E("cli.session_acquire_started",{runId:X.runId,cardId:X.cardId,frontendSessionId:X.frontendSessionId});let m=X.promptMessages.every((b)=>typeof b.id==="string")?X.promptMessages.map((b)=>b.id):void 0,k=await e0({key:V,frontendSessionId:X.frontendSessionId,fingerprint:C,transcriptIds:m,open:async()=>{if(P){let R=$4(X.userId,X.frontendSessionId,P,X.boardId),D=await V3(R,C);if(D){if(E("cli.ideate_spare_adopted",{runId:X.runId,cardId:X.cardId,frontendSessionId:X.frontendSessionId,elapsedMs:Date.now()-W}),X.runtimeConfigIdHint)lX({boardId:X.boardId,userId:X.userId,frontendSessionId:X.frontendSessionId,surface:P,runtimeConfigId:X.runtimeConfigIdHint,modelId:X.modelHint??null}).catch(()=>{return});return D}}let b=await x2({spawn:{...v,cwd:q.runFolder},mcpServers:N,isolateAmbientToolSources:y!=="full",modelId:g,configValues:q.configValues,signal:K.signal});if(M)kX.set(b,M);return b}});if(E("cli.session_acquired",{runId:X.runId,cardId:X.cardId,frontendSessionId:X.frontendSessionId,elapsedMs:Date.now()-W}),P&&X.ideateClaims&&X.executionTarget){let b=kX.get(k)??null;if(b)F=b,f4(b,{cardId:X.cardId,executionTarget:X.executionTarget,ideateClaims:X.ideateClaims});else E("cli.ideate_pool_session_id_missing",{runId:X.runId,cardId:X.cardId,frontendSessionId:X.frontendSessionId})}SX(q.entry.id,k,q.adapter.id,g);let G;try{let b=0,R="",D=0,T=1e4;E("cli.prompt_started",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-W}),G=await k.prompt({runId:X.runId,boardId:X.boardId,cardId:X.cardId,prompt:{systemPrompt:QW(X.systemPrompt,q.runFolder),messages:X.promptMessages.map((I)=>({role:I.role,content:I.content}))},signal:K.signal,appendText:async({text:I})=>{if(b+=1,b===1)E("cli.first_partial_text_forwarded",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-W,textLength:I.length});Z({type:"partial_text",runId:X.runId,cardId:X.cardId,text:I})},appendToolActivity:async({entry:I})=>{let q0=`${I.toolCallId}:${I.status}`;if(q0!==R)R=q0,E("cli.tool_activity_forwarded",{runId:X.runId,cardId:X.cardId,toolCallId:I.toolCallId,toolStatus:I.status,elapsedMs:Date.now()-W});Z({type:"tool_activity",runId:X.runId,cardId:X.cardId,activity:I})},onAnyUpdate:()=>{let I=Date.now();if(I-D<T)return;D=I,Z({type:"run_alive",runId:X.runId,cardId:X.cardId})}})}catch(b){if(!k.isAlive()||b instanceof l||b instanceof w0)j=!0;throw b}Z({type:"run_settled",runId:X.runId,cardId:X.cardId,result:{assistantContent:G.finalText,model:G.modelReported??null,latencyMs:Date.now()-W,errorText:null,partialText:null}}),E("cli.run_settled",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-W,hasError:!1})}catch(w){let q=w instanceof Error?w.message:"Agent run failed",v=IX(w,K.signal);if(w instanceof l&&U&&!v)l1(U,q);if(!v)console.error(`[ideawave-cli] run ${X.runId} failed:`,q);Z({type:"run_settled",runId:X.runId,cardId:X.cardId,result:{assistantContent:"",model:null,latencyMs:Date.now()-W,errorText:v?null:q,partialText:null,cancelled:v}}),E("cli.run_settled",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-W,hasError:!0,errorName:w instanceof Error?w.name:"unknown",errorMessage:q.slice(0,1000),cancelled:v})}finally{if(F)C4(F);if(g1(V,j),_0.delete(X.runId),J.kind==="agent-card")EX.delete(J.id);E("cli.run_released",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-W,sessionDead:j})}}async function m4(X){if(EX.has(X.cardId))return{status:"skipped"};let Z=I2(X.userId,X.frontendSessionId,X.cardId),W=null;try{let J=await C0({boardId:X.boardId,cardId:X.cardId}),K=await J.adapter.resolveSpawnConfig(J.entry);W=K;let V=$1({userId:X.userId,frontendSessionId:X.frontendSessionId,boardId:X.boardId,cardId:X.cardId,runFolder:J.runFolder}),j=V?[V]:[];mX(X.cardId,J.adapter.supportsImages===!0);let U=D1({adapterId:J.adapter.id,configId:J.entry.id,modelId:J.modelId,configValues:J.configValues,mcpUrl:V?.url??null,runFolder:J.runFolder}),F=new AbortController,w=await e0({key:Z,frontendSessionId:X.frontendSessionId,fingerprint:U,open:()=>x2({spawn:{...K,cwd:J.runFolder},mcpServers:j,modelId:J.modelId,configValues:J.configValues,signal:F.signal})});return SX(J.entry.id,w,J.adapter.id,J.modelId),g1(Z,!1),console.log(`[ideawave-cli] warmed runtime for card ${X.cardId}`),{status:"ready"}}catch(J){if(J instanceof x0)return{status:"skipped"};let K=J instanceof Error?J.message:String(J);if(J instanceof l&&W&&!IX(J))l1(W,K);if(J instanceof l&&/(not ready|installing|warming|retry in a moment)/i.test(K))return{status:"retryable",error:K};return console.warn(`[ideawave-cli] warmup failed for card ${X.cardId}:`,K),{status:"failed",error:K}}}var E4="browser-proxy-v5",k4="browser-proxy-v6";var _4="browser-dom-snapshot-v1",I4="ideate-orchestration-v1",S4="ideate-warm-sessions-v1",KW=new Set(["hello","frontend_hello","cli_status","browser_status","bridge_probe","bridge_probe_ack","bridge_ping","bridge_pong","tool_metadata","run_turn","cancel_run","tool_result","request_tool_metadata","tool_call","partial_text","tool_activity","run_settled","run_alive","runtime_rpc","runtime_rpc_result","browser_rpc","browser_rpc_result","warmup_run","warmup_result"]);function v2(X){try{let Z=JSON.parse(X);if(Z&&typeof Z==="object"&&typeof Z.type==="string"&&KW.has(Z.type))return Z}catch{}return null}function y2(X){return JSON.stringify(X)}function l4(X){return[I4,S4,...X?[E4,k4,_4]:[]]}import{chromium as bW}from"playwright-core";import{spawn as VW}from"node:child_process";import{existsSync as v1,readFileSync as YW}from"node:fs";import{createRequire as u4}from"node:module";import O2 from"node:os";import i from"node:path";var h0={phase:"checking"},p0=null,uX=0,zW=60000,jW=["install","--only-shell","chromium"];class y1 extends Error{constructor(){super("The lightweight screenshot engine is being installed in the background. Live browsing remains available; retry the screenshot shortly.");this.name="CaptureEngineInstallingError"}}class A4 extends Error{constructor(X){super(X?`The screenshot engine could not be installed: ${X}`:"The screenshot engine is unavailable. Retry after checking network access and disk space.");this.name="CaptureEngineUnavailableError"}}function HW(X){return X.phase==="failed"?new A4(X.error):new y1}function s0(){return{...h0}}function wW(X){let Z=X.exists??v1;for(let[W,J]of[[X.override,"explicit"],[X.managedShell,"headless-shell"],[X.system,"system-chromium"]])if(W&&Z(W))return{path:W,engine:J};return null}function T4(X,Z){let W=[],J=Z.IDEAWAVE_CAPTURE_EXECUTABLE_PATH??Z.IDEAWAVE_CHROMIUM_PATH;if(J)W.push(J);if(X==="win32"){let K=Z.ProgramFiles??"C:\\Program Files",V=Z["ProgramFiles(x86)"]??"C:\\Program Files (x86)";if(W.push(i.win32.join(K,"Google\\Chrome\\Application\\chrome.exe"),i.win32.join(V,"Google\\Chrome\\Application\\chrome.exe")),Z.LOCALAPPDATA)W.push(i.win32.join(Z.LOCALAPPDATA,"Google\\Chrome\\Application\\chrome.exe"));W.push(i.win32.join(V,"Microsoft\\Edge\\Application\\msedge.exe"),i.win32.join(K,"Microsoft\\Edge\\Application\\msedge.exe"))}else if(X==="darwin")W.push("/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","/Applications/Chromium.app/Contents/MacOS/Chromium","google-chrome","chromium");else W.push("google-chrome","google-chrome-stable","chromium","chromium-browser","msedge");return W}function UW(X){let Z=(process.env.PATH??"").split(i.delimiter),W=process.platform==="win32"?[".exe",".cmd",".bat",""]:[""];for(let J of Z){if(!J)continue;for(let K of W){let V=i.join(J,`${X}${K}`);if(v1(V))return V}}return null}function FW(){let X=new Set([process.env.IDEAWAVE_CAPTURE_EXECUTABLE_PATH,process.env.IDEAWAVE_CHROMIUM_PATH]);for(let Z of T4(process.platform,process.env)){if(X.has(Z))continue;if(i.isAbsolute(Z)){if(v1(Z))return Z}else{let W=UW(Z);if(W)return W}}return null}function BW(){try{let X=u4(import.meta.url);return i.dirname(X.resolve("playwright-core/package.json"))}catch{return null}}function qW(X){let Z=process.env.PLAYWRIGHT_BROWSERS_PATH?.trim();if(Z==="0")return i.join(X,".local-browsers");if(Z)return Z.startsWith("~")?i.join(O2.homedir(),Z.slice(1)):i.resolve(Z);if(process.platform==="win32")return i.join(process.env.LOCALAPPDATA??i.join(O2.homedir(),"AppData","Local"),"ms-playwright");if(process.platform==="darwin")return i.join(O2.homedir(),"Library","Caches","ms-playwright");return i.join(O2.homedir(),".cache","ms-playwright")}function LW(){if(process.platform==="win32")return"win64";if(process.platform==="darwin")return process.arch==="arm64"?"mac-arm64":"mac-x64";return process.arch==="arm64"?"linux-arm64":"linux64"}function AX(){let X=BW();if(!X)return null;try{let W=JSON.parse(YW(i.join(X,"browsers.json"),"utf8")).browsers?.find((U)=>U.name==="chromium-headless-shell");if(!W?.revision)return null;let J=LW(),K=W.revisionOverrides?.[J]??W.revision,V=i.join(qW(X),`chromium_headless_shell-${K}`),j=process.platform==="win32"?["chrome-headless-shell-win64/chrome-headless-shell.exe","chrome-headless-shell-win32/chrome-headless-shell.exe"]:process.platform==="darwin"?[`chrome-headless-shell-${J}/chrome-headless-shell`,"chrome-headless-shell-mac-x64/chrome-headless-shell","chrome-headless-shell-mac-arm64/chrome-headless-shell"]:[`chrome-headless-shell-${J}/chrome-headless-shell`,"chrome-headless-shell-linux64/chrome-headless-shell"];for(let U of j){let F=i.join(V,...U.split("/"));if(v1(F))return F}}catch{return null}return null}function PW(){let X=process.env.IDEAWAVE_CAPTURE_EXECUTABLE_PATH??process.env.IDEAWAVE_CHROMIUM_PATH;return X&&v1(X)?X:null}function c4(){return wW({override:PW(),managedShell:AX(),system:FW()})}function xW(){let Z=u4(import.meta.url).resolve("playwright-core/package.json"),W=i.join(i.dirname(Z),"cli.js");return new Promise((J,K)=>{let V=VW(process.execPath,[W,...jW],{stdio:"ignore",windowsHide:!0});V.once("error",K),V.once("exit",(j)=>{if(j===0)J();else K(Error(`Playwright headless-shell installer exited with code ${j}`))})})}function TX(X){let Z=AX();if(Z)return h0={phase:"ready",engine:"headless-shell",executablePath:Z},Promise.resolve(s0());if(p0)return p0;if(uX>0&&Date.now()-uX<zW)return Promise.resolve(s0());return h0=X?{phase:"ready",engine:X.engine,executablePath:X.path,installingManagedShell:!0}:{phase:"installing",installingManagedShell:!0},p0=(async()=>{try{await xW();let W=AX();if(!W)throw Error("Headless Shell finished installing but its executable was not found");h0={phase:"ready",engine:"headless-shell",executablePath:W}}catch(W){uX=Date.now(),h0=X?{phase:"ready",engine:X.engine,executablePath:X.path,error:W instanceof Error?W.message:String(W)}:{phase:"failed",error:W instanceof Error?W.message:String(W)}}finally{p0=null}return s0()})(),p0}function a4(){let X=c4();if(X?.engine==="explicit"||X?.engine==="headless-shell")return h0={phase:"ready",engine:X.engine,executablePath:X.path},Promise.resolve(s0());return TX(X)}async function d4(){let X=c4();if(X){if(h0={phase:"ready",engine:X.engine,executablePath:X.path,...X.engine==="system-chromium"&&p0?{installingManagedShell:!0}:{}},X.engine==="system-chromium")TX(X);return X.path}throw TX(null),HW(h0)}var vW=60000,yW=16,I0=null,R2=null,r0=null,cX=Promise.resolve(),f2=0,aX=0,OW=0;class C2 extends Error{constructor(){super("The capture queue is busy; retry shortly.");this.name="CaptureQueueFullError"}}function dX(){if(r0)clearTimeout(r0);r0=null}async function iX(){dX();let X=I0;if(I0=null,R2=null,X)await X.close().catch(()=>{return})}function RW(X=vW){dX(),r0=setTimeout(()=>{if(r0=null,aX===0&&f2===0)iX()},X),r0.unref?.()}async function fW(){let X=await d4();if(I0?.isConnected()&&R2===X)return I0;await iX();let Z=await bW.launch({headless:!0,executablePath:X,handleSIGHUP:!1,handleSIGINT:!1,handleSIGTERM:!1});return OW+=1,I0=Z,R2=X,Z.on("disconnected",()=>{if(I0===Z)I0=null,R2=null}),Z}function i4(X,Z){if(f2>=yW)return Promise.reject(new C2);f2+=1;let W,J,K=new Promise((V,j)=>{W=V,J=j});return cX=cX.then(async()=>{f2-=1,aX+=1,dX();let V=null,j;try{V=await(await fW()).newContext(X.context);let F=await V.newPage();j={ok:!0,value:await Z(F)}}catch(U){j={ok:!1,error:U}}finally{if(V)await V.close().catch(()=>{return});aX-=1,RW()}if(j.ok)W(j.value);else J(j.error)}),K}async function p4(){await cX.catch(()=>{return}),await iX()}import{randomUUID as EW}from"node:crypto";import{createServer as kW}from"node:http";import{WebSocket as Q8,WebSocketServer as _W}from"ws";var pX="/cli-bridge",s4="/ping";function sX(X=43275,Z=43277){let W=[];for(let J=X;J<=Z;J+=1)W.push(J);return W}function r4(X=sX(),Z="127.0.0.1",W="/cli-bridge"){return X.map((J)=>`ws://${Z}:${J}${W}`)}var CW=800;function o4({candidates:X,createWebSocket:Z,timeoutMs:W=CW,maxConcurrent:J=1,staggerMs:K=0,setTimeoutFn:V=setTimeout,clearTimeoutFn:j=clearTimeout}){return new Promise((U,F)=>{let w=0,q=!1,v=null,y=new Map,P=Math.max(1,Math.floor(J)),O=()=>{if(v===null)return;j(v),v=null},M=(G)=>{let{socket:b,listeners:R,timer:D}=G;b.removeEventListener("open",R.open),b.removeEventListener("message",R.message),b.removeEventListener("error",R.error),b.removeEventListener("close",R.close),j(D),y.delete(b)},h=(G)=>{O();for(let b of Array.from(y.values()))if(M(b),b.socket!==G)try{b.socket.close()}catch{}},N=()=>{if(q)return;if(w<X.length)return;if(y.size>0)return;if(v!==null)return;q=!0,F(Error("No IdeaWave CLI bridge is reachable"))},g=(G)=>{if(q)return;if(w>=X.length){N();return}if(y.size>=P)return;if(G<=0){O(),k();return}if(v!==null)return;v=V(()=>{v=null,k()},G)},C=()=>{if(q)return;if(y.size>=P)return;if(y.size===0||K<=0||P===1){g(0);return}g(K)},m=(G)=>{if(q)return;let b=y.get(G);if(!b)return;M(b);try{G.close()}catch{}C(),N()};function k(){if(q)return;if(y.size>=P)return;let G=X[w];if(w+=1,!G){N();return}let b;try{b=Z(G)}catch{C(),N();return}let R={open:()=>{if(q||!y.has(b))return;b.send(y2({type:"bridge_probe",protocolVersion:1}))},message:(T)=>{if(q||!y.has(b))return;if(v2(String(T?.data??""))?.type!=="bridge_probe_ack")return;q=!0,h(b),U({url:G,socket:b})},error:()=>m(b),close:()=>m(b)};b.addEventListener("open",R.open),b.addEventListener("message",R.message),b.addEventListener("error",R.error),b.addEventListener("close",R.close);let D=V(()=>m(b),W);y.set(b,{url:G,socket:b,listeners:R,timer:D}),C()}k()})}import{randomBytes as hW}from"node:crypto";import{mkdir as MW,writeFile as NW}from"node:fs/promises";import gW from"node:os";import n4 from"node:path";var DW=30000,$W=1024;function t4(X){let Z;try{Z=new URL(X)}catch{return!1}if(Z.protocol!=="http:"&&Z.protocol!=="https:")return!1;let W=Z.hostname.toLowerCase().replace(/^\[|\]$/g,"");if(W==="localhost"||W==="127.0.0.1"||W==="::1")return!0;let K=W==="ideawave.app"||W.endsWith(".ideawave.app");return Z.protocol==="https:"&&K&&Z.pathname.startsWith("/static_boards/")}async function GW(X,Z){let W=n4.join(gW.tmpdir(),"ideawave-screenshots");await MW(W,{recursive:!0});let J=n4.join(W,`board-${Date.now()}-${hW(4).toString("hex")}.png`);return await NW(J,X),{path:J,engine:Z}}async function e4(X){let Z=X.timeoutMs??DW;return i4({context:{viewport:{width:X.width,height:X.height},deviceScaleFactor:1}},async(W)=>{W.setDefaultTimeout(Z),W.setDefaultNavigationTimeout(Z);let J=await W.goto(X.url,{waitUntil:"networkidle",timeout:Z});if(!J?.ok())throw Error(`Static board responded with HTTP ${J?.status()??"unknown"}; request a fresh one-time token before retrying`);await W.locator('[data-ideawave-static-board-ready="true"]').waitFor({state:"attached",timeout:Z}),await W.evaluate(async()=>{if(document.fonts?.ready)await document.fonts.ready});let K=await W.screenshot({type:"png",animations:"disabled",caret:"hide",scale:"css"});if(K.byteLength<$W)throw Error("Headless Shell returned an empty screenshot");return GW(Buffer.from(K),s0().engine??"system-chromium")})}var O1="IDEAWAVE_CLI_ALLOW_RAILWAY_PR_PREVIEWS";function mW(X){return X==="1"||X?.toLowerCase()==="true"}function X8(X,Z){let J=X.includes("--dev")||mW(Z.IDEAWAVE_CLI_ALLOW_RAILWAY_PR_PREVIEWS),K=Z.APP_ENV==="development"||J;return{cliArgs:X.filter((V)=>V!=="--dev"),browserKitEnabled:!0,captureEngineEnabled:!K,allowRailwayPrPreviews:J}}var IW=0,SW=30000,lW=15000,uW="/screenshot",AW=65536,J8="http://127.0.0.1";async function K8(X=r4(),Z=(W)=>new Q8(W,{headers:{origin:J8}})){try{let{url:W,socket:J}=await o4({candidates:X,createWebSocket:Z});try{J.close()}catch{}return W}catch{return null}}var TW=new Set(["https://ideawave-app-production.up.railway.app"]);function cW(X){return X==="ideawave.app"||X.endsWith(".ideawave.app")}function aW(X){return X==="1"||X?.toLowerCase()==="true"}function dW(X){return/^ideawave-app-ideawave-app-pr-\d+\.up\.railway\.app$/i.test(X)}function iW(){let X=process.env.IDEAWAVE_CLI_ALLOWED_ORIGINS;if(!X)return pW;let Z=new Set;for(let W of X.split(",")){let J=W.trim();if(!J)continue;try{Z.add(new URL(J).origin)}catch{}}return Z}var pW=new Set;function rX(X){if(!X)return!1;let Z;try{Z=new URL(X)}catch{return!1}if(TW.has(Z.origin))return!0;if(iW().has(Z.origin))return!0;if(Z.protocol==="https:"&&aW(process.env[O1])&&dW(Z.hostname))return!0;if(Z.protocol==="https:"&&cW(Z.hostname))return!0;if(Z.protocol!=="http:"&&Z.protocol!=="https:")return!1;return Z.hostname==="localhost"||Z.hostname==="127.0.0.1"||Z.hostname==="::1"}function o0(X,Z){if(X.readyState!==Q8.OPEN)return;try{X.send(y2(Z))}catch{}}function sW(X){if(typeof X==="string")return X;if(Buffer.isBuffer(X))return X.toString("utf8");if(Array.isArray(X))return Buffer.concat(X).toString("utf8");return Buffer.from(X).toString("utf8")}function h2(X){if(typeof X==="string")return X;if(Array.isArray(X))return X[0]??null;return null}function Z8(X,Z,W){X.write(`HTTP/1.1 ${Z} ${W}\r
|
|
1070
1070
|
Connection: close\r
|
|
1071
1071
|
Content-Length: ${Buffer.byteLength(W)}\r
|
|
1072
1072
|
\r
|
|
1073
|
-
${W}`),X.destroy()}function IW(X,Z){return new Promise((W,J)=>{let K=(H)=>{X.off("listening",V),J(H)},V=()=>{X.off("error",K);let H=X.address();if(!H||typeof H==="string"){J(Error("Failed to read CLI bridge server address"));return}W(H.port)};X.once("error",K),X.once("listening",V),X.listen(Z,"127.0.0.1")})}function i4(X){return new Promise((Z,W)=>{X.close((J)=>{if(J)W(J);else Z()})})}async function o4(X,Z=AX()){let W=new Map,J=new Map,K=X.maxMessageSize??CW,V=!1,H=(b)=>{let v=J.get(b);if(v)clearTimeout(v);J.delete(b)},U=(b)=>{J.delete(b);let{activeRunIds:v}=X.registry.disconnect(b);X.onDisconnect(b,v)},F=(b,v)=>{let f={type:"cli_status",connected:!0,runtime:X.runtime,mcpReady:X.mcpReady(),error:v,capabilities:X.capabilities??[],cliVersion:X.cliVersion,browserRuntime:X.browserRuntimeStatus?.()};if(b){let C=W.get(b);if(C)o0(C,f);return}for(let C of W.values())o0(C,f)},w=(b,v)=>{let f=v.sessionId.trim(),C=v.userId.trim();if(!f||!C){o0(b,{type:"cli_status",connected:!1,runtime:X.runtime,mcpReady:X.mcpReady(),error:"Missing frontend session or user id"}),b.close();return}H(f);let N=W.get(f);if(N&&N!==b)N.close();b.data.frontendSessionId=f,W.set(f,b),X.registry.register({frontendSessionId:f,userId:C,tools:v.tools,send:(g)=>o0(b,g)}),F(f),X.onToolMetadata?.(f)},q=(b,v)=>{let f=X.registry.getUserId(b);if(!f)return;switch(v.type){case"bridge_ping":{let C=W.get(b);if(C)o0(C,{type:"bridge_pong"});break}case"tool_metadata":X.registry.setMetadata(b,v.tools),X.onToolMetadata?.(b);break;case"tool_result":X.registry.handleToolResult(b,v);break;case"run_turn":E("bridge.run_received",{runId:v.run.runId,cardId:v.run.cardId,frontendSessionId:b}),X.registry.markRunActive(b,v.run.runId,v.run.cardId),X.onRunTurn(b,{...v.run,frontendSessionId:b,userId:f});break;case"cancel_run":if(X.registry.ownsRun(b,v.runId))X.onCancelRun(b,v.runId);break;case"runtime_rpc":X.onRuntimeRpc(b,v);break;case"browser_rpc":X.onBrowserRpc?.(b,W.get(b)?.data.frontendOrigin??"",v);break;case"warmup_run":X.onWarmupRun(b,{...v,frontendSessionId:b},f);break;default:break}},y=(b,v)=>{let f=y2(b.headers.origin),C=TX(f),N={Vary:"Origin"};if(C&&f)N["Access-Control-Allow-Origin"]=f,N["Access-Control-Allow-Private-Network"]="true";if(b.method==="OPTIONS"){v.writeHead(204,{...N,"Access-Control-Allow-Methods":"GET, OPTIONS","Access-Control-Allow-Headers":"*","Access-Control-Max-Age":"600"}),v.end();return}if(b.method!=="GET"){v.writeHead(405,N),v.end();return}v.writeHead(200,{...N,"content-type":"application/json","cache-control":"no-store"}),v.end(JSON.stringify({ideawave:!0,runtime:X.runtime,mcpReady:X.mcpReady(),capabilities:X.capabilities??[],cliVersion:X.cliVersion,browserRuntime:X.browserRuntimeStatus?.()}))},O=(b,v)=>{let f=y2(b.headers.origin),C=TX(f),N={Vary:"Origin"};if(C&&f)N["Access-Control-Allow-Origin"]=f,N["Access-Control-Allow-Private-Network"]="true";if(b.method==="OPTIONS"){v.writeHead(204,{...N,"Access-Control-Allow-Methods":"POST, OPTIONS","Access-Control-Allow-Headers":"content-type","Access-Control-Max-Age":"600"}),v.end();return}if(!C){v.writeHead(403,N),v.end();return}if(b.method!=="POST"){v.writeHead(405,N),v.end();return}let g={...N,"content-type":"application/json"},M=(m,h)=>{v.writeHead(m,g),v.end(JSON.stringify(h))},G="",I=!1;b.on("data",(m)=>{if(G+=m.toString("utf8"),G.length>gW)I=!0,b.destroy()}),b.on("end",()=>{if(I){M(400,{ok:!1,error:"Request body too large"});return}let m;try{m=JSON.parse(G)}catch{M(400,{ok:!1,error:"Invalid JSON body"});return}let h=typeof m.url==="string"?m.url:"";if(!T4(h)){M(400,{ok:!1,error:"url must be an http(s) loopback or /static_boards/ page URL"});return}let x=($,T)=>{let i=typeof $==="number"?$:Number.NaN;if(!Number.isFinite(i))return T;return Math.min(4000,Math.max(200,Math.round(i)))};c4({url:h,width:x(m.width,1440),height:x(m.height,900)}).then(($)=>M(200,{ok:!0,path:$.path,engine:$.engine})).catch(($)=>{let T=$ instanceof b1?503:$ instanceof v2?429:500;M(T,{ok:!1,...$ instanceof b1?{installing:!0}:{},error:$ instanceof Error?$.message:String($)})})})};for(let b of Z){let v=OW((N,g)=>{(async()=>{let M=new URL(N.url??"/","http://127.0.0.1").pathname;if(M===S4){y(N,g);return}if(M===MW){O(N,g);return}if(await X.onHttpRequest?.(N,g))return;g.writeHead(404,{"content-type":"text/plain"}),g.end("IdeaWave CLI bridge")})().catch((M)=>{if(g.headersSent){g.destroy(M instanceof Error?M:void 0);return}g.writeHead(500,{"content-type":"text/plain"}),g.end("IdeaWave CLI bridge request failed")})}),f=new fW({noServer:!0,maxPayload:K}),C=(N)=>{if(N.idleTimer)clearTimeout(N.idleTimer);N.idleTimer=setTimeout(()=>{N.close()},hW),N.idleTimer.unref?.()};f.on("connection",(N,g)=>{let M=N;M.data={id:RW(),frontendSessionId:null,frontendOrigin:new URL(y2(g.headers.origin)??s4).origin},M.idleTimer=null,C(M),M.on("ping",()=>C(M)),M.on("pong",()=>C(M)),M.on("error",()=>{if(M.idleTimer)clearTimeout(M.idleTimer);M.close()}),M.on("message",(G)=>{C(M);let I=_W(G);if(K>0&&I.length>K)return;let m=q2(I);if(!m)return;let h=M.data.frontendSessionId;if(!h){if(m.type==="bridge_probe")o0(M,{type:"bridge_probe_ack",protocolVersion:m.protocolVersion});else if(m.type==="frontend_hello")w(M,m);return}q(h,m)}),M.on("close",()=>{if(M.idleTimer)clearTimeout(M.idleTimer);let G=M.data.frontendSessionId;if(!G)return;if(W.get(G)!==M)return;if(W.delete(G),H(G),V)return;J.set(G,setTimeout(()=>U(G),NW))})}),v.on("upgrade",(N,g,M)=>{let G=new URL(N.url??"/","http://127.0.0.1").pathname;if(X.onHttpUpgrade?.(N,g,M))return;if(G!==lX){d4(g,404,"Not Found");return}if(!TX(y2(N.headers.origin))){d4(g,403,"Forbidden");return}f.handleUpgrade(N,g,M,(I)=>{f.emit("connection",I,N)})});try{let N=await IW(v,b);return{url:`ws://127.0.0.1:${N}${lX}`,port:N,sendStatus:F,close:async()=>{V=!0;for(let g of J.values())clearTimeout(g);J.clear();for(let g of f.clients){let M=g;if(M.idleTimer)clearTimeout(M.idleTimer);M.close()}f.close(),await i4(v).catch(()=>{return})}}}catch(N){if(f.close(),await i4(v).catch(()=>{return}),N?.code==="EADDRINUSE")continue;throw N}}throw Error(`No free IdeaWave CLI bridge port found in ${Z[0]}-${Z.at(-1)}`)}import{lstat as XQ,readFile as ZQ}from"node:fs/promises";import WQ from"node:os";import y1 from"node:path";import{Server as QQ}from"@modelcontextprotocol/sdk/server/index.js";import{CallToolRequestSchema as JQ,ListToolsRequestSchema as KQ}from"@modelcontextprotocol/sdk/types.js";var n4=new Set(["list_boards","get_board","screenshot_board","list_nodes","list_edges","inspect_node","list_context_sources","read_context_card","read_context_file","read_context_image","list_context_folder","get_board_wiki","search_board","get_card_messages","list_agent_cards","inspect_neighbors"]),SW=["screenshot_board","inspect_diagram","ask_user_question","create_agent_card","append_user_message","spawn_child_agents"],uW=new Set(SW),NY=new Set([...n4].filter((X)=>!uW.has(X)));var t4=new Set(["inspect_ideate_context","get_ideate_run_status","screenshot_ideate_context","submit_ideate_plan","revise_ideate_plan","set_ideate_placement","ask_ideate_question"]),e4=new Set(["inspect_ideate_context","get_ideate_run_status","get_ideate_worker_context","screenshot_ideate_context","list_nodes","list_edges","inspect_node","list_context_sources","read_context_card","read_context_file","read_context_image","list_context_folder","get_board_wiki","search_board","inspect_neighbors","read_diagram_guide","inspect_browser","locate_browser_element","ideate_create_note","ideate_create_code","ideate_create_shape","ideate_create_browser","ideate_add_browser_note","ideate_add_board_callout","ideate_create_diagram","ideate_create_edge","ideate_update_note","ideate_update_code","ideate_update_shape","ideate_update_diagram","ideate_update_edge","ideate_delete_node","ideate_delete_edge"]),lW=new Set([...t4,...e4].filter((X)=>X.startsWith("ideate_")||X.includes("ideate_")));function X8(X,Z){if(Z==="full")return!lW.has(X);if(Z==="read")return n4.has(X);if(Z==="ideate-coordinator")return t4.has(X);return e4.has(X)}import{randomUUID as TW}from"node:crypto";import{createServer as cW}from"node:http";import{StreamableHTTPServerTransport as aW}from"@modelcontextprotocol/sdk/server/streamableHttp.js";import{isInitializeRequest as J8}from"@modelcontextprotocol/sdk/types.js";var Z8=new Set(["127.0.0.1","localhost","[::1]","::1"]);function AW(X){let Z=X.trim();if(Z.length===0)return null;if(Z.startsWith("[")){let V=Z.indexOf("]");if(V===-1)return null;let H=Z.slice(0,V+1),U=Z.slice(V+1);if(U.length===0)return{host:H,port:null};if(!U.startsWith(":"))return null;let F=Number(U.slice(1));if(!Number.isInteger(F)||F<=0||F>65535)return null;return{host:H,port:F}}let W=Z.lastIndexOf(":");if(W===-1)return{host:Z,port:null};let J=Z.slice(W+1),K=Number(J);if(!Number.isInteger(K)||K<=0||K>65535)return{host:Z,port:null};return{host:Z.slice(0,W),port:K}}function W8(X){return Z8.has(X)||Z8.has(X.toLowerCase())}function Q8(X,Z){let W=X.headers.host;if(typeof W!=="string")return{ok:!1,status:403,reason:"missing-host"};let J=AW(W);if(!J)return{ok:!1,status:403,reason:"bad-host"};if(!W8(J.host))return{ok:!1,status:403,reason:"non-loopback-host"};if(J.port!==null&&J.port!==Z)return{ok:!1,status:403,reason:"host-port-mismatch"};let K=X.headers.origin;if(typeof K==="string"&&K.length>0){if(K!=="null"){let V;try{V=new URL(K)}catch{return{ok:!1,status:403,reason:"bad-origin"}}if(!W8(V.hostname))return{ok:!1,status:403,reason:"non-loopback-origin"}}}return{ok:!0}}var K8="/mcp",dW=43274,Y8=16777216,iW=1800000,pW=300000,V8=200,sW=-32700,C0=-32600,cX=-32603;function Y0(X,Z,W,J,K){X.statusCode=Z,X.setHeader("content-type","application/json"),X.end(JSON.stringify({jsonrpc:"2.0",error:{code:W,message:J,...K?{data:K}:{}},id:null}))}class aX extends Error{constructor(){super("expected application/json");this.name="BadContentTypeError"}}class dX extends Error{constructor(){super(`body exceeds ${Y8} bytes`);this.name="BodyTooLargeError"}}async function rW(X){if(X.method&&X.method!=="POST")return;let Z=X.headers["content-type"];if(typeof Z==="string"&&Z.trim().length>0){if(!Z.toLowerCase().includes("application/json"))throw new aX}let W=0,J=[];for await(let V of X){let H=typeof V==="string"?Buffer.from(V):V;if(W+=H.byteLength,W>Y8)throw new dX;J.push(H)}if(J.length===0)return;let K=Buffer.concat(J).toString("utf8");if(K.length===0)return;return JSON.parse(K)}function oW(X){if(Array.isArray(X))return X.some(J8);return J8(X)}function nW(X){if(typeof X==="number")return X;let Z=process.env.IDEAWAVE_MCP_PORT;if(Z&&Z.trim().length>0){let W=Number(Z);if(Number.isInteger(W)&&W>=0&&W<65536)return W}return dW}async function tW(X,Z){let W=(K)=>new Promise((V,H)=>{let U=(w)=>{X.off("listening",F),H(w)},F=()=>{X.off("error",U),V()};X.once("error",U),X.once("listening",F),X.listen(K,"127.0.0.1")});try{await W(Z)}catch(K){if(K.code!=="EADDRINUSE"||Z===0)throw K;console.warn(`[mcp] port ${Z} in use, falling back to an OS-assigned port; external CLIs will need to re-paste the install command from Settings → External agents`),await W(0)}let J=X.address();if(J==null||typeof J==="string")throw Error("[mcp] failed to read bound address");return J.port}function eW(X,Z){if(Z&&typeof Z==="object"&&!Array.isArray(Z)){let J=Z.params;if(J&&typeof J==="object"&&!Array.isArray(J)){let K=J.clientInfo;if(K&&typeof K==="object"&&!Array.isArray(K)){let V=K.name;if(typeof V==="string"&&V.trim().length>0)return V.trim()}}}let W=X.headers["user-agent"];if(typeof W==="string"&&W.trim().length>0)return W.trim();return null}async function z8(X){let Z=new Map,W=0;function J(w){let q=Z.get(w);if(q)q.lastActivity=Date.now()}async function K(w,q){Z.delete(w),await q.transport.close().catch(()=>{return})}async function V(){let w=null,q=1/0;for(let[y,O]of Z)if(O.lastActivity<q)q=O.lastActivity,w=y;if(w!==null){let y=Z.get(w);if(y)console.warn(`[mcp] session cap of ${V8} reached; evicting ${w}`),await K(w,y)}}let H=setInterval(()=>{let w=Date.now()-iW;for(let[q,y]of Z)if(y.lastActivity<w)console.log(`[mcp] sweeping idle session ${q}`),K(q,y)},pW);H.unref?.();let U=cW((w,q)=>{(async()=>{let y;try{y=new URL(w.url??"/","http://127.0.0.1").pathname}catch{Y0(q,400,C0,"bad-url");return}if(y!==K8){Y0(q,404,C0,"not-found");return}let O=w.method??"POST";if(O!=="POST"&&O!=="GET"&&O!=="DELETE"){q.setHeader("Allow","GET, POST, DELETE"),Y0(q,405,C0,"method-not-allowed");return}let b=Q8(w,W);if(!b.ok){Y0(q,b.status,C0,"forbidden",{reason:b.reason});return}let v=w.headers["mcp-session-id"],f=typeof v==="string"?v:void 0;if(O==="GET"||O==="DELETE"){if(!f||!Z.has(f)){Y0(q,400,C0,"no-session",{hint:"Open a POST initialize first to receive an Mcp-Session-Id."});return}let g=Z.get(f).transport;J(f);try{await g.handleRequest(w,q)}catch(M){if(console.error("[mcp] transport.handleRequest (GET/DELETE) threw",M),!q.headersSent)Y0(q,500,cX,"internal")}return}let C;try{C=await rW(w)}catch(g){if(g instanceof aX){Y0(q,415,C0,"expected-application-json");return}if(g instanceof dX){Y0(q,413,C0,"body-too-large");return}Y0(q,400,sW,"invalid-json");return}let N;if(f&&Z.has(f))N=Z.get(f).transport,J(f);else if(!f&&C!==void 0&&oW(C)){let g=w.headers["x-ideawave-user-id"],M=typeof g==="string"&&g.trim().length>0?g.trim():null,G=w.headers["x-ideawave-frontend-session-id"],I=typeof G==="string"&&G.trim().length>0?G.trim():null,m=w.headers["x-ideawave-tool-surface"],h=typeof m==="string"?m.trim():"full",x=h==="read"||h==="ideate-coordinator"||h==="ideate-worker"?h:"full",$=w.headers["x-ideawave-images-supported"],T=typeof $==="string"&&$.trim()==="1",i=w.headers["x-ideawave-card-id"],S0=typeof i==="string"&&i.trim().length>0?i.trim():null,_=w.headers["x-ideawave-execution-kind"],s=w.headers["x-ideawave-execution-id"],A=typeof _==="string"?_.trim():"",Z0=typeof s==="string"?s.trim():"",h1=Z0&&new Set(["agent-card","ideate-coordinator","ideate-step","ideate-participant","board-insight","board-auto-title"]).has(A)?{kind:A,id:Z0}:null,h2=w.headers["x-ideawave-ideate-claims"],N2=null;if(typeof h2==="string"&&h2.length>0)try{N2=JSON.parse(h2)}catch{N2=null}let M2=w.headers["x-ideawave-board-id"],b8=typeof M2==="string"&&M2.trim().length>0?M2.trim():null,g2=w.headers["x-ideawave-run-folder"],v8=typeof g2==="string"&&g2.trim().length>0?g2.trim():null,y8=eW(w,C);if(Z.size>=V8)await V();let D2=null,M0=new aW({sessionIdGenerator:()=>TW(),onsessioninitialized:(u0)=>{D2=u0,Z.set(u0,{transport:M0,lastActivity:Date.now()})},onsessionclosed:(u0)=>{Z.delete(u0)}});M0.onclose=()=>{if(M0.sessionId)Z.delete(M0.sessionId)};try{await X.buildServer({userId:M,frontendSessionId:I,boardId:b8,toolSurface:x,imagesSupported:T,cardId:S0,executionTarget:h1,ideateClaims:N2,runFolder:v8,clientHint:y8}).connect(M0)}catch(u0){if(console.error("[mcp] buildServer/connect failed",u0),D2)Z.delete(D2);await M0.close().catch(()=>{return}),Y0(q,500,cX,"server-init-failed");return}N=M0}else{Y0(q,400,C0,"no-session",{hint:"Non-initialize requests must include a valid Mcp-Session-Id header obtained from a prior initialize."});return}try{await N.handleRequest(w,q,C)}catch(g){if(console.error("[mcp] transport.handleRequest threw",g),!q.headersSent)Y0(q,500,cX,"internal")}})().catch((y)=>{console.error("[mcp] unhandled request handler error:",y)})});return W=await tW(U,nW(X.port)),{url:`http://127.0.0.1:${W}${K8}`,port:W,close:async()=>{clearInterval(H);for(let w of Z.values())await w.transport.close().catch(()=>{return});Z.clear(),await new Promise((w)=>U.close(()=>w()))}}}var VQ={name:"ideawave-board",version:"1.0.0"},R2="list_run_folder",O2="read_run_folder_file",w8=new Set(["inspect_diagram"]);function U8(X,Z){if(X===R2||X===O2)return Z!=="ideate-coordinator";return X8(X,Z)}var YQ=[{name:R2,description:"List visible files and folders under the selected runtime run folder. Hidden/config folders are omitted.",inputSchema:{type:"object",properties:{path:{type:"string",description:"Optional relative path inside the selected run folder. Defaults to the run-folder root."}},additionalProperties:!1}},{name:O2,description:"Read a text file inside the selected runtime run folder. Hidden/config paths and outside-folder paths are denied.",inputSchema:{type:"object",properties:{path:{type:"string",description:"Relative path to a text file inside the selected run folder."}},required:["path"],additionalProperties:!1}}];function iX(X){return{content:[{type:"text",text:X}]}}function zQ(X){return iX(JSON.stringify(X,null,2))}function j8(X){return{...iX(X),isError:!0}}async function jQ(X,Z){if(!Z||X.isError)return X;let W=X.content.find((V)=>V.type==="text");if(!W)return X;let J;try{let V=JSON.parse(W.text);if(typeof V.path!=="string")return X;J=y1.resolve(V.path)}catch{return X}let K=y1.resolve(y1.join(WQ.tmpdir(),"ideawave-screenshots"));if(y1.dirname(J)!==K||!/^board-[a-z0-9-]+\.png$/i.test(y1.basename(J)))return X;try{if(!(await XQ(J)).isFile())return X;let H=await ZQ(J);if(H.byteLength<1024||H.byteLength>26214400||!H.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])))return X;return{...X,content:[...X.content,{type:"image",data:H.toString("base64"),mimeType:"image/png"}]}}catch{return X}}function HQ(X,Z,W="full",J=!1){return X.getMetadata(Z).filter((K)=>{let V=j2(K.name);if(!U8(V,W))return!1;if(!J&&w8.has(V))return!1;return!0}).map((K)=>({name:K.name,description:K.description,inputSchema:K.inputSchema}))}function wQ(X,Z,W={}){let J=HQ(X,Z,W.toolSurface??"full",W.imagesSupported??!1);return W.includeRunFolderTools?[...J,...YQ]:J}function H8(X,Z){if(!X||typeof X!=="object"||Array.isArray(X))return null;let W=X[Z];return typeof W==="string"?W:null}async function UQ(X,Z,W){if(W&&W.trim().length>0)return W.trim();if(!X||!Z)throw Error("Run-folder tools require an active IdeaWave board and card.");return(await O0({boardId:X,cardId:Z})).runFolder}async function FQ(X){let Z=await UQ(X.boardId,X.cardId,X.runFolder);if(X.name===R2){let W=H8(X.args,"path")??"",J=await n6(Z,W);return zQ(J)}if(X.name===O2){let W=H8(X.args,"path");if(!W)return j8("read_run_folder_file requires a path.");return iX(await z2(Z,W))}return j8(`Unknown local tool "${X.name}"`)}function BQ(X,Z,W,J,K,V="full",H=!1,U=null,F=null){let w=new QQ(VQ,{capabilities:{tools:{}}}),q=async()=>{if(H)return!0;if(x4(J))return!0;if(W&&J)try{return(await O0({boardId:W,cardId:J})).adapter.supportsImages===!0}catch{return!1}return!1};return w.setRequestHandler(KQ,async()=>({tools:wQ(X,Z,{includeRunFolderTools:V!=="ideate-coordinator"&&Boolean(K||W&&J),toolSurface:V,imagesSupported:await q()})})),w.setRequestHandler(JQ,async(y)=>{let{name:O,arguments:b}=y.params,v=j2(O),f=Date.now();E("mcp.tool_call_received",{frontendSessionId:Z,cardId:J,toolName:v});try{if(!U8(v,V))throw Error(`Tool "${O}" is not available on the ${V} surface`);if(v===R2||v===O2)return await FQ({name:v,args:b,boardId:W,cardId:J,runFolder:K});if(w8.has(v)&&!await q())throw Error(`Tool "${O}" requires a runtime that supports image input`);let C=await X.callTool(Z,v,b??{},F?.runId,J??void 0,U??void 0,F??void 0,V);if(E("mcp.tool_result_returned",{frontendSessionId:Z,cardId:J,toolName:v,elapsedMs:Date.now()-f}),C&&typeof C==="object"&&Array.isArray(C.content)){let N=C;return v==="screenshot_board"||v==="screenshot_ideate_context"?await jQ(N,await q()):N}return{content:[{type:"text",text:typeof C==="string"?C:JSON.stringify(C)}]}}catch(C){return E("mcp.tool_result_returned",{frontendSessionId:Z,cardId:J,toolName:v,elapsedMs:Date.now()-f,hasError:!0}),{content:[{type:"text",text:C instanceof Error?C.message:"Tool call failed"}],isError:!0}}}),w}function F8(X,Z){return z8({buildServer:(W)=>BQ(X,W.frontendSessionId,W.boardId,W.cardId,W.runFolder,W.toolSurface,W.imagesSupported,W.executionTarget,W.ideateClaims),port:Z})}import f2 from"node:fs/promises";import pX from"node:os";import C2 from"node:path";function B8(){return`cfg_${crypto.randomUUID().replace(/-/g,"").slice(0,16)}`}async function qQ(){let[X,Z]=await Promise.all([J0(),u3()]),W=X.globalDefaultConfigId?X.runtimes.find((J)=>J.id===X.globalDefaultConfigId)??null:null;return{runtimes:X.runtimes,globalDefaultConfigId:X.globalDefaultConfigId,globalDefaultEffective:W?{runFolder:W.runFolder??pX.homedir(),modelId:W.defaultModelId??null,configValues:W.defaultConfigValues??{}}:null,knownAdapters:T0().map((J)=>({id:J.id,displayName:J.displayName})),readiness:Z}}async function LQ(X){try{let Z=await O0({boardId:X.boardId,cardId:X.cardId});return{resolved:{configId:Z.entry.id,adapterId:Z.entry.kind==="registered"?Z.entry.adapterId:null,displayName:Z.entry.displayName,runFolder:Z.runFolder,modelId:Z.modelId,configValues:Z.configValues}}}catch(Z){if(Z instanceof g0)return{resolved:null};throw Z}}async function PQ(X){return z0((Z)=>{let W=Z.runtimes.find((V)=>V.kind==="registered"&&V.adapterId===X.adapterId);if(W)return W;let J=T0().find((V)=>V.id===X.adapterId);if(!J)throw Error(`Unknown adapterId: ${X.adapterId}`);let K={id:B8(),kind:"registered",adapterId:X.adapterId,displayName:J.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null};return Z.runtimes.push(K),K})}async function xQ(X){return z0((Z)=>{let W={id:B8(),kind:"custom",displayName:X.displayName,command:X.command,args:X.args,env:X.env,runFolder:X.runFolder,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null};return Z.runtimes.push(W),W})}async function bQ(X){await z0((Z)=>{if(Z.runtimes=Z.runtimes.filter((W)=>W.id!==X.runtimeConfigId),Z.globalDefaultConfigId===X.runtimeConfigId)Z.globalDefaultConfigId=null;for(let W of Object.keys(Z.boardOverrides))if(Z.boardOverrides[W].runtimeConfigId===X.runtimeConfigId)delete Z.boardOverrides[W];for(let W of Object.keys(Z.cardOverrides))if(Z.cardOverrides[W].runtimeConfigId===X.runtimeConfigId)delete Z.cardOverrides[W]})}async function vQ(X){await z0((Z)=>{let W=Z.runtimes.find((J)=>J.id===X.runtimeConfigId);if(!W)throw Error(`Runtime config not found: ${X.runtimeConfigId}`);if(Z.globalDefaultConfigId=X.runtimeConfigId,X.runFolder!==void 0)W.runFolder=X.runFolder;if(X.modelId!==void 0)W.defaultModelId=X.modelId;if(X.configValues!==void 0)W.defaultConfigValues=X.configValues})}async function yQ(X){X.boardId,await z0((Z)=>{if(X.runtimeConfigId===null){delete Z.cardOverrides[X.cardId];return}if(!Z.runtimes.some((K)=>K.id===X.runtimeConfigId))throw Error(`Runtime config not found: ${X.runtimeConfigId}`);let J=Z.cardOverrides[X.cardId];Z.cardOverrides[X.cardId]={runtimeConfigId:X.runtimeConfigId,runFolder:X.runFolder!==void 0?X.runFolder:J?.runFolder??null,modelId:X.modelId!==void 0?X.modelId:J?.modelId??null,configValues:X.configValues!==void 0?X.configValues:J?.configValues??{}}})}async function RQ(X){let W=(await J0()).runtimes.find((H)=>H.id===X.runtimeConfigId);if(!W)throw Error(`Runtime config not found: ${X.runtimeConfigId}`);let J=U0(W),K=await J.resolveSpawnConfig(W),V=W.runFolder??pX.homedir();try{let H=await B4({spawn:{...K,cwd:V},modelId:X.modelId??W.defaultModelId??null,configValues:X.configValues??W.defaultConfigValues??{}}),U=V2({adapterId:J.id,models:H.models,currentModelId:H.currentModelId}),F=new Date().toISOString();return await z0((w)=>{let q=w.runtimes.find((y)=>y.id===X.runtimeConfigId);if(q)q.discoveredModels=U,q.discoveredConfigOptions=H.configOptions,q.discoveredAt=F}),{ok:!0,models:U,configOptions:H.configOptions,currentModelId:H.currentModelId}}catch(H){if(H instanceof l0)throw Error(`${H.message}${J.authHint?` ${J.authHint}`:""}`);if(H instanceof S||H instanceof w0)throw Error(H.message);throw H}}async function OQ(X){let Z=pX.homedir(),W=X.path?.trim()?X.path.trim():Z,J=C2.resolve(W),K=!0;try{if(!(await f2.stat(J)).isDirectory())J=C2.dirname(J)}catch{K=!1,J=Z}let V=[];try{V=(await f2.readdir(J,{withFileTypes:!0})).filter((F)=>F.isDirectory()&&!F.name.startsWith(".")).map((F)=>({name:F.name,path:C2.join(J,F.name)})).sort((F,w)=>F.name.localeCompare(w.name))}catch{V=[]}let H=C2.dirname(J);return{path:J,parent:H===J?null:H,home:Z,exists:K,entries:V}}var q8={list:qQ,getEffectiveForCard:LQ,registerRegistered:PQ,registerCustom:xQ,unregister:bQ,setUserDefault:vQ,setCardOverride:yQ,refreshModels:RQ,browseFolder:OQ};var fQ=[{id:"claude-code",displayName:"Claude Code"},{id:"codex",displayName:"Codex"},{id:"copilot",displayName:"Copilot"},{id:"opencode",displayName:"OpenCode"}];function CQ(){return`cfg_${crypto.randomUUID().replace(/-/g,"").slice(0,16)}`}async function L8(){try{let X=await J0();if(X.globalDefaultConfigId){if(X.runtimes.some((W)=>W.id===X.globalDefaultConfigId))return X.globalDefaultConfigId}for(let Z of fQ){if((await l3(Z.id))?.status!=="ready")continue;let J=null;if(await z0((K)=>{if(K.globalDefaultConfigId){if(K.runtimes.some((U)=>U.id===K.globalDefaultConfigId)){J=K.globalDefaultConfigId;return}}let V=K.runtimes.find((H)=>H.kind==="registered"&&H.adapterId===Z.id);if(!V){let H={id:CQ(),kind:"registered",adapterId:Z.id,displayName:Z.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null};K.runtimes.push(H),V=H}K.globalDefaultConfigId=V.id,J=V.id}),J)return console.log(`[ideawave-cli] using agent runtime: ${Z.displayName}`),J}return console.warn("[ideawave-cli] no agent runtime detected on PATH (tried claude, codex, gh copilot, opencode). Install one to run agents."),null}catch(X){return console.warn("[ideawave-cli] runtime auto-seed failed",X),null}}var hQ=240000;function NQ(){if(typeof crypto<"u"&&"randomUUID"in crypto)return`call_${crypto.randomUUID()}`;return`call_${Date.now()}_${Math.random().toString(16).slice(2)}`}class sX{sessions=new Map;createCallId;toolCallTimeoutMs;constructor(X={}){this.createCallId=X.createCallId??NQ,this.toolCallTimeoutMs=X.toolCallTimeoutMs??hQ}register(X){let Z=this.sessions.get(X.frontendSessionId);if(Z){if(Z.userId!==X.userId)this.rejectPending(Z,"frontend session user changed"),Z.activeRunIds.clear();this.sessions.set(X.frontendSessionId,{frontendSessionId:X.frontendSessionId,userId:X.userId,tools:X.tools,send:X.send,pendingToolCalls:Z.pendingToolCalls,activeRunIds:Z.activeRunIds,activeRunCardIds:Z.activeRunCardIds});return}this.sessions.set(X.frontendSessionId,{frontendSessionId:X.frontendSessionId,userId:X.userId,tools:X.tools,send:X.send,pendingToolCalls:new Map,activeRunIds:new Set,activeRunCardIds:new Map})}disconnect(X,Z="frontend session disconnected"){let W=this.sessions.get(X);if(!W)return{activeRunIds:[]};return this.sessions.delete(X),this.rejectPending(W,Z),{activeRunIds:Array.from(W.activeRunIds)}}sessionCount(){return this.sessions.size}has(X){return this.sessions.has(X)}getUserId(X){return this.sessions.get(X)?.userId??null}setMetadata(X,Z){let W=this.sessions.get(X);if(W)W.tools=Z}getMetadata(X){if(!X)return[];return this.sessions.get(X)?.tools??[]}sendToSession(X,Z){let W=this.sessions.get(X);if(!W)return!1;return W.send(Z),!0}callTool(X,Z,W,J,K,V,H,U){if(!X)return Promise.reject(Error("MCP tool call is missing a frontend session id"));let F=this.sessions.get(X);if(!F)return Promise.reject(Error(`Frontend session ${X} is not connected`));let w=this.createCallId();return new Promise((q,y)=>{let O=J??(K?this.getActiveRunIdForCard(F,K):this.getSoleActiveRunId(F)),b=K??(O?F.activeRunCardIds.get(O):void 0),v=Date.now(),f=setTimeout(()=>{F.pendingToolCalls.delete(w),E("tool_queue.timeout",{frontendSessionId:X,runId:O,cardId:b,callId:w,toolName:Z,elapsedMs:Date.now()-v,queueDepth:F.pendingToolCalls.size}),y(Error(`Tool "${Z}" timed out waiting for the frontend`))},this.toolCallTimeoutMs);F.pendingToolCalls.set(w,{resolve:q,reject:y,timer:f,name:Z,runId:O??null,cardId:b??null,startedAt:v}),E("tool_queue.forwarded_to_browser",{frontendSessionId:X,runId:O,cardId:b,callId:w,toolName:Z,queueDepth:F.pendingToolCalls.size}),F.send({type:"tool_call",callId:w,name:Z,args:W,...O?{runId:O}:{},...b?{cardId:b}:{},...V?{executionTarget:V}:{},...H?{ideateClaims:H}:{},...U?{toolSurface:U}:{}})})}handleToolResult(X,Z){let W=this.sessions.get(X);if(!W)return;let J=W.pendingToolCalls.get(Z.callId);if(!J)return;W.pendingToolCalls.delete(Z.callId),clearTimeout(J.timer);let K=Z.ok?"":Z.error??Z.result?.content?.find(({text:U})=>typeof U==="string")?.text??"Tool execution failed",V=/network|fetch|connection|offline/i.test(K)?"network":/timeout|timed out/i.test(K)?"timeout":/unauthor|forbidden|permission/i.test(K)?"authorization":/conflict|revision|lease|fence/i.test(K)?"conflict":/invalid|missing|required|schema/i.test(K)?"validation":"unknown";if(E("tool_queue.result_received",{frontendSessionId:X,runId:J.runId,cardId:J.cardId,callId:Z.callId,toolName:J.name,elapsedMs:Date.now()-J.startedAt,queueDepth:W.pendingToolCalls.size,ok:Z.ok,...Z.ok?{}:{errorCategory:V}}),Z.ok){J.resolve(Z.result);return}let H=Z.result;if(H&&typeof H==="object"&&Array.isArray(H.content)){J.resolve({...H,isError:!0});return}J.reject(Error(Z.error??"Tool execution failed"))}markRunActive(X,Z,W){let J=this.sessions.get(X);if(!J)return;if(J.activeRunIds.add(Z),W)J.activeRunCardIds.set(Z,W)}markRunSettled(X,Z){let W=this.sessions.get(X);if(!W)return;W.activeRunIds.delete(Z),W.activeRunCardIds.delete(Z)}ownsRun(X,Z){return this.sessions.get(X)?.activeRunIds.has(Z)??!1}rejectPending(X,Z){for(let W of X.pendingToolCalls.values())clearTimeout(W.timer),E("tool_queue.rejected",{frontendSessionId:X.frontendSessionId,runId:W.runId,cardId:W.cardId,toolName:W.name,elapsedMs:Date.now()-W.startedAt}),W.reject(Error(Z));X.pendingToolCalls.clear()}getSoleActiveRunId(X){return X.activeRunIds.size===1?X.activeRunIds.values().next().value:void 0}getActiveRunIdForCard(X,Z){let W=[...X.activeRunCardIds.entries()].filter(([J,K])=>X.activeRunIds.has(J)&&K===Z).map(([J])=>J);return W.length===1?W[0]:void 0}}function x8(){return"0.0.93".trim()?"0.0.93":"dev"}var MQ=process.argv.slice(2),oX=a4(MQ,process.env);if(oX.allowRailwayPrPreviews)process.env[v1]="1";var N0=oX.cliArgs[0],{browserKitEnabled:O1,captureEngineEnabled:gQ}=oX;if(N0==="--help"||N0==="-h"||N0==="help")console.log("ideawave — host the local bridge for a running ideawave.app session."),console.log(""),console.log("Usage:"),console.log(" ideawave Serve the browser bridge and MCP forwarder."),console.log(" ideawave --version Print the CLI version."),process.exit(0);if(N0==="--version"||N0==="-v"||N0==="version")console.log(x8()),process.exit(0);if(N0)console.error(`Unknown command: ${N0}`),console.error("Run `ideawave --help` for usage."),process.exit(1);var f1=new sX,I0=null,DQ=O1?{phase:"ready",message:"Local browser-kit proxy is ready"}:{phase:"idle"},n0=new K2;function h0(X,Z){f1.sendToSession(X,Z)}async function $Q(X,Z){try{let W=q8[Z.method],J=await W(Z.params);h0(X,{type:"runtime_rpc_result",requestId:Z.requestId,ok:!0,result:J})}catch(W){h0(X,{type:"runtime_rpc_result",requestId:Z.requestId,ok:!1,error:W instanceof Error?W.message:String(W)})}}var C1=!1,R1=null;async function rX(){if(C1)return;if(R1)return R1;return R1=(async()=>{try{let X=await F8(f1);J3({...X,requestedPort:X.port}),console.log(`[ideawave-cli] MCP endpoint for the agent: ${X.url}`);try{await v3({onStatusChange:(Z)=>{if(A3(),I0?.sendStatus(),Z.status==="failed")console.warn(`[ideawave-cli] ACP bridge setup failed for ${Z.packageName}: ${Z.error??"unknown error"}`)}})}catch(Z){console.warn("[ideawave-cli] ACP bridge setup skipped:",Z instanceof Error?Z.message:String(Z))}await L8(),C1=!0,console.log("[ideawave-cli] ready — agent runs will drive the board."),I0?.sendStatus()}catch(X){console.error("[ideawave-cli] failed to start agent host:",X),I0?.sendStatus(void 0,X instanceof Error?X.message:String(X))}finally{R1=null}})(),R1}if(process.env.APP_ENV!=="development"){let X=await r4();if(X)console.error(`[ideawave-cli] An IdeaWave CLI is already running at ${X}.`),console.error("[ideawave-cli] Only one CLI per machine is supported — it already serves every browser tab. Exiting."),process.exit(0)}if(gQ)E4().then((X)=>{if(X.phase==="ready")console.log("[ideawave-cli] screenshot engine ready");else if(X.phase==="failed")console.warn(`[ideawave-cli] screenshot engine setup failed: ${X.error??"unknown error"}`)});I0=await o4({registry:f1,runtime:null,mcpReady:()=>C1,capabilities:g4(O1),cliVersion:x8(),browserRuntimeStatus:()=>DQ,onToolMetadata:(X)=>{console.log(`[ideawave-cli] session ${X} advertised ${f1.getMetadata(X).length} tools`),rX()},onRunTurn:(X,Z)=>{console.log(`[ideawave-cli] running agent turn for card ${Z.cardId} (session ${X})`),(async()=>{if(await rX(),!C1){h0(X,{type:"run_settled",runId:Z.runId,cardId:Z.cardId,result:{assistantContent:"",model:null,latencyMs:0,errorText:"IdeaWave CLI agent host is not ready",partialText:null}});return}await O4(Z,(W)=>h0(X,W))})().catch(()=>{return}).finally(()=>f1.markRunSettled(X,Z.runId))},onCancelRun:(X,Z)=>{GX(Z)},onRuntimeRpc:(X,Z)=>{$Q(X,Z)},onBrowserRpc:(X,Z,W)=>{if(!O1){h0(X,{type:"browser_rpc_result",requestId:W.requestId,ok:!1,error:"The development browser-kit proxy is not enabled"});return}n0.handleRpc(X,Z,W).then((J)=>{h0(X,{type:"browser_rpc_result",requestId:W.requestId,ok:!0,result:J})},(J)=>{h0(X,{type:"browser_rpc_result",requestId:W.requestId,ok:!1,error:J instanceof Error?J.message:String(J)})})},onHttpRequest:(X,Z)=>O1?n0.handleHttpRequest(X,Z):!1,onHttpUpgrade:(X,Z,W)=>O1?n0.handleUpgrade(X,Z,W):!1,onWarmupRun:(X,Z,W)=>{(async()=>{if(await rX(),!C1)return{status:"retryable",error:"agent host is not ready"};return f4({cardId:Z.cardId,boardId:Z.boardId,userId:W,frontendSessionId:X})})().then((J)=>{if(!Z.warmupId)return;h0(X,{type:"warmup_result",warmupId:Z.warmupId,cardId:Z.cardId,...J})})},onDisconnect:(X,Z)=>{n0.closeFrontendSession(X),b4(X);for(let W of Z)GX(W);E("bridge.frontend_disconnected",{frontendSessionId:X,activeRuns:Z.length}),eX(X).catch((W)=>{console.warn(`[ideawave-cli] failed to evict sessions for ${X}:`,W instanceof Error?W.message:String(W))}),console.log(`[ideawave-cli] browser session ${X} disconnected`)}});n0.setPort(I0.port);console.log(`[ideawave-cli] browser bridge listening on ${I0.url}`);console.log("[ideawave-cli] waiting for ideawave.app browser sessions…");var P8=!1;for(let X of["SIGINT","SIGTERM"])process.once(X,()=>{if(P8)return;P8=!0,v4(),(async()=>{await n0.close(),await I4(),await I0?.close().catch(()=>{return}),process.exit(0)})()});
|
|
1073
|
+
${W}`),X.destroy()}function rW(X,Z){return new Promise((W,J)=>{let K=(j)=>{X.off("listening",V),J(j)},V=()=>{X.off("error",K);let j=X.address();if(!j||typeof j==="string"){J(Error("Failed to read CLI bridge server address"));return}W(j.port)};X.once("error",K),X.once("listening",V),X.listen(Z,"127.0.0.1")})}function W8(X){return new Promise((Z,W)=>{X.close((J)=>{if(J)W(J);else Z()})})}async function V8(X,Z=sX()){let W=new Map,J=new Map,K=X.maxMessageSize??IW,V=!1,j=(P)=>{let O=J.get(P);if(O)clearTimeout(O);J.delete(P)},U=(P)=>{J.delete(P);let{activeRunIds:O}=X.registry.disconnect(P);X.onDisconnect(P,O)},F=(P,O)=>{let M={type:"cli_status",connected:!0,runtime:X.runtime,mcpReady:X.mcpReady(),error:O,capabilities:X.capabilities??[],cliVersion:X.cliVersion,browserRuntime:X.browserRuntimeStatus?.()};if(P){let h=W.get(P);if(h)o0(h,M);return}for(let h of W.values())o0(h,M)},w=(P,O)=>{let M=O.sessionId.trim(),h=O.userId.trim();if(!M||!h){o0(P,{type:"cli_status",connected:!1,runtime:X.runtime,mcpReady:X.mcpReady(),error:"Missing frontend session or user id"}),P.close();return}j(M);let N=W.get(M);if(N&&N!==P)N.close();P.data.frontendSessionId=M,W.set(M,P),X.registry.register({frontendSessionId:M,userId:h,tools:O.tools,send:(g)=>o0(P,g)}),F(M),X.onToolMetadata?.(M)},q=(P,O)=>{let M=X.registry.getUserId(P);if(!M)return;switch(O.type){case"bridge_ping":{let h=W.get(P);if(h)o0(h,{type:"bridge_pong"});break}case"tool_metadata":X.registry.setMetadata(P,O.tools),X.onToolMetadata?.(P);break;case"tool_result":X.registry.handleToolResult(P,O);break;case"run_turn":E("bridge.run_received",{runId:O.run.runId,cardId:O.run.cardId,frontendSessionId:P}),X.registry.markRunActive(P,O.run.runId,O.run.cardId),X.onRunTurn(P,{...O.run,frontendSessionId:P,userId:M});break;case"cancel_run":if(X.registry.ownsRun(P,O.runId))X.onCancelRun(P,O.runId);break;case"runtime_rpc":X.onRuntimeRpc(P,O);break;case"browser_rpc":X.onBrowserRpc?.(P,W.get(P)?.data.frontendOrigin??"",O);break;case"warmup_run":X.onWarmupRun(P,{...O,frontendSessionId:P},M);break;default:break}},v=(P,O)=>{let M=h2(P.headers.origin),h=rX(M),N={Vary:"Origin"};if(h&&M)N["Access-Control-Allow-Origin"]=M,N["Access-Control-Allow-Private-Network"]="true";if(P.method==="OPTIONS"){O.writeHead(204,{...N,"Access-Control-Allow-Methods":"GET, OPTIONS","Access-Control-Allow-Headers":"*","Access-Control-Max-Age":"600"}),O.end();return}if(P.method!=="GET"){O.writeHead(405,N),O.end();return}O.writeHead(200,{...N,"content-type":"application/json","cache-control":"no-store"}),O.end(JSON.stringify({ideawave:!0,runtime:X.runtime,mcpReady:X.mcpReady(),capabilities:X.capabilities??[],cliVersion:X.cliVersion,browserRuntime:X.browserRuntimeStatus?.()}))},y=(P,O)=>{let M=h2(P.headers.origin),h=rX(M),N={Vary:"Origin"};if(h&&M)N["Access-Control-Allow-Origin"]=M,N["Access-Control-Allow-Private-Network"]="true";if(P.method==="OPTIONS"){O.writeHead(204,{...N,"Access-Control-Allow-Methods":"POST, OPTIONS","Access-Control-Allow-Headers":"content-type","Access-Control-Max-Age":"600"}),O.end();return}if(!h){O.writeHead(403,N),O.end();return}if(P.method!=="POST"){O.writeHead(405,N),O.end();return}let g={...N,"content-type":"application/json"},C=(G,b)=>{O.writeHead(G,g),O.end(JSON.stringify(b))},m="",k=!1;P.on("data",(G)=>{if(m+=G.toString("utf8"),m.length>AW)k=!0,P.destroy()}),P.on("end",()=>{if(k){C(400,{ok:!1,error:"Request body too large"});return}let G;try{G=JSON.parse(m)}catch{C(400,{ok:!1,error:"Invalid JSON body"});return}let b=typeof G.url==="string"?G.url:"";if(!t4(b)){C(400,{ok:!1,error:"url must be an http(s) loopback or /static_boards/ page URL"});return}let R=(D,T)=>{let I=typeof D==="number"?D:Number.NaN;if(!Number.isFinite(I))return T;return Math.min(4000,Math.max(200,Math.round(I)))};e4({url:b,width:R(G.width,1440),height:R(G.height,900)}).then((D)=>C(200,{ok:!0,path:D.path,engine:D.engine})).catch((D)=>{let T=D instanceof y1?503:D instanceof C2?429:500;C(T,{ok:!1,...D instanceof y1?{installing:!0}:{},error:D instanceof Error?D.message:String(D)})})})};for(let P of Z){let O=kW((N,g)=>{(async()=>{let C=new URL(N.url??"/","http://127.0.0.1").pathname;if(C===s4){v(N,g);return}if(C===uW){y(N,g);return}if(await X.onHttpRequest?.(N,g))return;g.writeHead(404,{"content-type":"text/plain"}),g.end("IdeaWave CLI bridge")})().catch((C)=>{if(g.headersSent){g.destroy(C instanceof Error?C:void 0);return}g.writeHead(500,{"content-type":"text/plain"}),g.end("IdeaWave CLI bridge request failed")})}),M=new _W({noServer:!0,maxPayload:K}),h=(N)=>{if(N.idleTimer)clearTimeout(N.idleTimer);N.idleTimer=setTimeout(()=>{N.close()},SW),N.idleTimer.unref?.()};M.on("connection",(N,g)=>{let C=N;C.data={id:EW(),frontendSessionId:null,frontendOrigin:new URL(h2(g.headers.origin)??J8).origin},C.idleTimer=null,h(C),C.on("ping",()=>h(C)),C.on("pong",()=>h(C)),C.on("error",()=>{if(C.idleTimer)clearTimeout(C.idleTimer);C.close()}),C.on("message",(m)=>{h(C);let k=sW(m);if(K>0&&k.length>K)return;let G=v2(k);if(!G)return;let b=C.data.frontendSessionId;if(!b){if(G.type==="bridge_probe")o0(C,{type:"bridge_probe_ack",protocolVersion:G.protocolVersion});else if(G.type==="frontend_hello")w(C,G);return}q(b,G)}),C.on("close",()=>{if(C.idleTimer)clearTimeout(C.idleTimer);let m=C.data.frontendSessionId;if(!m)return;if(W.get(m)!==C)return;if(W.delete(m),j(m),V)return;J.set(m,setTimeout(()=>U(m),lW))})}),O.on("upgrade",(N,g,C)=>{let m=new URL(N.url??"/","http://127.0.0.1").pathname;if(X.onHttpUpgrade?.(N,g,C))return;if(m!==pX){Z8(g,404,"Not Found");return}if(!rX(h2(N.headers.origin))){Z8(g,403,"Forbidden");return}M.handleUpgrade(N,g,C,(k)=>{M.emit("connection",k,N)})});try{let N=await rW(O,P);return{url:`ws://127.0.0.1:${N}${pX}`,port:N,sendStatus:F,close:async()=>{V=!0;for(let g of J.values())clearTimeout(g);J.clear();for(let g of M.clients){let C=g;if(C.idleTimer)clearTimeout(C.idleTimer);C.close()}M.close(),await W8(O).catch(()=>{return})}}}catch(N){if(M.close(),await W8(O).catch(()=>{return}),N?.code==="EADDRINUSE")continue;throw N}}throw Error(`No free IdeaWave CLI bridge port found in ${Z[0]}-${Z.at(-1)}`)}import{lstat as UQ,readFile as FQ}from"node:fs/promises";import BQ from"node:os";import R1 from"node:path";import{Server as qQ}from"@modelcontextprotocol/sdk/server/index.js";import{CallToolRequestSchema as LQ,ListToolsRequestSchema as PQ}from"@modelcontextprotocol/sdk/types.js";var Y8=new Set(["list_boards","get_board","screenshot_board","list_nodes","list_edges","inspect_node","list_context_sources","read_context_card","read_context_file","read_context_image","list_context_folder","get_board_wiki","search_board","get_card_messages","list_agent_cards","inspect_neighbors"]),oW=["screenshot_board","inspect_diagram","ask_user_question","create_agent_card","append_user_message","spawn_child_agents"],nW=new Set(oW),AY=new Set([...Y8].filter((X)=>!nW.has(X)));var z8=new Set(["inspect_ideate_context","get_ideate_run_status","screenshot_ideate_context","submit_ideate_plan","revise_ideate_plan","set_ideate_placement","ask_ideate_question","complete_ideate_run","start_board_walkthrough"]),j8=new Set(["inspect_ideate_context","get_ideate_run_status","get_ideate_worker_context","screenshot_ideate_context","get_board","list_nodes","list_edges","inspect_node","inspect_board_region","inspect_diagram","list_context_sources","read_context_card","read_context_file","read_context_image","list_context_folder","get_board_wiki","search_board","inspect_neighbors","read_diagram_guide","inspect_browser","locate_browser_element","list_agent_cards","get_card_messages","inspect_table","get_table_schema","read_table","query_table","export_table_csv","start_board_walkthrough","ideate_create_note","ideate_create_code","ideate_create_shape","ideate_create_browser","ideate_add_browser_note","ideate_add_board_callout","ideate_create_diagram","ideate_create_edge","ideate_update_note","ideate_update_code","ideate_update_shape","ideate_update_diagram","ideate_update_edge","ideate_delete_node","ideate_delete_edge"]),tW=new Set([...z8,...j8].filter((X)=>X.startsWith("ideate_")||X.includes("ideate_")));function H8(X,Z){if(Z==="full")return!tW.has(X);if(Z==="read")return Y8.has(X);if(Z==="ideate-coordinator")return z8.has(X);return j8.has(X)}import{randomUUID as XQ}from"node:crypto";import{createServer as ZQ}from"node:http";import{StreamableHTTPServerTransport as WQ}from"@modelcontextprotocol/sdk/server/streamableHttp.js";import{isInitializeRequest as B8}from"@modelcontextprotocol/sdk/types.js";var w8=new Set(["127.0.0.1","localhost","[::1]","::1"]);function eW(X){let Z=X.trim();if(Z.length===0)return null;if(Z.startsWith("[")){let V=Z.indexOf("]");if(V===-1)return null;let j=Z.slice(0,V+1),U=Z.slice(V+1);if(U.length===0)return{host:j,port:null};if(!U.startsWith(":"))return null;let F=Number(U.slice(1));if(!Number.isInteger(F)||F<=0||F>65535)return null;return{host:j,port:F}}let W=Z.lastIndexOf(":");if(W===-1)return{host:Z,port:null};let J=Z.slice(W+1),K=Number(J);if(!Number.isInteger(K)||K<=0||K>65535)return{host:Z,port:null};return{host:Z.slice(0,W),port:K}}function U8(X){return w8.has(X)||w8.has(X.toLowerCase())}function F8(X,Z){let W=X.headers.host;if(typeof W!=="string")return{ok:!1,status:403,reason:"missing-host"};let J=eW(W);if(!J)return{ok:!1,status:403,reason:"bad-host"};if(!U8(J.host))return{ok:!1,status:403,reason:"non-loopback-host"};if(J.port!==null&&J.port!==Z)return{ok:!1,status:403,reason:"host-port-mismatch"};let K=X.headers.origin;if(typeof K==="string"&&K.length>0){if(K!=="null"){let V;try{V=new URL(K)}catch{return{ok:!1,status:403,reason:"bad-origin"}}if(!U8(V.hostname))return{ok:!1,status:403,reason:"non-loopback-origin"}}}return{ok:!0}}var q8="/mcp",QQ=43274,P8=16777216,JQ=1800000,KQ=300000,L8=200,VQ=-32700,M0=-32600,oX=-32603;function Y0(X,Z,W,J,K){X.statusCode=Z,X.setHeader("content-type","application/json"),X.end(JSON.stringify({jsonrpc:"2.0",error:{code:W,message:J,...K?{data:K}:{}},id:null}))}class nX extends Error{constructor(){super("expected application/json");this.name="BadContentTypeError"}}class tX extends Error{constructor(){super(`body exceeds ${P8} bytes`);this.name="BodyTooLargeError"}}async function YQ(X){if(X.method&&X.method!=="POST")return;let Z=X.headers["content-type"];if(typeof Z==="string"&&Z.trim().length>0){if(!Z.toLowerCase().includes("application/json"))throw new nX}let W=0,J=[];for await(let V of X){let j=typeof V==="string"?Buffer.from(V):V;if(W+=j.byteLength,W>P8)throw new tX;J.push(j)}if(J.length===0)return;let K=Buffer.concat(J).toString("utf8");if(K.length===0)return;return JSON.parse(K)}function zQ(X){if(Array.isArray(X))return X.some(B8);return B8(X)}function jQ(X){if(typeof X==="number")return X;let Z=process.env.IDEAWAVE_MCP_PORT;if(Z&&Z.trim().length>0){let W=Number(Z);if(Number.isInteger(W)&&W>=0&&W<65536)return W}return QQ}async function HQ(X,Z){let W=(K)=>new Promise((V,j)=>{let U=(w)=>{X.off("listening",F),j(w)},F=()=>{X.off("error",U),V()};X.once("error",U),X.once("listening",F),X.listen(K,"127.0.0.1")});try{await W(Z)}catch(K){if(K.code!=="EADDRINUSE"||Z===0)throw K;console.warn(`[mcp] port ${Z} in use, falling back to an OS-assigned port; external CLIs will need to re-paste the install command from Settings → External agents`),await W(0)}let J=X.address();if(J==null||typeof J==="string")throw Error("[mcp] failed to read bound address");return J.port}function wQ(X,Z){if(Z&&typeof Z==="object"&&!Array.isArray(Z)){let J=Z.params;if(J&&typeof J==="object"&&!Array.isArray(J)){let K=J.clientInfo;if(K&&typeof K==="object"&&!Array.isArray(K)){let V=K.name;if(typeof V==="string"&&V.trim().length>0)return V.trim()}}}let W=X.headers["user-agent"];if(typeof W==="string"&&W.trim().length>0)return W.trim();return null}async function x8(X){let Z=new Map,W=0;function J(w){let q=Z.get(w);if(q)q.lastActivity=Date.now()}async function K(w,q){Z.delete(w),await q.transport.close().catch(()=>{return})}async function V(){let w=null,q=1/0;for(let[v,y]of Z)if(y.lastActivity<q)q=y.lastActivity,w=v;if(w!==null){let v=Z.get(w);if(v)console.warn(`[mcp] session cap of ${L8} reached; evicting ${w}`),await K(w,v)}}let j=setInterval(()=>{let w=Date.now()-JQ;for(let[q,v]of Z)if(v.lastActivity<w)console.log(`[mcp] sweeping idle session ${q}`),K(q,v)},KQ);j.unref?.();let U=ZQ((w,q)=>{(async()=>{let v;try{v=new URL(w.url??"/","http://127.0.0.1").pathname}catch{Y0(q,400,M0,"bad-url");return}if(v!==q8){Y0(q,404,M0,"not-found");return}let y=w.method??"POST";if(y!=="POST"&&y!=="GET"&&y!=="DELETE"){q.setHeader("Allow","GET, POST, DELETE"),Y0(q,405,M0,"method-not-allowed");return}let P=F8(w,W);if(!P.ok){Y0(q,P.status,M0,"forbidden",{reason:P.reason});return}let O=w.headers["mcp-session-id"],M=typeof O==="string"?O:void 0;if(y==="GET"||y==="DELETE"){if(!M||!Z.has(M)){Y0(q,400,M0,"no-session",{hint:"Open a POST initialize first to receive an Mcp-Session-Id."});return}let g=Z.get(M).transport;J(M);try{await g.handleRequest(w,q)}catch(C){if(console.error("[mcp] transport.handleRequest (GET/DELETE) threw",C),!q.headersSent)Y0(q,500,oX,"internal")}return}let h;try{h=await YQ(w)}catch(g){if(g instanceof nX){Y0(q,415,M0,"expected-application-json");return}if(g instanceof tX){Y0(q,413,M0,"body-too-large");return}Y0(q,400,VQ,"invalid-json");return}let N;if(M&&Z.has(M))N=Z.get(M).transport,J(M);else if(!M&&h!==void 0&&zQ(h)){let g=w.headers["x-ideawave-user-id"],C=typeof g==="string"&&g.trim().length>0?g.trim():null,m=w.headers["x-ideawave-frontend-session-id"],k=typeof m==="string"&&m.trim().length>0?m.trim():null,G=w.headers["x-ideawave-tool-surface"],b=typeof G==="string"?G.trim():"full",R=b==="read"||b==="ideate-coordinator"||b==="ideate-worker"?b:"full",D=w.headers["x-ideawave-images-supported"],T=typeof D==="string"&&D.trim()==="1",I=w.headers["x-ideawave-card-id"],q0=typeof I==="string"&&I.trim().length>0?I.trim():null,S=w.headers["x-ideawave-execution-kind"],s=w.headers["x-ideawave-execution-id"],c=typeof S==="string"?S.trim():"",Z0=typeof s==="string"?s.trim():"",N1=Z0&&new Set(["agent-card","ideate-coordinator","ideate-step","ideate-participant","board-insight","board-auto-title"]).has(c)?{kind:c,id:Z0}:null,$2=w.headers["x-ideawave-ideate-claims"],G2=null;if(typeof $2==="string"&&$2.length>0)try{G2=JSON.parse($2)}catch{G2=null}let m2=w.headers["x-ideawave-board-id"],g8=typeof m2==="string"&&m2.trim().length>0?m2.trim():null,E2=w.headers["x-ideawave-run-folder"],D8=typeof E2==="string"&&E2.trim().length>0?E2.trim():null,k2=w.headers["x-ideawave-pool-session-id"],$8=typeof k2==="string"&&k2.trim().length>0?k2.trim():null,G8=wQ(w,h);if(Z.size>=L8)await V();let _2=null,D0=new WQ({sessionIdGenerator:()=>XQ(),onsessioninitialized:(l0)=>{_2=l0,Z.set(l0,{transport:D0,lastActivity:Date.now()})},onsessionclosed:(l0)=>{Z.delete(l0)}});D0.onclose=()=>{if(D0.sessionId)Z.delete(D0.sessionId)};try{await X.buildServer({userId:C,frontendSessionId:k,boardId:g8,toolSurface:R,imagesSupported:T,cardId:q0,executionTarget:N1,ideateClaims:G2,runFolder:D8,poolSessionId:$8,clientHint:G8}).connect(D0)}catch(l0){if(console.error("[mcp] buildServer/connect failed",l0),_2)Z.delete(_2);await D0.close().catch(()=>{return}),Y0(q,500,oX,"server-init-failed");return}N=D0}else{Y0(q,400,M0,"no-session",{hint:"Non-initialize requests must include a valid Mcp-Session-Id header obtained from a prior initialize."});return}try{await N.handleRequest(w,q,h)}catch(g){if(console.error("[mcp] transport.handleRequest threw",g),!q.headersSent)Y0(q,500,oX,"internal")}})().catch((v)=>{console.error("[mcp] unhandled request handler error:",v)})});return W=await HQ(U,jQ(X.port)),{url:`http://127.0.0.1:${W}${q8}`,port:W,close:async()=>{clearInterval(j);for(let w of Z.values())await w.transport.close().catch(()=>{return});Z.clear(),await new Promise((w)=>U.close(()=>w()))}}}var xQ={name:"ideawave-board",version:"1.0.0"},M2="list_run_folder",N2="read_run_folder_file",y8=new Set(["inspect_diagram"]);function O8(X,Z){if(X===M2||X===N2)return Z!=="ideate-coordinator";return H8(X,Z)}var bQ=[{name:M2,description:"List visible files and folders under the selected runtime run folder. Hidden/config folders are omitted.",inputSchema:{type:"object",properties:{path:{type:"string",description:"Optional relative path inside the selected run folder. Defaults to the run-folder root."}},additionalProperties:!1}},{name:N2,description:"Read a text file inside the selected runtime run folder. Hidden/config paths and outside-folder paths are denied.",inputSchema:{type:"object",properties:{path:{type:"string",description:"Relative path to a text file inside the selected run folder."}},required:["path"],additionalProperties:!1}}];function eX(X){return{content:[{type:"text",text:X}]}}function vQ(X){return eX(JSON.stringify(X,null,2))}function b8(X){return{...eX(X),isError:!0}}async function yQ(X,Z){if(!Z||X.isError)return X;let W=X.content.find((V)=>V.type==="text");if(!W)return X;let J;try{let V=JSON.parse(W.text);if(typeof V.path!=="string")return X;J=R1.resolve(V.path)}catch{return X}let K=R1.resolve(R1.join(BQ.tmpdir(),"ideawave-screenshots"));if(R1.dirname(J)!==K||!/^board-[a-z0-9-]+\.png$/i.test(R1.basename(J)))return X;try{if(!(await UQ(J)).isFile())return X;let j=await FQ(J);if(j.byteLength<1024||j.byteLength>26214400||!j.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])))return X;return{...X,content:[...X.content,{type:"image",data:j.toString("base64"),mimeType:"image/png"}]}}catch{return X}}function OQ(X,Z,W="full",J=!1){return X.getMetadata(Z).filter((K)=>{let V=F2(K.name);if(!O8(V,W))return!1;if(!J&&y8.has(V))return!1;return!0}).map((K)=>({name:K.name,description:K.description,inputSchema:K.inputSchema}))}function RQ(X,Z,W={}){let J=OQ(X,Z,W.toolSurface??"full",W.imagesSupported??!1);return W.includeRunFolderTools?[...J,...bQ]:J}function v8(X,Z){if(!X||typeof X!=="object"||Array.isArray(X))return null;let W=X[Z];return typeof W==="string"?W:null}async function fQ(X,Z,W){if(W&&W.trim().length>0)return W.trim();if(!X||!Z)throw Error("Run-folder tools require an active IdeaWave board and card.");return(await C0({boardId:X,cardId:Z})).runFolder}async function CQ(X){let Z=await fQ(X.boardId,X.cardId,X.runFolder);if(X.name===M2){let W=v8(X.args,"path")??"",J=await K4(Z,W);return vQ(J)}if(X.name===N2){let W=v8(X.args,"path");if(!W)return b8("read_run_folder_file requires a path.");return eX(await U2(Z,W))}return b8(`Unknown local tool "${X.name}"`)}function hQ(X,Z,W,J,K,V="full",j=!1,U=null,F=null,w=null){let q=new qQ(xQ,{capabilities:{tools:{}}}),v=()=>{let P=h4(w);return{cardId:P?.cardId??J,executionTarget:P?.executionTarget??U,ideateClaims:P?.ideateClaims??F}},y=async()=>{if(j)return!0;let P=v().cardId;if(N4(P))return!0;if(W&&P)try{return(await C0({boardId:W,cardId:P})).adapter.supportsImages===!0}catch{return!1}return!1};return q.setRequestHandler(PQ,async()=>({tools:RQ(X,Z,{includeRunFolderTools:V!=="ideate-coordinator"&&Boolean(K||W&&J),toolSurface:V,imagesSupported:await y()})})),q.setRequestHandler(LQ,async(P)=>{let{name:O,arguments:M}=P.params,h=F2(O),N=Date.now(),g=v();E("mcp.tool_call_received",{frontendSessionId:Z,cardId:g.cardId,toolName:h});try{if(!O8(h,V))throw Error(`Tool "${O}" is not available on the ${V} surface`);if(h===M2||h===N2)return await CQ({name:h,args:M,boardId:W,cardId:g.cardId,runFolder:K});if(y8.has(h)&&!await y())throw Error(`Tool "${O}" requires a runtime that supports image input`);let C=await X.callTool(Z,h,M??{},g.ideateClaims?.runId,g.cardId??void 0,g.executionTarget??void 0,g.ideateClaims??void 0,V);if(E("mcp.tool_result_returned",{frontendSessionId:Z,cardId:g.cardId,toolName:h,elapsedMs:Date.now()-N}),C&&typeof C==="object"&&Array.isArray(C.content)){let m=C;return h==="screenshot_board"||h==="screenshot_ideate_context"?await yQ(m,await y()):m}return{content:[{type:"text",text:typeof C==="string"?C:JSON.stringify(C)}]}}catch(C){return E("mcp.tool_result_returned",{frontendSessionId:Z,cardId:g.cardId,toolName:h,elapsedMs:Date.now()-N,hasError:!0}),{content:[{type:"text",text:C instanceof Error?C.message:"Tool call failed"}],isError:!0}}}),q}function R8(X,Z){return x8({buildServer:(W)=>hQ(X,W.frontendSessionId,W.boardId,W.cardId,W.runFolder,W.toolSurface,W.imagesSupported,W.executionTarget,W.ideateClaims,W.poolSessionId),port:Z})}import g2 from"node:fs/promises";import X3 from"node:os";import D2 from"node:path";function f8(){return`cfg_${crypto.randomUUID().replace(/-/g,"").slice(0,16)}`}async function MQ(){let[X,Z]=await Promise.all([J0(),p3()]),W=X.globalDefaultConfigId?X.runtimes.find((J)=>J.id===X.globalDefaultConfigId)??null:null;return{runtimes:X.runtimes,globalDefaultConfigId:X.globalDefaultConfigId,globalDefaultEffective:W?{runFolder:W.runFolder??X3.homedir(),modelId:W.defaultModelId??null,configValues:W.defaultConfigValues??{}}:null,knownAdapters:T0().map((J)=>({id:J.id,displayName:J.displayName})),readiness:Z}}async function NQ(X){try{let Z=await C0({boardId:X.boardId,cardId:X.cardId});return{resolved:{configId:Z.entry.id,adapterId:Z.entry.kind==="registered"?Z.entry.adapterId:null,displayName:Z.entry.displayName,runFolder:Z.runFolder,modelId:Z.modelId,configValues:Z.configValues}}}catch(Z){if(Z instanceof x0)return{resolved:null};throw Z}}async function gQ(X){return z0((Z)=>{let W=Z.runtimes.find((V)=>V.kind==="registered"&&V.adapterId===X.adapterId);if(W)return W;let J=T0().find((V)=>V.id===X.adapterId);if(!J)throw Error(`Unknown adapterId: ${X.adapterId}`);let K={id:f8(),kind:"registered",adapterId:X.adapterId,displayName:J.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null};return Z.runtimes.push(K),K})}async function DQ(X){return z0((Z)=>{let W={id:f8(),kind:"custom",displayName:X.displayName,command:X.command,args:X.args,env:X.env,runFolder:X.runFolder,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null};return Z.runtimes.push(W),W})}async function $Q(X){await z0((Z)=>{if(Z.runtimes=Z.runtimes.filter((W)=>W.id!==X.runtimeConfigId),Z.globalDefaultConfigId===X.runtimeConfigId)Z.globalDefaultConfigId=null;for(let W of Object.keys(Z.boardOverrides))if(Z.boardOverrides[W].runtimeConfigId===X.runtimeConfigId)delete Z.boardOverrides[W];for(let W of Object.keys(Z.cardOverrides))if(Z.cardOverrides[W].runtimeConfigId===X.runtimeConfigId)delete Z.cardOverrides[W]})}async function GQ(X){await z0((Z)=>{let W=Z.runtimes.find((J)=>J.id===X.runtimeConfigId);if(!W)throw Error(`Runtime config not found: ${X.runtimeConfigId}`);if(Z.globalDefaultConfigId=X.runtimeConfigId,X.runFolder!==void 0)W.runFolder=X.runFolder;if(X.modelId!==void 0)W.defaultModelId=X.modelId;if(X.configValues!==void 0)W.defaultConfigValues=X.configValues})}async function mQ(X){X.boardId,await z0((Z)=>{if(X.runtimeConfigId===null){delete Z.cardOverrides[X.cardId];return}if(!Z.runtimes.some((K)=>K.id===X.runtimeConfigId))throw Error(`Runtime config not found: ${X.runtimeConfigId}`);let J=Z.cardOverrides[X.cardId];Z.cardOverrides[X.cardId]={runtimeConfigId:X.runtimeConfigId,runFolder:X.runFolder!==void 0?X.runFolder:J?.runFolder??null,modelId:X.modelId!==void 0?X.modelId:J?.modelId??null,configValues:X.configValues!==void 0?X.configValues:J?.configValues??{}}})}async function EQ(X){let W=(await J0()).runtimes.find((j)=>j.id===X.runtimeConfigId);if(!W)throw Error(`Runtime config not found: ${X.runtimeConfigId}`);let J=U0(W),K=await J.resolveSpawnConfig(W),V=W.runFolder??X3.homedir();try{let j=await O4({spawn:{...K,cwd:V},modelId:X.modelId??W.defaultModelId??null,configValues:X.configValues??W.defaultConfigValues??{}}),U=H2({adapterId:J.id,models:j.models,currentModelId:j.currentModelId}),F=new Date().toISOString();return await z0((w)=>{let q=w.runtimes.find((v)=>v.id===X.runtimeConfigId);if(q)q.discoveredModels=U,q.discoveredConfigOptions=j.configOptions,q.discoveredAt=F}),{ok:!0,models:U,configOptions:j.configOptions,currentModelId:j.currentModelId}}catch(j){if(j instanceof u0)throw Error(`${j.message}${J.authHint?` ${J.authHint}`:""}`);if(j instanceof l||j instanceof w0)throw Error(j.message);throw j}}async function kQ(X){let Z=X3.homedir(),W=X.path?.trim()?X.path.trim():Z,J=D2.resolve(W),K=!0;try{if(!(await g2.stat(J)).isDirectory())J=D2.dirname(J)}catch{K=!1,J=Z}let V=[];try{V=(await g2.readdir(J,{withFileTypes:!0})).filter((F)=>F.isDirectory()&&!F.name.startsWith(".")).map((F)=>({name:F.name,path:D2.join(J,F.name)})).sort((F,w)=>F.name.localeCompare(w.name))}catch{V=[]}let j=D2.dirname(J);return{path:J,parent:j===J?null:j,home:Z,exists:K,entries:V}}var C8={list:MQ,getEffectiveForCard:NQ,registerRegistered:gQ,registerCustom:DQ,unregister:$Q,setUserDefault:GQ,setCardOverride:mQ,refreshModels:EQ,browseFolder:kQ};var _Q=[{id:"claude-code",displayName:"Claude Code"},{id:"codex",displayName:"Codex"},{id:"copilot",displayName:"Copilot"},{id:"opencode",displayName:"OpenCode"}];function IQ(){return`cfg_${crypto.randomUUID().replace(/-/g,"").slice(0,16)}`}async function h8(){try{let X=await J0();if(X.globalDefaultConfigId){if(X.runtimes.some((W)=>W.id===X.globalDefaultConfigId))return X.globalDefaultConfigId}for(let Z of _Q){if((await s3(Z.id))?.status!=="ready")continue;let J=null;if(await z0((K)=>{if(K.globalDefaultConfigId){if(K.runtimes.some((U)=>U.id===K.globalDefaultConfigId)){J=K.globalDefaultConfigId;return}}let V=K.runtimes.find((j)=>j.kind==="registered"&&j.adapterId===Z.id);if(!V){let j={id:IQ(),kind:"registered",adapterId:Z.id,displayName:Z.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null};K.runtimes.push(j),V=j}K.globalDefaultConfigId=V.id,J=V.id}),J)return console.log(`[ideawave-cli] using agent runtime: ${Z.displayName}`),J}return console.warn("[ideawave-cli] no agent runtime detected on PATH (tried claude, codex, gh copilot, opencode). Install one to run agents."),null}catch(X){return console.warn("[ideawave-cli] runtime auto-seed failed",X),null}}var SQ=240000;function lQ(){if(typeof crypto<"u"&&"randomUUID"in crypto)return`call_${crypto.randomUUID()}`;return`call_${Date.now()}_${Math.random().toString(16).slice(2)}`}class Z3{sessions=new Map;createCallId;toolCallTimeoutMs;constructor(X={}){this.createCallId=X.createCallId??lQ,this.toolCallTimeoutMs=X.toolCallTimeoutMs??SQ}register(X){let Z=this.sessions.get(X.frontendSessionId);if(Z){if(Z.userId!==X.userId)this.rejectPending(Z,"frontend session user changed"),Z.activeRunIds.clear();this.sessions.set(X.frontendSessionId,{frontendSessionId:X.frontendSessionId,userId:X.userId,tools:X.tools,send:X.send,pendingToolCalls:Z.pendingToolCalls,activeRunIds:Z.activeRunIds,activeRunCardIds:Z.activeRunCardIds});return}this.sessions.set(X.frontendSessionId,{frontendSessionId:X.frontendSessionId,userId:X.userId,tools:X.tools,send:X.send,pendingToolCalls:new Map,activeRunIds:new Set,activeRunCardIds:new Map})}disconnect(X,Z="frontend session disconnected"){let W=this.sessions.get(X);if(!W)return{activeRunIds:[]};return this.sessions.delete(X),this.rejectPending(W,Z),{activeRunIds:Array.from(W.activeRunIds)}}sessionCount(){return this.sessions.size}has(X){return this.sessions.has(X)}getUserId(X){return this.sessions.get(X)?.userId??null}setMetadata(X,Z){let W=this.sessions.get(X);if(W)W.tools=Z}getMetadata(X){if(!X)return[];return this.sessions.get(X)?.tools??[]}sendToSession(X,Z){let W=this.sessions.get(X);if(!W)return!1;return W.send(Z),!0}callTool(X,Z,W,J,K,V,j,U){if(!X)return Promise.reject(Error("MCP tool call is missing a frontend session id"));let F=this.sessions.get(X);if(!F)return Promise.reject(Error(`Frontend session ${X} is not connected`));let w=this.createCallId();return new Promise((q,v)=>{let y=J??(K?this.getActiveRunIdForCard(F,K):this.getSoleActiveRunId(F)),P=K??(y?F.activeRunCardIds.get(y):void 0),O=Date.now(),M=setTimeout(()=>{F.pendingToolCalls.delete(w),E("tool_queue.timeout",{frontendSessionId:X,runId:y,cardId:P,callId:w,toolName:Z,elapsedMs:Date.now()-O,queueDepth:F.pendingToolCalls.size}),v(Error(`Tool "${Z}" timed out waiting for the frontend`))},this.toolCallTimeoutMs);F.pendingToolCalls.set(w,{resolve:q,reject:v,timer:M,name:Z,runId:y??null,cardId:P??null,startedAt:O}),E("tool_queue.forwarded_to_browser",{frontendSessionId:X,runId:y,cardId:P,callId:w,toolName:Z,queueDepth:F.pendingToolCalls.size}),F.send({type:"tool_call",callId:w,name:Z,args:W,...y?{runId:y}:{},...P?{cardId:P}:{},...V?{executionTarget:V}:{},...j?{ideateClaims:j}:{},...U?{toolSurface:U}:{}})})}handleToolResult(X,Z){let W=this.sessions.get(X);if(!W)return;let J=W.pendingToolCalls.get(Z.callId);if(!J)return;W.pendingToolCalls.delete(Z.callId),clearTimeout(J.timer);let K=Z.ok?"":Z.error??Z.result?.content?.find(({text:U})=>typeof U==="string")?.text??"Tool execution failed",V=/network|fetch|connection|offline/i.test(K)?"network":/timeout|timed out/i.test(K)?"timeout":/unauthor|forbidden|permission/i.test(K)?"authorization":/conflict|revision|lease|fence/i.test(K)?"conflict":/invalid|missing|required|schema/i.test(K)?"validation":"unknown";if(E("tool_queue.result_received",{frontendSessionId:X,runId:J.runId,cardId:J.cardId,callId:Z.callId,toolName:J.name,elapsedMs:Date.now()-J.startedAt,queueDepth:W.pendingToolCalls.size,ok:Z.ok,...Z.ok?{}:{errorCategory:V}}),Z.ok){J.resolve(Z.result);return}let j=Z.result;if(j&&typeof j==="object"&&Array.isArray(j.content)){J.resolve({...j,isError:!0});return}J.reject(Error(Z.error??"Tool execution failed"))}markRunActive(X,Z,W){let J=this.sessions.get(X);if(!J)return;if(J.activeRunIds.add(Z),W)J.activeRunCardIds.set(Z,W)}markRunSettled(X,Z){let W=this.sessions.get(X);if(!W)return;W.activeRunIds.delete(Z),W.activeRunCardIds.delete(Z)}ownsRun(X,Z){return this.sessions.get(X)?.activeRunIds.has(Z)??!1}rejectPending(X,Z){for(let W of X.pendingToolCalls.values())clearTimeout(W.timer),E("tool_queue.rejected",{frontendSessionId:X.frontendSessionId,runId:W.runId,cardId:W.cardId,toolName:W.name,elapsedMs:Date.now()-W.startedAt}),W.reject(Error(Z));X.pendingToolCalls.clear()}getSoleActiveRunId(X){return X.activeRunIds.size===1?X.activeRunIds.values().next().value:void 0}getActiveRunIdForCard(X,Z){let W=[...X.activeRunCardIds.entries()].filter(([J,K])=>X.activeRunIds.has(J)&&K===Z).map(([J])=>J);return W.length===1?W[0]:void 0}}function N8(){return"0.0.95".trim()?"0.0.95":"dev"}var uQ=process.argv.slice(2),Q3=X8(uQ,process.env);if(Q3.allowRailwayPrPreviews)process.env[O1]="1";var g0=Q3.cliArgs[0],{browserKitEnabled:C1,captureEngineEnabled:AQ}=Q3;if(g0==="--help"||g0==="-h"||g0==="help")console.log("ideawave — host the local bridge for a running ideawave.app session."),console.log(""),console.log("Usage:"),console.log(" ideawave Serve the browser bridge and MCP forwarder."),console.log(" ideawave --version Print the CLI version."),process.exit(0);if(g0==="--version"||g0==="-v"||g0==="version")console.log(N8()),process.exit(0);if(g0)console.error(`Unknown command: ${g0}`),console.error("Run `ideawave --help` for usage."),process.exit(1);var h1=new Z3,S0=null,TQ=C1?{phase:"ready",message:"Local browser-kit proxy is ready"}:{phase:"idle"},n0=new j2;function N0(X,Z){h1.sendToSession(X,Z)}async function cQ(X,Z){try{let W=C8[Z.method],J=await W(Z.params);N0(X,{type:"runtime_rpc_result",requestId:Z.requestId,ok:!0,result:J})}catch(W){N0(X,{type:"runtime_rpc_result",requestId:Z.requestId,ok:!1,error:W instanceof Error?W.message:String(W)})}}var M1=!1,f1=null;async function W3(){if(M1)return;if(f1)return f1;return f1=(async()=>{try{let X=await R8(h1);U3({...X,requestedPort:X.port}),console.log(`[ideawave-cli] MCP endpoint for the agent: ${X.url}`);try{await N3({onStatusChange:(Z)=>{if(r3(),S0?.sendStatus(),Z.status==="failed")console.warn(`[ideawave-cli] ACP bridge setup failed for ${Z.packageName}: ${Z.error??"unknown error"}`)}})}catch(Z){console.warn("[ideawave-cli] ACP bridge setup skipped:",Z instanceof Error?Z.message:String(Z))}await h8(),M1=!0,console.log("[ideawave-cli] ready — agent runs will drive the board."),S0?.sendStatus()}catch(X){console.error("[ideawave-cli] failed to start agent host:",X),S0?.sendStatus(void 0,X instanceof Error?X.message:String(X))}finally{f1=null}})(),f1}if(process.env.APP_ENV!=="development"){let X=await K8();if(X)console.error(`[ideawave-cli] An IdeaWave CLI is already running at ${X}.`),console.error("[ideawave-cli] Only one CLI per machine is supported — it already serves every browser tab. Exiting."),process.exit(0)}if(AQ)a4().then((X)=>{if(X.phase==="ready")console.log("[ideawave-cli] screenshot engine ready");else if(X.phase==="failed")console.warn(`[ideawave-cli] screenshot engine setup failed: ${X.error??"unknown error"}`)});S0=await V8({registry:h1,runtime:null,mcpReady:()=>M1,capabilities:l4(C1),cliVersion:N8(),browserRuntimeStatus:()=>TQ,onToolMetadata:(X)=>{console.log(`[ideawave-cli] session ${X} advertised ${h1.getMetadata(X).length} tools`),W3()},onRunTurn:(X,Z)=>{console.log(`[ideawave-cli] running agent turn for card ${Z.cardId} (session ${X})`),(async()=>{if(await W3(),!M1){N0(X,{type:"run_settled",runId:Z.runId,cardId:Z.cardId,result:{assistantContent:"",model:null,latencyMs:0,errorText:"IdeaWave CLI agent host is not ready",partialText:null}});return}await G4(Z,(W)=>N0(X,W))})().catch(()=>{return}).finally(()=>h1.markRunSettled(X,Z.runId))},onCancelRun:(X,Z)=>{_X(Z)},onRuntimeRpc:(X,Z)=>{cQ(X,Z)},onBrowserRpc:(X,Z,W)=>{if(!C1){N0(X,{type:"browser_rpc_result",requestId:W.requestId,ok:!1,error:"The development browser-kit proxy is not enabled"});return}n0.handleRpc(X,Z,W).then((J)=>{N0(X,{type:"browser_rpc_result",requestId:W.requestId,ok:!0,result:J})},(J)=>{N0(X,{type:"browser_rpc_result",requestId:W.requestId,ok:!1,error:J instanceof Error?J.message:String(J)})})},onHttpRequest:(X,Z)=>C1?n0.handleHttpRequest(X,Z):!1,onHttpUpgrade:(X,Z,W)=>C1?n0.handleUpgrade(X,Z,W):!1,onWarmupRun:(X,Z,W)=>{(async()=>{if(await W3(),!M1)return{status:"retryable",error:"agent host is not ready"};if(Z.ideate)return lX({boardId:Z.boardId,userId:W,frontendSessionId:X,surface:Z.ideate.surface,runtimeConfigId:Z.ideate.runtimeConfigId,modelId:Z.ideate.modelId});return m4({cardId:Z.cardId,boardId:Z.boardId,userId:W,frontendSessionId:X})})().then((J)=>{if(!Z.warmupId)return;N0(X,{type:"warmup_result",warmupId:Z.warmupId,cardId:Z.cardId,...J})})},onDisconnect:(X,Z)=>{n0.closeFrontendSession(X),g4(X);for(let W of Z)_X(W);E("bridge.frontend_disconnected",{frontendSessionId:X,activeRuns:Z.length}),Y3(X).catch((W)=>{console.warn(`[ideawave-cli] failed to evict sessions for ${X}:`,W instanceof Error?W.message:String(W))}),console.log(`[ideawave-cli] browser session ${X} disconnected`)}});n0.setPort(S0.port);console.log(`[ideawave-cli] browser bridge listening on ${S0.url}`);console.log("[ideawave-cli] waiting for ideawave.app browser sessions…");var M8=!1;for(let X of["SIGINT","SIGTERM"])process.once(X,()=>{if(M8)return;M8=!0,D4(),(async()=>{await n0.close(),await p4(),await S0?.close().catch(()=>{return}),process.exit(0)})()});
|