ideawave 0.0.101 → 0.0.103

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.
Files changed (2) hide show
  1. package/dist/index.mjs +41 -21
  2. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
- function v9(){let X=globalThis.performance?.now?.()??Date.now();return Math.round(X*10)/10}function m(X,Z={}){if(typeof process<"u"&&process.env.IDEAWAVE_AGENT_RUNTIME_TRACE==="0")return;let W=Object.fromEntries(Object.entries(Z).filter(([,Q])=>Q!==void 0));console.info("[agent-runtime-trace]",JSON.stringify({event:X,epochMs:Date.now(),monotonicMs:v9(),...typeof document>"u"?{}:{visibility:document.visibilityState},...W}))}var C9=600000,f9=60000,G3=200,y9=4,a=new Map,f0=null;function h9(X){X.then((Z)=>Z.dispose()).catch(()=>{return})}function q1(X){for(let Z of X.idleWaiters)Z();X.idleWaiters.clear()}function y0(X,Z){if(a.get(X)!==Z)return;a.delete(X),q1(Z),h9(Z.sessionPromise)}function M9(){if(f0!==null)return;f0=setInterval(()=>{let X=Date.now();for(let[Z,W]of a){if(W.inUse)continue;if(X-W.lastUsed<C9)continue;y0(Z,W)}if(a.size===0&&f0!==null)clearInterval(f0),f0=null},f9),f0.unref?.()}function N9(){if(a.size<G3)return;let X=null,Z=1/0;for(let[Q,Y]of a){if(Y.inUse)continue;if(Y.lastUsed>=Z)continue;X=Q,Z=Y.lastUsed}if(!X)return;let W=a.get(X);if(!W)return;y0(X,W)}function D9(){let X=0;while(a.size>G3){let Z=null,W=null;for(let[Q,Y]of a){if(Y.inUse)continue;if(W&&Y.lastUsed>=W.lastUsed)continue;Z=Q,W=Y}if(!Z||!W)break;y0(Z,W),X+=1}if(X>0)m("session_pool.global_idle_trimmed",{evictedSessions:X,poolEntries:a.size})}function $9(X){let Z=Array.from(a.entries()).filter(([,Q])=>Q.frontendSessionId===X&&!Q.inUse).sort(([,Q],[,Y])=>Q.lastUsed-Y.lastUsed),W=Z.length-y9;if(W<=0)return;for(let[Q,Y]of Z.slice(0,W))y0(Q,Y);m("session_pool.frontend_idle_trimmed",{frontendSessionId:X,evictedSessions:W,poolEntries:a.size})}function JX(X,Z,W){let Q=typeof W==="string"?{kind:"agent-card",id:W}:W;return`${X}:${Z}:${Q.kind}:${Q.id}`}function G9(X,Z){if(X.length===0)return!0;let W=X[X.length-1],Q=Z.indexOf(W);if(Q===-1||Q>X.length-1)return!1;for(let Y=0;Y<Q;Y+=1)if(Z[Y]!==X[X.length-1-Q+Y])return!1;return!0}async function P1(X){let Z=a.get(X.key);if(Z){if(Z.inUse)return m("session_pool.wait_for_idle",{frontendSessionId:Z.frontendSessionId,poolEntries:a.size}),await new Promise((Q)=>Z.idleWaiters.add(Q)),P1(X);if(Z.fingerprint!==X.fingerprint)y0(X.key,Z);else if(X.transcriptIds&&Z.transcriptIds&&!G9(Z.transcriptIds,X.transcriptIds))m("session_pool.transcript_rewritten",{frontendSessionId:Z.frontendSessionId,poolEntries:a.size}),y0(X.key,Z);else{Z.inUse=!0,Z.lastUsed=Date.now();try{let Q=await Z.sessionPromise;if(Q.isAlive()){if(X.transcriptIds)Z.transcriptIds=X.transcriptIds;if(Z.frontendSessionId)m("session_pool.reuse",{frontendSessionId:Z.frontendSessionId,poolEntries:a.size});return Q}}catch{}y0(X.key,Z)}}let W=X.open();if(N9(),a.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,warmup:X.warmup===!0}),M9(),X.frontendSessionId)m("session_pool.open",{frontendSessionId:X.frontendSessionId,poolEntries:a.size});try{return await W}catch(Q){let Y=a.get(X.key);if(Y?.sessionPromise===W)y0(X.key,Y);throw Q}}async function E3(X,Z){let W=a.get(X);if(!W||W.fingerprint!==Z)return null;let Q=W.inUse;if(Q&&!W.warmup)return null;if(Q){try{await W.sessionPromise}catch{return null}if(a.get(X)!==W)return null}a.delete(X),q1(W);try{let Y=await W.sessionPromise;if(Y.isAlive())return m("session_pool.spare_adopted",{frontendSessionId:W.frontendSessionId,poolEntries:a.size,adoptedInFlightWarmup:Q}),Y;Y.dispose()}catch{}return null}function b1(X,Z=!1){let W=a.get(X);if(!W)return;if(Z){y0(X,W);return}if(W.inUse=!1,W.lastUsed=Date.now(),W.frontendSessionId)$9(W.frontendSessionId),m("session_pool.release",{frontendSessionId:W.frontendSessionId,poolEntries:a.size});if(D9(),a.get(X)===W)q1(W)}async function g3(X){let Z=Array.from(a.entries()).filter(([,W])=>W.frontendSessionId===X);for(let[W,Q]of Z)a.delete(W),q1(Q);return await Promise.all(Z.map(([,W])=>W.sessionPromise.then((Q)=>Q.dispose()).catch(()=>{return}))),m("session_pool.frontend_evicted",{frontendSessionId:X,evictedSessions:Z.length,poolEntries:a.size}),Z.length}async function E9(){let X=Array.from(a.values());a.clear();for(let Z of X)q1(Z);if(f0!==null)clearInterval(f0),f0=null;await Promise.all(X.map((Z)=>Z.sessionPromise.then((W)=>W.dispose()).catch(()=>{return})))}function x1(X){let Z=Object.entries(X.configValues??{}),W=Z.length>0?JSON.stringify(Object.fromEntries(Z.sort(([Y],[z])=>Y.localeCompare(z)))):"",Q=X.workerToolNames?JSON.stringify([...new Set(X.workerToolNames)].sort()):"";return[X.adapterId,X.configId??"",X.modelId??"",W,X.mcpUrl??"",X.mcpRoutingScope??"",X.runFolder??"",X.toolSurface??"full",Q].join(" ")}var $3=!1;function g9(){if($3)return;$3=!0;let X=()=>{E9()};process.once("beforeExit",X),process.once("SIGTERM",X),process.once("SIGINT",X)}g9();import{readFileSync as A9}from"node:fs";import{homedir as m9}from"node:os";import{posix as _9,win32 as k9}from"node:path";function m3(){return process.platform==="win32"?k9:_9}function S9(){let X=m9(),Z=m3();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 _3(){let X=process.env.IDEAWAVE_MCP_JSON_PATH;if(X&&X.trim().length>0)return X;return m3().join(S9(),"ideawave","mcp.json")}var S3=null;function A3(X){S3=X}var I9=86400000;function T9(){let X;try{X=A9(_3(),"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>I9)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 k3(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 t1(X={}){let Z=S3;if(Z)return k3(Z.url,X);let W=T9();if(!W)return null;return k3(W.url,X)}import O1 from"node:fs/promises";import a9 from"node:path";import l9 from"node:os";import e1 from"node:path";function u9(){let X=l9.homedir();switch(process.platform){case"win32":return process.env.APPDATA??e1.join(X,"AppData","Roaming");case"darwin":return e1.join(X,"Library","Application Support");default:return process.env.XDG_CONFIG_HOME??e1.join(X,".config")}}function X2(){let X=process.env.IDEAWAVE_RUNTIME_CONFIG_PATH;if(X)return X;return e1.join(u9(),"ideawave","runtimes.json")}import{z as E}from"zod";var I3=E.object({id:E.string(),name:E.string().nullable().default(null),description:E.string().nullable().default(null)}),u3=E.union([E.string(),E.boolean()]),c9=E.object({value:E.string(),name:E.string(),description:E.string().nullable().default(null),group:E.string().nullable().default(null),groupName:E.string().nullable().default(null)}),T3=E.object({id:E.string(),name:E.string(),category:E.string().nullable().default(null),description:E.string().nullable().default(null),type:E.enum(["select","boolean"]),currentValue:u3.nullable().default(null),options:E.array(c9).default([])}),YX=E.record(E.string(),u3).default({}),d9=E.discriminatedUnion("kind",[E.object({id:E.string(),kind:E.literal("registered"),adapterId:E.enum(["claude-code","opencode","codex","copilot"]),displayName:E.string(),runFolder:E.string().nullable(),defaultModelId:E.string().nullable().default(null),defaultConfigValues:YX,discoveredModels:E.array(I3).default([]),discoveredConfigOptions:E.array(T3).default([]),discoveredAt:E.string().nullable().default(null)}),E.object({id:E.string(),kind:E.literal("custom"),displayName:E.string(),command:E.string(),args:E.array(E.string()),env:E.record(E.string(),E.string()),runFolder:E.string().nullable(),defaultModelId:E.string().nullable().default(null),defaultConfigValues:YX,discoveredModels:E.array(I3).default([]),discoveredConfigOptions:E.array(T3).default([]),discoveredAt:E.string().nullable().default(null)})]),l3=E.object({runtimeConfigId:E.string(),runFolder:E.string().nullable(),modelId:E.string().nullable().default(null),configValues:YX}),Z2=E.object({version:E.literal(1),globalDefaultConfigId:E.string().nullable(),runtimes:E.array(d9),boardOverrides:E.record(E.string(),l3).default({}),cardOverrides:E.record(E.string(),l3).default({})});var i9={version:1,globalDefaultConfigId:null,runtimes:[],boardOverrides:{},cardOverrides:{}},c3=new Map;function p9(X){return c3.get(X)??Promise.resolve()}function r9(X,Z){c3.set(X,Z)}async function F0(X){let Z=X??X2(),W;try{W=await O1.readFile(Z,"utf-8")}catch(Y){if(Y.code==="ENOENT")return structuredClone(i9);throw Y}return Z2.parse(JSON.parse(W))}async function q0(X,Z){let W=Z??X2(),Q=p9(W).then(async()=>{let Y=await F0(W),z=structuredClone(Y),j=await X(z);return await s9(z,W),j});return r9(W,Q.catch(()=>{return})),Q}async function s9(X,Z){let W=Z??X2(),Q=a9.dirname(W);await O1.mkdir(Q,{recursive:!0});let Y=`${W}.tmp.${process.pid}.${Math.random().toString(36).slice(2)}`,z=JSON.stringify(X,null,2);await O1.writeFile(Y,z,"utf-8");try{await O1.rename(Y,W)}catch(j){throw await O1.unlink(Y).catch(()=>{return}),j}}import{spawn as YZ}from"node:child_process";import{closeSync as zZ,existsSync as r3,mkdirSync as s3,openSync as VZ,readFileSync as jZ,renameSync as HZ,rmSync as o3,statSync as KZ,unlinkSync as UZ,writeFileSync as FZ}from"node:fs";import i3 from"node:os";import u0 from"node:path";var o9=/\.(?:cmd|bat)$/i;function n9(X){return process.platform==="win32"&&o9.test(X)}function W2(X){return n9(X)?{shell:!0,windowsHide:!0}:{}}import{execFile as QZ}from"node:child_process";import{promisify as JZ}from"node:util";import{execFile as t9}from"node:child_process";import{promisify as e9}from"node:util";var XZ=e9(t9),zX=new Map,d3=5000,ZZ=/\.(?:cmd|bat|com|exe)$/i;function WZ(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)=>ZZ.test(W))??Z[0]??null}async function a3(X,Z=XZ){let W=zX.get(X);if(W&&W.expiresAt>Date.now())return W.value;let Q=process.platform==="win32"?"where":"which";try{let{stdout:Y}=await Z(Q,[X],{timeout:2000}),z=WZ(Y);return zX.set(X,{value:z,expiresAt:Date.now()+d3}),z}catch{return zX.set(X,{value:null,expiresAt:Date.now()+d3}),null}}class R1 extends Error{code;constructor(X,Z){super(X);this.name="AcpError",this.code=Z}}class h0 extends R1{constructor(X="No ACP runtime configured"){super(X,"RUNTIME_NOT_CONFIGURED");this.name="RuntimeNotConfiguredError"}}class u extends R1{constructor(X){super(X,"RUNTIME_UNREACHABLE");this.name="RuntimeUnreachableError"}}class Z1 extends R1{authMethods;constructor(X,Z){super(X,"AUTH_REQUIRED");this.name="AuthRequiredError",this.authMethods=Z}}class x0 extends R1{constructor(X="ACP session timed out"){super(X,"SESSION_TIMEOUT");this.name="SessionTimeoutError"}}var DY=JZ(QZ);function o(X,...Z){return a3(X,...Z)}function U0(X){let Z={};for(let[W,Q]of Object.entries(process.env))if(typeof Q==="string")Z[W]=Q;return{...Z,...X??{}}}var jX=[{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"]}],LZ=1800000,Q2=new Map;function HX(){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??u0.join(i3.homedir(),"AppData","Local");return u0.join(X,"ideawave","acp-bridges")}return u0.join(process.env.XDG_CACHE_HOME??u0.join(i3.homedir(),".cache"),"ideawave","acp-bridges")}function BZ(X){return X.replace(/^@/,"").replace(/[/\\]/g,"-")}function J2(){return u0.join(HX(),"install-state.json")}function KX(X){return u0.join(HX(),`${BZ(X.packageName)}@${X.version}.install.lock`)}function UX(){return process.platform==="win32"?"npx.cmd":"npx"}function FX(X){return`${X.packageName}@${X.version}`}function n3(){let X=J2();if(!r3(X))return{};try{return JSON.parse(jZ(X,"utf8"))}catch{return{}}}function VX(X,Z){let W=HX();s3(W,{recursive:!0});let Q=n3();Q.bridges={...Q.bridges??{},[X.adapterId]:Z},FZ(`${J2()}.tmp`,`${JSON.stringify(Q,null,2)}
3
- `),HZ(`${J2()}.tmp`,J2())}function t3(X){return jX.find((Z)=>Z.packageName===X)??null}function L0(X,Z,W){return{adapterId:X.adapterId,packageName:X.packageName,version:X.version,status:Z,...W?{error:W}:{}}}function p3(X,Z){return Z?.packageName===X.packageName&&Z.version===X.version}function e3(X){try{return Date.now()-KZ(X).mtimeMs>LZ}catch{return!1}}function wZ(X){let Z=KX(X);if(!r3(Z))return!1;if(e3(Z))return o3(Z,{force:!0}),!1;return!0}function qZ(X){let Z=KX(X);if(s3(u0.dirname(Z),{recursive:!0}),e3(Z))o3(Z,{force:!0});try{let W=VZ(Z,"wx");return zZ(W),!0}catch{return!1}}function PZ(X){UZ(KX(X))}function LX(X){let Z=n3().bridges?.[X.adapterId];if(p3(X,Z)&&Z.status==="ready")return L0(X,"ready");if(Q2.has(X.adapterId)||wZ(X))return L0(X,"installing");if(p3(X,Z)&&Z.status==="failed")return L0(X,"failed",Z.error);return L0(X,"missing")}function v1(X,Z){X?.onStatusChange?.(Z)}function bZ(X,Z){let W=LX(X);if(W.status==="ready")return v1(Z,W),W;if(W.status==="installing"){let U=Q2.get(X.adapterId);if(U&&Z?.onStatusChange)U.then((w)=>v1(Z,w));return v1(Z,W),W}if(!qZ(X))return L0(X,"installing");let Q=L0(X,"installing");VX(X,Q),v1(Z,Q);let Y=()=>{},z=new Promise((U)=>{Y=U});Q2.set(X.adapterId,z);let j=!1,F=(U)=>{if(j)return;j=!0;try{PZ(X)}catch{}VX(X,U),v1(Z,U),Q2.delete(X.adapterId),Y(U)},L;try{let U=UX();L=YZ(U,["-y",FX(X),...X.warmupArgs],{stdio:"ignore",windowsHide:!0,...W2(U)})}catch(U){let w=L0(X,"failed",U instanceof Error?U.message:String(U));return F(w),w}return L.on("error",(U)=>{F(L0(X,"failed",U.message))}),L.on("close",(U)=>{if(U===0){F(L0(X,"ready"));return}F(L0(X,"failed",`npx warmup exited ${U??"null"}`))}),L.unref(),Q}function W1(X){let Z=t3(X);return Z?LX(Z):null}async function X6(X){let Z=[];for(let W of jX){if(!await o(W.runtimeBinary)){Z.push(L0(W,"not_needed"));continue}Z.push(bZ(W,X))}return Z.filter((W)=>W.status!=="not_needed")}function Y2(X){let Z=t3(X);if(!Z)return null;if(LX(Z).status!=="ready")return null;return{command:UX(),args:["-y",FX(Z)],env:{}}}function z2(X,Z){if(X.command!==UX())return!1;let W=jX.find((Q)=>X.args.includes(FX(Q)));if(!W)return!1;return VX(W,L0(W,"failed",Z)),!0}var Z6="claude",BX="@agentclientprotocol/claude-agent-acp",W6=["claude-agent-acp","claude-code-acp"],Q6="Install Claude Code from https://github.com/anthropics/claude-code",J6={id:"claude-code",displayName:"Claude Code",kind:"registered",supportsImages:!0,resolveSpawnConfig:async()=>{if(!await o(Z6))throw new u(`Claude Code CLI not found. ${Q6}`);let Z=Y2(BX);if(Z)return{command:Z.command,args:Z.args,env:U0(Z.env)};let W=W1(BX),Q=W?.status==="installing";for(let z of W6){let j=await o(z);if(j&&!Q&&W?.status!=="failed")return{command:j,args:[],env:U0()}}let Y=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 u(Y)},checkReadiness:async()=>{if(!await o(Z6))return{status:"not_installed",detail:Q6};let Z=W1(BX);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 W6)if(await o(W))return{status:"ready"};return{status:"not_running",detail:"Installing Claude Code ACP bridge..."}},authHint:"Run `claude login` (or set ANTHROPIC_API_KEY)."};var Y6="codex",wX="@agentclientprotocol/codex-acp",z6="codex-acp",V6="Install Codex CLI from https://developers.openai.com/codex/cli",j6={id:"codex",displayName:"Codex",kind:"registered",resolveSpawnConfig:async()=>{if(!await o(Y6))throw new u(`Codex CLI not found. ${V6}`);let Z=Y2(wX);if(Z)return{command:Z.command,args:Z.args,env:U0(Z.env)};let W=W1(wX),Q=W?.status==="installing",Y=await o(z6);if(Y&&!Q&&W?.status!=="failed")return{command:Y,args:[],env:U0()};let z=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 u(z)},checkReadiness:async()=>{if(!await o(Y6))return{status:"not_installed",detail:V6};let Z=W1(wX);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 o(z6))return{status:"ready"};return{status:"not_running",detail:"Installing Codex ACP bridge..."}},authHint:"Run `codex login` (or set OPENAI_API_KEY)."};var H6="copilot",K6="copilot-acp",U6="npm i -g @github/copilot",F6={id:"copilot",displayName:"GitHub Copilot",kind:"registered",resolveSpawnConfig:async()=>{let X=await o(H6);if(X)return{command:X,args:["--acp"],env:U0()};let Z=await o(K6);if(Z)return{command:Z,args:[],env:U0()};throw new u(`Copilot not installed. Run: ${U6}`)},checkReadiness:async()=>{if(await o(H6))return{status:"ready"};if(await o(K6))return{status:"ready"};return{status:"not_installed",detail:U6}},authHint:"Run `gh auth login` (or `copilot login`)."};import xZ from"node:fs/promises";function OZ(X){return X.startsWith("/")||/^[a-zA-Z]:[\\/]/.test(X)}async function L6(X){if(OZ(X))try{return await xZ.access(X),!0}catch{return!1}return await o(X)!==null}var B6={id:"custom",displayName:"Custom ACP",kind:"custom",resolveSpawnConfig:async(X)=>{if(X.kind!=="custom")throw new u("customAdapter received non-custom entry");if(!await L6(X.command))throw new u(`custom: command "${X.command}" not found`);return{command:X.command,args:X.args,env:U0(X.env)}},checkReadiness:async(X)=>{if(X.kind!=="custom")return{status:"unknown"};return await L6(X.command)?{status:"ready"}:{status:"not_installed"}}};var w6="opencode",q6="Install OpenCode from https://opencode.ai",P6={id:"opencode",displayName:"OpenCode",kind:"registered",resolveSpawnConfig:async()=>{let X=await o(w6);if(!X)throw new u(`OpenCode not installed. ${q6}`);return{command:X,args:["acp"],env:U0()}},checkReadiness:async()=>{if(!await o(w6))return{status:"not_installed",detail:q6};return{status:"ready"}},authHint:"Run `opencode auth login <provider>` (or set the provider's API-key env var)."};var b6={"claude-code":J6,opencode:P6,codex:j6,copilot:F6};function O0(X){if(X.kind==="custom")return B6;let Z=b6[X.adapterId];if(!Z)throw Error(`Unknown registered adapter: ${X.adapterId}`);return Z}function Q1(){return Object.values(b6)}var qX=new Map,V2=new Map,RZ=30000;function j2(X,Z){let W=qX.get(X);if(W&&W.expiresAt>Date.now())return Promise.resolve(W.value);let Q=V2.get(X);if(Q)return Q;let Y=Z().then((z)=>{return qX.set(X,{value:z,expiresAt:Date.now()+RZ}),z}).finally(()=>{V2.delete(X)});return V2.set(X,Y),Y}async function x6(X){let Z=await Promise.all(Q1().map((z)=>j2(z.id,async()=>({adapterId:z.id,...await z.checkReadiness({id:"__probe__",kind:"registered",adapterId:z.id,displayName:z.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null})})))),Q=(await F0(X)).runtimes.filter((z)=>z.kind==="custom"),Y=await Promise.all(Q.map((z)=>j2(`custom:${z.id}`,async()=>({adapterId:z.id,...await O0(z).checkReadiness(z)}))));return[...Z,...Y]}async function O6(X,Z){let W=Q1().find((z)=>z.id===X);if(W)return j2(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 Y=(await F0(Z)).runtimes.find((z)=>z.id===X);if(!Y||Y.kind!=="custom")return null;return j2(`custom:${Y.id}`,async()=>({adapterId:Y.id,...await O0(Y).checkReadiness(Y)}))}function R6(){qX.clear(),V2.clear()}import{createHash as N4,randomBytes as XW,randomUUID as f4}from"node:crypto";import*as a0 from"css-tree";var vZ=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]),p="�",V;(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"})(V||(V={}));var V0={DASH_DASH:"--",CDATA_START:"[CDATA[",DOCTYPE:"doctype",SCRIPT:"script",PUBLIC:"public",SYSTEM:"system"};function H2(X){return X>=55296&&X<=57343}function v6(X){return X>=56320&&X<=57343}function C6(X,Z){return(X-55296)*1024+9216+Z}function K2(X){return X!==32&&X!==10&&X!==13&&X!==9&&X!==12&&X>=1&&X<=31||X>=127&&X<=159}function U2(X){return X>=64976&&X<=65007||vZ.has(X)}var q;(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"})(q||(q={}));var fZ=65536;class PX{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=fZ,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:Q,offset:Y}=this,z=Q+Z,j=Y+Z;return{code:X,startLine:W,endLine:W,startCol:z,endCol:z,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(v6(Z))return this.pos++,this._addGap(),C6(X,Z)}else if(!this.lastChunkWritten)return this.endOfChunkHit=!0,V.EOF;return this._err(q.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,V.EOF;let W=this.html.charCodeAt(Z);return W===V.CARRIAGE_RETURN?V.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,V.EOF;let X=this.html.charCodeAt(this.pos);if(X===V.CARRIAGE_RETURN)return this.isEol=!0,this.skipNextNewLine=!0,V.LINE_FEED;if(X===V.LINE_FEED){if(this.isEol=!0,this.skipNextNewLine)return this.line--,this.skipNextNewLine=!1,this._addGap(),this.advance()}if(this.skipNextNewLine=!1,H2(X))X=this._processSurrogate(X);if(!(this.handler.onParseError===null||X>31&&X<127||X===V.LINE_FEED||X===V.CARRIAGE_RETURN||X>159&&X<64976))this._checkForProblematicCharacters(X);return X}_checkForProblematicCharacters(X){if(K2(X))this._err(q.controlCharacterInInputStream);else if(U2(X))this._err(q.noncharacterInInputStream)}retreat(X){this.pos-=X;while(this.pos<this.lastGapPos)this.lastGapPos=this.gapStack.pop(),this.pos--;this.isEol=!1}}var c;(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"})(c||(c={}));function F2(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 hZ=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 f6(X){if(X>=55296&&X<=57343||X>1114111)return 65533;return hZ.get(X)??X}function y6(X){let Z=atob(X),W=Z.length&-2,Q=new Uint16Array(W/2);for(let Y=0,z=0;Y<W;Y+=2){let j=Z.charCodeAt(Y),F=Z.charCodeAt(Y+1);Q[z++]=j|F<<8}return Q}var bX=y6("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IAAOA12J/c8iFvaxBhAAhOVGFjZGZnbG1vcHFzdHV4owOlA6kDsAO/A8IDxgPNA9ID8gP9AwEEFAQeBCAEJQRHAEphSAA7gNAA0EBjAHUAdABlADuAyQDJQIABYWl5ALYDuQO+A/Ihb24aYXIAYwA7gMoAykAtZG8AdAAWYXIAAOA12AjdcgBhAHYAZQA7gMgAyEDlIm1lbnQAoAgiAAFhcNYD2QNjAHIAEmF0AHkAUwLhAwAAAADpA20lYWxsU3F1YXJlAACg+yVlJ3J5U21hbGxTcXVhcmUAAKCrJQABZ3D2A/kDbwBuABhhZgAA4DXYPN3zImlsb26VY3UAAAFhaQYEDgRsAFSgdSppImxkZQAAoEIi7CNpYnJpdW0AoMwhAAFjaRgEGwRyAACgMCFtAACgcyphAJdjbQBsADuAywDLQAABaXApBC0E8yF0cwCgAyLvJG5lbnRpYWxFAKBHIYACY2Zpb3MAPQQ/BEMEXQRyBHkAJGRyAADgNdgJ3WwibGVkAFMCTAQAAAAAVARtJWFsbFNxdWFyZQAAoPwlZSdyeVNtYWxsU3F1YXJlAACgqiVwA2UEAABpBAAAAABtBGYAAOA12D3dwSFsbACgACLyI2llcnRyZgCgMSFjAPIAcQQABkpUYWJjZGZnb3JzdIgEiwSOBJMElwSkBKcEqwStBLIE5QTqBGMAeQADZDuAPgA+QO0hbWFkoJMD3GNyImV2ZQAeYYABZWl5AJ0EoASjBOQhaWwiYXIAYwAcYRNkbwB0ACBhcgAA4DXYCt0AoNkicABmAADgNdg+3eUiYXRlcgADRUZHTFNUvwTIBM8E1QTZBOAEcSJ1YWwATKBlIuUhc3MAoNsidSRsbEVxdWFsAACgZyJyI2VhdGVyAACgoirlIXNzAKB3IuwkYW50RXF1YWwAoH4qaSJsZGUAAKBzImMAcgAA4DXYotwAoGsiAARBYWNmaW9zdfkE/QQFBQgFCwUTBSIFKwVSIkRjeQAqZAABY3QBBQQFZQBrAMdiXmDpIXJjJGFyAACgDCFsJWJlcnRTcGFjZQAAoAsh8AEYBQAAGwVmAACgDSHpJXpvbnRhbExpbmUAoAAlAAFjdCYFKAXyABIF8iFvayZhbQBwAEQBMQU5BW8AdwBuAEgAdQBtAPAAAAFxInVhbAAAoE8iAAdFSk9hY2RmZ21ub3N0dVMFVgVZBVwFYwVtBXAFcwV6BZAFtgXFBckFzQVjAHkAFWTsIWlnMmFjAHkAAWRjAHUAdABlADuAzQDNQAABaXlnBWwFcgBjADuAzgDOQBhkbwB0ADBhcgAAoBEhcgBhAHYAZQA7gMwAzEAAoREhYXB/BYsFAAFjZ4MFhQVyACphaSNuYXJ5SQAAoEghbABpAGUA8wD6AvQBlQUAAKUFZaAsIgABZ3KaBZ4F8iFhbACgKyLzI2VjdGlvbgCgwiJpI3NpYmxlAAABQ1SsBbEFbyJtbWEAAKBjIGkibWVzAACgYiCAAWdwdAC8Bb8FwwVvAG4ALmFmAADgNdhA3WEAmWNjAHIAAKAQIWkibGRlAChh6wHSBQAA1QVjAHkABmRsADuAzwDPQIACY2Zvc3UA4QXpBe0F8gX9BQABaXnlBegFcgBjADRhGWRyAADgNdgN3XAAZgAA4DXYQd3jAfcFAAD7BXIAAOA12KXc8iFjeQhk6yFjeQRkgANISmFjZm9zAAwGDwYSBhUGHQYhBiYGYwB5ACVkYwB5AAxk8CFwYZpjAAFleRkGHAbkIWlsNmEaZHIAAOA12A7dcABmAADgNdhC3WMAcgAA4DXYptyABUpUYWNlZmxtb3N0AD0GQAZDBl4GawZkB2gHcAd0B80H2gdjAHkACWQ7gDwAPECAAmNtbnByAEwGTwZSBlUGWwb1IXRlOWHiIWRhm2NnAACg6ifsI2FjZXRyZgCgEiFyAACgniGAAWFleQBkBmcGagbyIW9uPWHkIWlsO2EbZAABZnNvBjQHdAAABUFDREZSVFVWYXKABp4GpAbGBssG3AYDByEHwQIqBwABbnKEBowGZyVsZUJyYWNrZXQAAKDoJ/Ihb3cAoZAhQlKTBpcGYQByAACg5CHpJGdodEFycm93AKDGIWUjaWxpbmcAAKAII28A9QGqBgAAsgZiJWxlQnJhY2tldAAAoOYnbgDUAbcGAAC+BmUkZVZlY3RvcgAAoGEp5SJjdG9yQqDDIWEAcgAAoFkpbCJvb3IAAKAKI2kiZ2h0AAABQVbSBtcGciJyb3cAAKCUIeUiY3RvcgCgTikAAWVy4AbwBmUAAKGjIkFW5gbrBnIicm93AACgpCHlImN0b3IAoFopaSNhbmdsZQBCorIi+wYAAAAA/wZhAHIAAKDPKXEidWFsAACgtCJwAIABRFRWAAoHEQcYB+8kd25WZWN0b3IAoFEpZSRlVmVjdG9yAACgYCnlImN0b3JCoL8hYQByAACgWCnlImN0b3JCoLwhYQByAACgUilpAGcAaAB0AGEAcgByAG8A9wDMAnMAAANFRkdMU1Q/B0cHTgdUB1gHXwfxJXVhbEdyZWF0ZXIAoNoidSRsbEVxdWFsAACgZiJyI2VhdGVyAACgdiLlIXNzAKChKuwkYW50RXF1YWwAoH0qaSJsZGUAAKByInIAAOA12A/dZaDYIuYjdGFycm93AKDaIWkiZG90AD9hgAFucHcAege1B7kHZwAAAkxSbHKCB5QHmwerB+UhZnQAAUFSiAeNB3Iicm93AACg9SfpJGdodEFycm93AKD3J+kkZ2h0QXJyb3cAoPYn5SFmdAABYXLcAqEHaQBnAGgAdABhAHIAcgBvAPcA5wJpAGcAaAB0AGEAcgByAG8A9wDuAmYAAOA12EPdZQByAAABTFK/B8YHZSRmdEFycm93AACgmSHpJGdodEFycm93AKCYIYABY2h0ANMH1QfXB/IAWgYAoLAh8iFva0FhAKBqIgAEYWNlZmlvc3XpB+wH7gf/BwMICQgOCBEIcAAAoAUpeQAcZAABZGzyB/kHaSR1bVNwYWNlAACgXyBsI2ludHJmAACgMyFyAADgNdgQ3e4jdXNQbHVzAKATInAAZgAA4DXYRN1jAPIA/gecY4AESmFjZWZvc3R1ACEIJAgoCDUIgQiFCDsKQApHCmMAeQAKZGMidXRlAENhgAFhZXkALggxCDQI8iFvbkdh5CFpbEVhHWSAAWdzdwA7CGEIfQjhInRpdmWAAU1UVgBECEwIWQhlJWRpdW1TcGFjZQAAoAsgaABpAAABY25SCFMIawBTAHAAYQBjAOUASwhlAHIAeQBUAGgAaQDuAFQI9CFlZAABR0xnCHUIcgBlAGEAdABlAHIARwByAGUAYQB0AGUA8gDrBGUAcwBzAEwAZQBzAPMA2wdMImluZQAKYHIAAOA12BHdAAJCbnB0jAiRCJkInAhyImVhawAAoGAgwiZyZWFraW5nU3BhY2WgYGYAAKAVIUOq7CqzCMIIzQgAAOcIGwkAAAAAAAAtCQAAbwkAAIcJAACdCcAJGQoAADQKAAFvdbYIvAjuI2dydWVudACgYiJwIkNhcAAAoG0ibyh1YmxlVmVydGljYWxCYXIAAKAmIoABbHF4ANII1wjhCOUibWVudACgCSL1IWFsVKBgImkibGRlAADgQiI4A2kic3RzAACgBCJyI2VhdGVyAACjbyJFRkdMU1T1CPoIAgkJCQ0JFQlxInVhbAAAoHEidSRsbEVxdWFsAADgZyI4A3IjZWF0ZXIAAOBrIjgD5SFzcwCgeSLsJGFudEVxdWFsAOB+KjgDaSJsZGUAAKB1IvUhbXBEASAJJwnvI3duSHVtcADgTiI4A3EidWFsAADgTyI4A2UAAAFmczEJRgn0JFRyaWFuZ2xlQqLqIj0JAAAAAEIJYQByAADgzyk4A3EidWFsAACg7CJzAICibiJFR0xTVABRCVYJXAlhCWkJcSJ1YWwAAKBwInIjZWF0ZXIAAKB4IuUhc3MA4GoiOAPsJGFudEVxdWFsAOB9KjgDaSJsZGUAAKB0IuUic3RlZAABR0x1CX8J8iZlYXRlckdyZWF0ZXIA4KIqOAPlI3NzTGVzcwDgoSo4A/IjZWNlZGVzAKGAIkVTjwmVCXEidWFsAADgryo4A+wkYW50RXF1YWwAoOAiAAFlaaAJqQl2JmVyc2VFbGVtZW50AACgDCLnJWh0VHJpYW5nbGVCousitgkAAAAAuwlhAHIAAODQKTgDcSJ1YWwAAKDtIgABcXXDCeAJdSNhcmVTdQAAAWJwywnVCfMhZXRF4I8iOANxInVhbAAAoOIi5SJyc2V0ReCQIjgDcSJ1YWwAAKDjIoABYmNwAOYJ8AkNCvMhZXRF4IIi0iBxInVhbAAAoIgi4yJlZWRzgKGBIkVTVAD6CQAKBwpxInVhbAAA4LAqOAPsJGFudEVxdWFsAKDhImkibGRlAADgfyI4A+UicnNldEXggyLSIHEidWFsAACgiSJpImxkZQCAoUEiRUZUACIKJwouCnEidWFsAACgRCJ1JGxsRXF1YWwAAKBHImkibGRlAACgSSJlJXJ0aWNhbEJhcgAAoCQiYwByAADgNdip3GkAbABkAGUAO4DRANFAnWMAB0VhY2RmZ21vcHJzdHV2XgphCmgKcgp2CnoKgQqRCpYKqwqtCrsKyArNCuwhaWdSYWMAdQB0AGUAO4DTANNAAAFpeWwKcQpyAGMAO4DUANRAHmRiImxhYwBQYXIAAOA12BLdcgBhAHYAZQA7gNIA0kCAAWFlaQCHCooKjQpjAHIATGFnAGEAqWNjInJvbgCfY3AAZgAA4DXYRt3lI25DdXJseQABRFGeCqYKbyV1YmxlUXVvdGUAAKAcIHUib3RlAACgGCAAoFQqAAFjbLEKtQpyAADgNdiq3GEAcwBoADuA2ADYQGkAbAHACsUKZABlADuA1QDVQGUAcwAAoDcqbQBsADuA1gDWQGUAcgAAAUJQ0wrmCgABYXLXCtoKcgAAoD4gYQBjAAABZWvgCuIKAKDeI2UAdAAAoLQjYSVyZW50aGVzaXMAAKDcI4AEYWNmaGlsb3JzAP0KAwsFCwkLCwsMCxELIwtaC3IjdGlhbEQAAKACInkAH2RyAADgNdgT3WkApmOgY/Ujc01pbnVzsWAAAWlwFQsgC24AYwBhAHIAZQBwAGwAYQBuAOUACgVmAACgGSGAobsqZWlvACoLRQtJC+MiZWRlc4CheiJFU1QANAs5C0ALcSJ1YWwAAKCvKuwkYW50RXF1YWwAoHwiaSJsZGUAAKB+Im0AZQAAoDMgAAFkcE0LUQv1IWN0AKAPIm8jcnRpb24AYaA3ImwAAKAdIgABY2leC2ILcgAA4DXYq9yoYwACVWZvc2oLbwtzC3cLTwBUADuAIgAiQHIAAOA12BTdcABmAACgGiFjAHIAAOA12KzcAAZCRWFjZWZoaW9yc3WPC5MLlwupC7YL2AvbC90LhQyTDJoMowzhIXJyAKAQKUcAO4CuAK5AgAFjbnIAnQugC6ML9SF0ZVRhZwAAoOsncgB0oKAhbAAAoBYpgAFhZXkArwuyC7UL8iFvblhh5CFpbFZhIGR2oBwhZSJyc2UAAAFFVb8LzwsAAWxxwwvIC+UibWVudACgCyL1JGlsaWJyaXVtAKDLIXAmRXF1aWxpYnJpdW0AAKBvKXIAAKAcIW8AoWPnIWh0AARBQ0RGVFVWYewLCgwQDDIMNwxeDHwM9gIAAW5y8Av4C2clbGVCcmFja2V0AACg6SfyIW93AKGSIUJM/wsDDGEAcgAAoOUhZSRmdEFycm93AACgxCFlI2lsaW5nAACgCSNvAPUBFgwAAB4MYiVsZUJyYWNrZXQAAKDnJ24A1AEjDAAAKgxlJGVWZWN0b3IAAKBdKeUiY3RvckKgwiFhAHIAAKBVKWwib29yAACgCyMAAWVyOwxLDGUAAKGiIkFWQQxGDHIicm93AACgpiHlImN0b3IAoFspaSNhbmdsZQBCorMiVgwAAAAAWgxhAHIAAKDQKXEidWFsAACgtSJwAIABRFRWAGUMbAxzDO8kd25WZWN0b3IAoE8pZSRlVmVjdG9yAACgXCnlImN0b3JCoL4hYQByAACgVCnlImN0b3JCoMAhYQByAACgUykAAXB1iQyMDGYAAKAdIe4kZEltcGxpZXMAoHAp6SRnaHRhcnJvdwCg2yEAAWNongyhDHIAAKAbIQCgsSHsJGVEZWxheWVkAKD0KYAGSE9hY2ZoaW1vcXN0dQC/DMgMzAzQDOIM5gwKDQ0NFA0ZDU8NVA1YDQABQ2PDDMYMyCFjeSlkeQAoZEYiVGN5ACxkYyJ1dGUAWmEAorwqYWVpedgM2wzeDOEM8iFvbmBh5CFpbF5hcgBjAFxhIWRyAADgNdgW3e8hcnQAAkRMUlXvDPYM/QwEDW8kd25BcnJvdwAAoJMhZSRmdEFycm93AACgkCHpJGdodEFycm93AKCSIXAjQXJyb3cAAKCRIechbWGjY+EkbGxDaXJjbGUAoBgicABmAADgNdhK3XICHw0AAAAAIg10AACgGiLhIXJlgKGhJUlTVQAqDTINSg3uJXRlcnNlY3Rpb24AoJMidQAAAWJwNw1ADfMhZXRFoI8icSJ1YWwAAKCRIuUicnNldEWgkCJxInVhbAAAoJIibiJpb24AAKCUImMAcgAA4DXYrtxhAHIAAKDGIgACYmNtcF8Nag2ODZANc6DQImUAdABFoNAicSJ1YWwAAKCGIgABY2huDYkNZSJlZHMAgKF7IkVTVAB4DX0NhA1xInVhbAAAoLAq7CRhbnRFcXVhbACgfSJpImxkZQAAoH8iVABoAGEA9ADHCwCgESIAodEiZXOVDZ8NciJzZXQARaCDInEidWFsAACghyJlAHQAAKDRIoAFSFJTYWNmaGlvcnMAtQ27Db8NyA3ODdsN3w3+DRgOHQ4jDk8AUgBOADuA3gDeQMEhREUAoCIhAAFIY8MNxg1jAHkAC2R5ACZkAAFidcwNzQ0JYKRjgAFhZXkA1A3XDdoN8iFvbmRh5CFpbGJhImRyAADgNdgX3QABZWnjDe4N8gHoDQAA7Q3lImZvcmUAoDQiYQCYYwABY27yDfkNayNTcGFjZQAA4F8gCiDTInBhY2UAoAkg7CFkZYChPCJFRlQABw4MDhMOcSJ1YWwAAKBDInUkbGxFcXVhbAAAoEUiaSJsZGUAAKBIInAAZgAA4DXYS93pI3BsZURvdACg2yAAAWN0Jw4rDnIAAOA12K/c8iFva2Zh4QpFDlYOYA5qDgAAbg5yDgAAAAAAAAAAAAB5DnwOqA6zDgAADg8RDxYPGg8AAWNySA5ODnUAdABlADuA2gDaQHIAb6CfIeMhaXIAoEkpcgDjAVsOAABdDnkADmR2AGUAbGEAAWl5Yw5oDnIAYwA7gNsA20AjZGIibGFjAHBhcgAA4DXYGN1yAGEAdgBlADuA2QDZQOEhY3JqYQABZGl/Dp8OZQByAAABQlCFDpcOAAFhcokOiw5yAF9gYQBjAAABZWuRDpMOAKDfI2UAdAAAoLUjYSVyZW50aGVzaXMAAKDdI28AbgBQoMMi7CF1cwCgjiIAAWdwqw6uDm8AbgByYWYAAOA12EzdAARBREVUYWRwc78O0g7ZDuEOBQPqDvMOBw9yInJvdwDCoZEhyA4AAMwOYQByAACgEilvJHduQXJyb3cAAKDFIW8kd25BcnJvdwAAoJUhcSV1aWxpYnJpdW0AAKBuKWUAZQBBoKUiciJyb3cAAKClIW8AdwBuAGEAcgByAG8A9wAQA2UAcgAAAUxS+Q4AD2UkZnRBcnJvdwAAoJYh6SRnaHRBcnJvdwCglyFpAGyg0gNvAG4ApWPpIW5nbmFjAHIAAOA12LDcaSJsZGUAaGFtAGwAO4DcANxAgAREYmNkZWZvc3YALQ8xDzUPNw89D3IPdg97D4AP4SFzaACgqyJhAHIAAKDrKnkAEmThIXNobKCpIgCg5ioAAWVyQQ9DDwCgwSKAAWJ0eQBJD00Paw9hAHIAAKAWIGmgFiDjIWFsAAJCTFNUWA9cD18PZg9hAHIAAKAjIukhbmV8YGUkcGFyYXRvcgAAoFgnaSJsZGUAAKBAItQkaGluU3BhY2UAoAogcgAA4DXYGd1wAGYAAOA12E3dYwByAADgNdix3GQiYXNoAACgqiKAAmNlZm9zAI4PkQ+VD5kPng/pIXJjdGHkIWdlAKDAInIAAOA12BrdcABmAADgNdhO3WMAcgAA4DXYstwAAmZpb3OqD64Prw+0D3IAAOA12BvdnmNwAGYAAOA12E/dYwByAADgNdiz3IAEQUlVYWNmb3N1AMgPyw/OD9EP2A/gD+QP6Q/uD2MAeQAvZGMAeQAHZGMAeQAuZGMAdQB0AGUAO4DdAN1AAAFpedwP3w9yAGMAdmErZHIAAOA12BzdcABmAADgNdhQ3WMAcgAA4DXYtNxtAGwAeGEABEhhY2RlZm9z/g8BEAUQDRAQEB0QIBAkEGMAeQAWZGMidXRlAHlhAAFheQkQDBDyIW9ufWEXZG8AdAB7YfIBFRAAABwQbwBXAGkAZAB0AOgAVAhhAJZjcgAAoCghcABmAACgJCFjAHIAAOA12LXc4QtCEEkQTRAAAGcQbRByEAAAAAAAAAAAeRCKEJcQ8hD9EAAAGxEhETIROREAAD4RYwB1AHQAZQA7gOEA4UByImV2ZQADYYCiPiJFZGl1eQBWEFkQWxBgEGUQAOA+IjMDAKA/InIAYwA7gOIA4kB0AGUAO4C0ALRAMGRsAGkAZwA7gOYA5kByoGEgAOA12B7dcgBhAHYAZQA7gOAA4EAAAWVwfBCGEAABZnCAEIQQ8yF5bQCgNSHoAIMQaABhALFjAAFhcI0QWwAAAWNskRCTEHIAAWFnAACgPypkApwQAAAAALEQAKInImFkc3ajEKcQqRCuEG4AZAAAoFUqAKBcKmwib3BlAACgWCoAoFoqAKMgImVsbXJzersQvRDAEN0Q5RDtEACgpCllAACgICJzAGQAYaAhImEEzhDQENIQ1BDWENgQ2hDcEACgqCkAoKkpAKCqKQCgqykAoKwpAKCtKQCgrikAoK8pdAB2oB8iYgBkoL4iAKCdKQABcHTpEOwQaAAAoCIixWDhIXJyAKB8IwABZ3D1EPgQbwBuAAVhZgAA4DXYUt0Ao0giRWFlaW9wBxEJEQ0RDxESERQRAKBwKuMhaXIAoG8qAKBKImQAAKBLInMAJ2DyIW94ZaBIIvEADhFpAG4AZwA7gOUA5UCAAWN0eQAmESoRKxFyAADgNdi23CpgbQBwAGWgSCLxAPgBaQBsAGQAZQA7gOMA40BtAGwAO4DkAORAAAFjaUERRxFvAG4AaQBuAPQA6AFuAHQAAKARKgAITmFiY2RlZmlrbG5vcHJzdWQRaBGXEZ8RpxGrEdIR1hErEjASexKKEn0RThNbE3oTbwB0AACg7SoAAWNybBGJEWsAAAJjZXBzdBF4EX0RghHvIW5nAKBMInAjc2lsb24A9mNyImltZQAAoDUgaQBtAGWgPSJxAACgzSJ2AY0RkRFlAGUAAKC9ImUAZABnoAUjZQAAoAUjcgBrAHSgtSPiIXJrAKC2IwABb3mjEaYRbgDnAHcRMWTxIXVvAKAeIIACY21wcnQAtBG5Eb4RwRHFEeEhdXPloDUi5ABwInR5dgAAoLApcwDpAH0RbgBvAPUA6gCAAWFodwDLEcwRzhGyYwCgNiHlIWVuAKBsInIAAOA12B/dZwCAA2Nvc3R1dncA4xHyEQUSEhIhEiYSKRKAAWFpdQDpEesR7xHwAKMFcgBjAACg7yVwAACgwyKAAWRwdAD4EfwRABJvAHQAAKAAKuwhdXMAoAEqaSJtZXMAAKACKnECCxIAAAAADxLjIXVwAKAGKmEAcgAAoAUm8iNpYW5nbGUAAWR1GhIeEu8hd24AoL0lcAAAoLMlcCJsdXMAAKAEKmUA5QBCD+UAkg9hInJvdwAAoA0pgAFha28ANhJoEncSAAFjbjoSZRJrAIABbHN0AEESRxJNEm8jemVuZ2UAAKDrKXEAdQBhAHIA5QBcBPIjaWFuZ2xlgKG0JWRscgBYElwSYBLvIXduAKC+JeUhZnQAoMIlaSJnaHQAAKC4JWsAAKAjJLEBbRIAAHUSsgFxEgAAcxIAoJIlAKCRJTQAAKCTJWMAawAAoIglAAFlb38ShxJx4D0A5SD1IWl2AOBhIuUgdAAAoBAjAAJwdHd4kRKVEpsSnxJmAADgNdhT3XSgpSJvAG0AAKClIvQhaWUAoMgiAAZESFVWYmRobXB0dXayEsES0RLgEvcS+xIKExoTHxMjEygTNxMAAkxSbHK5ErsSvRK/EgCgVyUAoFQlAKBWJQCgUyUAolAlRFVkdckSyxLNEs8SAKBmJQCgaSUAoGQlAKBnJQACTFJsctgS2hLcEt4SAKBdJQCgWiUAoFwlAKBZJQCjUSVITFJobHLrEu0S7xLxEvMS9RIAoGwlAKBjJQCgYCUAoGslAKBiJQCgXyVvAHgAAKDJKQACTFJscgITBBMGEwgTAKBVJQCgUiUAoBAlAKAMJQCiACVEVWR1EhMUExYTGBMAoGUlAKBoJQCgLCUAoDQlaSJudXMAAKCfIuwhdXMAoJ4iaSJtZXMAAKCgIgACTFJsci8TMRMzEzUTAKBbJQCgWCUAoBglAKAUJQCjAiVITFJobHJCE0QTRhNIE0oTTBMAoGolAKBhJQCgXiUAoDwlAKAkJQCgHCUAAWV2UhNVE3YA5QD5AGIAYQByADuApgCmQAACY2Vpb2ITZhNqE24TcgAA4DXYt9xtAGkAAKBPIG0A5aA9IogRbAAAoVwAYmh0E3YTAKDFKfMhdWIAoMgnbAF+E4QTbABloCIgdAAAoCIgcAAAoU4iRWWJE4sTAKCuKvGgTyI8BeEMqRMAAN8TABQDFB8UAAAjFDQUAAAAAIUUAAAAAI0UAAAAANcU4xT3FPsUAACIFQAAlhWAAWNwcgCuE7ET1RP1IXRlB2GAoikiYWJjZHMAuxO/E8QTzhPSE24AZAAAoEQqciJjdXAAAKBJKgABYXXIE8sTcAAAoEsqcAAAoEcqbwB0AACgQCoA4CkiAP4AAWVv2RPcE3QAAKBBIO4ABAUAAmFlaXXlE+8T9RP4E/AB6hMAAO0TcwAAoE0qbwBuAA1hZABpAGwAO4DnAOdAcgBjAAlhcABzAHOgTCptAACgUCpvAHQAC2GAAWRtbgAIFA0UEhRpAGwAO4C4ALhAcCJ0eXYAAKCyKXQAAIGiADtlGBQZFKJAcgBkAG8A9ABiAXIAAOA12CDdgAFjZWkAKBQqFDIUeQBHZGMAawBtoBMn4SFyawCgEyfHY3IAAKPLJUVjZWZtcz8UQRRHFHcUfBSAFACgwykAocYCZWxGFEkUcQAAoFciZQBhAlAUAAAAAGAUciJyb3cAAAFsclYUWhTlIWZ0AKC6IWkiZ2h0AACguyGAAlJTYWNkAGgUaRRrFG8UcxSuYACgyCRzAHQAAKCbIukhcmMAoJoi4SFzaACgnSJuImludAAAoBAqaQBkAACg7yrjIWlyAKDCKfUhYnN1oGMmaQB0AACgYybsApMUmhS2FAAAwxRvAG4AZaA6APGgVCKrAG0CnxQAAAAAoxRhAHSgLABAYAChASJmbKcUqRTuABMNZQAAAW14rhSyFOUhbnQAoAEiZQDzANIB5wG6FAAAwBRkoEUibwB0AACgbSpuAPQAzAGAAWZyeQDIFMsUzhQA4DXYVN1vAOQA1wEAgakAO3MeAdMUcgAAoBchAAFhb9oU3hRyAHIAAKC1IXMAcwAAoBcnAAFjdeYU6hRyAADgNdi43AABYnDuFPIUZaDPKgCg0SploNAqAKDSKuQhb3QAoO8igANkZWxwcnZ3AAYVEBUbFSEVRBVlFYQV4SFycgABbHIMFQ4VAKA4KQCgNSlwAhYVAAAAABkVcgAAoN4iYwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/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/BjAAFleR4cIRzkIWlsN2E6ZHIAAOA12CjdciJlZW4AOGFjAHkARWRjAHkAXGRwAGYAAOA12FzdYwByAADgNdjA3IALQUJFSGFiY2RlZmdoamxtbm9wcnN0dXYAXhxtHHEcdRx5HN8cBx0dHTwd3B3tHfEdAR4EHh0eLB5FHrwewx7hHgkfPR9LH4ABYXJ0AGQcZxxpHHIA8gBvB/IAxQLhIWlsAKAbKeEhcnIAoA4pZ6BmIgCgiyphAHIAAKBiKWMJjRwAAJAcAACVHAAAAAAAAAAAAACZHJwcAACmHKgcrRwAANIc9SF0ZTph7SJwdHl2AKC0KXIAYQDuAFoG4iFkYbtjZwAAoegnZGyhHKMcAKCRKeUAiwYAoIUqdQBvADuAqwCrQHIAgKOQIWJmaGxwc3QAuhy/HMIcxBzHHMoczhxmoOQhcwAAoB8pcwAAoB0p6wCyGnAAAKCrIWwAAKA5KWkAbQAAoHMpbAAAoKIhAKGrKmFl1hzaHGkAbAAAoBkpc6CtKgDgrSoA/oABYWJyAOUc6RztHHIAcgAAoAwpcgBrAACgcicAAWFr8Rz4HGMAAAFla/Yc9xx7YFtgAAFlc/wc/hwAoIspbAAAAWR1Ax0FHQCgjykAoI0pAAJhZXV5Dh0RHRodHB3yIW9uPmEAAWRpFR0YHWkAbAA8YewAowbiAPccO2QAAmNxcnMkHScdLB05HWEAAKA2KXUAbwDyoBwgqhEAAWR1MB00HeghYXIAoGcpcyJoYXIAAKBLKWgAAKCyIQCiZCJmZ3FzRB1FB5Qdnh10AIACYWhscnQATh1WHWUdbB2NHXIicm93AHSgkCFhAOkAzxxhI3Jwb29uAAABZHVeHWId7yF3bgCgvSFwAACgvCHlJGZ0YXJyb3dzAKDHIWkiZ2h0AIABYWhzAHUdex2DHXIicm93APOglCGdBmEAcgBwAG8AbwBuAPMAzgtxAHUAaQBnAGEAcgByAG8A9wBlGugkcmVldGltZXMAoMsi8aFkIk0HAACaHWwAYQBuAPQAXgcAon0qY2Rnc6YdqR2xHbcdYwAAoKgqbwB0AG+gfypyoIEqAKCDKmXg2iIA/nMAAKCTKoACYWRlZ3MAwB3GHcod1h3ZHXAAcAByAG8A+ACmHG8AdAAAoNYicQAAAWdxzx3SHXQA8gBGB2cAdADyAHQcdADyAFMHaQDtAGMHgAFpbHIA4h3mHeod8yFodACgfClvAG8A8gDKBgDgNdgp3UWgdiIAoJEqYQH1Hf4dcgAAAWR1YB35HWygvCEAoGopbABrAACghCVjAHkAWWQAomoiYWNodAweDx4VHhkecgDyAGsdbwByAG4AZQDyAGAW4SFyZACgaylyAGkAAKD6JQABaW8hHiQe5CFvdEBh9SFzdGGgsCPjIWhlAKCwIwACRWFlczMeNR48HkEeAKBoInAAcKCJKvIhb3gAoIkqcaCHKvGghyo0HmkAbQAAoOYiAARhYm5vcHR3elIeXB5fHoUelh6mHqsetB4AAW5yVh5ZHmcAAKDsJ3IAAKD9IXIA6wCwBmcAgAFsbXIAZh52Hnse5SFmdAABYXKIB2weaQBnAGgAdABhAHIAcgBvAPcAkwfhInBzdG8AoPwnaQBnAGgAdABhAHIAcgBvAPcAmgdwI2Fycm93AAABbHKNHpEeZQBmAPQAxhxpImdodAAAoKwhgAFhZmwAnB6fHqIecgAAoIUpAOA12F3ddQBzAACgLSppIm1lcwAAoDQqYQGvHrMecwB0AACgFyLhAIoOZaHKJbkeRhLuIWdlAKDKJWEAcgBsoCgAdAAAoJMpgAJhY2htdADMHs8e1R7bHt0ecgDyAJ0GbwByAG4AZQDyANYWYQByAGSgyyEAoG0pAKAOIHIAaQAAoL8iAANhY2hpcXTrHu8e1QfzHv0eBh/xIXVvAKA5IHIAAOA12MHcbQDloXIi+h4AAPweAKCNKgCgjyoAAWJ19xwBH28AcqAYIACgGiDyIW9rQmEAhDwAO2NkaGlscXJCBhcfxh0gHyQfKB8sHzEfAAFjaRsfHR8AoKYqcgAAoHkqcgBlAOUAkx3tIWVzAKDJIuEhcnIAoHYpdSJlc3QAAKB7KgABUGk1HzkfYQByAACglillocMlAgdfEnIAAAFkdUIfRx9zImhhcgAAoEop6CFhcgCgZikAAWVuTx9WH3IjdG5lcXEAAOBoIgD+xQBUHwAHRGFjZGVmaGlsbm9wc3VuH3Ifoh+rH68ftx+7H74f5h/uH/MfBwj/HwsgxCFvdACgOiIAAmNscHJ5H30fiR+eH3IAO4CvAK9AAAFldIEfgx8AoEImZaAgJ3MAZQAAoCAnc6CmIXQAbwCAoaYhZGx1AJQfmB+cH28AdwDuAHkDZQBmAPQA6gbwAOkO6yFlcgCgriUAAW95ph+qH+0hbWEAoCkqPGThIXNoAKAUIOElc3VyZWRhbmdsZQCgISJyAADgNdgq3W8AAKAnIYABY2RuAMQfyR/bH3IAbwA7gLUAtUBhoiMi0B8AANMf1x9zAPQAKxFpAHIAAKDwKm8AdAA7gLcAt0B1AHMA4qESIh4TAADjH3WgOCIAoCoqYwHqH+0fcAAAoNsq8gB+GnAAbAB1APMACAgAAWRw9x/7H+UhbHMAoKciZgAA4DXYXt0AAWN0AyAHIHIAAOA12MLc8CFvcwCgPiJsobwDECAVIPQiaW1hcACguCJhAPAAEyAADEdMUlZhYmNkZWZnaGlqbG1vcHJzdHV2dzwgRyBmIG0geSCqILgg2iDeIBEhFSEyIUMhTSFQIZwhnyHSIQAiIyKLIrEivyIUIwABZ3RAIEMgAODZIjgD9uBrItIgBwmAAWVsdABNIF8gYiBmAHQAAAFhclMgWCByInJvdwAAoM0h6SRnaHRhcnJvdwCgziEA4NgiOAP24Goi0iBfCekkZ2h0YXJyb3cAoM8hAAFEZHEgdSDhIXNoAKCvIuEhc2gAoK4igAJiY25wdACCIIYgiSCNIKIgbABhAACgByL1IXRlRGFnAADgICLSIACiSSJFaW9wlSCYIJwgniAA4HAqOANkAADgSyI4A3MASWFyAG8A+AAyCnUAcgBhoG4mbADzoG4mmwjzAa8gAACzIHAAO4CgAKBAbQBwAOXgTiI4AyoJgAJhZW91eQDBIMogzSDWINkg8AHGIAAAyCAAoEMqbwBuAEhh5CFpbEZhbgBnAGSgRyJvAHQAAOBtKjgDcAAAoEIqPWThIXNoAKATIACjYCJBYWRxc3jpIO0g+SD+IAIhDCFyAHIAAKDXIXIAAAFocvIg9SBrAACgJClvoJch9wAGD28AdAAA4FAiOAN1AGkA9gC7CAABZWkGIQohYQByAACgKCntAN8I6SFzdPOgBCLlCHIAAOA12CvdAAJFZXN0/wgcISshLiHxoXEiIiEAABMJ8aFxIgAJAAAnIWwAYQBuAPQAEwlpAO0AGQlyoG8iAKBvIoABQWFwADghOyE/IXIA8gBeIHIAcgAAoK4hYQByAACg8ipzogsiSiEAAAAAxwtkoPwiAKD6ImMAeQBaZIADQUVhZGVzdABcIV8hYiFmIWkhkyGWIXIA8gBXIADgZiI4A3IAcgAAoJohcgAAoCUggKFwImZxcwBwIYQhjiF0AAABYXJ1IXohcgByAG8A9wBlIWkAZwBoAHQAYQByAHIAbwD3AD4h8aFwImAhAACKIWwAYQBuAPQAZwlz4H0qOAMAoG4iaQDtAG0JcqBuImkA5aDqIkUJaQDkADoKAAFwdKMhpyFmAADgNdhf3YCBrAA7aW4AriGvIcchrEBuAIChCSJFZHYAtyG6Ib8hAOD5IjgDbwB0AADg9SI4A+EB1gjEIcYhAKD3IgCg9iJpAHagDCLhAagJzyHRIQCg/iIAoP0igAFhb3IA2CHsIfEhcgCAoSYiYXN0AOAh5SHpIWwAbABlAOwAywhsAADg/SrlIADgAiI4A2wiaW50AACgFCrjoYAi9yEAAPohdQDlAJsJY+CvKjgDZaCAIvEAkwkAAkFhaXQHIgoiFyIeInIA8gBsIHIAcgAAoZshY3cRIhQiAOAzKTgDAOCdITgDZyRodGFycm93AACgmyFyAGkA5aDrIr4JgANjaGltcHF1AC8iPCJHIpwhTSJQIloigKGBImNlcgA2Iv0JOSJ1AOUABgoA4DXYw9zvIXJ0bQKdIQAAAABEImEAcgDhAOEhbQBloEEi8aBEIiYKYQDyAMsIcwB1AAABYnBWIlgi5QDUCeUA3wmAAWJjcABgInMieCKAoYQiRWVzAGci7glqIgDgxSo4A2UAdABl4IIi0iBxAPGgiCJoImMAZaCBIvEA/gmAoYUiRWVzAH8iFgqCIgDgxio4A2UAdABl4IMi0iBxAPGgiSKAIgACZ2lscpIilCKaIpwi7AAMCWwAZABlADuA8QDxQOcAWwlpI2FuZ2xlAAABbHKkIqoi5SFmdGWg6iLxAEUJaSJnaHQAZaDrIvEAvgltoL0DAKEjAGVzuCK8InIAbwAAoBYhcAAAoAcggARESGFkZ2lscnMAziLSItYi2iLeIugi7SICIw8j4SFzaACgrSLhIXJyAKAEKXAAAOBNItIg4SFzaACgrCIAAWV04iLlIgDgZSLSIADgPgDSIG4iZmluAACg3imAAUFldADzIvci+iJyAHIAAKACKQDgZCLSIHLgPADSIGkAZQAA4LQi0iAAAUF0BiMKI3IAcgAAoAMp8iFpZQDgtSLSIGkAbQAA4Dwi0iCAAUFhbgAaIx4jKiNyAHIAAKDWIXIAAAFociMjJiNrAACgIylvoJYh9wD/DuUhYXIAoCcpUxJqFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVCMAAF4jaSN/I4IjjSOeI8AUAAAAAKYjwCMAANoj3yMAAO8jHiQvJD8kRCQAAWNzVyNsFHUAdABlADuA8wDzQAABaXlhI2cjcgBjoJoiO4D0APRAPmSAAmFiaW9zAHEjdCN3I3EBeiNzAOgAdhTsIWFjUWF2AACgOCrvIWxkAKC8KewhaWdTYQABY3KFI4kjaQByAACgvykA4DXYLN1vA5QjAAAAAJYjAACcI24A22JhAHYAZQA7gPIA8kAAoMEpAAFibaEjjAphAHIAAKC1KQACYWNpdKwjryO6I70jcgDyAFkUAAFpcrMjtiNyAACgvinvIXNzAKC7KW4A5QDZCgCgwCmAAWFlaQDFI8gjyyNjAHIATWFnAGEAyWOAAWNkbgDRI9Qj1iPyIW9uv2MAoLYpdQDzAHgBcABmAADgNdhg3YABYWVsAOQj5yPrI3IAAKC3KXIAcAAAoLkpdQDzAHwBAKMoImFkaW9zdvkj/CMPJBMkFiQbJHIA8gBeFIChXSplZm0AAyQJJAwkcgBvoDQhZgAAoDQhO4CqAKpAO4C6ALpA5yFvZgCgtiJyAACgVipsIm9wZQAAoFcqAKBbKoABY2xvACMkJSQrJPIACCRhAHMAaAA7gPgA+EBsAACgmCJpAGwBMyQ4JGQAZQA7gPUA9UBlAHMAYaCXInMAAKA2Km0AbAA7gPYA9kDiIWFyAKA9I+EKXiQAAHokAAB8JJQkAACYJKkkAAAAALUkEQsAAPAkAAAAAAQleiUAAIMlcgCAoSUiYXN0AGUkbyQBCwCBtgA7bGokayS2QGwAZQDsABgDaQJ1JAAAAAB4JG0AAKDzKgCg/Sp5AD9kcgCAAmNpbXB0AIUkiCSLJJkSjyRuAHQAJWBvAGQALmBpAGwAAKAwIOUhbmsAoDEgcgAA4DXYLd2AAWltbwCdJKAkpCR2oMYD1WNtAGEA9AD+B24AZQAAoA4m9KHAA64kAAC0JGMjaGZvcmsAAKDUItZjAAFhdbgkxCRuAAABY2u9JMIkawBooA8hAKAOIfYAaRpzAACkKwBhYmNkZW1zdNMkIRPXJNsk4STjJOck6yTjIWlyAKAjKmkAcgAAoCIqAAFvdYsW3yQAoCUqAKByKm4AO4CxALFAaQBtAACgJip3AG8AAKAnKoABaXB1APUk+iT+JO4idGludACgFSpmAADgNdhh3W4AZAA7gKMAo0CApHoiRWFjZWlub3N1ABMlFSUYJRslTCVRJVklSSV1JQCgsypwAACgtyp1AOUAPwtjoK8qgKJ6ImFjZW5zACclLSU0JTYlSSVwAHAAcgBvAPgAFyV1AHIAbAB5AGUA8QA/C/EAOAuAAWFlcwA8JUElRSXwInByb3gAoLkqcQBxAACgtSppAG0AAKDoImkA7QBEC20AZQDzoDIgIguAAUVhcwBDJVclRSXwAEAlgAFkZnAATwtfJXElgAFhbHMAZSVpJW0l7CFhcgCgLiPpIW5lAKASI/UhcmYAoBMjdKAdIu8AWQvyIWVsAKCwIgABY2l9JYElcgAA4DXYxdzIY24iY3NwAACgCCAAA2Zpb3BzdZElKxuVJZolnyWkJXIAAOA12C7dcABmAADgNdhi3XIiaW1lAACgVyBjAHIAAOA12MbcgAFhZW8AqiW6JcAldAAAAWVpryW2JXIAbgBpAG8AbgDzABkFbgB0AACgFipzAHQAZaA/APEACRj0AG0LgApBQkhhYmNkZWZoaWxtbm9wcnN0dXgA4yXyJfYl+iVpJpAmpia9JtUm5ib4JlonaCdxJ3UnnietJ7EnyCfiJ+cngAFhcnQA6SXsJe4lcgDyAJkM8gD6AuEhaWwAoBwpYQByAPIA3BVhAHIAAKBkKYADY2RlbnFydAAGJhAmEyYYJiYmKyZaJgABZXUKJg0mAOA9IjEDdABlAFVhaQDjACAN7SJwdHl2AKCzKWcAgKHpJ2RlbAAgJiImJCYAoJIpAKClKeUA9wt1AG8AO4C7ALtAcgAApZIhYWJjZmhscHN0dz0mQCZFJkcmSiZMJk4mUSZVJlgmcAAAoHUpZqDlIXMAAKAgKQCgMylzAACgHinrALka8ACVHmwAAKBFKWkAbQAAoHQpbAAAoKMhAKCdIQABYWleJmImaQBsAACgGilvAG6gNiJhAGwA8wB2C4ABYWJyAG8mciZ2JnIA8gAvEnIAawAAoHMnAAFha3omgSZjAAABZWt/JoAmfWBdYAABZXOFJocmAKCMKWwAAAFkdYwmjiYAoI4pAKCQKQACYWV1eZcmmiajJqUm8iFvbllhAAFkaZ4moSZpAGwAV2HsAA8M4gCAJkBkAAJjbHFzrSawJrUmuiZhAACgNylkImhhcgAAoGkpdQBvAPKgHSCjAWgAAKCzIYABYWNnAMMm0iaUC2wAgKEcIWlwcwDLJs4migxuAOUAoAxhAHIA9ADaC3QAAKCtJYABaWxyANsm3ybjJvMhaHQAoH0pbwBvAPIANgwA4DXYL90AAWFv6ib1JnIAAAFkde8m8SYAoMEhbKDAIQCgbCl2oMED8WOAAWducwD+Jk4nUCdoAHQAAANhaGxyc3QKJxInISc1Jz0nRydyInJvdwB0oJIhYQDpAFYmYSNycG9vbgAAAWR1GiceJ28AdwDuAPAmcAAAoMAh5SFmdAABYWgnJy0ncgByAG8AdwDzAAkMYQByAHAAbwBvAG4A8wATBGklZ2h0YXJyb3dzAACgySFxAHUAaQBnAGEAcgByAG8A9wBZJugkcmVldGltZXMAoMwiZwDaYmkAbgBnAGQAbwB0AHMAZQDxABwYgAFhaG0AYCdjJ2YncgDyAAkMYQDyABMEAKAPIG8idXN0AGGgsSPjIWhlAKCxI+0haWQAoO4qAAJhYnB0fCeGJ4knmScAAW5ygCeDJ2cAAKDtJ3IAAKD+IXIA6wAcDIABYWZsAI8nkieVJ3IAAKCGKQDgNdhj3XUAcwAAoC4qaSJtZXMAAKA1KgABYXCiJ6gncgBnoCkAdAAAoJQp7yJsaW50AKASKmEAcgDyADwnAAJhY2hxuCe8J6EMwCfxIXVvAKA6IHIAAOA12MfcAAFidYAmxCdvAPKgGSCoAYABaGlyAM4n0ifWJ3IAZQDlAE0n7SFlcwCgyiJpAIChuSVlZmwAXAxjEt4n9CFyaQCgzinsInVoYXIAoGgpAKAeIWENBSgJKA0oSyhVKIYoAACLKLAoAAAAAOMo5ygAABApJCkxKW0pcSmHKaYpAACYKgAAAACxKmMidXRlAFthcQB1AO8ABR+ApHsiRWFjZWlucHN5ABwoHignKCooLygyKEEoRihJKACgtCrwASMoAAAlKACguCpvAG4AYWF1AOUAgw1koLAqaQBsAF9hcgBjAF1hgAFFYXMAOCg6KD0oAKC2KnAAAKC6KmkAbQAAoOki7yJsaW50AKATKmkA7QCIDUFkbwB0AGKixSKRFgAAAABTKACgZiqAA0FhY21zdHgAYChkKG8ocyh1KHkogihyAHIAAKDYIXIAAAFocmkoayjrAJAab6CYIfcAzAd0ADuApwCnQGkAO2D3IWFyAKApKW0AAAFpbn4ozQBuAHUA8wDOAHQAAKA2J3IA7+A12DDdIxkAAmFjb3mRKJUonSisKHIAcAAAoG8mAAFoeZkonChjAHkASWRIZHIAdABtAqUoAAAAAKgoaQDkAFsPYQByAGEA7ABsJDuArQCtQAABZ22zKLsobQBhAAChwwNmdroouijCY4CjPCJkZWdsbnByAMgozCjPKNMo1yjaKN4obwB0AACgairxoEMiCw5FoJ4qAKCgKkWgnSoAoJ8qZQAAoEYi7CF1cwCgJCrhIXJyAKByKWEAcgDyAPwMAAJhZWl07Sj8KAEpCCkAAWxz8Sj4KGwAcwBlAHQAbQDpAH8oaABwAACgMyrwImFyc2wAoOQpAAFkbFoPBSllAACgIyNloKoqc6CsKgDgrCoA/oABZmxwABUpGCkfKfQhY3lMZGKgLwBhoMQpcgAAoD8jZgAA4DXYZN1hAAABZHIoKRcDZQBzAHWgYCZpAHQAAKBgJoABY3N1ADYpRilhKQABYXU6KUApcABzoJMiAOCTIgD+cABzoJQiAOCUIgD+dQAAAWJwSylWKQChjyJlcz4NUCllAHQAZaCPIvEAPw0AoZAiZXNIDVspZQB0AGWgkCLxAEkNAKGhJWFmZilbBHIAZQFrKVwEAKChJWEAcgDyAAMNAAJjZW10dyl7KX8pgilyAADgNdjI3HQAbQDuAM4AaQDsAAYpYQByAOYAVw0AAWFyiimOKXIA5qAGJhESAAFhbpIpoylpImdodAAAAWVwmSmgKXAAcwBpAGwAbwDuANkXaADpAKAkcwCvYIACYmNtbnAArin8KY4NJSooKgCkgiJFZGVtbnByc7wpvinCKcgpzCnUKdgp3CkAoMUqbwB0AACgvSpkoIYibwB0AACgwyr1IWx0AKDBKgABRWXQKdIpAKDLKgCgiiLsIXVzAKC/KuEhcnIAoHkpgAFlaXUA4inxKfQpdAAAoYIiZW7oKewpcQDxoIYivSllAHEA8aCKItEpbQAAoMcqAAFicPgp+ikAoNUqAKDTKmMAgKJ7ImFjZW5zAAcqDSoUKhYqRihwAHAAcgBvAPgAIyh1AHIAbAB5AGUA8QCDDfEAfA2AAWFlcwAcKiIqPShwAHAAcgBvAPgAPChxAPEAOShnAACgaiYApoMiMTIzRWRlaGxtbnBzPCo/KkIqRSpHKlIqWCpjKmcqaypzKncqO4C5ALlAO4CyALJAO4CzALNAAKDGKgABb3NLKk4qdAAAoL4qdQBiAACg2CpkoIcibwB0AACgxCpzAAABb3VdKmAqbAAAoMknYgAAoNcq4SFycgCgeyn1IWx0AKDCKgABRWVvKnEqAKDMKgCgiyLsIXVzAKDAKoABZWl1AH0qjCqPKnQAAKGDImVugyqHKnEA8aCHIkYqZQBxAPGgiyJwKm0AAKDIKgABYnCTKpUqAKDUKgCg1iqAAUFhbgCdKqEqrCpyAHIAAKDZIXIAAAFocqYqqCrrAJUab6CZIfcAxQf3IWFyAKAqKWwAaQBnADuA3wDfQOELzyrZKtwq6SrsKvEqAAD1KjQrAAAAAAAAAAAAAEwrbCsAAHErvSsAAAAAAADRK3IC1CoAAAAA2CrnIWV0AKAWI8RjcgDrAOUKgAFhZXkA4SrkKucq8iFvbmVh5CFpbGNhQmRvAPQAIg5sInJlYwAAoBUjcgAA4DXYMd0AAmVpa2/7KhIrKCsuK/IBACsAAAkrZQAAATRm6g0EK28AcgDlAOsNYQBzorgDECsAAAAAEit5AG0A0WMAAWNuFislK2sAAAFhcxsrIStwAHAAcgBvAPgAFw5pAG0AAKA8InMA8AD9DQABYXMsKyEr8AAXDnIAbgA7gP4A/kDsATgrOyswG2QA5QBnAmUAcwCAgdcAO2JkAEMrRCtJK9dAYaCgInIAAKAxKgCgMCqAAWVwcwBRK1MraSvhAAkh4qKkIlsrXysAAAAAYytvAHQAAKA2I2kAcgAAoPEqb+A12GXdcgBrAACg2irhAHgociJpbWUAAKA0IIABYWlwAHYreSu3K2QA5QC+DYADYWRlbXBzdACFK6MrmiunK6wrsCuzK24iZ2xlAACitSVkbHFykCuUK5ornCvvIXduAKC/JeUhZnRloMMl8QACBwCgXCJpImdodABloLkl8QBdDG8AdAAAoOwlaSJudXMAAKA6KuwhdXMAoDkqYgAAoM0p6SFtZQCgOyrlInppdW0AoOIjgAFjaHQAwivKK80rAAFyecYrySsA4DXYydxGZGMAeQBbZPIhb2tnYQABaW/UK9creAD0ANERaCJlYWQAAAFsct4r5ytlAGYAdABhAHIAcgBvAPcAXQbpJGdodGFycm93AKCgIQAJQUhhYmNkZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg");var Q0;(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"})(Q0||(Q0={}));var s;(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"})(s||(s={}));var h6=32;function xX(X){return X>=s.ZERO&&X<=s.NINE}function MZ(X){return X>=s.UPPER_A&&X<=s.UPPER_F||X>=s.LOWER_A&&X<=s.LOWER_F}function NZ(X){return X>=s.UPPER_A&&X<=s.UPPER_Z||X>=s.LOWER_A&&X<=s.LOWER_Z||xX(X)}function DZ(X){return X===s.EQUALS||NZ(X)}var Z0;(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"})(Z0||(Z0={}));var R0;(function(X){X[X.Legacy=0]="Legacy",X[X.Strict=1]="Strict",X[X.Attribute=2]="Attribute"})(R0||(R0={}));class OX{decodeTree;emitCodePoint;errors;constructor(X,Z,W){this.decodeTree=X,this.emitCodePoint=Z,this.errors=W}state=Z0.EntityStart;consumed=1;result=0;treeIndex=0;excess=1;decodeMode=R0.Strict;runConsumed=0;startEntity(X){this.decodeMode=X,this.state=Z0.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(X,Z){switch(this.state){case Z0.EntityStart:{if(X.charCodeAt(Z)===s.NUM)return this.state=Z0.NumericStart,this.consumed+=1,this.stateNumericStart(X,Z+1);return this.state=Z0.NamedEntity,this.stateNamedEntity(X,Z)}case Z0.NumericStart:return this.stateNumericStart(X,Z);case Z0.NumericDecimal:return this.stateNumericDecimal(X,Z);case Z0.NumericHex:return this.stateNumericHex(X,Z);case Z0.NamedEntity:return this.stateNamedEntity(X,Z)}}stateNumericStart(X,Z){if(Z>=X.length)return-1;if((X.charCodeAt(Z)|h6)===s.LOWER_X)return this.state=Z0.NumericHex,this.consumed+=1,this.stateNumericHex(X,Z+1);return this.state=Z0.NumericDecimal,this.stateNumericDecimal(X,Z)}stateNumericHex(X,Z){while(Z<X.length){let W=X.charCodeAt(Z);if(xX(W)||MZ(W)){let Q=W<=s.NINE?W-s.ZERO:(W|h6)-s.LOWER_A+10;this.result=this.result*16+Q,this.consumed++,Z++}else return this.emitNumericEntity(W,3)}return-1}stateNumericDecimal(X,Z){while(Z<X.length){let W=X.charCodeAt(Z);if(xX(W))this.result=this.result*10+(W-s.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===s.SEMI)this.consumed+=1;else if(this.decodeMode===R0.Strict)return 0;if(this.emitCodePoint(f6(this.result),this.consumed),this.errors){if(X!==s.SEMI)this.errors.missingSemicolonAfterCharacterReference();this.errors.validateNumericCharacterReference(this.result)}return this.consumed}stateNamedEntity(X,Z){let{decodeTree:W}=this,Q=W[this.treeIndex],Y=(Q&Q0.VALUE_LENGTH)>>14;while(Z<X.length){if(Y===0&&(Q&Q0.FLAG13)!==0){let j=(Q&Q0.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let F=Q&Q0.JUMP_TABLE;if(X.charCodeAt(Z)!==F)return this.result===0?0:this.emitNotTerminatedNamedEntity();Z++,this.excess++,this.runConsumed++}while(this.runConsumed<j){if(Z>=X.length)return-1;let F=this.runConsumed-1,L=W[this.treeIndex+1+(F>>1)],U=F%2===0?L&255:L>>8&255;if(X.charCodeAt(Z)!==U)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();Z++,this.excess++,this.runConsumed++}this.runConsumed=0,this.treeIndex+=1+(j>>1),Q=W[this.treeIndex],Y=(Q&Q0.VALUE_LENGTH)>>14}if(Z>=X.length)break;let z=X.charCodeAt(Z);if(z===s.SEMI&&Y!==0&&(Q&Q0.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,Y,this.consumed+this.excess);if(this.treeIndex=$Z(W,Q,this.treeIndex+Math.max(1,Y),z),this.treeIndex<0)return this.result===0||this.decodeMode===R0.Attribute&&(Y===0||DZ(z))?0:this.emitNotTerminatedNamedEntity();if(Q=W[this.treeIndex],Y=(Q&Q0.VALUE_LENGTH)>>14,Y!==0){if(z===s.SEMI)return this.emitNamedEntityData(this.treeIndex,Y,this.consumed+this.excess);if(this.decodeMode!==R0.Strict&&(Q&Q0.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]&Q0.VALUE_LENGTH)>>14;return this.emitNamedEntityData(X,W,this.consumed),this.errors?.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(X,Z,W){let{decodeTree:Q}=this;if(this.emitCodePoint(Z===1?Q[X]&~(Q0.VALUE_LENGTH|Q0.FLAG13):Q[X+1],W),Z===3)this.emitCodePoint(Q[X+2],W);return W}end(){switch(this.state){case Z0.NamedEntity:return this.result!==0&&(this.decodeMode!==R0.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case Z0.NumericDecimal:return this.emitNumericEntity(0,2);case Z0.NumericHex:return this.emitNumericEntity(0,3);case Z0.NumericStart:return this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case Z0.EntityStart:return 0}}}function $Z(X,Z,W,Q){let Y=(Z&Q0.BRANCH_LENGTH)>>7,z=Z&Q0.JUMP_TABLE;if(Y===0)return z!==0&&Q===z?W:-1;if(z){let U=Q-z;return U<0||U>=Y?-1:X[W+U]-1}let j=Y+1>>1,F=0,L=Y-1;while(F<=L){let U=F+L>>>1,w=U>>1,C=X[W+w]>>(U&1)*8&255;if(C<Q)F=U+1;else if(C>Q)L=U-1;else return X[W+j+U]}return-1}var R;(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/"})(R||(R={}));var M0;(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"})(M0||(M0={}));var j0;(function(X){X.NO_QUIRKS="no-quirks",X.QUIRKS="quirks",X.LIMITED_QUIRKS="limited-quirks"})(j0||(j0={}));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 J;(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"})(J||(J={}));var GZ=new Map([[B.A,J.A],[B.ADDRESS,J.ADDRESS],[B.ANNOTATION_XML,J.ANNOTATION_XML],[B.APPLET,J.APPLET],[B.AREA,J.AREA],[B.ARTICLE,J.ARTICLE],[B.ASIDE,J.ASIDE],[B.B,J.B],[B.BASE,J.BASE],[B.BASEFONT,J.BASEFONT],[B.BGSOUND,J.BGSOUND],[B.BIG,J.BIG],[B.BLOCKQUOTE,J.BLOCKQUOTE],[B.BODY,J.BODY],[B.BR,J.BR],[B.BUTTON,J.BUTTON],[B.CAPTION,J.CAPTION],[B.CENTER,J.CENTER],[B.CODE,J.CODE],[B.COL,J.COL],[B.COLGROUP,J.COLGROUP],[B.DD,J.DD],[B.DESC,J.DESC],[B.DETAILS,J.DETAILS],[B.DIALOG,J.DIALOG],[B.DIR,J.DIR],[B.DIV,J.DIV],[B.DL,J.DL],[B.DT,J.DT],[B.EM,J.EM],[B.EMBED,J.EMBED],[B.FIELDSET,J.FIELDSET],[B.FIGCAPTION,J.FIGCAPTION],[B.FIGURE,J.FIGURE],[B.FONT,J.FONT],[B.FOOTER,J.FOOTER],[B.FOREIGN_OBJECT,J.FOREIGN_OBJECT],[B.FORM,J.FORM],[B.FRAME,J.FRAME],[B.FRAMESET,J.FRAMESET],[B.H1,J.H1],[B.H2,J.H2],[B.H3,J.H3],[B.H4,J.H4],[B.H5,J.H5],[B.H6,J.H6],[B.HEAD,J.HEAD],[B.HEADER,J.HEADER],[B.HGROUP,J.HGROUP],[B.HR,J.HR],[B.HTML,J.HTML],[B.I,J.I],[B.IMG,J.IMG],[B.IMAGE,J.IMAGE],[B.INPUT,J.INPUT],[B.IFRAME,J.IFRAME],[B.KEYGEN,J.KEYGEN],[B.LABEL,J.LABEL],[B.LI,J.LI],[B.LINK,J.LINK],[B.LISTING,J.LISTING],[B.MAIN,J.MAIN],[B.MALIGNMARK,J.MALIGNMARK],[B.MARQUEE,J.MARQUEE],[B.MATH,J.MATH],[B.MENU,J.MENU],[B.META,J.META],[B.MGLYPH,J.MGLYPH],[B.MI,J.MI],[B.MO,J.MO],[B.MN,J.MN],[B.MS,J.MS],[B.MTEXT,J.MTEXT],[B.NAV,J.NAV],[B.NOBR,J.NOBR],[B.NOFRAMES,J.NOFRAMES],[B.NOEMBED,J.NOEMBED],[B.NOSCRIPT,J.NOSCRIPT],[B.OBJECT,J.OBJECT],[B.OL,J.OL],[B.OPTGROUP,J.OPTGROUP],[B.OPTION,J.OPTION],[B.P,J.P],[B.PARAM,J.PARAM],[B.PLAINTEXT,J.PLAINTEXT],[B.PRE,J.PRE],[B.RB,J.RB],[B.RP,J.RP],[B.RT,J.RT],[B.RTC,J.RTC],[B.RUBY,J.RUBY],[B.S,J.S],[B.SCRIPT,J.SCRIPT],[B.SEARCH,J.SEARCH],[B.SECTION,J.SECTION],[B.SELECT,J.SELECT],[B.SOURCE,J.SOURCE],[B.SMALL,J.SMALL],[B.SPAN,J.SPAN],[B.STRIKE,J.STRIKE],[B.STRONG,J.STRONG],[B.STYLE,J.STYLE],[B.SUB,J.SUB],[B.SUMMARY,J.SUMMARY],[B.SUP,J.SUP],[B.TABLE,J.TABLE],[B.TBODY,J.TBODY],[B.TEMPLATE,J.TEMPLATE],[B.TEXTAREA,J.TEXTAREA],[B.TFOOT,J.TFOOT],[B.TD,J.TD],[B.TH,J.TH],[B.THEAD,J.THEAD],[B.TITLE,J.TITLE],[B.TR,J.TR],[B.TRACK,J.TRACK],[B.TT,J.TT],[B.U,J.U],[B.UL,J.UL],[B.SVG,J.SVG],[B.VAR,J.VAR],[B.WBR,J.WBR],[B.XMP,J.XMP]]);function c0(X){var Z;return(Z=GZ.get(X))!==null&&Z!==void 0?Z:J.UNKNOWN}var f=J,M6={[R.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]),[R.MATHML]:new Set([f.MI,f.MO,f.MN,f.MS,f.MTEXT,f.ANNOTATION_XML]),[R.SVG]:new Set([f.TITLE,f.FOREIGN_OBJECT,f.DESC]),[R.XLINK]:new Set,[R.XML]:new Set,[R.XMLNS]:new Set},C1=new Set([f.H1,f.H2,f.H3,f.H4,f.H5,f.H6]),EZ=new Set([B.STYLE,B.SCRIPT,B.XMP,B.IFRAME,B.NOEMBED,B.NOFRAMES,B.PLAINTEXT]);function N6(X,Z){return EZ.has(X)||Z&&X===B.NOSCRIPT}var H;(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"})(H||(H={}));var J0={DATA:H.DATA,RCDATA:H.RCDATA,RAWTEXT:H.RAWTEXT,SCRIPT_DATA:H.SCRIPT_DATA,PLAINTEXT:H.PLAINTEXT,CDATA_SECTION:H.CDATA_SECTION};function mZ(X){return X>=V.DIGIT_0&&X<=V.DIGIT_9}function f1(X){return X>=V.LATIN_CAPITAL_A&&X<=V.LATIN_CAPITAL_Z}function _Z(X){return X>=V.LATIN_SMALL_A&&X<=V.LATIN_SMALL_Z}function G0(X){return _Z(X)||f1(X)}function D6(X){return G0(X)||mZ(X)}function L2(X){return X+32}function G6(X){return X===V.SPACE||X===V.LINE_FEED||X===V.TABULATION||X===V.FORM_FEED}function $6(X){return G6(X)||X===V.SOLIDUS||X===V.GREATER_THAN_SIGN}function kZ(X){if(X===V.NULL)return q.nullCharacterReference;else if(X>1114111)return q.characterReferenceOutsideUnicodeRange;else if(H2(X))return q.surrogateCharacterReference;else if(U2(X))return q.noncharacterCharacterReference;else if(K2(X)||X===V.CARRIAGE_RETURN)return q.controlCharacterReference;return null}class B2{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=H.DATA,this.returnState=H.DATA,this.entityStartPos=0,this.consumedAfterSnapshot=-1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr={name:"",value:""},this.preprocessor=new PX(Z),this.currentLocation=this.getCurrentLocation(-1),this.entityDecoder=new OX(bX,(W,Q)=>{this.preprocessor.pos=this.entityStartPos+Q-1,this._flushCodePointConsumedAsCharacterReference(W)},Z.onParseError?{missingSemicolonAfterCharacterReference:()=>{this._err(q.missingSemicolonAfterCharacterReference,1)},absenceOfDigitsInNumericCharacterReference:(W)=>{this._err(q.absenceOfDigitsInNumericCharacterReference,this.entityStartPos-this.preprocessor.pos+W)},validateNumericCharacterReference:(W)=>{let Q=kZ(W);if(Q)this._err(Q,1)}}:void 0)}_err(X,Z=0){var W,Q;(Q=(W=this.handler).onParseError)===null||Q===void 0||Q.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:c.START_TAG,tagName:"",tagID:J.UNKNOWN,selfClosing:!1,ackSelfClosing:!1,attrs:[],location:this.getCurrentLocation(1)}}_createEndTagToken(){this.currentToken={type:c.END_TAG,tagName:"",tagID:J.UNKNOWN,selfClosing:!1,ackSelfClosing:!1,attrs:[],location:this.getCurrentLocation(2)}}_createCommentToken(X){this.currentToken={type:c.COMMENT,data:"",location:this.getCurrentLocation(X)}}_createDoctypeToken(X){this.currentToken={type:c.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(F2(W,this.currentAttr.name)===null){if(W.attrs.push(this.currentAttr),W.location&&this.currentLocation){let Q=(X=(Z=W.location).attrs)!==null&&X!==void 0?X:Z.attrs=Object.create(null);Q[this.currentAttr.name]=this.currentLocation,this._leaveAttrValue()}}else this._err(q.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=c0(X.tagName),X.type===c.START_TAG)this.lastStartTagName=X.tagName,this.handler.onStartTag(X);else{if(X.attrs.length>0)this._err(q.endTagWithAttributes);if(X.selfClosing)this._err(q.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 c.CHARACTER:{this.handler.onCharacter(this.currentCharacterToken);break}case c.NULL_CHARACTER:{this.handler.onNullCharacter(this.currentCharacterToken);break}case c.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:c.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=G6(X)?c.WHITESPACE_CHARACTER:X===V.NULL?c.NULL_CHARACTER:c.CHARACTER;this._appendCharToCurrentCharacterToken(Z,X<65536?String.fromCharCode(X):String.fromCodePoint(X))}_emitChars(X){this._appendCharToCurrentCharacterToken(c.CHARACTER,X)}_startCharacterReference(){this.returnState=this.state,this.state=H.CHARACTER_REFERENCE,this.entityStartPos=this.preprocessor.pos,this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute()?R0.Attribute:R0.Legacy)}_isCharacterReferenceInAttribute(){return this.returnState===H.ATTRIBUTE_VALUE_DOUBLE_QUOTED||this.returnState===H.ATTRIBUTE_VALUE_SINGLE_QUOTED||this.returnState===H.ATTRIBUTE_VALUE_UNQUOTED}_flushCodePointConsumedAsCharacterReference(X){if(this._isCharacterReferenceInAttribute())this.currentAttr.value+=String.fromCodePoint(X);else this._emitCodePoint(X)}_callState(X){switch(this.state){case H.DATA:{this._stateData(X);break}case H.RCDATA:{this._stateRcdata(X);break}case H.RAWTEXT:{this._stateRawtext(X);break}case H.SCRIPT_DATA:{this._stateScriptData(X);break}case H.PLAINTEXT:{this._statePlaintext(X);break}case H.TAG_OPEN:{this._stateTagOpen(X);break}case H.END_TAG_OPEN:{this._stateEndTagOpen(X);break}case H.TAG_NAME:{this._stateTagName(X);break}case H.RCDATA_LESS_THAN_SIGN:{this._stateRcdataLessThanSign(X);break}case H.RCDATA_END_TAG_OPEN:{this._stateRcdataEndTagOpen(X);break}case H.RCDATA_END_TAG_NAME:{this._stateRcdataEndTagName(X);break}case H.RAWTEXT_LESS_THAN_SIGN:{this._stateRawtextLessThanSign(X);break}case H.RAWTEXT_END_TAG_OPEN:{this._stateRawtextEndTagOpen(X);break}case H.RAWTEXT_END_TAG_NAME:{this._stateRawtextEndTagName(X);break}case H.SCRIPT_DATA_LESS_THAN_SIGN:{this._stateScriptDataLessThanSign(X);break}case H.SCRIPT_DATA_END_TAG_OPEN:{this._stateScriptDataEndTagOpen(X);break}case H.SCRIPT_DATA_END_TAG_NAME:{this._stateScriptDataEndTagName(X);break}case H.SCRIPT_DATA_ESCAPE_START:{this._stateScriptDataEscapeStart(X);break}case H.SCRIPT_DATA_ESCAPE_START_DASH:{this._stateScriptDataEscapeStartDash(X);break}case H.SCRIPT_DATA_ESCAPED:{this._stateScriptDataEscaped(X);break}case H.SCRIPT_DATA_ESCAPED_DASH:{this._stateScriptDataEscapedDash(X);break}case H.SCRIPT_DATA_ESCAPED_DASH_DASH:{this._stateScriptDataEscapedDashDash(X);break}case H.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataEscapedLessThanSign(X);break}case H.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:{this._stateScriptDataEscapedEndTagOpen(X);break}case H.SCRIPT_DATA_ESCAPED_END_TAG_NAME:{this._stateScriptDataEscapedEndTagName(X);break}case H.SCRIPT_DATA_DOUBLE_ESCAPE_START:{this._stateScriptDataDoubleEscapeStart(X);break}case H.SCRIPT_DATA_DOUBLE_ESCAPED:{this._stateScriptDataDoubleEscaped(X);break}case H.SCRIPT_DATA_DOUBLE_ESCAPED_DASH:{this._stateScriptDataDoubleEscapedDash(X);break}case H.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH:{this._stateScriptDataDoubleEscapedDashDash(X);break}case H.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataDoubleEscapedLessThanSign(X);break}case H.SCRIPT_DATA_DOUBLE_ESCAPE_END:{this._stateScriptDataDoubleEscapeEnd(X);break}case H.BEFORE_ATTRIBUTE_NAME:{this._stateBeforeAttributeName(X);break}case H.ATTRIBUTE_NAME:{this._stateAttributeName(X);break}case H.AFTER_ATTRIBUTE_NAME:{this._stateAfterAttributeName(X);break}case H.BEFORE_ATTRIBUTE_VALUE:{this._stateBeforeAttributeValue(X);break}case H.ATTRIBUTE_VALUE_DOUBLE_QUOTED:{this._stateAttributeValueDoubleQuoted(X);break}case H.ATTRIBUTE_VALUE_SINGLE_QUOTED:{this._stateAttributeValueSingleQuoted(X);break}case H.ATTRIBUTE_VALUE_UNQUOTED:{this._stateAttributeValueUnquoted(X);break}case H.AFTER_ATTRIBUTE_VALUE_QUOTED:{this._stateAfterAttributeValueQuoted(X);break}case H.SELF_CLOSING_START_TAG:{this._stateSelfClosingStartTag(X);break}case H.BOGUS_COMMENT:{this._stateBogusComment(X);break}case H.MARKUP_DECLARATION_OPEN:{this._stateMarkupDeclarationOpen(X);break}case H.COMMENT_START:{this._stateCommentStart(X);break}case H.COMMENT_START_DASH:{this._stateCommentStartDash(X);break}case H.COMMENT:{this._stateComment(X);break}case H.COMMENT_LESS_THAN_SIGN:{this._stateCommentLessThanSign(X);break}case H.COMMENT_LESS_THAN_SIGN_BANG:{this._stateCommentLessThanSignBang(X);break}case H.COMMENT_LESS_THAN_SIGN_BANG_DASH:{this._stateCommentLessThanSignBangDash(X);break}case H.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH:{this._stateCommentLessThanSignBangDashDash(X);break}case H.COMMENT_END_DASH:{this._stateCommentEndDash(X);break}case H.COMMENT_END:{this._stateCommentEnd(X);break}case H.COMMENT_END_BANG:{this._stateCommentEndBang(X);break}case H.DOCTYPE:{this._stateDoctype(X);break}case H.BEFORE_DOCTYPE_NAME:{this._stateBeforeDoctypeName(X);break}case H.DOCTYPE_NAME:{this._stateDoctypeName(X);break}case H.AFTER_DOCTYPE_NAME:{this._stateAfterDoctypeName(X);break}case H.AFTER_DOCTYPE_PUBLIC_KEYWORD:{this._stateAfterDoctypePublicKeyword(X);break}case H.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateBeforeDoctypePublicIdentifier(X);break}case H.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypePublicIdentifierDoubleQuoted(X);break}case H.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypePublicIdentifierSingleQuoted(X);break}case H.AFTER_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateAfterDoctypePublicIdentifier(X);break}case H.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS:{this._stateBetweenDoctypePublicAndSystemIdentifiers(X);break}case H.AFTER_DOCTYPE_SYSTEM_KEYWORD:{this._stateAfterDoctypeSystemKeyword(X);break}case H.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateBeforeDoctypeSystemIdentifier(X);break}case H.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypeSystemIdentifierDoubleQuoted(X);break}case H.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypeSystemIdentifierSingleQuoted(X);break}case H.AFTER_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateAfterDoctypeSystemIdentifier(X);break}case H.BOGUS_DOCTYPE:{this._stateBogusDoctype(X);break}case H.CDATA_SECTION:{this._stateCdataSection(X);break}case H.CDATA_SECTION_BRACKET:{this._stateCdataSectionBracket(X);break}case H.CDATA_SECTION_END:{this._stateCdataSectionEnd(X);break}case H.CHARACTER_REFERENCE:{this._stateCharacterReference();break}case H.AMBIGUOUS_AMPERSAND:{this._stateAmbiguousAmpersand(X);break}default:throw Error("Unknown state")}}_stateData(X){switch(X){case V.LESS_THAN_SIGN:{this.state=H.TAG_OPEN;break}case V.AMPERSAND:{this._startCharacterReference();break}case V.NULL:{this._err(q.unexpectedNullCharacter),this._emitCodePoint(X);break}case V.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateRcdata(X){switch(X){case V.AMPERSAND:{this._startCharacterReference();break}case V.LESS_THAN_SIGN:{this.state=H.RCDATA_LESS_THAN_SIGN;break}case V.NULL:{this._err(q.unexpectedNullCharacter),this._emitChars(p);break}case V.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateRawtext(X){switch(X){case V.LESS_THAN_SIGN:{this.state=H.RAWTEXT_LESS_THAN_SIGN;break}case V.NULL:{this._err(q.unexpectedNullCharacter),this._emitChars(p);break}case V.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateScriptData(X){switch(X){case V.LESS_THAN_SIGN:{this.state=H.SCRIPT_DATA_LESS_THAN_SIGN;break}case V.NULL:{this._err(q.unexpectedNullCharacter),this._emitChars(p);break}case V.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_statePlaintext(X){switch(X){case V.NULL:{this._err(q.unexpectedNullCharacter),this._emitChars(p);break}case V.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateTagOpen(X){if(G0(X))this._createStartTagToken(),this.state=H.TAG_NAME,this._stateTagName(X);else switch(X){case V.EXCLAMATION_MARK:{this.state=H.MARKUP_DECLARATION_OPEN;break}case V.SOLIDUS:{this.state=H.END_TAG_OPEN;break}case V.QUESTION_MARK:{this._err(q.unexpectedQuestionMarkInsteadOfTagName),this._createCommentToken(1),this.state=H.BOGUS_COMMENT,this._stateBogusComment(X);break}case V.EOF:{this._err(q.eofBeforeTagName),this._emitChars("<"),this._emitEOFToken();break}default:this._err(q.invalidFirstCharacterOfTagName),this._emitChars("<"),this.state=H.DATA,this._stateData(X)}}_stateEndTagOpen(X){if(G0(X))this._createEndTagToken(),this.state=H.TAG_NAME,this._stateTagName(X);else switch(X){case V.GREATER_THAN_SIGN:{this._err(q.missingEndTagName),this.state=H.DATA;break}case V.EOF:{this._err(q.eofBeforeTagName),this._emitChars("</"),this._emitEOFToken();break}default:this._err(q.invalidFirstCharacterOfTagName),this._createCommentToken(2),this.state=H.BOGUS_COMMENT,this._stateBogusComment(X)}}_stateTagName(X){let Z=this.currentToken;switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:{this.state=H.BEFORE_ATTRIBUTE_NAME;break}case V.SOLIDUS:{this.state=H.SELF_CLOSING_START_TAG;break}case V.GREATER_THAN_SIGN:{this.state=H.DATA,this.emitCurrentTagToken();break}case V.NULL:{this._err(q.unexpectedNullCharacter),Z.tagName+=p;break}case V.EOF:{this._err(q.eofInTag),this._emitEOFToken();break}default:Z.tagName+=String.fromCodePoint(f1(X)?L2(X):X)}}_stateRcdataLessThanSign(X){if(X===V.SOLIDUS)this.state=H.RCDATA_END_TAG_OPEN;else this._emitChars("<"),this.state=H.RCDATA,this._stateRcdata(X)}_stateRcdataEndTagOpen(X){if(G0(X))this.state=H.RCDATA_END_TAG_NAME,this._stateRcdataEndTagName(X);else this._emitChars("</"),this.state=H.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 V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:return this._advanceBy(this.lastStartTagName.length),this.state=H.BEFORE_ATTRIBUTE_NAME,!1;case V.SOLIDUS:return this._advanceBy(this.lastStartTagName.length),this.state=H.SELF_CLOSING_START_TAG,!1;case V.GREATER_THAN_SIGN:return this._advanceBy(this.lastStartTagName.length),this.emitCurrentTagToken(),this.state=H.DATA,!1;default:return!this._ensureHibernation()}}_stateRcdataEndTagName(X){if(this.handleSpecialEndTag(X))this._emitChars("</"),this.state=H.RCDATA,this._stateRcdata(X)}_stateRawtextLessThanSign(X){if(X===V.SOLIDUS)this.state=H.RAWTEXT_END_TAG_OPEN;else this._emitChars("<"),this.state=H.RAWTEXT,this._stateRawtext(X)}_stateRawtextEndTagOpen(X){if(G0(X))this.state=H.RAWTEXT_END_TAG_NAME,this._stateRawtextEndTagName(X);else this._emitChars("</"),this.state=H.RAWTEXT,this._stateRawtext(X)}_stateRawtextEndTagName(X){if(this.handleSpecialEndTag(X))this._emitChars("</"),this.state=H.RAWTEXT,this._stateRawtext(X)}_stateScriptDataLessThanSign(X){switch(X){case V.SOLIDUS:{this.state=H.SCRIPT_DATA_END_TAG_OPEN;break}case V.EXCLAMATION_MARK:{this.state=H.SCRIPT_DATA_ESCAPE_START,this._emitChars("<!");break}default:this._emitChars("<"),this.state=H.SCRIPT_DATA,this._stateScriptData(X)}}_stateScriptDataEndTagOpen(X){if(G0(X))this.state=H.SCRIPT_DATA_END_TAG_NAME,this._stateScriptDataEndTagName(X);else this._emitChars("</"),this.state=H.SCRIPT_DATA,this._stateScriptData(X)}_stateScriptDataEndTagName(X){if(this.handleSpecialEndTag(X))this._emitChars("</"),this.state=H.SCRIPT_DATA,this._stateScriptData(X)}_stateScriptDataEscapeStart(X){if(X===V.HYPHEN_MINUS)this.state=H.SCRIPT_DATA_ESCAPE_START_DASH,this._emitChars("-");else this.state=H.SCRIPT_DATA,this._stateScriptData(X)}_stateScriptDataEscapeStartDash(X){if(X===V.HYPHEN_MINUS)this.state=H.SCRIPT_DATA_ESCAPED_DASH_DASH,this._emitChars("-");else this.state=H.SCRIPT_DATA,this._stateScriptData(X)}_stateScriptDataEscaped(X){switch(X){case V.HYPHEN_MINUS:{this.state=H.SCRIPT_DATA_ESCAPED_DASH,this._emitChars("-");break}case V.LESS_THAN_SIGN:{this.state=H.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case V.NULL:{this._err(q.unexpectedNullCharacter),this._emitChars(p);break}case V.EOF:{this._err(q.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateScriptDataEscapedDash(X){switch(X){case V.HYPHEN_MINUS:{this.state=H.SCRIPT_DATA_ESCAPED_DASH_DASH,this._emitChars("-");break}case V.LESS_THAN_SIGN:{this.state=H.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case V.NULL:{this._err(q.unexpectedNullCharacter),this.state=H.SCRIPT_DATA_ESCAPED,this._emitChars(p);break}case V.EOF:{this._err(q.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=H.SCRIPT_DATA_ESCAPED,this._emitCodePoint(X)}}_stateScriptDataEscapedDashDash(X){switch(X){case V.HYPHEN_MINUS:{this._emitChars("-");break}case V.LESS_THAN_SIGN:{this.state=H.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case V.GREATER_THAN_SIGN:{this.state=H.SCRIPT_DATA,this._emitChars(">");break}case V.NULL:{this._err(q.unexpectedNullCharacter),this.state=H.SCRIPT_DATA_ESCAPED,this._emitChars(p);break}case V.EOF:{this._err(q.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=H.SCRIPT_DATA_ESCAPED,this._emitCodePoint(X)}}_stateScriptDataEscapedLessThanSign(X){if(X===V.SOLIDUS)this.state=H.SCRIPT_DATA_ESCAPED_END_TAG_OPEN;else if(G0(X))this._emitChars("<"),this.state=H.SCRIPT_DATA_DOUBLE_ESCAPE_START,this._stateScriptDataDoubleEscapeStart(X);else this._emitChars("<"),this.state=H.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(X)}_stateScriptDataEscapedEndTagOpen(X){if(G0(X))this.state=H.SCRIPT_DATA_ESCAPED_END_TAG_NAME,this._stateScriptDataEscapedEndTagName(X);else this._emitChars("</"),this.state=H.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(X)}_stateScriptDataEscapedEndTagName(X){if(this.handleSpecialEndTag(X))this._emitChars("</"),this.state=H.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(X)}_stateScriptDataDoubleEscapeStart(X){if(this.preprocessor.startsWith(V0.SCRIPT,!1)&&$6(this.preprocessor.peek(V0.SCRIPT.length))){this._emitCodePoint(X);for(let Z=0;Z<V0.SCRIPT.length;Z++)this._emitCodePoint(this._consume());this.state=H.SCRIPT_DATA_DOUBLE_ESCAPED}else if(!this._ensureHibernation())this.state=H.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(X)}_stateScriptDataDoubleEscaped(X){switch(X){case V.HYPHEN_MINUS:{this.state=H.SCRIPT_DATA_DOUBLE_ESCAPED_DASH,this._emitChars("-");break}case V.LESS_THAN_SIGN:{this.state=H.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case V.NULL:{this._err(q.unexpectedNullCharacter),this._emitChars(p);break}case V.EOF:{this._err(q.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateScriptDataDoubleEscapedDash(X){switch(X){case V.HYPHEN_MINUS:{this.state=H.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH,this._emitChars("-");break}case V.LESS_THAN_SIGN:{this.state=H.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case V.NULL:{this._err(q.unexpectedNullCharacter),this.state=H.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(p);break}case V.EOF:{this._err(q.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=H.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(X)}}_stateScriptDataDoubleEscapedDashDash(X){switch(X){case V.HYPHEN_MINUS:{this._emitChars("-");break}case V.LESS_THAN_SIGN:{this.state=H.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case V.GREATER_THAN_SIGN:{this.state=H.SCRIPT_DATA,this._emitChars(">");break}case V.NULL:{this._err(q.unexpectedNullCharacter),this.state=H.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(p);break}case V.EOF:{this._err(q.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=H.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(X)}}_stateScriptDataDoubleEscapedLessThanSign(X){if(X===V.SOLIDUS)this.state=H.SCRIPT_DATA_DOUBLE_ESCAPE_END,this._emitChars("/");else this.state=H.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(X)}_stateScriptDataDoubleEscapeEnd(X){if(this.preprocessor.startsWith(V0.SCRIPT,!1)&&$6(this.preprocessor.peek(V0.SCRIPT.length))){this._emitCodePoint(X);for(let Z=0;Z<V0.SCRIPT.length;Z++)this._emitCodePoint(this._consume());this.state=H.SCRIPT_DATA_ESCAPED}else if(!this._ensureHibernation())this.state=H.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(X)}_stateBeforeAttributeName(X){switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:break;case V.SOLIDUS:case V.GREATER_THAN_SIGN:case V.EOF:{this.state=H.AFTER_ATTRIBUTE_NAME,this._stateAfterAttributeName(X);break}case V.EQUALS_SIGN:{this._err(q.unexpectedEqualsSignBeforeAttributeName),this._createAttr("="),this.state=H.ATTRIBUTE_NAME;break}default:this._createAttr(""),this.state=H.ATTRIBUTE_NAME,this._stateAttributeName(X)}}_stateAttributeName(X){switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:case V.SOLIDUS:case V.GREATER_THAN_SIGN:case V.EOF:{this._leaveAttrName(),this.state=H.AFTER_ATTRIBUTE_NAME,this._stateAfterAttributeName(X);break}case V.EQUALS_SIGN:{this._leaveAttrName(),this.state=H.BEFORE_ATTRIBUTE_VALUE;break}case V.QUOTATION_MARK:case V.APOSTROPHE:case V.LESS_THAN_SIGN:{this._err(q.unexpectedCharacterInAttributeName),this.currentAttr.name+=String.fromCodePoint(X);break}case V.NULL:{this._err(q.unexpectedNullCharacter),this.currentAttr.name+=p;break}default:this.currentAttr.name+=String.fromCodePoint(f1(X)?L2(X):X)}}_stateAfterAttributeName(X){switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:break;case V.SOLIDUS:{this.state=H.SELF_CLOSING_START_TAG;break}case V.EQUALS_SIGN:{this.state=H.BEFORE_ATTRIBUTE_VALUE;break}case V.GREATER_THAN_SIGN:{this.state=H.DATA,this.emitCurrentTagToken();break}case V.EOF:{this._err(q.eofInTag),this._emitEOFToken();break}default:this._createAttr(""),this.state=H.ATTRIBUTE_NAME,this._stateAttributeName(X)}}_stateBeforeAttributeValue(X){switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:break;case V.QUOTATION_MARK:{this.state=H.ATTRIBUTE_VALUE_DOUBLE_QUOTED;break}case V.APOSTROPHE:{this.state=H.ATTRIBUTE_VALUE_SINGLE_QUOTED;break}case V.GREATER_THAN_SIGN:{this._err(q.missingAttributeValue),this.state=H.DATA,this.emitCurrentTagToken();break}default:this.state=H.ATTRIBUTE_VALUE_UNQUOTED,this._stateAttributeValueUnquoted(X)}}_stateAttributeValueDoubleQuoted(X){switch(X){case V.QUOTATION_MARK:{this.state=H.AFTER_ATTRIBUTE_VALUE_QUOTED;break}case V.AMPERSAND:{this._startCharacterReference();break}case V.NULL:{this._err(q.unexpectedNullCharacter),this.currentAttr.value+=p;break}case V.EOF:{this._err(q.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(X)}}_stateAttributeValueSingleQuoted(X){switch(X){case V.APOSTROPHE:{this.state=H.AFTER_ATTRIBUTE_VALUE_QUOTED;break}case V.AMPERSAND:{this._startCharacterReference();break}case V.NULL:{this._err(q.unexpectedNullCharacter),this.currentAttr.value+=p;break}case V.EOF:{this._err(q.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(X)}}_stateAttributeValueUnquoted(X){switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:{this._leaveAttrValue(),this.state=H.BEFORE_ATTRIBUTE_NAME;break}case V.AMPERSAND:{this._startCharacterReference();break}case V.GREATER_THAN_SIGN:{this._leaveAttrValue(),this.state=H.DATA,this.emitCurrentTagToken();break}case V.NULL:{this._err(q.unexpectedNullCharacter),this.currentAttr.value+=p;break}case V.QUOTATION_MARK:case V.APOSTROPHE:case V.LESS_THAN_SIGN:case V.EQUALS_SIGN:case V.GRAVE_ACCENT:{this._err(q.unexpectedCharacterInUnquotedAttributeValue),this.currentAttr.value+=String.fromCodePoint(X);break}case V.EOF:{this._err(q.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(X)}}_stateAfterAttributeValueQuoted(X){switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:{this._leaveAttrValue(),this.state=H.BEFORE_ATTRIBUTE_NAME;break}case V.SOLIDUS:{this._leaveAttrValue(),this.state=H.SELF_CLOSING_START_TAG;break}case V.GREATER_THAN_SIGN:{this._leaveAttrValue(),this.state=H.DATA,this.emitCurrentTagToken();break}case V.EOF:{this._err(q.eofInTag),this._emitEOFToken();break}default:this._err(q.missingWhitespaceBetweenAttributes),this.state=H.BEFORE_ATTRIBUTE_NAME,this._stateBeforeAttributeName(X)}}_stateSelfClosingStartTag(X){switch(X){case V.GREATER_THAN_SIGN:{let Z=this.currentToken;Z.selfClosing=!0,this.state=H.DATA,this.emitCurrentTagToken();break}case V.EOF:{this._err(q.eofInTag),this._emitEOFToken();break}default:this._err(q.unexpectedSolidusInTag),this.state=H.BEFORE_ATTRIBUTE_NAME,this._stateBeforeAttributeName(X)}}_stateBogusComment(X){let Z=this.currentToken;switch(X){case V.GREATER_THAN_SIGN:{this.state=H.DATA,this.emitCurrentComment(Z);break}case V.EOF:{this.emitCurrentComment(Z),this._emitEOFToken();break}case V.NULL:{this._err(q.unexpectedNullCharacter),Z.data+=p;break}default:Z.data+=String.fromCodePoint(X)}}_stateMarkupDeclarationOpen(X){if(this._consumeSequenceIfMatch(V0.DASH_DASH,!0))this._createCommentToken(V0.DASH_DASH.length+1),this.state=H.COMMENT_START;else if(this._consumeSequenceIfMatch(V0.DOCTYPE,!1))this.currentLocation=this.getCurrentLocation(V0.DOCTYPE.length+1),this.state=H.DOCTYPE;else if(this._consumeSequenceIfMatch(V0.CDATA_START,!0))if(this.inForeignNode)this.state=H.CDATA_SECTION;else this._err(q.cdataInHtmlContent),this._createCommentToken(V0.CDATA_START.length+1),this.currentToken.data="[CDATA[",this.state=H.BOGUS_COMMENT;else if(!this._ensureHibernation())this._err(q.incorrectlyOpenedComment),this._createCommentToken(2),this.state=H.BOGUS_COMMENT,this._stateBogusComment(X)}_stateCommentStart(X){switch(X){case V.HYPHEN_MINUS:{this.state=H.COMMENT_START_DASH;break}case V.GREATER_THAN_SIGN:{this._err(q.abruptClosingOfEmptyComment),this.state=H.DATA;let Z=this.currentToken;this.emitCurrentComment(Z);break}default:this.state=H.COMMENT,this._stateComment(X)}}_stateCommentStartDash(X){let Z=this.currentToken;switch(X){case V.HYPHEN_MINUS:{this.state=H.COMMENT_END;break}case V.GREATER_THAN_SIGN:{this._err(q.abruptClosingOfEmptyComment),this.state=H.DATA,this.emitCurrentComment(Z);break}case V.EOF:{this._err(q.eofInComment),this.emitCurrentComment(Z),this._emitEOFToken();break}default:Z.data+="-",this.state=H.COMMENT,this._stateComment(X)}}_stateComment(X){let Z=this.currentToken;switch(X){case V.HYPHEN_MINUS:{this.state=H.COMMENT_END_DASH;break}case V.LESS_THAN_SIGN:{Z.data+="<",this.state=H.COMMENT_LESS_THAN_SIGN;break}case V.NULL:{this._err(q.unexpectedNullCharacter),Z.data+=p;break}case V.EOF:{this._err(q.eofInComment),this.emitCurrentComment(Z),this._emitEOFToken();break}default:Z.data+=String.fromCodePoint(X)}}_stateCommentLessThanSign(X){let Z=this.currentToken;switch(X){case V.EXCLAMATION_MARK:{Z.data+="!",this.state=H.COMMENT_LESS_THAN_SIGN_BANG;break}case V.LESS_THAN_SIGN:{Z.data+="<";break}default:this.state=H.COMMENT,this._stateComment(X)}}_stateCommentLessThanSignBang(X){if(X===V.HYPHEN_MINUS)this.state=H.COMMENT_LESS_THAN_SIGN_BANG_DASH;else this.state=H.COMMENT,this._stateComment(X)}_stateCommentLessThanSignBangDash(X){if(X===V.HYPHEN_MINUS)this.state=H.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH;else this.state=H.COMMENT_END_DASH,this._stateCommentEndDash(X)}_stateCommentLessThanSignBangDashDash(X){if(X!==V.GREATER_THAN_SIGN&&X!==V.EOF)this._err(q.nestedComment);this.state=H.COMMENT_END,this._stateCommentEnd(X)}_stateCommentEndDash(X){let Z=this.currentToken;switch(X){case V.HYPHEN_MINUS:{this.state=H.COMMENT_END;break}case V.EOF:{this._err(q.eofInComment),this.emitCurrentComment(Z),this._emitEOFToken();break}default:Z.data+="-",this.state=H.COMMENT,this._stateComment(X)}}_stateCommentEnd(X){let Z=this.currentToken;switch(X){case V.GREATER_THAN_SIGN:{this.state=H.DATA,this.emitCurrentComment(Z);break}case V.EXCLAMATION_MARK:{this.state=H.COMMENT_END_BANG;break}case V.HYPHEN_MINUS:{Z.data+="-";break}case V.EOF:{this._err(q.eofInComment),this.emitCurrentComment(Z),this._emitEOFToken();break}default:Z.data+="--",this.state=H.COMMENT,this._stateComment(X)}}_stateCommentEndBang(X){let Z=this.currentToken;switch(X){case V.HYPHEN_MINUS:{Z.data+="--!",this.state=H.COMMENT_END_DASH;break}case V.GREATER_THAN_SIGN:{this._err(q.incorrectlyClosedComment),this.state=H.DATA,this.emitCurrentComment(Z);break}case V.EOF:{this._err(q.eofInComment),this.emitCurrentComment(Z),this._emitEOFToken();break}default:Z.data+="--!",this.state=H.COMMENT,this._stateComment(X)}}_stateDoctype(X){switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:{this.state=H.BEFORE_DOCTYPE_NAME;break}case V.GREATER_THAN_SIGN:{this.state=H.BEFORE_DOCTYPE_NAME,this._stateBeforeDoctypeName(X);break}case V.EOF:{this._err(q.eofInDoctype),this._createDoctypeToken(null);let Z=this.currentToken;Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(q.missingWhitespaceBeforeDoctypeName),this.state=H.BEFORE_DOCTYPE_NAME,this._stateBeforeDoctypeName(X)}}_stateBeforeDoctypeName(X){if(f1(X))this._createDoctypeToken(String.fromCharCode(L2(X))),this.state=H.DOCTYPE_NAME;else switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:break;case V.NULL:{this._err(q.unexpectedNullCharacter),this._createDoctypeToken(p),this.state=H.DOCTYPE_NAME;break}case V.GREATER_THAN_SIGN:{this._err(q.missingDoctypeName),this._createDoctypeToken(null);let Z=this.currentToken;Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this.state=H.DATA;break}case V.EOF:{this._err(q.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=H.DOCTYPE_NAME}}_stateDoctypeName(X){let Z=this.currentToken;switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:{this.state=H.AFTER_DOCTYPE_NAME;break}case V.GREATER_THAN_SIGN:{this.state=H.DATA,this.emitCurrentDoctype(Z);break}case V.NULL:{this._err(q.unexpectedNullCharacter),Z.name+=p;break}case V.EOF:{this._err(q.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:Z.name+=String.fromCodePoint(f1(X)?L2(X):X)}}_stateAfterDoctypeName(X){let Z=this.currentToken;switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:break;case V.GREATER_THAN_SIGN:{this.state=H.DATA,this.emitCurrentDoctype(Z);break}case V.EOF:{this._err(q.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:if(this._consumeSequenceIfMatch(V0.PUBLIC,!1))this.state=H.AFTER_DOCTYPE_PUBLIC_KEYWORD;else if(this._consumeSequenceIfMatch(V0.SYSTEM,!1))this.state=H.AFTER_DOCTYPE_SYSTEM_KEYWORD;else if(!this._ensureHibernation())this._err(q.invalidCharacterSequenceAfterDoctypeName),Z.forceQuirks=!0,this.state=H.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateAfterDoctypePublicKeyword(X){let Z=this.currentToken;switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:{this.state=H.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;break}case V.QUOTATION_MARK:{this._err(q.missingWhitespaceAfterDoctypePublicKeyword),Z.publicId="",this.state=H.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;break}case V.APOSTROPHE:{this._err(q.missingWhitespaceAfterDoctypePublicKeyword),Z.publicId="",this.state=H.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;break}case V.GREATER_THAN_SIGN:{this._err(q.missingDoctypePublicIdentifier),Z.forceQuirks=!0,this.state=H.DATA,this.emitCurrentDoctype(Z);break}case V.EOF:{this._err(q.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(q.missingQuoteBeforeDoctypePublicIdentifier),Z.forceQuirks=!0,this.state=H.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateBeforeDoctypePublicIdentifier(X){let Z=this.currentToken;switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:break;case V.QUOTATION_MARK:{Z.publicId="",this.state=H.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;break}case V.APOSTROPHE:{Z.publicId="",this.state=H.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;break}case V.GREATER_THAN_SIGN:{this._err(q.missingDoctypePublicIdentifier),Z.forceQuirks=!0,this.state=H.DATA,this.emitCurrentDoctype(Z);break}case V.EOF:{this._err(q.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(q.missingQuoteBeforeDoctypePublicIdentifier),Z.forceQuirks=!0,this.state=H.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateDoctypePublicIdentifierDoubleQuoted(X){let Z=this.currentToken;switch(X){case V.QUOTATION_MARK:{this.state=H.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;break}case V.NULL:{this._err(q.unexpectedNullCharacter),Z.publicId+=p;break}case V.GREATER_THAN_SIGN:{this._err(q.abruptDoctypePublicIdentifier),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this.state=H.DATA;break}case V.EOF:{this._err(q.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 V.APOSTROPHE:{this.state=H.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;break}case V.NULL:{this._err(q.unexpectedNullCharacter),Z.publicId+=p;break}case V.GREATER_THAN_SIGN:{this._err(q.abruptDoctypePublicIdentifier),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this.state=H.DATA;break}case V.EOF:{this._err(q.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 V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:{this.state=H.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;break}case V.GREATER_THAN_SIGN:{this.state=H.DATA,this.emitCurrentDoctype(Z);break}case V.QUOTATION_MARK:{this._err(q.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),Z.systemId="",this.state=H.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case V.APOSTROPHE:{this._err(q.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),Z.systemId="",this.state=H.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case V.EOF:{this._err(q.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(q.missingQuoteBeforeDoctypeSystemIdentifier),Z.forceQuirks=!0,this.state=H.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateBetweenDoctypePublicAndSystemIdentifiers(X){let Z=this.currentToken;switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:break;case V.GREATER_THAN_SIGN:{this.emitCurrentDoctype(Z),this.state=H.DATA;break}case V.QUOTATION_MARK:{Z.systemId="",this.state=H.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case V.APOSTROPHE:{Z.systemId="",this.state=H.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case V.EOF:{this._err(q.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(q.missingQuoteBeforeDoctypeSystemIdentifier),Z.forceQuirks=!0,this.state=H.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateAfterDoctypeSystemKeyword(X){let Z=this.currentToken;switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:{this.state=H.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;break}case V.QUOTATION_MARK:{this._err(q.missingWhitespaceAfterDoctypeSystemKeyword),Z.systemId="",this.state=H.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case V.APOSTROPHE:{this._err(q.missingWhitespaceAfterDoctypeSystemKeyword),Z.systemId="",this.state=H.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case V.GREATER_THAN_SIGN:{this._err(q.missingDoctypeSystemIdentifier),Z.forceQuirks=!0,this.state=H.DATA,this.emitCurrentDoctype(Z);break}case V.EOF:{this._err(q.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(q.missingQuoteBeforeDoctypeSystemIdentifier),Z.forceQuirks=!0,this.state=H.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateBeforeDoctypeSystemIdentifier(X){let Z=this.currentToken;switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:break;case V.QUOTATION_MARK:{Z.systemId="",this.state=H.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case V.APOSTROPHE:{Z.systemId="",this.state=H.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case V.GREATER_THAN_SIGN:{this._err(q.missingDoctypeSystemIdentifier),Z.forceQuirks=!0,this.state=H.DATA,this.emitCurrentDoctype(Z);break}case V.EOF:{this._err(q.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(q.missingQuoteBeforeDoctypeSystemIdentifier),Z.forceQuirks=!0,this.state=H.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateDoctypeSystemIdentifierDoubleQuoted(X){let Z=this.currentToken;switch(X){case V.QUOTATION_MARK:{this.state=H.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;break}case V.NULL:{this._err(q.unexpectedNullCharacter),Z.systemId+=p;break}case V.GREATER_THAN_SIGN:{this._err(q.abruptDoctypeSystemIdentifier),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this.state=H.DATA;break}case V.EOF:{this._err(q.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 V.APOSTROPHE:{this.state=H.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;break}case V.NULL:{this._err(q.unexpectedNullCharacter),Z.systemId+=p;break}case V.GREATER_THAN_SIGN:{this._err(q.abruptDoctypeSystemIdentifier),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this.state=H.DATA;break}case V.EOF:{this._err(q.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 V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:break;case V.GREATER_THAN_SIGN:{this.emitCurrentDoctype(Z),this.state=H.DATA;break}case V.EOF:{this._err(q.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(q.unexpectedCharacterAfterDoctypeSystemIdentifier),this.state=H.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateBogusDoctype(X){let Z=this.currentToken;switch(X){case V.GREATER_THAN_SIGN:{this.emitCurrentDoctype(Z),this.state=H.DATA;break}case V.NULL:{this._err(q.unexpectedNullCharacter);break}case V.EOF:{this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:}}_stateCdataSection(X){switch(X){case V.RIGHT_SQUARE_BRACKET:{this.state=H.CDATA_SECTION_BRACKET;break}case V.EOF:{this._err(q.eofInCdata),this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateCdataSectionBracket(X){if(X===V.RIGHT_SQUARE_BRACKET)this.state=H.CDATA_SECTION_END;else this._emitChars("]"),this.state=H.CDATA_SECTION,this._stateCdataSection(X)}_stateCdataSectionEnd(X){switch(X){case V.GREATER_THAN_SIGN:{this.state=H.DATA;break}case V.RIGHT_SQUARE_BRACKET:{this._emitChars("]");break}default:this._emitChars("]]"),this.state=H.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(V.AMPERSAND),this.state=!this._isCharacterReferenceInAttribute()&&D6(this.preprocessor.peek(1))?H.AMBIGUOUS_AMPERSAND:this.returnState;else this.state=this.returnState}_stateAmbiguousAmpersand(X){if(D6(X))this._flushCodePointConsumedAsCharacterReference(X);else{if(X===V.SEMICOLON)this._err(q.unknownNamedCharacterReference);this.state=this.returnState,this._callState(X)}}}var _6=new Set([J.DD,J.DT,J.LI,J.OPTGROUP,J.OPTION,J.P,J.RB,J.RP,J.RT,J.RTC]),E6=new Set([..._6,J.CAPTION,J.COLGROUP,J.TBODY,J.TD,J.TFOOT,J.TH,J.THEAD,J.TR]),w2=new Set([J.APPLET,J.CAPTION,J.HTML,J.MARQUEE,J.OBJECT,J.TABLE,J.TD,J.TEMPLATE,J.TH]),SZ=new Set([...w2,J.OL,J.UL]),AZ=new Set([...w2,J.BUTTON]),g6=new Set([J.ANNOTATION_XML,J.MI,J.MN,J.MO,J.MS,J.MTEXT]),m6=new Set([J.DESC,J.FOREIGN_OBJECT,J.TITLE]),IZ=new Set([J.TR,J.TEMPLATE,J.HTML]),TZ=new Set([J.TBODY,J.TFOOT,J.THEAD,J.TEMPLATE,J.HTML]),lZ=new Set([J.TABLE,J.TEMPLATE,J.HTML]),uZ=new Set([J.TD,J.TH]);class RX{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=J.UNKNOWN,this.current=X}_indexOf(X){return this.items.lastIndexOf(X,this.stackTop)}_isInTemplate(){return this.currentTagId===J.TEMPLATE&&this.treeAdapter.getNamespaceURI(this.current)===R.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 Q=this._indexOf(X)+1;if(this.items.splice(Q,0,Z),this.tagIDs.splice(Q,0,W),this.stackTop++,Q===this.stackTop)this._updateCurrentElement();if(this.current&&this.currentTagId!==void 0)this.handler.onItemPush(this.current,this.currentTagId,Q===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])!==R.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(C1,R.HTML)}popUntilTableCellPopped(){this.popUntilPopped(uZ,R.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(lZ,R.HTML)}clearBackToTableBodyContext(){this.clearBackTo(TZ,R.HTML)}clearBackToTableRowContext(){this.clearBackTo(IZ,R.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]===J.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]===J.HTML}hasInDynamicScope(X,Z){for(let W=this.stackTop;W>=0;W--){let Q=this.tagIDs[W];switch(this.treeAdapter.getNamespaceURI(this.items[W])){case R.HTML:{if(Q===X)return!0;if(Z.has(Q))return!1;break}case R.SVG:{if(m6.has(Q))return!1;break}case R.MATHML:{if(g6.has(Q))return!1;break}}}return!0}hasInScope(X){return this.hasInDynamicScope(X,w2)}hasInListItemScope(X){return this.hasInDynamicScope(X,SZ)}hasInButtonScope(X){return this.hasInDynamicScope(X,AZ)}hasNumberedHeaderInScope(){for(let X=this.stackTop;X>=0;X--){let Z=this.tagIDs[X];switch(this.treeAdapter.getNamespaceURI(this.items[X])){case R.HTML:{if(C1.has(Z))return!0;if(w2.has(Z))return!1;break}case R.SVG:{if(m6.has(Z))return!1;break}case R.MATHML:{if(g6.has(Z))return!1;break}}}return!0}hasInTableScope(X){for(let Z=this.stackTop;Z>=0;Z--){if(this.treeAdapter.getNamespaceURI(this.items[Z])!==R.HTML)continue;switch(this.tagIDs[Z]){case X:return!0;case J.TABLE:case J.HTML:return!1}}return!0}hasTableBodyContextInTableScope(){for(let X=this.stackTop;X>=0;X--){if(this.treeAdapter.getNamespaceURI(this.items[X])!==R.HTML)continue;switch(this.tagIDs[X]){case J.TBODY:case J.THEAD:case J.TFOOT:return!0;case J.TABLE:case J.HTML:return!1}}return!0}hasInSelectScope(X){for(let Z=this.stackTop;Z>=0;Z--){if(this.treeAdapter.getNamespaceURI(this.items[Z])!==R.HTML)continue;switch(this.tagIDs[Z]){case X:return!0;case J.OPTION:case J.OPTGROUP:break;default:return!1}}return!0}generateImpliedEndTags(){while(this.currentTagId!==void 0&&_6.has(this.currentTagId))this.pop()}generateImpliedEndTagsThoroughly(){while(this.currentTagId!==void 0&&E6.has(this.currentTagId))this.pop()}generateImpliedEndTagsWithExclusion(X){while(this.currentTagId!==void 0&&this.currentTagId!==X&&E6.has(this.currentTagId))this.pop()}}var P0;(function(X){X[X.Marker=0]="Marker",X[X.Element=1]="Element"})(P0||(P0={}));var k6={type:P0.Marker};class vX{constructor(X){this.treeAdapter=X,this.entries=[],this.bookmark=null}_getNoahArkConditionCandidates(X,Z){let W=[],Q=Z.length,Y=this.treeAdapter.getTagName(X),z=this.treeAdapter.getNamespaceURI(X);for(let j=0;j<this.entries.length;j++){let F=this.entries[j];if(F.type===P0.Marker)break;let{element:L}=F;if(this.treeAdapter.getTagName(L)===Y&&this.treeAdapter.getNamespaceURI(L)===z){let U=this.treeAdapter.getAttrList(L);if(U.length===Q)W.push({idx:j,attrs:U})}}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 Q=new Map(Z.map((z)=>[z.name,z.value])),Y=0;for(let z=0;z<W.length;z++){let j=W[z];if(j.attrs.every((F)=>Q.get(F.name)===F.value)){if(Y+=1,Y>=3)this.entries.splice(j.idx,1)}}}insertMarker(){this.entries.unshift(k6)}pushElement(X,Z){this._ensureNoahArkCondition(X),this.entries.unshift({type:P0.Element,element:X,token:Z})}insertElementAfterBookmark(X,Z){let W=this.entries.indexOf(this.bookmark);this.entries.splice(W,0,{type:P0.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(k6);if(X===-1)this.entries.length=0;else this.entries.splice(0,X+1)}getElementEntryInScopeWithTagName(X){let Z=this.entries.find((W)=>W.type===P0.Marker||this.treeAdapter.getTagName(W.element)===X);return Z&&Z.type===P0.Element?Z:null}getElementEntry(X){return this.entries.find((Z)=>Z.type===P0.Element&&Z.element===X)}}var B0={createDocument(){return{nodeName:"#document",mode:j0.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 Q=X.childNodes.indexOf(W);X.childNodes.splice(Q,0,Z),Z.parentNode=X},setTemplateContent(X,Z){X.content=Z},getTemplateContent(X){return X.content},setDocumentType(X,Z,W,Q){let Y=X.childNodes.find((z)=>z.nodeName==="#documentType");if(Y)Y.name=Z,Y.publicId=W,Y.systemId=Q;else{let z={nodeName:"#documentType",name:Z,publicId:W,systemId:Q,parentNode:null};B0.appendChild(X,z)}},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(B0.isTextNode(W)){W.value+=Z;return}}B0.appendChild(X,B0.createTextNode(Z))},insertTextBefore(X,Z,W){let Q=X.childNodes[X.childNodes.indexOf(W)-1];if(Q&&B0.isTextNode(Q))Q.value+=Z;else B0.insertBefore(X,B0.createTextNode(Z),W)},adoptAttributes(X,Z){let W=new Set(X.attrs.map((Q)=>Q.name));for(let Q=0;Q<Z.length;Q++)if(!W.has(Z[Q].name))X.attrs.push(Z[Q])},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 A6="html",cZ="about:legacy-compat",dZ="http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd",I6=["+//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//"],aZ=[...I6,"-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"],iZ=new Set(["-//w3o//dtd w3 html strict 3.0//en//","-/w3c/dtd html 4.0 transitional/en","html"]),T6=["-//w3c//dtd xhtml 1.0 frameset//","-//w3c//dtd xhtml 1.0 transitional//"],pZ=[...T6,"-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"];function S6(X,Z){return Z.some((W)=>X.startsWith(W))}function l6(X){return X.name===A6&&X.publicId===null&&(X.systemId===null||X.systemId===cZ)}function u6(X){if(X.name!==A6)return j0.QUIRKS;let{systemId:Z}=X;if(Z&&Z.toLowerCase()===dZ)return j0.QUIRKS;let{publicId:W}=X;if(W!==null){if(W=W.toLowerCase(),iZ.has(W))return j0.QUIRKS;let Q=Z===null?aZ:I6;if(S6(W,Q))return j0.QUIRKS;if(Q=Z===null?T6:pZ,S6(W,Q))return j0.LIMITED_QUIRKS}return j0.NO_QUIRKS}var c6={TEXT_HTML:"text/html",APPLICATION_XML:"application/xhtml+xml"},sZ="definitionurl",oZ="definitionURL",nZ=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])),tZ=new Map([["xlink:actuate",{prefix:"xlink",name:"actuate",namespace:R.XLINK}],["xlink:arcrole",{prefix:"xlink",name:"arcrole",namespace:R.XLINK}],["xlink:href",{prefix:"xlink",name:"href",namespace:R.XLINK}],["xlink:role",{prefix:"xlink",name:"role",namespace:R.XLINK}],["xlink:show",{prefix:"xlink",name:"show",namespace:R.XLINK}],["xlink:title",{prefix:"xlink",name:"title",namespace:R.XLINK}],["xlink:type",{prefix:"xlink",name:"type",namespace:R.XLINK}],["xml:lang",{prefix:"xml",name:"lang",namespace:R.XML}],["xml:space",{prefix:"xml",name:"space",namespace:R.XML}],["xmlns",{prefix:"",name:"xmlns",namespace:R.XMLNS}],["xmlns:xlink",{prefix:"xmlns",name:"xlink",namespace:R.XMLNS}]]),eZ=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])),X5=new Set([J.B,J.BIG,J.BLOCKQUOTE,J.BODY,J.BR,J.CENTER,J.CODE,J.DD,J.DIV,J.DL,J.DT,J.EM,J.EMBED,J.H1,J.H2,J.H3,J.H4,J.H5,J.H6,J.HEAD,J.HR,J.I,J.IMG,J.LI,J.LISTING,J.MENU,J.META,J.NOBR,J.OL,J.P,J.PRE,J.RUBY,J.S,J.SMALL,J.SPAN,J.STRONG,J.STRIKE,J.SUB,J.SUP,J.TABLE,J.TT,J.U,J.UL,J.VAR]);function d6(X){let Z=X.tagID;return Z===J.FONT&&X.attrs.some(({name:Q})=>Q===M0.COLOR||Q===M0.SIZE||Q===M0.FACE)||X5.has(Z)}function CX(X){for(let Z=0;Z<X.attrs.length;Z++)if(X.attrs[Z].name===sZ){X.attrs[Z].name=oZ;break}}function fX(X){for(let Z=0;Z<X.attrs.length;Z++){let W=nZ.get(X.attrs[Z].name);if(W!=null)X.attrs[Z].name=W}}function q2(X){for(let Z=0;Z<X.attrs.length;Z++){let W=tZ.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 a6(X){let Z=eZ.get(X.tagName);if(Z!=null)X.tagName=Z,X.tagID=c0(X.tagName)}function Z5(X,Z){return Z===R.MATHML&&(X===J.MI||X===J.MO||X===J.MN||X===J.MS||X===J.MTEXT)}function W5(X,Z,W){if(Z===R.MATHML&&X===J.ANNOTATION_XML){for(let Q=0;Q<W.length;Q++)if(W[Q].name===M0.ENCODING){let Y=W[Q].value.toLowerCase();return Y===c6.TEXT_HTML||Y===c6.APPLICATION_XML}}return Z===R.SVG&&(X===J.FOREIGN_OBJECT||X===J.DESC||X===J.TITLE)}function i6(X,Z,W,Q){return(!Q||Q===R.HTML)&&W5(X,Z,W)||(!Q||Q===R.MATHML)&&Z5(X,Z)}var Q5="hidden",J5=8,Y5=3,K;(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"})(K||(K={}));var z5={startLine:-1,startCol:-1,startOffset:-1,endLine:-1,endCol:-1,endOffset:-1},n6=new Set([J.TABLE,J.TBODY,J.TFOOT,J.THEAD,J.TR]),r6={scriptingEnabled:!0,sourceCodeLocationInfo:!1,treeAdapter:B0,onParseError:null};class O2{constructor(X,Z,W=null,Q=null){if(this.fragmentContext=W,this.scriptHandler=Q,this.currentToken=null,this.stopped=!1,this.insertionMode=K.INITIAL,this.originalInsertionMode=K.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={...r6,...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 B2(this.options,this),this.activeFormattingElements=new vX(this.treeAdapter),this.fragmentContextID=W?c0(this.treeAdapter.getTagName(W)):J.UNKNOWN,this._setContextModes(W!==null&&W!==void 0?W:this.document,this.fragmentContextID),this.openElements=new RX(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={...r6,...Z};X!==null&&X!==void 0||(X=W.treeAdapter.createElement(B.TEMPLATE,R.HTML,[]));let Q=W.treeAdapter.createElement("documentmock",R.HTML,[]),Y=new this(W,Q,X);if(Y.fragmentContextID===J.TEMPLATE)Y.tmplInsertionModeStack.unshift(K.IN_TEMPLATE);return Y._initTokenizerForFragmentParsing(),Y._insertFakeRootElement(),Y._resetInsertionMode(),Y._findFormInFragmentContext(),Y}getFragment(){let X=this.treeAdapter.getFirstChild(this.document),Z=this.treeAdapter.createDocumentFragment();return this._adoptNodes(X,Z),Z}_err(X,Z,W){var Q;if(!this.onParseError)return;let Y=(Q=X.location)!==null&&Q!==void 0?Q:z5,z={code:Z,startLine:Y.startLine,startCol:Y.startCol,startOffset:Y.startOffset,endLine:W?Y.startLine:Y.endLine,endCol:W?Y.startCol:Y.endCol,endOffset:W?Y.startOffset:Y.endOffset};this.onParseError(z)}onItemPush(X,Z,W){var Q,Y;if((Y=(Q=this.treeAdapter).onItemPush)===null||Y===void 0||Y.call(Q,X),W&&this.openElements.stackTop>0)this._setContextModes(X,Z)}onItemPop(X,Z){var W,Q;if(this.options.sourceCodeLocationInfo)this._setEndLocation(X,this.currentToken);if((Q=(W=this.treeAdapter).onItemPop)===null||Q===void 0||Q.call(W,X,this.openElements.current),Z){let Y,z;if(this.openElements.stackTop===0&&this.fragmentContext)Y=this.fragmentContext,z=this.fragmentContextID;else({current:Y,currentTagId:z}=this.openElements);this._setContextModes(Y,z)}}_setContextModes(X,Z){let W=X===this.document||X&&this.treeAdapter.getNamespaceURI(X)===R.HTML;this.currentNotInHTML=!W,this.tokenizer.inForeignNode=!W&&X!==void 0&&Z!==void 0&&!this._isIntegrationPoint(Z,X)}_switchToTextParsing(X,Z){this._insertElement(X,R.HTML),this.tokenizer.state=Z,this.originalInsertionMode=this.insertionMode,this.insertionMode=K.TEXT}switchToPlaintextParsing(){this.insertionMode=K.TEXT,this.originalInsertionMode=K.IN_BODY,this.tokenizer.state=J0.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)!==R.HTML)return;switch(this.fragmentContextID){case J.TITLE:case J.TEXTAREA:{this.tokenizer.state=J0.RCDATA;break}case J.STYLE:case J.XMP:case J.IFRAME:case J.NOEMBED:case J.NOFRAMES:case J.NOSCRIPT:{this.tokenizer.state=J0.RAWTEXT;break}case J.SCRIPT:{this.tokenizer.state=J0.SCRIPT_DATA;break}case J.PLAINTEXT:{this.tokenizer.state=J0.PLAINTEXT;break}default:}}_setDocumentType(X){let Z=X.name||"",W=X.publicId||"",Q=X.systemId||"";if(this.treeAdapter.setDocumentType(this.document,Z,W,Q),X.location){let z=this.treeAdapter.getChildNodes(this.document).find((j)=>this.treeAdapter.isDocumentTypeNode(j));if(z)this.treeAdapter.setNodeSourceCodeLocation(z,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,R.HTML,[]);this._attachElementToTree(W,null),this.openElements.push(W,Z)}_insertTemplate(X){let Z=this.treeAdapter.createElement(X.tagName,R.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,R.HTML,[]);if(this.options.sourceCodeLocationInfo)this.treeAdapter.setNodeSourceCodeLocation(X,null);this.treeAdapter.appendChild(this.openElements.current,X),this.openElements.push(X,J.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 Q=this.treeAdapter.getChildNodes(Z),Y=W?Q.lastIndexOf(W):Q.length,z=Q[Y-1];if(this.treeAdapter.getNodeSourceCodeLocation(z)){let{endLine:F,endCol:L,endOffset:U}=X.location;this.treeAdapter.updateNodeSourceCodeLocation(z,{endLine:F,endCol:L,endOffset:U})}else if(this.options.sourceCodeLocationInfo)this.treeAdapter.setNodeSourceCodeLocation(z,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,Q=this.treeAdapter.getTagName(X),Y=Z.type===c.END_TAG&&Q===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,Y)}}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===J.SVG&&this.treeAdapter.getTagName(Z)===B.ANNOTATION_XML&&this.treeAdapter.getNamespaceURI(Z)===R.MATHML)return!1;return this.tokenizer.inForeignNode||(X.tagID===J.MGLYPH||X.tagID===J.MALIGNMARK)&&W!==void 0&&!this._isIntegrationPoint(W,Z,R.HTML)}_processToken(X){switch(X.type){case c.CHARACTER:{this.onCharacter(X);break}case c.NULL_CHARACTER:{this.onNullCharacter(X);break}case c.COMMENT:{this.onComment(X);break}case c.DOCTYPE:{this.onDoctype(X);break}case c.START_TAG:{this._processStartTag(X);break}case c.END_TAG:{this.onEndTag(X);break}case c.EOF:{this.onEof(X);break}case c.WHITESPACE_CHARACTER:{this.onWhitespaceCharacter(X);break}}}_isIntegrationPoint(X,Z,W){let Q=this.treeAdapter.getNamespaceURI(Z),Y=this.treeAdapter.getAttrList(Z);return i6(X,Q,Y,W)}_reconstructActiveFormattingElements(){let X=this.activeFormattingElements.entries.length;if(X){let Z=this.activeFormattingElements.entries.findIndex((Q)=>Q.type===P0.Marker||this.openElements.contains(Q.element)),W=Z===-1?X-1:Z-1;for(let Q=W;Q>=0;Q--){let Y=this.activeFormattingElements.entries[Q];this._insertElement(Y.token,this.treeAdapter.getNamespaceURI(Y.element)),Y.element=this.openElements.current}}}_closeTableCell(){this.openElements.generateImpliedEndTags(),this.openElements.popUntilTableCellPopped(),this.activeFormattingElements.clearToLastMarker(),this.insertionMode=K.IN_ROW}_closePElement(){this.openElements.generateImpliedEndTagsWithExclusion(J.P),this.openElements.popUntilTagNamePopped(J.P)}_resetInsertionMode(){for(let X=this.openElements.stackTop;X>=0;X--)switch(X===0&&this.fragmentContext?this.fragmentContextID:this.openElements.tagIDs[X]){case J.TR:{this.insertionMode=K.IN_ROW;return}case J.TBODY:case J.THEAD:case J.TFOOT:{this.insertionMode=K.IN_TABLE_BODY;return}case J.CAPTION:{this.insertionMode=K.IN_CAPTION;return}case J.COLGROUP:{this.insertionMode=K.IN_COLUMN_GROUP;return}case J.TABLE:{this.insertionMode=K.IN_TABLE;return}case J.BODY:{this.insertionMode=K.IN_BODY;return}case J.FRAMESET:{this.insertionMode=K.IN_FRAMESET;return}case J.SELECT:{this._resetInsertionModeForSelect(X);return}case J.TEMPLATE:{this.insertionMode=this.tmplInsertionModeStack[0];return}case J.HTML:{this.insertionMode=this.headElement?K.AFTER_HEAD:K.BEFORE_HEAD;return}case J.TD:case J.TH:{if(X>0){this.insertionMode=K.IN_CELL;return}break}case J.HEAD:{if(X>0){this.insertionMode=K.IN_HEAD;return}break}}this.insertionMode=K.IN_BODY}_resetInsertionModeForSelect(X){if(X>0)for(let Z=X-1;Z>0;Z--){let W=this.openElements.tagIDs[Z];if(W===J.TEMPLATE)break;else if(W===J.TABLE){this.insertionMode=K.IN_SELECT_IN_TABLE;return}}this.insertionMode=K.IN_SELECT}_isElementCausesFosterParenting(X){return n6.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 J.TEMPLATE:{if(this.treeAdapter.getNamespaceURI(Z)===R.HTML)return{parent:this.treeAdapter.getTemplateContent(Z),beforeElement:null};break}case J.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 M6[W].has(Z)}onCharacter(X){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){k7(this,X);return}switch(this.insertionMode){case K.INITIAL:{y1(this,X);break}case K.BEFORE_HTML:{M1(this,X);break}case K.BEFORE_HEAD:{N1(this,X);break}case K.IN_HEAD:{D1(this,X);break}case K.IN_HEAD_NO_SCRIPT:{$1(this,X);break}case K.AFTER_HEAD:{G1(this,X);break}case K.IN_BODY:case K.IN_CAPTION:case K.IN_CELL:case K.IN_TEMPLATE:{e6(this,X);break}case K.TEXT:case K.IN_SELECT:case K.IN_SELECT_IN_TABLE:{this._insertCharacters(X);break}case K.IN_TABLE:case K.IN_TABLE_BODY:case K.IN_ROW:{yX(this,X);break}case K.IN_TABLE_TEXT:{Y4(this,X);break}case K.IN_COLUMN_GROUP:{b2(this,X);break}case K.AFTER_BODY:{x2(this,X);break}case K.AFTER_AFTER_BODY:{P2(this,X);break}default:}}onNullCharacter(X){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){_7(this,X);return}switch(this.insertionMode){case K.INITIAL:{y1(this,X);break}case K.BEFORE_HTML:{M1(this,X);break}case K.BEFORE_HEAD:{N1(this,X);break}case K.IN_HEAD:{D1(this,X);break}case K.IN_HEAD_NO_SCRIPT:{$1(this,X);break}case K.AFTER_HEAD:{G1(this,X);break}case K.TEXT:{this._insertCharacters(X);break}case K.IN_TABLE:case K.IN_TABLE_BODY:case K.IN_ROW:{yX(this,X);break}case K.IN_COLUMN_GROUP:{b2(this,X);break}case K.AFTER_BODY:{x2(this,X);break}case K.AFTER_AFTER_BODY:{P2(this,X);break}default:}}onComment(X){if(this.skipNextNewLine=!1,this.currentNotInHTML){hX(this,X);return}switch(this.insertionMode){case K.INITIAL:case K.BEFORE_HTML:case K.BEFORE_HEAD:case K.IN_HEAD:case K.IN_HEAD_NO_SCRIPT:case K.AFTER_HEAD:case K.IN_BODY:case K.IN_TABLE:case K.IN_CAPTION:case K.IN_COLUMN_GROUP:case K.IN_TABLE_BODY:case K.IN_ROW:case K.IN_CELL:case K.IN_SELECT:case K.IN_SELECT_IN_TABLE:case K.IN_TEMPLATE:case K.IN_FRAMESET:case K.AFTER_FRAMESET:{hX(this,X);break}case K.IN_TABLE_TEXT:{h1(this,X);break}case K.AFTER_BODY:{L5(this,X);break}case K.AFTER_AFTER_BODY:case K.AFTER_AFTER_FRAMESET:{B5(this,X);break}default:}}onDoctype(X){switch(this.skipNextNewLine=!1,this.insertionMode){case K.INITIAL:{w5(this,X);break}case K.BEFORE_HEAD:case K.IN_HEAD:case K.IN_HEAD_NO_SCRIPT:case K.AFTER_HEAD:{this._err(X,q.misplacedDoctype);break}case K.IN_TABLE_TEXT:{h1(this,X);break}default:}}onStartTag(X){if(this.skipNextNewLine=!1,this.currentToken=X,this._processStartTag(X),X.selfClosing&&!X.ackSelfClosing)this._err(X,q.nonVoidHtmlElementStartTagWithTrailingSolidus)}_processStartTag(X){if(this.shouldProcessStartTagTokenInForeignContent(X))S7(this,X);else this._startTagOutsideForeignContent(X)}_startTagOutsideForeignContent(X){switch(this.insertionMode){case K.INITIAL:{y1(this,X);break}case K.BEFORE_HTML:{q5(this,X);break}case K.BEFORE_HEAD:{b5(this,X);break}case K.IN_HEAD:{b0(this,X);break}case K.IN_HEAD_NO_SCRIPT:{R5(this,X);break}case K.AFTER_HEAD:{C5(this,X);break}case K.IN_BODY:{Y0(this,X);break}case K.IN_TABLE:{J1(this,X);break}case K.IN_TABLE_TEXT:{h1(this,X);break}case K.IN_CAPTION:{x7(this,X);break}case K.IN_COLUMN_GROUP:{$X(this,X);break}case K.IN_TABLE_BODY:{C2(this,X);break}case K.IN_ROW:{f2(this,X);break}case K.IN_CELL:{v7(this,X);break}case K.IN_SELECT:{j4(this,X);break}case K.IN_SELECT_IN_TABLE:{f7(this,X);break}case K.IN_TEMPLATE:{h7(this,X);break}case K.AFTER_BODY:{N7(this,X);break}case K.IN_FRAMESET:{D7(this,X);break}case K.AFTER_FRAMESET:{G7(this,X);break}case K.AFTER_AFTER_BODY:{g7(this,X);break}case K.AFTER_AFTER_FRAMESET:{m7(this,X);break}default:}}onEndTag(X){if(this.skipNextNewLine=!1,this.currentToken=X,this.currentNotInHTML)A7(this,X);else this._endTagOutsideForeignContent(X)}_endTagOutsideForeignContent(X){switch(this.insertionMode){case K.INITIAL:{y1(this,X);break}case K.BEFORE_HTML:{P5(this,X);break}case K.BEFORE_HEAD:{x5(this,X);break}case K.IN_HEAD:{O5(this,X);break}case K.IN_HEAD_NO_SCRIPT:{v5(this,X);break}case K.AFTER_HEAD:{f5(this,X);break}case K.IN_BODY:{v2(this,X);break}case K.TEXT:{H7(this,X);break}case K.IN_TABLE:{E1(this,X);break}case K.IN_TABLE_TEXT:{h1(this,X);break}case K.IN_CAPTION:{O7(this,X);break}case K.IN_COLUMN_GROUP:{R7(this,X);break}case K.IN_TABLE_BODY:{MX(this,X);break}case K.IN_ROW:{V4(this,X);break}case K.IN_CELL:{C7(this,X);break}case K.IN_SELECT:{H4(this,X);break}case K.IN_SELECT_IN_TABLE:{y7(this,X);break}case K.IN_TEMPLATE:{M7(this,X);break}case K.AFTER_BODY:{U4(this,X);break}case K.IN_FRAMESET:{$7(this,X);break}case K.AFTER_FRAMESET:{E7(this,X);break}case K.AFTER_AFTER_BODY:{P2(this,X);break}default:}}onEof(X){switch(this.insertionMode){case K.INITIAL:{y1(this,X);break}case K.BEFORE_HTML:{M1(this,X);break}case K.BEFORE_HEAD:{N1(this,X);break}case K.IN_HEAD:{D1(this,X);break}case K.IN_HEAD_NO_SCRIPT:{$1(this,X);break}case K.AFTER_HEAD:{G1(this,X);break}case K.IN_BODY:case K.IN_TABLE:case K.IN_CAPTION:case K.IN_COLUMN_GROUP:case K.IN_TABLE_BODY:case K.IN_ROW:case K.IN_CELL:case K.IN_SELECT:case K.IN_SELECT_IN_TABLE:{Q4(this,X);break}case K.TEXT:{K7(this,X);break}case K.IN_TABLE_TEXT:{h1(this,X);break}case K.IN_TEMPLATE:{K4(this,X);break}case K.AFTER_BODY:case K.IN_FRAMESET:case K.AFTER_FRAMESET:case K.AFTER_AFTER_BODY:case K.AFTER_AFTER_FRAMESET:{DX(this,X);break}default:}}onWhitespaceCharacter(X){if(this.skipNextNewLine){if(this.skipNextNewLine=!1,X.chars.charCodeAt(0)===V.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 K.IN_HEAD:case K.IN_HEAD_NO_SCRIPT:case K.AFTER_HEAD:case K.TEXT:case K.IN_COLUMN_GROUP:case K.IN_SELECT:case K.IN_SELECT_IN_TABLE:case K.IN_FRAMESET:case K.AFTER_FRAMESET:{this._insertCharacters(X);break}case K.IN_BODY:case K.IN_CAPTION:case K.IN_CELL:case K.IN_TEMPLATE:case K.AFTER_BODY:case K.AFTER_AFTER_BODY:case K.AFTER_AFTER_FRAMESET:{t6(this,X);break}case K.IN_TABLE:case K.IN_TABLE_BODY:case K.IN_ROW:{yX(this,X);break}case K.IN_TABLE_TEXT:{J4(this,X);break}default:}}}function V5(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 W4(X,Z);return W}function j5(X,Z){let W=null,Q=X.openElements.stackTop;for(;Q>=0;Q--){let Y=X.openElements.items[Q];if(Y===Z.element)break;if(X._isSpecialElement(Y,X.openElements.tagIDs[Q]))W=Y}if(!W)X.openElements.shortenToLength(Math.max(Q,0)),X.activeFormattingElements.removeEntry(Z);return W}function H5(X,Z,W){let Q=Z,Y=X.openElements.getCommonAncestor(Z);for(let z=0,j=Y;j!==W;z++,j=Y){Y=X.openElements.getCommonAncestor(j);let F=X.activeFormattingElements.getElementEntry(j),L=F&&z>=Y5;if(!F||L){if(L)X.activeFormattingElements.removeEntry(F);X.openElements.remove(j)}else{if(j=K5(X,F),Q===Z)X.activeFormattingElements.bookmark=F;X.treeAdapter.detachNode(Q),X.treeAdapter.appendChild(j,Q),Q=j}}return Q}function K5(X,Z){let W=X.treeAdapter.getNamespaceURI(Z.element),Q=X.treeAdapter.createElement(Z.token.tagName,W,Z.token.attrs);return X.openElements.replace(Z.element,Q),Z.element=Q,Q}function U5(X,Z,W){let Q=X.treeAdapter.getTagName(Z),Y=c0(Q);if(X._isElementCausesFosterParenting(Y))X._fosterParentElement(W);else{let z=X.treeAdapter.getNamespaceURI(Z);if(Y===J.TEMPLATE&&z===R.HTML)Z=X.treeAdapter.getTemplateContent(Z);X.treeAdapter.appendChild(Z,W)}}function F5(X,Z,W){let Q=X.treeAdapter.getNamespaceURI(W.element),{token:Y}=W,z=X.treeAdapter.createElement(Y.tagName,Q,Y.attrs);X._adoptNodes(Z,z),X.treeAdapter.appendChild(Z,z),X.activeFormattingElements.insertElementAfterBookmark(z,Y),X.activeFormattingElements.removeEntry(W),X.openElements.remove(W.element),X.openElements.insertAfter(Z,z,Y.tagID)}function NX(X,Z){for(let W=0;W<J5;W++){let Q=V5(X,Z);if(!Q)break;let Y=j5(X,Q);if(!Y)break;X.activeFormattingElements.bookmark=Q;let z=H5(X,Y,Q.element),j=X.openElements.getCommonAncestor(Q.element);if(X.treeAdapter.detachNode(z),j)U5(X,j,z);F5(X,Y,Q)}}function hX(X,Z){X._appendCommentNode(Z,X.openElements.currentTmplContentOrNode)}function L5(X,Z){X._appendCommentNode(Z,X.openElements.items[0])}function B5(X,Z){X._appendCommentNode(Z,X.document)}function DX(X,Z){if(X.stopped=!0,Z.location){let W=X.fragmentContext?0:2;for(let Q=X.openElements.stackTop;Q>=W;Q--)X._setEndLocation(X.openElements.items[Q],Z);if(!X.fragmentContext&&X.openElements.stackTop>=0){let Q=X.openElements.items[0],Y=X.treeAdapter.getNodeSourceCodeLocation(Q);if(Y&&!Y.endTag){if(X._setEndLocation(Q,Z),X.openElements.stackTop>=1){let z=X.openElements.items[1],j=X.treeAdapter.getNodeSourceCodeLocation(z);if(j&&!j.endTag)X._setEndLocation(z,Z)}}}}}function w5(X,Z){X._setDocumentType(Z);let W=Z.forceQuirks?j0.QUIRKS:u6(Z);if(!l6(Z))X._err(Z,q.nonConformingDoctype);X.treeAdapter.setDocumentMode(X.document,W),X.insertionMode=K.BEFORE_HTML}function y1(X,Z){X._err(Z,q.missingDoctype,!0),X.treeAdapter.setDocumentMode(X.document,j0.QUIRKS),X.insertionMode=K.BEFORE_HTML,X._processToken(Z)}function q5(X,Z){if(Z.tagID===J.HTML)X._insertElement(Z,R.HTML),X.insertionMode=K.BEFORE_HEAD;else M1(X,Z)}function P5(X,Z){let W=Z.tagID;if(W===J.HTML||W===J.HEAD||W===J.BODY||W===J.BR)M1(X,Z)}function M1(X,Z){X._insertFakeRootElement(),X.insertionMode=K.BEFORE_HEAD,X._processToken(Z)}function b5(X,Z){switch(Z.tagID){case J.HTML:{Y0(X,Z);break}case J.HEAD:{X._insertElement(Z,R.HTML),X.headElement=X.openElements.current,X.insertionMode=K.IN_HEAD;break}default:N1(X,Z)}}function x5(X,Z){let W=Z.tagID;if(W===J.HEAD||W===J.BODY||W===J.HTML||W===J.BR)N1(X,Z);else X._err(Z,q.endTagWithoutMatchingOpenElement)}function N1(X,Z){X._insertFakeElement(B.HEAD,J.HEAD),X.headElement=X.openElements.current,X.insertionMode=K.IN_HEAD,X._processToken(Z)}function b0(X,Z){switch(Z.tagID){case J.HTML:{Y0(X,Z);break}case J.BASE:case J.BASEFONT:case J.BGSOUND:case J.LINK:case J.META:{X._appendElement(Z,R.HTML),Z.ackSelfClosing=!0;break}case J.TITLE:{X._switchToTextParsing(Z,J0.RCDATA);break}case J.NOSCRIPT:{if(X.options.scriptingEnabled)X._switchToTextParsing(Z,J0.RAWTEXT);else X._insertElement(Z,R.HTML),X.insertionMode=K.IN_HEAD_NO_SCRIPT;break}case J.NOFRAMES:case J.STYLE:{X._switchToTextParsing(Z,J0.RAWTEXT);break}case J.SCRIPT:{X._switchToTextParsing(Z,J0.SCRIPT_DATA);break}case J.TEMPLATE:{X._insertTemplate(Z),X.activeFormattingElements.insertMarker(),X.framesetOk=!1,X.insertionMode=K.IN_TEMPLATE,X.tmplInsertionModeStack.unshift(K.IN_TEMPLATE);break}case J.HEAD:{X._err(Z,q.misplacedStartTagForHeadElement);break}default:D1(X,Z)}}function O5(X,Z){switch(Z.tagID){case J.HEAD:{X.openElements.pop(),X.insertionMode=K.AFTER_HEAD;break}case J.BODY:case J.BR:case J.HTML:{D1(X,Z);break}case J.TEMPLATE:{d0(X,Z);break}default:X._err(Z,q.endTagWithoutMatchingOpenElement)}}function d0(X,Z){if(X.openElements.tmplCount>0){if(X.openElements.generateImpliedEndTagsThoroughly(),X.openElements.currentTagId!==J.TEMPLATE)X._err(Z,q.closingOfElementWithOpenChildElements);X.openElements.popUntilTagNamePopped(J.TEMPLATE),X.activeFormattingElements.clearToLastMarker(),X.tmplInsertionModeStack.shift(),X._resetInsertionMode()}else X._err(Z,q.endTagWithoutMatchingOpenElement)}function D1(X,Z){X.openElements.pop(),X.insertionMode=K.AFTER_HEAD,X._processToken(Z)}function R5(X,Z){switch(Z.tagID){case J.HTML:{Y0(X,Z);break}case J.BASEFONT:case J.BGSOUND:case J.HEAD:case J.LINK:case J.META:case J.NOFRAMES:case J.STYLE:{b0(X,Z);break}case J.NOSCRIPT:{X._err(Z,q.nestedNoscriptInHead);break}default:$1(X,Z)}}function v5(X,Z){switch(Z.tagID){case J.NOSCRIPT:{X.openElements.pop(),X.insertionMode=K.IN_HEAD;break}case J.BR:{$1(X,Z);break}default:X._err(Z,q.endTagWithoutMatchingOpenElement)}}function $1(X,Z){let W=Z.type===c.EOF?q.openElementsLeftAfterEof:q.disallowedContentInNoscriptInHead;X._err(Z,W),X.openElements.pop(),X.insertionMode=K.IN_HEAD,X._processToken(Z)}function C5(X,Z){switch(Z.tagID){case J.HTML:{Y0(X,Z);break}case J.BODY:{X._insertElement(Z,R.HTML),X.framesetOk=!1,X.insertionMode=K.IN_BODY;break}case J.FRAMESET:{X._insertElement(Z,R.HTML),X.insertionMode=K.IN_FRAMESET;break}case J.BASE:case J.BASEFONT:case J.BGSOUND:case J.LINK:case J.META:case J.NOFRAMES:case J.SCRIPT:case J.STYLE:case J.TEMPLATE:case J.TITLE:{X._err(Z,q.abandonedHeadElementChild),X.openElements.push(X.headElement,J.HEAD),b0(X,Z),X.openElements.remove(X.headElement);break}case J.HEAD:{X._err(Z,q.misplacedStartTagForHeadElement);break}default:G1(X,Z)}}function f5(X,Z){switch(Z.tagID){case J.BODY:case J.HTML:case J.BR:{G1(X,Z);break}case J.TEMPLATE:{d0(X,Z);break}default:X._err(Z,q.endTagWithoutMatchingOpenElement)}}function G1(X,Z){X._insertFakeElement(B.BODY,J.BODY),X.insertionMode=K.IN_BODY,R2(X,Z)}function R2(X,Z){switch(Z.type){case c.CHARACTER:{e6(X,Z);break}case c.WHITESPACE_CHARACTER:{t6(X,Z);break}case c.COMMENT:{hX(X,Z);break}case c.START_TAG:{Y0(X,Z);break}case c.END_TAG:{v2(X,Z);break}case c.EOF:{Q4(X,Z);break}default:}}function t6(X,Z){X._reconstructActiveFormattingElements(),X._insertCharacters(Z)}function e6(X,Z){X._reconstructActiveFormattingElements(),X._insertCharacters(Z),X.framesetOk=!1}function y5(X,Z){if(X.openElements.tmplCount===0)X.treeAdapter.adoptAttributes(X.openElements.items[0],Z.attrs)}function h5(X,Z){let W=X.openElements.tryPeekProperlyNestedBodyElement();if(W&&X.openElements.tmplCount===0)X.framesetOk=!1,X.treeAdapter.adoptAttributes(W,Z.attrs)}function M5(X,Z){let W=X.openElements.tryPeekProperlyNestedBodyElement();if(X.framesetOk&&W)X.treeAdapter.detachNode(W),X.openElements.popAllUpToHtmlElement(),X._insertElement(Z,R.HTML),X.insertionMode=K.IN_FRAMESET}function N5(X,Z){if(X.openElements.hasInButtonScope(J.P))X._closePElement();X._insertElement(Z,R.HTML)}function D5(X,Z){if(X.openElements.hasInButtonScope(J.P))X._closePElement();if(X.openElements.currentTagId!==void 0&&C1.has(X.openElements.currentTagId))X.openElements.pop();X._insertElement(Z,R.HTML)}function $5(X,Z){if(X.openElements.hasInButtonScope(J.P))X._closePElement();X._insertElement(Z,R.HTML),X.skipNextNewLine=!0,X.framesetOk=!1}function G5(X,Z){let W=X.openElements.tmplCount>0;if(!X.formElement||W){if(X.openElements.hasInButtonScope(J.P))X._closePElement();if(X._insertElement(Z,R.HTML),!W)X.formElement=X.openElements.current}}function E5(X,Z){X.framesetOk=!1;let W=Z.tagID;for(let Q=X.openElements.stackTop;Q>=0;Q--){let Y=X.openElements.tagIDs[Q];if(W===J.LI&&Y===J.LI||(W===J.DD||W===J.DT)&&(Y===J.DD||Y===J.DT)){X.openElements.generateImpliedEndTagsWithExclusion(Y),X.openElements.popUntilTagNamePopped(Y);break}if(Y!==J.ADDRESS&&Y!==J.DIV&&Y!==J.P&&X._isSpecialElement(X.openElements.items[Q],Y))break}if(X.openElements.hasInButtonScope(J.P))X._closePElement();X._insertElement(Z,R.HTML)}function g5(X,Z){if(X.openElements.hasInButtonScope(J.P))X._closePElement();X._insertElement(Z,R.HTML),X.tokenizer.state=J0.PLAINTEXT}function m5(X,Z){if(X.openElements.hasInScope(J.BUTTON))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(J.BUTTON);X._reconstructActiveFormattingElements(),X._insertElement(Z,R.HTML),X.framesetOk=!1}function _5(X,Z){let W=X.activeFormattingElements.getElementEntryInScopeWithTagName(B.A);if(W)NX(X,Z),X.openElements.remove(W.element),X.activeFormattingElements.removeEntry(W);X._reconstructActiveFormattingElements(),X._insertElement(Z,R.HTML),X.activeFormattingElements.pushElement(X.openElements.current,Z)}function k5(X,Z){X._reconstructActiveFormattingElements(),X._insertElement(Z,R.HTML),X.activeFormattingElements.pushElement(X.openElements.current,Z)}function S5(X,Z){if(X._reconstructActiveFormattingElements(),X.openElements.hasInScope(J.NOBR))NX(X,Z),X._reconstructActiveFormattingElements();X._insertElement(Z,R.HTML),X.activeFormattingElements.pushElement(X.openElements.current,Z)}function A5(X,Z){X._reconstructActiveFormattingElements(),X._insertElement(Z,R.HTML),X.activeFormattingElements.insertMarker(),X.framesetOk=!1}function I5(X,Z){if(X.treeAdapter.getDocumentMode(X.document)!==j0.QUIRKS&&X.openElements.hasInButtonScope(J.P))X._closePElement();X._insertElement(Z,R.HTML),X.framesetOk=!1,X.insertionMode=K.IN_TABLE}function X4(X,Z){X._reconstructActiveFormattingElements(),X._appendElement(Z,R.HTML),X.framesetOk=!1,Z.ackSelfClosing=!0}function Z4(X){let Z=F2(X,M0.TYPE);return Z!=null&&Z.toLowerCase()===Q5}function T5(X,Z){if(X._reconstructActiveFormattingElements(),X._appendElement(Z,R.HTML),!Z4(Z))X.framesetOk=!1;Z.ackSelfClosing=!0}function l5(X,Z){X._appendElement(Z,R.HTML),Z.ackSelfClosing=!0}function u5(X,Z){if(X.openElements.hasInButtonScope(J.P))X._closePElement();X._appendElement(Z,R.HTML),X.framesetOk=!1,Z.ackSelfClosing=!0}function c5(X,Z){Z.tagName=B.IMG,Z.tagID=J.IMG,X4(X,Z)}function d5(X,Z){X._insertElement(Z,R.HTML),X.skipNextNewLine=!0,X.tokenizer.state=J0.RCDATA,X.originalInsertionMode=X.insertionMode,X.framesetOk=!1,X.insertionMode=K.TEXT}function a5(X,Z){if(X.openElements.hasInButtonScope(J.P))X._closePElement();X._reconstructActiveFormattingElements(),X.framesetOk=!1,X._switchToTextParsing(Z,J0.RAWTEXT)}function i5(X,Z){X.framesetOk=!1,X._switchToTextParsing(Z,J0.RAWTEXT)}function s6(X,Z){X._switchToTextParsing(Z,J0.RAWTEXT)}function p5(X,Z){X._reconstructActiveFormattingElements(),X._insertElement(Z,R.HTML),X.framesetOk=!1,X.insertionMode=X.insertionMode===K.IN_TABLE||X.insertionMode===K.IN_CAPTION||X.insertionMode===K.IN_TABLE_BODY||X.insertionMode===K.IN_ROW||X.insertionMode===K.IN_CELL?K.IN_SELECT_IN_TABLE:K.IN_SELECT}function r5(X,Z){if(X.openElements.currentTagId===J.OPTION)X.openElements.pop();X._reconstructActiveFormattingElements(),X._insertElement(Z,R.HTML)}function s5(X,Z){if(X.openElements.hasInScope(J.RUBY))X.openElements.generateImpliedEndTags();X._insertElement(Z,R.HTML)}function o5(X,Z){if(X.openElements.hasInScope(J.RUBY))X.openElements.generateImpliedEndTagsWithExclusion(J.RTC);X._insertElement(Z,R.HTML)}function n5(X,Z){if(X._reconstructActiveFormattingElements(),CX(Z),q2(Z),Z.selfClosing)X._appendElement(Z,R.MATHML);else X._insertElement(Z,R.MATHML);Z.ackSelfClosing=!0}function t5(X,Z){if(X._reconstructActiveFormattingElements(),fX(Z),q2(Z),Z.selfClosing)X._appendElement(Z,R.SVG);else X._insertElement(Z,R.SVG);Z.ackSelfClosing=!0}function o6(X,Z){X._reconstructActiveFormattingElements(),X._insertElement(Z,R.HTML)}function Y0(X,Z){switch(Z.tagID){case J.I:case J.S:case J.B:case J.U:case J.EM:case J.TT:case J.BIG:case J.CODE:case J.FONT:case J.SMALL:case J.STRIKE:case J.STRONG:{k5(X,Z);break}case J.A:{_5(X,Z);break}case J.H1:case J.H2:case J.H3:case J.H4:case J.H5:case J.H6:{D5(X,Z);break}case J.P:case J.DL:case J.OL:case J.UL:case J.DIV:case J.DIR:case J.NAV:case J.MAIN:case J.MENU:case J.ASIDE:case J.CENTER:case J.FIGURE:case J.FOOTER:case J.HEADER:case J.HGROUP:case J.DIALOG:case J.DETAILS:case J.ADDRESS:case J.ARTICLE:case J.SEARCH:case J.SECTION:case J.SUMMARY:case J.FIELDSET:case J.BLOCKQUOTE:case J.FIGCAPTION:{N5(X,Z);break}case J.LI:case J.DD:case J.DT:{E5(X,Z);break}case J.BR:case J.IMG:case J.WBR:case J.AREA:case J.EMBED:case J.KEYGEN:{X4(X,Z);break}case J.HR:{u5(X,Z);break}case J.RB:case J.RTC:{s5(X,Z);break}case J.RT:case J.RP:{o5(X,Z);break}case J.PRE:case J.LISTING:{$5(X,Z);break}case J.XMP:{a5(X,Z);break}case J.SVG:{t5(X,Z);break}case J.HTML:{y5(X,Z);break}case J.BASE:case J.LINK:case J.META:case J.STYLE:case J.TITLE:case J.SCRIPT:case J.BGSOUND:case J.BASEFONT:case J.TEMPLATE:{b0(X,Z);break}case J.BODY:{h5(X,Z);break}case J.FORM:{G5(X,Z);break}case J.NOBR:{S5(X,Z);break}case J.MATH:{n5(X,Z);break}case J.TABLE:{I5(X,Z);break}case J.INPUT:{T5(X,Z);break}case J.PARAM:case J.TRACK:case J.SOURCE:{l5(X,Z);break}case J.IMAGE:{c5(X,Z);break}case J.BUTTON:{m5(X,Z);break}case J.APPLET:case J.OBJECT:case J.MARQUEE:{A5(X,Z);break}case J.IFRAME:{i5(X,Z);break}case J.SELECT:{p5(X,Z);break}case J.OPTION:case J.OPTGROUP:{r5(X,Z);break}case J.NOEMBED:case J.NOFRAMES:{s6(X,Z);break}case J.FRAMESET:{M5(X,Z);break}case J.TEXTAREA:{d5(X,Z);break}case J.NOSCRIPT:{if(X.options.scriptingEnabled)s6(X,Z);else o6(X,Z);break}case J.PLAINTEXT:{g5(X,Z);break}case J.COL:case J.TH:case J.TD:case J.TR:case J.HEAD:case J.FRAME:case J.TBODY:case J.TFOOT:case J.THEAD:case J.CAPTION:case J.COLGROUP:break;default:o6(X,Z)}}function e5(X,Z){if(X.openElements.hasInScope(J.BODY)){if(X.insertionMode=K.AFTER_BODY,X.options.sourceCodeLocationInfo){let W=X.openElements.tryPeekProperlyNestedBodyElement();if(W)X._setEndLocation(W,Z)}}}function X7(X,Z){if(X.openElements.hasInScope(J.BODY))X.insertionMode=K.AFTER_BODY,U4(X,Z)}function Z7(X,Z){let W=Z.tagID;if(X.openElements.hasInScope(W))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(W)}function W7(X){let Z=X.openElements.tmplCount>0,{formElement:W}=X;if(!Z)X.formElement=null;if((W||Z)&&X.openElements.hasInScope(J.FORM)){if(X.openElements.generateImpliedEndTags(),Z)X.openElements.popUntilTagNamePopped(J.FORM);else if(W)X.openElements.remove(W)}}function Q7(X){if(!X.openElements.hasInButtonScope(J.P))X._insertFakeElement(B.P,J.P);X._closePElement()}function J7(X){if(X.openElements.hasInListItemScope(J.LI))X.openElements.generateImpliedEndTagsWithExclusion(J.LI),X.openElements.popUntilTagNamePopped(J.LI)}function Y7(X,Z){let W=Z.tagID;if(X.openElements.hasInScope(W))X.openElements.generateImpliedEndTagsWithExclusion(W),X.openElements.popUntilTagNamePopped(W)}function z7(X){if(X.openElements.hasNumberedHeaderInScope())X.openElements.generateImpliedEndTags(),X.openElements.popUntilNumberedHeaderPopped()}function V7(X,Z){let W=Z.tagID;if(X.openElements.hasInScope(W))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(W),X.activeFormattingElements.clearToLastMarker()}function j7(X){X._reconstructActiveFormattingElements(),X._insertFakeElement(B.BR,J.BR),X.openElements.pop(),X.framesetOk=!1}function W4(X,Z){let{tagName:W,tagID:Q}=Z;for(let Y=X.openElements.stackTop;Y>0;Y--){let z=X.openElements.items[Y],j=X.openElements.tagIDs[Y];if(Q===j&&(Q!==J.UNKNOWN||X.treeAdapter.getTagName(z)===W)){if(X.openElements.generateImpliedEndTagsWithExclusion(Q),X.openElements.stackTop>=Y)X.openElements.shortenToLength(Y);break}if(X._isSpecialElement(z,j))break}}function v2(X,Z){switch(Z.tagID){case J.A:case J.B:case J.I:case J.S:case J.U:case J.EM:case J.TT:case J.BIG:case J.CODE:case J.FONT:case J.NOBR:case J.SMALL:case J.STRIKE:case J.STRONG:{NX(X,Z);break}case J.P:{Q7(X);break}case J.DL:case J.UL:case J.OL:case J.DIR:case J.DIV:case J.NAV:case J.PRE:case J.MAIN:case J.MENU:case J.ASIDE:case J.BUTTON:case J.CENTER:case J.FIGURE:case J.FOOTER:case J.HEADER:case J.HGROUP:case J.DIALOG:case J.ADDRESS:case J.ARTICLE:case J.DETAILS:case J.SEARCH:case J.SECTION:case J.SUMMARY:case J.LISTING:case J.FIELDSET:case J.BLOCKQUOTE:case J.FIGCAPTION:{Z7(X,Z);break}case J.LI:{J7(X);break}case J.DD:case J.DT:{Y7(X,Z);break}case J.H1:case J.H2:case J.H3:case J.H4:case J.H5:case J.H6:{z7(X);break}case J.BR:{j7(X);break}case J.BODY:{e5(X,Z);break}case J.HTML:{X7(X,Z);break}case J.FORM:{W7(X);break}case J.APPLET:case J.OBJECT:case J.MARQUEE:{V7(X,Z);break}case J.TEMPLATE:{d0(X,Z);break}default:W4(X,Z)}}function Q4(X,Z){if(X.tmplInsertionModeStack.length>0)K4(X,Z);else DX(X,Z)}function H7(X,Z){var W;if(Z.tagID===J.SCRIPT)(W=X.scriptHandler)===null||W===void 0||W.call(X,X.openElements.current);X.openElements.pop(),X.insertionMode=X.originalInsertionMode}function K7(X,Z){X._err(Z,q.eofInElementThatCanContainOnlyText),X.openElements.pop(),X.insertionMode=X.originalInsertionMode,X.onEof(Z)}function yX(X,Z){if(X.openElements.currentTagId!==void 0&&n6.has(X.openElements.currentTagId))switch(X.pendingCharacterTokens.length=0,X.hasNonWhitespacePendingCharacterToken=!1,X.originalInsertionMode=X.insertionMode,X.insertionMode=K.IN_TABLE_TEXT,Z.type){case c.CHARACTER:{Y4(X,Z);break}case c.WHITESPACE_CHARACTER:{J4(X,Z);break}}else g1(X,Z)}function U7(X,Z){X.openElements.clearBackToTableContext(),X.activeFormattingElements.insertMarker(),X._insertElement(Z,R.HTML),X.insertionMode=K.IN_CAPTION}function F7(X,Z){X.openElements.clearBackToTableContext(),X._insertElement(Z,R.HTML),X.insertionMode=K.IN_COLUMN_GROUP}function L7(X,Z){X.openElements.clearBackToTableContext(),X._insertFakeElement(B.COLGROUP,J.COLGROUP),X.insertionMode=K.IN_COLUMN_GROUP,$X(X,Z)}function B7(X,Z){X.openElements.clearBackToTableContext(),X._insertElement(Z,R.HTML),X.insertionMode=K.IN_TABLE_BODY}function w7(X,Z){X.openElements.clearBackToTableContext(),X._insertFakeElement(B.TBODY,J.TBODY),X.insertionMode=K.IN_TABLE_BODY,C2(X,Z)}function q7(X,Z){if(X.openElements.hasInTableScope(J.TABLE))X.openElements.popUntilTagNamePopped(J.TABLE),X._resetInsertionMode(),X._processStartTag(Z)}function P7(X,Z){if(Z4(Z))X._appendElement(Z,R.HTML);else g1(X,Z);Z.ackSelfClosing=!0}function b7(X,Z){if(!X.formElement&&X.openElements.tmplCount===0)X._insertElement(Z,R.HTML),X.formElement=X.openElements.current,X.openElements.pop()}function J1(X,Z){switch(Z.tagID){case J.TD:case J.TH:case J.TR:{w7(X,Z);break}case J.STYLE:case J.SCRIPT:case J.TEMPLATE:{b0(X,Z);break}case J.COL:{L7(X,Z);break}case J.FORM:{b7(X,Z);break}case J.TABLE:{q7(X,Z);break}case J.TBODY:case J.TFOOT:case J.THEAD:{B7(X,Z);break}case J.INPUT:{P7(X,Z);break}case J.CAPTION:{U7(X,Z);break}case J.COLGROUP:{F7(X,Z);break}default:g1(X,Z)}}function E1(X,Z){switch(Z.tagID){case J.TABLE:{if(X.openElements.hasInTableScope(J.TABLE))X.openElements.popUntilTagNamePopped(J.TABLE),X._resetInsertionMode();break}case J.TEMPLATE:{d0(X,Z);break}case J.BODY:case J.CAPTION:case J.COL:case J.COLGROUP:case J.HTML:case J.TBODY:case J.TD:case J.TFOOT:case J.TH:case J.THEAD:case J.TR:break;default:g1(X,Z)}}function g1(X,Z){let W=X.fosterParentingEnabled;X.fosterParentingEnabled=!0,R2(X,Z),X.fosterParentingEnabled=W}function J4(X,Z){X.pendingCharacterTokens.push(Z)}function Y4(X,Z){X.pendingCharacterTokens.push(Z),X.hasNonWhitespacePendingCharacterToken=!0}function h1(X,Z){let W=0;if(X.hasNonWhitespacePendingCharacterToken)for(;W<X.pendingCharacterTokens.length;W++)g1(X,X.pendingCharacterTokens[W]);else for(;W<X.pendingCharacterTokens.length;W++)X._insertCharacters(X.pendingCharacterTokens[W]);X.insertionMode=X.originalInsertionMode,X._processToken(Z)}var z4=new Set([J.CAPTION,J.COL,J.COLGROUP,J.TBODY,J.TD,J.TFOOT,J.TH,J.THEAD,J.TR]);function x7(X,Z){let W=Z.tagID;if(z4.has(W)){if(X.openElements.hasInTableScope(J.CAPTION))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(J.CAPTION),X.activeFormattingElements.clearToLastMarker(),X.insertionMode=K.IN_TABLE,J1(X,Z)}else Y0(X,Z)}function O7(X,Z){let W=Z.tagID;switch(W){case J.CAPTION:case J.TABLE:{if(X.openElements.hasInTableScope(J.CAPTION)){if(X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(J.CAPTION),X.activeFormattingElements.clearToLastMarker(),X.insertionMode=K.IN_TABLE,W===J.TABLE)E1(X,Z)}break}case J.BODY:case J.COL:case J.COLGROUP:case J.HTML:case J.TBODY:case J.TD:case J.TFOOT:case J.TH:case J.THEAD:case J.TR:break;default:v2(X,Z)}}function $X(X,Z){switch(Z.tagID){case J.HTML:{Y0(X,Z);break}case J.COL:{X._appendElement(Z,R.HTML),Z.ackSelfClosing=!0;break}case J.TEMPLATE:{b0(X,Z);break}default:b2(X,Z)}}function R7(X,Z){switch(Z.tagID){case J.COLGROUP:{if(X.openElements.currentTagId===J.COLGROUP)X.openElements.pop(),X.insertionMode=K.IN_TABLE;break}case J.TEMPLATE:{d0(X,Z);break}case J.COL:break;default:b2(X,Z)}}function b2(X,Z){if(X.openElements.currentTagId===J.COLGROUP)X.openElements.pop(),X.insertionMode=K.IN_TABLE,X._processToken(Z)}function C2(X,Z){switch(Z.tagID){case J.TR:{X.openElements.clearBackToTableBodyContext(),X._insertElement(Z,R.HTML),X.insertionMode=K.IN_ROW;break}case J.TH:case J.TD:{X.openElements.clearBackToTableBodyContext(),X._insertFakeElement(B.TR,J.TR),X.insertionMode=K.IN_ROW,f2(X,Z);break}case J.CAPTION:case J.COL:case J.COLGROUP:case J.TBODY:case J.TFOOT:case J.THEAD:{if(X.openElements.hasTableBodyContextInTableScope())X.openElements.clearBackToTableBodyContext(),X.openElements.pop(),X.insertionMode=K.IN_TABLE,J1(X,Z);break}default:J1(X,Z)}}function MX(X,Z){let W=Z.tagID;switch(Z.tagID){case J.TBODY:case J.TFOOT:case J.THEAD:{if(X.openElements.hasInTableScope(W))X.openElements.clearBackToTableBodyContext(),X.openElements.pop(),X.insertionMode=K.IN_TABLE;break}case J.TABLE:{if(X.openElements.hasTableBodyContextInTableScope())X.openElements.clearBackToTableBodyContext(),X.openElements.pop(),X.insertionMode=K.IN_TABLE,E1(X,Z);break}case J.BODY:case J.CAPTION:case J.COL:case J.COLGROUP:case J.HTML:case J.TD:case J.TH:case J.TR:break;default:E1(X,Z)}}function f2(X,Z){switch(Z.tagID){case J.TH:case J.TD:{X.openElements.clearBackToTableRowContext(),X._insertElement(Z,R.HTML),X.insertionMode=K.IN_CELL,X.activeFormattingElements.insertMarker();break}case J.CAPTION:case J.COL:case J.COLGROUP:case J.TBODY:case J.TFOOT:case J.THEAD:case J.TR:{if(X.openElements.hasInTableScope(J.TR))X.openElements.clearBackToTableRowContext(),X.openElements.pop(),X.insertionMode=K.IN_TABLE_BODY,C2(X,Z);break}default:J1(X,Z)}}function V4(X,Z){switch(Z.tagID){case J.TR:{if(X.openElements.hasInTableScope(J.TR))X.openElements.clearBackToTableRowContext(),X.openElements.pop(),X.insertionMode=K.IN_TABLE_BODY;break}case J.TABLE:{if(X.openElements.hasInTableScope(J.TR))X.openElements.clearBackToTableRowContext(),X.openElements.pop(),X.insertionMode=K.IN_TABLE_BODY,MX(X,Z);break}case J.TBODY:case J.TFOOT:case J.THEAD:{if(X.openElements.hasInTableScope(Z.tagID)||X.openElements.hasInTableScope(J.TR))X.openElements.clearBackToTableRowContext(),X.openElements.pop(),X.insertionMode=K.IN_TABLE_BODY,MX(X,Z);break}case J.BODY:case J.CAPTION:case J.COL:case J.COLGROUP:case J.HTML:case J.TD:case J.TH:break;default:E1(X,Z)}}function v7(X,Z){let W=Z.tagID;if(z4.has(W)){if(X.openElements.hasInTableScope(J.TD)||X.openElements.hasInTableScope(J.TH))X._closeTableCell(),f2(X,Z)}else Y0(X,Z)}function C7(X,Z){let W=Z.tagID;switch(W){case J.TD:case J.TH:{if(X.openElements.hasInTableScope(W))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(W),X.activeFormattingElements.clearToLastMarker(),X.insertionMode=K.IN_ROW;break}case J.TABLE:case J.TBODY:case J.TFOOT:case J.THEAD:case J.TR:{if(X.openElements.hasInTableScope(W))X._closeTableCell(),V4(X,Z);break}case J.BODY:case J.CAPTION:case J.COL:case J.COLGROUP:case J.HTML:break;default:v2(X,Z)}}function j4(X,Z){switch(Z.tagID){case J.HTML:{Y0(X,Z);break}case J.OPTION:{if(X.openElements.currentTagId===J.OPTION)X.openElements.pop();X._insertElement(Z,R.HTML);break}case J.OPTGROUP:{if(X.openElements.currentTagId===J.OPTION)X.openElements.pop();if(X.openElements.currentTagId===J.OPTGROUP)X.openElements.pop();X._insertElement(Z,R.HTML);break}case J.HR:{if(X.openElements.currentTagId===J.OPTION)X.openElements.pop();if(X.openElements.currentTagId===J.OPTGROUP)X.openElements.pop();X._appendElement(Z,R.HTML),Z.ackSelfClosing=!0;break}case J.INPUT:case J.KEYGEN:case J.TEXTAREA:case J.SELECT:{if(X.openElements.hasInSelectScope(J.SELECT)){if(X.openElements.popUntilTagNamePopped(J.SELECT),X._resetInsertionMode(),Z.tagID!==J.SELECT)X._processStartTag(Z)}break}case J.SCRIPT:case J.TEMPLATE:{b0(X,Z);break}default:}}function H4(X,Z){switch(Z.tagID){case J.OPTGROUP:{if(X.openElements.stackTop>0&&X.openElements.currentTagId===J.OPTION&&X.openElements.tagIDs[X.openElements.stackTop-1]===J.OPTGROUP)X.openElements.pop();if(X.openElements.currentTagId===J.OPTGROUP)X.openElements.pop();break}case J.OPTION:{if(X.openElements.currentTagId===J.OPTION)X.openElements.pop();break}case J.SELECT:{if(X.openElements.hasInSelectScope(J.SELECT))X.openElements.popUntilTagNamePopped(J.SELECT),X._resetInsertionMode();break}case J.TEMPLATE:{d0(X,Z);break}default:}}function f7(X,Z){let W=Z.tagID;if(W===J.CAPTION||W===J.TABLE||W===J.TBODY||W===J.TFOOT||W===J.THEAD||W===J.TR||W===J.TD||W===J.TH)X.openElements.popUntilTagNamePopped(J.SELECT),X._resetInsertionMode(),X._processStartTag(Z);else j4(X,Z)}function y7(X,Z){let W=Z.tagID;if(W===J.CAPTION||W===J.TABLE||W===J.TBODY||W===J.TFOOT||W===J.THEAD||W===J.TR||W===J.TD||W===J.TH){if(X.openElements.hasInTableScope(W))X.openElements.popUntilTagNamePopped(J.SELECT),X._resetInsertionMode(),X.onEndTag(Z)}else H4(X,Z)}function h7(X,Z){switch(Z.tagID){case J.BASE:case J.BASEFONT:case J.BGSOUND:case J.LINK:case J.META:case J.NOFRAMES:case J.SCRIPT:case J.STYLE:case J.TEMPLATE:case J.TITLE:{b0(X,Z);break}case J.CAPTION:case J.COLGROUP:case J.TBODY:case J.TFOOT:case J.THEAD:{X.tmplInsertionModeStack[0]=K.IN_TABLE,X.insertionMode=K.IN_TABLE,J1(X,Z);break}case J.COL:{X.tmplInsertionModeStack[0]=K.IN_COLUMN_GROUP,X.insertionMode=K.IN_COLUMN_GROUP,$X(X,Z);break}case J.TR:{X.tmplInsertionModeStack[0]=K.IN_TABLE_BODY,X.insertionMode=K.IN_TABLE_BODY,C2(X,Z);break}case J.TD:case J.TH:{X.tmplInsertionModeStack[0]=K.IN_ROW,X.insertionMode=K.IN_ROW,f2(X,Z);break}default:X.tmplInsertionModeStack[0]=K.IN_BODY,X.insertionMode=K.IN_BODY,Y0(X,Z)}}function M7(X,Z){if(Z.tagID===J.TEMPLATE)d0(X,Z)}function K4(X,Z){if(X.openElements.tmplCount>0)X.openElements.popUntilTagNamePopped(J.TEMPLATE),X.activeFormattingElements.clearToLastMarker(),X.tmplInsertionModeStack.shift(),X._resetInsertionMode(),X.onEof(Z);else DX(X,Z)}function N7(X,Z){if(Z.tagID===J.HTML)Y0(X,Z);else x2(X,Z)}function U4(X,Z){var W;if(Z.tagID===J.HTML){if(!X.fragmentContext)X.insertionMode=K.AFTER_AFTER_BODY;if(X.options.sourceCodeLocationInfo&&X.openElements.tagIDs[0]===J.HTML){X._setEndLocation(X.openElements.items[0],Z);let Q=X.openElements.items[1];if(Q&&!((W=X.treeAdapter.getNodeSourceCodeLocation(Q))===null||W===void 0?void 0:W.endTag))X._setEndLocation(Q,Z)}}else x2(X,Z)}function x2(X,Z){X.insertionMode=K.IN_BODY,R2(X,Z)}function D7(X,Z){switch(Z.tagID){case J.HTML:{Y0(X,Z);break}case J.FRAMESET:{X._insertElement(Z,R.HTML);break}case J.FRAME:{X._appendElement(Z,R.HTML),Z.ackSelfClosing=!0;break}case J.NOFRAMES:{b0(X,Z);break}default:}}function $7(X,Z){if(Z.tagID===J.FRAMESET&&!X.openElements.isRootHtmlElementCurrent()){if(X.openElements.pop(),!X.fragmentContext&&X.openElements.currentTagId!==J.FRAMESET)X.insertionMode=K.AFTER_FRAMESET}}function G7(X,Z){switch(Z.tagID){case J.HTML:{Y0(X,Z);break}case J.NOFRAMES:{b0(X,Z);break}default:}}function E7(X,Z){if(Z.tagID===J.HTML)X.insertionMode=K.AFTER_AFTER_FRAMESET}function g7(X,Z){if(Z.tagID===J.HTML)Y0(X,Z);else P2(X,Z)}function P2(X,Z){X.insertionMode=K.IN_BODY,R2(X,Z)}function m7(X,Z){switch(Z.tagID){case J.HTML:{Y0(X,Z);break}case J.NOFRAMES:{b0(X,Z);break}default:}}function _7(X,Z){Z.chars=p,X._insertCharacters(Z)}function k7(X,Z){X._insertCharacters(Z),X.framesetOk=!1}function F4(X){while(X.treeAdapter.getNamespaceURI(X.openElements.current)!==R.HTML&&X.openElements.currentTagId!==void 0&&!X._isIntegrationPoint(X.openElements.currentTagId,X.openElements.current))X.openElements.pop()}function S7(X,Z){if(d6(Z))F4(X),X._startTagOutsideForeignContent(Z);else{let W=X._getAdjustedCurrentElement(),Q=X.treeAdapter.getNamespaceURI(W);if(Q===R.MATHML)CX(Z);else if(Q===R.SVG)a6(Z),fX(Z);if(q2(Z),Z.selfClosing)X._appendElement(Z,Q);else X._insertElement(Z,Q);Z.ackSelfClosing=!0}}function A7(X,Z){if(Z.tagID===J.P||Z.tagID===J.BR){F4(X),X._endTagOutsideForeignContent(Z);return}for(let W=X.openElements.stackTop;W>0;W--){let Q=X.openElements.items[W];if(X.treeAdapter.getNamespaceURI(Q)===R.HTML){X._endTagOutsideForeignContent(Z);break}let Y=X.treeAdapter.getTagName(Q);if(Y.toLowerCase()===Z.tagName){Z.tagName=Y,X.openElements.shortenToLength(W);break}}}var uz=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 L4(X,Z){return function(Q){let Y,z=0,j="";while(Y=X.exec(Q)){if(z!==Y.index)j+=Q.substring(z,Y.index);j+=Z.get(Y[0].charCodeAt(0)),z=Y.index+1}return j+Q.substring(z)}}var B4=L4(/["&\u00A0]/g,new Map([[34,"&quot;"],[38,"&amp;"],[160,"&nbsp;"]])),w4=L4(/[&<>\u00A0]/g,new Map([[38,"&amp;"],[60,"&lt;"],[62,"&gt;"],[160,"&nbsp;"]]));var I7=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 q4(X,Z){return Z.treeAdapter.isElementNode(X)&&Z.treeAdapter.getNamespaceURI(X)===R.HTML&&I7.has(Z.treeAdapter.getTagName(X))}var T7={treeAdapter:B0,scriptingEnabled:!0};function m1(X,Z){let W={...T7,...Z};if(q4(X,W))return"";return P4(X,W)}function P4(X,Z){let W="",Q=Z.treeAdapter.isElementNode(X)&&Z.treeAdapter.getTagName(X)===B.TEMPLATE&&Z.treeAdapter.getNamespaceURI(X)===R.HTML?Z.treeAdapter.getTemplateContent(X):X,Y=Z.treeAdapter.getChildNodes(Q);if(Y)for(let z of Y)W+=l7(z,Z);return W}function l7(X,Z){if(Z.treeAdapter.isElementNode(X))return u7(X,Z);if(Z.treeAdapter.isTextNode(X))return d7(X,Z);if(Z.treeAdapter.isCommentNode(X))return a7(X,Z);if(Z.treeAdapter.isDocumentTypeNode(X))return i7(X,Z);return""}function u7(X,Z){let W=Z.treeAdapter.getTagName(X);return`<${W}${c7(X,Z)}>${q4(X,Z)?"":`${P4(X,Z)}</${W}>`}`}function c7(X,{treeAdapter:Z}){let W="";for(let Q of Z.getAttrList(X)){if(W+=" ",Q.namespace)switch(Q.namespace){case R.XML:{W+=`xml:${Q.name}`;break}case R.XMLNS:{if(Q.name!=="xmlns")W+="xmlns:";W+=Q.name;break}case R.XLINK:{W+=`xlink:${Q.name}`;break}default:W+=`${Q.prefix}:${Q.name}`}else W+=Q.name;W+=`="${B4(Q.value)}"`}return W}function d7(X,Z){let{treeAdapter:W}=Z,Q=W.getTextNodeContent(X),Y=W.getParentNode(X),z=Y&&W.isElementNode(Y)&&W.getTagName(Y);return z&&W.getNamespaceURI(Y)===R.HTML&&N6(z,Z.scriptingEnabled)?Q:w4(Q)}function a7(X,{treeAdapter:Z}){return`<!--${Z.getCommentNodeContent(X)}-->`}function i7(X,{treeAdapter:Z}){return`<!DOCTYPE ${Z.getDocumentTypeNodeName(X)}>`}function y2(X,Z){return O2.parse(X,Z)}import{WebSocket as M2,WebSocketServer as ZW}from"ws";import*as Y1 from"css-tree";var _1=20971520,p7=new Set(["script","iframe","frame","frameset","object","embed","portal","base","audio","video","source","track","noscript","animate","animatemotion","animatetransform","discard","set"]),r7=new Set(["action","cite","data","formaction","href","ping","poster","src","srcset","xlink:href"]),GX=/^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,s7=new Set(["date","datetime-local","email","month","number","password","search","tel","text","time","url","week"]);function o7(X){return"tagName"in X}function b4(X,Z){return X.attrs.find((W)=>W.name.toLowerCase()===Z.toLowerCase())?.value??null}function v0(X,Z,W){let Q=X.attrs.find((Y)=>Y.name.toLowerCase()===Z.toLowerCase());if(Q)Q.value=W;else X.attrs.push({name:Z,value:W})}function x4(X){try{let Z=Y1.parse(X,{context:"stylesheet",parseCustomProperty:!0,positions:!1});return Y1.walk(Z,{enter(W,Q,Y){if(W.type==="Atrule"&&W.name.toLowerCase()==="import"){Y.remove(Q);return}if(W.type==="Declaration"){let z=W.property.toLowerCase();if(z==="behavior"||z==="-moz-binding")Y.remove(Q);return}if(W.type==="Url"&&!GX.test(W.value)){W.value="data:,";return}if(W.type==="String"&&this.function&&["image-set","-webkit-image-set","src"].includes(this.function.name.toLowerCase())&&!GX.test(W.value))W.value="data:,"}}),Y1.generate(Z)}catch{return""}}function n7(X){return x4(`x{${X}}`).replace(/^x\{/,"").replace(/\}$/,"")}function t7(X){let Z=X.tagName.toLowerCase();if(X.attrs=X.attrs.flatMap((W)=>{let Q=W.name.toLowerCase();if(Z==="input"&&(Q==="value"||Q==="checked"))return[];if(Q.startsWith("on")||Q==="srcdoc"||Q==="nonce")return[];if(Q==="style"){let Y=n7(W.value);return Y?[{...W,value:Y}]:[]}if(r7.has(Q)){if(Q==="src"&&GX.test(W.value))return[W];if(Q==="href"&&W.value.startsWith("#"))return[W];return[]}if(Q==="target"||Q==="download"||Q==="http-equiv")return[];return[W]}),Z==="form")v0(X,"inert",""),v0(X,"aria-disabled","true");else if(Z==="textarea"||Z==="input"&&s7.has((b4(X,"type")??"text").toLowerCase()))v0(X,"readonly",""),v0(X,"aria-readonly","true"),v0(X,"tabindex","-1");else if(Z==="button"||Z==="select"||Z==="input")v0(X,"disabled",""),v0(X,"aria-disabled","true"),v0(X,"tabindex","-1");if(b4(X,"contenteditable")!==null)v0(X,"contenteditable","false"),v0(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=x4(W.value)}}function O4(X){let Z=[];for(let W of X.childNodes){if(o7(W)){let Q=W.tagName.toLowerCase();if(p7.has(Q))continue;if(Q==="meta"&&W.attrs.some((Y)=>Y.name.toLowerCase()==="http-equiv"&&Y.value.toLowerCase()!=="content-type"))continue;if(Q==="link")continue;t7(W),O4(W)}Z.push(W)}X.childNodes=Z}function R4(X){if(Buffer.byteLength(X,"utf8")>_1)throw Error("Browser snapshot exceeds the 20 MiB limit");let Z=y2(X);O4(Z);let W=m1(Z);if(Buffer.byteLength(W,"utf8")>_1)throw Error("Sanitized browser snapshot exceeds the 20 MiB limit");return W}function N0(X){return JSON.stringify(X).replace(/</g,"\\u003c")}function e7(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 v4(X){let Z=N0(e7(X.sourceUrl));return`(() => {
2
+ function C9(){let X=globalThis.performance?.now?.()??Date.now();return Math.round(X*10)/10}function m(X,Z={}){if(typeof process<"u"&&process.env.IDEAWAVE_AGENT_RUNTIME_TRACE==="0")return;let W=Object.fromEntries(Object.entries(Z).filter(([,Q])=>Q!==void 0));console.info("[agent-runtime-trace]",JSON.stringify({event:X,epochMs:Date.now(),monotonicMs:C9(),...typeof document>"u"?{}:{visibility:document.visibilityState},...W}))}var f9=600000,y9=60000,G3=200,h9=4,a=new Map,f0=null;function M9(X){X.then((Z)=>Z.dispose()).catch(()=>{return})}function w1(X){for(let Z of X.idleWaiters)Z();X.idleWaiters.clear()}function y0(X,Z){if(a.get(X)!==Z)return;a.delete(X),w1(Z),M9(Z.sessionPromise)}function N9(){if(f0!==null)return;f0=setInterval(()=>{let X=Date.now();for(let[Z,W]of a){if(W.inUse)continue;if(X-W.lastUsed<f9)continue;y0(Z,W)}if(a.size===0&&f0!==null)clearInterval(f0),f0=null},y9),f0.unref?.()}function D9(){if(a.size<G3)return;let X=null,Z=1/0;for(let[Q,Y]of a){if(Y.inUse)continue;if(Y.lastUsed>=Z)continue;X=Q,Z=Y.lastUsed}if(!X)return;let W=a.get(X);if(!W)return;y0(X,W)}function $9(){let X=0;while(a.size>G3){let Z=null,W=null;for(let[Q,Y]of a){if(Y.inUse)continue;if(W&&Y.lastUsed>=W.lastUsed)continue;Z=Q,W=Y}if(!Z||!W)break;y0(Z,W),X+=1}if(X>0)m("session_pool.global_idle_trimmed",{evictedSessions:X,poolEntries:a.size})}function G9(X){let Z=Array.from(a.entries()).filter(([,Q])=>Q.frontendSessionId===X&&!Q.inUse).sort(([,Q],[,Y])=>Q.lastUsed-Y.lastUsed),W=Z.length-h9;if(W<=0)return;for(let[Q,Y]of Z.slice(0,W))y0(Q,Y);m("session_pool.frontend_idle_trimmed",{frontendSessionId:X,evictedSessions:W,poolEntries:a.size})}function JX(X,Z,W){let Q=typeof W==="string"?{kind:"agent-card",id:W}:W;return`${X}:${Z}:${Q.kind}:${Q.id}`}function E9(X,Z){if(X.length===0)return!0;let W=X[X.length-1],Q=Z.indexOf(W);if(Q===-1||Q>X.length-1)return!1;for(let Y=0;Y<Q;Y+=1)if(Z[Y]!==X[X.length-1-Q+Y])return!1;return!0}async function q1(X){let Z=a.get(X.key);if(Z){if(Z.inUse)return m("session_pool.wait_for_idle",{frontendSessionId:Z.frontendSessionId,poolEntries:a.size}),await new Promise((Q)=>Z.idleWaiters.add(Q)),q1(X);if(Z.fingerprint!==X.fingerprint)y0(X.key,Z);else if(X.transcriptIds&&Z.transcriptIds&&!E9(Z.transcriptIds,X.transcriptIds))m("session_pool.transcript_rewritten",{frontendSessionId:Z.frontendSessionId,poolEntries:a.size}),y0(X.key,Z);else{Z.inUse=!0,Z.lastUsed=Date.now();try{let Q=await Z.sessionPromise;if(Q.isAlive()){if(X.transcriptIds)Z.transcriptIds=X.transcriptIds;if(Z.frontendSessionId)m("session_pool.reuse",{frontendSessionId:Z.frontendSessionId,poolEntries:a.size});return Q}}catch{}y0(X.key,Z)}}let W=X.open();if(D9(),a.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,warmup:X.warmup===!0}),N9(),X.frontendSessionId)m("session_pool.open",{frontendSessionId:X.frontendSessionId,poolEntries:a.size});try{return await W}catch(Q){let Y=a.get(X.key);if(Y?.sessionPromise===W)y0(X.key,Y);throw Q}}async function E3(X,Z){let W=a.get(X);if(!W||W.fingerprint!==Z)return null;let Q=W.inUse;if(Q&&!W.warmup)return null;if(Q){try{await W.sessionPromise}catch{return null}if(a.get(X)!==W)return null}a.delete(X),w1(W);try{let Y=await W.sessionPromise;if(Y.isAlive())return m("session_pool.spare_adopted",{frontendSessionId:W.frontendSessionId,poolEntries:a.size,adoptedInFlightWarmup:Q}),Y;Y.dispose()}catch{}return null}function P1(X,Z=!1){let W=a.get(X);if(!W)return;if(Z){y0(X,W);return}if(W.inUse=!1,W.lastUsed=Date.now(),W.frontendSessionId)G9(W.frontendSessionId),m("session_pool.release",{frontendSessionId:W.frontendSessionId,poolEntries:a.size});if($9(),a.get(X)===W)w1(W)}async function g3(X){let Z=Array.from(a.entries()).filter(([,W])=>W.frontendSessionId===X);for(let[W,Q]of Z)a.delete(W),w1(Q);return await Promise.all(Z.map(([,W])=>W.sessionPromise.then((Q)=>Q.dispose()).catch(()=>{return}))),m("session_pool.frontend_evicted",{frontendSessionId:X,evictedSessions:Z.length,poolEntries:a.size}),Z.length}async function g9(){let X=Array.from(a.values());a.clear();for(let Z of X)w1(Z);if(f0!==null)clearInterval(f0),f0=null;await Promise.all(X.map((Z)=>Z.sessionPromise.then((W)=>W.dispose()).catch(()=>{return})))}function b1(X){let Z=Object.entries(X.configValues??{}),W=Z.length>0?JSON.stringify(Object.fromEntries(Z.sort(([Y],[z])=>Y.localeCompare(z)))):"",Q=X.workerToolNames?JSON.stringify([...new Set(X.workerToolNames)].sort()):"";return[X.adapterId,X.configId??"",X.modelId??"",W,X.mcpUrl??"",X.mcpRoutingScope??"",X.runFolder??"",X.toolSurface??"full",Q].join(" ")}var $3=!1;function m9(){if($3)return;$3=!0;let X=()=>{g9()};process.once("beforeExit",X),process.once("SIGTERM",X),process.once("SIGINT",X)}m9();import{readFileSync as I9}from"node:fs";import{homedir as _9}from"node:os";import{posix as k9,win32 as S9}from"node:path";function m3(){return process.platform==="win32"?S9:k9}function A9(){let X=_9(),Z=m3();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 _3(){let X=process.env.IDEAWAVE_MCP_JSON_PATH;if(X&&X.trim().length>0)return X;return m3().join(A9(),"ideawave","mcp.json")}var S3=null;function A3(X){S3=X}var T9=86400000;function l9(){let X;try{X=I9(_3(),"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>T9)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 k3(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 t1(X={}){let Z=S3;if(Z)return k3(Z.url,X);let W=l9();if(!W)return null;return k3(W.url,X)}import x1 from"node:fs/promises";import i9 from"node:path";import u9 from"node:os";import e1 from"node:path";function c9(){let X=u9.homedir();switch(process.platform){case"win32":return process.env.APPDATA??e1.join(X,"AppData","Roaming");case"darwin":return e1.join(X,"Library","Application Support");default:return process.env.XDG_CONFIG_HOME??e1.join(X,".config")}}function X2(){let X=process.env.IDEAWAVE_RUNTIME_CONFIG_PATH;if(X)return X;return e1.join(c9(),"ideawave","runtimes.json")}import{z as E}from"zod";var I3=E.object({id:E.string(),name:E.string().nullable().default(null),description:E.string().nullable().default(null)}),u3=E.union([E.string(),E.boolean()]),d9=E.object({value:E.string(),name:E.string(),description:E.string().nullable().default(null),group:E.string().nullable().default(null),groupName:E.string().nullable().default(null)}),T3=E.object({id:E.string(),name:E.string(),category:E.string().nullable().default(null),description:E.string().nullable().default(null),type:E.enum(["select","boolean"]),currentValue:u3.nullable().default(null),options:E.array(d9).default([])}),YX=E.record(E.string(),u3).default({}),a9=E.discriminatedUnion("kind",[E.object({id:E.string(),kind:E.literal("registered"),adapterId:E.enum(["claude-code","opencode","codex","copilot"]),displayName:E.string(),runFolder:E.string().nullable(),defaultModelId:E.string().nullable().default(null),defaultConfigValues:YX,discoveredModels:E.array(I3).default([]),discoveredConfigOptions:E.array(T3).default([]),discoveredAt:E.string().nullable().default(null)}),E.object({id:E.string(),kind:E.literal("custom"),displayName:E.string(),command:E.string(),args:E.array(E.string()),env:E.record(E.string(),E.string()),runFolder:E.string().nullable(),defaultModelId:E.string().nullable().default(null),defaultConfigValues:YX,discoveredModels:E.array(I3).default([]),discoveredConfigOptions:E.array(T3).default([]),discoveredAt:E.string().nullable().default(null)})]),l3=E.object({runtimeConfigId:E.string(),runFolder:E.string().nullable(),modelId:E.string().nullable().default(null),configValues:YX}),Z2=E.object({version:E.literal(1),globalDefaultConfigId:E.string().nullable(),runtimes:E.array(a9),boardOverrides:E.record(E.string(),l3).default({}),cardOverrides:E.record(E.string(),l3).default({})});var p9={version:1,globalDefaultConfigId:null,runtimes:[],boardOverrides:{},cardOverrides:{}},c3=new Map;function r9(X){return c3.get(X)??Promise.resolve()}function s9(X,Z){c3.set(X,Z)}async function F0(X){let Z=X??X2(),W;try{W=await x1.readFile(Z,"utf-8")}catch(Y){if(Y.code==="ENOENT")return structuredClone(p9);throw Y}return Z2.parse(JSON.parse(W))}async function q0(X,Z){let W=Z??X2(),Q=r9(W).then(async()=>{let Y=await F0(W),z=structuredClone(Y),j=await X(z);return await o9(z,W),j});return s9(W,Q.catch(()=>{return})),Q}async function o9(X,Z){let W=Z??X2(),Q=i9.dirname(W);await x1.mkdir(Q,{recursive:!0});let Y=`${W}.tmp.${process.pid}.${Math.random().toString(36).slice(2)}`,z=JSON.stringify(X,null,2);await x1.writeFile(Y,z,"utf-8");try{await x1.rename(Y,W)}catch(j){throw await x1.unlink(Y).catch(()=>{return}),j}}import{spawn as zZ}from"node:child_process";import{closeSync as VZ,existsSync as r3,mkdirSync as s3,openSync as jZ,readFileSync as HZ,renameSync as KZ,rmSync as o3,statSync as UZ,unlinkSync as FZ,writeFileSync as LZ}from"node:fs";import i3 from"node:os";import u0 from"node:path";var n9=/\.(?:cmd|bat)$/i;function t9(X){return process.platform==="win32"&&n9.test(X)}function W2(X){return t9(X)?{shell:!0,windowsHide:!0}:{}}import{execFile as JZ}from"node:child_process";import{promisify as YZ}from"node:util";import{execFile as e9}from"node:child_process";import{promisify as XZ}from"node:util";var ZZ=XZ(e9),zX=new Map,d3=5000,WZ=/\.(?:cmd|bat|com|exe)$/i;function QZ(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)=>WZ.test(W))??Z[0]??null}async function a3(X,Z=ZZ){let W=zX.get(X);if(W&&W.expiresAt>Date.now())return W.value;let Q=process.platform==="win32"?"where":"which";try{let{stdout:Y}=await Z(Q,[X],{timeout:2000}),z=QZ(Y);return zX.set(X,{value:z,expiresAt:Date.now()+d3}),z}catch{return zX.set(X,{value:null,expiresAt:Date.now()+d3}),null}}class O1 extends Error{code;constructor(X,Z){super(X);this.name="AcpError",this.code=Z}}class h0 extends O1{constructor(X="No ACP runtime configured"){super(X,"RUNTIME_NOT_CONFIGURED");this.name="RuntimeNotConfiguredError"}}class u extends O1{constructor(X){super(X,"RUNTIME_UNREACHABLE");this.name="RuntimeUnreachableError"}}class Z1 extends O1{authMethods;constructor(X,Z){super(X,"AUTH_REQUIRED");this.name="AuthRequiredError",this.authMethods=Z}}class x0 extends O1{constructor(X="ACP session timed out"){super(X,"SESSION_TIMEOUT");this.name="SessionTimeoutError"}}var $Y=YZ(JZ);function o(X,...Z){return a3(X,...Z)}function U0(X){let Z={};for(let[W,Q]of Object.entries(process.env))if(typeof Q==="string")Z[W]=Q;return{...Z,...X??{}}}var jX=[{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"]}],BZ=1800000,Q2=new Map;function HX(){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??u0.join(i3.homedir(),"AppData","Local");return u0.join(X,"ideawave","acp-bridges")}return u0.join(process.env.XDG_CACHE_HOME??u0.join(i3.homedir(),".cache"),"ideawave","acp-bridges")}function wZ(X){return X.replace(/^@/,"").replace(/[/\\]/g,"-")}function J2(){return u0.join(HX(),"install-state.json")}function KX(X){return u0.join(HX(),`${wZ(X.packageName)}@${X.version}.install.lock`)}function UX(){return process.platform==="win32"?"npx.cmd":"npx"}function FX(X){return`${X.packageName}@${X.version}`}function n3(){let X=J2();if(!r3(X))return{};try{return JSON.parse(HZ(X,"utf8"))}catch{return{}}}function VX(X,Z){let W=HX();s3(W,{recursive:!0});let Q=n3();Q.bridges={...Q.bridges??{},[X.adapterId]:Z},LZ(`${J2()}.tmp`,`${JSON.stringify(Q,null,2)}
3
+ `),KZ(`${J2()}.tmp`,J2())}function t3(X){return jX.find((Z)=>Z.packageName===X)??null}function L0(X,Z,W){return{adapterId:X.adapterId,packageName:X.packageName,version:X.version,status:Z,...W?{error:W}:{}}}function p3(X,Z){return Z?.packageName===X.packageName&&Z.version===X.version}function e3(X){try{return Date.now()-UZ(X).mtimeMs>BZ}catch{return!1}}function qZ(X){let Z=KX(X);if(!r3(Z))return!1;if(e3(Z))return o3(Z,{force:!0}),!1;return!0}function PZ(X){let Z=KX(X);if(s3(u0.dirname(Z),{recursive:!0}),e3(Z))o3(Z,{force:!0});try{let W=jZ(Z,"wx");return VZ(W),!0}catch{return!1}}function bZ(X){FZ(KX(X))}function LX(X){let Z=n3().bridges?.[X.adapterId];if(p3(X,Z)&&Z.status==="ready")return L0(X,"ready");if(Q2.has(X.adapterId)||qZ(X))return L0(X,"installing");if(p3(X,Z)&&Z.status==="failed")return L0(X,"failed",Z.error);return L0(X,"missing")}function R1(X,Z){X?.onStatusChange?.(Z)}function xZ(X,Z){let W=LX(X);if(W.status==="ready")return R1(Z,W),W;if(W.status==="installing"){let U=Q2.get(X.adapterId);if(U&&Z?.onStatusChange)U.then((w)=>R1(Z,w));return R1(Z,W),W}if(!PZ(X))return L0(X,"installing");let Q=L0(X,"installing");VX(X,Q),R1(Z,Q);let Y=()=>{},z=new Promise((U)=>{Y=U});Q2.set(X.adapterId,z);let j=!1,F=(U)=>{if(j)return;j=!0;try{bZ(X)}catch{}VX(X,U),R1(Z,U),Q2.delete(X.adapterId),Y(U)},L;try{let U=UX();L=zZ(U,["-y",FX(X),...X.warmupArgs],{stdio:"ignore",windowsHide:!0,...W2(U)})}catch(U){let w=L0(X,"failed",U instanceof Error?U.message:String(U));return F(w),w}return L.on("error",(U)=>{F(L0(X,"failed",U.message))}),L.on("close",(U)=>{if(U===0){F(L0(X,"ready"));return}F(L0(X,"failed",`npx warmup exited ${U??"null"}`))}),L.unref(),Q}function W1(X){let Z=t3(X);return Z?LX(Z):null}async function X6(X){let Z=[];for(let W of jX){if(!await o(W.runtimeBinary)){Z.push(L0(W,"not_needed"));continue}Z.push(xZ(W,X))}return Z.filter((W)=>W.status!=="not_needed")}function Y2(X){let Z=t3(X);if(!Z)return null;if(LX(Z).status!=="ready")return null;return{command:UX(),args:["-y",FX(Z)],env:{}}}function z2(X,Z){if(X.command!==UX())return!1;let W=jX.find((Q)=>X.args.includes(FX(Q)));if(!W)return!1;return VX(W,L0(W,"failed",Z)),!0}var Z6="claude",BX="@agentclientprotocol/claude-agent-acp",W6=["claude-agent-acp","claude-code-acp"],Q6="Install Claude Code from https://github.com/anthropics/claude-code",J6={id:"claude-code",displayName:"Claude Code",kind:"registered",supportsImages:!0,resolveSpawnConfig:async()=>{if(!await o(Z6))throw new u(`Claude Code CLI not found. ${Q6}`);let Z=Y2(BX);if(Z)return{command:Z.command,args:Z.args,env:U0(Z.env)};let W=W1(BX),Q=W?.status==="installing";for(let z of W6){let j=await o(z);if(j&&!Q&&W?.status!=="failed")return{command:j,args:[],env:U0()}}let Y=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 u(Y)},checkReadiness:async()=>{if(!await o(Z6))return{status:"not_installed",detail:Q6};let Z=W1(BX);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 W6)if(await o(W))return{status:"ready"};return{status:"not_running",detail:"Installing Claude Code ACP bridge..."}},authHint:"Run `claude login` (or set ANTHROPIC_API_KEY)."};var Y6="codex",wX="@agentclientprotocol/codex-acp",z6="codex-acp",V6="Install Codex CLI from https://developers.openai.com/codex/cli",j6={id:"codex",displayName:"Codex",kind:"registered",resolveSpawnConfig:async()=>{if(!await o(Y6))throw new u(`Codex CLI not found. ${V6}`);let Z=Y2(wX);if(Z)return{command:Z.command,args:Z.args,env:U0(Z.env)};let W=W1(wX),Q=W?.status==="installing",Y=await o(z6);if(Y&&!Q&&W?.status!=="failed")return{command:Y,args:[],env:U0()};let z=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 u(z)},checkReadiness:async()=>{if(!await o(Y6))return{status:"not_installed",detail:V6};let Z=W1(wX);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 o(z6))return{status:"ready"};return{status:"not_running",detail:"Installing Codex ACP bridge..."}},authHint:"Run `codex login` (or set OPENAI_API_KEY)."};var H6="copilot",K6="copilot-acp",U6="npm i -g @github/copilot",F6={id:"copilot",displayName:"GitHub Copilot",kind:"registered",resolveSpawnConfig:async()=>{let X=await o(H6);if(X)return{command:X,args:["--acp"],env:U0()};let Z=await o(K6);if(Z)return{command:Z,args:[],env:U0()};throw new u(`Copilot not installed. Run: ${U6}`)},checkReadiness:async()=>{if(await o(H6))return{status:"ready"};if(await o(K6))return{status:"ready"};return{status:"not_installed",detail:U6}},authHint:"Run `gh auth login` (or `copilot login`)."};import OZ from"node:fs/promises";function RZ(X){return X.startsWith("/")||/^[a-zA-Z]:[\\/]/.test(X)}async function L6(X){if(RZ(X))try{return await OZ.access(X),!0}catch{return!1}return await o(X)!==null}var B6={id:"custom",displayName:"Custom ACP",kind:"custom",resolveSpawnConfig:async(X)=>{if(X.kind!=="custom")throw new u("customAdapter received non-custom entry");if(!await L6(X.command))throw new u(`custom: command "${X.command}" not found`);return{command:X.command,args:X.args,env:U0(X.env)}},checkReadiness:async(X)=>{if(X.kind!=="custom")return{status:"unknown"};return await L6(X.command)?{status:"ready"}:{status:"not_installed"}}};var w6="opencode",q6="Install OpenCode from https://opencode.ai",P6={id:"opencode",displayName:"OpenCode",kind:"registered",resolveSpawnConfig:async()=>{let X=await o(w6);if(!X)throw new u(`OpenCode not installed. ${q6}`);return{command:X,args:["acp"],env:U0()}},checkReadiness:async()=>{if(!await o(w6))return{status:"not_installed",detail:q6};return{status:"ready"}},authHint:"Run `opencode auth login <provider>` (or set the provider's API-key env var)."};var b6={"claude-code":J6,opencode:P6,codex:j6,copilot:F6};function O0(X){if(X.kind==="custom")return B6;let Z=b6[X.adapterId];if(!Z)throw Error(`Unknown registered adapter: ${X.adapterId}`);return Z}function Q1(){return Object.values(b6)}var qX=new Map,V2=new Map,vZ=30000;function j2(X,Z){let W=qX.get(X);if(W&&W.expiresAt>Date.now())return Promise.resolve(W.value);let Q=V2.get(X);if(Q)return Q;let Y=Z().then((z)=>{return qX.set(X,{value:z,expiresAt:Date.now()+vZ}),z}).finally(()=>{V2.delete(X)});return V2.set(X,Y),Y}async function x6(X){let Z=await Promise.all(Q1().map((z)=>j2(z.id,async()=>({adapterId:z.id,...await z.checkReadiness({id:"__probe__",kind:"registered",adapterId:z.id,displayName:z.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null})})))),Q=(await F0(X)).runtimes.filter((z)=>z.kind==="custom"),Y=await Promise.all(Q.map((z)=>j2(`custom:${z.id}`,async()=>({adapterId:z.id,...await O0(z).checkReadiness(z)}))));return[...Z,...Y]}async function O6(X,Z){let W=Q1().find((z)=>z.id===X);if(W)return j2(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 Y=(await F0(Z)).runtimes.find((z)=>z.id===X);if(!Y||Y.kind!=="custom")return null;return j2(`custom:${Y.id}`,async()=>({adapterId:Y.id,...await O0(Y).checkReadiness(Y)}))}function R6(){qX.clear(),V2.clear()}import{createHash as D4,randomBytes as ZW,randomUUID as y4}from"node:crypto";import*as a0 from"css-tree";var CZ=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]),p="�",V;(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"})(V||(V={}));var V0={DASH_DASH:"--",CDATA_START:"[CDATA[",DOCTYPE:"doctype",SCRIPT:"script",PUBLIC:"public",SYSTEM:"system"};function H2(X){return X>=55296&&X<=57343}function v6(X){return X>=56320&&X<=57343}function C6(X,Z){return(X-55296)*1024+9216+Z}function K2(X){return X!==32&&X!==10&&X!==13&&X!==9&&X!==12&&X>=1&&X<=31||X>=127&&X<=159}function U2(X){return X>=64976&&X<=65007||CZ.has(X)}var q;(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"})(q||(q={}));var yZ=65536;class PX{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=yZ,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:Q,offset:Y}=this,z=Q+Z,j=Y+Z;return{code:X,startLine:W,endLine:W,startCol:z,endCol:z,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(v6(Z))return this.pos++,this._addGap(),C6(X,Z)}else if(!this.lastChunkWritten)return this.endOfChunkHit=!0,V.EOF;return this._err(q.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,V.EOF;let W=this.html.charCodeAt(Z);return W===V.CARRIAGE_RETURN?V.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,V.EOF;let X=this.html.charCodeAt(this.pos);if(X===V.CARRIAGE_RETURN)return this.isEol=!0,this.skipNextNewLine=!0,V.LINE_FEED;if(X===V.LINE_FEED){if(this.isEol=!0,this.skipNextNewLine)return this.line--,this.skipNextNewLine=!1,this._addGap(),this.advance()}if(this.skipNextNewLine=!1,H2(X))X=this._processSurrogate(X);if(!(this.handler.onParseError===null||X>31&&X<127||X===V.LINE_FEED||X===V.CARRIAGE_RETURN||X>159&&X<64976))this._checkForProblematicCharacters(X);return X}_checkForProblematicCharacters(X){if(K2(X))this._err(q.controlCharacterInInputStream);else if(U2(X))this._err(q.noncharacterInInputStream)}retreat(X){this.pos-=X;while(this.pos<this.lastGapPos)this.lastGapPos=this.gapStack.pop(),this.pos--;this.isEol=!1}}var c;(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"})(c||(c={}));function F2(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 MZ=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 f6(X){if(X>=55296&&X<=57343||X>1114111)return 65533;return MZ.get(X)??X}function y6(X){let Z=atob(X),W=Z.length&-2,Q=new Uint16Array(W/2);for(let Y=0,z=0;Y<W;Y+=2){let j=Z.charCodeAt(Y),F=Z.charCodeAt(Y+1);Q[z++]=j|F<<8}return Q}var bX=y6("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 Q0;(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"})(Q0||(Q0={}));var s;(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"})(s||(s={}));var h6=32;function xX(X){return X>=s.ZERO&&X<=s.NINE}function NZ(X){return X>=s.UPPER_A&&X<=s.UPPER_F||X>=s.LOWER_A&&X<=s.LOWER_F}function DZ(X){return X>=s.UPPER_A&&X<=s.UPPER_Z||X>=s.LOWER_A&&X<=s.LOWER_Z||xX(X)}function $Z(X){return X===s.EQUALS||DZ(X)}var Z0;(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"})(Z0||(Z0={}));var R0;(function(X){X[X.Legacy=0]="Legacy",X[X.Strict=1]="Strict",X[X.Attribute=2]="Attribute"})(R0||(R0={}));class OX{decodeTree;emitCodePoint;errors;constructor(X,Z,W){this.decodeTree=X,this.emitCodePoint=Z,this.errors=W}state=Z0.EntityStart;consumed=1;result=0;treeIndex=0;excess=1;decodeMode=R0.Strict;runConsumed=0;startEntity(X){this.decodeMode=X,this.state=Z0.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(X,Z){switch(this.state){case Z0.EntityStart:{if(X.charCodeAt(Z)===s.NUM)return this.state=Z0.NumericStart,this.consumed+=1,this.stateNumericStart(X,Z+1);return this.state=Z0.NamedEntity,this.stateNamedEntity(X,Z)}case Z0.NumericStart:return this.stateNumericStart(X,Z);case Z0.NumericDecimal:return this.stateNumericDecimal(X,Z);case Z0.NumericHex:return this.stateNumericHex(X,Z);case Z0.NamedEntity:return this.stateNamedEntity(X,Z)}}stateNumericStart(X,Z){if(Z>=X.length)return-1;if((X.charCodeAt(Z)|h6)===s.LOWER_X)return this.state=Z0.NumericHex,this.consumed+=1,this.stateNumericHex(X,Z+1);return this.state=Z0.NumericDecimal,this.stateNumericDecimal(X,Z)}stateNumericHex(X,Z){while(Z<X.length){let W=X.charCodeAt(Z);if(xX(W)||NZ(W)){let Q=W<=s.NINE?W-s.ZERO:(W|h6)-s.LOWER_A+10;this.result=this.result*16+Q,this.consumed++,Z++}else return this.emitNumericEntity(W,3)}return-1}stateNumericDecimal(X,Z){while(Z<X.length){let W=X.charCodeAt(Z);if(xX(W))this.result=this.result*10+(W-s.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===s.SEMI)this.consumed+=1;else if(this.decodeMode===R0.Strict)return 0;if(this.emitCodePoint(f6(this.result),this.consumed),this.errors){if(X!==s.SEMI)this.errors.missingSemicolonAfterCharacterReference();this.errors.validateNumericCharacterReference(this.result)}return this.consumed}stateNamedEntity(X,Z){let{decodeTree:W}=this,Q=W[this.treeIndex],Y=(Q&Q0.VALUE_LENGTH)>>14;while(Z<X.length){if(Y===0&&(Q&Q0.FLAG13)!==0){let j=(Q&Q0.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let F=Q&Q0.JUMP_TABLE;if(X.charCodeAt(Z)!==F)return this.result===0?0:this.emitNotTerminatedNamedEntity();Z++,this.excess++,this.runConsumed++}while(this.runConsumed<j){if(Z>=X.length)return-1;let F=this.runConsumed-1,L=W[this.treeIndex+1+(F>>1)],U=F%2===0?L&255:L>>8&255;if(X.charCodeAt(Z)!==U)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();Z++,this.excess++,this.runConsumed++}this.runConsumed=0,this.treeIndex+=1+(j>>1),Q=W[this.treeIndex],Y=(Q&Q0.VALUE_LENGTH)>>14}if(Z>=X.length)break;let z=X.charCodeAt(Z);if(z===s.SEMI&&Y!==0&&(Q&Q0.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,Y,this.consumed+this.excess);if(this.treeIndex=GZ(W,Q,this.treeIndex+Math.max(1,Y),z),this.treeIndex<0)return this.result===0||this.decodeMode===R0.Attribute&&(Y===0||$Z(z))?0:this.emitNotTerminatedNamedEntity();if(Q=W[this.treeIndex],Y=(Q&Q0.VALUE_LENGTH)>>14,Y!==0){if(z===s.SEMI)return this.emitNamedEntityData(this.treeIndex,Y,this.consumed+this.excess);if(this.decodeMode!==R0.Strict&&(Q&Q0.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]&Q0.VALUE_LENGTH)>>14;return this.emitNamedEntityData(X,W,this.consumed),this.errors?.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(X,Z,W){let{decodeTree:Q}=this;if(this.emitCodePoint(Z===1?Q[X]&~(Q0.VALUE_LENGTH|Q0.FLAG13):Q[X+1],W),Z===3)this.emitCodePoint(Q[X+2],W);return W}end(){switch(this.state){case Z0.NamedEntity:return this.result!==0&&(this.decodeMode!==R0.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case Z0.NumericDecimal:return this.emitNumericEntity(0,2);case Z0.NumericHex:return this.emitNumericEntity(0,3);case Z0.NumericStart:return this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case Z0.EntityStart:return 0}}}function GZ(X,Z,W,Q){let Y=(Z&Q0.BRANCH_LENGTH)>>7,z=Z&Q0.JUMP_TABLE;if(Y===0)return z!==0&&Q===z?W:-1;if(z){let U=Q-z;return U<0||U>=Y?-1:X[W+U]-1}let j=Y+1>>1,F=0,L=Y-1;while(F<=L){let U=F+L>>>1,w=U>>1,C=X[W+w]>>(U&1)*8&255;if(C<Q)F=U+1;else if(C>Q)L=U-1;else return X[W+j+U]}return-1}var R;(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/"})(R||(R={}));var M0;(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"})(M0||(M0={}));var j0;(function(X){X.NO_QUIRKS="no-quirks",X.QUIRKS="quirks",X.LIMITED_QUIRKS="limited-quirks"})(j0||(j0={}));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 J;(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"})(J||(J={}));var EZ=new Map([[B.A,J.A],[B.ADDRESS,J.ADDRESS],[B.ANNOTATION_XML,J.ANNOTATION_XML],[B.APPLET,J.APPLET],[B.AREA,J.AREA],[B.ARTICLE,J.ARTICLE],[B.ASIDE,J.ASIDE],[B.B,J.B],[B.BASE,J.BASE],[B.BASEFONT,J.BASEFONT],[B.BGSOUND,J.BGSOUND],[B.BIG,J.BIG],[B.BLOCKQUOTE,J.BLOCKQUOTE],[B.BODY,J.BODY],[B.BR,J.BR],[B.BUTTON,J.BUTTON],[B.CAPTION,J.CAPTION],[B.CENTER,J.CENTER],[B.CODE,J.CODE],[B.COL,J.COL],[B.COLGROUP,J.COLGROUP],[B.DD,J.DD],[B.DESC,J.DESC],[B.DETAILS,J.DETAILS],[B.DIALOG,J.DIALOG],[B.DIR,J.DIR],[B.DIV,J.DIV],[B.DL,J.DL],[B.DT,J.DT],[B.EM,J.EM],[B.EMBED,J.EMBED],[B.FIELDSET,J.FIELDSET],[B.FIGCAPTION,J.FIGCAPTION],[B.FIGURE,J.FIGURE],[B.FONT,J.FONT],[B.FOOTER,J.FOOTER],[B.FOREIGN_OBJECT,J.FOREIGN_OBJECT],[B.FORM,J.FORM],[B.FRAME,J.FRAME],[B.FRAMESET,J.FRAMESET],[B.H1,J.H1],[B.H2,J.H2],[B.H3,J.H3],[B.H4,J.H4],[B.H5,J.H5],[B.H6,J.H6],[B.HEAD,J.HEAD],[B.HEADER,J.HEADER],[B.HGROUP,J.HGROUP],[B.HR,J.HR],[B.HTML,J.HTML],[B.I,J.I],[B.IMG,J.IMG],[B.IMAGE,J.IMAGE],[B.INPUT,J.INPUT],[B.IFRAME,J.IFRAME],[B.KEYGEN,J.KEYGEN],[B.LABEL,J.LABEL],[B.LI,J.LI],[B.LINK,J.LINK],[B.LISTING,J.LISTING],[B.MAIN,J.MAIN],[B.MALIGNMARK,J.MALIGNMARK],[B.MARQUEE,J.MARQUEE],[B.MATH,J.MATH],[B.MENU,J.MENU],[B.META,J.META],[B.MGLYPH,J.MGLYPH],[B.MI,J.MI],[B.MO,J.MO],[B.MN,J.MN],[B.MS,J.MS],[B.MTEXT,J.MTEXT],[B.NAV,J.NAV],[B.NOBR,J.NOBR],[B.NOFRAMES,J.NOFRAMES],[B.NOEMBED,J.NOEMBED],[B.NOSCRIPT,J.NOSCRIPT],[B.OBJECT,J.OBJECT],[B.OL,J.OL],[B.OPTGROUP,J.OPTGROUP],[B.OPTION,J.OPTION],[B.P,J.P],[B.PARAM,J.PARAM],[B.PLAINTEXT,J.PLAINTEXT],[B.PRE,J.PRE],[B.RB,J.RB],[B.RP,J.RP],[B.RT,J.RT],[B.RTC,J.RTC],[B.RUBY,J.RUBY],[B.S,J.S],[B.SCRIPT,J.SCRIPT],[B.SEARCH,J.SEARCH],[B.SECTION,J.SECTION],[B.SELECT,J.SELECT],[B.SOURCE,J.SOURCE],[B.SMALL,J.SMALL],[B.SPAN,J.SPAN],[B.STRIKE,J.STRIKE],[B.STRONG,J.STRONG],[B.STYLE,J.STYLE],[B.SUB,J.SUB],[B.SUMMARY,J.SUMMARY],[B.SUP,J.SUP],[B.TABLE,J.TABLE],[B.TBODY,J.TBODY],[B.TEMPLATE,J.TEMPLATE],[B.TEXTAREA,J.TEXTAREA],[B.TFOOT,J.TFOOT],[B.TD,J.TD],[B.TH,J.TH],[B.THEAD,J.THEAD],[B.TITLE,J.TITLE],[B.TR,J.TR],[B.TRACK,J.TRACK],[B.TT,J.TT],[B.U,J.U],[B.UL,J.UL],[B.SVG,J.SVG],[B.VAR,J.VAR],[B.WBR,J.WBR],[B.XMP,J.XMP]]);function c0(X){var Z;return(Z=EZ.get(X))!==null&&Z!==void 0?Z:J.UNKNOWN}var f=J,M6={[R.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]),[R.MATHML]:new Set([f.MI,f.MO,f.MN,f.MS,f.MTEXT,f.ANNOTATION_XML]),[R.SVG]:new Set([f.TITLE,f.FOREIGN_OBJECT,f.DESC]),[R.XLINK]:new Set,[R.XML]:new Set,[R.XMLNS]:new Set},v1=new Set([f.H1,f.H2,f.H3,f.H4,f.H5,f.H6]),gZ=new Set([B.STYLE,B.SCRIPT,B.XMP,B.IFRAME,B.NOEMBED,B.NOFRAMES,B.PLAINTEXT]);function N6(X,Z){return gZ.has(X)||Z&&X===B.NOSCRIPT}var H;(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"})(H||(H={}));var J0={DATA:H.DATA,RCDATA:H.RCDATA,RAWTEXT:H.RAWTEXT,SCRIPT_DATA:H.SCRIPT_DATA,PLAINTEXT:H.PLAINTEXT,CDATA_SECTION:H.CDATA_SECTION};function _Z(X){return X>=V.DIGIT_0&&X<=V.DIGIT_9}function C1(X){return X>=V.LATIN_CAPITAL_A&&X<=V.LATIN_CAPITAL_Z}function kZ(X){return X>=V.LATIN_SMALL_A&&X<=V.LATIN_SMALL_Z}function G0(X){return kZ(X)||C1(X)}function D6(X){return G0(X)||_Z(X)}function L2(X){return X+32}function G6(X){return X===V.SPACE||X===V.LINE_FEED||X===V.TABULATION||X===V.FORM_FEED}function $6(X){return G6(X)||X===V.SOLIDUS||X===V.GREATER_THAN_SIGN}function SZ(X){if(X===V.NULL)return q.nullCharacterReference;else if(X>1114111)return q.characterReferenceOutsideUnicodeRange;else if(H2(X))return q.surrogateCharacterReference;else if(U2(X))return q.noncharacterCharacterReference;else if(K2(X)||X===V.CARRIAGE_RETURN)return q.controlCharacterReference;return null}class B2{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=H.DATA,this.returnState=H.DATA,this.entityStartPos=0,this.consumedAfterSnapshot=-1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr={name:"",value:""},this.preprocessor=new PX(Z),this.currentLocation=this.getCurrentLocation(-1),this.entityDecoder=new OX(bX,(W,Q)=>{this.preprocessor.pos=this.entityStartPos+Q-1,this._flushCodePointConsumedAsCharacterReference(W)},Z.onParseError?{missingSemicolonAfterCharacterReference:()=>{this._err(q.missingSemicolonAfterCharacterReference,1)},absenceOfDigitsInNumericCharacterReference:(W)=>{this._err(q.absenceOfDigitsInNumericCharacterReference,this.entityStartPos-this.preprocessor.pos+W)},validateNumericCharacterReference:(W)=>{let Q=SZ(W);if(Q)this._err(Q,1)}}:void 0)}_err(X,Z=0){var W,Q;(Q=(W=this.handler).onParseError)===null||Q===void 0||Q.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:c.START_TAG,tagName:"",tagID:J.UNKNOWN,selfClosing:!1,ackSelfClosing:!1,attrs:[],location:this.getCurrentLocation(1)}}_createEndTagToken(){this.currentToken={type:c.END_TAG,tagName:"",tagID:J.UNKNOWN,selfClosing:!1,ackSelfClosing:!1,attrs:[],location:this.getCurrentLocation(2)}}_createCommentToken(X){this.currentToken={type:c.COMMENT,data:"",location:this.getCurrentLocation(X)}}_createDoctypeToken(X){this.currentToken={type:c.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(F2(W,this.currentAttr.name)===null){if(W.attrs.push(this.currentAttr),W.location&&this.currentLocation){let Q=(X=(Z=W.location).attrs)!==null&&X!==void 0?X:Z.attrs=Object.create(null);Q[this.currentAttr.name]=this.currentLocation,this._leaveAttrValue()}}else this._err(q.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=c0(X.tagName),X.type===c.START_TAG)this.lastStartTagName=X.tagName,this.handler.onStartTag(X);else{if(X.attrs.length>0)this._err(q.endTagWithAttributes);if(X.selfClosing)this._err(q.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 c.CHARACTER:{this.handler.onCharacter(this.currentCharacterToken);break}case c.NULL_CHARACTER:{this.handler.onNullCharacter(this.currentCharacterToken);break}case c.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:c.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=G6(X)?c.WHITESPACE_CHARACTER:X===V.NULL?c.NULL_CHARACTER:c.CHARACTER;this._appendCharToCurrentCharacterToken(Z,X<65536?String.fromCharCode(X):String.fromCodePoint(X))}_emitChars(X){this._appendCharToCurrentCharacterToken(c.CHARACTER,X)}_startCharacterReference(){this.returnState=this.state,this.state=H.CHARACTER_REFERENCE,this.entityStartPos=this.preprocessor.pos,this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute()?R0.Attribute:R0.Legacy)}_isCharacterReferenceInAttribute(){return this.returnState===H.ATTRIBUTE_VALUE_DOUBLE_QUOTED||this.returnState===H.ATTRIBUTE_VALUE_SINGLE_QUOTED||this.returnState===H.ATTRIBUTE_VALUE_UNQUOTED}_flushCodePointConsumedAsCharacterReference(X){if(this._isCharacterReferenceInAttribute())this.currentAttr.value+=String.fromCodePoint(X);else this._emitCodePoint(X)}_callState(X){switch(this.state){case H.DATA:{this._stateData(X);break}case H.RCDATA:{this._stateRcdata(X);break}case H.RAWTEXT:{this._stateRawtext(X);break}case H.SCRIPT_DATA:{this._stateScriptData(X);break}case H.PLAINTEXT:{this._statePlaintext(X);break}case H.TAG_OPEN:{this._stateTagOpen(X);break}case H.END_TAG_OPEN:{this._stateEndTagOpen(X);break}case H.TAG_NAME:{this._stateTagName(X);break}case H.RCDATA_LESS_THAN_SIGN:{this._stateRcdataLessThanSign(X);break}case H.RCDATA_END_TAG_OPEN:{this._stateRcdataEndTagOpen(X);break}case H.RCDATA_END_TAG_NAME:{this._stateRcdataEndTagName(X);break}case H.RAWTEXT_LESS_THAN_SIGN:{this._stateRawtextLessThanSign(X);break}case H.RAWTEXT_END_TAG_OPEN:{this._stateRawtextEndTagOpen(X);break}case H.RAWTEXT_END_TAG_NAME:{this._stateRawtextEndTagName(X);break}case H.SCRIPT_DATA_LESS_THAN_SIGN:{this._stateScriptDataLessThanSign(X);break}case H.SCRIPT_DATA_END_TAG_OPEN:{this._stateScriptDataEndTagOpen(X);break}case H.SCRIPT_DATA_END_TAG_NAME:{this._stateScriptDataEndTagName(X);break}case H.SCRIPT_DATA_ESCAPE_START:{this._stateScriptDataEscapeStart(X);break}case H.SCRIPT_DATA_ESCAPE_START_DASH:{this._stateScriptDataEscapeStartDash(X);break}case H.SCRIPT_DATA_ESCAPED:{this._stateScriptDataEscaped(X);break}case H.SCRIPT_DATA_ESCAPED_DASH:{this._stateScriptDataEscapedDash(X);break}case H.SCRIPT_DATA_ESCAPED_DASH_DASH:{this._stateScriptDataEscapedDashDash(X);break}case H.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataEscapedLessThanSign(X);break}case H.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:{this._stateScriptDataEscapedEndTagOpen(X);break}case H.SCRIPT_DATA_ESCAPED_END_TAG_NAME:{this._stateScriptDataEscapedEndTagName(X);break}case H.SCRIPT_DATA_DOUBLE_ESCAPE_START:{this._stateScriptDataDoubleEscapeStart(X);break}case H.SCRIPT_DATA_DOUBLE_ESCAPED:{this._stateScriptDataDoubleEscaped(X);break}case H.SCRIPT_DATA_DOUBLE_ESCAPED_DASH:{this._stateScriptDataDoubleEscapedDash(X);break}case H.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH:{this._stateScriptDataDoubleEscapedDashDash(X);break}case H.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataDoubleEscapedLessThanSign(X);break}case H.SCRIPT_DATA_DOUBLE_ESCAPE_END:{this._stateScriptDataDoubleEscapeEnd(X);break}case H.BEFORE_ATTRIBUTE_NAME:{this._stateBeforeAttributeName(X);break}case H.ATTRIBUTE_NAME:{this._stateAttributeName(X);break}case H.AFTER_ATTRIBUTE_NAME:{this._stateAfterAttributeName(X);break}case H.BEFORE_ATTRIBUTE_VALUE:{this._stateBeforeAttributeValue(X);break}case H.ATTRIBUTE_VALUE_DOUBLE_QUOTED:{this._stateAttributeValueDoubleQuoted(X);break}case H.ATTRIBUTE_VALUE_SINGLE_QUOTED:{this._stateAttributeValueSingleQuoted(X);break}case H.ATTRIBUTE_VALUE_UNQUOTED:{this._stateAttributeValueUnquoted(X);break}case H.AFTER_ATTRIBUTE_VALUE_QUOTED:{this._stateAfterAttributeValueQuoted(X);break}case H.SELF_CLOSING_START_TAG:{this._stateSelfClosingStartTag(X);break}case H.BOGUS_COMMENT:{this._stateBogusComment(X);break}case H.MARKUP_DECLARATION_OPEN:{this._stateMarkupDeclarationOpen(X);break}case H.COMMENT_START:{this._stateCommentStart(X);break}case H.COMMENT_START_DASH:{this._stateCommentStartDash(X);break}case H.COMMENT:{this._stateComment(X);break}case H.COMMENT_LESS_THAN_SIGN:{this._stateCommentLessThanSign(X);break}case H.COMMENT_LESS_THAN_SIGN_BANG:{this._stateCommentLessThanSignBang(X);break}case H.COMMENT_LESS_THAN_SIGN_BANG_DASH:{this._stateCommentLessThanSignBangDash(X);break}case H.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH:{this._stateCommentLessThanSignBangDashDash(X);break}case H.COMMENT_END_DASH:{this._stateCommentEndDash(X);break}case H.COMMENT_END:{this._stateCommentEnd(X);break}case H.COMMENT_END_BANG:{this._stateCommentEndBang(X);break}case H.DOCTYPE:{this._stateDoctype(X);break}case H.BEFORE_DOCTYPE_NAME:{this._stateBeforeDoctypeName(X);break}case H.DOCTYPE_NAME:{this._stateDoctypeName(X);break}case H.AFTER_DOCTYPE_NAME:{this._stateAfterDoctypeName(X);break}case H.AFTER_DOCTYPE_PUBLIC_KEYWORD:{this._stateAfterDoctypePublicKeyword(X);break}case H.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateBeforeDoctypePublicIdentifier(X);break}case H.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypePublicIdentifierDoubleQuoted(X);break}case H.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypePublicIdentifierSingleQuoted(X);break}case H.AFTER_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateAfterDoctypePublicIdentifier(X);break}case H.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS:{this._stateBetweenDoctypePublicAndSystemIdentifiers(X);break}case H.AFTER_DOCTYPE_SYSTEM_KEYWORD:{this._stateAfterDoctypeSystemKeyword(X);break}case H.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateBeforeDoctypeSystemIdentifier(X);break}case H.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypeSystemIdentifierDoubleQuoted(X);break}case H.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypeSystemIdentifierSingleQuoted(X);break}case H.AFTER_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateAfterDoctypeSystemIdentifier(X);break}case H.BOGUS_DOCTYPE:{this._stateBogusDoctype(X);break}case H.CDATA_SECTION:{this._stateCdataSection(X);break}case H.CDATA_SECTION_BRACKET:{this._stateCdataSectionBracket(X);break}case H.CDATA_SECTION_END:{this._stateCdataSectionEnd(X);break}case H.CHARACTER_REFERENCE:{this._stateCharacterReference();break}case H.AMBIGUOUS_AMPERSAND:{this._stateAmbiguousAmpersand(X);break}default:throw Error("Unknown state")}}_stateData(X){switch(X){case V.LESS_THAN_SIGN:{this.state=H.TAG_OPEN;break}case V.AMPERSAND:{this._startCharacterReference();break}case V.NULL:{this._err(q.unexpectedNullCharacter),this._emitCodePoint(X);break}case V.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateRcdata(X){switch(X){case V.AMPERSAND:{this._startCharacterReference();break}case V.LESS_THAN_SIGN:{this.state=H.RCDATA_LESS_THAN_SIGN;break}case V.NULL:{this._err(q.unexpectedNullCharacter),this._emitChars(p);break}case V.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateRawtext(X){switch(X){case V.LESS_THAN_SIGN:{this.state=H.RAWTEXT_LESS_THAN_SIGN;break}case V.NULL:{this._err(q.unexpectedNullCharacter),this._emitChars(p);break}case V.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateScriptData(X){switch(X){case V.LESS_THAN_SIGN:{this.state=H.SCRIPT_DATA_LESS_THAN_SIGN;break}case V.NULL:{this._err(q.unexpectedNullCharacter),this._emitChars(p);break}case V.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_statePlaintext(X){switch(X){case V.NULL:{this._err(q.unexpectedNullCharacter),this._emitChars(p);break}case V.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateTagOpen(X){if(G0(X))this._createStartTagToken(),this.state=H.TAG_NAME,this._stateTagName(X);else switch(X){case V.EXCLAMATION_MARK:{this.state=H.MARKUP_DECLARATION_OPEN;break}case V.SOLIDUS:{this.state=H.END_TAG_OPEN;break}case V.QUESTION_MARK:{this._err(q.unexpectedQuestionMarkInsteadOfTagName),this._createCommentToken(1),this.state=H.BOGUS_COMMENT,this._stateBogusComment(X);break}case V.EOF:{this._err(q.eofBeforeTagName),this._emitChars("<"),this._emitEOFToken();break}default:this._err(q.invalidFirstCharacterOfTagName),this._emitChars("<"),this.state=H.DATA,this._stateData(X)}}_stateEndTagOpen(X){if(G0(X))this._createEndTagToken(),this.state=H.TAG_NAME,this._stateTagName(X);else switch(X){case V.GREATER_THAN_SIGN:{this._err(q.missingEndTagName),this.state=H.DATA;break}case V.EOF:{this._err(q.eofBeforeTagName),this._emitChars("</"),this._emitEOFToken();break}default:this._err(q.invalidFirstCharacterOfTagName),this._createCommentToken(2),this.state=H.BOGUS_COMMENT,this._stateBogusComment(X)}}_stateTagName(X){let Z=this.currentToken;switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:{this.state=H.BEFORE_ATTRIBUTE_NAME;break}case V.SOLIDUS:{this.state=H.SELF_CLOSING_START_TAG;break}case V.GREATER_THAN_SIGN:{this.state=H.DATA,this.emitCurrentTagToken();break}case V.NULL:{this._err(q.unexpectedNullCharacter),Z.tagName+=p;break}case V.EOF:{this._err(q.eofInTag),this._emitEOFToken();break}default:Z.tagName+=String.fromCodePoint(C1(X)?L2(X):X)}}_stateRcdataLessThanSign(X){if(X===V.SOLIDUS)this.state=H.RCDATA_END_TAG_OPEN;else this._emitChars("<"),this.state=H.RCDATA,this._stateRcdata(X)}_stateRcdataEndTagOpen(X){if(G0(X))this.state=H.RCDATA_END_TAG_NAME,this._stateRcdataEndTagName(X);else this._emitChars("</"),this.state=H.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 V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:return this._advanceBy(this.lastStartTagName.length),this.state=H.BEFORE_ATTRIBUTE_NAME,!1;case V.SOLIDUS:return this._advanceBy(this.lastStartTagName.length),this.state=H.SELF_CLOSING_START_TAG,!1;case V.GREATER_THAN_SIGN:return this._advanceBy(this.lastStartTagName.length),this.emitCurrentTagToken(),this.state=H.DATA,!1;default:return!this._ensureHibernation()}}_stateRcdataEndTagName(X){if(this.handleSpecialEndTag(X))this._emitChars("</"),this.state=H.RCDATA,this._stateRcdata(X)}_stateRawtextLessThanSign(X){if(X===V.SOLIDUS)this.state=H.RAWTEXT_END_TAG_OPEN;else this._emitChars("<"),this.state=H.RAWTEXT,this._stateRawtext(X)}_stateRawtextEndTagOpen(X){if(G0(X))this.state=H.RAWTEXT_END_TAG_NAME,this._stateRawtextEndTagName(X);else this._emitChars("</"),this.state=H.RAWTEXT,this._stateRawtext(X)}_stateRawtextEndTagName(X){if(this.handleSpecialEndTag(X))this._emitChars("</"),this.state=H.RAWTEXT,this._stateRawtext(X)}_stateScriptDataLessThanSign(X){switch(X){case V.SOLIDUS:{this.state=H.SCRIPT_DATA_END_TAG_OPEN;break}case V.EXCLAMATION_MARK:{this.state=H.SCRIPT_DATA_ESCAPE_START,this._emitChars("<!");break}default:this._emitChars("<"),this.state=H.SCRIPT_DATA,this._stateScriptData(X)}}_stateScriptDataEndTagOpen(X){if(G0(X))this.state=H.SCRIPT_DATA_END_TAG_NAME,this._stateScriptDataEndTagName(X);else this._emitChars("</"),this.state=H.SCRIPT_DATA,this._stateScriptData(X)}_stateScriptDataEndTagName(X){if(this.handleSpecialEndTag(X))this._emitChars("</"),this.state=H.SCRIPT_DATA,this._stateScriptData(X)}_stateScriptDataEscapeStart(X){if(X===V.HYPHEN_MINUS)this.state=H.SCRIPT_DATA_ESCAPE_START_DASH,this._emitChars("-");else this.state=H.SCRIPT_DATA,this._stateScriptData(X)}_stateScriptDataEscapeStartDash(X){if(X===V.HYPHEN_MINUS)this.state=H.SCRIPT_DATA_ESCAPED_DASH_DASH,this._emitChars("-");else this.state=H.SCRIPT_DATA,this._stateScriptData(X)}_stateScriptDataEscaped(X){switch(X){case V.HYPHEN_MINUS:{this.state=H.SCRIPT_DATA_ESCAPED_DASH,this._emitChars("-");break}case V.LESS_THAN_SIGN:{this.state=H.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case V.NULL:{this._err(q.unexpectedNullCharacter),this._emitChars(p);break}case V.EOF:{this._err(q.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateScriptDataEscapedDash(X){switch(X){case V.HYPHEN_MINUS:{this.state=H.SCRIPT_DATA_ESCAPED_DASH_DASH,this._emitChars("-");break}case V.LESS_THAN_SIGN:{this.state=H.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case V.NULL:{this._err(q.unexpectedNullCharacter),this.state=H.SCRIPT_DATA_ESCAPED,this._emitChars(p);break}case V.EOF:{this._err(q.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=H.SCRIPT_DATA_ESCAPED,this._emitCodePoint(X)}}_stateScriptDataEscapedDashDash(X){switch(X){case V.HYPHEN_MINUS:{this._emitChars("-");break}case V.LESS_THAN_SIGN:{this.state=H.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case V.GREATER_THAN_SIGN:{this.state=H.SCRIPT_DATA,this._emitChars(">");break}case V.NULL:{this._err(q.unexpectedNullCharacter),this.state=H.SCRIPT_DATA_ESCAPED,this._emitChars(p);break}case V.EOF:{this._err(q.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=H.SCRIPT_DATA_ESCAPED,this._emitCodePoint(X)}}_stateScriptDataEscapedLessThanSign(X){if(X===V.SOLIDUS)this.state=H.SCRIPT_DATA_ESCAPED_END_TAG_OPEN;else if(G0(X))this._emitChars("<"),this.state=H.SCRIPT_DATA_DOUBLE_ESCAPE_START,this._stateScriptDataDoubleEscapeStart(X);else this._emitChars("<"),this.state=H.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(X)}_stateScriptDataEscapedEndTagOpen(X){if(G0(X))this.state=H.SCRIPT_DATA_ESCAPED_END_TAG_NAME,this._stateScriptDataEscapedEndTagName(X);else this._emitChars("</"),this.state=H.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(X)}_stateScriptDataEscapedEndTagName(X){if(this.handleSpecialEndTag(X))this._emitChars("</"),this.state=H.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(X)}_stateScriptDataDoubleEscapeStart(X){if(this.preprocessor.startsWith(V0.SCRIPT,!1)&&$6(this.preprocessor.peek(V0.SCRIPT.length))){this._emitCodePoint(X);for(let Z=0;Z<V0.SCRIPT.length;Z++)this._emitCodePoint(this._consume());this.state=H.SCRIPT_DATA_DOUBLE_ESCAPED}else if(!this._ensureHibernation())this.state=H.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(X)}_stateScriptDataDoubleEscaped(X){switch(X){case V.HYPHEN_MINUS:{this.state=H.SCRIPT_DATA_DOUBLE_ESCAPED_DASH,this._emitChars("-");break}case V.LESS_THAN_SIGN:{this.state=H.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case V.NULL:{this._err(q.unexpectedNullCharacter),this._emitChars(p);break}case V.EOF:{this._err(q.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateScriptDataDoubleEscapedDash(X){switch(X){case V.HYPHEN_MINUS:{this.state=H.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH,this._emitChars("-");break}case V.LESS_THAN_SIGN:{this.state=H.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case V.NULL:{this._err(q.unexpectedNullCharacter),this.state=H.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(p);break}case V.EOF:{this._err(q.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=H.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(X)}}_stateScriptDataDoubleEscapedDashDash(X){switch(X){case V.HYPHEN_MINUS:{this._emitChars("-");break}case V.LESS_THAN_SIGN:{this.state=H.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case V.GREATER_THAN_SIGN:{this.state=H.SCRIPT_DATA,this._emitChars(">");break}case V.NULL:{this._err(q.unexpectedNullCharacter),this.state=H.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(p);break}case V.EOF:{this._err(q.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=H.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(X)}}_stateScriptDataDoubleEscapedLessThanSign(X){if(X===V.SOLIDUS)this.state=H.SCRIPT_DATA_DOUBLE_ESCAPE_END,this._emitChars("/");else this.state=H.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(X)}_stateScriptDataDoubleEscapeEnd(X){if(this.preprocessor.startsWith(V0.SCRIPT,!1)&&$6(this.preprocessor.peek(V0.SCRIPT.length))){this._emitCodePoint(X);for(let Z=0;Z<V0.SCRIPT.length;Z++)this._emitCodePoint(this._consume());this.state=H.SCRIPT_DATA_ESCAPED}else if(!this._ensureHibernation())this.state=H.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(X)}_stateBeforeAttributeName(X){switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:break;case V.SOLIDUS:case V.GREATER_THAN_SIGN:case V.EOF:{this.state=H.AFTER_ATTRIBUTE_NAME,this._stateAfterAttributeName(X);break}case V.EQUALS_SIGN:{this._err(q.unexpectedEqualsSignBeforeAttributeName),this._createAttr("="),this.state=H.ATTRIBUTE_NAME;break}default:this._createAttr(""),this.state=H.ATTRIBUTE_NAME,this._stateAttributeName(X)}}_stateAttributeName(X){switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:case V.SOLIDUS:case V.GREATER_THAN_SIGN:case V.EOF:{this._leaveAttrName(),this.state=H.AFTER_ATTRIBUTE_NAME,this._stateAfterAttributeName(X);break}case V.EQUALS_SIGN:{this._leaveAttrName(),this.state=H.BEFORE_ATTRIBUTE_VALUE;break}case V.QUOTATION_MARK:case V.APOSTROPHE:case V.LESS_THAN_SIGN:{this._err(q.unexpectedCharacterInAttributeName),this.currentAttr.name+=String.fromCodePoint(X);break}case V.NULL:{this._err(q.unexpectedNullCharacter),this.currentAttr.name+=p;break}default:this.currentAttr.name+=String.fromCodePoint(C1(X)?L2(X):X)}}_stateAfterAttributeName(X){switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:break;case V.SOLIDUS:{this.state=H.SELF_CLOSING_START_TAG;break}case V.EQUALS_SIGN:{this.state=H.BEFORE_ATTRIBUTE_VALUE;break}case V.GREATER_THAN_SIGN:{this.state=H.DATA,this.emitCurrentTagToken();break}case V.EOF:{this._err(q.eofInTag),this._emitEOFToken();break}default:this._createAttr(""),this.state=H.ATTRIBUTE_NAME,this._stateAttributeName(X)}}_stateBeforeAttributeValue(X){switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:break;case V.QUOTATION_MARK:{this.state=H.ATTRIBUTE_VALUE_DOUBLE_QUOTED;break}case V.APOSTROPHE:{this.state=H.ATTRIBUTE_VALUE_SINGLE_QUOTED;break}case V.GREATER_THAN_SIGN:{this._err(q.missingAttributeValue),this.state=H.DATA,this.emitCurrentTagToken();break}default:this.state=H.ATTRIBUTE_VALUE_UNQUOTED,this._stateAttributeValueUnquoted(X)}}_stateAttributeValueDoubleQuoted(X){switch(X){case V.QUOTATION_MARK:{this.state=H.AFTER_ATTRIBUTE_VALUE_QUOTED;break}case V.AMPERSAND:{this._startCharacterReference();break}case V.NULL:{this._err(q.unexpectedNullCharacter),this.currentAttr.value+=p;break}case V.EOF:{this._err(q.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(X)}}_stateAttributeValueSingleQuoted(X){switch(X){case V.APOSTROPHE:{this.state=H.AFTER_ATTRIBUTE_VALUE_QUOTED;break}case V.AMPERSAND:{this._startCharacterReference();break}case V.NULL:{this._err(q.unexpectedNullCharacter),this.currentAttr.value+=p;break}case V.EOF:{this._err(q.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(X)}}_stateAttributeValueUnquoted(X){switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:{this._leaveAttrValue(),this.state=H.BEFORE_ATTRIBUTE_NAME;break}case V.AMPERSAND:{this._startCharacterReference();break}case V.GREATER_THAN_SIGN:{this._leaveAttrValue(),this.state=H.DATA,this.emitCurrentTagToken();break}case V.NULL:{this._err(q.unexpectedNullCharacter),this.currentAttr.value+=p;break}case V.QUOTATION_MARK:case V.APOSTROPHE:case V.LESS_THAN_SIGN:case V.EQUALS_SIGN:case V.GRAVE_ACCENT:{this._err(q.unexpectedCharacterInUnquotedAttributeValue),this.currentAttr.value+=String.fromCodePoint(X);break}case V.EOF:{this._err(q.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(X)}}_stateAfterAttributeValueQuoted(X){switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:{this._leaveAttrValue(),this.state=H.BEFORE_ATTRIBUTE_NAME;break}case V.SOLIDUS:{this._leaveAttrValue(),this.state=H.SELF_CLOSING_START_TAG;break}case V.GREATER_THAN_SIGN:{this._leaveAttrValue(),this.state=H.DATA,this.emitCurrentTagToken();break}case V.EOF:{this._err(q.eofInTag),this._emitEOFToken();break}default:this._err(q.missingWhitespaceBetweenAttributes),this.state=H.BEFORE_ATTRIBUTE_NAME,this._stateBeforeAttributeName(X)}}_stateSelfClosingStartTag(X){switch(X){case V.GREATER_THAN_SIGN:{let Z=this.currentToken;Z.selfClosing=!0,this.state=H.DATA,this.emitCurrentTagToken();break}case V.EOF:{this._err(q.eofInTag),this._emitEOFToken();break}default:this._err(q.unexpectedSolidusInTag),this.state=H.BEFORE_ATTRIBUTE_NAME,this._stateBeforeAttributeName(X)}}_stateBogusComment(X){let Z=this.currentToken;switch(X){case V.GREATER_THAN_SIGN:{this.state=H.DATA,this.emitCurrentComment(Z);break}case V.EOF:{this.emitCurrentComment(Z),this._emitEOFToken();break}case V.NULL:{this._err(q.unexpectedNullCharacter),Z.data+=p;break}default:Z.data+=String.fromCodePoint(X)}}_stateMarkupDeclarationOpen(X){if(this._consumeSequenceIfMatch(V0.DASH_DASH,!0))this._createCommentToken(V0.DASH_DASH.length+1),this.state=H.COMMENT_START;else if(this._consumeSequenceIfMatch(V0.DOCTYPE,!1))this.currentLocation=this.getCurrentLocation(V0.DOCTYPE.length+1),this.state=H.DOCTYPE;else if(this._consumeSequenceIfMatch(V0.CDATA_START,!0))if(this.inForeignNode)this.state=H.CDATA_SECTION;else this._err(q.cdataInHtmlContent),this._createCommentToken(V0.CDATA_START.length+1),this.currentToken.data="[CDATA[",this.state=H.BOGUS_COMMENT;else if(!this._ensureHibernation())this._err(q.incorrectlyOpenedComment),this._createCommentToken(2),this.state=H.BOGUS_COMMENT,this._stateBogusComment(X)}_stateCommentStart(X){switch(X){case V.HYPHEN_MINUS:{this.state=H.COMMENT_START_DASH;break}case V.GREATER_THAN_SIGN:{this._err(q.abruptClosingOfEmptyComment),this.state=H.DATA;let Z=this.currentToken;this.emitCurrentComment(Z);break}default:this.state=H.COMMENT,this._stateComment(X)}}_stateCommentStartDash(X){let Z=this.currentToken;switch(X){case V.HYPHEN_MINUS:{this.state=H.COMMENT_END;break}case V.GREATER_THAN_SIGN:{this._err(q.abruptClosingOfEmptyComment),this.state=H.DATA,this.emitCurrentComment(Z);break}case V.EOF:{this._err(q.eofInComment),this.emitCurrentComment(Z),this._emitEOFToken();break}default:Z.data+="-",this.state=H.COMMENT,this._stateComment(X)}}_stateComment(X){let Z=this.currentToken;switch(X){case V.HYPHEN_MINUS:{this.state=H.COMMENT_END_DASH;break}case V.LESS_THAN_SIGN:{Z.data+="<",this.state=H.COMMENT_LESS_THAN_SIGN;break}case V.NULL:{this._err(q.unexpectedNullCharacter),Z.data+=p;break}case V.EOF:{this._err(q.eofInComment),this.emitCurrentComment(Z),this._emitEOFToken();break}default:Z.data+=String.fromCodePoint(X)}}_stateCommentLessThanSign(X){let Z=this.currentToken;switch(X){case V.EXCLAMATION_MARK:{Z.data+="!",this.state=H.COMMENT_LESS_THAN_SIGN_BANG;break}case V.LESS_THAN_SIGN:{Z.data+="<";break}default:this.state=H.COMMENT,this._stateComment(X)}}_stateCommentLessThanSignBang(X){if(X===V.HYPHEN_MINUS)this.state=H.COMMENT_LESS_THAN_SIGN_BANG_DASH;else this.state=H.COMMENT,this._stateComment(X)}_stateCommentLessThanSignBangDash(X){if(X===V.HYPHEN_MINUS)this.state=H.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH;else this.state=H.COMMENT_END_DASH,this._stateCommentEndDash(X)}_stateCommentLessThanSignBangDashDash(X){if(X!==V.GREATER_THAN_SIGN&&X!==V.EOF)this._err(q.nestedComment);this.state=H.COMMENT_END,this._stateCommentEnd(X)}_stateCommentEndDash(X){let Z=this.currentToken;switch(X){case V.HYPHEN_MINUS:{this.state=H.COMMENT_END;break}case V.EOF:{this._err(q.eofInComment),this.emitCurrentComment(Z),this._emitEOFToken();break}default:Z.data+="-",this.state=H.COMMENT,this._stateComment(X)}}_stateCommentEnd(X){let Z=this.currentToken;switch(X){case V.GREATER_THAN_SIGN:{this.state=H.DATA,this.emitCurrentComment(Z);break}case V.EXCLAMATION_MARK:{this.state=H.COMMENT_END_BANG;break}case V.HYPHEN_MINUS:{Z.data+="-";break}case V.EOF:{this._err(q.eofInComment),this.emitCurrentComment(Z),this._emitEOFToken();break}default:Z.data+="--",this.state=H.COMMENT,this._stateComment(X)}}_stateCommentEndBang(X){let Z=this.currentToken;switch(X){case V.HYPHEN_MINUS:{Z.data+="--!",this.state=H.COMMENT_END_DASH;break}case V.GREATER_THAN_SIGN:{this._err(q.incorrectlyClosedComment),this.state=H.DATA,this.emitCurrentComment(Z);break}case V.EOF:{this._err(q.eofInComment),this.emitCurrentComment(Z),this._emitEOFToken();break}default:Z.data+="--!",this.state=H.COMMENT,this._stateComment(X)}}_stateDoctype(X){switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:{this.state=H.BEFORE_DOCTYPE_NAME;break}case V.GREATER_THAN_SIGN:{this.state=H.BEFORE_DOCTYPE_NAME,this._stateBeforeDoctypeName(X);break}case V.EOF:{this._err(q.eofInDoctype),this._createDoctypeToken(null);let Z=this.currentToken;Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(q.missingWhitespaceBeforeDoctypeName),this.state=H.BEFORE_DOCTYPE_NAME,this._stateBeforeDoctypeName(X)}}_stateBeforeDoctypeName(X){if(C1(X))this._createDoctypeToken(String.fromCharCode(L2(X))),this.state=H.DOCTYPE_NAME;else switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:break;case V.NULL:{this._err(q.unexpectedNullCharacter),this._createDoctypeToken(p),this.state=H.DOCTYPE_NAME;break}case V.GREATER_THAN_SIGN:{this._err(q.missingDoctypeName),this._createDoctypeToken(null);let Z=this.currentToken;Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this.state=H.DATA;break}case V.EOF:{this._err(q.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=H.DOCTYPE_NAME}}_stateDoctypeName(X){let Z=this.currentToken;switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:{this.state=H.AFTER_DOCTYPE_NAME;break}case V.GREATER_THAN_SIGN:{this.state=H.DATA,this.emitCurrentDoctype(Z);break}case V.NULL:{this._err(q.unexpectedNullCharacter),Z.name+=p;break}case V.EOF:{this._err(q.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:Z.name+=String.fromCodePoint(C1(X)?L2(X):X)}}_stateAfterDoctypeName(X){let Z=this.currentToken;switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:break;case V.GREATER_THAN_SIGN:{this.state=H.DATA,this.emitCurrentDoctype(Z);break}case V.EOF:{this._err(q.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:if(this._consumeSequenceIfMatch(V0.PUBLIC,!1))this.state=H.AFTER_DOCTYPE_PUBLIC_KEYWORD;else if(this._consumeSequenceIfMatch(V0.SYSTEM,!1))this.state=H.AFTER_DOCTYPE_SYSTEM_KEYWORD;else if(!this._ensureHibernation())this._err(q.invalidCharacterSequenceAfterDoctypeName),Z.forceQuirks=!0,this.state=H.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateAfterDoctypePublicKeyword(X){let Z=this.currentToken;switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:{this.state=H.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;break}case V.QUOTATION_MARK:{this._err(q.missingWhitespaceAfterDoctypePublicKeyword),Z.publicId="",this.state=H.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;break}case V.APOSTROPHE:{this._err(q.missingWhitespaceAfterDoctypePublicKeyword),Z.publicId="",this.state=H.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;break}case V.GREATER_THAN_SIGN:{this._err(q.missingDoctypePublicIdentifier),Z.forceQuirks=!0,this.state=H.DATA,this.emitCurrentDoctype(Z);break}case V.EOF:{this._err(q.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(q.missingQuoteBeforeDoctypePublicIdentifier),Z.forceQuirks=!0,this.state=H.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateBeforeDoctypePublicIdentifier(X){let Z=this.currentToken;switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:break;case V.QUOTATION_MARK:{Z.publicId="",this.state=H.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;break}case V.APOSTROPHE:{Z.publicId="",this.state=H.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;break}case V.GREATER_THAN_SIGN:{this._err(q.missingDoctypePublicIdentifier),Z.forceQuirks=!0,this.state=H.DATA,this.emitCurrentDoctype(Z);break}case V.EOF:{this._err(q.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(q.missingQuoteBeforeDoctypePublicIdentifier),Z.forceQuirks=!0,this.state=H.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateDoctypePublicIdentifierDoubleQuoted(X){let Z=this.currentToken;switch(X){case V.QUOTATION_MARK:{this.state=H.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;break}case V.NULL:{this._err(q.unexpectedNullCharacter),Z.publicId+=p;break}case V.GREATER_THAN_SIGN:{this._err(q.abruptDoctypePublicIdentifier),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this.state=H.DATA;break}case V.EOF:{this._err(q.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 V.APOSTROPHE:{this.state=H.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;break}case V.NULL:{this._err(q.unexpectedNullCharacter),Z.publicId+=p;break}case V.GREATER_THAN_SIGN:{this._err(q.abruptDoctypePublicIdentifier),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this.state=H.DATA;break}case V.EOF:{this._err(q.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 V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:{this.state=H.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;break}case V.GREATER_THAN_SIGN:{this.state=H.DATA,this.emitCurrentDoctype(Z);break}case V.QUOTATION_MARK:{this._err(q.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),Z.systemId="",this.state=H.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case V.APOSTROPHE:{this._err(q.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),Z.systemId="",this.state=H.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case V.EOF:{this._err(q.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(q.missingQuoteBeforeDoctypeSystemIdentifier),Z.forceQuirks=!0,this.state=H.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateBetweenDoctypePublicAndSystemIdentifiers(X){let Z=this.currentToken;switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:break;case V.GREATER_THAN_SIGN:{this.emitCurrentDoctype(Z),this.state=H.DATA;break}case V.QUOTATION_MARK:{Z.systemId="",this.state=H.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case V.APOSTROPHE:{Z.systemId="",this.state=H.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case V.EOF:{this._err(q.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(q.missingQuoteBeforeDoctypeSystemIdentifier),Z.forceQuirks=!0,this.state=H.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateAfterDoctypeSystemKeyword(X){let Z=this.currentToken;switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:{this.state=H.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;break}case V.QUOTATION_MARK:{this._err(q.missingWhitespaceAfterDoctypeSystemKeyword),Z.systemId="",this.state=H.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case V.APOSTROPHE:{this._err(q.missingWhitespaceAfterDoctypeSystemKeyword),Z.systemId="",this.state=H.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case V.GREATER_THAN_SIGN:{this._err(q.missingDoctypeSystemIdentifier),Z.forceQuirks=!0,this.state=H.DATA,this.emitCurrentDoctype(Z);break}case V.EOF:{this._err(q.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(q.missingQuoteBeforeDoctypeSystemIdentifier),Z.forceQuirks=!0,this.state=H.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateBeforeDoctypeSystemIdentifier(X){let Z=this.currentToken;switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:break;case V.QUOTATION_MARK:{Z.systemId="",this.state=H.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case V.APOSTROPHE:{Z.systemId="",this.state=H.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case V.GREATER_THAN_SIGN:{this._err(q.missingDoctypeSystemIdentifier),Z.forceQuirks=!0,this.state=H.DATA,this.emitCurrentDoctype(Z);break}case V.EOF:{this._err(q.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(q.missingQuoteBeforeDoctypeSystemIdentifier),Z.forceQuirks=!0,this.state=H.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateDoctypeSystemIdentifierDoubleQuoted(X){let Z=this.currentToken;switch(X){case V.QUOTATION_MARK:{this.state=H.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;break}case V.NULL:{this._err(q.unexpectedNullCharacter),Z.systemId+=p;break}case V.GREATER_THAN_SIGN:{this._err(q.abruptDoctypeSystemIdentifier),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this.state=H.DATA;break}case V.EOF:{this._err(q.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 V.APOSTROPHE:{this.state=H.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;break}case V.NULL:{this._err(q.unexpectedNullCharacter),Z.systemId+=p;break}case V.GREATER_THAN_SIGN:{this._err(q.abruptDoctypeSystemIdentifier),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this.state=H.DATA;break}case V.EOF:{this._err(q.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 V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:break;case V.GREATER_THAN_SIGN:{this.emitCurrentDoctype(Z),this.state=H.DATA;break}case V.EOF:{this._err(q.eofInDoctype),Z.forceQuirks=!0,this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:this._err(q.unexpectedCharacterAfterDoctypeSystemIdentifier),this.state=H.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateBogusDoctype(X){let Z=this.currentToken;switch(X){case V.GREATER_THAN_SIGN:{this.emitCurrentDoctype(Z),this.state=H.DATA;break}case V.NULL:{this._err(q.unexpectedNullCharacter);break}case V.EOF:{this.emitCurrentDoctype(Z),this._emitEOFToken();break}default:}}_stateCdataSection(X){switch(X){case V.RIGHT_SQUARE_BRACKET:{this.state=H.CDATA_SECTION_BRACKET;break}case V.EOF:{this._err(q.eofInCdata),this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateCdataSectionBracket(X){if(X===V.RIGHT_SQUARE_BRACKET)this.state=H.CDATA_SECTION_END;else this._emitChars("]"),this.state=H.CDATA_SECTION,this._stateCdataSection(X)}_stateCdataSectionEnd(X){switch(X){case V.GREATER_THAN_SIGN:{this.state=H.DATA;break}case V.RIGHT_SQUARE_BRACKET:{this._emitChars("]");break}default:this._emitChars("]]"),this.state=H.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(V.AMPERSAND),this.state=!this._isCharacterReferenceInAttribute()&&D6(this.preprocessor.peek(1))?H.AMBIGUOUS_AMPERSAND:this.returnState;else this.state=this.returnState}_stateAmbiguousAmpersand(X){if(D6(X))this._flushCodePointConsumedAsCharacterReference(X);else{if(X===V.SEMICOLON)this._err(q.unknownNamedCharacterReference);this.state=this.returnState,this._callState(X)}}}var _6=new Set([J.DD,J.DT,J.LI,J.OPTGROUP,J.OPTION,J.P,J.RB,J.RP,J.RT,J.RTC]),E6=new Set([..._6,J.CAPTION,J.COLGROUP,J.TBODY,J.TD,J.TFOOT,J.TH,J.THEAD,J.TR]),w2=new Set([J.APPLET,J.CAPTION,J.HTML,J.MARQUEE,J.OBJECT,J.TABLE,J.TD,J.TEMPLATE,J.TH]),AZ=new Set([...w2,J.OL,J.UL]),IZ=new Set([...w2,J.BUTTON]),g6=new Set([J.ANNOTATION_XML,J.MI,J.MN,J.MO,J.MS,J.MTEXT]),m6=new Set([J.DESC,J.FOREIGN_OBJECT,J.TITLE]),TZ=new Set([J.TR,J.TEMPLATE,J.HTML]),lZ=new Set([J.TBODY,J.TFOOT,J.THEAD,J.TEMPLATE,J.HTML]),uZ=new Set([J.TABLE,J.TEMPLATE,J.HTML]),cZ=new Set([J.TD,J.TH]);class RX{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=J.UNKNOWN,this.current=X}_indexOf(X){return this.items.lastIndexOf(X,this.stackTop)}_isInTemplate(){return this.currentTagId===J.TEMPLATE&&this.treeAdapter.getNamespaceURI(this.current)===R.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 Q=this._indexOf(X)+1;if(this.items.splice(Q,0,Z),this.tagIDs.splice(Q,0,W),this.stackTop++,Q===this.stackTop)this._updateCurrentElement();if(this.current&&this.currentTagId!==void 0)this.handler.onItemPush(this.current,this.currentTagId,Q===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])!==R.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(v1,R.HTML)}popUntilTableCellPopped(){this.popUntilPopped(cZ,R.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(uZ,R.HTML)}clearBackToTableBodyContext(){this.clearBackTo(lZ,R.HTML)}clearBackToTableRowContext(){this.clearBackTo(TZ,R.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]===J.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]===J.HTML}hasInDynamicScope(X,Z){for(let W=this.stackTop;W>=0;W--){let Q=this.tagIDs[W];switch(this.treeAdapter.getNamespaceURI(this.items[W])){case R.HTML:{if(Q===X)return!0;if(Z.has(Q))return!1;break}case R.SVG:{if(m6.has(Q))return!1;break}case R.MATHML:{if(g6.has(Q))return!1;break}}}return!0}hasInScope(X){return this.hasInDynamicScope(X,w2)}hasInListItemScope(X){return this.hasInDynamicScope(X,AZ)}hasInButtonScope(X){return this.hasInDynamicScope(X,IZ)}hasNumberedHeaderInScope(){for(let X=this.stackTop;X>=0;X--){let Z=this.tagIDs[X];switch(this.treeAdapter.getNamespaceURI(this.items[X])){case R.HTML:{if(v1.has(Z))return!0;if(w2.has(Z))return!1;break}case R.SVG:{if(m6.has(Z))return!1;break}case R.MATHML:{if(g6.has(Z))return!1;break}}}return!0}hasInTableScope(X){for(let Z=this.stackTop;Z>=0;Z--){if(this.treeAdapter.getNamespaceURI(this.items[Z])!==R.HTML)continue;switch(this.tagIDs[Z]){case X:return!0;case J.TABLE:case J.HTML:return!1}}return!0}hasTableBodyContextInTableScope(){for(let X=this.stackTop;X>=0;X--){if(this.treeAdapter.getNamespaceURI(this.items[X])!==R.HTML)continue;switch(this.tagIDs[X]){case J.TBODY:case J.THEAD:case J.TFOOT:return!0;case J.TABLE:case J.HTML:return!1}}return!0}hasInSelectScope(X){for(let Z=this.stackTop;Z>=0;Z--){if(this.treeAdapter.getNamespaceURI(this.items[Z])!==R.HTML)continue;switch(this.tagIDs[Z]){case X:return!0;case J.OPTION:case J.OPTGROUP:break;default:return!1}}return!0}generateImpliedEndTags(){while(this.currentTagId!==void 0&&_6.has(this.currentTagId))this.pop()}generateImpliedEndTagsThoroughly(){while(this.currentTagId!==void 0&&E6.has(this.currentTagId))this.pop()}generateImpliedEndTagsWithExclusion(X){while(this.currentTagId!==void 0&&this.currentTagId!==X&&E6.has(this.currentTagId))this.pop()}}var P0;(function(X){X[X.Marker=0]="Marker",X[X.Element=1]="Element"})(P0||(P0={}));var k6={type:P0.Marker};class vX{constructor(X){this.treeAdapter=X,this.entries=[],this.bookmark=null}_getNoahArkConditionCandidates(X,Z){let W=[],Q=Z.length,Y=this.treeAdapter.getTagName(X),z=this.treeAdapter.getNamespaceURI(X);for(let j=0;j<this.entries.length;j++){let F=this.entries[j];if(F.type===P0.Marker)break;let{element:L}=F;if(this.treeAdapter.getTagName(L)===Y&&this.treeAdapter.getNamespaceURI(L)===z){let U=this.treeAdapter.getAttrList(L);if(U.length===Q)W.push({idx:j,attrs:U})}}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 Q=new Map(Z.map((z)=>[z.name,z.value])),Y=0;for(let z=0;z<W.length;z++){let j=W[z];if(j.attrs.every((F)=>Q.get(F.name)===F.value)){if(Y+=1,Y>=3)this.entries.splice(j.idx,1)}}}insertMarker(){this.entries.unshift(k6)}pushElement(X,Z){this._ensureNoahArkCondition(X),this.entries.unshift({type:P0.Element,element:X,token:Z})}insertElementAfterBookmark(X,Z){let W=this.entries.indexOf(this.bookmark);this.entries.splice(W,0,{type:P0.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(k6);if(X===-1)this.entries.length=0;else this.entries.splice(0,X+1)}getElementEntryInScopeWithTagName(X){let Z=this.entries.find((W)=>W.type===P0.Marker||this.treeAdapter.getTagName(W.element)===X);return Z&&Z.type===P0.Element?Z:null}getElementEntry(X){return this.entries.find((Z)=>Z.type===P0.Element&&Z.element===X)}}var B0={createDocument(){return{nodeName:"#document",mode:j0.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 Q=X.childNodes.indexOf(W);X.childNodes.splice(Q,0,Z),Z.parentNode=X},setTemplateContent(X,Z){X.content=Z},getTemplateContent(X){return X.content},setDocumentType(X,Z,W,Q){let Y=X.childNodes.find((z)=>z.nodeName==="#documentType");if(Y)Y.name=Z,Y.publicId=W,Y.systemId=Q;else{let z={nodeName:"#documentType",name:Z,publicId:W,systemId:Q,parentNode:null};B0.appendChild(X,z)}},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(B0.isTextNode(W)){W.value+=Z;return}}B0.appendChild(X,B0.createTextNode(Z))},insertTextBefore(X,Z,W){let Q=X.childNodes[X.childNodes.indexOf(W)-1];if(Q&&B0.isTextNode(Q))Q.value+=Z;else B0.insertBefore(X,B0.createTextNode(Z),W)},adoptAttributes(X,Z){let W=new Set(X.attrs.map((Q)=>Q.name));for(let Q=0;Q<Z.length;Q++)if(!W.has(Z[Q].name))X.attrs.push(Z[Q])},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 A6="html",dZ="about:legacy-compat",aZ="http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd",I6=["+//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//"],iZ=[...I6,"-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"],pZ=new Set(["-//w3o//dtd w3 html strict 3.0//en//","-/w3c/dtd html 4.0 transitional/en","html"]),T6=["-//w3c//dtd xhtml 1.0 frameset//","-//w3c//dtd xhtml 1.0 transitional//"],rZ=[...T6,"-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"];function S6(X,Z){return Z.some((W)=>X.startsWith(W))}function l6(X){return X.name===A6&&X.publicId===null&&(X.systemId===null||X.systemId===dZ)}function u6(X){if(X.name!==A6)return j0.QUIRKS;let{systemId:Z}=X;if(Z&&Z.toLowerCase()===aZ)return j0.QUIRKS;let{publicId:W}=X;if(W!==null){if(W=W.toLowerCase(),pZ.has(W))return j0.QUIRKS;let Q=Z===null?iZ:I6;if(S6(W,Q))return j0.QUIRKS;if(Q=Z===null?T6:rZ,S6(W,Q))return j0.LIMITED_QUIRKS}return j0.NO_QUIRKS}var c6={TEXT_HTML:"text/html",APPLICATION_XML:"application/xhtml+xml"},oZ="definitionurl",nZ="definitionURL",tZ=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])),eZ=new Map([["xlink:actuate",{prefix:"xlink",name:"actuate",namespace:R.XLINK}],["xlink:arcrole",{prefix:"xlink",name:"arcrole",namespace:R.XLINK}],["xlink:href",{prefix:"xlink",name:"href",namespace:R.XLINK}],["xlink:role",{prefix:"xlink",name:"role",namespace:R.XLINK}],["xlink:show",{prefix:"xlink",name:"show",namespace:R.XLINK}],["xlink:title",{prefix:"xlink",name:"title",namespace:R.XLINK}],["xlink:type",{prefix:"xlink",name:"type",namespace:R.XLINK}],["xml:lang",{prefix:"xml",name:"lang",namespace:R.XML}],["xml:space",{prefix:"xml",name:"space",namespace:R.XML}],["xmlns",{prefix:"",name:"xmlns",namespace:R.XMLNS}],["xmlns:xlink",{prefix:"xmlns",name:"xlink",namespace:R.XMLNS}]]),X5=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])),Z5=new Set([J.B,J.BIG,J.BLOCKQUOTE,J.BODY,J.BR,J.CENTER,J.CODE,J.DD,J.DIV,J.DL,J.DT,J.EM,J.EMBED,J.H1,J.H2,J.H3,J.H4,J.H5,J.H6,J.HEAD,J.HR,J.I,J.IMG,J.LI,J.LISTING,J.MENU,J.META,J.NOBR,J.OL,J.P,J.PRE,J.RUBY,J.S,J.SMALL,J.SPAN,J.STRONG,J.STRIKE,J.SUB,J.SUP,J.TABLE,J.TT,J.U,J.UL,J.VAR]);function d6(X){let Z=X.tagID;return Z===J.FONT&&X.attrs.some(({name:Q})=>Q===M0.COLOR||Q===M0.SIZE||Q===M0.FACE)||Z5.has(Z)}function CX(X){for(let Z=0;Z<X.attrs.length;Z++)if(X.attrs[Z].name===oZ){X.attrs[Z].name=nZ;break}}function fX(X){for(let Z=0;Z<X.attrs.length;Z++){let W=tZ.get(X.attrs[Z].name);if(W!=null)X.attrs[Z].name=W}}function q2(X){for(let Z=0;Z<X.attrs.length;Z++){let W=eZ.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 a6(X){let Z=X5.get(X.tagName);if(Z!=null)X.tagName=Z,X.tagID=c0(X.tagName)}function W5(X,Z){return Z===R.MATHML&&(X===J.MI||X===J.MO||X===J.MN||X===J.MS||X===J.MTEXT)}function Q5(X,Z,W){if(Z===R.MATHML&&X===J.ANNOTATION_XML){for(let Q=0;Q<W.length;Q++)if(W[Q].name===M0.ENCODING){let Y=W[Q].value.toLowerCase();return Y===c6.TEXT_HTML||Y===c6.APPLICATION_XML}}return Z===R.SVG&&(X===J.FOREIGN_OBJECT||X===J.DESC||X===J.TITLE)}function i6(X,Z,W,Q){return(!Q||Q===R.HTML)&&Q5(X,Z,W)||(!Q||Q===R.MATHML)&&W5(X,Z)}var J5="hidden",Y5=8,z5=3,K;(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"})(K||(K={}));var V5={startLine:-1,startCol:-1,startOffset:-1,endLine:-1,endCol:-1,endOffset:-1},n6=new Set([J.TABLE,J.TBODY,J.TFOOT,J.THEAD,J.TR]),r6={scriptingEnabled:!0,sourceCodeLocationInfo:!1,treeAdapter:B0,onParseError:null};class O2{constructor(X,Z,W=null,Q=null){if(this.fragmentContext=W,this.scriptHandler=Q,this.currentToken=null,this.stopped=!1,this.insertionMode=K.INITIAL,this.originalInsertionMode=K.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={...r6,...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 B2(this.options,this),this.activeFormattingElements=new vX(this.treeAdapter),this.fragmentContextID=W?c0(this.treeAdapter.getTagName(W)):J.UNKNOWN,this._setContextModes(W!==null&&W!==void 0?W:this.document,this.fragmentContextID),this.openElements=new RX(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={...r6,...Z};X!==null&&X!==void 0||(X=W.treeAdapter.createElement(B.TEMPLATE,R.HTML,[]));let Q=W.treeAdapter.createElement("documentmock",R.HTML,[]),Y=new this(W,Q,X);if(Y.fragmentContextID===J.TEMPLATE)Y.tmplInsertionModeStack.unshift(K.IN_TEMPLATE);return Y._initTokenizerForFragmentParsing(),Y._insertFakeRootElement(),Y._resetInsertionMode(),Y._findFormInFragmentContext(),Y}getFragment(){let X=this.treeAdapter.getFirstChild(this.document),Z=this.treeAdapter.createDocumentFragment();return this._adoptNodes(X,Z),Z}_err(X,Z,W){var Q;if(!this.onParseError)return;let Y=(Q=X.location)!==null&&Q!==void 0?Q:V5,z={code:Z,startLine:Y.startLine,startCol:Y.startCol,startOffset:Y.startOffset,endLine:W?Y.startLine:Y.endLine,endCol:W?Y.startCol:Y.endCol,endOffset:W?Y.startOffset:Y.endOffset};this.onParseError(z)}onItemPush(X,Z,W){var Q,Y;if((Y=(Q=this.treeAdapter).onItemPush)===null||Y===void 0||Y.call(Q,X),W&&this.openElements.stackTop>0)this._setContextModes(X,Z)}onItemPop(X,Z){var W,Q;if(this.options.sourceCodeLocationInfo)this._setEndLocation(X,this.currentToken);if((Q=(W=this.treeAdapter).onItemPop)===null||Q===void 0||Q.call(W,X,this.openElements.current),Z){let Y,z;if(this.openElements.stackTop===0&&this.fragmentContext)Y=this.fragmentContext,z=this.fragmentContextID;else({current:Y,currentTagId:z}=this.openElements);this._setContextModes(Y,z)}}_setContextModes(X,Z){let W=X===this.document||X&&this.treeAdapter.getNamespaceURI(X)===R.HTML;this.currentNotInHTML=!W,this.tokenizer.inForeignNode=!W&&X!==void 0&&Z!==void 0&&!this._isIntegrationPoint(Z,X)}_switchToTextParsing(X,Z){this._insertElement(X,R.HTML),this.tokenizer.state=Z,this.originalInsertionMode=this.insertionMode,this.insertionMode=K.TEXT}switchToPlaintextParsing(){this.insertionMode=K.TEXT,this.originalInsertionMode=K.IN_BODY,this.tokenizer.state=J0.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)!==R.HTML)return;switch(this.fragmentContextID){case J.TITLE:case J.TEXTAREA:{this.tokenizer.state=J0.RCDATA;break}case J.STYLE:case J.XMP:case J.IFRAME:case J.NOEMBED:case J.NOFRAMES:case J.NOSCRIPT:{this.tokenizer.state=J0.RAWTEXT;break}case J.SCRIPT:{this.tokenizer.state=J0.SCRIPT_DATA;break}case J.PLAINTEXT:{this.tokenizer.state=J0.PLAINTEXT;break}default:}}_setDocumentType(X){let Z=X.name||"",W=X.publicId||"",Q=X.systemId||"";if(this.treeAdapter.setDocumentType(this.document,Z,W,Q),X.location){let z=this.treeAdapter.getChildNodes(this.document).find((j)=>this.treeAdapter.isDocumentTypeNode(j));if(z)this.treeAdapter.setNodeSourceCodeLocation(z,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,R.HTML,[]);this._attachElementToTree(W,null),this.openElements.push(W,Z)}_insertTemplate(X){let Z=this.treeAdapter.createElement(X.tagName,R.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,R.HTML,[]);if(this.options.sourceCodeLocationInfo)this.treeAdapter.setNodeSourceCodeLocation(X,null);this.treeAdapter.appendChild(this.openElements.current,X),this.openElements.push(X,J.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 Q=this.treeAdapter.getChildNodes(Z),Y=W?Q.lastIndexOf(W):Q.length,z=Q[Y-1];if(this.treeAdapter.getNodeSourceCodeLocation(z)){let{endLine:F,endCol:L,endOffset:U}=X.location;this.treeAdapter.updateNodeSourceCodeLocation(z,{endLine:F,endCol:L,endOffset:U})}else if(this.options.sourceCodeLocationInfo)this.treeAdapter.setNodeSourceCodeLocation(z,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,Q=this.treeAdapter.getTagName(X),Y=Z.type===c.END_TAG&&Q===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,Y)}}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===J.SVG&&this.treeAdapter.getTagName(Z)===B.ANNOTATION_XML&&this.treeAdapter.getNamespaceURI(Z)===R.MATHML)return!1;return this.tokenizer.inForeignNode||(X.tagID===J.MGLYPH||X.tagID===J.MALIGNMARK)&&W!==void 0&&!this._isIntegrationPoint(W,Z,R.HTML)}_processToken(X){switch(X.type){case c.CHARACTER:{this.onCharacter(X);break}case c.NULL_CHARACTER:{this.onNullCharacter(X);break}case c.COMMENT:{this.onComment(X);break}case c.DOCTYPE:{this.onDoctype(X);break}case c.START_TAG:{this._processStartTag(X);break}case c.END_TAG:{this.onEndTag(X);break}case c.EOF:{this.onEof(X);break}case c.WHITESPACE_CHARACTER:{this.onWhitespaceCharacter(X);break}}}_isIntegrationPoint(X,Z,W){let Q=this.treeAdapter.getNamespaceURI(Z),Y=this.treeAdapter.getAttrList(Z);return i6(X,Q,Y,W)}_reconstructActiveFormattingElements(){let X=this.activeFormattingElements.entries.length;if(X){let Z=this.activeFormattingElements.entries.findIndex((Q)=>Q.type===P0.Marker||this.openElements.contains(Q.element)),W=Z===-1?X-1:Z-1;for(let Q=W;Q>=0;Q--){let Y=this.activeFormattingElements.entries[Q];this._insertElement(Y.token,this.treeAdapter.getNamespaceURI(Y.element)),Y.element=this.openElements.current}}}_closeTableCell(){this.openElements.generateImpliedEndTags(),this.openElements.popUntilTableCellPopped(),this.activeFormattingElements.clearToLastMarker(),this.insertionMode=K.IN_ROW}_closePElement(){this.openElements.generateImpliedEndTagsWithExclusion(J.P),this.openElements.popUntilTagNamePopped(J.P)}_resetInsertionMode(){for(let X=this.openElements.stackTop;X>=0;X--)switch(X===0&&this.fragmentContext?this.fragmentContextID:this.openElements.tagIDs[X]){case J.TR:{this.insertionMode=K.IN_ROW;return}case J.TBODY:case J.THEAD:case J.TFOOT:{this.insertionMode=K.IN_TABLE_BODY;return}case J.CAPTION:{this.insertionMode=K.IN_CAPTION;return}case J.COLGROUP:{this.insertionMode=K.IN_COLUMN_GROUP;return}case J.TABLE:{this.insertionMode=K.IN_TABLE;return}case J.BODY:{this.insertionMode=K.IN_BODY;return}case J.FRAMESET:{this.insertionMode=K.IN_FRAMESET;return}case J.SELECT:{this._resetInsertionModeForSelect(X);return}case J.TEMPLATE:{this.insertionMode=this.tmplInsertionModeStack[0];return}case J.HTML:{this.insertionMode=this.headElement?K.AFTER_HEAD:K.BEFORE_HEAD;return}case J.TD:case J.TH:{if(X>0){this.insertionMode=K.IN_CELL;return}break}case J.HEAD:{if(X>0){this.insertionMode=K.IN_HEAD;return}break}}this.insertionMode=K.IN_BODY}_resetInsertionModeForSelect(X){if(X>0)for(let Z=X-1;Z>0;Z--){let W=this.openElements.tagIDs[Z];if(W===J.TEMPLATE)break;else if(W===J.TABLE){this.insertionMode=K.IN_SELECT_IN_TABLE;return}}this.insertionMode=K.IN_SELECT}_isElementCausesFosterParenting(X){return n6.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 J.TEMPLATE:{if(this.treeAdapter.getNamespaceURI(Z)===R.HTML)return{parent:this.treeAdapter.getTemplateContent(Z),beforeElement:null};break}case J.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 M6[W].has(Z)}onCharacter(X){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){S7(this,X);return}switch(this.insertionMode){case K.INITIAL:{f1(this,X);break}case K.BEFORE_HTML:{h1(this,X);break}case K.BEFORE_HEAD:{M1(this,X);break}case K.IN_HEAD:{N1(this,X);break}case K.IN_HEAD_NO_SCRIPT:{D1(this,X);break}case K.AFTER_HEAD:{$1(this,X);break}case K.IN_BODY:case K.IN_CAPTION:case K.IN_CELL:case K.IN_TEMPLATE:{e6(this,X);break}case K.TEXT:case K.IN_SELECT:case K.IN_SELECT_IN_TABLE:{this._insertCharacters(X);break}case K.IN_TABLE:case K.IN_TABLE_BODY:case K.IN_ROW:{yX(this,X);break}case K.IN_TABLE_TEXT:{Y4(this,X);break}case K.IN_COLUMN_GROUP:{b2(this,X);break}case K.AFTER_BODY:{x2(this,X);break}case K.AFTER_AFTER_BODY:{P2(this,X);break}default:}}onNullCharacter(X){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){k7(this,X);return}switch(this.insertionMode){case K.INITIAL:{f1(this,X);break}case K.BEFORE_HTML:{h1(this,X);break}case K.BEFORE_HEAD:{M1(this,X);break}case K.IN_HEAD:{N1(this,X);break}case K.IN_HEAD_NO_SCRIPT:{D1(this,X);break}case K.AFTER_HEAD:{$1(this,X);break}case K.TEXT:{this._insertCharacters(X);break}case K.IN_TABLE:case K.IN_TABLE_BODY:case K.IN_ROW:{yX(this,X);break}case K.IN_COLUMN_GROUP:{b2(this,X);break}case K.AFTER_BODY:{x2(this,X);break}case K.AFTER_AFTER_BODY:{P2(this,X);break}default:}}onComment(X){if(this.skipNextNewLine=!1,this.currentNotInHTML){hX(this,X);return}switch(this.insertionMode){case K.INITIAL:case K.BEFORE_HTML:case K.BEFORE_HEAD:case K.IN_HEAD:case K.IN_HEAD_NO_SCRIPT:case K.AFTER_HEAD:case K.IN_BODY:case K.IN_TABLE:case K.IN_CAPTION:case K.IN_COLUMN_GROUP:case K.IN_TABLE_BODY:case K.IN_ROW:case K.IN_CELL:case K.IN_SELECT:case K.IN_SELECT_IN_TABLE:case K.IN_TEMPLATE:case K.IN_FRAMESET:case K.AFTER_FRAMESET:{hX(this,X);break}case K.IN_TABLE_TEXT:{y1(this,X);break}case K.AFTER_BODY:{B5(this,X);break}case K.AFTER_AFTER_BODY:case K.AFTER_AFTER_FRAMESET:{w5(this,X);break}default:}}onDoctype(X){switch(this.skipNextNewLine=!1,this.insertionMode){case K.INITIAL:{q5(this,X);break}case K.BEFORE_HEAD:case K.IN_HEAD:case K.IN_HEAD_NO_SCRIPT:case K.AFTER_HEAD:{this._err(X,q.misplacedDoctype);break}case K.IN_TABLE_TEXT:{y1(this,X);break}default:}}onStartTag(X){if(this.skipNextNewLine=!1,this.currentToken=X,this._processStartTag(X),X.selfClosing&&!X.ackSelfClosing)this._err(X,q.nonVoidHtmlElementStartTagWithTrailingSolidus)}_processStartTag(X){if(this.shouldProcessStartTagTokenInForeignContent(X))A7(this,X);else this._startTagOutsideForeignContent(X)}_startTagOutsideForeignContent(X){switch(this.insertionMode){case K.INITIAL:{f1(this,X);break}case K.BEFORE_HTML:{P5(this,X);break}case K.BEFORE_HEAD:{x5(this,X);break}case K.IN_HEAD:{b0(this,X);break}case K.IN_HEAD_NO_SCRIPT:{v5(this,X);break}case K.AFTER_HEAD:{f5(this,X);break}case K.IN_BODY:{Y0(this,X);break}case K.IN_TABLE:{J1(this,X);break}case K.IN_TABLE_TEXT:{y1(this,X);break}case K.IN_CAPTION:{O7(this,X);break}case K.IN_COLUMN_GROUP:{$X(this,X);break}case K.IN_TABLE_BODY:{C2(this,X);break}case K.IN_ROW:{f2(this,X);break}case K.IN_CELL:{C7(this,X);break}case K.IN_SELECT:{j4(this,X);break}case K.IN_SELECT_IN_TABLE:{y7(this,X);break}case K.IN_TEMPLATE:{M7(this,X);break}case K.AFTER_BODY:{D7(this,X);break}case K.IN_FRAMESET:{$7(this,X);break}case K.AFTER_FRAMESET:{E7(this,X);break}case K.AFTER_AFTER_BODY:{m7(this,X);break}case K.AFTER_AFTER_FRAMESET:{_7(this,X);break}default:}}onEndTag(X){if(this.skipNextNewLine=!1,this.currentToken=X,this.currentNotInHTML)I7(this,X);else this._endTagOutsideForeignContent(X)}_endTagOutsideForeignContent(X){switch(this.insertionMode){case K.INITIAL:{f1(this,X);break}case K.BEFORE_HTML:{b5(this,X);break}case K.BEFORE_HEAD:{O5(this,X);break}case K.IN_HEAD:{R5(this,X);break}case K.IN_HEAD_NO_SCRIPT:{C5(this,X);break}case K.AFTER_HEAD:{y5(this,X);break}case K.IN_BODY:{v2(this,X);break}case K.TEXT:{K7(this,X);break}case K.IN_TABLE:{G1(this,X);break}case K.IN_TABLE_TEXT:{y1(this,X);break}case K.IN_CAPTION:{R7(this,X);break}case K.IN_COLUMN_GROUP:{v7(this,X);break}case K.IN_TABLE_BODY:{MX(this,X);break}case K.IN_ROW:{V4(this,X);break}case K.IN_CELL:{f7(this,X);break}case K.IN_SELECT:{H4(this,X);break}case K.IN_SELECT_IN_TABLE:{h7(this,X);break}case K.IN_TEMPLATE:{N7(this,X);break}case K.AFTER_BODY:{U4(this,X);break}case K.IN_FRAMESET:{G7(this,X);break}case K.AFTER_FRAMESET:{g7(this,X);break}case K.AFTER_AFTER_BODY:{P2(this,X);break}default:}}onEof(X){switch(this.insertionMode){case K.INITIAL:{f1(this,X);break}case K.BEFORE_HTML:{h1(this,X);break}case K.BEFORE_HEAD:{M1(this,X);break}case K.IN_HEAD:{N1(this,X);break}case K.IN_HEAD_NO_SCRIPT:{D1(this,X);break}case K.AFTER_HEAD:{$1(this,X);break}case K.IN_BODY:case K.IN_TABLE:case K.IN_CAPTION:case K.IN_COLUMN_GROUP:case K.IN_TABLE_BODY:case K.IN_ROW:case K.IN_CELL:case K.IN_SELECT:case K.IN_SELECT_IN_TABLE:{Q4(this,X);break}case K.TEXT:{U7(this,X);break}case K.IN_TABLE_TEXT:{y1(this,X);break}case K.IN_TEMPLATE:{K4(this,X);break}case K.AFTER_BODY:case K.IN_FRAMESET:case K.AFTER_FRAMESET:case K.AFTER_AFTER_BODY:case K.AFTER_AFTER_FRAMESET:{DX(this,X);break}default:}}onWhitespaceCharacter(X){if(this.skipNextNewLine){if(this.skipNextNewLine=!1,X.chars.charCodeAt(0)===V.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 K.IN_HEAD:case K.IN_HEAD_NO_SCRIPT:case K.AFTER_HEAD:case K.TEXT:case K.IN_COLUMN_GROUP:case K.IN_SELECT:case K.IN_SELECT_IN_TABLE:case K.IN_FRAMESET:case K.AFTER_FRAMESET:{this._insertCharacters(X);break}case K.IN_BODY:case K.IN_CAPTION:case K.IN_CELL:case K.IN_TEMPLATE:case K.AFTER_BODY:case K.AFTER_AFTER_BODY:case K.AFTER_AFTER_FRAMESET:{t6(this,X);break}case K.IN_TABLE:case K.IN_TABLE_BODY:case K.IN_ROW:{yX(this,X);break}case K.IN_TABLE_TEXT:{J4(this,X);break}default:}}}function j5(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 W4(X,Z);return W}function H5(X,Z){let W=null,Q=X.openElements.stackTop;for(;Q>=0;Q--){let Y=X.openElements.items[Q];if(Y===Z.element)break;if(X._isSpecialElement(Y,X.openElements.tagIDs[Q]))W=Y}if(!W)X.openElements.shortenToLength(Math.max(Q,0)),X.activeFormattingElements.removeEntry(Z);return W}function K5(X,Z,W){let Q=Z,Y=X.openElements.getCommonAncestor(Z);for(let z=0,j=Y;j!==W;z++,j=Y){Y=X.openElements.getCommonAncestor(j);let F=X.activeFormattingElements.getElementEntry(j),L=F&&z>=z5;if(!F||L){if(L)X.activeFormattingElements.removeEntry(F);X.openElements.remove(j)}else{if(j=U5(X,F),Q===Z)X.activeFormattingElements.bookmark=F;X.treeAdapter.detachNode(Q),X.treeAdapter.appendChild(j,Q),Q=j}}return Q}function U5(X,Z){let W=X.treeAdapter.getNamespaceURI(Z.element),Q=X.treeAdapter.createElement(Z.token.tagName,W,Z.token.attrs);return X.openElements.replace(Z.element,Q),Z.element=Q,Q}function F5(X,Z,W){let Q=X.treeAdapter.getTagName(Z),Y=c0(Q);if(X._isElementCausesFosterParenting(Y))X._fosterParentElement(W);else{let z=X.treeAdapter.getNamespaceURI(Z);if(Y===J.TEMPLATE&&z===R.HTML)Z=X.treeAdapter.getTemplateContent(Z);X.treeAdapter.appendChild(Z,W)}}function L5(X,Z,W){let Q=X.treeAdapter.getNamespaceURI(W.element),{token:Y}=W,z=X.treeAdapter.createElement(Y.tagName,Q,Y.attrs);X._adoptNodes(Z,z),X.treeAdapter.appendChild(Z,z),X.activeFormattingElements.insertElementAfterBookmark(z,Y),X.activeFormattingElements.removeEntry(W),X.openElements.remove(W.element),X.openElements.insertAfter(Z,z,Y.tagID)}function NX(X,Z){for(let W=0;W<Y5;W++){let Q=j5(X,Z);if(!Q)break;let Y=H5(X,Q);if(!Y)break;X.activeFormattingElements.bookmark=Q;let z=K5(X,Y,Q.element),j=X.openElements.getCommonAncestor(Q.element);if(X.treeAdapter.detachNode(z),j)F5(X,j,z);L5(X,Y,Q)}}function hX(X,Z){X._appendCommentNode(Z,X.openElements.currentTmplContentOrNode)}function B5(X,Z){X._appendCommentNode(Z,X.openElements.items[0])}function w5(X,Z){X._appendCommentNode(Z,X.document)}function DX(X,Z){if(X.stopped=!0,Z.location){let W=X.fragmentContext?0:2;for(let Q=X.openElements.stackTop;Q>=W;Q--)X._setEndLocation(X.openElements.items[Q],Z);if(!X.fragmentContext&&X.openElements.stackTop>=0){let Q=X.openElements.items[0],Y=X.treeAdapter.getNodeSourceCodeLocation(Q);if(Y&&!Y.endTag){if(X._setEndLocation(Q,Z),X.openElements.stackTop>=1){let z=X.openElements.items[1],j=X.treeAdapter.getNodeSourceCodeLocation(z);if(j&&!j.endTag)X._setEndLocation(z,Z)}}}}}function q5(X,Z){X._setDocumentType(Z);let W=Z.forceQuirks?j0.QUIRKS:u6(Z);if(!l6(Z))X._err(Z,q.nonConformingDoctype);X.treeAdapter.setDocumentMode(X.document,W),X.insertionMode=K.BEFORE_HTML}function f1(X,Z){X._err(Z,q.missingDoctype,!0),X.treeAdapter.setDocumentMode(X.document,j0.QUIRKS),X.insertionMode=K.BEFORE_HTML,X._processToken(Z)}function P5(X,Z){if(Z.tagID===J.HTML)X._insertElement(Z,R.HTML),X.insertionMode=K.BEFORE_HEAD;else h1(X,Z)}function b5(X,Z){let W=Z.tagID;if(W===J.HTML||W===J.HEAD||W===J.BODY||W===J.BR)h1(X,Z)}function h1(X,Z){X._insertFakeRootElement(),X.insertionMode=K.BEFORE_HEAD,X._processToken(Z)}function x5(X,Z){switch(Z.tagID){case J.HTML:{Y0(X,Z);break}case J.HEAD:{X._insertElement(Z,R.HTML),X.headElement=X.openElements.current,X.insertionMode=K.IN_HEAD;break}default:M1(X,Z)}}function O5(X,Z){let W=Z.tagID;if(W===J.HEAD||W===J.BODY||W===J.HTML||W===J.BR)M1(X,Z);else X._err(Z,q.endTagWithoutMatchingOpenElement)}function M1(X,Z){X._insertFakeElement(B.HEAD,J.HEAD),X.headElement=X.openElements.current,X.insertionMode=K.IN_HEAD,X._processToken(Z)}function b0(X,Z){switch(Z.tagID){case J.HTML:{Y0(X,Z);break}case J.BASE:case J.BASEFONT:case J.BGSOUND:case J.LINK:case J.META:{X._appendElement(Z,R.HTML),Z.ackSelfClosing=!0;break}case J.TITLE:{X._switchToTextParsing(Z,J0.RCDATA);break}case J.NOSCRIPT:{if(X.options.scriptingEnabled)X._switchToTextParsing(Z,J0.RAWTEXT);else X._insertElement(Z,R.HTML),X.insertionMode=K.IN_HEAD_NO_SCRIPT;break}case J.NOFRAMES:case J.STYLE:{X._switchToTextParsing(Z,J0.RAWTEXT);break}case J.SCRIPT:{X._switchToTextParsing(Z,J0.SCRIPT_DATA);break}case J.TEMPLATE:{X._insertTemplate(Z),X.activeFormattingElements.insertMarker(),X.framesetOk=!1,X.insertionMode=K.IN_TEMPLATE,X.tmplInsertionModeStack.unshift(K.IN_TEMPLATE);break}case J.HEAD:{X._err(Z,q.misplacedStartTagForHeadElement);break}default:N1(X,Z)}}function R5(X,Z){switch(Z.tagID){case J.HEAD:{X.openElements.pop(),X.insertionMode=K.AFTER_HEAD;break}case J.BODY:case J.BR:case J.HTML:{N1(X,Z);break}case J.TEMPLATE:{d0(X,Z);break}default:X._err(Z,q.endTagWithoutMatchingOpenElement)}}function d0(X,Z){if(X.openElements.tmplCount>0){if(X.openElements.generateImpliedEndTagsThoroughly(),X.openElements.currentTagId!==J.TEMPLATE)X._err(Z,q.closingOfElementWithOpenChildElements);X.openElements.popUntilTagNamePopped(J.TEMPLATE),X.activeFormattingElements.clearToLastMarker(),X.tmplInsertionModeStack.shift(),X._resetInsertionMode()}else X._err(Z,q.endTagWithoutMatchingOpenElement)}function N1(X,Z){X.openElements.pop(),X.insertionMode=K.AFTER_HEAD,X._processToken(Z)}function v5(X,Z){switch(Z.tagID){case J.HTML:{Y0(X,Z);break}case J.BASEFONT:case J.BGSOUND:case J.HEAD:case J.LINK:case J.META:case J.NOFRAMES:case J.STYLE:{b0(X,Z);break}case J.NOSCRIPT:{X._err(Z,q.nestedNoscriptInHead);break}default:D1(X,Z)}}function C5(X,Z){switch(Z.tagID){case J.NOSCRIPT:{X.openElements.pop(),X.insertionMode=K.IN_HEAD;break}case J.BR:{D1(X,Z);break}default:X._err(Z,q.endTagWithoutMatchingOpenElement)}}function D1(X,Z){let W=Z.type===c.EOF?q.openElementsLeftAfterEof:q.disallowedContentInNoscriptInHead;X._err(Z,W),X.openElements.pop(),X.insertionMode=K.IN_HEAD,X._processToken(Z)}function f5(X,Z){switch(Z.tagID){case J.HTML:{Y0(X,Z);break}case J.BODY:{X._insertElement(Z,R.HTML),X.framesetOk=!1,X.insertionMode=K.IN_BODY;break}case J.FRAMESET:{X._insertElement(Z,R.HTML),X.insertionMode=K.IN_FRAMESET;break}case J.BASE:case J.BASEFONT:case J.BGSOUND:case J.LINK:case J.META:case J.NOFRAMES:case J.SCRIPT:case J.STYLE:case J.TEMPLATE:case J.TITLE:{X._err(Z,q.abandonedHeadElementChild),X.openElements.push(X.headElement,J.HEAD),b0(X,Z),X.openElements.remove(X.headElement);break}case J.HEAD:{X._err(Z,q.misplacedStartTagForHeadElement);break}default:$1(X,Z)}}function y5(X,Z){switch(Z.tagID){case J.BODY:case J.HTML:case J.BR:{$1(X,Z);break}case J.TEMPLATE:{d0(X,Z);break}default:X._err(Z,q.endTagWithoutMatchingOpenElement)}}function $1(X,Z){X._insertFakeElement(B.BODY,J.BODY),X.insertionMode=K.IN_BODY,R2(X,Z)}function R2(X,Z){switch(Z.type){case c.CHARACTER:{e6(X,Z);break}case c.WHITESPACE_CHARACTER:{t6(X,Z);break}case c.COMMENT:{hX(X,Z);break}case c.START_TAG:{Y0(X,Z);break}case c.END_TAG:{v2(X,Z);break}case c.EOF:{Q4(X,Z);break}default:}}function t6(X,Z){X._reconstructActiveFormattingElements(),X._insertCharacters(Z)}function e6(X,Z){X._reconstructActiveFormattingElements(),X._insertCharacters(Z),X.framesetOk=!1}function h5(X,Z){if(X.openElements.tmplCount===0)X.treeAdapter.adoptAttributes(X.openElements.items[0],Z.attrs)}function M5(X,Z){let W=X.openElements.tryPeekProperlyNestedBodyElement();if(W&&X.openElements.tmplCount===0)X.framesetOk=!1,X.treeAdapter.adoptAttributes(W,Z.attrs)}function N5(X,Z){let W=X.openElements.tryPeekProperlyNestedBodyElement();if(X.framesetOk&&W)X.treeAdapter.detachNode(W),X.openElements.popAllUpToHtmlElement(),X._insertElement(Z,R.HTML),X.insertionMode=K.IN_FRAMESET}function D5(X,Z){if(X.openElements.hasInButtonScope(J.P))X._closePElement();X._insertElement(Z,R.HTML)}function $5(X,Z){if(X.openElements.hasInButtonScope(J.P))X._closePElement();if(X.openElements.currentTagId!==void 0&&v1.has(X.openElements.currentTagId))X.openElements.pop();X._insertElement(Z,R.HTML)}function G5(X,Z){if(X.openElements.hasInButtonScope(J.P))X._closePElement();X._insertElement(Z,R.HTML),X.skipNextNewLine=!0,X.framesetOk=!1}function E5(X,Z){let W=X.openElements.tmplCount>0;if(!X.formElement||W){if(X.openElements.hasInButtonScope(J.P))X._closePElement();if(X._insertElement(Z,R.HTML),!W)X.formElement=X.openElements.current}}function g5(X,Z){X.framesetOk=!1;let W=Z.tagID;for(let Q=X.openElements.stackTop;Q>=0;Q--){let Y=X.openElements.tagIDs[Q];if(W===J.LI&&Y===J.LI||(W===J.DD||W===J.DT)&&(Y===J.DD||Y===J.DT)){X.openElements.generateImpliedEndTagsWithExclusion(Y),X.openElements.popUntilTagNamePopped(Y);break}if(Y!==J.ADDRESS&&Y!==J.DIV&&Y!==J.P&&X._isSpecialElement(X.openElements.items[Q],Y))break}if(X.openElements.hasInButtonScope(J.P))X._closePElement();X._insertElement(Z,R.HTML)}function m5(X,Z){if(X.openElements.hasInButtonScope(J.P))X._closePElement();X._insertElement(Z,R.HTML),X.tokenizer.state=J0.PLAINTEXT}function _5(X,Z){if(X.openElements.hasInScope(J.BUTTON))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(J.BUTTON);X._reconstructActiveFormattingElements(),X._insertElement(Z,R.HTML),X.framesetOk=!1}function k5(X,Z){let W=X.activeFormattingElements.getElementEntryInScopeWithTagName(B.A);if(W)NX(X,Z),X.openElements.remove(W.element),X.activeFormattingElements.removeEntry(W);X._reconstructActiveFormattingElements(),X._insertElement(Z,R.HTML),X.activeFormattingElements.pushElement(X.openElements.current,Z)}function S5(X,Z){X._reconstructActiveFormattingElements(),X._insertElement(Z,R.HTML),X.activeFormattingElements.pushElement(X.openElements.current,Z)}function A5(X,Z){if(X._reconstructActiveFormattingElements(),X.openElements.hasInScope(J.NOBR))NX(X,Z),X._reconstructActiveFormattingElements();X._insertElement(Z,R.HTML),X.activeFormattingElements.pushElement(X.openElements.current,Z)}function I5(X,Z){X._reconstructActiveFormattingElements(),X._insertElement(Z,R.HTML),X.activeFormattingElements.insertMarker(),X.framesetOk=!1}function T5(X,Z){if(X.treeAdapter.getDocumentMode(X.document)!==j0.QUIRKS&&X.openElements.hasInButtonScope(J.P))X._closePElement();X._insertElement(Z,R.HTML),X.framesetOk=!1,X.insertionMode=K.IN_TABLE}function X4(X,Z){X._reconstructActiveFormattingElements(),X._appendElement(Z,R.HTML),X.framesetOk=!1,Z.ackSelfClosing=!0}function Z4(X){let Z=F2(X,M0.TYPE);return Z!=null&&Z.toLowerCase()===J5}function l5(X,Z){if(X._reconstructActiveFormattingElements(),X._appendElement(Z,R.HTML),!Z4(Z))X.framesetOk=!1;Z.ackSelfClosing=!0}function u5(X,Z){X._appendElement(Z,R.HTML),Z.ackSelfClosing=!0}function c5(X,Z){if(X.openElements.hasInButtonScope(J.P))X._closePElement();X._appendElement(Z,R.HTML),X.framesetOk=!1,Z.ackSelfClosing=!0}function d5(X,Z){Z.tagName=B.IMG,Z.tagID=J.IMG,X4(X,Z)}function a5(X,Z){X._insertElement(Z,R.HTML),X.skipNextNewLine=!0,X.tokenizer.state=J0.RCDATA,X.originalInsertionMode=X.insertionMode,X.framesetOk=!1,X.insertionMode=K.TEXT}function i5(X,Z){if(X.openElements.hasInButtonScope(J.P))X._closePElement();X._reconstructActiveFormattingElements(),X.framesetOk=!1,X._switchToTextParsing(Z,J0.RAWTEXT)}function p5(X,Z){X.framesetOk=!1,X._switchToTextParsing(Z,J0.RAWTEXT)}function s6(X,Z){X._switchToTextParsing(Z,J0.RAWTEXT)}function r5(X,Z){X._reconstructActiveFormattingElements(),X._insertElement(Z,R.HTML),X.framesetOk=!1,X.insertionMode=X.insertionMode===K.IN_TABLE||X.insertionMode===K.IN_CAPTION||X.insertionMode===K.IN_TABLE_BODY||X.insertionMode===K.IN_ROW||X.insertionMode===K.IN_CELL?K.IN_SELECT_IN_TABLE:K.IN_SELECT}function s5(X,Z){if(X.openElements.currentTagId===J.OPTION)X.openElements.pop();X._reconstructActiveFormattingElements(),X._insertElement(Z,R.HTML)}function o5(X,Z){if(X.openElements.hasInScope(J.RUBY))X.openElements.generateImpliedEndTags();X._insertElement(Z,R.HTML)}function n5(X,Z){if(X.openElements.hasInScope(J.RUBY))X.openElements.generateImpliedEndTagsWithExclusion(J.RTC);X._insertElement(Z,R.HTML)}function t5(X,Z){if(X._reconstructActiveFormattingElements(),CX(Z),q2(Z),Z.selfClosing)X._appendElement(Z,R.MATHML);else X._insertElement(Z,R.MATHML);Z.ackSelfClosing=!0}function e5(X,Z){if(X._reconstructActiveFormattingElements(),fX(Z),q2(Z),Z.selfClosing)X._appendElement(Z,R.SVG);else X._insertElement(Z,R.SVG);Z.ackSelfClosing=!0}function o6(X,Z){X._reconstructActiveFormattingElements(),X._insertElement(Z,R.HTML)}function Y0(X,Z){switch(Z.tagID){case J.I:case J.S:case J.B:case J.U:case J.EM:case J.TT:case J.BIG:case J.CODE:case J.FONT:case J.SMALL:case J.STRIKE:case J.STRONG:{S5(X,Z);break}case J.A:{k5(X,Z);break}case J.H1:case J.H2:case J.H3:case J.H4:case J.H5:case J.H6:{$5(X,Z);break}case J.P:case J.DL:case J.OL:case J.UL:case J.DIV:case J.DIR:case J.NAV:case J.MAIN:case J.MENU:case J.ASIDE:case J.CENTER:case J.FIGURE:case J.FOOTER:case J.HEADER:case J.HGROUP:case J.DIALOG:case J.DETAILS:case J.ADDRESS:case J.ARTICLE:case J.SEARCH:case J.SECTION:case J.SUMMARY:case J.FIELDSET:case J.BLOCKQUOTE:case J.FIGCAPTION:{D5(X,Z);break}case J.LI:case J.DD:case J.DT:{g5(X,Z);break}case J.BR:case J.IMG:case J.WBR:case J.AREA:case J.EMBED:case J.KEYGEN:{X4(X,Z);break}case J.HR:{c5(X,Z);break}case J.RB:case J.RTC:{o5(X,Z);break}case J.RT:case J.RP:{n5(X,Z);break}case J.PRE:case J.LISTING:{G5(X,Z);break}case J.XMP:{i5(X,Z);break}case J.SVG:{e5(X,Z);break}case J.HTML:{h5(X,Z);break}case J.BASE:case J.LINK:case J.META:case J.STYLE:case J.TITLE:case J.SCRIPT:case J.BGSOUND:case J.BASEFONT:case J.TEMPLATE:{b0(X,Z);break}case J.BODY:{M5(X,Z);break}case J.FORM:{E5(X,Z);break}case J.NOBR:{A5(X,Z);break}case J.MATH:{t5(X,Z);break}case J.TABLE:{T5(X,Z);break}case J.INPUT:{l5(X,Z);break}case J.PARAM:case J.TRACK:case J.SOURCE:{u5(X,Z);break}case J.IMAGE:{d5(X,Z);break}case J.BUTTON:{_5(X,Z);break}case J.APPLET:case J.OBJECT:case J.MARQUEE:{I5(X,Z);break}case J.IFRAME:{p5(X,Z);break}case J.SELECT:{r5(X,Z);break}case J.OPTION:case J.OPTGROUP:{s5(X,Z);break}case J.NOEMBED:case J.NOFRAMES:{s6(X,Z);break}case J.FRAMESET:{N5(X,Z);break}case J.TEXTAREA:{a5(X,Z);break}case J.NOSCRIPT:{if(X.options.scriptingEnabled)s6(X,Z);else o6(X,Z);break}case J.PLAINTEXT:{m5(X,Z);break}case J.COL:case J.TH:case J.TD:case J.TR:case J.HEAD:case J.FRAME:case J.TBODY:case J.TFOOT:case J.THEAD:case J.CAPTION:case J.COLGROUP:break;default:o6(X,Z)}}function X7(X,Z){if(X.openElements.hasInScope(J.BODY)){if(X.insertionMode=K.AFTER_BODY,X.options.sourceCodeLocationInfo){let W=X.openElements.tryPeekProperlyNestedBodyElement();if(W)X._setEndLocation(W,Z)}}}function Z7(X,Z){if(X.openElements.hasInScope(J.BODY))X.insertionMode=K.AFTER_BODY,U4(X,Z)}function W7(X,Z){let W=Z.tagID;if(X.openElements.hasInScope(W))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(W)}function Q7(X){let Z=X.openElements.tmplCount>0,{formElement:W}=X;if(!Z)X.formElement=null;if((W||Z)&&X.openElements.hasInScope(J.FORM)){if(X.openElements.generateImpliedEndTags(),Z)X.openElements.popUntilTagNamePopped(J.FORM);else if(W)X.openElements.remove(W)}}function J7(X){if(!X.openElements.hasInButtonScope(J.P))X._insertFakeElement(B.P,J.P);X._closePElement()}function Y7(X){if(X.openElements.hasInListItemScope(J.LI))X.openElements.generateImpliedEndTagsWithExclusion(J.LI),X.openElements.popUntilTagNamePopped(J.LI)}function z7(X,Z){let W=Z.tagID;if(X.openElements.hasInScope(W))X.openElements.generateImpliedEndTagsWithExclusion(W),X.openElements.popUntilTagNamePopped(W)}function V7(X){if(X.openElements.hasNumberedHeaderInScope())X.openElements.generateImpliedEndTags(),X.openElements.popUntilNumberedHeaderPopped()}function j7(X,Z){let W=Z.tagID;if(X.openElements.hasInScope(W))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(W),X.activeFormattingElements.clearToLastMarker()}function H7(X){X._reconstructActiveFormattingElements(),X._insertFakeElement(B.BR,J.BR),X.openElements.pop(),X.framesetOk=!1}function W4(X,Z){let{tagName:W,tagID:Q}=Z;for(let Y=X.openElements.stackTop;Y>0;Y--){let z=X.openElements.items[Y],j=X.openElements.tagIDs[Y];if(Q===j&&(Q!==J.UNKNOWN||X.treeAdapter.getTagName(z)===W)){if(X.openElements.generateImpliedEndTagsWithExclusion(Q),X.openElements.stackTop>=Y)X.openElements.shortenToLength(Y);break}if(X._isSpecialElement(z,j))break}}function v2(X,Z){switch(Z.tagID){case J.A:case J.B:case J.I:case J.S:case J.U:case J.EM:case J.TT:case J.BIG:case J.CODE:case J.FONT:case J.NOBR:case J.SMALL:case J.STRIKE:case J.STRONG:{NX(X,Z);break}case J.P:{J7(X);break}case J.DL:case J.UL:case J.OL:case J.DIR:case J.DIV:case J.NAV:case J.PRE:case J.MAIN:case J.MENU:case J.ASIDE:case J.BUTTON:case J.CENTER:case J.FIGURE:case J.FOOTER:case J.HEADER:case J.HGROUP:case J.DIALOG:case J.ADDRESS:case J.ARTICLE:case J.DETAILS:case J.SEARCH:case J.SECTION:case J.SUMMARY:case J.LISTING:case J.FIELDSET:case J.BLOCKQUOTE:case J.FIGCAPTION:{W7(X,Z);break}case J.LI:{Y7(X);break}case J.DD:case J.DT:{z7(X,Z);break}case J.H1:case J.H2:case J.H3:case J.H4:case J.H5:case J.H6:{V7(X);break}case J.BR:{H7(X);break}case J.BODY:{X7(X,Z);break}case J.HTML:{Z7(X,Z);break}case J.FORM:{Q7(X);break}case J.APPLET:case J.OBJECT:case J.MARQUEE:{j7(X,Z);break}case J.TEMPLATE:{d0(X,Z);break}default:W4(X,Z)}}function Q4(X,Z){if(X.tmplInsertionModeStack.length>0)K4(X,Z);else DX(X,Z)}function K7(X,Z){var W;if(Z.tagID===J.SCRIPT)(W=X.scriptHandler)===null||W===void 0||W.call(X,X.openElements.current);X.openElements.pop(),X.insertionMode=X.originalInsertionMode}function U7(X,Z){X._err(Z,q.eofInElementThatCanContainOnlyText),X.openElements.pop(),X.insertionMode=X.originalInsertionMode,X.onEof(Z)}function yX(X,Z){if(X.openElements.currentTagId!==void 0&&n6.has(X.openElements.currentTagId))switch(X.pendingCharacterTokens.length=0,X.hasNonWhitespacePendingCharacterToken=!1,X.originalInsertionMode=X.insertionMode,X.insertionMode=K.IN_TABLE_TEXT,Z.type){case c.CHARACTER:{Y4(X,Z);break}case c.WHITESPACE_CHARACTER:{J4(X,Z);break}}else E1(X,Z)}function F7(X,Z){X.openElements.clearBackToTableContext(),X.activeFormattingElements.insertMarker(),X._insertElement(Z,R.HTML),X.insertionMode=K.IN_CAPTION}function L7(X,Z){X.openElements.clearBackToTableContext(),X._insertElement(Z,R.HTML),X.insertionMode=K.IN_COLUMN_GROUP}function B7(X,Z){X.openElements.clearBackToTableContext(),X._insertFakeElement(B.COLGROUP,J.COLGROUP),X.insertionMode=K.IN_COLUMN_GROUP,$X(X,Z)}function w7(X,Z){X.openElements.clearBackToTableContext(),X._insertElement(Z,R.HTML),X.insertionMode=K.IN_TABLE_BODY}function q7(X,Z){X.openElements.clearBackToTableContext(),X._insertFakeElement(B.TBODY,J.TBODY),X.insertionMode=K.IN_TABLE_BODY,C2(X,Z)}function P7(X,Z){if(X.openElements.hasInTableScope(J.TABLE))X.openElements.popUntilTagNamePopped(J.TABLE),X._resetInsertionMode(),X._processStartTag(Z)}function b7(X,Z){if(Z4(Z))X._appendElement(Z,R.HTML);else E1(X,Z);Z.ackSelfClosing=!0}function x7(X,Z){if(!X.formElement&&X.openElements.tmplCount===0)X._insertElement(Z,R.HTML),X.formElement=X.openElements.current,X.openElements.pop()}function J1(X,Z){switch(Z.tagID){case J.TD:case J.TH:case J.TR:{q7(X,Z);break}case J.STYLE:case J.SCRIPT:case J.TEMPLATE:{b0(X,Z);break}case J.COL:{B7(X,Z);break}case J.FORM:{x7(X,Z);break}case J.TABLE:{P7(X,Z);break}case J.TBODY:case J.TFOOT:case J.THEAD:{w7(X,Z);break}case J.INPUT:{b7(X,Z);break}case J.CAPTION:{F7(X,Z);break}case J.COLGROUP:{L7(X,Z);break}default:E1(X,Z)}}function G1(X,Z){switch(Z.tagID){case J.TABLE:{if(X.openElements.hasInTableScope(J.TABLE))X.openElements.popUntilTagNamePopped(J.TABLE),X._resetInsertionMode();break}case J.TEMPLATE:{d0(X,Z);break}case J.BODY:case J.CAPTION:case J.COL:case J.COLGROUP:case J.HTML:case J.TBODY:case J.TD:case J.TFOOT:case J.TH:case J.THEAD:case J.TR:break;default:E1(X,Z)}}function E1(X,Z){let W=X.fosterParentingEnabled;X.fosterParentingEnabled=!0,R2(X,Z),X.fosterParentingEnabled=W}function J4(X,Z){X.pendingCharacterTokens.push(Z)}function Y4(X,Z){X.pendingCharacterTokens.push(Z),X.hasNonWhitespacePendingCharacterToken=!0}function y1(X,Z){let W=0;if(X.hasNonWhitespacePendingCharacterToken)for(;W<X.pendingCharacterTokens.length;W++)E1(X,X.pendingCharacterTokens[W]);else for(;W<X.pendingCharacterTokens.length;W++)X._insertCharacters(X.pendingCharacterTokens[W]);X.insertionMode=X.originalInsertionMode,X._processToken(Z)}var z4=new Set([J.CAPTION,J.COL,J.COLGROUP,J.TBODY,J.TD,J.TFOOT,J.TH,J.THEAD,J.TR]);function O7(X,Z){let W=Z.tagID;if(z4.has(W)){if(X.openElements.hasInTableScope(J.CAPTION))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(J.CAPTION),X.activeFormattingElements.clearToLastMarker(),X.insertionMode=K.IN_TABLE,J1(X,Z)}else Y0(X,Z)}function R7(X,Z){let W=Z.tagID;switch(W){case J.CAPTION:case J.TABLE:{if(X.openElements.hasInTableScope(J.CAPTION)){if(X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(J.CAPTION),X.activeFormattingElements.clearToLastMarker(),X.insertionMode=K.IN_TABLE,W===J.TABLE)G1(X,Z)}break}case J.BODY:case J.COL:case J.COLGROUP:case J.HTML:case J.TBODY:case J.TD:case J.TFOOT:case J.TH:case J.THEAD:case J.TR:break;default:v2(X,Z)}}function $X(X,Z){switch(Z.tagID){case J.HTML:{Y0(X,Z);break}case J.COL:{X._appendElement(Z,R.HTML),Z.ackSelfClosing=!0;break}case J.TEMPLATE:{b0(X,Z);break}default:b2(X,Z)}}function v7(X,Z){switch(Z.tagID){case J.COLGROUP:{if(X.openElements.currentTagId===J.COLGROUP)X.openElements.pop(),X.insertionMode=K.IN_TABLE;break}case J.TEMPLATE:{d0(X,Z);break}case J.COL:break;default:b2(X,Z)}}function b2(X,Z){if(X.openElements.currentTagId===J.COLGROUP)X.openElements.pop(),X.insertionMode=K.IN_TABLE,X._processToken(Z)}function C2(X,Z){switch(Z.tagID){case J.TR:{X.openElements.clearBackToTableBodyContext(),X._insertElement(Z,R.HTML),X.insertionMode=K.IN_ROW;break}case J.TH:case J.TD:{X.openElements.clearBackToTableBodyContext(),X._insertFakeElement(B.TR,J.TR),X.insertionMode=K.IN_ROW,f2(X,Z);break}case J.CAPTION:case J.COL:case J.COLGROUP:case J.TBODY:case J.TFOOT:case J.THEAD:{if(X.openElements.hasTableBodyContextInTableScope())X.openElements.clearBackToTableBodyContext(),X.openElements.pop(),X.insertionMode=K.IN_TABLE,J1(X,Z);break}default:J1(X,Z)}}function MX(X,Z){let W=Z.tagID;switch(Z.tagID){case J.TBODY:case J.TFOOT:case J.THEAD:{if(X.openElements.hasInTableScope(W))X.openElements.clearBackToTableBodyContext(),X.openElements.pop(),X.insertionMode=K.IN_TABLE;break}case J.TABLE:{if(X.openElements.hasTableBodyContextInTableScope())X.openElements.clearBackToTableBodyContext(),X.openElements.pop(),X.insertionMode=K.IN_TABLE,G1(X,Z);break}case J.BODY:case J.CAPTION:case J.COL:case J.COLGROUP:case J.HTML:case J.TD:case J.TH:case J.TR:break;default:G1(X,Z)}}function f2(X,Z){switch(Z.tagID){case J.TH:case J.TD:{X.openElements.clearBackToTableRowContext(),X._insertElement(Z,R.HTML),X.insertionMode=K.IN_CELL,X.activeFormattingElements.insertMarker();break}case J.CAPTION:case J.COL:case J.COLGROUP:case J.TBODY:case J.TFOOT:case J.THEAD:case J.TR:{if(X.openElements.hasInTableScope(J.TR))X.openElements.clearBackToTableRowContext(),X.openElements.pop(),X.insertionMode=K.IN_TABLE_BODY,C2(X,Z);break}default:J1(X,Z)}}function V4(X,Z){switch(Z.tagID){case J.TR:{if(X.openElements.hasInTableScope(J.TR))X.openElements.clearBackToTableRowContext(),X.openElements.pop(),X.insertionMode=K.IN_TABLE_BODY;break}case J.TABLE:{if(X.openElements.hasInTableScope(J.TR))X.openElements.clearBackToTableRowContext(),X.openElements.pop(),X.insertionMode=K.IN_TABLE_BODY,MX(X,Z);break}case J.TBODY:case J.TFOOT:case J.THEAD:{if(X.openElements.hasInTableScope(Z.tagID)||X.openElements.hasInTableScope(J.TR))X.openElements.clearBackToTableRowContext(),X.openElements.pop(),X.insertionMode=K.IN_TABLE_BODY,MX(X,Z);break}case J.BODY:case J.CAPTION:case J.COL:case J.COLGROUP:case J.HTML:case J.TD:case J.TH:break;default:G1(X,Z)}}function C7(X,Z){let W=Z.tagID;if(z4.has(W)){if(X.openElements.hasInTableScope(J.TD)||X.openElements.hasInTableScope(J.TH))X._closeTableCell(),f2(X,Z)}else Y0(X,Z)}function f7(X,Z){let W=Z.tagID;switch(W){case J.TD:case J.TH:{if(X.openElements.hasInTableScope(W))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(W),X.activeFormattingElements.clearToLastMarker(),X.insertionMode=K.IN_ROW;break}case J.TABLE:case J.TBODY:case J.TFOOT:case J.THEAD:case J.TR:{if(X.openElements.hasInTableScope(W))X._closeTableCell(),V4(X,Z);break}case J.BODY:case J.CAPTION:case J.COL:case J.COLGROUP:case J.HTML:break;default:v2(X,Z)}}function j4(X,Z){switch(Z.tagID){case J.HTML:{Y0(X,Z);break}case J.OPTION:{if(X.openElements.currentTagId===J.OPTION)X.openElements.pop();X._insertElement(Z,R.HTML);break}case J.OPTGROUP:{if(X.openElements.currentTagId===J.OPTION)X.openElements.pop();if(X.openElements.currentTagId===J.OPTGROUP)X.openElements.pop();X._insertElement(Z,R.HTML);break}case J.HR:{if(X.openElements.currentTagId===J.OPTION)X.openElements.pop();if(X.openElements.currentTagId===J.OPTGROUP)X.openElements.pop();X._appendElement(Z,R.HTML),Z.ackSelfClosing=!0;break}case J.INPUT:case J.KEYGEN:case J.TEXTAREA:case J.SELECT:{if(X.openElements.hasInSelectScope(J.SELECT)){if(X.openElements.popUntilTagNamePopped(J.SELECT),X._resetInsertionMode(),Z.tagID!==J.SELECT)X._processStartTag(Z)}break}case J.SCRIPT:case J.TEMPLATE:{b0(X,Z);break}default:}}function H4(X,Z){switch(Z.tagID){case J.OPTGROUP:{if(X.openElements.stackTop>0&&X.openElements.currentTagId===J.OPTION&&X.openElements.tagIDs[X.openElements.stackTop-1]===J.OPTGROUP)X.openElements.pop();if(X.openElements.currentTagId===J.OPTGROUP)X.openElements.pop();break}case J.OPTION:{if(X.openElements.currentTagId===J.OPTION)X.openElements.pop();break}case J.SELECT:{if(X.openElements.hasInSelectScope(J.SELECT))X.openElements.popUntilTagNamePopped(J.SELECT),X._resetInsertionMode();break}case J.TEMPLATE:{d0(X,Z);break}default:}}function y7(X,Z){let W=Z.tagID;if(W===J.CAPTION||W===J.TABLE||W===J.TBODY||W===J.TFOOT||W===J.THEAD||W===J.TR||W===J.TD||W===J.TH)X.openElements.popUntilTagNamePopped(J.SELECT),X._resetInsertionMode(),X._processStartTag(Z);else j4(X,Z)}function h7(X,Z){let W=Z.tagID;if(W===J.CAPTION||W===J.TABLE||W===J.TBODY||W===J.TFOOT||W===J.THEAD||W===J.TR||W===J.TD||W===J.TH){if(X.openElements.hasInTableScope(W))X.openElements.popUntilTagNamePopped(J.SELECT),X._resetInsertionMode(),X.onEndTag(Z)}else H4(X,Z)}function M7(X,Z){switch(Z.tagID){case J.BASE:case J.BASEFONT:case J.BGSOUND:case J.LINK:case J.META:case J.NOFRAMES:case J.SCRIPT:case J.STYLE:case J.TEMPLATE:case J.TITLE:{b0(X,Z);break}case J.CAPTION:case J.COLGROUP:case J.TBODY:case J.TFOOT:case J.THEAD:{X.tmplInsertionModeStack[0]=K.IN_TABLE,X.insertionMode=K.IN_TABLE,J1(X,Z);break}case J.COL:{X.tmplInsertionModeStack[0]=K.IN_COLUMN_GROUP,X.insertionMode=K.IN_COLUMN_GROUP,$X(X,Z);break}case J.TR:{X.tmplInsertionModeStack[0]=K.IN_TABLE_BODY,X.insertionMode=K.IN_TABLE_BODY,C2(X,Z);break}case J.TD:case J.TH:{X.tmplInsertionModeStack[0]=K.IN_ROW,X.insertionMode=K.IN_ROW,f2(X,Z);break}default:X.tmplInsertionModeStack[0]=K.IN_BODY,X.insertionMode=K.IN_BODY,Y0(X,Z)}}function N7(X,Z){if(Z.tagID===J.TEMPLATE)d0(X,Z)}function K4(X,Z){if(X.openElements.tmplCount>0)X.openElements.popUntilTagNamePopped(J.TEMPLATE),X.activeFormattingElements.clearToLastMarker(),X.tmplInsertionModeStack.shift(),X._resetInsertionMode(),X.onEof(Z);else DX(X,Z)}function D7(X,Z){if(Z.tagID===J.HTML)Y0(X,Z);else x2(X,Z)}function U4(X,Z){var W;if(Z.tagID===J.HTML){if(!X.fragmentContext)X.insertionMode=K.AFTER_AFTER_BODY;if(X.options.sourceCodeLocationInfo&&X.openElements.tagIDs[0]===J.HTML){X._setEndLocation(X.openElements.items[0],Z);let Q=X.openElements.items[1];if(Q&&!((W=X.treeAdapter.getNodeSourceCodeLocation(Q))===null||W===void 0?void 0:W.endTag))X._setEndLocation(Q,Z)}}else x2(X,Z)}function x2(X,Z){X.insertionMode=K.IN_BODY,R2(X,Z)}function $7(X,Z){switch(Z.tagID){case J.HTML:{Y0(X,Z);break}case J.FRAMESET:{X._insertElement(Z,R.HTML);break}case J.FRAME:{X._appendElement(Z,R.HTML),Z.ackSelfClosing=!0;break}case J.NOFRAMES:{b0(X,Z);break}default:}}function G7(X,Z){if(Z.tagID===J.FRAMESET&&!X.openElements.isRootHtmlElementCurrent()){if(X.openElements.pop(),!X.fragmentContext&&X.openElements.currentTagId!==J.FRAMESET)X.insertionMode=K.AFTER_FRAMESET}}function E7(X,Z){switch(Z.tagID){case J.HTML:{Y0(X,Z);break}case J.NOFRAMES:{b0(X,Z);break}default:}}function g7(X,Z){if(Z.tagID===J.HTML)X.insertionMode=K.AFTER_AFTER_FRAMESET}function m7(X,Z){if(Z.tagID===J.HTML)Y0(X,Z);else P2(X,Z)}function P2(X,Z){X.insertionMode=K.IN_BODY,R2(X,Z)}function _7(X,Z){switch(Z.tagID){case J.HTML:{Y0(X,Z);break}case J.NOFRAMES:{b0(X,Z);break}default:}}function k7(X,Z){Z.chars=p,X._insertCharacters(Z)}function S7(X,Z){X._insertCharacters(Z),X.framesetOk=!1}function F4(X){while(X.treeAdapter.getNamespaceURI(X.openElements.current)!==R.HTML&&X.openElements.currentTagId!==void 0&&!X._isIntegrationPoint(X.openElements.currentTagId,X.openElements.current))X.openElements.pop()}function A7(X,Z){if(d6(Z))F4(X),X._startTagOutsideForeignContent(Z);else{let W=X._getAdjustedCurrentElement(),Q=X.treeAdapter.getNamespaceURI(W);if(Q===R.MATHML)CX(Z);else if(Q===R.SVG)a6(Z),fX(Z);if(q2(Z),Z.selfClosing)X._appendElement(Z,Q);else X._insertElement(Z,Q);Z.ackSelfClosing=!0}}function I7(X,Z){if(Z.tagID===J.P||Z.tagID===J.BR){F4(X),X._endTagOutsideForeignContent(Z);return}for(let W=X.openElements.stackTop;W>0;W--){let Q=X.openElements.items[W];if(X.treeAdapter.getNamespaceURI(Q)===R.HTML){X._endTagOutsideForeignContent(Z);break}let Y=X.treeAdapter.getTagName(Q);if(Y.toLowerCase()===Z.tagName){Z.tagName=Y,X.openElements.shortenToLength(W);break}}}var cz=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 L4(X,Z){return function(Q){let Y,z=0,j="";while(Y=X.exec(Q)){if(z!==Y.index)j+=Q.substring(z,Y.index);j+=Z.get(Y[0].charCodeAt(0)),z=Y.index+1}return j+Q.substring(z)}}var B4=L4(/["&\u00A0]/g,new Map([[34,"&quot;"],[38,"&amp;"],[160,"&nbsp;"]])),w4=L4(/[&<>\u00A0]/g,new Map([[38,"&amp;"],[60,"&lt;"],[62,"&gt;"],[160,"&nbsp;"]]));var T7=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 q4(X,Z){return Z.treeAdapter.isElementNode(X)&&Z.treeAdapter.getNamespaceURI(X)===R.HTML&&T7.has(Z.treeAdapter.getTagName(X))}var l7={treeAdapter:B0,scriptingEnabled:!0};function g1(X,Z){let W={...l7,...Z};if(q4(X,W))return"";return P4(X,W)}function P4(X,Z){let W="",Q=Z.treeAdapter.isElementNode(X)&&Z.treeAdapter.getTagName(X)===B.TEMPLATE&&Z.treeAdapter.getNamespaceURI(X)===R.HTML?Z.treeAdapter.getTemplateContent(X):X,Y=Z.treeAdapter.getChildNodes(Q);if(Y)for(let z of Y)W+=u7(z,Z);return W}function u7(X,Z){if(Z.treeAdapter.isElementNode(X))return c7(X,Z);if(Z.treeAdapter.isTextNode(X))return a7(X,Z);if(Z.treeAdapter.isCommentNode(X))return i7(X,Z);if(Z.treeAdapter.isDocumentTypeNode(X))return p7(X,Z);return""}function c7(X,Z){let W=Z.treeAdapter.getTagName(X);return`<${W}${d7(X,Z)}>${q4(X,Z)?"":`${P4(X,Z)}</${W}>`}`}function d7(X,{treeAdapter:Z}){let W="";for(let Q of Z.getAttrList(X)){if(W+=" ",Q.namespace)switch(Q.namespace){case R.XML:{W+=`xml:${Q.name}`;break}case R.XMLNS:{if(Q.name!=="xmlns")W+="xmlns:";W+=Q.name;break}case R.XLINK:{W+=`xlink:${Q.name}`;break}default:W+=`${Q.prefix}:${Q.name}`}else W+=Q.name;W+=`="${B4(Q.value)}"`}return W}function a7(X,Z){let{treeAdapter:W}=Z,Q=W.getTextNodeContent(X),Y=W.getParentNode(X),z=Y&&W.isElementNode(Y)&&W.getTagName(Y);return z&&W.getNamespaceURI(Y)===R.HTML&&N6(z,Z.scriptingEnabled)?Q:w4(Q)}function i7(X,{treeAdapter:Z}){return`<!--${Z.getCommentNodeContent(X)}-->`}function p7(X,{treeAdapter:Z}){return`<!DOCTYPE ${Z.getDocumentTypeNodeName(X)}>`}function y2(X,Z){return O2.parse(X,Z)}import{WebSocket as M2,WebSocketServer as WW}from"ws";var b4=2097152;function N0(X){return JSON.stringify(X).replace(/</g,"\\u003c")}function r7(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 x4(X){let Z=N0(r7(X.sourceUrl));return`(() => {
4
4
  "use strict";
5
5
  let TOKEN = ${N0(X.token)};
6
6
  let SOURCE_URL = ${N0(X.sourceUrl)};
@@ -11,6 +11,7 @@ function v9(){let X=globalThis.performance?.now?.()??Date.now();return Math.roun
11
11
  const PARENT_ORIGIN = ${N0(X.parentOrigin??null)};
12
12
  const FROZEN = ${N0(X.frozen===!0)};
13
13
  const GOOGLE_HOMEPAGE_SEARCH_URL = ${Z};
14
+ const MAX_SNAPSHOT_BYTES = 2097152;
14
15
  const BRIDGE_SCRIPT = document.currentScript;
15
16
  const parentPostMessage = window.parent.postMessage.bind(window.parent);
16
17
  const stopImmediatePropagation = Event.prototype.stopImmediatePropagation;
@@ -364,7 +365,26 @@ function v9(){let X=globalThis.performance?.now?.()??Date.now();return Math.roun
364
365
  for (const editable of Array.from(clone.querySelectorAll("[contenteditable]"))) {
365
366
  editable.textContent = "";
366
367
  }
367
- return "<!doctype html>" + clone.outerHTML;
368
+ for (const disposable of Array.from(clone.querySelectorAll("script,iframe,frame,frameset,object,embed,portal,base,audio,video,source,track,noscript,animate,animatemotion,animatetransform,discard,set"))) {
369
+ disposable.remove();
370
+ }
371
+ const serialize = () => "<!doctype html>" + clone.outerHTML;
372
+ let html = serialize();
373
+ if (new Blob([html]).size <= MAX_SNAPSHOT_BYTES) return html;
374
+
375
+ // Large documentation responses can contain tens of thousands of syntax
376
+ // token spans. Preserve the complete code text while dropping decorative
377
+ // token markup only when the otherwise-sanitized capture exceeds the CLI's
378
+ // synchronous parsing budget.
379
+ const sourceCodeBlocks = Array.from(document.querySelectorAll("pre"));
380
+ const clonedCodeBlocks = Array.from(clone.querySelectorAll("pre"));
381
+ for (let index = 0; index < sourceCodeBlocks.length; index += 1) {
382
+ const source = sourceCodeBlocks[index];
383
+ const target = clonedCodeBlocks[index];
384
+ if (source && target) target.textContent = source.innerText || source.textContent || "";
385
+ }
386
+ html = serialize();
387
+ return html;
368
388
  };
369
389
 
370
390
  const handle = async (command) => {
@@ -507,7 +527,7 @@ function v9(){let X=globalThis.performance?.now?.()??Date.now();return Math.roun
507
527
  restoreFrozenScroll();
508
528
  state();
509
529
  }
510
- })();`}function h2(X){return JSON.stringify(X).replace(/</g,"\\u003c")}function EX(X){return`(() => {
530
+ })();`}import*as Y1 from"css-tree";var m1=20971520,s7=new Set(["script","iframe","frame","frameset","object","embed","portal","base","audio","video","source","track","noscript","animate","animatemotion","animatetransform","discard","set"]),o7=new Set(["action","cite","data","formaction","href","ping","poster","src","srcset","xlink:href"]),GX=/^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,n7=new Set(["date","datetime-local","email","month","number","password","search","tel","text","time","url","week"]);function t7(X){return"tagName"in X}function O4(X,Z){return X.attrs.find((W)=>W.name.toLowerCase()===Z.toLowerCase())?.value??null}function v0(X,Z,W){let Q=X.attrs.find((Y)=>Y.name.toLowerCase()===Z.toLowerCase());if(Q)Q.value=W;else X.attrs.push({name:Z,value:W})}function R4(X){try{let Z=Y1.parse(X,{context:"stylesheet",parseCustomProperty:!0,positions:!1});return Y1.walk(Z,{enter(W,Q,Y){if(W.type==="Atrule"&&W.name.toLowerCase()==="import"){Y.remove(Q);return}if(W.type==="Declaration"){let z=W.property.toLowerCase();if(z==="behavior"||z==="-moz-binding")Y.remove(Q);return}if(W.type==="Url"&&!GX.test(W.value)){W.value="data:,";return}if(W.type==="String"&&this.function&&["image-set","-webkit-image-set","src"].includes(this.function.name.toLowerCase())&&!GX.test(W.value))W.value="data:,"}}),Y1.generate(Z)}catch{return""}}function e7(X){return R4(`x{${X}}`).replace(/^x\{/,"").replace(/\}$/,"")}function XW(X){let Z=X.tagName.toLowerCase();if(X.attrs=X.attrs.flatMap((W)=>{let Q=W.name.toLowerCase();if(Z==="input"&&(Q==="value"||Q==="checked"))return[];if(Q.startsWith("on")||Q==="srcdoc"||Q==="nonce")return[];if(Q==="style"){let Y=e7(W.value);return Y?[{...W,value:Y}]:[]}if(o7.has(Q)){if(Q==="src"&&GX.test(W.value))return[W];if(Q==="href"&&W.value.startsWith("#"))return[W];return[]}if(Q==="target"||Q==="download"||Q==="http-equiv")return[];return[W]}),Z==="form")v0(X,"inert",""),v0(X,"aria-disabled","true");else if(Z==="textarea"||Z==="input"&&n7.has((O4(X,"type")??"text").toLowerCase()))v0(X,"readonly",""),v0(X,"aria-readonly","true"),v0(X,"tabindex","-1");else if(Z==="button"||Z==="select"||Z==="input")v0(X,"disabled",""),v0(X,"aria-disabled","true"),v0(X,"tabindex","-1");if(O4(X,"contenteditable")!==null)v0(X,"contenteditable","false"),v0(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=R4(W.value)}}function v4(X){let Z=[];for(let W of X.childNodes){if(t7(W)){let Q=W.tagName.toLowerCase();if(s7.has(Q))continue;if(Q==="meta"&&W.attrs.some((Y)=>Y.name.toLowerCase()==="http-equiv"&&Y.value.toLowerCase()!=="content-type"))continue;if(Q==="link")continue;XW(W),v4(W)}Z.push(W)}X.childNodes=Z}function C4(X){if(Buffer.byteLength(X,"utf8")>m1)throw Error("Browser snapshot exceeds the 20 MiB limit");let Z=y2(X);v4(Z);let W=g1(Z);if(Buffer.byteLength(W,"utf8")>m1)throw Error("Sanitized browser snapshot exceeds the 20 MiB limit");return W}function h2(X){return JSON.stringify(X).replace(/</g,"\\u003c")}function EX(X){return`(() => {
511
531
  "use strict";
512
532
  if (window.__browserKitHooked) return;
513
533
  window.__browserKitHooked = true;
@@ -933,7 +953,7 @@ function v9(){let X=globalThis.performance?.now?.()??Date.now();return Math.roun
933
953
  };
934
954
  addEventListener("popstate", notifyNavigation);
935
955
  addEventListener("hashchange", notifyNavigation);
936
- })();`}var C4=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 E0(X,Z,W){if(!X)return X;let Q=X.trim(),Y=W.endsWith("/")?W:`${W}/`,z=new URL(Y).pathname;if(Q.startsWith(Y)||Q.startsWith(z)||/^(data|blob|mailto|tel|javascript):/i.test(Q)||Q.startsWith("#"))return Q;try{let j=new URL(Q,Z);if(j.protocol!=="http:"&&j.protocol!=="https:")return Q;return`${Y}${j.href}`}catch{return Q}}function gX(X){let Z=(W)=>{let Q=W.trim().replace(/^["']|["']$/g,"");if(!Q||Q.startsWith("data:"))return W;return E0(Q,X.baseUrl,X.proxyUrlPrefix)};return X.css.replace(/url\(\s*([^)]+?)\s*\)/gi,(W,Q)=>`url(${Z(Q)})`).replace(/@import\s+(["'])([^"']+)\1/gi,(W,Q,Y)=>`@import ${Q}${Z(Y)}${Q}`)}function mX(X){let Z=new URL(X.sourceUrl).origin,W=new URL(X.proxyUrlPrefix).pathname,Q=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,(F,L,U)=>`${L}${W}${U}//`).replace(/(\b(?:href|src|action|poster)\s*=\s*["'])\/\//gi,(F,L)=>`${L}${W}https://`).replace(/(\b(?:href|action|poster)\s*=\s*["'])\/(?!\/|browser-kit\/session\/)/gi,(F,L)=>`${L}${W}${Z}/`).replace(/(\bimport\s*\(\s*["'])\/(?!\/|browser-kit\/session\/)([^"']*)(["']\s*\))/g,(F,L,U,w)=>`${L}${W}${Z}/${U}${w}`).replace(/(\bimport\s*\(\s*\\["'])\/(?!\/|browser-kit\/session\/)([^"'\\]*)(\\["']\s*\))/g,(F,L,U,w)=>`${L}${W}${Z}/${U}${w}`);Q=Q.replace(/(<meta[^>]+http-equiv\s*=\s*["']?refresh["']?[^>]*content\s*=\s*["'][^"']*?url\s*=\s*)([^"'\s>]+)/gi,(F,L,U)=>L+E0(U,X.sourceUrl,X.proxyUrlPrefix)),Q=Q.replace(/\bsrcset\s*=\s*["']([^"']*)["']/gi,(F,L)=>{return`srcset="${L.split(",").map((w)=>{let P=w.trim().split(/\s+/),C=P.shift();if(!C)return"";return[/^https?:\/\//i.test(C)||C.startsWith("//")||C.startsWith("/")?E0(C,X.sourceUrl,X.proxyUrlPrefix):C,...P].join(" ")}).filter(Boolean).join(", ")}"`});let Y=EX({sourceUrl:X.sourceUrl,proxyOrigin:X.proxyOrigin,proxyUrlPrefix:X.proxyUrlPrefix,sessionStorageNamespace:X.sessionStorageNamespace}),z=v4({token:X.bridgeToken,sourceUrl:X.sourceUrl,revision:X.revision,navigateUrlPrefix:X.navigateUrlPrefix,originalUrlPrefix:X.proxyUrlPrefix,parentOrigin:X.proxyOrigin}),j=`<base href="${X.proxyUrlPrefix}${X.sourceUrl}"><script data-browser-kit-runtime>${Y}</script><script data-ideawave-browser-bridge>${z}</script>`;if(/<head[^>]*>/i.test(Q))return Q.replace(/<head[^>]*>/i,(F)=>F+j);if(/<html[^>]*>/i.test(Q))return Q.replace(/<html[^>]*>/i,(F)=>F+j);return j+Q}var _X="6";function kX(){return`
956
+ })();`}var f4=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 E0(X,Z,W){if(!X)return X;let Q=X.trim(),Y=W.endsWith("/")?W:`${W}/`,z=new URL(Y).pathname;if(Q.startsWith(Y)||Q.startsWith(z)||/^(data|blob|mailto|tel|javascript):/i.test(Q)||Q.startsWith("#"))return Q;try{let j=new URL(Q,Z);if(j.protocol!=="http:"&&j.protocol!=="https:")return Q;return`${Y}${j.href}`}catch{return Q}}function gX(X){let Z=(W)=>{let Q=W.trim().replace(/^["']|["']$/g,"");if(!Q||Q.startsWith("data:"))return W;return E0(Q,X.baseUrl,X.proxyUrlPrefix)};return X.css.replace(/url\(\s*([^)]+?)\s*\)/gi,(W,Q)=>`url(${Z(Q)})`).replace(/@import\s+(["'])([^"']+)\1/gi,(W,Q,Y)=>`@import ${Q}${Z(Y)}${Q}`)}function mX(X){let Z=new URL(X.sourceUrl).origin,W=new URL(X.proxyUrlPrefix).pathname,Q=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,(F,L,U)=>`${L}${W}${U}//`).replace(/(\b(?:href|src|action|poster)\s*=\s*["'])\/\//gi,(F,L)=>`${L}${W}https://`).replace(/(\b(?:href|action|poster)\s*=\s*["'])\/(?!\/|browser-kit\/session\/)/gi,(F,L)=>`${L}${W}${Z}/`).replace(/(\bimport\s*\(\s*["'])\/(?!\/|browser-kit\/session\/)([^"']*)(["']\s*\))/g,(F,L,U,w)=>`${L}${W}${Z}/${U}${w}`).replace(/(\bimport\s*\(\s*\\["'])\/(?!\/|browser-kit\/session\/)([^"'\\]*)(\\["']\s*\))/g,(F,L,U,w)=>`${L}${W}${Z}/${U}${w}`);Q=Q.replace(/(<meta[^>]+http-equiv\s*=\s*["']?refresh["']?[^>]*content\s*=\s*["'][^"']*?url\s*=\s*)([^"'\s>]+)/gi,(F,L,U)=>L+E0(U,X.sourceUrl,X.proxyUrlPrefix)),Q=Q.replace(/\bsrcset\s*=\s*["']([^"']*)["']/gi,(F,L)=>{return`srcset="${L.split(",").map((w)=>{let P=w.trim().split(/\s+/),C=P.shift();if(!C)return"";return[/^https?:\/\//i.test(C)||C.startsWith("//")||C.startsWith("/")?E0(C,X.sourceUrl,X.proxyUrlPrefix):C,...P].join(" ")}).filter(Boolean).join(", ")}"`});let Y=EX({sourceUrl:X.sourceUrl,proxyOrigin:X.proxyOrigin,proxyUrlPrefix:X.proxyUrlPrefix,sessionStorageNamespace:X.sessionStorageNamespace}),z=x4({token:X.bridgeToken,sourceUrl:X.sourceUrl,revision:X.revision,navigateUrlPrefix:X.navigateUrlPrefix,originalUrlPrefix:X.proxyUrlPrefix,parentOrigin:X.proxyOrigin}),j=`<base href="${X.proxyUrlPrefix}${X.sourceUrl}"><script data-browser-kit-runtime>${Y}</script><script data-ideawave-browser-bridge>${z}</script>`;if(/<head[^>]*>/i.test(Q))return Q.replace(/<head[^>]*>/i,(F)=>F+j);if(/<html[^>]*>/i.test(Q))return Q.replace(/<html[^>]*>/i,(F)=>F+j);return j+Q}var _X="6";function kX(){return`
937
957
  self.addEventListener("install", (event) => event.waitUntil(self.skipWaiting()));
938
958
  self.addEventListener("activate", (event) => event.waitUntil(self.clients.claim()));
939
959
 
@@ -1052,7 +1072,7 @@ self.addEventListener("fetch", (event) => {
1052
1072
  return proxy(event, route, url.href);
1053
1073
  })());
1054
1074
  });
1055
- `}class i0 extends Error{code;constructor(X,Z){super(Z);this.name="BrowserKitSnapshotError",this.code=X}}class H1 extends i0{constructor(X="Browser snapshot was cancelled"){super("BROWSER_SNAPSHOT_CANCELLED",X);this.name="BrowserKitSnapshotCancelledError"}}class D4 extends i0{constructor(X="Browser snapshot caller disconnected"){super("BROWSER_SNAPSHOT_DISCONNECTED",X);this.name="BrowserKitSnapshotDisconnectedError"}}class D2 extends i0{constructor(X="Browser snapshot timed out"){super("BROWSER_SNAPSHOT_TIMEOUT",X);this.name="BrowserKitSnapshotTimeoutError"}}class $4 extends i0{retryable=!0;constructor(X="Browser snapshot queue is busy; retry shortly"){super("BROWSER_SNAPSHOT_BUSY",X);this.name="BrowserKitSnapshotBusyError"}}class AX{concurrency;maxQueued;active=0;queued=[];constructor(X,Z=Number.POSITIVE_INFINITY){this.concurrency=X;this.maxQueued=Z}async run(X,Z){await this.acquire(X);try{return await Z()}finally{this.release()}}acquire(X){if(X.aborted)return Promise.reject(g0(X));if(this.active<this.concurrency)return this.active+=1,Promise.resolve();if(this.queued.length>=this.maxQueued)return Promise.reject(new $4);return new Promise((Z,W)=>{let Q={resolve:()=>{X.removeEventListener("abort",Q.onAbort),Z()},reject:(Y)=>{X.removeEventListener("abort",Q.onAbort),W(Y)},signal:X,onAbort:()=>{let Y=this.queued.indexOf(Q);if(Y>=0)this.queued.splice(Y,1);Q.reject(g0(X))}};X.addEventListener("abort",Q.onAbort,{once:!0}),this.queued.push(Q)})}release(){let X=this.queued.shift();if(!X){this.active=Math.max(0,this.active-1);return}if(X.signal.aborted){X.reject(g0(X.signal)),this.release();return}X.resolve()}}var WW=1800000,$2="/browser-kit/session/",y4="__browser_kit_client_",QW=5242880,z1=2097152,JW=55000,YW=1,zW=2,VW=12000,jW=4,HW=64,KW=128;function g0(X){if(X.reason instanceof i0)return X.reason;return new H1}function X0(X){if(X.aborted)throw g0(X)}function k1(){return new Promise((X)=>setImmediate(X))}function IX(X){if(X instanceof i0)return`[${X.code}] ${X.message}`;return X instanceof Error?X.message:String(X)}function UW(X){let Z=X??"";return Z.startsWith("[")?Z.slice(1,Z.indexOf("]")):Z.split(":")[0]??""}function V1(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 h4(X){return"tagName"in X}function N2(X,Z){return X.attrs.find((W)=>W.name.toLowerCase()===Z)?.value??null}function S1(X,Z,W){let Q=X.attrs.find((Y)=>Y.name.toLowerCase()===Z);if(Q)Q.value=W;else X.attrs.push({name:Z,value:W})}function G4(X){return(X.get("content-type")??"application/octet-stream").split(";")[0]?.trim().toLowerCase()??"application/octet-stream"}function M4(X){let Z=G4(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 FW(X){let Z=new URL(X);if(Z.protocol!=="http:"&&Z.protocol!=="https:")throw Error("Browser frontend origin is invalid");return Z.origin}function j1(X){return JSON.stringify(X).replace(/</g,"\\u003c")}function LW(X){return N4("sha256").update(X).digest("hex").slice(0,24)}function SX(X){if(!X.startsWith($2))return null;let Z=X.slice($2.length),W=Z.indexOf("/");if(W<=0)return null;return{sessionId:Z.slice(0,W),route:Z.slice(W)}}function BW(X){let Z=new Headers;for(let[W,Q]of Object.entries(X.headers))if(typeof Q==="string")Z.set(W,Q);else if(Array.isArray(Q))Z.set(W,Q.join(", "));return Z}async function wW(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 qW(X){let Z={};return X.forEach((W,Q)=>{Z[Q]=W}),Z}function PW(X,Z){let Q=`${`${$2}${encodeURIComponent(X.id)}`}/proxy/`;return`<!doctype html>
1075
+ `}class i0 extends Error{code;constructor(X,Z){super(Z);this.name="BrowserKitSnapshotError",this.code=X}}class j1 extends i0{constructor(X="Browser snapshot was cancelled"){super("BROWSER_SNAPSHOT_CANCELLED",X);this.name="BrowserKitSnapshotCancelledError"}}class $4 extends i0{constructor(X="Browser snapshot caller disconnected"){super("BROWSER_SNAPSHOT_DISCONNECTED",X);this.name="BrowserKitSnapshotDisconnectedError"}}class D2 extends i0{constructor(X="Browser snapshot timed out"){super("BROWSER_SNAPSHOT_TIMEOUT",X);this.name="BrowserKitSnapshotTimeoutError"}}class G4 extends i0{retryable=!0;constructor(X="Browser snapshot queue is busy; retry shortly"){super("BROWSER_SNAPSHOT_BUSY",X);this.name="BrowserKitSnapshotBusyError"}}class AX{concurrency;maxQueued;active=0;queued=[];constructor(X,Z=Number.POSITIVE_INFINITY){this.concurrency=X;this.maxQueued=Z}async run(X,Z){await this.acquire(X);try{return await Z()}finally{this.release()}}acquire(X){if(X.aborted)return Promise.reject(g0(X));if(this.active<this.concurrency)return this.active+=1,Promise.resolve();if(this.queued.length>=this.maxQueued)return Promise.reject(new G4);return new Promise((Z,W)=>{let Q={resolve:()=>{X.removeEventListener("abort",Q.onAbort),Z()},reject:(Y)=>{X.removeEventListener("abort",Q.onAbort),W(Y)},signal:X,onAbort:()=>{let Y=this.queued.indexOf(Q);if(Y>=0)this.queued.splice(Y,1);Q.reject(g0(X))}};X.addEventListener("abort",Q.onAbort,{once:!0}),this.queued.push(Q)})}release(){let X=this.queued.shift();if(!X){this.active=Math.max(0,this.active-1);return}if(X.signal.aborted){X.reject(g0(X.signal)),this.release();return}X.resolve()}}var QW=1800000,$2="/browser-kit/session/",h4="__browser_kit_client_",JW=5242880,_1=b4,YW=55000,zW=1,VW=2,jW=12000,HW=4,KW=64,UW=128;function g0(X){if(X.reason instanceof i0)return X.reason;return new j1}function X0(X){if(X.aborted)throw g0(X)}function k1(){return new Promise((X)=>setImmediate(X))}function IX(X){if(X instanceof i0)return`[${X.code}] ${X.message}`;return X instanceof Error?X.message:String(X)}function FW(X){let Z=X??"";return Z.startsWith("[")?Z.slice(1,Z.indexOf("]")):Z.split(":")[0]??""}function z1(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 M4(X){return"tagName"in X}function N2(X,Z){return X.attrs.find((W)=>W.name.toLowerCase()===Z)?.value??null}function S1(X,Z,W){let Q=X.attrs.find((Y)=>Y.name.toLowerCase()===Z);if(Q)Q.value=W;else X.attrs.push({name:Z,value:W})}function E4(X){return(X.get("content-type")??"application/octet-stream").split(";")[0]?.trim().toLowerCase()??"application/octet-stream"}function N4(X){let Z=E4(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 LW(X){let Z=new URL(X);if(Z.protocol!=="http:"&&Z.protocol!=="https:")throw Error("Browser frontend origin is invalid");return Z.origin}function V1(X){return JSON.stringify(X).replace(/</g,"\\u003c")}function BW(X){return D4("sha256").update(X).digest("hex").slice(0,24)}function SX(X){if(!X.startsWith($2))return null;let Z=X.slice($2.length),W=Z.indexOf("/");if(W<=0)return null;return{sessionId:Z.slice(0,W),route:Z.slice(W)}}function wW(X){let Z=new Headers;for(let[W,Q]of Object.entries(X.headers))if(typeof Q==="string")Z.set(W,Q);else if(Array.isArray(Q))Z.set(W,Q.join(", "));return Z}async function qW(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 PW(X){let Z={};return X.forEach((W,Q)=>{Z[Q]=W}),Z}function bW(X,Z){let Q=`${`${$2}${encodeURIComponent(X.id)}`}/proxy/`;return`<!doctype html>
1056
1076
  <html>
1057
1077
  <head>
1058
1078
  <meta charset="utf-8">
@@ -1069,11 +1089,11 @@ html,body,#view{border:0;margin:0;width:100%;height:100%;overflow:hidden;backgro
1069
1089
  <div id="status" hidden></div>
1070
1090
  <script>
1071
1091
  (() => {
1072
- const TOKEN = ${j1(X.bridgeToken)};
1073
- const FRONTEND_ORIGIN = ${j1(X.frontendOrigin)};
1074
- const INITIAL_URL = ${j1(Z)};
1075
- const PROXY_PATH_PREFIX = ${j1(Q)};
1076
- const SERVICE_WORKER_VERSION = ${j1(_X)};
1092
+ const TOKEN = ${V1(X.bridgeToken)};
1093
+ const FRONTEND_ORIGIN = ${V1(X.frontendOrigin)};
1094
+ const INITIAL_URL = ${V1(Z)};
1095
+ const PROXY_PATH_PREFIX = ${V1(Q)};
1096
+ const SERVICE_WORKER_VERSION = ${V1(_X)};
1077
1097
  const frame = document.getElementById("view");
1078
1098
  const status = document.getElementById("status");
1079
1099
  const showError = (error) => {
@@ -1114,7 +1134,7 @@ html,body,#view{border:0;margin:0;width:100%;height:100%;overflow:hidden;backgro
1114
1134
  navigator.serviceWorker.addEventListener("controllerchange", changed);
1115
1135
  });
1116
1136
  };
1117
- navigator.serviceWorker.register(${j1(`/browser-kit/sw.js?v=${_X}`)}, { scope: "/" })
1137
+ navigator.serviceWorker.register(${V1(`/browser-kit/sw.js?v=${_X}`)}, { scope: "/" })
1118
1138
  .then(waitForCurrentWorker)
1119
1139
  .then(() => {
1120
1140
  frame.src = PROXY_PATH_PREFIX + INITIAL_URL;
@@ -1123,32 +1143,32 @@ html,body,#view{border:0;margin:0;width:100%;height:100%;overflow:hidden;backgro
1123
1143
  })();
1124
1144
  </script>
1125
1145
  </body>
1126
- </html>`}class G2{sessions=new Map;profiles=new Map;socketServer=new ZW({noServer:!0});sweepTimer;snapshotBuildTimeoutMs;snapshotBuildLimiter;snapshotResourceTimeoutMs;snapshotResourceConcurrency;snapshotResourceLimitBytes;snapshotResourceCount;snapshotsByFrontendSession=new Map;snapshotsByFrontendProxySession=new Map;snapshotsByProxySession=new Map;sharedSnapshotBuilds=new Map;port=null;constructor(X={}){this.snapshotBuildTimeoutMs=X.snapshotBuildTimeoutMs??JW,this.snapshotBuildLimiter=new AX(Math.max(1,X.snapshotBuildConcurrency??YW),Math.max(0,X.snapshotBuildQueueLimit??zW)),this.snapshotResourceTimeoutMs=X.snapshotResourceTimeoutMs??VW,this.snapshotResourceConcurrency=Math.max(1,X.snapshotResourceConcurrency??jW),this.snapshotResourceLimitBytes=X.snapshotResourceLimitBytes??QW,this.snapshotResourceCount=Math.max(1,X.snapshotResourceCount??HW),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-${LW(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`${$2}${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,Q={}){if(W.method==="open_proxy_session"){let Y=W.params;if(typeof Y.browserNodeId!=="string"||typeof Y.url!=="string")throw Error("Browser proxy session input is invalid");let z=V1(Y.url),j=FW(Z),F=this.profileForOrigin(j),L=[...this.sessions.values()].find((w)=>w.frontendOrigin===j&&w.browserNodeId===Y.browserNodeId);if(L)return L.frontendSessionIds.add(X),L.currentUrl=z,L.lastUsedAt=Date.now(),this.result(L);let U={id:f4(),frontendSessionIds:new Set([X]),frontendOrigin:j,browserNodeId:Y.browserNodeId,profile:F,bridgeToken:XW(24).toString("base64url"),currentUrl:z,lastUsedAt:Date.now()};return this.sessions.set(U.id,U),this.result(U)}if(W.method==="close_proxy_session"){let Y=W.params;if(typeof Y.proxySessionId!=="string")throw Error("Browser proxy session input is invalid");let z=this.sessions.get(Y.proxySessionId);if(z&&!z.frontendSessionIds.has(X))throw Error("Browser proxy session belongs to another frontend session");if(z){if(this.abortSnapshotsForFrontendProxySession(X,z.id,new H1("Browser proxy session was closed before its snapshot completed")),z.frontendSessionIds.delete(X),z.lastUsedAt=Date.now(),z.frontendSessionIds.size===0)this.abortSnapshotsForProxy(z.id,new H1("Browser proxy session was closed before its snapshot completed"))}return{closed:!0}}if(W.method==="build_snapshot"){let Y=W.params;if(typeof Y.proxySessionId!=="string"||typeof Y.revision!=="string"||Y.revision.length===0||Y.revision.length>200||typeof Y.html!=="string"||Y.html.length>z1||typeof Y.sourceUrl!=="string"||Y.sourceUrl.length>16384||Y.title!==void 0&&typeof Y.title!=="string"||typeof Y.title==="string"&&Y.title.length>1e4||Y.scrollX!==void 0&&(typeof Y.scrollX!=="number"||!Number.isFinite(Y.scrollX))||Y.scrollY!==void 0&&(typeof Y.scrollY!=="number"||!Number.isFinite(Y.scrollY)))throw Error("Browser snapshot input is invalid");let z=this.sessions.get(Y.proxySessionId);if(!z||!z.frontendSessionIds.has(X))throw Error("Browser proxy session is unavailable");z.lastUsedAt=Date.now();let j=this.startSnapshot(X,z.id,Q.signal);try{return await this.runSnapshot(z,{revision:Y.revision,html:Y.html,sourceUrl:V1(Y.sourceUrl),title:Y.title??"",scrollX:Y.scrollX??0,scrollY:Y.scrollY??0},j)}finally{j.dispose()}}throw Error("Unsupported browser-kit RPC operation")}closeFrontendSession(X){let Z=new D4;this.abortSnapshotsForFrontendSession(X,Z);for(let W of this.sessions.values())if(W.frontendSessionIds.delete(X)){if(W.lastUsedAt=Date.now(),W.frontendSessionIds.size===0)this.abortSnapshotsForProxy(W.id,Z)}}async close(){clearInterval(this.sweepTimer);for(let X of this.snapshotsByFrontendSession.values())for(let Z of X)Z.abort(new H1);this.snapshotsByFrontendSession.clear(),this.snapshotsByFrontendProxySession.clear(),this.snapshotsByProxySession.clear();for(let X of this.sharedSnapshotBuilds.values())X.scope.cancel(new H1);this.sharedSnapshotBuilds.clear(),this.sessions.clear(),this.profiles.clear(),this.socketServer.close()}sweep(){let X=Date.now()-WW;for(let Z of this.sessions.values())if(Z.frontendSessionIds.size===0&&Z.lastUsedAt<X)this.sessions.delete(Z.id)}startSnapshot(X,Z,W){let Q=this.createSnapshotScope(W),Y=(z,j)=>{let F=z.get(j)??new Set;F.add(Q.controller),z.set(j,F)};return Y(this.snapshotsByFrontendSession,X),Y(this.snapshotsByFrontendProxySession,this.frontendProxySnapshotKey(X,Z)),Y(this.snapshotsByProxySession,Z),{...Q,dispose:()=>{Q.dispose(),this.removeSnapshotController(this.snapshotsByFrontendSession,X,Q.controller),this.removeSnapshotController(this.snapshotsByFrontendProxySession,this.frontendProxySnapshotKey(X,Z),Q.controller),this.removeSnapshotController(this.snapshotsByProxySession,Z,Q.controller)}}}createSnapshotScope(X){let Z=new AbortController,W=Date.now()+this.snapshotBuildTimeoutMs,Q=setTimeout(()=>Z.abort(new D2),this.snapshotBuildTimeoutMs);Q.unref?.();let Y=()=>{Z.abort(X?.reason)};if(X?.aborted)Y();else X?.addEventListener("abort",Y,{once:!0});return{controller:Z,signal:Z.signal,deadline:W,cancel:(z)=>Z.abort(z),dispose:()=>{clearTimeout(Q),X?.removeEventListener("abort",Y)}}}async runSnapshot(X,Z,W){if(X0(W.signal),Z.html.length>z1||Buffer.byteLength(Z.html,"utf8")>z1)throw Error("Browser snapshot exceeds the CPU work byte limit");let Q=N4("sha256").update(X.id).update("\x00").update(JSON.stringify(Z)).digest("base64url"),Y=this.sharedSnapshotBuilds.get(Q);if(!Y){let z=this.createSnapshotScope(),j={scope:z,consumers:new Set,settled:!1,promise:Promise.resolve(null)};j.promise=this.snapshotBuildLimiter.run(z.signal,()=>this.buildSnapshot(X,Z,z)).finally(()=>{if(j.settled=!0,this.sharedSnapshotBuilds.get(Q)===j)this.sharedSnapshotBuilds.delete(Q);z.dispose()}),this.sharedSnapshotBuilds.set(Q,j),Y=j}return this.attachSnapshotConsumer(Y,W)}attachSnapshotConsumer(X,Z){return new Promise((W,Q)=>{let Y=!1,z=(F)=>{if(Y)return;if(Y=!0,Z.signal.removeEventListener("abort",j),X.consumers.delete(Z),X.consumers.size===0&&!X.settled)X.scope.cancel(g0(Z.signal));F()},j=()=>z(()=>Q(g0(Z.signal)));if(Z.signal.aborted){j();return}X.consumers.add(Z),Z.signal.addEventListener("abort",j,{once:!0}),X.promise.then((F)=>z(()=>W(F)),(F)=>z(()=>Q(F)))})}removeSnapshotController(X,Z,W){let Q=X.get(Z);if(!Q)return;if(Q.delete(W),Q.size===0)X.delete(Z)}abortSnapshotControllers(X,Z){if(!X)return;for(let W of X)W.abort(Z)}abortSnapshotsForFrontendSession(X,Z){this.abortSnapshotControllers(this.snapshotsByFrontendSession.get(X),Z)}frontendProxySnapshotKey(X,Z){return JSON.stringify([X,Z])}abortSnapshotsForFrontendProxySession(X,Z,W){this.abortSnapshotControllers(this.snapshotsByFrontendProxySession.get(this.frontendProxySnapshotKey(X,Z)),W)}abortSnapshotsForProxy(X,Z){this.abortSnapshotControllers(this.snapshotsByProxySession.get(X),Z)}profileForRequest(X){let Z=UW(X.headers.host);return[...this.profiles.values()].find((W)=>Z===`${W.wrapperHost}.localhost`)??null}escapedSessionForProfile(X){let Z=[...this.sessions.values()].filter((Q)=>Q.profile===X),W=Z.filter((Q)=>Q.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 Q of Z){let[Y="",...z]=Q.split(";"),j=Y.indexOf("=");if(j<0)continue;let F=Y.slice(0,j).trim(),L=Y.slice(j+1).trim(),U=W.toLowerCase();for(let P of z){let C=P.indexOf("="),h=(C<0?P:P.slice(0,C)).trim().toLowerCase(),D=C<0?"":P.slice(C+1).trim();if(h==="domain"&&D)U=D.replace(/^\./,"").toLowerCase()}if(!X.cookies.has(U))X.cookies.set(U,new Map);let w=X.cookies.get(U);if(!w)continue;if(L===""||/(^|;)\s*max-age=0/i.test(Q))w.delete(F);else w.set(F,L)}}storeClientCookies(X,Z){if(!Z)return;for(let W of Z.split(";")){let Q=W.trim(),Y=Q.indexOf("=");if(Y<1)continue;let z=Q.slice(0,Y);if(!z.startsWith(y4))continue;let j=z.slice(y4.length).split(".");if(j.length!==2)continue;try{let F=Buffer.from(j[0]??"","base64url").toString(),L=Buffer.from(j[1]??"","base64url").toString(),U=JSON.parse(decodeURIComponent(Q.slice(Y+1))),w=new URL(F).hostname.toLowerCase();if(!L||U.name!==L||typeof U.value!=="string")continue;if(!X.cookies.has(w))X.cookies.set(w,new Map);let P=X.cookies.get(w);if(!P)continue;if(U.deleted===!0)P.delete(L);else P.set(L,U.value)}catch{}}}cookieHeader(X,Z){let W=Z.toLowerCase(),Q=[];for(let[Y,z]of X.cookies)if(W===Y||W.endsWith(`.${Y}`))for(let[j,F]of z)Q.push(`${j}=${F}`);return Q.join("; ")}snapshotTarget(X,Z,W){let Q=Z.trim();if(!Q||/^(?:data|blob|mailto|tel|javascript):/i.test(Q))return null;try{let Y=new URL(Q,this.wrapperOrigin(X));if(Y.origin===this.wrapperOrigin(X)&&Y.pathname.startsWith(this.proxyPathPrefix(X)))return V1(Y.pathname.slice(this.proxyPathPrefix(X).length)+Y.search+Y.hash);return V1(new URL(Q,W).href)}catch{return null}}async fetchSnapshotResource(X,Z,W){X0(W.signal);let Q=V1(Z),Y=W.resources.get(Q);if(Y)return Y;if(W.resources.size>=this.snapshotResourceCount)throw Error("Browser snapshot has too many resources to inline");let z=W.limiter.run(W.signal,async()=>{X0(W.signal);let j=W.deadline-Date.now();if(j<=0)throw new D2;let F=new AbortController,L=setTimeout(()=>F.abort(new D2("Browser snapshot resource timed out")),Math.min(this.snapshotResourceTimeoutMs,j));L.unref?.();let U=()=>F.abort(W.signal.reason);if(W.signal.aborted)U();else W.signal.addEventListener("abort",U,{once:!0});try{let w=Q,P=null;for(let h=0;;h+=1){X0(F.signal);let D=new URL(w),G=new Headers({accept:"*/*",referer:`${D.origin}/`}),N=this.cookieHeader(X.profile,D.hostname);if(N)G.set("cookie",N);P=await fetch(w,{method:"GET",headers:G,redirect:"manual",signal:F.signal});let v=P.headers.getSetCookie,O=typeof v==="function"?v.call(P.headers):[];if(O.length>0)this.storeCookies(X.profile,O,D.hostname);let M=P.headers.get("location");if(P.status>=300&&P.status<400&&M&&h<15){w=new URL(M,w).href;continue}break}if(!P?.ok)throw Error(`Snapshot resource returned ${P?.status??502}`);let C=await this.readSnapshotResource(P,W,F.signal);return{url:w,headers:P.headers,body:C}}catch(w){if(W.signal.aborted)throw g0(W.signal);if(F.signal.aborted)throw g0(F.signal);throw w}finally{clearTimeout(L),W.signal.removeEventListener("abort",U)}});return W.resources.set(Q,z),z}async readSnapshotResource(X,Z,W){let Q=Number(X.headers.get("content-length"));if(Number.isFinite(Q)&&(Q>this.snapshotResourceLimitBytes||Z.totalBytes+Q>z1))throw await X.body?.cancel().catch(()=>{return}),Error("Snapshot resource exceeds the configured byte limit");if(!X.body)return Buffer.alloc(0);let Y=X.body.getReader(),z=[],j=0,F=0;try{for(;;){X0(W);let{done:L,value:U}=await Y.read();if(L)break;if(!U||U.byteLength===0)continue;if(F+=U.byteLength,F>this.snapshotResourceLimitBytes)throw Error("Snapshot resource exceeds the configured byte limit");if(Z.totalBytes+U.byteLength>z1)throw Error("Browser snapshot exceeds the CPU work byte limit");if(Z.totalBytes+U.byteLength>_1)throw Error("Browser snapshot exceeds the 20 MiB limit");Z.totalBytes+=U.byteLength,j+=U.byteLength,z.push(Buffer.from(U)),await this.yieldSnapshotWork(Z)}return Buffer.concat(z)}catch(L){throw Z.totalBytes-=j,await Y.cancel().catch(()=>{return}),L}}async inlineSnapshotCss(X,Z,W,Q){try{X0(Q.signal);let Y=a0.parse(Z,{context:"stylesheet",parseCustomProperty:!0,positions:!1}),z=new Set;a0.walk(Y,(L)=>{if(L.type!=="Url")return;let U=this.snapshotTarget(X,L.value,W);if(U)z.add(U)});let j=new Map,F=[...z].slice(0,Math.max(0,this.snapshotResourceCount-Q.resources.size));return await Promise.all(F.map(async(L)=>{try{let U=await this.fetchSnapshotResource(X,L,Q),w=M4(U);if(!w)return;Q.inlinedUrls.add(U.url),j.set(L,w)}catch{X0(Q.signal)}})),a0.walk(Y,{enter:(L,U,w)=>{if(L.type==="Atrule"&&L.name.toLowerCase()==="import"){w.remove(U);return}if(L.type!=="Url")return;let P=this.snapshotTarget(X,L.value,W);L.value=P?j.get(P)??"data:,":"data:,"}}),a0.generate(Y)}catch{return X0(Q.signal),""}}async inlineSnapshotTree(X,Z,W,Q){let Y=[];for(let z of Z.childNodes){if(X0(Q.signal),await this.yieldSnapshotWork(Q),h4(z)){let j=z.tagName.toLowerCase();if(j==="link"&&(N2(z,"rel")??"").toLowerCase().split(/\s+/).includes("stylesheet")){let L=N2(z,"href"),U=L?this.snapshotTarget(X,L,W):null;if(!U)continue;try{let w=await this.fetchSnapshotResource(X,U,Q);if(G4(w.headers)!=="text/css")continue;z.tagName="style",z.nodeName="style",z.attrs=z.attrs.filter((P)=>P.name.toLowerCase()==="media"),z.childNodes=[{nodeName:"#text",value:await this.inlineSnapshotCss(X,w.body.toString("utf8"),w.url,Q),parentNode:z}],Q.inlinedUrls.add(w.url)}catch{X0(Q.signal);continue}}else if(j==="style"){for(let L of z.childNodes)if("value"in L&&typeof L.value==="string")L.value=await this.inlineSnapshotCss(X,L.value,W,Q)}let F=N2(z,"style");if(F!==null){let L=await this.inlineSnapshotCss(X,`x{${F}}`,W,Q);S1(z,"style",L.replace(/^x\{/,"").replace(/\}$/,""))}if(j==="img"){let L=N2(z,"src"),U=L?this.snapshotTarget(X,L,W):null;if(U)try{let w=await this.fetchSnapshotResource(X,U,Q),P=M4(w);if(S1(z,"src",P??"data:,"),P)Q.inlinedUrls.add(w.url)}catch{X0(Q.signal),S1(z,"src","data:,")}}await this.inlineSnapshotTree(X,z,W,Q)}Y.push(z)}Z.childNodes=Y}setSnapshotScroll(X,Z,W){for(let Q of X.childNodes){if(!h4(Q))continue;if(Q.tagName.toLowerCase()==="html")return S1(Q,"data-ideawave-scroll-x",String(Z)),S1(Q,"data-ideawave-scroll-y",String(W)),!0;if(this.setSnapshotScroll(Q,Z,W))return!0}return!1}async yieldSnapshotWork(X){if(X.workSinceYield+=1,X.workSinceYield<KW)return;X.workSinceYield=0,X0(X.signal),await k1(),X0(X.signal)}async buildSnapshot(X,Z,W){X0(W.signal);let Q=Buffer.byteLength(Z.html,"utf8");if(Q>z1)throw Error("Browser snapshot exceeds the CPU work byte limit");if(Q>_1)throw Error("Browser snapshot exceeds the 20 MiB limit");await k1(),X0(W.signal);let Y=y2(Z.html);await k1(),X0(W.signal);let z={resources:new Map,inlinedUrls:new Set,totalBytes:Q,signal:W.signal,deadline:W.deadline,limiter:new AX(this.snapshotResourceConcurrency),workSinceYield:0};this.setSnapshotScroll(Y,Z.scrollX,Z.scrollY),await this.inlineSnapshotTree(X,Y,Z.sourceUrl,z),await k1(),X0(W.signal);let j=m1(Y);await k1(),X0(W.signal);let F=R4(j);X0(W.signal);let L=Z.title.trim().slice(0,500)||j.match(/<title[^>]*>([^<]*)<\/title>/i)?.[1]?.trim()||"";return{html:F,sourceUrl:Z.sourceUrl,title:L,revision:Z.revision,byteLength:Buffer.byteLength(F,"utf8"),resourceCount:z.inlinedUrls.size,createdAt:new Date().toISOString()}}async proxy(X,Z,W,Q){let Y=Q.pathname.slice(this.proxyPathPrefix(W).length)+Q.search+Q.hash;if(!/^https?:\/\//i.test(Y)){Z.writeHead(400,{"content-type":"text/plain"}),Z.end(`Bad proxy target: ${Y}`);return}let z=await wW(X),j=X.method??"GET",F=Y,L=z,U=null;this.storeClientCookies(W.profile,X.headers.cookie);for(let G=0;;G+=1){let N=new URL(F),v=BW(X);for(let x of["host","connection","origin","referer","cookie","accept-encoding"])v.delete(x);let O=this.cookieHeader(W.profile,N.hostname);if(O)v.set("cookie",O);v.set("referer",`${N.origin}/`);let M={method:j,headers:v,redirect:"manual",...j!=="GET"&&j!=="HEAD"&&L?{body:L,duplex:"half"}:{}};try{U=await fetch(F,M)}catch(x){Z.writeHead(502,{"content-type":"text/plain"}),Z.end(`Proxy fetch error for ${F}: ${x instanceof Error?x.message:String(x)}`);return}let g=U.headers.getSetCookie,$=typeof g==="function"?g.call(U.headers):[];if($.length>0)this.storeCookies(W.profile,$,N.hostname);let A=U.headers.get("location");if(U.status>=300&&U.status<400&&A&&G<15){if(F=new URL(A,F).href,U.status===303||j==="POST"&&(U.status===301||U.status===302))j="GET",L=void 0;continue}break}if(!U)throw Error("Browser proxy received no response");W.lastUsedAt=Date.now();let w=new Headers;U.headers.forEach((G,N)=>{if(!C4.has(N.toLowerCase()))w.set(N,G)}),w.set("access-control-allow-origin","*"),w.set("access-control-allow-credentials","true");for(let G of["location","content-location"]){let N=w.get(G);if(N)w.set(G,E0(N,F,this.proxyUrlPrefix(W)))}let P=w.get("refresh");if(P){let G=P.toLowerCase().indexOf("url=");if(G>=0)w.set("refresh",P.slice(0,G+4)+E0(P.slice(G+4).trim(),F,this.proxyUrlPrefix(W)))}let C=w.get("link");if(C){let G=C.replace(/<([^>]+)>/g,(N,v)=>`<${E0(v,F,this.proxyUrlPrefix(W))}>`).replace(/;\s*integrity\s*=\s*(?:"[^"]*"|'[^']*'|[^;,\s]+)/gi,"");w.set("link",G)}let h=(U.headers.get("content-type")??"").toLowerCase(),D;if(h.includes("text/html")){let G=f4();D=mX({html:await U.text(),sourceUrl:F,proxyOrigin:this.wrapperOrigin(W),proxyUrlPrefix:this.proxyUrlPrefix(W),bridgeToken:W.bridgeToken,revision:G,navigateUrlPrefix:`${this.wrapperOrigin(W)}${this.sessionPath(W)}/navigate?url=`,sessionStorageNamespace:W.id}),w.delete("etag"),w.delete("last-modified"),w.set("cache-control","no-store"),w.append("set-cookie",`__browser_kit_origin_${W.id}=${encodeURIComponent(new URL(F).origin)}; Path=/; SameSite=Lax`)}else if(h.includes("text/css"))D=gX({css:await U.text(),baseUrl:F,proxyUrlPrefix:this.proxyUrlPrefix(W)}),w.delete("etag"),w.delete("last-modified"),w.set("cache-control","no-store");else D=Buffer.from(await U.arrayBuffer());if(Z.writeHead(U.status,qW(w)),X.method==="HEAD")Z.end();else Z.end(D)}async handleHttpRequest(X,Z){let W=new URL(X.url??"/","http://localhost"),Q=W.pathname.startsWith("/browser-kit/"),Y=this.profileForRequest(X);if(!Y){if(!Q)return!1;return Z.writeHead(404,{"content-type":"text/plain"}),Z.end("Browser-kit profile not found"),!0}if(!Q){let F=this.escapedSessionForProfile(Y);if(!F)return Z.writeHead(409,{"content-type":"text/plain"}),Z.end("Browser-kit request could not be assigned to one active card"),!0;let L=null,U=X.headers.referer;if(U)try{let P=new URL(U),C=SX(P.pathname);if(C?.sessionId===F.id&&C.route.startsWith("/proxy/"))L=new URL(C.route.slice(7)).origin}catch{}if(!L){let P=`__browser_kit_origin_${F.id}=`,C=X.headers.cookie?.split(";").map((h)=>h.trim()).find((h)=>h.startsWith(P));if(C)try{L=decodeURIComponent(C.slice(P.length))}catch{}}if(!L)L=new URL(F.currentUrl).origin;let w=`${L}${W.pathname}${W.search}`;return Z.writeHead(307,{location:`${this.proxyUrlPrefix(F)}${w}`,"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(kX());return!0}let z=SX(W.pathname),j=z?this.sessions.get(z.sessionId):void 0;if(!z||!j||j.profile!==Y)return Z.writeHead(404,{"content-type":"text/plain"}),Z.end("Browser-kit session not found"),!0;if(j.lastUsedAt=Date.now(),z.route==="/wrapper"){if(X.method!=="GET"&&X.method!=="HEAD")return Z.writeHead(405),Z.end(),!0;let F=PW(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(F);return!0}if(z.route==="/navigate"){if(X.method!=="GET"&&X.method!=="HEAD")return Z.writeHead(405),Z.end(),!0;let F=W.searchParams.get("url");if(!F)return Z.writeHead(400),Z.end(),!0;return j.currentUrl=V1(F),Z.writeHead(307,{location:`${this.proxyUrlPrefix(j)}${j.currentUrl}`,"cache-control":"no-store"}),Z.end(),!0}if(z.route.startsWith("/proxy/"))return await this.proxy(X,Z,j,W),!0;return Z.writeHead(404),Z.end(),!0}handleUpgrade(X,Z,W){let Q=new URL(X.url??"/","http://localhost"),Y=SX(Q.pathname);if(!Y?.route.startsWith("/proxy/"))return!1;let z=this.profileForRequest(X),j=this.sessions.get(Y.sessionId);if(!z||!j||j.profile!==z)return Z.destroy(),!0;let F=Y.route.slice(7)+Q.search+Q.hash;if(!/^wss?:\/\//i.test(F))return Z.destroy(),!0;return this.socketServer.handleUpgrade(X,Z,W,(L)=>{let U;try{let P=new URL(F),C={origin:P.origin},h=this.cookieHeader(j.profile,P.hostname);if(h)C.cookie=h;U=new M2(F,{headers:C})}catch{L.close(1011,"bad target");return}let w=[];U.binaryType="arraybuffer",U.on("open",()=>{for(let P of w)U.send(P);w.length=0}),L.on("message",(P)=>{if(U.readyState===M2.OPEN)U.send(P);else w.push(P)}),U.on("message",(P)=>{if(L.readyState===M2.OPEN)L.send(P)}),L.on("close",()=>U.close()),L.on("error",()=>U.close()),U.on("close",(P,C)=>{if(L.readyState===M2.OPEN)L.close(P>=1000&&P<=4999?P:1000,C.toString())}),U.on("error",()=>L.close(1011,"upstream error"))}),!0}}function bW(X){if(!X)return null;let Z=X.indexOf("/");if(Z<=0)return null;return X.slice(0,Z)}function E2(X){let Z=[...X.models];if(X.adapterId!=="opencode"||Z.length===0)return Z;let W=bW(X.currentModelId)??(Z.some((Y)=>Y.id.startsWith("opencode/"))?"opencode":null);if(!W)return Z;let Q=Z.filter((Y)=>Y.id===X.currentModelId||Y.id.startsWith(`${W}/`));return Q.length>0?Q:Z}import{Readable as IW,Writable as TW}from"node:stream";import{ClientSideConnection as r4,ndJsonStream as s4}from"@agentclientprotocol/sdk";import m0 from"node:fs/promises";import H0 from"node:path";class I1 extends Error{constructor(X){super(X);this.name="PathTraversalError"}}class lX extends Error{constructor(X){super(X);this.name="HiddenPathError"}}class uX extends Error{constructor(X){super(X);this.name="RunFolderFileTooLargeError"}}class A1 extends Error{constructor(X){super(X);this.name="RunFolderBinaryFileError"}}var xW=new Set([".bzr",".cache",".claude",".config",".env",".git",".hg",".idea",".obsidian",".svn",".vscode","node_modules"]),E4=1e6,OW=4096,RW=new TextDecoder("utf-8",{fatal:!0});function vW(X){return X.split(/[\\/]+/).filter((Z)=>Z.length>0)}function g2(X){if(H0.isAbsolute(X))throw new I1("Absolute paths are not allowed");for(let Z of vW(X)){if(Z===".")continue;if(Z==="..")throw new I1("Parent-directory traversal is not allowed");if(Z.startsWith(".")||xW.has(Z))throw new lX(`Path segment "${Z}" is hidden or configuration data`)}}function CW(X){g2(X);let Z=H0.normalize(X||".");return Z==="."?"":Z}function fW(X,Z,W){let Q=H0.relative(X,Z);if(Q===".."||Q.startsWith(`..${H0.sep}`)||H0.isAbsolute(Q))throw new I1(`Path "${W}" resolves outside the run folder`);if(Q.length>0)g2(Q);return Q}async function TX(X,Z){g2(Z);let W=H0.resolve(X,Z||"."),Q;try{Q=await m0.realpath(W)}catch(Y){if(Y.code!=="ENOENT")throw Y;let z=H0.dirname(W),j=[H0.basename(W)];while(z!==X&&z!==H0.dirname(z))try{z=await m0.realpath(z);break}catch(F){if(F.code!=="ENOENT")throw F;j.unshift(H0.basename(z)),z=H0.dirname(z)}Q=H0.join(z,...j)}return fW(X,Q,Z),Q}async function yW(X,Z){let W=await m0.realpath(X);return TX(W,Z)}function hW(X){let Z=X.subarray(0,Math.min(X.length,OW));if(Z.length===0)return!1;let W=0;for(let Q of Z){if(Q===0)return!0;let Y=Q===9||Q===10||Q===12||Q===13;if(Q<32&&!Y)W+=1}return W/Z.length>0.3}async function m2(X,Z){let W=await yW(X,Z),Q=await m0.stat(W);if(!Q.isFile())throw new A1(`Path "${Z}" is not a text file`);if(Q.size>E4)throw new uX(`File "${Z}" is too large to read (${Q.size} bytes, max ${E4} bytes)`);let Y=await m0.readFile(W);if(hW(Y))throw new A1(`File "${Z}" appears to be binary, not text`);try{return RW.decode(Y)}catch{throw new A1(`File "${Z}" is not valid UTF-8 text`)}}function MW(X){if(X.isDirectory())return"directory";if(X.isFile())return"file";if(X.isSymbolicLink())return"symlink";return"other"}function g4(X){return X.split(H0.sep).join("/")}async function m4(X,Z=""){let W=await m0.realpath(X),Q=CW(Z),Y=await TX(W,Q),z=await m0.readdir(Y,{withFileTypes:!0}),j=[];for(let F of z){let L=Q?H0.join(Q,F.name):F.name;try{g2(L);let U=await TX(W,L),w=await m0.stat(U);j.push({name:F.name,path:g4(L),type:MW(F),size:F.isFile()?w.size:null})}catch{}}return j.sort((F,L)=>{if(F.type==="directory"&&L.type!=="directory")return-1;if(F.type!=="directory"&&L.type==="directory")return 1;return F.name.localeCompare(L.name)}),{path:g4(Q),absolutePath:Y,entries:j}}var cX={fs:{readTextFile:!0,writeTextFile:!1},terminal:!1},_4={fs:{readTextFile:!1,writeTextFile:!1},terminal:!1};function k4(X){return{readTextFile:async(Z)=>{return{content:await m2(X,Z.path)}}}}import{spawn as NW}from"node:child_process";function dX(X){let Z=NW(X.command,X.args,{cwd:X.cwd,env:X.env,stdio:["pipe","pipe","pipe"],...W2(X.command)});if(!Z.stdin||!Z.stdout||!Z.stderr)throw Error("Failed to allocate stdio streams for ACP subprocess");let{stdin:W,stdout:Q,stderr:Y}=Z,z=4096,j=[],F=0;Y.on("data",(N)=>{j.push(N),F+=N.length;while(F>z*2&&j.length>1){let v=j.shift();if(v)F-=v.length}});let L=()=>{let N=Buffer.concat(j).toString("utf8");return N.length>z?N.slice(-z):N},U=!1,w=!1,P,C,h=new Promise((N)=>{P=N}),D=new Promise((N)=>{C=N}),G=(N)=>{if(w)return;if(w=!0,P(N),!U)C(N)};return Z.on("exit",(N,v)=>{G({code:N,signal:v,stderr:L()})}),Z.on("error",(N)=>{let v=L(),O=N?.message??String(N);G({code:null,signal:null,stderr:v?`${O}
1127
- ${v}`:O})}),{stdin:W,stdout:Q,stderr:Y,kill:(N="SIGTERM")=>{if(U)return;U=!0;try{Z.kill(N)}catch{}},waitForExit:h,processCrashed:D}}var DW=["mcp_ideawave_board_","ideawave_board_","ideawave-board_","ideawave-board.","ideawave.board."];function $W(X){let Z=X.toLowerCase();for(let W of DW)if(Z.startsWith(W))return X.slice(W.length);if(/^mcp[-_.]/i.test(X))return X.slice(4);return X}function K1(X){return $W(X.trim())}function aX(X){let Z=K1(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 iX(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 pX(X){if(typeof X!=="string")return null;let Z=X.trim();return Z?Z:null}function S4(X){if(typeof X!=="string")return"Tool";let Z=X.trim();return Z?Z:"Tool"}function GW(X,Z){if(!X||typeof X!=="object"||Array.isArray(X))return null;let W=X;for(let Q of Z){let Y=W[Q];if(typeof Y==="string"&&Y.trim())return Y.trim()}return null}function rX(X,Z){let W=X.trim().toLowerCase();if(W==="skill"||W==="workflow"||W==="tool"||W==="invalid"){let Q=GW(Z,["skillName","workflowName","toolName","name","title"]);if(Q){let Y=W==="skill"?" skill":W==="workflow"?" workflow":"";return`${aX(Q)}${Y}`}}if(W==="invalid")return"Tool call";return aX(X)}var EW=33,A4=1600;function p0(X){if(X.length<=A4)return X;return`${X.slice(0,A4-22)}
1146
+ </html>`}class G2{sessions=new Map;profiles=new Map;socketServer=new WW({noServer:!0});sweepTimer;snapshotBuildTimeoutMs;snapshotBuildLimiter;snapshotResourceTimeoutMs;snapshotResourceConcurrency;snapshotResourceLimitBytes;snapshotResourceCount;snapshotsByFrontendSession=new Map;snapshotsByFrontendProxySession=new Map;snapshotsByProxySession=new Map;sharedSnapshotBuilds=new Map;port=null;constructor(X={}){this.snapshotBuildTimeoutMs=X.snapshotBuildTimeoutMs??YW,this.snapshotBuildLimiter=new AX(Math.max(1,X.snapshotBuildConcurrency??zW),Math.max(0,X.snapshotBuildQueueLimit??VW)),this.snapshotResourceTimeoutMs=X.snapshotResourceTimeoutMs??jW,this.snapshotResourceConcurrency=Math.max(1,X.snapshotResourceConcurrency??HW),this.snapshotResourceLimitBytes=X.snapshotResourceLimitBytes??JW,this.snapshotResourceCount=Math.max(1,X.snapshotResourceCount??KW),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-${BW(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`${$2}${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,Q={}){if(W.method==="open_proxy_session"){let Y=W.params;if(typeof Y.browserNodeId!=="string"||typeof Y.url!=="string")throw Error("Browser proxy session input is invalid");let z=z1(Y.url),j=LW(Z),F=this.profileForOrigin(j),L=[...this.sessions.values()].find((w)=>w.frontendOrigin===j&&w.browserNodeId===Y.browserNodeId);if(L)return L.frontendSessionIds.add(X),L.currentUrl=z,L.lastUsedAt=Date.now(),this.result(L);let U={id:y4(),frontendSessionIds:new Set([X]),frontendOrigin:j,browserNodeId:Y.browserNodeId,profile:F,bridgeToken:ZW(24).toString("base64url"),currentUrl:z,lastUsedAt:Date.now()};return this.sessions.set(U.id,U),this.result(U)}if(W.method==="close_proxy_session"){let Y=W.params;if(typeof Y.proxySessionId!=="string")throw Error("Browser proxy session input is invalid");let z=this.sessions.get(Y.proxySessionId);if(z&&!z.frontendSessionIds.has(X))throw Error("Browser proxy session belongs to another frontend session");if(z){if(this.abortSnapshotsForFrontendProxySession(X,z.id,new j1("Browser proxy session was closed before its snapshot completed")),z.frontendSessionIds.delete(X),z.lastUsedAt=Date.now(),z.frontendSessionIds.size===0)this.abortSnapshotsForProxy(z.id,new j1("Browser proxy session was closed before its snapshot completed"))}return{closed:!0}}if(W.method==="build_snapshot"){let Y=W.params;if(typeof Y.proxySessionId!=="string"||typeof Y.revision!=="string"||Y.revision.length===0||Y.revision.length>200||typeof Y.html!=="string"||typeof Y.sourceUrl!=="string"||Y.sourceUrl.length>16384||Y.title!==void 0&&typeof Y.title!=="string"||typeof Y.title==="string"&&Y.title.length>1e4||Y.scrollX!==void 0&&(typeof Y.scrollX!=="number"||!Number.isFinite(Y.scrollX))||Y.scrollY!==void 0&&(typeof Y.scrollY!=="number"||!Number.isFinite(Y.scrollY)))throw Error("Browser snapshot input is invalid");let z=this.sessions.get(Y.proxySessionId);if(!z||!z.frontendSessionIds.has(X))throw Error("Browser proxy session is unavailable");z.lastUsedAt=Date.now();let j=this.startSnapshot(X,z.id,Q.signal);try{return await this.runSnapshot(z,{revision:Y.revision,html:Y.html,sourceUrl:z1(Y.sourceUrl),title:Y.title??"",scrollX:Y.scrollX??0,scrollY:Y.scrollY??0},j)}finally{j.dispose()}}throw Error("Unsupported browser-kit RPC operation")}closeFrontendSession(X){let Z=new $4;this.abortSnapshotsForFrontendSession(X,Z);for(let W of this.sessions.values())if(W.frontendSessionIds.delete(X)){if(W.lastUsedAt=Date.now(),W.frontendSessionIds.size===0)this.abortSnapshotsForProxy(W.id,Z)}}async close(){clearInterval(this.sweepTimer);for(let X of this.snapshotsByFrontendSession.values())for(let Z of X)Z.abort(new j1);this.snapshotsByFrontendSession.clear(),this.snapshotsByFrontendProxySession.clear(),this.snapshotsByProxySession.clear();for(let X of this.sharedSnapshotBuilds.values())X.scope.cancel(new j1);this.sharedSnapshotBuilds.clear(),this.sessions.clear(),this.profiles.clear(),this.socketServer.close()}sweep(){let X=Date.now()-QW;for(let Z of this.sessions.values())if(Z.frontendSessionIds.size===0&&Z.lastUsedAt<X)this.sessions.delete(Z.id)}startSnapshot(X,Z,W){let Q=this.createSnapshotScope(W),Y=(z,j)=>{let F=z.get(j)??new Set;F.add(Q.controller),z.set(j,F)};return Y(this.snapshotsByFrontendSession,X),Y(this.snapshotsByFrontendProxySession,this.frontendProxySnapshotKey(X,Z)),Y(this.snapshotsByProxySession,Z),{...Q,dispose:()=>{Q.dispose(),this.removeSnapshotController(this.snapshotsByFrontendSession,X,Q.controller),this.removeSnapshotController(this.snapshotsByFrontendProxySession,this.frontendProxySnapshotKey(X,Z),Q.controller),this.removeSnapshotController(this.snapshotsByProxySession,Z,Q.controller)}}}createSnapshotScope(X){let Z=new AbortController,W=Date.now()+this.snapshotBuildTimeoutMs,Q=setTimeout(()=>Z.abort(new D2),this.snapshotBuildTimeoutMs);Q.unref?.();let Y=()=>{Z.abort(X?.reason)};if(X?.aborted)Y();else X?.addEventListener("abort",Y,{once:!0});return{controller:Z,signal:Z.signal,deadline:W,cancel:(z)=>Z.abort(z),dispose:()=>{clearTimeout(Q),X?.removeEventListener("abort",Y)}}}async runSnapshot(X,Z,W){if(X0(W.signal),Z.html.length>_1||Buffer.byteLength(Z.html,"utf8")>_1)throw Error("Browser snapshot exceeds the CPU work byte limit");let Q=D4("sha256").update(X.id).update("\x00").update(JSON.stringify(Z)).digest("base64url"),Y=this.sharedSnapshotBuilds.get(Q);if(!Y){let z=this.createSnapshotScope(),j={scope:z,consumers:new Set,settled:!1,promise:Promise.resolve(null)};j.promise=this.snapshotBuildLimiter.run(z.signal,()=>this.buildSnapshot(X,Z,z)).finally(()=>{if(j.settled=!0,this.sharedSnapshotBuilds.get(Q)===j)this.sharedSnapshotBuilds.delete(Q);z.dispose()}),this.sharedSnapshotBuilds.set(Q,j),Y=j}return this.attachSnapshotConsumer(Y,W)}attachSnapshotConsumer(X,Z){return new Promise((W,Q)=>{let Y=!1,z=(F)=>{if(Y)return;if(Y=!0,Z.signal.removeEventListener("abort",j),X.consumers.delete(Z),X.consumers.size===0&&!X.settled)X.scope.cancel(g0(Z.signal));F()},j=()=>z(()=>Q(g0(Z.signal)));if(Z.signal.aborted){j();return}X.consumers.add(Z),Z.signal.addEventListener("abort",j,{once:!0}),X.promise.then((F)=>z(()=>W(F)),(F)=>z(()=>Q(F)))})}removeSnapshotController(X,Z,W){let Q=X.get(Z);if(!Q)return;if(Q.delete(W),Q.size===0)X.delete(Z)}abortSnapshotControllers(X,Z){if(!X)return;for(let W of X)W.abort(Z)}abortSnapshotsForFrontendSession(X,Z){this.abortSnapshotControllers(this.snapshotsByFrontendSession.get(X),Z)}frontendProxySnapshotKey(X,Z){return JSON.stringify([X,Z])}abortSnapshotsForFrontendProxySession(X,Z,W){this.abortSnapshotControllers(this.snapshotsByFrontendProxySession.get(this.frontendProxySnapshotKey(X,Z)),W)}abortSnapshotsForProxy(X,Z){this.abortSnapshotControllers(this.snapshotsByProxySession.get(X),Z)}profileForRequest(X){let Z=FW(X.headers.host);return[...this.profiles.values()].find((W)=>Z===`${W.wrapperHost}.localhost`)??null}escapedSessionForProfile(X){let Z=[...this.sessions.values()].filter((Q)=>Q.profile===X),W=Z.filter((Q)=>Q.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 Q of Z){let[Y="",...z]=Q.split(";"),j=Y.indexOf("=");if(j<0)continue;let F=Y.slice(0,j).trim(),L=Y.slice(j+1).trim(),U=W.toLowerCase();for(let P of z){let C=P.indexOf("="),h=(C<0?P:P.slice(0,C)).trim().toLowerCase(),D=C<0?"":P.slice(C+1).trim();if(h==="domain"&&D)U=D.replace(/^\./,"").toLowerCase()}if(!X.cookies.has(U))X.cookies.set(U,new Map);let w=X.cookies.get(U);if(!w)continue;if(L===""||/(^|;)\s*max-age=0/i.test(Q))w.delete(F);else w.set(F,L)}}storeClientCookies(X,Z){if(!Z)return;for(let W of Z.split(";")){let Q=W.trim(),Y=Q.indexOf("=");if(Y<1)continue;let z=Q.slice(0,Y);if(!z.startsWith(h4))continue;let j=z.slice(h4.length).split(".");if(j.length!==2)continue;try{let F=Buffer.from(j[0]??"","base64url").toString(),L=Buffer.from(j[1]??"","base64url").toString(),U=JSON.parse(decodeURIComponent(Q.slice(Y+1))),w=new URL(F).hostname.toLowerCase();if(!L||U.name!==L||typeof U.value!=="string")continue;if(!X.cookies.has(w))X.cookies.set(w,new Map);let P=X.cookies.get(w);if(!P)continue;if(U.deleted===!0)P.delete(L);else P.set(L,U.value)}catch{}}}cookieHeader(X,Z){let W=Z.toLowerCase(),Q=[];for(let[Y,z]of X.cookies)if(W===Y||W.endsWith(`.${Y}`))for(let[j,F]of z)Q.push(`${j}=${F}`);return Q.join("; ")}snapshotTarget(X,Z,W){let Q=Z.trim();if(!Q||/^(?:data|blob|mailto|tel|javascript):/i.test(Q))return null;try{let Y=new URL(Q,this.wrapperOrigin(X));if(Y.origin===this.wrapperOrigin(X)&&Y.pathname.startsWith(this.proxyPathPrefix(X)))return z1(Y.pathname.slice(this.proxyPathPrefix(X).length)+Y.search+Y.hash);return z1(new URL(Q,W).href)}catch{return null}}async fetchSnapshotResource(X,Z,W){X0(W.signal);let Q=z1(Z),Y=W.resources.get(Q);if(Y)return Y;if(W.resources.size>=this.snapshotResourceCount)throw Error("Browser snapshot has too many resources to inline");let z=W.limiter.run(W.signal,async()=>{X0(W.signal);let j=W.deadline-Date.now();if(j<=0)throw new D2;let F=new AbortController,L=setTimeout(()=>F.abort(new D2("Browser snapshot resource timed out")),Math.min(this.snapshotResourceTimeoutMs,j));L.unref?.();let U=()=>F.abort(W.signal.reason);if(W.signal.aborted)U();else W.signal.addEventListener("abort",U,{once:!0});try{let w=Q,P=null;for(let h=0;;h+=1){X0(F.signal);let D=new URL(w),G=new Headers({accept:"*/*",referer:`${D.origin}/`}),N=this.cookieHeader(X.profile,D.hostname);if(N)G.set("cookie",N);P=await fetch(w,{method:"GET",headers:G,redirect:"manual",signal:F.signal});let v=P.headers.getSetCookie,O=typeof v==="function"?v.call(P.headers):[];if(O.length>0)this.storeCookies(X.profile,O,D.hostname);let M=P.headers.get("location");if(P.status>=300&&P.status<400&&M&&h<15){w=new URL(M,w).href;continue}break}if(!P?.ok)throw Error(`Snapshot resource returned ${P?.status??502}`);let C=await this.readSnapshotResource(P,W,F.signal);return{url:w,headers:P.headers,body:C}}catch(w){if(W.signal.aborted)throw g0(W.signal);if(F.signal.aborted)throw g0(F.signal);throw w}finally{clearTimeout(L),W.signal.removeEventListener("abort",U)}});return W.resources.set(Q,z),z}async readSnapshotResource(X,Z,W){let Q=Number(X.headers.get("content-length"));if(Number.isFinite(Q)&&(Q>this.snapshotResourceLimitBytes||Z.totalBytes+Q>_1))throw await X.body?.cancel().catch(()=>{return}),Error("Snapshot resource exceeds the configured byte limit");if(!X.body)return Buffer.alloc(0);let Y=X.body.getReader(),z=[],j=0,F=0;try{for(;;){X0(W);let{done:L,value:U}=await Y.read();if(L)break;if(!U||U.byteLength===0)continue;if(F+=U.byteLength,F>this.snapshotResourceLimitBytes)throw Error("Snapshot resource exceeds the configured byte limit");if(Z.totalBytes+U.byteLength>_1)throw Error("Browser snapshot exceeds the CPU work byte limit");if(Z.totalBytes+U.byteLength>m1)throw Error("Browser snapshot exceeds the 20 MiB limit");Z.totalBytes+=U.byteLength,j+=U.byteLength,z.push(Buffer.from(U)),await this.yieldSnapshotWork(Z)}return Buffer.concat(z)}catch(L){throw Z.totalBytes-=j,await Y.cancel().catch(()=>{return}),L}}async inlineSnapshotCss(X,Z,W,Q){try{X0(Q.signal);let Y=a0.parse(Z,{context:"stylesheet",parseCustomProperty:!0,positions:!1}),z=new Set;a0.walk(Y,(L)=>{if(L.type!=="Url")return;let U=this.snapshotTarget(X,L.value,W);if(U)z.add(U)});let j=new Map,F=[...z].slice(0,Math.max(0,this.snapshotResourceCount-Q.resources.size));return await Promise.all(F.map(async(L)=>{try{let U=await this.fetchSnapshotResource(X,L,Q),w=N4(U);if(!w)return;Q.inlinedUrls.add(U.url),j.set(L,w)}catch{X0(Q.signal)}})),a0.walk(Y,{enter:(L,U,w)=>{if(L.type==="Atrule"&&L.name.toLowerCase()==="import"){w.remove(U);return}if(L.type!=="Url")return;let P=this.snapshotTarget(X,L.value,W);L.value=P?j.get(P)??"data:,":"data:,"}}),a0.generate(Y)}catch{return X0(Q.signal),""}}async inlineSnapshotTree(X,Z,W,Q){let Y=[];for(let z of Z.childNodes){if(X0(Q.signal),await this.yieldSnapshotWork(Q),M4(z)){let j=z.tagName.toLowerCase();if(j==="link"&&(N2(z,"rel")??"").toLowerCase().split(/\s+/).includes("stylesheet")){let L=N2(z,"href"),U=L?this.snapshotTarget(X,L,W):null;if(!U)continue;try{let w=await this.fetchSnapshotResource(X,U,Q);if(E4(w.headers)!=="text/css")continue;z.tagName="style",z.nodeName="style",z.attrs=z.attrs.filter((P)=>P.name.toLowerCase()==="media"),z.childNodes=[{nodeName:"#text",value:await this.inlineSnapshotCss(X,w.body.toString("utf8"),w.url,Q),parentNode:z}],Q.inlinedUrls.add(w.url)}catch{X0(Q.signal);continue}}else if(j==="style"){for(let L of z.childNodes)if("value"in L&&typeof L.value==="string")L.value=await this.inlineSnapshotCss(X,L.value,W,Q)}let F=N2(z,"style");if(F!==null){let L=await this.inlineSnapshotCss(X,`x{${F}}`,W,Q);S1(z,"style",L.replace(/^x\{/,"").replace(/\}$/,""))}if(j==="img"){let L=N2(z,"src"),U=L?this.snapshotTarget(X,L,W):null;if(U)try{let w=await this.fetchSnapshotResource(X,U,Q),P=N4(w);if(S1(z,"src",P??"data:,"),P)Q.inlinedUrls.add(w.url)}catch{X0(Q.signal),S1(z,"src","data:,")}}await this.inlineSnapshotTree(X,z,W,Q)}Y.push(z)}Z.childNodes=Y}setSnapshotScroll(X,Z,W){for(let Q of X.childNodes){if(!M4(Q))continue;if(Q.tagName.toLowerCase()==="html")return S1(Q,"data-ideawave-scroll-x",String(Z)),S1(Q,"data-ideawave-scroll-y",String(W)),!0;if(this.setSnapshotScroll(Q,Z,W))return!0}return!1}async yieldSnapshotWork(X){if(X.workSinceYield+=1,X.workSinceYield<UW)return;X.workSinceYield=0,X0(X.signal),await k1(),X0(X.signal)}async buildSnapshot(X,Z,W){X0(W.signal);let Q=Buffer.byteLength(Z.html,"utf8");if(Q>_1)throw Error("Browser snapshot exceeds the CPU work byte limit");if(Q>m1)throw Error("Browser snapshot exceeds the 20 MiB limit");await k1(),X0(W.signal);let Y=y2(Z.html);await k1(),X0(W.signal);let z={resources:new Map,inlinedUrls:new Set,totalBytes:Q,signal:W.signal,deadline:W.deadline,limiter:new AX(this.snapshotResourceConcurrency),workSinceYield:0};this.setSnapshotScroll(Y,Z.scrollX,Z.scrollY),await this.inlineSnapshotTree(X,Y,Z.sourceUrl,z),await k1(),X0(W.signal);let j=g1(Y);await k1(),X0(W.signal);let F=C4(j);X0(W.signal);let L=Z.title.trim().slice(0,500)||j.match(/<title[^>]*>([^<]*)<\/title>/i)?.[1]?.trim()||"";return{html:F,sourceUrl:Z.sourceUrl,title:L,revision:Z.revision,byteLength:Buffer.byteLength(F,"utf8"),resourceCount:z.inlinedUrls.size,createdAt:new Date().toISOString()}}async proxy(X,Z,W,Q){let Y=Q.pathname.slice(this.proxyPathPrefix(W).length)+Q.search+Q.hash;if(!/^https?:\/\//i.test(Y)){Z.writeHead(400,{"content-type":"text/plain"}),Z.end(`Bad proxy target: ${Y}`);return}let z=await qW(X),j=X.method??"GET",F=Y,L=z,U=null;this.storeClientCookies(W.profile,X.headers.cookie);for(let G=0;;G+=1){let N=new URL(F),v=wW(X);for(let x of["host","connection","origin","referer","cookie","accept-encoding"])v.delete(x);let O=this.cookieHeader(W.profile,N.hostname);if(O)v.set("cookie",O);v.set("referer",`${N.origin}/`);let M={method:j,headers:v,redirect:"manual",...j!=="GET"&&j!=="HEAD"&&L?{body:L,duplex:"half"}:{}};try{U=await fetch(F,M)}catch(x){Z.writeHead(502,{"content-type":"text/plain"}),Z.end(`Proxy fetch error for ${F}: ${x instanceof Error?x.message:String(x)}`);return}let g=U.headers.getSetCookie,$=typeof g==="function"?g.call(U.headers):[];if($.length>0)this.storeCookies(W.profile,$,N.hostname);let A=U.headers.get("location");if(U.status>=300&&U.status<400&&A&&G<15){if(F=new URL(A,F).href,U.status===303||j==="POST"&&(U.status===301||U.status===302))j="GET",L=void 0;continue}break}if(!U)throw Error("Browser proxy received no response");W.lastUsedAt=Date.now();let w=new Headers;U.headers.forEach((G,N)=>{if(!f4.has(N.toLowerCase()))w.set(N,G)}),w.set("access-control-allow-origin","*"),w.set("access-control-allow-credentials","true");for(let G of["location","content-location"]){let N=w.get(G);if(N)w.set(G,E0(N,F,this.proxyUrlPrefix(W)))}let P=w.get("refresh");if(P){let G=P.toLowerCase().indexOf("url=");if(G>=0)w.set("refresh",P.slice(0,G+4)+E0(P.slice(G+4).trim(),F,this.proxyUrlPrefix(W)))}let C=w.get("link");if(C){let G=C.replace(/<([^>]+)>/g,(N,v)=>`<${E0(v,F,this.proxyUrlPrefix(W))}>`).replace(/;\s*integrity\s*=\s*(?:"[^"]*"|'[^']*'|[^;,\s]+)/gi,"");w.set("link",G)}let h=(U.headers.get("content-type")??"").toLowerCase(),D;if(h.includes("text/html")){let G=y4();D=mX({html:await U.text(),sourceUrl:F,proxyOrigin:this.wrapperOrigin(W),proxyUrlPrefix:this.proxyUrlPrefix(W),bridgeToken:W.bridgeToken,revision:G,navigateUrlPrefix:`${this.wrapperOrigin(W)}${this.sessionPath(W)}/navigate?url=`,sessionStorageNamespace:W.id}),w.delete("etag"),w.delete("last-modified"),w.set("cache-control","no-store"),w.append("set-cookie",`__browser_kit_origin_${W.id}=${encodeURIComponent(new URL(F).origin)}; Path=/; SameSite=Lax`)}else if(h.includes("text/css"))D=gX({css:await U.text(),baseUrl:F,proxyUrlPrefix:this.proxyUrlPrefix(W)}),w.delete("etag"),w.delete("last-modified"),w.set("cache-control","no-store");else D=Buffer.from(await U.arrayBuffer());if(Z.writeHead(U.status,PW(w)),X.method==="HEAD")Z.end();else Z.end(D)}async handleHttpRequest(X,Z){let W=new URL(X.url??"/","http://localhost"),Q=W.pathname.startsWith("/browser-kit/"),Y=this.profileForRequest(X);if(!Y){if(!Q)return!1;return Z.writeHead(404,{"content-type":"text/plain"}),Z.end("Browser-kit profile not found"),!0}if(!Q){let F=this.escapedSessionForProfile(Y);if(!F)return Z.writeHead(409,{"content-type":"text/plain"}),Z.end("Browser-kit request could not be assigned to one active card"),!0;let L=null,U=X.headers.referer;if(U)try{let P=new URL(U),C=SX(P.pathname);if(C?.sessionId===F.id&&C.route.startsWith("/proxy/"))L=new URL(C.route.slice(7)).origin}catch{}if(!L){let P=`__browser_kit_origin_${F.id}=`,C=X.headers.cookie?.split(";").map((h)=>h.trim()).find((h)=>h.startsWith(P));if(C)try{L=decodeURIComponent(C.slice(P.length))}catch{}}if(!L)L=new URL(F.currentUrl).origin;let w=`${L}${W.pathname}${W.search}`;return Z.writeHead(307,{location:`${this.proxyUrlPrefix(F)}${w}`,"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(kX());return!0}let z=SX(W.pathname),j=z?this.sessions.get(z.sessionId):void 0;if(!z||!j||j.profile!==Y)return Z.writeHead(404,{"content-type":"text/plain"}),Z.end("Browser-kit session not found"),!0;if(j.lastUsedAt=Date.now(),z.route==="/wrapper"){if(X.method!=="GET"&&X.method!=="HEAD")return Z.writeHead(405),Z.end(),!0;let F=bW(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(F);return!0}if(z.route==="/navigate"){if(X.method!=="GET"&&X.method!=="HEAD")return Z.writeHead(405),Z.end(),!0;let F=W.searchParams.get("url");if(!F)return Z.writeHead(400),Z.end(),!0;return j.currentUrl=z1(F),Z.writeHead(307,{location:`${this.proxyUrlPrefix(j)}${j.currentUrl}`,"cache-control":"no-store"}),Z.end(),!0}if(z.route.startsWith("/proxy/"))return await this.proxy(X,Z,j,W),!0;return Z.writeHead(404),Z.end(),!0}handleUpgrade(X,Z,W){let Q=new URL(X.url??"/","http://localhost"),Y=SX(Q.pathname);if(!Y?.route.startsWith("/proxy/"))return!1;let z=this.profileForRequest(X),j=this.sessions.get(Y.sessionId);if(!z||!j||j.profile!==z)return Z.destroy(),!0;let F=Y.route.slice(7)+Q.search+Q.hash;if(!/^wss?:\/\//i.test(F))return Z.destroy(),!0;return this.socketServer.handleUpgrade(X,Z,W,(L)=>{let U;try{let P=new URL(F),C={origin:P.origin},h=this.cookieHeader(j.profile,P.hostname);if(h)C.cookie=h;U=new M2(F,{headers:C})}catch{L.close(1011,"bad target");return}let w=[];U.binaryType="arraybuffer",U.on("open",()=>{for(let P of w)U.send(P);w.length=0}),L.on("message",(P)=>{if(U.readyState===M2.OPEN)U.send(P);else w.push(P)}),U.on("message",(P)=>{if(L.readyState===M2.OPEN)L.send(P)}),L.on("close",()=>U.close()),L.on("error",()=>U.close()),U.on("close",(P,C)=>{if(L.readyState===M2.OPEN)L.close(P>=1000&&P<=4999?P:1000,C.toString())}),U.on("error",()=>L.close(1011,"upstream error"))}),!0}}function xW(X){if(!X)return null;let Z=X.indexOf("/");if(Z<=0)return null;return X.slice(0,Z)}function E2(X){let Z=[...X.models];if(X.adapterId!=="opencode"||Z.length===0)return Z;let W=xW(X.currentModelId)??(Z.some((Y)=>Y.id.startsWith("opencode/"))?"opencode":null);if(!W)return Z;let Q=Z.filter((Y)=>Y.id===X.currentModelId||Y.id.startsWith(`${W}/`));return Q.length>0?Q:Z}import{Readable as TW,Writable as lW}from"node:stream";import{ClientSideConnection as s4,ndJsonStream as o4}from"@agentclientprotocol/sdk";import m0 from"node:fs/promises";import H0 from"node:path";class I1 extends Error{constructor(X){super(X);this.name="PathTraversalError"}}class lX extends Error{constructor(X){super(X);this.name="HiddenPathError"}}class uX extends Error{constructor(X){super(X);this.name="RunFolderFileTooLargeError"}}class A1 extends Error{constructor(X){super(X);this.name="RunFolderBinaryFileError"}}var OW=new Set([".bzr",".cache",".claude",".config",".env",".git",".hg",".idea",".obsidian",".svn",".vscode","node_modules"]),g4=1e6,RW=4096,vW=new TextDecoder("utf-8",{fatal:!0});function CW(X){return X.split(/[\\/]+/).filter((Z)=>Z.length>0)}function g2(X){if(H0.isAbsolute(X))throw new I1("Absolute paths are not allowed");for(let Z of CW(X)){if(Z===".")continue;if(Z==="..")throw new I1("Parent-directory traversal is not allowed");if(Z.startsWith(".")||OW.has(Z))throw new lX(`Path segment "${Z}" is hidden or configuration data`)}}function fW(X){g2(X);let Z=H0.normalize(X||".");return Z==="."?"":Z}function yW(X,Z,W){let Q=H0.relative(X,Z);if(Q===".."||Q.startsWith(`..${H0.sep}`)||H0.isAbsolute(Q))throw new I1(`Path "${W}" resolves outside the run folder`);if(Q.length>0)g2(Q);return Q}async function TX(X,Z){g2(Z);let W=H0.resolve(X,Z||"."),Q;try{Q=await m0.realpath(W)}catch(Y){if(Y.code!=="ENOENT")throw Y;let z=H0.dirname(W),j=[H0.basename(W)];while(z!==X&&z!==H0.dirname(z))try{z=await m0.realpath(z);break}catch(F){if(F.code!=="ENOENT")throw F;j.unshift(H0.basename(z)),z=H0.dirname(z)}Q=H0.join(z,...j)}return yW(X,Q,Z),Q}async function hW(X,Z){let W=await m0.realpath(X);return TX(W,Z)}function MW(X){let Z=X.subarray(0,Math.min(X.length,RW));if(Z.length===0)return!1;let W=0;for(let Q of Z){if(Q===0)return!0;let Y=Q===9||Q===10||Q===12||Q===13;if(Q<32&&!Y)W+=1}return W/Z.length>0.3}async function m2(X,Z){let W=await hW(X,Z),Q=await m0.stat(W);if(!Q.isFile())throw new A1(`Path "${Z}" is not a text file`);if(Q.size>g4)throw new uX(`File "${Z}" is too large to read (${Q.size} bytes, max ${g4} bytes)`);let Y=await m0.readFile(W);if(MW(Y))throw new A1(`File "${Z}" appears to be binary, not text`);try{return vW.decode(Y)}catch{throw new A1(`File "${Z}" is not valid UTF-8 text`)}}function NW(X){if(X.isDirectory())return"directory";if(X.isFile())return"file";if(X.isSymbolicLink())return"symlink";return"other"}function m4(X){return X.split(H0.sep).join("/")}async function _4(X,Z=""){let W=await m0.realpath(X),Q=fW(Z),Y=await TX(W,Q),z=await m0.readdir(Y,{withFileTypes:!0}),j=[];for(let F of z){let L=Q?H0.join(Q,F.name):F.name;try{g2(L);let U=await TX(W,L),w=await m0.stat(U);j.push({name:F.name,path:m4(L),type:NW(F),size:F.isFile()?w.size:null})}catch{}}return j.sort((F,L)=>{if(F.type==="directory"&&L.type!=="directory")return-1;if(F.type!=="directory"&&L.type==="directory")return 1;return F.name.localeCompare(L.name)}),{path:m4(Q),absolutePath:Y,entries:j}}var cX={fs:{readTextFile:!0,writeTextFile:!1},terminal:!1},k4={fs:{readTextFile:!1,writeTextFile:!1},terminal:!1};function S4(X){return{readTextFile:async(Z)=>{return{content:await m2(X,Z.path)}}}}import{spawn as DW}from"node:child_process";function dX(X){let Z=DW(X.command,X.args,{cwd:X.cwd,env:X.env,stdio:["pipe","pipe","pipe"],...W2(X.command)});if(!Z.stdin||!Z.stdout||!Z.stderr)throw Error("Failed to allocate stdio streams for ACP subprocess");let{stdin:W,stdout:Q,stderr:Y}=Z,z=4096,j=[],F=0;Y.on("data",(N)=>{j.push(N),F+=N.length;while(F>z*2&&j.length>1){let v=j.shift();if(v)F-=v.length}});let L=()=>{let N=Buffer.concat(j).toString("utf8");return N.length>z?N.slice(-z):N},U=!1,w=!1,P,C,h=new Promise((N)=>{P=N}),D=new Promise((N)=>{C=N}),G=(N)=>{if(w)return;if(w=!0,P(N),!U)C(N)};return Z.on("exit",(N,v)=>{G({code:N,signal:v,stderr:L()})}),Z.on("error",(N)=>{let v=L(),O=N?.message??String(N);G({code:null,signal:null,stderr:v?`${O}
1147
+ ${v}`:O})}),{stdin:W,stdout:Q,stderr:Y,kill:(N="SIGTERM")=>{if(U)return;U=!0;try{Z.kill(N)}catch{}},waitForExit:h,processCrashed:D}}var $W=["mcp_ideawave_board_","ideawave_board_","ideawave-board_","ideawave-board.","ideawave.board."];function GW(X){let Z=X.toLowerCase();for(let W of $W)if(Z.startsWith(W))return X.slice(W.length);if(/^mcp[-_.]/i.test(X))return X.slice(4);return X}function H1(X){return GW(X.trim())}function aX(X){let Z=H1(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 iX(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 pX(X){if(typeof X!=="string")return null;let Z=X.trim();return Z?Z:null}function A4(X){if(typeof X!=="string")return"Tool";let Z=X.trim();return Z?Z:"Tool"}function EW(X,Z){if(!X||typeof X!=="object"||Array.isArray(X))return null;let W=X;for(let Q of Z){let Y=W[Q];if(typeof Y==="string"&&Y.trim())return Y.trim()}return null}function rX(X,Z){let W=X.trim().toLowerCase();if(W==="skill"||W==="workflow"||W==="tool"||W==="invalid"){let Q=EW(Z,["skillName","workflowName","toolName","name","title"]);if(Q){let Y=W==="skill"?" skill":W==="workflow"?" workflow":"";return`${aX(Q)}${Y}`}}if(W==="invalid")return"Tool call";return aX(X)}var gW=33,I4=1600;function p0(X){if(X.length<=I4)return X;return`${X.slice(0,I4-22)}
1128
1148
  ... truncated`}function k2(X){let Z=X.replace(/\r\n?/g,`
1129
1149
  `),W=Z.trim();if(W.startsWith('"')&&W.endsWith('"')||W.startsWith("'")&&W.endsWith("'"))try{let Y=JSON.parse(W);if(typeof Y==="string")return Y.replace(/\r\n?/g,`
1130
1150
  `)}catch{return Z}if(!Z.includes("\\\""))return Z;let Q=Z.replace(/\\r\\n/g,`
1131
1151
  `).replace(/\\n/g,`
1132
1152
  `).replace(/\\r/g,`
1133
- `).replace(/\\t/g,"\t").replace(/\\"/g,'"');try{let Y=JSON.parse(Q);if(Y!==null&&typeof Y==="object")return Q}catch{return Z}return Z}function D0(X){if(X===void 0||X===null)return null;if(typeof X==="string"){let Z=k2(X).trim();return Z?p0(Z):null}if(typeof X==="number"||typeof X==="boolean"||typeof X==="bigint")return String(X);try{return p0(JSON.stringify(X,null,2))}catch{return p0(k2(String(X)))}}function gW(X){if(!X||typeof X!=="object")return null;let Z=X;if(Z.type==="text"&&typeof Z.text==="string")return k2(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 Q=W;if(Q.type==="text"&&typeof Q.text==="string")return k2(Q.text);if(Q.type==="image")return"[image]";if(Q.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 D0(X)}function _2(X){if(!Array.isArray(X))return null;let Z=X.map(gW).filter((W)=>Boolean(W?.trim()));if(Z.length===0)return null;return p0(Z.join(`
1153
+ `).replace(/\\t/g,"\t").replace(/\\"/g,'"');try{let Y=JSON.parse(Q);if(Y!==null&&typeof Y==="object")return Q}catch{return Z}return Z}function D0(X){if(X===void 0||X===null)return null;if(typeof X==="string"){let Z=k2(X).trim();return Z?p0(Z):null}if(typeof X==="number"||typeof X==="boolean"||typeof X==="bigint")return String(X);try{return p0(JSON.stringify(X,null,2))}catch{return p0(k2(String(X)))}}function mW(X){if(!X||typeof X!=="object")return null;let Z=X;if(Z.type==="text"&&typeof Z.text==="string")return k2(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 Q=W;if(Q.type==="text"&&typeof Q.text==="string")return k2(Q.text);if(Q.type==="image")return"[image]";if(Q.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 D0(X)}function _2(X){if(!Array.isArray(X))return null;let Z=X.map(mW).filter((W)=>Boolean(W?.trim()));if(Z.length===0)return null;return p0(Z.join(`
1134
1154
 
1135
1155
  `))}function sX(X){if(!X||typeof X!=="object"||Array.isArray(X))return D0(X);let Z=X,W=_2(Z.content);if(W)return W;for(let z of["output","result","text","message"]){let j=D0(Z[z]);if(j)return j}let Q=D0(Z.stdout),Y=D0(Z.stderr);if(Q||Y)return p0([Q?`stdout:
1136
1156
  ${Q}`:null,Y?`stderr:
1137
1157
  ${Y}`:null].filter(Boolean).join(`
1138
1158
 
1139
- `));return D0(X)}function I4(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 p0(`${X}
1159
+ `));return D0(X)}function T4(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 p0(`${X}
1140
1160
 
1141
- ${Z}`)}function oX(X){if(!Array.isArray(X))return null;let Z=X.flatMap((W)=>{if(!W||typeof W!=="object")return[];let Q=W;if(typeof Q.path!=="string"||!Q.path.trim())return[];let Y=typeof Q.line==="number"?`:${Q.line}`:"";return[`${Q.path}${Y}`]});return Z.length>0?Z.slice(0,5):null}function T4(X){let{ctx:Z,appendText:W,appendToolActivity:Q}=X,Y=X.flushIntervalMs??EW,z="",j="",F=0,L=null,U=!1,w={},P=new Map,C=(x)=>{if(P.set(x.toolCallId,x),!Q)return;Q({boardId:Z.boardId,cardId:Z.cardId,runId:Z.runId,entry:x}).catch((b)=>{console.warn("[streamAdapter] appendToolActivity failed",b)})},h=(x)=>{let b=`${Z.runId}:thought`,y=P.get(b);if(!y||y.status!=="running")return;C({...y,status:"completed",completedAt:y.completedAt??x})},D=(x)=>{for(let b of P.values()){if(b.status!=="running"||b.rawTitle.toLowerCase()!=="toolsearch")continue;C({...b,status:"completed",completedAt:b.completedAt??x})}},G=(x)=>{for(let b of Array.from(P.values())){if(b.status!=="running")continue;if(b.kind==="thought"||b.rawTitle==="agent_thought")continue;C({...b,status:"completed",completedAt:b.completedAt??x})}},N="",v=0,O=null,M=null,g=(x)=>{if(x===N)return;N=x,v=Date.now(),W({boardId:Z.boardId,cardId:Z.cardId,runId:Z.runId,text:x}).catch((b)=>{console.warn("[streamAdapter] appendText failed",b)})},$=()=>{if(O!==null)clearTimeout(O),O=null;if(M!==null){let x=M;M=null,g(x)}},A=(x)=>{let b=Date.now()-v;if(b>=Y&&O===null){g(x);return}if(M=x,O===null){let y=Math.max(0,Y-b);O=setTimeout(()=>{O=null,$()},y)}};return{onSessionUpdate:async(x)=>{X.onAnyUpdate?.();let b=x.update;switch(w[b.sessionUpdate]=(w[b.sessionUpdate]??0)+1,b.sessionUpdate){case"agent_message_chunk":{let y=new Date().toISOString();if(h(y),b.content.type==="text"){if(b.content.text.length>0){if(U&&z.length>0&&!/\s$/.test(z)&&!/^\s/.test(b.content.text))z+=`
1161
+ ${Z}`)}function oX(X){if(!Array.isArray(X))return null;let Z=X.flatMap((W)=>{if(!W||typeof W!=="object")return[];let Q=W;if(typeof Q.path!=="string"||!Q.path.trim())return[];let Y=typeof Q.line==="number"?`:${Q.line}`:"";return[`${Q.path}${Y}`]});return Z.length>0?Z.slice(0,5):null}function l4(X){let{ctx:Z,appendText:W,appendToolActivity:Q}=X,Y=X.flushIntervalMs??gW,z="",j="",F=0,L=null,U=!1,w={},P=new Map,C=(x)=>{if(P.set(x.toolCallId,x),!Q)return;Q({boardId:Z.boardId,cardId:Z.cardId,runId:Z.runId,entry:x}).catch((b)=>{console.warn("[streamAdapter] appendToolActivity failed",b)})},h=(x)=>{let b=`${Z.runId}:thought`,y=P.get(b);if(!y||y.status!=="running")return;C({...y,status:"completed",completedAt:y.completedAt??x})},D=(x)=>{for(let b of P.values()){if(b.status!=="running"||b.rawTitle.toLowerCase()!=="toolsearch")continue;C({...b,status:"completed",completedAt:b.completedAt??x})}},G=(x)=>{for(let b of Array.from(P.values())){if(b.status!=="running")continue;if(b.kind==="thought"||b.rawTitle==="agent_thought")continue;C({...b,status:"completed",completedAt:b.completedAt??x})}},N="",v=0,O=null,M=null,g=(x)=>{if(x===N)return;N=x,v=Date.now(),W({boardId:Z.boardId,cardId:Z.cardId,runId:Z.runId,text:x}).catch((b)=>{console.warn("[streamAdapter] appendText failed",b)})},$=()=>{if(O!==null)clearTimeout(O),O=null;if(M!==null){let x=M;M=null,g(x)}},A=(x)=>{let b=Date.now()-v;if(b>=Y&&O===null){g(x);return}if(M=x,O===null){let y=Math.max(0,Y-b);O=setTimeout(()=>{O=null,$()},y)}};return{onSessionUpdate:async(x)=>{X.onAnyUpdate?.();let b=x.update;switch(w[b.sessionUpdate]=(w[b.sessionUpdate]??0)+1,b.sessionUpdate){case"agent_message_chunk":{let y=new Date().toISOString();if(h(y),b.content.type==="text"){if(b.content.text.length>0){if(U&&z.length>0&&!/\s$/.test(z)&&!/^\s/.test(b.content.text))z+=`
1142
1162
 
1143
- `;z+=b.content.text,U=!1,A(z)}}else{let _=`agent_message_chunk:${b.content.type}`;w[_]=(w[_]??0)+1}return}case"agent_thought_chunk":{if(b.content.type!=="text")return;j+=b.content.text;let y=new Date().toISOString(),_=`${Z.runId}:thought`,I=P.get(_);C({toolCallId:_,rawTitle:"agent_thought",title:"Thought",kind:"thought",status:"running",startedAt:I?.startedAt??y,completedAt:null,contentPreview:p0(j.trim())});return}case"user_message_chunk":return;case"tool_call":{F+=1,U=z.length>0;let y=S4(b.title),_=iX(b.status),I=new Date().toISOString();h(I),D(I),C({toolCallId:b.toolCallId,rawTitle:y,title:rX(y,b.rawInput),kind:pX(b.kind),status:_,startedAt:I,completedAt:_==="running"?null:I,inputPreview:D0(b.rawInput),outputPreview:sX(b.rawOutput),contentPreview:_2(b.content),locations:oX(b.locations)});return}case"tool_call_update":{let y=P.get(b.toolCallId);if(!y){let C0=S4(b.title),n=iX(b.status),S=new Date().toISOString();C({toolCallId:b.toolCallId,rawTitle:C0,title:rX(C0,b.rawInput),kind:pX(b.kind),status:n,startedAt:S,completedAt:n==="running"?null:S,inputPreview:D0(b.rawInput),outputPreview:sX(b.rawOutput),contentPreview:_2(b.content),locations:oX(b.locations)});return}let _=b.status===void 0||b.status===null?y.status:iX(b.status),I=typeof b.title==="string"&&b.title.trim().length>0?b.title:y.rawTitle,l=typeof b.title==="string"&&b.title.trim().length>0,k=_==="running"?y.completedAt:y.completedAt??new Date().toISOString(),r=b.content===void 0?y.contentPreview:I4(y.contentPreview,_2(b.content)),W0=b.rawOutput===void 0?y.outputPreview:I4(y.outputPreview,sX(b.rawOutput));C({...y,rawTitle:I,title:l?rX(I,b.rawInput):y.title,kind:b.kind===void 0?y.kind:pX(b.kind),status:_,completedAt:k,inputPreview:b.rawInput===void 0?y.inputPreview:D0(b.rawInput),outputPreview:W0,contentPreview:r,locations:b.locations===void 0?y.locations:oX(b.locations)});return}case"plan":L=b.entries;return;case"available_commands_update":return;case"current_mode_update":return;default:return}},getFinalText:()=>z,getToolCallCount:()=>F,getLatestPlan:()=>L,getUpdateTypeCounts:()=>({...w}),flush:(x)=>{let b=new Date().toISOString();if(h(b),x?.completeOpenToolCalls)G(b);$()}}}var mW=new Set(["ECONNRESET","EPIPE"]);function S2(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"&&mW.has(Z)}var T1=1,l4=-32000;function _0(X){return typeof X==="number"&&Number.isSafeInteger(X)&&X>=0?X:null}function _W(X){if(!X)return{status:"unreported"};let Z=_0(X.totalTokens),W=_0(X.inputTokens),Q=_0(X.outputTokens);if(Z===null||W===null||Q===null)return{status:"unreported"};let Y=_0(X.thoughtTokens),z=_0(X.cachedReadTokens),j=_0(X.cachedWriteTokens);return{status:"reported",totalTokens:Z,inputTokens:W,outputTokens:Q,...Y===null?{}:{thoughtTokens:Y},...z===null?{}:{cachedReadTokens:z},...j===null?{}:{cachedWriteTokens:j}}}function kW(X){if(!X)return null;if(typeof X.amount!=="number"||!Number.isFinite(X.amount)||X.amount<0||typeof X.currency!=="string"||X.currency.trim().length===0)return null;return{amount:X.amount,currency:X.currency}}function SW(X){let Z=_0(X.used),W=_0(X.size);return Z===null||W===null?null:{usedTokens:Z,windowTokens:W}}function AW(X){let Z=X.latestCost;if(!Z)return{status:"unreported",reason:"omitted"};let W=X.baselineCost;if(!W){if(X.zeroBaseline)return{status:"reported",amount:Z.amount,currency:Z.currency};return{status:"unreported",reason:"baseline_unavailable"}}if(W.currency!==Z.currency)return{status:"unreported",reason:"currency_mismatch"};if(Z.amount<W.amount)return{status:"unreported",reason:"counter_reset"};return{status:"reported",amount:Z.amount-W.amount,currency:Z.currency}}function u4(){return{lastCumulativeCost:null,promptsStarted:0}}function c4(X){let Z={baselineCost:X.lastCumulativeCost?{...X.lastCumulativeCost}:null,zeroBaseline:X.promptsStarted===0&&X.lastCumulativeCost===null,latestCost:null,latestContext:null,finalizedUsage:null};return X.promptsStarted+=1,Z}function d4(X,Z,W){let Q=SW(W),Y=kW(W.cost);if(Z&&Q)Z.latestContext=Q;if(Y){if(Z)Z.latestCost=Y;X.lastCumulativeCost=Y}return{context:Q,cumulativeCost:Y}}function A2(X,Z,W){if(Z.finalizedUsage)return Z.finalizedUsage;let Q={tokens:_W(X?.usage),context:Z.latestContext?{status:"reported",...Z.latestContext}:{status:"unreported"},cost:AW(Z)};if(Z.finalizedUsage=Q,!Z.latestCost)W.lastCumulativeCost=null;return Q}function U1(X){return{tokenUsageStatus:X?.tokens.status??"unreported",...X?.tokens.status==="reported"?{totalTokens:X.tokens.totalTokens,inputTokens:X.tokens.inputTokens,outputTokens:X.tokens.outputTokens,thoughtTokens:X.tokens.thoughtTokens,cachedReadTokens:X.tokens.cachedReadTokens,cachedWriteTokens:X.tokens.cachedWriteTokens}:{},contextUsageStatus:X?.context.status??"unreported",...X?.context.status==="reported"?{contextUsedTokens:X.context.usedTokens,contextWindowTokens:X.context.windowTokens}:{},costUsageStatus:X?.cost.status??"unreported",...X?.cost.status==="reported"?{costAmount:X.cost.amount,costCurrency:X.cost.currency}:{costUnreportedReason:X?.cost.reason??"omitted"}}}function a4(X){if(X.awaitingInput)return!1;return X.nowMs-X.lastUpdateMs>=X.windowMs}function o4(X){if(!X||typeof X!=="object")return!1;return X.code===l4}var lW=300000,uW=lW,cW=5000;function dW(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 n4(){return{name:"ideawave-cli",title:"IdeaWave CLI",version:"0.0.101".trim()?"0.0.101":"dev"}}function t4(X){if(X===T1)return;throw new u(`Unsupported ACP protocol version ${X}; expected ${T1}`)}function e4(X){return(X??[]).flatMap((Z)=>{if(!Z||typeof Z!=="object")return[];let W=Z.name;return typeof W==="string"&&W.trim()?[W.trim()]:[]})}function aW(X,Z,W,Q){let Y=X,z=e4(Z),F=[Y.toolCall.name,Y.toolCall.title].filter((L)=>typeof L==="string").some((L)=>i4(L,z));if(W==="codex"&&Y._meta?.is_mcp_tool_approval===!0){if(F)return!0;if(typeof Y.toolCall.toolCallId!=="string")return!1;let L=Q.get(Y.toolCall.toolCallId);return Boolean(L&&i4(L,z))}if(F)return!0;return W==="claude-code"&&Y.toolCall.kind==="fetch"}function i4(X,Z){return Z.some((W)=>{return[...new Set([W,W.replace(/-/g,"_"),W.replace(/[^a-zA-Z0-9_-]/g,"_")])].some((Y)=>X.startsWith(`mcp__${Y}__`)||X.startsWith(`mcp.${Y}.`))})}function X8(X){return IW.toWeb(X)}function Z8(X){return TW.toWeb(X)}function I2(X){return X!==null&&typeof X==="object"}function iW(X){if(!Array.isArray(X))return[];let Z=[];for(let W of X){if(!I2(W))continue;if(typeof W.group==="string"&&Array.isArray(W.options)){let Q=typeof W.name==="string"?W.name:W.group;for(let Y of W.options){if(!I2(Y))continue;if(typeof Y.value!=="string"||typeof Y.name!=="string")continue;Z.push({value:Y.value,name:Y.name,description:typeof Y.description==="string"?Y.description:null,group:W.group,groupName:Q})}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 pW(X){if(!I2(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 Q=typeof X.currentValue==="string"?X.currentValue:null;return{id:X.id,name:X.name,category:Z,description:W,type:"select",currentValue:Q,options:iW(X.options)}}if(X.type==="boolean"){let Q=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:Q,options:[]}}return null}function nX(X){let Z=(X.configOptions??[]).map(pW).filter((F)=>F!==null),W=Z.find((F)=>F.type==="select"&&F.category==="model")??Z.find((F)=>F.type==="select"&&F.id==="model")??null,Q=W?.options.map((F)=>({id:F.value,name:F.name,description:F.description??null})),Y=rW(X.models),z=Q&&Q.length>0?Q:Y&&Y.length>0?Y:null,j=(typeof W?.currentValue==="string"?W.currentValue:null)??sW(X.models)??null;return{models:z,currentModelId:j,configOptions:Z,modelConfigId:W?.id??null}}function rW(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 sW(X){return typeof X?.currentModelId==="string"?X.currentModelId:null}function oW(X,Z){let W=[];if(X.trim())W.push({type:"text",text:X});for(let Q of Z)if(Q.content.trim())W.push({type:"text",text:Q.content});return W}var nW=500;function W8(X){return new Promise((Z)=>{let W=setTimeout(()=>Z({code:null,signal:null,stderr:""}),nW);X.then((Q)=>{clearTimeout(W),Z(Q)})})}function Q8(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 J8(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 Y8(X,Z){if(X==="default")return null;if(!Z||Z.length===0)return X;let W=Z.find((U)=>U.id===X);if(W)return W.id;let Q=X.toLowerCase(),Y=Q.includes("opus")?"opus":Q.includes("sonnet")?"sonnet":Q.includes("haiku")?"haiku":null;if(!Y)return X;let z=(U)=>`${U.id} ${U.name??""} ${U.description??""}`.toLowerCase(),j=Z.filter((U)=>z(U).includes(Y));if(j.length===0)return X;let L=(Q.includes("1m")?j.find((U)=>z(U).includes("1m")):void 0)??j[0];return L?L.id:X}async function T2(X){try{let Z=await X.conn.setSessionConfigOption(Q8({sessionId:X.sessionId,configId:X.configId,value:X.value}));return J8(X.metadata,Z)}catch(Z){return console.warn(`[acp] setSessionConfigOption(${X.label}) failed; using agent default.`,Z instanceof Error?Z.message:Z),X.metadata}}function p4(X){let Z=X.id.toLowerCase().replace(/[_\s-]+/g,"");return X.category?.toLowerCase().replace(/[_\s-]+/g,"")==="mode"||Z==="mode"||Z==="permissionmode"}function tW(X){if(X.type!=="select")return null;return X.options.find(({value:W})=>{return W.toLowerCase().replace(/[_\s-]+/g,"")==="readonly"})?.value??null}async function l2(X){let Z=X.isolateAmbientToolSources&&X.adapterId==="codex";if(Z&&e4(X.mcpServers).length===0)throw new u("An isolated Codex session requires an explicit IdeaWave MCP server");let W=dX(Z?{...X.spawn,env:{...X.spawn.env,INITIAL_AGENT_MODE:"read-only",DISABLE_MCP_CONFIG_FILTERING:"true"}}:X.spawn),Q=[],Y=0,z=4096;W.stderr.on("data",(S)=>{Q.push(S),Y+=S.length;while(Y>z*2&&Q.length>1){let d=Q.shift();if(d)Y-=d.length}});let j=()=>{let S=Buffer.concat(Q).toString("utf8");return S.length>z?S.slice(-z):S},F=k4(X.spawn.cwd),L={current:null},U={current:null},w=u4(),P={at:Date.now()},C=new Map,h=null,D=Z8(W.stdin),G=X8(W.stdout),N=s4(D,G),O=new r4((S)=>({requestPermission:async(d)=>{if(X.isolateAmbientToolSources&&!aW(d,X.mcpServers,X.adapterId,C))return{outcome:{outcome:"cancelled"}};let T=d.options,t=T?.find(($0)=>$0.kind==="allow_once")??T?.find(($0)=>$0.kind==="allow_always");if(t)return{outcome:{outcome:"selected",optionId:t.optionId}};return{outcome:{outcome:"cancelled"}}},sessionUpdate:async(d)=>{if(P.at=Date.now(),X.isolateAmbientToolSources&&X.adapterId==="codex"&&(d.update.sessionUpdate==="tool_call"||d.update.sessionUpdate==="tool_call_update")){let z0=d.update;if(typeof z0.toolCallId==="string"&&typeof z0.title==="string")C.set(z0.toolCallId,z0.title)}let T=U.current,t=d.update.sessionUpdate;if(t==="usage_update"){let z0=d4(w,T?.promptUsage??null,d.update);m("acp.usage_update",{runId:T?.runId,cardId:T?.cardId,sessionId:h,attributedToActivePrompt:T!==null,contextUsageStatus:z0.context?"reported":"unreported",contextUsedTokens:z0.context?.usedTokens,contextWindowTokens:z0.context?.windowTokens,cumulativeCostStatus:z0.cumulativeCost?"reported":"unreported",cumulativeCostAmount:z0.cumulativeCost?.amount,cumulativeCostCurrency:z0.cumulativeCost?.currency})}if(T){if(T.updateCount+=1,T.updateCount===1||T.lastUpdateType!==t||t==="tool_call"||t==="tool_call_update")m("acp.session_update",{runId:T.runId,cardId:T.cardId,sessionId:h,updateType:t,updateCount:T.updateCount,elapsedMs:Date.now()-T.startedAt});T.lastUpdateType=t}let $0=L.current;if($0)await $0.onSessionUpdate(d)},readTextFile:X.isolateAmbientToolSources?async()=>{throw Error("Filesystem reads are unavailable in this isolated session")}:F.readTextFile}),N),M=()=>W.kill();if(X.signal)X.signal.addEventListener("abort",M);let g=()=>{if(X.signal)X.signal.removeEventListener("abort",M)},$=(S)=>{throw g(),W.kill(),new u(S)},A=(S,d)=>{let T=d instanceof Error?d.message:I2(d)&&typeof d.message==="string"?d.message:String(d);return $(`Isolated Codex runtime advertised ${S} but rejected it: ${T}`)},x=async(S,d)=>{if(g(),W.kill(),o4(S))throw new Z1(S.message??"Authentication required",d);if(S2(S)){if(X.signal?.aborted)throw new u("ACP session cancelled: abort signal received");let T=await W8(W.waitForExit);throw new u(`Runtime process exited before completion: ${T.stderr?.trim()??""}`)}throw S},b;try{b=await O.initialize({protocolVersion:T1,clientCapabilities:X.isolateAmbientToolSources?_4:cX,clientInfo:n4()})}catch(S){throw await x(S,[]),Error("unreachable")}try{t4(b.protocolVersion)}catch(S){throw g(),W.kill(),S}let y=b.authMethods?.map((S)=>S.id)??[],_;try{_=await O.newSession({cwd:X.spawn.cwd,mcpServers:X.mcpServers??[],...X.isolateAmbientToolSources&&X.adapterId==="claude-code"?{_meta:{disableBuiltInTools:!0,claudeCode:{options:{settingSources:[],tools:X.allowNativeWebTools===!1?[]:["WebSearch","WebFetch"]}}}}:{}})}catch(S){throw await x(S,y),Error("unreachable")}let I=_.sessionId;h=I;let l=nX(_),k=X.modelId??null,r=k?Y8(k,l.models):null;if(r&&r!==l.currentModelId)if(l.modelConfigId)l=await T2({conn:O,sessionId:I,configId:l.modelConfigId,value:r,metadata:l,label:`${l.modelConfigId}=${r}`});else console.warn(`[acp] runtime did not advertise a model config option for ${r}; using agent default.`);for(let[S,d]of Object.entries(X.configValues??{}).sort(([T],[t])=>T.localeCompare(t))){if(S===l.modelConfigId)continue;let T=l.configOptions.find((t)=>t.id===S);if(!T)continue;if(Z&&p4(T))continue;l=await T2({conn:O,sessionId:I,configId:S,value:d,metadata:l,label:`${S}=${String(d)}`})}if(Z){let S=l.configOptions.find(p4),d=S?tW(S):null;if(S&&d)try{let T=await O.setSessionConfigOption(Q8({sessionId:I,configId:S.id,value:d}));l=J8(l,T)}catch(T){A(`${S.id}=${d}`,T)}else{let T=_.modes?.availableModes.find((t)=>t.id.toLowerCase().replace(/[_\s-]+/g,"")==="readonly");if(!T)$("Isolated Codex runtime did not advertise an enforceable read-only config option or legacy mode");else try{await O.setSessionMode({sessionId:I,modeId:T.id})}catch(t){A(`legacy mode=${T.id}`,t)}}}g();let W0=!1,C0=async()=>{if(W0)return;W0=!0,W.kill(),await Promise.race([W.waitForExit,new Promise((S)=>setTimeout(S,2000))])},n=!1;return W.processCrashed.then(()=>{n=!0}),{sessionId:I,availableModels:l.models,currentModelId:l.currentModelId,availableConfigOptions:l.configOptions,isAlive:()=>!W0&&!n,dispose:C0,prompt:(S)=>{return C.clear(),eW({proc:W,conn:O,sessionId:I,activeAdapter:L,activeTrace:U,usageState:w,lastUpdate:P,collectStderrTail:j},S)}}}async function eW(X,Z){let{proc:W,conn:Q,sessionId:Y,activeAdapter:z,activeTrace:j,usageState:F,lastUpdate:L}=X,U=Date.now(),w=Z.heartbeatMs??uW,P=dW(w),C={boardId:Z.boardId,cardId:Z.cardId,runId:Z.runId},h=T4({ctx:C,appendText:Z.appendText,appendToolActivity:Z.appendToolActivity,onAnyUpdate:Z.onAnyUpdate}),D=c4(F),G=null,N=null;z.current=h,j.current={runId:Z.runId,cardId:Z.cardId,startedAt:U,updateCount:0,lastUpdateType:null,promptUsage:D},L.at=Date.now(),m("acp.prompt_started",{runId:Z.runId,cardId:Z.cardId,sessionId:Y,heartbeatWindowMs:w});let v=!1,O=null,M=()=>W.kill();Z.signal.addEventListener("abort",M);try{let g=async()=>{let b=Math.min(cW,Math.max(50,Math.floor(w/2)));O=setInterval(()=>{let _=Z.isAwaitingInput?.()??!1;if(_){L.at=Date.now();return}if(a4({nowMs:Date.now(),lastUpdateMs:L.at,windowMs:w,awaitingInput:_}))v=!0,m("acp.inactivity_timeout",{runId:Z.runId,cardId:Z.cardId,sessionId:Y,windowMs:w,silentForMs:Date.now()-L.at}),Q.cancel({sessionId:Y}).catch(()=>{return}),W.kill()},b);let y=oW(Z.prompt.systemPrompt,Z.prompt.messages);G=await Q.prompt({sessionId:Y,prompt:y}),N=A2(G,D,F),m("acp.prompt_resolved",{runId:Z.runId,cardId:Z.cardId,sessionId:Y,elapsedMs:Date.now()-U,...U1(N)}),h.flush({completeOpenToolCalls:!0})},$=W.waitForExit.then((b)=>({kind:"exited",exit:b})),A=g().then(()=>({kind:"ok"})).catch(async(b)=>{if(S2(b))return W.kill(),{kind:"crashed",exit:await W8(W.waitForExit)};throw b}),x;try{x=await Promise.race([A,W.processCrashed.then((b)=>({kind:"crashed",exit:b})),$])}catch(b){if(v)throw new x0(P);throw b}if(v)throw new x0(P);if(x.kind!=="ok"&&Z.signal.aborted)throw new u("ACP session cancelled: abort signal received");if(x.kind==="crashed")throw new u(`Runtime process exited before completion: ${x.exit.stderr.trim()}`);if(x.kind==="exited"){if(v)throw new x0(P);throw new u(`Runtime process exited unexpectedly: ${x.exit.stderr.trim()}`)}return{modelReported:"unknown",finalText:h.getFinalText(),toolCallsExecuted:h.getToolCallCount(),stderrTail:X.collectStderrTail(),updateTypeCounts:h.getUpdateTypeCounts(),usage:N??A2(G,D,F)}}finally{let g=N??A2(G,D,F);if(m("acp.prompt_finished",{runId:Z.runId,cardId:Z.cardId,sessionId:Y,elapsedMs:Date.now()-U,timedOut:v,updateCount:j.current?.updateCount??0,...U1(g)}),O!==null)clearInterval(O);Z.signal.removeEventListener("abort",M),h.flush({completeOpenToolCalls:!0}),z.current=null,j.current=null}}var XQ=30000;async function z8(X){let Z=dX(X.spawn),W=Z8(Z.stdin),Q=X8(Z.stdout),Y=s4(W,Q),j=new r4((U)=>({requestPermission:async()=>({outcome:{outcome:"cancelled"}}),sessionUpdate:async()=>{return},readTextFile:async()=>({content:""})}),Y),F=()=>Z.kill();if(X.signal)X.signal.addEventListener("abort",F);let L=null;try{let U=(async()=>{let P=await j.initialize({protocolVersion:T1,clientCapabilities:cX,clientInfo:n4()});t4(P.protocolVersion);let C=P.authMethods?.map((M)=>M.id)??[],h;try{h=await j.newSession({cwd:X.spawn.cwd,mcpServers:[]})}catch(M){if(o4(M))throw new Z1(M.message??"Authentication required",C);throw M}let D=nX(h),G=X.modelId??null,N=G?Y8(G,D.models):null;if(N&&N!==D.currentModelId)if(D.modelConfigId)D=await T2({conn:j,sessionId:h.sessionId,configId:D.modelConfigId,value:N,metadata:D,label:`${D.modelConfigId}=${N}`});else console.warn(`[acp] runtime did not advertise a model config option for ${N}; discovering agent default models.`);for(let[M,g]of Object.entries(X.configValues??{}).sort(([$],[A])=>$.localeCompare(A))){if(M===D.modelConfigId)continue;if(!D.configOptions.some(($)=>$.id===M))continue;D=await T2({conn:j,sessionId:h.sessionId,configId:M,value:g,metadata:D,label:`${M}=${String(g)}`})}let v=D.models??[],O=D.currentModelId;return j.cancel({sessionId:h.sessionId}).catch(()=>{return}),{models:v,configOptions:D.configOptions,currentModelId:O}})(),w=new Promise((P,C)=>{L=setTimeout(()=>{C(new x0)},XQ)});return await Promise.race([U,w])}catch(U){if(S2(U)){if(X.signal?.aborted)throw new u("ACP model discovery cancelled: abort signal received");throw new u("Runtime process exited during model discovery.")}throw U}finally{if(L)clearTimeout(L);if(X.signal)X.signal.removeEventListener("abort",F);Z.kill()}}import ZQ from"node:fs/promises";import u2 from"node:os";async function V8(X){let Z={version:1,globalDefaultConfigId:null,runtimes:[],boardOverrides:{},cardOverrides:{}},W;try{W=await ZQ.readFile(X,"utf-8")}catch(Q){if(Q.code==="ENOENT")return structuredClone(Z);throw Q}return Z2.parse(JSON.parse(W))}function tX(X,Z,W){return{...X.defaultConfigValues??{},...Z?.configValues??{},...W?.configValues??{}}}async function k0(X){let Z=X.configPath?await V8(X.configPath):await F0(),W=X.cardId?Z.cardOverrides[X.cardId]:void 0;if(W?.runtimeConfigId){let Y=Z.runtimes.find((z)=>z.id===W.runtimeConfigId);if(Y)return{entry:Y,adapter:O0(Y),runFolder:W.runFolder??Y.runFolder??u2.homedir(),modelId:W.modelId??Y.defaultModelId??null,configValues:tX(Y,void 0,W)}}let Q=Z.boardOverrides[X.boardId];if(Q?.runtimeConfigId){let Y=Z.runtimes.find((z)=>z.id===Q.runtimeConfigId);if(Y)return{entry:Y,adapter:O0(Y),runFolder:Q.runFolder??Y.runFolder??u2.homedir(),modelId:Q.modelId??Y.defaultModelId??null,configValues:tX(Y,Q)}}if(Z.globalDefaultConfigId){let Y=Z.runtimes.find((z)=>z.id===Z.globalDefaultConfigId);if(Y)return{entry:Y,adapter:O0(Y),runFolder:W?.runFolder??Q?.runFolder??Y.runFolder??u2.homedir(),modelId:W?.modelId??Q?.modelId??Y.defaultModelId??null,configValues:tX(Y,Q,W)}}throw new h0}async function eX(X,Z={}){let Q=(Z.configPath?await V8(Z.configPath):await F0()).runtimes.find((Y)=>Y.id===X);if(!Q)return null;return{entry:Q,adapter:O0(Q),runFolder:Q.runFolder??u2.homedir(),modelId:Z.modelId??Q.defaultModelId??null,configValues:{...Q.defaultConfigValues??{},...Z.configValues??{}}}}var X3=new Map;function Z3(X,Z){X3.set(X,Z)}function W3(X){X3.delete(X)}function j8(X){if(!X)return null;return X3.get(X)??null}import{lstat as RQ,readFile as vQ}from"node:fs/promises";import CQ from"node:os";import u1 from"node:path";import{Server as fQ}from"@modelcontextprotocol/sdk/server/index.js";import{CallToolRequestSchema as yQ,ListToolsRequestSchema as hQ}from"@modelcontextprotocol/sdk/types.js";import{z as i}from"zod";var K0={maxSteps:12,maxParticipants:4,maxChannels:2,maxHandoffsPerChannel:12,maxTotalDispatches:24},l1=["ideate_create_note","ideate_create_code","ideate_create_shape","ideate_create_browser","ideate_create_image_context_card","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"],WQ=`
1144
- <!-- ideawave:mutation-tool=`,QQ=" -->",zj=new RegExp(`${WQ.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}(?<tool>${l1.join("|")})${QQ.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}$`);var r0=i.string().trim().min(1).max(80),H8=i.string().trim().min(1).max(240).regex(/^(node|edge|diagram|browser|browser-annotation|comment|spatial-group|create):/),K8={type:"string",minLength:1,maxLength:240,pattern:"^(node|edge|diagram|browser|browser-annotation|comment|spatial-group|create):",description:"Exact lease key. A new artifact uses create:<runId>:<clientKey>, where clientKey exactly matches this step. An existing artifact uses its frozen UUID-backed node:, edge:, browser:, or diagram: key. External-only research declares no invented resource key."},Vj={type:"object",description:`A bounded acyclic Ideate plan with at most ${K0.maxSteps} total steps. Each new visible artifact gets one step and one exact create lease.`,properties:{summary:{type:"string",minLength:1,maxLength:1500},semanticAnchorId:{type:"string",minLength:1,maxLength:160},participants:{type:"array",maxItems:K0.maxParticipants,items:{type:"object",properties:{clientKey:{type:"string",minLength:1,maxLength:80},label:{type:"string",minLength:1,maxLength:40},responsibility:{type:"string",minLength:1,maxLength:1000}},required:["clientKey","label","responsibility"],additionalProperties:!1}},collaborationChannels:{type:"array",maxItems:K0.maxChannels,items:{type:"object",properties:{clientKey:{type:"string",minLength:1,maxLength:80},protocol:{type:"string",enum:["handoff","turn-taking","request-response","barrier"]},participantKeys:{type:"array",minItems:2,maxItems:4,items:{type:"string",minLength:1,maxLength:80}},resourceScope:{type:"array",maxItems:40,items:K8},maxHandoffs:{type:"integer",minimum:1,maximum:K0.maxHandoffsPerChannel},maxDurationMs:{type:"integer",minimum:1000,maximum:1800000},completion:{type:"string",enum:["all-done","accepted","coordinator-decides"]}},required:["clientKey","protocol","participantKeys","resourceScope","maxHandoffs","maxDurationMs","completion"],additionalProperties:!1}},steps:{type:"array",minItems:1,maxItems:K0.maxSteps,description:`HARD LIMIT: 1-${K0.maxSteps} total steps. Count plan.steps before submitting. If a draft is larger, combine related work and retry the same plan tool immediately; never silently truncate required outcomes.`,items:{type:"object",properties:{clientKey:{type:"string",minLength:1,maxLength:80,description:"Stable step key. For a create step, this exact value is the final segment of its create lease and the worker create call clientKey."},participantKey:{type:"string",minLength:1,maxLength:80},channelKeys:{type:"array",maxItems:2,items:{type:"string",minLength:1,maxLength:80}},label:{type:"string",minLength:1,maxLength:80},kind:{type:"string",enum:["read","browser","write","synthesis"]},prompt:{type:"string",minLength:1,maxLength:4000},mutationTool:{type:"string",enum:l1,description:"Required exactly once for each fresh write step. This is the one fenced mutation capability its worker receives."},dependsOn:{type:"array",maxItems:K0.maxSteps,items:{type:"string",minLength:1,maxLength:80}},resources:{type:"array",maxItems:40,items:{type:"object",properties:{key:K8,mode:{type:"string",enum:["read","write"]}},required:["key","mode"],additionalProperties:!1}}},required:["clientKey","label","kind","prompt","dependsOn","resources"],additionalProperties:!1}}},required:["summary","steps"],additionalProperties:!1};var jj=i.object({summary:i.string().trim().min(1).max(1500),semanticAnchorId:i.string().trim().min(1).max(160).optional(),participants:i.array(i.object({clientKey:r0,label:i.string().trim().min(1).max(40),responsibility:i.string().trim().min(1).max(1000)}).strict()).max(K0.maxParticipants).optional(),collaborationChannels:i.array(i.object({clientKey:r0,protocol:i.enum(["handoff","turn-taking","request-response","barrier"]),participantKeys:i.array(r0).min(2).max(4),resourceScope:i.array(H8).max(40),maxHandoffs:i.number().int().min(1).max(K0.maxHandoffsPerChannel),maxDurationMs:i.number().int().min(1000).max(1800000),completion:i.enum(["all-done","accepted","coordinator-decides"])}).strict()).max(K0.maxChannels).optional(),steps:i.array(i.object({clientKey:r0,participantKey:r0.optional(),channelKeys:i.array(r0).max(2).optional(),label:i.string().trim().min(1).max(80),kind:i.enum(["read","browser","write","synthesis"]),prompt:i.string().trim().min(1).max(4000),mutationTool:i.enum(l1).optional(),dependsOn:i.array(r0).max(K0.maxSteps),resources:i.array(i.object({key:H8,mode:i.enum(["read","write"])}).strict()).max(40)}).strict()).min(1).max(K0.maxSteps,{error:`Plan exceeds the hard ${K0.maxSteps}-step limit. Combine related work into ${K0.maxSteps} or fewer steps and retry the same plan tool immediately; do not drop required outcomes.`})}).strict();var U8=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"]),JQ=["screenshot_board","inspect_diagram","ask_user_question","create_agent_card","append_user_message","spawn_child_agents"],YQ=new Set(JQ),Bj=new Set([...U8].filter((X)=>!YQ.has(X)));var Q3={coordinator:["inspect_ideate_context","get_ideate_run_status","screenshot_ideate_context","search_board","list_nodes","submit_ideate_plan","revise_ideate_plan","get_question_ui_guide","ask_ideate_question","complete_ideate_run","start_board_walkthrough"],worker:["get_ideate_run_status","get_ideate_worker_context","screenshot_ideate_context","get_board","list_nodes","inspect_node","inspect_diagram","list_context_sources","read_context_card","read_context_file","read_context_image","list_context_folder","get_board_wiki","search_board","read_diagram_guide","inspect_browser","list_browser_images","locate_browser_element","list_agent_cards","get_card_messages","inspect_table","get_table_schema","read_table","query_table","export_table_csv",...l1]},zQ=new Set(["inspect_board_region","inspect_neighbors","list_edges","start_board_walkthrough"]),F8=new Set(Q3.coordinator),c2=new Set(Q3.worker);var wj=Q3.worker.filter((X)=>X.startsWith("ideate_"));var VQ=new Set([...F8,...c2,"set_ideate_placement"].filter((X)=>X.startsWith("ideate_")||X.includes("ideate_")));function L8(X,Z,W){if(Z==="full")return!VQ.has(X);if(Z==="read")return U8.has(X);if(Z==="ideate-coordinator")return F8.has(X);if(zQ.has(X))return!1;return c2.has(X)&&Array.isArray(W)&&W.includes(X)}import{randomUUID as HQ}from"node:crypto";import{createServer as KQ}from"node:http";import{StreamableHTTPServerTransport as UQ}from"@modelcontextprotocol/sdk/server/streamableHttp.js";import{isInitializeRequest as P8}from"@modelcontextprotocol/sdk/types.js";var B8=new Set(["127.0.0.1","localhost","[::1]","::1"]);function jQ(X){let Z=X.trim();if(Z.length===0)return null;if(Z.startsWith("[")){let z=Z.indexOf("]");if(z===-1)return null;let j=Z.slice(0,z+1),F=Z.slice(z+1);if(F.length===0)return{host:j,port:null};if(!F.startsWith(":"))return null;let L=Number(F.slice(1));if(!Number.isInteger(L)||L<=0||L>65535)return null;return{host:j,port:L}}let W=Z.lastIndexOf(":");if(W===-1)return{host:Z,port:null};let Q=Z.slice(W+1),Y=Number(Q);if(!Number.isInteger(Y)||Y<=0||Y>65535)return{host:Z,port:null};return{host:Z.slice(0,W),port:Y}}function w8(X){return B8.has(X)||B8.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 Q=jQ(W);if(!Q)return{ok:!1,status:403,reason:"bad-host"};if(!w8(Q.host))return{ok:!1,status:403,reason:"non-loopback-host"};if(Q.port!==null&&Q.port!==Z)return{ok:!1,status:403,reason:"host-port-mismatch"};let Y=X.headers.origin;if(typeof Y==="string"&&Y.length>0){if(Y!=="null"){let z;try{z=new URL(Y)}catch{return{ok:!1,status:403,reason:"bad-origin"}}if(!w8(z.hostname))return{ok:!1,status:403,reason:"non-loopback-origin"}}}return{ok:!0}}var b8="/mcp",FQ=43274,O8=16777216,LQ=1800000,BQ=300000,x8=200,wQ=-32700,S0=-32600,J3=-32603;function w0(X,Z,W,Q,Y){X.statusCode=Z,X.setHeader("content-type","application/json"),X.end(JSON.stringify({jsonrpc:"2.0",error:{code:W,message:Q,...Y?{data:Y}:{}},id:null}))}class Y3 extends Error{constructor(){super("expected application/json");this.name="BadContentTypeError"}}class z3 extends Error{constructor(){super(`body exceeds ${O8} bytes`);this.name="BodyTooLargeError"}}async function qQ(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 Y3}let W=0,Q=[];for await(let z of X){let j=typeof z==="string"?Buffer.from(z):z;if(W+=j.byteLength,W>O8)throw new z3;Q.push(j)}if(Q.length===0)return;let Y=Buffer.concat(Q).toString("utf8");if(Y.length===0)return;return JSON.parse(Y)}function PQ(X){if(Array.isArray(X))return X.some(P8);return P8(X)}function bQ(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 FQ}async function xQ(X,Z){let W=(Y)=>new Promise((z,j)=>{let F=(U)=>{X.off("listening",L),j(U)},L=()=>{X.off("error",F),z()};X.once("error",F),X.once("listening",L),X.listen(Y,"127.0.0.1")});try{await W(Z)}catch(Y){if(Y.code!=="EADDRINUSE"||Z===0)throw Y;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 Q=X.address();if(Q==null||typeof Q==="string")throw Error("[mcp] failed to read bound address");return Q.port}function OQ(X,Z){if(Z&&typeof Z==="object"&&!Array.isArray(Z)){let Q=Z.params;if(Q&&typeof Q==="object"&&!Array.isArray(Q)){let Y=Q.clientInfo;if(Y&&typeof Y==="object"&&!Array.isArray(Y)){let z=Y.name;if(typeof z==="string"&&z.trim().length>0)return z.trim()}}}let W=X.headers["user-agent"];if(typeof W==="string"&&W.trim().length>0)return W.trim();return null}async function R8(X){let Z=new Map,W=0;function Q(U){let w=Z.get(U);if(w)w.lastActivity=Date.now()}async function Y(U,w){Z.delete(U),await w.transport.close().catch(()=>{return})}async function z(){let U=null,w=1/0;for(let[P,C]of Z)if(C.lastActivity<w)w=C.lastActivity,U=P;if(U!==null){let P=Z.get(U);if(P)console.warn(`[mcp] session cap of ${x8} reached; evicting ${U}`),await Y(U,P)}}let j=setInterval(()=>{let U=Date.now()-LQ;for(let[w,P]of Z)if(P.lastActivity<U)console.log(`[mcp] sweeping idle session ${w}`),Y(w,P)},BQ);j.unref?.();let F=KQ((U,w)=>{(async()=>{let P;try{P=new URL(U.url??"/","http://127.0.0.1").pathname}catch{w0(w,400,S0,"bad-url");return}if(P!==b8){w0(w,404,S0,"not-found");return}let C=U.method??"POST";if(C!=="POST"&&C!=="GET"&&C!=="DELETE"){w.setHeader("Allow","GET, POST, DELETE"),w0(w,405,S0,"method-not-allowed");return}let h=q8(U,W);if(!h.ok){w0(w,h.status,S0,"forbidden",{reason:h.reason});return}let D=U.headers["mcp-session-id"],G=typeof D==="string"?D:void 0;if(C==="GET"||C==="DELETE"){if(!G||!Z.has(G)){w0(w,400,S0,"no-session",{hint:"Open a POST initialize first to receive an Mcp-Session-Id."});return}let O=Z.get(G).transport;Q(G);try{await O.handleRequest(U,w)}catch(M){if(console.error("[mcp] transport.handleRequest (GET/DELETE) threw",M),!w.headersSent)w0(w,500,J3,"internal")}return}let N;try{N=await qQ(U)}catch(O){if(O instanceof Y3){w0(w,415,S0,"expected-application-json");return}if(O instanceof z3){w0(w,413,S0,"body-too-large");return}w0(w,400,wQ,"invalid-json");return}let v;if(G&&Z.has(G))v=Z.get(G).transport,Q(G);else if(!G&&N!==void 0&&PQ(N)){let O=U.headers["x-ideawave-user-id"],M=typeof O==="string"&&O.trim().length>0?O.trim():null,g=U.headers["x-ideawave-frontend-session-id"],$=typeof g==="string"&&g.trim().length>0?g.trim():null,A=U.headers["x-ideawave-tool-surface"],x=typeof A==="string"?A.trim():"full",b=x==="read"||x==="ideate-coordinator"||x==="ideate-worker"?x:"full",y=U.headers["x-ideawave-images-supported"],_=typeof y==="string"&&y.trim()==="1",I=U.headers["x-ideawave-card-id"],l=typeof I==="string"&&I.trim().length>0?I.trim():null,k=U.headers["x-ideawave-execution-kind"],r=U.headers["x-ideawave-execution-id"],W0=typeof k==="string"?k.trim():"",C0=typeof r==="string"?r.trim():"",S=C0&&new Set(["agent-card","ideate-coordinator","ideate-step","ideate-participant","board-insight","board-auto-title"]).has(W0)?{kind:W0,id:C0}:null,d=U.headers["x-ideawave-ideate-claims"],T=null;if(typeof d==="string"&&d.length>0)try{T=JSON.parse(d)}catch{T=null}let t=U.headers["x-ideawave-board-id"],$0=typeof t==="string"&&t.trim().length>0?t.trim():null,z0=U.headers["x-ideawave-run-folder"],x9=typeof z0==="string"&&z0.trim().length>0?z0.trim():null,WX=U.headers["x-ideawave-pool-session-id"],O9=typeof WX==="string"&&WX.trim().length>0?WX.trim():null,R9=OQ(U,N);if(Z.size>=x8)await z();let QX=null,l0=new UQ({sessionIdGenerator:()=>HQ(),onsessioninitialized:(X1)=>{QX=X1,Z.set(X1,{transport:l0,lastActivity:Date.now()})},onsessionclosed:(X1)=>{Z.delete(X1)}});l0.onclose=()=>{if(l0.sessionId)Z.delete(l0.sessionId)};try{await X.buildServer({userId:M,frontendSessionId:$,boardId:$0,toolSurface:b,imagesSupported:_,cardId:l,executionTarget:S,ideateClaims:T,runFolder:x9,poolSessionId:O9,clientHint:R9}).connect(l0)}catch(X1){if(console.error("[mcp] buildServer/connect failed",X1),QX)Z.delete(QX);await l0.close().catch(()=>{return}),w0(w,500,J3,"server-init-failed");return}v=l0}else{w0(w,400,S0,"no-session",{hint:"Non-initialize requests must include a valid Mcp-Session-Id header obtained from a prior initialize."});return}try{await v.handleRequest(U,w,N)}catch(O){if(console.error("[mcp] transport.handleRequest threw",O),!w.headersSent)w0(w,500,J3,"internal")}})().catch((P)=>{console.error("[mcp] unhandled request handler error:",P)})});return W=await xQ(F,bQ(X.port)),{url:`http://127.0.0.1:${W}${b8}`,port:W,close:async()=>{clearInterval(j);for(let U of Z.values())await U.transport.close().catch(()=>{return});Z.clear(),await new Promise((U)=>F.close(()=>U()))}}}var v8=new Map;function V3(X,Z){if(!X)return;v8.set(X,Z)}function C8(X){if(!X)return!1;return v8.get(X)??!1}var MQ={name:"ideawave-board",version:"1.0.0"},d2="list_run_folder",a2="read_run_folder_file",h8=new Set(["inspect_diagram"]),c1=new Map;function NQ(X,Z){let W=new Set(X.map(({name:Y})=>K1(Y)).filter((Y)=>c2.has(Y))),Q=new Set(Z.map((Y)=>K1(Y)));return W.size===Q.size&&[...W].every((Y)=>Q.has(Y))}function DQ(X,Z){if(!X)return;let W=c1.get(X);if(!W)return;for(let Q of W.waiters){if(!NQ(Z,Q.expectedWorkerTools))continue;W.waiters.delete(Q),Q.resolve(!0)}}async function M8(X){let Z=c1.get(X.poolSessionId);if(!Z)return!1;let W=X.timeoutMs??750;return new Promise((Q)=>{let Y=!1,z=(L)=>{if(Y)return;Y=!0,clearTimeout(F),Z.waiters.delete(j),Q(L)},j={expectedWorkerTools:X.expectedWorkerTools,resolve:z},F=setTimeout(()=>z(!1),W);F.unref?.(),Z.waiters.add(j),Z.server.sendToolListChanged().catch(()=>z(!1))})}function j3(X,Z,W){if(X===d2||X===a2)return Z==="full"||Z==="read";return L8(X,Z,W)}var $Q=[{name:d2,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:a2,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 H3(X){return{content:[{type:"text",text:X}]}}function GQ(X){return H3(JSON.stringify(X,null,2))}function f8(X){return{...H3(X),isError:!0}}async function EQ(X,Z){if(!Z||X.isError)return X;let W=X.content.find((z)=>z.type==="text");if(!W)return X;let Q;try{let z=JSON.parse(W.text);if(typeof z.path!=="string")return X;Q=u1.resolve(z.path)}catch{return X}let Y=u1.resolve(u1.join(CQ.tmpdir(),"ideawave-screenshots"));if(u1.dirname(Q)!==Y||!/^board-[a-z0-9-]+\.png$/i.test(u1.basename(Q)))return X;try{if(!(await RQ(Q)).isFile())return X;let j=await vQ(Q);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 gQ(X,Z,W="full",Q=!1,Y){return X.getMetadata(Z).filter((z)=>{let j=K1(z.name);if(!j3(j,W,Y))return!1;if(!Q&&h8.has(j))return!1;return!0}).map((z)=>({name:z.name,description:z.description,inputSchema:z.inputSchema}))}function mQ(X,Z,W={}){let Q=gQ(X,Z,W.toolSurface??"full",W.imagesSupported??!1,W.workerToolNames);if(!W.includeRunFolderTools)return Q;let Y=W.toolSurface??"full",z=$Q.filter((j)=>j3(j.name,Y,W.workerToolNames));return[...Q,...z]}function y8(X,Z){if(!X||typeof X!=="object"||Array.isArray(X))return null;let W=X[Z];return typeof W==="string"?W:null}async function _Q(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 k0({boardId:X,cardId:Z})).runFolder}async function kQ(X){let Z=await _Q(X.boardId,X.cardId,X.runFolder);if(X.name===d2){let W=y8(X.args,"path")??"",Q=await m4(Z,W);return GQ(Q)}if(X.name===a2){let W=y8(X.args,"path");if(!W)return f8("read_run_folder_file requires a path.");return H3(await m2(Z,W))}return f8(`Unknown local tool "${X.name}"`)}function SQ(X,Z,W,Q,Y,z="full",j=!1,F=null,L=null,U=null){let w=new fQ(MQ,{capabilities:{tools:{listChanged:!0}}});if(U){let h={server:w,waiters:new Set};c1.set(U,h),w.onclose=()=>{if(c1.get(U)!==h)return;c1.delete(U);for(let D of h.waiters)D.resolve(!1);h.waiters.clear()}}let P=()=>{let h=j8(U);return{cardId:h?.cardId??Q,executionTarget:h?.executionTarget??F,ideateClaims:h?.ideateClaims??L}},C=async()=>{if(j)return!0;let h=P().cardId;if(C8(h))return!0;if(W&&h)try{return(await k0({boardId:W,cardId:h})).adapter.supportsImages===!0}catch{return!1}return!1};return w.setRequestHandler(hQ,async()=>{let h=mQ(X,Z,{includeRunFolderTools:z!=="ideate-coordinator"&&Boolean(Y||W&&Q),toolSurface:z,imagesSupported:await C(),workerToolNames:P().ideateClaims?.workerToolNames??null});return DQ(U,h),{tools:h}}),w.setRequestHandler(yQ,async(h)=>{let{name:D,arguments:G}=h.params,N=K1(D),v=Date.now(),O=P();m("mcp.tool_call_received",{frontendSessionId:Z,cardId:O.cardId,toolName:N});try{if(!j3(N,z,O.ideateClaims?.workerToolNames))throw Error(`Tool "${D}" is not available on the ${z} surface`);if(N===d2||N===a2)return await kQ({name:N,args:G,boardId:W,cardId:O.cardId,runFolder:Y});if(h8.has(N)&&!await C())throw Error(`Tool "${D}" requires a runtime that supports image input`);let M=await X.callTool(Z,N,G??{},O.ideateClaims?.runId,O.cardId??void 0,O.executionTarget??void 0,O.ideateClaims??void 0,z);if(m("mcp.tool_result_returned",{frontendSessionId:Z,cardId:O.cardId,toolName:N,elapsedMs:Date.now()-v}),M&&typeof M==="object"&&Array.isArray(M.content)){let g=M;return N==="screenshot_board"||N==="screenshot_ideate_context"?await EQ(g,await C()):g}return{content:[{type:"text",text:typeof M==="string"?M:JSON.stringify(M)}]}}catch(M){return m("mcp.tool_result_returned",{frontendSessionId:Z,cardId:O.cardId,toolName:N,elapsedMs:Date.now()-v,hasError:!0}),{content:[{type:"text",text:M instanceof Error?M.message:"Tool call failed"}],isError:!0}}}),w}function N8(X,Z){return R8({buildServer:(W)=>SQ(X,W.frontendSessionId,W.boardId,W.cardId,W.runFolder,W.toolSurface,W.imagesSupported,W.executionTarget,W.ideateClaims,W.poolSessionId),port:Z})}var s0=new Map,K3=new Set;function U3(X){s0.get(X)?.controller.abort()}function $8(X){for(let[Z,W]of s0){if(W.frontendSessionId!==X)continue;W.controller.abort(),s0.delete(Z)}}function G8(){for(let X of s0.values())X.controller.abort();s0.clear()}function d1(X,Z){if(Z?.aborted)return!0;return X instanceof Error&&/abort signal received|session cancelled/i.test(X.message)}var D8=200;async function F3(X){try{return await X.open()}catch(Z){if(!(Z instanceof u)||d1(Z,X.signal))throw Z;if(m("cli.session_open_retry",{operation:X.operation,delayMs:D8,errorText:Z.message}),await new Promise((W)=>{setTimeout(W,D8)}),X.signal?.aborted)throw Z;return X.open()}}function L3(X,Z,W,Q){if((!Z.availableModels||Z.availableModels.length===0)&&Z.availableConfigOptions.length===0)return;q0((Y)=>{let z=Y.runtimes.find((j)=>j.id===X);if(z){if(Z.availableModels&&Z.availableModels.length>0)z.discoveredModels=E2({adapterId:W,models:Z.availableModels,currentModelId:Z.currentModelId??Q});if(Z.availableConfigOptions.length>0)z.discoveredConfigOptions=Z.availableConfigOptions}}).catch(()=>{return})}function AQ(X,Z,W){if(W==="ideate-coordinator"||W==="ideate-worker")return X;return`${X}
1163
+ `;z+=b.content.text,U=!1,A(z)}}else{let _=`agent_message_chunk:${b.content.type}`;w[_]=(w[_]??0)+1}return}case"agent_thought_chunk":{if(b.content.type!=="text")return;j+=b.content.text;let y=new Date().toISOString(),_=`${Z.runId}:thought`,I=P.get(_);C({toolCallId:_,rawTitle:"agent_thought",title:"Thought",kind:"thought",status:"running",startedAt:I?.startedAt??y,completedAt:null,contentPreview:p0(j.trim())});return}case"user_message_chunk":return;case"tool_call":{F+=1,U=z.length>0;let y=A4(b.title),_=iX(b.status),I=new Date().toISOString();h(I),D(I),C({toolCallId:b.toolCallId,rawTitle:y,title:rX(y,b.rawInput),kind:pX(b.kind),status:_,startedAt:I,completedAt:_==="running"?null:I,inputPreview:D0(b.rawInput),outputPreview:sX(b.rawOutput),contentPreview:_2(b.content),locations:oX(b.locations)});return}case"tool_call_update":{let y=P.get(b.toolCallId);if(!y){let C0=A4(b.title),n=iX(b.status),S=new Date().toISOString();C({toolCallId:b.toolCallId,rawTitle:C0,title:rX(C0,b.rawInput),kind:pX(b.kind),status:n,startedAt:S,completedAt:n==="running"?null:S,inputPreview:D0(b.rawInput),outputPreview:sX(b.rawOutput),contentPreview:_2(b.content),locations:oX(b.locations)});return}let _=b.status===void 0||b.status===null?y.status:iX(b.status),I=typeof b.title==="string"&&b.title.trim().length>0?b.title:y.rawTitle,l=typeof b.title==="string"&&b.title.trim().length>0,k=_==="running"?y.completedAt:y.completedAt??new Date().toISOString(),r=b.content===void 0?y.contentPreview:T4(y.contentPreview,_2(b.content)),W0=b.rawOutput===void 0?y.outputPreview:T4(y.outputPreview,sX(b.rawOutput));C({...y,rawTitle:I,title:l?rX(I,b.rawInput):y.title,kind:b.kind===void 0?y.kind:pX(b.kind),status:_,completedAt:k,inputPreview:b.rawInput===void 0?y.inputPreview:D0(b.rawInput),outputPreview:W0,contentPreview:r,locations:b.locations===void 0?y.locations:oX(b.locations)});return}case"plan":L=b.entries;return;case"available_commands_update":return;case"current_mode_update":return;default:return}},getFinalText:()=>z,getToolCallCount:()=>F,getLatestPlan:()=>L,getUpdateTypeCounts:()=>({...w}),flush:(x)=>{let b=new Date().toISOString();if(h(b),x?.completeOpenToolCalls)G(b);$()}}}var _W=new Set(["ECONNRESET","EPIPE"]);function S2(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"&&_W.has(Z)}var T1=1,u4=-32000;function _0(X){return typeof X==="number"&&Number.isSafeInteger(X)&&X>=0?X:null}function kW(X){if(!X)return{status:"unreported"};let Z=_0(X.totalTokens),W=_0(X.inputTokens),Q=_0(X.outputTokens);if(Z===null||W===null||Q===null)return{status:"unreported"};let Y=_0(X.thoughtTokens),z=_0(X.cachedReadTokens),j=_0(X.cachedWriteTokens);return{status:"reported",totalTokens:Z,inputTokens:W,outputTokens:Q,...Y===null?{}:{thoughtTokens:Y},...z===null?{}:{cachedReadTokens:z},...j===null?{}:{cachedWriteTokens:j}}}function SW(X){if(!X)return null;if(typeof X.amount!=="number"||!Number.isFinite(X.amount)||X.amount<0||typeof X.currency!=="string"||X.currency.trim().length===0)return null;return{amount:X.amount,currency:X.currency}}function AW(X){let Z=_0(X.used),W=_0(X.size);return Z===null||W===null?null:{usedTokens:Z,windowTokens:W}}function IW(X){let Z=X.latestCost;if(!Z)return{status:"unreported",reason:"omitted"};let W=X.baselineCost;if(!W){if(X.zeroBaseline)return{status:"reported",amount:Z.amount,currency:Z.currency};return{status:"unreported",reason:"baseline_unavailable"}}if(W.currency!==Z.currency)return{status:"unreported",reason:"currency_mismatch"};if(Z.amount<W.amount)return{status:"unreported",reason:"counter_reset"};return{status:"reported",amount:Z.amount-W.amount,currency:Z.currency}}function c4(){return{lastCumulativeCost:null,promptsStarted:0}}function d4(X){let Z={baselineCost:X.lastCumulativeCost?{...X.lastCumulativeCost}:null,zeroBaseline:X.promptsStarted===0&&X.lastCumulativeCost===null,latestCost:null,latestContext:null,finalizedUsage:null};return X.promptsStarted+=1,Z}function a4(X,Z,W){let Q=AW(W),Y=SW(W.cost);if(Z&&Q)Z.latestContext=Q;if(Y){if(Z)Z.latestCost=Y;X.lastCumulativeCost=Y}return{context:Q,cumulativeCost:Y}}function A2(X,Z,W){if(Z.finalizedUsage)return Z.finalizedUsage;let Q={tokens:kW(X?.usage),context:Z.latestContext?{status:"reported",...Z.latestContext}:{status:"unreported"},cost:IW(Z)};if(Z.finalizedUsage=Q,!Z.latestCost)W.lastCumulativeCost=null;return Q}function K1(X){return{tokenUsageStatus:X?.tokens.status??"unreported",...X?.tokens.status==="reported"?{totalTokens:X.tokens.totalTokens,inputTokens:X.tokens.inputTokens,outputTokens:X.tokens.outputTokens,thoughtTokens:X.tokens.thoughtTokens,cachedReadTokens:X.tokens.cachedReadTokens,cachedWriteTokens:X.tokens.cachedWriteTokens}:{},contextUsageStatus:X?.context.status??"unreported",...X?.context.status==="reported"?{contextUsedTokens:X.context.usedTokens,contextWindowTokens:X.context.windowTokens}:{},costUsageStatus:X?.cost.status??"unreported",...X?.cost.status==="reported"?{costAmount:X.cost.amount,costCurrency:X.cost.currency}:{costUnreportedReason:X?.cost.reason??"omitted"}}}function i4(X){if(X.awaitingInput)return!1;return X.nowMs-X.lastUpdateMs>=X.windowMs}function n4(X){if(!X||typeof X!=="object")return!1;return X.code===u4}var uW=300000,cW=uW,dW=5000;function aW(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 t4(){return{name:"ideawave-cli",title:"IdeaWave CLI",version:"0.0.103".trim()?"0.0.103":"dev"}}function e4(X){if(X===T1)return;throw new u(`Unsupported ACP protocol version ${X}; expected ${T1}`)}function X8(X){return(X??[]).flatMap((Z)=>{if(!Z||typeof Z!=="object")return[];let W=Z.name;return typeof W==="string"&&W.trim()?[W.trim()]:[]})}function iW(X,Z,W,Q){let Y=X,z=X8(Z),F=[Y.toolCall.name,Y.toolCall.title].filter((L)=>typeof L==="string").some((L)=>p4(L,z));if(W==="codex"&&Y._meta?.is_mcp_tool_approval===!0){if(F)return!0;if(typeof Y.toolCall.toolCallId!=="string")return!1;let L=Q.get(Y.toolCall.toolCallId);return Boolean(L&&p4(L,z))}if(F)return!0;return W==="claude-code"&&Y.toolCall.kind==="fetch"}function p4(X,Z){return Z.some((W)=>{return[...new Set([W,W.replace(/-/g,"_"),W.replace(/[^a-zA-Z0-9_-]/g,"_")])].some((Y)=>X.startsWith(`mcp__${Y}__`)||X.startsWith(`mcp.${Y}.`))})}function Z8(X){return TW.toWeb(X)}function W8(X){return lW.toWeb(X)}function I2(X){return X!==null&&typeof X==="object"}function pW(X){if(!Array.isArray(X))return[];let Z=[];for(let W of X){if(!I2(W))continue;if(typeof W.group==="string"&&Array.isArray(W.options)){let Q=typeof W.name==="string"?W.name:W.group;for(let Y of W.options){if(!I2(Y))continue;if(typeof Y.value!=="string"||typeof Y.name!=="string")continue;Z.push({value:Y.value,name:Y.name,description:typeof Y.description==="string"?Y.description:null,group:W.group,groupName:Q})}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 rW(X){if(!I2(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 Q=typeof X.currentValue==="string"?X.currentValue:null;return{id:X.id,name:X.name,category:Z,description:W,type:"select",currentValue:Q,options:pW(X.options)}}if(X.type==="boolean"){let Q=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:Q,options:[]}}return null}function nX(X){let Z=(X.configOptions??[]).map(rW).filter((F)=>F!==null),W=Z.find((F)=>F.type==="select"&&F.category==="model")??Z.find((F)=>F.type==="select"&&F.id==="model")??null,Q=W?.options.map((F)=>({id:F.value,name:F.name,description:F.description??null})),Y=sW(X.models),z=Q&&Q.length>0?Q:Y&&Y.length>0?Y:null,j=(typeof W?.currentValue==="string"?W.currentValue:null)??oW(X.models)??null;return{models:z,currentModelId:j,configOptions:Z,modelConfigId:W?.id??null}}function sW(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 oW(X){return typeof X?.currentModelId==="string"?X.currentModelId:null}function nW(X,Z){let W=[];if(X.trim())W.push({type:"text",text:X});for(let Q of Z)if(Q.content.trim())W.push({type:"text",text:Q.content});return W}var tW=500;function Q8(X){return new Promise((Z)=>{let W=setTimeout(()=>Z({code:null,signal:null,stderr:""}),tW);X.then((Q)=>{clearTimeout(W),Z(Q)})})}function J8(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 Y8(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 z8(X,Z){if(X==="default")return null;if(!Z||Z.length===0)return X;let W=Z.find((U)=>U.id===X);if(W)return W.id;let Q=X.toLowerCase(),Y=Q.includes("opus")?"opus":Q.includes("sonnet")?"sonnet":Q.includes("haiku")?"haiku":null;if(!Y)return X;let z=(U)=>`${U.id} ${U.name??""} ${U.description??""}`.toLowerCase(),j=Z.filter((U)=>z(U).includes(Y));if(j.length===0)return X;let L=(Q.includes("1m")?j.find((U)=>z(U).includes("1m")):void 0)??j[0];return L?L.id:X}async function T2(X){try{let Z=await X.conn.setSessionConfigOption(J8({sessionId:X.sessionId,configId:X.configId,value:X.value}));return Y8(X.metadata,Z)}catch(Z){return console.warn(`[acp] setSessionConfigOption(${X.label}) failed; using agent default.`,Z instanceof Error?Z.message:Z),X.metadata}}function r4(X){let Z=X.id.toLowerCase().replace(/[_\s-]+/g,"");return X.category?.toLowerCase().replace(/[_\s-]+/g,"")==="mode"||Z==="mode"||Z==="permissionmode"}function eW(X){if(X.type!=="select")return null;return X.options.find(({value:W})=>{return W.toLowerCase().replace(/[_\s-]+/g,"")==="readonly"})?.value??null}async function l2(X){let Z=X.isolateAmbientToolSources&&X.adapterId==="codex";if(Z&&X8(X.mcpServers).length===0)throw new u("An isolated Codex session requires an explicit IdeaWave MCP server");let W=dX(Z?{...X.spawn,env:{...X.spawn.env,INITIAL_AGENT_MODE:"read-only",DISABLE_MCP_CONFIG_FILTERING:"true"}}:X.spawn),Q=[],Y=0,z=4096;W.stderr.on("data",(S)=>{Q.push(S),Y+=S.length;while(Y>z*2&&Q.length>1){let d=Q.shift();if(d)Y-=d.length}});let j=()=>{let S=Buffer.concat(Q).toString("utf8");return S.length>z?S.slice(-z):S},F=S4(X.spawn.cwd),L={current:null},U={current:null},w=c4(),P={at:Date.now()},C=new Map,h=null,D=W8(W.stdin),G=Z8(W.stdout),N=o4(D,G),O=new s4((S)=>({requestPermission:async(d)=>{if(X.isolateAmbientToolSources&&!iW(d,X.mcpServers,X.adapterId,C))return{outcome:{outcome:"cancelled"}};let T=d.options,t=T?.find(($0)=>$0.kind==="allow_once")??T?.find(($0)=>$0.kind==="allow_always");if(t)return{outcome:{outcome:"selected",optionId:t.optionId}};return{outcome:{outcome:"cancelled"}}},sessionUpdate:async(d)=>{if(P.at=Date.now(),X.isolateAmbientToolSources&&X.adapterId==="codex"&&(d.update.sessionUpdate==="tool_call"||d.update.sessionUpdate==="tool_call_update")){let z0=d.update;if(typeof z0.toolCallId==="string"&&typeof z0.title==="string")C.set(z0.toolCallId,z0.title)}let T=U.current,t=d.update.sessionUpdate;if(t==="usage_update"){let z0=a4(w,T?.promptUsage??null,d.update);m("acp.usage_update",{runId:T?.runId,cardId:T?.cardId,sessionId:h,attributedToActivePrompt:T!==null,contextUsageStatus:z0.context?"reported":"unreported",contextUsedTokens:z0.context?.usedTokens,contextWindowTokens:z0.context?.windowTokens,cumulativeCostStatus:z0.cumulativeCost?"reported":"unreported",cumulativeCostAmount:z0.cumulativeCost?.amount,cumulativeCostCurrency:z0.cumulativeCost?.currency})}if(T){if(T.updateCount+=1,T.updateCount===1||T.lastUpdateType!==t||t==="tool_call"||t==="tool_call_update")m("acp.session_update",{runId:T.runId,cardId:T.cardId,sessionId:h,updateType:t,updateCount:T.updateCount,elapsedMs:Date.now()-T.startedAt});T.lastUpdateType=t}let $0=L.current;if($0)await $0.onSessionUpdate(d)},readTextFile:X.isolateAmbientToolSources?async()=>{throw Error("Filesystem reads are unavailable in this isolated session")}:F.readTextFile}),N),M=()=>W.kill();if(X.signal)X.signal.addEventListener("abort",M);let g=()=>{if(X.signal)X.signal.removeEventListener("abort",M)},$=(S)=>{throw g(),W.kill(),new u(S)},A=(S,d)=>{let T=d instanceof Error?d.message:I2(d)&&typeof d.message==="string"?d.message:String(d);return $(`Isolated Codex runtime advertised ${S} but rejected it: ${T}`)},x=async(S,d)=>{if(g(),W.kill(),n4(S))throw new Z1(S.message??"Authentication required",d);if(S2(S)){if(X.signal?.aborted)throw new u("ACP session cancelled: abort signal received");let T=await Q8(W.waitForExit);throw new u(`Runtime process exited before completion: ${T.stderr?.trim()??""}`)}throw S},b;try{b=await O.initialize({protocolVersion:T1,clientCapabilities:X.isolateAmbientToolSources?k4:cX,clientInfo:t4()})}catch(S){throw await x(S,[]),Error("unreachable")}try{e4(b.protocolVersion)}catch(S){throw g(),W.kill(),S}let y=b.authMethods?.map((S)=>S.id)??[],_;try{_=await O.newSession({cwd:X.spawn.cwd,mcpServers:X.mcpServers??[],...X.isolateAmbientToolSources&&X.adapterId==="claude-code"?{_meta:{disableBuiltInTools:!0,claudeCode:{options:{settingSources:[],tools:X.allowNativeWebTools===!1?[]:["WebSearch","WebFetch"]}}}}:{}})}catch(S){throw await x(S,y),Error("unreachable")}let I=_.sessionId;h=I;let l=nX(_),k=X.modelId??null,r=k?z8(k,l.models):null;if(r&&r!==l.currentModelId)if(l.modelConfigId)l=await T2({conn:O,sessionId:I,configId:l.modelConfigId,value:r,metadata:l,label:`${l.modelConfigId}=${r}`});else console.warn(`[acp] runtime did not advertise a model config option for ${r}; using agent default.`);for(let[S,d]of Object.entries(X.configValues??{}).sort(([T],[t])=>T.localeCompare(t))){if(S===l.modelConfigId)continue;let T=l.configOptions.find((t)=>t.id===S);if(!T)continue;if(Z&&r4(T))continue;l=await T2({conn:O,sessionId:I,configId:S,value:d,metadata:l,label:`${S}=${String(d)}`})}if(Z){let S=l.configOptions.find(r4),d=S?eW(S):null;if(S&&d)try{let T=await O.setSessionConfigOption(J8({sessionId:I,configId:S.id,value:d}));l=Y8(l,T)}catch(T){A(`${S.id}=${d}`,T)}else{let T=_.modes?.availableModes.find((t)=>t.id.toLowerCase().replace(/[_\s-]+/g,"")==="readonly");if(!T)$("Isolated Codex runtime did not advertise an enforceable read-only config option or legacy mode");else try{await O.setSessionMode({sessionId:I,modeId:T.id})}catch(t){A(`legacy mode=${T.id}`,t)}}}g();let W0=!1,C0=async()=>{if(W0)return;W0=!0,W.kill(),await Promise.race([W.waitForExit,new Promise((S)=>setTimeout(S,2000))])},n=!1;return W.processCrashed.then(()=>{n=!0}),{sessionId:I,availableModels:l.models,currentModelId:l.currentModelId,availableConfigOptions:l.configOptions,isAlive:()=>!W0&&!n,dispose:C0,prompt:(S)=>{return C.clear(),XQ({proc:W,conn:O,sessionId:I,activeAdapter:L,activeTrace:U,usageState:w,lastUpdate:P,collectStderrTail:j},S)}}}async function XQ(X,Z){let{proc:W,conn:Q,sessionId:Y,activeAdapter:z,activeTrace:j,usageState:F,lastUpdate:L}=X,U=Date.now(),w=Z.heartbeatMs??cW,P=aW(w),C={boardId:Z.boardId,cardId:Z.cardId,runId:Z.runId},h=l4({ctx:C,appendText:Z.appendText,appendToolActivity:Z.appendToolActivity,onAnyUpdate:Z.onAnyUpdate}),D=d4(F),G=null,N=null;z.current=h,j.current={runId:Z.runId,cardId:Z.cardId,startedAt:U,updateCount:0,lastUpdateType:null,promptUsage:D},L.at=Date.now(),m("acp.prompt_started",{runId:Z.runId,cardId:Z.cardId,sessionId:Y,heartbeatWindowMs:w});let v=!1,O=null,M=()=>W.kill();Z.signal.addEventListener("abort",M);try{let g=async()=>{let b=Math.min(dW,Math.max(50,Math.floor(w/2)));O=setInterval(()=>{let _=Z.isAwaitingInput?.()??!1;if(_){L.at=Date.now();return}if(i4({nowMs:Date.now(),lastUpdateMs:L.at,windowMs:w,awaitingInput:_}))v=!0,m("acp.inactivity_timeout",{runId:Z.runId,cardId:Z.cardId,sessionId:Y,windowMs:w,silentForMs:Date.now()-L.at}),Q.cancel({sessionId:Y}).catch(()=>{return}),W.kill()},b);let y=nW(Z.prompt.systemPrompt,Z.prompt.messages);G=await Q.prompt({sessionId:Y,prompt:y}),N=A2(G,D,F),m("acp.prompt_resolved",{runId:Z.runId,cardId:Z.cardId,sessionId:Y,elapsedMs:Date.now()-U,...K1(N)}),h.flush({completeOpenToolCalls:!0})},$=W.waitForExit.then((b)=>({kind:"exited",exit:b})),A=g().then(()=>({kind:"ok"})).catch(async(b)=>{if(S2(b))return W.kill(),{kind:"crashed",exit:await Q8(W.waitForExit)};throw b}),x;try{x=await Promise.race([A,W.processCrashed.then((b)=>({kind:"crashed",exit:b})),$])}catch(b){if(v)throw new x0(P);throw b}if(v)throw new x0(P);if(x.kind!=="ok"&&Z.signal.aborted)throw new u("ACP session cancelled: abort signal received");if(x.kind==="crashed")throw new u(`Runtime process exited before completion: ${x.exit.stderr.trim()}`);if(x.kind==="exited"){if(v)throw new x0(P);throw new u(`Runtime process exited unexpectedly: ${x.exit.stderr.trim()}`)}return{modelReported:"unknown",finalText:h.getFinalText(),toolCallsExecuted:h.getToolCallCount(),stderrTail:X.collectStderrTail(),updateTypeCounts:h.getUpdateTypeCounts(),usage:N??A2(G,D,F)}}finally{let g=N??A2(G,D,F);if(m("acp.prompt_finished",{runId:Z.runId,cardId:Z.cardId,sessionId:Y,elapsedMs:Date.now()-U,timedOut:v,updateCount:j.current?.updateCount??0,...K1(g)}),O!==null)clearInterval(O);Z.signal.removeEventListener("abort",M),h.flush({completeOpenToolCalls:!0}),z.current=null,j.current=null}}var ZQ=30000;async function V8(X){let Z=dX(X.spawn),W=W8(Z.stdin),Q=Z8(Z.stdout),Y=o4(W,Q),j=new s4((U)=>({requestPermission:async()=>({outcome:{outcome:"cancelled"}}),sessionUpdate:async()=>{return},readTextFile:async()=>({content:""})}),Y),F=()=>Z.kill();if(X.signal)X.signal.addEventListener("abort",F);let L=null;try{let U=(async()=>{let P=await j.initialize({protocolVersion:T1,clientCapabilities:cX,clientInfo:t4()});e4(P.protocolVersion);let C=P.authMethods?.map((M)=>M.id)??[],h;try{h=await j.newSession({cwd:X.spawn.cwd,mcpServers:[]})}catch(M){if(n4(M))throw new Z1(M.message??"Authentication required",C);throw M}let D=nX(h),G=X.modelId??null,N=G?z8(G,D.models):null;if(N&&N!==D.currentModelId)if(D.modelConfigId)D=await T2({conn:j,sessionId:h.sessionId,configId:D.modelConfigId,value:N,metadata:D,label:`${D.modelConfigId}=${N}`});else console.warn(`[acp] runtime did not advertise a model config option for ${N}; discovering agent default models.`);for(let[M,g]of Object.entries(X.configValues??{}).sort(([$],[A])=>$.localeCompare(A))){if(M===D.modelConfigId)continue;if(!D.configOptions.some(($)=>$.id===M))continue;D=await T2({conn:j,sessionId:h.sessionId,configId:M,value:g,metadata:D,label:`${M}=${String(g)}`})}let v=D.models??[],O=D.currentModelId;return j.cancel({sessionId:h.sessionId}).catch(()=>{return}),{models:v,configOptions:D.configOptions,currentModelId:O}})(),w=new Promise((P,C)=>{L=setTimeout(()=>{C(new x0)},ZQ)});return await Promise.race([U,w])}catch(U){if(S2(U)){if(X.signal?.aborted)throw new u("ACP model discovery cancelled: abort signal received");throw new u("Runtime process exited during model discovery.")}throw U}finally{if(L)clearTimeout(L);if(X.signal)X.signal.removeEventListener("abort",F);Z.kill()}}import WQ from"node:fs/promises";import u2 from"node:os";async function j8(X){let Z={version:1,globalDefaultConfigId:null,runtimes:[],boardOverrides:{},cardOverrides:{}},W;try{W=await WQ.readFile(X,"utf-8")}catch(Q){if(Q.code==="ENOENT")return structuredClone(Z);throw Q}return Z2.parse(JSON.parse(W))}function tX(X,Z,W){return{...X.defaultConfigValues??{},...Z?.configValues??{},...W?.configValues??{}}}async function k0(X){let Z=X.configPath?await j8(X.configPath):await F0(),W=X.cardId?Z.cardOverrides[X.cardId]:void 0;if(W?.runtimeConfigId){let Y=Z.runtimes.find((z)=>z.id===W.runtimeConfigId);if(Y)return{entry:Y,adapter:O0(Y),runFolder:W.runFolder??Y.runFolder??u2.homedir(),modelId:W.modelId??Y.defaultModelId??null,configValues:tX(Y,void 0,W)}}let Q=Z.boardOverrides[X.boardId];if(Q?.runtimeConfigId){let Y=Z.runtimes.find((z)=>z.id===Q.runtimeConfigId);if(Y)return{entry:Y,adapter:O0(Y),runFolder:Q.runFolder??Y.runFolder??u2.homedir(),modelId:Q.modelId??Y.defaultModelId??null,configValues:tX(Y,Q)}}if(Z.globalDefaultConfigId){let Y=Z.runtimes.find((z)=>z.id===Z.globalDefaultConfigId);if(Y)return{entry:Y,adapter:O0(Y),runFolder:W?.runFolder??Q?.runFolder??Y.runFolder??u2.homedir(),modelId:W?.modelId??Q?.modelId??Y.defaultModelId??null,configValues:tX(Y,Q,W)}}throw new h0}async function eX(X,Z={}){let Q=(Z.configPath?await j8(Z.configPath):await F0()).runtimes.find((Y)=>Y.id===X);if(!Q)return null;return{entry:Q,adapter:O0(Q),runFolder:Q.runFolder??u2.homedir(),modelId:Z.modelId??Q.defaultModelId??null,configValues:{...Q.defaultConfigValues??{},...Z.configValues??{}}}}var X3=new Map;function Z3(X,Z){X3.set(X,Z)}function W3(X){X3.delete(X)}function H8(X){if(!X)return null;return X3.get(X)??null}import{lstat as vQ,readFile as CQ}from"node:fs/promises";import fQ from"node:os";import u1 from"node:path";import{Server as yQ}from"@modelcontextprotocol/sdk/server/index.js";import{CallToolRequestSchema as hQ,ListToolsRequestSchema as MQ}from"@modelcontextprotocol/sdk/types.js";import{z as i}from"zod";var K0={maxSteps:12,maxParticipants:4,maxChannels:2,maxHandoffsPerChannel:12,maxTotalDispatches:24},l1=["ideate_create_note","ideate_create_code","ideate_create_shape","ideate_create_browser","ideate_create_image_context_card","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"],QQ=`
1164
+ <!-- ideawave:mutation-tool=`,JQ=" -->",jj=new RegExp(`${QQ.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}(?<tool>${l1.join("|")})${JQ.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}$`);var r0=i.string().trim().min(1).max(80),K8=i.string().trim().min(1).max(240).regex(/^(node|edge|diagram|browser|browser-annotation|comment|spatial-group|create):/),U8={type:"string",minLength:1,maxLength:240,pattern:"^(node|edge|diagram|browser|browser-annotation|comment|spatial-group|create):",description:"Exact lease key. A new artifact uses create:<runId>:<clientKey>, where clientKey exactly matches this step. An existing artifact uses its frozen UUID-backed node:, edge:, browser:, or diagram: key. External-only research declares no invented resource key."},Hj={type:"object",description:`A bounded acyclic Ideate plan with at most ${K0.maxSteps} total steps. Each new visible artifact gets one step and one exact create lease.`,properties:{summary:{type:"string",minLength:1,maxLength:1500},semanticAnchorId:{type:"string",minLength:1,maxLength:160},participants:{type:"array",maxItems:K0.maxParticipants,items:{type:"object",properties:{clientKey:{type:"string",minLength:1,maxLength:80},label:{type:"string",minLength:1,maxLength:40},responsibility:{type:"string",minLength:1,maxLength:1000}},required:["clientKey","label","responsibility"],additionalProperties:!1}},collaborationChannels:{type:"array",maxItems:K0.maxChannels,items:{type:"object",properties:{clientKey:{type:"string",minLength:1,maxLength:80},protocol:{type:"string",enum:["handoff","turn-taking","request-response","barrier"]},participantKeys:{type:"array",minItems:2,maxItems:4,items:{type:"string",minLength:1,maxLength:80}},resourceScope:{type:"array",maxItems:40,items:U8},maxHandoffs:{type:"integer",minimum:1,maximum:K0.maxHandoffsPerChannel},maxDurationMs:{type:"integer",minimum:1000,maximum:1800000},completion:{type:"string",enum:["all-done","accepted","coordinator-decides"]}},required:["clientKey","protocol","participantKeys","resourceScope","maxHandoffs","maxDurationMs","completion"],additionalProperties:!1}},steps:{type:"array",minItems:1,maxItems:K0.maxSteps,description:`HARD LIMIT: 1-${K0.maxSteps} total steps. Count plan.steps before submitting. If a draft is larger, combine related work and retry the same plan tool immediately; never silently truncate required outcomes.`,items:{type:"object",properties:{clientKey:{type:"string",minLength:1,maxLength:80,description:"Stable step key. For a create step, this exact value is the final segment of its create lease and the worker create call clientKey."},participantKey:{type:"string",minLength:1,maxLength:80},channelKeys:{type:"array",maxItems:2,items:{type:"string",minLength:1,maxLength:80}},label:{type:"string",minLength:1,maxLength:80},kind:{type:"string",enum:["read","browser","write","synthesis"]},prompt:{type:"string",minLength:1,maxLength:4000},mutationTool:{type:"string",enum:l1,description:"Required exactly once for each fresh write step. This is the one fenced mutation capability its worker receives."},dependsOn:{type:"array",maxItems:K0.maxSteps,items:{type:"string",minLength:1,maxLength:80}},resources:{type:"array",maxItems:40,items:{type:"object",properties:{key:U8,mode:{type:"string",enum:["read","write"]}},required:["key","mode"],additionalProperties:!1}}},required:["clientKey","label","kind","prompt","dependsOn","resources"],additionalProperties:!1}}},required:["summary","steps"],additionalProperties:!1};var Kj=i.object({summary:i.string().trim().min(1).max(1500),semanticAnchorId:i.string().trim().min(1).max(160).optional(),participants:i.array(i.object({clientKey:r0,label:i.string().trim().min(1).max(40),responsibility:i.string().trim().min(1).max(1000)}).strict()).max(K0.maxParticipants).optional(),collaborationChannels:i.array(i.object({clientKey:r0,protocol:i.enum(["handoff","turn-taking","request-response","barrier"]),participantKeys:i.array(r0).min(2).max(4),resourceScope:i.array(K8).max(40),maxHandoffs:i.number().int().min(1).max(K0.maxHandoffsPerChannel),maxDurationMs:i.number().int().min(1000).max(1800000),completion:i.enum(["all-done","accepted","coordinator-decides"])}).strict()).max(K0.maxChannels).optional(),steps:i.array(i.object({clientKey:r0,participantKey:r0.optional(),channelKeys:i.array(r0).max(2).optional(),label:i.string().trim().min(1).max(80),kind:i.enum(["read","browser","write","synthesis"]),prompt:i.string().trim().min(1).max(4000),mutationTool:i.enum(l1).optional(),dependsOn:i.array(r0).max(K0.maxSteps),resources:i.array(i.object({key:K8,mode:i.enum(["read","write"])}).strict()).max(40)}).strict()).min(1).max(K0.maxSteps,{error:`Plan exceeds the hard ${K0.maxSteps}-step limit. Combine related work into ${K0.maxSteps} or fewer steps and retry the same plan tool immediately; do not drop required outcomes.`})}).strict();var F8=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"]),YQ=["screenshot_board","inspect_diagram","ask_user_question","create_agent_card","append_user_message","spawn_child_agents"],zQ=new Set(YQ),qj=new Set([...F8].filter((X)=>!zQ.has(X)));var Q3={coordinator:["inspect_ideate_context","get_ideate_run_status","screenshot_ideate_context","search_board","list_nodes","submit_ideate_plan","revise_ideate_plan","get_question_ui_guide","ask_ideate_question","complete_ideate_run","start_board_walkthrough"],worker:["get_ideate_run_status","get_ideate_worker_context","screenshot_ideate_context","get_board","list_nodes","inspect_node","inspect_diagram","list_context_sources","read_context_card","read_context_file","read_context_image","list_context_folder","get_board_wiki","search_board","read_diagram_guide","inspect_browser","list_browser_images","locate_browser_element","list_agent_cards","get_card_messages","inspect_table","get_table_schema","read_table","query_table","export_table_csv",...l1]},VQ=new Set(["inspect_board_region","inspect_neighbors","list_edges","start_board_walkthrough"]),L8=new Set(Q3.coordinator),c2=new Set(Q3.worker);var Pj=Q3.worker.filter((X)=>X.startsWith("ideate_"));var jQ=new Set([...L8,...c2,"set_ideate_placement"].filter((X)=>X.startsWith("ideate_")||X.includes("ideate_")));function B8(X,Z,W){if(Z==="full")return!jQ.has(X);if(Z==="read")return F8.has(X);if(Z==="ideate-coordinator")return L8.has(X);if(VQ.has(X))return!1;return c2.has(X)&&Array.isArray(W)&&W.includes(X)}import{randomUUID as KQ}from"node:crypto";import{createServer as UQ}from"node:http";import{StreamableHTTPServerTransport as FQ}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 HQ(X){let Z=X.trim();if(Z.length===0)return null;if(Z.startsWith("[")){let z=Z.indexOf("]");if(z===-1)return null;let j=Z.slice(0,z+1),F=Z.slice(z+1);if(F.length===0)return{host:j,port:null};if(!F.startsWith(":"))return null;let L=Number(F.slice(1));if(!Number.isInteger(L)||L<=0||L>65535)return null;return{host:j,port:L}}let W=Z.lastIndexOf(":");if(W===-1)return{host:Z,port:null};let Q=Z.slice(W+1),Y=Number(Q);if(!Number.isInteger(Y)||Y<=0||Y>65535)return{host:Z,port:null};return{host:Z.slice(0,W),port:Y}}function q8(X){return w8.has(X)||w8.has(X.toLowerCase())}function P8(X,Z){let W=X.headers.host;if(typeof W!=="string")return{ok:!1,status:403,reason:"missing-host"};let Q=HQ(W);if(!Q)return{ok:!1,status:403,reason:"bad-host"};if(!q8(Q.host))return{ok:!1,status:403,reason:"non-loopback-host"};if(Q.port!==null&&Q.port!==Z)return{ok:!1,status:403,reason:"host-port-mismatch"};let Y=X.headers.origin;if(typeof Y==="string"&&Y.length>0){if(Y!=="null"){let z;try{z=new URL(Y)}catch{return{ok:!1,status:403,reason:"bad-origin"}}if(!q8(z.hostname))return{ok:!1,status:403,reason:"non-loopback-origin"}}}return{ok:!0}}var x8="/mcp",LQ=43274,R8=16777216,BQ=1800000,wQ=300000,O8=200,qQ=-32700,S0=-32600,J3=-32603;function w0(X,Z,W,Q,Y){X.statusCode=Z,X.setHeader("content-type","application/json"),X.end(JSON.stringify({jsonrpc:"2.0",error:{code:W,message:Q,...Y?{data:Y}:{}},id:null}))}class Y3 extends Error{constructor(){super("expected application/json");this.name="BadContentTypeError"}}class z3 extends Error{constructor(){super(`body exceeds ${R8} bytes`);this.name="BodyTooLargeError"}}async function PQ(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 Y3}let W=0,Q=[];for await(let z of X){let j=typeof z==="string"?Buffer.from(z):z;if(W+=j.byteLength,W>R8)throw new z3;Q.push(j)}if(Q.length===0)return;let Y=Buffer.concat(Q).toString("utf8");if(Y.length===0)return;return JSON.parse(Y)}function bQ(X){if(Array.isArray(X))return X.some(b8);return b8(X)}function xQ(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 LQ}async function OQ(X,Z){let W=(Y)=>new Promise((z,j)=>{let F=(U)=>{X.off("listening",L),j(U)},L=()=>{X.off("error",F),z()};X.once("error",F),X.once("listening",L),X.listen(Y,"127.0.0.1")});try{await W(Z)}catch(Y){if(Y.code!=="EADDRINUSE"||Z===0)throw Y;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 Q=X.address();if(Q==null||typeof Q==="string")throw Error("[mcp] failed to read bound address");return Q.port}function RQ(X,Z){if(Z&&typeof Z==="object"&&!Array.isArray(Z)){let Q=Z.params;if(Q&&typeof Q==="object"&&!Array.isArray(Q)){let Y=Q.clientInfo;if(Y&&typeof Y==="object"&&!Array.isArray(Y)){let z=Y.name;if(typeof z==="string"&&z.trim().length>0)return z.trim()}}}let W=X.headers["user-agent"];if(typeof W==="string"&&W.trim().length>0)return W.trim();return null}async function v8(X){let Z=new Map,W=0;function Q(U){let w=Z.get(U);if(w)w.lastActivity=Date.now()}async function Y(U,w){Z.delete(U),await w.transport.close().catch(()=>{return})}async function z(){let U=null,w=1/0;for(let[P,C]of Z)if(C.lastActivity<w)w=C.lastActivity,U=P;if(U!==null){let P=Z.get(U);if(P)console.warn(`[mcp] session cap of ${O8} reached; evicting ${U}`),await Y(U,P)}}let j=setInterval(()=>{let U=Date.now()-BQ;for(let[w,P]of Z)if(P.lastActivity<U)console.log(`[mcp] sweeping idle session ${w}`),Y(w,P)},wQ);j.unref?.();let F=UQ((U,w)=>{(async()=>{let P;try{P=new URL(U.url??"/","http://127.0.0.1").pathname}catch{w0(w,400,S0,"bad-url");return}if(P!==x8){w0(w,404,S0,"not-found");return}let C=U.method??"POST";if(C!=="POST"&&C!=="GET"&&C!=="DELETE"){w.setHeader("Allow","GET, POST, DELETE"),w0(w,405,S0,"method-not-allowed");return}let h=P8(U,W);if(!h.ok){w0(w,h.status,S0,"forbidden",{reason:h.reason});return}let D=U.headers["mcp-session-id"],G=typeof D==="string"?D:void 0;if(C==="GET"||C==="DELETE"){if(!G||!Z.has(G)){w0(w,400,S0,"no-session",{hint:"Open a POST initialize first to receive an Mcp-Session-Id."});return}let O=Z.get(G).transport;Q(G);try{await O.handleRequest(U,w)}catch(M){if(console.error("[mcp] transport.handleRequest (GET/DELETE) threw",M),!w.headersSent)w0(w,500,J3,"internal")}return}let N;try{N=await PQ(U)}catch(O){if(O instanceof Y3){w0(w,415,S0,"expected-application-json");return}if(O instanceof z3){w0(w,413,S0,"body-too-large");return}w0(w,400,qQ,"invalid-json");return}let v;if(G&&Z.has(G))v=Z.get(G).transport,Q(G);else if(!G&&N!==void 0&&bQ(N)){let O=U.headers["x-ideawave-user-id"],M=typeof O==="string"&&O.trim().length>0?O.trim():null,g=U.headers["x-ideawave-frontend-session-id"],$=typeof g==="string"&&g.trim().length>0?g.trim():null,A=U.headers["x-ideawave-tool-surface"],x=typeof A==="string"?A.trim():"full",b=x==="read"||x==="ideate-coordinator"||x==="ideate-worker"?x:"full",y=U.headers["x-ideawave-images-supported"],_=typeof y==="string"&&y.trim()==="1",I=U.headers["x-ideawave-card-id"],l=typeof I==="string"&&I.trim().length>0?I.trim():null,k=U.headers["x-ideawave-execution-kind"],r=U.headers["x-ideawave-execution-id"],W0=typeof k==="string"?k.trim():"",C0=typeof r==="string"?r.trim():"",S=C0&&new Set(["agent-card","ideate-coordinator","ideate-step","ideate-participant","board-insight","board-auto-title"]).has(W0)?{kind:W0,id:C0}:null,d=U.headers["x-ideawave-ideate-claims"],T=null;if(typeof d==="string"&&d.length>0)try{T=JSON.parse(d)}catch{T=null}let t=U.headers["x-ideawave-board-id"],$0=typeof t==="string"&&t.trim().length>0?t.trim():null,z0=U.headers["x-ideawave-run-folder"],O9=typeof z0==="string"&&z0.trim().length>0?z0.trim():null,WX=U.headers["x-ideawave-pool-session-id"],R9=typeof WX==="string"&&WX.trim().length>0?WX.trim():null,v9=RQ(U,N);if(Z.size>=O8)await z();let QX=null,l0=new FQ({sessionIdGenerator:()=>KQ(),onsessioninitialized:(X1)=>{QX=X1,Z.set(X1,{transport:l0,lastActivity:Date.now()})},onsessionclosed:(X1)=>{Z.delete(X1)}});l0.onclose=()=>{if(l0.sessionId)Z.delete(l0.sessionId)};try{await X.buildServer({userId:M,frontendSessionId:$,boardId:$0,toolSurface:b,imagesSupported:_,cardId:l,executionTarget:S,ideateClaims:T,runFolder:O9,poolSessionId:R9,clientHint:v9}).connect(l0)}catch(X1){if(console.error("[mcp] buildServer/connect failed",X1),QX)Z.delete(QX);await l0.close().catch(()=>{return}),w0(w,500,J3,"server-init-failed");return}v=l0}else{w0(w,400,S0,"no-session",{hint:"Non-initialize requests must include a valid Mcp-Session-Id header obtained from a prior initialize."});return}try{await v.handleRequest(U,w,N)}catch(O){if(console.error("[mcp] transport.handleRequest threw",O),!w.headersSent)w0(w,500,J3,"internal")}})().catch((P)=>{console.error("[mcp] unhandled request handler error:",P)})});return W=await OQ(F,xQ(X.port)),{url:`http://127.0.0.1:${W}${x8}`,port:W,close:async()=>{clearInterval(j);for(let U of Z.values())await U.transport.close().catch(()=>{return});Z.clear(),await new Promise((U)=>F.close(()=>U()))}}}var C8=new Map;function V3(X,Z){if(!X)return;C8.set(X,Z)}function f8(X){if(!X)return!1;return C8.get(X)??!1}var NQ={name:"ideawave-board",version:"1.0.0"},d2="list_run_folder",a2="read_run_folder_file",M8=new Set(["inspect_diagram"]),c1=new Map;function DQ(X,Z){let W=new Set(X.map(({name:Y})=>H1(Y)).filter((Y)=>c2.has(Y))),Q=new Set(Z.map((Y)=>H1(Y)));return W.size===Q.size&&[...W].every((Y)=>Q.has(Y))}function $Q(X,Z){if(!X)return;let W=c1.get(X);if(!W)return;for(let Q of W.waiters){if(!DQ(Z,Q.expectedWorkerTools))continue;W.waiters.delete(Q),Q.resolve(!0)}}async function N8(X){let Z=c1.get(X.poolSessionId);if(!Z)return!1;let W=X.timeoutMs??750;return new Promise((Q)=>{let Y=!1,z=(L)=>{if(Y)return;Y=!0,clearTimeout(F),Z.waiters.delete(j),Q(L)},j={expectedWorkerTools:X.expectedWorkerTools,resolve:z},F=setTimeout(()=>z(!1),W);F.unref?.(),Z.waiters.add(j),Z.server.sendToolListChanged().catch(()=>z(!1))})}function j3(X,Z,W){if(X===d2||X===a2)return Z==="full"||Z==="read";return B8(X,Z,W)}var GQ=[{name:d2,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:a2,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 H3(X){return{content:[{type:"text",text:X}]}}function EQ(X){return H3(JSON.stringify(X,null,2))}function y8(X){return{...H3(X),isError:!0}}async function gQ(X,Z){if(!Z||X.isError)return X;let W=X.content.find((z)=>z.type==="text");if(!W)return X;let Q;try{let z=JSON.parse(W.text);if(typeof z.path!=="string")return X;Q=u1.resolve(z.path)}catch{return X}let Y=u1.resolve(u1.join(fQ.tmpdir(),"ideawave-screenshots"));if(u1.dirname(Q)!==Y||!/^board-[a-z0-9-]+\.png$/i.test(u1.basename(Q)))return X;try{if(!(await vQ(Q)).isFile())return X;let j=await CQ(Q);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 mQ(X,Z,W="full",Q=!1,Y){return X.getMetadata(Z).filter((z)=>{let j=H1(z.name);if(!j3(j,W,Y))return!1;if(!Q&&M8.has(j))return!1;return!0}).map((z)=>({name:z.name,description:z.description,inputSchema:z.inputSchema}))}function _Q(X,Z,W={}){let Q=mQ(X,Z,W.toolSurface??"full",W.imagesSupported??!1,W.workerToolNames);if(!W.includeRunFolderTools)return Q;let Y=W.toolSurface??"full",z=GQ.filter((j)=>j3(j.name,Y,W.workerToolNames));return[...Q,...z]}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 kQ(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 k0({boardId:X,cardId:Z})).runFolder}async function SQ(X){let Z=await kQ(X.boardId,X.cardId,X.runFolder);if(X.name===d2){let W=h8(X.args,"path")??"",Q=await _4(Z,W);return EQ(Q)}if(X.name===a2){let W=h8(X.args,"path");if(!W)return y8("read_run_folder_file requires a path.");return H3(await m2(Z,W))}return y8(`Unknown local tool "${X.name}"`)}function AQ(X,Z,W,Q,Y,z="full",j=!1,F=null,L=null,U=null){let w=new yQ(NQ,{capabilities:{tools:{listChanged:!0}}});if(U){let h={server:w,waiters:new Set};c1.set(U,h),w.onclose=()=>{if(c1.get(U)!==h)return;c1.delete(U);for(let D of h.waiters)D.resolve(!1);h.waiters.clear()}}let P=()=>{let h=H8(U);return{cardId:h?.cardId??Q,executionTarget:h?.executionTarget??F,ideateClaims:h?.ideateClaims??L}},C=async()=>{if(j)return!0;let h=P().cardId;if(f8(h))return!0;if(W&&h)try{return(await k0({boardId:W,cardId:h})).adapter.supportsImages===!0}catch{return!1}return!1};return w.setRequestHandler(MQ,async()=>{let h=_Q(X,Z,{includeRunFolderTools:z!=="ideate-coordinator"&&Boolean(Y||W&&Q),toolSurface:z,imagesSupported:await C(),workerToolNames:P().ideateClaims?.workerToolNames??null});return $Q(U,h),{tools:h}}),w.setRequestHandler(hQ,async(h)=>{let{name:D,arguments:G}=h.params,N=H1(D),v=Date.now(),O=P();m("mcp.tool_call_received",{frontendSessionId:Z,cardId:O.cardId,toolName:N});try{if(!j3(N,z,O.ideateClaims?.workerToolNames))throw Error(`Tool "${D}" is not available on the ${z} surface`);if(N===d2||N===a2)return await SQ({name:N,args:G,boardId:W,cardId:O.cardId,runFolder:Y});if(M8.has(N)&&!await C())throw Error(`Tool "${D}" requires a runtime that supports image input`);let M=await X.callTool(Z,N,G??{},O.ideateClaims?.runId,O.cardId??void 0,O.executionTarget??void 0,O.ideateClaims??void 0,z);if(m("mcp.tool_result_returned",{frontendSessionId:Z,cardId:O.cardId,toolName:N,elapsedMs:Date.now()-v}),M&&typeof M==="object"&&Array.isArray(M.content)){let g=M;return N==="screenshot_board"||N==="screenshot_ideate_context"?await gQ(g,await C()):g}return{content:[{type:"text",text:typeof M==="string"?M:JSON.stringify(M)}]}}catch(M){return m("mcp.tool_result_returned",{frontendSessionId:Z,cardId:O.cardId,toolName:N,elapsedMs:Date.now()-v,hasError:!0}),{content:[{type:"text",text:M instanceof Error?M.message:"Tool call failed"}],isError:!0}}}),w}function D8(X,Z){return v8({buildServer:(W)=>AQ(X,W.frontendSessionId,W.boardId,W.cardId,W.runFolder,W.toolSurface,W.imagesSupported,W.executionTarget,W.ideateClaims,W.poolSessionId),port:Z})}var s0=new Map,K3=new Set;function U3(X){s0.get(X)?.controller.abort()}function G8(X){for(let[Z,W]of s0){if(W.frontendSessionId!==X)continue;W.controller.abort(),s0.delete(Z)}}function E8(){for(let X of s0.values())X.controller.abort();s0.clear()}function d1(X,Z){if(Z?.aborted)return!0;return X instanceof Error&&/abort signal received|session cancelled/i.test(X.message)}var $8=200;async function F3(X){try{return await X.open()}catch(Z){if(!(Z instanceof u)||d1(Z,X.signal))throw Z;if(m("cli.session_open_retry",{operation:X.operation,delayMs:$8,errorText:Z.message}),await new Promise((W)=>{setTimeout(W,$8)}),X.signal?.aborted)throw Z;return X.open()}}function L3(X,Z,W,Q){if((!Z.availableModels||Z.availableModels.length===0)&&Z.availableConfigOptions.length===0)return;q0((Y)=>{let z=Y.runtimes.find((j)=>j.id===X);if(z){if(Z.availableModels&&Z.availableModels.length>0)z.discoveredModels=E2({adapterId:W,models:Z.availableModels,currentModelId:Z.currentModelId??Q});if(Z.availableConfigOptions.length>0)z.discoveredConfigOptions=Z.availableConfigOptions}}).catch(()=>{return})}function IQ(X,Z,W){if(W==="ideate-coordinator"||W==="ideate-worker")return X;return`${X}
1145
1165
 
1146
1166
  Runtime run folder:
1147
1167
  - Effective run folder: ${Z}
1148
1168
  - When the user says "my folder", "current folder", or "run folder", they mean this selected runtime folder.
1149
1169
  - 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.
1150
- - Filesystem access is read-only and limited to this folder. Hidden/config folders and outside-folder paths are unavailable.`}var i2=new WeakMap;function E8(X,Z,W,Q){return`${X}:${Z}:${W}-spare:${Q}`}async function IQ(X){let Z=await eX(X.runtimeConfigId,{modelId:X.modelId});if(!Z)throw new h0(`Ideate runtime ${X.runtimeConfigId} is not configured`);let W=await Z.adapter.resolveSpawnConfig(Z.entry),Q=Z.adapter.supportsImages===!0,Y=crypto.randomUUID(),z=t1({userId:X.userId,frontendSessionId:X.frontendSessionId,boardId:X.boardId,toolSurface:X.surface,imagesSupported:Q,runFolder:Z.runFolder,poolSessionId:Y}),j=X.modelId??Z.modelId,F=x1({adapterId:Z.adapter.id,configId:Z.entry.id,modelId:j,configValues:Z.configValues,mcpUrl:z?.url??null,mcpRoutingScope:null,runFolder:Z.runFolder,toolSurface:X.surface});return{resolved:Z,spawnConfig:W,imagesSupported:Q,descriptor:z,poolSessionId:Y,modelId:j,fingerprint:F}}async function B3(X){let Z=null;try{let W=await IQ(X);Z=W.spawnConfig;let Q=E8(X.userId,X.frontendSessionId,X.surface,X.boardId),Y=new AbortController,z=await P1({key:Q,frontendSessionId:X.frontendSessionId,fingerprint:W.fingerprint,warmup:!0,open:async()=>{let j=await F3({operation:"warmup",signal:Y.signal,open:()=>l2({spawn:{...W.spawnConfig,cwd:W.resolved.runFolder},mcpServers:W.descriptor?[W.descriptor]:[],adapterId:W.resolved.adapter.id,isolateAmbientToolSources:!0,allowNativeWebTools:X.surface==="ideate-worker",modelId:W.modelId,configValues:W.resolved.configValues,signal:Y.signal})});return i2.set(j,W.poolSessionId),j}});return L3(W.resolved.entry.id,z,W.resolved.adapter.id,W.modelId),b1(Q,!1),console.log(`[ideawave-cli] warmed ${X.surface} spare for board ${X.boardId}`),{status:"ready"}}catch(W){if(W instanceof h0)return{status:"skipped"};let Q=W instanceof Error?W.message:String(W);if(W instanceof u&&Z&&!d1(W))z2(Z,Q);if(W instanceof u&&/(not ready|installing|warming|retry in a moment)/i.test(Q))return{status:"retryable",error:Q};return console.warn(`[ideawave-cli] ideate ${X.surface} warmup failed for board ${X.boardId}:`,Q),{status:"failed",error:Q}}}async function g8(X,Z){let W=Date.now(),Q=X.executionTarget??{kind:"agent-card",id:X.cardId},Y=new AbortController;if(s0.set(X.runId,{controller:Y,frontendSessionId:X.frontendSessionId}),Q.kind==="agent-card")K3.add(Q.id);m("cli.run_started",{runId:X.runId,cardId:X.cardId,frontendSessionId:X.frontendSessionId});let z=JX(X.userId,X.frontendSessionId,Q),j=!1,F=null,L=!1,U=null;try{let P=(X.runtimeConfigIdHint?await eX(X.runtimeConfigIdHint,{modelId:X.modelHint??null}):null)??await k0({boardId:X.boardId,...Q.kind==="agent-card"?{cardId:Q.id}:{}}),C=await P.adapter.resolveSpawnConfig(P.entry),h=X.toolSurface??"full",D=(h==="ideate-coordinator"||h==="ideate-worker")&&X.ideateClaims?h:null,G=P.adapter.supportsImages===!0;F=C;let N=D?crypto.randomUUID():null,v=t1(D?{userId:X.userId,frontendSessionId:X.frontendSessionId,boardId:X.boardId,toolSurface:h,imagesSupported:G,runFolder:P.runFolder,poolSessionId:N}:{userId:X.userId,frontendSessionId:X.frontendSessionId,boardId:X.boardId,toolSurface:h,imagesSupported:G,cardId:X.cardId,executionTarget:Q,ideateClaims:X.ideateClaims,runFolder:P.runFolder}),O=v?[v]:[];V3(X.cardId,G);let M=X.modelHint??P.modelId,g={adapterId:P.adapter.id,configId:P.entry.id,modelId:M,configValues:P.configValues,mcpUrl:v?.url??null,mcpRoutingScope:!D&&X.ideateClaims?JSON.stringify(X.ideateClaims):null,runFolder:P.runFolder,toolSurface:h},$=x1(g),A=x1({...g,workerToolNames:D==="ideate-worker"?X.ideateClaims?.workerToolNames??null:null});m("cli.session_acquire_started",{runId:X.runId,cardId:X.cardId,frontendSessionId:X.frontendSessionId});let x=X.promptMessages.every((k)=>typeof k.id==="string")?X.promptMessages.map((k)=>k.id):void 0,b=!1,y=!1,_=()=>P1({key:z,frontendSessionId:X.frontendSessionId,fingerprint:A,transcriptIds:x,open:async()=>{if(D&&!y){let r=E8(X.userId,X.frontendSessionId,D,X.boardId),W0=await E3(r,$);if(W0){if(b=!0,m("cli.ideate_spare_adopted",{runId:X.runId,cardId:X.cardId,frontendSessionId:X.frontendSessionId,elapsedMs:Date.now()-W}),X.runtimeConfigIdHint)B3({boardId:X.boardId,userId:X.userId,frontendSessionId:X.frontendSessionId,surface:D,runtimeConfigId:X.runtimeConfigIdHint,modelId:X.modelHint??null}).catch(()=>{return});return W0}}if(D&&N&&X.ideateClaims&&X.executionTarget)U=N,Z3(N,{cardId:X.cardId,executionTarget:X.executionTarget,ideateClaims:X.ideateClaims});let k;try{k=await F3({operation:"run",signal:Y.signal,open:()=>l2({spawn:{...C,cwd:P.runFolder},mcpServers:O,adapterId:P.adapter.id,isolateAmbientToolSources:h!=="full",...h==="ideate-coordinator"||h==="ideate-worker"?{allowNativeWebTools:h==="ideate-worker"}:{},modelId:M,configValues:P.configValues,signal:Y.signal})})}catch(r){if(r instanceof u&&!d1(r,Y.signal))L=!0;throw r}if(N)i2.set(k,N);return k}}),I=await _();if(m("cli.session_acquired",{runId:X.runId,cardId:X.cardId,frontendSessionId:X.frontendSessionId,elapsedMs:Date.now()-W}),D&&X.ideateClaims&&X.executionTarget){let k=i2.get(I)??null;if(k)U=k,Z3(k,{cardId:X.cardId,executionTarget:X.executionTarget,ideateClaims:X.ideateClaims});else m("cli.ideate_pool_session_id_missing",{runId:X.runId,cardId:X.cardId,frontendSessionId:X.frontendSessionId})}if(D==="ideate-worker"&&b&&X.ideateClaims?.workerToolNames){let k=i2.get(I)??null;if(!(k!==null&&await M8({poolSessionId:k,expectedWorkerTools:X.ideateClaims.workerToolNames}))){if(m("cli.ideate_spare_refresh_failed",{runId:X.runId,cardId:X.cardId,frontendSessionId:X.frontendSessionId}),k)W3(k);b1(z,!0),y=!0,b=!1,I=await _()}}L3(P.entry.id,I,P.adapter.id,M);let l;try{let k=0,r="",W0=0,C0=1e4;m("cli.prompt_started",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-W}),l=await I.prompt({runId:X.runId,boardId:X.boardId,cardId:X.cardId,prompt:{systemPrompt:AQ(X.systemPrompt,P.runFolder,h),messages:X.promptMessages.map((n)=>({role:n.role,content:n.content}))},signal:Y.signal,appendText:async({text:n})=>{if(k+=1,k===1)m("cli.first_partial_text_forwarded",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-W,textLength:n.length});Z({type:"partial_text",runId:X.runId,cardId:X.cardId,text:n})},appendToolActivity:async({entry:n})=>{let S=`${n.toolCallId}:${n.status}`;if(S!==r)r=S,m("cli.tool_activity_forwarded",{runId:X.runId,cardId:X.cardId,toolCallId:n.toolCallId,toolStatus:n.status,elapsedMs:Date.now()-W});Z({type:"tool_activity",runId:X.runId,cardId:X.cardId,activity:n})},onAnyUpdate:()=>{let n=Date.now();if(n-W0<C0)return;W0=n,Z({type:"run_alive",runId:X.runId,cardId:X.cardId})}})}catch(k){if(!I.isAlive()||k instanceof u||k instanceof x0)j=!0;throw k}Z({type:"run_settled",runId:X.runId,cardId:X.cardId,result:{assistantContent:l.finalText,model:l.modelReported??null,latencyMs:Date.now()-W,errorText:null,partialText:null,usage:l.usage}}),m("cli.run_settled",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-W,hasError:!1,...U1(l.usage)})}catch(w){let P=w instanceof Error?w.message:"Agent run failed",C=d1(w,Y.signal);if(w instanceof u&&F&&L&&!C)z2(F,P);if(!C)console.error(`[ideawave-cli] run ${X.runId} failed:`,P);Z({type:"run_settled",runId:X.runId,cardId:X.cardId,result:{assistantContent:"",model:null,latencyMs:Date.now()-W,errorText:C?null:P,partialText:null,cancelled:C}}),m("cli.run_settled",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-W,hasError:!0,errorName:w instanceof Error?w.name:"unknown",errorMessage:P.slice(0,1000),cancelled:C,...U1(void 0)})}finally{if(U)W3(U);if(b1(z,j),s0.delete(X.runId),Q.kind==="agent-card")K3.delete(Q.id);m("cli.run_released",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-W,sessionDead:j})}}async function m8(X){if(K3.has(X.cardId))return{status:"skipped"};let Z=JX(X.userId,X.frontendSessionId,X.cardId),W=null;try{let Q=await k0({boardId:X.boardId,cardId:X.cardId}),Y=await Q.adapter.resolveSpawnConfig(Q.entry);W=Y;let z=t1({userId:X.userId,frontendSessionId:X.frontendSessionId,boardId:X.boardId,cardId:X.cardId,runFolder:Q.runFolder}),j=z?[z]:[];V3(X.cardId,Q.adapter.supportsImages===!0);let F=x1({adapterId:Q.adapter.id,configId:Q.entry.id,modelId:Q.modelId,configValues:Q.configValues,mcpUrl:z?.url??null,runFolder:Q.runFolder}),L=new AbortController,U=await P1({key:Z,frontendSessionId:X.frontendSessionId,fingerprint:F,warmup:!0,open:()=>F3({operation:"warmup",signal:L.signal,open:()=>l2({spawn:{...Y,cwd:Q.runFolder},mcpServers:j,adapterId:Q.adapter.id,modelId:Q.modelId,configValues:Q.configValues,signal:L.signal})})});return L3(Q.entry.id,U,Q.adapter.id,Q.modelId),b1(Z,!1),console.log(`[ideawave-cli] warmed runtime for card ${X.cardId}`),{status:"ready"}}catch(Q){if(Q instanceof h0)return{status:"skipped"};let Y=Q instanceof Error?Q.message:String(Q);if(Q instanceof u&&W&&!d1(Q))z2(W,Y);if(Q instanceof u&&/(not ready|installing|warming|retry in a moment)/i.test(Y))return{status:"retryable",error:Y};return console.warn(`[ideawave-cli] warmup failed for card ${X.cardId}:`,Y),{status:"failed",error:Y}}}var _8="browser-proxy-v5",k8="browser-proxy-v6";var S8="browser-dom-snapshot-v1",A8="ideate-orchestration-v1",I8="ideate-warm-sessions-v1",T8="relay-request-ack-v1",TQ=new Set(["hello","frontend_hello","cli_status","browser_status","bridge_probe","bridge_probe_ack","bridge_ping","bridge_pong","delivery_ack","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_cancel","browser_rpc_result","warmup_run","warmup_result"]);function p2(X){try{let Z=JSON.parse(X);if(Z&&typeof Z==="object"&&typeof Z.type==="string"&&TQ.has(Z.type))return Z}catch{}return null}function r2(X){return JSON.stringify(X)}function l8(X){return[A8,I8,T8,...X?[_8,k8,S8]:[]]}import{chromium as XJ}from"playwright-core";import{spawn as lQ}from"node:child_process";import{existsSync as a1,readFileSync as uQ}from"node:fs";import{createRequire as u8}from"node:module";import s2 from"node:os";import e from"node:path";var A0={phase:"checking"},F1=null,w3=0,cQ=60000,dQ=["install","--only-shell","chromium"];class i1 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 c8 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 aQ(X){return X.phase==="failed"?new c8(X.error):new i1}function L1(){return{...A0}}function iQ(X){let Z=X.exists??a1;for(let[W,Q]of[[X.override,"explicit"],[X.managedShell,"headless-shell"],[X.system,"system-chromium"]])if(W&&Z(W))return{path:W,engine:Q};return null}function d8(X,Z){let W=[],Q=Z.IDEAWAVE_CAPTURE_EXECUTABLE_PATH??Z.IDEAWAVE_CHROMIUM_PATH;if(Q)W.push(Q);if(X==="win32"){let Y=Z.ProgramFiles??"C:\\Program Files",z=Z["ProgramFiles(x86)"]??"C:\\Program Files (x86)";if(W.push(e.win32.join(Y,"Google\\Chrome\\Application\\chrome.exe"),e.win32.join(z,"Google\\Chrome\\Application\\chrome.exe")),Z.LOCALAPPDATA)W.push(e.win32.join(Z.LOCALAPPDATA,"Google\\Chrome\\Application\\chrome.exe"));W.push(e.win32.join(z,"Microsoft\\Edge\\Application\\msedge.exe"),e.win32.join(Y,"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 pQ(X){let Z=(process.env.PATH??"").split(e.delimiter),W=process.platform==="win32"?[".exe",".cmd",".bat",""]:[""];for(let Q of Z){if(!Q)continue;for(let Y of W){let z=e.join(Q,`${X}${Y}`);if(a1(z))return z}}return null}function rQ(){let X=new Set([process.env.IDEAWAVE_CAPTURE_EXECUTABLE_PATH,process.env.IDEAWAVE_CHROMIUM_PATH]);for(let Z of d8(process.platform,process.env)){if(X.has(Z))continue;if(e.isAbsolute(Z)){if(a1(Z))return Z}else{let W=pQ(Z);if(W)return W}}return null}function sQ(){try{let X=u8(import.meta.url);return e.dirname(X.resolve("playwright-core/package.json"))}catch{return null}}function oQ(X){let Z=process.env.PLAYWRIGHT_BROWSERS_PATH?.trim();if(Z==="0")return e.join(X,".local-browsers");if(Z)return Z.startsWith("~")?e.join(s2.homedir(),Z.slice(1)):e.resolve(Z);if(process.platform==="win32")return e.join(process.env.LOCALAPPDATA??e.join(s2.homedir(),"AppData","Local"),"ms-playwright");if(process.platform==="darwin")return e.join(s2.homedir(),"Library","Caches","ms-playwright");return e.join(s2.homedir(),".cache","ms-playwright")}function nQ(){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 q3(){let X=sQ();if(!X)return null;try{let W=JSON.parse(uQ(e.join(X,"browsers.json"),"utf8")).browsers?.find((F)=>F.name==="chromium-headless-shell");if(!W?.revision)return null;let Q=nQ(),Y=W.revisionOverrides?.[Q]??W.revision,z=e.join(oQ(X),`chromium_headless_shell-${Y}`),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-${Q}/chrome-headless-shell`,"chrome-headless-shell-mac-x64/chrome-headless-shell","chrome-headless-shell-mac-arm64/chrome-headless-shell"]:[`chrome-headless-shell-${Q}/chrome-headless-shell`,"chrome-headless-shell-linux64/chrome-headless-shell"];for(let F of j){let L=e.join(z,...F.split("/"));if(a1(L))return L}}catch{return null}return null}function tQ(){let X=process.env.IDEAWAVE_CAPTURE_EXECUTABLE_PATH??process.env.IDEAWAVE_CHROMIUM_PATH;return X&&a1(X)?X:null}function a8(){return iQ({override:tQ(),managedShell:q3(),system:rQ()})}function eQ(){let Z=u8(import.meta.url).resolve("playwright-core/package.json"),W=e.join(e.dirname(Z),"cli.js");return new Promise((Q,Y)=>{let z=lQ(process.execPath,[W,...dQ],{stdio:"ignore",windowsHide:!0});z.once("error",Y),z.once("exit",(j)=>{if(j===0)Q();else Y(Error(`Playwright headless-shell installer exited with code ${j}`))})})}function P3(X){let Z=q3();if(Z)return A0={phase:"ready",engine:"headless-shell",executablePath:Z},Promise.resolve(L1());if(F1)return F1;if(w3>0&&Date.now()-w3<cQ)return Promise.resolve(L1());return A0=X?{phase:"ready",engine:X.engine,executablePath:X.path,installingManagedShell:!0}:{phase:"installing",installingManagedShell:!0},F1=(async()=>{try{await eQ();let W=q3();if(!W)throw Error("Headless Shell finished installing but its executable was not found");A0={phase:"ready",engine:"headless-shell",executablePath:W}}catch(W){w3=Date.now(),A0=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{F1=null}return L1()})(),F1}function i8(){let X=a8();if(X?.engine==="explicit"||X?.engine==="headless-shell")return A0={phase:"ready",engine:X.engine,executablePath:X.path},Promise.resolve(L1());return P3(X)}async function p8(){let X=a8();if(X){if(A0={phase:"ready",engine:X.engine,executablePath:X.path,...X.engine==="system-chromium"&&F1?{installingManagedShell:!0}:{}},X.engine==="system-chromium")P3(X);return X.path}throw P3(null),aQ(A0)}var ZJ=60000,WJ=16,o0=null,o2=null,B1=null,b3=Promise.resolve(),n2=0,x3=0,QJ=0;class t2 extends Error{constructor(){super("The capture queue is busy; retry shortly.");this.name="CaptureQueueFullError"}}function O3(){if(B1)clearTimeout(B1);B1=null}async function R3(){O3();let X=o0;if(o0=null,o2=null,X)await X.close().catch(()=>{return})}function JJ(X=ZJ){O3(),B1=setTimeout(()=>{if(B1=null,x3===0&&n2===0)R3()},X),B1.unref?.()}async function YJ(){let X=await p8();if(o0?.isConnected()&&o2===X)return o0;await R3();let Z=await XJ.launch({headless:!0,executablePath:X,handleSIGHUP:!1,handleSIGINT:!1,handleSIGTERM:!1});return QJ+=1,o0=Z,o2=X,Z.on("disconnected",()=>{if(o0===Z)o0=null,o2=null}),Z}function r8(X,Z){if(n2>=WJ)return Promise.reject(new t2);n2+=1;let W,Q,Y=new Promise((z,j)=>{W=z,Q=j});return b3=b3.then(async()=>{n2-=1,x3+=1,O3();let z=null,j;try{z=await(await YJ()).newContext(X.context);let L=await z.newPage();j={ok:!0,value:await Z(L)}}catch(F){j={ok:!1,error:F}}finally{if(z)await z.close().catch(()=>{return});x3-=1,JJ()}if(j.ok)W(j.value);else Q(j.error)}),Y}async function s8(){await b3.catch(()=>{return}),await R3()}import{randomUUID as Y9}from"node:crypto";import{createServer as wJ}from"node:http";import{WebSocket as y3,WebSocketServer as qJ}from"ws";var v3="/cli-bridge",o8="/ping";var n8=60000,t8=65000;function C3(X=43275,Z=43277){let W=[];for(let Q=X;Q<=Z;Q+=1)W.push(Q);return W}function e8(X=C3(),Z="127.0.0.1",W="/cli-bridge"){return X.map((Q)=>`ws://${Z}:${Q}${W}`)}var zJ=800;function X9({candidates:X,createWebSocket:Z,timeoutMs:W=zJ,maxConcurrent:Q=1,staggerMs:Y=0,setTimeoutFn:z=setTimeout,clearTimeoutFn:j=clearTimeout}){return new Promise((F,L)=>{let U=0,w=!1,P=null,C=new Map,h=Math.max(1,Math.floor(Q)),D=()=>{if(P===null)return;j(P),P=null},G=(A)=>{let{socket:x,listeners:b,timer:y}=A;x.removeEventListener("open",b.open),x.removeEventListener("message",b.message),x.removeEventListener("error",b.error),x.removeEventListener("close",b.close),j(y),C.delete(x)},N=(A)=>{D();for(let x of Array.from(C.values()))if(G(x),x.socket!==A)try{x.socket.close()}catch{}},v=()=>{if(w)return;if(U<X.length)return;if(C.size>0)return;if(P!==null)return;w=!0,L(Error("No IdeaWave CLI bridge is reachable"))},O=(A)=>{if(w)return;if(U>=X.length){v();return}if(C.size>=h)return;if(A<=0){D(),$();return}if(P!==null)return;P=z(()=>{P=null,$()},A)},M=()=>{if(w)return;if(C.size>=h)return;if(C.size===0||Y<=0||h===1){O(0);return}O(Y)},g=(A)=>{if(w)return;let x=C.get(A);if(!x)return;G(x);try{A.close()}catch{}M(),v()};function $(){if(w)return;if(C.size>=h)return;let A=X[U];if(U+=1,!A){v();return}let x;try{x=Z(A)}catch{M(),v();return}let b={open:()=>{if(w||!C.has(x))return;x.send(r2({type:"bridge_probe",protocolVersion:1}))},message:(_)=>{if(w||!C.has(x))return;if(p2(String(_?.data??""))?.type!=="bridge_probe_ack")return;w=!0,N(x),F({url:A,socket:x})},error:()=>g(x),close:()=>g(x)};x.addEventListener("open",b.open),x.addEventListener("message",b.message),x.addEventListener("error",b.error),x.addEventListener("close",b.close);let y=z(()=>g(x),W);C.set(x,{url:A,socket:x,listeners:b,timer:y}),M()}$()})}import{randomBytes as VJ}from"node:crypto";import{mkdir as jJ,writeFile as HJ}from"node:fs/promises";import KJ from"node:os";import Z9 from"node:path";var UJ=30000,FJ=1024;function W9(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 Y=W==="ideawave.app"||W.endsWith(".ideawave.app");return Z.protocol==="https:"&&Y&&Z.pathname.startsWith("/static_boards/")}async function LJ(X,Z){let W=Z9.join(KJ.tmpdir(),"ideawave-screenshots");await jJ(W,{recursive:!0});let Q=Z9.join(W,`board-${Date.now()}-${VJ(4).toString("hex")}.png`);return await HJ(Q,X),{path:Q,engine:Z}}async function Q9(X){let Z=X.timeoutMs??UJ;return r8({context:{viewport:{width:X.width,height:X.height},deviceScaleFactor:1}},async(W)=>{W.setDefaultTimeout(Z),W.setDefaultNavigationTimeout(Z);let Q=await W.goto(X.url,{waitUntil:"networkidle",timeout:Z});if(!Q?.ok())throw Error(`Static board responded with HTTP ${Q?.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 Y=await W.screenshot({type:"png",animations:"disabled",caret:"hide",scale:"css"});if(Y.byteLength<FJ)throw Error("Headless Shell returned an empty screenshot");return LJ(Buffer.from(Y),L1().engine??"system-chromium")})}var p1="IDEAWAVE_CLI_ALLOW_RAILWAY_PR_PREVIEWS";function BJ(X){return X==="1"||X?.toLowerCase()==="true"}function J9(X,Z){let Q=X.includes("--dev")||BJ(Z.IDEAWAVE_CLI_ALLOW_RAILWAY_PR_PREVIEWS),Y=Z.APP_ENV==="development"||Q;return{cliArgs:X.filter((z)=>z!=="--dev"),browserKitEnabled:!0,captureEngineEnabled:!Y,allowRailwayPrPreviews:Q}}var PJ=0,bJ=30000,xJ=n8,OJ=1e4,RJ="/screenshot",vJ=65536,K9="http://127.0.0.1";async function U9(X=e8(),Z=(W)=>new y3(W,{headers:{origin:K9}})){try{let{url:W,socket:Q}=await X9({candidates:X,createWebSocket:Z});try{Q.close()}catch{}return W}catch{return null}}var CJ=new Set(["https://ideawave-app-production.up.railway.app"]);function fJ(X){return X==="ideawave.app"||X.endsWith(".ideawave.app")}function yJ(X){return X==="1"||X?.toLowerCase()==="true"}function hJ(X){return/^ideawave-app-ideawave-app-pr-\d+\.up\.railway\.app$/i.test(X)}function MJ(){let X=process.env.IDEAWAVE_CLI_ALLOWED_ORIGINS;if(!X)return NJ;let Z=new Set;for(let W of X.split(",")){let Q=W.trim();if(!Q)continue;try{Z.add(new URL(Q).origin)}catch{}}return Z}var NJ=new Set;function f3(X){if(!X)return!1;let Z;try{Z=new URL(X)}catch{return!1}if(CJ.has(Z.origin))return!0;if(MJ().has(Z.origin))return!0;if(Z.protocol==="https:"&&yJ(process.env[p1])&&hJ(Z.hostname))return!0;if(Z.protocol==="https:"&&fJ(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 n0(X,Z){if(X.readyState!==y3.OPEN)return;try{X.send(r2(Z))}catch{}}function DJ(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 $J(X){switch(X.type){case"run_turn":return`run_turn:${X.run.runId}`;case"runtime_rpc":return`runtime_rpc:${X.requestId}`;case"browser_rpc":return`browser_rpc:${X.requestId}`}}function z9(X){return X.type==="cancel_run"?`run_turn:${X.runId}`:`browser_rpc:${X.requestId}`}function V9(X){return X.type==="cancel_run"?`cancel_run:${X.runId}`:`browser_rpc_cancel:${X.requestId}`}function e2(X){if(typeof X==="string")return X;if(Array.isArray(X))return X[0]??null;return null}function j9(X,Z,W){X.write(`HTTP/1.1 ${Z} ${W}\r
1170
+ - Filesystem access is read-only and limited to this folder. Hidden/config folders and outside-folder paths are unavailable.`}var i2=new WeakMap;function g8(X,Z,W,Q){return`${X}:${Z}:${W}-spare:${Q}`}async function TQ(X){let Z=await eX(X.runtimeConfigId,{modelId:X.modelId});if(!Z)throw new h0(`Ideate runtime ${X.runtimeConfigId} is not configured`);let W=await Z.adapter.resolveSpawnConfig(Z.entry),Q=Z.adapter.supportsImages===!0,Y=crypto.randomUUID(),z=t1({userId:X.userId,frontendSessionId:X.frontendSessionId,boardId:X.boardId,toolSurface:X.surface,imagesSupported:Q,runFolder:Z.runFolder,poolSessionId:Y}),j=X.modelId??Z.modelId,F=b1({adapterId:Z.adapter.id,configId:Z.entry.id,modelId:j,configValues:Z.configValues,mcpUrl:z?.url??null,mcpRoutingScope:null,runFolder:Z.runFolder,toolSurface:X.surface});return{resolved:Z,spawnConfig:W,imagesSupported:Q,descriptor:z,poolSessionId:Y,modelId:j,fingerprint:F}}async function B3(X){let Z=null;try{let W=await TQ(X);Z=W.spawnConfig;let Q=g8(X.userId,X.frontendSessionId,X.surface,X.boardId),Y=new AbortController,z=await q1({key:Q,frontendSessionId:X.frontendSessionId,fingerprint:W.fingerprint,warmup:!0,open:async()=>{let j=await F3({operation:"warmup",signal:Y.signal,open:()=>l2({spawn:{...W.spawnConfig,cwd:W.resolved.runFolder},mcpServers:W.descriptor?[W.descriptor]:[],adapterId:W.resolved.adapter.id,isolateAmbientToolSources:!0,allowNativeWebTools:X.surface==="ideate-worker",modelId:W.modelId,configValues:W.resolved.configValues,signal:Y.signal})});return i2.set(j,W.poolSessionId),j}});return L3(W.resolved.entry.id,z,W.resolved.adapter.id,W.modelId),P1(Q,!1),console.log(`[ideawave-cli] warmed ${X.surface} spare for board ${X.boardId}`),{status:"ready"}}catch(W){if(W instanceof h0)return{status:"skipped"};let Q=W instanceof Error?W.message:String(W);if(W instanceof u&&Z&&!d1(W))z2(Z,Q);if(W instanceof u&&/(not ready|installing|warming|retry in a moment)/i.test(Q))return{status:"retryable",error:Q};return console.warn(`[ideawave-cli] ideate ${X.surface} warmup failed for board ${X.boardId}:`,Q),{status:"failed",error:Q}}}async function m8(X,Z){let W=Date.now(),Q=X.executionTarget??{kind:"agent-card",id:X.cardId},Y=new AbortController;if(s0.set(X.runId,{controller:Y,frontendSessionId:X.frontendSessionId}),Q.kind==="agent-card")K3.add(Q.id);m("cli.run_started",{runId:X.runId,cardId:X.cardId,frontendSessionId:X.frontendSessionId});let z=JX(X.userId,X.frontendSessionId,Q),j=!1,F=null,L=!1,U=null;try{let P=(X.runtimeConfigIdHint?await eX(X.runtimeConfigIdHint,{modelId:X.modelHint??null}):null)??await k0({boardId:X.boardId,...Q.kind==="agent-card"?{cardId:Q.id}:{}}),C=await P.adapter.resolveSpawnConfig(P.entry),h=X.toolSurface??"full",D=(h==="ideate-coordinator"||h==="ideate-worker")&&X.ideateClaims?h:null,G=P.adapter.supportsImages===!0;F=C;let N=D?crypto.randomUUID():null,v=t1(D?{userId:X.userId,frontendSessionId:X.frontendSessionId,boardId:X.boardId,toolSurface:h,imagesSupported:G,runFolder:P.runFolder,poolSessionId:N}:{userId:X.userId,frontendSessionId:X.frontendSessionId,boardId:X.boardId,toolSurface:h,imagesSupported:G,cardId:X.cardId,executionTarget:Q,ideateClaims:X.ideateClaims,runFolder:P.runFolder}),O=v?[v]:[];V3(X.cardId,G);let M=X.modelHint??P.modelId,g={adapterId:P.adapter.id,configId:P.entry.id,modelId:M,configValues:P.configValues,mcpUrl:v?.url??null,mcpRoutingScope:!D&&X.ideateClaims?JSON.stringify(X.ideateClaims):null,runFolder:P.runFolder,toolSurface:h},$=b1(g),A=b1({...g,workerToolNames:D==="ideate-worker"?X.ideateClaims?.workerToolNames??null:null});m("cli.session_acquire_started",{runId:X.runId,cardId:X.cardId,frontendSessionId:X.frontendSessionId});let x=X.promptMessages.every((k)=>typeof k.id==="string")?X.promptMessages.map((k)=>k.id):void 0,b=!1,y=!1,_=()=>q1({key:z,frontendSessionId:X.frontendSessionId,fingerprint:A,transcriptIds:x,open:async()=>{if(D&&!y){let r=g8(X.userId,X.frontendSessionId,D,X.boardId),W0=await E3(r,$);if(W0){if(b=!0,m("cli.ideate_spare_adopted",{runId:X.runId,cardId:X.cardId,frontendSessionId:X.frontendSessionId,elapsedMs:Date.now()-W}),X.runtimeConfigIdHint)B3({boardId:X.boardId,userId:X.userId,frontendSessionId:X.frontendSessionId,surface:D,runtimeConfigId:X.runtimeConfigIdHint,modelId:X.modelHint??null}).catch(()=>{return});return W0}}if(D&&N&&X.ideateClaims&&X.executionTarget)U=N,Z3(N,{cardId:X.cardId,executionTarget:X.executionTarget,ideateClaims:X.ideateClaims});let k;try{k=await F3({operation:"run",signal:Y.signal,open:()=>l2({spawn:{...C,cwd:P.runFolder},mcpServers:O,adapterId:P.adapter.id,isolateAmbientToolSources:h!=="full",...h==="ideate-coordinator"||h==="ideate-worker"?{allowNativeWebTools:h==="ideate-worker"}:{},modelId:M,configValues:P.configValues,signal:Y.signal})})}catch(r){if(r instanceof u&&!d1(r,Y.signal))L=!0;throw r}if(N)i2.set(k,N);return k}}),I=await _();if(m("cli.session_acquired",{runId:X.runId,cardId:X.cardId,frontendSessionId:X.frontendSessionId,elapsedMs:Date.now()-W}),D&&X.ideateClaims&&X.executionTarget){let k=i2.get(I)??null;if(k)U=k,Z3(k,{cardId:X.cardId,executionTarget:X.executionTarget,ideateClaims:X.ideateClaims});else m("cli.ideate_pool_session_id_missing",{runId:X.runId,cardId:X.cardId,frontendSessionId:X.frontendSessionId})}if(D==="ideate-worker"&&b&&X.ideateClaims?.workerToolNames){let k=i2.get(I)??null;if(!(k!==null&&await N8({poolSessionId:k,expectedWorkerTools:X.ideateClaims.workerToolNames}))){if(m("cli.ideate_spare_refresh_failed",{runId:X.runId,cardId:X.cardId,frontendSessionId:X.frontendSessionId}),k)W3(k);P1(z,!0),y=!0,b=!1,I=await _()}}L3(P.entry.id,I,P.adapter.id,M);let l;try{let k=0,r="",W0=0,C0=1e4;m("cli.prompt_started",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-W}),l=await I.prompt({runId:X.runId,boardId:X.boardId,cardId:X.cardId,prompt:{systemPrompt:IQ(X.systemPrompt,P.runFolder,h),messages:X.promptMessages.map((n)=>({role:n.role,content:n.content}))},signal:Y.signal,appendText:async({text:n})=>{if(k+=1,k===1)m("cli.first_partial_text_forwarded",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-W,textLength:n.length});Z({type:"partial_text",runId:X.runId,cardId:X.cardId,text:n})},appendToolActivity:async({entry:n})=>{let S=`${n.toolCallId}:${n.status}`;if(S!==r)r=S,m("cli.tool_activity_forwarded",{runId:X.runId,cardId:X.cardId,toolCallId:n.toolCallId,toolStatus:n.status,elapsedMs:Date.now()-W});Z({type:"tool_activity",runId:X.runId,cardId:X.cardId,activity:n})},onAnyUpdate:()=>{let n=Date.now();if(n-W0<C0)return;W0=n,Z({type:"run_alive",runId:X.runId,cardId:X.cardId})}})}catch(k){if(!I.isAlive()||k instanceof u||k instanceof x0)j=!0;throw k}Z({type:"run_settled",runId:X.runId,cardId:X.cardId,result:{assistantContent:l.finalText,model:l.modelReported??null,latencyMs:Date.now()-W,errorText:null,partialText:null,usage:l.usage}}),m("cli.run_settled",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-W,hasError:!1,...K1(l.usage)})}catch(w){let P=w instanceof Error?w.message:"Agent run failed",C=d1(w,Y.signal);if(w instanceof u&&F&&L&&!C)z2(F,P);if(!C)console.error(`[ideawave-cli] run ${X.runId} failed:`,P);Z({type:"run_settled",runId:X.runId,cardId:X.cardId,result:{assistantContent:"",model:null,latencyMs:Date.now()-W,errorText:C?null:P,partialText:null,cancelled:C}}),m("cli.run_settled",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-W,hasError:!0,errorName:w instanceof Error?w.name:"unknown",errorMessage:P.slice(0,1000),cancelled:C,...K1(void 0)})}finally{if(U)W3(U);if(P1(z,j),s0.delete(X.runId),Q.kind==="agent-card")K3.delete(Q.id);m("cli.run_released",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-W,sessionDead:j})}}async function _8(X){if(K3.has(X.cardId))return{status:"skipped"};let Z=JX(X.userId,X.frontendSessionId,X.cardId),W=null;try{let Q=await k0({boardId:X.boardId,cardId:X.cardId}),Y=await Q.adapter.resolveSpawnConfig(Q.entry);W=Y;let z=t1({userId:X.userId,frontendSessionId:X.frontendSessionId,boardId:X.boardId,cardId:X.cardId,runFolder:Q.runFolder}),j=z?[z]:[];V3(X.cardId,Q.adapter.supportsImages===!0);let F=b1({adapterId:Q.adapter.id,configId:Q.entry.id,modelId:Q.modelId,configValues:Q.configValues,mcpUrl:z?.url??null,runFolder:Q.runFolder}),L=new AbortController,U=await q1({key:Z,frontendSessionId:X.frontendSessionId,fingerprint:F,warmup:!0,open:()=>F3({operation:"warmup",signal:L.signal,open:()=>l2({spawn:{...Y,cwd:Q.runFolder},mcpServers:j,adapterId:Q.adapter.id,modelId:Q.modelId,configValues:Q.configValues,signal:L.signal})})});return L3(Q.entry.id,U,Q.adapter.id,Q.modelId),P1(Z,!1),console.log(`[ideawave-cli] warmed runtime for card ${X.cardId}`),{status:"ready"}}catch(Q){if(Q instanceof h0)return{status:"skipped"};let Y=Q instanceof Error?Q.message:String(Q);if(Q instanceof u&&W&&!d1(Q))z2(W,Y);if(Q instanceof u&&/(not ready|installing|warming|retry in a moment)/i.test(Y))return{status:"retryable",error:Y};return console.warn(`[ideawave-cli] warmup failed for card ${X.cardId}:`,Y),{status:"failed",error:Y}}}var k8="browser-proxy-v5",S8="browser-proxy-v6";var A8="browser-dom-snapshot-v1",I8="ideate-orchestration-v1",T8="ideate-warm-sessions-v1",l8="relay-request-ack-v1",lQ=new Set(["hello","frontend_hello","cli_status","browser_status","bridge_probe","bridge_probe_ack","bridge_ping","bridge_pong","delivery_ack","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_cancel","browser_rpc_result","warmup_run","warmup_result"]);function p2(X){try{let Z=JSON.parse(X);if(Z&&typeof Z==="object"&&typeof Z.type==="string"&&lQ.has(Z.type))return Z}catch{}return null}function r2(X){return JSON.stringify(X)}function u8(X){return[I8,T8,l8,...X?[k8,S8,A8]:[]]}import{chromium as ZJ}from"playwright-core";import{spawn as uQ}from"node:child_process";import{existsSync as a1,readFileSync as cQ}from"node:fs";import{createRequire as c8}from"node:module";import s2 from"node:os";import e from"node:path";var A0={phase:"checking"},U1=null,w3=0,dQ=60000,aQ=["install","--only-shell","chromium"];class i1 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 d8 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 iQ(X){return X.phase==="failed"?new d8(X.error):new i1}function F1(){return{...A0}}function pQ(X){let Z=X.exists??a1;for(let[W,Q]of[[X.override,"explicit"],[X.managedShell,"headless-shell"],[X.system,"system-chromium"]])if(W&&Z(W))return{path:W,engine:Q};return null}function a8(X,Z){let W=[],Q=Z.IDEAWAVE_CAPTURE_EXECUTABLE_PATH??Z.IDEAWAVE_CHROMIUM_PATH;if(Q)W.push(Q);if(X==="win32"){let Y=Z.ProgramFiles??"C:\\Program Files",z=Z["ProgramFiles(x86)"]??"C:\\Program Files (x86)";if(W.push(e.win32.join(Y,"Google\\Chrome\\Application\\chrome.exe"),e.win32.join(z,"Google\\Chrome\\Application\\chrome.exe")),Z.LOCALAPPDATA)W.push(e.win32.join(Z.LOCALAPPDATA,"Google\\Chrome\\Application\\chrome.exe"));W.push(e.win32.join(z,"Microsoft\\Edge\\Application\\msedge.exe"),e.win32.join(Y,"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 rQ(X){let Z=(process.env.PATH??"").split(e.delimiter),W=process.platform==="win32"?[".exe",".cmd",".bat",""]:[""];for(let Q of Z){if(!Q)continue;for(let Y of W){let z=e.join(Q,`${X}${Y}`);if(a1(z))return z}}return null}function sQ(){let X=new Set([process.env.IDEAWAVE_CAPTURE_EXECUTABLE_PATH,process.env.IDEAWAVE_CHROMIUM_PATH]);for(let Z of a8(process.platform,process.env)){if(X.has(Z))continue;if(e.isAbsolute(Z)){if(a1(Z))return Z}else{let W=rQ(Z);if(W)return W}}return null}function oQ(){try{let X=c8(import.meta.url);return e.dirname(X.resolve("playwright-core/package.json"))}catch{return null}}function nQ(X){let Z=process.env.PLAYWRIGHT_BROWSERS_PATH?.trim();if(Z==="0")return e.join(X,".local-browsers");if(Z)return Z.startsWith("~")?e.join(s2.homedir(),Z.slice(1)):e.resolve(Z);if(process.platform==="win32")return e.join(process.env.LOCALAPPDATA??e.join(s2.homedir(),"AppData","Local"),"ms-playwright");if(process.platform==="darwin")return e.join(s2.homedir(),"Library","Caches","ms-playwright");return e.join(s2.homedir(),".cache","ms-playwright")}function tQ(){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 q3(){let X=oQ();if(!X)return null;try{let W=JSON.parse(cQ(e.join(X,"browsers.json"),"utf8")).browsers?.find((F)=>F.name==="chromium-headless-shell");if(!W?.revision)return null;let Q=tQ(),Y=W.revisionOverrides?.[Q]??W.revision,z=e.join(nQ(X),`chromium_headless_shell-${Y}`),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-${Q}/chrome-headless-shell`,"chrome-headless-shell-mac-x64/chrome-headless-shell","chrome-headless-shell-mac-arm64/chrome-headless-shell"]:[`chrome-headless-shell-${Q}/chrome-headless-shell`,"chrome-headless-shell-linux64/chrome-headless-shell"];for(let F of j){let L=e.join(z,...F.split("/"));if(a1(L))return L}}catch{return null}return null}function eQ(){let X=process.env.IDEAWAVE_CAPTURE_EXECUTABLE_PATH??process.env.IDEAWAVE_CHROMIUM_PATH;return X&&a1(X)?X:null}function i8(){return pQ({override:eQ(),managedShell:q3(),system:sQ()})}function XJ(){let Z=c8(import.meta.url).resolve("playwright-core/package.json"),W=e.join(e.dirname(Z),"cli.js");return new Promise((Q,Y)=>{let z=uQ(process.execPath,[W,...aQ],{stdio:"ignore",windowsHide:!0});z.once("error",Y),z.once("exit",(j)=>{if(j===0)Q();else Y(Error(`Playwright headless-shell installer exited with code ${j}`))})})}function P3(X){let Z=q3();if(Z)return A0={phase:"ready",engine:"headless-shell",executablePath:Z},Promise.resolve(F1());if(U1)return U1;if(w3>0&&Date.now()-w3<dQ)return Promise.resolve(F1());return A0=X?{phase:"ready",engine:X.engine,executablePath:X.path,installingManagedShell:!0}:{phase:"installing",installingManagedShell:!0},U1=(async()=>{try{await XJ();let W=q3();if(!W)throw Error("Headless Shell finished installing but its executable was not found");A0={phase:"ready",engine:"headless-shell",executablePath:W}}catch(W){w3=Date.now(),A0=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{U1=null}return F1()})(),U1}function p8(){let X=i8();if(X?.engine==="explicit"||X?.engine==="headless-shell")return A0={phase:"ready",engine:X.engine,executablePath:X.path},Promise.resolve(F1());return P3(X)}async function r8(){let X=i8();if(X){if(A0={phase:"ready",engine:X.engine,executablePath:X.path,...X.engine==="system-chromium"&&U1?{installingManagedShell:!0}:{}},X.engine==="system-chromium")P3(X);return X.path}throw P3(null),iQ(A0)}var WJ=60000,QJ=16,o0=null,o2=null,L1=null,b3=Promise.resolve(),n2=0,x3=0,JJ=0;class t2 extends Error{constructor(){super("The capture queue is busy; retry shortly.");this.name="CaptureQueueFullError"}}function O3(){if(L1)clearTimeout(L1);L1=null}async function R3(){O3();let X=o0;if(o0=null,o2=null,X)await X.close().catch(()=>{return})}function YJ(X=WJ){O3(),L1=setTimeout(()=>{if(L1=null,x3===0&&n2===0)R3()},X),L1.unref?.()}async function zJ(){let X=await r8();if(o0?.isConnected()&&o2===X)return o0;await R3();let Z=await ZJ.launch({headless:!0,executablePath:X,handleSIGHUP:!1,handleSIGINT:!1,handleSIGTERM:!1});return JJ+=1,o0=Z,o2=X,Z.on("disconnected",()=>{if(o0===Z)o0=null,o2=null}),Z}function s8(X,Z){if(n2>=QJ)return Promise.reject(new t2);n2+=1;let W,Q,Y=new Promise((z,j)=>{W=z,Q=j});return b3=b3.then(async()=>{n2-=1,x3+=1,O3();let z=null,j;try{z=await(await zJ()).newContext(X.context);let L=await z.newPage();j={ok:!0,value:await Z(L)}}catch(F){j={ok:!1,error:F}}finally{if(z)await z.close().catch(()=>{return});x3-=1,YJ()}if(j.ok)W(j.value);else Q(j.error)}),Y}async function o8(){await b3.catch(()=>{return}),await R3()}import{randomUUID as z9}from"node:crypto";import{createServer as qJ}from"node:http";import{WebSocket as y3,WebSocketServer as PJ}from"ws";var v3="/cli-bridge",n8="/ping";var t8=60000,e8=65000;function C3(X=43275,Z=43277){let W=[];for(let Q=X;Q<=Z;Q+=1)W.push(Q);return W}function X9(X=C3(),Z="127.0.0.1",W="/cli-bridge"){return X.map((Q)=>`ws://${Z}:${Q}${W}`)}var VJ=800;function Z9({candidates:X,createWebSocket:Z,timeoutMs:W=VJ,maxConcurrent:Q=1,staggerMs:Y=0,setTimeoutFn:z=setTimeout,clearTimeoutFn:j=clearTimeout}){return new Promise((F,L)=>{let U=0,w=!1,P=null,C=new Map,h=Math.max(1,Math.floor(Q)),D=()=>{if(P===null)return;j(P),P=null},G=(A)=>{let{socket:x,listeners:b,timer:y}=A;x.removeEventListener("open",b.open),x.removeEventListener("message",b.message),x.removeEventListener("error",b.error),x.removeEventListener("close",b.close),j(y),C.delete(x)},N=(A)=>{D();for(let x of Array.from(C.values()))if(G(x),x.socket!==A)try{x.socket.close()}catch{}},v=()=>{if(w)return;if(U<X.length)return;if(C.size>0)return;if(P!==null)return;w=!0,L(Error("No IdeaWave CLI bridge is reachable"))},O=(A)=>{if(w)return;if(U>=X.length){v();return}if(C.size>=h)return;if(A<=0){D(),$();return}if(P!==null)return;P=z(()=>{P=null,$()},A)},M=()=>{if(w)return;if(C.size>=h)return;if(C.size===0||Y<=0||h===1){O(0);return}O(Y)},g=(A)=>{if(w)return;let x=C.get(A);if(!x)return;G(x);try{A.close()}catch{}M(),v()};function $(){if(w)return;if(C.size>=h)return;let A=X[U];if(U+=1,!A){v();return}let x;try{x=Z(A)}catch{M(),v();return}let b={open:()=>{if(w||!C.has(x))return;x.send(r2({type:"bridge_probe",protocolVersion:1}))},message:(_)=>{if(w||!C.has(x))return;if(p2(String(_?.data??""))?.type!=="bridge_probe_ack")return;w=!0,N(x),F({url:A,socket:x})},error:()=>g(x),close:()=>g(x)};x.addEventListener("open",b.open),x.addEventListener("message",b.message),x.addEventListener("error",b.error),x.addEventListener("close",b.close);let y=z(()=>g(x),W);C.set(x,{url:A,socket:x,listeners:b,timer:y}),M()}$()})}import{randomBytes as jJ}from"node:crypto";import{mkdir as HJ,writeFile as KJ}from"node:fs/promises";import UJ from"node:os";import W9 from"node:path";var FJ=30000,LJ=1024;function Q9(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 Y=W==="ideawave.app"||W.endsWith(".ideawave.app");return Z.protocol==="https:"&&Y&&Z.pathname.startsWith("/static_boards/")}async function BJ(X,Z){let W=W9.join(UJ.tmpdir(),"ideawave-screenshots");await HJ(W,{recursive:!0});let Q=W9.join(W,`board-${Date.now()}-${jJ(4).toString("hex")}.png`);return await KJ(Q,X),{path:Q,engine:Z}}async function J9(X){let Z=X.timeoutMs??FJ;return s8({context:{viewport:{width:X.width,height:X.height},deviceScaleFactor:1}},async(W)=>{W.setDefaultTimeout(Z),W.setDefaultNavigationTimeout(Z);let Q=await W.goto(X.url,{waitUntil:"networkidle",timeout:Z});if(!Q?.ok())throw Error(`Static board responded with HTTP ${Q?.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 Y=await W.screenshot({type:"png",animations:"disabled",caret:"hide",scale:"css"});if(Y.byteLength<LJ)throw Error("Headless Shell returned an empty screenshot");return BJ(Buffer.from(Y),F1().engine??"system-chromium")})}var p1="IDEAWAVE_CLI_ALLOW_RAILWAY_PR_PREVIEWS";function wJ(X){return X==="1"||X?.toLowerCase()==="true"}function Y9(X,Z){let Q=X.includes("--dev")||wJ(Z.IDEAWAVE_CLI_ALLOW_RAILWAY_PR_PREVIEWS),Y=Z.APP_ENV==="development"||Q;return{cliArgs:X.filter((z)=>z!=="--dev"),browserKitEnabled:!0,captureEngineEnabled:!Y,allowRailwayPrPreviews:Q}}var bJ=0,xJ=30000,OJ=t8,RJ=1e4,vJ="/screenshot",CJ=65536,U9="http://127.0.0.1";async function F9(X=X9(),Z=(W)=>new y3(W,{headers:{origin:U9}})){try{let{url:W,socket:Q}=await Z9({candidates:X,createWebSocket:Z});try{Q.close()}catch{}return W}catch{return null}}var fJ=new Set(["https://ideawave-app-production.up.railway.app"]);function yJ(X){return X==="ideawave.app"||X.endsWith(".ideawave.app")}function hJ(X){return X==="1"||X?.toLowerCase()==="true"}function MJ(X){return/^ideawave-app-ideawave-app-pr-\d+\.up\.railway\.app$/i.test(X)}function NJ(){let X=process.env.IDEAWAVE_CLI_ALLOWED_ORIGINS;if(!X)return DJ;let Z=new Set;for(let W of X.split(",")){let Q=W.trim();if(!Q)continue;try{Z.add(new URL(Q).origin)}catch{}}return Z}var DJ=new Set;function f3(X){if(!X)return!1;let Z;try{Z=new URL(X)}catch{return!1}if(fJ.has(Z.origin))return!0;if(NJ().has(Z.origin))return!0;if(Z.protocol==="https:"&&hJ(process.env[p1])&&MJ(Z.hostname))return!0;if(Z.protocol==="https:"&&yJ(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 n0(X,Z){if(X.readyState!==y3.OPEN)return;try{X.send(r2(Z))}catch{}}function $J(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 GJ(X){switch(X.type){case"run_turn":return`run_turn:${X.run.runId}`;case"runtime_rpc":return`runtime_rpc:${X.requestId}`;case"browser_rpc":return`browser_rpc:${X.requestId}`}}function V9(X){return X.type==="cancel_run"?`run_turn:${X.runId}`:`browser_rpc:${X.requestId}`}function j9(X){return X.type==="cancel_run"?`cancel_run:${X.runId}`:`browser_rpc_cancel:${X.requestId}`}function e2(X){if(typeof X==="string")return X;if(Array.isArray(X))return X[0]??null;return null}function H9(X,Z,W){X.write(`HTTP/1.1 ${Z} ${W}\r
1151
1171
  Connection: close\r
1152
1172
  Content-Length: ${Buffer.byteLength(W)}\r
1153
1173
  \r
1154
- ${W}`),X.destroy()}function GJ(X,Z){return new Promise((W,Q)=>{let Y=(j)=>{X.off("listening",z),Q(j)},z=()=>{X.off("error",Y);let j=X.address();if(!j||typeof j==="string"){Q(Error("Failed to read CLI bridge server address"));return}W(j.port)};X.once("error",Y),X.once("listening",z),X.listen(Z,"127.0.0.1")})}function H9(X){return new Promise((Z,W)=>{X.close((Q)=>{if(Q)W(Q);else Z()})})}async function F9(X,Z=C3()){let W=new Map,Q=new Map,Y=X.maxMessageSize??PJ,z=X.cliInstanceId??Y9(),j=X.nativePingIntervalMs??OJ,F=X.idleTimeoutMs??bJ,L=X.disconnectGraceMs??xJ,U=!1,w=(v)=>{let O=Q.get(v);if(O)clearTimeout(O);Q.delete(v)},P=(v)=>{Q.delete(v);let{activeRunIds:O}=X.registry.disconnect(v);X.onDisconnect(v,O)},C=(v,O,M)=>{let g={type:"cli_status",connected:!0,runtime:X.runtime,mcpReady:X.mcpReady(),error:O,capabilities:X.capabilities??[],cliVersion:X.cliVersion,cliInstanceId:z,...M===void 0?{}:{sessionResumed:M},browserRuntime:X.browserRuntimeStatus?.()};if(v){let $=W.get(v);if($)n0($,g);return}for(let $ of W.values())n0($,g)},h=(v,O)=>{let M=O.sessionId.trim(),g=O.userId.trim();if(!M||!g){n0(v,{type:"cli_status",connected:!1,runtime:X.runtime,mcpReady:X.mcpReady(),error:"Missing frontend session or user id"}),v.close();return}let $=W.get(M),A=X.registry.register({frontendSessionId:M,userId:g,tools:O.tools,send:(x)=>n0(v,x)});if(!A.accepted){n0(v,{type:"cli_status",connected:!1,runtime:X.runtime,mcpReady:X.mcpReady(),error:"Frontend session belongs to another user. Reload the board and reconnect."}),v.close(1008,"Frontend session identity mismatch");return}if(w(M),v.data.frontendSessionId=M,v.idleTimer)clearTimeout(v.idleTimer);if(v.idleTimer=null,W.set(M,v),$&&$!==v)$.close();C(M,void 0,A.sessionResumed),X.onToolMetadata?.(M)},D=(v,O)=>{let M=X.registry.getUserId(v);if(!M)return;let g=($)=>{let A=$J($),x=X.registry.acceptInboundRequest(v,A);if(x!=="capacity")X.registry.sendToSession(v,{type:"delivery_ack",messageId:A});return x};switch(O.type){case"bridge_ping":{let $=W.get(v);if($)n0($,{type:"bridge_pong"});break}case"delivery_ack":X.registry.handleDeliveryAck(v,O.messageId);break;case"tool_metadata":X.registry.setMetadata(v,O.tools),X.onToolMetadata?.(v);break;case"tool_result":X.registry.handleToolResult(v,O);break;case"run_turn":{let $=g(O);if($==="duplicate"||$==="cancelled")break;if($==="capacity"){X.registry.sendToSession(v,{type:"run_settled",runId:O.run.runId,cardId:O.run.cardId,result:{assistantContent:"",model:null,latencyMs:0,errorText:"CLI request queue is full. Retry this run.",partialText:null}});break}m("bridge.run_received",{runId:O.run.runId,cardId:O.run.cardId,frontendSessionId:v}),X.registry.markRunActive(v,O.run.runId,O.run.cardId),X.onRunTurn(v,{...O.run,frontendSessionId:v,userId:M})}break;case"cancel_run":{if(X.registry.cancelInboundRequest(v,z9(O))!=="capacity")X.registry.sendToSession(v,{type:"delivery_ack",messageId:V9(O)});if(X.registry.ownsRun(v,O.runId))X.onCancelRun(v,O.runId)}break;case"runtime_rpc":{let $=g(O);if($==="duplicate"||$==="cancelled")break;if($==="capacity"){X.registry.sendToSession(v,{type:"runtime_rpc_result",requestId:O.requestId,ok:!1,error:"CLI request queue is full. Retry this operation."});break}X.onRuntimeRpc(v,O)}break;case"browser_rpc":{let $=g(O);if($==="duplicate"||$==="cancelled")break;if($==="capacity"){X.registry.sendToSession(v,{type:"browser_rpc_result",requestId:O.requestId,ok:!1,error:"CLI request queue is full. Retry this operation."});break}X.onBrowserRpc?.(v,W.get(v)?.data.frontendOrigin??"",O)}break;case"browser_rpc_cancel":{if(X.registry.cancelInboundRequest(v,z9(O))!=="capacity")X.registry.sendToSession(v,{type:"delivery_ack",messageId:V9(O)});X.onBrowserRpcCancel?.(v,O)}break;case"warmup_run":X.onWarmupRun(v,{...O,frontendSessionId:v},M);break;default:break}},G=(v,O)=>{let M=e2(v.headers.origin),g=f3(M),$={Vary:"Origin"};if(g&&M)$["Access-Control-Allow-Origin"]=M,$["Access-Control-Allow-Private-Network"]="true";if(v.method==="OPTIONS"){O.writeHead(204,{...$,"Access-Control-Allow-Methods":"GET, OPTIONS","Access-Control-Allow-Headers":"*","Access-Control-Max-Age":"600"}),O.end();return}if(v.method!=="GET"){O.writeHead(405,$),O.end();return}O.writeHead(200,{...$,"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,cliInstanceId:z,browserRuntime:X.browserRuntimeStatus?.()}))},N=(v,O)=>{let M=e2(v.headers.origin),g=f3(M),$={Vary:"Origin"};if(g&&M)$["Access-Control-Allow-Origin"]=M,$["Access-Control-Allow-Private-Network"]="true";if(v.method==="OPTIONS"){O.writeHead(204,{...$,"Access-Control-Allow-Methods":"POST, OPTIONS","Access-Control-Allow-Headers":"content-type","Access-Control-Max-Age":"600"}),O.end();return}if(!g){O.writeHead(403,$),O.end();return}if(v.method!=="POST"){O.writeHead(405,$),O.end();return}let A={...$,"content-type":"application/json"},x=(_,I)=>{O.writeHead(_,A),O.end(JSON.stringify(I))},b="",y=!1;v.on("data",(_)=>{if(b+=_.toString("utf8"),b.length>vJ)y=!0,v.destroy()}),v.on("end",()=>{if(y){x(400,{ok:!1,error:"Request body too large"});return}let _;try{_=JSON.parse(b)}catch{x(400,{ok:!1,error:"Invalid JSON body"});return}let I=typeof _.url==="string"?_.url:"";if(!W9(I)){x(400,{ok:!1,error:"url must be an http(s) loopback or /static_boards/ page URL"});return}let l=(k,r)=>{let W0=typeof k==="number"?k:Number.NaN;if(!Number.isFinite(W0))return r;return Math.min(4000,Math.max(200,Math.round(W0)))};Q9({url:I,width:l(_.width,1440),height:l(_.height,900)}).then((k)=>x(200,{ok:!0,path:k.path,engine:k.engine})).catch((k)=>{let r=k instanceof i1?503:k instanceof t2?429:500;x(r,{ok:!1,...k instanceof i1?{installing:!0}:{},error:k instanceof Error?k.message:String(k)})})})};for(let v of Z){let O=wJ((x,b)=>{(async()=>{let y=new URL(x.url??"/","http://127.0.0.1").pathname;if(y===o8){G(x,b);return}if(y===RJ){N(x,b);return}if(await X.onHttpRequest?.(x,b))return;b.writeHead(404,{"content-type":"text/plain"}),b.end("IdeaWave CLI bridge")})().catch((y)=>{if(b.headersSent){b.destroy(y instanceof Error?y:void 0);return}b.writeHead(500,{"content-type":"text/plain"}),b.end("IdeaWave CLI bridge request failed")})}),M=new qJ({noServer:!0,maxPayload:Y}),g=(x)=>{if(x.idleTimer)clearTimeout(x.idleTimer);x.idleTimer=setTimeout(()=>{x.close()},F),x.idleTimer.unref?.()},$=(x)=>{if(x.nativePingTimer)clearInterval(x.nativePingTimer);x.nativePingTimer=null,x.awaitingNativePong=!1,x.nativePongMisses=0},A=(x)=>{$(x),x.nativePingTimer=setInterval(()=>{if(x.readyState!==y3.OPEN)return;if(x.awaitingNativePong){if(x.nativePongMisses+=1,x.nativePongMisses>=2){x.terminate();return}}x.awaitingNativePong=!0;try{x.ping()}catch{x.terminate()}},j),x.nativePingTimer.unref?.()};M.on("connection",(x,b)=>{let y=x;y.data={id:Y9(),frontendSessionId:null,frontendOrigin:new URL(e2(b.headers.origin)??K9).origin},y.idleTimer=null,y.nativePingTimer=null,y.awaitingNativePong=!1,y.nativePongMisses=0,g(y),A(y),y.on("ping",()=>{if(!y.data.frontendSessionId)g(y)}),y.on("pong",()=>{if(y.awaitingNativePong=!1,y.nativePongMisses=0,!y.data.frontendSessionId)g(y)}),y.on("error",()=>{if(y.idleTimer)clearTimeout(y.idleTimer);$(y),y.close()}),y.on("message",(_)=>{if(!y.data.frontendSessionId)g(y);let I=DJ(_);if(Y>0&&I.length>Y)return;let l=p2(I);if(!l)return;let k=y.data.frontendSessionId;if(!k){if(l.type==="bridge_probe")n0(y,{type:"bridge_probe_ack",protocolVersion:l.protocolVersion});else if(l.type==="frontend_hello")h(y,l);return}D(k,l)}),y.on("close",()=>{if(y.idleTimer)clearTimeout(y.idleTimer);$(y);let _=y.data.frontendSessionId;if(!_)return;if(W.get(_)!==y)return;if(W.delete(_),w(_),U)return;Q.set(_,setTimeout(()=>P(_),L))})}),O.on("upgrade",(x,b,y)=>{let _=new URL(x.url??"/","http://127.0.0.1").pathname;if(X.onHttpUpgrade?.(x,b,y))return;if(_!==v3){j9(b,404,"Not Found");return}if(!f3(e2(x.headers.origin))){j9(b,403,"Forbidden");return}M.handleUpgrade(x,b,y,(I)=>{M.emit("connection",I,x)})});try{let x=await GJ(O,v);return{url:`ws://127.0.0.1:${x}${v3}`,port:x,sendStatus:C,close:async()=>{U=!0;for(let b of Q.values())clearTimeout(b);Q.clear();for(let b of M.clients){let y=b;if(y.idleTimer)clearTimeout(y.idleTimer);$(y),y.close()}M.close(),await H9(O).catch(()=>{return})}}}catch(x){if(M.close(),await H9(O).catch(()=>{return}),x?.code==="EADDRINUSE")continue;throw x}}throw Error(`No free IdeaWave CLI bridge port found in ${Z[0]}-${Z.at(-1)}`)}import XX from"node:fs/promises";import h3 from"node:os";import ZX from"node:path";function L9(){return`cfg_${crypto.randomUUID().replace(/-/g,"").slice(0,16)}`}async function EJ(){let[X,Z]=await Promise.all([F0(),x6()]),W=X.globalDefaultConfigId?X.runtimes.find((Q)=>Q.id===X.globalDefaultConfigId)??null:null;return{runtimes:X.runtimes,globalDefaultConfigId:X.globalDefaultConfigId,globalDefaultEffective:W?{runFolder:W.runFolder??h3.homedir(),modelId:W.defaultModelId??null,configValues:W.defaultConfigValues??{}}:null,knownAdapters:Q1().map((Q)=>({id:Q.id,displayName:Q.displayName})),readiness:Z}}async function gJ(X){try{let Z=await k0({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 h0)return{resolved:null};throw Z}}async function mJ(X){return q0((Z)=>{let W=Z.runtimes.find((z)=>z.kind==="registered"&&z.adapterId===X.adapterId);if(W)return W;let Q=Q1().find((z)=>z.id===X.adapterId);if(!Q)throw Error(`Unknown adapterId: ${X.adapterId}`);let Y={id:L9(),kind:"registered",adapterId:X.adapterId,displayName:Q.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null};return Z.runtimes.push(Y),Y})}async function _J(X){return q0((Z)=>{let W={id:L9(),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 kJ(X){await q0((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 SJ(X){await q0((Z)=>{let W=Z.runtimes.find((Q)=>Q.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 AJ(X){X.boardId,await q0((Z)=>{if(X.runtimeConfigId===null){delete Z.cardOverrides[X.cardId];return}if(!Z.runtimes.some((Y)=>Y.id===X.runtimeConfigId))throw Error(`Runtime config not found: ${X.runtimeConfigId}`);let Q=Z.cardOverrides[X.cardId];Z.cardOverrides[X.cardId]={runtimeConfigId:X.runtimeConfigId,runFolder:X.runFolder!==void 0?X.runFolder:Q?.runFolder??null,modelId:X.modelId!==void 0?X.modelId:Q?.modelId??null,configValues:X.configValues!==void 0?X.configValues:Q?.configValues??{}}})}async function IJ(X){let W=(await F0()).runtimes.find((j)=>j.id===X.runtimeConfigId);if(!W)throw Error(`Runtime config not found: ${X.runtimeConfigId}`);let Q=O0(W),Y=await Q.resolveSpawnConfig(W),z=W.runFolder??h3.homedir();try{let j=await z8({spawn:{...Y,cwd:z},modelId:X.modelId??W.defaultModelId??null,configValues:X.configValues??W.defaultConfigValues??{}}),F=E2({adapterId:Q.id,models:j.models,currentModelId:j.currentModelId}),L=new Date().toISOString();return await q0((U)=>{let w=U.runtimes.find((P)=>P.id===X.runtimeConfigId);if(w)w.discoveredModels=F,w.discoveredConfigOptions=j.configOptions,w.discoveredAt=L}),{ok:!0,models:F,configOptions:j.configOptions,currentModelId:j.currentModelId}}catch(j){if(j instanceof Z1)throw Error(`${j.message}${Q.authHint?` ${Q.authHint}`:""}`);if(j instanceof u||j instanceof x0)throw Error(j.message);throw j}}async function TJ(X){let Z=h3.homedir(),W=X.path?.trim()?X.path.trim():Z,Q=ZX.resolve(W),Y=!0;try{if(!(await XX.stat(Q)).isDirectory())Q=ZX.dirname(Q)}catch{Y=!1,Q=Z}let z=[];try{z=(await XX.readdir(Q,{withFileTypes:!0})).filter((L)=>L.isDirectory()&&!L.name.startsWith(".")).map((L)=>({name:L.name,path:ZX.join(Q,L.name)})).sort((L,U)=>L.name.localeCompare(U.name))}catch{z=[]}let j=ZX.dirname(Q);return{path:Q,parent:j===Q?null:j,home:Z,exists:Y,entries:z}}var B9={list:EJ,getEffectiveForCard:gJ,registerRegistered:mJ,registerCustom:_J,unregister:kJ,setUserDefault:SJ,setCardOverride:AJ,refreshModels:IJ,browseFolder:TJ};var lJ=[{id:"claude-code",displayName:"Claude Code"},{id:"codex",displayName:"Codex"},{id:"copilot",displayName:"Copilot"},{id:"opencode",displayName:"OpenCode"}];function uJ(){return`cfg_${crypto.randomUUID().replace(/-/g,"").slice(0,16)}`}async function w9(){try{let X=await F0();if(X.globalDefaultConfigId){if(X.runtimes.some((W)=>W.id===X.globalDefaultConfigId))return X.globalDefaultConfigId}for(let Z of lJ){if((await O6(Z.id))?.status!=="ready")continue;let Q=null;if(await q0((Y)=>{if(Y.globalDefaultConfigId){if(Y.runtimes.some((F)=>F.id===Y.globalDefaultConfigId)){Q=Y.globalDefaultConfigId;return}}let z=Y.runtimes.find((j)=>j.kind==="registered"&&j.adapterId===Z.id);if(!z){let j={id:uJ(),kind:"registered",adapterId:Z.id,displayName:Z.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null};Y.runtimes.push(j),z=j}Y.globalDefaultConfigId=z.id,Q=z.id}),Q)return console.log(`[ideawave-cli] using agent runtime: ${Z.displayName}`),Q}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 cJ=240000,dJ=256,aJ=33554432,iJ=128,pJ=512,rJ=t8,sJ=65536;function oJ(){if(typeof crypto<"u"&&"randomUUID"in crypto)return`call_${crypto.randomUUID()}`;return`call_${Date.now()}_${Math.random().toString(16).slice(2)}`}class M3{sessions=new Map;createCallId;toolCallTimeoutMs;maxPendingDeliveries;maxPendingDeliveryBytes;maxAcceptedInboundRequests;maxCancellationTombstones;cancellationTombstoneTtlMs;terminalReservationBytes;constructor(X={}){this.createCallId=X.createCallId??oJ,this.toolCallTimeoutMs=X.toolCallTimeoutMs??cJ,this.maxPendingDeliveries=X.maxPendingDeliveries??dJ,this.maxPendingDeliveryBytes=X.maxPendingDeliveryBytes??aJ,this.maxAcceptedInboundRequests=X.maxAcceptedInboundRequests??iJ,this.maxCancellationTombstones=X.maxCancellationTombstones??pJ,this.cancellationTombstoneTtlMs=X.cancellationTombstoneTtlMs??rJ,this.terminalReservationBytes=X.terminalReservationBytes??sJ}register(X){let Z=this.sessions.get(X.frontendSessionId);if(Z){let W=Z.userId===X.userId;if(!W)return{accepted:!1,sessionResumed:!1};return this.pruneCancellationTombstones(Z),this.sessions.set(X.frontendSessionId,{frontendSessionId:X.frontendSessionId,userId:X.userId,tools:X.tools,send:X.send,pendingToolCalls:Z.pendingToolCalls,pendingDeliveries:Z.pendingDeliveries,acceptedInboundRequests:Z.acceptedInboundRequests,cancelledInboundRequests:Z.cancelledInboundRequests,cancellationOverflowUntil:Z.cancellationOverflowUntil,activeRunIds:Z.activeRunIds,activeRunCardIds:Z.activeRunCardIds}),this.replayPendingDeliveries(X.frontendSessionId),{accepted:!0,sessionResumed:W}}return this.sessions.set(X.frontendSessionId,{frontendSessionId:X.frontendSessionId,userId:X.userId,tools:X.tools,send:X.send,pendingToolCalls:new Map,pendingDeliveries:new Map,acceptedInboundRequests:new Map,cancelledInboundRequests:new Map,cancellationOverflowUntil:null,activeRunIds:new Set,activeRunCardIds:new Map}),{accepted:!0,sessionResumed:!1}}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??[]}acceptInboundRequest(X,Z){let W=this.sessions.get(X);if(!W)return"capacity";if(this.pruneCancellationTombstones(W),W.cancelledInboundRequests.has(Z))return"cancelled";if(W.acceptedInboundRequests.has(Z))return"duplicate";if(W.cancellationOverflowUntil!==null&&(Z.startsWith("run_turn:")||Z.startsWith("browser_rpc:")))return"capacity";if(W.acceptedInboundRequests.size>=this.maxAcceptedInboundRequests||W.pendingDeliveries.size+W.acceptedInboundRequests.size>=this.maxPendingDeliveries||this.pendingDeliveryBytes(W)+this.outstandingTerminalReservationBytes(W)+this.terminalReservationBytes>this.maxPendingDeliveryBytes)return"capacity";return W.acceptedInboundRequests.set(Z,{terminalReservation:!0,terminalReservationBytes:this.terminalReservationBytes}),"accepted"}cancelInboundRequest(X,Z){let W=this.sessions.get(X);if(!W)return"capacity";this.pruneCancellationTombstones(W);let Q=Date.now()+this.cancellationTombstoneTtlMs;if(W.cancelledInboundRequests.has(Z))return W.cancelledInboundRequests.set(Z,Q),"duplicate";if(W.cancelledInboundRequests.size>=this.maxCancellationTombstones)return W.cancellationOverflowUntil=Math.max(W.cancellationOverflowUntil??0,Q),"capacity";return W.cancelledInboundRequests.set(Z,Q),"accepted"}sendToSession(X,Z){let W=this.sessions.get(X);if(!W)return!1;let Q=this.toReliableMessage(Z);if(Q){let Y=this.getReliableMessageId(Q),z=Buffer.byteLength(JSON.stringify(Q),"utf8"),j=W.pendingDeliveries.get(Y),F=this.pendingDeliveryBytes(W),L=W.pendingDeliveries.size+(j?0:1),U=F-(j?.byteLength??0)+z,w=this.inboundRequestIdForTerminalDelivery(Y),P=w?W.acceptedInboundRequests.get(w):void 0,C=Boolean(P?.terminalReservation),h=[...W.acceptedInboundRequests.values()].filter((G)=>G.terminalReservation).length-(C?1:0),D=this.outstandingTerminalReservationBytes(W)-(C?P?.terminalReservationBytes??0:0);if(C&&(L+h>this.maxPendingDeliveries||U+D>this.maxPendingDeliveryBytes))Q=this.compactTerminalFailure(Q),z=Buffer.byteLength(JSON.stringify(Q),"utf8"),U=F-(j?.byteLength??0)+z;if(L+h>this.maxPendingDeliveries||U+D>this.maxPendingDeliveryBytes)return m("bridge.delivery_rejected",{frontendSessionId:X,messageId:Y,messageType:Q.type,byteLength:z,reason:"capacity"}),!1;if(W.pendingDeliveries.set(Y,{message:Q,queuedAt:Date.now(),byteLength:z}),P)P.terminalReservation=!1;return m("bridge.delivery_queued",{frontendSessionId:X,messageId:Y,messageType:Q.type,queueDepth:W.pendingDeliveries.size}),W.send(Q),!0}return W.send(Z),!0}handleDeliveryAck(X,Z){let W=this.sessions.get(X);if(!W)return;let Q=W.pendingDeliveries.get(Z);if(Q)W.pendingDeliveries.delete(Z),m("bridge.delivery_acknowledged",{frontendSessionId:X,messageId:Z,messageType:Q.message.type,elapsedMs:Date.now()-Q.queuedAt,queueDepth:W.pendingDeliveries.size});let Y=this.inboundRequestIdForTerminalDelivery(Z);if(Y)W.acceptedInboundRequests.delete(Y)}callTool(X,Z,W,Q,Y,z,j,F){if(!X)return Promise.reject(Error("MCP tool call is missing a frontend session id"));let L=this.sessions.get(X);if(!L)return Promise.reject(Error(`Frontend session ${X} is not connected`));let U=this.createCallId();return new Promise((w,P)=>{let C=Q??(Y?this.getActiveRunIdForCard(L,Y):this.getSoleActiveRunId(L)),h=Y??(C?L.activeRunCardIds.get(C):void 0),D=Date.now(),G=setTimeout(()=>{L.pendingToolCalls.delete(U),L.pendingDeliveries.delete(U),m("tool_queue.timeout",{frontendSessionId:X,runId:C,cardId:h,callId:U,toolName:Z,elapsedMs:Date.now()-D,queueDepth:L.pendingToolCalls.size}),P(Error(`Tool "${Z}" timed out waiting for the frontend`))},this.toolCallTimeoutMs);if(L.pendingToolCalls.set(U,{resolve:w,reject:P,timer:G,name:Z,runId:C??null,cardId:h??null,startedAt:D}),m("tool_queue.forwarded_to_browser",{frontendSessionId:X,runId:C,cardId:h,callId:U,toolName:Z,queueDepth:L.pendingToolCalls.size}),!this.sendToSession(X,{type:"tool_call",callId:U,messageId:U,name:Z,args:W,...C?{runId:C}:{},...h?{cardId:h}:{},...z?{executionTarget:z}:{},...j?{ideateClaims:j}:{},...F?{toolSurface:F}:{}}))L.pendingToolCalls.delete(U),clearTimeout(G),P(Error("Frontend delivery capacity reached"))})}handleToolResult(X,Z){let W=this.sessions.get(X);if(!W)return;let Q=W.pendingToolCalls.get(Z.callId);if(!Q){W.pendingDeliveries.delete(Z.callId),W.send({type:"delivery_ack",messageId:Z.callId});return}W.pendingToolCalls.delete(Z.callId),W.pendingDeliveries.delete(Z.callId),clearTimeout(Q.timer),W.send({type:"delivery_ack",messageId:Z.callId});let Y=Z.ok?"":Z.error??Z.result?.content?.find(({text:F})=>typeof F==="string")?.text??"Tool execution failed",z=/network|fetch|connection|offline/i.test(Y)?"network":/timeout|timed out/i.test(Y)?"timeout":/unauthor|forbidden|permission/i.test(Y)?"authorization":/conflict|revision|lease|fence/i.test(Y)?"conflict":/invalid|missing|required|schema/i.test(Y)?"validation":"unknown";if(m("tool_queue.result_received",{frontendSessionId:X,runId:Q.runId,cardId:Q.cardId,callId:Z.callId,toolName:Q.name,elapsedMs:Date.now()-Q.startedAt,queueDepth:W.pendingToolCalls.size,ok:Z.ok,...Z.ok?{}:{errorCategory:z}}),Z.ok){Q.resolve(Z.result);return}let j=Z.result;if(j&&typeof j==="object"&&Array.isArray(j.content)){Q.resolve({...j,isError:!0});return}Q.reject(Error(Z.error??"Tool execution failed"))}markRunActive(X,Z,W){let Q=this.sessions.get(X);if(!Q)return;if(Q.activeRunIds.add(Z),W)Q.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),m("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()}replayPendingDeliveries(X){let Z=this.sessions.get(X);if(!Z)return;for(let[W,Q]of Z.pendingDeliveries)m("bridge.delivery_replayed",{frontendSessionId:X,messageId:W,messageType:Q.message.type,elapsedMs:Date.now()-Q.queuedAt,queueDepth:Z.pendingDeliveries.size}),Z.send(Q.message)}pruneCancellationTombstones(X){let Z=Date.now();for(let[W,Q]of X.cancelledInboundRequests)if(Q<=Z)X.cancelledInboundRequests.delete(W);if(X.cancellationOverflowUntil!==null&&X.cancellationOverflowUntil<=Z)X.cancellationOverflowUntil=null}pendingDeliveryBytes(X){let Z=0;for(let W of X.pendingDeliveries.values())Z+=W.byteLength;return Z}outstandingTerminalReservationBytes(X){let Z=0;for(let W of X.acceptedInboundRequests.values())if(W.terminalReservation)Z+=W.terminalReservationBytes;return Z}compactTerminalFailure(X){switch(X.type){case"run_settled":return{...X,result:{assistantContent:"",model:null,latencyMs:X.result.latencyMs,errorText:"CLI terminal response exceeded the reliable bridge limit. Continue the paused run after reconnecting.",partialText:null}};case"runtime_rpc_result":return{...X,ok:!1,error:"CLI terminal response exceeded the reliable bridge limit. Continue the paused run after reconnecting.",result:void 0};case"browser_rpc_result":return{...X,ok:!1,error:"CLI terminal response exceeded the reliable bridge limit. Continue the paused run after reconnecting.",result:void 0};case"tool_call":return X}}inboundRequestIdForTerminalDelivery(X){if(X.startsWith("run_settled:"))return`run_turn:${X.slice(12)}`;if(X.startsWith("runtime_rpc_result:"))return`runtime_rpc:${X.slice(19)}`;if(X.startsWith("browser_rpc_result:"))return`browser_rpc:${X.slice(19)}`;return null}toReliableMessage(X){switch(X.type){case"tool_call":return{...X,messageId:X.messageId??X.callId};case"run_settled":return{...X,messageId:X.messageId??`run_settled:${X.runId}`};case"runtime_rpc_result":return{...X,messageId:X.messageId??`runtime_rpc_result:${X.requestId}`};case"browser_rpc_result":return{...X,messageId:X.messageId??`browser_rpc_result:${X.requestId}`};default:return null}}getReliableMessageId(X){if(!X.messageId)throw Error(`Reliable relay message ${X.type} is missing messageId`);return X.messageId}getSoleActiveRunId(X){return X.activeRunIds.size===1?X.activeRunIds.values().next().value:void 0}getActiveRunIdForCard(X,Z){let W=[...X.activeRunCardIds.entries()].filter(([Q,Y])=>X.activeRunIds.has(Q)&&Y===Z).map(([Q])=>Q);return W.length===1?W[0]:void 0}}function b9(){return"0.0.101".trim()?"0.0.101":"dev"}var nJ=process.argv.slice(2),D3=J9(nJ,process.env);if(D3.allowRailwayPrPreviews)process.env[p1]="1";var T0=D3.cliArgs[0],{browserKitEnabled:s1,captureEngineEnabled:tJ}=D3;if(T0==="--help"||T0==="-h"||T0==="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(T0==="--version"||T0==="-v"||T0==="version")console.log(b9()),process.exit(0);if(T0)console.error(`Unknown command: ${T0}`),console.error("Run `ideawave --help` for usage."),process.exit(1);var o1=new M3,e0=null,eJ=s1?{phase:"ready",message:"Local browser-kit proxy is ready"}:{phase:"idle"},w1=new G2,t0=new Map;function q9(X,Z){return`${X}:${Z}`}function I0(X,Z){let W=o1.sendToSession(X,Z);if(!W)m("bridge.delivery_rejected_by_registry",{frontendSessionId:X,messageType:Z.type});return W}async function XY(X,Z){try{let W=B9[Z.method],Q=await W(Z.params);I0(X,{type:"runtime_rpc_result",requestId:Z.requestId,ok:!0,result:Q})}catch(W){I0(X,{type:"runtime_rpc_result",requestId:Z.requestId,ok:!1,error:W instanceof Error?W.message:String(W)})}}var n1=!1,r1=null;async function N3(){if(n1)return;if(r1)return r1;return r1=(async()=>{try{let X=await N8(o1);A3({...X,requestedPort:X.port}),console.log(`[ideawave-cli] MCP endpoint for the agent: ${X.url}`);try{await X6({onStatusChange:(Z)=>{if(R6(),e0?.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 w9(),n1=!0,console.log("[ideawave-cli] ready — agent runs will drive the board."),e0?.sendStatus()}catch(X){console.error("[ideawave-cli] failed to start agent host:",X),e0?.sendStatus(void 0,X instanceof Error?X.message:String(X))}finally{r1=null}})(),r1}if(process.env.APP_ENV!=="development"){let X=await U9();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(tJ)i8().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"}`)});e0=await F9({registry:o1,runtime:null,mcpReady:()=>n1,capabilities:l8(s1),cliVersion:b9(),browserRuntimeStatus:()=>eJ,onToolMetadata:(X)=>{console.log(`[ideawave-cli] session ${X} advertised ${o1.getMetadata(X).length} tools`),N3()},onRunTurn:(X,Z)=>{console.log(`[ideawave-cli] running agent turn for card ${Z.cardId} (session ${X})`),(async()=>{if(await N3(),!n1){I0(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 g8(Z,(W)=>I0(X,W))})().catch(()=>{return}).finally(()=>o1.markRunSettled(X,Z.runId))},onCancelRun:(X,Z)=>{U3(Z)},onRuntimeRpc:(X,Z)=>{XY(X,Z)},onBrowserRpc:(X,Z,W)=>{if(!s1){I0(X,{type:"browser_rpc_result",requestId:W.requestId,ok:!1,error:"The development browser-kit proxy is not enabled"});return}let Q=q9(X,W.requestId);t0.get(Q)?.abort();let Y=new AbortController;t0.set(Q,Y),w1.handleRpc(X,Z,W,{signal:Y.signal}).then((z)=>{I0(X,{type:"browser_rpc_result",requestId:W.requestId,ok:!0,result:z})},(z)=>{I0(X,{type:"browser_rpc_result",requestId:W.requestId,ok:!1,error:IX(z)})}).finally(()=>{if(t0.get(Q)===Y)t0.delete(Q)})},onBrowserRpcCancel:(X,Z)=>{t0.get(q9(X,Z.requestId))?.abort()},onHttpRequest:(X,Z)=>s1?w1.handleHttpRequest(X,Z):!1,onHttpUpgrade:(X,Z,W)=>s1?w1.handleUpgrade(X,Z,W):!1,onWarmupRun:(X,Z,W)=>{(async()=>{if(await N3(),!n1)return{status:"retryable",error:"agent host is not ready"};if(Z.ideate)return B3({boardId:Z.boardId,userId:W,frontendSessionId:X,surface:Z.ideate.surface,runtimeConfigId:Z.ideate.runtimeConfigId,modelId:Z.ideate.modelId});return m8({cardId:Z.cardId,boardId:Z.boardId,userId:W,frontendSessionId:X})})().then((Q)=>{if(!Z.warmupId)return;I0(X,{type:"warmup_result",warmupId:Z.warmupId,cardId:Z.cardId,...Q})})},onDisconnect:(X,Z)=>{for(let[W,Q]of t0){if(!W.startsWith(`${X}:`))continue;Q.abort(),t0.delete(W)}w1.closeFrontendSession(X),$8(X);for(let W of Z)U3(W);m("bridge.frontend_disconnected",{frontendSessionId:X,activeRuns:Z.length}),g3(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`)}});w1.setPort(e0.port);console.log(`[ideawave-cli] browser bridge listening on ${e0.url}`);console.log("[ideawave-cli] waiting for ideawave.app browser sessions…");var P9=!1;for(let X of["SIGINT","SIGTERM"])process.once(X,()=>{if(P9)return;P9=!0,G8(),(async()=>{await w1.close(),await s8(),await e0?.close().catch(()=>{return}),process.exit(0)})()});
1174
+ ${W}`),X.destroy()}function EJ(X,Z){return new Promise((W,Q)=>{let Y=(j)=>{X.off("listening",z),Q(j)},z=()=>{X.off("error",Y);let j=X.address();if(!j||typeof j==="string"){Q(Error("Failed to read CLI bridge server address"));return}W(j.port)};X.once("error",Y),X.once("listening",z),X.listen(Z,"127.0.0.1")})}function K9(X){return new Promise((Z,W)=>{X.close((Q)=>{if(Q)W(Q);else Z()})})}async function L9(X,Z=C3()){let W=new Map,Q=new Map,Y=X.maxMessageSize??bJ,z=X.cliInstanceId??z9(),j=X.nativePingIntervalMs??RJ,F=X.idleTimeoutMs??xJ,L=X.disconnectGraceMs??OJ,U=!1,w=(v)=>{let O=Q.get(v);if(O)clearTimeout(O);Q.delete(v)},P=(v)=>{Q.delete(v);let{activeRunIds:O}=X.registry.disconnect(v);X.onDisconnect(v,O)},C=(v,O,M)=>{let g={type:"cli_status",connected:!0,runtime:X.runtime,mcpReady:X.mcpReady(),error:O,capabilities:X.capabilities??[],cliVersion:X.cliVersion,cliInstanceId:z,...M===void 0?{}:{sessionResumed:M},browserRuntime:X.browserRuntimeStatus?.()};if(v){let $=W.get(v);if($)n0($,g);return}for(let $ of W.values())n0($,g)},h=(v,O)=>{let M=O.sessionId.trim(),g=O.userId.trim();if(!M||!g){n0(v,{type:"cli_status",connected:!1,runtime:X.runtime,mcpReady:X.mcpReady(),error:"Missing frontend session or user id"}),v.close();return}let $=W.get(M),A=X.registry.register({frontendSessionId:M,userId:g,tools:O.tools,send:(x)=>n0(v,x)});if(!A.accepted){n0(v,{type:"cli_status",connected:!1,runtime:X.runtime,mcpReady:X.mcpReady(),error:"Frontend session belongs to another user. Reload the board and reconnect."}),v.close(1008,"Frontend session identity mismatch");return}if(w(M),v.data.frontendSessionId=M,v.idleTimer)clearTimeout(v.idleTimer);if(v.idleTimer=null,W.set(M,v),$&&$!==v)$.close();C(M,void 0,A.sessionResumed),X.onToolMetadata?.(M)},D=(v,O)=>{let M=X.registry.getUserId(v);if(!M)return;let g=($)=>{let A=GJ($),x=X.registry.acceptInboundRequest(v,A);if(x!=="capacity")X.registry.sendToSession(v,{type:"delivery_ack",messageId:A});return x};switch(O.type){case"bridge_ping":{let $=W.get(v);if($)n0($,{type:"bridge_pong"});break}case"delivery_ack":X.registry.handleDeliveryAck(v,O.messageId);break;case"tool_metadata":X.registry.setMetadata(v,O.tools),X.onToolMetadata?.(v);break;case"tool_result":X.registry.handleToolResult(v,O);break;case"run_turn":{let $=g(O);if($==="duplicate"||$==="cancelled")break;if($==="capacity"){X.registry.sendToSession(v,{type:"run_settled",runId:O.run.runId,cardId:O.run.cardId,result:{assistantContent:"",model:null,latencyMs:0,errorText:"CLI request queue is full. Retry this run.",partialText:null}});break}m("bridge.run_received",{runId:O.run.runId,cardId:O.run.cardId,frontendSessionId:v}),X.registry.markRunActive(v,O.run.runId,O.run.cardId),X.onRunTurn(v,{...O.run,frontendSessionId:v,userId:M})}break;case"cancel_run":{if(X.registry.cancelInboundRequest(v,V9(O))!=="capacity")X.registry.sendToSession(v,{type:"delivery_ack",messageId:j9(O)});if(X.registry.ownsRun(v,O.runId))X.onCancelRun(v,O.runId)}break;case"runtime_rpc":{let $=g(O);if($==="duplicate"||$==="cancelled")break;if($==="capacity"){X.registry.sendToSession(v,{type:"runtime_rpc_result",requestId:O.requestId,ok:!1,error:"CLI request queue is full. Retry this operation."});break}X.onRuntimeRpc(v,O)}break;case"browser_rpc":{let $=g(O);if($==="duplicate"||$==="cancelled")break;if($==="capacity"){X.registry.sendToSession(v,{type:"browser_rpc_result",requestId:O.requestId,ok:!1,error:"CLI request queue is full. Retry this operation."});break}X.onBrowserRpc?.(v,W.get(v)?.data.frontendOrigin??"",O)}break;case"browser_rpc_cancel":{if(X.registry.cancelInboundRequest(v,V9(O))!=="capacity")X.registry.sendToSession(v,{type:"delivery_ack",messageId:j9(O)});X.onBrowserRpcCancel?.(v,O)}break;case"warmup_run":X.onWarmupRun(v,{...O,frontendSessionId:v},M);break;default:break}},G=(v,O)=>{let M=e2(v.headers.origin),g=f3(M),$={Vary:"Origin"};if(g&&M)$["Access-Control-Allow-Origin"]=M,$["Access-Control-Allow-Private-Network"]="true";if(v.method==="OPTIONS"){O.writeHead(204,{...$,"Access-Control-Allow-Methods":"GET, OPTIONS","Access-Control-Allow-Headers":"*","Access-Control-Max-Age":"600"}),O.end();return}if(v.method!=="GET"){O.writeHead(405,$),O.end();return}O.writeHead(200,{...$,"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,cliInstanceId:z,browserRuntime:X.browserRuntimeStatus?.()}))},N=(v,O)=>{let M=e2(v.headers.origin),g=f3(M),$={Vary:"Origin"};if(g&&M)$["Access-Control-Allow-Origin"]=M,$["Access-Control-Allow-Private-Network"]="true";if(v.method==="OPTIONS"){O.writeHead(204,{...$,"Access-Control-Allow-Methods":"POST, OPTIONS","Access-Control-Allow-Headers":"content-type","Access-Control-Max-Age":"600"}),O.end();return}if(!g){O.writeHead(403,$),O.end();return}if(v.method!=="POST"){O.writeHead(405,$),O.end();return}let A={...$,"content-type":"application/json"},x=(_,I)=>{O.writeHead(_,A),O.end(JSON.stringify(I))},b="",y=!1;v.on("data",(_)=>{if(b+=_.toString("utf8"),b.length>CJ)y=!0,v.destroy()}),v.on("end",()=>{if(y){x(400,{ok:!1,error:"Request body too large"});return}let _;try{_=JSON.parse(b)}catch{x(400,{ok:!1,error:"Invalid JSON body"});return}let I=typeof _.url==="string"?_.url:"";if(!Q9(I)){x(400,{ok:!1,error:"url must be an http(s) loopback or /static_boards/ page URL"});return}let l=(k,r)=>{let W0=typeof k==="number"?k:Number.NaN;if(!Number.isFinite(W0))return r;return Math.min(4000,Math.max(200,Math.round(W0)))};J9({url:I,width:l(_.width,1440),height:l(_.height,900)}).then((k)=>x(200,{ok:!0,path:k.path,engine:k.engine})).catch((k)=>{let r=k instanceof i1?503:k instanceof t2?429:500;x(r,{ok:!1,...k instanceof i1?{installing:!0}:{},error:k instanceof Error?k.message:String(k)})})})};for(let v of Z){let O=qJ((x,b)=>{(async()=>{let y=new URL(x.url??"/","http://127.0.0.1").pathname;if(y===n8){G(x,b);return}if(y===vJ){N(x,b);return}if(await X.onHttpRequest?.(x,b))return;b.writeHead(404,{"content-type":"text/plain"}),b.end("IdeaWave CLI bridge")})().catch((y)=>{if(b.headersSent){b.destroy(y instanceof Error?y:void 0);return}b.writeHead(500,{"content-type":"text/plain"}),b.end("IdeaWave CLI bridge request failed")})}),M=new PJ({noServer:!0,maxPayload:Y}),g=(x)=>{if(x.idleTimer)clearTimeout(x.idleTimer);x.idleTimer=setTimeout(()=>{x.close()},F),x.idleTimer.unref?.()},$=(x)=>{if(x.nativePingTimer)clearInterval(x.nativePingTimer);x.nativePingTimer=null,x.awaitingNativePong=!1,x.nativePongMisses=0},A=(x)=>{$(x),x.nativePingTimer=setInterval(()=>{if(x.readyState!==y3.OPEN)return;if(x.awaitingNativePong){if(x.nativePongMisses+=1,x.nativePongMisses>=2){x.terminate();return}}x.awaitingNativePong=!0;try{x.ping()}catch{x.terminate()}},j),x.nativePingTimer.unref?.()};M.on("connection",(x,b)=>{let y=x;y.data={id:z9(),frontendSessionId:null,frontendOrigin:new URL(e2(b.headers.origin)??U9).origin},y.idleTimer=null,y.nativePingTimer=null,y.awaitingNativePong=!1,y.nativePongMisses=0,g(y),A(y),y.on("ping",()=>{if(!y.data.frontendSessionId)g(y)}),y.on("pong",()=>{if(y.awaitingNativePong=!1,y.nativePongMisses=0,!y.data.frontendSessionId)g(y)}),y.on("error",()=>{if(y.idleTimer)clearTimeout(y.idleTimer);$(y),y.close()}),y.on("message",(_)=>{if(!y.data.frontendSessionId)g(y);let I=$J(_);if(Y>0&&I.length>Y)return;let l=p2(I);if(!l)return;let k=y.data.frontendSessionId;if(!k){if(l.type==="bridge_probe")n0(y,{type:"bridge_probe_ack",protocolVersion:l.protocolVersion});else if(l.type==="frontend_hello")h(y,l);return}D(k,l)}),y.on("close",()=>{if(y.idleTimer)clearTimeout(y.idleTimer);$(y);let _=y.data.frontendSessionId;if(!_)return;if(W.get(_)!==y)return;if(W.delete(_),w(_),U)return;Q.set(_,setTimeout(()=>P(_),L))})}),O.on("upgrade",(x,b,y)=>{let _=new URL(x.url??"/","http://127.0.0.1").pathname;if(X.onHttpUpgrade?.(x,b,y))return;if(_!==v3){H9(b,404,"Not Found");return}if(!f3(e2(x.headers.origin))){H9(b,403,"Forbidden");return}M.handleUpgrade(x,b,y,(I)=>{M.emit("connection",I,x)})});try{let x=await EJ(O,v);return{url:`ws://127.0.0.1:${x}${v3}`,port:x,sendStatus:C,close:async()=>{U=!0;for(let b of Q.values())clearTimeout(b);Q.clear();for(let b of M.clients){let y=b;if(y.idleTimer)clearTimeout(y.idleTimer);$(y),y.close()}M.close(),await K9(O).catch(()=>{return})}}}catch(x){if(M.close(),await K9(O).catch(()=>{return}),x?.code==="EADDRINUSE")continue;throw x}}throw Error(`No free IdeaWave CLI bridge port found in ${Z[0]}-${Z.at(-1)}`)}import XX from"node:fs/promises";import h3 from"node:os";import ZX from"node:path";function B9(){return`cfg_${crypto.randomUUID().replace(/-/g,"").slice(0,16)}`}async function gJ(){let[X,Z]=await Promise.all([F0(),x6()]),W=X.globalDefaultConfigId?X.runtimes.find((Q)=>Q.id===X.globalDefaultConfigId)??null:null;return{runtimes:X.runtimes,globalDefaultConfigId:X.globalDefaultConfigId,globalDefaultEffective:W?{runFolder:W.runFolder??h3.homedir(),modelId:W.defaultModelId??null,configValues:W.defaultConfigValues??{}}:null,knownAdapters:Q1().map((Q)=>({id:Q.id,displayName:Q.displayName})),readiness:Z}}async function mJ(X){try{let Z=await k0({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 h0)return{resolved:null};throw Z}}async function _J(X){return q0((Z)=>{let W=Z.runtimes.find((z)=>z.kind==="registered"&&z.adapterId===X.adapterId);if(W)return W;let Q=Q1().find((z)=>z.id===X.adapterId);if(!Q)throw Error(`Unknown adapterId: ${X.adapterId}`);let Y={id:B9(),kind:"registered",adapterId:X.adapterId,displayName:Q.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null};return Z.runtimes.push(Y),Y})}async function kJ(X){return q0((Z)=>{let W={id:B9(),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 SJ(X){await q0((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 AJ(X){await q0((Z)=>{let W=Z.runtimes.find((Q)=>Q.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 IJ(X){X.boardId,await q0((Z)=>{if(X.runtimeConfigId===null){delete Z.cardOverrides[X.cardId];return}if(!Z.runtimes.some((Y)=>Y.id===X.runtimeConfigId))throw Error(`Runtime config not found: ${X.runtimeConfigId}`);let Q=Z.cardOverrides[X.cardId];Z.cardOverrides[X.cardId]={runtimeConfigId:X.runtimeConfigId,runFolder:X.runFolder!==void 0?X.runFolder:Q?.runFolder??null,modelId:X.modelId!==void 0?X.modelId:Q?.modelId??null,configValues:X.configValues!==void 0?X.configValues:Q?.configValues??{}}})}async function TJ(X){let W=(await F0()).runtimes.find((j)=>j.id===X.runtimeConfigId);if(!W)throw Error(`Runtime config not found: ${X.runtimeConfigId}`);let Q=O0(W),Y=await Q.resolveSpawnConfig(W),z=W.runFolder??h3.homedir();try{let j=await V8({spawn:{...Y,cwd:z},modelId:X.modelId??W.defaultModelId??null,configValues:X.configValues??W.defaultConfigValues??{}}),F=E2({adapterId:Q.id,models:j.models,currentModelId:j.currentModelId}),L=new Date().toISOString();return await q0((U)=>{let w=U.runtimes.find((P)=>P.id===X.runtimeConfigId);if(w)w.discoveredModels=F,w.discoveredConfigOptions=j.configOptions,w.discoveredAt=L}),{ok:!0,models:F,configOptions:j.configOptions,currentModelId:j.currentModelId}}catch(j){if(j instanceof Z1)throw Error(`${j.message}${Q.authHint?` ${Q.authHint}`:""}`);if(j instanceof u||j instanceof x0)throw Error(j.message);throw j}}async function lJ(X){let Z=h3.homedir(),W=X.path?.trim()?X.path.trim():Z,Q=ZX.resolve(W),Y=!0;try{if(!(await XX.stat(Q)).isDirectory())Q=ZX.dirname(Q)}catch{Y=!1,Q=Z}let z=[];try{z=(await XX.readdir(Q,{withFileTypes:!0})).filter((L)=>L.isDirectory()&&!L.name.startsWith(".")).map((L)=>({name:L.name,path:ZX.join(Q,L.name)})).sort((L,U)=>L.name.localeCompare(U.name))}catch{z=[]}let j=ZX.dirname(Q);return{path:Q,parent:j===Q?null:j,home:Z,exists:Y,entries:z}}var w9={list:gJ,getEffectiveForCard:mJ,registerRegistered:_J,registerCustom:kJ,unregister:SJ,setUserDefault:AJ,setCardOverride:IJ,refreshModels:TJ,browseFolder:lJ};var uJ=[{id:"claude-code",displayName:"Claude Code"},{id:"codex",displayName:"Codex"},{id:"copilot",displayName:"Copilot"},{id:"opencode",displayName:"OpenCode"}];function cJ(){return`cfg_${crypto.randomUUID().replace(/-/g,"").slice(0,16)}`}async function q9(){try{let X=await F0();if(X.globalDefaultConfigId){if(X.runtimes.some((W)=>W.id===X.globalDefaultConfigId))return X.globalDefaultConfigId}for(let Z of uJ){if((await O6(Z.id))?.status!=="ready")continue;let Q=null;if(await q0((Y)=>{if(Y.globalDefaultConfigId){if(Y.runtimes.some((F)=>F.id===Y.globalDefaultConfigId)){Q=Y.globalDefaultConfigId;return}}let z=Y.runtimes.find((j)=>j.kind==="registered"&&j.adapterId===Z.id);if(!z){let j={id:cJ(),kind:"registered",adapterId:Z.id,displayName:Z.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null};Y.runtimes.push(j),z=j}Y.globalDefaultConfigId=z.id,Q=z.id}),Q)return console.log(`[ideawave-cli] using agent runtime: ${Z.displayName}`),Q}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 dJ=240000,aJ=256,iJ=33554432,pJ=128,rJ=512,sJ=e8,oJ=65536;function nJ(){if(typeof crypto<"u"&&"randomUUID"in crypto)return`call_${crypto.randomUUID()}`;return`call_${Date.now()}_${Math.random().toString(16).slice(2)}`}class M3{sessions=new Map;createCallId;toolCallTimeoutMs;maxPendingDeliveries;maxPendingDeliveryBytes;maxAcceptedInboundRequests;maxCancellationTombstones;cancellationTombstoneTtlMs;terminalReservationBytes;constructor(X={}){this.createCallId=X.createCallId??nJ,this.toolCallTimeoutMs=X.toolCallTimeoutMs??dJ,this.maxPendingDeliveries=X.maxPendingDeliveries??aJ,this.maxPendingDeliveryBytes=X.maxPendingDeliveryBytes??iJ,this.maxAcceptedInboundRequests=X.maxAcceptedInboundRequests??pJ,this.maxCancellationTombstones=X.maxCancellationTombstones??rJ,this.cancellationTombstoneTtlMs=X.cancellationTombstoneTtlMs??sJ,this.terminalReservationBytes=X.terminalReservationBytes??oJ}register(X){let Z=this.sessions.get(X.frontendSessionId);if(Z){let W=Z.userId===X.userId;if(!W)return{accepted:!1,sessionResumed:!1};return this.pruneCancellationTombstones(Z),this.sessions.set(X.frontendSessionId,{frontendSessionId:X.frontendSessionId,userId:X.userId,tools:X.tools,send:X.send,pendingToolCalls:Z.pendingToolCalls,pendingDeliveries:Z.pendingDeliveries,acceptedInboundRequests:Z.acceptedInboundRequests,cancelledInboundRequests:Z.cancelledInboundRequests,cancellationOverflowUntil:Z.cancellationOverflowUntil,activeRunIds:Z.activeRunIds,activeRunCardIds:Z.activeRunCardIds}),this.replayPendingDeliveries(X.frontendSessionId),{accepted:!0,sessionResumed:W}}return this.sessions.set(X.frontendSessionId,{frontendSessionId:X.frontendSessionId,userId:X.userId,tools:X.tools,send:X.send,pendingToolCalls:new Map,pendingDeliveries:new Map,acceptedInboundRequests:new Map,cancelledInboundRequests:new Map,cancellationOverflowUntil:null,activeRunIds:new Set,activeRunCardIds:new Map}),{accepted:!0,sessionResumed:!1}}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??[]}acceptInboundRequest(X,Z){let W=this.sessions.get(X);if(!W)return"capacity";if(this.pruneCancellationTombstones(W),W.cancelledInboundRequests.has(Z))return"cancelled";if(W.acceptedInboundRequests.has(Z))return"duplicate";if(W.cancellationOverflowUntil!==null&&(Z.startsWith("run_turn:")||Z.startsWith("browser_rpc:")))return"capacity";if(W.acceptedInboundRequests.size>=this.maxAcceptedInboundRequests||W.pendingDeliveries.size+W.acceptedInboundRequests.size>=this.maxPendingDeliveries||this.pendingDeliveryBytes(W)+this.outstandingTerminalReservationBytes(W)+this.terminalReservationBytes>this.maxPendingDeliveryBytes)return"capacity";return W.acceptedInboundRequests.set(Z,{terminalReservation:!0,terminalReservationBytes:this.terminalReservationBytes}),"accepted"}cancelInboundRequest(X,Z){let W=this.sessions.get(X);if(!W)return"capacity";this.pruneCancellationTombstones(W);let Q=Date.now()+this.cancellationTombstoneTtlMs;if(W.cancelledInboundRequests.has(Z))return W.cancelledInboundRequests.set(Z,Q),"duplicate";if(W.cancelledInboundRequests.size>=this.maxCancellationTombstones)return W.cancellationOverflowUntil=Math.max(W.cancellationOverflowUntil??0,Q),"capacity";return W.cancelledInboundRequests.set(Z,Q),"accepted"}sendToSession(X,Z){let W=this.sessions.get(X);if(!W)return!1;let Q=this.toReliableMessage(Z);if(Q){let Y=this.getReliableMessageId(Q),z=Buffer.byteLength(JSON.stringify(Q),"utf8"),j=W.pendingDeliveries.get(Y),F=this.pendingDeliveryBytes(W),L=W.pendingDeliveries.size+(j?0:1),U=F-(j?.byteLength??0)+z,w=this.inboundRequestIdForTerminalDelivery(Y),P=w?W.acceptedInboundRequests.get(w):void 0,C=Boolean(P?.terminalReservation),h=[...W.acceptedInboundRequests.values()].filter((G)=>G.terminalReservation).length-(C?1:0),D=this.outstandingTerminalReservationBytes(W)-(C?P?.terminalReservationBytes??0:0);if(C&&(L+h>this.maxPendingDeliveries||U+D>this.maxPendingDeliveryBytes))Q=this.compactTerminalFailure(Q),z=Buffer.byteLength(JSON.stringify(Q),"utf8"),U=F-(j?.byteLength??0)+z;if(L+h>this.maxPendingDeliveries||U+D>this.maxPendingDeliveryBytes)return m("bridge.delivery_rejected",{frontendSessionId:X,messageId:Y,messageType:Q.type,byteLength:z,reason:"capacity"}),!1;if(W.pendingDeliveries.set(Y,{message:Q,queuedAt:Date.now(),byteLength:z}),P)P.terminalReservation=!1;return m("bridge.delivery_queued",{frontendSessionId:X,messageId:Y,messageType:Q.type,queueDepth:W.pendingDeliveries.size}),W.send(Q),!0}return W.send(Z),!0}handleDeliveryAck(X,Z){let W=this.sessions.get(X);if(!W)return;let Q=W.pendingDeliveries.get(Z);if(Q)W.pendingDeliveries.delete(Z),m("bridge.delivery_acknowledged",{frontendSessionId:X,messageId:Z,messageType:Q.message.type,elapsedMs:Date.now()-Q.queuedAt,queueDepth:W.pendingDeliveries.size});let Y=this.inboundRequestIdForTerminalDelivery(Z);if(Y)W.acceptedInboundRequests.delete(Y)}callTool(X,Z,W,Q,Y,z,j,F){if(!X)return Promise.reject(Error("MCP tool call is missing a frontend session id"));let L=this.sessions.get(X);if(!L)return Promise.reject(Error(`Frontend session ${X} is not connected`));let U=this.createCallId();return new Promise((w,P)=>{let C=Q??(Y?this.getActiveRunIdForCard(L,Y):this.getSoleActiveRunId(L)),h=Y??(C?L.activeRunCardIds.get(C):void 0),D=Date.now(),G=setTimeout(()=>{L.pendingToolCalls.delete(U),L.pendingDeliveries.delete(U),m("tool_queue.timeout",{frontendSessionId:X,runId:C,cardId:h,callId:U,toolName:Z,elapsedMs:Date.now()-D,queueDepth:L.pendingToolCalls.size}),P(Error(`Tool "${Z}" timed out waiting for the frontend`))},this.toolCallTimeoutMs);if(L.pendingToolCalls.set(U,{resolve:w,reject:P,timer:G,name:Z,runId:C??null,cardId:h??null,startedAt:D}),m("tool_queue.forwarded_to_browser",{frontendSessionId:X,runId:C,cardId:h,callId:U,toolName:Z,queueDepth:L.pendingToolCalls.size}),!this.sendToSession(X,{type:"tool_call",callId:U,messageId:U,name:Z,args:W,...C?{runId:C}:{},...h?{cardId:h}:{},...z?{executionTarget:z}:{},...j?{ideateClaims:j}:{},...F?{toolSurface:F}:{}}))L.pendingToolCalls.delete(U),clearTimeout(G),P(Error("Frontend delivery capacity reached"))})}handleToolResult(X,Z){let W=this.sessions.get(X);if(!W)return;let Q=W.pendingToolCalls.get(Z.callId);if(!Q){W.pendingDeliveries.delete(Z.callId),W.send({type:"delivery_ack",messageId:Z.callId});return}W.pendingToolCalls.delete(Z.callId),W.pendingDeliveries.delete(Z.callId),clearTimeout(Q.timer),W.send({type:"delivery_ack",messageId:Z.callId});let Y=Z.ok?"":Z.error??Z.result?.content?.find(({text:F})=>typeof F==="string")?.text??"Tool execution failed",z=/network|fetch|connection|offline/i.test(Y)?"network":/timeout|timed out/i.test(Y)?"timeout":/unauthor|forbidden|permission/i.test(Y)?"authorization":/conflict|revision|lease|fence/i.test(Y)?"conflict":/invalid|missing|required|schema/i.test(Y)?"validation":"unknown";if(m("tool_queue.result_received",{frontendSessionId:X,runId:Q.runId,cardId:Q.cardId,callId:Z.callId,toolName:Q.name,elapsedMs:Date.now()-Q.startedAt,queueDepth:W.pendingToolCalls.size,ok:Z.ok,...Z.ok?{}:{errorCategory:z}}),Z.ok){Q.resolve(Z.result);return}let j=Z.result;if(j&&typeof j==="object"&&Array.isArray(j.content)){Q.resolve({...j,isError:!0});return}Q.reject(Error(Z.error??"Tool execution failed"))}markRunActive(X,Z,W){let Q=this.sessions.get(X);if(!Q)return;if(Q.activeRunIds.add(Z),W)Q.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),m("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()}replayPendingDeliveries(X){let Z=this.sessions.get(X);if(!Z)return;for(let[W,Q]of Z.pendingDeliveries)m("bridge.delivery_replayed",{frontendSessionId:X,messageId:W,messageType:Q.message.type,elapsedMs:Date.now()-Q.queuedAt,queueDepth:Z.pendingDeliveries.size}),Z.send(Q.message)}pruneCancellationTombstones(X){let Z=Date.now();for(let[W,Q]of X.cancelledInboundRequests)if(Q<=Z)X.cancelledInboundRequests.delete(W);if(X.cancellationOverflowUntil!==null&&X.cancellationOverflowUntil<=Z)X.cancellationOverflowUntil=null}pendingDeliveryBytes(X){let Z=0;for(let W of X.pendingDeliveries.values())Z+=W.byteLength;return Z}outstandingTerminalReservationBytes(X){let Z=0;for(let W of X.acceptedInboundRequests.values())if(W.terminalReservation)Z+=W.terminalReservationBytes;return Z}compactTerminalFailure(X){switch(X.type){case"run_settled":return{...X,result:{assistantContent:"",model:null,latencyMs:X.result.latencyMs,errorText:"CLI terminal response exceeded the reliable bridge limit. Continue the paused run after reconnecting.",partialText:null}};case"runtime_rpc_result":return{...X,ok:!1,error:"CLI terminal response exceeded the reliable bridge limit. Continue the paused run after reconnecting.",result:void 0};case"browser_rpc_result":return{...X,ok:!1,error:"CLI terminal response exceeded the reliable bridge limit. Continue the paused run after reconnecting.",result:void 0};case"tool_call":return X}}inboundRequestIdForTerminalDelivery(X){if(X.startsWith("run_settled:"))return`run_turn:${X.slice(12)}`;if(X.startsWith("runtime_rpc_result:"))return`runtime_rpc:${X.slice(19)}`;if(X.startsWith("browser_rpc_result:"))return`browser_rpc:${X.slice(19)}`;return null}toReliableMessage(X){switch(X.type){case"tool_call":return{...X,messageId:X.messageId??X.callId};case"run_settled":return{...X,messageId:X.messageId??`run_settled:${X.runId}`};case"runtime_rpc_result":return{...X,messageId:X.messageId??`runtime_rpc_result:${X.requestId}`};case"browser_rpc_result":return{...X,messageId:X.messageId??`browser_rpc_result:${X.requestId}`};default:return null}}getReliableMessageId(X){if(!X.messageId)throw Error(`Reliable relay message ${X.type} is missing messageId`);return X.messageId}getSoleActiveRunId(X){return X.activeRunIds.size===1?X.activeRunIds.values().next().value:void 0}getActiveRunIdForCard(X,Z){let W=[...X.activeRunCardIds.entries()].filter(([Q,Y])=>X.activeRunIds.has(Q)&&Y===Z).map(([Q])=>Q);return W.length===1?W[0]:void 0}}function x9(){return"0.0.103".trim()?"0.0.103":"dev"}var tJ=process.argv.slice(2),D3=Y9(tJ,process.env);if(D3.allowRailwayPrPreviews)process.env[p1]="1";var T0=D3.cliArgs[0],{browserKitEnabled:s1,captureEngineEnabled:eJ}=D3;if(T0==="--help"||T0==="-h"||T0==="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(T0==="--version"||T0==="-v"||T0==="version")console.log(x9()),process.exit(0);if(T0)console.error(`Unknown command: ${T0}`),console.error("Run `ideawave --help` for usage."),process.exit(1);var o1=new M3,e0=null,XY=s1?{phase:"ready",message:"Local browser-kit proxy is ready"}:{phase:"idle"},B1=new G2,t0=new Map;function P9(X,Z){return`${X}:${Z}`}function I0(X,Z){let W=o1.sendToSession(X,Z);if(!W)m("bridge.delivery_rejected_by_registry",{frontendSessionId:X,messageType:Z.type});return W}async function ZY(X,Z){try{let W=w9[Z.method],Q=await W(Z.params);I0(X,{type:"runtime_rpc_result",requestId:Z.requestId,ok:!0,result:Q})}catch(W){I0(X,{type:"runtime_rpc_result",requestId:Z.requestId,ok:!1,error:W instanceof Error?W.message:String(W)})}}var n1=!1,r1=null;async function N3(){if(n1)return;if(r1)return r1;return r1=(async()=>{try{let X=await D8(o1);A3({...X,requestedPort:X.port}),console.log(`[ideawave-cli] MCP endpoint for the agent: ${X.url}`);try{await X6({onStatusChange:(Z)=>{if(R6(),e0?.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 q9(),n1=!0,console.log("[ideawave-cli] ready — agent runs will drive the board."),e0?.sendStatus()}catch(X){console.error("[ideawave-cli] failed to start agent host:",X),e0?.sendStatus(void 0,X instanceof Error?X.message:String(X))}finally{r1=null}})(),r1}if(process.env.APP_ENV!=="development"){let X=await F9();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(eJ)p8().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"}`)});e0=await L9({registry:o1,runtime:null,mcpReady:()=>n1,capabilities:u8(s1),cliVersion:x9(),browserRuntimeStatus:()=>XY,onToolMetadata:(X)=>{console.log(`[ideawave-cli] session ${X} advertised ${o1.getMetadata(X).length} tools`),N3()},onRunTurn:(X,Z)=>{console.log(`[ideawave-cli] running agent turn for card ${Z.cardId} (session ${X})`),(async()=>{if(await N3(),!n1){I0(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 m8(Z,(W)=>I0(X,W))})().catch(()=>{return}).finally(()=>o1.markRunSettled(X,Z.runId))},onCancelRun:(X,Z)=>{U3(Z)},onRuntimeRpc:(X,Z)=>{ZY(X,Z)},onBrowserRpc:(X,Z,W)=>{if(!s1){I0(X,{type:"browser_rpc_result",requestId:W.requestId,ok:!1,error:"The development browser-kit proxy is not enabled"});return}let Q=P9(X,W.requestId);t0.get(Q)?.abort();let Y=new AbortController;t0.set(Q,Y),B1.handleRpc(X,Z,W,{signal:Y.signal}).then((z)=>{I0(X,{type:"browser_rpc_result",requestId:W.requestId,ok:!0,result:z})},(z)=>{I0(X,{type:"browser_rpc_result",requestId:W.requestId,ok:!1,error:IX(z)})}).finally(()=>{if(t0.get(Q)===Y)t0.delete(Q)})},onBrowserRpcCancel:(X,Z)=>{t0.get(P9(X,Z.requestId))?.abort()},onHttpRequest:(X,Z)=>s1?B1.handleHttpRequest(X,Z):!1,onHttpUpgrade:(X,Z,W)=>s1?B1.handleUpgrade(X,Z,W):!1,onWarmupRun:(X,Z,W)=>{(async()=>{if(await N3(),!n1)return{status:"retryable",error:"agent host is not ready"};if(Z.ideate)return B3({boardId:Z.boardId,userId:W,frontendSessionId:X,surface:Z.ideate.surface,runtimeConfigId:Z.ideate.runtimeConfigId,modelId:Z.ideate.modelId});return _8({cardId:Z.cardId,boardId:Z.boardId,userId:W,frontendSessionId:X})})().then((Q)=>{if(!Z.warmupId)return;I0(X,{type:"warmup_result",warmupId:Z.warmupId,cardId:Z.cardId,...Q})})},onDisconnect:(X,Z)=>{for(let[W,Q]of t0){if(!W.startsWith(`${X}:`))continue;Q.abort(),t0.delete(W)}B1.closeFrontendSession(X),G8(X);for(let W of Z)U3(W);m("bridge.frontend_disconnected",{frontendSessionId:X,activeRuns:Z.length}),g3(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`)}});B1.setPort(e0.port);console.log(`[ideawave-cli] browser bridge listening on ${e0.url}`);console.log("[ideawave-cli] waiting for ideawave.app browser sessions…");var b9=!1;for(let X of["SIGINT","SIGTERM"])process.once(X,()=>{if(b9)return;b9=!0,E8(),(async()=>{await B1.close(),await o8(),await e0?.close().catch(()=>{return}),process.exit(0)})()});