@midscene/android-playground 0.25.2-beta-20250806084312.0 → 0.25.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -720,7 +720,7 @@ finished(content='xxx') # Use escape characters \\', \\", and \\n in content par
720
720
  - Write a small plan and finally summarize your next action (with its target element) in one sentence in \`Thought\` part.
721
721
 
722
722
  ## User Instruction
723
- `+n,o=await Z([{role:"user",content:a},...r],1),s=function(t){let r=/<bbox>(\d+)\s+(\d+)\s+(\d+)\s+(\d+)<\/bbox>/g;function n(t,r,n,i,a){let o=Number.parseInt(r,10),s=Number.parseInt(n,10),l=Number.parseInt(i,10),u=Number.parseInt(a,10);return`(${Math.floor((o+l)/2)},${Math.floor((s+u)/2)})`}return t.replace(/\[EOS\]/g,"").replace(r,n).trim()}(o.content),u=l.uiTarsModelVersion.call(void 0),{parsed:c}=es.actionParser.call(void 0,{prediction:s,factor:[1e3,1e3],screenContext:{width:i.width,height:i.height},modelVer:u||void 0});el("modelVer",u,"parsed",JSON.stringify(c));let h=[];if(c.forEach(t=>{if("click"===t.action_type){d.assert.call(void 0,t.action_inputs.start_box,"start_box is required");let r=ed(t.action_inputs.start_box,i);h.push({type:"Locate",param:{},locate:{prompt:t.thought||"",bbox:eu({x:r[0],y:r[1]},i.width,i.height)}}),h.push({type:"Tap",locate:{prompt:t.thought||"",bbox:eu({x:r[0],y:r[1]},i.width,i.height)},param:t.thought||""})}else if("drag"===t.action_type){d.assert.call(void 0,t.action_inputs.start_box,"start_box is required"),d.assert.call(void 0,t.action_inputs.end_box,"end_box is required");let r=ed(t.action_inputs.start_box,i),n=ed(t.action_inputs.end_box,i);h.push({type:"Drag",param:{start_box:{x:r[0],y:r[1]},end_box:{x:n[0],y:n[1]}},locate:null,thought:t.thought||""})}else if("type"===t.action_type)h.push({type:"Input",param:{value:t.action_inputs.content},locate:null,thought:t.thought||""});else if("scroll"===t.action_type)h.push({type:"Scroll",param:{direction:t.action_inputs.direction},locate:null,thought:t.thought||""});else if("finished"===t.action_type)h.push({type:"Finished",param:{},locate:null,thought:t.thought||""});else if("hotkey"===t.action_type)if(t.action_inputs.key){let r=eo.transformHotkeyInput.call(void 0,t.action_inputs.key);h.push({type:"KeyboardPress",param:{value:r},locate:null,thought:t.thought||""})}else import_console_browserify.default.warn("No key found in action: hotkey. Will not perform action.");else if("wait"===t.action_type)h.push({type:"Sleep",param:{timeMs:1e3},locate:null,thought:t.thought||""});else if("androidBackButton"===t.action_type)h.push({type:"AndroidBackButton",param:{},locate:null,thought:t.thought||""});else if("androidHomeButton"===t.action_type)h.push({type:"AndroidHomeButton",param:{},locate:null,thought:t.thought||""});else if("androidRecentAppsButton"===t.action_type)h.push({type:"AndroidRecentAppsButton",param:{}});else if("androidLongPress"===t.action_type){d.assert.call(void 0,t.action_inputs.start_coords,"start_coords is required for androidLongPress");let r=t.action_inputs.start_coords;h.push({type:"AndroidLongPress",param:{x:r[0],y:r[1],duration:1e3},locate:null,thought:t.thought||""})}else if("androidPull"===t.action_type){let r=t.action_inputs.direction||"down",n=t.action_inputs.start_coords?{x:t.action_inputs.start_coords[0],y:t.action_inputs.start_coords[1]}:void 0;h.push({type:"AndroidPull",param:{direction:r,startPoint:n,distance:t.action_inputs.distance,duration:t.action_inputs.duration||500},locate:null,thought:t.thought||""})}}),0===h.length)throw Error(`No actions found, response: ${o.content}`,{cause:{prediction:o.content,parsed:c}});return{actions:h,actionsFromModel:c,action_summary:o.content.replace(/Reflection:[\s\S]*?(?=Action_Summary:|Action:|$)/g,"").trim(),usage:o.usage,rawResponse:JSON.stringify(o.content,void 0,2)}},t.resizeImageForUiTars=async function(t,r){if("vlm-ui-tars"===l.vlLocateMode.call(void 0)&&l.uiTarsModelVersion.call(void 0)===l.UITarsModelVersion.V1_5){el("ui-tars-v1.5, will check image size",r);let n=r.width*r.height,i=0xc40000;if(n>0xc40000){let a=Math.sqrt(i/n),o=Math.floor(r.width*a),s=Math.floor(r.height*a);return el("resize image for ui-tars, new width: %s, new height: %s",o,s),await y.resizeImgBase64.call(void 0,t,{width:o,height:s})}}return t}}}),require_ai_model=__commonJS({"../core/dist/lib/ai-model.js"(t){init_globals(),Object.defineProperty(t,"__esModule",{value:!0});var r=require_chunk_I5LBWOQA();t.AIActionType=r.AIActionType,t.AiAssert=r.AiAssert,t.AiExtractElementInfo=r.AiExtractElementInfo,t.AiLocateElement=r.AiLocateElement,t.AiLocateSection=r.AiLocateSection,t.adaptBboxToRect=r.adaptBboxToRect,t.callAi=r.call,t.callAiFn=r.callAiFn,t.callAiFnWithStringResponse=r.callAiFnWithStringResponse,t.callToGetJSONObject=r.callToGetJSONObject,t.describeUserPage=r.describeUserPage,t.elementByPositionWithElementInfo=r.elementByPositionWithElementInfo,t.generatePlaywrightTest=r.generatePlaywrightTest,t.generatePlaywrightTestStream=r.generatePlaywrightTestStream,t.generateYamlTest=r.generateYamlTest,t.generateYamlTestStream=r.generateYamlTestStream,t.plan=r.plan,t.resizeImageForUiTars=r.resizeImageForUiTars,t.systemPromptToLocateElement=r.systemPromptToLocateElement,t.vlmPlanning=r.vlmPlanning}}),require_child_process=__commonJS({"../../node_modules/.pnpm/@modern-js+plugin-module-node-polyfill@2.60.6_@modern-js+module-tools@2.60.6_typescript@5.8.3_/node_modules/@modern-js/plugin-module-node-polyfill/dist/mock/child_process.js"(t,r){init_globals(),r.exports={}}}),require_common6=__commonJS({"../shared/dist/lib/common.js"(t,r){let n,i,a;init_globals();var o,s=Object.create,l=Object.defineProperty,u=Object.getOwnPropertyDescriptor,d=Object.getOwnPropertyNames,c=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty,f=(t,r,n,i)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let a of d(r))h.call(t,a)||a===n||l(t,a,{get:()=>r[a],enumerable:!(i=u(r,a))||i.enumerable});return t},p={};((t,r)=>{for(var n in r)l(t,n,{get:r[n],enumerable:!0})})(p,{defaultRunDirName:()=>es,getMidsceneRunBaseDir:()=>eu,getMidsceneRunDir:()=>el,getMidsceneRunSubDir:()=>ed}),o=p,r.exports=f(l({},"__esModule",{value:!0}),o);var m=require_fs(),g=require_browser3(),b=(a=null!=(n=require_path_browserify())?s(c(n)):{},f(!i&&n&&n.__esModule?a:l(a,"default",{value:n,enumerable:!0}),n)),y="MIDSCENE_OPENAI_INIT_CONFIG_JSON",_="MIDSCENE_MODEL_NAME",v="MIDSCENE_LANGSMITH_DEBUG",A="MIDSCENE_DEBUG_AI_PROFILE",w="MIDSCENE_DEBUG_AI_RESPONSE",x="MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG",E="MIDSCENE_DEBUG_MODE",S="MIDSCENE_MCP_USE_PUPPETEER_MODE",C="MIDSCENE_MCP_ANDROID_MODE",I="MIDSCENE_FORCE_DEEP_THINK",T="MIDSCENE_OPENAI_SOCKS_PROXY",k="MIDSCENE_OPENAI_HTTP_PROXY",P="OPENAI_API_KEY",R="OPENAI_BASE_URL",O="OPENAI_MAX_TOKENS",M="MIDSCENE_ADB_PATH",j="MIDSCENE_ADB_REMOTE_HOST",N="MIDSCENE_ADB_REMOTE_PORT",B="MIDSCENE_ANDROID_IME_STRATEGY",L="MIDSCENE_CACHE",D="MIDSCENE_USE_VLM_UI_TARS",U="MIDSCENE_USE_QWEN_VL",F="MIDSCENE_USE_DOUBAO_VISION",z="MIDSCENE_USE_GEMINI",G="MIDSCENE_USE_VL_MODEL",H="MATCH_BY_POSITION",q="MIDSCENE_REPORT_TAG_NAME",V="MIDSCENE_REPLANNING_CYCLE_LIMIT",W="MIDSCENE_PREFERRED_LANGUAGE",$="MIDSCENE_USE_AZURE_OPENAI",K="MIDSCENE_AZURE_OPENAI_SCOPE",Z="MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON",X="MIDSCENE_CACHE_MAX_FILENAME_LENGTH",Y="AZURE_OPENAI_ENDPOINT",J="AZURE_OPENAI_KEY",Q="AZURE_OPENAI_API_VERSION",ee="AZURE_OPENAI_DEPLOYMENT",et="MIDSCENE_USE_ANTHROPIC_SDK",er="ANTHROPIC_API_KEY",en="MIDSCENE_RUN_DIR",ei="OPENAI_USE_AZURE",ea=()=>(globalThis.midsceneGlobalConfig||(globalThis.midsceneGlobalConfig={[C]:import_browser.default.env[C]||void 0,[y]:import_browser.default.env[y]||void 0,[_]:import_browser.default.env[_]||void 0,[E]:import_browser.default.env[E]||void 0,[I]:import_browser.default.env[I]||void 0,[v]:import_browser.default.env[v]||void 0,[A]:import_browser.default.env[A]||void 0,[w]:import_browser.default.env[w]||void 0,[x]:import_browser.default.env[x]||void 0,[P]:import_browser.default.env[P]||void 0,[R]:import_browser.default.env[R]||void 0,[O]:import_browser.default.env[O]||void 0,[ei]:import_browser.default.env[ei]||void 0,[M]:import_browser.default.env[M]||void 0,[j]:import_browser.default.env[j]||void 0,[N]:import_browser.default.env[N]||void 0,[B]:import_browser.default.env[B]||void 0,[L]:import_browser.default.env[L]||void 0,[H]:import_browser.default.env[H]||void 0,[q]:import_browser.default.env[q]||void 0,[T]:import_browser.default.env[T]||void 0,[k]:import_browser.default.env[k]||void 0,[$]:import_browser.default.env[$]||void 0,[K]:import_browser.default.env[K]||void 0,[Z]:import_browser.default.env[Z]||void 0,[et]:import_browser.default.env[et]||void 0,[D]:import_browser.default.env[D]||void 0,[U]:import_browser.default.env[U]||void 0,[F]:import_browser.default.env[F]||void 0,[z]:import_browser.default.env[z]||void 0,[G]:import_browser.default.env[G]||void 0,[er]:import_browser.default.env[er]||void 0,[Y]:import_browser.default.env[Y]||void 0,[J]:import_browser.default.env[J]||void 0,[Q]:import_browser.default.env[Q]||void 0,[ee]:import_browser.default.env[ee]||void 0,[S]:import_browser.default.env[S]||void 0,[en]:import_browser.default.env[en]||void 0,[W]:import_browser.default.env[W]||void 0,[V]:import_browser.default.env[V]||void 0,[X]:import_browser.default.env[X]||void 0}),globalThis.midsceneGlobalConfig),eo=(require_sha2562(),void 0!==import_browser.default&&import_browser.default.versions?.node),es="midscene_run",el=()=>eo?(t=>{if(t===H)throw Error("MATCH_BY_POSITION is deprecated, use MIDSCENE_USE_VL_MODEL instead");let r=ea()[t];return"string"==typeof r?r.trim():r})(en)||es:"",eu=()=>{if(!eo)return"";let t=b.default.resolve(import_browser.default.cwd(),el());if(!(0,m.existsSync)(t))try{(0,m.mkdirSync)(t,{recursive:!0})}catch(r){t=b.default.join((0,g.tmpdir)(),es),(0,m.mkdirSync)(t,{recursive:!0})}return t},ed=t=>{if(!eo)return"";let r=eu(),n=b.default.join(r,t);return(0,m.existsSync)(n)||(0,m.mkdirSync)(n,{recursive:!0}),n}}}),require_fs2=__commonJS({"../shared/dist/lib/fs.js"(t,r){init_globals();var n,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,s=Object.prototype.hasOwnProperty,l={};((t,r)=>{for(var n in r)i(t,n,{get:r[n],enumerable:!0})})(l,{findNearestPackageJson:()=>m,getElementInfosScriptContent:()=>g,getExtraReturnLogic:()=>b,getRunningPkgInfo:()=>p}),n=l,r.exports=((t,r,n,l)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let u of o(r))s.call(t,u)||u===n||i(t,u,{get:()=>r[u],enumerable:!(l=a(r,u))||l.enumerable});return t})(i({},"__esModule",{value:!0}),n);var u=require_fs(),d=require_path_browserify(),c=(require_sha2562(),"undefined"!=typeof window),h="undefined"!=typeof WorkerGlobalScope,f=(void 0!==import_browser.default&&import_browser.default.versions,{});function p(t){if(c||h)return null;let r=t||import_browser.default.cwd();if(f[r])return f[r];let n=m(r),i=n?(0,d.join)(n,"package.json"):null;if(n&&i){let{name:t,version:a}=JSON.parse((0,u.readFileSync)(i,"utf-8"));return f[r]={name:t||"midscene-unknown-package-name",version:a||"0.0.0",dir:n},f[r]}return{name:"midscene-unknown-package-name",version:"0.0.0",dir:r}}function m(t){let r=(0,d.join)(t,"package.json");if((0,u.existsSync)(r))return t;let n=(0,d.dirname)(t);return n===t?null:m(n)}function g(){return'"use strict";\nvar midscene_element_inspector = (() => {\n var __create = Object.create;\n var __defProp = Object.defineProperty;\n var __defProps = Object.defineProperties;\n var __getOwnPropDesc = Object.getOwnPropertyDescriptor;\n var __getOwnPropDescs = Object.getOwnPropertyDescriptors;\n var __getOwnPropNames = Object.getOwnPropertyNames;\n var __getOwnPropSymbols = Object.getOwnPropertySymbols;\n var __getProtoOf = Object.getPrototypeOf;\n var __hasOwnProp = Object.prototype.hasOwnProperty;\n var __propIsEnum = Object.prototype.propertyIsEnumerable;\n var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\n var __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n };\n var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\n var __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n };\n var __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n };\n var __copyProps = (to, from, except, desc) => {\n if (from && typeof from === "object" || typeof from === "function") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n };\n var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. "__esModule" has not been set), then set\n // "default" to the CommonJS "module.exports" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,\n mod\n ));\n var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);\n\n // resolve-false:/empty-stub\n var require_empty_stub = __commonJS({\n "resolve-false:/empty-stub"(exports, module) {\n "use strict";\n module.exports = {};\n }\n });\n\n // ../../node_modules/.pnpm/js-sha256@0.11.0/node_modules/js-sha256/src/sha256.js\n var require_sha256 = __commonJS({\n "../../node_modules/.pnpm/js-sha256@0.11.0/node_modules/js-sha256/src/sha256.js"(exports, module) {\n "use strict";\n (function() {\n "use strict";\n var ERROR = "input is invalid type";\n var WINDOW = typeof window === "object";\n var root = WINDOW ? window : {};\n if (root.JS_SHA256_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === "object";\n var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === "object" && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && typeof module === "object" && module.exports;\n var AMD = typeof define === "function" && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== "undefined";\n var HEX_CHARS = "0123456789abcdef".split("");\n var EXTRA = [-2147483648, 8388608, 32768, 128];\n var SHIFT = [24, 16, 8, 0];\n var K = [\n 1116352408,\n 1899447441,\n 3049323471,\n 3921009573,\n 961987163,\n 1508970993,\n 2453635748,\n 2870763221,\n 3624381080,\n 310598401,\n 607225278,\n 1426881987,\n 1925078388,\n 2162078206,\n 2614888103,\n 3248222580,\n 3835390401,\n 4022224774,\n 264347078,\n 604807628,\n 770255983,\n 1249150122,\n 1555081692,\n 1996064986,\n 2554220882,\n 2821834349,\n 2952996808,\n 3210313671,\n 3336571891,\n 3584528711,\n 113926993,\n 338241895,\n 666307205,\n 773529912,\n 1294757372,\n 1396182291,\n 1695183700,\n 1986661051,\n 2177026350,\n 2456956037,\n 2730485921,\n 2820302411,\n 3259730800,\n 3345764771,\n 3516065817,\n 3600352804,\n 4094571909,\n 275423344,\n 430227734,\n 506948616,\n 659060556,\n 883997877,\n 958139571,\n 1322822218,\n 1537002063,\n 1747873779,\n 1955562222,\n 2024104815,\n 2227730452,\n 2361852424,\n 2428436474,\n 2756734187,\n 3204031479,\n 3329325298\n ];\n var OUTPUT_TYPES = ["hex", "array", "digest", "arrayBuffer"];\n var blocks = [];\n if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function(obj) {\n return Object.prototype.toString.call(obj) === "[object Array]";\n };\n }\n if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function(obj) {\n return typeof obj === "object" && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n var createOutputMethod = function(outputType, is224) {\n return function(message) {\n return new Sha256(is224, true).update(message)[outputType]();\n };\n };\n var createMethod = function(is224) {\n var method = createOutputMethod("hex", is224);\n if (NODE_JS) {\n method = nodeWrap(method, is224);\n }\n method.create = function() {\n return new Sha256(is224);\n };\n method.update = function(message) {\n return method.create().update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createOutputMethod(type, is224);\n }\n return method;\n };\n var nodeWrap = function(method, is224) {\n var crypto = require_empty_stub();\n var Buffer2 = require_empty_stub().Buffer;\n var algorithm = is224 ? "sha224" : "sha256";\n var bufferFrom;\n if (Buffer2.from && !root.JS_SHA256_NO_BUFFER_FROM) {\n bufferFrom = Buffer2.from;\n } else {\n bufferFrom = function(message) {\n return new Buffer2(message);\n };\n }\n var nodeMethod = function(message) {\n if (typeof message === "string") {\n return crypto.createHash(algorithm).update(message, "utf8").digest("hex");\n } else {\n if (message === null || message === void 0) {\n throw new Error(ERROR);\n } else if (message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n }\n }\n if (Array.isArray(message) || ArrayBuffer.isView(message) || message.constructor === Buffer2) {\n return crypto.createHash(algorithm).update(bufferFrom(message)).digest("hex");\n } else {\n return method(message);\n }\n };\n return nodeMethod;\n };\n var createHmacOutputMethod = function(outputType, is224) {\n return function(key, message) {\n return new HmacSha256(key, is224, true).update(message)[outputType]();\n };\n };\n var createHmacMethod = function(is224) {\n var method = createHmacOutputMethod("hex", is224);\n method.create = function(key) {\n return new HmacSha256(key, is224);\n };\n method.update = function(key, message) {\n return method.create(key).update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createHmacOutputMethod(type, is224);\n }\n return method;\n };\n function Sha256(is224, sharedMemory) {\n if (sharedMemory) {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n this.blocks = blocks;\n } else {\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n if (is224) {\n this.h0 = 3238371032;\n this.h1 = 914150663;\n this.h2 = 812702999;\n this.h3 = 4144912697;\n this.h4 = 4290775857;\n this.h5 = 1750603025;\n this.h6 = 1694076839;\n this.h7 = 3204075428;\n } else {\n this.h0 = 1779033703;\n this.h1 = 3144134277;\n this.h2 = 1013904242;\n this.h3 = 2773480762;\n this.h4 = 1359893119;\n this.h5 = 2600822924;\n this.h6 = 528734635;\n this.h7 = 1541459225;\n }\n this.block = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n this.is224 = is224;\n }\n Sha256.prototype.update = function(message) {\n if (this.finalized) {\n return;\n }\n var notString, type = typeof message;\n if (type !== "string") {\n if (type === "object") {\n if (message === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n notString = true;\n }\n var code, index = 0, i, length = message.length, blocks2 = this.blocks;\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks2[0] = this.block;\n this.block = blocks2[16] = blocks2[1] = blocks2[2] = blocks2[3] = blocks2[4] = blocks2[5] = blocks2[6] = blocks2[7] = blocks2[8] = blocks2[9] = blocks2[10] = blocks2[11] = blocks2[12] = blocks2[13] = blocks2[14] = blocks2[15] = 0;\n }\n if (notString) {\n for (i = this.start; index < length && i < 64; ++index) {\n blocks2[i >>> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 128) {\n blocks2[i >>> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 2048) {\n blocks2[i >>> 2] |= (192 | code >>> 6) << SHIFT[i++ & 3];\n blocks2[i >>> 2] |= (128 | code & 63) << SHIFT[i++ & 3];\n } else if (code < 55296 || code >= 57344) {\n blocks2[i >>> 2] |= (224 | code >>> 12) << SHIFT[i++ & 3];\n blocks2[i >>> 2] |= (128 | code >>> 6 & 63) << SHIFT[i++ & 3];\n blocks2[i >>> 2] |= (128 | code & 63) << SHIFT[i++ & 3];\n } else {\n code = 65536 + ((code & 1023) << 10 | message.charCodeAt(++index) & 1023);\n blocks2[i >>> 2] |= (240 | code >>> 18) << SHIFT[i++ & 3];\n blocks2[i >>> 2] |= (128 | code >>> 12 & 63) << SHIFT[i++ & 3];\n blocks2[i >>> 2] |= (128 | code >>> 6 & 63) << SHIFT[i++ & 3];\n blocks2[i >>> 2] |= (128 | code & 63) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.block = blocks2[16];\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n };\n Sha256.prototype.finalize = function() {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks2 = this.blocks, i = this.lastByteIndex;\n blocks2[16] = this.block;\n blocks2[i >>> 2] |= EXTRA[i & 3];\n this.block = blocks2[16];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks2[0] = this.block;\n blocks2[16] = blocks2[1] = blocks2[2] = blocks2[3] = blocks2[4] = blocks2[5] = blocks2[6] = blocks2[7] = blocks2[8] = blocks2[9] = blocks2[10] = blocks2[11] = blocks2[12] = blocks2[13] = blocks2[14] = blocks2[15] = 0;\n }\n blocks2[14] = this.hBytes << 3 | this.bytes >>> 29;\n blocks2[15] = this.bytes << 3;\n this.hash();\n };\n Sha256.prototype.hash = function() {\n var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6, h = this.h7, blocks2 = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc;\n for (j = 16; j < 64; ++j) {\n t1 = blocks2[j - 15];\n s0 = (t1 >>> 7 | t1 << 25) ^ (t1 >>> 18 | t1 << 14) ^ t1 >>> 3;\n t1 = blocks2[j - 2];\n s1 = (t1 >>> 17 | t1 << 15) ^ (t1 >>> 19 | t1 << 13) ^ t1 >>> 10;\n blocks2[j] = blocks2[j - 16] + s0 + blocks2[j - 7] + s1 << 0;\n }\n bc = b & c;\n for (j = 0; j < 64; j += 4) {\n if (this.first) {\n if (this.is224) {\n ab = 300032;\n t1 = blocks2[0] - 1413257819;\n h = t1 - 150054599 << 0;\n d = t1 + 24177077 << 0;\n } else {\n ab = 704751109;\n t1 = blocks2[0] - 210244248;\n h = t1 - 1521486534 << 0;\n d = t1 + 143694565 << 0;\n }\n this.first = false;\n } else {\n s0 = (a >>> 2 | a << 30) ^ (a >>> 13 | a << 19) ^ (a >>> 22 | a << 10);\n s1 = (e >>> 6 | e << 26) ^ (e >>> 11 | e << 21) ^ (e >>> 25 | e << 7);\n ab = a & b;\n maj = ab ^ a & c ^ bc;\n ch = e & f ^ ~e & g;\n t1 = h + s1 + ch + K[j] + blocks2[j];\n t2 = s0 + maj;\n h = d + t1 << 0;\n d = t1 + t2 << 0;\n }\n s0 = (d >>> 2 | d << 30) ^ (d >>> 13 | d << 19) ^ (d >>> 22 | d << 10);\n s1 = (h >>> 6 | h << 26) ^ (h >>> 11 | h << 21) ^ (h >>> 25 | h << 7);\n da = d & a;\n maj = da ^ d & b ^ ab;\n ch = h & e ^ ~h & f;\n t1 = g + s1 + ch + K[j + 1] + blocks2[j + 1];\n t2 = s0 + maj;\n g = c + t1 << 0;\n c = t1 + t2 << 0;\n s0 = (c >>> 2 | c << 30) ^ (c >>> 13 | c << 19) ^ (c >>> 22 | c << 10);\n s1 = (g >>> 6 | g << 26) ^ (g >>> 11 | g << 21) ^ (g >>> 25 | g << 7);\n cd = c & d;\n maj = cd ^ c & a ^ da;\n ch = g & h ^ ~g & e;\n t1 = f + s1 + ch + K[j + 2] + blocks2[j + 2];\n t2 = s0 + maj;\n f = b + t1 << 0;\n b = t1 + t2 << 0;\n s0 = (b >>> 2 | b << 30) ^ (b >>> 13 | b << 19) ^ (b >>> 22 | b << 10);\n s1 = (f >>> 6 | f << 26) ^ (f >>> 11 | f << 21) ^ (f >>> 25 | f << 7);\n bc = b & c;\n maj = bc ^ b & d ^ cd;\n ch = f & g ^ ~f & h;\n t1 = e + s1 + ch + K[j + 3] + blocks2[j + 3];\n t2 = s0 + maj;\n e = a + t1 << 0;\n a = t1 + t2 << 0;\n this.chromeBugWorkAround = true;\n }\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n this.h4 = this.h4 + e << 0;\n this.h5 = this.h5 + f << 0;\n this.h6 = this.h6 + g << 0;\n this.h7 = this.h7 + h << 0;\n };\n Sha256.prototype.hex = function() {\n this.finalize();\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5, h6 = this.h6, h7 = this.h7;\n var hex = HEX_CHARS[h0 >>> 28 & 15] + HEX_CHARS[h0 >>> 24 & 15] + HEX_CHARS[h0 >>> 20 & 15] + HEX_CHARS[h0 >>> 16 & 15] + HEX_CHARS[h0 >>> 12 & 15] + HEX_CHARS[h0 >>> 8 & 15] + HEX_CHARS[h0 >>> 4 & 15] + HEX_CHARS[h0 & 15] + HEX_CHARS[h1 >>> 28 & 15] + HEX_CHARS[h1 >>> 24 & 15] + HEX_CHARS[h1 >>> 20 & 15] + HEX_CHARS[h1 >>> 16 & 15] + HEX_CHARS[h1 >>> 12 & 15] + HEX_CHARS[h1 >>> 8 & 15] + HEX_CHARS[h1 >>> 4 & 15] + HEX_CHARS[h1 & 15] + HEX_CHARS[h2 >>> 28 & 15] + HEX_CHARS[h2 >>> 24 & 15] + HEX_CHARS[h2 >>> 20 & 15] + HEX_CHARS[h2 >>> 16 & 15] + HEX_CHARS[h2 >>> 12 & 15] + HEX_CHARS[h2 >>> 8 & 15] + HEX_CHARS[h2 >>> 4 & 15] + HEX_CHARS[h2 & 15] + HEX_CHARS[h3 >>> 28 & 15] + HEX_CHARS[h3 >>> 24 & 15] + HEX_CHARS[h3 >>> 20 & 15] + HEX_CHARS[h3 >>> 16 & 15] + HEX_CHARS[h3 >>> 12 & 15] + HEX_CHARS[h3 >>> 8 & 15] + HEX_CHARS[h3 >>> 4 & 15] + HEX_CHARS[h3 & 15] + HEX_CHARS[h4 >>> 28 & 15] + HEX_CHARS[h4 >>> 24 & 15] + HEX_CHARS[h4 >>> 20 & 15] + HEX_CHARS[h4 >>> 16 & 15] + HEX_CHARS[h4 >>> 12 & 15] + HEX_CHARS[h4 >>> 8 & 15] + HEX_CHARS[h4 >>> 4 & 15] + HEX_CHARS[h4 & 15] + HEX_CHARS[h5 >>> 28 & 15] + HEX_CHARS[h5 >>> 24 & 15] + HEX_CHARS[h5 >>> 20 & 15] + HEX_CHARS[h5 >>> 16 & 15] + HEX_CHARS[h5 >>> 12 & 15] + HEX_CHARS[h5 >>> 8 & 15] + HEX_CHARS[h5 >>> 4 & 15] + HEX_CHARS[h5 & 15] + HEX_CHARS[h6 >>> 28 & 15] + HEX_CHARS[h6 >>> 24 & 15] + HEX_CHARS[h6 >>> 20 & 15] + HEX_CHARS[h6 >>> 16 & 15] + HEX_CHARS[h6 >>> 12 & 15] + HEX_CHARS[h6 >>> 8 & 15] + HEX_CHARS[h6 >>> 4 & 15] + HEX_CHARS[h6 & 15];\n if (!this.is224) {\n hex += HEX_CHARS[h7 >>> 28 & 15] + HEX_CHARS[h7 >>> 24 & 15] + HEX_CHARS[h7 >>> 20 & 15] + HEX_CHARS[h7 >>> 16 & 15] + HEX_CHARS[h7 >>> 12 & 15] + HEX_CHARS[h7 >>> 8 & 15] + HEX_CHARS[h7 >>> 4 & 15] + HEX_CHARS[h7 & 15];\n }\n return hex;\n };\n Sha256.prototype.toString = Sha256.prototype.hex;\n Sha256.prototype.digest = function() {\n this.finalize();\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5, h6 = this.h6, h7 = this.h7;\n var arr = [\n h0 >>> 24 & 255,\n h0 >>> 16 & 255,\n h0 >>> 8 & 255,\n h0 & 255,\n h1 >>> 24 & 255,\n h1 >>> 16 & 255,\n h1 >>> 8 & 255,\n h1 & 255,\n h2 >>> 24 & 255,\n h2 >>> 16 & 255,\n h2 >>> 8 & 255,\n h2 & 255,\n h3 >>> 24 & 255,\n h3 >>> 16 & 255,\n h3 >>> 8 & 255,\n h3 & 255,\n h4 >>> 24 & 255,\n h4 >>> 16 & 255,\n h4 >>> 8 & 255,\n h4 & 255,\n h5 >>> 24 & 255,\n h5 >>> 16 & 255,\n h5 >>> 8 & 255,\n h5 & 255,\n h6 >>> 24 & 255,\n h6 >>> 16 & 255,\n h6 >>> 8 & 255,\n h6 & 255\n ];\n if (!this.is224) {\n arr.push(h7 >>> 24 & 255, h7 >>> 16 & 255, h7 >>> 8 & 255, h7 & 255);\n }\n return arr;\n };\n Sha256.prototype.array = Sha256.prototype.digest;\n Sha256.prototype.arrayBuffer = function() {\n this.finalize();\n var buffer = new ArrayBuffer(this.is224 ? 28 : 32);\n var dataView = new DataView(buffer);\n dataView.setUint32(0, this.h0);\n dataView.setUint32(4, this.h1);\n dataView.setUint32(8, this.h2);\n dataView.setUint32(12, this.h3);\n dataView.setUint32(16, this.h4);\n dataView.setUint32(20, this.h5);\n dataView.setUint32(24, this.h6);\n if (!this.is224) {\n dataView.setUint32(28, this.h7);\n }\n return buffer;\n };\n function HmacSha256(key, is224, sharedMemory) {\n var i, type = typeof key;\n if (type === "string") {\n var bytes = [], length = key.length, index = 0, code;\n for (i = 0; i < length; ++i) {\n code = key.charCodeAt(i);\n if (code < 128) {\n bytes[index++] = code;\n } else if (code < 2048) {\n bytes[index++] = 192 | code >>> 6;\n bytes[index++] = 128 | code & 63;\n } else if (code < 55296 || code >= 57344) {\n bytes[index++] = 224 | code >>> 12;\n bytes[index++] = 128 | code >>> 6 & 63;\n bytes[index++] = 128 | code & 63;\n } else {\n code = 65536 + ((code & 1023) << 10 | key.charCodeAt(++i) & 1023);\n bytes[index++] = 240 | code >>> 18;\n bytes[index++] = 128 | code >>> 12 & 63;\n bytes[index++] = 128 | code >>> 6 & 63;\n bytes[index++] = 128 | code & 63;\n }\n }\n key = bytes;\n } else {\n if (type === "object") {\n if (key === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) {\n key = new Uint8Array(key);\n } else if (!Array.isArray(key)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n }\n if (key.length > 64) {\n key = new Sha256(is224, true).update(key).array();\n }\n var oKeyPad = [], iKeyPad = [];\n for (i = 0; i < 64; ++i) {\n var b = key[i] || 0;\n oKeyPad[i] = 92 ^ b;\n iKeyPad[i] = 54 ^ b;\n }\n Sha256.call(this, is224, sharedMemory);\n this.update(iKeyPad);\n this.oKeyPad = oKeyPad;\n this.inner = true;\n this.sharedMemory = sharedMemory;\n }\n HmacSha256.prototype = new Sha256();\n HmacSha256.prototype.finalize = function() {\n Sha256.prototype.finalize.call(this);\n if (this.inner) {\n this.inner = false;\n var innerHash = this.array();\n Sha256.call(this, this.is224, this.sharedMemory);\n this.update(this.oKeyPad);\n this.update(innerHash);\n Sha256.prototype.finalize.call(this);\n }\n };\n var exports2 = createMethod();\n exports2.sha256 = exports2;\n exports2.sha224 = createMethod(true);\n exports2.sha256.hmac = createHmacMethod();\n exports2.sha224.hmac = createHmacMethod(true);\n if (COMMON_JS) {\n module.exports = exports2;\n } else {\n root.sha256 = exports2.sha256;\n root.sha224 = exports2.sha224;\n if (AMD) {\n define(function() {\n return exports2;\n });\n }\n }\n })();\n }\n });\n\n // src/extractor/index.ts\n var extractor_exports = {};\n __export(extractor_exports, {\n descriptionOfTree: () => descriptionOfTree,\n generateElementByPosition: () => generateElementByPosition,\n getElementInfoByXpath: () => getElementInfoByXpath,\n getElementXpath: () => getElementXpath,\n getNodeFromCacheList: () => getNodeFromCacheList,\n getNodeInfoByXpath: () => getNodeInfoByXpath,\n getXpathsById: () => getXpathsById,\n getXpathsByPoint: () => getXpathsByPoint,\n isNotContainerElement: () => isNotContainerElement,\n setNodeHashCacheListOnWindow: () => setNodeHashCacheListOnWindow,\n traverseTree: () => traverseTree,\n treeToList: () => treeToList,\n trimAttributes: () => trimAttributes,\n truncateText: () => truncateText,\n webExtractNodeTree: () => extractTreeNode,\n webExtractNodeTreeAsString: () => extractTreeNodeAsString,\n webExtractTextWithPosition: () => extractTextWithPosition\n });\n\n // src/extractor/tree.ts\n function truncateText(text, maxLength = 150) {\n if (typeof text === "undefined") {\n return "";\n }\n if (typeof text === "object") {\n text = JSON.stringify(text);\n }\n if (typeof text === "number") {\n return text.toString();\n }\n if (typeof text === "string" && text.length > maxLength) {\n return `${text.slice(0, maxLength)}...`;\n }\n if (typeof text === "string") {\n return text.trim();\n }\n return "";\n }\n function trimAttributes(attributes, truncateTextLength) {\n const tailorAttributes = Object.keys(attributes).reduce(\n (res, currentKey) => {\n const attributeVal = attributes[currentKey];\n if (currentKey === "style" || currentKey === "htmlTagName" || currentKey === "nodeType") {\n return res;\n }\n res[currentKey] = truncateText(attributeVal, truncateTextLength);\n return res;\n },\n {}\n );\n return tailorAttributes;\n }\n var nodeSizeThreshold = 4;\n function descriptionOfTree(tree, truncateTextLength, filterNonTextContent = false, visibleOnly = true) {\n const attributesString = (kv) => {\n return Object.entries(kv).map(\n ([key, value]) => `${key}="${truncateText(value, truncateTextLength)}"`\n ).join(" ");\n };\n function buildContentTree(node, indent = 0, visibleOnly2 = true) {\n var _a2;\n let before = "";\n let contentWithIndent = "";\n let after = "";\n let emptyNode = true;\n const indentStr = " ".repeat(indent);\n let children = "";\n for (let i = 0; i < (node.children || []).length; i++) {\n const childContent = buildContentTree(\n node.children[i],\n indent + 1,\n visibleOnly2\n );\n if (childContent) {\n children += `\n${childContent}`;\n }\n }\n if (node.node && node.node.rect.width > nodeSizeThreshold && node.node.rect.height > nodeSizeThreshold && (!filterNonTextContent || filterNonTextContent && node.node.content) && (!visibleOnly2 || visibleOnly2 && node.node.isVisible)) {\n emptyNode = false;\n let nodeTypeString;\n if ((_a2 = node.node.attributes) == null ? void 0 : _a2.htmlTagName) {\n nodeTypeString = node.node.attributes.htmlTagName.replace(/[<>]/g, "");\n } else {\n nodeTypeString = node.node.attributes.nodeType.replace(/\\sNode$/, "").toLowerCase();\n }\n const markerId = node.node.indexId;\n const markerIdString = markerId ? `markerId="${markerId}"` : "";\n const rectAttribute = node.node.rect ? {\n left: node.node.rect.left,\n top: node.node.rect.top,\n width: node.node.rect.width,\n height: node.node.rect.height\n } : {};\n before = `<${nodeTypeString} id="${node.node.id}" ${markerIdString} ${attributesString(trimAttributes(node.node.attributes || {}, truncateTextLength))} ${attributesString(rectAttribute)}>`;\n const content = truncateText(node.node.content, truncateTextLength);\n contentWithIndent = content ? `\n${indentStr} ${content}` : "";\n after = `</${nodeTypeString}>`;\n } else if (!filterNonTextContent) {\n if (!children.trim().startsWith("<>")) {\n before = "<>";\n contentWithIndent = "";\n after = "</>";\n }\n }\n if (emptyNode && !children.trim()) {\n return "";\n }\n const result2 = `${indentStr}${before}${contentWithIndent}${children}\n${indentStr}${after}`;\n if (result2.trim()) {\n return result2;\n }\n return "";\n }\n const result = buildContentTree(tree, 0, visibleOnly);\n return result.replace(/^\\s*\\n/gm, "");\n }\n function treeToList(tree) {\n const result = [];\n function dfs(node) {\n if (node.node) {\n result.push(node.node);\n }\n for (const child of node.children) {\n dfs(child);\n }\n }\n dfs(tree);\n return result;\n }\n function traverseTree(tree, onNode) {\n function dfs(node) {\n if (node.node) {\n node.node = onNode(node.node);\n }\n for (const child of node.children) {\n dfs(child);\n }\n }\n dfs(tree);\n return tree;\n }\n\n // src/constants/index.ts\n var CONTAINER_MINI_HEIGHT = 3;\n var CONTAINER_MINI_WIDTH = 3;\n\n // src/utils.ts\n var import_js_sha256 = __toESM(require_sha256());\n var _a;\n var ifInNode = typeof process !== "undefined" && ((_a = process.versions) == null ? void 0 : _a.node);\n var hashMap = {};\n function generateHashId(rect, content = "") {\n const combined = JSON.stringify({\n content,\n rect\n });\n let sliceLength = 5;\n let slicedHash = "";\n const hashHex = import_js_sha256.sha256.create().update(combined).hex();\n const toLetters = (hex) => {\n return hex.split("").map((char) => {\n const code = Number.parseInt(char, 16);\n return String.fromCharCode(97 + code % 26);\n }).join("");\n };\n const hashLetters = toLetters(hashHex);\n while (sliceLength < hashLetters.length - 1) {\n slicedHash = hashLetters.slice(0, sliceLength);\n if (hashMap[slicedHash] && hashMap[slicedHash] !== combined) {\n sliceLength++;\n continue;\n }\n hashMap[slicedHash] = combined;\n break;\n }\n return slicedHash;\n }\n\n // src/extractor/dom-util.ts\n function isFormElement(node) {\n return node instanceof HTMLElement && (node.tagName.toLowerCase() === "input" || node.tagName.toLowerCase() === "textarea" || node.tagName.toLowerCase() === "select" || node.tagName.toLowerCase() === "option");\n }\n function isButtonElement(node) {\n return node instanceof HTMLElement && node.tagName.toLowerCase() === "button";\n }\n function isAElement(node) {\n return node instanceof HTMLElement && node.tagName.toLowerCase() === "a";\n }\n function isSvgElement(node) {\n return node instanceof SVGElement;\n }\n function isImgElement(node) {\n if (!includeBaseElement(node) && node instanceof Element) {\n const computedStyle = window.getComputedStyle(node);\n const backgroundImage = computedStyle.getPropertyValue("background-image");\n if (backgroundImage !== "none") {\n return true;\n }\n }\n if (isIconfont(node)) {\n return true;\n }\n return node instanceof HTMLElement && node.tagName.toLowerCase() === "img" || node instanceof SVGElement && node.tagName.toLowerCase() === "svg";\n }\n function isIconfont(node) {\n if (node instanceof Element) {\n const computedStyle = window.getComputedStyle(node);\n const fontFamilyValue = computedStyle.fontFamily || "";\n return fontFamilyValue.toLowerCase().indexOf("iconfont") >= 0;\n }\n return false;\n }\n function isNotContainerElement(node) {\n return isTextElement(node) || isIconfont(node) || isImgElement(node) || isButtonElement(node) || isAElement(node) || isFormElement(node);\n }\n function isTextElement(node) {\n var _a2, _b, _c;\n if (node instanceof Element) {\n if (((_a2 = node == null ? void 0 : node.childNodes) == null ? void 0 : _a2.length) === 1 && (node == null ? void 0 : node.childNodes[0]) instanceof Text) {\n return true;\n }\n }\n return ((_c = (_b = node.nodeName) == null ? void 0 : _b.toLowerCase) == null ? void 0 : _c.call(_b)) === "#text" && !isIconfont(node);\n }\n function isContainerElement(node) {\n if (!(node instanceof HTMLElement))\n return false;\n if (includeBaseElement(node)) {\n return false;\n }\n const computedStyle = window.getComputedStyle(node);\n const backgroundColor = computedStyle.getPropertyValue("background-color");\n if (backgroundColor) {\n return true;\n }\n return false;\n }\n function includeBaseElement(node) {\n if (!(node instanceof HTMLElement))\n return false;\n if (node.innerText) {\n return true;\n }\n const includeList = [\n "svg",\n "button",\n "input",\n "textarea",\n "select",\n "option",\n "img",\n "a"\n ];\n for (const tagName of includeList) {\n const element = node.querySelectorAll(tagName);\n if (element.length > 0) {\n return true;\n }\n }\n return false;\n }\n function generateElementByPosition(position) {\n const rect = {\n left: Math.max(position.x - 4, 0),\n top: Math.max(position.y - 4, 0),\n width: 8,\n height: 8\n };\n const id = generateHashId(rect);\n const element = {\n id,\n attributes: { nodeType: "POSITION Node" /* POSITION */ },\n rect,\n content: "",\n center: [position.x, position.y]\n };\n return element;\n }\n\n // src/extractor/util.ts\n var MAX_VALUE_LENGTH = 300;\n var debugMode = false;\n function setDebugMode(mode) {\n debugMode = mode;\n }\n function logger(..._msg) {\n if (!debugMode) {\n return;\n }\n console.log(..._msg);\n }\n function isElementPartiallyInViewport(rect, currentWindow, currentDocument, visibleAreaRatio = 2 / 3) {\n const elementHeight = rect.height;\n const elementWidth = rect.width;\n const viewportRect = {\n left: 0,\n top: 0,\n width: currentWindow.innerWidth || currentDocument.documentElement.clientWidth,\n height: currentWindow.innerHeight || currentDocument.documentElement.clientHeight,\n right: currentWindow.innerWidth || currentDocument.documentElement.clientWidth,\n bottom: currentWindow.innerHeight || currentDocument.documentElement.clientHeight,\n x: 0,\n y: 0,\n zoom: 1\n };\n const overlapRect = overlappedRect(rect, viewportRect);\n if (!overlapRect) {\n return false;\n }\n const visibleArea = overlapRect.width * overlapRect.height;\n const totalArea = elementHeight * elementWidth;\n return visibleArea / totalArea >= visibleAreaRatio;\n }\n function getPseudoElementContent(element, currentWindow) {\n if (!(element instanceof currentWindow.HTMLElement)) {\n return { before: "", after: "" };\n }\n const beforeContent = currentWindow.getComputedStyle(element, "::before").getPropertyValue("content");\n const afterContent = currentWindow.getComputedStyle(element, "::after").getPropertyValue("content");\n return {\n before: beforeContent === "none" ? "" : beforeContent.replace(/"/g, ""),\n after: afterContent === "none" ? "" : afterContent.replace(/"/g, "")\n };\n }\n function overlappedRect(rect1, rect2) {\n const left = Math.max(rect1.left, rect2.left);\n const top = Math.max(rect1.top, rect2.top);\n const right = Math.min(rect1.right, rect2.right);\n const bottom = Math.min(rect1.bottom, rect2.bottom);\n if (left < right && top < bottom) {\n return {\n left,\n top,\n right,\n bottom,\n width: right - left,\n height: bottom - top,\n x: left,\n y: top,\n zoom: 1\n };\n }\n return null;\n }\n function getRect(el, baseZoom, currentWindow) {\n let originalRect;\n let newZoom = 1;\n if (!(el instanceof currentWindow.HTMLElement)) {\n const range = currentWindow.document.createRange();\n range.selectNodeContents(el);\n originalRect = range.getBoundingClientRect();\n } else {\n originalRect = el.getBoundingClientRect();\n if (!("currentCSSZoom" in el)) {\n newZoom = Number.parseFloat(currentWindow.getComputedStyle(el).zoom) || 1;\n }\n }\n const zoom = newZoom * baseZoom;\n return {\n width: originalRect.width * zoom,\n height: originalRect.height * zoom,\n left: originalRect.left * zoom,\n top: originalRect.top * zoom,\n right: originalRect.right * zoom,\n bottom: originalRect.bottom * zoom,\n x: originalRect.x * zoom,\n y: originalRect.y * zoom,\n zoom\n };\n }\n var isElementCovered = (el, rect, currentWindow) => {\n const x = rect.left + rect.width / 2;\n const y = rect.top + rect.height / 2;\n const topElement = currentWindow.document.elementFromPoint(x, y);\n if (!topElement) {\n return false;\n }\n if (topElement === el) {\n return false;\n }\n if (el == null ? void 0 : el.contains(topElement)) {\n return false;\n }\n if (topElement == null ? void 0 : topElement.contains(el)) {\n return false;\n }\n const rectOfTopElement = getRect(topElement, 1, currentWindow);\n const overlapRect = overlappedRect(rect, rectOfTopElement);\n if (!overlapRect) {\n return false;\n }\n logger(el, "Element is covered by another element", {\n topElement,\n el,\n rect,\n x,\n y\n });\n return true;\n };\n function elementRect(el, currentWindow, currentDocument, baseZoom = 1) {\n if (!el) {\n logger(el, "Element is not in the DOM hierarchy");\n return false;\n }\n if (!(el instanceof currentWindow.HTMLElement) && el.nodeType !== Node.TEXT_NODE && el.nodeName.toLowerCase() !== "svg") {\n logger(el, "Element is not in the DOM hierarchy");\n return false;\n }\n if (el instanceof currentWindow.HTMLElement) {\n const style = currentWindow.getComputedStyle(el);\n if (style.display === "none" || style.visibility === "hidden" || style.opacity === "0" && el.tagName !== "INPUT") {\n logger(el, "Element is hidden");\n return false;\n }\n }\n const rect = getRect(el, baseZoom, currentWindow);\n if (rect.width === 0 && rect.height === 0) {\n logger(el, "Element has no size");\n return false;\n }\n if (baseZoom === 1 && isElementCovered(el, rect, currentWindow)) {\n return false;\n }\n const isVisible = isElementPartiallyInViewport(\n rect,\n currentWindow,\n currentDocument\n );\n let parent = el;\n const parentUntilNonStatic = (currentNode) => {\n let parent2 = currentNode == null ? void 0 : currentNode.parentElement;\n while (parent2) {\n const style = currentWindow.getComputedStyle(parent2);\n if (style.position !== "static") {\n return parent2;\n }\n parent2 = parent2.parentElement;\n }\n return null;\n };\n while (parent && parent !== currentDocument.body) {\n if (!(parent instanceof currentWindow.HTMLElement)) {\n parent = parent.parentElement;\n continue;\n }\n const parentStyle = currentWindow.getComputedStyle(parent);\n if (parentStyle.overflow === "hidden") {\n const parentRect = getRect(parent, 1, currentWindow);\n const tolerance = 10;\n if (rect.right < parentRect.left - tolerance || rect.left > parentRect.right + tolerance || rect.bottom < parentRect.top - tolerance || rect.top > parentRect.bottom + tolerance) {\n logger(el, "element is partially or totally hidden by an ancestor", {\n rect,\n parentRect\n });\n return false;\n }\n }\n if (parentStyle.position === "fixed" || parentStyle.position === "sticky") {\n break;\n }\n if (parentStyle.position === "absolute") {\n parent = parentUntilNonStatic(parent);\n } else {\n parent = parent.parentElement;\n }\n }\n return {\n left: Math.round(rect.left),\n top: Math.round(rect.top),\n width: Math.round(rect.width),\n height: Math.round(rect.height),\n zoom: rect.zoom,\n isVisible\n };\n }\n function getNodeAttributes(node, currentWindow) {\n if (!node || !(node instanceof currentWindow.HTMLElement) || !node.attributes) {\n return {};\n }\n const attributesList = Array.from(node.attributes).map((attr) => {\n if (attr.name === "class") {\n return [attr.name, `.${attr.value.split(" ").join(".")}`];\n }\n if (!attr.value) {\n return [];\n }\n let value = attr.value;\n if (value.startsWith("data:image")) {\n value = "image";\n }\n if (value.length > MAX_VALUE_LENGTH) {\n value = `${value.slice(0, MAX_VALUE_LENGTH)}...`;\n }\n return [attr.name, value];\n });\n return Object.fromEntries(attributesList);\n }\n function midsceneGenerateHash(node, content, rect) {\n const slicedHash = generateHashId(rect, content);\n if (node) {\n if (!window.midsceneNodeHashCacheList) {\n setNodeHashCacheListOnWindow();\n }\n setNodeToCacheList(node, slicedHash);\n }\n return slicedHash;\n }\n function setNodeHashCacheListOnWindow() {\n if (typeof window !== "undefined") {\n window.midsceneNodeHashCacheList = [];\n }\n }\n function setNodeToCacheList(node, id) {\n var _a2;\n if (typeof window !== "undefined") {\n if (getNodeFromCacheList(id)) {\n return;\n }\n (_a2 = window.midsceneNodeHashCacheList) == null ? void 0 : _a2.push({ node, id });\n }\n }\n function getNodeFromCacheList(id) {\n var _a2, _b;\n if (typeof window !== "undefined") {\n return (_b = (_a2 = window.midsceneNodeHashCacheList) == null ? void 0 : _a2.find(\n (item) => item.id === id\n )) == null ? void 0 : _b.node;\n }\n return null;\n }\n function getTopDocument() {\n const container = document.body || document;\n return container;\n }\n\n // src/extractor/web-extractor.ts\n var indexId = 0;\n function tagNameOfNode(node) {\n var _a2, _b;\n let tagName = "";\n if (node instanceof HTMLElement) {\n tagName = (_a2 = node.tagName) == null ? void 0 : _a2.toLowerCase();\n } else {\n const parentElement = node.parentElement;\n if (parentElement && parentElement instanceof HTMLElement) {\n tagName = (_b = parentElement.tagName) == null ? void 0 : _b.toLowerCase();\n }\n }\n return tagName ? `<${tagName}>` : "";\n }\n function collectElementInfo(node, currentWindow, currentDocument, baseZoom = 1, basePoint = { left: 0, top: 0 }, isContainer = false) {\n var _a2, _b;\n const rect = elementRect(node, currentWindow, currentDocument, baseZoom);\n if (!rect) {\n return null;\n }\n if (rect.width < CONTAINER_MINI_WIDTH || rect.height < CONTAINER_MINI_HEIGHT) {\n return null;\n }\n if (basePoint.left !== 0 || basePoint.top !== 0) {\n rect.left += basePoint.left;\n rect.top += basePoint.top;\n }\n if (rect.height >= window.innerHeight && rect.width >= window.innerWidth) {\n return null;\n }\n if (isFormElement(node)) {\n const attributes = getNodeAttributes(node, currentWindow);\n let valueContent = attributes.value || attributes.placeholder || node.textContent || "";\n const nodeHashId = midsceneGenerateHash(node, valueContent, rect);\n const tagName = node.tagName.toLowerCase();\n if (node.tagName.toLowerCase() === "select") {\n const selectedOption = node.options[node.selectedIndex];\n valueContent = (selectedOption == null ? void 0 : selectedOption.textContent) || "";\n }\n if ((node.tagName.toLowerCase() === "input" || node.tagName.toLowerCase() === "textarea") && node.value) {\n valueContent = node.value;\n }\n const elementInfo = {\n id: nodeHashId,\n nodeHashId,\n nodeType: "FORM_ITEM Node" /* FORM_ITEM */,\n indexId: indexId++,\n attributes: __spreadProps(__spreadValues({}, attributes), {\n htmlTagName: `<${tagName}>`,\n nodeType: "FORM_ITEM Node" /* FORM_ITEM */\n }),\n content: valueContent.trim(),\n rect,\n center: [\n Math.round(rect.left + rect.width / 2),\n Math.round(rect.top + rect.height / 2)\n ],\n zoom: rect.zoom,\n isVisible: rect.isVisible\n };\n return elementInfo;\n }\n if (isButtonElement(node)) {\n const rect2 = mergeElementAndChildrenRects(\n node,\n currentWindow,\n currentDocument,\n baseZoom\n );\n if (!rect2) {\n return null;\n }\n const attributes = getNodeAttributes(node, currentWindow);\n const pseudo = getPseudoElementContent(node, currentWindow);\n const content = node.innerText || pseudo.before || pseudo.after || "";\n const nodeHashId = midsceneGenerateHash(node, content, rect2);\n const elementInfo = {\n id: nodeHashId,\n indexId: indexId++,\n nodeHashId,\n nodeType: "BUTTON Node" /* BUTTON */,\n attributes: __spreadProps(__spreadValues({}, attributes), {\n htmlTagName: tagNameOfNode(node),\n nodeType: "BUTTON Node" /* BUTTON */\n }),\n content,\n rect: rect2,\n center: [\n Math.round(rect2.left + rect2.width / 2),\n Math.round(rect2.top + rect2.height / 2)\n ],\n zoom: rect2.zoom,\n isVisible: rect2.isVisible\n };\n return elementInfo;\n }\n if (isImgElement(node)) {\n const attributes = getNodeAttributes(node, currentWindow);\n const nodeHashId = midsceneGenerateHash(node, "", rect);\n const elementInfo = {\n id: nodeHashId,\n indexId: indexId++,\n nodeHashId,\n attributes: __spreadProps(__spreadValues(__spreadValues({}, attributes), ((_a2 = node.nodeName) == null ? void 0 : _a2.toLowerCase()) === "svg" ? {\n svgContent: "true"\n } : {}), {\n nodeType: "IMG Node" /* IMG */,\n htmlTagName: tagNameOfNode(node)\n }),\n nodeType: "IMG Node" /* IMG */,\n content: "",\n rect,\n center: [\n Math.round(rect.left + rect.width / 2),\n Math.round(rect.top + rect.height / 2)\n ],\n zoom: rect.zoom,\n isVisible: rect.isVisible\n };\n return elementInfo;\n }\n if (isTextElement(node)) {\n const text = (_b = node.textContent) == null ? void 0 : _b.trim().replace(/\\n+/g, " ");\n if (!text) {\n return null;\n }\n const attributes = getNodeAttributes(node, currentWindow);\n const attributeKeys = Object.keys(attributes);\n if (!text.trim() && attributeKeys.length === 0) {\n return null;\n }\n const nodeHashId = midsceneGenerateHash(node, text, rect);\n const elementInfo = {\n id: nodeHashId,\n indexId: indexId++,\n nodeHashId,\n nodeType: "TEXT Node" /* TEXT */,\n attributes: __spreadProps(__spreadValues({}, attributes), {\n nodeType: "TEXT Node" /* TEXT */,\n htmlTagName: tagNameOfNode(node)\n }),\n center: [\n Math.round(rect.left + rect.width / 2),\n Math.round(rect.top + rect.height / 2)\n ],\n content: text,\n rect,\n zoom: rect.zoom,\n isVisible: rect.isVisible\n };\n return elementInfo;\n }\n if (isAElement(node)) {\n const attributes = getNodeAttributes(node, currentWindow);\n const pseudo = getPseudoElementContent(node, currentWindow);\n const content = node.innerText || pseudo.before || pseudo.after || "";\n const nodeHashId = midsceneGenerateHash(node, content, rect);\n const elementInfo = {\n id: nodeHashId,\n indexId: indexId++,\n nodeHashId,\n nodeType: "Anchor Node" /* A */,\n attributes: __spreadProps(__spreadValues({}, attributes), {\n htmlTagName: tagNameOfNode(node),\n nodeType: "Anchor Node" /* A */\n }),\n content,\n rect,\n center: [\n Math.round(rect.left + rect.width / 2),\n Math.round(rect.top + rect.height / 2)\n ],\n zoom: rect.zoom,\n isVisible: rect.isVisible\n };\n return elementInfo;\n }\n if (isContainerElement(node) || isContainer) {\n const attributes = getNodeAttributes(node, currentWindow);\n const nodeHashId = midsceneGenerateHash(node, "", rect);\n const elementInfo = {\n id: nodeHashId,\n nodeHashId,\n indexId: indexId++,\n nodeType: "CONTAINER Node" /* CONTAINER */,\n attributes: __spreadProps(__spreadValues({}, attributes), {\n nodeType: "CONTAINER Node" /* CONTAINER */,\n htmlTagName: tagNameOfNode(node)\n }),\n content: "",\n rect,\n center: [\n Math.round(rect.left + rect.width / 2),\n Math.round(rect.top + rect.height / 2)\n ],\n zoom: rect.zoom,\n isVisible: rect.isVisible\n };\n return elementInfo;\n }\n return null;\n }\n function extractTextWithPosition(initNode, debugMode2 = false) {\n const elementNode = extractTreeNode(initNode, debugMode2);\n const elementInfoArray = [];\n function dfsTopChildren(node) {\n if (node.node) {\n elementInfoArray.push(node.node);\n }\n for (let i = 0; i < node.children.length; i++) {\n dfsTopChildren(node.children[i]);\n }\n }\n dfsTopChildren({ children: elementNode.children, node: elementNode.node });\n return elementInfoArray;\n }\n function extractTreeNodeAsString(initNode, visibleOnly = false, debugMode2 = false) {\n const elementNode = extractTreeNode(initNode, debugMode2);\n return descriptionOfTree(elementNode, void 0, false, visibleOnly);\n }\n function extractTreeNode(initNode, debugMode2 = false) {\n setDebugMode(debugMode2);\n indexId = 0;\n const topDocument = getTopDocument();\n const startNode = initNode || topDocument;\n const topChildren = [];\n function dfs(node, currentWindow, currentDocument, baseZoom = 1, basePoint = { left: 0, top: 0 }) {\n if (!node) {\n return null;\n }\n if (node.nodeType && node.nodeType === 10) {\n return null;\n }\n const elementInfo = collectElementInfo(\n node,\n currentWindow,\n currentDocument,\n baseZoom,\n basePoint\n );\n if (node instanceof currentWindow.HTMLIFrameElement) {\n if (node.contentWindow && node.contentWindow) {\n return null;\n }\n }\n const nodeInfo = {\n node: elementInfo,\n children: []\n };\n if ((elementInfo == null ? void 0 : elementInfo.nodeType) === "BUTTON Node" /* BUTTON */ || (elementInfo == null ? void 0 : elementInfo.nodeType) === "IMG Node" /* IMG */ || (elementInfo == null ? void 0 : elementInfo.nodeType) === "TEXT Node" /* TEXT */ || (elementInfo == null ? void 0 : elementInfo.nodeType) === "FORM_ITEM Node" /* FORM_ITEM */ || (elementInfo == null ? void 0 : elementInfo.nodeType) === "CONTAINER Node" /* CONTAINER */) {\n return nodeInfo;\n }\n const rect = getRect(node, baseZoom, currentWindow);\n for (let i = 0; i < node.childNodes.length; i++) {\n logger("will dfs", node.childNodes[i]);\n const childNodeInfo = dfs(\n node.childNodes[i],\n currentWindow,\n currentDocument,\n rect.zoom,\n basePoint\n );\n if (Array.isArray(childNodeInfo)) {\n nodeInfo.children.push(...childNodeInfo);\n } else if (childNodeInfo) {\n nodeInfo.children.push(childNodeInfo);\n }\n }\n if (nodeInfo.node === null) {\n if (nodeInfo.children.length === 0) {\n return null;\n }\n return nodeInfo.children;\n }\n return nodeInfo;\n }\n const rootNodeInfo = dfs(startNode, window, document, 1, {\n left: 0,\n top: 0\n });\n if (Array.isArray(rootNodeInfo)) {\n topChildren.push(...rootNodeInfo);\n } else if (rootNodeInfo) {\n topChildren.push(rootNodeInfo);\n }\n if (startNode === topDocument) {\n const iframes = document.querySelectorAll("iframe");\n for (let i = 0; i < iframes.length; i++) {\n const iframe = iframes[i];\n if (iframe.contentDocument && iframe.contentWindow) {\n const iframeInfo = collectElementInfo(iframe, window, document, 1);\n if (iframeInfo) {\n const iframeChildren = dfs(\n iframe.contentDocument.body,\n iframe.contentWindow,\n iframe.contentDocument,\n 1,\n {\n left: iframeInfo.rect.left,\n top: iframeInfo.rect.top\n }\n );\n if (Array.isArray(iframeChildren)) {\n topChildren.push(...iframeChildren);\n } else if (iframeChildren) {\n topChildren.push(iframeChildren);\n }\n }\n }\n }\n }\n return {\n node: null,\n children: topChildren\n };\n }\n function mergeElementAndChildrenRects(node, currentWindow, currentDocument, baseZoom = 1) {\n const selfRect = elementRect(node, currentWindow, currentDocument, baseZoom);\n if (!selfRect)\n return null;\n let minLeft = selfRect.left;\n let minTop = selfRect.top;\n let maxRight = selfRect.left + selfRect.width;\n let maxBottom = selfRect.top + selfRect.height;\n function traverse(child) {\n for (let i = 0; i < child.childNodes.length; i++) {\n const sub = child.childNodes[i];\n if (sub.nodeType === 1) {\n const rect = elementRect(sub, currentWindow, currentDocument, baseZoom);\n if (rect) {\n minLeft = Math.min(minLeft, rect.left);\n minTop = Math.min(minTop, rect.top);\n maxRight = Math.max(maxRight, rect.left + rect.width);\n maxBottom = Math.max(maxBottom, rect.top + rect.height);\n }\n traverse(sub);\n }\n }\n }\n traverse(node);\n return __spreadProps(__spreadValues({}, selfRect), {\n left: minLeft,\n top: minTop,\n width: maxRight - minLeft,\n height: maxBottom - minTop\n });\n }\n\n // src/extractor/locator.ts\n var getElementXpathIndex = (element) => {\n let index = 1;\n let prev = element.previousElementSibling;\n while (prev) {\n if (prev.nodeName.toLowerCase() === element.nodeName.toLowerCase()) {\n index++;\n }\n prev = prev.previousElementSibling;\n }\n return index;\n };\n var normalizeXpathText = (text) => {\n if (typeof text !== "string") {\n return "";\n }\n return text.replace(/\\s+/g, " ").trim();\n };\n var buildCurrentElementXpath = (element, isOrderSensitive, isLeafElement) => {\n var _a2;\n const parentPath = element.parentNode ? getElementXpath(element.parentNode, isOrderSensitive) : "";\n const prefix = parentPath ? `${parentPath}/` : "/";\n const tagName = element.nodeName.toLowerCase();\n const textContent = (_a2 = element.textContent) == null ? void 0 : _a2.trim();\n if (isOrderSensitive) {\n const index2 = getElementXpathIndex(element);\n return `${prefix}${tagName}[${index2}]`;\n }\n if (isLeafElement && textContent) {\n return `${prefix}${tagName}[normalize-space()="${normalizeXpathText(textContent)}"]`;\n }\n const index = getElementXpathIndex(element);\n return `${prefix}${tagName}[${index}]`;\n };\n var getElementXpath = (element, isOrderSensitive = false, isLeafElement = false) => {\n var _a2;\n if (element.nodeType === Node.TEXT_NODE) {\n const parentNode = element.parentNode;\n if (parentNode && parentNode.nodeType === Node.ELEMENT_NODE) {\n const parentXPath = getElementXpath(parentNode, isOrderSensitive, true);\n const textContent = (_a2 = element.textContent) == null ? void 0 : _a2.trim();\n if (textContent) {\n return `${parentXPath}/text()[normalize-space()="${normalizeXpathText(textContent)}"]`;\n }\n return `${parentXPath}/text()`;\n }\n return "";\n }\n if (element.nodeType !== Node.ELEMENT_NODE)\n return "";\n const el = element;\n if (el === document.documentElement)\n return "/html";\n if (el === document.body)\n return "/html/body";\n if (isSvgElement(el)) {\n let parent = el.parentNode;\n while (parent && parent.nodeType === Node.ELEMENT_NODE) {\n if (!isSvgElement(parent)) {\n return getElementXpath(parent, isOrderSensitive, isLeafElement);\n }\n parent = parent.parentNode;\n }\n return getElementXpath(el.parentNode, isOrderSensitive, isLeafElement);\n }\n return buildCurrentElementXpath(el, isOrderSensitive, isLeafElement);\n };\n function getXpathsById(id) {\n const node = getNodeFromCacheList(id);\n if (!node) {\n return null;\n }\n const fullXPath = getElementXpath(node, false, true);\n return [fullXPath];\n }\n function getXpathsByPoint(point, isOrderSensitive) {\n const element = document.elementFromPoint(point.left, point.top);\n if (!element) {\n return null;\n }\n const fullXPath = getElementXpath(element, isOrderSensitive, true);\n return [fullXPath];\n }\n function getNodeInfoByXpath(xpath) {\n const xpathResult = document.evaluate(\n xpath,\n document,\n null,\n XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,\n null\n );\n if (xpathResult.snapshotLength !== 1) {\n return null;\n }\n const node = xpathResult.snapshotItem(0);\n return node;\n }\n function getElementInfoByXpath(xpath) {\n const node = getNodeInfoByXpath(xpath);\n if (!node) {\n return null;\n }\n if (node instanceof HTMLElement) {\n const rect = getRect(node, 1, window);\n const isVisible = isElementPartiallyInViewport(rect, window, document, 1);\n if (!isVisible) {\n node.scrollIntoView({ behavior: "instant", block: "center" });\n }\n }\n return collectElementInfo(\n node,\n window,\n document,\n 1,\n {\n left: 0,\n top: 0\n },\n true\n );\n }\n return __toCommonJS(extractor_exports);\n})();\n/*! Bundled license information:\n\njs-sha256/src/sha256.js:\n (**\n * [js-sha256]{@link https://github.com/emn178/js-sha256}\n *\n * @version 0.11.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2024\n * @license MIT\n *)\n*/\n'}async function b(t=!1){if(c||h)return null;let r=`${g()}midscene_element_inspector.setNodeHashCacheListOnWindow();`;return t?`${r}midscene_element_inspector.webExtractNodeTree()`:`${r}midscene_element_inspector.webExtractTextWithPosition()`}}}),require_chunk_ZYDQQ5BX=__commonJS({"../core/dist/lib/chunk-ZYDQQ5BX.js"(t){function r(t){if(t&&t.__esModule)return t;var r={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(r[n]=t[n]);return r.default=t,r}function n(t){let r,n=t[0],i=1;for(;i<t.length;){let a=t[i],o=t[i+1];if(i+=2,("optionalAccess"===a||"optionalCall"===a)&&null==n)return;"access"===a||"optionalAccess"===a?(r=n,n=o(n)):"call"!==a&&"optionalCall"!==a||(n=o((...t)=>n.call(r,...t)),r=void 0)}return n}init_globals(),Object.defineProperty(t,"__esModule",{value:!0});var i=require_child_process(),a=require_fs(),o=r(a),s=require_browser3(),l=require_path_browserify(),u=r(l),d=require_common6(),c=require_env(),h=require_fs2(),f=require_utils5(),p=!1,m=new Map;function g(t,r){let n="</html>",i=o.statSync(t),a=Math.min(i.size,4096),s=Math.max(0,i.size-a),l=Buffer.alloc(i.size-s),u=o.openSync(t,"r");o.readSync(u,l,0,l.length,s),o.closeSync(u);let d=l.toString("utf8"),c=d.lastIndexOf(n);if(-1===c)throw Error(`No </html> found in file:${t}`);let h=d.slice(0,c),f=s+Buffer.byteLength(h,"utf8");o.truncateSync(t,f),o.appendFileSync(t,`${r}
723
+ `+n,o=await Z([{role:"user",content:a},...r],1),s=function(t){let r=/<bbox>(\d+)\s+(\d+)\s+(\d+)\s+(\d+)<\/bbox>/g;function n(t,r,n,i,a){let o=Number.parseInt(r,10),s=Number.parseInt(n,10),l=Number.parseInt(i,10),u=Number.parseInt(a,10);return`(${Math.floor((o+l)/2)},${Math.floor((s+u)/2)})`}return t.replace(/\[EOS\]/g,"").replace(r,n).trim()}(o.content),u=l.uiTarsModelVersion.call(void 0),{parsed:c}=es.actionParser.call(void 0,{prediction:s,factor:[1e3,1e3],screenContext:{width:i.width,height:i.height},modelVer:u||void 0});el("modelVer",u,"parsed",JSON.stringify(c));let h=[];if(c.forEach(t=>{if("click"===t.action_type){d.assert.call(void 0,t.action_inputs.start_box,"start_box is required");let r=ed(t.action_inputs.start_box,i);h.push({type:"Locate",param:{},locate:{prompt:t.thought||"",bbox:eu({x:r[0],y:r[1]},i.width,i.height)}}),h.push({type:"Tap",locate:{prompt:t.thought||"",bbox:eu({x:r[0],y:r[1]},i.width,i.height)},param:t.thought||""})}else if("drag"===t.action_type){d.assert.call(void 0,t.action_inputs.start_box,"start_box is required"),d.assert.call(void 0,t.action_inputs.end_box,"end_box is required");let r=ed(t.action_inputs.start_box,i),n=ed(t.action_inputs.end_box,i);h.push({type:"Drag",param:{start_box:{x:r[0],y:r[1]},end_box:{x:n[0],y:n[1]}},locate:null,thought:t.thought||""})}else if("type"===t.action_type)h.push({type:"Input",param:{value:t.action_inputs.content},locate:null,thought:t.thought||""});else if("scroll"===t.action_type)h.push({type:"Scroll",param:{direction:t.action_inputs.direction},locate:null,thought:t.thought||""});else if("finished"===t.action_type)h.push({type:"Finished",param:{},locate:null,thought:t.thought||""});else if("hotkey"===t.action_type)if(t.action_inputs.key){let r=eo.transformHotkeyInput.call(void 0,t.action_inputs.key);h.push({type:"KeyboardPress",param:{value:r},locate:null,thought:t.thought||""})}else import_console_browserify.default.warn("No key found in action: hotkey. Will not perform action.");else if("wait"===t.action_type)h.push({type:"Sleep",param:{timeMs:1e3},locate:null,thought:t.thought||""});else if("androidBackButton"===t.action_type)h.push({type:"AndroidBackButton",param:{},locate:null,thought:t.thought||""});else if("androidHomeButton"===t.action_type)h.push({type:"AndroidHomeButton",param:{},locate:null,thought:t.thought||""});else if("androidRecentAppsButton"===t.action_type)h.push({type:"AndroidRecentAppsButton",param:{}});else if("androidLongPress"===t.action_type){d.assert.call(void 0,t.action_inputs.start_coords,"start_coords is required for androidLongPress");let r=t.action_inputs.start_coords;h.push({type:"AndroidLongPress",param:{x:r[0],y:r[1],duration:1e3},locate:null,thought:t.thought||""})}else if("androidPull"===t.action_type){let r=t.action_inputs.direction||"down",n=t.action_inputs.start_coords?{x:t.action_inputs.start_coords[0],y:t.action_inputs.start_coords[1]}:void 0;h.push({type:"AndroidPull",param:{direction:r,startPoint:n,distance:t.action_inputs.distance,duration:t.action_inputs.duration||500},locate:null,thought:t.thought||""})}}),0===h.length)throw Error(`No actions found, response: ${o.content}`,{cause:{prediction:o.content,parsed:c}});return{actions:h,actionsFromModel:c,action_summary:o.content.replace(/Reflection:[\s\S]*?(?=Action_Summary:|Action:|$)/g,"").trim(),usage:o.usage,rawResponse:JSON.stringify(o.content,void 0,2)}},t.resizeImageForUiTars=async function(t,r){if("vlm-ui-tars"===l.vlLocateMode.call(void 0)&&l.uiTarsModelVersion.call(void 0)===l.UITarsModelVersion.V1_5){el("ui-tars-v1.5, will check image size",r);let n=r.width*r.height,i=0xc40000;if(n>0xc40000){let a=Math.sqrt(i/n),o=Math.floor(r.width*a),s=Math.floor(r.height*a);return el("resize image for ui-tars, new width: %s, new height: %s",o,s),await y.resizeImgBase64.call(void 0,t,{width:o,height:s})}}return t}}}),require_ai_model=__commonJS({"../core/dist/lib/ai-model.js"(t){init_globals(),Object.defineProperty(t,"__esModule",{value:!0});var r=require_chunk_I5LBWOQA();t.AIActionType=r.AIActionType,t.AiAssert=r.AiAssert,t.AiExtractElementInfo=r.AiExtractElementInfo,t.AiLocateElement=r.AiLocateElement,t.AiLocateSection=r.AiLocateSection,t.adaptBboxToRect=r.adaptBboxToRect,t.callAi=r.call,t.callAiFn=r.callAiFn,t.callAiFnWithStringResponse=r.callAiFnWithStringResponse,t.callToGetJSONObject=r.callToGetJSONObject,t.describeUserPage=r.describeUserPage,t.elementByPositionWithElementInfo=r.elementByPositionWithElementInfo,t.generatePlaywrightTest=r.generatePlaywrightTest,t.generatePlaywrightTestStream=r.generatePlaywrightTestStream,t.generateYamlTest=r.generateYamlTest,t.generateYamlTestStream=r.generateYamlTestStream,t.plan=r.plan,t.resizeImageForUiTars=r.resizeImageForUiTars,t.systemPromptToLocateElement=r.systemPromptToLocateElement,t.vlmPlanning=r.vlmPlanning}}),require_child_process=__commonJS({"../../node_modules/.pnpm/@modern-js+plugin-module-node-polyfill@2.60.6_@modern-js+module-tools@2.60.6_typescript@5.8.3_/node_modules/@modern-js/plugin-module-node-polyfill/dist/mock/child_process.js"(t,r){init_globals(),r.exports={}}}),require_common6=__commonJS({"../shared/dist/lib/common.js"(t,r){let n,i,a;init_globals();var o,s=Object.create,l=Object.defineProperty,u=Object.getOwnPropertyDescriptor,d=Object.getOwnPropertyNames,c=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty,f=(t,r,n,i)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let a of d(r))h.call(t,a)||a===n||l(t,a,{get:()=>r[a],enumerable:!(i=u(r,a))||i.enumerable});return t},p={};((t,r)=>{for(var n in r)l(t,n,{get:r[n],enumerable:!0})})(p,{defaultRunDirName:()=>es,getMidsceneRunBaseDir:()=>eu,getMidsceneRunDir:()=>el,getMidsceneRunSubDir:()=>ed}),o=p,r.exports=f(l({},"__esModule",{value:!0}),o);var m=require_fs(),g=require_browser3(),b=(a=null!=(n=require_path_browserify())?s(c(n)):{},f(!i&&n&&n.__esModule?a:l(a,"default",{value:n,enumerable:!0}),n)),y="MIDSCENE_OPENAI_INIT_CONFIG_JSON",_="MIDSCENE_MODEL_NAME",v="MIDSCENE_LANGSMITH_DEBUG",A="MIDSCENE_DEBUG_AI_PROFILE",w="MIDSCENE_DEBUG_AI_RESPONSE",x="MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG",E="MIDSCENE_DEBUG_MODE",S="MIDSCENE_MCP_USE_PUPPETEER_MODE",C="MIDSCENE_MCP_ANDROID_MODE",I="MIDSCENE_FORCE_DEEP_THINK",T="MIDSCENE_OPENAI_SOCKS_PROXY",k="MIDSCENE_OPENAI_HTTP_PROXY",P="OPENAI_API_KEY",R="OPENAI_BASE_URL",O="OPENAI_MAX_TOKENS",M="MIDSCENE_ADB_PATH",j="MIDSCENE_ADB_REMOTE_HOST",N="MIDSCENE_ADB_REMOTE_PORT",B="MIDSCENE_ANDROID_IME_STRATEGY",L="MIDSCENE_CACHE",D="MIDSCENE_USE_VLM_UI_TARS",U="MIDSCENE_USE_QWEN_VL",F="MIDSCENE_USE_DOUBAO_VISION",z="MIDSCENE_USE_GEMINI",G="MIDSCENE_USE_VL_MODEL",H="MATCH_BY_POSITION",q="MIDSCENE_REPORT_TAG_NAME",V="MIDSCENE_REPLANNING_CYCLE_LIMIT",W="MIDSCENE_PREFERRED_LANGUAGE",$="MIDSCENE_USE_AZURE_OPENAI",K="MIDSCENE_AZURE_OPENAI_SCOPE",Z="MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON",X="MIDSCENE_CACHE_MAX_FILENAME_LENGTH",Y="AZURE_OPENAI_ENDPOINT",J="AZURE_OPENAI_KEY",Q="AZURE_OPENAI_API_VERSION",ee="AZURE_OPENAI_DEPLOYMENT",et="MIDSCENE_USE_ANTHROPIC_SDK",er="ANTHROPIC_API_KEY",en="MIDSCENE_RUN_DIR",ei="OPENAI_USE_AZURE",ea=()=>(globalThis.midsceneGlobalConfig||(globalThis.midsceneGlobalConfig={[C]:import_browser.default.env[C]||void 0,[y]:import_browser.default.env[y]||void 0,[_]:import_browser.default.env[_]||void 0,[E]:import_browser.default.env[E]||void 0,[I]:import_browser.default.env[I]||void 0,[v]:import_browser.default.env[v]||void 0,[A]:import_browser.default.env[A]||void 0,[w]:import_browser.default.env[w]||void 0,[x]:import_browser.default.env[x]||void 0,[P]:import_browser.default.env[P]||void 0,[R]:import_browser.default.env[R]||void 0,[O]:import_browser.default.env[O]||void 0,[ei]:import_browser.default.env[ei]||void 0,[M]:import_browser.default.env[M]||void 0,[j]:import_browser.default.env[j]||void 0,[N]:import_browser.default.env[N]||void 0,[B]:import_browser.default.env[B]||void 0,[L]:import_browser.default.env[L]||void 0,[H]:import_browser.default.env[H]||void 0,[q]:import_browser.default.env[q]||void 0,[T]:import_browser.default.env[T]||void 0,[k]:import_browser.default.env[k]||void 0,[$]:import_browser.default.env[$]||void 0,[K]:import_browser.default.env[K]||void 0,[Z]:import_browser.default.env[Z]||void 0,[et]:import_browser.default.env[et]||void 0,[D]:import_browser.default.env[D]||void 0,[U]:import_browser.default.env[U]||void 0,[F]:import_browser.default.env[F]||void 0,[z]:import_browser.default.env[z]||void 0,[G]:import_browser.default.env[G]||void 0,[er]:import_browser.default.env[er]||void 0,[Y]:import_browser.default.env[Y]||void 0,[J]:import_browser.default.env[J]||void 0,[Q]:import_browser.default.env[Q]||void 0,[ee]:import_browser.default.env[ee]||void 0,[S]:import_browser.default.env[S]||void 0,[en]:import_browser.default.env[en]||void 0,[W]:import_browser.default.env[W]||void 0,[V]:import_browser.default.env[V]||void 0,[X]:import_browser.default.env[X]||void 0}),globalThis.midsceneGlobalConfig),eo=(require_sha2562(),void 0!==import_browser.default&&import_browser.default.versions?.node),es="midscene_run",el=()=>eo?(t=>{if(t===H)throw Error("MATCH_BY_POSITION is deprecated, use MIDSCENE_USE_VL_MODEL instead");let r=ea()[t];return"string"==typeof r?r.trim():r})(en)||es:"",eu=()=>{if(!eo)return"";let t=b.default.resolve(import_browser.default.cwd(),el());if(!(0,m.existsSync)(t))try{(0,m.mkdirSync)(t,{recursive:!0})}catch(r){t=b.default.join((0,g.tmpdir)(),es),(0,m.mkdirSync)(t,{recursive:!0})}return t},ed=t=>{if(!eo)return"";let r=eu(),n=b.default.join(r,t);return(0,m.existsSync)(n)||(0,m.mkdirSync)(n,{recursive:!0}),n}}}),require_fs2=__commonJS({"../shared/dist/lib/fs.js"(t,r){init_globals();var n,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,s=Object.prototype.hasOwnProperty,l={};((t,r)=>{for(var n in r)i(t,n,{get:r[n],enumerable:!0})})(l,{findNearestPackageJson:()=>m,getElementInfosScriptContent:()=>g,getExtraReturnLogic:()=>b,getRunningPkgInfo:()=>p}),n=l,r.exports=((t,r,n,l)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let u of o(r))s.call(t,u)||u===n||i(t,u,{get:()=>r[u],enumerable:!(l=a(r,u))||l.enumerable});return t})(i({},"__esModule",{value:!0}),n);var u=require_fs(),d=require_path_browserify(),c=(require_sha2562(),"undefined"!=typeof window),h="undefined"!=typeof WorkerGlobalScope,f=(void 0!==import_browser.default&&import_browser.default.versions,{});function p(t){if(c||h)return null;let r=t||import_browser.default.cwd();if(f[r])return f[r];let n=m(r),i=n?(0,d.join)(n,"package.json"):null;if(n&&i){let{name:t,version:a}=JSON.parse((0,u.readFileSync)(i,"utf-8"));return f[r]={name:t||"midscene-unknown-package-name",version:a||"0.0.0",dir:n},f[r]}return{name:"midscene-unknown-package-name",version:"0.0.0",dir:r}}function m(t){let r=(0,d.join)(t,"package.json");if((0,u.existsSync)(r))return t;let n=(0,d.dirname)(t);return n===t?null:m(n)}function g(){return'"use strict";\nvar midscene_element_inspector = (() => {\n var __create = Object.create;\n var __defProp = Object.defineProperty;\n var __defProps = Object.defineProperties;\n var __getOwnPropDesc = Object.getOwnPropertyDescriptor;\n var __getOwnPropDescs = Object.getOwnPropertyDescriptors;\n var __getOwnPropNames = Object.getOwnPropertyNames;\n var __getOwnPropSymbols = Object.getOwnPropertySymbols;\n var __getProtoOf = Object.getPrototypeOf;\n var __hasOwnProp = Object.prototype.hasOwnProperty;\n var __propIsEnum = Object.prototype.propertyIsEnumerable;\n var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\n var __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n };\n var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\n var __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n };\n var __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n };\n var __copyProps = (to, from, except, desc) => {\n if (from && typeof from === "object" || typeof from === "function") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n };\n var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. "__esModule" has not been set), then set\n // "default" to the CommonJS "module.exports" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,\n mod\n ));\n var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);\n\n // resolve-false:/empty-stub\n var require_empty_stub = __commonJS({\n "resolve-false:/empty-stub"(exports, module) {\n "use strict";\n module.exports = {};\n }\n });\n\n // ../../node_modules/.pnpm/js-sha256@0.11.0/node_modules/js-sha256/src/sha256.js\n var require_sha256 = __commonJS({\n "../../node_modules/.pnpm/js-sha256@0.11.0/node_modules/js-sha256/src/sha256.js"(exports, module) {\n "use strict";\n (function() {\n "use strict";\n var ERROR = "input is invalid type";\n var WINDOW = typeof window === "object";\n var root = WINDOW ? window : {};\n if (root.JS_SHA256_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === "object";\n var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === "object" && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && typeof module === "object" && module.exports;\n var AMD = typeof define === "function" && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== "undefined";\n var HEX_CHARS = "0123456789abcdef".split("");\n var EXTRA = [-2147483648, 8388608, 32768, 128];\n var SHIFT = [24, 16, 8, 0];\n var K = [\n 1116352408,\n 1899447441,\n 3049323471,\n 3921009573,\n 961987163,\n 1508970993,\n 2453635748,\n 2870763221,\n 3624381080,\n 310598401,\n 607225278,\n 1426881987,\n 1925078388,\n 2162078206,\n 2614888103,\n 3248222580,\n 3835390401,\n 4022224774,\n 264347078,\n 604807628,\n 770255983,\n 1249150122,\n 1555081692,\n 1996064986,\n 2554220882,\n 2821834349,\n 2952996808,\n 3210313671,\n 3336571891,\n 3584528711,\n 113926993,\n 338241895,\n 666307205,\n 773529912,\n 1294757372,\n 1396182291,\n 1695183700,\n 1986661051,\n 2177026350,\n 2456956037,\n 2730485921,\n 2820302411,\n 3259730800,\n 3345764771,\n 3516065817,\n 3600352804,\n 4094571909,\n 275423344,\n 430227734,\n 506948616,\n 659060556,\n 883997877,\n 958139571,\n 1322822218,\n 1537002063,\n 1747873779,\n 1955562222,\n 2024104815,\n 2227730452,\n 2361852424,\n 2428436474,\n 2756734187,\n 3204031479,\n 3329325298\n ];\n var OUTPUT_TYPES = ["hex", "array", "digest", "arrayBuffer"];\n var blocks = [];\n if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function(obj) {\n return Object.prototype.toString.call(obj) === "[object Array]";\n };\n }\n if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function(obj) {\n return typeof obj === "object" && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n var createOutputMethod = function(outputType, is224) {\n return function(message) {\n return new Sha256(is224, true).update(message)[outputType]();\n };\n };\n var createMethod = function(is224) {\n var method = createOutputMethod("hex", is224);\n if (NODE_JS) {\n method = nodeWrap(method, is224);\n }\n method.create = function() {\n return new Sha256(is224);\n };\n method.update = function(message) {\n return method.create().update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createOutputMethod(type, is224);\n }\n return method;\n };\n var nodeWrap = function(method, is224) {\n var crypto = require_empty_stub();\n var Buffer2 = require_empty_stub().Buffer;\n var algorithm = is224 ? "sha224" : "sha256";\n var bufferFrom;\n if (Buffer2.from && !root.JS_SHA256_NO_BUFFER_FROM) {\n bufferFrom = Buffer2.from;\n } else {\n bufferFrom = function(message) {\n return new Buffer2(message);\n };\n }\n var nodeMethod = function(message) {\n if (typeof message === "string") {\n return crypto.createHash(algorithm).update(message, "utf8").digest("hex");\n } else {\n if (message === null || message === void 0) {\n throw new Error(ERROR);\n } else if (message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n }\n }\n if (Array.isArray(message) || ArrayBuffer.isView(message) || message.constructor === Buffer2) {\n return crypto.createHash(algorithm).update(bufferFrom(message)).digest("hex");\n } else {\n return method(message);\n }\n };\n return nodeMethod;\n };\n var createHmacOutputMethod = function(outputType, is224) {\n return function(key, message) {\n return new HmacSha256(key, is224, true).update(message)[outputType]();\n };\n };\n var createHmacMethod = function(is224) {\n var method = createHmacOutputMethod("hex", is224);\n method.create = function(key) {\n return new HmacSha256(key, is224);\n };\n method.update = function(key, message) {\n return method.create(key).update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createHmacOutputMethod(type, is224);\n }\n return method;\n };\n function Sha256(is224, sharedMemory) {\n if (sharedMemory) {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n this.blocks = blocks;\n } else {\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n if (is224) {\n this.h0 = 3238371032;\n this.h1 = 914150663;\n this.h2 = 812702999;\n this.h3 = 4144912697;\n this.h4 = 4290775857;\n this.h5 = 1750603025;\n this.h6 = 1694076839;\n this.h7 = 3204075428;\n } else {\n this.h0 = 1779033703;\n this.h1 = 3144134277;\n this.h2 = 1013904242;\n this.h3 = 2773480762;\n this.h4 = 1359893119;\n this.h5 = 2600822924;\n this.h6 = 528734635;\n this.h7 = 1541459225;\n }\n this.block = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n this.is224 = is224;\n }\n Sha256.prototype.update = function(message) {\n if (this.finalized) {\n return;\n }\n var notString, type = typeof message;\n if (type !== "string") {\n if (type === "object") {\n if (message === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n notString = true;\n }\n var code, index = 0, i, length = message.length, blocks2 = this.blocks;\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks2[0] = this.block;\n this.block = blocks2[16] = blocks2[1] = blocks2[2] = blocks2[3] = blocks2[4] = blocks2[5] = blocks2[6] = blocks2[7] = blocks2[8] = blocks2[9] = blocks2[10] = blocks2[11] = blocks2[12] = blocks2[13] = blocks2[14] = blocks2[15] = 0;\n }\n if (notString) {\n for (i = this.start; index < length && i < 64; ++index) {\n blocks2[i >>> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 128) {\n blocks2[i >>> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 2048) {\n blocks2[i >>> 2] |= (192 | code >>> 6) << SHIFT[i++ & 3];\n blocks2[i >>> 2] |= (128 | code & 63) << SHIFT[i++ & 3];\n } else if (code < 55296 || code >= 57344) {\n blocks2[i >>> 2] |= (224 | code >>> 12) << SHIFT[i++ & 3];\n blocks2[i >>> 2] |= (128 | code >>> 6 & 63) << SHIFT[i++ & 3];\n blocks2[i >>> 2] |= (128 | code & 63) << SHIFT[i++ & 3];\n } else {\n code = 65536 + ((code & 1023) << 10 | message.charCodeAt(++index) & 1023);\n blocks2[i >>> 2] |= (240 | code >>> 18) << SHIFT[i++ & 3];\n blocks2[i >>> 2] |= (128 | code >>> 12 & 63) << SHIFT[i++ & 3];\n blocks2[i >>> 2] |= (128 | code >>> 6 & 63) << SHIFT[i++ & 3];\n blocks2[i >>> 2] |= (128 | code & 63) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.block = blocks2[16];\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n };\n Sha256.prototype.finalize = function() {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks2 = this.blocks, i = this.lastByteIndex;\n blocks2[16] = this.block;\n blocks2[i >>> 2] |= EXTRA[i & 3];\n this.block = blocks2[16];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks2[0] = this.block;\n blocks2[16] = blocks2[1] = blocks2[2] = blocks2[3] = blocks2[4] = blocks2[5] = blocks2[6] = blocks2[7] = blocks2[8] = blocks2[9] = blocks2[10] = blocks2[11] = blocks2[12] = blocks2[13] = blocks2[14] = blocks2[15] = 0;\n }\n blocks2[14] = this.hBytes << 3 | this.bytes >>> 29;\n blocks2[15] = this.bytes << 3;\n this.hash();\n };\n Sha256.prototype.hash = function() {\n var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6, h = this.h7, blocks2 = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc;\n for (j = 16; j < 64; ++j) {\n t1 = blocks2[j - 15];\n s0 = (t1 >>> 7 | t1 << 25) ^ (t1 >>> 18 | t1 << 14) ^ t1 >>> 3;\n t1 = blocks2[j - 2];\n s1 = (t1 >>> 17 | t1 << 15) ^ (t1 >>> 19 | t1 << 13) ^ t1 >>> 10;\n blocks2[j] = blocks2[j - 16] + s0 + blocks2[j - 7] + s1 << 0;\n }\n bc = b & c;\n for (j = 0; j < 64; j += 4) {\n if (this.first) {\n if (this.is224) {\n ab = 300032;\n t1 = blocks2[0] - 1413257819;\n h = t1 - 150054599 << 0;\n d = t1 + 24177077 << 0;\n } else {\n ab = 704751109;\n t1 = blocks2[0] - 210244248;\n h = t1 - 1521486534 << 0;\n d = t1 + 143694565 << 0;\n }\n this.first = false;\n } else {\n s0 = (a >>> 2 | a << 30) ^ (a >>> 13 | a << 19) ^ (a >>> 22 | a << 10);\n s1 = (e >>> 6 | e << 26) ^ (e >>> 11 | e << 21) ^ (e >>> 25 | e << 7);\n ab = a & b;\n maj = ab ^ a & c ^ bc;\n ch = e & f ^ ~e & g;\n t1 = h + s1 + ch + K[j] + blocks2[j];\n t2 = s0 + maj;\n h = d + t1 << 0;\n d = t1 + t2 << 0;\n }\n s0 = (d >>> 2 | d << 30) ^ (d >>> 13 | d << 19) ^ (d >>> 22 | d << 10);\n s1 = (h >>> 6 | h << 26) ^ (h >>> 11 | h << 21) ^ (h >>> 25 | h << 7);\n da = d & a;\n maj = da ^ d & b ^ ab;\n ch = h & e ^ ~h & f;\n t1 = g + s1 + ch + K[j + 1] + blocks2[j + 1];\n t2 = s0 + maj;\n g = c + t1 << 0;\n c = t1 + t2 << 0;\n s0 = (c >>> 2 | c << 30) ^ (c >>> 13 | c << 19) ^ (c >>> 22 | c << 10);\n s1 = (g >>> 6 | g << 26) ^ (g >>> 11 | g << 21) ^ (g >>> 25 | g << 7);\n cd = c & d;\n maj = cd ^ c & a ^ da;\n ch = g & h ^ ~g & e;\n t1 = f + s1 + ch + K[j + 2] + blocks2[j + 2];\n t2 = s0 + maj;\n f = b + t1 << 0;\n b = t1 + t2 << 0;\n s0 = (b >>> 2 | b << 30) ^ (b >>> 13 | b << 19) ^ (b >>> 22 | b << 10);\n s1 = (f >>> 6 | f << 26) ^ (f >>> 11 | f << 21) ^ (f >>> 25 | f << 7);\n bc = b & c;\n maj = bc ^ b & d ^ cd;\n ch = f & g ^ ~f & h;\n t1 = e + s1 + ch + K[j + 3] + blocks2[j + 3];\n t2 = s0 + maj;\n e = a + t1 << 0;\n a = t1 + t2 << 0;\n this.chromeBugWorkAround = true;\n }\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n this.h4 = this.h4 + e << 0;\n this.h5 = this.h5 + f << 0;\n this.h6 = this.h6 + g << 0;\n this.h7 = this.h7 + h << 0;\n };\n Sha256.prototype.hex = function() {\n this.finalize();\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5, h6 = this.h6, h7 = this.h7;\n var hex = HEX_CHARS[h0 >>> 28 & 15] + HEX_CHARS[h0 >>> 24 & 15] + HEX_CHARS[h0 >>> 20 & 15] + HEX_CHARS[h0 >>> 16 & 15] + HEX_CHARS[h0 >>> 12 & 15] + HEX_CHARS[h0 >>> 8 & 15] + HEX_CHARS[h0 >>> 4 & 15] + HEX_CHARS[h0 & 15] + HEX_CHARS[h1 >>> 28 & 15] + HEX_CHARS[h1 >>> 24 & 15] + HEX_CHARS[h1 >>> 20 & 15] + HEX_CHARS[h1 >>> 16 & 15] + HEX_CHARS[h1 >>> 12 & 15] + HEX_CHARS[h1 >>> 8 & 15] + HEX_CHARS[h1 >>> 4 & 15] + HEX_CHARS[h1 & 15] + HEX_CHARS[h2 >>> 28 & 15] + HEX_CHARS[h2 >>> 24 & 15] + HEX_CHARS[h2 >>> 20 & 15] + HEX_CHARS[h2 >>> 16 & 15] + HEX_CHARS[h2 >>> 12 & 15] + HEX_CHARS[h2 >>> 8 & 15] + HEX_CHARS[h2 >>> 4 & 15] + HEX_CHARS[h2 & 15] + HEX_CHARS[h3 >>> 28 & 15] + HEX_CHARS[h3 >>> 24 & 15] + HEX_CHARS[h3 >>> 20 & 15] + HEX_CHARS[h3 >>> 16 & 15] + HEX_CHARS[h3 >>> 12 & 15] + HEX_CHARS[h3 >>> 8 & 15] + HEX_CHARS[h3 >>> 4 & 15] + HEX_CHARS[h3 & 15] + HEX_CHARS[h4 >>> 28 & 15] + HEX_CHARS[h4 >>> 24 & 15] + HEX_CHARS[h4 >>> 20 & 15] + HEX_CHARS[h4 >>> 16 & 15] + HEX_CHARS[h4 >>> 12 & 15] + HEX_CHARS[h4 >>> 8 & 15] + HEX_CHARS[h4 >>> 4 & 15] + HEX_CHARS[h4 & 15] + HEX_CHARS[h5 >>> 28 & 15] + HEX_CHARS[h5 >>> 24 & 15] + HEX_CHARS[h5 >>> 20 & 15] + HEX_CHARS[h5 >>> 16 & 15] + HEX_CHARS[h5 >>> 12 & 15] + HEX_CHARS[h5 >>> 8 & 15] + HEX_CHARS[h5 >>> 4 & 15] + HEX_CHARS[h5 & 15] + HEX_CHARS[h6 >>> 28 & 15] + HEX_CHARS[h6 >>> 24 & 15] + HEX_CHARS[h6 >>> 20 & 15] + HEX_CHARS[h6 >>> 16 & 15] + HEX_CHARS[h6 >>> 12 & 15] + HEX_CHARS[h6 >>> 8 & 15] + HEX_CHARS[h6 >>> 4 & 15] + HEX_CHARS[h6 & 15];\n if (!this.is224) {\n hex += HEX_CHARS[h7 >>> 28 & 15] + HEX_CHARS[h7 >>> 24 & 15] + HEX_CHARS[h7 >>> 20 & 15] + HEX_CHARS[h7 >>> 16 & 15] + HEX_CHARS[h7 >>> 12 & 15] + HEX_CHARS[h7 >>> 8 & 15] + HEX_CHARS[h7 >>> 4 & 15] + HEX_CHARS[h7 & 15];\n }\n return hex;\n };\n Sha256.prototype.toString = Sha256.prototype.hex;\n Sha256.prototype.digest = function() {\n this.finalize();\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5, h6 = this.h6, h7 = this.h7;\n var arr = [\n h0 >>> 24 & 255,\n h0 >>> 16 & 255,\n h0 >>> 8 & 255,\n h0 & 255,\n h1 >>> 24 & 255,\n h1 >>> 16 & 255,\n h1 >>> 8 & 255,\n h1 & 255,\n h2 >>> 24 & 255,\n h2 >>> 16 & 255,\n h2 >>> 8 & 255,\n h2 & 255,\n h3 >>> 24 & 255,\n h3 >>> 16 & 255,\n h3 >>> 8 & 255,\n h3 & 255,\n h4 >>> 24 & 255,\n h4 >>> 16 & 255,\n h4 >>> 8 & 255,\n h4 & 255,\n h5 >>> 24 & 255,\n h5 >>> 16 & 255,\n h5 >>> 8 & 255,\n h5 & 255,\n h6 >>> 24 & 255,\n h6 >>> 16 & 255,\n h6 >>> 8 & 255,\n h6 & 255\n ];\n if (!this.is224) {\n arr.push(h7 >>> 24 & 255, h7 >>> 16 & 255, h7 >>> 8 & 255, h7 & 255);\n }\n return arr;\n };\n Sha256.prototype.array = Sha256.prototype.digest;\n Sha256.prototype.arrayBuffer = function() {\n this.finalize();\n var buffer = new ArrayBuffer(this.is224 ? 28 : 32);\n var dataView = new DataView(buffer);\n dataView.setUint32(0, this.h0);\n dataView.setUint32(4, this.h1);\n dataView.setUint32(8, this.h2);\n dataView.setUint32(12, this.h3);\n dataView.setUint32(16, this.h4);\n dataView.setUint32(20, this.h5);\n dataView.setUint32(24, this.h6);\n if (!this.is224) {\n dataView.setUint32(28, this.h7);\n }\n return buffer;\n };\n function HmacSha256(key, is224, sharedMemory) {\n var i, type = typeof key;\n if (type === "string") {\n var bytes = [], length = key.length, index = 0, code;\n for (i = 0; i < length; ++i) {\n code = key.charCodeAt(i);\n if (code < 128) {\n bytes[index++] = code;\n } else if (code < 2048) {\n bytes[index++] = 192 | code >>> 6;\n bytes[index++] = 128 | code & 63;\n } else if (code < 55296 || code >= 57344) {\n bytes[index++] = 224 | code >>> 12;\n bytes[index++] = 128 | code >>> 6 & 63;\n bytes[index++] = 128 | code & 63;\n } else {\n code = 65536 + ((code & 1023) << 10 | key.charCodeAt(++i) & 1023);\n bytes[index++] = 240 | code >>> 18;\n bytes[index++] = 128 | code >>> 12 & 63;\n bytes[index++] = 128 | code >>> 6 & 63;\n bytes[index++] = 128 | code & 63;\n }\n }\n key = bytes;\n } else {\n if (type === "object") {\n if (key === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) {\n key = new Uint8Array(key);\n } else if (!Array.isArray(key)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n }\n if (key.length > 64) {\n key = new Sha256(is224, true).update(key).array();\n }\n var oKeyPad = [], iKeyPad = [];\n for (i = 0; i < 64; ++i) {\n var b = key[i] || 0;\n oKeyPad[i] = 92 ^ b;\n iKeyPad[i] = 54 ^ b;\n }\n Sha256.call(this, is224, sharedMemory);\n this.update(iKeyPad);\n this.oKeyPad = oKeyPad;\n this.inner = true;\n this.sharedMemory = sharedMemory;\n }\n HmacSha256.prototype = new Sha256();\n HmacSha256.prototype.finalize = function() {\n Sha256.prototype.finalize.call(this);\n if (this.inner) {\n this.inner = false;\n var innerHash = this.array();\n Sha256.call(this, this.is224, this.sharedMemory);\n this.update(this.oKeyPad);\n this.update(innerHash);\n Sha256.prototype.finalize.call(this);\n }\n };\n var exports2 = createMethod();\n exports2.sha256 = exports2;\n exports2.sha224 = createMethod(true);\n exports2.sha256.hmac = createHmacMethod();\n exports2.sha224.hmac = createHmacMethod(true);\n if (COMMON_JS) {\n module.exports = exports2;\n } else {\n root.sha256 = exports2.sha256;\n root.sha224 = exports2.sha224;\n if (AMD) {\n define(function() {\n return exports2;\n });\n }\n }\n })();\n }\n });\n\n // src/extractor/index.ts\n var extractor_exports = {};\n __export(extractor_exports, {\n descriptionOfTree: () => descriptionOfTree,\n generateElementByPosition: () => generateElementByPosition,\n getElementInfoByXpath: () => getElementInfoByXpath,\n getElementXpath: () => getElementXpath,\n getNodeFromCacheList: () => getNodeFromCacheList,\n getNodeInfoByXpath: () => getNodeInfoByXpath,\n getXpathsById: () => getXpathsById,\n getXpathsByPoint: () => getXpathsByPoint,\n isNotContainerElement: () => isNotContainerElement,\n setNodeHashCacheListOnWindow: () => setNodeHashCacheListOnWindow,\n traverseTree: () => traverseTree,\n treeToList: () => treeToList,\n trimAttributes: () => trimAttributes,\n truncateText: () => truncateText,\n webExtractNodeTree: () => extractTreeNode,\n webExtractNodeTreeAsString: () => extractTreeNodeAsString,\n webExtractTextWithPosition: () => extractTextWithPosition\n });\n\n // src/extractor/tree.ts\n function truncateText(text, maxLength = 150) {\n if (typeof text === "undefined") {\n return "";\n }\n if (typeof text === "object") {\n text = JSON.stringify(text);\n }\n if (typeof text === "number") {\n return text.toString();\n }\n if (typeof text === "string" && text.length > maxLength) {\n return `${text.slice(0, maxLength)}...`;\n }\n if (typeof text === "string") {\n return text.trim();\n }\n return "";\n }\n function trimAttributes(attributes, truncateTextLength) {\n const tailorAttributes = Object.keys(attributes).reduce(\n (res, currentKey) => {\n const attributeVal = attributes[currentKey];\n if (currentKey === "style" || currentKey === "htmlTagName" || currentKey === "nodeType") {\n return res;\n }\n res[currentKey] = truncateText(attributeVal, truncateTextLength);\n return res;\n },\n {}\n );\n return tailorAttributes;\n }\n var nodeSizeThreshold = 4;\n function descriptionOfTree(tree, truncateTextLength, filterNonTextContent = false, visibleOnly = true) {\n const attributesString = (kv) => {\n return Object.entries(kv).map(\n ([key, value]) => `${key}="${truncateText(value, truncateTextLength)}"`\n ).join(" ");\n };\n function buildContentTree(node, indent = 0, visibleOnly2 = true) {\n var _a2;\n let before = "";\n let contentWithIndent = "";\n let after = "";\n let emptyNode = true;\n const indentStr = " ".repeat(indent);\n let children = "";\n for (let i = 0; i < (node.children || []).length; i++) {\n const childContent = buildContentTree(\n node.children[i],\n indent + 1,\n visibleOnly2\n );\n if (childContent) {\n children += `\n${childContent}`;\n }\n }\n if (node.node && node.node.rect.width > nodeSizeThreshold && node.node.rect.height > nodeSizeThreshold && (!filterNonTextContent || filterNonTextContent && node.node.content) && (!visibleOnly2 || visibleOnly2 && node.node.isVisible)) {\n emptyNode = false;\n let nodeTypeString;\n if ((_a2 = node.node.attributes) == null ? void 0 : _a2.htmlTagName) {\n nodeTypeString = node.node.attributes.htmlTagName.replace(/[<>]/g, "");\n } else {\n nodeTypeString = node.node.attributes.nodeType.replace(/\\sNode$/, "").toLowerCase();\n }\n const markerId = node.node.indexId;\n const markerIdString = markerId ? `markerId="${markerId}"` : "";\n const rectAttribute = node.node.rect ? {\n left: node.node.rect.left,\n top: node.node.rect.top,\n width: node.node.rect.width,\n height: node.node.rect.height\n } : {};\n before = `<${nodeTypeString} id="${node.node.id}" ${markerIdString} ${attributesString(trimAttributes(node.node.attributes || {}, truncateTextLength))} ${attributesString(rectAttribute)}>`;\n const content = truncateText(node.node.content, truncateTextLength);\n contentWithIndent = content ? `\n${indentStr} ${content}` : "";\n after = `</${nodeTypeString}>`;\n } else if (!filterNonTextContent) {\n if (!children.trim().startsWith("<>")) {\n before = "<>";\n contentWithIndent = "";\n after = "</>";\n }\n }\n if (emptyNode && !children.trim()) {\n return "";\n }\n const result2 = `${indentStr}${before}${contentWithIndent}${children}\n${indentStr}${after}`;\n if (result2.trim()) {\n return result2;\n }\n return "";\n }\n const result = buildContentTree(tree, 0, visibleOnly);\n return result.replace(/^\\s*\\n/gm, "");\n }\n function treeToList(tree) {\n const result = [];\n function dfs(node) {\n if (node.node) {\n result.push(node.node);\n }\n for (const child of node.children) {\n dfs(child);\n }\n }\n dfs(tree);\n return result;\n }\n function traverseTree(tree, onNode) {\n function dfs(node) {\n if (node.node) {\n node.node = onNode(node.node);\n }\n for (const child of node.children) {\n dfs(child);\n }\n }\n dfs(tree);\n return tree;\n }\n\n // src/constants/index.ts\n var CONTAINER_MINI_HEIGHT = 3;\n var CONTAINER_MINI_WIDTH = 3;\n\n // src/utils.ts\n var import_js_sha256 = __toESM(require_sha256());\n var _a;\n var ifInNode = typeof process !== "undefined" && ((_a = process.versions) == null ? void 0 : _a.node);\n var hashMap = {};\n function generateHashId(rect, content = "") {\n const combined = JSON.stringify({\n content,\n rect\n });\n let sliceLength = 5;\n let slicedHash = "";\n const hashHex = import_js_sha256.sha256.create().update(combined).hex();\n const toLetters = (hex) => {\n return hex.split("").map((char) => {\n const code = Number.parseInt(char, 16);\n return String.fromCharCode(97 + code % 26);\n }).join("");\n };\n const hashLetters = toLetters(hashHex);\n while (sliceLength < hashLetters.length - 1) {\n slicedHash = hashLetters.slice(0, sliceLength);\n if (hashMap[slicedHash] && hashMap[slicedHash] !== combined) {\n sliceLength++;\n continue;\n }\n hashMap[slicedHash] = combined;\n break;\n }\n return slicedHash;\n }\n\n // src/extractor/dom-util.ts\n function isFormElement(node) {\n return node instanceof HTMLElement && (node.tagName.toLowerCase() === "input" || node.tagName.toLowerCase() === "textarea" || node.tagName.toLowerCase() === "select" || node.tagName.toLowerCase() === "option");\n }\n function isButtonElement(node) {\n return node instanceof HTMLElement && node.tagName.toLowerCase() === "button";\n }\n function isAElement(node) {\n return node instanceof HTMLElement && node.tagName.toLowerCase() === "a";\n }\n function isSvgElement(node) {\n return node instanceof SVGElement;\n }\n function isImgElement(node) {\n if (!includeBaseElement(node) && node instanceof Element) {\n const computedStyle = window.getComputedStyle(node);\n const backgroundImage = computedStyle.getPropertyValue("background-image");\n if (backgroundImage !== "none") {\n return true;\n }\n }\n if (isIconfont(node)) {\n return true;\n }\n return node instanceof HTMLElement && node.tagName.toLowerCase() === "img" || node instanceof SVGElement && node.tagName.toLowerCase() === "svg";\n }\n function isIconfont(node) {\n if (node instanceof Element) {\n const computedStyle = window.getComputedStyle(node);\n const fontFamilyValue = computedStyle.fontFamily || "";\n return fontFamilyValue.toLowerCase().indexOf("iconfont") >= 0;\n }\n return false;\n }\n function isNotContainerElement(node) {\n return isTextElement(node) || isIconfont(node) || isImgElement(node) || isButtonElement(node) || isAElement(node) || isFormElement(node);\n }\n function isTextElement(node) {\n var _a2, _b, _c;\n if (node instanceof Element) {\n if (((_a2 = node == null ? void 0 : node.childNodes) == null ? void 0 : _a2.length) === 1 && (node == null ? void 0 : node.childNodes[0]) instanceof Text) {\n return true;\n }\n }\n return ((_c = (_b = node.nodeName) == null ? void 0 : _b.toLowerCase) == null ? void 0 : _c.call(_b)) === "#text" && !isIconfont(node);\n }\n function isContainerElement(node) {\n if (!(node instanceof HTMLElement))\n return false;\n if (includeBaseElement(node)) {\n return false;\n }\n const computedStyle = window.getComputedStyle(node);\n const backgroundColor = computedStyle.getPropertyValue("background-color");\n if (backgroundColor) {\n return true;\n }\n return false;\n }\n function includeBaseElement(node) {\n if (!(node instanceof HTMLElement))\n return false;\n if (node.innerText) {\n return true;\n }\n const includeList = [\n "svg",\n "button",\n "input",\n "textarea",\n "select",\n "option",\n "img",\n "a"\n ];\n for (const tagName of includeList) {\n const element = node.querySelectorAll(tagName);\n if (element.length > 0) {\n return true;\n }\n }\n return false;\n }\n function generateElementByPosition(position) {\n const rect = {\n left: Math.max(position.x - 4, 0),\n top: Math.max(position.y - 4, 0),\n width: 8,\n height: 8\n };\n const id = generateHashId(rect);\n const element = {\n id,\n attributes: { nodeType: "POSITION Node" /* POSITION */ },\n rect,\n content: "",\n center: [position.x, position.y]\n };\n return element;\n }\n\n // src/extractor/util.ts\n var MAX_VALUE_LENGTH = 300;\n var debugMode = false;\n function setDebugMode(mode) {\n debugMode = mode;\n }\n function logger(..._msg) {\n if (!debugMode) {\n return;\n }\n console.log(..._msg);\n }\n function isElementPartiallyInViewport(rect, currentWindow, currentDocument, visibleAreaRatio = 2 / 3) {\n const elementHeight = rect.height;\n const elementWidth = rect.width;\n const viewportRect = {\n left: 0,\n top: 0,\n width: currentWindow.innerWidth || currentDocument.documentElement.clientWidth,\n height: currentWindow.innerHeight || currentDocument.documentElement.clientHeight,\n right: currentWindow.innerWidth || currentDocument.documentElement.clientWidth,\n bottom: currentWindow.innerHeight || currentDocument.documentElement.clientHeight,\n x: 0,\n y: 0,\n zoom: 1\n };\n const overlapRect = overlappedRect(rect, viewportRect);\n if (!overlapRect) {\n return false;\n }\n const visibleArea = overlapRect.width * overlapRect.height;\n const totalArea = elementHeight * elementWidth;\n return visibleArea / totalArea >= visibleAreaRatio;\n }\n function getPseudoElementContent(element, currentWindow) {\n if (!(element instanceof currentWindow.HTMLElement)) {\n return { before: "", after: "" };\n }\n const beforeContent = currentWindow.getComputedStyle(element, "::before").getPropertyValue("content");\n const afterContent = currentWindow.getComputedStyle(element, "::after").getPropertyValue("content");\n return {\n before: beforeContent === "none" ? "" : beforeContent.replace(/"/g, ""),\n after: afterContent === "none" ? "" : afterContent.replace(/"/g, "")\n };\n }\n function overlappedRect(rect1, rect2) {\n const left = Math.max(rect1.left, rect2.left);\n const top = Math.max(rect1.top, rect2.top);\n const right = Math.min(rect1.right, rect2.right);\n const bottom = Math.min(rect1.bottom, rect2.bottom);\n if (left < right && top < bottom) {\n return {\n left,\n top,\n right,\n bottom,\n width: right - left,\n height: bottom - top,\n x: left,\n y: top,\n zoom: 1\n };\n }\n return null;\n }\n function getRect(el, baseZoom, currentWindow) {\n let originalRect;\n let newZoom = 1;\n if (!(el instanceof currentWindow.HTMLElement)) {\n const range = currentWindow.document.createRange();\n range.selectNodeContents(el);\n originalRect = range.getBoundingClientRect();\n } else {\n originalRect = el.getBoundingClientRect();\n if (!("currentCSSZoom" in el)) {\n newZoom = Number.parseFloat(currentWindow.getComputedStyle(el).zoom) || 1;\n }\n }\n const zoom = newZoom * baseZoom;\n return {\n width: originalRect.width * zoom,\n height: originalRect.height * zoom,\n left: originalRect.left * zoom,\n top: originalRect.top * zoom,\n right: originalRect.right * zoom,\n bottom: originalRect.bottom * zoom,\n x: originalRect.x * zoom,\n y: originalRect.y * zoom,\n zoom\n };\n }\n var isElementCovered = (el, rect, currentWindow) => {\n const x = rect.left + rect.width / 2;\n const y = rect.top + rect.height / 2;\n const topElement = currentWindow.document.elementFromPoint(x, y);\n if (!topElement) {\n return false;\n }\n if (topElement === el) {\n return false;\n }\n if (el == null ? void 0 : el.contains(topElement)) {\n return false;\n }\n if (topElement == null ? void 0 : topElement.contains(el)) {\n return false;\n }\n const rectOfTopElement = getRect(topElement, 1, currentWindow);\n const overlapRect = overlappedRect(rect, rectOfTopElement);\n if (!overlapRect) {\n return false;\n }\n logger(el, "Element is covered by another element", {\n topElement,\n el,\n rect,\n x,\n y\n });\n return true;\n };\n function elementRect(el, currentWindow, currentDocument, baseZoom = 1) {\n if (!el) {\n logger(el, "Element is not in the DOM hierarchy");\n return false;\n }\n if (!(el instanceof currentWindow.HTMLElement) && el.nodeType !== Node.TEXT_NODE && el.nodeName.toLowerCase() !== "svg") {\n logger(el, "Element is not in the DOM hierarchy");\n return false;\n }\n if (el instanceof currentWindow.HTMLElement) {\n const style = currentWindow.getComputedStyle(el);\n if (style.display === "none" || style.visibility === "hidden" || style.opacity === "0" && el.tagName !== "INPUT") {\n logger(el, "Element is hidden");\n return false;\n }\n }\n const rect = getRect(el, baseZoom, currentWindow);\n if (rect.width === 0 && rect.height === 0) {\n logger(el, "Element has no size");\n return false;\n }\n if (baseZoom === 1 && isElementCovered(el, rect, currentWindow)) {\n return false;\n }\n const isVisible = isElementPartiallyInViewport(\n rect,\n currentWindow,\n currentDocument\n );\n let parent = el;\n const parentUntilNonStatic = (currentNode) => {\n let parent2 = currentNode == null ? void 0 : currentNode.parentElement;\n while (parent2) {\n const style = currentWindow.getComputedStyle(parent2);\n if (style.position !== "static") {\n return parent2;\n }\n parent2 = parent2.parentElement;\n }\n return null;\n };\n while (parent && parent !== currentDocument.body) {\n if (!(parent instanceof currentWindow.HTMLElement)) {\n parent = parent.parentElement;\n continue;\n }\n const parentStyle = currentWindow.getComputedStyle(parent);\n if (parentStyle.overflow === "hidden") {\n const parentRect = getRect(parent, 1, currentWindow);\n const tolerance = 10;\n if (rect.right < parentRect.left - tolerance || rect.left > parentRect.right + tolerance || rect.bottom < parentRect.top - tolerance || rect.top > parentRect.bottom + tolerance) {\n logger(el, "element is partially or totally hidden by an ancestor", {\n rect,\n parentRect\n });\n return false;\n }\n }\n if (parentStyle.position === "fixed" || parentStyle.position === "sticky") {\n break;\n }\n if (parentStyle.position === "absolute") {\n parent = parentUntilNonStatic(parent);\n } else {\n parent = parent.parentElement;\n }\n }\n return {\n left: Math.round(rect.left),\n top: Math.round(rect.top),\n width: Math.round(rect.width),\n height: Math.round(rect.height),\n zoom: rect.zoom,\n isVisible\n };\n }\n function getNodeAttributes(node, currentWindow) {\n if (!node || !(node instanceof currentWindow.HTMLElement) || !node.attributes) {\n return {};\n }\n const attributesList = Array.from(node.attributes).map((attr) => {\n if (attr.name === "class") {\n return [attr.name, `.${attr.value.split(" ").join(".")}`];\n }\n if (!attr.value) {\n return [];\n }\n let value = attr.value;\n if (value.startsWith("data:image")) {\n value = "image";\n }\n if (value.length > MAX_VALUE_LENGTH) {\n value = `${value.slice(0, MAX_VALUE_LENGTH)}...`;\n }\n return [attr.name, value];\n });\n return Object.fromEntries(attributesList);\n }\n function midsceneGenerateHash(node, content, rect) {\n const slicedHash = generateHashId(rect, content);\n if (node) {\n if (!window.midsceneNodeHashCacheList) {\n setNodeHashCacheListOnWindow();\n }\n setNodeToCacheList(node, slicedHash);\n }\n return slicedHash;\n }\n function setNodeHashCacheListOnWindow() {\n if (typeof window !== "undefined") {\n window.midsceneNodeHashCacheList = [];\n }\n }\n function setNodeToCacheList(node, id) {\n var _a2;\n if (typeof window !== "undefined") {\n if (getNodeFromCacheList(id)) {\n return;\n }\n (_a2 = window.midsceneNodeHashCacheList) == null ? void 0 : _a2.push({ node, id });\n }\n }\n function getNodeFromCacheList(id) {\n var _a2, _b;\n if (typeof window !== "undefined") {\n return (_b = (_a2 = window.midsceneNodeHashCacheList) == null ? void 0 : _a2.find(\n (item) => item.id === id\n )) == null ? void 0 : _b.node;\n }\n return null;\n }\n function getTopDocument() {\n const container = document.body || document;\n return container;\n }\n\n // src/extractor/web-extractor.ts\n var indexId = 0;\n function tagNameOfNode(node) {\n var _a2, _b;\n let tagName = "";\n if (node instanceof HTMLElement) {\n tagName = (_a2 = node.tagName) == null ? void 0 : _a2.toLowerCase();\n } else {\n const parentElement = node.parentElement;\n if (parentElement && parentElement instanceof HTMLElement) {\n tagName = (_b = parentElement.tagName) == null ? void 0 : _b.toLowerCase();\n }\n }\n return tagName ? `<${tagName}>` : "";\n }\n function collectElementInfo(node, currentWindow, currentDocument, baseZoom = 1, basePoint = { left: 0, top: 0 }, isContainer = false) {\n var _a2, _b;\n const rect = elementRect(node, currentWindow, currentDocument, baseZoom);\n if (!rect) {\n return null;\n }\n if (rect.width < CONTAINER_MINI_WIDTH || rect.height < CONTAINER_MINI_HEIGHT) {\n return null;\n }\n if (basePoint.left !== 0 || basePoint.top !== 0) {\n rect.left += basePoint.left;\n rect.top += basePoint.top;\n }\n if (rect.height >= window.innerHeight && rect.width >= window.innerWidth) {\n return null;\n }\n if (isFormElement(node)) {\n const attributes = getNodeAttributes(node, currentWindow);\n let valueContent = attributes.value || attributes.placeholder || node.textContent || "";\n const nodeHashId = midsceneGenerateHash(node, valueContent, rect);\n const tagName = node.tagName.toLowerCase();\n if (node.tagName.toLowerCase() === "select") {\n const selectedOption = node.options[node.selectedIndex];\n valueContent = (selectedOption == null ? void 0 : selectedOption.textContent) || "";\n }\n if ((node.tagName.toLowerCase() === "input" || node.tagName.toLowerCase() === "textarea") && node.value) {\n valueContent = node.value;\n }\n const elementInfo = {\n id: nodeHashId,\n nodeHashId,\n nodeType: "FORM_ITEM Node" /* FORM_ITEM */,\n indexId: indexId++,\n attributes: __spreadProps(__spreadValues({}, attributes), {\n htmlTagName: `<${tagName}>`,\n nodeType: "FORM_ITEM Node" /* FORM_ITEM */\n }),\n content: valueContent.trim(),\n rect,\n center: [\n Math.round(rect.left + rect.width / 2),\n Math.round(rect.top + rect.height / 2)\n ],\n zoom: rect.zoom,\n isVisible: rect.isVisible\n };\n return elementInfo;\n }\n if (isButtonElement(node)) {\n const rect2 = mergeElementAndChildrenRects(\n node,\n currentWindow,\n currentDocument,\n baseZoom\n );\n if (!rect2) {\n return null;\n }\n const attributes = getNodeAttributes(node, currentWindow);\n const pseudo = getPseudoElementContent(node, currentWindow);\n const content = node.innerText || pseudo.before || pseudo.after || "";\n const nodeHashId = midsceneGenerateHash(node, content, rect2);\n const elementInfo = {\n id: nodeHashId,\n indexId: indexId++,\n nodeHashId,\n nodeType: "BUTTON Node" /* BUTTON */,\n attributes: __spreadProps(__spreadValues({}, attributes), {\n htmlTagName: tagNameOfNode(node),\n nodeType: "BUTTON Node" /* BUTTON */\n }),\n content,\n rect: rect2,\n center: [\n Math.round(rect2.left + rect2.width / 2),\n Math.round(rect2.top + rect2.height / 2)\n ],\n zoom: rect2.zoom,\n isVisible: rect2.isVisible\n };\n return elementInfo;\n }\n if (isImgElement(node)) {\n const attributes = getNodeAttributes(node, currentWindow);\n const nodeHashId = midsceneGenerateHash(node, "", rect);\n const elementInfo = {\n id: nodeHashId,\n indexId: indexId++,\n nodeHashId,\n attributes: __spreadProps(__spreadValues(__spreadValues({}, attributes), ((_a2 = node.nodeName) == null ? void 0 : _a2.toLowerCase()) === "svg" ? {\n svgContent: "true"\n } : {}), {\n nodeType: "IMG Node" /* IMG */,\n htmlTagName: tagNameOfNode(node)\n }),\n nodeType: "IMG Node" /* IMG */,\n content: "",\n rect,\n center: [\n Math.round(rect.left + rect.width / 2),\n Math.round(rect.top + rect.height / 2)\n ],\n zoom: rect.zoom,\n isVisible: rect.isVisible\n };\n return elementInfo;\n }\n if (isTextElement(node)) {\n const text = (_b = node.textContent) == null ? void 0 : _b.trim().replace(/\\n+/g, " ");\n if (!text) {\n return null;\n }\n const attributes = getNodeAttributes(node, currentWindow);\n const attributeKeys = Object.keys(attributes);\n if (!text.trim() && attributeKeys.length === 0) {\n return null;\n }\n const nodeHashId = midsceneGenerateHash(node, text, rect);\n const elementInfo = {\n id: nodeHashId,\n indexId: indexId++,\n nodeHashId,\n nodeType: "TEXT Node" /* TEXT */,\n attributes: __spreadProps(__spreadValues({}, attributes), {\n nodeType: "TEXT Node" /* TEXT */,\n htmlTagName: tagNameOfNode(node)\n }),\n center: [\n Math.round(rect.left + rect.width / 2),\n Math.round(rect.top + rect.height / 2)\n ],\n content: text,\n rect,\n zoom: rect.zoom,\n isVisible: rect.isVisible\n };\n return elementInfo;\n }\n if (isAElement(node)) {\n const attributes = getNodeAttributes(node, currentWindow);\n const pseudo = getPseudoElementContent(node, currentWindow);\n const content = node.innerText || pseudo.before || pseudo.after || "";\n const nodeHashId = midsceneGenerateHash(node, content, rect);\n const elementInfo = {\n id: nodeHashId,\n indexId: indexId++,\n nodeHashId,\n nodeType: "Anchor Node" /* A */,\n attributes: __spreadProps(__spreadValues({}, attributes), {\n htmlTagName: tagNameOfNode(node),\n nodeType: "Anchor Node" /* A */\n }),\n content,\n rect,\n center: [\n Math.round(rect.left + rect.width / 2),\n Math.round(rect.top + rect.height / 2)\n ],\n zoom: rect.zoom,\n isVisible: rect.isVisible\n };\n return elementInfo;\n }\n if (isContainerElement(node) || isContainer) {\n const attributes = getNodeAttributes(node, currentWindow);\n const nodeHashId = midsceneGenerateHash(node, "", rect);\n const elementInfo = {\n id: nodeHashId,\n nodeHashId,\n indexId: indexId++,\n nodeType: "CONTAINER Node" /* CONTAINER */,\n attributes: __spreadProps(__spreadValues({}, attributes), {\n nodeType: "CONTAINER Node" /* CONTAINER */,\n htmlTagName: tagNameOfNode(node)\n }),\n content: "",\n rect,\n center: [\n Math.round(rect.left + rect.width / 2),\n Math.round(rect.top + rect.height / 2)\n ],\n zoom: rect.zoom,\n isVisible: rect.isVisible\n };\n return elementInfo;\n }\n return null;\n }\n function extractTextWithPosition(initNode, debugMode2 = false) {\n const elementNode = extractTreeNode(initNode, debugMode2);\n const elementInfoArray = [];\n function dfsTopChildren(node) {\n if (node.node) {\n elementInfoArray.push(node.node);\n }\n for (let i = 0; i < node.children.length; i++) {\n dfsTopChildren(node.children[i]);\n }\n }\n dfsTopChildren({ children: elementNode.children, node: elementNode.node });\n return elementInfoArray;\n }\n function extractTreeNodeAsString(initNode, visibleOnly = false, debugMode2 = false) {\n const elementNode = extractTreeNode(initNode, debugMode2);\n return descriptionOfTree(elementNode, void 0, false, visibleOnly);\n }\n function extractTreeNode(initNode, debugMode2 = false) {\n setDebugMode(debugMode2);\n indexId = 0;\n const topDocument = getTopDocument();\n const startNode = initNode || topDocument;\n const topChildren = [];\n function dfs(node, currentWindow, currentDocument, baseZoom = 1, basePoint = { left: 0, top: 0 }) {\n if (!node) {\n return null;\n }\n if (node.nodeType && node.nodeType === 10) {\n return null;\n }\n const elementInfo = collectElementInfo(\n node,\n currentWindow,\n currentDocument,\n baseZoom,\n basePoint\n );\n if (node instanceof currentWindow.HTMLIFrameElement) {\n if (node.contentWindow && node.contentWindow) {\n return null;\n }\n }\n const nodeInfo = {\n node: elementInfo,\n children: []\n };\n if ((elementInfo == null ? void 0 : elementInfo.nodeType) === "BUTTON Node" /* BUTTON */ || (elementInfo == null ? void 0 : elementInfo.nodeType) === "IMG Node" /* IMG */ || (elementInfo == null ? void 0 : elementInfo.nodeType) === "TEXT Node" /* TEXT */ || (elementInfo == null ? void 0 : elementInfo.nodeType) === "FORM_ITEM Node" /* FORM_ITEM */ || (elementInfo == null ? void 0 : elementInfo.nodeType) === "CONTAINER Node" /* CONTAINER */) {\n return nodeInfo;\n }\n const rect = getRect(node, baseZoom, currentWindow);\n for (let i = 0; i < node.childNodes.length; i++) {\n logger("will dfs", node.childNodes[i]);\n const childNodeInfo = dfs(\n node.childNodes[i],\n currentWindow,\n currentDocument,\n rect.zoom,\n basePoint\n );\n if (Array.isArray(childNodeInfo)) {\n nodeInfo.children.push(...childNodeInfo);\n } else if (childNodeInfo) {\n nodeInfo.children.push(childNodeInfo);\n }\n }\n if (nodeInfo.node === null) {\n if (nodeInfo.children.length === 0) {\n return null;\n }\n return nodeInfo.children;\n }\n return nodeInfo;\n }\n const rootNodeInfo = dfs(startNode, window, document, 1, {\n left: 0,\n top: 0\n });\n if (Array.isArray(rootNodeInfo)) {\n topChildren.push(...rootNodeInfo);\n } else if (rootNodeInfo) {\n topChildren.push(rootNodeInfo);\n }\n if (startNode === topDocument) {\n const iframes = document.querySelectorAll("iframe");\n for (let i = 0; i < iframes.length; i++) {\n const iframe = iframes[i];\n if (iframe.contentDocument && iframe.contentWindow) {\n const iframeInfo = collectElementInfo(iframe, window, document, 1);\n if (iframeInfo) {\n const iframeChildren = dfs(\n iframe.contentDocument.body,\n iframe.contentWindow,\n iframe.contentDocument,\n 1,\n {\n left: iframeInfo.rect.left,\n top: iframeInfo.rect.top\n }\n );\n if (Array.isArray(iframeChildren)) {\n topChildren.push(...iframeChildren);\n } else if (iframeChildren) {\n topChildren.push(iframeChildren);\n }\n }\n }\n }\n }\n return {\n node: null,\n children: topChildren\n };\n }\n function mergeElementAndChildrenRects(node, currentWindow, currentDocument, baseZoom = 1) {\n const selfRect = elementRect(node, currentWindow, currentDocument, baseZoom);\n if (!selfRect)\n return null;\n let minLeft = selfRect.left;\n let minTop = selfRect.top;\n let maxRight = selfRect.left + selfRect.width;\n let maxBottom = selfRect.top + selfRect.height;\n function traverse(child) {\n for (let i = 0; i < child.childNodes.length; i++) {\n const sub = child.childNodes[i];\n if (sub.nodeType === 1) {\n const rect = elementRect(sub, currentWindow, currentDocument, baseZoom);\n if (rect) {\n minLeft = Math.min(minLeft, rect.left);\n minTop = Math.min(minTop, rect.top);\n maxRight = Math.max(maxRight, rect.left + rect.width);\n maxBottom = Math.max(maxBottom, rect.top + rect.height);\n }\n traverse(sub);\n }\n }\n }\n traverse(node);\n return __spreadProps(__spreadValues({}, selfRect), {\n left: minLeft,\n top: minTop,\n width: maxRight - minLeft,\n height: maxBottom - minTop\n });\n }\n\n // src/extractor/locator.ts\n var getElementXpathIndex = (element) => {\n let index = 1;\n let prev = element.previousElementSibling;\n while (prev) {\n if (prev.nodeName.toLowerCase() === element.nodeName.toLowerCase()) {\n index++;\n }\n prev = prev.previousElementSibling;\n }\n return index;\n };\n var normalizeXpathText = (text) => {\n if (typeof text !== "string") {\n return "";\n }\n return text.replace(/\\s+/g, " ").trim();\n };\n var buildCurrentElementXpath = (element, isOrderSensitive, isLeafElement) => {\n var _a2;\n const parentPath = element.parentNode ? getElementXpath(element.parentNode, isOrderSensitive) : "";\n const prefix = parentPath ? `${parentPath}/` : "/";\n const tagName = element.nodeName.toLowerCase();\n const textContent = (_a2 = element.textContent) == null ? void 0 : _a2.trim();\n if (isOrderSensitive) {\n const index2 = getElementXpathIndex(element);\n return `${prefix}${tagName}[${index2}]`;\n }\n if (isLeafElement && textContent) {\n return `${prefix}${tagName}[normalize-space()="${normalizeXpathText(textContent)}"]`;\n }\n const index = getElementXpathIndex(element);\n return `${prefix}${tagName}[${index}]`;\n };\n var getElementXpath = (element, isOrderSensitive = false, isLeafElement = false) => {\n var _a2;\n if (element.nodeType === Node.TEXT_NODE) {\n const parentNode = element.parentNode;\n if (parentNode && parentNode.nodeType === Node.ELEMENT_NODE) {\n const parentXPath = getElementXpath(parentNode, isOrderSensitive, true);\n const textContent = (_a2 = element.textContent) == null ? void 0 : _a2.trim();\n if (textContent) {\n return `${parentXPath}/text()[normalize-space()="${normalizeXpathText(textContent)}"]`;\n }\n return `${parentXPath}/text()`;\n }\n return "";\n }\n if (element.nodeType !== Node.ELEMENT_NODE)\n return "";\n const el = element;\n if (el === document.documentElement)\n return "/html";\n if (el === document.body)\n return "/html/body";\n if (isSvgElement(el)) {\n let parent = el.parentNode;\n while (parent && parent.nodeType === Node.ELEMENT_NODE) {\n if (!isSvgElement(parent)) {\n return getElementXpath(parent, isOrderSensitive, isLeafElement);\n }\n parent = parent.parentNode;\n }\n return getElementXpath(el.parentNode, isOrderSensitive, isLeafElement);\n }\n return buildCurrentElementXpath(el, isOrderSensitive, isLeafElement);\n };\n function getXpathsById(id) {\n const node = getNodeFromCacheList(id);\n if (!node) {\n return null;\n }\n const fullXPath = getElementXpath(node, false, true);\n return [fullXPath];\n }\n function getXpathsByPoint(point, isOrderSensitive) {\n const element = document.elementFromPoint(point.left, point.top);\n if (!element) {\n return null;\n }\n const fullXPath = getElementXpath(element, isOrderSensitive, true);\n return [fullXPath];\n }\n function getNodeInfoByXpath(xpath) {\n const xpathResult = document.evaluate(\n xpath,\n document,\n null,\n XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,\n null\n );\n if (xpathResult.snapshotLength !== 1) {\n return null;\n }\n const node = xpathResult.snapshotItem(0);\n return node;\n }\n function getElementInfoByXpath(xpath) {\n const node = getNodeInfoByXpath(xpath);\n if (!node) {\n return null;\n }\n if (node instanceof HTMLElement) {\n const rect = getRect(node, 1, window);\n const isVisible = isElementPartiallyInViewport(rect, window, document, 1);\n if (!isVisible) {\n node.scrollIntoView({ behavior: "instant", block: "center" });\n }\n }\n return collectElementInfo(\n node,\n window,\n document,\n 1,\n {\n left: 0,\n top: 0\n },\n true\n );\n }\n return __toCommonJS(extractor_exports);\n})();\n/*! Bundled license information:\n\njs-sha256/src/sha256.js:\n (**\n * [js-sha256]{@link https://github.com/emn178/js-sha256}\n *\n * @version 0.11.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2024\n * @license MIT\n *)\n*/\n'}async function b(t=!1){if(c||h)return null;let r=`${g()}midscene_element_inspector.setNodeHashCacheListOnWindow();`;return t?`${r}midscene_element_inspector.webExtractNodeTree()`:`${r}midscene_element_inspector.webExtractTextWithPosition()`}}}),require_chunk_SH3FV3EL=__commonJS({"../core/dist/lib/chunk-SH3FV3EL.js"(t){function r(t){if(t&&t.__esModule)return t;var r={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(r[n]=t[n]);return r.default=t,r}function n(t){let r,n=t[0],i=1;for(;i<t.length;){let a=t[i],o=t[i+1];if(i+=2,("optionalAccess"===a||"optionalCall"===a)&&null==n)return;"access"===a||"optionalAccess"===a?(r=n,n=o(n)):"call"!==a&&"optionalCall"!==a||(n=o((...t)=>n.call(r,...t)),r=void 0)}return n}init_globals(),Object.defineProperty(t,"__esModule",{value:!0});var i=require_child_process(),a=require_fs(),o=r(a),s=require_browser3(),l=require_path_browserify(),u=r(l),d=require_common6(),c=require_env(),h=require_fs2(),f=require_utils5(),p=!1,m=new Map;function g(t,r){let n="</html>",i=o.statSync(t),a=Math.min(i.size,4096),s=Math.max(0,i.size-a),l=Buffer.alloc(i.size-s),u=o.openSync(t,"r");o.readSync(u,l,0,l.length,s),o.closeSync(u);let d=l.toString("utf8"),c=d.lastIndexOf(n);if(-1===c)throw Error(`No </html> found in file:${t}`);let h=d.slice(0,c),f=s+Buffer.byteLength(h,"utf8");o.truncateSync(t,f),o.appendFileSync(t,`${r}
724
724
  ${n}
725
725
  `)}function b(t,r,n){let i="REPLACE_ME_WITH_REPORT_HTML",o=r&&!f.ifInBrowser,s="";if("string"==typeof t)s='<script type="midscene_web_dump" type="application/json">\n'+f.escapeScriptTag.call(void 0,t)+"\n<\/script>";else{let{dumpString:r,attributes:n}=t;s='<script type="midscene_web_dump" type="application/json" '+Object.keys(n||{}).map(t=>`${t}="${encodeURIComponent(n[t])}"`).join(" ")+">\n"+f.escapeScriptTag.call(void 0,r)+"\n<\/script>"}return o?(n?(m.get(r)||(a.writeFileSync.call(void 0,r,i,{flag:"w"}),m.set(r,!0)),g(r,s)):a.writeFileSync.call(void 0,r,i+s,{flag:"w"}),r):i+s}function y(t,r,n){if(f.ifInBrowser||f.ifInWorker)return import_console_browserify.default.log("will not write report in browser"),null;let i=l.dirname.call(void 0,"/index.js");if(!h.getRunningPkgInfo.call(void 0,i))return import_console_browserify.default.warn("midscenePkgInfo not found, will not write report"),null;let o=u.join(d.getMidsceneRunSubDir.call(void 0,"report"),`${t}.html`);if(b(r,o,n),import_browser.default.env.MIDSCENE_DEBUG_LOG_JSON){let t,i=`${o}.json`;t="string"==typeof r?JSON.parse(r):r,a.writeFileSync.call(void 0,i,JSON.stringify(t,null,2),{flag:n?"a":"w"}),f.logMsg.call(void 0,`Midscene - dump file written: ${i}`)}return o}function _(){try{let t=h.getRunningPkgInfo.call(void 0);if(!t)return null;let{name:r}=t,n=u.join(s.tmpdir.call(void 0),r);return a.mkdirSync.call(void 0,n,{recursive:!0}),n}catch(t){return null}}function v(t,r){return r&&"Page"===n([r,"access",t=>t.constructor,"optionalAccess",t=>t.name])?"[Page object]":r&&"Browser"===n([r,"access",t=>t.constructor,"optionalAccess",t=>t.name])?"[Browser object]":r}function A(...t){c.getAIConfig.call(void 0,c.MIDSCENE_DEBUG_MODE)&&import_console_browserify.default.log("[Midscene]",...t)}var w="";t.groupedActionDumpFileExt="web-dump.json",t.insertScriptBeforeClosingHtml=g,t.reportHTMLContent=b,t.writeDumpReport=y,t.writeLogFile=function(t){if(f.ifInBrowser||f.ifInWorker)return"/mock/report.html";let{fileName:r,fileExt:i,fileContent:o,type:s="dump"}=t,l=d.getMidsceneRunSubDir.call(void 0,s);if(!p){f.assert.call(void 0,l,"logDir should be set before writing dump file");let t=u.join(l,"../../.gitignore"),r=u.join(l,"../../.git"),n="";a.existsSync.call(void 0,r)&&(a.existsSync.call(void 0,t)&&(n=a.readFileSync.call(void 0,t,"utf-8")),n.includes(`${d.defaultRunDirName}/`)||a.writeFileSync.call(void 0,t,`${n}
726
726
  # Midscene.js dump files
@@ -728,7 +728,7 @@ ${d.defaultRunDirName}/dump
728
728
  ${d.defaultRunDirName}/report
729
729
  ${d.defaultRunDirName}/tmp
730
730
  ${d.defaultRunDirName}/log
731
- `,"utf-8")),p=!0}let c=u.join(l,`${r}.${i}`);return"dump"!==s&&a.writeFileSync.call(void 0,c,o),n([t,"optionalAccess",t=>t.generateReport])?y(r,o,t.appendReport):c},t.getTmpDir=_,t.getTmpFile=function(t){if(f.ifInBrowser||f.ifInWorker)return null;let r=_(),n=`${f.uuid.call(void 0)}.${t}`;return u.join(r,n)},t.overlapped=function(t,r){return t.left<r.left+r.width&&t.left+t.width>r.left&&t.top<r.top+r.height&&t.top+t.height>r.top},t.sleep=async function(t){return new Promise(r=>setTimeout(r,t))},t.replacerForPageObject=v,t.stringifyDumpData=function(t,r){return JSON.stringify(t,v,r)},t.getVersion=function(){return"0.25.2-beta-20250806084312.0"},t.uploadTestInfoToServer=function({testUrl:t}){let r="",a="",o=n([c.getAIConfigInJson.call(void 0,c.MIDSCENE_OPENAI_INIT_CONFIG_JSON),"optionalAccess",t=>t.REPORT_SERVER_URL]);try{r=i.execSync.call(void 0,"git config --get remote.origin.url").toString().trim(),a=i.execSync.call(void 0,"git config --get user.email").toString().trim()}catch(t){A("Failed to get git info:",t)}o&&(r&&r!==w||!r&&t)&&(A("Uploading test info to server",{serverUrl:o,repoUrl:r,testUrl:t,userEmail:a}),fetch(o,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({repo_url:r,test_url:t,user_email:a})}).then(t=>t.json()).then(t=>{A("Successfully uploaded test info to server:",t)}).catch(t=>A("Failed to upload test info to server:",t)),w=r)}}}),require_utils12=__commonJS({"../core/dist/lib/utils.js"(t){init_globals(),Object.defineProperty(t,"__esModule",{value:!0});var r=require_chunk_ZYDQQ5BX();t.getTmpDir=r.getTmpDir,t.getTmpFile=r.getTmpFile,t.getVersion=r.getVersion,t.groupedActionDumpFileExt=r.groupedActionDumpFileExt,t.insertScriptBeforeClosingHtml=r.insertScriptBeforeClosingHtml,t.overlapped=r.overlapped,t.replacerForPageObject=r.replacerForPageObject,t.reportHTMLContent=r.reportHTMLContent,t.sleep=r.sleep,t.stringifyDumpData=r.stringifyDumpData,t.uploadTestInfoToServer=r.uploadTestInfoToServer,t.writeDumpReport=r.writeDumpReport,t.writeLogFile=r.writeLogFile}}),require_dayjs_min=__commonJS({"../../node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/dayjs.min.js"(t,r){var n,i;init_globals(),n=t,i=function(){var t=6e4,r=36e5,n="millisecond",i="second",a="minute",o="hour",s="day",l="week",u="month",d="quarter",c="year",h="date",f="Invalid Date",p=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,m=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,g={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var r=["th","st","nd","rd"],n=t%100;return"["+t+(r[(n-20)%10]||r[n]||r[0])+"]"}},b=function(t,r,n){var i=String(t);return!i||i.length>=r?t:""+Array(r+1-i.length).join(n)+t},y={s:b,z:function(t){var r=-t.utcOffset(),n=Math.abs(r),i=Math.floor(n/60),a=n%60;return(r<=0?"+":"-")+b(i,2,"0")+":"+b(a,2,"0")},m:function t(r,n){if(r.date()<n.date())return-t(n,r);var i=12*(n.year()-r.year())+(n.month()-r.month()),a=r.clone().add(i,u),o=n-a<0,s=r.clone().add(i+(o?-1:1),u);return+(-(i+(n-a)/(o?a-s:s-a))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return({M:u,y:c,w:l,d:s,D:h,h:o,m:a,s:i,ms:n,Q:d})[t]||String(t||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},_="en",v={};v[_]=g;var A="$isDayjsObject",w=function(t){return t instanceof C||!(!t||!t[A])},x=function t(r,n,i){var a;if(!r)return _;if("string"==typeof r){var o=r.toLowerCase();v[o]&&(a=o),n&&(v[o]=n,a=o);var s=r.split("-");if(!a&&s.length>1)return t(s[0])}else{var l=r.name;v[l]=r,a=l}return!i&&a&&(_=a),a||!i&&_},E=function(t,r){if(w(t))return t.clone();var n="object"==typeof r?r:{};return n.date=t,n.args=arguments,new C(n)},S=y;S.l=x,S.i=w,S.w=function(t,r){return E(t,{locale:r.$L,utc:r.$u,x:r.$x,$offset:r.$offset})};var C=function(){function g(t){this.$L=x(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[A]=!0}var b=g.prototype;return b.parse=function(t){this.$d=function(t){var r=t.date,n=t.utc;if(null===r)return new Date(NaN);if(S.u(r))return new Date;if(r instanceof Date)return new Date(r);if("string"==typeof r&&!/Z$/i.test(r)){var i=r.match(p);if(i){var a=i[2]-1||0,o=(i[7]||"0").substring(0,3);return n?new Date(Date.UTC(i[1],a,i[3]||1,i[4]||0,i[5]||0,i[6]||0,o)):new Date(i[1],a,i[3]||1,i[4]||0,i[5]||0,i[6]||0,o)}}return new Date(r)}(t),this.init()},b.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},b.$utils=function(){return S},b.isValid=function(){return this.$d.toString()!==f},b.isSame=function(t,r){var n=E(t);return this.startOf(r)<=n&&n<=this.endOf(r)},b.isAfter=function(t,r){return E(t)<this.startOf(r)},b.isBefore=function(t,r){return this.endOf(r)<E(t)},b.$g=function(t,r,n){return S.u(t)?this[r]:this.set(n,t)},b.unix=function(){return Math.floor(this.valueOf()/1e3)},b.valueOf=function(){return this.$d.getTime()},b.startOf=function(t,r){var n=this,d=!!S.u(r)||r,f=S.p(t),p=function(t,r){var i=S.w(n.$u?Date.UTC(n.$y,r,t):new Date(n.$y,r,t),n);return d?i:i.endOf(s)},m=function(t,r){return S.w(n.toDate()[t].apply(n.toDate("s"),(d?[0,0,0,0]:[23,59,59,999]).slice(r)),n)},g=this.$W,b=this.$M,y=this.$D,_="set"+(this.$u?"UTC":"");switch(f){case c:return d?p(1,0):p(31,11);case u:return d?p(1,b):p(0,b+1);case l:var v=this.$locale().weekStart||0,A=(g<v?g+7:g)-v;return p(d?y-A:y+(6-A),b);case s:case h:return m(_+"Hours",0);case o:return m(_+"Minutes",1);case a:return m(_+"Seconds",2);case i:return m(_+"Milliseconds",3);default:return this.clone()}},b.endOf=function(t){return this.startOf(t,!1)},b.$set=function(t,r){var l,d=S.p(t),f="set"+(this.$u?"UTC":""),p=((l={})[s]=f+"Date",l[h]=f+"Date",l[u]=f+"Month",l[c]=f+"FullYear",l[o]=f+"Hours",l[a]=f+"Minutes",l[i]=f+"Seconds",l[n]=f+"Milliseconds",l)[d],m=d===s?this.$D+(r-this.$W):r;if(d===u||d===c){var g=this.clone().set(h,1);g.$d[p](m),g.init(),this.$d=g.set(h,Math.min(this.$D,g.daysInMonth())).$d}else p&&this.$d[p](m);return this.init(),this},b.set=function(t,r){return this.clone().$set(t,r)},b.get=function(t){return this[S.p(t)]()},b.add=function(n,d){var h,f=this;n=Number(n);var p=S.p(d),m=function(t){var r=E(f);return S.w(r.date(r.date()+Math.round(t*n)),f)};if(p===u)return this.set(u,this.$M+n);if(p===c)return this.set(c,this.$y+n);if(p===s)return m(1);if(p===l)return m(7);var g=((h={})[a]=t,h[o]=r,h[i]=1e3,h)[p]||1,b=this.$d.getTime()+n*g;return S.w(b,this)},b.subtract=function(t,r){return this.add(-1*t,r)},b.format=function(t){var r=this,n=this.$locale();if(!this.isValid())return n.invalidDate||f;var i=t||"YYYY-MM-DDTHH:mm:ssZ",a=S.z(this),o=this.$H,s=this.$m,l=this.$M,u=n.weekdays,d=n.months,c=n.meridiem,h=function(t,n,a,o){return t&&(t[n]||t(r,i))||a[n].slice(0,o)},p=function(t){return S.s(o%12||12,t,"0")},g=c||function(t,r,n){var i=t<12?"AM":"PM";return n?i.toLowerCase():i};return i.replace(m,function(t,i){return i||function(t){switch(t){case"YY":return String(r.$y).slice(-2);case"YYYY":return S.s(r.$y,4,"0");case"M":return l+1;case"MM":return S.s(l+1,2,"0");case"MMM":return h(n.monthsShort,l,d,3);case"MMMM":return h(d,l);case"D":return r.$D;case"DD":return S.s(r.$D,2,"0");case"d":return String(r.$W);case"dd":return h(n.weekdaysMin,r.$W,u,2);case"ddd":return h(n.weekdaysShort,r.$W,u,3);case"dddd":return u[r.$W];case"H":return String(o);case"HH":return S.s(o,2,"0");case"h":return p(1);case"hh":return p(2);case"a":return g(o,s,!0);case"A":return g(o,s,!1);case"m":return String(s);case"mm":return S.s(s,2,"0");case"s":return String(r.$s);case"ss":return S.s(r.$s,2,"0");case"SSS":return S.s(r.$ms,3,"0");case"Z":return a}return null}(t)||a.replace(":","")})},b.utcOffset=function(){return-(15*Math.round(this.$d.getTimezoneOffset()/15))},b.diff=function(n,h,f){var p,m=this,g=S.p(h),b=E(n),y=(b.utcOffset()-this.utcOffset())*t,_=this-b,v=function(){return S.m(m,b)};switch(g){case c:p=v()/12;break;case u:p=v();break;case d:p=v()/3;break;case l:p=(_-y)/6048e5;break;case s:p=(_-y)/864e5;break;case o:p=_/r;break;case a:p=_/t;break;case i:p=_/1e3;break;default:p=_}return f?p:S.a(p)},b.daysInMonth=function(){return this.endOf(u).$D},b.$locale=function(){return v[this.$L]},b.locale=function(t,r){if(!t)return this.$L;var n=this.clone(),i=x(t,r,!0);return i&&(n.$L=i),n},b.clone=function(){return S.w(this.$d,this)},b.toDate=function(){return new Date(this.valueOf())},b.toJSON=function(){return this.isValid()?this.toISOString():null},b.toISOString=function(){return this.$d.toISOString()},b.toString=function(){return this.$d.toUTCString()},g}(),I=C.prototype;return E.prototype=I,[["$ms",n],["$s",i],["$m",a],["$H",o],["$W",s],["$M",u],["$y",c],["$D",h]].forEach(function(t){I[t[1]]=function(r){return this.$g(r,t[0],t[1])}}),E.extend=function(t,r){return t.$i||(t(r,C,E),t.$i=!0),E},E.locale=x,E.isDayjs=w,E.unix=function(t){return E(1e3*t)},E.en=v[_],E.Ls=v,E.p={},E},"object"==typeof t&&void 0!==r?r.exports=i():"function"==typeof define&&define.amd?define(i):(n="undefined"!=typeof globalThis?globalThis:n||self).dayjs=i()}}),require_common7=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/common.js"(t,r){function n(t){return null==t}init_globals(),r.exports.isNothing=n,r.exports.isObject=function(t){return"object"==typeof t&&null!==t},r.exports.toArray=function(t){return Array.isArray(t)?t:n(t)?[]:[t]},r.exports.repeat=function(t,r){var n,i="";for(n=0;n<r;n+=1)i+=t;return i},r.exports.isNegativeZero=function(t){return 0===t&&Number.NEGATIVE_INFINITY===1/t},r.exports.extend=function(t,r){var n,i,a,o;if(r)for(n=0,i=(o=Object.keys(r)).length;n<i;n+=1)t[a=o[n]]=r[a];return t}}}),require_exception=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/exception.js"(t,r){function n(t,r){var n="",i=t.reason||"(unknown reason)";return t.mark?(t.mark.name&&(n+='in "'+t.mark.name+'" '),n+="("+(t.mark.line+1)+":"+(t.mark.column+1)+")",!r&&t.mark.snippet&&(n+="\n\n"+t.mark.snippet),i+" "+n):i}function i(t,r){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=r,this.message=n(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=Error().stack||""}init_globals(),i.prototype=Object.create(Error.prototype),i.prototype.constructor=i,i.prototype.toString=function(t){return this.name+": "+n(this,t)},r.exports=i}}),require_snippet=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/snippet.js"(t,r){init_globals();var n=require_common7();function i(t,r,n,i,a){var o="",s="",l=Math.floor(a/2)-1;return i-r>l&&(r=i-l+(o=" ... ").length),n-i>l&&(n=i+l-(s=" ...").length),{str:o+t.slice(r,n).replace(/\t/g,"→")+s,pos:i-r+o.length}}function a(t,r){return n.repeat(" ",r-t.length)+t}r.exports=function(t,r){if(r=Object.create(r||null),!t.buffer)return null;r.maxLength||(r.maxLength=79),"number"!=typeof r.indent&&(r.indent=1),"number"!=typeof r.linesBefore&&(r.linesBefore=3),"number"!=typeof r.linesAfter&&(r.linesAfter=2);for(var o,s=/\r?\n|\r|\0/g,l=[0],u=[],d=-1;o=s.exec(t.buffer);)u.push(o.index),l.push(o.index+o[0].length),t.position<=o.index&&d<0&&(d=l.length-2);d<0&&(d=l.length-1);var c,h,f="",p=Math.min(t.line+r.linesAfter,u.length).toString().length,m=r.maxLength-(r.indent+p+3);for(c=1;c<=r.linesBefore&&!(d-c<0);c++)h=i(t.buffer,l[d-c],u[d-c],t.position-(l[d]-l[d-c]),m),f=n.repeat(" ",r.indent)+a((t.line-c+1).toString(),p)+" | "+h.str+"\n"+f;for(h=i(t.buffer,l[d],u[d],t.position,m),f+=n.repeat(" ",r.indent)+a((t.line+1).toString(),p)+" | "+h.str+"\n"+n.repeat("-",r.indent+p+3+h.pos)+"^\n",c=1;c<=r.linesAfter&&!(d+c>=u.length);c++)h=i(t.buffer,l[d+c],u[d+c],t.position-(l[d]-l[d+c]),m),f+=n.repeat(" ",r.indent)+a((t.line+c+1).toString(),p)+" | "+h.str+"\n";return f.replace(/\n$/,"")}}}),require_type2=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type.js"(t,r){init_globals();var n=require_exception(),i=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],a=["scalar","sequence","mapping"];r.exports=function(t,r){var o,s;if(Object.keys(r=r||{}).forEach(function(r){if(-1===i.indexOf(r))throw new n('Unknown option "'+r+'" is met in definition of "'+t+'" YAML type.')}),this.options=r,this.tag=t,this.kind=r.kind||null,this.resolve=r.resolve||function(){return!0},this.construct=r.construct||function(t){return t},this.instanceOf=r.instanceOf||null,this.predicate=r.predicate||null,this.represent=r.represent||null,this.representName=r.representName||null,this.defaultStyle=r.defaultStyle||null,this.multi=r.multi||!1,this.styleAliases=(o=r.styleAliases||null,s={},null!==o&&Object.keys(o).forEach(function(t){o[t].forEach(function(r){s[String(r)]=t})}),s),-1===a.indexOf(this.kind))throw new n('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}}}),require_schema=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema.js"(t,r){init_globals();var n=require_exception(),i=require_type2();function a(t,r){var n=[];return t[r].forEach(function(t){var r=n.length;n.forEach(function(n,i){n.tag===t.tag&&n.kind===t.kind&&n.multi===t.multi&&(r=i)}),n[r]=t}),n}function o(t){return this.extend(t)}o.prototype.extend=function(t){var r=[],s=[];if(t instanceof i)s.push(t);else if(Array.isArray(t))s=s.concat(t);else{if(!t||!Array.isArray(t.implicit)&&!Array.isArray(t.explicit))throw new n("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");t.implicit&&(r=r.concat(t.implicit)),t.explicit&&(s=s.concat(t.explicit))}r.forEach(function(t){if(!(t instanceof i))throw new n("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(t.loadKind&&"scalar"!==t.loadKind)throw new n("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(t.multi)throw new n("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),s.forEach(function(t){if(!(t instanceof i))throw new n("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var l=Object.create(o.prototype);return l.implicit=(this.implicit||[]).concat(r),l.explicit=(this.explicit||[]).concat(s),l.compiledImplicit=a(l,"implicit"),l.compiledExplicit=a(l,"explicit"),l.compiledTypeMap=function(){var t,r,n={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function i(t){t.multi?(n.multi[t.kind].push(t),n.multi.fallback.push(t)):n[t.kind][t.tag]=n.fallback[t.tag]=t}for(t=0,r=arguments.length;t<r;t+=1)arguments[t].forEach(i);return n}(l.compiledImplicit,l.compiledExplicit),l},r.exports=o}}),require_str=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/str.js"(t,r){init_globals(),r.exports=new(require_type2())("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return null!==t?t:""}})}}),require_seq=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/seq.js"(t,r){init_globals(),r.exports=new(require_type2())("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return null!==t?t:[]}})}}),require_map2=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/map.js"(t,r){init_globals(),r.exports=new(require_type2())("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return null!==t?t:{}}})}}),require_failsafe=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema/failsafe.js"(t,r){init_globals(),r.exports=new(require_schema())({explicit:[require_str(),require_seq(),require_map2()]})}}),require_null2=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/null.js"(t,r){init_globals(),r.exports=new(require_type2())("tag:yaml.org,2002:null",{kind:"scalar",resolve:function(t){if(null===t)return!0;var r=t.length;return 1===r&&"~"===t||4===r&&("null"===t||"Null"===t||"NULL"===t)},construct:function(){return null},predicate:function(t){return null===t},represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"},empty:function(){return""}},defaultStyle:"lowercase"})}}),require_bool=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/bool.js"(t,r){init_globals(),r.exports=new(require_type2())("tag:yaml.org,2002:bool",{kind:"scalar",resolve:function(t){if(null===t)return!1;var r=t.length;return 4===r&&("true"===t||"True"===t||"TRUE"===t)||5===r&&("false"===t||"False"===t||"FALSE"===t)},construct:function(t){return"true"===t||"True"===t||"TRUE"===t},predicate:function(t){return"[object Boolean]"===Object.prototype.toString.call(t)},represent:{lowercase:function(t){return t?"true":"false"},uppercase:function(t){return t?"TRUE":"FALSE"},camelcase:function(t){return t?"True":"False"}},defaultStyle:"lowercase"})}}),require_int=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/int.js"(t,r){init_globals();var n=require_common7();function i(t){return 48<=t&&t<=55}function a(t){return 48<=t&&t<=57}r.exports=new(require_type2())("tag:yaml.org,2002:int",{kind:"scalar",resolve:function(t){if(null===t)return!1;var r,n,o=t.length,s=0,l=!1;if(!o)return!1;if("-"!==(r=t[s])&&"+"!==r||(r=t[++s]),"0"===r){if(s+1===o)return!0;if("b"===(r=t[++s])){for(s++;s<o;s++)if("_"!==(r=t[s])){if("0"!==r&&"1"!==r)return!1;l=!0}return l&&"_"!==r}if("x"===r){for(s++;s<o;s++)if("_"!==(r=t[s])){if(!(48<=(n=t.charCodeAt(s))&&n<=57||65<=n&&n<=70||97<=n&&n<=102))return!1;l=!0}return l&&"_"!==r}if("o"===r){for(s++;s<o;s++)if("_"!==(r=t[s])){if(!i(t.charCodeAt(s)))return!1;l=!0}return l&&"_"!==r}}if("_"===r)return!1;for(;s<o;s++)if("_"!==(r=t[s])){if(!a(t.charCodeAt(s)))return!1;l=!0}return!(!l||"_"===r)},construct:function(t){var r,n=t,i=1;if(-1!==n.indexOf("_")&&(n=n.replace(/_/g,"")),"-"!==(r=n[0])&&"+"!==r||("-"===r&&(i=-1),r=(n=n.slice(1))[0]),"0"===n)return 0;if("0"===r){if("b"===n[1])return i*parseInt(n.slice(2),2);if("x"===n[1])return i*parseInt(n.slice(2),16);if("o"===n[1])return i*parseInt(n.slice(2),8)}return i*parseInt(n,10)},predicate:function(t){return"[object Number]"===Object.prototype.toString.call(t)&&t%1==0&&!n.isNegativeZero(t)},represent:{binary:function(t){return t>=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})}}),require_float=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/float.js"(t,r){init_globals();var n=require_common7(),i=require_type2(),a=RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),o=/^[-+]?[0-9]+e/;r.exports=new i("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(t){return null!==t&&!(!a.test(t)||"_"===t[t.length-1])},construct:function(t){var r,n;return n="-"===(r=t.replace(/_/g,"").toLowerCase())[0]?-1:1,"+-".indexOf(r[0])>=0&&(r=r.slice(1)),".inf"===r?1===n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===r?NaN:n*parseFloat(r,10)},predicate:function(t){return"[object Number]"===Object.prototype.toString.call(t)&&(t%1!=0||n.isNegativeZero(t))},represent:function(t,r){var i;if(isNaN(t))switch(r){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(r){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(r){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(n.isNegativeZero(t))return"-0.0";return i=t.toString(10),o.test(i)?i.replace("e",".e"):i},defaultStyle:"lowercase"})}}),require_json2=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema/json.js"(t,r){init_globals(),r.exports=require_failsafe().extend({implicit:[require_null2(),require_bool(),require_int(),require_float()]})}}),require_core6=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema/core.js"(t,r){init_globals(),r.exports=require_json2()}}),require_timestamp=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/timestamp.js"(t,r){init_globals();var n=require_type2(),i=RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),a=RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");r.exports=new n("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function(t){return null!==t&&(null!==i.exec(t)||null!==a.exec(t))},construct:function(t){var r,n,o,s,l,u,d,c,h=0,f=null;if(null===(r=i.exec(t))&&(r=a.exec(t)),null===r)throw Error("Date resolve error");if(n=+r[1],o=r[2]-1,s=+r[3],!r[4])return new Date(Date.UTC(n,o,s));if(l=+r[4],u=+r[5],d=+r[6],r[7]){for(h=r[7].slice(0,3);h.length<3;)h+="0";h*=1}return r[9]&&(f=6e4*(60*r[10]+ +(r[11]||0)),"-"===r[9]&&(f=-f)),c=new Date(Date.UTC(n,o,s,l,u,d,h)),f&&c.setTime(c.getTime()-f),c},instanceOf:Date,represent:function(t){return t.toISOString()}})}}),require_merge=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/merge.js"(t,r){init_globals(),r.exports=new(require_type2())("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function(t){return"<<"===t||null===t}})}}),require_binary=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/binary.js"(t,r){init_globals();var n=require_type2(),i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";r.exports=new n("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function(t){if(null===t)return!1;var r,n,a=0,o=t.length,s=i;for(n=0;n<o;n++)if(!((r=s.indexOf(t.charAt(n)))>64)){if(r<0)return!1;a+=6}return a%8==0},construct:function(t){var r,n,a=t.replace(/[\r\n=]/g,""),o=a.length,s=i,l=0,u=[];for(r=0;r<o;r++)r%4==0&&r&&(u.push(l>>16&255),u.push(l>>8&255),u.push(255&l)),l=l<<6|s.indexOf(a.charAt(r));return 0==(n=o%4*6)?(u.push(l>>16&255),u.push(l>>8&255),u.push(255&l)):18===n?(u.push(l>>10&255),u.push(l>>2&255)):12===n&&u.push(l>>4&255),new Uint8Array(u)},predicate:function(t){return"[object Uint8Array]"===Object.prototype.toString.call(t)},represent:function(t){var r,n,a="",o=0,s=t.length,l=i;for(r=0;r<s;r++)r%3==0&&r&&(a+=l[o>>18&63],a+=l[o>>12&63],a+=l[o>>6&63],a+=l[63&o]),o=(o<<8)+t[r];return 0==(n=s%3)?(a+=l[o>>18&63],a+=l[o>>12&63],a+=l[o>>6&63],a+=l[63&o]):2===n?(a+=l[o>>10&63],a+=l[o>>4&63],a+=l[o<<2&63],a+=l[64]):1===n&&(a+=l[o>>2&63],a+=l[o<<4&63],a+=l[64],a+=l[64]),a}})}}),require_omap=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/omap.js"(t,r){init_globals();var n=require_type2(),i=Object.prototype.hasOwnProperty,a=Object.prototype.toString;r.exports=new n("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function(t){if(null===t)return!0;var r,n,o,s,l,u=[],d=t;for(r=0,n=d.length;r<n;r+=1){if(o=d[r],l=!1,"[object Object]"!==a.call(o))return!1;for(s in o)if(i.call(o,s)){if(l)return!1;l=!0}if(!l||-1!==u.indexOf(s))return!1;u.push(s)}return!0},construct:function(t){return null!==t?t:[]}})}}),require_pairs=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/pairs.js"(t,r){init_globals();var n=require_type2(),i=Object.prototype.toString;r.exports=new n("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:function(t){if(null===t)return!0;var r,n,a,o,s,l=t;for(s=Array(l.length),r=0,n=l.length;r<n;r+=1){if(a=l[r],"[object Object]"!==i.call(a)||1!==(o=Object.keys(a)).length)return!1;s[r]=[o[0],a[o[0]]]}return!0},construct:function(t){if(null===t)return[];var r,n,i,a,o,s=t;for(o=Array(s.length),r=0,n=s.length;r<n;r+=1)a=Object.keys(i=s[r]),o[r]=[a[0],i[a[0]]];return o}})}}),require_set2=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/set.js"(t,r){init_globals();var n=require_type2(),i=Object.prototype.hasOwnProperty;r.exports=new n("tag:yaml.org,2002:set",{kind:"mapping",resolve:function(t){if(null===t)return!0;var r,n=t;for(r in n)if(i.call(n,r)&&null!==n[r])return!1;return!0},construct:function(t){return null!==t?t:{}}})}}),require_default2=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema/default.js"(t,r){init_globals(),r.exports=require_core6().extend({implicit:[require_timestamp(),require_merge()],explicit:[require_binary(),require_omap(),require_pairs(),require_set2()]})}}),require_loader=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/loader.js"(t,r){init_globals();var n=require_common7(),i=require_exception(),a=require_snippet(),o=require_default2(),s=Object.prototype.hasOwnProperty,l=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,u=/[\x85\u2028\u2029]/,d=/[,\[\]\{\}]/,c=/^(?:!|!!|![a-z\-]+!)$/i,h=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function f(t){return Object.prototype.toString.call(t)}function p(t){return 10===t||13===t}function m(t){return 9===t||32===t}function g(t){return 9===t||32===t||10===t||13===t}function b(t){return 44===t||91===t||93===t||123===t||125===t}function y(t){var r;return 48<=t&&t<=57?t-48:97<=(r=32|t)&&r<=102?r-97+10:-1}function _(t){return 48===t?"\0":97===t?"\x07":98===t?"\b":116===t||9===t?" ":110===t?"\n":118===t?"\v":102===t?"\f":114===t?"\r":101===t?"\x1b":32===t?" ":34===t?'"':47===t?"/":92===t?"\\":78===t?"\x85":95===t?"\xa0":76===t?"\u2028":80===t?"\u2029":""}function v(t){return t<=65535?String.fromCharCode(t):String.fromCharCode(55296+(t-65536>>10),56320+(t-65536&1023))}var A,w=Array(256),x=Array(256);for(A=0;A<256;A++)w[A]=+!!_(A),x[A]=_(A);function E(t,r){this.input=t,this.filename=r.filename||null,this.schema=r.schema||o,this.onWarning=r.onWarning||null,this.legacy=r.legacy||!1,this.json=r.json||!1,this.listener=r.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function S(t,r){var n={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return n.snippet=a(n),new i(r,n)}function C(t,r){throw S(t,r)}function I(t,r){t.onWarning&&t.onWarning.call(null,S(t,r))}var T={YAML:function(t,r,n){var i,a,o;null!==t.version&&C(t,"duplication of %YAML directive"),1!==n.length&&C(t,"YAML directive accepts exactly one argument"),null===(i=/^([0-9]+)\.([0-9]+)$/.exec(n[0]))&&C(t,"ill-formed argument of the YAML directive"),a=parseInt(i[1],10),o=parseInt(i[2],10),1!==a&&C(t,"unacceptable YAML version of the document"),t.version=n[0],t.checkLineBreaks=o<2,1!==o&&2!==o&&I(t,"unsupported YAML version of the document")},TAG:function(t,r,n){var i,a;2!==n.length&&C(t,"TAG directive accepts exactly two arguments"),i=n[0],a=n[1],c.test(i)||C(t,"ill-formed tag handle (first argument) of the TAG directive"),s.call(t.tagMap,i)&&C(t,'there is a previously declared suffix for "'+i+'" tag handle'),h.test(a)||C(t,"ill-formed tag prefix (second argument) of the TAG directive");try{a=decodeURIComponent(a)}catch(r){C(t,"tag prefix is malformed: "+a)}t.tagMap[i]=a}};function k(t,r,n,i){var a,o,s,u;if(r<n){if(u=t.input.slice(r,n),i)for(a=0,o=u.length;a<o;a+=1)9===(s=u.charCodeAt(a))||32<=s&&s<=1114111||C(t,"expected valid JSON character");else l.test(u)&&C(t,"the stream contains non-printable characters");t.result+=u}}function P(t,r,i,a){var o,l,u,d;for(n.isObject(i)||C(t,"cannot merge mappings; the provided source object is unacceptable"),u=0,d=(o=Object.keys(i)).length;u<d;u+=1)l=o[u],s.call(r,l)||(r[l]=i[l],a[l]=!0)}function R(t,r,n,i,a,o,l,u,d){var c,h;if(Array.isArray(a))for(c=0,h=(a=Array.prototype.slice.call(a)).length;c<h;c+=1)Array.isArray(a[c])&&C(t,"nested arrays are not supported inside keys"),"object"==typeof a&&"[object Object]"===f(a[c])&&(a[c]="[object Object]");if("object"==typeof a&&"[object Object]"===f(a)&&(a="[object Object]"),a=String(a),null===r&&(r={}),"tag:yaml.org,2002:merge"===i)if(Array.isArray(o))for(c=0,h=o.length;c<h;c+=1)P(t,r,o[c],n);else P(t,r,o,n);else t.json||s.call(n,a)||!s.call(r,a)||(t.line=l||t.line,t.lineStart=u||t.lineStart,t.position=d||t.position,C(t,"duplicated mapping key")),"__proto__"===a?Object.defineProperty(r,a,{configurable:!0,enumerable:!0,writable:!0,value:o}):r[a]=o,delete n[a];return r}function O(t){var r;10===(r=t.input.charCodeAt(t.position))?t.position++:13===r?(t.position++,10===t.input.charCodeAt(t.position)&&t.position++):C(t,"a line break is expected"),t.line+=1,t.lineStart=t.position,t.firstTabInLine=-1}function M(t,r,n){for(var i=0,a=t.input.charCodeAt(t.position);0!==a;){for(;m(a);)9===a&&-1===t.firstTabInLine&&(t.firstTabInLine=t.position),a=t.input.charCodeAt(++t.position);if(r&&35===a)do a=t.input.charCodeAt(++t.position);while(10!==a&&13!==a&&0!==a);if(!p(a))break;for(O(t),a=t.input.charCodeAt(t.position),i++,t.lineIndent=0;32===a;)t.lineIndent++,a=t.input.charCodeAt(++t.position)}return -1!==n&&0!==i&&t.lineIndent<n&&I(t,"deficient indentation"),i}function j(t){var r,n=t.position;return!(45!==(r=t.input.charCodeAt(n))&&46!==r||r!==t.input.charCodeAt(n+1)||r!==t.input.charCodeAt(n+2)||(n+=3,0!==(r=t.input.charCodeAt(n))&&!g(r)))}function N(t,r){1===r?t.result+=" ":r>1&&(t.result+=n.repeat("\n",r-1))}function B(t,r){var n,i,a=t.tag,o=t.anchor,s=[],l=!1;if(-1!==t.firstTabInLine)return!1;for(null!==t.anchor&&(t.anchorMap[t.anchor]=s),i=t.input.charCodeAt(t.position);0!==i&&(-1!==t.firstTabInLine&&(t.position=t.firstTabInLine,C(t,"tab characters must not be used in indentation")),45===i)&&g(t.input.charCodeAt(t.position+1));)if(l=!0,t.position++,M(t,!0,-1)&&t.lineIndent<=r)s.push(null),i=t.input.charCodeAt(t.position);else if(n=t.line,U(t,r,3,!1,!0),s.push(t.result),M(t,!0,-1),i=t.input.charCodeAt(t.position),(t.line===n||t.lineIndent>r)&&0!==i)C(t,"bad indentation of a sequence entry");else if(t.lineIndent<r)break;return!!l&&(t.tag=a,t.anchor=o,t.kind="sequence",t.result=s,!0)}function L(t){var r,n,i,a,o=!1,l=!1;if(33!==(a=t.input.charCodeAt(t.position)))return!1;if(null!==t.tag&&C(t,"duplication of a tag property"),60===(a=t.input.charCodeAt(++t.position))?(o=!0,a=t.input.charCodeAt(++t.position)):33===a?(l=!0,n="!!",a=t.input.charCodeAt(++t.position)):n="!",r=t.position,o){do a=t.input.charCodeAt(++t.position);while(0!==a&&62!==a);t.position<t.length?(i=t.input.slice(r,t.position),a=t.input.charCodeAt(++t.position)):C(t,"unexpected end of the stream within a verbatim tag")}else{for(;0!==a&&!g(a);)33===a&&(l?C(t,"tag suffix cannot contain exclamation marks"):(n=t.input.slice(r-1,t.position+1),c.test(n)||C(t,"named tag handle cannot contain such characters"),l=!0,r=t.position+1)),a=t.input.charCodeAt(++t.position);i=t.input.slice(r,t.position),d.test(i)&&C(t,"tag suffix cannot contain flow indicator characters")}i&&!h.test(i)&&C(t,"tag name cannot contain such characters: "+i);try{i=decodeURIComponent(i)}catch(r){C(t,"tag name is malformed: "+i)}return o?t.tag=i:s.call(t.tagMap,n)?t.tag=t.tagMap[n]+i:"!"===n?t.tag="!"+i:"!!"===n?t.tag="tag:yaml.org,2002:"+i:C(t,'undeclared tag handle "'+n+'"'),!0}function D(t){var r,n;if(38!==(n=t.input.charCodeAt(t.position)))return!1;for(null!==t.anchor&&C(t,"duplication of an anchor property"),n=t.input.charCodeAt(++t.position),r=t.position;0!==n&&!g(n)&&!b(n);)n=t.input.charCodeAt(++t.position);return t.position===r&&C(t,"name of an anchor node must contain at least one character"),t.anchor=t.input.slice(r,t.position),!0}function U(t,r,i,a,o){var l,u,d,c,h,f,_,A,E,S=1,I=!1,T=!1;if(null!==t.listener&&t.listener("open",t),t.tag=null,t.anchor=null,t.kind=null,t.result=null,l=u=d=4===i||3===i,a&&M(t,!0,-1)&&(I=!0,t.lineIndent>r?S=1:t.lineIndent===r?S=0:t.lineIndent<r&&(S=-1)),1===S)for(;L(t)||D(t);)M(t,!0,-1)?(I=!0,d=l,t.lineIndent>r?S=1:t.lineIndent===r?S=0:t.lineIndent<r&&(S=-1)):d=!1;if(d&&(d=I||o),1!==S&&4!==i||(A=1===i||2===i?r:r+1,E=t.position-t.lineStart,1===S?d&&(B(t,E)||function(t,r,n){var i,a,o,s,l,u,d,c=t.tag,h=t.anchor,f={},p=Object.create(null),b=null,y=null,_=null,v=!1,A=!1;if(-1!==t.firstTabInLine)return!1;for(null!==t.anchor&&(t.anchorMap[t.anchor]=f),d=t.input.charCodeAt(t.position);0!==d;){if(v||-1===t.firstTabInLine||(t.position=t.firstTabInLine,C(t,"tab characters must not be used in indentation")),i=t.input.charCodeAt(t.position+1),o=t.line,(63===d||58===d)&&g(i))63===d?(v&&(R(t,f,p,b,y,null,s,l,u),b=y=_=null),A=!0,v=!0,a=!0):v?(v=!1,a=!0):C(t,"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),t.position+=1,d=i;else{if(s=t.line,l=t.lineStart,u=t.position,!U(t,n,2,!1,!0))break;if(t.line===o){for(d=t.input.charCodeAt(t.position);m(d);)d=t.input.charCodeAt(++t.position);if(58===d)g(d=t.input.charCodeAt(++t.position))||C(t,"a whitespace character is expected after the key-value separator within a block mapping"),v&&(R(t,f,p,b,y,null,s,l,u),b=y=_=null),A=!0,v=!1,a=!1,b=t.tag,y=t.result;else{if(!A)return t.tag=c,t.anchor=h,!0;C(t,"can not read an implicit mapping pair; a colon is missed")}}else{if(!A)return t.tag=c,t.anchor=h,!0;C(t,"can not read a block mapping entry; a multiline key may not be an implicit key")}}if((t.line===o||t.lineIndent>r)&&(v&&(s=t.line,l=t.lineStart,u=t.position),U(t,r,4,!0,a)&&(v?y=t.result:_=t.result),v||(R(t,f,p,b,y,_,s,l,u),b=y=_=null),M(t,!0,-1),d=t.input.charCodeAt(t.position)),(t.line===o||t.lineIndent>r)&&0!==d)C(t,"bad indentation of a mapping entry");else if(t.lineIndent<r)break}return v&&R(t,f,p,b,y,null,s,l,u),A&&(t.tag=c,t.anchor=h,t.kind="mapping",t.result=f),A}(t,E,A))||function(t,r){var n,i,a,o,s,l,u,d,c,h,f,p,m=!0,b=t.tag,y=t.anchor,_=Object.create(null);if(91===(p=t.input.charCodeAt(t.position)))s=93,d=!1,o=[];else{if(123!==p)return!1;s=125,d=!0,o={}}for(null!==t.anchor&&(t.anchorMap[t.anchor]=o),p=t.input.charCodeAt(++t.position);0!==p;){if(M(t,!0,r),(p=t.input.charCodeAt(t.position))===s)return t.position++,t.tag=b,t.anchor=y,t.kind=d?"mapping":"sequence",t.result=o,!0;m?44===p&&C(t,"expected the node content, but found ','"):C(t,"missed comma between flow collection entries"),f=null,l=u=!1,63===p&&g(t.input.charCodeAt(t.position+1))&&(l=u=!0,t.position++,M(t,!0,r)),n=t.line,i=t.lineStart,a=t.position,U(t,r,1,!1,!0),h=t.tag,c=t.result,M(t,!0,r),p=t.input.charCodeAt(t.position),(u||t.line===n)&&58===p&&(l=!0,p=t.input.charCodeAt(++t.position),M(t,!0,r),U(t,r,1,!1,!0),f=t.result),d?R(t,o,_,h,c,f,n,i,a):l?o.push(R(t,null,_,h,c,f,n,i,a)):o.push(c),M(t,!0,r),44===(p=t.input.charCodeAt(t.position))?(m=!0,p=t.input.charCodeAt(++t.position)):m=!1}C(t,"unexpected end of the stream within a flow collection")}(t,A)?T=!0:(u&&function(t,r){var i,a,o,s,l,u=1,d=!1,c=!1,h=r,f=0,g=!1;if(124===(s=t.input.charCodeAt(t.position)))a=!1;else{if(62!==s)return!1;a=!0}for(t.kind="scalar",t.result="";0!==s;)if(43===(s=t.input.charCodeAt(++t.position))||45===s)1===u?u=43===s?3:2:C(t,"repeat of a chomping mode identifier");else{if(!((o=48<=(l=s)&&l<=57?l-48:-1)>=0))break;0===o?C(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):c?C(t,"repeat of an indentation width identifier"):(h=r+o-1,c=!0)}if(m(s)){do s=t.input.charCodeAt(++t.position);while(m(s));if(35===s)do s=t.input.charCodeAt(++t.position);while(!p(s)&&0!==s)}for(;0!==s;){for(O(t),t.lineIndent=0,s=t.input.charCodeAt(t.position);(!c||t.lineIndent<h)&&32===s;)t.lineIndent++,s=t.input.charCodeAt(++t.position);if(!c&&t.lineIndent>h&&(h=t.lineIndent),p(s))f++;else{if(t.lineIndent<h){3===u?t.result+=n.repeat("\n",d?1+f:f):1===u&&d&&(t.result+="\n");break}for(a?m(s)?(g=!0,t.result+=n.repeat("\n",d?1+f:f)):g?(g=!1,t.result+=n.repeat("\n",f+1)):0===f?d&&(t.result+=" "):t.result+=n.repeat("\n",f):t.result+=n.repeat("\n",d?1+f:f),d=!0,c=!0,f=0,i=t.position;!p(s)&&0!==s;)s=t.input.charCodeAt(++t.position);k(t,i,t.position,!1)}}return!0}(t,A)||function(t,r){var n,i,a;if(39!==(n=t.input.charCodeAt(t.position)))return!1;for(t.kind="scalar",t.result="",t.position++,i=a=t.position;0!==(n=t.input.charCodeAt(t.position));)if(39===n){if(k(t,i,t.position,!0),39!==(n=t.input.charCodeAt(++t.position)))return!0;i=t.position,t.position++,a=t.position}else p(n)?(k(t,i,a,!0),N(t,M(t,!1,r)),i=a=t.position):t.position===t.lineStart&&j(t)?C(t,"unexpected end of the document within a single quoted scalar"):(t.position++,a=t.position);C(t,"unexpected end of the stream within a single quoted scalar")}(t,A)||function(t,r){var n,i,a,o,s,l,u;if(34!==(l=t.input.charCodeAt(t.position)))return!1;for(t.kind="scalar",t.result="",t.position++,n=i=t.position;0!==(l=t.input.charCodeAt(t.position));){if(34===l)return k(t,n,t.position,!0),t.position++,!0;if(92===l){if(k(t,n,t.position,!0),p(l=t.input.charCodeAt(++t.position)))M(t,!1,r);else if(l<256&&w[l])t.result+=x[l],t.position++;else if((s=120===(u=l)?2:117===u?4:8*(85===u))>0){for(a=s,o=0;a>0;a--)(s=y(l=t.input.charCodeAt(++t.position)))>=0?o=(o<<4)+s:C(t,"expected hexadecimal character");t.result+=v(o),t.position++}else C(t,"unknown escape sequence");n=i=t.position}else p(l)?(k(t,n,i,!0),N(t,M(t,!1,r)),n=i=t.position):t.position===t.lineStart&&j(t)?C(t,"unexpected end of the document within a double quoted scalar"):(t.position++,i=t.position)}C(t,"unexpected end of the stream within a double quoted scalar")}(t,A)?T=!0:!function(t){var r,n,i;if(42!==(i=t.input.charCodeAt(t.position)))return!1;for(i=t.input.charCodeAt(++t.position),r=t.position;0!==i&&!g(i)&&!b(i);)i=t.input.charCodeAt(++t.position);return t.position===r&&C(t,"name of an alias node must contain at least one character"),n=t.input.slice(r,t.position),s.call(t.anchorMap,n)||C(t,'unidentified alias "'+n+'"'),t.result=t.anchorMap[n],M(t,!0,-1),!0}(t)?function(t,r,n){var i,a,o,s,l,u,d,c,h=t.kind,f=t.result;if(g(c=t.input.charCodeAt(t.position))||b(c)||35===c||38===c||42===c||33===c||124===c||62===c||39===c||34===c||37===c||64===c||96===c||(63===c||45===c)&&(g(i=t.input.charCodeAt(t.position+1))||n&&b(i)))return!1;for(t.kind="scalar",t.result="",a=o=t.position,s=!1;0!==c;){if(58===c){if(g(i=t.input.charCodeAt(t.position+1))||n&&b(i))break}else if(35===c){if(g(t.input.charCodeAt(t.position-1)))break}else{if(t.position===t.lineStart&&j(t)||n&&b(c))break;if(p(c)){if(l=t.line,u=t.lineStart,d=t.lineIndent,M(t,!1,-1),t.lineIndent>=r){s=!0,c=t.input.charCodeAt(t.position);continue}t.position=o,t.line=l,t.lineStart=u,t.lineIndent=d;break}}s&&(k(t,a,o,!1),N(t,t.line-l),a=o=t.position,s=!1),m(c)||(o=t.position+1),c=t.input.charCodeAt(++t.position)}return k(t,a,o,!1),!!t.result||(t.kind=h,t.result=f,!1)}(t,A,1===i)&&(T=!0,null===t.tag&&(t.tag="?")):(T=!0,null===t.tag&&null===t.anchor||C(t,"alias node should not have any properties")),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):0===S&&(T=d&&B(t,E))),null===t.tag)null!==t.anchor&&(t.anchorMap[t.anchor]=t.result);else if("?"===t.tag){for(null!==t.result&&"scalar"!==t.kind&&C(t,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+t.kind+'"'),c=0,h=t.implicitTypes.length;c<h;c+=1)if((_=t.implicitTypes[c]).resolve(t.result)){t.result=_.construct(t.result),t.tag=_.tag,null!==t.anchor&&(t.anchorMap[t.anchor]=t.result);break}}else if("!"!==t.tag){if(s.call(t.typeMap[t.kind||"fallback"],t.tag))_=t.typeMap[t.kind||"fallback"][t.tag];else for(_=null,c=0,h=(f=t.typeMap.multi[t.kind||"fallback"]).length;c<h;c+=1)if(t.tag.slice(0,f[c].tag.length)===f[c].tag){_=f[c];break}_||C(t,"unknown tag !<"+t.tag+">"),null!==t.result&&_.kind!==t.kind&&C(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+_.kind+'", not "'+t.kind+'"'),_.resolve(t.result,t.tag)?(t.result=_.construct(t.result,t.tag),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):C(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return null!==t.listener&&t.listener("close",t),null!==t.tag||null!==t.anchor||T}function F(t){var r,n,i,a,o=t.position,l=!1;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);0!==(a=t.input.charCodeAt(t.position))&&(M(t,!0,-1),a=t.input.charCodeAt(t.position),!(t.lineIndent>0||37!==a));){for(l=!0,a=t.input.charCodeAt(++t.position),r=t.position;0!==a&&!g(a);)a=t.input.charCodeAt(++t.position);for(i=[],(n=t.input.slice(r,t.position)).length<1&&C(t,"directive name must not be less than one character in length");0!==a;){for(;m(a);)a=t.input.charCodeAt(++t.position);if(35===a){do a=t.input.charCodeAt(++t.position);while(0!==a&&!p(a));break}if(p(a))break;for(r=t.position;0!==a&&!g(a);)a=t.input.charCodeAt(++t.position);i.push(t.input.slice(r,t.position))}0!==a&&O(t),s.call(T,n)?T[n](t,n,i):I(t,'unknown document directive "'+n+'"')}M(t,!0,-1),0===t.lineIndent&&45===t.input.charCodeAt(t.position)&&45===t.input.charCodeAt(t.position+1)&&45===t.input.charCodeAt(t.position+2)?(t.position+=3,M(t,!0,-1)):l&&C(t,"directives end mark is expected"),U(t,t.lineIndent-1,4,!1,!0),M(t,!0,-1),t.checkLineBreaks&&u.test(t.input.slice(o,t.position))&&I(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&j(t)?46===t.input.charCodeAt(t.position)&&(t.position+=3,M(t,!0,-1)):t.position<t.length-1&&C(t,"end of the stream or a document separator is expected")}function z(t,r){r=r||{},0!==(t=String(t)).length&&(10!==t.charCodeAt(t.length-1)&&13!==t.charCodeAt(t.length-1)&&(t+="\n"),65279===t.charCodeAt(0)&&(t=t.slice(1)));var n=new E(t,r),i=t.indexOf("\0");for(-1!==i&&(n.position=i,C(n,"null byte is not allowed in input")),n.input+="\0";32===n.input.charCodeAt(n.position);)n.lineIndent+=1,n.position+=1;for(;n.position<n.length-1;)F(n);return n.documents}r.exports.loadAll=function(t,r,n){null!==r&&"object"==typeof r&&void 0===n&&(n=r,r=null);var i=z(t,n);if("function"!=typeof r)return i;for(var a=0,o=i.length;a<o;a+=1)r(i[a])},r.exports.load=function(t,r){var n=z(t,r);if(0!==n.length){if(1===n.length)return n[0];throw new i("expected a single document in the stream, but found more")}}}}),require_dumper=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/dumper.js"(t,r){init_globals();var n=require_common7(),i=require_exception(),a=require_default2(),o=Object.prototype.toString,s=Object.prototype.hasOwnProperty,l=65279,u={0:"\\0",7:"\\a",8:"\\b",9:"\\t",10:"\\n",11:"\\v",12:"\\f",13:"\\r",27:"\\e",34:'\\"',92:"\\\\",133:"\\N",160:"\\_",8232:"\\L",8233:"\\P"},d=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],c=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;function h(t){var r,a,o;if(r=t.toString(16).toUpperCase(),t<=255)a="x",o=2;else if(t<=65535)a="u",o=4;else{if(!(t<=0xffffffff))throw new i("code point within a string may not be greater than 0xFFFFFFFF");a="U",o=8}return"\\"+a+n.repeat("0",o-r.length)+r}function f(t){this.schema=t.schema||a,this.indent=Math.max(1,t.indent||2),this.noArrayIndent=t.noArrayIndent||!1,this.skipInvalid=t.skipInvalid||!1,this.flowLevel=n.isNothing(t.flowLevel)?-1:t.flowLevel,this.styleMap=function(t,r){var n,i,a,o,l,u,d;if(null===r)return{};for(n={},a=0,o=(i=Object.keys(r)).length;a<o;a+=1)u=String(r[l=i[a]]),"!!"===l.slice(0,2)&&(l="tag:yaml.org,2002:"+l.slice(2)),(d=t.compiledTypeMap.fallback[l])&&s.call(d.styleAliases,u)&&(u=d.styleAliases[u]),n[l]=u;return n}(this.schema,t.styles||null),this.sortKeys=t.sortKeys||!1,this.lineWidth=t.lineWidth||80,this.noRefs=t.noRefs||!1,this.noCompatMode=t.noCompatMode||!1,this.condenseFlow=t.condenseFlow||!1,this.quotingType='"'===t.quotingType?2:1,this.forceQuotes=t.forceQuotes||!1,this.replacer="function"==typeof t.replacer?t.replacer:null,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result="",this.duplicates=[],this.usedDuplicates=null}function p(t,r){for(var i,a=n.repeat(" ",r),o=0,s=-1,l="",u=t.length;o<u;)-1===(s=t.indexOf("\n",o))?(i=t.slice(o),o=u):(i=t.slice(o,s+1),o=s+1),i.length&&"\n"!==i&&(l+=a),l+=i;return l}function m(t,r){return"\n"+n.repeat(" ",t.indent*r)}function g(t){return 32===t||9===t}function b(t){return 32<=t&&t<=126||161<=t&&t<=55295&&8232!==t&&8233!==t||57344<=t&&t<=65533&&t!==l||65536<=t&&t<=1114111}function y(t){return b(t)&&t!==l&&13!==t&&10!==t}function _(t,r,n){var i=y(t),a=i&&!g(t);return(n?i:i&&44!==t&&91!==t&&93!==t&&123!==t&&125!==t)&&35!==t&&!(58===r&&!a)||y(r)&&!g(r)&&35===t||58===r&&a}function v(t,r){var n,i=t.charCodeAt(r);return i>=55296&&i<=56319&&r+1<t.length&&(n=t.charCodeAt(r+1))>=56320&&n<=57343?1024*(i-55296)+n-56320+65536:i}function A(t){return/^\n* /.test(t)}function w(t,r,n,i,a,o,s,u){var d,c,h=0,f=null,p=!1,m=!1,y=-1!==i,w=-1,x=b(c=v(t,0))&&c!==l&&!g(c)&&45!==c&&63!==c&&58!==c&&44!==c&&91!==c&&93!==c&&123!==c&&125!==c&&35!==c&&38!==c&&42!==c&&33!==c&&124!==c&&61!==c&&62!==c&&39!==c&&34!==c&&37!==c&&64!==c&&96!==c&&function(t){return!g(t)&&58!==t}(v(t,t.length-1));if(r||s)for(d=0;d<t.length;h>=65536?d+=2:d++){if(!b(h=v(t,d)))return 5;x=x&&_(h,f,u),f=h}else{for(d=0;d<t.length;h>=65536?d+=2:d++){if(10===(h=v(t,d)))p=!0,y&&(m=m||d-w-1>i&&" "!==t[w+1],w=d);else if(!b(h))return 5;x=x&&_(h,f,u),f=h}m=m||y&&d-w-1>i&&" "!==t[w+1]}return p||m?n>9&&A(t)?5:s?2===o?5:2:m?4:3:!x||s||a(t)?2===o?5:2:1}function x(t,r,n,a,o){t.dump=function(){if(0===r.length)return 2===t.quotingType?'""':"''";if(!t.noCompatMode&&(-1!==d.indexOf(r)||c.test(r)))return 2===t.quotingType?'"'+r+'"':"'"+r+"'";var s=t.indent*Math.max(1,n),l=-1===t.lineWidth?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-s);switch(w(r,a||t.flowLevel>-1&&n>=t.flowLevel,t.indent,l,function(r){return function(t,r){var n,i;for(n=0,i=t.implicitTypes.length;n<i;n+=1)if(t.implicitTypes[n].resolve(r))return!0;return!1}(t,r)},t.quotingType,t.forceQuotes&&!a,o)){case 1:return r;case 2:return"'"+r.replace(/'/g,"''")+"'";case 3:return"|"+E(r,t.indent)+S(p(r,s));case 4:return">"+E(r,t.indent)+S(p(function(t,r){for(var n,i,a,o=/(\n+)([^\n]*)/g,s=(o.lastIndex=n=-1!==(n=t.indexOf("\n"))?n:t.length,C(t.slice(0,n),r)),l="\n"===t[0]||" "===t[0];a=o.exec(t);){var u=a[1],d=a[2];i=" "===d[0],s+=u+(l||i||""===d?"":"\n")+C(d,r),l=i}return s}(r,l),s));case 5:return'"'+function(t){for(var r,n="",i=0,a=0;a<t.length;i>=65536?a+=2:a++)!(r=u[i=v(t,a)])&&b(i)?(n+=t[a],i>=65536&&(n+=t[a+1])):n+=r||h(i);return n}(r)+'"';default:throw new i("impossible error: invalid scalar style")}}()}function E(t,r){var n=A(t)?String(r):"",i="\n"===t[t.length-1];return n+(i&&("\n"===t[t.length-2]||"\n"===t)?"+":i?"":"-")+"\n"}function S(t){return"\n"===t[t.length-1]?t.slice(0,-1):t}function C(t,r){if(""===t||" "===t[0])return t;for(var n,i,a=/ [^ ]/g,o=0,s=0,l=0,u="";n=a.exec(t);)(l=n.index)-o>r&&(i=s>o?s:l,u+="\n"+t.slice(o,i),o=i+1),s=l;return u+="\n",t.length-o>r&&s>o?u+=t.slice(o,s)+"\n"+t.slice(s+1):u+=t.slice(o),u.slice(1)}function I(t,r,n,i){var a,o,s,l="",u=t.tag;for(a=0,o=n.length;a<o;a+=1)s=n[a],t.replacer&&(s=t.replacer.call(n,String(a),s)),(k(t,r+1,s,!0,!0,!1,!0)||void 0===s&&k(t,r+1,null,!0,!0,!1,!0))&&(i&&""===l||(l+=m(t,r)),t.dump&&10===t.dump.charCodeAt(0)?l+="-":l+="- ",l+=t.dump);t.tag=u,t.dump=l||"[]"}function T(t,r,n){var a,l,u,d,c,h;for(u=0,d=(l=n?t.explicitTypes:t.implicitTypes).length;u<d;u+=1)if(((c=l[u]).instanceOf||c.predicate)&&(!c.instanceOf||"object"==typeof r&&r instanceof c.instanceOf)&&(!c.predicate||c.predicate(r))){if(n?c.multi&&c.representName?t.tag=c.representName(r):t.tag=c.tag:t.tag="?",c.represent){if(h=t.styleMap[c.tag]||c.defaultStyle,"[object Function]"===o.call(c.represent))a=c.represent(r,h);else{if(!s.call(c.represent,h))throw new i("!<"+c.tag+'> tag resolver accepts not "'+h+'" style');a=c.represent[h](r,h)}t.dump=a}return!0}return!1}function k(t,r,n,a,s,l,u){t.tag=null,t.dump=n,T(t,n,!1)||T(t,n,!0);var d,c=o.call(t.dump),h=a;a&&(a=t.flowLevel<0||t.flowLevel>r);var f,p,g="[object Object]"===c||"[object Array]"===c;if(g&&(p=-1!==(f=t.duplicates.indexOf(n))),(null!==t.tag&&"?"!==t.tag||p||2!==t.indent&&r>0)&&(s=!1),p&&t.usedDuplicates[f])t.dump="*ref_"+f;else{if(g&&p&&!t.usedDuplicates[f]&&(t.usedDuplicates[f]=!0),"[object Object]"===c)a&&0!==Object.keys(t.dump).length?(!function(t,r,n,a){var o,s,l,u,d,c,h="",f=t.tag,p=Object.keys(n);if(!0===t.sortKeys)p.sort();else if("function"==typeof t.sortKeys)p.sort(t.sortKeys);else if(t.sortKeys)throw new i("sortKeys must be a boolean or a function");for(o=0,s=p.length;o<s;o+=1)c="",a&&""===h||(c+=m(t,r)),u=n[l=p[o]],t.replacer&&(u=t.replacer.call(n,l,u)),k(t,r+1,l,!0,!0,!0)&&((d=null!==t.tag&&"?"!==t.tag||t.dump&&t.dump.length>1024)&&(t.dump&&10===t.dump.charCodeAt(0)?c+="?":c+="? "),c+=t.dump,d&&(c+=m(t,r)),k(t,r+1,u,!0,d)&&(t.dump&&10===t.dump.charCodeAt(0)?c+=":":c+=": ",h+=c+=t.dump));t.tag=f,t.dump=h||"{}"}(t,r,t.dump,s),p&&(t.dump="&ref_"+f+t.dump)):(!function(t,r,n){var i,a,o,s,l,u="",d=t.tag,c=Object.keys(n);for(i=0,a=c.length;i<a;i+=1)l="",""!==u&&(l+=", "),t.condenseFlow&&(l+='"'),s=n[o=c[i]],t.replacer&&(s=t.replacer.call(n,o,s)),k(t,r,o,!1,!1)&&(t.dump.length>1024&&(l+="? "),l+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),k(t,r,s,!1,!1)&&(u+=l+=t.dump));t.tag=d,t.dump="{"+u+"}"}(t,r,t.dump),p&&(t.dump="&ref_"+f+" "+t.dump));else if("[object Array]"===c)a&&0!==t.dump.length?(t.noArrayIndent&&!u&&r>0?I(t,r-1,t.dump,s):I(t,r,t.dump,s),p&&(t.dump="&ref_"+f+t.dump)):(!function(t,r,n){var i,a,o,s="",l=t.tag;for(i=0,a=n.length;i<a;i+=1)o=n[i],t.replacer&&(o=t.replacer.call(n,String(i),o)),(k(t,r,o,!1,!1)||void 0===o&&k(t,r,null,!1,!1))&&(""!==s&&(s+=","+(t.condenseFlow?"":" ")),s+=t.dump);t.tag=l,t.dump="["+s+"]"}(t,r,t.dump),p&&(t.dump="&ref_"+f+" "+t.dump));else{if("[object String]"!==c){if("[object Undefined]"===c||t.skipInvalid)return!1;throw new i("unacceptable kind of an object to dump "+c)}"?"!==t.tag&&x(t,t.dump,r,l,h)}null!==t.tag&&"?"!==t.tag&&(d=encodeURI("!"===t.tag[0]?t.tag.slice(1):t.tag).replace(/!/g,"%21"),d="!"===t.tag[0]?"!"+d:"tag:yaml.org,2002:"===d.slice(0,18)?"!!"+d.slice(18):"!<"+d+">",t.dump=d+" "+t.dump)}return!0}function P(t,r){var n,i,a=[],o=[];for(R(t,a,o),n=0,i=o.length;n<i;n+=1)r.duplicates.push(a[o[n]]);r.usedDuplicates=Array(i)}function R(t,r,n){var i,a,o;if(null!==t&&"object"==typeof t)if(-1!==(a=r.indexOf(t)))-1===n.indexOf(a)&&n.push(a);else if(r.push(t),Array.isArray(t))for(a=0,o=t.length;a<o;a+=1)R(t[a],r,n);else for(a=0,o=(i=Object.keys(t)).length;a<o;a+=1)R(t[i[a]],r,n)}r.exports.dump=function(t,r){var n=new f(r=r||{});n.noRefs||P(t,n);var i=t;return n.replacer&&(i=n.replacer.call({"":i},"",i)),k(n,0,i,!0,!0)?n.dump+"\n":""}}}),require_js_yaml=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/index.js"(t,r){init_globals();var n=require_loader(),i=require_dumper();function a(t,r){return function(){throw Error("Function yaml."+t+" is removed in js-yaml 4. Use yaml."+r+" instead, which is now safe by default.")}}r.exports.Type=require_type2(),r.exports.Schema=require_schema(),r.exports.FAILSAFE_SCHEMA=require_failsafe(),r.exports.JSON_SCHEMA=require_json2(),r.exports.CORE_SCHEMA=require_core6(),r.exports.DEFAULT_SCHEMA=require_default2(),r.exports.load=n.load,r.exports.loadAll=n.loadAll,r.exports.dump=i.dump,r.exports.YAMLException=require_exception(),r.exports.types={binary:require_binary(),float:require_float(),map:require_map2(),null:require_null2(),pairs:require_pairs(),set:require_set2(),timestamp:require_timestamp(),bool:require_bool(),int:require_int(),merge:require_merge(),omap:require_omap(),seq:require_seq(),str:require_str()},r.exports.safeLoad=a("safeLoad","load"),r.exports.safeLoadAll=a("safeLoadAll","loadAll"),r.exports.safeDump=a("safeDump","dump")}}),require_constants11=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/internal/constants.js"(t,r){init_globals(),r.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER||0x1fffffffffffff,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}}}),require_debug2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/internal/debug.js"(t,r){init_globals(),r.exports="object"==typeof import_browser.default&&import_browser.default.env&&import_browser.default.env.NODE_DEBUG&&/\bsemver\b/i.test(import_browser.default.env.NODE_DEBUG)?(...t)=>import_console_browserify.default.error("SEMVER",...t):()=>{}}}),require_re2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/internal/re.js"(t,r){init_globals();var{MAX_SAFE_COMPONENT_LENGTH:n}=require_constants11(),i=require_debug2(),a=(t=r.exports={}).re=[],o=t.safeRe=[],s=t.src=[],l=t.t={},u=0,d=(t,r,n)=>{let d=r.split("\\s*").join("\\s{0,1}").split("\\s+").join("\\s"),c=u++;i(t,c,r),l[t]=c,s[c]=r,a[c]=new RegExp(r,n?"g":void 0),o[c]=new RegExp(d,n?"g":void 0)};d("NUMERICIDENTIFIER","0|[1-9]\\d*"),d("NUMERICIDENTIFIERLOOSE","[0-9]+"),d("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*"),d("MAINVERSION",`(${s[l.NUMERICIDENTIFIER]})\\.(${s[l.NUMERICIDENTIFIER]})\\.(${s[l.NUMERICIDENTIFIER]})`),d("MAINVERSIONLOOSE",`(${s[l.NUMERICIDENTIFIERLOOSE]})\\.(${s[l.NUMERICIDENTIFIERLOOSE]})\\.(${s[l.NUMERICIDENTIFIERLOOSE]})`),d("PRERELEASEIDENTIFIER",`(?:${s[l.NUMERICIDENTIFIER]}|${s[l.NONNUMERICIDENTIFIER]})`),d("PRERELEASEIDENTIFIERLOOSE",`(?:${s[l.NUMERICIDENTIFIERLOOSE]}|${s[l.NONNUMERICIDENTIFIER]})`),d("PRERELEASE",`(?:-(${s[l.PRERELEASEIDENTIFIER]}(?:\\.${s[l.PRERELEASEIDENTIFIER]})*))`),d("PRERELEASELOOSE",`(?:-?(${s[l.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${s[l.PRERELEASEIDENTIFIERLOOSE]})*))`),d("BUILDIDENTIFIER","[0-9A-Za-z-]+"),d("BUILD",`(?:\\+(${s[l.BUILDIDENTIFIER]}(?:\\.${s[l.BUILDIDENTIFIER]})*))`),d("FULLPLAIN",`v?${s[l.MAINVERSION]}${s[l.PRERELEASE]}?${s[l.BUILD]}?`),d("FULL",`^${s[l.FULLPLAIN]}$`),d("LOOSEPLAIN",`[v=\\s]*${s[l.MAINVERSIONLOOSE]}${s[l.PRERELEASELOOSE]}?${s[l.BUILD]}?`),d("LOOSE",`^${s[l.LOOSEPLAIN]}$`),d("GTLT","((?:<|>)?=?)"),d("XRANGEIDENTIFIERLOOSE",`${s[l.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),d("XRANGEIDENTIFIER",`${s[l.NUMERICIDENTIFIER]}|x|X|\\*`),d("XRANGEPLAIN",`[v=\\s]*(${s[l.XRANGEIDENTIFIER]})(?:\\.(${s[l.XRANGEIDENTIFIER]})(?:\\.(${s[l.XRANGEIDENTIFIER]})(?:${s[l.PRERELEASE]})?${s[l.BUILD]}?)?)?`),d("XRANGEPLAINLOOSE",`[v=\\s]*(${s[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${s[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${s[l.XRANGEIDENTIFIERLOOSE]})(?:${s[l.PRERELEASELOOSE]})?${s[l.BUILD]}?)?)?`),d("XRANGE",`^${s[l.GTLT]}\\s*${s[l.XRANGEPLAIN]}$`),d("XRANGELOOSE",`^${s[l.GTLT]}\\s*${s[l.XRANGEPLAINLOOSE]}$`),d("COERCE",`(^|[^\\d])(\\d{1,${n}})(?:\\.(\\d{1,${n}}))?(?:\\.(\\d{1,${n}}))?(?:$|[^\\d])`),d("COERCERTL",s[l.COERCE],!0),d("LONETILDE","(?:~>?)"),d("TILDETRIM",`(\\s*)${s[l.LONETILDE]}\\s+`,!0),t.tildeTrimReplace="$1~",d("TILDE",`^${s[l.LONETILDE]}${s[l.XRANGEPLAIN]}$`),d("TILDELOOSE",`^${s[l.LONETILDE]}${s[l.XRANGEPLAINLOOSE]}$`),d("LONECARET","(?:\\^)"),d("CARETTRIM",`(\\s*)${s[l.LONECARET]}\\s+`,!0),t.caretTrimReplace="$1^",d("CARET",`^${s[l.LONECARET]}${s[l.XRANGEPLAIN]}$`),d("CARETLOOSE",`^${s[l.LONECARET]}${s[l.XRANGEPLAINLOOSE]}$`),d("COMPARATORLOOSE",`^${s[l.GTLT]}\\s*(${s[l.LOOSEPLAIN]})$|^$`),d("COMPARATOR",`^${s[l.GTLT]}\\s*(${s[l.FULLPLAIN]})$|^$`),d("COMPARATORTRIM",`(\\s*)${s[l.GTLT]}\\s*(${s[l.LOOSEPLAIN]}|${s[l.XRANGEPLAIN]})`,!0),t.comparatorTrimReplace="$1$2$3",d("HYPHENRANGE",`^\\s*(${s[l.XRANGEPLAIN]})\\s+-\\s+(${s[l.XRANGEPLAIN]})\\s*$`),d("HYPHENRANGELOOSE",`^\\s*(${s[l.XRANGEPLAINLOOSE]})\\s+-\\s+(${s[l.XRANGEPLAINLOOSE]})\\s*$`),d("STAR","(<|>)?=?\\s*\\*"),d("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),d("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}}),require_parse_options2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/internal/parse-options.js"(t,r){init_globals();var n=Object.freeze({loose:!0}),i=Object.freeze({});r.exports=t=>t?"object"!=typeof t?n:t:i}}),require_identifiers2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/internal/identifiers.js"(t,r){init_globals();var n=/^[0-9]+$/,i=(t,r)=>{let i=n.test(t),a=n.test(r);return i&&a&&(t*=1,r*=1),t===r?0:i&&!a?-1:a&&!i?1:t<r?-1:1};r.exports={compareIdentifiers:i,rcompareIdentifiers:(t,r)=>i(r,t)}}}),require_semver3=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/classes/semver.js"(t,r){init_globals();var n=require_debug2(),{MAX_LENGTH:i,MAX_SAFE_INTEGER:a}=require_constants11(),{safeRe:o,t:s}=require_re2(),l=require_parse_options2(),{compareIdentifiers:u}=require_identifiers2();r.exports=class t{constructor(r,u){if(u=l(u),r instanceof t){if(!!u.loose===r.loose&&!!u.includePrerelease===r.includePrerelease)return r;r=r.version}else if("string"!=typeof r)throw TypeError(`Invalid version. Must be a string. Got type "${typeof r}".`);if(r.length>i)throw TypeError(`version is longer than ${i} characters`);n("SemVer",r,u),this.options=u,this.loose=!!u.loose,this.includePrerelease=!!u.includePrerelease;let d=r.trim().match(u.loose?o[s.LOOSE]:o[s.FULL]);if(!d)throw TypeError(`Invalid Version: ${r}`);if(this.raw=r,this.major=+d[1],this.minor=+d[2],this.patch=+d[3],this.major>a||this.major<0)throw TypeError("Invalid major version");if(this.minor>a||this.minor<0)throw TypeError("Invalid minor version");if(this.patch>a||this.patch<0)throw TypeError("Invalid patch version");d[4]?this.prerelease=d[4].split(".").map(t=>{if(/^[0-9]+$/.test(t)){let r=+t;if(r>=0&&r<a)return r}return t}):this.prerelease=[],this.build=d[5]?d[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(r){if(n("SemVer.compare",this.version,this.options,r),!(r instanceof t)){if("string"==typeof r&&r===this.version)return 0;r=new t(r,this.options)}return r.version===this.version?0:this.compareMain(r)||this.comparePre(r)}compareMain(r){return r instanceof t||(r=new t(r,this.options)),u(this.major,r.major)||u(this.minor,r.minor)||u(this.patch,r.patch)}comparePre(r){if(r instanceof t||(r=new t(r,this.options)),this.prerelease.length&&!r.prerelease.length)return -1;if(!this.prerelease.length&&r.prerelease.length)return 1;if(!this.prerelease.length&&!r.prerelease.length)return 0;let i=0;do{let t=this.prerelease[i],a=r.prerelease[i];if(n("prerelease compare",i,t,a),void 0===t&&void 0===a)return 0;if(void 0===a)return 1;if(void 0===t)return -1;if(t!==a)return u(t,a)}while(++i)}compareBuild(r){r instanceof t||(r=new t(r,this.options));let i=0;do{let t=this.build[i],a=r.build[i];if(n("prerelease compare",i,t,a),void 0===t&&void 0===a)return 0;if(void 0===a)return 1;if(void 0===t)return -1;if(t!==a)return u(t,a)}while(++i)}inc(t,r,n){switch(t){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",r,n);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",r,n);break;case"prepatch":this.prerelease.length=0,this.inc("patch",r,n),this.inc("pre",r,n);break;case"prerelease":0===this.prerelease.length&&this.inc("patch",r,n),this.inc("pre",r,n);break;case"major":0===this.minor&&0===this.patch&&0!==this.prerelease.length||this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":0===this.patch&&0!==this.prerelease.length||this.minor++,this.patch=0,this.prerelease=[];break;case"patch":0===this.prerelease.length&&this.patch++,this.prerelease=[];break;case"pre":{let t=+!!Number(n);if(!r&&!1===n)throw Error("invalid increment argument: identifier is empty");if(0===this.prerelease.length)this.prerelease=[t];else{let i=this.prerelease.length;for(;--i>=0;)"number"==typeof this.prerelease[i]&&(this.prerelease[i]++,i=-2);if(-1===i){if(r===this.prerelease.join(".")&&!1===n)throw Error("invalid increment argument: identifier already exists");this.prerelease.push(t)}}if(r){let i=[r,t];!1===n&&(i=[r]),0===u(this.prerelease[0],r)?isNaN(this.prerelease[1])&&(this.prerelease=i):this.prerelease=i}break}default:throw Error(`invalid increment argument: ${t}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}}}}),require_parse4=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/parse.js"(t,r){init_globals();var n=require_semver3();r.exports=(t,r,i=!1)=>{if(t instanceof n)return t;try{return new n(t,r)}catch(t){if(!i)return null;throw t}}}}),require_valid3=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/valid.js"(t,r){init_globals();var n=require_parse4();r.exports=(t,r)=>{let i=n(t,r);return i?i.version:null}}}),require_clean2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/clean.js"(t,r){init_globals();var n=require_parse4();r.exports=(t,r)=>{let i=n(t.trim().replace(/^[=v]+/,""),r);return i?i.version:null}}}),require_inc2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/inc.js"(t,r){init_globals();var n=require_semver3();r.exports=(t,r,i,a,o)=>{"string"==typeof i&&(o=a,a=i,i=void 0);try{return new n(t instanceof n?t.version:t,i).inc(r,a,o).version}catch(t){return null}}}}),require_diff2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/diff.js"(t,r){init_globals();var n=require_parse4();r.exports=(t,r)=>{let i=n(t,null,!0),a=n(r,null,!0),o=i.compare(a);if(0===o)return null;let s=o>0,l=s?i:a,u=s?a:i,d=!!l.prerelease.length;if(u.prerelease.length&&!d)return u.patch||u.minor?l.patch?"patch":l.minor?"minor":"major":"major";let c=d?"pre":"";return i.major!==a.major?c+"major":i.minor!==a.minor?c+"minor":i.patch!==a.patch?c+"patch":"prerelease"}}}),require_major2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/major.js"(t,r){init_globals();var n=require_semver3();r.exports=(t,r)=>new n(t,r).major}}),require_minor2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/minor.js"(t,r){init_globals();var n=require_semver3();r.exports=(t,r)=>new n(t,r).minor}}),require_patch2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/patch.js"(t,r){init_globals();var n=require_semver3();r.exports=(t,r)=>new n(t,r).patch}}),require_prerelease2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/prerelease.js"(t,r){init_globals();var n=require_parse4();r.exports=(t,r)=>{let i=n(t,r);return i&&i.prerelease.length?i.prerelease:null}}}),require_compare2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/compare.js"(t,r){init_globals();var n=require_semver3();r.exports=(t,r,i)=>new n(t,i).compare(new n(r,i))}}),require_rcompare2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/rcompare.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r,i)=>n(r,t,i)}}),require_compare_loose2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/compare-loose.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r)=>n(t,r,!0)}}),require_compare_build2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/compare-build.js"(t,r){init_globals();var n=require_semver3();r.exports=(t,r,i)=>{let a=new n(t,i),o=new n(r,i);return a.compare(o)||a.compareBuild(o)}}}),require_sort2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/sort.js"(t,r){init_globals();var n=require_compare_build2();r.exports=(t,r)=>t.sort((t,i)=>n(t,i,r))}}),require_rsort2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/rsort.js"(t,r){init_globals();var n=require_compare_build2();r.exports=(t,r)=>t.sort((t,i)=>n(i,t,r))}}),require_gt2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/gt.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r,i)=>n(t,r,i)>0}}),require_lt2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/lt.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r,i)=>0>n(t,r,i)}}),require_eq2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/eq.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r,i)=>0===n(t,r,i)}}),require_neq2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/neq.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r,i)=>0!==n(t,r,i)}}),require_gte2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/gte.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r,i)=>n(t,r,i)>=0}}),require_lte2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/lte.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r,i)=>0>=n(t,r,i)}}),require_cmp2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/cmp.js"(t,r){init_globals();var n=require_eq2(),i=require_neq2(),a=require_gt2(),o=require_gte2(),s=require_lt2(),l=require_lte2();r.exports=(t,r,u,d)=>{switch(r){case"===":return"object"==typeof t&&(t=t.version),"object"==typeof u&&(u=u.version),t===u;case"!==":return"object"==typeof t&&(t=t.version),"object"==typeof u&&(u=u.version),t!==u;case"":case"=":case"==":return n(t,u,d);case"!=":return i(t,u,d);case">":return a(t,u,d);case">=":return o(t,u,d);case"<":return s(t,u,d);case"<=":return l(t,u,d);default:throw TypeError(`Invalid operator: ${r}`)}}}}),require_coerce2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/coerce.js"(t,r){init_globals();var n=require_semver3(),i=require_parse4(),{safeRe:a,t:o}=require_re2();r.exports=(t,r)=>{if(t instanceof n)return t;if("number"==typeof t&&(t=String(t)),"string"!=typeof t)return null;let s=null;if((r=r||{}).rtl){let r;for(;(r=a[o.COERCERTL].exec(t))&&(!s||s.index+s[0].length!==t.length);)s&&r.index+r[0].length===s.index+s[0].length||(s=r),a[o.COERCERTL].lastIndex=r.index+r[1].length+r[2].length;a[o.COERCERTL].lastIndex=-1}else s=t.match(a[o.COERCE]);return null===s?null:i(`${s[2]}.${s[3]||"0"}.${s[4]||"0"}`,r)}}}),require_iterator=__commonJS({"../../node_modules/.pnpm/yallist@4.0.0/node_modules/yallist/iterator.js"(t,r){init_globals(),r.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let t=this.head;t;t=t.next)yield t.value}}}}),require_yallist=__commonJS({"../../node_modules/.pnpm/yallist@4.0.0/node_modules/yallist/yallist.js"(t,r){function n(t){var r=this;if(r instanceof n||(r=new n),r.tail=null,r.head=null,r.length=0,t&&"function"==typeof t.forEach)t.forEach(function(t){r.push(t)});else if(arguments.length>0)for(var i=0,a=arguments.length;i<a;i++)r.push(arguments[i]);return r}function i(t,r,n){var i=r===t.head?new s(n,null,r,t):new s(n,r,r.next,t);return null===i.next&&(t.tail=i),null===i.prev&&(t.head=i),t.length++,i}function a(t,r){t.tail=new s(r,t.tail,null,t),t.head||(t.head=t.tail),t.length++}function o(t,r){t.head=new s(r,null,t.head,t),t.tail||(t.tail=t.head),t.length++}function s(t,r,n,i){if(!(this instanceof s))return new s(t,r,n,i);this.list=i,this.value=t,r?(r.next=this,this.prev=r):this.prev=null,n?(n.prev=this,this.next=n):this.next=null}init_globals(),r.exports=n,n.Node=s,n.create=n,n.prototype.removeNode=function(t){if(t.list!==this)throw Error("removing node which does not belong to this list");var r=t.next,n=t.prev;return r&&(r.prev=n),n&&(n.next=r),t===this.head&&(this.head=r),t===this.tail&&(this.tail=n),t.list.length--,t.next=null,t.prev=null,t.list=null,r},n.prototype.unshiftNode=function(t){if(t!==this.head){t.list&&t.list.removeNode(t);var r=this.head;t.list=this,t.next=r,r&&(r.prev=t),this.head=t,this.tail||(this.tail=t),this.length++}},n.prototype.pushNode=function(t){if(t!==this.tail){t.list&&t.list.removeNode(t);var r=this.tail;t.list=this,t.prev=r,r&&(r.next=t),this.tail=t,this.head||(this.head=t),this.length++}},n.prototype.push=function(){for(var t=0,r=arguments.length;t<r;t++)a(this,arguments[t]);return this.length},n.prototype.unshift=function(){for(var t=0,r=arguments.length;t<r;t++)o(this,arguments[t]);return this.length},n.prototype.pop=function(){if(this.tail){var t=this.tail.value;return this.tail=this.tail.prev,this.tail?this.tail.next=null:this.head=null,this.length--,t}},n.prototype.shift=function(){if(this.head){var t=this.head.value;return this.head=this.head.next,this.head?this.head.prev=null:this.tail=null,this.length--,t}},n.prototype.forEach=function(t,r){r=r||this;for(var n=this.head,i=0;null!==n;i++)t.call(r,n.value,i,this),n=n.next},n.prototype.forEachReverse=function(t,r){r=r||this;for(var n=this.tail,i=this.length-1;null!==n;i--)t.call(r,n.value,i,this),n=n.prev},n.prototype.get=function(t){for(var r=0,n=this.head;null!==n&&r<t;r++)n=n.next;if(r===t&&null!==n)return n.value},n.prototype.getReverse=function(t){for(var r=0,n=this.tail;null!==n&&r<t;r++)n=n.prev;if(r===t&&null!==n)return n.value},n.prototype.map=function(t,r){r=r||this;for(var i=new n,a=this.head;null!==a;)i.push(t.call(r,a.value,this)),a=a.next;return i},n.prototype.mapReverse=function(t,r){r=r||this;for(var i=new n,a=this.tail;null!==a;)i.push(t.call(r,a.value,this)),a=a.prev;return i},n.prototype.reduce=function(t,r){var n,i=this.head;if(arguments.length>1)n=r;else{if(!this.head)throw TypeError("Reduce of empty list with no initial value");i=this.head.next,n=this.head.value}for(var a=0;null!==i;a++)n=t(n,i.value,a),i=i.next;return n},n.prototype.reduceReverse=function(t,r){var n,i=this.tail;if(arguments.length>1)n=r;else{if(!this.tail)throw TypeError("Reduce of empty list with no initial value");i=this.tail.prev,n=this.tail.value}for(var a=this.length-1;null!==i;a--)n=t(n,i.value,a),i=i.prev;return n},n.prototype.toArray=function(){for(var t=Array(this.length),r=0,n=this.head;null!==n;r++)t[r]=n.value,n=n.next;return t},n.prototype.toArrayReverse=function(){for(var t=Array(this.length),r=0,n=this.tail;null!==n;r++)t[r]=n.value,n=n.prev;return t},n.prototype.slice=function(t,r){(r=r||this.length)<0&&(r+=this.length),(t=t||0)<0&&(t+=this.length);var i=new n;if(r<t||r<0)return i;t<0&&(t=0),r>this.length&&(r=this.length);for(var a=0,o=this.head;null!==o&&a<t;a++)o=o.next;for(;null!==o&&a<r;a++,o=o.next)i.push(o.value);return i},n.prototype.sliceReverse=function(t,r){(r=r||this.length)<0&&(r+=this.length),(t=t||0)<0&&(t+=this.length);var i=new n;if(r<t||r<0)return i;t<0&&(t=0),r>this.length&&(r=this.length);for(var a=this.length,o=this.tail;null!==o&&a>r;a--)o=o.prev;for(;null!==o&&a>t;a--,o=o.prev)i.push(o.value);return i},n.prototype.splice=function(t,r,...n){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var a=0,o=this.head;null!==o&&a<t;a++)o=o.next;var s=[];for(a=0;o&&a<r;a++)s.push(o.value),o=this.removeNode(o);for(null===o&&(o=this.tail),o!==this.head&&o!==this.tail&&(o=o.prev),a=0;a<n.length;a++)o=i(this,o,n[a]);return s},n.prototype.reverse=function(){for(var t=this.head,r=this.tail,n=t;null!==n;n=n.prev){var i=n.prev;n.prev=n.next,n.next=i}return this.head=r,this.tail=t,this};try{require_iterator()(n)}catch(t){}}}),require_lru_cache=__commonJS({"../../node_modules/.pnpm/lru-cache@6.0.0/node_modules/lru-cache/index.js"(t,r){init_globals();var n=require_yallist(),i=Symbol("max"),a=Symbol("length"),o=Symbol("lengthCalculator"),s=Symbol("allowStale"),l=Symbol("maxAge"),u=Symbol("dispose"),d=Symbol("noDisposeOnSet"),c=Symbol("lruList"),h=Symbol("cache"),f=Symbol("updateAgeOnGet"),p=()=>1,m=(t,r,n)=>{let i=t[h].get(r);if(i){let r=i.value;if(g(t,r)){if(y(t,i),!t[s])return}else n&&(t[f]&&(i.value.now=Date.now()),t[c].unshiftNode(i));return r.value}},g=(t,r)=>{if(!r||!r.maxAge&&!t[l])return!1;let n=Date.now()-r.now;return r.maxAge?n>r.maxAge:t[l]&&n>t[l]},b=t=>{if(t[a]>t[i])for(let r=t[c].tail;t[a]>t[i]&&null!==r;){let n=r.prev;y(t,r),r=n}},y=(t,r)=>{if(r){let n=r.value;t[u]&&t[u](n.key,n.value),t[a]-=n.length,t[h].delete(n.key),t[c].removeNode(r)}},_=class{constructor(t,r,n,i,a){this.key=t,this.value=r,this.length=n,this.now=i,this.maxAge=a||0}},v=(t,r,n,i)=>{let a=n.value;g(t,a)&&(y(t,n),t[s]||(a=void 0)),a&&r.call(i,a.value,a.key,t)};r.exports=class{constructor(t){if("number"==typeof t&&(t={max:t}),t||(t={}),t.max&&("number"!=typeof t.max||t.max<0))throw TypeError("max must be a non-negative number");this[i]=t.max||1/0;let r=t.length||p;if(this[o]="function"!=typeof r?p:r,this[s]=t.stale||!1,t.maxAge&&"number"!=typeof t.maxAge)throw TypeError("maxAge must be a number");this[l]=t.maxAge||0,this[u]=t.dispose,this[d]=t.noDisposeOnSet||!1,this[f]=t.updateAgeOnGet||!1,this.reset()}set max(t){if("number"!=typeof t||t<0)throw TypeError("max must be a non-negative number");this[i]=t||1/0,b(this)}get max(){return this[i]}set allowStale(t){this[s]=!!t}get allowStale(){return this[s]}set maxAge(t){if("number"!=typeof t)throw TypeError("maxAge must be a non-negative number");this[l]=t,b(this)}get maxAge(){return this[l]}set lengthCalculator(t){"function"!=typeof t&&(t=p),t!==this[o]&&(this[o]=t,this[a]=0,this[c].forEach(t=>{t.length=this[o](t.value,t.key),this[a]+=t.length})),b(this)}get lengthCalculator(){return this[o]}get length(){return this[a]}get itemCount(){return this[c].length}rforEach(t,r){r=r||this;for(let n=this[c].tail;null!==n;){let i=n.prev;v(this,t,n,r),n=i}}forEach(t,r){r=r||this;for(let n=this[c].head;null!==n;){let i=n.next;v(this,t,n,r),n=i}}keys(){return this[c].toArray().map(t=>t.key)}values(){return this[c].toArray().map(t=>t.value)}reset(){this[u]&&this[c]&&this[c].length&&this[c].forEach(t=>this[u](t.key,t.value)),this[h]=new Map,this[c]=new n,this[a]=0}dump(){return this[c].map(t=>!g(this,t)&&{k:t.key,v:t.value,e:t.now+(t.maxAge||0)}).toArray().filter(t=>t)}dumpLru(){return this[c]}set(t,r,n){if((n=n||this[l])&&"number"!=typeof n)throw TypeError("maxAge must be a number");let s=n?Date.now():0,f=this[o](r,t);if(this[h].has(t)){if(f>this[i])return y(this,this[h].get(t)),!1;let o=this[h].get(t).value;return this[u]&&(this[d]||this[u](t,o.value)),o.now=s,o.maxAge=n,o.value=r,this[a]+=f-o.length,o.length=f,this.get(t),b(this),!0}let p=new _(t,r,f,s,n);return p.length>this[i]?(this[u]&&this[u](t,r),!1):(this[a]+=p.length,this[c].unshift(p),this[h].set(t,this[c].head),b(this),!0)}has(t){return!!this[h].has(t)&&!g(this,this[h].get(t).value)}get(t){return m(this,t,!0)}peek(t){return m(this,t,!1)}pop(){let t=this[c].tail;return t?(y(this,t),t.value):null}del(t){y(this,this[h].get(t))}load(t){this.reset();let r=Date.now();for(let n=t.length-1;n>=0;n--){let i=t[n],a=i.e||0;if(0===a)this.set(i.k,i.v);else{let t=a-r;t>0&&this.set(i.k,i.v,t)}}}prune(){this[h].forEach((t,r)=>m(this,r,!1))}}}}),require_range3=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/classes/range.js"(t,r){init_globals(),r.exports=class t{constructor(r,n){if(n=i(n),r instanceof t)return!!n.loose===r.loose&&!!n.includePrerelease===r.includePrerelease?r:new t(r.raw,n);if(r instanceof a)return this.raw=r.value,this.set=[[r]],this.format(),this;if(this.options=n,this.loose=!!n.loose,this.includePrerelease=!!n.includePrerelease,this.raw=r.trim().split(/\s+/).join(" "),this.set=this.raw.split("||").map(t=>this.parseRange(t)).filter(t=>t.length),!this.set.length)throw TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let t=this.set[0];if(this.set=this.set.filter(t=>!m(t[0])),0===this.set.length)this.set=[t];else if(this.set.length>1){for(let t of this.set)if(1===t.length&&g(t[0])){this.set=[t];break}}}this.format()}format(){return this.range=this.set.map(t=>t.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(t){let r=((this.options.includePrerelease&&f)|(this.options.loose&&p))+":"+t,i=n.get(r);if(i)return i;let s=this.options.loose,g=s?l[u.HYPHENRANGELOOSE]:l[u.HYPHENRANGE];o("hyphen replace",t=t.replace(g,T(this.options.includePrerelease))),o("comparator trim",t=t.replace(l[u.COMPARATORTRIM],d));let b=(t=(t=t.replace(l[u.TILDETRIM],c)).replace(l[u.CARETTRIM],h)).split(" ").map(t=>y(t,this.options)).join(" ").split(/\s+/).map(t=>I(t,this.options));s&&(b=b.filter(t=>(o("loose invalid filter",t,this.options),!!t.match(l[u.COMPARATORLOOSE])))),o("range list",b);let _=new Map;for(let t of b.map(t=>new a(t,this.options))){if(m(t))return[t];_.set(t.value,t)}_.size>1&&_.has("")&&_.delete("");let v=[..._.values()];return n.set(r,v),v}intersects(r,n){if(!(r instanceof t))throw TypeError("a Range is required");return this.set.some(t=>b(t,n)&&r.set.some(r=>b(r,n)&&t.every(t=>r.every(r=>t.intersects(r,n)))))}test(t){if(!t)return!1;if("string"==typeof t)try{t=new s(t,this.options)}catch(t){return!1}for(let r=0;r<this.set.length;r++)if(k(this.set[r],t,this.options))return!0;return!1}};var n=new(require_lru_cache())({max:1e3}),i=require_parse_options2(),a=require_comparator2(),o=require_debug2(),s=require_semver3(),{safeRe:l,t:u,comparatorTrimReplace:d,tildeTrimReplace:c,caretTrimReplace:h}=require_re2(),{FLAG_INCLUDE_PRERELEASE:f,FLAG_LOOSE:p}=require_constants11(),m=t=>"<0.0.0-0"===t.value,g=t=>""===t.value,b=(t,r)=>{let n=!0,i=t.slice(),a=i.pop();for(;n&&i.length;)n=i.every(t=>a.intersects(t,r)),a=i.pop();return n},y=(t,r)=>(o("comp",t,r),o("caret",t=w(t,r)),o("tildes",t=v(t,r)),o("xrange",t=E(t,r)),o("stars",t=C(t,r)),t),_=t=>!t||"x"===t.toLowerCase()||"*"===t,v=(t,r)=>t.trim().split(/\s+/).map(t=>A(t,r)).join(" "),A=(t,r)=>{let n=r.loose?l[u.TILDELOOSE]:l[u.TILDE];return t.replace(n,(r,n,i,a,s)=>{let l;return o("tilde",t,r,n,i,a,s),_(n)?l="":_(i)?l=`>=${n}.0.0 <${+n+1}.0.0-0`:_(a)?l=`>=${n}.${i}.0 <${n}.${+i+1}.0-0`:s?(o("replaceTilde pr",s),l=`>=${n}.${i}.${a}-${s} <${n}.${+i+1}.0-0`):l=`>=${n}.${i}.${a} <${n}.${+i+1}.0-0`,o("tilde return",l),l})},w=(t,r)=>t.trim().split(/\s+/).map(t=>x(t,r)).join(" "),x=(t,r)=>{o("caret",t,r);let n=r.loose?l[u.CARETLOOSE]:l[u.CARET],i=r.includePrerelease?"-0":"";return t.replace(n,(r,n,a,s,l)=>{let u;return o("caret",t,r,n,a,s,l),_(n)?u="":_(a)?u=`>=${n}.0.0${i} <${+n+1}.0.0-0`:_(s)?u="0"===n?`>=${n}.${a}.0${i} <${n}.${+a+1}.0-0`:`>=${n}.${a}.0${i} <${+n+1}.0.0-0`:l?(o("replaceCaret pr",l),u="0"===n?"0"===a?`>=${n}.${a}.${s}-${l} <${n}.${a}.${+s+1}-0`:`>=${n}.${a}.${s}-${l} <${n}.${+a+1}.0-0`:`>=${n}.${a}.${s}-${l} <${+n+1}.0.0-0`):(o("no pr"),u="0"===n?"0"===a?`>=${n}.${a}.${s}${i} <${n}.${a}.${+s+1}-0`:`>=${n}.${a}.${s}${i} <${n}.${+a+1}.0-0`:`>=${n}.${a}.${s} <${+n+1}.0.0-0`),o("caret return",u),u})},E=(t,r)=>(o("replaceXRanges",t,r),t.split(/\s+/).map(t=>S(t,r)).join(" ")),S=(t,r)=>{t=t.trim();let n=r.loose?l[u.XRANGELOOSE]:l[u.XRANGE];return t.replace(n,(n,i,a,s,l,u)=>{o("xRange",t,n,i,a,s,l,u);let d=_(a),c=d||_(s),h=c||_(l),f=h;return"="===i&&f&&(i=""),u=r.includePrerelease?"-0":"",d?n=">"===i||"<"===i?"<0.0.0-0":"*":i&&f?(c&&(s=0),l=0,">"===i?(i=">=",c?(a=+a+1,s=0):s=+s+1,l=0):"<="===i&&(i="<",c?a=+a+1:s=+s+1),"<"===i&&(u="-0"),n=`${i+a}.${s}.${l}${u}`):c?n=`>=${a}.0.0${u} <${+a+1}.0.0-0`:h&&(n=`>=${a}.${s}.0${u} <${a}.${+s+1}.0-0`),o("xRange return",n),n})},C=(t,r)=>(o("replaceStars",t,r),t.trim().replace(l[u.STAR],"")),I=(t,r)=>(o("replaceGTE0",t,r),t.trim().replace(l[r.includePrerelease?u.GTE0PRE:u.GTE0],"")),T=t=>(r,n,i,a,o,s,l,u,d,c,h,f,p)=>`${n=_(i)?"":_(a)?`>=${i}.0.0${t?"-0":""}`:_(o)?`>=${i}.${a}.0${t?"-0":""}`:s?`>=${n}`:`>=${n}${t?"-0":""}`} ${u=_(d)?"":_(c)?`<${+d+1}.0.0-0`:_(h)?`<${d}.${+c+1}.0-0`:f?`<=${d}.${c}.${h}-${f}`:t?`<${d}.${c}.${+h+1}-0`:`<=${u}`}`.trim(),k=(t,r,n)=>{for(let n=0;n<t.length;n++)if(!t[n].test(r))return!1;if(r.prerelease.length&&!n.includePrerelease){for(let n=0;n<t.length;n++)if(o(t[n].semver),t[n].semver!==a.ANY&&t[n].semver.prerelease.length>0){let i=t[n].semver;if(i.major===r.major&&i.minor===r.minor&&i.patch===r.patch)return!0}return!1}return!0}}}),require_comparator2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/classes/comparator.js"(t,r){init_globals();var n=Symbol("SemVer ANY");r.exports=class t{static get ANY(){return n}constructor(r,a){if(a=i(a),r instanceof t){if(!!a.loose===r.loose)return r;r=r.value}l("comparator",r=r.trim().split(/\s+/).join(" "),a),this.options=a,this.loose=!!a.loose,this.parse(r),this.semver===n?this.value="":this.value=this.operator+this.semver.version,l("comp",this)}parse(t){let r=this.options.loose?a[o.COMPARATORLOOSE]:a[o.COMPARATOR],i=t.match(r);if(!i)throw TypeError(`Invalid comparator: ${t}`);this.operator=void 0!==i[1]?i[1]:"","="===this.operator&&(this.operator=""),i[2]?this.semver=new u(i[2],this.options.loose):this.semver=n}toString(){return this.value}test(t){if(l("Comparator.test",t,this.options.loose),this.semver===n||t===n)return!0;if("string"==typeof t)try{t=new u(t,this.options)}catch(t){return!1}return s(t,this.operator,this.semver,this.options)}intersects(r,n){if(!(r instanceof t))throw TypeError("a Comparator is required");return""===this.operator?""===this.value||new d(r.value,n).test(this.value):""===r.operator?""===r.value||new d(this.value,n).test(r.semver):(!(n=i(n)).includePrerelease||"<0.0.0-0"!==this.value&&"<0.0.0-0"!==r.value)&&!(!n.includePrerelease&&(this.value.startsWith("<0.0.0")||r.value.startsWith("<0.0.0")))&&(!(!this.operator.startsWith(">")||!r.operator.startsWith(">"))||!(!this.operator.startsWith("<")||!r.operator.startsWith("<"))||!(this.semver.version!==r.semver.version||!this.operator.includes("=")||!r.operator.includes("="))||!!(s(this.semver,"<",r.semver,n)&&this.operator.startsWith(">")&&r.operator.startsWith("<"))||!!(s(this.semver,">",r.semver,n)&&this.operator.startsWith("<")&&r.operator.startsWith(">")))}};var i=require_parse_options2(),{safeRe:a,t:o}=require_re2(),s=require_cmp2(),l=require_debug2(),u=require_semver3(),d=require_range3()}}),require_satisfies2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/satisfies.js"(t,r){init_globals();var n=require_range3();r.exports=(t,r,i)=>{try{r=new n(r,i)}catch(t){return!1}return r.test(t)}}}),require_to_comparators2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/to-comparators.js"(t,r){init_globals();var n=require_range3();r.exports=(t,r)=>new n(t,r).set.map(t=>t.map(t=>t.value).join(" ").trim().split(" "))}}),require_max_satisfying2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/max-satisfying.js"(t,r){init_globals();var n=require_semver3(),i=require_range3();r.exports=(t,r,a)=>{let o=null,s=null,l=null;try{l=new i(r,a)}catch(t){return null}return t.forEach(t=>{l.test(t)&&(o&&-1!==s.compare(t)||(s=new n(o=t,a)))}),o}}}),require_min_satisfying2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/min-satisfying.js"(t,r){init_globals();var n=require_semver3(),i=require_range3();r.exports=(t,r,a)=>{let o=null,s=null,l=null;try{l=new i(r,a)}catch(t){return null}return t.forEach(t=>{l.test(t)&&(o&&1!==s.compare(t)||(s=new n(o=t,a)))}),o}}}),require_min_version2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/min-version.js"(t,r){init_globals();var n=require_semver3(),i=require_range3(),a=require_gt2();r.exports=(t,r)=>{t=new i(t,r);let o=new n("0.0.0");if(t.test(o)||(o=new n("0.0.0-0"),t.test(o)))return o;o=null;for(let r=0;r<t.set.length;++r){let i=t.set[r],s=null;i.forEach(t=>{let r=new n(t.semver.version);switch(t.operator){case">":0===r.prerelease.length?r.patch++:r.prerelease.push(0),r.raw=r.format();case"":case">=":s&&!a(r,s)||(s=r);break;case"<":case"<=":break;default:throw Error(`Unexpected operation: ${t.operator}`)}}),s&&(!o||a(o,s))&&(o=s)}return o&&t.test(o)?o:null}}}),require_valid4=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/valid.js"(t,r){init_globals();var n=require_range3();r.exports=(t,r)=>{try{return new n(t,r).range||"*"}catch(t){return null}}}}),require_outside2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/outside.js"(t,r){init_globals();var n=require_semver3(),i=require_comparator2(),{ANY:a}=i,o=require_range3(),s=require_satisfies2(),l=require_gt2(),u=require_lt2(),d=require_lte2(),c=require_gte2();r.exports=(t,r,h,f)=>{let p,m,g,b,y;switch(t=new n(t,f),r=new o(r,f),h){case">":p=l,m=d,g=u,b=">",y=">=";break;case"<":p=u,m=c,g=l,b="<",y="<=";break;default:throw TypeError('Must provide a hilo val of "<" or ">"')}if(s(t,r,f))return!1;for(let n=0;n<r.set.length;++n){let o=r.set[n],s=null,l=null;if(o.forEach(t=>{t.semver===a&&(t=new i(">=0.0.0")),s=s||t,l=l||t,p(t.semver,s.semver,f)?s=t:g(t.semver,l.semver,f)&&(l=t)}),s.operator===b||s.operator===y||(!l.operator||l.operator===b)&&m(t,l.semver)||l.operator===y&&g(t,l.semver))return!1}return!0}}}),require_gtr2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/gtr.js"(t,r){init_globals();var n=require_outside2();r.exports=(t,r,i)=>n(t,r,">",i)}}),require_ltr2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/ltr.js"(t,r){init_globals();var n=require_outside2();r.exports=(t,r,i)=>n(t,r,"<",i)}}),require_intersects2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/intersects.js"(t,r){init_globals();var n=require_range3();r.exports=(t,r,i)=>(t=new n(t,i),r=new n(r,i),t.intersects(r,i))}}),require_simplify3=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/simplify.js"(t,r){init_globals();var n=require_satisfies2(),i=require_compare2();r.exports=(t,r,a)=>{let o=[],s=null,l=null,u=t.sort((t,r)=>i(t,r,a));for(let t of u)n(t,r,a)?(l=t,s||(s=t)):(l&&o.push([s,l]),l=null,s=null);s&&o.push([s,null]);let d=[];for(let[t,r]of o)t===r?d.push(t):r||t!==u[0]?r?t===u[0]?d.push(`<=${r}`):d.push(`${t} - ${r}`):d.push(`>=${t}`):d.push("*");let c=d.join(" || "),h="string"==typeof r.raw?r.raw:String(r);return c.length<h.length?c:r}}}),require_subset2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/subset.js"(t,r){init_globals();var n=require_range3(),i=require_comparator2(),{ANY:a}=i,o=require_satisfies2(),s=require_compare2(),l=[new i(">=0.0.0-0")],u=[new i(">=0.0.0")],d=(t,r,n)=>{let i,d,f,p,m,g,b;if(t===r)return!0;if(1===t.length&&t[0].semver===a){if(1===r.length&&r[0].semver===a)return!0;t=n.includePrerelease?l:u}if(1===r.length&&r[0].semver===a){if(n.includePrerelease)return!0;r=u}let y=new Set;for(let r of t)">"===r.operator||">="===r.operator?i=c(i,r,n):"<"===r.operator||"<="===r.operator?d=h(d,r,n):y.add(r.semver);if(y.size>1||i&&d&&((f=s(i.semver,d.semver,n))>0||0===f&&(">="!==i.operator||"<="!==d.operator)))return null;for(let t of y){if(i&&!o(t,String(i),n)||d&&!o(t,String(d),n))return null;for(let i of r)if(!o(t,String(i),n))return!1;return!0}let _=!(!d||n.includePrerelease||!d.semver.prerelease.length)&&d.semver,v=!(!i||n.includePrerelease||!i.semver.prerelease.length)&&i.semver;for(let t of(_&&1===_.prerelease.length&&"<"===d.operator&&0===_.prerelease[0]&&(_=!1),r)){if(b=b||">"===t.operator||">="===t.operator,g=g||"<"===t.operator||"<="===t.operator,i){if(v&&t.semver.prerelease&&t.semver.prerelease.length&&t.semver.major===v.major&&t.semver.minor===v.minor&&t.semver.patch===v.patch&&(v=!1),">"===t.operator||">="===t.operator){if((p=c(i,t,n))===t&&p!==i)return!1}else if(">="===i.operator&&!o(i.semver,String(t),n))return!1}if(d){if(_&&t.semver.prerelease&&t.semver.prerelease.length&&t.semver.major===_.major&&t.semver.minor===_.minor&&t.semver.patch===_.patch&&(_=!1),"<"===t.operator||"<="===t.operator){if((m=h(d,t,n))===t&&m!==d)return!1}else if("<="===d.operator&&!o(d.semver,String(t),n))return!1}if(!t.operator&&(d||i)&&0!==f)return!1}return!(i&&g&&!d&&0!==f)&&!(d&&b&&!i&&0!==f)&&!v&&!_},c=(t,r,n)=>{if(!t)return r;let i=s(t.semver,r.semver,n);return i>0?t:i<0||">"===r.operator&&">="===t.operator?r:t},h=(t,r,n)=>{if(!t)return r;let i=s(t.semver,r.semver,n);return i<0?t:i>0||"<"===r.operator&&"<="===t.operator?r:t};r.exports=(t,r,i={})=>{if(t===r)return!0;t=new n(t,i),r=new n(r,i);let a=!1;e:for(let n of t.set){for(let t of r.set){let r=d(n,t,i);if(a=a||null!==r,r)continue e}if(a)return!1}return!0}}}),require_semver4=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/index.js"(t,r){init_globals();var n=require_re2(),i=require_constants11(),a=require_semver3(),o=require_identifiers2();r.exports={parse:require_parse4(),valid:require_valid3(),clean:require_clean2(),inc:require_inc2(),diff:require_diff2(),major:require_major2(),minor:require_minor2(),patch:require_patch2(),prerelease:require_prerelease2(),compare:require_compare2(),rcompare:require_rcompare2(),compareLoose:require_compare_loose2(),compareBuild:require_compare_build2(),sort:require_sort2(),rsort:require_rsort2(),gt:require_gt2(),lt:require_lt2(),eq:require_eq2(),neq:require_neq2(),gte:require_gte2(),lte:require_lte2(),cmp:require_cmp2(),coerce:require_coerce2(),Comparator:require_comparator2(),Range:require_range3(),satisfies:require_satisfies2(),toComparators:require_to_comparators2(),maxSatisfying:require_max_satisfying2(),minSatisfying:require_min_satisfying2(),minVersion:require_min_version2(),validRange:require_valid4(),outside:require_outside2(),gtr:require_gtr2(),ltr:require_ltr2(),intersects:require_intersects2(),simplifyRange:require_simplify3(),subset:require_subset2(),SemVer:a,re:n.re,src:n.src,tokens:n.t,SEMVER_SPEC_VERSION:i.SEMVER_SPEC_VERSION,RELEASE_TYPES:i.RELEASE_TYPES,compareIdentifiers:o.compareIdentifiers,rcompareIdentifiers:o.rcompareIdentifiers}}}),require_lib7=__commonJS({"../core/dist/lib/index.js"(t){function r(t){let r,n=t[0],i=1;for(;i<t.length;){let a=t[i],o=t[i+1];if(i+=2,("optionalAccess"===a||"optionalCall"===a)&&null==n)return;"access"===a||"optionalAccess"===a?(r=n,n=o(n)):"call"!==a&&"optionalCall"!==a||(n=o((...t)=>n.call(r,...t)),r=void 0)}return n}init_globals(),Object.defineProperty(t,"__esModule",{value:!0});var n=require_chunk_ZYDQQ5BX(),i=require_chunk_I5LBWOQA(),a=require_env(),o=require_utils5(),s=require_img();function l(t,i){let s={sdkVersion:n.getVersion.call(void 0),logTime:Date.now(),model_name:a.getAIConfig.call(void 0,a.MIDSCENE_MODEL_NAME)||""},l={logId:o.uuid.call(void 0),...s,...t};r([i,"optionalCall",t=>t(l)])}var u=require_logger().getDebug.call(void 0,"ai:insight"),d=class{constructor(t,n){this.aiVendorFn=i.callAiFn,o.assert.call(void 0,t,"context is required for Insight"),this.contextRetrieverFn="function"==typeof t?t:()=>Promise.resolve(t),void 0!==r([n,"optionalAccess",t=>t.aiVendorFn])&&(this.aiVendorFn=n.aiVendorFn),void 0!==r([n,"optionalAccess",t=>t.taskInfo])&&(this.taskInfo=n.taskInfo)}async locate(t,n){let s,d,c,h,f,p,{callAI:m}=n||{},g="string"==typeof t?t:t.prompt;o.assert.call(void 0,g,"query is required for locate");let b=this.onceDumpUpdatedFn;this.onceDumpUpdatedFn=void 0,o.assert.call(void 0,"object"==typeof t,"query should be an object for locate");let y=a.getAIConfigInBoolean.call(void 0,a.MIDSCENE_FORCE_DEEP_THINK);y&&u("globalDeepThinkSwitch",y),(t.deepThink||y)&&(s=t.prompt),s&&!a.vlLocateMode.call(void 0)&&(import_console_browserify.default.warn('The "deepThink" feature is not supported with multimodal LLM. Please config VL model for Midscene. https://midscenejs.com/choose-a-model'),s=void 0);let _=r([n,"optionalAccess",t=>t.context])||await this.contextRetrieverFn("locate");s&&(f=await i.AiLocateSection.call(void 0,{context:_,sectionDescription:s}),o.assert.call(void 0,f.rect,`cannot find search area for "${s}"${f.error?`: ${f.error}`:""}`),c=f.rawResponse,h=f.usage,d=f.rect);let v=Date.now(),{parseResult:A,rect:w,elementById:x,rawResponse:E,usage:S,isOrderSensitive:C}=await i.AiLocateElement.call(void 0,{callAI:m||this.aiVendorFn,context:_,targetElementDescription:g,searchConfig:f}),I=Date.now()-v,T={...this.taskInfo?this.taskInfo:{},durationMs:I,rawResponse:JSON.stringify(E),formatResponse:JSON.stringify(A),usage:S,searchArea:d,searchAreaRawResponse:c,searchAreaUsage:h};r([A,"access",t=>t.errors,"optionalAccess",t=>t.length])&&(p=`AI model failed to locate:
731
+ `,"utf-8")),p=!0}let c=u.join(l,`${r}.${i}`);return"dump"!==s&&a.writeFileSync.call(void 0,c,o),n([t,"optionalAccess",t=>t.generateReport])?y(r,o,t.appendReport):c},t.getTmpDir=_,t.getTmpFile=function(t){if(f.ifInBrowser||f.ifInWorker)return null;let r=_(),n=`${f.uuid.call(void 0)}.${t}`;return u.join(r,n)},t.overlapped=function(t,r){return t.left<r.left+r.width&&t.left+t.width>r.left&&t.top<r.top+r.height&&t.top+t.height>r.top},t.sleep=async function(t){return new Promise(r=>setTimeout(r,t))},t.replacerForPageObject=v,t.stringifyDumpData=function(t,r){return JSON.stringify(t,v,r)},t.getVersion=function(){return"0.25.2"},t.uploadTestInfoToServer=function({testUrl:t}){let r="",a="",o=n([c.getAIConfigInJson.call(void 0,c.MIDSCENE_OPENAI_INIT_CONFIG_JSON),"optionalAccess",t=>t.REPORT_SERVER_URL]);try{r=i.execSync.call(void 0,"git config --get remote.origin.url").toString().trim(),a=i.execSync.call(void 0,"git config --get user.email").toString().trim()}catch(t){A("Failed to get git info:",t)}o&&(r&&r!==w||!r&&t)&&(A("Uploading test info to server",{serverUrl:o,repoUrl:r,testUrl:t,userEmail:a}),fetch(o,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({repo_url:r,test_url:t,user_email:a})}).then(t=>t.json()).then(t=>{A("Successfully uploaded test info to server:",t)}).catch(t=>A("Failed to upload test info to server:",t)),w=r)}}}),require_utils12=__commonJS({"../core/dist/lib/utils.js"(t){init_globals(),Object.defineProperty(t,"__esModule",{value:!0});var r=require_chunk_SH3FV3EL();t.getTmpDir=r.getTmpDir,t.getTmpFile=r.getTmpFile,t.getVersion=r.getVersion,t.groupedActionDumpFileExt=r.groupedActionDumpFileExt,t.insertScriptBeforeClosingHtml=r.insertScriptBeforeClosingHtml,t.overlapped=r.overlapped,t.replacerForPageObject=r.replacerForPageObject,t.reportHTMLContent=r.reportHTMLContent,t.sleep=r.sleep,t.stringifyDumpData=r.stringifyDumpData,t.uploadTestInfoToServer=r.uploadTestInfoToServer,t.writeDumpReport=r.writeDumpReport,t.writeLogFile=r.writeLogFile}}),require_dayjs_min=__commonJS({"../../node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/dayjs.min.js"(t,r){var n,i;init_globals(),n=t,i=function(){var t=6e4,r=36e5,n="millisecond",i="second",a="minute",o="hour",s="day",l="week",u="month",d="quarter",c="year",h="date",f="Invalid Date",p=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,m=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,g={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var r=["th","st","nd","rd"],n=t%100;return"["+t+(r[(n-20)%10]||r[n]||r[0])+"]"}},b=function(t,r,n){var i=String(t);return!i||i.length>=r?t:""+Array(r+1-i.length).join(n)+t},y={s:b,z:function(t){var r=-t.utcOffset(),n=Math.abs(r),i=Math.floor(n/60),a=n%60;return(r<=0?"+":"-")+b(i,2,"0")+":"+b(a,2,"0")},m:function t(r,n){if(r.date()<n.date())return-t(n,r);var i=12*(n.year()-r.year())+(n.month()-r.month()),a=r.clone().add(i,u),o=n-a<0,s=r.clone().add(i+(o?-1:1),u);return+(-(i+(n-a)/(o?a-s:s-a))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return({M:u,y:c,w:l,d:s,D:h,h:o,m:a,s:i,ms:n,Q:d})[t]||String(t||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},_="en",v={};v[_]=g;var A="$isDayjsObject",w=function(t){return t instanceof C||!(!t||!t[A])},x=function t(r,n,i){var a;if(!r)return _;if("string"==typeof r){var o=r.toLowerCase();v[o]&&(a=o),n&&(v[o]=n,a=o);var s=r.split("-");if(!a&&s.length>1)return t(s[0])}else{var l=r.name;v[l]=r,a=l}return!i&&a&&(_=a),a||!i&&_},E=function(t,r){if(w(t))return t.clone();var n="object"==typeof r?r:{};return n.date=t,n.args=arguments,new C(n)},S=y;S.l=x,S.i=w,S.w=function(t,r){return E(t,{locale:r.$L,utc:r.$u,x:r.$x,$offset:r.$offset})};var C=function(){function g(t){this.$L=x(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[A]=!0}var b=g.prototype;return b.parse=function(t){this.$d=function(t){var r=t.date,n=t.utc;if(null===r)return new Date(NaN);if(S.u(r))return new Date;if(r instanceof Date)return new Date(r);if("string"==typeof r&&!/Z$/i.test(r)){var i=r.match(p);if(i){var a=i[2]-1||0,o=(i[7]||"0").substring(0,3);return n?new Date(Date.UTC(i[1],a,i[3]||1,i[4]||0,i[5]||0,i[6]||0,o)):new Date(i[1],a,i[3]||1,i[4]||0,i[5]||0,i[6]||0,o)}}return new Date(r)}(t),this.init()},b.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},b.$utils=function(){return S},b.isValid=function(){return this.$d.toString()!==f},b.isSame=function(t,r){var n=E(t);return this.startOf(r)<=n&&n<=this.endOf(r)},b.isAfter=function(t,r){return E(t)<this.startOf(r)},b.isBefore=function(t,r){return this.endOf(r)<E(t)},b.$g=function(t,r,n){return S.u(t)?this[r]:this.set(n,t)},b.unix=function(){return Math.floor(this.valueOf()/1e3)},b.valueOf=function(){return this.$d.getTime()},b.startOf=function(t,r){var n=this,d=!!S.u(r)||r,f=S.p(t),p=function(t,r){var i=S.w(n.$u?Date.UTC(n.$y,r,t):new Date(n.$y,r,t),n);return d?i:i.endOf(s)},m=function(t,r){return S.w(n.toDate()[t].apply(n.toDate("s"),(d?[0,0,0,0]:[23,59,59,999]).slice(r)),n)},g=this.$W,b=this.$M,y=this.$D,_="set"+(this.$u?"UTC":"");switch(f){case c:return d?p(1,0):p(31,11);case u:return d?p(1,b):p(0,b+1);case l:var v=this.$locale().weekStart||0,A=(g<v?g+7:g)-v;return p(d?y-A:y+(6-A),b);case s:case h:return m(_+"Hours",0);case o:return m(_+"Minutes",1);case a:return m(_+"Seconds",2);case i:return m(_+"Milliseconds",3);default:return this.clone()}},b.endOf=function(t){return this.startOf(t,!1)},b.$set=function(t,r){var l,d=S.p(t),f="set"+(this.$u?"UTC":""),p=((l={})[s]=f+"Date",l[h]=f+"Date",l[u]=f+"Month",l[c]=f+"FullYear",l[o]=f+"Hours",l[a]=f+"Minutes",l[i]=f+"Seconds",l[n]=f+"Milliseconds",l)[d],m=d===s?this.$D+(r-this.$W):r;if(d===u||d===c){var g=this.clone().set(h,1);g.$d[p](m),g.init(),this.$d=g.set(h,Math.min(this.$D,g.daysInMonth())).$d}else p&&this.$d[p](m);return this.init(),this},b.set=function(t,r){return this.clone().$set(t,r)},b.get=function(t){return this[S.p(t)]()},b.add=function(n,d){var h,f=this;n=Number(n);var p=S.p(d),m=function(t){var r=E(f);return S.w(r.date(r.date()+Math.round(t*n)),f)};if(p===u)return this.set(u,this.$M+n);if(p===c)return this.set(c,this.$y+n);if(p===s)return m(1);if(p===l)return m(7);var g=((h={})[a]=t,h[o]=r,h[i]=1e3,h)[p]||1,b=this.$d.getTime()+n*g;return S.w(b,this)},b.subtract=function(t,r){return this.add(-1*t,r)},b.format=function(t){var r=this,n=this.$locale();if(!this.isValid())return n.invalidDate||f;var i=t||"YYYY-MM-DDTHH:mm:ssZ",a=S.z(this),o=this.$H,s=this.$m,l=this.$M,u=n.weekdays,d=n.months,c=n.meridiem,h=function(t,n,a,o){return t&&(t[n]||t(r,i))||a[n].slice(0,o)},p=function(t){return S.s(o%12||12,t,"0")},g=c||function(t,r,n){var i=t<12?"AM":"PM";return n?i.toLowerCase():i};return i.replace(m,function(t,i){return i||function(t){switch(t){case"YY":return String(r.$y).slice(-2);case"YYYY":return S.s(r.$y,4,"0");case"M":return l+1;case"MM":return S.s(l+1,2,"0");case"MMM":return h(n.monthsShort,l,d,3);case"MMMM":return h(d,l);case"D":return r.$D;case"DD":return S.s(r.$D,2,"0");case"d":return String(r.$W);case"dd":return h(n.weekdaysMin,r.$W,u,2);case"ddd":return h(n.weekdaysShort,r.$W,u,3);case"dddd":return u[r.$W];case"H":return String(o);case"HH":return S.s(o,2,"0");case"h":return p(1);case"hh":return p(2);case"a":return g(o,s,!0);case"A":return g(o,s,!1);case"m":return String(s);case"mm":return S.s(s,2,"0");case"s":return String(r.$s);case"ss":return S.s(r.$s,2,"0");case"SSS":return S.s(r.$ms,3,"0");case"Z":return a}return null}(t)||a.replace(":","")})},b.utcOffset=function(){return-(15*Math.round(this.$d.getTimezoneOffset()/15))},b.diff=function(n,h,f){var p,m=this,g=S.p(h),b=E(n),y=(b.utcOffset()-this.utcOffset())*t,_=this-b,v=function(){return S.m(m,b)};switch(g){case c:p=v()/12;break;case u:p=v();break;case d:p=v()/3;break;case l:p=(_-y)/6048e5;break;case s:p=(_-y)/864e5;break;case o:p=_/r;break;case a:p=_/t;break;case i:p=_/1e3;break;default:p=_}return f?p:S.a(p)},b.daysInMonth=function(){return this.endOf(u).$D},b.$locale=function(){return v[this.$L]},b.locale=function(t,r){if(!t)return this.$L;var n=this.clone(),i=x(t,r,!0);return i&&(n.$L=i),n},b.clone=function(){return S.w(this.$d,this)},b.toDate=function(){return new Date(this.valueOf())},b.toJSON=function(){return this.isValid()?this.toISOString():null},b.toISOString=function(){return this.$d.toISOString()},b.toString=function(){return this.$d.toUTCString()},g}(),I=C.prototype;return E.prototype=I,[["$ms",n],["$s",i],["$m",a],["$H",o],["$W",s],["$M",u],["$y",c],["$D",h]].forEach(function(t){I[t[1]]=function(r){return this.$g(r,t[0],t[1])}}),E.extend=function(t,r){return t.$i||(t(r,C,E),t.$i=!0),E},E.locale=x,E.isDayjs=w,E.unix=function(t){return E(1e3*t)},E.en=v[_],E.Ls=v,E.p={},E},"object"==typeof t&&void 0!==r?r.exports=i():"function"==typeof define&&define.amd?define(i):(n="undefined"!=typeof globalThis?globalThis:n||self).dayjs=i()}}),require_common7=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/common.js"(t,r){function n(t){return null==t}init_globals(),r.exports.isNothing=n,r.exports.isObject=function(t){return"object"==typeof t&&null!==t},r.exports.toArray=function(t){return Array.isArray(t)?t:n(t)?[]:[t]},r.exports.repeat=function(t,r){var n,i="";for(n=0;n<r;n+=1)i+=t;return i},r.exports.isNegativeZero=function(t){return 0===t&&Number.NEGATIVE_INFINITY===1/t},r.exports.extend=function(t,r){var n,i,a,o;if(r)for(n=0,i=(o=Object.keys(r)).length;n<i;n+=1)t[a=o[n]]=r[a];return t}}}),require_exception=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/exception.js"(t,r){function n(t,r){var n="",i=t.reason||"(unknown reason)";return t.mark?(t.mark.name&&(n+='in "'+t.mark.name+'" '),n+="("+(t.mark.line+1)+":"+(t.mark.column+1)+")",!r&&t.mark.snippet&&(n+="\n\n"+t.mark.snippet),i+" "+n):i}function i(t,r){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=r,this.message=n(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=Error().stack||""}init_globals(),i.prototype=Object.create(Error.prototype),i.prototype.constructor=i,i.prototype.toString=function(t){return this.name+": "+n(this,t)},r.exports=i}}),require_snippet=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/snippet.js"(t,r){init_globals();var n=require_common7();function i(t,r,n,i,a){var o="",s="",l=Math.floor(a/2)-1;return i-r>l&&(r=i-l+(o=" ... ").length),n-i>l&&(n=i+l-(s=" ...").length),{str:o+t.slice(r,n).replace(/\t/g,"→")+s,pos:i-r+o.length}}function a(t,r){return n.repeat(" ",r-t.length)+t}r.exports=function(t,r){if(r=Object.create(r||null),!t.buffer)return null;r.maxLength||(r.maxLength=79),"number"!=typeof r.indent&&(r.indent=1),"number"!=typeof r.linesBefore&&(r.linesBefore=3),"number"!=typeof r.linesAfter&&(r.linesAfter=2);for(var o,s=/\r?\n|\r|\0/g,l=[0],u=[],d=-1;o=s.exec(t.buffer);)u.push(o.index),l.push(o.index+o[0].length),t.position<=o.index&&d<0&&(d=l.length-2);d<0&&(d=l.length-1);var c,h,f="",p=Math.min(t.line+r.linesAfter,u.length).toString().length,m=r.maxLength-(r.indent+p+3);for(c=1;c<=r.linesBefore&&!(d-c<0);c++)h=i(t.buffer,l[d-c],u[d-c],t.position-(l[d]-l[d-c]),m),f=n.repeat(" ",r.indent)+a((t.line-c+1).toString(),p)+" | "+h.str+"\n"+f;for(h=i(t.buffer,l[d],u[d],t.position,m),f+=n.repeat(" ",r.indent)+a((t.line+1).toString(),p)+" | "+h.str+"\n"+n.repeat("-",r.indent+p+3+h.pos)+"^\n",c=1;c<=r.linesAfter&&!(d+c>=u.length);c++)h=i(t.buffer,l[d+c],u[d+c],t.position-(l[d]-l[d+c]),m),f+=n.repeat(" ",r.indent)+a((t.line+c+1).toString(),p)+" | "+h.str+"\n";return f.replace(/\n$/,"")}}}),require_type2=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type.js"(t,r){init_globals();var n=require_exception(),i=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],a=["scalar","sequence","mapping"];r.exports=function(t,r){var o,s;if(Object.keys(r=r||{}).forEach(function(r){if(-1===i.indexOf(r))throw new n('Unknown option "'+r+'" is met in definition of "'+t+'" YAML type.')}),this.options=r,this.tag=t,this.kind=r.kind||null,this.resolve=r.resolve||function(){return!0},this.construct=r.construct||function(t){return t},this.instanceOf=r.instanceOf||null,this.predicate=r.predicate||null,this.represent=r.represent||null,this.representName=r.representName||null,this.defaultStyle=r.defaultStyle||null,this.multi=r.multi||!1,this.styleAliases=(o=r.styleAliases||null,s={},null!==o&&Object.keys(o).forEach(function(t){o[t].forEach(function(r){s[String(r)]=t})}),s),-1===a.indexOf(this.kind))throw new n('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}}}),require_schema=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema.js"(t,r){init_globals();var n=require_exception(),i=require_type2();function a(t,r){var n=[];return t[r].forEach(function(t){var r=n.length;n.forEach(function(n,i){n.tag===t.tag&&n.kind===t.kind&&n.multi===t.multi&&(r=i)}),n[r]=t}),n}function o(t){return this.extend(t)}o.prototype.extend=function(t){var r=[],s=[];if(t instanceof i)s.push(t);else if(Array.isArray(t))s=s.concat(t);else{if(!t||!Array.isArray(t.implicit)&&!Array.isArray(t.explicit))throw new n("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");t.implicit&&(r=r.concat(t.implicit)),t.explicit&&(s=s.concat(t.explicit))}r.forEach(function(t){if(!(t instanceof i))throw new n("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(t.loadKind&&"scalar"!==t.loadKind)throw new n("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(t.multi)throw new n("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),s.forEach(function(t){if(!(t instanceof i))throw new n("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var l=Object.create(o.prototype);return l.implicit=(this.implicit||[]).concat(r),l.explicit=(this.explicit||[]).concat(s),l.compiledImplicit=a(l,"implicit"),l.compiledExplicit=a(l,"explicit"),l.compiledTypeMap=function(){var t,r,n={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function i(t){t.multi?(n.multi[t.kind].push(t),n.multi.fallback.push(t)):n[t.kind][t.tag]=n.fallback[t.tag]=t}for(t=0,r=arguments.length;t<r;t+=1)arguments[t].forEach(i);return n}(l.compiledImplicit,l.compiledExplicit),l},r.exports=o}}),require_str=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/str.js"(t,r){init_globals(),r.exports=new(require_type2())("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return null!==t?t:""}})}}),require_seq=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/seq.js"(t,r){init_globals(),r.exports=new(require_type2())("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return null!==t?t:[]}})}}),require_map2=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/map.js"(t,r){init_globals(),r.exports=new(require_type2())("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return null!==t?t:{}}})}}),require_failsafe=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema/failsafe.js"(t,r){init_globals(),r.exports=new(require_schema())({explicit:[require_str(),require_seq(),require_map2()]})}}),require_null2=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/null.js"(t,r){init_globals(),r.exports=new(require_type2())("tag:yaml.org,2002:null",{kind:"scalar",resolve:function(t){if(null===t)return!0;var r=t.length;return 1===r&&"~"===t||4===r&&("null"===t||"Null"===t||"NULL"===t)},construct:function(){return null},predicate:function(t){return null===t},represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"},empty:function(){return""}},defaultStyle:"lowercase"})}}),require_bool=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/bool.js"(t,r){init_globals(),r.exports=new(require_type2())("tag:yaml.org,2002:bool",{kind:"scalar",resolve:function(t){if(null===t)return!1;var r=t.length;return 4===r&&("true"===t||"True"===t||"TRUE"===t)||5===r&&("false"===t||"False"===t||"FALSE"===t)},construct:function(t){return"true"===t||"True"===t||"TRUE"===t},predicate:function(t){return"[object Boolean]"===Object.prototype.toString.call(t)},represent:{lowercase:function(t){return t?"true":"false"},uppercase:function(t){return t?"TRUE":"FALSE"},camelcase:function(t){return t?"True":"False"}},defaultStyle:"lowercase"})}}),require_int=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/int.js"(t,r){init_globals();var n=require_common7();function i(t){return 48<=t&&t<=55}function a(t){return 48<=t&&t<=57}r.exports=new(require_type2())("tag:yaml.org,2002:int",{kind:"scalar",resolve:function(t){if(null===t)return!1;var r,n,o=t.length,s=0,l=!1;if(!o)return!1;if("-"!==(r=t[s])&&"+"!==r||(r=t[++s]),"0"===r){if(s+1===o)return!0;if("b"===(r=t[++s])){for(s++;s<o;s++)if("_"!==(r=t[s])){if("0"!==r&&"1"!==r)return!1;l=!0}return l&&"_"!==r}if("x"===r){for(s++;s<o;s++)if("_"!==(r=t[s])){if(!(48<=(n=t.charCodeAt(s))&&n<=57||65<=n&&n<=70||97<=n&&n<=102))return!1;l=!0}return l&&"_"!==r}if("o"===r){for(s++;s<o;s++)if("_"!==(r=t[s])){if(!i(t.charCodeAt(s)))return!1;l=!0}return l&&"_"!==r}}if("_"===r)return!1;for(;s<o;s++)if("_"!==(r=t[s])){if(!a(t.charCodeAt(s)))return!1;l=!0}return!(!l||"_"===r)},construct:function(t){var r,n=t,i=1;if(-1!==n.indexOf("_")&&(n=n.replace(/_/g,"")),"-"!==(r=n[0])&&"+"!==r||("-"===r&&(i=-1),r=(n=n.slice(1))[0]),"0"===n)return 0;if("0"===r){if("b"===n[1])return i*parseInt(n.slice(2),2);if("x"===n[1])return i*parseInt(n.slice(2),16);if("o"===n[1])return i*parseInt(n.slice(2),8)}return i*parseInt(n,10)},predicate:function(t){return"[object Number]"===Object.prototype.toString.call(t)&&t%1==0&&!n.isNegativeZero(t)},represent:{binary:function(t){return t>=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})}}),require_float=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/float.js"(t,r){init_globals();var n=require_common7(),i=require_type2(),a=RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),o=/^[-+]?[0-9]+e/;r.exports=new i("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(t){return null!==t&&!(!a.test(t)||"_"===t[t.length-1])},construct:function(t){var r,n;return n="-"===(r=t.replace(/_/g,"").toLowerCase())[0]?-1:1,"+-".indexOf(r[0])>=0&&(r=r.slice(1)),".inf"===r?1===n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===r?NaN:n*parseFloat(r,10)},predicate:function(t){return"[object Number]"===Object.prototype.toString.call(t)&&(t%1!=0||n.isNegativeZero(t))},represent:function(t,r){var i;if(isNaN(t))switch(r){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(r){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(r){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(n.isNegativeZero(t))return"-0.0";return i=t.toString(10),o.test(i)?i.replace("e",".e"):i},defaultStyle:"lowercase"})}}),require_json2=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema/json.js"(t,r){init_globals(),r.exports=require_failsafe().extend({implicit:[require_null2(),require_bool(),require_int(),require_float()]})}}),require_core6=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema/core.js"(t,r){init_globals(),r.exports=require_json2()}}),require_timestamp=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/timestamp.js"(t,r){init_globals();var n=require_type2(),i=RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),a=RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");r.exports=new n("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function(t){return null!==t&&(null!==i.exec(t)||null!==a.exec(t))},construct:function(t){var r,n,o,s,l,u,d,c,h=0,f=null;if(null===(r=i.exec(t))&&(r=a.exec(t)),null===r)throw Error("Date resolve error");if(n=+r[1],o=r[2]-1,s=+r[3],!r[4])return new Date(Date.UTC(n,o,s));if(l=+r[4],u=+r[5],d=+r[6],r[7]){for(h=r[7].slice(0,3);h.length<3;)h+="0";h*=1}return r[9]&&(f=6e4*(60*r[10]+ +(r[11]||0)),"-"===r[9]&&(f=-f)),c=new Date(Date.UTC(n,o,s,l,u,d,h)),f&&c.setTime(c.getTime()-f),c},instanceOf:Date,represent:function(t){return t.toISOString()}})}}),require_merge=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/merge.js"(t,r){init_globals(),r.exports=new(require_type2())("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function(t){return"<<"===t||null===t}})}}),require_binary=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/binary.js"(t,r){init_globals();var n=require_type2(),i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";r.exports=new n("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function(t){if(null===t)return!1;var r,n,a=0,o=t.length,s=i;for(n=0;n<o;n++)if(!((r=s.indexOf(t.charAt(n)))>64)){if(r<0)return!1;a+=6}return a%8==0},construct:function(t){var r,n,a=t.replace(/[\r\n=]/g,""),o=a.length,s=i,l=0,u=[];for(r=0;r<o;r++)r%4==0&&r&&(u.push(l>>16&255),u.push(l>>8&255),u.push(255&l)),l=l<<6|s.indexOf(a.charAt(r));return 0==(n=o%4*6)?(u.push(l>>16&255),u.push(l>>8&255),u.push(255&l)):18===n?(u.push(l>>10&255),u.push(l>>2&255)):12===n&&u.push(l>>4&255),new Uint8Array(u)},predicate:function(t){return"[object Uint8Array]"===Object.prototype.toString.call(t)},represent:function(t){var r,n,a="",o=0,s=t.length,l=i;for(r=0;r<s;r++)r%3==0&&r&&(a+=l[o>>18&63],a+=l[o>>12&63],a+=l[o>>6&63],a+=l[63&o]),o=(o<<8)+t[r];return 0==(n=s%3)?(a+=l[o>>18&63],a+=l[o>>12&63],a+=l[o>>6&63],a+=l[63&o]):2===n?(a+=l[o>>10&63],a+=l[o>>4&63],a+=l[o<<2&63],a+=l[64]):1===n&&(a+=l[o>>2&63],a+=l[o<<4&63],a+=l[64],a+=l[64]),a}})}}),require_omap=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/omap.js"(t,r){init_globals();var n=require_type2(),i=Object.prototype.hasOwnProperty,a=Object.prototype.toString;r.exports=new n("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function(t){if(null===t)return!0;var r,n,o,s,l,u=[],d=t;for(r=0,n=d.length;r<n;r+=1){if(o=d[r],l=!1,"[object Object]"!==a.call(o))return!1;for(s in o)if(i.call(o,s)){if(l)return!1;l=!0}if(!l||-1!==u.indexOf(s))return!1;u.push(s)}return!0},construct:function(t){return null!==t?t:[]}})}}),require_pairs=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/pairs.js"(t,r){init_globals();var n=require_type2(),i=Object.prototype.toString;r.exports=new n("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:function(t){if(null===t)return!0;var r,n,a,o,s,l=t;for(s=Array(l.length),r=0,n=l.length;r<n;r+=1){if(a=l[r],"[object Object]"!==i.call(a)||1!==(o=Object.keys(a)).length)return!1;s[r]=[o[0],a[o[0]]]}return!0},construct:function(t){if(null===t)return[];var r,n,i,a,o,s=t;for(o=Array(s.length),r=0,n=s.length;r<n;r+=1)a=Object.keys(i=s[r]),o[r]=[a[0],i[a[0]]];return o}})}}),require_set2=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/set.js"(t,r){init_globals();var n=require_type2(),i=Object.prototype.hasOwnProperty;r.exports=new n("tag:yaml.org,2002:set",{kind:"mapping",resolve:function(t){if(null===t)return!0;var r,n=t;for(r in n)if(i.call(n,r)&&null!==n[r])return!1;return!0},construct:function(t){return null!==t?t:{}}})}}),require_default2=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema/default.js"(t,r){init_globals(),r.exports=require_core6().extend({implicit:[require_timestamp(),require_merge()],explicit:[require_binary(),require_omap(),require_pairs(),require_set2()]})}}),require_loader=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/loader.js"(t,r){init_globals();var n=require_common7(),i=require_exception(),a=require_snippet(),o=require_default2(),s=Object.prototype.hasOwnProperty,l=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,u=/[\x85\u2028\u2029]/,d=/[,\[\]\{\}]/,c=/^(?:!|!!|![a-z\-]+!)$/i,h=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function f(t){return Object.prototype.toString.call(t)}function p(t){return 10===t||13===t}function m(t){return 9===t||32===t}function g(t){return 9===t||32===t||10===t||13===t}function b(t){return 44===t||91===t||93===t||123===t||125===t}function y(t){var r;return 48<=t&&t<=57?t-48:97<=(r=32|t)&&r<=102?r-97+10:-1}function _(t){return 48===t?"\0":97===t?"\x07":98===t?"\b":116===t||9===t?" ":110===t?"\n":118===t?"\v":102===t?"\f":114===t?"\r":101===t?"\x1b":32===t?" ":34===t?'"':47===t?"/":92===t?"\\":78===t?"\x85":95===t?"\xa0":76===t?"\u2028":80===t?"\u2029":""}function v(t){return t<=65535?String.fromCharCode(t):String.fromCharCode(55296+(t-65536>>10),56320+(t-65536&1023))}var A,w=Array(256),x=Array(256);for(A=0;A<256;A++)w[A]=+!!_(A),x[A]=_(A);function E(t,r){this.input=t,this.filename=r.filename||null,this.schema=r.schema||o,this.onWarning=r.onWarning||null,this.legacy=r.legacy||!1,this.json=r.json||!1,this.listener=r.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function S(t,r){var n={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return n.snippet=a(n),new i(r,n)}function C(t,r){throw S(t,r)}function I(t,r){t.onWarning&&t.onWarning.call(null,S(t,r))}var T={YAML:function(t,r,n){var i,a,o;null!==t.version&&C(t,"duplication of %YAML directive"),1!==n.length&&C(t,"YAML directive accepts exactly one argument"),null===(i=/^([0-9]+)\.([0-9]+)$/.exec(n[0]))&&C(t,"ill-formed argument of the YAML directive"),a=parseInt(i[1],10),o=parseInt(i[2],10),1!==a&&C(t,"unacceptable YAML version of the document"),t.version=n[0],t.checkLineBreaks=o<2,1!==o&&2!==o&&I(t,"unsupported YAML version of the document")},TAG:function(t,r,n){var i,a;2!==n.length&&C(t,"TAG directive accepts exactly two arguments"),i=n[0],a=n[1],c.test(i)||C(t,"ill-formed tag handle (first argument) of the TAG directive"),s.call(t.tagMap,i)&&C(t,'there is a previously declared suffix for "'+i+'" tag handle'),h.test(a)||C(t,"ill-formed tag prefix (second argument) of the TAG directive");try{a=decodeURIComponent(a)}catch(r){C(t,"tag prefix is malformed: "+a)}t.tagMap[i]=a}};function k(t,r,n,i){var a,o,s,u;if(r<n){if(u=t.input.slice(r,n),i)for(a=0,o=u.length;a<o;a+=1)9===(s=u.charCodeAt(a))||32<=s&&s<=1114111||C(t,"expected valid JSON character");else l.test(u)&&C(t,"the stream contains non-printable characters");t.result+=u}}function P(t,r,i,a){var o,l,u,d;for(n.isObject(i)||C(t,"cannot merge mappings; the provided source object is unacceptable"),u=0,d=(o=Object.keys(i)).length;u<d;u+=1)l=o[u],s.call(r,l)||(r[l]=i[l],a[l]=!0)}function R(t,r,n,i,a,o,l,u,d){var c,h;if(Array.isArray(a))for(c=0,h=(a=Array.prototype.slice.call(a)).length;c<h;c+=1)Array.isArray(a[c])&&C(t,"nested arrays are not supported inside keys"),"object"==typeof a&&"[object Object]"===f(a[c])&&(a[c]="[object Object]");if("object"==typeof a&&"[object Object]"===f(a)&&(a="[object Object]"),a=String(a),null===r&&(r={}),"tag:yaml.org,2002:merge"===i)if(Array.isArray(o))for(c=0,h=o.length;c<h;c+=1)P(t,r,o[c],n);else P(t,r,o,n);else t.json||s.call(n,a)||!s.call(r,a)||(t.line=l||t.line,t.lineStart=u||t.lineStart,t.position=d||t.position,C(t,"duplicated mapping key")),"__proto__"===a?Object.defineProperty(r,a,{configurable:!0,enumerable:!0,writable:!0,value:o}):r[a]=o,delete n[a];return r}function O(t){var r;10===(r=t.input.charCodeAt(t.position))?t.position++:13===r?(t.position++,10===t.input.charCodeAt(t.position)&&t.position++):C(t,"a line break is expected"),t.line+=1,t.lineStart=t.position,t.firstTabInLine=-1}function M(t,r,n){for(var i=0,a=t.input.charCodeAt(t.position);0!==a;){for(;m(a);)9===a&&-1===t.firstTabInLine&&(t.firstTabInLine=t.position),a=t.input.charCodeAt(++t.position);if(r&&35===a)do a=t.input.charCodeAt(++t.position);while(10!==a&&13!==a&&0!==a);if(!p(a))break;for(O(t),a=t.input.charCodeAt(t.position),i++,t.lineIndent=0;32===a;)t.lineIndent++,a=t.input.charCodeAt(++t.position)}return -1!==n&&0!==i&&t.lineIndent<n&&I(t,"deficient indentation"),i}function j(t){var r,n=t.position;return!(45!==(r=t.input.charCodeAt(n))&&46!==r||r!==t.input.charCodeAt(n+1)||r!==t.input.charCodeAt(n+2)||(n+=3,0!==(r=t.input.charCodeAt(n))&&!g(r)))}function N(t,r){1===r?t.result+=" ":r>1&&(t.result+=n.repeat("\n",r-1))}function B(t,r){var n,i,a=t.tag,o=t.anchor,s=[],l=!1;if(-1!==t.firstTabInLine)return!1;for(null!==t.anchor&&(t.anchorMap[t.anchor]=s),i=t.input.charCodeAt(t.position);0!==i&&(-1!==t.firstTabInLine&&(t.position=t.firstTabInLine,C(t,"tab characters must not be used in indentation")),45===i)&&g(t.input.charCodeAt(t.position+1));)if(l=!0,t.position++,M(t,!0,-1)&&t.lineIndent<=r)s.push(null),i=t.input.charCodeAt(t.position);else if(n=t.line,U(t,r,3,!1,!0),s.push(t.result),M(t,!0,-1),i=t.input.charCodeAt(t.position),(t.line===n||t.lineIndent>r)&&0!==i)C(t,"bad indentation of a sequence entry");else if(t.lineIndent<r)break;return!!l&&(t.tag=a,t.anchor=o,t.kind="sequence",t.result=s,!0)}function L(t){var r,n,i,a,o=!1,l=!1;if(33!==(a=t.input.charCodeAt(t.position)))return!1;if(null!==t.tag&&C(t,"duplication of a tag property"),60===(a=t.input.charCodeAt(++t.position))?(o=!0,a=t.input.charCodeAt(++t.position)):33===a?(l=!0,n="!!",a=t.input.charCodeAt(++t.position)):n="!",r=t.position,o){do a=t.input.charCodeAt(++t.position);while(0!==a&&62!==a);t.position<t.length?(i=t.input.slice(r,t.position),a=t.input.charCodeAt(++t.position)):C(t,"unexpected end of the stream within a verbatim tag")}else{for(;0!==a&&!g(a);)33===a&&(l?C(t,"tag suffix cannot contain exclamation marks"):(n=t.input.slice(r-1,t.position+1),c.test(n)||C(t,"named tag handle cannot contain such characters"),l=!0,r=t.position+1)),a=t.input.charCodeAt(++t.position);i=t.input.slice(r,t.position),d.test(i)&&C(t,"tag suffix cannot contain flow indicator characters")}i&&!h.test(i)&&C(t,"tag name cannot contain such characters: "+i);try{i=decodeURIComponent(i)}catch(r){C(t,"tag name is malformed: "+i)}return o?t.tag=i:s.call(t.tagMap,n)?t.tag=t.tagMap[n]+i:"!"===n?t.tag="!"+i:"!!"===n?t.tag="tag:yaml.org,2002:"+i:C(t,'undeclared tag handle "'+n+'"'),!0}function D(t){var r,n;if(38!==(n=t.input.charCodeAt(t.position)))return!1;for(null!==t.anchor&&C(t,"duplication of an anchor property"),n=t.input.charCodeAt(++t.position),r=t.position;0!==n&&!g(n)&&!b(n);)n=t.input.charCodeAt(++t.position);return t.position===r&&C(t,"name of an anchor node must contain at least one character"),t.anchor=t.input.slice(r,t.position),!0}function U(t,r,i,a,o){var l,u,d,c,h,f,_,A,E,S=1,I=!1,T=!1;if(null!==t.listener&&t.listener("open",t),t.tag=null,t.anchor=null,t.kind=null,t.result=null,l=u=d=4===i||3===i,a&&M(t,!0,-1)&&(I=!0,t.lineIndent>r?S=1:t.lineIndent===r?S=0:t.lineIndent<r&&(S=-1)),1===S)for(;L(t)||D(t);)M(t,!0,-1)?(I=!0,d=l,t.lineIndent>r?S=1:t.lineIndent===r?S=0:t.lineIndent<r&&(S=-1)):d=!1;if(d&&(d=I||o),1!==S&&4!==i||(A=1===i||2===i?r:r+1,E=t.position-t.lineStart,1===S?d&&(B(t,E)||function(t,r,n){var i,a,o,s,l,u,d,c=t.tag,h=t.anchor,f={},p=Object.create(null),b=null,y=null,_=null,v=!1,A=!1;if(-1!==t.firstTabInLine)return!1;for(null!==t.anchor&&(t.anchorMap[t.anchor]=f),d=t.input.charCodeAt(t.position);0!==d;){if(v||-1===t.firstTabInLine||(t.position=t.firstTabInLine,C(t,"tab characters must not be used in indentation")),i=t.input.charCodeAt(t.position+1),o=t.line,(63===d||58===d)&&g(i))63===d?(v&&(R(t,f,p,b,y,null,s,l,u),b=y=_=null),A=!0,v=!0,a=!0):v?(v=!1,a=!0):C(t,"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),t.position+=1,d=i;else{if(s=t.line,l=t.lineStart,u=t.position,!U(t,n,2,!1,!0))break;if(t.line===o){for(d=t.input.charCodeAt(t.position);m(d);)d=t.input.charCodeAt(++t.position);if(58===d)g(d=t.input.charCodeAt(++t.position))||C(t,"a whitespace character is expected after the key-value separator within a block mapping"),v&&(R(t,f,p,b,y,null,s,l,u),b=y=_=null),A=!0,v=!1,a=!1,b=t.tag,y=t.result;else{if(!A)return t.tag=c,t.anchor=h,!0;C(t,"can not read an implicit mapping pair; a colon is missed")}}else{if(!A)return t.tag=c,t.anchor=h,!0;C(t,"can not read a block mapping entry; a multiline key may not be an implicit key")}}if((t.line===o||t.lineIndent>r)&&(v&&(s=t.line,l=t.lineStart,u=t.position),U(t,r,4,!0,a)&&(v?y=t.result:_=t.result),v||(R(t,f,p,b,y,_,s,l,u),b=y=_=null),M(t,!0,-1),d=t.input.charCodeAt(t.position)),(t.line===o||t.lineIndent>r)&&0!==d)C(t,"bad indentation of a mapping entry");else if(t.lineIndent<r)break}return v&&R(t,f,p,b,y,null,s,l,u),A&&(t.tag=c,t.anchor=h,t.kind="mapping",t.result=f),A}(t,E,A))||function(t,r){var n,i,a,o,s,l,u,d,c,h,f,p,m=!0,b=t.tag,y=t.anchor,_=Object.create(null);if(91===(p=t.input.charCodeAt(t.position)))s=93,d=!1,o=[];else{if(123!==p)return!1;s=125,d=!0,o={}}for(null!==t.anchor&&(t.anchorMap[t.anchor]=o),p=t.input.charCodeAt(++t.position);0!==p;){if(M(t,!0,r),(p=t.input.charCodeAt(t.position))===s)return t.position++,t.tag=b,t.anchor=y,t.kind=d?"mapping":"sequence",t.result=o,!0;m?44===p&&C(t,"expected the node content, but found ','"):C(t,"missed comma between flow collection entries"),f=null,l=u=!1,63===p&&g(t.input.charCodeAt(t.position+1))&&(l=u=!0,t.position++,M(t,!0,r)),n=t.line,i=t.lineStart,a=t.position,U(t,r,1,!1,!0),h=t.tag,c=t.result,M(t,!0,r),p=t.input.charCodeAt(t.position),(u||t.line===n)&&58===p&&(l=!0,p=t.input.charCodeAt(++t.position),M(t,!0,r),U(t,r,1,!1,!0),f=t.result),d?R(t,o,_,h,c,f,n,i,a):l?o.push(R(t,null,_,h,c,f,n,i,a)):o.push(c),M(t,!0,r),44===(p=t.input.charCodeAt(t.position))?(m=!0,p=t.input.charCodeAt(++t.position)):m=!1}C(t,"unexpected end of the stream within a flow collection")}(t,A)?T=!0:(u&&function(t,r){var i,a,o,s,l,u=1,d=!1,c=!1,h=r,f=0,g=!1;if(124===(s=t.input.charCodeAt(t.position)))a=!1;else{if(62!==s)return!1;a=!0}for(t.kind="scalar",t.result="";0!==s;)if(43===(s=t.input.charCodeAt(++t.position))||45===s)1===u?u=43===s?3:2:C(t,"repeat of a chomping mode identifier");else{if(!((o=48<=(l=s)&&l<=57?l-48:-1)>=0))break;0===o?C(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):c?C(t,"repeat of an indentation width identifier"):(h=r+o-1,c=!0)}if(m(s)){do s=t.input.charCodeAt(++t.position);while(m(s));if(35===s)do s=t.input.charCodeAt(++t.position);while(!p(s)&&0!==s)}for(;0!==s;){for(O(t),t.lineIndent=0,s=t.input.charCodeAt(t.position);(!c||t.lineIndent<h)&&32===s;)t.lineIndent++,s=t.input.charCodeAt(++t.position);if(!c&&t.lineIndent>h&&(h=t.lineIndent),p(s))f++;else{if(t.lineIndent<h){3===u?t.result+=n.repeat("\n",d?1+f:f):1===u&&d&&(t.result+="\n");break}for(a?m(s)?(g=!0,t.result+=n.repeat("\n",d?1+f:f)):g?(g=!1,t.result+=n.repeat("\n",f+1)):0===f?d&&(t.result+=" "):t.result+=n.repeat("\n",f):t.result+=n.repeat("\n",d?1+f:f),d=!0,c=!0,f=0,i=t.position;!p(s)&&0!==s;)s=t.input.charCodeAt(++t.position);k(t,i,t.position,!1)}}return!0}(t,A)||function(t,r){var n,i,a;if(39!==(n=t.input.charCodeAt(t.position)))return!1;for(t.kind="scalar",t.result="",t.position++,i=a=t.position;0!==(n=t.input.charCodeAt(t.position));)if(39===n){if(k(t,i,t.position,!0),39!==(n=t.input.charCodeAt(++t.position)))return!0;i=t.position,t.position++,a=t.position}else p(n)?(k(t,i,a,!0),N(t,M(t,!1,r)),i=a=t.position):t.position===t.lineStart&&j(t)?C(t,"unexpected end of the document within a single quoted scalar"):(t.position++,a=t.position);C(t,"unexpected end of the stream within a single quoted scalar")}(t,A)||function(t,r){var n,i,a,o,s,l,u;if(34!==(l=t.input.charCodeAt(t.position)))return!1;for(t.kind="scalar",t.result="",t.position++,n=i=t.position;0!==(l=t.input.charCodeAt(t.position));){if(34===l)return k(t,n,t.position,!0),t.position++,!0;if(92===l){if(k(t,n,t.position,!0),p(l=t.input.charCodeAt(++t.position)))M(t,!1,r);else if(l<256&&w[l])t.result+=x[l],t.position++;else if((s=120===(u=l)?2:117===u?4:8*(85===u))>0){for(a=s,o=0;a>0;a--)(s=y(l=t.input.charCodeAt(++t.position)))>=0?o=(o<<4)+s:C(t,"expected hexadecimal character");t.result+=v(o),t.position++}else C(t,"unknown escape sequence");n=i=t.position}else p(l)?(k(t,n,i,!0),N(t,M(t,!1,r)),n=i=t.position):t.position===t.lineStart&&j(t)?C(t,"unexpected end of the document within a double quoted scalar"):(t.position++,i=t.position)}C(t,"unexpected end of the stream within a double quoted scalar")}(t,A)?T=!0:!function(t){var r,n,i;if(42!==(i=t.input.charCodeAt(t.position)))return!1;for(i=t.input.charCodeAt(++t.position),r=t.position;0!==i&&!g(i)&&!b(i);)i=t.input.charCodeAt(++t.position);return t.position===r&&C(t,"name of an alias node must contain at least one character"),n=t.input.slice(r,t.position),s.call(t.anchorMap,n)||C(t,'unidentified alias "'+n+'"'),t.result=t.anchorMap[n],M(t,!0,-1),!0}(t)?function(t,r,n){var i,a,o,s,l,u,d,c,h=t.kind,f=t.result;if(g(c=t.input.charCodeAt(t.position))||b(c)||35===c||38===c||42===c||33===c||124===c||62===c||39===c||34===c||37===c||64===c||96===c||(63===c||45===c)&&(g(i=t.input.charCodeAt(t.position+1))||n&&b(i)))return!1;for(t.kind="scalar",t.result="",a=o=t.position,s=!1;0!==c;){if(58===c){if(g(i=t.input.charCodeAt(t.position+1))||n&&b(i))break}else if(35===c){if(g(t.input.charCodeAt(t.position-1)))break}else{if(t.position===t.lineStart&&j(t)||n&&b(c))break;if(p(c)){if(l=t.line,u=t.lineStart,d=t.lineIndent,M(t,!1,-1),t.lineIndent>=r){s=!0,c=t.input.charCodeAt(t.position);continue}t.position=o,t.line=l,t.lineStart=u,t.lineIndent=d;break}}s&&(k(t,a,o,!1),N(t,t.line-l),a=o=t.position,s=!1),m(c)||(o=t.position+1),c=t.input.charCodeAt(++t.position)}return k(t,a,o,!1),!!t.result||(t.kind=h,t.result=f,!1)}(t,A,1===i)&&(T=!0,null===t.tag&&(t.tag="?")):(T=!0,null===t.tag&&null===t.anchor||C(t,"alias node should not have any properties")),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):0===S&&(T=d&&B(t,E))),null===t.tag)null!==t.anchor&&(t.anchorMap[t.anchor]=t.result);else if("?"===t.tag){for(null!==t.result&&"scalar"!==t.kind&&C(t,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+t.kind+'"'),c=0,h=t.implicitTypes.length;c<h;c+=1)if((_=t.implicitTypes[c]).resolve(t.result)){t.result=_.construct(t.result),t.tag=_.tag,null!==t.anchor&&(t.anchorMap[t.anchor]=t.result);break}}else if("!"!==t.tag){if(s.call(t.typeMap[t.kind||"fallback"],t.tag))_=t.typeMap[t.kind||"fallback"][t.tag];else for(_=null,c=0,h=(f=t.typeMap.multi[t.kind||"fallback"]).length;c<h;c+=1)if(t.tag.slice(0,f[c].tag.length)===f[c].tag){_=f[c];break}_||C(t,"unknown tag !<"+t.tag+">"),null!==t.result&&_.kind!==t.kind&&C(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+_.kind+'", not "'+t.kind+'"'),_.resolve(t.result,t.tag)?(t.result=_.construct(t.result,t.tag),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):C(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return null!==t.listener&&t.listener("close",t),null!==t.tag||null!==t.anchor||T}function F(t){var r,n,i,a,o=t.position,l=!1;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);0!==(a=t.input.charCodeAt(t.position))&&(M(t,!0,-1),a=t.input.charCodeAt(t.position),!(t.lineIndent>0||37!==a));){for(l=!0,a=t.input.charCodeAt(++t.position),r=t.position;0!==a&&!g(a);)a=t.input.charCodeAt(++t.position);for(i=[],(n=t.input.slice(r,t.position)).length<1&&C(t,"directive name must not be less than one character in length");0!==a;){for(;m(a);)a=t.input.charCodeAt(++t.position);if(35===a){do a=t.input.charCodeAt(++t.position);while(0!==a&&!p(a));break}if(p(a))break;for(r=t.position;0!==a&&!g(a);)a=t.input.charCodeAt(++t.position);i.push(t.input.slice(r,t.position))}0!==a&&O(t),s.call(T,n)?T[n](t,n,i):I(t,'unknown document directive "'+n+'"')}M(t,!0,-1),0===t.lineIndent&&45===t.input.charCodeAt(t.position)&&45===t.input.charCodeAt(t.position+1)&&45===t.input.charCodeAt(t.position+2)?(t.position+=3,M(t,!0,-1)):l&&C(t,"directives end mark is expected"),U(t,t.lineIndent-1,4,!1,!0),M(t,!0,-1),t.checkLineBreaks&&u.test(t.input.slice(o,t.position))&&I(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&j(t)?46===t.input.charCodeAt(t.position)&&(t.position+=3,M(t,!0,-1)):t.position<t.length-1&&C(t,"end of the stream or a document separator is expected")}function z(t,r){r=r||{},0!==(t=String(t)).length&&(10!==t.charCodeAt(t.length-1)&&13!==t.charCodeAt(t.length-1)&&(t+="\n"),65279===t.charCodeAt(0)&&(t=t.slice(1)));var n=new E(t,r),i=t.indexOf("\0");for(-1!==i&&(n.position=i,C(n,"null byte is not allowed in input")),n.input+="\0";32===n.input.charCodeAt(n.position);)n.lineIndent+=1,n.position+=1;for(;n.position<n.length-1;)F(n);return n.documents}r.exports.loadAll=function(t,r,n){null!==r&&"object"==typeof r&&void 0===n&&(n=r,r=null);var i=z(t,n);if("function"!=typeof r)return i;for(var a=0,o=i.length;a<o;a+=1)r(i[a])},r.exports.load=function(t,r){var n=z(t,r);if(0!==n.length){if(1===n.length)return n[0];throw new i("expected a single document in the stream, but found more")}}}}),require_dumper=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/dumper.js"(t,r){init_globals();var n=require_common7(),i=require_exception(),a=require_default2(),o=Object.prototype.toString,s=Object.prototype.hasOwnProperty,l=65279,u={0:"\\0",7:"\\a",8:"\\b",9:"\\t",10:"\\n",11:"\\v",12:"\\f",13:"\\r",27:"\\e",34:'\\"',92:"\\\\",133:"\\N",160:"\\_",8232:"\\L",8233:"\\P"},d=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],c=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;function h(t){var r,a,o;if(r=t.toString(16).toUpperCase(),t<=255)a="x",o=2;else if(t<=65535)a="u",o=4;else{if(!(t<=0xffffffff))throw new i("code point within a string may not be greater than 0xFFFFFFFF");a="U",o=8}return"\\"+a+n.repeat("0",o-r.length)+r}function f(t){this.schema=t.schema||a,this.indent=Math.max(1,t.indent||2),this.noArrayIndent=t.noArrayIndent||!1,this.skipInvalid=t.skipInvalid||!1,this.flowLevel=n.isNothing(t.flowLevel)?-1:t.flowLevel,this.styleMap=function(t,r){var n,i,a,o,l,u,d;if(null===r)return{};for(n={},a=0,o=(i=Object.keys(r)).length;a<o;a+=1)u=String(r[l=i[a]]),"!!"===l.slice(0,2)&&(l="tag:yaml.org,2002:"+l.slice(2)),(d=t.compiledTypeMap.fallback[l])&&s.call(d.styleAliases,u)&&(u=d.styleAliases[u]),n[l]=u;return n}(this.schema,t.styles||null),this.sortKeys=t.sortKeys||!1,this.lineWidth=t.lineWidth||80,this.noRefs=t.noRefs||!1,this.noCompatMode=t.noCompatMode||!1,this.condenseFlow=t.condenseFlow||!1,this.quotingType='"'===t.quotingType?2:1,this.forceQuotes=t.forceQuotes||!1,this.replacer="function"==typeof t.replacer?t.replacer:null,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result="",this.duplicates=[],this.usedDuplicates=null}function p(t,r){for(var i,a=n.repeat(" ",r),o=0,s=-1,l="",u=t.length;o<u;)-1===(s=t.indexOf("\n",o))?(i=t.slice(o),o=u):(i=t.slice(o,s+1),o=s+1),i.length&&"\n"!==i&&(l+=a),l+=i;return l}function m(t,r){return"\n"+n.repeat(" ",t.indent*r)}function g(t){return 32===t||9===t}function b(t){return 32<=t&&t<=126||161<=t&&t<=55295&&8232!==t&&8233!==t||57344<=t&&t<=65533&&t!==l||65536<=t&&t<=1114111}function y(t){return b(t)&&t!==l&&13!==t&&10!==t}function _(t,r,n){var i=y(t),a=i&&!g(t);return(n?i:i&&44!==t&&91!==t&&93!==t&&123!==t&&125!==t)&&35!==t&&!(58===r&&!a)||y(r)&&!g(r)&&35===t||58===r&&a}function v(t,r){var n,i=t.charCodeAt(r);return i>=55296&&i<=56319&&r+1<t.length&&(n=t.charCodeAt(r+1))>=56320&&n<=57343?1024*(i-55296)+n-56320+65536:i}function A(t){return/^\n* /.test(t)}function w(t,r,n,i,a,o,s,u){var d,c,h=0,f=null,p=!1,m=!1,y=-1!==i,w=-1,x=b(c=v(t,0))&&c!==l&&!g(c)&&45!==c&&63!==c&&58!==c&&44!==c&&91!==c&&93!==c&&123!==c&&125!==c&&35!==c&&38!==c&&42!==c&&33!==c&&124!==c&&61!==c&&62!==c&&39!==c&&34!==c&&37!==c&&64!==c&&96!==c&&function(t){return!g(t)&&58!==t}(v(t,t.length-1));if(r||s)for(d=0;d<t.length;h>=65536?d+=2:d++){if(!b(h=v(t,d)))return 5;x=x&&_(h,f,u),f=h}else{for(d=0;d<t.length;h>=65536?d+=2:d++){if(10===(h=v(t,d)))p=!0,y&&(m=m||d-w-1>i&&" "!==t[w+1],w=d);else if(!b(h))return 5;x=x&&_(h,f,u),f=h}m=m||y&&d-w-1>i&&" "!==t[w+1]}return p||m?n>9&&A(t)?5:s?2===o?5:2:m?4:3:!x||s||a(t)?2===o?5:2:1}function x(t,r,n,a,o){t.dump=function(){if(0===r.length)return 2===t.quotingType?'""':"''";if(!t.noCompatMode&&(-1!==d.indexOf(r)||c.test(r)))return 2===t.quotingType?'"'+r+'"':"'"+r+"'";var s=t.indent*Math.max(1,n),l=-1===t.lineWidth?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-s);switch(w(r,a||t.flowLevel>-1&&n>=t.flowLevel,t.indent,l,function(r){return function(t,r){var n,i;for(n=0,i=t.implicitTypes.length;n<i;n+=1)if(t.implicitTypes[n].resolve(r))return!0;return!1}(t,r)},t.quotingType,t.forceQuotes&&!a,o)){case 1:return r;case 2:return"'"+r.replace(/'/g,"''")+"'";case 3:return"|"+E(r,t.indent)+S(p(r,s));case 4:return">"+E(r,t.indent)+S(p(function(t,r){for(var n,i,a,o=/(\n+)([^\n]*)/g,s=(o.lastIndex=n=-1!==(n=t.indexOf("\n"))?n:t.length,C(t.slice(0,n),r)),l="\n"===t[0]||" "===t[0];a=o.exec(t);){var u=a[1],d=a[2];i=" "===d[0],s+=u+(l||i||""===d?"":"\n")+C(d,r),l=i}return s}(r,l),s));case 5:return'"'+function(t){for(var r,n="",i=0,a=0;a<t.length;i>=65536?a+=2:a++)!(r=u[i=v(t,a)])&&b(i)?(n+=t[a],i>=65536&&(n+=t[a+1])):n+=r||h(i);return n}(r)+'"';default:throw new i("impossible error: invalid scalar style")}}()}function E(t,r){var n=A(t)?String(r):"",i="\n"===t[t.length-1];return n+(i&&("\n"===t[t.length-2]||"\n"===t)?"+":i?"":"-")+"\n"}function S(t){return"\n"===t[t.length-1]?t.slice(0,-1):t}function C(t,r){if(""===t||" "===t[0])return t;for(var n,i,a=/ [^ ]/g,o=0,s=0,l=0,u="";n=a.exec(t);)(l=n.index)-o>r&&(i=s>o?s:l,u+="\n"+t.slice(o,i),o=i+1),s=l;return u+="\n",t.length-o>r&&s>o?u+=t.slice(o,s)+"\n"+t.slice(s+1):u+=t.slice(o),u.slice(1)}function I(t,r,n,i){var a,o,s,l="",u=t.tag;for(a=0,o=n.length;a<o;a+=1)s=n[a],t.replacer&&(s=t.replacer.call(n,String(a),s)),(k(t,r+1,s,!0,!0,!1,!0)||void 0===s&&k(t,r+1,null,!0,!0,!1,!0))&&(i&&""===l||(l+=m(t,r)),t.dump&&10===t.dump.charCodeAt(0)?l+="-":l+="- ",l+=t.dump);t.tag=u,t.dump=l||"[]"}function T(t,r,n){var a,l,u,d,c,h;for(u=0,d=(l=n?t.explicitTypes:t.implicitTypes).length;u<d;u+=1)if(((c=l[u]).instanceOf||c.predicate)&&(!c.instanceOf||"object"==typeof r&&r instanceof c.instanceOf)&&(!c.predicate||c.predicate(r))){if(n?c.multi&&c.representName?t.tag=c.representName(r):t.tag=c.tag:t.tag="?",c.represent){if(h=t.styleMap[c.tag]||c.defaultStyle,"[object Function]"===o.call(c.represent))a=c.represent(r,h);else{if(!s.call(c.represent,h))throw new i("!<"+c.tag+'> tag resolver accepts not "'+h+'" style');a=c.represent[h](r,h)}t.dump=a}return!0}return!1}function k(t,r,n,a,s,l,u){t.tag=null,t.dump=n,T(t,n,!1)||T(t,n,!0);var d,c=o.call(t.dump),h=a;a&&(a=t.flowLevel<0||t.flowLevel>r);var f,p,g="[object Object]"===c||"[object Array]"===c;if(g&&(p=-1!==(f=t.duplicates.indexOf(n))),(null!==t.tag&&"?"!==t.tag||p||2!==t.indent&&r>0)&&(s=!1),p&&t.usedDuplicates[f])t.dump="*ref_"+f;else{if(g&&p&&!t.usedDuplicates[f]&&(t.usedDuplicates[f]=!0),"[object Object]"===c)a&&0!==Object.keys(t.dump).length?(!function(t,r,n,a){var o,s,l,u,d,c,h="",f=t.tag,p=Object.keys(n);if(!0===t.sortKeys)p.sort();else if("function"==typeof t.sortKeys)p.sort(t.sortKeys);else if(t.sortKeys)throw new i("sortKeys must be a boolean or a function");for(o=0,s=p.length;o<s;o+=1)c="",a&&""===h||(c+=m(t,r)),u=n[l=p[o]],t.replacer&&(u=t.replacer.call(n,l,u)),k(t,r+1,l,!0,!0,!0)&&((d=null!==t.tag&&"?"!==t.tag||t.dump&&t.dump.length>1024)&&(t.dump&&10===t.dump.charCodeAt(0)?c+="?":c+="? "),c+=t.dump,d&&(c+=m(t,r)),k(t,r+1,u,!0,d)&&(t.dump&&10===t.dump.charCodeAt(0)?c+=":":c+=": ",h+=c+=t.dump));t.tag=f,t.dump=h||"{}"}(t,r,t.dump,s),p&&(t.dump="&ref_"+f+t.dump)):(!function(t,r,n){var i,a,o,s,l,u="",d=t.tag,c=Object.keys(n);for(i=0,a=c.length;i<a;i+=1)l="",""!==u&&(l+=", "),t.condenseFlow&&(l+='"'),s=n[o=c[i]],t.replacer&&(s=t.replacer.call(n,o,s)),k(t,r,o,!1,!1)&&(t.dump.length>1024&&(l+="? "),l+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),k(t,r,s,!1,!1)&&(u+=l+=t.dump));t.tag=d,t.dump="{"+u+"}"}(t,r,t.dump),p&&(t.dump="&ref_"+f+" "+t.dump));else if("[object Array]"===c)a&&0!==t.dump.length?(t.noArrayIndent&&!u&&r>0?I(t,r-1,t.dump,s):I(t,r,t.dump,s),p&&(t.dump="&ref_"+f+t.dump)):(!function(t,r,n){var i,a,o,s="",l=t.tag;for(i=0,a=n.length;i<a;i+=1)o=n[i],t.replacer&&(o=t.replacer.call(n,String(i),o)),(k(t,r,o,!1,!1)||void 0===o&&k(t,r,null,!1,!1))&&(""!==s&&(s+=","+(t.condenseFlow?"":" ")),s+=t.dump);t.tag=l,t.dump="["+s+"]"}(t,r,t.dump),p&&(t.dump="&ref_"+f+" "+t.dump));else{if("[object String]"!==c){if("[object Undefined]"===c||t.skipInvalid)return!1;throw new i("unacceptable kind of an object to dump "+c)}"?"!==t.tag&&x(t,t.dump,r,l,h)}null!==t.tag&&"?"!==t.tag&&(d=encodeURI("!"===t.tag[0]?t.tag.slice(1):t.tag).replace(/!/g,"%21"),d="!"===t.tag[0]?"!"+d:"tag:yaml.org,2002:"===d.slice(0,18)?"!!"+d.slice(18):"!<"+d+">",t.dump=d+" "+t.dump)}return!0}function P(t,r){var n,i,a=[],o=[];for(R(t,a,o),n=0,i=o.length;n<i;n+=1)r.duplicates.push(a[o[n]]);r.usedDuplicates=Array(i)}function R(t,r,n){var i,a,o;if(null!==t&&"object"==typeof t)if(-1!==(a=r.indexOf(t)))-1===n.indexOf(a)&&n.push(a);else if(r.push(t),Array.isArray(t))for(a=0,o=t.length;a<o;a+=1)R(t[a],r,n);else for(a=0,o=(i=Object.keys(t)).length;a<o;a+=1)R(t[i[a]],r,n)}r.exports.dump=function(t,r){var n=new f(r=r||{});n.noRefs||P(t,n);var i=t;return n.replacer&&(i=n.replacer.call({"":i},"",i)),k(n,0,i,!0,!0)?n.dump+"\n":""}}}),require_js_yaml=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/index.js"(t,r){init_globals();var n=require_loader(),i=require_dumper();function a(t,r){return function(){throw Error("Function yaml."+t+" is removed in js-yaml 4. Use yaml."+r+" instead, which is now safe by default.")}}r.exports.Type=require_type2(),r.exports.Schema=require_schema(),r.exports.FAILSAFE_SCHEMA=require_failsafe(),r.exports.JSON_SCHEMA=require_json2(),r.exports.CORE_SCHEMA=require_core6(),r.exports.DEFAULT_SCHEMA=require_default2(),r.exports.load=n.load,r.exports.loadAll=n.loadAll,r.exports.dump=i.dump,r.exports.YAMLException=require_exception(),r.exports.types={binary:require_binary(),float:require_float(),map:require_map2(),null:require_null2(),pairs:require_pairs(),set:require_set2(),timestamp:require_timestamp(),bool:require_bool(),int:require_int(),merge:require_merge(),omap:require_omap(),seq:require_seq(),str:require_str()},r.exports.safeLoad=a("safeLoad","load"),r.exports.safeLoadAll=a("safeLoadAll","loadAll"),r.exports.safeDump=a("safeDump","dump")}}),require_constants11=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/internal/constants.js"(t,r){init_globals(),r.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER||0x1fffffffffffff,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}}}),require_debug2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/internal/debug.js"(t,r){init_globals(),r.exports="object"==typeof import_browser.default&&import_browser.default.env&&import_browser.default.env.NODE_DEBUG&&/\bsemver\b/i.test(import_browser.default.env.NODE_DEBUG)?(...t)=>import_console_browserify.default.error("SEMVER",...t):()=>{}}}),require_re2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/internal/re.js"(t,r){init_globals();var{MAX_SAFE_COMPONENT_LENGTH:n}=require_constants11(),i=require_debug2(),a=(t=r.exports={}).re=[],o=t.safeRe=[],s=t.src=[],l=t.t={},u=0,d=(t,r,n)=>{let d=r.split("\\s*").join("\\s{0,1}").split("\\s+").join("\\s"),c=u++;i(t,c,r),l[t]=c,s[c]=r,a[c]=new RegExp(r,n?"g":void 0),o[c]=new RegExp(d,n?"g":void 0)};d("NUMERICIDENTIFIER","0|[1-9]\\d*"),d("NUMERICIDENTIFIERLOOSE","[0-9]+"),d("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*"),d("MAINVERSION",`(${s[l.NUMERICIDENTIFIER]})\\.(${s[l.NUMERICIDENTIFIER]})\\.(${s[l.NUMERICIDENTIFIER]})`),d("MAINVERSIONLOOSE",`(${s[l.NUMERICIDENTIFIERLOOSE]})\\.(${s[l.NUMERICIDENTIFIERLOOSE]})\\.(${s[l.NUMERICIDENTIFIERLOOSE]})`),d("PRERELEASEIDENTIFIER",`(?:${s[l.NUMERICIDENTIFIER]}|${s[l.NONNUMERICIDENTIFIER]})`),d("PRERELEASEIDENTIFIERLOOSE",`(?:${s[l.NUMERICIDENTIFIERLOOSE]}|${s[l.NONNUMERICIDENTIFIER]})`),d("PRERELEASE",`(?:-(${s[l.PRERELEASEIDENTIFIER]}(?:\\.${s[l.PRERELEASEIDENTIFIER]})*))`),d("PRERELEASELOOSE",`(?:-?(${s[l.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${s[l.PRERELEASEIDENTIFIERLOOSE]})*))`),d("BUILDIDENTIFIER","[0-9A-Za-z-]+"),d("BUILD",`(?:\\+(${s[l.BUILDIDENTIFIER]}(?:\\.${s[l.BUILDIDENTIFIER]})*))`),d("FULLPLAIN",`v?${s[l.MAINVERSION]}${s[l.PRERELEASE]}?${s[l.BUILD]}?`),d("FULL",`^${s[l.FULLPLAIN]}$`),d("LOOSEPLAIN",`[v=\\s]*${s[l.MAINVERSIONLOOSE]}${s[l.PRERELEASELOOSE]}?${s[l.BUILD]}?`),d("LOOSE",`^${s[l.LOOSEPLAIN]}$`),d("GTLT","((?:<|>)?=?)"),d("XRANGEIDENTIFIERLOOSE",`${s[l.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),d("XRANGEIDENTIFIER",`${s[l.NUMERICIDENTIFIER]}|x|X|\\*`),d("XRANGEPLAIN",`[v=\\s]*(${s[l.XRANGEIDENTIFIER]})(?:\\.(${s[l.XRANGEIDENTIFIER]})(?:\\.(${s[l.XRANGEIDENTIFIER]})(?:${s[l.PRERELEASE]})?${s[l.BUILD]}?)?)?`),d("XRANGEPLAINLOOSE",`[v=\\s]*(${s[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${s[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${s[l.XRANGEIDENTIFIERLOOSE]})(?:${s[l.PRERELEASELOOSE]})?${s[l.BUILD]}?)?)?`),d("XRANGE",`^${s[l.GTLT]}\\s*${s[l.XRANGEPLAIN]}$`),d("XRANGELOOSE",`^${s[l.GTLT]}\\s*${s[l.XRANGEPLAINLOOSE]}$`),d("COERCE",`(^|[^\\d])(\\d{1,${n}})(?:\\.(\\d{1,${n}}))?(?:\\.(\\d{1,${n}}))?(?:$|[^\\d])`),d("COERCERTL",s[l.COERCE],!0),d("LONETILDE","(?:~>?)"),d("TILDETRIM",`(\\s*)${s[l.LONETILDE]}\\s+`,!0),t.tildeTrimReplace="$1~",d("TILDE",`^${s[l.LONETILDE]}${s[l.XRANGEPLAIN]}$`),d("TILDELOOSE",`^${s[l.LONETILDE]}${s[l.XRANGEPLAINLOOSE]}$`),d("LONECARET","(?:\\^)"),d("CARETTRIM",`(\\s*)${s[l.LONECARET]}\\s+`,!0),t.caretTrimReplace="$1^",d("CARET",`^${s[l.LONECARET]}${s[l.XRANGEPLAIN]}$`),d("CARETLOOSE",`^${s[l.LONECARET]}${s[l.XRANGEPLAINLOOSE]}$`),d("COMPARATORLOOSE",`^${s[l.GTLT]}\\s*(${s[l.LOOSEPLAIN]})$|^$`),d("COMPARATOR",`^${s[l.GTLT]}\\s*(${s[l.FULLPLAIN]})$|^$`),d("COMPARATORTRIM",`(\\s*)${s[l.GTLT]}\\s*(${s[l.LOOSEPLAIN]}|${s[l.XRANGEPLAIN]})`,!0),t.comparatorTrimReplace="$1$2$3",d("HYPHENRANGE",`^\\s*(${s[l.XRANGEPLAIN]})\\s+-\\s+(${s[l.XRANGEPLAIN]})\\s*$`),d("HYPHENRANGELOOSE",`^\\s*(${s[l.XRANGEPLAINLOOSE]})\\s+-\\s+(${s[l.XRANGEPLAINLOOSE]})\\s*$`),d("STAR","(<|>)?=?\\s*\\*"),d("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),d("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}}),require_parse_options2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/internal/parse-options.js"(t,r){init_globals();var n=Object.freeze({loose:!0}),i=Object.freeze({});r.exports=t=>t?"object"!=typeof t?n:t:i}}),require_identifiers2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/internal/identifiers.js"(t,r){init_globals();var n=/^[0-9]+$/,i=(t,r)=>{let i=n.test(t),a=n.test(r);return i&&a&&(t*=1,r*=1),t===r?0:i&&!a?-1:a&&!i?1:t<r?-1:1};r.exports={compareIdentifiers:i,rcompareIdentifiers:(t,r)=>i(r,t)}}}),require_semver3=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/classes/semver.js"(t,r){init_globals();var n=require_debug2(),{MAX_LENGTH:i,MAX_SAFE_INTEGER:a}=require_constants11(),{safeRe:o,t:s}=require_re2(),l=require_parse_options2(),{compareIdentifiers:u}=require_identifiers2();r.exports=class t{constructor(r,u){if(u=l(u),r instanceof t){if(!!u.loose===r.loose&&!!u.includePrerelease===r.includePrerelease)return r;r=r.version}else if("string"!=typeof r)throw TypeError(`Invalid version. Must be a string. Got type "${typeof r}".`);if(r.length>i)throw TypeError(`version is longer than ${i} characters`);n("SemVer",r,u),this.options=u,this.loose=!!u.loose,this.includePrerelease=!!u.includePrerelease;let d=r.trim().match(u.loose?o[s.LOOSE]:o[s.FULL]);if(!d)throw TypeError(`Invalid Version: ${r}`);if(this.raw=r,this.major=+d[1],this.minor=+d[2],this.patch=+d[3],this.major>a||this.major<0)throw TypeError("Invalid major version");if(this.minor>a||this.minor<0)throw TypeError("Invalid minor version");if(this.patch>a||this.patch<0)throw TypeError("Invalid patch version");d[4]?this.prerelease=d[4].split(".").map(t=>{if(/^[0-9]+$/.test(t)){let r=+t;if(r>=0&&r<a)return r}return t}):this.prerelease=[],this.build=d[5]?d[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(r){if(n("SemVer.compare",this.version,this.options,r),!(r instanceof t)){if("string"==typeof r&&r===this.version)return 0;r=new t(r,this.options)}return r.version===this.version?0:this.compareMain(r)||this.comparePre(r)}compareMain(r){return r instanceof t||(r=new t(r,this.options)),u(this.major,r.major)||u(this.minor,r.minor)||u(this.patch,r.patch)}comparePre(r){if(r instanceof t||(r=new t(r,this.options)),this.prerelease.length&&!r.prerelease.length)return -1;if(!this.prerelease.length&&r.prerelease.length)return 1;if(!this.prerelease.length&&!r.prerelease.length)return 0;let i=0;do{let t=this.prerelease[i],a=r.prerelease[i];if(n("prerelease compare",i,t,a),void 0===t&&void 0===a)return 0;if(void 0===a)return 1;if(void 0===t)return -1;if(t!==a)return u(t,a)}while(++i)}compareBuild(r){r instanceof t||(r=new t(r,this.options));let i=0;do{let t=this.build[i],a=r.build[i];if(n("prerelease compare",i,t,a),void 0===t&&void 0===a)return 0;if(void 0===a)return 1;if(void 0===t)return -1;if(t!==a)return u(t,a)}while(++i)}inc(t,r,n){switch(t){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",r,n);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",r,n);break;case"prepatch":this.prerelease.length=0,this.inc("patch",r,n),this.inc("pre",r,n);break;case"prerelease":0===this.prerelease.length&&this.inc("patch",r,n),this.inc("pre",r,n);break;case"major":0===this.minor&&0===this.patch&&0!==this.prerelease.length||this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":0===this.patch&&0!==this.prerelease.length||this.minor++,this.patch=0,this.prerelease=[];break;case"patch":0===this.prerelease.length&&this.patch++,this.prerelease=[];break;case"pre":{let t=+!!Number(n);if(!r&&!1===n)throw Error("invalid increment argument: identifier is empty");if(0===this.prerelease.length)this.prerelease=[t];else{let i=this.prerelease.length;for(;--i>=0;)"number"==typeof this.prerelease[i]&&(this.prerelease[i]++,i=-2);if(-1===i){if(r===this.prerelease.join(".")&&!1===n)throw Error("invalid increment argument: identifier already exists");this.prerelease.push(t)}}if(r){let i=[r,t];!1===n&&(i=[r]),0===u(this.prerelease[0],r)?isNaN(this.prerelease[1])&&(this.prerelease=i):this.prerelease=i}break}default:throw Error(`invalid increment argument: ${t}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}}}}),require_parse4=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/parse.js"(t,r){init_globals();var n=require_semver3();r.exports=(t,r,i=!1)=>{if(t instanceof n)return t;try{return new n(t,r)}catch(t){if(!i)return null;throw t}}}}),require_valid3=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/valid.js"(t,r){init_globals();var n=require_parse4();r.exports=(t,r)=>{let i=n(t,r);return i?i.version:null}}}),require_clean2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/clean.js"(t,r){init_globals();var n=require_parse4();r.exports=(t,r)=>{let i=n(t.trim().replace(/^[=v]+/,""),r);return i?i.version:null}}}),require_inc2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/inc.js"(t,r){init_globals();var n=require_semver3();r.exports=(t,r,i,a,o)=>{"string"==typeof i&&(o=a,a=i,i=void 0);try{return new n(t instanceof n?t.version:t,i).inc(r,a,o).version}catch(t){return null}}}}),require_diff2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/diff.js"(t,r){init_globals();var n=require_parse4();r.exports=(t,r)=>{let i=n(t,null,!0),a=n(r,null,!0),o=i.compare(a);if(0===o)return null;let s=o>0,l=s?i:a,u=s?a:i,d=!!l.prerelease.length;if(u.prerelease.length&&!d)return u.patch||u.minor?l.patch?"patch":l.minor?"minor":"major":"major";let c=d?"pre":"";return i.major!==a.major?c+"major":i.minor!==a.minor?c+"minor":i.patch!==a.patch?c+"patch":"prerelease"}}}),require_major2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/major.js"(t,r){init_globals();var n=require_semver3();r.exports=(t,r)=>new n(t,r).major}}),require_minor2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/minor.js"(t,r){init_globals();var n=require_semver3();r.exports=(t,r)=>new n(t,r).minor}}),require_patch2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/patch.js"(t,r){init_globals();var n=require_semver3();r.exports=(t,r)=>new n(t,r).patch}}),require_prerelease2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/prerelease.js"(t,r){init_globals();var n=require_parse4();r.exports=(t,r)=>{let i=n(t,r);return i&&i.prerelease.length?i.prerelease:null}}}),require_compare2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/compare.js"(t,r){init_globals();var n=require_semver3();r.exports=(t,r,i)=>new n(t,i).compare(new n(r,i))}}),require_rcompare2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/rcompare.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r,i)=>n(r,t,i)}}),require_compare_loose2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/compare-loose.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r)=>n(t,r,!0)}}),require_compare_build2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/compare-build.js"(t,r){init_globals();var n=require_semver3();r.exports=(t,r,i)=>{let a=new n(t,i),o=new n(r,i);return a.compare(o)||a.compareBuild(o)}}}),require_sort2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/sort.js"(t,r){init_globals();var n=require_compare_build2();r.exports=(t,r)=>t.sort((t,i)=>n(t,i,r))}}),require_rsort2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/rsort.js"(t,r){init_globals();var n=require_compare_build2();r.exports=(t,r)=>t.sort((t,i)=>n(i,t,r))}}),require_gt2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/gt.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r,i)=>n(t,r,i)>0}}),require_lt2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/lt.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r,i)=>0>n(t,r,i)}}),require_eq2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/eq.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r,i)=>0===n(t,r,i)}}),require_neq2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/neq.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r,i)=>0!==n(t,r,i)}}),require_gte2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/gte.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r,i)=>n(t,r,i)>=0}}),require_lte2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/lte.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r,i)=>0>=n(t,r,i)}}),require_cmp2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/cmp.js"(t,r){init_globals();var n=require_eq2(),i=require_neq2(),a=require_gt2(),o=require_gte2(),s=require_lt2(),l=require_lte2();r.exports=(t,r,u,d)=>{switch(r){case"===":return"object"==typeof t&&(t=t.version),"object"==typeof u&&(u=u.version),t===u;case"!==":return"object"==typeof t&&(t=t.version),"object"==typeof u&&(u=u.version),t!==u;case"":case"=":case"==":return n(t,u,d);case"!=":return i(t,u,d);case">":return a(t,u,d);case">=":return o(t,u,d);case"<":return s(t,u,d);case"<=":return l(t,u,d);default:throw TypeError(`Invalid operator: ${r}`)}}}}),require_coerce2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/coerce.js"(t,r){init_globals();var n=require_semver3(),i=require_parse4(),{safeRe:a,t:o}=require_re2();r.exports=(t,r)=>{if(t instanceof n)return t;if("number"==typeof t&&(t=String(t)),"string"!=typeof t)return null;let s=null;if((r=r||{}).rtl){let r;for(;(r=a[o.COERCERTL].exec(t))&&(!s||s.index+s[0].length!==t.length);)s&&r.index+r[0].length===s.index+s[0].length||(s=r),a[o.COERCERTL].lastIndex=r.index+r[1].length+r[2].length;a[o.COERCERTL].lastIndex=-1}else s=t.match(a[o.COERCE]);return null===s?null:i(`${s[2]}.${s[3]||"0"}.${s[4]||"0"}`,r)}}}),require_iterator=__commonJS({"../../node_modules/.pnpm/yallist@4.0.0/node_modules/yallist/iterator.js"(t,r){init_globals(),r.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let t=this.head;t;t=t.next)yield t.value}}}}),require_yallist=__commonJS({"../../node_modules/.pnpm/yallist@4.0.0/node_modules/yallist/yallist.js"(t,r){function n(t){var r=this;if(r instanceof n||(r=new n),r.tail=null,r.head=null,r.length=0,t&&"function"==typeof t.forEach)t.forEach(function(t){r.push(t)});else if(arguments.length>0)for(var i=0,a=arguments.length;i<a;i++)r.push(arguments[i]);return r}function i(t,r,n){var i=r===t.head?new s(n,null,r,t):new s(n,r,r.next,t);return null===i.next&&(t.tail=i),null===i.prev&&(t.head=i),t.length++,i}function a(t,r){t.tail=new s(r,t.tail,null,t),t.head||(t.head=t.tail),t.length++}function o(t,r){t.head=new s(r,null,t.head,t),t.tail||(t.tail=t.head),t.length++}function s(t,r,n,i){if(!(this instanceof s))return new s(t,r,n,i);this.list=i,this.value=t,r?(r.next=this,this.prev=r):this.prev=null,n?(n.prev=this,this.next=n):this.next=null}init_globals(),r.exports=n,n.Node=s,n.create=n,n.prototype.removeNode=function(t){if(t.list!==this)throw Error("removing node which does not belong to this list");var r=t.next,n=t.prev;return r&&(r.prev=n),n&&(n.next=r),t===this.head&&(this.head=r),t===this.tail&&(this.tail=n),t.list.length--,t.next=null,t.prev=null,t.list=null,r},n.prototype.unshiftNode=function(t){if(t!==this.head){t.list&&t.list.removeNode(t);var r=this.head;t.list=this,t.next=r,r&&(r.prev=t),this.head=t,this.tail||(this.tail=t),this.length++}},n.prototype.pushNode=function(t){if(t!==this.tail){t.list&&t.list.removeNode(t);var r=this.tail;t.list=this,t.prev=r,r&&(r.next=t),this.tail=t,this.head||(this.head=t),this.length++}},n.prototype.push=function(){for(var t=0,r=arguments.length;t<r;t++)a(this,arguments[t]);return this.length},n.prototype.unshift=function(){for(var t=0,r=arguments.length;t<r;t++)o(this,arguments[t]);return this.length},n.prototype.pop=function(){if(this.tail){var t=this.tail.value;return this.tail=this.tail.prev,this.tail?this.tail.next=null:this.head=null,this.length--,t}},n.prototype.shift=function(){if(this.head){var t=this.head.value;return this.head=this.head.next,this.head?this.head.prev=null:this.tail=null,this.length--,t}},n.prototype.forEach=function(t,r){r=r||this;for(var n=this.head,i=0;null!==n;i++)t.call(r,n.value,i,this),n=n.next},n.prototype.forEachReverse=function(t,r){r=r||this;for(var n=this.tail,i=this.length-1;null!==n;i--)t.call(r,n.value,i,this),n=n.prev},n.prototype.get=function(t){for(var r=0,n=this.head;null!==n&&r<t;r++)n=n.next;if(r===t&&null!==n)return n.value},n.prototype.getReverse=function(t){for(var r=0,n=this.tail;null!==n&&r<t;r++)n=n.prev;if(r===t&&null!==n)return n.value},n.prototype.map=function(t,r){r=r||this;for(var i=new n,a=this.head;null!==a;)i.push(t.call(r,a.value,this)),a=a.next;return i},n.prototype.mapReverse=function(t,r){r=r||this;for(var i=new n,a=this.tail;null!==a;)i.push(t.call(r,a.value,this)),a=a.prev;return i},n.prototype.reduce=function(t,r){var n,i=this.head;if(arguments.length>1)n=r;else{if(!this.head)throw TypeError("Reduce of empty list with no initial value");i=this.head.next,n=this.head.value}for(var a=0;null!==i;a++)n=t(n,i.value,a),i=i.next;return n},n.prototype.reduceReverse=function(t,r){var n,i=this.tail;if(arguments.length>1)n=r;else{if(!this.tail)throw TypeError("Reduce of empty list with no initial value");i=this.tail.prev,n=this.tail.value}for(var a=this.length-1;null!==i;a--)n=t(n,i.value,a),i=i.prev;return n},n.prototype.toArray=function(){for(var t=Array(this.length),r=0,n=this.head;null!==n;r++)t[r]=n.value,n=n.next;return t},n.prototype.toArrayReverse=function(){for(var t=Array(this.length),r=0,n=this.tail;null!==n;r++)t[r]=n.value,n=n.prev;return t},n.prototype.slice=function(t,r){(r=r||this.length)<0&&(r+=this.length),(t=t||0)<0&&(t+=this.length);var i=new n;if(r<t||r<0)return i;t<0&&(t=0),r>this.length&&(r=this.length);for(var a=0,o=this.head;null!==o&&a<t;a++)o=o.next;for(;null!==o&&a<r;a++,o=o.next)i.push(o.value);return i},n.prototype.sliceReverse=function(t,r){(r=r||this.length)<0&&(r+=this.length),(t=t||0)<0&&(t+=this.length);var i=new n;if(r<t||r<0)return i;t<0&&(t=0),r>this.length&&(r=this.length);for(var a=this.length,o=this.tail;null!==o&&a>r;a--)o=o.prev;for(;null!==o&&a>t;a--,o=o.prev)i.push(o.value);return i},n.prototype.splice=function(t,r,...n){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var a=0,o=this.head;null!==o&&a<t;a++)o=o.next;var s=[];for(a=0;o&&a<r;a++)s.push(o.value),o=this.removeNode(o);for(null===o&&(o=this.tail),o!==this.head&&o!==this.tail&&(o=o.prev),a=0;a<n.length;a++)o=i(this,o,n[a]);return s},n.prototype.reverse=function(){for(var t=this.head,r=this.tail,n=t;null!==n;n=n.prev){var i=n.prev;n.prev=n.next,n.next=i}return this.head=r,this.tail=t,this};try{require_iterator()(n)}catch(t){}}}),require_lru_cache=__commonJS({"../../node_modules/.pnpm/lru-cache@6.0.0/node_modules/lru-cache/index.js"(t,r){init_globals();var n=require_yallist(),i=Symbol("max"),a=Symbol("length"),o=Symbol("lengthCalculator"),s=Symbol("allowStale"),l=Symbol("maxAge"),u=Symbol("dispose"),d=Symbol("noDisposeOnSet"),c=Symbol("lruList"),h=Symbol("cache"),f=Symbol("updateAgeOnGet"),p=()=>1,m=(t,r,n)=>{let i=t[h].get(r);if(i){let r=i.value;if(g(t,r)){if(y(t,i),!t[s])return}else n&&(t[f]&&(i.value.now=Date.now()),t[c].unshiftNode(i));return r.value}},g=(t,r)=>{if(!r||!r.maxAge&&!t[l])return!1;let n=Date.now()-r.now;return r.maxAge?n>r.maxAge:t[l]&&n>t[l]},b=t=>{if(t[a]>t[i])for(let r=t[c].tail;t[a]>t[i]&&null!==r;){let n=r.prev;y(t,r),r=n}},y=(t,r)=>{if(r){let n=r.value;t[u]&&t[u](n.key,n.value),t[a]-=n.length,t[h].delete(n.key),t[c].removeNode(r)}},_=class{constructor(t,r,n,i,a){this.key=t,this.value=r,this.length=n,this.now=i,this.maxAge=a||0}},v=(t,r,n,i)=>{let a=n.value;g(t,a)&&(y(t,n),t[s]||(a=void 0)),a&&r.call(i,a.value,a.key,t)};r.exports=class{constructor(t){if("number"==typeof t&&(t={max:t}),t||(t={}),t.max&&("number"!=typeof t.max||t.max<0))throw TypeError("max must be a non-negative number");this[i]=t.max||1/0;let r=t.length||p;if(this[o]="function"!=typeof r?p:r,this[s]=t.stale||!1,t.maxAge&&"number"!=typeof t.maxAge)throw TypeError("maxAge must be a number");this[l]=t.maxAge||0,this[u]=t.dispose,this[d]=t.noDisposeOnSet||!1,this[f]=t.updateAgeOnGet||!1,this.reset()}set max(t){if("number"!=typeof t||t<0)throw TypeError("max must be a non-negative number");this[i]=t||1/0,b(this)}get max(){return this[i]}set allowStale(t){this[s]=!!t}get allowStale(){return this[s]}set maxAge(t){if("number"!=typeof t)throw TypeError("maxAge must be a non-negative number");this[l]=t,b(this)}get maxAge(){return this[l]}set lengthCalculator(t){"function"!=typeof t&&(t=p),t!==this[o]&&(this[o]=t,this[a]=0,this[c].forEach(t=>{t.length=this[o](t.value,t.key),this[a]+=t.length})),b(this)}get lengthCalculator(){return this[o]}get length(){return this[a]}get itemCount(){return this[c].length}rforEach(t,r){r=r||this;for(let n=this[c].tail;null!==n;){let i=n.prev;v(this,t,n,r),n=i}}forEach(t,r){r=r||this;for(let n=this[c].head;null!==n;){let i=n.next;v(this,t,n,r),n=i}}keys(){return this[c].toArray().map(t=>t.key)}values(){return this[c].toArray().map(t=>t.value)}reset(){this[u]&&this[c]&&this[c].length&&this[c].forEach(t=>this[u](t.key,t.value)),this[h]=new Map,this[c]=new n,this[a]=0}dump(){return this[c].map(t=>!g(this,t)&&{k:t.key,v:t.value,e:t.now+(t.maxAge||0)}).toArray().filter(t=>t)}dumpLru(){return this[c]}set(t,r,n){if((n=n||this[l])&&"number"!=typeof n)throw TypeError("maxAge must be a number");let s=n?Date.now():0,f=this[o](r,t);if(this[h].has(t)){if(f>this[i])return y(this,this[h].get(t)),!1;let o=this[h].get(t).value;return this[u]&&(this[d]||this[u](t,o.value)),o.now=s,o.maxAge=n,o.value=r,this[a]+=f-o.length,o.length=f,this.get(t),b(this),!0}let p=new _(t,r,f,s,n);return p.length>this[i]?(this[u]&&this[u](t,r),!1):(this[a]+=p.length,this[c].unshift(p),this[h].set(t,this[c].head),b(this),!0)}has(t){return!!this[h].has(t)&&!g(this,this[h].get(t).value)}get(t){return m(this,t,!0)}peek(t){return m(this,t,!1)}pop(){let t=this[c].tail;return t?(y(this,t),t.value):null}del(t){y(this,this[h].get(t))}load(t){this.reset();let r=Date.now();for(let n=t.length-1;n>=0;n--){let i=t[n],a=i.e||0;if(0===a)this.set(i.k,i.v);else{let t=a-r;t>0&&this.set(i.k,i.v,t)}}}prune(){this[h].forEach((t,r)=>m(this,r,!1))}}}}),require_range3=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/classes/range.js"(t,r){init_globals(),r.exports=class t{constructor(r,n){if(n=i(n),r instanceof t)return!!n.loose===r.loose&&!!n.includePrerelease===r.includePrerelease?r:new t(r.raw,n);if(r instanceof a)return this.raw=r.value,this.set=[[r]],this.format(),this;if(this.options=n,this.loose=!!n.loose,this.includePrerelease=!!n.includePrerelease,this.raw=r.trim().split(/\s+/).join(" "),this.set=this.raw.split("||").map(t=>this.parseRange(t)).filter(t=>t.length),!this.set.length)throw TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let t=this.set[0];if(this.set=this.set.filter(t=>!m(t[0])),0===this.set.length)this.set=[t];else if(this.set.length>1){for(let t of this.set)if(1===t.length&&g(t[0])){this.set=[t];break}}}this.format()}format(){return this.range=this.set.map(t=>t.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(t){let r=((this.options.includePrerelease&&f)|(this.options.loose&&p))+":"+t,i=n.get(r);if(i)return i;let s=this.options.loose,g=s?l[u.HYPHENRANGELOOSE]:l[u.HYPHENRANGE];o("hyphen replace",t=t.replace(g,T(this.options.includePrerelease))),o("comparator trim",t=t.replace(l[u.COMPARATORTRIM],d));let b=(t=(t=t.replace(l[u.TILDETRIM],c)).replace(l[u.CARETTRIM],h)).split(" ").map(t=>y(t,this.options)).join(" ").split(/\s+/).map(t=>I(t,this.options));s&&(b=b.filter(t=>(o("loose invalid filter",t,this.options),!!t.match(l[u.COMPARATORLOOSE])))),o("range list",b);let _=new Map;for(let t of b.map(t=>new a(t,this.options))){if(m(t))return[t];_.set(t.value,t)}_.size>1&&_.has("")&&_.delete("");let v=[..._.values()];return n.set(r,v),v}intersects(r,n){if(!(r instanceof t))throw TypeError("a Range is required");return this.set.some(t=>b(t,n)&&r.set.some(r=>b(r,n)&&t.every(t=>r.every(r=>t.intersects(r,n)))))}test(t){if(!t)return!1;if("string"==typeof t)try{t=new s(t,this.options)}catch(t){return!1}for(let r=0;r<this.set.length;r++)if(k(this.set[r],t,this.options))return!0;return!1}};var n=new(require_lru_cache())({max:1e3}),i=require_parse_options2(),a=require_comparator2(),o=require_debug2(),s=require_semver3(),{safeRe:l,t:u,comparatorTrimReplace:d,tildeTrimReplace:c,caretTrimReplace:h}=require_re2(),{FLAG_INCLUDE_PRERELEASE:f,FLAG_LOOSE:p}=require_constants11(),m=t=>"<0.0.0-0"===t.value,g=t=>""===t.value,b=(t,r)=>{let n=!0,i=t.slice(),a=i.pop();for(;n&&i.length;)n=i.every(t=>a.intersects(t,r)),a=i.pop();return n},y=(t,r)=>(o("comp",t,r),o("caret",t=w(t,r)),o("tildes",t=v(t,r)),o("xrange",t=E(t,r)),o("stars",t=C(t,r)),t),_=t=>!t||"x"===t.toLowerCase()||"*"===t,v=(t,r)=>t.trim().split(/\s+/).map(t=>A(t,r)).join(" "),A=(t,r)=>{let n=r.loose?l[u.TILDELOOSE]:l[u.TILDE];return t.replace(n,(r,n,i,a,s)=>{let l;return o("tilde",t,r,n,i,a,s),_(n)?l="":_(i)?l=`>=${n}.0.0 <${+n+1}.0.0-0`:_(a)?l=`>=${n}.${i}.0 <${n}.${+i+1}.0-0`:s?(o("replaceTilde pr",s),l=`>=${n}.${i}.${a}-${s} <${n}.${+i+1}.0-0`):l=`>=${n}.${i}.${a} <${n}.${+i+1}.0-0`,o("tilde return",l),l})},w=(t,r)=>t.trim().split(/\s+/).map(t=>x(t,r)).join(" "),x=(t,r)=>{o("caret",t,r);let n=r.loose?l[u.CARETLOOSE]:l[u.CARET],i=r.includePrerelease?"-0":"";return t.replace(n,(r,n,a,s,l)=>{let u;return o("caret",t,r,n,a,s,l),_(n)?u="":_(a)?u=`>=${n}.0.0${i} <${+n+1}.0.0-0`:_(s)?u="0"===n?`>=${n}.${a}.0${i} <${n}.${+a+1}.0-0`:`>=${n}.${a}.0${i} <${+n+1}.0.0-0`:l?(o("replaceCaret pr",l),u="0"===n?"0"===a?`>=${n}.${a}.${s}-${l} <${n}.${a}.${+s+1}-0`:`>=${n}.${a}.${s}-${l} <${n}.${+a+1}.0-0`:`>=${n}.${a}.${s}-${l} <${+n+1}.0.0-0`):(o("no pr"),u="0"===n?"0"===a?`>=${n}.${a}.${s}${i} <${n}.${a}.${+s+1}-0`:`>=${n}.${a}.${s}${i} <${n}.${+a+1}.0-0`:`>=${n}.${a}.${s} <${+n+1}.0.0-0`),o("caret return",u),u})},E=(t,r)=>(o("replaceXRanges",t,r),t.split(/\s+/).map(t=>S(t,r)).join(" ")),S=(t,r)=>{t=t.trim();let n=r.loose?l[u.XRANGELOOSE]:l[u.XRANGE];return t.replace(n,(n,i,a,s,l,u)=>{o("xRange",t,n,i,a,s,l,u);let d=_(a),c=d||_(s),h=c||_(l),f=h;return"="===i&&f&&(i=""),u=r.includePrerelease?"-0":"",d?n=">"===i||"<"===i?"<0.0.0-0":"*":i&&f?(c&&(s=0),l=0,">"===i?(i=">=",c?(a=+a+1,s=0):s=+s+1,l=0):"<="===i&&(i="<",c?a=+a+1:s=+s+1),"<"===i&&(u="-0"),n=`${i+a}.${s}.${l}${u}`):c?n=`>=${a}.0.0${u} <${+a+1}.0.0-0`:h&&(n=`>=${a}.${s}.0${u} <${a}.${+s+1}.0-0`),o("xRange return",n),n})},C=(t,r)=>(o("replaceStars",t,r),t.trim().replace(l[u.STAR],"")),I=(t,r)=>(o("replaceGTE0",t,r),t.trim().replace(l[r.includePrerelease?u.GTE0PRE:u.GTE0],"")),T=t=>(r,n,i,a,o,s,l,u,d,c,h,f,p)=>`${n=_(i)?"":_(a)?`>=${i}.0.0${t?"-0":""}`:_(o)?`>=${i}.${a}.0${t?"-0":""}`:s?`>=${n}`:`>=${n}${t?"-0":""}`} ${u=_(d)?"":_(c)?`<${+d+1}.0.0-0`:_(h)?`<${d}.${+c+1}.0-0`:f?`<=${d}.${c}.${h}-${f}`:t?`<${d}.${c}.${+h+1}-0`:`<=${u}`}`.trim(),k=(t,r,n)=>{for(let n=0;n<t.length;n++)if(!t[n].test(r))return!1;if(r.prerelease.length&&!n.includePrerelease){for(let n=0;n<t.length;n++)if(o(t[n].semver),t[n].semver!==a.ANY&&t[n].semver.prerelease.length>0){let i=t[n].semver;if(i.major===r.major&&i.minor===r.minor&&i.patch===r.patch)return!0}return!1}return!0}}}),require_comparator2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/classes/comparator.js"(t,r){init_globals();var n=Symbol("SemVer ANY");r.exports=class t{static get ANY(){return n}constructor(r,a){if(a=i(a),r instanceof t){if(!!a.loose===r.loose)return r;r=r.value}l("comparator",r=r.trim().split(/\s+/).join(" "),a),this.options=a,this.loose=!!a.loose,this.parse(r),this.semver===n?this.value="":this.value=this.operator+this.semver.version,l("comp",this)}parse(t){let r=this.options.loose?a[o.COMPARATORLOOSE]:a[o.COMPARATOR],i=t.match(r);if(!i)throw TypeError(`Invalid comparator: ${t}`);this.operator=void 0!==i[1]?i[1]:"","="===this.operator&&(this.operator=""),i[2]?this.semver=new u(i[2],this.options.loose):this.semver=n}toString(){return this.value}test(t){if(l("Comparator.test",t,this.options.loose),this.semver===n||t===n)return!0;if("string"==typeof t)try{t=new u(t,this.options)}catch(t){return!1}return s(t,this.operator,this.semver,this.options)}intersects(r,n){if(!(r instanceof t))throw TypeError("a Comparator is required");return""===this.operator?""===this.value||new d(r.value,n).test(this.value):""===r.operator?""===r.value||new d(this.value,n).test(r.semver):(!(n=i(n)).includePrerelease||"<0.0.0-0"!==this.value&&"<0.0.0-0"!==r.value)&&!(!n.includePrerelease&&(this.value.startsWith("<0.0.0")||r.value.startsWith("<0.0.0")))&&(!(!this.operator.startsWith(">")||!r.operator.startsWith(">"))||!(!this.operator.startsWith("<")||!r.operator.startsWith("<"))||!(this.semver.version!==r.semver.version||!this.operator.includes("=")||!r.operator.includes("="))||!!(s(this.semver,"<",r.semver,n)&&this.operator.startsWith(">")&&r.operator.startsWith("<"))||!!(s(this.semver,">",r.semver,n)&&this.operator.startsWith("<")&&r.operator.startsWith(">")))}};var i=require_parse_options2(),{safeRe:a,t:o}=require_re2(),s=require_cmp2(),l=require_debug2(),u=require_semver3(),d=require_range3()}}),require_satisfies2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/satisfies.js"(t,r){init_globals();var n=require_range3();r.exports=(t,r,i)=>{try{r=new n(r,i)}catch(t){return!1}return r.test(t)}}}),require_to_comparators2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/to-comparators.js"(t,r){init_globals();var n=require_range3();r.exports=(t,r)=>new n(t,r).set.map(t=>t.map(t=>t.value).join(" ").trim().split(" "))}}),require_max_satisfying2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/max-satisfying.js"(t,r){init_globals();var n=require_semver3(),i=require_range3();r.exports=(t,r,a)=>{let o=null,s=null,l=null;try{l=new i(r,a)}catch(t){return null}return t.forEach(t=>{l.test(t)&&(o&&-1!==s.compare(t)||(s=new n(o=t,a)))}),o}}}),require_min_satisfying2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/min-satisfying.js"(t,r){init_globals();var n=require_semver3(),i=require_range3();r.exports=(t,r,a)=>{let o=null,s=null,l=null;try{l=new i(r,a)}catch(t){return null}return t.forEach(t=>{l.test(t)&&(o&&1!==s.compare(t)||(s=new n(o=t,a)))}),o}}}),require_min_version2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/min-version.js"(t,r){init_globals();var n=require_semver3(),i=require_range3(),a=require_gt2();r.exports=(t,r)=>{t=new i(t,r);let o=new n("0.0.0");if(t.test(o)||(o=new n("0.0.0-0"),t.test(o)))return o;o=null;for(let r=0;r<t.set.length;++r){let i=t.set[r],s=null;i.forEach(t=>{let r=new n(t.semver.version);switch(t.operator){case">":0===r.prerelease.length?r.patch++:r.prerelease.push(0),r.raw=r.format();case"":case">=":s&&!a(r,s)||(s=r);break;case"<":case"<=":break;default:throw Error(`Unexpected operation: ${t.operator}`)}}),s&&(!o||a(o,s))&&(o=s)}return o&&t.test(o)?o:null}}}),require_valid4=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/valid.js"(t,r){init_globals();var n=require_range3();r.exports=(t,r)=>{try{return new n(t,r).range||"*"}catch(t){return null}}}}),require_outside2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/outside.js"(t,r){init_globals();var n=require_semver3(),i=require_comparator2(),{ANY:a}=i,o=require_range3(),s=require_satisfies2(),l=require_gt2(),u=require_lt2(),d=require_lte2(),c=require_gte2();r.exports=(t,r,h,f)=>{let p,m,g,b,y;switch(t=new n(t,f),r=new o(r,f),h){case">":p=l,m=d,g=u,b=">",y=">=";break;case"<":p=u,m=c,g=l,b="<",y="<=";break;default:throw TypeError('Must provide a hilo val of "<" or ">"')}if(s(t,r,f))return!1;for(let n=0;n<r.set.length;++n){let o=r.set[n],s=null,l=null;if(o.forEach(t=>{t.semver===a&&(t=new i(">=0.0.0")),s=s||t,l=l||t,p(t.semver,s.semver,f)?s=t:g(t.semver,l.semver,f)&&(l=t)}),s.operator===b||s.operator===y||(!l.operator||l.operator===b)&&m(t,l.semver)||l.operator===y&&g(t,l.semver))return!1}return!0}}}),require_gtr2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/gtr.js"(t,r){init_globals();var n=require_outside2();r.exports=(t,r,i)=>n(t,r,">",i)}}),require_ltr2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/ltr.js"(t,r){init_globals();var n=require_outside2();r.exports=(t,r,i)=>n(t,r,"<",i)}}),require_intersects2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/intersects.js"(t,r){init_globals();var n=require_range3();r.exports=(t,r,i)=>(t=new n(t,i),r=new n(r,i),t.intersects(r,i))}}),require_simplify3=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/simplify.js"(t,r){init_globals();var n=require_satisfies2(),i=require_compare2();r.exports=(t,r,a)=>{let o=[],s=null,l=null,u=t.sort((t,r)=>i(t,r,a));for(let t of u)n(t,r,a)?(l=t,s||(s=t)):(l&&o.push([s,l]),l=null,s=null);s&&o.push([s,null]);let d=[];for(let[t,r]of o)t===r?d.push(t):r||t!==u[0]?r?t===u[0]?d.push(`<=${r}`):d.push(`${t} - ${r}`):d.push(`>=${t}`):d.push("*");let c=d.join(" || "),h="string"==typeof r.raw?r.raw:String(r);return c.length<h.length?c:r}}}),require_subset2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/subset.js"(t,r){init_globals();var n=require_range3(),i=require_comparator2(),{ANY:a}=i,o=require_satisfies2(),s=require_compare2(),l=[new i(">=0.0.0-0")],u=[new i(">=0.0.0")],d=(t,r,n)=>{let i,d,f,p,m,g,b;if(t===r)return!0;if(1===t.length&&t[0].semver===a){if(1===r.length&&r[0].semver===a)return!0;t=n.includePrerelease?l:u}if(1===r.length&&r[0].semver===a){if(n.includePrerelease)return!0;r=u}let y=new Set;for(let r of t)">"===r.operator||">="===r.operator?i=c(i,r,n):"<"===r.operator||"<="===r.operator?d=h(d,r,n):y.add(r.semver);if(y.size>1||i&&d&&((f=s(i.semver,d.semver,n))>0||0===f&&(">="!==i.operator||"<="!==d.operator)))return null;for(let t of y){if(i&&!o(t,String(i),n)||d&&!o(t,String(d),n))return null;for(let i of r)if(!o(t,String(i),n))return!1;return!0}let _=!(!d||n.includePrerelease||!d.semver.prerelease.length)&&d.semver,v=!(!i||n.includePrerelease||!i.semver.prerelease.length)&&i.semver;for(let t of(_&&1===_.prerelease.length&&"<"===d.operator&&0===_.prerelease[0]&&(_=!1),r)){if(b=b||">"===t.operator||">="===t.operator,g=g||"<"===t.operator||"<="===t.operator,i){if(v&&t.semver.prerelease&&t.semver.prerelease.length&&t.semver.major===v.major&&t.semver.minor===v.minor&&t.semver.patch===v.patch&&(v=!1),">"===t.operator||">="===t.operator){if((p=c(i,t,n))===t&&p!==i)return!1}else if(">="===i.operator&&!o(i.semver,String(t),n))return!1}if(d){if(_&&t.semver.prerelease&&t.semver.prerelease.length&&t.semver.major===_.major&&t.semver.minor===_.minor&&t.semver.patch===_.patch&&(_=!1),"<"===t.operator||"<="===t.operator){if((m=h(d,t,n))===t&&m!==d)return!1}else if("<="===d.operator&&!o(d.semver,String(t),n))return!1}if(!t.operator&&(d||i)&&0!==f)return!1}return!(i&&g&&!d&&0!==f)&&!(d&&b&&!i&&0!==f)&&!v&&!_},c=(t,r,n)=>{if(!t)return r;let i=s(t.semver,r.semver,n);return i>0?t:i<0||">"===r.operator&&">="===t.operator?r:t},h=(t,r,n)=>{if(!t)return r;let i=s(t.semver,r.semver,n);return i<0?t:i>0||"<"===r.operator&&"<="===t.operator?r:t};r.exports=(t,r,i={})=>{if(t===r)return!0;t=new n(t,i),r=new n(r,i);let a=!1;e:for(let n of t.set){for(let t of r.set){let r=d(n,t,i);if(a=a||null!==r,r)continue e}if(a)return!1}return!0}}}),require_semver4=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/index.js"(t,r){init_globals();var n=require_re2(),i=require_constants11(),a=require_semver3(),o=require_identifiers2();r.exports={parse:require_parse4(),valid:require_valid3(),clean:require_clean2(),inc:require_inc2(),diff:require_diff2(),major:require_major2(),minor:require_minor2(),patch:require_patch2(),prerelease:require_prerelease2(),compare:require_compare2(),rcompare:require_rcompare2(),compareLoose:require_compare_loose2(),compareBuild:require_compare_build2(),sort:require_sort2(),rsort:require_rsort2(),gt:require_gt2(),lt:require_lt2(),eq:require_eq2(),neq:require_neq2(),gte:require_gte2(),lte:require_lte2(),cmp:require_cmp2(),coerce:require_coerce2(),Comparator:require_comparator2(),Range:require_range3(),satisfies:require_satisfies2(),toComparators:require_to_comparators2(),maxSatisfying:require_max_satisfying2(),minSatisfying:require_min_satisfying2(),minVersion:require_min_version2(),validRange:require_valid4(),outside:require_outside2(),gtr:require_gtr2(),ltr:require_ltr2(),intersects:require_intersects2(),simplifyRange:require_simplify3(),subset:require_subset2(),SemVer:a,re:n.re,src:n.src,tokens:n.t,SEMVER_SPEC_VERSION:i.SEMVER_SPEC_VERSION,RELEASE_TYPES:i.RELEASE_TYPES,compareIdentifiers:o.compareIdentifiers,rcompareIdentifiers:o.rcompareIdentifiers}}}),require_lib7=__commonJS({"../core/dist/lib/index.js"(t){function r(t){let r,n=t[0],i=1;for(;i<t.length;){let a=t[i],o=t[i+1];if(i+=2,("optionalAccess"===a||"optionalCall"===a)&&null==n)return;"access"===a||"optionalAccess"===a?(r=n,n=o(n)):"call"!==a&&"optionalCall"!==a||(n=o((...t)=>n.call(r,...t)),r=void 0)}return n}init_globals(),Object.defineProperty(t,"__esModule",{value:!0});var n=require_chunk_SH3FV3EL(),i=require_chunk_I5LBWOQA(),a=require_env(),o=require_utils5(),s=require_img();function l(t,i){let s={sdkVersion:n.getVersion.call(void 0),logTime:Date.now(),model_name:a.getAIConfig.call(void 0,a.MIDSCENE_MODEL_NAME)||""},l={logId:o.uuid.call(void 0),...s,...t};r([i,"optionalCall",t=>t(l)])}var u=require_logger().getDebug.call(void 0,"ai:insight"),d=class{constructor(t,n){this.aiVendorFn=i.callAiFn,o.assert.call(void 0,t,"context is required for Insight"),this.contextRetrieverFn="function"==typeof t?t:()=>Promise.resolve(t),void 0!==r([n,"optionalAccess",t=>t.aiVendorFn])&&(this.aiVendorFn=n.aiVendorFn),void 0!==r([n,"optionalAccess",t=>t.taskInfo])&&(this.taskInfo=n.taskInfo)}async locate(t,n){let s,d,c,h,f,p,{callAI:m}=n||{},g="string"==typeof t?t:t.prompt;o.assert.call(void 0,g,"query is required for locate");let b=this.onceDumpUpdatedFn;this.onceDumpUpdatedFn=void 0,o.assert.call(void 0,"object"==typeof t,"query should be an object for locate");let y=a.getAIConfigInBoolean.call(void 0,a.MIDSCENE_FORCE_DEEP_THINK);y&&u("globalDeepThinkSwitch",y),(t.deepThink||y)&&(s=t.prompt),s&&!a.vlLocateMode.call(void 0)&&(import_console_browserify.default.warn('The "deepThink" feature is not supported with multimodal LLM. Please config VL model for Midscene. https://midscenejs.com/choose-a-model'),s=void 0);let _=r([n,"optionalAccess",t=>t.context])||await this.contextRetrieverFn("locate");s&&(f=await i.AiLocateSection.call(void 0,{context:_,sectionDescription:s}),o.assert.call(void 0,f.rect,`cannot find search area for "${s}"${f.error?`: ${f.error}`:""}`),c=f.rawResponse,h=f.usage,d=f.rect);let v=Date.now(),{parseResult:A,rect:w,elementById:x,rawResponse:E,usage:S,isOrderSensitive:C}=await i.AiLocateElement.call(void 0,{callAI:m||this.aiVendorFn,context:_,targetElementDescription:g,searchConfig:f}),I=Date.now()-v,T={...this.taskInfo?this.taskInfo:{},durationMs:I,rawResponse:JSON.stringify(E),formatResponse:JSON.stringify(A),usage:S,searchArea:d,searchAreaRawResponse:c,searchAreaUsage:h};r([A,"access",t=>t.errors,"optionalAccess",t=>t.length])&&(p=`AI model failed to locate:
732
732
  ${A.errors.join("\n")}`);let k={type:"locate",userQuery:{element:g},matchedElement:[],matchedRect:w,data:null,taskInfo:T,deepThink:!!d,error:p},P=[];if((A.elements||[]).forEach(t=>{if("id"in t){let n=x(r([t,"optionalAccess",t=>t.id]));if(!n)return void import_console_browserify.default.warn(`locate: cannot find element id=${t.id}. Maybe an unstable response from AI model`);P.push(n)}}),l({...k,matchedElement:P},b),p)throw Error(p);return o.assert.call(void 0,P.length<=1,`locate: multiple elements found, length = ${P.length}`),1===P.length?{element:{id:P[0].id,indexId:P[0].indexId,center:P[0].center,rect:P[0].rect,xpaths:P[0].xpaths||[],attributes:P[0].attributes,isOrderSensitive:C},rect:w}:{element:null,rect:w}}async extract(t,n,a){let s;o.assert.call(void 0,"object"==typeof t||"string"==typeof t,"dataDemand should be object or string, but get "+typeof t);let u=this.onceDumpUpdatedFn;this.onceDumpUpdatedFn=void 0;let d=await this.contextRetrieverFn("extract"),c=Date.now(),{parseResult:h,usage:f}=await i.AiExtractElementInfo.call(void 0,{context:d,dataQuery:t,multimodalPrompt:a,extractOption:n}),p=Date.now()-c,m={...this.taskInfo?this.taskInfo:{},durationMs:p,rawResponse:JSON.stringify(h)};r([h,"access",t=>t.errors,"optionalAccess",t=>t.length])&&(s=`AI response error:
733
733
  ${h.errors.join("\n")}`);let{data:g,thought:b}=h||{};if(l({type:"extract",userQuery:{dataDemand:t},matchedElement:[],data:null,taskInfo:m,error:s,data:g},u),s&&!g)throw Error(s);return{data:g,thought:b,usage:f}}async assert(t){let r=this.onceDumpUpdatedFn;this.onceDumpUpdatedFn=void 0;let n=await this.contextRetrieverFn("assert"),a=Date.now(),o=await i.AiAssert.call(void 0,{assertion:t,context:n}),s=Date.now()-a,u={...this.taskInfo?this.taskInfo:{},durationMs:s,rawResponse:JSON.stringify(o.content)},{thought:d,pass:c}=o.content;return l({type:"assert",userQuery:{assertion:t},matchedElement:[],data:null,taskInfo:u,assertionPass:c,assertionThought:d,error:c?void 0:d},r),{pass:c,thought:d,usage:o.usage}}async describe(t,n){o.assert.call(void 0,t,"target is required for insight.describe");let l=await this.contextRetrieverFn("describe"),{screenshotBase64:d,size:c}=l;o.assert.call(void 0,d,"screenshot is required for insight.describe");let h=`
734
734
  Describe the element in the red rectangle for precise identification. Use ${a.getPreferredLanguage.call(void 0)}.
@@ -771,7 +771,7 @@ Return JSON:
771
771
  "error"?: "error message if any"
772
772
  }`,f=Array.isArray(t)?{left:Math.floor(t[0]-15),top:Math.floor(t[1]-15),width:30,height:30}:t,p=await s.compositeElementInfoImg.call(void 0,{inputImgBase64:d,size:c,elementsPositionInfo:[{rect:f}],borderThickness:3});if(r([n,"optionalAccess",t=>t.deepThink])){let t=i.expandSearchArea.call(void 0,f,l.size);u("describe: set searchArea",t),p=await s.cropByRect.call(void 0,p,t,a.getAIConfigInBoolean.call(void 0,a.MIDSCENE_USE_QWEN_VL))}let m=[{role:"system",content:h},{role:"user",content:[{type:"image_url",image_url:{url:p,detail:"high"}}]}],g=this.aiVendorFn||i.callToGetJSONObject,{content:b}=await g(m,4);return o.assert.call(void 0,!b.error,`describe failed: ${b.error}`),o.assert.call(void 0,b.description,"failed to describe the element"),b}},c=d;t.AiAssert=i.AiAssert,t.AiLocateElement=i.AiLocateElement,t.Executor=class{constructor(t,n){this.status=r([n,"optionalAccess",t=>t.tasks])&&n.tasks.length>0?"pending":"init",this.name=t,this.tasks=(r([n,"optionalAccess",t=>t.tasks])||[]).map(t=>this.markTaskAsPending(t)),this.onTaskStart=r([n,"optionalAccess",t=>t.onTaskStart])}markTaskAsPending(t){return{status:"pending",...t}}async append(t){o.assert.call(void 0,"error"!==this.status,`executor is in error state, cannot append task
773
773
  error=${r([this,"access",t=>t.latestErrorTask,"call",t=>t(),"optionalAccess",t=>t.error])}
774
- ${r([this,"access",t=>t.latestErrorTask,"call",t=>t(),"optionalAccess",t=>t.errorStack])}`),Array.isArray(t)?this.tasks.push(...t.map(t=>this.markTaskAsPending(t))):this.tasks.push(this.markTaskAsPending(t)),"running"!==this.status&&(this.status="pending")}async flush(){"init"===this.status&&this.tasks.length>0&&import_console_browserify.default.warn("illegal state for executor, status is init but tasks are not empty"),o.assert.call(void 0,"running"!==this.status,"executor is already running"),o.assert.call(void 0,"completed"!==this.status,"executor is already completed"),o.assert.call(void 0,"error"!==this.status,"executor is in error state");let t=this.tasks.findIndex(t=>"pending"===t.status);if(t<0)return;this.status="running";let n,i=t,a=!0;for(;i<this.tasks.length;){let t=this.tasks[i];o.assert.call(void 0,"pending"===t.status,`task status should be pending, but got: ${t.status}`),t.timing={start:Date.now()};try{let a;t.status="running";try{this.onTaskStart&&await this.onTaskStart(t)}catch(t){import_console_browserify.default.error("error in onTaskStart",t)}o.assert.call(void 0,["Insight","Action","Planning"].indexOf(t.type)>=0,`unsupported task type: ${t.type}`);let{executor:s,param:l}=t;o.assert.call(void 0,s,`executor is required for task type: ${t.type}`);let u={task:t,element:r([n,"optionalAccess",t=>t.element])};"Insight"===t.type?(o.assert.call(void 0,"Locate"===t.subType||"Query"===t.subType||"Assert"===t.subType||"Boolean"===t.subType||"Number"===t.subType||"String"===t.subType,`unsupported insight subType: ${t.subType}`),a=await t.executor(l,u),"Locate"===t.subType&&(n=r([a,"optionalAccess",t=>t.output]))):("Action"===t.type||"Planning"===t.type||import_console_browserify.default.warn(`unsupported task type: ${t.type}, will try to execute it directly`),a=await t.executor(l,u)),Object.assign(t,a),t.status="finished",t.timing.end=Date.now(),t.timing.cost=t.timing.end-t.timing.start,i++}catch(n){a=!1,t.error=n,t.errorMessage=r([n,"optionalAccess",t=>t.message])||("string"==typeof n?n:"error-without-message"),t.errorStack=n.stack,t.status="failed",t.timing.end=Date.now(),t.timing.cost=t.timing.end-t.timing.start;break}}for(let t=i+1;t<this.tasks.length;t++)this.tasks[t].status="cancelled";if(this.status=a?"completed":"error",this.tasks.length){let t=Math.min(i,this.tasks.length-1),{thought:r,output:n}=this.tasks[t];return{thought:r,output:n}}}isInErrorState(){return"error"===this.status}latestErrorTask(){if("error"!==this.status)return null;let t=this.tasks.findIndex(t=>"failed"===t.status);return t>=0?this.tasks[t]:null}dump(){let t="";if(a.vlLocateMode.call(void 0)){let r=a.uiTarsModelVersion.call(void 0);t=r?`UI-TARS=${r}`:`${a.vlLocateMode.call(void 0)} mode`}return{sdkVersion:n.getVersion.call(void 0),model_name:a.getAIConfig.call(void 0,a.MIDSCENE_MODEL_NAME)||"",model_description:t,logTime:Date.now(),name:this.name,tasks:this.tasks}}},t.Insight=d,t.MIDSCENE_MODEL_NAME=a.MIDSCENE_MODEL_NAME,t.default=c,t.describeUserPage=i.describeUserPage,t.getAIConfig=a.getAIConfig,t.getVersion=n.getVersion,t.plan=i.plan}}),require_playground=__commonJS({"../web-integration/dist/lib/playground.js"(t,r){init_globals();var n,i=Object.create,a=Object.defineProperty,o=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyNames,l=Object.getPrototypeOf,u=Object.prototype.hasOwnProperty,d=(t,r,n,i)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let l of s(r))u.call(t,l)||l===n||a(t,l,{get:()=>r[l],enumerable:!(i=o(r,l))||i.enumerable});return t},c=(t,r,n)=>(n=null!=t?i(l(t)):{},d(!r&&t&&t.__esModule?n:a(n,"default",{value:t,enumerable:!0}),t)),h={};((t,r)=>{for(var n in r)a(t,n,{get:r[n],enumerable:!0})})(h,{ERROR_CODE_NOT_IMPLEMENTED_AS_DESIGNED:()=>U,StaticPage:()=>eS,StaticPageAgent:()=>ex}),n=h,r.exports=d(a({},"__esModule",{value:!0}),n);var f=require_ai_model(),p=require_utils12(),m=require_env(),g=require_extractor(),b=require_img(),y=require_logger(),_=require_utils5(),v=c(require_dayjs_min()),A=class{constructor({content:t,rect:r,id:n,attributes:i,indexId:a,xpaths:o,isVisible:s}){this.content=t,this.rect=r,this.center=[Math.floor(r.left+r.width/2),Math.floor(r.top+r.height/2)],this.id=n,this.attributes=i,this.indexId=a,this.xpaths=o,this.isVisible=s}},w=c(require_assert()),x=require_fs(),E=require_path_browserify(),S=require_util(),C=require_common6(),I=require_env(),T=require_logger(),k=require_utils5(),P=require_utils5(),R=c(require_js_yaml()),O=c(require_semver4()),M="0.25.2-beta-20250806084312.0",j=(0,T.getDebug)("cache"),N=".cache.yaml",B=class{constructor(t,r,n){let i;this.matchedCacheIndices=new Set,(0,w.default)(t,"cacheId is required");let a=t.replace(/[:*?"<>| ]/g,"-"),o=(0,I.getAIConfigInNumber)(I.MIDSCENE_CACHE_MAX_FILENAME_LENGTH)||200;if(Buffer.byteLength(a,"utf8")>o){let t=a.slice(0,32);a=`${t}-${(0,P.generateHashId)(void 0,a)}`}this.cacheId=a,this.cacheFilePath=k.ifInBrowser||k.ifInWorker?void 0:n||(0,E.join)((0,C.getMidsceneRunSubDir)("cache"),`${this.cacheId}${N}`),this.isCacheResultUsed=r,this.cacheFilePath&&(i=this.loadCacheFromFile()),i||(i={midsceneVersion:M,cacheId:this.cacheId,caches:[]}),this.cache=i,this.cacheOriginalLength=this.cache.caches.length}matchCache(t,r){for(let n=0;n<this.cacheOriginalLength;n++){let i=this.cache.caches[n],a="string"==typeof t?t:JSON.stringify(t),o=`${r}:${a}:${n}`;if(i.type===r&&(0,S.isDeepStrictEqual)(i.prompt,t)&&!this.matchedCacheIndices.has(o))return this.matchedCacheIndices.add(o),j("cache found and marked as used, type: %s, prompt: %s, index: %d",r,t,n),{cacheContent:i,updateFn:a=>{j("will call updateFn to update cache, type: %s, prompt: %s, index: %d",r,t,n),a(i),j("cache updated, will flush to file, type: %s, prompt: %s, index: %d",r,t,n),this.flushCacheToFile()}}}j("no unused cache found, type: %s, prompt: %s",r,t)}matchPlanCache(t){return this.matchCache(t,"plan")}matchLocateCache(t){return this.matchCache(t,"locate")}appendCache(t){j("will append cache",t),this.cache.caches.push(t),this.flushCacheToFile()}loadCacheFromFile(){let t=this.cacheFilePath;if((0,w.default)(t,"cache file path is required"),!(0,x.existsSync)(t))return void j("no cache file found, path: %s",t);let r=t.replace(N,".json");if((0,x.existsSync)(r)&&this.isCacheResultUsed)import_console_browserify.default.warn(`An outdated cache file from an earlier version of Midscene has been detected. Since version 0.17, we have implemented an improved caching strategy. Please delete the old file located at: ${r}.`);else try{let r=(0,x.readFileSync)(t,"utf8"),n=R.default.load(r);return O.default.lt(n.midsceneVersion,"0.16.10")&&!n.midsceneVersion.includes("beta")?void import_console_browserify.default.warn(`You are using an old version of Midscene cache file, and we cannot match any info from it. Starting from Midscene v0.17, we changed our strategy to use xpath for cache info, providing better performance.
774
+ ${r([this,"access",t=>t.latestErrorTask,"call",t=>t(),"optionalAccess",t=>t.errorStack])}`),Array.isArray(t)?this.tasks.push(...t.map(t=>this.markTaskAsPending(t))):this.tasks.push(this.markTaskAsPending(t)),"running"!==this.status&&(this.status="pending")}async flush(){"init"===this.status&&this.tasks.length>0&&import_console_browserify.default.warn("illegal state for executor, status is init but tasks are not empty"),o.assert.call(void 0,"running"!==this.status,"executor is already running"),o.assert.call(void 0,"completed"!==this.status,"executor is already completed"),o.assert.call(void 0,"error"!==this.status,"executor is in error state");let t=this.tasks.findIndex(t=>"pending"===t.status);if(t<0)return;this.status="running";let n,i=t,a=!0;for(;i<this.tasks.length;){let t=this.tasks[i];o.assert.call(void 0,"pending"===t.status,`task status should be pending, but got: ${t.status}`),t.timing={start:Date.now()};try{let a;t.status="running";try{this.onTaskStart&&await this.onTaskStart(t)}catch(t){import_console_browserify.default.error("error in onTaskStart",t)}o.assert.call(void 0,["Insight","Action","Planning"].indexOf(t.type)>=0,`unsupported task type: ${t.type}`);let{executor:s,param:l}=t;o.assert.call(void 0,s,`executor is required for task type: ${t.type}`);let u={task:t,element:r([n,"optionalAccess",t=>t.element])};"Insight"===t.type?(o.assert.call(void 0,"Locate"===t.subType||"Query"===t.subType||"Assert"===t.subType||"Boolean"===t.subType||"Number"===t.subType||"String"===t.subType,`unsupported insight subType: ${t.subType}`),a=await t.executor(l,u),"Locate"===t.subType&&(n=r([a,"optionalAccess",t=>t.output]))):("Action"===t.type||"Planning"===t.type||import_console_browserify.default.warn(`unsupported task type: ${t.type}, will try to execute it directly`),a=await t.executor(l,u)),Object.assign(t,a),t.status="finished",t.timing.end=Date.now(),t.timing.cost=t.timing.end-t.timing.start,i++}catch(n){a=!1,t.error=n,t.errorMessage=r([n,"optionalAccess",t=>t.message])||("string"==typeof n?n:"error-without-message"),t.errorStack=n.stack,t.status="failed",t.timing.end=Date.now(),t.timing.cost=t.timing.end-t.timing.start;break}}for(let t=i+1;t<this.tasks.length;t++)this.tasks[t].status="cancelled";if(this.status=a?"completed":"error",this.tasks.length){let t=Math.min(i,this.tasks.length-1),{thought:r,output:n}=this.tasks[t];return{thought:r,output:n}}}isInErrorState(){return"error"===this.status}latestErrorTask(){if("error"!==this.status)return null;let t=this.tasks.findIndex(t=>"failed"===t.status);return t>=0?this.tasks[t]:null}dump(){let t="";if(a.vlLocateMode.call(void 0)){let r=a.uiTarsModelVersion.call(void 0);t=r?`UI-TARS=${r}`:`${a.vlLocateMode.call(void 0)} mode`}return{sdkVersion:n.getVersion.call(void 0),model_name:a.getAIConfig.call(void 0,a.MIDSCENE_MODEL_NAME)||"",model_description:t,logTime:Date.now(),name:this.name,tasks:this.tasks}}},t.Insight=d,t.MIDSCENE_MODEL_NAME=a.MIDSCENE_MODEL_NAME,t.default=c,t.describeUserPage=i.describeUserPage,t.getAIConfig=a.getAIConfig,t.getVersion=n.getVersion,t.plan=i.plan}}),require_playground=__commonJS({"../web-integration/dist/lib/playground.js"(t,r){init_globals();var n,i=Object.create,a=Object.defineProperty,o=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyNames,l=Object.getPrototypeOf,u=Object.prototype.hasOwnProperty,d=(t,r,n,i)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let l of s(r))u.call(t,l)||l===n||a(t,l,{get:()=>r[l],enumerable:!(i=o(r,l))||i.enumerable});return t},c=(t,r,n)=>(n=null!=t?i(l(t)):{},d(!r&&t&&t.__esModule?n:a(n,"default",{value:t,enumerable:!0}),t)),h={};((t,r)=>{for(var n in r)a(t,n,{get:r[n],enumerable:!0})})(h,{ERROR_CODE_NOT_IMPLEMENTED_AS_DESIGNED:()=>U,StaticPage:()=>eS,StaticPageAgent:()=>ex}),n=h,r.exports=d(a({},"__esModule",{value:!0}),n);var f=require_ai_model(),p=require_utils12(),m=require_env(),g=require_extractor(),b=require_img(),y=require_logger(),_=require_utils5(),v=c(require_dayjs_min()),A=class{constructor({content:t,rect:r,id:n,attributes:i,indexId:a,xpaths:o,isVisible:s}){this.content=t,this.rect=r,this.center=[Math.floor(r.left+r.width/2),Math.floor(r.top+r.height/2)],this.id=n,this.attributes=i,this.indexId=a,this.xpaths=o,this.isVisible=s}},w=c(require_assert()),x=require_fs(),E=require_path_browserify(),S=require_util(),C=require_common6(),I=require_env(),T=require_logger(),k=require_utils5(),P=require_utils5(),R=c(require_js_yaml()),O=c(require_semver4()),M="0.25.2",j=(0,T.getDebug)("cache"),N=".cache.yaml",B=class{constructor(t,r,n){let i;this.matchedCacheIndices=new Set,(0,w.default)(t,"cacheId is required");let a=t.replace(/[:*?"<>| ]/g,"-"),o=(0,I.getAIConfigInNumber)(I.MIDSCENE_CACHE_MAX_FILENAME_LENGTH)||200;if(Buffer.byteLength(a,"utf8")>o){let t=a.slice(0,32);a=`${t}-${(0,P.generateHashId)(void 0,a)}`}this.cacheId=a,this.cacheFilePath=k.ifInBrowser||k.ifInWorker?void 0:n||(0,E.join)((0,C.getMidsceneRunSubDir)("cache"),`${this.cacheId}${N}`),this.isCacheResultUsed=r,this.cacheFilePath&&(i=this.loadCacheFromFile()),i||(i={midsceneVersion:M,cacheId:this.cacheId,caches:[]}),this.cache=i,this.cacheOriginalLength=this.cache.caches.length}matchCache(t,r){for(let n=0;n<this.cacheOriginalLength;n++){let i=this.cache.caches[n],a="string"==typeof t?t:JSON.stringify(t),o=`${r}:${a}:${n}`;if(i.type===r&&(0,S.isDeepStrictEqual)(i.prompt,t)&&!this.matchedCacheIndices.has(o))return this.matchedCacheIndices.add(o),j("cache found and marked as used, type: %s, prompt: %s, index: %d",r,t,n),{cacheContent:i,updateFn:a=>{j("will call updateFn to update cache, type: %s, prompt: %s, index: %d",r,t,n),a(i),j("cache updated, will flush to file, type: %s, prompt: %s, index: %d",r,t,n),this.flushCacheToFile()}}}j("no unused cache found, type: %s, prompt: %s",r,t)}matchPlanCache(t){return this.matchCache(t,"plan")}matchLocateCache(t){return this.matchCache(t,"locate")}appendCache(t){j("will append cache",t),this.cache.caches.push(t),this.flushCacheToFile()}loadCacheFromFile(){let t=this.cacheFilePath;if((0,w.default)(t,"cache file path is required"),!(0,x.existsSync)(t))return void j("no cache file found, path: %s",t);let r=t.replace(N,".json");if((0,x.existsSync)(r)&&this.isCacheResultUsed)import_console_browserify.default.warn(`An outdated cache file from an earlier version of Midscene has been detected. Since version 0.17, we have implemented an improved caching strategy. Please delete the old file located at: ${r}.`);else try{let r=(0,x.readFileSync)(t,"utf8"),n=R.default.load(r);return O.default.lt(n.midsceneVersion,"0.16.10")&&!n.midsceneVersion.includes("beta")?void import_console_browserify.default.warn(`You are using an old version of Midscene cache file, and we cannot match any info from it. Starting from Midscene v0.17, we changed our strategy to use xpath for cache info, providing better performance.
775
775
  Please delete the existing cache and rebuild it. Sorry for the inconvenience.
776
776
  cache file: ${t}`):(j("cache loaded from file, path: %s, cache version: %s, record length: %s",t,n.midsceneVersion,n.caches.length),n.midsceneVersion=M,n)}catch(r){return void j("cache file exists but load failed, path: %s, error: %s",t,r)}}flushCacheToFile(){if(this.cacheFilePath)try{let t=(0,E.dirname)(this.cacheFilePath);(0,x.existsSync)(t)||((0,x.mkdirSync)(t,{recursive:!0}),j("created cache directory: %s",t));let r=[...this.cache.caches].sort((t,r)=>"plan"===t.type&&"locate"===r.type?-1:+("locate"===t.type&&"plan"===r.type)),n={...this.cache,caches:r},i=R.default.dump(n);(0,x.writeFileSync)(this.cacheFilePath,i),j("cache flushed to file: %s",this.cacheFilePath)}catch(t){j("write cache to file failed, path: %s, error: %s",this.cacheFilePath,t)}else j("no cache file path, will not write cache to file")}updateOrAppendCacheRecord(t,r){r?"plan"===t.type?r.updateFn(r=>{r.yamlWorkflow=t.yamlWorkflow}):r.updateFn(r=>{r.xpaths=t.xpaths}):this.appendCache(t)}},L=(0,y.getDebug)("tool:profile");async function D(t,r){let n,i;if((0,_.assert)(t,"page is required"),t._forceUsePageContext)return await t._forceUsePageContext();L("Getting page URL");let a=await t.url();L("URL end"),L("Uploading test info to server"),(0,p.uploadTestInfoToServer)({testUrl:a}),L("UploadTestInfoToServer end"),L("Starting parallel operations: screenshot and element tree"),await Promise.all([t.screenshotBase64().then(t=>{n=t,L("ScreenshotBase64 end")}),t.getElementsNodeTree().then(async t=>{i=t,L("GetElementsNodeTree end")})]),L("ParseContextFromWebPage end"),L("Traversing element tree");let o=(0,g.traverseTree)(i,t=>{let{rect:r,id:n,content:i,attributes:a,indexId:o,isVisible:s}=t;return new A({rect:r,id:n,content:i,attributes:a,indexId:o,isVisible:s})});L("TraverseTree end"),(0,_.assert)(n,"screenshotBase64 is required");let s=await t.size();return L(`size: ${s.width}x${s.height} dpr: ${s.dpr}`),s.dpr&&s.dpr>1&&(L("Resizing screenshot for high DPR display"),n=await (0,b.resizeImgBase64)(n,{width:s.width,height:s.height}),L("ResizeImgBase64 end")),{tree:o,size:s,screenshotBase64:n,url:a}}var U="NOT_IMPLEMENTED_AS_DESIGNED",F=t=>"string"==typeof t?{textPrompt:t,multimodalPrompt:void 0}:{textPrompt:t.prompt,multimodalPrompt:t.images?{images:t.images,convertHttpImage2Base64:!!t.convertHttpImage2Base64}:void 0},z=require_lib7(),G=c(require_js_yaml()),H=require_fs(),q=require_path_browserify(),V=require_utils5(),W=require_common6(),$=class{constructor(t,r,n,i){if(this.script=t,this.setupAgent=r,this.onTaskStatusChange=n,this.taskStatusList=[],this.status="init",this.unnamedResultIndex=0,this.pageAgent=null,this.scriptPath=i,this.result={},this.target=t.target||t.web||t.android,V.ifInBrowser||V.ifInWorker)this.output=void 0;else if(this.target?.output)this.output=(0,q.resolve)(import_browser.default.cwd(),this.target.output);else{let t=this.scriptPath?(0,q.basename)(this.scriptPath,".yaml").replace(/\.(ya?ml)$/i,""):"script";this.output=(0,q.join)((0,W.getMidsceneRunSubDir)("output"),`${t}-${Date.now()}.json`)}V.ifInBrowser||V.ifInWorker?this.unstableLogContent=void 0:"string"==typeof this.target?.unstableLogContent?this.unstableLogContent=(0,q.resolve)(import_browser.default.cwd(),this.target.unstableLogContent):!0===this.target?.unstableLogContent&&(this.unstableLogContent=(0,q.join)((0,W.getMidsceneRunSubDir)("output"),"unstableLogContent.json")),this.taskStatusList=(t.tasks||[]).map((t,r)=>({...t,index:r,status:"init",totalSteps:t.flow?.length||0}))}setResult(t,r){let n=t||this.unnamedResultIndex++;return this.result[n]&&import_console_browserify.default.warn(`result key ${n} already exists, will overwrite`),this.result[n]=r,this.flushResult()}setPlayerStatus(t,r){this.status=t,this.errorInSetup=r}notifyCurrentTaskStatusChange(t){let r="number"==typeof t?t:this.currentTaskIndex;if("number"!=typeof r)return;let n=this.taskStatusList[r];this.onTaskStatusChange&&this.onTaskStatusChange(n)}async setTaskStatus(t,r,n){this.taskStatusList[t].status=r,n&&(this.taskStatusList[t].error=n),this.notifyCurrentTaskStatusChange(t)}setTaskIndex(t){this.currentTaskIndex=t}flushResult(){if(this.output){let t=(0,q.resolve)(import_browser.default.cwd(),this.output),r=(0,q.dirname)(t);(0,H.existsSync)(r)||(0,H.mkdirSync)(r,{recursive:!0}),(0,H.writeFileSync)(t,JSON.stringify(this.result||{},void 0,2))}}flushUnstableLogContent(){if(this.unstableLogContent){let t=this.pageAgent?._unstableLogContent(),r=(0,q.resolve)(import_browser.default.cwd(),this.unstableLogContent),n=(0,q.dirname)(r);(0,H.existsSync)(n)||(0,H.mkdirSync)(n,{recursive:!0}),(0,H.writeFileSync)(r,JSON.stringify(t,null,2))}}async playTask(t,r){let{flow:n}=t;for(let i in(0,V.assert)(n,"missing flow in task"),n){t.currentStep=Number.parseInt(i,10);let a=n[i];if("aiAction"in a||"ai"in a){let t=a,n=t.aiAction||t.ai;(0,V.assert)(n,"missing prompt for ai (aiAction)"),(0,V.assert)("string"==typeof n,"prompt for aiAction must be a string"),await r.aiAction(n,{cacheable:t.cacheable})}else if("aiAssert"in a){let t=a,n=t.aiAssert,i=t.errorMessage;(0,V.assert)(n,"missing prompt for aiAssert"),(0,V.assert)("string"==typeof n,"prompt for aiAssert must be a string"),await r.aiAssert(n,i)}else if("aiQuery"in a){let t=a,n=t.aiQuery,i={domIncluded:t.domIncluded,screenshotIncluded:t.screenshotIncluded};(0,V.assert)(n,"missing prompt for aiQuery"),(0,V.assert)("string"==typeof n,"prompt for aiQuery must be a string");let o=await r.aiQuery(n,i);this.setResult(t.name,o)}else if("aiNumber"in a){let t=a,n=t.aiNumber,i={domIncluded:t.domIncluded,screenshotIncluded:t.screenshotIncluded};(0,V.assert)(n,"missing prompt for aiNumber"),(0,V.assert)("string"==typeof n,"prompt for number must be a string");let o=await r.aiNumber(n,i);this.setResult(t.name,o)}else if("aiString"in a){let t=a,n=t.aiString,i={domIncluded:t.domIncluded,screenshotIncluded:t.screenshotIncluded};(0,V.assert)(n,"missing prompt for aiString"),(0,V.assert)("string"==typeof n,"prompt for string must be a string");let o=await r.aiString(n,i);this.setResult(t.name,o)}else if("aiBoolean"in a){let t=a,n=t.aiBoolean,i={domIncluded:t.domIncluded,screenshotIncluded:t.screenshotIncluded};(0,V.assert)(n,"missing prompt for aiBoolean"),(0,V.assert)("string"==typeof n,"prompt for boolean must be a string");let o=await r.aiBoolean(n,i);this.setResult(t.name,o)}else if("aiAsk"in a){let t=a,n=t.aiAsk;(0,V.assert)(n,"missing prompt for aiAsk"),(0,V.assert)("string"==typeof n,"prompt for aiAsk must be a string");let i=await r.aiAsk(n);this.setResult(t.name,i)}else if("aiLocate"in a){let t=a,n=t.aiLocate;(0,V.assert)(n,"missing prompt for aiLocate"),(0,V.assert)("string"==typeof n,"prompt for aiLocate must be a string");let i=await r.aiLocate(n,t);this.setResult(t.name,i)}else if("aiWaitFor"in a){let t=a,n=t.aiWaitFor;(0,V.assert)(n,"missing prompt for aiWaitFor"),(0,V.assert)("string"==typeof n,"prompt for aiWaitFor must be a string");let i=t.timeout;await r.aiWaitFor(n,{timeoutMs:i})}else if("sleep"in a){let t=a.sleep,r=t;"string"==typeof t&&(r=Number.parseInt(t,10)),(0,V.assert)(r&&r>0,`ms for sleep must be greater than 0, but got ${t}`),await new Promise(t=>setTimeout(t,r))}else if("aiTap"in a){let t=a;await r.aiTap(t.aiTap,t)}else if("aiRightClick"in a){let t=a;await r.aiRightClick(t.aiRightClick,t)}else if("aiHover"in a){let t=a;await r.aiHover(t.aiHover,t)}else if("aiInput"in a){let t=a;await r.aiInput(t.aiInput,t.locate,t)}else if("aiKeyboardPress"in a){let t=a;await r.aiKeyboardPress(t.aiKeyboardPress,t.locate,t)}else if("aiScroll"in a){let t=a;await r.aiScroll(t,t.locate,t)}else if("javascript"in a){let t=a,n=await r.evaluateJavaScript(t.javascript);this.setResult(t.name,n)}else{if(!("logScreenshot"in a))throw Error(`unknown flowItem: ${JSON.stringify(a)}`);{let t=a;await r.logScreenshot(t.logScreenshot,{content:t.content||""})}}}this.reportFile=r.reportFile,await this.flushUnstableLogContent()}async run(){let{target:t,web:r,android:n,tasks:i}=this.script,a=r||t||n;this.setPlayerStatus("running");let o=null,s=[];try{let{agent:t,freeFn:r}=await this.setupAgent(a),n=(o=t).onTaskStartTip;o.onTaskStartTip=t=>{"running"===this.status&&(this.agentStatusTip=t),n?.(t)},s=[...r||[],{name:"restore-agent-onTaskStartTip",fn:()=>{o&&(o.onTaskStartTip=n)}}]}catch(t){return void this.setPlayerStatus("error",t)}this.pageAgent=o;let l=0;this.setPlayerStatus("running");let u=!1;for(;l<i.length;){let t=this.taskStatusList[l];this.setTaskStatus(l,"running"),this.setTaskIndex(l);try{await this.playTask(t,this.pageAgent),this.setTaskStatus(l,"done")}catch(r){if(this.setTaskStatus(l,"error",r),!t.continueOnError){this.reportFile=o.reportFile,u=!0;break}}this.reportFile=o?.reportFile,l++}for(let t of(u?this.setPlayerStatus("error"):this.setPlayerStatus("done"),this.agentStatusTip="",s))try{await t.fn()}catch(t){}}},K=(c(require_js_yaml()),require_utils5()),Z=c(require_js_yaml());function X(t,r,n){let i=t;if(-1!==t.indexOf("android")&&t.match(/deviceId:\s*(\d+)/)){let r;i=t.replace(/deviceId:\s*(\d+)/g,(t,n)=>(r=n,`deviceId: '${n}'`)),import_console_browserify.default.warn(`please use string-style deviceId in yaml script, for example: deviceId: "${r}"`)}let a=function(t){return t.replace(/\$\{([^}]+)\}/g,(t,r)=>{let n=import_browser.default.env[r.trim()];if(void 0===n)throw Error(`Environment variable "${r.trim()}" is not defined`);return n})}(i),o=Z.default.load(a,{schema:Z.default.JSON_SCHEMA}),s=r?`, failed to load ${r}`:"",l=void 0!==o.android?Object.assign({},o.android||{}):void 0,u=o.web||o.target,d=void 0!==u?Object.assign({},u||{}):void 0;return n||((0,K.assert)(d||l,`at least one of "target", "web", or "android" properties is required in yaml script${s}`),(0,K.assert)(d&&!l||!d&&l,`only one of "target", "web", or "android" properties is allowed in yaml script${s}`),(d||l)&&(0,K.assert)("object"==typeof d||"object"==typeof l,`property "target/web/android" must be an object${s}`)),(0,K.assert)(o.tasks,`property "tasks" is required in yaml script ${s}`),(0,K.assert)(Array.isArray(o.tasks),`property "tasks" must be an array in yaml script, but got ${o.tasks}`),o}var Y=require_utils12(),J=require_constants(),Q=require_env(),ee=require_logger(),et=require_utils5(),er=require_lib7(),en=require_ai_model(),ei=require_utils12(),ea=require_constants(),eo=require_env(),es=require_logger(),el=require_utils5();function eu(t){return t.subType&&"Plan"!==t.subType?`${t.type} / ${t.subType||""}`:t.type}function ed(t){return t?"string"==typeof t?t:"string"==typeof t.prompt?t.prompt:t.prompt.prompt:""}function ec(t){return t?`${t.direction||"down"}, ${t.scrollType||"once"}, ${t.distance||"distance-not-set"}`:""}function eh(t,r){return r?`${t} - ${r}`:t}var ef=(0,es.getDebug)("page-task-executor"),ep=t=>"android"===t.pageType,em=class{constructor(t,r,n){this.conversationHistory=[],this.page=t,this.insight=r,this.taskCache=n.taskCache,this.onTaskStartCallback=n?.onTaskStart}async recordScreenshot(t){let r=await this.page.screenshotBase64();return{type:"screenshot",ts:Date.now(),screenshot:r,timing:t}}async getElementXpath(t,r){let n=r?.id;if(void 0!==r?.isOrderSensitive)return await this.page.getXpathsByPoint({left:r.center[0],top:r.center[1]},r?.isOrderSensitive);if(r?.attributes?.nodeType===ea.NodeType.POSITION){await this.insight.contextRetrieverFn("locate");let i=(0,en.elementByPositionWithElementInfo)(t.tree,{x:r.center[0],y:r.center[1]},{requireStrictDistance:!1,filterPositionElements:!0});i?.id?n=i.id:ef("no element id found for position node, will not update cache",r)}if(n)try{return await this.page.getXpathsById(n)}catch(t){ef("getXpathsById error: ",t)}}prependExecutorWithScreenshot(t,r=!1){return{...t,executor:async(n,i,...a)=>{let o=[],{task:s}=i;s.recorder=o;let l=await this.recordScreenshot(`before ${s.type}`);o.push(l);let u=await t.executor(n,i,...a);if("Action"===t.type&&await Promise.all([(async()=>{if(await (0,ei.sleep)(100),this.page.waitUntilNetworkIdle)try{await this.page.waitUntilNetworkIdle()}catch(t){}})(),(0,ei.sleep)(200)]),r){let t=await this.recordScreenshot("after Action");o.push(t)}return u}}}async convertPlanToExecutable(t,r){let n=[];return t.forEach(t=>{if("Locate"===t.type){if(null===t.locate||null===t.locate?.id||"null"===t.locate?.id)return;let i={type:"Insight",subType:"Locate",param:t.locate?{...t.locate,cacheable:r?.cacheable}:void 0,thought:t.thought,locate:t.locate,executor:async(t,r)=>{let n,i,a,o,{task:s}=r;(0,el.assert)(t?.prompt||t?.id||t?.bbox,"No prompt or id or position or bbox to locate"),this.insight.onceDumpUpdatedFn=t=>{n=t,i=t?.taskInfo?.usage,s.log={dump:n},s.usage=i};let l=Date.now(),u=await this.insight.contextRetrieverFn("locate");s.pageContext=u,s.recorder=[{type:"screenshot",ts:l,screenshot:u.screenshotBase64,timing:"before Insight"}];let d=t.xpath?await this.page.getElementInfoByXpath(t.xpath):void 0,c=!!d,h=t.prompt,p=this.taskCache?.matchLocateCache(h),m=p?.cacheContent?.xpaths,b=c?null:await async function(t,r,n,i){try{if(r?.length&&t.taskCache?.isCacheResultUsed&&!1!==i)for(let i=0;i<r.length;i++){let a=await t.page.getElementInfoByXpath(r[i]);if(a?.id)return j("cache hit, prompt: %s",n),j("found a new element with same xpath, xpath: %s, id: %s",r[i],a?.id),a}}catch(t){j("get element info by xpath error: ",t)}}(this,m,h,t.cacheable),y=!!b,_=c||y?void 0:function(t,r){if(t){if(t.id)return(0,g.getNodeFromCacheList)(t.id);if(t.bbox){let n={x:Math.floor((t.bbox[0]+t.bbox[2])/2),y:Math.floor((t.bbox[1]+t.bbox[3])/2)},i=(0,f.elementByPositionWithElementInfo)(r,n);return i||(i=(0,g.generateElementByPosition)(n)),i}}}(t,u.tree),v=!!_,A=c||y||v?void 0:(await this.insight.locate(t,{context:u})).element,w=!!A,x=d||b||_||A;if(x&&this.taskCache&&!y&&!1!==t?.cacheable){let t=await this.getElementXpath(u,x);t?.length?(a=t,this.taskCache.updateOrAppendCacheRecord({type:"locate",prompt:h,xpaths:t},p)):ef("no xpaths found, will not update cache",h,t)}if(!x)throw Error(`Element not found: ${t.prompt}`);return c?o={from:"User expected path",context:{xpath:t.xpath}}:y?o={from:"Cache",context:{xpathsFromCache:m,xpathsToSave:a}}:v?o={from:"Planning",context:{id:_?.id,bbox:_?.bbox}}:w&&(o={from:"AI model",context:{prompt:t.prompt}}),{output:{element:x},pageContext:u,hitBy:o}}};n.push(i)}else if("Assert"===t.type||"AssertWithoutThrow"===t.type){let r=t,i={type:"Insight",subType:"Assert",param:r.param,thought:r.thought,locate:r.locate,executor:async(n,i)=>{let a,{task:o}=i;this.insight.onceDumpUpdatedFn=t=>{a=t};let s=Date.now(),l=await this.insight.contextRetrieverFn("assert");o.pageContext=l,o.recorder=[{type:"screenshot",ts:s,screenshot:l.screenshotBase64,timing:"before Insight"}];let u=await this.insight.assert(r.param.assertion);if(!u.pass){if("Assert"===t.type)throw o.output=u,o.log={dump:a},Error(u.thought||"Assertion failed without reason");o.error=Error(u.thought)}return{output:u,pageContext:l,log:{dump:a},usage:u.usage}}};n.push(i)}else if("Input"===t.type){let r={type:"Action",subType:"Input",param:t.param,thought:t.thought,locate:t.locate,executor:async(t,{element:r})=>{(!r||(await this.page.clearInput(r),t&&t.value))&&await this.page.keyboard.type(t.value,{autoDismissKeyboard:t.autoDismissKeyboard})}};n.push(r)}else if("KeyboardPress"===t.type){let r={type:"Action",subType:"KeyboardPress",param:t.param,thought:t.thought,locate:t.locate,executor:async t=>{let r=function(t){let r=Array.isArray(t)?t:[t];return r.reduce((t,n)=>{let i=r.includes("Meta")||r.includes("Control");return i&&("a"===n||"A"===n)?t.concat([{key:n,command:"SelectAll"}]):i&&("c"===n||"C"===n)?t.concat([{key:n,command:"Copy"}]):i&&("v"===n||"V"===n)?t.concat([{key:n,command:"Paste"}]):t.concat([{key:n}])},[])}(t.value);await this.page.keyboard.press(r)}};n.push(r)}else if("Tap"===t.type){let r={type:"Action",subType:"Tap",thought:t.thought,locate:t.locate,executor:async(t,{element:r})=>{(0,el.assert)(r,"Element not found, cannot tap"),await this.page.mouse.click(r.center[0],r.center[1])}};n.push(r)}else if("RightClick"===t.type){let r={type:"Action",subType:"RightClick",thought:t.thought,locate:t.locate,executor:async(t,{element:r})=>{(0,el.assert)(r,"Element not found, cannot right click"),await this.page.mouse.click(r.center[0],r.center[1],{button:"right"})}};n.push(r)}else if("Drag"===t.type){let r={type:"Action",subType:"Drag",param:t.param,thought:t.thought,locate:t.locate,executor:async t=>{(0,el.assert)(t?.start_box&&t?.end_box,"No start_box or end_box to drag"),await this.page.mouse.drag(t.start_box,t.end_box)}};n.push(r)}else if("Hover"===t.type){let r={type:"Action",subType:"Hover",thought:t.thought,locate:t.locate,executor:async(t,{element:r})=>{(0,el.assert)(r,"Element not found, cannot hover"),await this.page.mouse.move(r.center[0],r.center[1])}};n.push(r)}else if("Scroll"===t.type){let r={type:"Action",subType:"Scroll",param:t.param,thought:t.thought,locate:t.locate,executor:async(t,{element:r})=>{let n=r?{left:r.center[0],top:r.center[1]}:void 0,i=t?.scrollType;if("untilTop"===i)await this.page.scrollUntilTop(n);else if("untilBottom"===i)await this.page.scrollUntilBottom(n);else if("untilRight"===i)await this.page.scrollUntilRight(n);else if("untilLeft"===i)await this.page.scrollUntilLeft(n);else{if("once"!==i&&i)throw Error(`Unknown scroll event type: ${i}, taskParam: ${JSON.stringify(t)}`);if("down"!==t?.direction&&t&&t.direction)if("up"===t.direction)await this.page.scrollUp(t.distance||void 0,n);else if("left"===t.direction)await this.page.scrollLeft(t.distance||void 0,n);else{if("right"!==t.direction)throw Error(`Unknown scroll direction: ${t.direction}`);await this.page.scrollRight(t.distance||void 0,n)}else await this.page.scrollDown(t?.distance||void 0,n);await (0,ei.sleep)(500)}}};n.push(r)}else if("Sleep"===t.type){let r={type:"Action",subType:"Sleep",param:t.param,thought:t.thought,locate:t.locate,executor:async t=>{await (0,ei.sleep)(t?.timeMs||3e3)}};n.push(r)}else if("Error"===t.type){let r={type:"Action",subType:"Error",param:t.param,thought:t.thought||t.param?.thought,locate:t.locate,executor:async()=>{throw Error(t?.thought||t.param?.thought||"error without thought")}};n.push(r)}else if("ExpectedFalsyCondition"===t.type){let r={type:"Action",subType:"ExpectedFalsyCondition",param:null,thought:t.param?.reason,locate:t.locate,executor:async()=>{}};n.push(r)}else if("Finished"===t.type){let r={type:"Action",subType:"Finished",param:null,thought:t.thought,locate:t.locate,executor:async t=>{}};n.push(r)}else if("AndroidHomeButton"===t.type){let r={type:"Action",subType:"AndroidHomeButton",param:null,thought:t.thought,locate:t.locate,executor:async t=>{(0,el.assert)(ep(this.page),"Cannot use home button on non-Android devices"),await this.page.home()}};n.push(r)}else if("AndroidBackButton"===t.type){let r={type:"Action",subType:"AndroidBackButton",param:null,thought:t.thought,locate:t.locate,executor:async t=>{(0,el.assert)(ep(this.page),"Cannot use back button on non-Android devices"),await this.page.back()}};n.push(r)}else if("AndroidRecentAppsButton"===t.type){let r={type:"Action",subType:"AndroidRecentAppsButton",param:null,thought:t.thought,locate:t.locate,executor:async t=>{(0,el.assert)(ep(this.page),"Cannot use recent apps button on non-Android devices"),await this.page.recentApps()}};n.push(r)}else if("AndroidLongPress"===t.type){let r={type:"Action",subType:"AndroidLongPress",param:t.param,thought:t.thought,locate:t.locate,executor:async t=>{(0,el.assert)(ep(this.page),"Cannot use long press on non-Android devices");let{x:r,y:n,duration:i}=t;await this.page.longPress(r,n,i)}};n.push(r)}else{if("AndroidPull"!==t.type)throw Error(`Unknown or unsupported task type: ${t.type}`);{let r={type:"Action",subType:"AndroidPull",param:t.param,thought:t.thought,locate:t.locate,executor:async t=>{(0,el.assert)(ep(this.page),"Cannot use pull action on non-Android devices");let{direction:r,startPoint:n,distance:i,duration:a}=t,o=n?{left:n.x,top:n.y}:void 0;if("down"===r)await this.page.pullDown(o,i,a);else{if("up"!==r)throw Error(`Unknown pull direction: ${r}`);await this.page.pullUp(o,i,a)}}};n.push(r)}}}),{tasks:n.map((t,r)=>"Action"===t.type?this.prependExecutorWithScreenshot(t,r===n.length-1):t)}}async setupPlanningContext(t){let r=Date.now(),n=await this.insight.contextRetrieverFn("locate"),i={type:"screenshot",ts:r,screenshot:n.screenshotBase64,timing:"before Planning"};return t.task.recorder=[i],t.task.pageContext=n,{pageContext:n}}async loadYamlFlowAsPlanning(t,r){let n=new er.Executor(eh("Action",t),{onTaskStart:this.onTaskStartCallback}),i={type:"Planning",subType:"LoadYaml",locate:null,param:{userInstruction:t},executor:async(t,n)=>(await this.setupPlanningContext(n),{output:{actions:[],more_actions_needed_by_instruction:!1,log:"",yamlString:r},cache:{hit:!0}})};return await n.append(i),await n.flush(),{executor:n}}planningTaskFromPrompt(t,r,n){return{type:"Planning",subType:"Plan",locate:null,param:{userInstruction:t,log:r},executor:async(t,r)=>{let i=Date.now(),{pageContext:a}=await this.setupPlanningContext(r),o=await (0,er.plan)(t.userInstruction,{context:a,log:t.log,actionContext:n,pageType:this.page.pageType}),{actions:s,log:l,more_actions_needed_by_instruction:u,error:d,usage:c,rawResponse:h,sleep:f}=o;r.task.log={...r.task.log||{},rawResponse:h},r.task.usage=c;let p=!1,m=!1,g="",b=(s||[]).reduce((t,r)=>{if(p)return t;if(r.locate)m&&r.locate.bbox&&delete r.locate.bbox,r.locate.bbox&&(m=!0),t.push({type:"Locate",locate:r.locate,param:null,thought:r.locate.prompt});else if(["Tap","Hover","Input"].includes(r.type))return g=`invalid planning response: ${JSON.stringify(r)}`,p=!0,t;return t.push(r),t},[]);if(f){let t=f-(Date.now()-i);t>0&&b.push({type:"Sleep",param:{timeMs:t},locate:null})}return 0===b.length&&(0,el.assert)(!u||f,d?`Failed to plan: ${d}`:g||"No plan found"),{output:{actions:b,more_actions_needed_by_instruction:u,log:l,yamlFlow:o.yamlFlow},cache:{hit:!1},pageContext:a}}}}planningTaskToGoal(t){return{type:"Planning",subType:"Plan",locate:null,param:{userInstruction:t},executor:async(t,r)=>{let{pageContext:n}=await this.setupPlanningContext(r),i=await (0,en.resizeImageForUiTars)(n.screenshotBase64,n.size);this.appendConversationHistory({role:"user",content:[{type:"image_url",image_url:{url:i}}]});let a=await (0,en.vlmPlanning)({userInstruction:t.userInstruction,conversationHistory:this.conversationHistory,size:n.size}),{actions:o,action_summary:s,usage:l}=a;return r.task.log={...r.task.log||{},rawResponse:a.rawResponse},r.task.usage=l,this.appendConversationHistory({role:"assistant",content:s}),{output:{actions:o,thought:o[0]?.thought,actionType:o[0].type,more_actions_needed_by_instruction:!0,log:"",yamlFlow:a.yamlFlow},cache:{hit:!1}}}}}async runPlans(t,r,n){let i=new er.Executor(t,{onTaskStart:this.onTaskStartCallback}),{tasks:a}=await this.convertPlanToExecutable(r,n);await i.append(a);let{output:o}=await i.flush();return{output:o,executor:i}}async action(t,r,n){let i=new er.Executor(eh("Action",t),{onTaskStart:this.onTaskStartCallback}),a=this.planningTaskFromPrompt(t,void 0,r),o=0,s=[],l=[],u=(0,eo.getAIConfigInNumber)(eo.MIDSCENE_REPLANNING_CYCLE_LIMIT)||10;for(;a;){let d;if(o>u){let t="Replanning too many times, please split the task into multiple steps";return this.appendErrorPlan(i,t)}await i.append(a);let c=await i.flush(),h=c?.output;if(i.isInErrorState())return{output:h,executor:i};let f=h.actions||[];l.push(...h.yamlFlow||[]);try{d=await this.convertPlanToExecutable(f,n),i.append(d.tasks)}catch(t){return this.appendErrorPlan(i,`Error converting plans to executable tasks: ${t}, plans: ${JSON.stringify(f)}`)}if(await i.flush(),i.isInErrorState())return{output:void 0,executor:i};if(h?.log&&s.push(h.log),!h.more_actions_needed_by_instruction){a=null;break}a=this.planningTaskFromPrompt(t,s.length>0?`- ${s.join("\n- ")}`:void 0,r),o++}return{output:{yamlFlow:l},executor:i}}async actionToGoal(t,r){let n=new er.Executor(eh("Action",t),{onTaskStart:this.onTaskStartCallback});this.conversationHistory=[];let i=0,a=[];for(;i<40;){let o;i++;let s=this.planningTaskToGoal(t);await n.append(s);let l=await n.flush();if(n.isInErrorState())return{output:void 0,executor:n};if(!l)throw Error("result of taskExecutor.flush() is undefined in function actionToGoal");let{output:u}=l,d=u.actions;a.push(...u.yamlFlow||[]);try{o=await this.convertPlanToExecutable(d,r),n.append(o.tasks)}catch(t){return this.appendErrorPlan(n,`Error converting plans to executable tasks: ${t}, plans: ${JSON.stringify(d)}`)}if(await n.flush(),n.isInErrorState())return{output:void 0,executor:n};if("Finished"===d[0].type)break}return{output:{yamlFlow:a},executor:n}}async createTypeQueryTask(t,r,n,i){let a=new er.Executor(eh(t,"string"==typeof r?r:JSON.stringify(r)),{onTaskStart:this.onTaskStartCallback}),o={type:"Insight",subType:t,locate:null,param:{dataDemand:i?{demand:r,multimodalPrompt:i}:r},executor:async a=>{let o;this.insight.onceDumpUpdatedFn=t=>{o=t};let s="Query"!==t,l=r;s&&(l={result:`${t}, ${r}`});let{data:u,usage:d,thought:c}=await this.insight.extract(l,n,i),h=u;return s&&((0,el.assert)(void 0!==u?.result,"No result in query data"),h=u.result),{output:h,log:{dump:o},usage:d,thought:c}}};await a.append(this.prependExecutorWithScreenshot(o));let s=await a.flush();if(!s)throw Error("result of taskExecutor.flush() is undefined in function createTypeQueryTask");let{output:l,thought:u}=s;return{output:l,thought:u,executor:a}}async query(t,r){return this.createTypeQueryTask("Query",t,r)}async boolean(t,r){let{textPrompt:n,multimodalPrompt:i}=F(t);return this.createTypeQueryTask("Boolean",n,r,i)}async number(t,r){let{textPrompt:n,multimodalPrompt:i}=F(t);return this.createTypeQueryTask("Number",n,r,i)}async string(t,r){let{textPrompt:n,multimodalPrompt:i}=F(t);return this.createTypeQueryTask("String",n,r,i)}async assert(t,r){let{textPrompt:n,multimodalPrompt:i}=F(t);return await this.createTypeQueryTask("Assert",n,r,i)}appendConversationHistory(t){if("user"===t.role&&this.conversationHistory.filter(t=>"user"===t.role).length>=4&&"user"===t.role){let t=this.conversationHistory.findIndex(t=>"user"===t.role);t>=0&&this.conversationHistory.splice(t,1)}this.conversationHistory.push(t)}async appendErrorPlan(t,r){let n={type:"Error",param:{thought:r},locate:null},{tasks:i}=await this.convertPlanToExecutable([n]);return await t.append(this.prependExecutorWithScreenshot(i[0])),await t.flush(),{output:void 0,executor:t}}async waitFor(t,r){let n=`waitFor: ${t}`,i=new er.Executor(eh("WaitFor",n),{onTaskStart:this.onTaskStartCallback}),{timeoutMs:a,checkIntervalMs:o}=r;(0,el.assert)(t,"No assertion for waitFor"),(0,el.assert)(a,"No timeoutMs for waitFor"),(0,el.assert)(o,"No checkIntervalMs for waitFor");let s=Date.now(),l=Date.now(),u="";for(;Date.now()-s<a;){l=Date.now();let r={type:"AssertWithoutThrow",param:{assertion:t},locate:null},{tasks:n}=await this.convertPlanToExecutable([r]);await i.append(this.prependExecutorWithScreenshot(n[0]));let a=await i.flush();if(!a)throw Error("result of taskExecutor.flush() is undefined in function waitFor");let{output:s}=a;if(s?.pass)return{output:void 0,executor:i};u=s?.thought||`unknown error when waiting for assertion: ${t}`;let d=Date.now();if(d-l<o){let t={type:"Sleep",param:{timeMs:o-(d-l)},locate:null},{tasks:r}=await this.convertPlanToExecutable([t]);await i.append(this.prependExecutorWithScreenshot(r[0])),await i.flush()}}return this.appendErrorPlan(i,`waitFor timeout: ${u}`)}},eg=require_logger(),eb=require_utils5(),ey=(0,eg.getDebug)("plan-builder");function e_(t,r,n){let i=[],a=r?{type:"Locate",locate:r,param:r,thought:""}:null;if(("Tap"===t||"Hover"===t||"RightClick"===t)&&((0,eb.assert)(r,`missing locate info for action "${t}"`),(0,eb.assert)(a,`missing locate info for action "${t}"`),i=[a,{type:t,param:null,thought:"",locate:r}]),"Input"===t||"KeyboardPress"===t){"Input"===t&&(0,eb.assert)(r,`missing locate info for action "${t}"`),(0,eb.assert)(n,`missing param for action "${t}"`);let o={type:t,param:n,thought:"",locate:r};i=a?[a,o]:[o]}if("Scroll"===t){(0,eb.assert)(n,`missing param for action "${t}"`);let o={type:t,param:n,thought:"",locate:r};i=a?[a,o]:[o]}if("Sleep"===t&&((0,eb.assert)(n,`missing param for action "${t}"`),i=[{type:t,param:n,thought:"",locate:null}]),"Locate"===t&&((0,eb.assert)(r,`missing locate info for action "${t}"`),i=[{type:t,param:r,locate:r,thought:""}]),i)return ey("buildPlans",i),i;throw Error(`Not supported type: ${t}`)}var ev=(0,ee.getDebug)("web-integration"),eA={domIncluded:!1,screenshotIncluded:!0},ew=class{constructor(t,r){this.dryMode=!1,this.destroyed=!1,this.page=t,this.opts=Object.assign({generateReport:!0,autoPrintReportMsg:!0,groupName:"Midscene Report",groupDescription:""},r||{}),"puppeteer"!==this.page.pageType&&"playwright"!==this.page.pageType||(this.page.waitForNavigationTimeout=this.opts.waitForNavigationTimeout??J.DEFAULT_WAIT_FOR_NAVIGATION_TIMEOUT,this.page.waitForNetworkIdleTimeout=this.opts.waitForNetworkIdleTimeout??J.DEFAULT_WAIT_FOR_NETWORK_IDLE_TIMEOUT),this.onTaskStartTip=this.opts.onTaskStartTip,this.insight=new z.Insight(async t=>this.getUIContext(t)),r?.cacheId&&"android"!==this.page.pageType&&(this.taskCache=new B(r.cacheId,(0,Q.getAIConfigInBoolean)("MIDSCENE_CACHE"))),this.taskExecutor=new em(this.page,this.insight,{taskCache:this.taskCache,onTaskStart:this.callbackOnTaskStartTip.bind(this)}),this.dump=this.resetDump(),this.reportFileName=r?.reportFileName||function(t="web"){return`${(0,m.getAIConfig)(m.MIDSCENE_REPORT_TAG_NAME)||t}-${(0,v.default)().format("YYYY-MM-DD_HH-mm-ss")}-${(0,_.uuid)().substring(0,8)}`}(r?.testId||this.page.pageType||"web")}async getUIContext(t){return t&&("extract"===t||"assert"===t)?await D(this.page):await D(this.page,(0,Q.vlLocateMode)())}async setAIActionContext(t){this.opts.aiActionContext=t}resetDump(){return this.dump={groupName:this.opts.groupName,groupDescription:this.opts.groupDescription,executions:[]},this.dump}appendExecutionDump(t){let r=function(t){function r(t){if(!t)return null;let n=Array.isArray(t.children)?t.children.map(r).filter(t=>null!==t):[];return t.node&&!0===t.node.isVisible?{...t,children:n}:n.length>0?{node:null,children:n}:null}return{...t,tasks:Array.isArray(t.tasks)?t.tasks.map(t=>{let n={...t};return t.pageContext?.tree&&(n.pageContext={...t.pageContext,tree:r(t.pageContext.tree)||{node:null,children:[]}}),n}):t.tasks}}(t);this.dump.executions.push(r)}dumpDataString(){return this.dump.groupName=this.opts.groupName,this.dump.groupDescription=this.opts.groupDescription,(0,Y.stringifyDumpData)(this.dump)}reportHTMLString(){return(0,Y.reportHTMLContent)(this.dumpDataString())}writeOutActionDumps(){var t;if(this.destroyed)throw Error("PageAgent has been destroyed. Cannot update report file.");let{generateReport:r,autoPrintReportMsg:n}=this.opts;this.reportFile=(0,Y.writeLogFile)({fileName:this.reportFileName,fileExt:Y.groupedActionDumpFileExt,fileContent:this.dumpDataString(),type:"dump",generateReport:r}),ev("writeOutActionDumps",this.reportFile),r&&n&&this.reportFile&&(t=this.reportFile,(0,_.logMsg)(`Midscene - report file updated: ${t}`))}async callbackOnTaskStartTip(t){let r=function(t){let r;if("Planning"===t.type&&(r=t?.param?.userInstruction),"Insight"===t.type&&(r=t?.param?.prompt||t?.param?.id||t?.param?.dataDemand||t?.param?.assertion),"Action"===t.type){let n=t?.locate,i=n?ed(n):"";r=t.thought||"","number"==typeof t?.param?.timeMs?r=`${t?.param?.timeMs}ms`:"string"==typeof t?.param?.scrollType?r=ec(t?.param):"string"==typeof t?.param?.direction&&"AndroidPull"===t?.subType?r=function(t){if(!t)return"";let r=[];return r.push(`direction: ${t.direction||"down"}`),t.startPoint&&r.push(`start: (${t.startPoint.x}, ${t.startPoint.y})`),t.distance&&r.push(`distance: ${t.distance}`),t.duration&&r.push(`duration: ${t.duration}ms`),r.join(", ")}(t?.param):void 0!==t?.param?.value&&(r=t?.param?.value),i&&(r=r?`${i} - ${r}`:i)}return void 0===r?"":"string"==typeof r?r:JSON.stringify(r,void 0,2)}(t),n=r?`${eu(t)} - ${r}`:eu(t);this.onTaskStartTip&&await this.onTaskStartTip(n)}async afterTaskRunning(t,r=!1){this.appendExecutionDump(t.dump());try{await this.onDumpUpdate?.(this.dumpDataString())}catch(t){import_console_browserify.default.error("Error in onDumpUpdate",t)}if(this.writeOutActionDumps(),t.isInErrorState()&&!r){let r=t.latestErrorTask();throw Error(`${r?.errorMessage}
777
777
  ${r?.errorStack}`,{cause:r?.error})}}buildDetailedLocateParam(t,r){return((0,et.assert)(t,"missing locate prompt"),"object"==typeof r)?{prompt:t,deepThink:r.deepThink??!1,cacheable:r.cacheable??!0,xpath:r.xpath}:{prompt:t}}async aiTap(t,r){let n=this.buildDetailedLocateParam(t,r),i=e_("Tap",n),{executor:a,output:o}=await this.taskExecutor.runPlans(eh("Tap",ed(n)),i,{cacheable:r?.cacheable});return await this.afterTaskRunning(a),o}async aiRightClick(t,r){let n=this.buildDetailedLocateParam(t,r),i=e_("RightClick",n),{executor:a,output:o}=await this.taskExecutor.runPlans(eh("RightClick",ed(n)),i,{cacheable:r?.cacheable});return await this.afterTaskRunning(a),o}async aiHover(t,r){let n=this.buildDetailedLocateParam(t,r),i=e_("Hover",n),{executor:a,output:o}=await this.taskExecutor.runPlans(eh("Hover",ed(n)),i,{cacheable:r?.cacheable});return await this.afterTaskRunning(a),o}async aiInput(t,r,n){(0,et.assert)("string"==typeof t,"input value must be a string, use empty string if you want to clear the input"),(0,et.assert)(r,"missing locate prompt for input");let i=this.buildDetailedLocateParam(r,n),a=e_("Input",i,{value:t,autoDismissKeyboard:n?.autoDismissKeyboard}),{executor:o,output:s}=await this.taskExecutor.runPlans(eh("Input",ed(i)),a,{cacheable:n?.cacheable});return await this.afterTaskRunning(o),s}async aiKeyboardPress(t,r,n){(0,et.assert)(t,"missing keyName for keyboard press");let i=r?this.buildDetailedLocateParam(r,n):void 0,a=e_("KeyboardPress",i,{value:t}),{executor:o,output:s}=await this.taskExecutor.runPlans(eh("KeyboardPress",ed(i)),a,{cacheable:n?.cacheable});return await this.afterTaskRunning(o),s}async aiScroll(t,r,n){let i=r?this.buildDetailedLocateParam(r,n):void 0,a=e_("Scroll",i,t),o=r?`${ed(i)} - ${ec(t)}`:ec(t),{executor:s,output:l}=await this.taskExecutor.runPlans(eh("Scroll",o),a,{cacheable:n?.cacheable});return await this.afterTaskRunning(s),l}async aiAction(t,r){let n=r?.cacheable,i="vlm-ui-tars"===(0,Q.vlLocateMode)(),a=i||!1===n?void 0:this.taskCache?.matchPlanCache(t);if(a&&this.taskCache?.isCacheResultUsed){let{executor:r}=await this.taskExecutor.loadYamlFlowAsPlanning(t,a.cacheContent?.yamlWorkflow);await await this.afterTaskRunning(r),ev("matched cache, will call .runYaml to run the action");let n=a.cacheContent?.yamlWorkflow;return this.runYaml(n)}let{output:o,executor:s}=await (i?this.taskExecutor.actionToGoal(t,{cacheable:n}):this.taskExecutor.action(t,this.opts.aiActionContext,{cacheable:n}));if(this.taskCache&&o?.yamlFlow&&!1!==n){let r={tasks:[{name:t,flow:o.yamlFlow}]},n=G.default.dump(r);this.taskCache.updateOrAppendCacheRecord({type:"plan",prompt:t,yamlWorkflow:n},a)}return await this.afterTaskRunning(s),o}async aiQuery(t,r=eA){let{output:n,executor:i}=await this.taskExecutor.query(t,r);return await this.afterTaskRunning(i),n}async aiBoolean(t,r=eA){let{output:n,executor:i}=await this.taskExecutor.boolean(t,r);return await this.afterTaskRunning(i),n}async aiNumber(t,r=eA){let{output:n,executor:i}=await this.taskExecutor.number(t,r);return await this.afterTaskRunning(i),n}async aiString(t,r=eA){let{output:n,executor:i}=await this.taskExecutor.string(t,r);return await this.afterTaskRunning(i),n}async aiAsk(t,r=eA){return this.aiString(t,r)}async describeElementAtPoint(t,r){let{verifyPrompt:n=!0,retryLimit:i=3}=r||{},a,o=!1,s=0,l="",u=r?.deepThink||!1;for(;!o&&s<i;){s>=2&&(u=!0),ev("aiDescribe",t,"verifyPrompt",n,"retryCount",s,"deepThink",u);let i=await this.insight.describe(t,{deepThink:u});ev("aiDescribe text",i),(0,et.assert)(i.description,`failed to describe element at [${t}]`),l=i.description,(a=await this.verifyLocator(l,u?{deepThink:!0}:void 0,t,r)).pass?o=!0:s++}return{prompt:l,deepThink:u,verifyResult:a}}async verifyLocator(t,r,n,i){ev("verifyLocator",t,r,n,i);let{center:a,rect:o}=await this.aiLocate(t,r),s=((t,r)=>{let[n,i]=t,[a,o]=r;return Math.round(Math.sqrt((n-a)**2+(i-o)**2))})(n,a),l=((t,r)=>{let[n,i]=t,{left:a,top:o,width:s,height:l}=r;return n>=a&&n<=a+s&&i>=o&&i<=o+l})(n,o),u={pass:s<=(i?.centerDistanceThreshold||20)||l,rect:o,center:a,centerDistance:s};return ev("aiDescribe verifyResult",u),u}async aiLocate(t,r){let n=this.buildDetailedLocateParam(t,r),i=e_("Locate",n),{executor:a,output:o}=await this.taskExecutor.runPlans(eh("Locate",ed(n)),i,{cacheable:r?.cacheable});await this.afterTaskRunning(a);let{element:s}=o;return{rect:s?.rect,center:s?.center,scale:(await this.page.size()).dpr}}async aiAssert(t,r,n){let{output:i,executor:a,thought:o}=await this.taskExecutor.assert(t,{returnThought:!0});if(await this.afterTaskRunning(a,!0),n?.keepRawResponse)return{pass:i,thought:o};if(!i){let n=r||`Assertion failed: ${t}`,i=`Reason: ${o||a.latestErrorTask()?.error||"(no_reason)"}`;throw Error(`${n}
@@ -904,4 +904,4 @@ ${i.join("\n")}
904
904
 
905
905
  `,"background: #E72264; padding:5px 0;","background: #6CA2EA; padding:5px 0;","background: #B5D33D; padding:5px 0;","background: #FED23F; padding:5px 0;","color: #FFFFFF; background: #E72264; padding:5px 0;","color: #E72264; background: #FFFFFF; padding:5px 0;"];globalThis.console.log(...r)}else globalThis.console&&globalThis.console.log(`PixiJS ${VERSION} - ${t} - http://www.pixijs.com/`);saidHello=!0}}var HelloSystem,_TextureGCSystem,TextureGCSystem,_RenderTarget,RenderTarget,canvasCache,init_sayHello=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/utils/sayHello.mjs"(){init_globals(),init_adapter(),saidHello=!1,VERSION="8.1.1"}}),init_HelloSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/startup/HelloSystem.mjs"(){init_globals(),init_Extensions(),init_sayHello(),init_types2(),(HelloSystem=class{constructor(t){this._renderer=t}init(t){if(t.hello){let t=this._renderer.name;this._renderer.type===RendererType.WEBGL&&(t+=` ${this._renderer.context.webGLVersion}`),sayHello(t)}}}).extension={type:[ExtensionType.WebGLSystem,ExtensionType.WebGPUSystem,ExtensionType.CanvasSystem],name:"hello",priority:-2},HelloSystem.defaultOptions={hello:!1}}}),init_TextureGCSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/texture/TextureGCSystem.mjs"(){init_globals(),init_Extensions(),(_TextureGCSystem=class t{constructor(t){this._renderer=t,this.count=0,this.checkCount=0}init(r){r={...t.defaultOptions,...r},this.checkCountMax=r.textureGCCheckCountMax,this.maxIdle=r.textureGCAMaxIdle,this.active=r.textureGCActive}postrender(){this._renderer.renderingToScreen&&(this.count++,this.active&&(this.checkCount++,this.checkCount>this.checkCountMax&&(this.checkCount=0,this.run())))}run(){let t=this._renderer.texture.managedTextures;for(let r=0;r<t.length;r++){let n=t[r];n.autoGarbageCollect&&n.resource&&n._touched>-1&&this.count-n._touched>this.maxIdle&&(n._touched=-1,n.unload())}}destroy(){this._renderer=null}}).extension={type:[ExtensionType.WebGLSystem,ExtensionType.WebGPUSystem],name:"textureGC"},_TextureGCSystem.defaultOptions={textureGCActive:!0,textureGCAMaxIdle:3600,textureGCCheckCountMax:600},TextureGCSystem=_TextureGCSystem,extensions.add(TextureGCSystem)}}),init_RenderTarget=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/renderTarget/RenderTarget.mjs"(){init_globals(),init_uid(),init_TextureSource(),init_Texture(),(_RenderTarget=class t{constructor(r={}){if(this.uid=uid("renderTarget"),this.colorTextures=[],this.dirtyId=0,this.isRoot=!1,this._size=new Float32Array(2),this._managedColorTextures=!1,r={...t.defaultOptions,...r},this.stencil=r.stencil,this.depth=r.depth,this.isRoot=r.isRoot,"number"==typeof r.colorTextures){this._managedColorTextures=!0;for(let t=0;t<r.colorTextures;t++)this.colorTextures.push(new TextureSource({width:r.width,height:r.height,resolution:r.resolution,antialias:r.antialias}))}else{this.colorTextures=[...r.colorTextures.map(t=>t.source)];let t=this.colorTexture.source;this.resize(t.width,t.height,t._resolution)}this.colorTexture.source.on("resize",this.onSourceResize,this),(r.depthStencilTexture||this.stencil)&&(r.depthStencilTexture instanceof Texture||r.depthStencilTexture instanceof TextureSource?this.depthStencilTexture=r.depthStencilTexture.source:this.ensureDepthStencilTexture())}get size(){let t=this._size;return t[0]=this.pixelWidth,t[1]=this.pixelHeight,t}get width(){return this.colorTexture.source.width}get height(){return this.colorTexture.source.height}get pixelWidth(){return this.colorTexture.source.pixelWidth}get pixelHeight(){return this.colorTexture.source.pixelHeight}get resolution(){return this.colorTexture.source._resolution}get colorTexture(){return this.colorTextures[0]}onSourceResize(t){this.resize(t.width,t.height,t._resolution,!0)}ensureDepthStencilTexture(){this.depthStencilTexture||(this.depthStencilTexture=new TextureSource({width:this.width,height:this.height,resolution:this.resolution,format:"depth24plus-stencil8",autoGenerateMipmaps:!1,antialias:!1,mipLevelCount:1}))}resize(t,r,n=this.resolution,i=!1){this.dirtyId++,this.colorTextures.forEach((a,o)=>{i&&0===o||a.source.resize(t,r,n)}),this.depthStencilTexture&&this.depthStencilTexture.source.resize(t,r,n)}destroy(){this.colorTexture.source.off("resize",this.onSourceResize,this),this._managedColorTextures&&this.colorTextures.forEach(t=>{t.destroy()}),this.depthStencilTexture&&(this.depthStencilTexture.destroy(),delete this.depthStencilTexture)}}).defaultOptions={width:0,height:0,resolution:1,colorTextures:1,stencil:!1,depth:!1,antialias:!1,isRoot:!1},RenderTarget=_RenderTarget}});function getCanvasTexture(t,r){if(!canvasCache.has(t)){let n=new Texture({source:new CanvasSource({resource:t,...r})}),i=()=>{canvasCache.get(t)===n&&canvasCache.delete(t)};n.once("destroy",i),n.source.once("destroy",i),canvasCache.set(t,n)}return canvasCache.get(t)}var _ViewSystem,ViewSystem,SharedSystems,SharedRenderPipes,BindGroupSystem,GpuBufferSystem,GpuColorMaskSystem,GpuDeviceSystem,GpuEncoderSystem,GpuStencilSystem,UboBatch,minUniformOffsetAlignment,GpuUniformBatchPipe,init_getCanvasTexture=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/texture/utils/getCanvasTexture.mjs"(){init_globals(),init_CanvasSource(),init_Texture(),canvasCache=new Map}}),init_ViewSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/view/ViewSystem.mjs"(){init_globals(),init_adapter(),init_Extensions(),init_Rectangle(),init_deprecation(),init_RenderTarget(),init_getCanvasTexture(),(_ViewSystem=class t{get resolution(){return this.texture.source._resolution}set resolution(t){this.texture.source.resize(this.texture.source.width,this.texture.source.height,t)}init(r){(r={...t.defaultOptions,...r}).view&&(deprecation(v8_0_0,"ViewSystem.view has been renamed to ViewSystem.canvas"),r.canvas=r.view),this.screen=new Rectangle(0,0,r.width,r.height),this.canvas=r.canvas||DOMAdapter.get().createCanvas(),this.antialias=!!r.antialias,this.texture=getCanvasTexture(this.canvas,r),this.renderTarget=new RenderTarget({colorTextures:[this.texture],depth:!!r.depth,isRoot:!0}),this.texture.source.transparent=r.backgroundAlpha<1,this.multiView=!!r.multiView,this.autoDensity&&(this.canvas.style.width=`${this.texture.width}px`,this.canvas.style.height=`${this.texture.height}px`),this.resolution=r.resolution}resize(t,r,n){this.texture.source.resize(t,r,n),this.screen.width=this.texture.frame.width,this.screen.height=this.texture.frame.height,this.autoDensity&&(this.canvas.style.width=`${t}px`,this.canvas.style.height=`${r}px`)}destroy(t=!1){("boolean"==typeof t?t:!!t?.removeView)&&this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas)}}).extension={type:[ExtensionType.WebGLSystem,ExtensionType.WebGPUSystem,ExtensionType.CanvasSystem],name:"view",priority:0},_ViewSystem.defaultOptions={width:800,height:600,autoDensity:!1,antialias:!1},ViewSystem=_ViewSystem}}),init_SharedSystems=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/system/SharedSystems.mjs"(){init_globals(),init_CustomRenderPipe(),init_RenderGroupPipe(),init_RenderGroupSystem(),init_SpritePipe(),init_BatcherPipe(),init_AlphaMaskPipe(),init_ColorMaskPipe(),init_StencilMaskPipe(),init_BackgroundSystem(),init_BlendModePipe(),init_ExtractSystem(),init_GenerateTextureSystem(),init_GlobalUniformSystem(),init_HelloSystem(),init_TextureGCSystem(),init_ViewSystem(),SharedSystems=[BackgroundSystem,GlobalUniformSystem,HelloSystem,ViewSystem,RenderGroupSystem,TextureGCSystem,GenerateTextureSystem,ExtractSystem],SharedRenderPipes=[BlendModePipe,BatcherPipe,SpritePipe,RenderGroupPipe,AlphaMaskPipe,StencilMaskPipe,ColorMaskPipe,CustomRenderPipe]}}),init_BindGroupSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/BindGroupSystem.mjs"(){init_globals(),init_Extensions(),(BindGroupSystem=class{constructor(t){this._hash=Object.create(null),this._renderer=t}contextChange(t){this._gpu=t}getBindGroup(t,r,n){return t._updateKey(),this._hash[t._key]||this._createBindGroup(t,r,n)}_createBindGroup(t,r,n){let i=this._gpu.device,a=r.layout[n],o=[],s=this._renderer;for(let r in a){let n,i=t.resources[r]??t.resources[a[r]];if("uniformGroup"===i._resourceType){let t=i;s.ubo.updateUniformGroup(t);let r=t.buffer;n={buffer:s.buffer.getGPUBuffer(r),offset:0,size:r.descriptor.size}}else if("buffer"===i._resourceType){let t=i;n={buffer:s.buffer.getGPUBuffer(t),offset:0,size:t.descriptor.size}}else if("bufferResource"===i._resourceType){let t=i;n={buffer:s.buffer.getGPUBuffer(t.buffer),offset:t.offset,size:t.size}}else if("textureSampler"===i._resourceType){let t=i;n=s.texture.getGpuSampler(t)}else if("textureSource"===i._resourceType){let t=i;n=s.texture.getGpuSource(t).createView({})}o.push({binding:a[r],resource:n})}let l=s.shader.getProgramData(r).bindGroups[n],u=i.createBindGroup({layout:l,entries:o});return this._hash[t._key]=u,u}destroy(){for(let t of Object.keys(this._hash))this._hash[t]=null;this._hash=null,this._renderer=null}}).extension={type:[ExtensionType.WebGPUSystem],name:"bindGroup"}}}),init_GpuBufferSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/buffer/GpuBufferSystem.mjs"(){init_globals(),init_Extensions(),init_fastCopy(),(GpuBufferSystem=class{constructor(){this._gpuBuffers=Object.create(null),this._managedBuffers=[]}contextChange(t){this._gpu=t}getGPUBuffer(t){return this._gpuBuffers[t.uid]||this.createGPUBuffer(t)}updateBuffer(t){let r=this._gpuBuffers[t.uid]||this.createGPUBuffer(t),n=t.data;return t._updateID&&n&&(t._updateID=0,this._gpu.device.queue.writeBuffer(r,0,n.buffer,0,(t._updateSize||n.byteLength)+3&-4)),r}destroyAll(){for(let t in this._gpuBuffers)this._gpuBuffers[t].destroy();this._gpuBuffers={}}createGPUBuffer(t){this._gpuBuffers[t.uid]||(t.on("update",this.updateBuffer,this),t.on("change",this.onBufferChange,this),t.on("destroy",this.onBufferDestroy,this));let r=this._gpu.device.createBuffer(t.descriptor);return t._updateID=0,t.data&&(fastCopy(t.data.buffer,r.getMappedRange()),r.unmap()),this._gpuBuffers[t.uid]=r,this._managedBuffers.push(t),r}onBufferChange(t){this._gpuBuffers[t.uid].destroy(),t._updateID=0,this._gpuBuffers[t.uid]=this.createGPUBuffer(t)}onBufferDestroy(t){this._managedBuffers.splice(this._managedBuffers.indexOf(t),1),this._destroyBuffer(t)}destroy(){this._managedBuffers.forEach(t=>this._destroyBuffer(t)),this._managedBuffers=null,this._gpuBuffers=null}_destroyBuffer(t){this._gpuBuffers[t.uid].destroy(),t.off("update",this.updateBuffer,this),t.off("change",this.onBufferChange,this),t.off("destroy",this.onBufferDestroy,this),this._gpuBuffers[t.uid]=null}}).extension={type:[ExtensionType.WebGPUSystem],name:"buffer"}}}),init_GpuColorMaskSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuColorMaskSystem.mjs"(){init_globals(),init_Extensions(),(GpuColorMaskSystem=class{constructor(t){this._colorMaskCache=15,this._renderer=t}setMask(t){this._colorMaskCache!==t&&(this._colorMaskCache=t,this._renderer.pipeline.setColorMask(t))}destroy(){this._renderer=null,this._colorMaskCache=null}}).extension={type:[ExtensionType.WebGPUSystem],name:"colorMask"}}}),init_GpuDeviceSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuDeviceSystem.mjs"(){init_globals(),init_Extensions(),(GpuDeviceSystem=class{constructor(t){this._renderer=t}async init(t){return this._initPromise||(this._initPromise=this._createDeviceAndAdaptor(t).then(t=>{this.gpu=t,this._renderer.runners.contextChange.emit(this.gpu)})),this._initPromise}contextChange(t){this._renderer.gpu=t}async _createDeviceAndAdaptor(t){let r=await navigator.gpu.requestAdapter({powerPreference:t.powerPreference,forceFallbackAdapter:t.forceFallbackAdapter}),n=["texture-compression-bc","texture-compression-astc","texture-compression-etc2"].filter(t=>r.features.has(t)),i=await r.requestDevice({requiredFeatures:n});return{adapter:r,device:i}}destroy(){this.gpu=null,this._renderer=null}}).extension={type:[ExtensionType.WebGPUSystem],name:"device"},GpuDeviceSystem.defaultOptions={powerPreference:void 0,forceFallbackAdapter:!1}}}),init_GpuEncoderSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuEncoderSystem.mjs"(){init_globals(),init_Extensions(),(GpuEncoderSystem=class{constructor(t){this._boundBindGroup=Object.create(null),this._boundVertexBuffer=Object.create(null),this._renderer=t}renderStart(){this.commandFinished=new Promise(t=>{this._resolveCommandFinished=t}),this.commandEncoder=this._renderer.gpu.device.createCommandEncoder()}beginRenderPass(t){this.endRenderPass(),this._clearCache(),this.renderPassEncoder=this.commandEncoder.beginRenderPass(t.descriptor)}endRenderPass(){this.renderPassEncoder&&this.renderPassEncoder.end(),this.renderPassEncoder=null}setViewport(t){this.renderPassEncoder.setViewport(t.x,t.y,t.width,t.height,0,1)}setPipelineFromGeometryProgramAndState(t,r,n,i){let a=this._renderer.pipeline.getPipeline(t,r,n,i);this.setPipeline(a)}setPipeline(t){this._boundPipeline!==t&&(this._boundPipeline=t,this.renderPassEncoder.setPipeline(t))}_setVertexBuffer(t,r){this._boundVertexBuffer[t]!==r&&(this._boundVertexBuffer[t]=r,this.renderPassEncoder.setVertexBuffer(t,this._renderer.buffer.updateBuffer(r)))}_setIndexBuffer(t){if(this._boundIndexBuffer===t)return;this._boundIndexBuffer=t;let r=2===t.data.BYTES_PER_ELEMENT?"uint16":"uint32";this.renderPassEncoder.setIndexBuffer(this._renderer.buffer.updateBuffer(t),r)}resetBindGroup(t){this._boundBindGroup[t]=null}setBindGroup(t,r,n){if(this._boundBindGroup[t]===r)return;this._boundBindGroup[t]=r,r._touch(this._renderer.textureGC.count);let i=this._renderer.bindGroup.getBindGroup(r,n,t);this.renderPassEncoder.setBindGroup(t,i)}setGeometry(t){for(let r in t.attributes){let n=t.attributes[r];this._setVertexBuffer(n.location,n.buffer)}t.indexBuffer&&this._setIndexBuffer(t.indexBuffer)}_setShaderBindGroups(t,r){for(let n in t.groups){let i=t.groups[n];r||this._syncBindGroup(i),this.setBindGroup(n,i,t.gpuProgram)}}_syncBindGroup(t){for(let r in t.resources){let n=t.resources[r];n.isUniformGroup&&this._renderer.ubo.updateUniformGroup(n)}}draw(t){let{geometry:r,shader:n,state:i,topology:a,size:o,start:s,instanceCount:l,skipSync:u}=t;this.setPipelineFromGeometryProgramAndState(r,n.gpuProgram,i,a),this.setGeometry(r),this._setShaderBindGroups(n,u),r.indexBuffer?this.renderPassEncoder.drawIndexed(o||r.indexBuffer.data.length,l||r.instanceCount,s||0):this.renderPassEncoder.draw(o||r.getSize(),l||r.instanceCount,s||0)}finishRenderPass(){this.renderPassEncoder&&(this.renderPassEncoder.end(),this.renderPassEncoder=null)}postrender(){this.finishRenderPass(),this._gpu.device.queue.submit([this.commandEncoder.finish()]),this._resolveCommandFinished(),this.commandEncoder=null}restoreRenderPass(){let t=this._renderer.renderTarget.adaptor.getDescriptor(this._renderer.renderTarget.renderTarget,!1,[0,0,0,1]);this.renderPassEncoder=this.commandEncoder.beginRenderPass(t);let r=this._boundPipeline,n={...this._boundVertexBuffer},i=this._boundIndexBuffer,a={...this._boundBindGroup};this._clearCache();let o=this._renderer.renderTarget.viewport;for(let t in this.renderPassEncoder.setViewport(o.x,o.y,o.width,o.height,0,1),this.setPipeline(r),n)this._setVertexBuffer(t,n[t]);for(let t in a)this.setBindGroup(t,a[t],null);this._setIndexBuffer(i)}_clearCache(){for(let t=0;t<16;t++)this._boundBindGroup[t]=null,this._boundVertexBuffer[t]=null;this._boundIndexBuffer=null,this._boundPipeline=null}destroy(){this._renderer=null,this._gpu=null,this._boundBindGroup=null,this._boundVertexBuffer=null,this._boundIndexBuffer=null,this._boundPipeline=null}contextChange(t){this._gpu=t}}).extension={type:[ExtensionType.WebGPUSystem],name:"encoder",priority:1}}}),init_GpuStencilSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuStencilSystem.mjs"(){init_globals(),init_Extensions(),init_const6(),(GpuStencilSystem=class{constructor(t){this._renderTargetStencilState=Object.create(null),this._renderer=t,t.renderTarget.onRenderTargetChange.add(this)}onRenderTargetChange(t){let r=this._renderTargetStencilState[t.uid];r||(r=this._renderTargetStencilState[t.uid]={stencilMode:STENCIL_MODES.DISABLED,stencilReference:0}),this._activeRenderTarget=t,this.setStencilMode(r.stencilMode,r.stencilReference)}setStencilMode(t,r){let n=this._renderTargetStencilState[this._activeRenderTarget.uid];n.stencilMode=t,n.stencilReference=r;let i=this._renderer;i.pipeline.setStencilMode(t),i.encoder.renderPassEncoder.setStencilReference(r)}destroy(){this._renderer.renderTarget.onRenderTargetChange.remove(this),this._renderer=null,this._activeRenderTarget=null,this._renderTargetStencilState=null}}).extension={type:[ExtensionType.WebGPUSystem],name:"stencil"}}}),init_UboBatch=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/buffer/UboBatch.mjs"(){init_globals(),UboBatch=class{constructor({minUniformOffsetAlignment:t}){this._minUniformOffsetAlignment=256,this.byteIndex=0,this._minUniformOffsetAlignment=t,this.data=new Float32Array(65535)}clear(){this.byteIndex=0}addEmptyGroup(t){if(t>this._minUniformOffsetAlignment/4)throw Error("UniformBufferBatch: array is too large: "+4*t);let r=this.byteIndex,n=r+4*t;if((n=Math.ceil(n/this._minUniformOffsetAlignment)*this._minUniformOffsetAlignment)>4*this.data.length)throw Error("UniformBufferBatch: ubo batch got too big");return this.byteIndex=n,r}addGroup(t){let r=this.addEmptyGroup(t.length);for(let n=0;n<t.length;n++)this.data[r/4+n]=t[n];return r}destroy(){this._buffer.destroy(),this._buffer=null,this.data=null}}}}),init_GpuUniformBatchPipe=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuUniformBatchPipe.mjs"(){init_globals(),init_Extensions(),init_Buffer(),init_BufferResource(),init_const(),init_UboBatch(),init_BindGroup(),minUniformOffsetAlignment=128,(GpuUniformBatchPipe=class{constructor(t){this._bindGroupHash=Object.create(null),this._buffers=[],this._bindGroups=[],this._bufferResources=[],this._renderer=t,this._batchBuffer=new UboBatch({minUniformOffsetAlignment:minUniformOffsetAlignment});let r=256/minUniformOffsetAlignment;for(let t=0;t<r;t++){let r=BufferUsage.UNIFORM|BufferUsage.COPY_DST;0===t&&(r|=BufferUsage.COPY_SRC),this._buffers.push(new Buffer3({data:this._batchBuffer.data,usage:r}))}}renderEnd(){this._uploadBindGroups(),this._resetBindGroups()}_resetBindGroups(){for(let t in this._bindGroupHash)this._bindGroupHash[t]=null;this._batchBuffer.clear()}getUniformBindGroup(t,r){if(!r&&this._bindGroupHash[t.uid])return this._bindGroupHash[t.uid];this._renderer.ubo.ensureUniformGroup(t);let n=t.buffer.data,i=this._batchBuffer.addEmptyGroup(n.length);return this._renderer.ubo.syncUniformGroup(t,this._batchBuffer.data,i/4),this._bindGroupHash[t.uid]=this._getBindGroup(i/minUniformOffsetAlignment),this._bindGroupHash[t.uid]}getUboResource(t){this._renderer.ubo.updateUniformGroup(t);let r=t.buffer.data,n=this._batchBuffer.addGroup(r);return this._getBufferResource(n/minUniformOffsetAlignment)}getArrayBindGroup(t){let r=this._batchBuffer.addGroup(t);return this._getBindGroup(r/minUniformOffsetAlignment)}getArrayBufferResource(t){let r=this._batchBuffer.addGroup(t)/minUniformOffsetAlignment;return this._getBufferResource(r)}_getBufferResource(t){if(!this._bufferResources[t]){let r=this._buffers[t%2];this._bufferResources[t]=new BufferResource({buffer:r,offset:256*(t/2|0),size:minUniformOffsetAlignment})}return this._bufferResources[t]}_getBindGroup(t){if(!this._bindGroups[t]){let r=new BindGroup({0:this._getBufferResource(t)});this._bindGroups[t]=r}return this._bindGroups[t]}_uploadBindGroups(){let t=this._renderer.buffer,r=this._buffers[0];r.update(this._batchBuffer.byteIndex),t.updateBuffer(r);let n=this._renderer.gpu.device.createCommandEncoder();for(let i=1;i<this._buffers.length;i++){let a=this._buffers[i];n.copyBufferToBuffer(t.getGPUBuffer(r),minUniformOffsetAlignment,t.getGPUBuffer(a),0,this._batchBuffer.byteIndex)}this._renderer.gpu.device.queue.submit([n.finish()])}destroy(){for(let t=0;t<this._bindGroups.length;t++)this._bindGroups[t].destroy();this._bindGroups=null,this._bindGroupHash=null;for(let t=0;t<this._buffers.length;t++)this._buffers[t].destroy();this._buffers=null;for(let t=0;t<this._bufferResources.length;t++)this._bufferResources[t].destroy();this._bufferResources=null,this._batchBuffer.destroy(),this._bindGroupHash=null,this._renderer=null}}).extension={type:[ExtensionType.WebGPUPipes],name:"uniformBatch"}}});function ensureAttributes(t,r){for(let n in t.attributes){let i=t.attributes[n],a=r[n];a?(i.location??(i.location=a.location),i.format??(i.format=a.format),i.offset??(i.offset=a.offset),i.instance??(i.instance=a.instance)):warn(`Attribute ${n} is not present in the shader, but is present in the geometry. Unable to infer attribute details.`)}ensureStartAndStride(t)}function ensureStartAndStride(t){let{buffers:r,attributes:n}=t,i={},a={};for(let t in r){let n=r[t];i[n.uid]=0,a[n.uid]=0}for(let t in n){let r=n[t];i[r.buffer.uid]+=getAttributeInfoFromFormat(r.format).stride}for(let t in n){let r=n[t];r.stride??(r.stride=i[r.buffer.uid]),r.start??(r.start=a[r.buffer.uid]),a[r.buffer.uid]+=getAttributeInfoFromFormat(r.format).stride}}var GpuStencilModesToPixi,topologyStringToId,PipelineSystem,init_ensureAttributes=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/ensureAttributes.mjs"(){init_globals(),init_warn2(),init_getAttributeInfoFromFormat()}}),init_GpuStencilModesToPixi=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/state/GpuStencilModesToPixi.mjs"(){init_globals(),init_const6(),(GpuStencilModesToPixi=[])[STENCIL_MODES.NONE]=void 0,GpuStencilModesToPixi[STENCIL_MODES.DISABLED]={stencilWriteMask:0,stencilReadMask:0},GpuStencilModesToPixi[STENCIL_MODES.RENDERING_MASK_ADD]={stencilFront:{compare:"equal",passOp:"increment-clamp"},stencilBack:{compare:"equal",passOp:"increment-clamp"}},GpuStencilModesToPixi[STENCIL_MODES.RENDERING_MASK_REMOVE]={stencilFront:{compare:"equal",passOp:"decrement-clamp"},stencilBack:{compare:"equal",passOp:"decrement-clamp"}},GpuStencilModesToPixi[STENCIL_MODES.MASK_ACTIVE]={stencilWriteMask:0,stencilFront:{compare:"equal",passOp:"keep"},stencilBack:{compare:"equal",passOp:"keep"}}}});function getGraphicsStateKey(t,r,n,i,a){return t<<24|r<<16|n<<10|i<<5|a}function getGlobalStateKey(t,r,n,i){return n<<6|t<<3|i<<1|r}var init_PipelineSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/pipeline/PipelineSystem.mjs"(){init_globals(),init_Extensions(),init_ensureAttributes(),init_const6(),init_createIdFromString(),init_GpuStencilModesToPixi(),topologyStringToId={"point-list":0,"line-list":1,"line-strip":2,"triangle-list":3,"triangle-strip":4},(PipelineSystem=class{constructor(t){this._moduleCache=Object.create(null),this._bufferLayoutsCache=Object.create(null),this._pipeCache=Object.create(null),this._pipeStateCaches=Object.create(null),this._colorMask=15,this._multisampleCount=1,this._renderer=t}contextChange(t){this._gpu=t,this.setStencilMode(STENCIL_MODES.DISABLED),this._updatePipeHash()}setMultisampleCount(t){this._multisampleCount!==t&&(this._multisampleCount=t,this._updatePipeHash())}setRenderTarget(t){this._multisampleCount=t.msaaSamples,this._depthStencilAttachment=+!!t.descriptor.depthStencilAttachment,this._updatePipeHash()}setColorMask(t){this._colorMask!==t&&(this._colorMask=t,this._updatePipeHash())}setStencilMode(t){this._stencilMode!==t&&(this._stencilMode=t,this._stencilState=GpuStencilModesToPixi[t],this._updatePipeHash())}setPipeline(t,r,n,i){let a=this.getPipeline(t,r,n);i.setPipeline(a)}getPipeline(t,r,n,i){t._layoutKey||(ensureAttributes(t,r.attributeData),this._generateBufferKey(t)),i=i||t.topology;let a=getGraphicsStateKey(t._layoutKey,r._layoutKey,n.data,n._blendModeId,topologyStringToId[i]);return this._pipeCache[a]||(this._pipeCache[a]=this._createPipeline(t,r,n,i)),this._pipeCache[a]}_createPipeline(t,r,n,i){let a=this._gpu.device,o=this._createVertexBufferLayouts(t),s=this._renderer.state.getColorTargets(n);s[0].writeMask=this._stencilMode===STENCIL_MODES.RENDERING_MASK_ADD?0:this._colorMask;let l=this._renderer.shader.getProgramData(r).pipeline,u={vertex:{module:this._getModule(r.vertex.source),entryPoint:r.vertex.entryPoint,buffers:o},fragment:{module:this._getModule(r.fragment.source),entryPoint:r.fragment.entryPoint,targets:s},primitive:{topology:i,cullMode:n.cullMode},layout:l,multisample:{count:this._multisampleCount},label:"PIXI Pipeline"};return this._depthStencilAttachment&&(u.depthStencil={...this._stencilState,format:"depth24plus-stencil8",depthWriteEnabled:n.depthTest,depthCompare:n.depthTest?"less":"always"}),a.createRenderPipeline(u)}_getModule(t){return this._moduleCache[t]||this._createModule(t)}_createModule(t){let r=this._gpu.device;return this._moduleCache[t]=r.createShaderModule({code:t}),this._moduleCache[t]}_generateBufferKey(t){let r=[],n=0,i=Object.keys(t.attributes).sort();for(let a=0;a<i.length;a++){let o=t.attributes[i[a]];r[n++]=o.location,r[n++]=o.offset,r[n++]=o.format,r[n++]=o.stride}return t._layoutKey=createIdFromString(r.join(""),"geometry"),t._layoutKey}_createVertexBufferLayouts(t){if(this._bufferLayoutsCache[t._layoutKey])return this._bufferLayoutsCache[t._layoutKey];let r=[];return t.buffers.forEach(n=>{let i={arrayStride:0,stepMode:"vertex",attributes:[]},a=i.attributes;for(let r in t.attributes){let o=t.attributes[r];o.buffer===n&&(i.arrayStride=o.stride,i.stepMode=o.instance?"instance":"vertex",a.push({shaderLocation:o.location,offset:o.offset,format:o.format}))}a.length&&r.push(i)}),this._bufferLayoutsCache[t._layoutKey]=r,r}_updatePipeHash(){let t=getGlobalStateKey(this._stencilMode,this._multisampleCount,this._colorMask,this._depthStencilAttachment);this._pipeStateCaches[t]||(this._pipeStateCaches[t]=Object.create(null)),this._pipeCache=this._pipeStateCaches[t]}destroy(){this._renderer=null,this._bufferLayoutsCache=null}}).extension={type:[ExtensionType.WebGPUSystem],name:"pipeline"}}});function calculateProjection(t,r,n,i,a,o){let s=o?1:-1;return t.identity(),t.a=1/i*2,t.d=1/a*2*s,t.tx=-1-r*t.a,t.ty=-s-n*t.d,t}var init_calculateProjection=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/calculateProjection.mjs"(){init_globals()}});function isRenderingToScreen(t){let r=t.colorTexture.source.resource;return globalThis.HTMLCanvasElement&&r instanceof HTMLCanvasElement&&document.body.contains(r)}var RenderTargetSystem,GpuRenderTarget,GpuRenderTargetAdaptor,GpuRenderTargetSystem,GpuShaderSystem,GpuBlendModesToPixi,GpuStateSystem,gpuUploadBufferImageResource,blockDataMap,defaultBlockData,gpuUploadCompressedTextureResource,gpuUploadImageResource,gpuUploadVideoResource,GpuMipmapGenerator,GpuTextureSystem,DefaultWebGPUSystems,DefaultWebGPUPipes,DefaultWebGPUAdapters,systems,renderPipes,renderPipeAdaptors,WebGPURenderer,init_isRenderingToScreen=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/renderTarget/isRenderingToScreen.mjs"(){init_globals()}}),init_RenderTargetSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/renderTarget/RenderTargetSystem.mjs"(){init_globals(),init_Matrix(),init_Rectangle(),init_const3(),init_calculateProjection(),init_SystemRunner(),init_CanvasSource(),init_TextureSource(),init_Texture(),init_getCanvasTexture(),init_isRenderingToScreen(),init_RenderTarget(),RenderTargetSystem=class{constructor(t){this.rootViewPort=new Rectangle,this.viewport=new Rectangle,this.onRenderTargetChange=new SystemRunner("onRenderTargetChange"),this.projectionMatrix=new Matrix,this.defaultClearColor=[0,0,0,0],this._renderSurfaceToRenderTargetHash=new Map,this._gpuRenderTargetHash=Object.create(null),this._renderTargetStack=[],this._renderer=t}finishRenderPass(){this.adaptor.finishRenderPass(this.renderTarget)}renderStart({target:t,clear:r,clearColor:n,frame:i}){this._renderTargetStack.length=0,this.push(t,r,n,i),this.rootViewPort.copyFrom(this.viewport),this.rootRenderTarget=this.renderTarget,this.renderingToScreen=isRenderingToScreen(this.rootRenderTarget)}bind(t,r=!0,n,i){let a=this.getRenderTarget(t),o=this.renderTarget!==a;this.renderTarget=a,this.renderSurface=t;let s=this.getGpuRenderTarget(a);a.pixelWidth===s.width&&a.pixelHeight===s.height||(this.adaptor.resizeGpuRenderTarget(a),s.width=a.pixelWidth,s.height=a.pixelHeight);let l=a.colorTexture,u=this.viewport,d=l.pixelWidth,c=l.pixelHeight;if(!i&&t instanceof Texture&&(i=t.frame),i){let t=l._resolution;u.x=i.x*t+.5|0,u.y=i.y*t+.5|0,u.width=i.width*t+.5|0,u.height=i.height*t+.5|0}else u.x=0,u.y=0,u.width=d,u.height=c;return calculateProjection(this.projectionMatrix,0,0,u.width/l.resolution,u.height/l.resolution,!a.isRoot),this.adaptor.startRenderPass(a,r,n,u),o&&this.onRenderTargetChange.emit(a),a}clear(t,r=CLEAR.ALL,n){r&&(t&&(t=this.getRenderTarget(t)),this.adaptor.clear(t||this.renderTarget,r,n,this.viewport))}contextChange(){this._gpuRenderTargetHash=Object.create(null)}push(t,r=CLEAR.ALL,n,i){let a=this.bind(t,r,n,i);return this._renderTargetStack.push({renderTarget:a,frame:i}),a}pop(){this._renderTargetStack.pop();let t=this._renderTargetStack[this._renderTargetStack.length-1];this.bind(t.renderTarget,!1,null,t.frame)}getRenderTarget(t){return t.isTexture&&(t=t.source),this._renderSurfaceToRenderTargetHash.get(t)??this._initRenderTarget(t)}copyToTexture(t,r,n,i,a){n.x<0&&(i.width+=n.x,a.x-=n.x,n.x=0),n.y<0&&(i.height+=n.y,a.y-=n.y,n.y=0);let{pixelWidth:o,pixelHeight:s}=t;return i.width=Math.min(i.width,o-n.x),i.height=Math.min(i.height,s-n.y),this.adaptor.copyToTexture(t,r,n,i,a)}ensureDepthStencil(){this.renderTarget.stencil||(this.renderTarget.stencil=!0,this.adaptor.startRenderPass(this.renderTarget,!1,null,this.viewport))}destroy(){this._renderer=null,this._renderSurfaceToRenderTargetHash.forEach((t,r)=>{t!==r&&t.destroy()}),this._renderSurfaceToRenderTargetHash.clear(),this._gpuRenderTargetHash=Object.create(null)}_initRenderTarget(t){let r=null;return CanvasSource.test(t)&&(t=getCanvasTexture(t)),t instanceof RenderTarget?r=t:t instanceof TextureSource&&(r=new RenderTarget({colorTextures:[t]}),CanvasSource.test(t.source.resource)&&(r.isRoot=!0),t.once("destroy",()=>{r.destroy();let t=this._gpuRenderTargetHash[r.uid];t&&(this._gpuRenderTargetHash[r.uid]=null,this.adaptor.destroyGpuRenderTarget(t))})),this._renderSurfaceToRenderTargetHash.set(t,r),r}getGpuRenderTarget(t){return this._gpuRenderTargetHash[t.uid]||(this._gpuRenderTargetHash[t.uid]=this.adaptor.initGpuRenderTarget(t))}}}}),init_GpuRenderTarget=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTarget.mjs"(){init_globals(),GpuRenderTarget=class{constructor(){this.contexts=[],this.msaaTextures=[],this.msaaSamples=1}}}}),init_GpuRenderTargetAdaptor=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTargetAdaptor.mjs"(){init_globals(),init_const3(),init_CanvasSource(),init_TextureSource(),init_GpuRenderTarget(),GpuRenderTargetAdaptor=class{init(t,r){this._renderer=t,this._renderTargetSystem=r}copyToTexture(t,r,n,i,a){let o=this._renderer,s=this._getGpuColorTexture(t),l=o.texture.getGpuSource(r.source);return o.encoder.commandEncoder.copyTextureToTexture({texture:s,origin:n},{texture:l,origin:a},i),r}startRenderPass(t,r=!0,n,i){let a=this._renderTargetSystem.getGpuRenderTarget(t);a.descriptor=this.getDescriptor(t,r,n),this._renderer.pipeline.setRenderTarget(a),this._renderer.encoder.beginRenderPass(a),this._renderer.encoder.setViewport(i)}finishRenderPass(){this._renderer.encoder.endRenderPass()}_getGpuColorTexture(t){let r=this._renderTargetSystem.getGpuRenderTarget(t);return r.contexts[0]?r.contexts[0].getCurrentTexture():this._renderer.texture.getGpuSource(t.colorTextures[0].source)}getDescriptor(t,r,n){let i;"boolean"==typeof r&&(r=r?CLEAR.ALL:CLEAR.NONE);let a=this._renderTargetSystem,o=a.getGpuRenderTarget(t),s=t.colorTextures.map((t,i)=>{let s,l,u=o.contexts[i];s=u?u.getCurrentTexture().createView():this._renderer.texture.getGpuSource(t).createView({mipLevelCount:1}),o.msaaTextures[i]&&(l=s,s=this._renderer.texture.getTextureView(o.msaaTextures[i]));let d=r&CLEAR.COLOR?"clear":"load";return n??(n=a.defaultClearColor),{view:s,resolveTarget:l,clearValue:n,storeOp:"store",loadOp:d}});if((t.stencil||t.depth)&&!t.depthStencilTexture&&(t.ensureDepthStencilTexture(),t.depthStencilTexture.source.sampleCount=o.msaa?4:1),t.depthStencilTexture){let n=r&CLEAR.STENCIL?"clear":"load",a=r&CLEAR.DEPTH?"clear":"load";i={view:this._renderer.texture.getGpuSource(t.depthStencilTexture.source).createView(),stencilStoreOp:"store",stencilLoadOp:n,depthClearValue:1,depthLoadOp:a,depthStoreOp:"store"}}return{colorAttachments:s,depthStencilAttachment:i}}clear(t,r=!0,n,i){if(!r)return;let{gpu:a,encoder:o}=this._renderer,s=a.device;if(null===o.commandEncoder){let a=s.createCommandEncoder(),o=this.getDescriptor(t,r,n),l=a.beginRenderPass(o);l.setViewport(i.x,i.y,i.width,i.height,0,1),l.end();let u=a.finish();s.queue.submit([u])}else this.startRenderPass(t,r,n,i)}initGpuRenderTarget(t){t.isRoot=!0;let r=new GpuRenderTarget;return t.colorTextures.forEach((t,n)=>{if(CanvasSource.test(t.resource)){let i=t.resource.getContext("webgpu"),a=t.transparent?"premultiplied":"opaque";try{i.configure({device:this._renderer.gpu.device,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.COPY_SRC,format:"bgra8unorm",alphaMode:a})}catch(t){import_console_browserify.default.error(t)}r.contexts[n]=i}if(r.msaa=t.source.antialias,t.source.antialias){let t=new TextureSource({width:0,height:0,sampleCount:4});r.msaaTextures[n]=t}}),r.msaa&&(r.msaaSamples=4,t.depthStencilTexture&&(t.depthStencilTexture.source.sampleCount=4)),r}destroyGpuRenderTarget(t){t.contexts.forEach(t=>{t.unconfigure()}),t.msaaTextures.forEach(t=>{t.destroy()}),t.msaaTextures.length=0,t.contexts.length=0}ensureDepthStencilTexture(t){let r=this._renderTargetSystem.getGpuRenderTarget(t);t.depthStencilTexture&&r.msaa&&(t.depthStencilTexture.source.sampleCount=4)}resizeGpuRenderTarget(t){let r=this._renderTargetSystem.getGpuRenderTarget(t);r.width=t.width,r.height=t.height,r.msaa&&t.colorTextures.forEach((t,n)=>{let i=r.msaaTextures[n];i?.resize(t.source.width,t.source.height,t.source._resolution)})}}}}),init_GpuRenderTargetSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTargetSystem.mjs"(){init_globals(),init_Extensions(),init_RenderTargetSystem(),init_GpuRenderTargetAdaptor(),(GpuRenderTargetSystem=class extends RenderTargetSystem{constructor(t){super(t),this.adaptor=new GpuRenderTargetAdaptor,this.adaptor.init(t,this)}}).extension={type:[ExtensionType.WebGPUSystem],name:"renderTarget"}}}),init_GpuShaderSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/shader/GpuShaderSystem.mjs"(){init_globals(),init_Extensions(),(GpuShaderSystem=class{constructor(){this._gpuProgramData=Object.create(null)}contextChange(t){this._gpu=t}getProgramData(t){return this._gpuProgramData[t._layoutKey]||this._createGPUProgramData(t)}_createGPUProgramData(t){let r=this._gpu.device,n=t.gpuLayout.map(t=>r.createBindGroupLayout({entries:t})),i={bindGroupLayouts:n};return this._gpuProgramData[t._layoutKey]={bindGroups:n,pipeline:r.createPipelineLayout(i)},this._gpuProgramData[t._layoutKey]}destroy(){this._gpu=null,this._gpuProgramData=null}}).extension={type:[ExtensionType.WebGPUSystem],name:"shader"}}}),init_GpuBlendModesToPixi=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/state/GpuBlendModesToPixi.mjs"(){init_globals(),(GpuBlendModesToPixi={}).normal={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}},GpuBlendModesToPixi.add={alpha:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one",operation:"add"}},GpuBlendModesToPixi.multiply={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"dst",dstFactor:"one-minus-src-alpha",operation:"add"}},GpuBlendModesToPixi.screen={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src",operation:"add"}},GpuBlendModesToPixi.overlay={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src",operation:"add"}},GpuBlendModesToPixi.none={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"zero",dstFactor:"zero",operation:"add"}},GpuBlendModesToPixi["normal-npm"]={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha",operation:"add"}},GpuBlendModesToPixi["add-npm"]={alpha:{srcFactor:"one",dstFactor:"one",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one",operation:"add"}},GpuBlendModesToPixi["screen-npm"]={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one-minus-src",operation:"add"}},GpuBlendModesToPixi.erase={alpha:{srcFactor:"zero",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"zero",dstFactor:"one-minus-src",operation:"add"}}}}),init_GpuStateSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/state/GpuStateSystem.mjs"(){init_globals(),init_Extensions(),init_State(),init_GpuBlendModesToPixi(),(GpuStateSystem=class{constructor(){this.defaultState=new State,this.defaultState.blend=!0}contextChange(t){this.gpu=t}getColorTargets(t){return[{format:"bgra8unorm",writeMask:0,blend:GpuBlendModesToPixi[t.blendMode]||GpuBlendModesToPixi.normal}]}destroy(){this.gpu=null}}).extension={type:[ExtensionType.WebGPUSystem],name:"state"}}}),init_gpuUploadBufferImageResource=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadBufferImageResource.mjs"(){init_globals(),gpuUploadBufferImageResource={type:"image",upload(t,r,n){let i=t.resource,a=(0|t.pixelWidth)*(0|t.pixelHeight),o=i.byteLength/a;n.device.queue.writeTexture({texture:r},i,{offset:0,rowsPerImage:t.pixelHeight,bytesPerRow:t.pixelHeight*o},{width:t.pixelWidth,height:t.pixelHeight,depthOrArrayLayers:1})}}}}),init_gpuUploadCompressedTextureResource=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadCompressedTextureResource.mjs"(){init_globals(),blockDataMap={"bc1-rgba-unorm":{blockBytes:8,blockWidth:4,blockHeight:4},"bc2-rgba-unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"bc3-rgba-unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"bc7-rgba-unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"etc1-rgb-unorm":{blockBytes:8,blockWidth:4,blockHeight:4},"etc2-rgba8unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"astc-4x4-unorm":{blockBytes:16,blockWidth:4,blockHeight:4}},defaultBlockData={blockBytes:4,blockWidth:1,blockHeight:1},gpuUploadCompressedTextureResource={type:"compressed",upload(t,r,n){let i=t.pixelWidth,a=t.pixelHeight,o=blockDataMap[t.format]||defaultBlockData;for(let s=0;s<t.resource.length;s++){let l=t.resource[s],u=Math.ceil(i/o.blockWidth)*o.blockBytes;n.device.queue.writeTexture({texture:r,mipLevel:s},l,{offset:0,bytesPerRow:u},{width:Math.ceil(i/o.blockWidth)*o.blockWidth,height:Math.ceil(a/o.blockHeight)*o.blockHeight,depthOrArrayLayers:1}),i=Math.max(i>>1,1),a=Math.max(a>>1,1)}}}}}),init_gpuUploadImageSource=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadImageSource.mjs"(){init_globals(),gpuUploadImageResource={type:"image",upload(t,r,n){let i=t.resource;if(!i)return;let a=Math.min(r.width,t.resourceWidth||t.pixelWidth),o=Math.min(r.height,t.resourceHeight||t.pixelHeight),s="premultiply-alpha-on-upload"===t.alphaMode;n.device.queue.copyExternalImageToTexture({source:i},{texture:r,premultipliedAlpha:s},{width:a,height:o})}}}}),init_gpuUploadVideoSource=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadVideoSource.mjs"(){init_globals(),init_gpuUploadImageSource(),gpuUploadVideoResource={type:"video",upload(t,r,n){gpuUploadImageResource.upload(t,r,n)}}}}),init_GpuMipmapGenerator=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/utils/GpuMipmapGenerator.mjs"(){init_globals(),GpuMipmapGenerator=class{constructor(t){this.device=t,this.sampler=t.createSampler({minFilter:"linear"}),this.pipelines={}}_getMipmapPipeline(t){let r=this.pipelines[t];return r||(this.mipmapShaderModule||(this.mipmapShaderModule=this.device.createShaderModule({code:"\n var<private> pos : array<vec2<f32>, 3> = array<vec2<f32>, 3>(\n vec2<f32>(-1.0, -1.0), vec2<f32>(-1.0, 3.0), vec2<f32>(3.0, -1.0));\n\n struct VertexOutput {\n @builtin(position) position : vec4<f32>,\n @location(0) texCoord : vec2<f32>,\n };\n\n @vertex\n fn vertexMain(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput {\n var output : VertexOutput;\n output.texCoord = pos[vertexIndex] * vec2<f32>(0.5, -0.5) + vec2<f32>(0.5);\n output.position = vec4<f32>(pos[vertexIndex], 0.0, 1.0);\n return output;\n }\n\n @group(0) @binding(0) var imgSampler : sampler;\n @group(0) @binding(1) var img : texture_2d<f32>;\n\n @fragment\n fn fragmentMain(@location(0) texCoord : vec2<f32>) -> @location(0) vec4<f32> {\n return textureSample(img, imgSampler, texCoord);\n }\n "})),r=this.device.createRenderPipeline({layout:"auto",vertex:{module:this.mipmapShaderModule,entryPoint:"vertexMain"},fragment:{module:this.mipmapShaderModule,entryPoint:"fragmentMain",targets:[{format:t}]}}),this.pipelines[t]=r),r}generateMipmap(t){let r=this._getMipmapPipeline(t.format);if("3d"===t.dimension||"1d"===t.dimension)throw Error("Generating mipmaps for non-2d textures is currently unsupported!");let n=t,i=t.depthOrArrayLayers||1,a=t.usage&GPUTextureUsage.RENDER_ATTACHMENT;if(!a){let r={size:{width:Math.ceil(t.width/2),height:Math.ceil(t.height/2),depthOrArrayLayers:i},format:t.format,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC|GPUTextureUsage.RENDER_ATTACHMENT,mipLevelCount:t.mipLevelCount-1};n=this.device.createTexture(r)}let o=this.device.createCommandEncoder({}),s=r.getBindGroupLayout(0);for(let l=0;l<i;++l){let i=t.createView({baseMipLevel:0,mipLevelCount:1,dimension:"2d",baseArrayLayer:l,arrayLayerCount:1}),u=+!!a;for(let a=1;a<t.mipLevelCount;++a){let t=n.createView({baseMipLevel:u++,mipLevelCount:1,dimension:"2d",baseArrayLayer:l,arrayLayerCount:1}),a=o.beginRenderPass({colorAttachments:[{view:t,storeOp:"store",loadOp:"clear",clearValue:{r:0,g:0,b:0,a:0}}]}),d=this.device.createBindGroup({layout:s,entries:[{binding:0,resource:this.sampler},{binding:1,resource:i}]});a.setPipeline(r),a.setBindGroup(0,d),a.draw(3,1,0,0),a.end(),i=t}}if(!a){let r={width:Math.ceil(t.width/2),height:Math.ceil(t.height/2),depthOrArrayLayers:i};for(let i=1;i<t.mipLevelCount;++i)o.copyTextureToTexture({texture:n,mipLevel:i-1},{texture:t,mipLevel:i},r),r.width=Math.ceil(r.width/2),r.height=Math.ceil(r.height/2)}return this.device.queue.submit([o.finish()]),a||n.destroy(),t}}}}),init_GpuTextureSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/GpuTextureSystem.mjs"(){init_globals(),init_adapter(),init_Extensions(),init_CanvasPool(),init_BindGroup(),init_gpuUploadBufferImageResource(),init_gpuUploadCompressedTextureResource(),init_gpuUploadImageSource(),init_gpuUploadVideoSource(),init_GpuMipmapGenerator(),(GpuTextureSystem=class{constructor(t){this.managedTextures=[],this._gpuSources=Object.create(null),this._gpuSamplers=Object.create(null),this._bindGroupHash=Object.create(null),this._textureViewHash=Object.create(null),this._uploads={image:gpuUploadImageResource,buffer:gpuUploadBufferImageResource,video:gpuUploadVideoResource,compressed:gpuUploadCompressedTextureResource},this._renderer=t}contextChange(t){this._gpu=t}initSource(t){if(t.autoGenerateMipmaps){let r=Math.max(t.pixelWidth,t.pixelHeight);t.mipLevelCount=Math.floor(Math.log2(r))+1}let r=GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST;"compressed"!==t.uploadMethodId&&(r|=GPUTextureUsage.RENDER_ATTACHMENT,r|=GPUTextureUsage.COPY_SRC);let n=blockDataMap[t.format]||{blockBytes:4,blockWidth:1,blockHeight:1},i=Math.ceil(t.pixelWidth/n.blockWidth)*n.blockWidth,a=Math.ceil(t.pixelHeight/n.blockHeight)*n.blockHeight,o={label:t.label,size:{width:i,height:a},format:t.format,sampleCount:t.sampleCount,mipLevelCount:t.mipLevelCount,dimension:t.dimension,usage:r},s=this._gpu.device.createTexture(o);return this._gpuSources[t.uid]=s,this.managedTextures.includes(t)||(t.on("update",this.onSourceUpdate,this),t.on("resize",this.onSourceResize,this),t.on("destroy",this.onSourceDestroy,this),t.on("unload",this.onSourceUnload,this),t.on("updateMipmaps",this.onUpdateMipmaps,this),this.managedTextures.push(t)),this.onSourceUpdate(t),s}onSourceUpdate(t){let r=this.getGpuSource(t);r&&(this._uploads[t.uploadMethodId]&&this._uploads[t.uploadMethodId].upload(t,r,this._gpu),t.autoGenerateMipmaps&&t.mipLevelCount>1&&this.onUpdateMipmaps(t))}onSourceUnload(t){let r=this._gpuSources[t.uid];r&&(this._gpuSources[t.uid]=null,r.destroy())}onUpdateMipmaps(t){this._mipmapGenerator||(this._mipmapGenerator=new GpuMipmapGenerator(this._gpu.device));let r=this.getGpuSource(t);this._mipmapGenerator.generateMipmap(r)}onSourceDestroy(t){t.off("update",this.onSourceUpdate,this),t.off("unload",this.onSourceUnload,this),t.off("destroy",this.onSourceDestroy,this),t.off("resize",this.onSourceResize,this),t.off("updateMipmaps",this.onUpdateMipmaps,this),this.managedTextures.splice(this.managedTextures.indexOf(t),1),this.onSourceUnload(t)}onSourceResize(t){let r=this._gpuSources[t.uid];r?r.width===t.pixelWidth&&r.height===t.pixelHeight||(this._textureViewHash[t.uid]=null,this._bindGroupHash[t.uid]=null,this.onSourceUnload(t),this.initSource(t)):this.initSource(t)}_initSampler(t){return this._gpuSamplers[t._resourceId]=this._gpu.device.createSampler(t),this._gpuSamplers[t._resourceId]}getGpuSampler(t){return this._gpuSamplers[t._resourceId]||this._initSampler(t)}getGpuSource(t){return this._gpuSources[t.uid]||this.initSource(t)}getTextureBindGroup(t){return this._bindGroupHash[t.uid]??this._createTextureBindGroup(t)}_createTextureBindGroup(t){let r=t.source,n=r.uid;return this._bindGroupHash[n]=new BindGroup({0:r,1:r.style}),this._bindGroupHash[n]}getTextureView(t){let r=t.source;return this._textureViewHash[r.uid]??this._createTextureView(r)}_createTextureView(t){return this._textureViewHash[t.uid]=this.getGpuSource(t).createView(),this._textureViewHash[t.uid]}generateCanvas(t){let r=this._renderer,n=r.gpu.device.createCommandEncoder(),i=DOMAdapter.get().createCanvas();i.width=t.source.pixelWidth,i.height=t.source.pixelHeight;let a=i.getContext("webgpu");return a.configure({device:r.gpu.device,usage:GPUTextureUsage.COPY_DST|GPUTextureUsage.COPY_SRC,format:navigator.gpu.getPreferredCanvasFormat(),alphaMode:"premultiplied"}),n.copyTextureToTexture({texture:r.texture.getGpuSource(t.source),origin:{x:0,y:0}},{texture:a.getCurrentTexture()},{width:i.width,height:i.height}),r.gpu.device.queue.submit([n.finish()]),i}getPixels(t){let r=this.generateCanvas(t),n=CanvasPool.getOptimalCanvasAndContext(r.width,r.height),i=n.context;i.drawImage(r,0,0);let{width:a,height:o}=r,s=new Uint8ClampedArray(i.getImageData(0,0,a,o).data.buffer);return CanvasPool.returnCanvasAndContext(n),{pixels:s,width:a,height:o}}destroy(){for(let t of(this.managedTextures.slice().forEach(t=>this.onSourceDestroy(t)),this.managedTextures=null,Object.keys(this._bindGroupHash))){let r=Number(t),n=this._bindGroupHash[r];n?.destroy(),this._bindGroupHash[r]=null}this._gpu=null,this._mipmapGenerator=null,this._gpuSources=null,this._bindGroupHash=null,this._textureViewHash=null,this._gpuSamplers=null}}).extension={type:[ExtensionType.WebGPUSystem],name:"texture"}}}),WebGPURenderer_exports={};__export(WebGPURenderer_exports,{WebGPURenderer:()=>WebGPURenderer});var GlGraphicsAdaptor,GlMeshAdaptor,GlBatchAdaptor,BUFFER_TYPE,GlBuffer,GlBufferSystem,_GlContextSystem,GlContextSystem,GL_FORMATS,GL_TARGETS,GL_TYPES,infoMap,init_WebGPURenderer=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/WebGPURenderer.mjs"(){init_globals(),init_Extensions(),init_GpuGraphicsAdaptor(),init_GpuMeshAdapter(),init_GpuBatchAdaptor(),init_AbstractRenderer(),init_SharedSystems(),init_types2(),init_BindGroupSystem(),init_GpuBufferSystem(),init_GpuColorMaskSystem(),init_GpuDeviceSystem(),init_GpuEncoderSystem(),init_GpuStencilSystem(),init_GpuUboSystem(),init_GpuUniformBatchPipe(),init_PipelineSystem(),init_GpuRenderTargetSystem(),init_GpuShaderSystem(),init_GpuStateSystem(),init_GpuTextureSystem(),DefaultWebGPUSystems=[...SharedSystems,GpuUboSystem,GpuEncoderSystem,GpuDeviceSystem,GpuBufferSystem,GpuTextureSystem,GpuRenderTargetSystem,GpuShaderSystem,GpuStateSystem,PipelineSystem,GpuColorMaskSystem,GpuStencilSystem,BindGroupSystem],DefaultWebGPUPipes=[...SharedRenderPipes,GpuUniformBatchPipe],DefaultWebGPUAdapters=[GpuBatchAdaptor,GpuMeshAdapter,GpuGraphicsAdaptor],systems=[],renderPipes=[],renderPipeAdaptors=[],extensions.handleByNamedList(ExtensionType.WebGPUSystem,systems),extensions.handleByNamedList(ExtensionType.WebGPUPipes,renderPipes),extensions.handleByNamedList(ExtensionType.WebGPUPipesAdaptor,renderPipeAdaptors),extensions.add(...DefaultWebGPUSystems,...DefaultWebGPUPipes,...DefaultWebGPUAdapters),WebGPURenderer=class extends AbstractRenderer{constructor(){super({name:"webgpu",type:RendererType.WEBGPU,systems:systems,renderPipes:renderPipes,renderPipeAdaptors:renderPipeAdaptors})}}}}),init_GlGraphicsAdaptor=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/graphics/gl/GlGraphicsAdaptor.mjs"(){init_globals(),init_Extensions(),init_Matrix(),init_const5(),init_compileHighShaderToProgram(),init_colorBit(),init_generateTextureBatchBit(),init_localUniformBit(),init_roundPixelsBit(),init_batchSamplersUniformGroup(),init_Shader(),init_UniformGroup(),(GlGraphicsAdaptor=class{init(){let t=new UniformGroup({uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uTransformMatrix:{value:new Matrix,type:"mat3x3<f32>"},uRound:{value:0,type:"f32"}}),r=compileHighShaderGlProgram({name:"graphics",bits:[colorBitGl,generateTextureBatchBitGl(MAX_TEXTURES),localUniformBitGl,roundPixelsBitGl]});this.shader=new Shader({glProgram:r,resources:{localUniforms:t,batchSamplers:batchSamplersUniformGroup}})}execute(t,r){let n=r.context,i=n.customShader||this.shader,a=t.renderer,{geometry:o,instructions:s}=a.graphicsContext.getContextRenderData(n);i.groups[0]=a.globalUniforms.bindGroup,a.state.set(t.state),a.shader.bind(i),a.geometry.bind(o,i.glProgram);let l=s.instructions;for(let t=0;t<s.instructionSize;t++){let r=l[t];if(r.size){for(let t=0;t<r.textures.textures.length;t++)a.texture.bind(r.textures.textures[t],t);a.geometry.draw("triangle-list",r.size,r.start)}}}destroy(){this.shader.destroy(!0),this.shader=null}}).extension={type:[ExtensionType.WebGLPipesAdaptor],name:"graphics"}}}),init_GlMeshAdaptor=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/mesh/gl/GlMeshAdaptor.mjs"(){init_globals(),init_Extensions(),init_Matrix(),init_compileHighShaderToProgram(),init_localUniformBit(),init_roundPixelsBit(),init_textureBit(),init_Shader(),init_Texture(),init_warn2(),(GlMeshAdaptor=class{init(){let t=compileHighShaderGlProgram({name:"mesh",bits:[localUniformBitGl,textureBitGl,roundPixelsBitGl]});this._shader=new Shader({glProgram:t,resources:{uTexture:Texture.EMPTY.source,textureUniforms:{uTextureMatrix:{type:"mat3x3<f32>",value:new Matrix}}}})}execute(t,r){let n=t.renderer,i=r._shader;if(i){if(!i.glProgram)return void warn("Mesh shader has no glProgram",r.shader)}else{i=this._shader;let t=r.texture,n=t.source;i.resources.uTexture=n,i.resources.uSampler=n.style,i.resources.textureUniforms.uniforms.uTextureMatrix=t.textureMatrix.mapCoord}i.groups[100]=n.globalUniforms.bindGroup,i.groups[101]=t.localUniformsBindGroup,n.encoder.draw({geometry:r._geometry,shader:i,state:r.state})}destroy(){this._shader.destroy(!0),this._shader=null}}).extension={type:[ExtensionType.WebGLPipesAdaptor],name:"mesh"}}}),init_GlBatchAdaptor=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/batcher/gl/GlBatchAdaptor.mjs"(){init_globals(),init_Extensions(),init_compileHighShaderToProgram(),init_colorBit(),init_generateTextureBatchBit(),init_roundPixelsBit(),init_batchSamplersUniformGroup(),init_Shader(),init_State(),init_const5(),(GlBatchAdaptor=class{constructor(){this._didUpload=!1,this._tempState=State.for2d()}init(t){let r=compileHighShaderGlProgram({name:"batch",bits:[colorBitGl,generateTextureBatchBitGl(MAX_TEXTURES),roundPixelsBitGl]});this._shader=new Shader({glProgram:r,resources:{batchSamplers:batchSamplersUniformGroup}}),t.renderer.runners.contextChange.add(this)}contextChange(){this._didUpload=!1}start(t,r){let n=t.renderer;n.shader.bind(this._shader,this._didUpload),n.shader.updateUniformGroup(n.globalUniforms.uniformGroup),n.geometry.bind(r,this._shader.glProgram)}execute(t,r){let n=t.renderer;this._didUpload=!0,this._tempState.blendMode=r.blendMode,n.state.set(this._tempState);let i=r.textures.textures;for(let t=0;t<i.length;t++)n.texture.bind(i[t],t);n.geometry.draw("triangle-list",r.size,r.start)}destroy(){this._shader.destroy(!0),this._shader=null}}).extension={type:[ExtensionType.WebGLPipesAdaptor],name:"batch"}}}),init_const9=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/buffer/const.mjs"(){let t;init_globals(),(t=BUFFER_TYPE||{})[t.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",t[t.ARRAY_BUFFER=34962]="ARRAY_BUFFER",t[t.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",BUFFER_TYPE=t}}),init_GlBuffer=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/buffer/GlBuffer.mjs"(){init_globals(),GlBuffer=class{constructor(t,r){this.buffer=t||null,this.updateID=-1,this.byteLength=-1,this.type=r}}}}),init_GlBufferSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/buffer/GlBufferSystem.mjs"(){init_globals(),init_Extensions(),init_const(),init_const9(),init_GlBuffer(),(GlBufferSystem=class{constructor(t){this._gpuBuffers=Object.create(null),this._boundBufferBases=Object.create(null),this._renderer=t}destroy(){this._renderer=null,this._gl=null,this._gpuBuffers=null,this._boundBufferBases=null}contextChange(){this._gpuBuffers=Object.create(null),this._gl=this._renderer.gl}getGlBuffer(t){return this._gpuBuffers[t.uid]||this.createGLBuffer(t)}bind(t){let{_gl:r}=this,n=this.getGlBuffer(t);r.bindBuffer(n.type,n.buffer)}bindBufferBase(t,r){let{_gl:n}=this;if(this._boundBufferBases[r]!==t){let i=this.getGlBuffer(t);this._boundBufferBases[r]=t,n.bindBufferBase(n.UNIFORM_BUFFER,r,i.buffer)}}bindBufferRange(t,r,n){let{_gl:i}=this;n=n||0;let a=this.getGlBuffer(t);i.bindBufferRange(i.UNIFORM_BUFFER,r||0,a.buffer,256*n,256)}updateBuffer(t){let{_gl:r}=this,n=this.getGlBuffer(t);if(t._updateID===n.updateID)return n;n.updateID=t._updateID,r.bindBuffer(n.type,n.buffer);let i=t.data;if(n.byteLength>=t.data.byteLength)r.bufferSubData(n.type,0,i,0,t._updateSize/i.BYTES_PER_ELEMENT);else{let a=t.descriptor.usage&BufferUsage.STATIC?r.STATIC_DRAW:r.DYNAMIC_DRAW;n.byteLength=i.byteLength,r.bufferData(n.type,i,a)}return n}destroyAll(){let t=this._gl;for(let r in this._gpuBuffers)t.deleteBuffer(this._gpuBuffers[r].buffer);this._gpuBuffers=Object.create(null)}onBufferDestroy(t,r){let n=this._gpuBuffers[t.uid],i=this._gl;r||i.deleteBuffer(n.buffer),this._gpuBuffers[t.uid]=null}createGLBuffer(t){let{_gl:r}=this,n=BUFFER_TYPE.ARRAY_BUFFER;t.descriptor.usage&BufferUsage.INDEX?n=BUFFER_TYPE.ELEMENT_ARRAY_BUFFER:t.descriptor.usage&BufferUsage.UNIFORM&&(n=BUFFER_TYPE.UNIFORM_BUFFER);let i=new GlBuffer(r.createBuffer(),n);return this._gpuBuffers[t.uid]=i,t.on("destroy",this.onBufferDestroy,this),i}}).extension={type:[ExtensionType.WebGLSystem],name:"buffer"}}}),init_GlContextSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/context/GlContextSystem.mjs"(){init_globals(),init_adapter(),init_Extensions(),init_warn2(),(_GlContextSystem=class t{constructor(t){this.supports={uint32Indices:!0,uniformBufferObject:!0,vertexArrayObject:!0,srgbTextures:!0,nonPowOf2wrapping:!0,msaa:!0,nonPowOf2mipmaps:!0},this._renderer=t,this.extensions=Object.create(null),this.handleContextLost=this.handleContextLost.bind(this),this.handleContextRestored=this.handleContextRestored.bind(this)}get isLost(){return!this.gl||this.gl.isContextLost()}contextChange(t){this.gl=t,this._renderer.gl=t}init(r){if((r={...t.defaultOptions,...r}).context)this.initFromContext(r.context);else{let t=this._renderer.background.alpha<1,n=r.premultipliedAlpha??!0,i=r.antialias&&!this._renderer.backBuffer.useBackBuffer;this.createContext(r.preferWebGLVersion,{alpha:t,premultipliedAlpha:n,antialias:i,stencil:!0,preserveDrawingBuffer:r.preserveDrawingBuffer,powerPreference:r.powerPreference??"default"})}}initFromContext(t){this.gl=t,this.webGLVersion=t instanceof DOMAdapter.get().getWebGLRenderingContext()?1:2,this.getExtensions(),this.validateContext(t),this._renderer.runners.contextChange.emit(t);let r=this._renderer.view.canvas;r.addEventListener("webglcontextlost",this.handleContextLost,!1),r.addEventListener("webglcontextrestored",this.handleContextRestored,!1)}createContext(t,r){let n,i=this._renderer.view.canvas;if(2===t&&(n=i.getContext("webgl2",r)),!n&&!(n=i.getContext("webgl",r)))throw Error("This browser does not support WebGL. Try using the canvas renderer");this.gl=n,this.initFromContext(this.gl)}getExtensions(){let{gl:t}=this,r={anisotropicFiltering:t.getExtension("EXT_texture_filter_anisotropic"),floatTextureLinear:t.getExtension("OES_texture_float_linear"),s3tc:t.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:t.getExtension("WEBGL_compressed_texture_s3tc_srgb"),etc:t.getExtension("WEBGL_compressed_texture_etc"),etc1:t.getExtension("WEBGL_compressed_texture_etc1"),pvrtc:t.getExtension("WEBGL_compressed_texture_pvrtc")||t.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),atc:t.getExtension("WEBGL_compressed_texture_atc"),astc:t.getExtension("WEBGL_compressed_texture_astc"),bptc:t.getExtension("EXT_texture_compression_bptc"),rgtc:t.getExtension("EXT_texture_compression_rgtc"),loseContext:t.getExtension("WEBGL_lose_context")};if(1===this.webGLVersion)this.extensions={...r,drawBuffers:t.getExtension("WEBGL_draw_buffers"),depthTexture:t.getExtension("WEBGL_depth_texture"),vertexArrayObject:t.getExtension("OES_vertex_array_object")||t.getExtension("MOZ_OES_vertex_array_object")||t.getExtension("WEBKIT_OES_vertex_array_object"),uint32ElementIndex:t.getExtension("OES_element_index_uint"),floatTexture:t.getExtension("OES_texture_float"),floatTextureLinear:t.getExtension("OES_texture_float_linear"),textureHalfFloat:t.getExtension("OES_texture_half_float"),textureHalfFloatLinear:t.getExtension("OES_texture_half_float_linear"),vertexAttribDivisorANGLE:t.getExtension("ANGLE_instanced_arrays"),srgb:t.getExtension("EXT_sRGB")};else{this.extensions={...r,colorBufferFloat:t.getExtension("EXT_color_buffer_float")};let n=t.getExtension("WEBGL_provoking_vertex");n&&n.provokingVertexWEBGL(n.FIRST_VERTEX_CONVENTION_WEBGL)}}handleContextLost(t){t.preventDefault(),this._contextLossForced&&(this._contextLossForced=!1,setTimeout(()=>{this.gl.isContextLost()&&this.extensions.loseContext?.restoreContext()},0))}handleContextRestored(){this._renderer.runners.contextChange.emit(this.gl)}destroy(){let t=this._renderer.view.canvas;this._renderer=null,t.removeEventListener("webglcontextlost",this.handleContextLost),t.removeEventListener("webglcontextrestored",this.handleContextRestored),this.gl.useProgram(null),this.extensions.loseContext?.loseContext()}forceContextLoss(){this.extensions.loseContext?.loseContext(),this._contextLossForced=!0}validateContext(t){let r=t.getContextAttributes();r&&!r.stencil&&warn("Provided WebGL context does not have a stencil buffer, masks may not render correctly");let n=this.supports,i=2===this.webGLVersion,a=this.extensions;n.uint32Indices=i||!!a.uint32ElementIndex,n.uniformBufferObject=i,n.vertexArrayObject=i||!!a.vertexArrayObject,n.srgbTextures=i||!!a.srgb,n.nonPowOf2wrapping=i,n.nonPowOf2mipmaps=i,n.msaa=i,n.uint32Indices||warn("Provided WebGL context does not support 32 index buffer, large scenes may not render correctly")}}).extension={type:[ExtensionType.WebGLSystem],name:"context"},_GlContextSystem.defaultOptions={context:null,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:void 0,preferWebGLVersion:2},GlContextSystem=_GlContextSystem}}),init_const10=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/const.mjs"(){let t,r,n;init_globals(),(t=GL_FORMATS||{})[t.RGBA=6408]="RGBA",t[t.RGB=6407]="RGB",t[t.RG=33319]="RG",t[t.RED=6403]="RED",t[t.RGBA_INTEGER=36249]="RGBA_INTEGER",t[t.RGB_INTEGER=36248]="RGB_INTEGER",t[t.RG_INTEGER=33320]="RG_INTEGER",t[t.RED_INTEGER=36244]="RED_INTEGER",t[t.ALPHA=6406]="ALPHA",t[t.LUMINANCE=6409]="LUMINANCE",t[t.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",t[t.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",t[t.DEPTH_STENCIL=34041]="DEPTH_STENCIL",GL_FORMATS=t,(r=GL_TARGETS||{})[r.TEXTURE_2D=3553]="TEXTURE_2D",r[r.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",r[r.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",r[r.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",r[r.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",r[r.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",r[r.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",r[r.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",r[r.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",GL_TARGETS=r,(n=GL_TYPES||{})[n.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",n[n.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",n[n.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",n[n.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",n[n.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",n[n.UNSIGNED_INT=5125]="UNSIGNED_INT",n[n.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",n[n.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",n[n.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",n[n.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",n[n.BYTE=5120]="BYTE",n[n.SHORT=5122]="SHORT",n[n.INT=5124]="INT",n[n.FLOAT=5126]="FLOAT",n[n.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",n[n.HALF_FLOAT=36193]="HALF_FLOAT",GL_TYPES=n}});function getGlTypeFromFormat(t){return infoMap[t]??infoMap.float32}var topologyToGlMap,GlGeometrySystem,bigTriangleGeometry,_GlBackBufferSystem,GlBackBufferSystem,GlColorMaskSystem,GlEncoderSystem,GlStencilSystem,GlRenderTarget,GlRenderTargetAdaptor,GlRenderTargetSystem,init_getGlTypeFromFormat=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/geometry/utils/getGlTypeFromFormat.mjs"(){init_globals(),init_const10(),infoMap={uint8x2:GL_TYPES.UNSIGNED_BYTE,uint8x4:GL_TYPES.UNSIGNED_BYTE,sint8x2:GL_TYPES.BYTE,sint8x4:GL_TYPES.BYTE,unorm8x2:GL_TYPES.UNSIGNED_BYTE,unorm8x4:GL_TYPES.UNSIGNED_BYTE,snorm8x2:GL_TYPES.BYTE,snorm8x4:GL_TYPES.BYTE,uint16x2:GL_TYPES.UNSIGNED_SHORT,uint16x4:GL_TYPES.UNSIGNED_SHORT,sint16x2:GL_TYPES.SHORT,sint16x4:GL_TYPES.SHORT,unorm16x2:GL_TYPES.UNSIGNED_SHORT,unorm16x4:GL_TYPES.UNSIGNED_SHORT,snorm16x2:GL_TYPES.SHORT,snorm16x4:GL_TYPES.SHORT,float16x2:GL_TYPES.HALF_FLOAT,float16x4:GL_TYPES.HALF_FLOAT,float32:GL_TYPES.FLOAT,float32x2:GL_TYPES.FLOAT,float32x3:GL_TYPES.FLOAT,float32x4:GL_TYPES.FLOAT,uint32:GL_TYPES.UNSIGNED_INT,uint32x2:GL_TYPES.UNSIGNED_INT,uint32x3:GL_TYPES.UNSIGNED_INT,uint32x4:GL_TYPES.UNSIGNED_INT,sint32:GL_TYPES.INT,sint32x2:GL_TYPES.INT,sint32x3:GL_TYPES.INT,sint32x4:GL_TYPES.INT}}}),init_GlGeometrySystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/geometry/GlGeometrySystem.mjs"(){init_globals(),init_Extensions(),init_getAttributeInfoFromFormat(),init_ensureAttributes(),init_getGlTypeFromFormat(),topologyToGlMap={"point-list":0,"line-list":1,"line-strip":3,"triangle-list":4,"triangle-strip":5},(GlGeometrySystem=class{constructor(t){this._geometryVaoHash=Object.create(null),this._renderer=t,this._activeGeometry=null,this._activeVao=null,this.hasVao=!0,this.hasInstance=!0}contextChange(){let t=this.gl=this._renderer.gl;if(!this._renderer.context.supports.vertexArrayObject)throw Error("[PixiJS] Vertex Array Objects are not supported on this device");let r=this._renderer.context.extensions.vertexArrayObject;r&&(t.createVertexArray=()=>r.createVertexArrayOES(),t.bindVertexArray=t=>r.bindVertexArrayOES(t),t.deleteVertexArray=t=>r.deleteVertexArrayOES(t));let n=this._renderer.context.extensions.vertexAttribDivisorANGLE;n&&(t.drawArraysInstanced=(t,r,i,a)=>{n.drawArraysInstancedANGLE(t,r,i,a)},t.drawElementsInstanced=(t,r,i,a,o)=>{n.drawElementsInstancedANGLE(t,r,i,a,o)},t.vertexAttribDivisor=(t,r)=>n.vertexAttribDivisorANGLE(t,r)),this._activeGeometry=null,this._activeVao=null,this._geometryVaoHash=Object.create(null)}bind(t,r){let n=this.gl;this._activeGeometry=t;let i=this.getVao(t,r);this._activeVao!==i&&(this._activeVao=i,n.bindVertexArray(i)),this.updateBuffers()}reset(){this.unbind()}updateBuffers(){let t=this._activeGeometry,r=this._renderer.buffer;for(let n=0;n<t.buffers.length;n++){let i=t.buffers[n];r.updateBuffer(i)}}checkCompatibility(t,r){let n=t.attributes,i=r._attributeData;for(let t in i)if(!n[t])throw Error(`shader and geometry incompatible, geometry missing the "${t}" attribute`)}getSignature(t,r){let n=t.attributes,i=r._attributeData,a=["g",t.uid];for(let t in n)i[t]&&a.push(t,i[t].location);return a.join("-")}getVao(t,r){return this._geometryVaoHash[t.uid]?.[r._key]||this.initGeometryVao(t,r)}initGeometryVao(t,r,n=!0){let i=this._renderer.gl,a=this._renderer.buffer;this._renderer.shader._getProgramData(r),this.checkCompatibility(t,r);let o=this.getSignature(t,r);this._geometryVaoHash[t.uid]||(this._geometryVaoHash[t.uid]=Object.create(null),t.on("destroy",this.onGeometryDestroy,this));let s=this._geometryVaoHash[t.uid],l=s[o];if(l)return s[r._key]=l,l;ensureAttributes(t,r._attributeData);let u=t.buffers;l=i.createVertexArray(),i.bindVertexArray(l);for(let t=0;t<u.length;t++){let r=u[t];a.bind(r)}return this.activateVao(t,r),s[r._key]=l,s[o]=l,i.bindVertexArray(null),l}onGeometryDestroy(t,r){let n=this._geometryVaoHash[t.uid],i=this.gl;if(n){if(r)for(let t in n)this._activeVao!==n[t]&&this.unbind(),i.deleteVertexArray(n[t]);this._geometryVaoHash[t.uid]=null}}destroyAll(t=!1){let r=this.gl;for(let n in this._geometryVaoHash){if(t)for(let t in this._geometryVaoHash[n]){let i=this._geometryVaoHash[n];this._activeVao!==i&&this.unbind(),r.deleteVertexArray(i[t])}this._geometryVaoHash[n]=null}}activateVao(t,r){let n=this._renderer.gl,i=this._renderer.buffer,a=t.attributes;t.indexBuffer&&i.bind(t.indexBuffer);let o=null;for(let t in a){let s=a[t],l=s.buffer,u=i.getGlBuffer(l),d=r._attributeData[t];if(d){o!==u&&(i.bind(l),o=u);let t=s.location;n.enableVertexAttribArray(t);let r=getAttributeInfoFromFormat(s.format),a=getGlTypeFromFormat(s.format);if("int"===d.format?.substring(1,4)?n.vertexAttribIPointer(t,r.size,a,s.stride,s.offset):n.vertexAttribPointer(t,r.size,a,r.normalised,s.stride,s.offset),s.instance){if(!this.hasInstance)throw Error("geometry error, GPU Instancing is not supported on this device");n.vertexAttribDivisor(t,1)}}}}draw(t,r,n,i){let{gl:a}=this._renderer,o=this._activeGeometry,s=topologyToGlMap[o.topology||t];if(i||(i=o.instanceCount),o.indexBuffer){let t=o.indexBuffer.data.BYTES_PER_ELEMENT,l=2===t?a.UNSIGNED_SHORT:a.UNSIGNED_INT;i>1?a.drawElementsInstanced(s,r||o.indexBuffer.data.length,l,(n||0)*t,i):a.drawElements(s,r||o.indexBuffer.data.length,l,(n||0)*t)}else i>1?a.drawArraysInstanced(s,n||0,r||o.getSize(),i):a.drawArrays(s,n||0,r||o.getSize());return this}unbind(){this.gl.bindVertexArray(null),this._activeVao=null,this._activeGeometry=null}destroy(){this._renderer=null,this.gl=null,this._activeVao=null,this._activeGeometry=null}}).extension={type:[ExtensionType.WebGLSystem],name:"geometry"}}}),init_GlBackBufferSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/GlBackBufferSystem.mjs"(){init_globals(),init_Extensions(),init_warn2(),init_Geometry(),init_Shader(),init_State(),init_TextureSource(),init_Texture(),init_GlProgram(),bigTriangleGeometry=new Geometry({attributes:{aPosition:[-1,-1,3,-1,-1,3]}}),(_GlBackBufferSystem=class t{constructor(t){this.useBackBuffer=!1,this._useBackBufferThisRender=!1,this._renderer=t}init(r={}){let{useBackBuffer:n,antialias:i}={...t.defaultOptions,...r};this.useBackBuffer=n,this._antialias=i,this._renderer.context.supports.msaa||(warn("antialiasing, is not supported on when using the back buffer"),this._antialias=!1),this._state=State.for2d();let a=new GlProgram({vertex:"\n attribute vec2 aPosition;\n out vec2 vUv;\n\n void main() {\n gl_Position = vec4(aPosition, 0.0, 1.0);\n\n vUv = (aPosition + 1.0) / 2.0;\n\n // flip dem UVs\n vUv.y = 1.0 - vUv.y;\n }",fragment:"\n in vec2 vUv;\n out vec4 finalColor;\n\n uniform sampler2D uTexture;\n\n void main() {\n finalColor = texture(uTexture, vUv);\n }",name:"big-triangle"});this._bigTriangleShader=new Shader({glProgram:a,resources:{uTexture:Texture.WHITE.source}})}renderStart(t){let r=this._renderer.renderTarget.getRenderTarget(t.target);if(this._useBackBufferThisRender=this.useBackBuffer&&!!r.isRoot,this._useBackBufferThisRender){let r=this._renderer.renderTarget.getRenderTarget(t.target);this._targetTexture=r.colorTexture,t.target=this._getBackBufferTexture(r.colorTexture)}}renderEnd(){this._presentBackBuffer()}_presentBackBuffer(){let t=this._renderer;t.renderTarget.finishRenderPass(),this._useBackBufferThisRender&&(t.renderTarget.bind(this._targetTexture,!1),this._bigTriangleShader.resources.uTexture=this._backBufferTexture.source,t.encoder.draw({geometry:bigTriangleGeometry,shader:this._bigTriangleShader,state:this._state}))}_getBackBufferTexture(t){return this._backBufferTexture=this._backBufferTexture||new Texture({source:new TextureSource({width:t.width,height:t.height,resolution:t._resolution,antialias:this._antialias})}),this._backBufferTexture.source.resize(t.width,t.height,t._resolution),this._backBufferTexture}destroy(){this._backBufferTexture&&(this._backBufferTexture.destroy(),this._backBufferTexture=null)}}).extension={type:[ExtensionType.WebGLSystem],name:"backBuffer",priority:1},_GlBackBufferSystem.defaultOptions={useBackBuffer:!1},GlBackBufferSystem=_GlBackBufferSystem}}),init_GlColorMaskSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/GlColorMaskSystem.mjs"(){init_globals(),init_Extensions(),(GlColorMaskSystem=class{constructor(t){this._colorMaskCache=15,this._renderer=t}setMask(t){this._colorMaskCache!==t&&(this._colorMaskCache=t,this._renderer.gl.colorMask(!!(8&t),!!(4&t),!!(2&t),!!(1&t)))}}).extension={type:[ExtensionType.WebGLSystem],name:"colorMask"}}}),init_GlEncoderSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/GlEncoderSystem.mjs"(){init_globals(),init_Extensions(),(GlEncoderSystem=class{constructor(t){this.commandFinished=Promise.resolve(),this._renderer=t}setGeometry(t,r){this._renderer.geometry.bind(t,r.glProgram)}finishRenderPass(){}draw(t){let r=this._renderer,{geometry:n,shader:i,state:a,skipSync:o,topology:s,size:l,start:u,instanceCount:d}=t;r.shader.bind(i,o),r.geometry.bind(n,r.shader._activeProgram),a&&r.state.set(a),r.geometry.draw(s,l,u,d??n.instanceCount)}destroy(){this._renderer=null}}).extension={type:[ExtensionType.WebGLSystem],name:"encoder"}}}),init_GlStencilSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/GlStencilSystem.mjs"(){init_globals(),init_Extensions(),init_GpuStencilModesToPixi(),init_const6(),(GlStencilSystem=class{constructor(t){this._stencilCache={enabled:!1,stencilReference:0,stencilMode:STENCIL_MODES.NONE},this._renderTargetStencilState=Object.create(null),t.renderTarget.onRenderTargetChange.add(this)}contextChange(t){this._gl=t,this._comparisonFuncMapping={always:t.ALWAYS,never:t.NEVER,equal:t.EQUAL,"not-equal":t.NOTEQUAL,less:t.LESS,"less-equal":t.LEQUAL,greater:t.GREATER,"greater-equal":t.GEQUAL},this._stencilOpsMapping={keep:t.KEEP,zero:t.ZERO,replace:t.REPLACE,invert:t.INVERT,"increment-clamp":t.INCR,"decrement-clamp":t.DECR,"increment-wrap":t.INCR_WRAP,"decrement-wrap":t.DECR_WRAP},this._stencilCache.enabled=!1,this._stencilCache.stencilMode=STENCIL_MODES.NONE,this._stencilCache.stencilReference=0}onRenderTargetChange(t){if(this._activeRenderTarget===t)return;this._activeRenderTarget=t;let r=this._renderTargetStencilState[t.uid];r||(r=this._renderTargetStencilState[t.uid]={stencilMode:STENCIL_MODES.DISABLED,stencilReference:0}),this.setStencilMode(r.stencilMode,r.stencilReference)}setStencilMode(t,r){let n=this._renderTargetStencilState[this._activeRenderTarget.uid],i=this._gl,a=GpuStencilModesToPixi[t],o=this._stencilCache;n.stencilMode=t,n.stencilReference=r,t!==STENCIL_MODES.DISABLED?(this._stencilCache.enabled||(this._stencilCache.enabled=!0,i.enable(i.STENCIL_TEST)),t===o.stencilMode&&o.stencilReference===r||(o.stencilMode=t,o.stencilReference=r,i.stencilFunc(this._comparisonFuncMapping[a.stencilBack.compare],r,255),i.stencilOp(i.KEEP,i.KEEP,this._stencilOpsMapping[a.stencilBack.passOp]))):this._stencilCache.enabled&&(this._stencilCache.enabled=!1,i.disable(i.STENCIL_TEST))}}).extension={type:[ExtensionType.WebGLSystem],name:"stencil"}}}),init_GlRenderTarget=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/GlRenderTarget.mjs"(){init_globals(),GlRenderTarget=class{constructor(){this.width=-1,this.height=-1,this.msaa=!1,this.msaaRenderBuffer=[]}}}}),init_GlRenderTargetAdaptor=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/renderTarget/GlRenderTargetAdaptor.mjs"(){init_globals(),init_Rectangle(),init_warn2(),init_const3(),init_GlRenderTarget(),GlRenderTargetAdaptor=class{constructor(){this._clearColorCache=[0,0,0,0],this._viewPortCache=new Rectangle}init(t,r){this._renderer=t,this._renderTargetSystem=r,t.runners.contextChange.add(this)}contextChange(){this._clearColorCache=[0,0,0,0],this._viewPortCache=new Rectangle}copyToTexture(t,r,n,i,a){let o=this._renderTargetSystem,s=this._renderer,l=o.getGpuRenderTarget(t),u=s.gl;return this.finishRenderPass(t),u.bindFramebuffer(u.FRAMEBUFFER,l.resolveTargetFramebuffer),s.texture.bind(r,0),u.copyTexSubImage2D(u.TEXTURE_2D,0,a.x,a.y,n.x,n.y,i.width,i.height),r}startRenderPass(t,r=!0,n,i){let a=this._renderTargetSystem,o=t.colorTexture,s=a.getGpuRenderTarget(t),l=i.y;t.isRoot&&(l=o.pixelHeight-i.height),t.colorTextures.forEach(t=>{this._renderer.texture.unbind(t)});let u=this._renderer.gl;u.bindFramebuffer(u.FRAMEBUFFER,s.framebuffer);let d=this._viewPortCache;d.x===i.x&&d.y===l&&d.width===i.width&&d.height===i.height||(d.x=i.x,d.y=l,d.width=i.width,d.height=i.height,u.viewport(i.x,l,i.width,i.height)),!s.depthStencilRenderBuffer&&(t.stencil||t.depth)&&this._initStencil(s),this.clear(t,r,n)}finishRenderPass(t){let r=this._renderTargetSystem.getGpuRenderTarget(t);if(!r.msaa)return;let n=this._renderer.gl;n.bindFramebuffer(n.FRAMEBUFFER,r.resolveTargetFramebuffer),n.bindFramebuffer(n.READ_FRAMEBUFFER,r.framebuffer),n.blitFramebuffer(0,0,r.width,r.height,0,0,r.width,r.height,n.COLOR_BUFFER_BIT,n.NEAREST),n.bindFramebuffer(n.FRAMEBUFFER,r.framebuffer)}initGpuRenderTarget(t){let r=this._renderer,n=r.gl,i=new GlRenderTarget;return t.colorTexture.resource===r.gl.canvas?i.framebuffer=null:(this._initColor(t,i),n.bindFramebuffer(n.FRAMEBUFFER,null)),i}destroyGpuRenderTarget(t){let r=this._renderer.gl;t.framebuffer&&(r.deleteFramebuffer(t.framebuffer),t.framebuffer=null),t.resolveTargetFramebuffer&&(r.deleteFramebuffer(t.resolveTargetFramebuffer),t.resolveTargetFramebuffer=null),t.depthStencilRenderBuffer&&(r.deleteRenderbuffer(t.depthStencilRenderBuffer),t.depthStencilRenderBuffer=null),t.msaaRenderBuffer.forEach(t=>{r.deleteRenderbuffer(t)}),t.msaaRenderBuffer=null}clear(t,r,n){if(!r)return;let i=this._renderTargetSystem;"boolean"==typeof r&&(r=r?CLEAR.ALL:CLEAR.NONE);let a=this._renderer.gl;if(r&CLEAR.COLOR){n??(n=i.defaultClearColor);let t=this._clearColorCache,r=n;t[0]===r[0]&&t[1]===r[1]&&t[2]===r[2]&&t[3]===r[3]||(t[0]=r[0],t[1]=r[1],t[2]=r[2],t[3]=r[3],a.clearColor(r[0],r[1],r[2],r[3]))}a.clear(r)}resizeGpuRenderTarget(t){if(t.isRoot)return;let r=this._renderTargetSystem.getGpuRenderTarget(t);this._resizeColor(t,r),t.stencil&&this._resizeStencil(r)}_initColor(t,r){let n=this._renderer,i=n.gl,a=i.createFramebuffer();if(r.resolveTargetFramebuffer=a,i.bindFramebuffer(i.FRAMEBUFFER,a),r.width=t.colorTexture.source.pixelWidth,r.height=t.colorTexture.source.pixelHeight,t.colorTextures.forEach((t,a)=>{let o=t.source;o.antialias&&(n.context.supports.msaa?r.msaa=!0:warn("[RenderTexture] Antialiasing on textures is not supported in WebGL1")),n.texture.bindSource(o,0);let s=n.texture.getGlSource(o).texture;i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0+a,3553,s,0)}),r.msaa){let n=i.createFramebuffer();r.framebuffer=n,i.bindFramebuffer(i.FRAMEBUFFER,n),t.colorTextures.forEach((t,n)=>{let a=i.createRenderbuffer();r.msaaRenderBuffer[n]=a})}else r.framebuffer=a;this._resizeColor(t,r)}_resizeColor(t,r){let n=t.colorTexture.source;if(r.width=n.pixelWidth,r.height=n.pixelHeight,t.colorTextures.forEach((t,r)=>{0!==r&&t.source.resize(n.width,n.height,n._resolution)}),r.msaa){let n=this._renderer,i=n.gl,a=r.framebuffer;i.bindFramebuffer(i.FRAMEBUFFER,a),t.colorTextures.forEach((t,a)=>{let o=t.source;n.texture.bindSource(o,0);let s=n.texture.getGlSource(o).internalFormat,l=r.msaaRenderBuffer[a];i.bindRenderbuffer(i.RENDERBUFFER,l),i.renderbufferStorageMultisample(i.RENDERBUFFER,4,s,o.pixelWidth,o.pixelHeight),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0+a,i.RENDERBUFFER,l)})}}_initStencil(t){if(null===t.framebuffer)return;let r=this._renderer.gl,n=r.createRenderbuffer();t.depthStencilRenderBuffer=n,r.bindRenderbuffer(r.RENDERBUFFER,n),r.framebufferRenderbuffer(r.FRAMEBUFFER,r.DEPTH_STENCIL_ATTACHMENT,r.RENDERBUFFER,n),this._resizeStencil(t)}_resizeStencil(t){let r=this._renderer.gl;r.bindRenderbuffer(r.RENDERBUFFER,t.depthStencilRenderBuffer),t.msaa?r.renderbufferStorageMultisample(r.RENDERBUFFER,4,r.DEPTH24_STENCIL8,t.width,t.height):r.renderbufferStorage(r.RENDERBUFFER,2===this._renderer.context.webGLVersion?r.DEPTH24_STENCIL8:r.DEPTH_STENCIL,t.width,t.height)}}}}),init_GlRenderTargetSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/renderTarget/GlRenderTargetSystem.mjs"(){init_globals(),init_Extensions(),init_RenderTargetSystem(),init_GlRenderTargetAdaptor(),(GlRenderTargetSystem=class extends RenderTargetSystem{constructor(t){super(t),this.adaptor=new GlRenderTargetAdaptor,this.adaptor.init(t,this)}}).extension={type:[ExtensionType.WebGLSystem],name:"renderTarget"}}});function mapWebGLBlendModesToPixi(t){let r={};return r.normal=[t.ONE,t.ONE_MINUS_SRC_ALPHA],r.add=[t.ONE,t.ONE],r.multiply=[t.DST_COLOR,t.ONE_MINUS_SRC_ALPHA,t.ONE,t.ONE_MINUS_SRC_ALPHA],r.screen=[t.ONE,t.ONE_MINUS_SRC_COLOR,t.ONE,t.ONE_MINUS_SRC_ALPHA],r.none=[0,0],r["normal-npm"]=[t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA,t.ONE,t.ONE_MINUS_SRC_ALPHA],r["add-npm"]=[t.SRC_ALPHA,t.ONE,t.ONE,t.ONE],r["screen-npm"]=[t.SRC_ALPHA,t.ONE_MINUS_SRC_COLOR,t.ONE,t.ONE_MINUS_SRC_ALPHA],r.erase=[t.ZERO,t.ONE_MINUS_SRC_ALPHA],r}var BLEND2,OFFSET2,CULLING2,DEPTH_TEST2,WINDING2,DEPTH_MASK2,_GlStateSystem,GlStateSystem,GlTexture,glUploadBufferImageResource,compressedFormatMap,glUploadCompressedTextureResource,glUploadImageResource,glUploadVideoResource,scaleModeToGlFilter,mipmapScaleModeToGlFilter,wrapModeToGlAddress,compareModeToGlCompare,init_mapWebGLBlendModesToPixi=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/state/mapWebGLBlendModesToPixi.mjs"(){init_globals()}}),init_GlStateSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/state/GlStateSystem.mjs"(){init_globals(),init_Extensions(),init_State(),init_mapWebGLBlendModesToPixi(),BLEND2=0,OFFSET2=1,CULLING2=2,DEPTH_TEST2=3,WINDING2=4,DEPTH_MASK2=5,(_GlStateSystem=class t{constructor(){this.gl=null,this.stateId=0,this.polygonOffset=0,this.blendMode="none",this._blendEq=!1,this.map=[],this.map[BLEND2]=this.setBlend,this.map[OFFSET2]=this.setOffset,this.map[CULLING2]=this.setCullFace,this.map[DEPTH_TEST2]=this.setDepthTest,this.map[WINDING2]=this.setFrontFace,this.map[DEPTH_MASK2]=this.setDepthMask,this.checks=[],this.defaultState=State.for2d()}contextChange(t){this.gl=t,this.blendModesMap=mapWebGLBlendModesToPixi(t),this.reset()}set(t){if(t=t||this.defaultState,this.stateId!==t.data){let r=this.stateId^t.data,n=0;for(;r;)1&r&&this.map[n].call(this,!!(t.data&1<<n)),r>>=1,n++;this.stateId=t.data}for(let r=0;r<this.checks.length;r++)this.checks[r](this,t)}forceState(t){t=t||this.defaultState;for(let r=0;r<this.map.length;r++)this.map[r].call(this,!!(t.data&1<<r));for(let r=0;r<this.checks.length;r++)this.checks[r](this,t);this.stateId=t.data}setBlend(r){this._updateCheck(t._checkBlendMode,r),this.gl[r?"enable":"disable"](this.gl.BLEND)}setOffset(r){this._updateCheck(t._checkPolygonOffset,r),this.gl[r?"enable":"disable"](this.gl.POLYGON_OFFSET_FILL)}setDepthTest(t){this.gl[t?"enable":"disable"](this.gl.DEPTH_TEST)}setDepthMask(t){this.gl.depthMask(t)}setCullFace(t){this.gl[t?"enable":"disable"](this.gl.CULL_FACE)}setFrontFace(t){this.gl.frontFace(this.gl[t?"CW":"CCW"])}setBlendMode(t){if(this.blendModesMap[t]||(t="normal"),t===this.blendMode)return;this.blendMode=t;let r=this.blendModesMap[t],n=this.gl;2===r.length?n.blendFunc(r[0],r[1]):n.blendFuncSeparate(r[0],r[1],r[2],r[3]),6===r.length?(this._blendEq=!0,n.blendEquationSeparate(r[4],r[5])):this._blendEq&&(this._blendEq=!1,n.blendEquationSeparate(n.FUNC_ADD,n.FUNC_ADD))}setPolygonOffset(t,r){this.gl.polygonOffset(t,r)}reset(){this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL,!1),this.forceState(this.defaultState),this._blendEq=!0,this.blendMode="",this.setBlendMode("normal")}_updateCheck(t,r){let n=this.checks.indexOf(t);r&&-1===n?this.checks.push(t):r||-1===n||this.checks.splice(n,1)}static _checkBlendMode(t,r){t.setBlendMode(r.blendMode)}static _checkPolygonOffset(t,r){t.setPolygonOffset(1,r.polygonOffset)}destroy(){this.gl=null,this.checks.length=0}}).extension={type:[ExtensionType.WebGLSystem],name:"state"},GlStateSystem=_GlStateSystem}}),init_GlTexture=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/GlTexture.mjs"(){init_globals(),init_const10(),GlTexture=class{constructor(t){this.target=GL_TARGETS.TEXTURE_2D,this.texture=t,this.width=-1,this.height=-1,this.type=GL_TYPES.UNSIGNED_BYTE,this.internalFormat=GL_FORMATS.RGBA,this.format=GL_FORMATS.RGBA,this.samplerType=0}}}}),init_glUploadBufferImageResource=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadBufferImageResource.mjs"(){init_globals(),glUploadBufferImageResource={id:"image",upload(t,r,n){r.width===t.width||r.height===t.height?n.texSubImage2D(n.TEXTURE_2D,0,0,0,r.format,r.type,t.resource):n.texImage2D(r.target,0,r.internalFormat,t.width,t.height,0,r.format,r.type,t.resource),r.width=t.width,r.height=t.height}}}}),init_glUploadCompressedTextureResource=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadCompressedTextureResource.mjs"(){init_globals(),compressedFormatMap={"bc1-rgba-unorm":!0,"bc1-rgba-unorm-srgb":!0,"bc2-rgba-unorm":!0,"bc2-rgba-unorm-srgb":!0,"bc3-rgba-unorm":!0,"bc3-rgba-unorm-srgb":!0,"bc4-r-unorm":!0,"bc4-r-snorm":!0,"bc5-rg-unorm":!0,"bc5-rg-snorm":!0,"bc6h-rgb-ufloat":!0,"bc6h-rgb-float":!0,"bc7-rgba-unorm":!0,"bc7-rgba-unorm-srgb":!0,"etc2-rgb8unorm":!0,"etc2-rgb8unorm-srgb":!0,"etc2-rgb8a1unorm":!0,"etc2-rgb8a1unorm-srgb":!0,"etc2-rgba8unorm":!0,"etc2-rgba8unorm-srgb":!0,"eac-r11unorm":!0,"eac-r11snorm":!0,"eac-rg11unorm":!0,"eac-rg11snorm":!0,"astc-4x4-unorm":!0,"astc-4x4-unorm-srgb":!0,"astc-5x4-unorm":!0,"astc-5x4-unorm-srgb":!0,"astc-5x5-unorm":!0,"astc-5x5-unorm-srgb":!0,"astc-6x5-unorm":!0,"astc-6x5-unorm-srgb":!0,"astc-6x6-unorm":!0,"astc-6x6-unorm-srgb":!0,"astc-8x5-unorm":!0,"astc-8x5-unorm-srgb":!0,"astc-8x6-unorm":!0,"astc-8x6-unorm-srgb":!0,"astc-8x8-unorm":!0,"astc-8x8-unorm-srgb":!0,"astc-10x5-unorm":!0,"astc-10x5-unorm-srgb":!0,"astc-10x6-unorm":!0,"astc-10x6-unorm-srgb":!0,"astc-10x8-unorm":!0,"astc-10x8-unorm-srgb":!0,"astc-10x10-unorm":!0,"astc-10x10-unorm-srgb":!0,"astc-12x10-unorm":!0,"astc-12x10-unorm-srgb":!0,"astc-12x12-unorm":!0,"astc-12x12-unorm-srgb":!0},glUploadCompressedTextureResource={id:"compressed",upload(t,r,n){n.pixelStorei(n.UNPACK_ALIGNMENT,4);let i=t.pixelWidth,a=t.pixelHeight,o=!!compressedFormatMap[t.format];for(let s=0;s<t.resource.length;s++){let l=t.resource[s];o?n.compressedTexImage2D(n.TEXTURE_2D,s,r.internalFormat,i,a,0,l):n.texImage2D(n.TEXTURE_2D,s,r.internalFormat,i,a,0,r.format,r.type,l),i=Math.max(i>>1,1),a=Math.max(a>>1,1)}}}}}),init_glUploadImageResource=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadImageResource.mjs"(){init_globals(),glUploadImageResource={id:"image",upload(t,r,n,i){let a="premultiply-alpha-on-upload"===t.alphaMode;n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a);let o=r.width,s=r.height,l=t.pixelWidth,u=t.pixelHeight,d=t.resourceWidth,c=t.resourceHeight;d<l||c<u?(o===l&&s===u||n.texImage2D(r.target,0,r.internalFormat,l,u,0,r.format,r.type,null),2===i?n.texSubImage2D(n.TEXTURE_2D,0,0,0,d,c,r.format,r.type,t.resource):n.texSubImage2D(n.TEXTURE_2D,0,0,0,r.format,r.type,t.resource)):o===l||s===u?n.texSubImage2D(n.TEXTURE_2D,0,0,0,r.format,r.type,t.resource):2===i?n.texImage2D(r.target,0,r.internalFormat,l,u,0,r.format,r.type,t.resource):n.texImage2D(r.target,0,r.internalFormat,r.format,r.type,t.resource),r.width=l,r.height=u}}}}),init_glUploadVideoResource=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadVideoResource.mjs"(){init_globals(),init_glUploadImageResource(),glUploadVideoResource={id:"video",upload(t,r,n,i){t.isValid?glUploadImageResource.upload(t,r,n,i):n.texImage2D(r.target,0,r.internalFormat,1,1,0,r.format,r.type,null)}}}}),init_pixiToGlMaps=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/pixiToGlMaps.mjs"(){init_globals(),scaleModeToGlFilter={linear:9729,nearest:9728},mipmapScaleModeToGlFilter={linear:{linear:9987,nearest:9985},nearest:{linear:9986,nearest:9984}},wrapModeToGlAddress={"clamp-to-edge":33071,repeat:10497,"mirror-repeat":33648},compareModeToGlCompare={never:512,less:513,equal:514,"less-equal":515,greater:516,"not-equal":517,"greater-equal":518,always:519}}});function applyStyleParams(t,r,n,i,a,o,s,l){let u=o;if(!l||"repeat"!==t.addressModeU||"repeat"!==t.addressModeV||"repeat"!==t.addressModeW){let n=wrapModeToGlAddress[s?"clamp-to-edge":t.addressModeU],i=wrapModeToGlAddress[s?"clamp-to-edge":t.addressModeV],o=wrapModeToGlAddress[s?"clamp-to-edge":t.addressModeW];r[a](u,r.TEXTURE_WRAP_S,n),r[a](u,r.TEXTURE_WRAP_T,i),r.TEXTURE_WRAP_R&&r[a](u,r.TEXTURE_WRAP_R,o)}if(l&&"linear"===t.magFilter||r[a](u,r.TEXTURE_MAG_FILTER,scaleModeToGlFilter[t.magFilter]),n){if(!l||"linear"!==t.mipmapFilter){let n=mipmapScaleModeToGlFilter[t.minFilter][t.mipmapFilter];r[a](u,r.TEXTURE_MIN_FILTER,n)}}else r[a](u,r.TEXTURE_MIN_FILTER,scaleModeToGlFilter[t.minFilter]);if(i&&t.maxAnisotropy>1){let n=Math.min(t.maxAnisotropy,r.getParameter(i.MAX_TEXTURE_MAX_ANISOTROPY_EXT));r[a](u,i.TEXTURE_MAX_ANISOTROPY_EXT,n)}t.compare&&r[a](u,r.TEXTURE_COMPARE_FUNC,compareModeToGlCompare[t.compare])}var init_applyStyleParams=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/applyStyleParams.mjs"(){init_globals(),init_pixiToGlMaps()}});function mapFormatToGlFormat(t){return{r8unorm:t.RED,r8snorm:t.RED,r8uint:t.RED,r8sint:t.RED,r16uint:t.RED,r16sint:t.RED,r16float:t.RED,rg8unorm:t.RG,rg8snorm:t.RG,rg8uint:t.RG,rg8sint:t.RG,r32uint:t.RED,r32sint:t.RED,r32float:t.RED,rg16uint:t.RG,rg16sint:t.RG,rg16float:t.RG,rgba8unorm:t.RGBA,"rgba8unorm-srgb":t.RGBA,rgba8snorm:t.RGBA,rgba8uint:t.RGBA,rgba8sint:t.RGBA,bgra8unorm:t.RGBA,"bgra8unorm-srgb":t.RGBA,rgb9e5ufloat:t.RGB,rgb10a2unorm:t.RGBA,rg11b10ufloat:t.RGB,rg32uint:t.RG,rg32sint:t.RG,rg32float:t.RG,rgba16uint:t.RGBA,rgba16sint:t.RGBA,rgba16float:t.RGBA,rgba32uint:t.RGBA,rgba32sint:t.RGBA,rgba32float:t.RGBA,stencil8:t.STENCIL_INDEX8,depth16unorm:t.DEPTH_COMPONENT,depth24plus:t.DEPTH_COMPONENT,"depth24plus-stencil8":t.DEPTH_STENCIL,depth32float:t.DEPTH_COMPONENT,"depth32float-stencil8":t.DEPTH_STENCIL}}var init_mapFormatToGlFormat=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/mapFormatToGlFormat.mjs"(){init_globals()}});function mapFormatToGlInternalFormat(t,r){let n={},i=t.RGBA;return t instanceof DOMAdapter.get().getWebGLRenderingContext()?r.srgb&&(n={"rgba8unorm-srgb":r.srgb.SRGB8_ALPHA8_EXT,"bgra8unorm-srgb":r.srgb.SRGB8_ALPHA8_EXT}):(n={"rgba8unorm-srgb":t.SRGB8_ALPHA8,"bgra8unorm-srgb":t.SRGB8_ALPHA8},i=t.RGBA8),{r8unorm:t.R8,r8snorm:t.R8_SNORM,r8uint:t.R8UI,r8sint:t.R8I,r16uint:t.R16UI,r16sint:t.R16I,r16float:t.R16F,rg8unorm:t.RG8,rg8snorm:t.RG8_SNORM,rg8uint:t.RG8UI,rg8sint:t.RG8I,r32uint:t.R32UI,r32sint:t.R32I,r32float:t.R32F,rg16uint:t.RG16UI,rg16sint:t.RG16I,rg16float:t.RG16F,rgba8unorm:t.RGBA,...n,rgba8snorm:t.RGBA8_SNORM,rgba8uint:t.RGBA8UI,rgba8sint:t.RGBA8I,bgra8unorm:i,rgb9e5ufloat:t.RGB9_E5,rgb10a2unorm:t.RGB10_A2,rg11b10ufloat:t.R11F_G11F_B10F,rg32uint:t.RG32UI,rg32sint:t.RG32I,rg32float:t.RG32F,rgba16uint:t.RGBA16UI,rgba16sint:t.RGBA16I,rgba16float:t.RGBA16F,rgba32uint:t.RGBA32UI,rgba32sint:t.RGBA32I,rgba32float:t.RGBA32F,stencil8:t.STENCIL_INDEX8,depth16unorm:t.DEPTH_COMPONENT16,depth24plus:t.DEPTH_COMPONENT24,"depth24plus-stencil8":t.DEPTH24_STENCIL8,depth32float:t.DEPTH_COMPONENT32F,"depth32float-stencil8":t.DEPTH32F_STENCIL8,...r.s3tc?{"bc1-rgba-unorm":r.s3tc.COMPRESSED_RGBA_S3TC_DXT1_EXT,"bc2-rgba-unorm":r.s3tc.COMPRESSED_RGBA_S3TC_DXT3_EXT,"bc3-rgba-unorm":r.s3tc.COMPRESSED_RGBA_S3TC_DXT5_EXT}:{},...r.s3tc_sRGB?{"bc1-rgba-unorm-srgb":r.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,"bc2-rgba-unorm-srgb":r.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,"bc3-rgba-unorm-srgb":r.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}:{},...r.rgtc?{"bc4-r-unorm":r.rgtc.COMPRESSED_RED_RGTC1_EXT,"bc4-r-snorm":r.rgtc.COMPRESSED_SIGNED_RED_RGTC1_EXT,"bc5-rg-unorm":r.rgtc.COMPRESSED_RED_GREEN_RGTC2_EXT,"bc5-rg-snorm":r.rgtc.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}:{},...r.bptc?{"bc6h-rgb-float":r.bptc.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,"bc6h-rgb-ufloat":r.bptc.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,"bc7-rgba-unorm":r.bptc.COMPRESSED_RGBA_BPTC_UNORM_EXT,"bc7-rgba-unorm-srgb":r.bptc.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT}:{},...r.etc?{"etc2-rgb8unorm":r.etc.COMPRESSED_RGB8_ETC2,"etc2-rgb8unorm-srgb":r.etc.COMPRESSED_SRGB8_ETC2,"etc2-rgb8a1unorm":r.etc.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,"etc2-rgb8a1unorm-srgb":r.etc.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,"etc2-rgba8unorm":r.etc.COMPRESSED_RGBA8_ETC2_EAC,"etc2-rgba8unorm-srgb":r.etc.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,"eac-r11unorm":r.etc.COMPRESSED_R11_EAC,"eac-rg11unorm":r.etc.COMPRESSED_SIGNED_RG11_EAC}:{},...r.astc?{"astc-4x4-unorm":r.astc.COMPRESSED_RGBA_ASTC_4x4_KHR,"astc-4x4-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,"astc-5x4-unorm":r.astc.COMPRESSED_RGBA_ASTC_5x4_KHR,"astc-5x4-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,"astc-5x5-unorm":r.astc.COMPRESSED_RGBA_ASTC_5x5_KHR,"astc-5x5-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,"astc-6x5-unorm":r.astc.COMPRESSED_RGBA_ASTC_6x5_KHR,"astc-6x5-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,"astc-6x6-unorm":r.astc.COMPRESSED_RGBA_ASTC_6x6_KHR,"astc-6x6-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,"astc-8x5-unorm":r.astc.COMPRESSED_RGBA_ASTC_8x5_KHR,"astc-8x5-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,"astc-8x6-unorm":r.astc.COMPRESSED_RGBA_ASTC_8x6_KHR,"astc-8x6-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,"astc-8x8-unorm":r.astc.COMPRESSED_RGBA_ASTC_8x8_KHR,"astc-8x8-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,"astc-10x5-unorm":r.astc.COMPRESSED_RGBA_ASTC_10x5_KHR,"astc-10x5-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,"astc-10x6-unorm":r.astc.COMPRESSED_RGBA_ASTC_10x6_KHR,"astc-10x6-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,"astc-10x8-unorm":r.astc.COMPRESSED_RGBA_ASTC_10x8_KHR,"astc-10x8-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,"astc-10x10-unorm":r.astc.COMPRESSED_RGBA_ASTC_10x10_KHR,"astc-10x10-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,"astc-12x10-unorm":r.astc.COMPRESSED_RGBA_ASTC_12x10_KHR,"astc-12x10-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,"astc-12x12-unorm":r.astc.COMPRESSED_RGBA_ASTC_12x12_KHR,"astc-12x12-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR}:{}}}var init_mapFormatToGlInternalFormat=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/mapFormatToGlInternalFormat.mjs"(){init_globals(),init_adapter()}});function mapFormatToGlType(t){return{r8unorm:t.UNSIGNED_BYTE,r8snorm:t.BYTE,r8uint:t.UNSIGNED_BYTE,r8sint:t.BYTE,r16uint:t.UNSIGNED_SHORT,r16sint:t.SHORT,r16float:t.HALF_FLOAT,rg8unorm:t.UNSIGNED_BYTE,rg8snorm:t.BYTE,rg8uint:t.UNSIGNED_BYTE,rg8sint:t.BYTE,r32uint:t.UNSIGNED_INT,r32sint:t.INT,r32float:t.FLOAT,rg16uint:t.UNSIGNED_SHORT,rg16sint:t.SHORT,rg16float:t.HALF_FLOAT,rgba8unorm:t.UNSIGNED_BYTE,"rgba8unorm-srgb":t.UNSIGNED_BYTE,rgba8snorm:t.BYTE,rgba8uint:t.UNSIGNED_BYTE,rgba8sint:t.BYTE,bgra8unorm:t.UNSIGNED_BYTE,"bgra8unorm-srgb":t.UNSIGNED_BYTE,rgb9e5ufloat:t.UNSIGNED_INT_5_9_9_9_REV,rgb10a2unorm:t.UNSIGNED_INT_2_10_10_10_REV,rg11b10ufloat:t.UNSIGNED_INT_10F_11F_11F_REV,rg32uint:t.UNSIGNED_INT,rg32sint:t.INT,rg32float:t.FLOAT,rgba16uint:t.UNSIGNED_SHORT,rgba16sint:t.SHORT,rgba16float:t.HALF_FLOAT,rgba32uint:t.UNSIGNED_INT,rgba32sint:t.INT,rgba32float:t.FLOAT,stencil8:t.UNSIGNED_BYTE,depth16unorm:t.UNSIGNED_SHORT,depth24plus:t.UNSIGNED_INT,"depth24plus-stencil8":t.UNSIGNED_INT_24_8,depth32float:t.FLOAT,"depth32float-stencil8":t.FLOAT_32_UNSIGNED_INT_24_8_REV}}var BYTES_PER_PIXEL,GlTextureSystem,DefaultWebGLSystems,DefaultWebGLPipes,DefaultWebGLAdapters,systems2,renderPipes2,renderPipeAdaptors2,WebGLRenderer,init_mapFormatToGlType=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/mapFormatToGlType.mjs"(){init_globals()}}),init_GlTextureSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/GlTextureSystem.mjs"(){init_globals(),init_adapter(),init_Extensions(),init_Texture(),init_GlTexture(),init_glUploadBufferImageResource(),init_glUploadCompressedTextureResource(),init_glUploadImageResource(),init_glUploadVideoResource(),init_applyStyleParams(),init_mapFormatToGlFormat(),init_mapFormatToGlInternalFormat(),init_mapFormatToGlType(),BYTES_PER_PIXEL=4,(GlTextureSystem=class{constructor(t){this.managedTextures=[],this._glTextures=Object.create(null),this._glSamplers=Object.create(null),this._boundTextures=[],this._activeTextureLocation=-1,this._boundSamplers=Object.create(null),this._uploads={image:glUploadImageResource,buffer:glUploadBufferImageResource,video:glUploadVideoResource,compressed:glUploadCompressedTextureResource},this._useSeparateSamplers=!1,this._renderer=t}contextChange(t){this._gl=t,this._mapFormatToInternalFormat||(this._mapFormatToInternalFormat=mapFormatToGlInternalFormat(t,this._renderer.context.extensions),this._mapFormatToType=mapFormatToGlType(t),this._mapFormatToFormat=mapFormatToGlFormat(t)),this._glTextures=Object.create(null),this._glSamplers=Object.create(null),this._boundSamplers=Object.create(null);for(let t=0;t<16;t++)this.bind(Texture.EMPTY,t)}initSource(t){this.bind(t)}bind(t,r=0){let n=t.source;t?(this.bindSource(n,r),this._useSeparateSamplers&&this._bindSampler(n.style,r)):(this.bindSource(null,r),this._useSeparateSamplers&&this._bindSampler(null,r))}bindSource(t,r=0){let n=this._gl;if(t._touched=this._renderer.textureGC.count,this._boundTextures[r]!==t){this._boundTextures[r]=t,this._activateLocation(r),t=t||Texture.EMPTY.source;let i=this.getGlSource(t);n.bindTexture(i.target,i.texture)}}_bindSampler(t,r=0){let n=this._gl;if(!t)return this._boundSamplers[r]=null,void n.bindSampler(r,null);let i=this._getGlSampler(t);this._boundSamplers[r]!==i&&(this._boundSamplers[r]=i,n.bindSampler(r,i))}unbind(t){let r=t.source,n=this._boundTextures,i=this._gl;for(let t=0;t<n.length;t++)if(n[t]===r){this._activateLocation(t);let a=this.getGlSource(r);i.bindTexture(a.target,null),n[t]=null}}_activateLocation(t){this._activeTextureLocation!==t&&(this._activeTextureLocation=t,this._gl.activeTexture(this._gl.TEXTURE0+t))}_initSource(t){let r=this._gl,n=new GlTexture(r.createTexture());if(n.type=this._mapFormatToType[t.format],n.internalFormat=this._mapFormatToInternalFormat[t.format],n.format=this._mapFormatToFormat[t.format],t.autoGenerateMipmaps&&(this._renderer.context.supports.nonPowOf2mipmaps||t.isPowerOfTwo)){let r=Math.max(t.width,t.height);t.mipLevelCount=Math.floor(Math.log2(r))+1}return this._glTextures[t.uid]=n,this.managedTextures.includes(t)||(t.on("update",this.onSourceUpdate,this),t.on("resize",this.onSourceUpdate,this),t.on("styleChange",this.onStyleChange,this),t.on("destroy",this.onSourceDestroy,this),t.on("unload",this.onSourceUnload,this),t.on("updateMipmaps",this.onUpdateMipmaps,this),this.managedTextures.push(t)),this.onSourceUpdate(t),this.updateStyle(t,!1),n}onStyleChange(t){this.updateStyle(t,!1)}updateStyle(t,r){let n=this._gl,i=this.getGlSource(t);n.bindTexture(n.TEXTURE_2D,i.texture),this._boundTextures[this._activeTextureLocation]=t,applyStyleParams(t.style,n,t.mipLevelCount>1,this._renderer.context.extensions.anisotropicFiltering,"texParameteri",n.TEXTURE_2D,!this._renderer.context.supports.nonPowOf2wrapping&&!t.isPowerOfTwo,r)}onSourceUnload(t){let r=this._glTextures[t.uid];r&&(this.unbind(t),this._glTextures[t.uid]=null,this._gl.deleteTexture(r.texture))}onSourceUpdate(t){let r=this._gl,n=this.getGlSource(t);r.bindTexture(r.TEXTURE_2D,n.texture),this._boundTextures[this._activeTextureLocation]=t,this._uploads[t.uploadMethodId]?this._uploads[t.uploadMethodId].upload(t,n,r,this._renderer.context.webGLVersion):r.texImage2D(r.TEXTURE_2D,0,r.RGBA,t.pixelWidth,t.pixelHeight,0,r.RGBA,r.UNSIGNED_BYTE,null),t.autoGenerateMipmaps&&t.mipLevelCount>1&&this.onUpdateMipmaps(t,!1)}onUpdateMipmaps(t,r=!0){r&&this.bindSource(t,0);let n=this.getGlSource(t);this._gl.generateMipmap(n.target)}onSourceDestroy(t){t.off("destroy",this.onSourceDestroy,this),t.off("update",this.onSourceUpdate,this),t.off("resize",this.onSourceUpdate,this),t.off("unload",this.onSourceUnload,this),t.off("styleChange",this.onStyleChange,this),t.off("updateMipmaps",this.onUpdateMipmaps,this),this.managedTextures.splice(this.managedTextures.indexOf(t),1),this.onSourceUnload(t)}_initSampler(t){let r=this._gl,n=this._gl.createSampler();return this._glSamplers[t._resourceId]=n,applyStyleParams(t,r,this._boundTextures[this._activeTextureLocation].mipLevelCount>1,this._renderer.context.extensions.anisotropicFiltering,"samplerParameteri",n,!1,!0),this._glSamplers[t._resourceId]}_getGlSampler(t){return this._glSamplers[t._resourceId]||this._initSampler(t)}getGlSource(t){return this._glTextures[t.uid]||this._initSource(t)}generateCanvas(t){let{pixels:r,width:n,height:i}=this.getPixels(t),a=DOMAdapter.get().createCanvas();a.width=n,a.height=i;let o=a.getContext("2d");if(o){let t=o.createImageData(n,i);t.data.set(r),o.putImageData(t,0,0)}return a}getPixels(t){let r=t.source.resolution,n=t.frame,i=Math.max(Math.round(n.width*r),1),a=Math.max(Math.round(n.height*r),1),o=new Uint8Array(BYTES_PER_PIXEL*i*a),s=this._renderer,l=s.renderTarget.getRenderTarget(t),u=s.renderTarget.getGpuRenderTarget(l),d=s.gl;return d.bindFramebuffer(d.FRAMEBUFFER,u.resolveTargetFramebuffer),d.readPixels(Math.round(n.x*r),Math.round(n.y*r),i,a,d.RGBA,d.UNSIGNED_BYTE,o),{pixels:new Uint8ClampedArray(o.buffer),width:i,height:a}}destroy(){this.managedTextures.slice().forEach(t=>this.onSourceDestroy(t)),this.managedTextures=null,this._renderer=null}}).extension={type:[ExtensionType.WebGLSystem],name:"texture"}}}),WebGLRenderer_exports={};__export(WebGLRenderer_exports,{WebGLRenderer:()=>WebGLRenderer});var init_WebGLRenderer=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/WebGLRenderer.mjs"(){init_globals(),init_Extensions(),init_GlGraphicsAdaptor(),init_GlMeshAdaptor(),init_GlBatchAdaptor(),init_AbstractRenderer(),init_SharedSystems(),init_types2(),init_GlBufferSystem(),init_GlContextSystem(),init_GlGeometrySystem(),init_GlBackBufferSystem(),init_GlColorMaskSystem(),init_GlEncoderSystem(),init_GlStencilSystem(),init_GlUboSystem(),init_GlRenderTargetSystem(),init_GlShaderSystem(),init_GlUniformGroupSystem(),init_GlStateSystem(),init_GlTextureSystem(),DefaultWebGLSystems=[...SharedSystems,GlUboSystem,GlBackBufferSystem,GlContextSystem,GlBufferSystem,GlTextureSystem,GlRenderTargetSystem,GlGeometrySystem,GlUniformGroupSystem,GlShaderSystem,GlEncoderSystem,GlStateSystem,GlStencilSystem,GlColorMaskSystem],DefaultWebGLPipes=[...SharedRenderPipes],DefaultWebGLAdapters=[GlBatchAdaptor,GlMeshAdaptor,GlGraphicsAdaptor],systems2=[],renderPipes2=[],renderPipeAdaptors2=[],extensions.handleByNamedList(ExtensionType.WebGLSystem,systems2),extensions.handleByNamedList(ExtensionType.WebGLPipes,renderPipes2),extensions.handleByNamedList(ExtensionType.WebGLPipesAdaptor,renderPipeAdaptors2),extensions.add(...DefaultWebGLSystems,...DefaultWebGLPipes,...DefaultWebGLAdapters),WebGLRenderer=class extends AbstractRenderer{constructor(){super({name:"webgl",type:RendererType.WEBGL,systems:systems2,renderPipes:renderPipes2,renderPipeAdaptors:renderPipeAdaptors2})}}}}),src_exports2={};__export(src_exports2,{Blackboard:()=>Blackboard,ContextPreview:()=>ContextPreview,Describer:()=>Describer,EnvConfig:()=>EnvConfig,GithubStar:()=>GithubStar,Logo:()=>Logo,Player:()=>Player,PlaygroundResultView:()=>PlaygroundResultView,PromptInput:()=>PromptInput,ServiceModeControl:()=>ServiceModeControl,ShinyText:()=>shiny_text_default,actionNameForType:()=>actionNameForType,allScriptsFromDump:()=>allScriptsFromDump,blankResult:()=>blankResult,cancelTask:()=>cancelTask,checkServerStatus:()=>checkServerStatus,colorForName:()=>colorForName,filterBase64Value:()=>filterBase64Value,formatErrorMessage:()=>formatErrorMessage,generateAnimationScripts:()=>generateAnimationScripts,getPlaceholderForType:()=>getPlaceholderForType,getTaskProgress:()=>getTaskProgress,globalThemeConfig:()=>globalThemeConfig,highlightColorForType:()=>highlightColorForType,iconForStatus:()=>iconForStatus,overrideServerConfig:()=>overrideServerConfig,requestPlaygroundServer:()=>requestPlaygroundServer,staticAgentFromContext:()=>staticAgentFromContext,timeCostStrElement:()=>timeCostStrElement,timeStr:()=>timeStr,useEnvConfig:()=>useEnvConfig,useServerValid:()=>useServerValid,useStaticPageAgent:()=>useStaticPageAgent}),module.exports=__toCommonJS(src_exports2),init_globals(),init_globals();var import_react=__webpack_require__(4194);init_globals();var import_constants15=__toESM(require_constants()),import_playground=__toESM(require_playground()),serverBase=`http://localhost:${import_constants15.PLAYGROUND_SERVER_PORT}`,checkServerStatus=async()=>{try{return 200===(await fetch(`${serverBase}/status`)).status}catch(t){return!1}},requestPlaygroundServer=async(t,r,n,{requestId:i,deepThink:a}={})=>{let o={context:t,type:r,prompt:n};return i&&(o.requestId=i),a&&(o.deepThink=a),(await fetch(`${serverBase}/execute`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)})).json()},overrideServerConfig=async t=>fetch(`${serverBase}/config`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({aiConfig:t})}),cancelTask=async t=>{try{return(await fetch(`${serverBase}/cancel/${t}`)).json()}catch(t){return import_console_browserify.default.error("Failed to cancel task:",t),{error:"Failed to cancel task"}}},getTaskProgress=async t=>{try{let r=await fetch(`${serverBase}/task-progress/${t}`);return await r.json()}catch(t){return import_console_browserify.default.error("Failed to poll task progress:",t),{tip:null}}},actionNameForType=t=>"aiAction"===t?"Action":"aiQuery"===t?"Query":"aiAssert"===t?"Assert":"aiTap"===t?"Tap":t,staticAgentFromContext=t=>{let r=new import_playground.StaticPage(t);return new import_playground.StaticPageAgent(r)},formatErrorMessage=t=>{let r=t?.message||"";return r.includes("of different extension")?"Conflicting extension detected. Please disable the suspicious plugins and refresh the page. Guide: https://midscenejs.com/quick-experience.html#faq":r?.includes(import_playground.ERROR_CODE_NOT_IMPLEMENTED_AS_DESIGNED)?"Unknown error":r},getPlaceholderForType=t=>"aiQuery"===t?"What do you want to query?":"aiAssert"===t?"What do you want to assert?":"What do you want to do?",blankResult={result:null,dump:null,reportHTML:null,error:null},useStaticPageAgent=t=>(0,import_react.useMemo)(()=>t?staticAgentFromContext(t):null,[t]);init_globals(),init_globals();var import_dayjs=__toESM(require_dayjs_min());function timeStr(t){return t?(0,import_dayjs.default)(t).format("YYYY-MM-DD HH:mm:ss"):"-"}function filterBase64Value(t){return t.replace(/data:image\/[^"]+"/g,'data:image..."')}var mousePointer="data:image/png;base64,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",mouseLoading="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAhGVYSWZNTQAqAAAACAAFARIAAwAAAAEAAQAAARoABQAAAAEAAABKARsABQAAAAEAAABSASgAAwAAAAEAAgAAh2kABAAAAAEAAABaAAAAAAAAAEgAAAABAAAASAAAAAEAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAYKADAAQAAAABAAAAYAAAAABaCTJNAAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgoZXuEHAAAZfUlEQVR4Ae1da5Ac1XXue7tnHzMrYSMMEqyMYB/CCOyEhTjxH9YYk0p4GEsBJxTgFNjalYDEruCHMAkjEsd2gsu4AD1DUrYpUoZgy4iEAhNbqiRQDpIxGAGSdnmYt4wgknZmd2em++b7TnfPzvZ0z660u3rNXGmnu2/f53fOPffccx9tWQ3XQKCBwEFAwFiWOgjZNLKIQ8BkLR3nf7j6mcss+0grcxWW5HipSMD5ZumpxxyJlWIdqio3jR4zwpksNOSNUfdbLq/5ZZ2/n9fq+jffOLFlGss+I0mRcYb7O1fl+zuu5z3rYLK9zkwxz7TLZRZUZS2Phc8v6zhLGbXC0WpJCT6uZX1m1pqB+4RAqNiMIHiAiYblHlreeUGLUo/YWln5krfBuN7ftK178ddMdibKPW0twBiInAD8kWULF4KDbkqn7C2tjlpS9IxhhZDZZXuXdh9Hrsoepv2C8qwbUVRruOgV0yl9qdL66Vx/11/nb+hs91uDpVnXA6RzVbRpIYBwhoLIAefn+zr/xDXuf6MBrEQlyEXkdDQI/LesT2lV+ghvbtk2fZVgelNxFDEsO4C+COmcP1IyLK2TL7gUoSrdpG41RevxfF/XYoZTqCvrPJU8w7hTJkDYLFmJXF9Xv6esu1tsdRwy0MZjPRQLqiGC3CZbpbSyV5ilPamQm8KCHKorC6iymwA5GcL0pZu0wn0J5SH2Nu5NvuCVUPb5tm09kO/v+jLLKuWfBiJMqSmF4O9Z3tFpe2p9Jm335vMi2j2/AuO43HM0CWG9Aw5anl49cL9UPmgarNShcKHYHOrr+mSTbT0KccmyxzGmC9FkQ/yQqx6ybe+vWu56cUeIwYGWPS6jSaUlzRayfN/nOxfZrvr3TJPuzefcQhCZ6UaJK60AHHYcuoTFUvFDDD7LSpEiV+V9AQxSy9nQI4i/l27WF3muepB191tyr1MrYq13tbNMiLmFIgTNdmRZ9/kQME8026qbzRSQNyVECbyVGkW/0Kz1n+be7ryCniRE7Tgz9zbMO7es68J0k/3HwyUDCVrT8bXKj3rFlK0Xatt6XDAAFsSkZsyEl/tdeXL+2eu2FpkxWutPIDJnFfxmW4sLwDiWm3aUhrDdPeqZzZC0m6VMWb93TijfzHrfEuSt3F35orcRHZSGrCcmbBXSMmIKQCKkCq7xEH42MSAWxITYxISv6TUBwcfHlc4TGQ2R8433IPT7VnSuSTIzjFxEJilUzBpxzbvo4a5Jv9v8sLp/WyiuwnCH5EqVUrQatMShtzp6taXWQv3sHEVn5RohQi0mRb8GpvLMsFH6krbVOx4LMZpsZSZNAJH5aGq55aeeozy9GXo9wKeKKVpOfH7KKkHmO6MFzwLnr8jMbb+NoouB0SRQ70PI/RUlruxI74Nmc+Gcjq8qS33Nr6OhVlFD5TSuo7XtkgjaOzez6sUnQ6wqski8nRQBWKjL0eFygAVtcgNk/mng5loFo8gxUEf1qGv+x1M6S+5gKchxK1ei7ws6v8SSHeQXZAjrMozigxH60NJTz8Qg7F4w0BkQTyWwComQhJeLutqo6wtQsy9tWb19e6hdTVSNpATL8ULuGLnu1O6SpzdmHN2NAiWDzzEMBioouEa4DWn3mMtVIB9D7i8nfpjehHUe+twpJyjHXoe6XAIlg6KWeCVh5kJ02bmCt8PT7iWzV7+0PUynVjVryTfh1pAjXFd/G6omwafsTmqS5HwLBdEYBd+TzqSvJPjbLlvUdKSAz/KLagmtpu2fXno7nUtfIXVBnQKBKXVkuIiz2VIyKdWtjb1x73WnzfFV1NpaXk0CWBAVzISjP9xcBPWLXJCkbonYSbdolSu6/4CB1lXqtmdybIqLDpMONwJYzUdptRC96gfP5FgXqRPqhkhSz4TITr5kCplWu8v2ikskzAQml6TmVLb80f7BITgGTzRxMvPqOPBHj+q1NqMJjnjfals78FVmHmoYUpAj9KeyDkN9nd/MtOiv5EeAhI9CNRZBPfFin1Hm6szqwQ21RFFsCwgjDC1fMBeJ3E66+9bkGPDJEZD5BH+44IMPKvmWUfgfobiXix2qqKwTGSs3itaNwQ8CsG5J9fNgBZ4Fs90dxFBEUYLdqIoAzGjlIj9hbVI3YfA0v+DW6HRRCJH5AB9NVTjfytLAlTiQKVfuSLmRuqBOLG/bmsGvDJfQv0HJwGMSATREUSmdUu3EUOp5vz9HIvcVP5JoxXNZ9OT6Tj0bw/Mn8wU2QglRFRa+yERD7nkbMqsHPs1QJCACJhVMEjpSf0JxZG78cCa/L39PS0pdOiLm9tixkAhsmLIVzNrnZNa+uCWULJX1r2oBbC7U+wHjTQIjZDsiJINfdF/2RqylTJTxjlbwWb9QHFG5wGj+M6MlsxlMyjoX+T7iMJYLpYBawXfENhJmvIpECjEARoLXpB39aTQjgl+tcvqdrjPqeszh2ln/MvBbDsE5WItmcLQ9UxztvKGzWUwpRq1l/dDciVFcq4dqaizHVosL/Z2/K2EjxsdyCxDRAQDNF9tbQavr0OkmO3Su7IdgLlkxa83gz2ToDX0/OcLR9abrjoFRqtfptTv/FQO0LLBI7A/QOlxihcHT1ytQKEuU8k1ov8j1d3y+2dbrMKwORU85TJCAR6tmrmgehVbwhxWJ1tWtMCy4nlIjP6dzFzA5NpAYZaYWQCAtbFj4YNjLK22uSa8a/GEYl+8lsHQuMJLtuXbRseD+Pgo1po2fKPjSLmDS56vb+BuKLd7XkwMwhq1A5DosvLmS2c0ZP2Ag6JSxQE8A8KmspD1PrTBfWPA+xoUtTLD3qXW5/5BqGu3GbE8PVSgAXC37adOH+oVpu4cya3eKcc2CelXOrM5uVgb1Tc9rfhhM/iub+p/PuFEkaKbgZM+H86N2B1+eHoyQfQLc54MI9j7P70oMU4o6emKlAHsHtRb34ACsJsA1GrBenmnRFdUyuw2ouN+A2C7SNI36R5lS4JIBnLGuJz6hwqKJJtWrfH/3SZgs+QtOGcLLJwxDjjnTmkI6lvVYZs3Oh6T5Bbb9sSD1dxcOWj3jPA10NtBkAydAjUdD6QK0Frz6RKW/5qiVHp5yz8cExAmQV3RVCcAD5mVDxVRkv4Rq/FhhK5i9bsc7rjEP+GKoGj9iSvwxgzYfxk0x1JGJtRXIImX0xylP4KLNh34GEXndljlxQGT/0WRqYMWm4sIBVlvR+Q/0j7t8JSZWNHNtFCyX5kuSH7CXXnxvX+cfQFtazNVJCc5L+dL+lw3g4xESkfzP2/eBV29ubhIJHjcoVZi6ZK95ItdSkXASMqXUQkypzQom2KPih52vjUmJnNHu7cyemcUXo459A0li22YzzNWctHIIVQQRhY6aXvNTRsnIWID0lOm2U2WqRQlQam2xofKY+9tWv/SMgJ+tSjiSTx0+Bup4c1PhVXAsbERlPCvBoKJaSLfaXHHxO3whoaD9tFN9jSIvMcWkBKp5agufn9u2qK5VT8Ek5gfYYVSMqdfvvDYMPDfEBBEvEEdziQi61LNp9tH55R3zgfxHS/AEzNHBFz0dTEVSDO1iCqcv+kBcJ52UX535bxO5j0HZsxgv7UF/6wC/8WIIfA5pQuF0rJVLZ7CgBTM3xjoFK70IVrQRcGkJfQc9p/RfPpqbGgSYgK1c29oLNEc1BU50VhDMjyU9NG1/aNQuztEFS50GGZ9CmjA/VBNA++pnrm3Vy28hUYVxg1BqgjLU52vOegHbtlU7fwXo30z5+uh4vCDSEabU2mxnisY5A/h6FxgZocVqNqAf45unBNFsL5Mcn2B9Qh1ba8FmZa8vxpW1xceuiqkZVxNzrHP5BDrhWKObnwGoSckEou0Wj22bGuD7yNT4DUS0Mb+gqIETRSc+gkqTACcmTb5ATikmAjpskgSCyfr4xBq+4xAwyrecjfMc/4ANRAW0AnOyT6iYpsI+BBNfReW9KVFvaYif8RBWP60MvLRtngeu8fsNwNGU+uD+0zmZNgSc4yU7WxB6bW3Z6SDdxmUCBG4JmNS4akTQE3AjkQI/XFrYAj4IKx4FfZWjFgVXShn9qtzFhBH/xs8YAgFGBdd+C57cZRnriDn+nahtrecliaAgstsyd+5rTAXPjU44Fs4xzxCjY3QbMUsigGK/C9P1PO7uiJdTFWm+Pfh889hj4246EUALqKUmSVbmhNZ2WvcabhIIhMJ8ROdOQnDuM45zhuNbjNre1J5ntoMIdFVhA5tD6j373Q8FAQKpJOEbP3EIBChCc5yP146MY6PhEMafOVOvYk5YjdDgmewMtoun/FNOqkiUHKve32CLXx6werHQhh0F9lqQ99/wTRbVLcD3UbajvLkC6MrY5Ood6/H1DzCC5jgP3E9raKLDK9kb/rpvb6sOx7gkDvbFtFe/bfjEIhDOsSvrXFqSRdusDog5dmqV5llcMGSoDhD6eJxEBoF6xCNIPHzZuCYjAB3/eJEsUXO0RDFGrMxK/a/GDMIjwuaxqyEM9h9LD7FQ4r2/x++uk/NtvAkxMlYHORcMHiOEMGeGV8D+dYyE1Vs0+OA5LqByxRhntQ9/buEp/nbTCdXWuiUCAFTE6LfXLOQk1/uMWDkDe0IMKrbRr+gmY+3Kj7hvYFEWJ2Wis11KViJa1jzPds9gGps29TZaQQyY9Nq6tIcrIazZTd4FgH0RDv/g43gJD9mEd5jmdfOYms9jRkzvQaA3/EURVa2AEmw0nXGakMxZTK39zNei88b0bjgg0PPeVmFgbKs/A5v0iAnniMcTAKopO2f8e67JTr2puaQODecJnGXFCNEWAHJhoh5nPSBGj/nzBS2yOSGaKGPWuRPxM7ZD6MzkfhUmamANXDequ17YHYgT8xhOumJ7oRiSdlPGE+boIl8Zc2bOUceIfzZC1XLgOr4JMMkv7foo0PoktuwSSRFJFagQW9v134mBUwjgKvMO3uyRUQGDjHfcD1BKtzgLQLlPjX/VeIoi4GpzVqbFng3dhwdYjRc/IAk3cYy43nvQg55nXFypA1km19+5Bbs4erCRgHKrSs5To0KnvmskZXXNuWNgbzTjxrOPQK6v88EWR12MqVyK84jCYnCgh81lnk+k1wx8jPsrNI9oYVQopnfiBW+rwKcnNSqcEHV8U8H8EZ/rdWsS6x514VrZERz6CsMmwWeQCPjgdPK6PzT+uaSBRQ463GKktfef9Iy2GQno/0Ct5ZI6tWRff8fxXNmLxxrBK2LWyS127d6Is5RYW+HkSLW5WY876H+DyfjvyjusI6JkEXJh996rwPPHrb42RDEUddRf4cxiR9vd8jJcAxMNWUfP/u7SsUNfY3V/Hw9DEzSawCvY2ivLPIm9NBPZGY9AOAPrVvQBDE6ohTB8CBzP/Cymm20cz+VdKH51vk4IAPmHvmYpbqKHvoawhVf/+GYYd75Hn1BsCQGeC9b7ZJzRV/DuKR6+gWt1K4BaxfPf4Jbv4zG+FEOSOb3q0AX9Jw/7Q/94UXCqVkwfis4XYgPMvTVftO+rRIqcLk6oCcIM9XVcjV17d0M2OTBDU8qXwwRBeRQL94u9m3l3wO8LyAnVLSYIfnRfgo3aL0D246RF6RWjeFGSGLzH+Xne0syawfXhpngiIy1AIAqoaTveZoT314JGk5KAluYBp0jwWOwQv1m8slVE8kMexb8EkdUbmdP5JUiMTjlZoJpZGcSQYfH+6XTr6D30sLKbytKlTABfnPQ6rXe99AqCrJdl6clcTSOdh10gWZyo9WfcN8YDLCTxOviRjRjYogtt8Dw0/W9U9JvVtYcM8bVScxc3b8i+4gpcywRgzPBgPdPsPQh16Sc8EwLecSoVRY5PRWX6WKDwAIvqEhxdPgIgzsAz+A4CwLm7WcwHsUv7WXGv2VGqUDLbcHjT9+lBRuc1dOMIQE9m0Pbdl962jPd3AeWi2pDEhWeK5+sjg3Pzx47+kIcYsSUczWMD1k0kxVU4sEl7d2NUuwDcz30VUZuPQAmMBF+sQfl7FZywIuBV/FQRgAMzEoEnPGHXzL3pVoe9esK6IGXjYwc8TfzS4Vx+DdNF05BDLCryOCpuqe2xbqzMcFt+DcTvJfmiS26OAx/exsvAJA3Zf2fb6p33ImLs5pYqAkC0GGtRr3S/yHAdrKQFaERN8JXMWYCIw5FcHjQjfeVQf8e35F326CKCqNqoE+vGOrKuvsoZe6QDg8HmD7WzZF41uvR1esipvMQ24gToiJ88+rIO3wfAtnpHmX9LUEnDqEIeOTO0cWwlYYawwpJPoy/HoU4/CrEMwaq8VrWA8GU4yJq1ZucD6IVvxd5WEqsYvo9cRQHjwa48VzNsCSKOgmPQIuGPiMdKscM6yZmhPLzWZ9sk5i36WKnvCfhBv5FU4UQCVEZIO9a3h0fcndCKOGHDTifOsUCKh5pmUvaX8e2wHxh0VkJIaElxEQ5nPzkXjkoFT0hEXaROPLCVstz/iyt+Cf1hKjfs/hxm+y9KgCQyBbFrEkC0GnAwevC9JeVejGPKdmDQwU5nnCpVURLJDpqBB6PelflM/l6qazzgLhy4VIQ9LG+BsBw6K2o1GIfHU0pdUKcJON/D2XAOTg7e4dpmKedMRPTEyP3Kik9AHz+oNEVww/4dXw/tCJMP0BRehgi7lof7MTUWipoWMq7qkCoLdijuw3oybw4wQYo+qtnU9OBFrJLwIvgag9O9mM762Kz1A9tqyX2mH7qkBMP35Wtovygs7z4HH274GeR7GxokW0KM8akcTQ525dcooEOvaNk98I/hQCRMrxzyEN3IuIVmdVh2fXEph/DdzFE+i8SxDnCvVUcXvSM/8LMP5wksaVu786eTBZ/pT5oADBx+niO3rONSTOvjcCJLY7BG7qglymSgAtFlQTQNgBR9bXMHN4l4g27NdHnP68F2UaB4UDnKt552LppaUB7+Jej5Ulr5tBXAh3gyS+Sgbn7gaD+O8Nw/AgArRPCPajyu42J8J/L7MMOGH/GpRQSKG7EIshvjoX9Iai2PPpNq8GVADCvLFRszI54o35G+1DkkOmf3OMHEOQ68WAbD2TE0NqJIDCdhwzJGruFXM4ZwANNV6XcGN0oLQhxEmrR4rZVBJL/qR378TGGMAPk3GxyTNCQfiyj6cfB1DUTAi8cwTXdby6qBR8cCofToJ7ZijWXPuq2l/alMZRrhPQnL1XxcUMaONfTffUPnbM5vc4oVOS7mRBPnOibRopmEiFbMob+AVbZXZ1bteDJMd3+vB0QA4SQsw2NTk4+ZaetH0JG7+X0tFCBVqxBEHZkSWIerxzBUtzCXuhG98sP4Gt8v0+t2/qIyPsWeFaw4szhxdEvAXUgA/8ucJmXi08qAa7mSG0SsFAdcWMa1TbK8xqi/5SIDMV6xQJjtQ2oOYuGppitSHadGiJZziXwvhmU8QGaZKLOaJQllqHzK0FXr8OWIj+eHgahvM6klkpgu4eKfpulbo4/Ijbh7UaCfwu/XQOLZvQX96AfkGDD4HKDjomJZ18qllVxmjwVmXOM0MurKSg8kWy5HzSz81mulUViOiaiWy3dieHTnFE6PnBIBWOCQCGzSLUXrO/D5LO0gWHxE7YFEmEwe0uFBeDqtPGkKNOTkNjQU8vH/4W8QjLkLz5u5a58bx7l3mdtnuYOTmwi5j41bqbibBxp7O+xXPch4IdBtRxnmyfpWiBiu8uNCM7zjBrrJlI3V9O1huEFBb+XAlGMjirewL2GgA3GTLUDNtEMiMBA1CX51A810Po7zZQ0J7kStwU/f5zL2JQxvIw3cMQWIKaBFcYUE+Ukpvmc4qsGsA15Q9LH/VnKePDeWcG8Dl9dLd4NFxghEdZJxJ1ceKbsxtAjTKInv2F5B0wzilxmP91NxLPy0OIGGPxA/8tkOz/ka1Dk5JTaYKyVIzG+yeTI8/sD3kip+KJ+D2NGEgsB+DL9GIHwQd//zZQoGDKCpKoDw9yLvda2rBzaT6/lyqpzPNOgmC4YfehK/la1haFnXFdgSflOToxaBISlWQlBqDWwmkYsfhKBPYwXYXHHYFbaWIl32S5wV5MQU50aYY2Xd+DwdbhrLP1YcFjQ0NxjMFWMFxdWA6jq0iI+QEPzKNlhZ1qUi1oyUYaw0k7pzKdYw+lX+DJcsSljPqVnODkp9MEcylc42qRQzVnlwkQx6wqbKEwLzw81XwrsPo+IeHmDKtY38CId0t9iNFpBixsoUgMCehqVj30R+sLgaEMDz9VM4UO92rgwJFicI14fMxADT7Wa6slLeyqbL/VPplHs5+P+zaPMnQ85+kCIeX2qiLk4U2LFiBwP+yhJ/ytVmuoSd1xTn0ZswAsTXkMQX5fgxVwVyYZpa/Zv3mNvBslUdFAJIhaRF9NqVzZhmAKD8l3h/HtgSp/fq99tQQw24UU7q4hp7caLdsKzR8lY+E2C68Mp7Ao7d0MoBk1sKyHOcggB7QPNBAH8nFyVzXSzD0eHduI96+r4z91tZgZnLpSLlJC0iz/OrcZQjqt+OzuFiEOR0mAf8g6KACs60YAsRx0ITRsou3EodwNC4gVkST9RcfU/eoDPFJkSEewP3TwDix9ySeWf2+sHHJbHgh+tjuUQzm/WJVvluJu+lnDOZQa20Q27jIoDKlmHwIcyCW5znYijgKu9kaCYnQaP8PXDsGSgwW0URQM7nWUc8bgegQ1002/Gep1QR7NfxnnbkRzA0eIs7QbkZUfbDBQUq532I5yb+H8lGaZooTb2GAAAAAElFTkSuQmCC",import_ui_utils=__toESM(require_ui_utils()),import_extractor=__toESM(require_extractor()),stillDuration=900,actionSpinningPointerDuration=300,stillAfterInsightDuration=300,locateDuration=800,actionDuration=1e3,clearInsightDuration=200,cameraStateForRect=(t,r,n)=>{let i,a=r/n,o=(i=t.width/t.height>=a?t.width:t.height/n*r)>400?.1:i>50?.2:.3,s=Math.min(r,i+r*o*2),l=n/r*s,u=Math.min(t.left-r*o,r-s);u=Math.max(u,0);let d=Math.min(t.top-n*o,n-l);return{left:Math.round(u),top:Math.round(d=Math.max(d,0)),width:Math.round(s)}},mergeTwoCameraState=(t,r)=>{let n=Math.min(t.left,r.left);return{left:n,top:Math.min(t.top,r.top),width:Math.max(t.left+t.width,r.left+r.width)-n}},allScriptsFromDump=t=>{let r,n,i,a,o;if(t.executions.forEach(t=>{t.sdkVersion&&(i=t.sdkVersion),t.model_name&&(a=t.model_name),t.model_description&&(o=t.model_description),t.tasks.forEach(t=>{let i=t;i.pageContext?.size?.width&&(r=i.pageContext.size.width,n=i.pageContext.size.height)})}),!r||!n)return import_console_browserify.default.warn("width or height is missing in dump file"),{scripts:[],sdkVersion:i,modelName:a,modelDescription:o};let s=[];return t.executions.forEach(t=>{let i=generateAnimationScripts(t,-1,r,n);i&&s.push(...i)}),{scripts:s.filter((t,r)=>r===s.length-1||"Done"!==t.title),width:r,height:n,sdkVersion:i,modelName:a,modelDescription:o}},generateAnimationScripts=(t,r,n,i)=>{if(!t||!t.tasks.length||0===n||0===i)return null;let a=[];if(-1===r)a=t.tasks;else{let n=t.tasks.findIndex(t=>t===r);if(-1===n)return import_console_browserify.default.error("task not found, cannot generate animation scripts"),null;if(n===t.tasks.length-1)return null;for(let r=n;r<t.tasks.length&&!(r>n&&"Planning"===t.tasks[r].type);r++)a.push(t.tasks[r])}if(0===(a=a.filter(t=>"Assertion"!==t.type&&"Query"!==t.type)).length)return null;let o=cameraStateForRect({left:0,top:0,width:n,height:i},n,i),s=(t,r,n)=>({type:"pointer",img:t,duration:0,title:r,subTitle:n}),l=[],u,d=o,c=!1,h=a.length,f="",p=!1;return a.forEach((t,r)=>{if(!p){if(0===r&&(f=(0,import_ui_utils.paramStr)(t)),"Planning"===t.type){let n=t;n.recorder&&n.recorder.length>0&&l.push({type:"img",img:n.recorder?.[0]?.screenshot,camera:0===r?o:void 0,duration:stillDuration,title:(0,import_ui_utils.typeStr)(t),subTitle:(0,import_ui_utils.paramStr)(t)})}else if("Insight"===t.type&&"Locate"===t.subType){let r=t,a=r.output?.element,s=(0,import_ui_utils.typeStr)(t),h=(0,import_ui_utils.paramStr)(t);a?.rect&&(u={...cameraStateForRect(a.rect,n,i),pointerLeft:a.center[0],pointerTop:a.center[1]});let f=r.pageContext;if(f?.screenshotBase64){let t,n=r.log?.dump,i=f.tree?(0,import_extractor.treeToList)(f.tree).length:0;f.screenshotBase64&&l.push({type:"img",img:f.screenshotBase64,duration:stillAfterInsightDuration,title:s,subTitle:h}),t=d===o?void 0:u?mergeTwoCameraState(d,u):void 0,l.push({type:"insight",img:f.screenshotBase64,context:f,camera:t,highlightElement:r.output?.element||void 0,searchArea:n?.taskInfo?.searchArea,duration:i>20?locateDuration:.5*locateDuration,insightCameraDuration:locateDuration,title:s,subTitle:h}),l.push({type:"sleep",duration:stillAfterInsightDuration,title:s,subTitle:h}),c=!0}}else if("Action"===t.type&&"FalsyConditionStatement"!==t.subType){let n=(0,import_ui_utils.typeStr)(t),i=(0,import_ui_utils.paramStr)(t);l.push(s(mousePointer,n,i)),d=u??o,l.push({type:"img",img:t.recorder?.[0]?.screenshot,duration:actionDuration,camera:"Sleep"===t.subType?o:u,title:n,subTitle:i}),c&&(l.push({type:"clear-insight",duration:clearInsightDuration,title:n,subTitle:i}),c=!1);let a=r<h-1?stillDuration:0;t.recorder?.[1]?.screenshot?(l.push({type:"spinning-pointer",duration:actionSpinningPointerDuration,title:n,subTitle:i}),l.push(s(mousePointer,n,i)),l.push({type:"img",img:t.recorder?.[1]?.screenshot,duration:a,title:n,subTitle:i})):l.push({type:"sleep",duration:a,title:n,subTitle:i})}if("finished"===t.status);else{p=!0;let r=(0,import_ui_utils.typeStr)(t),n=t.errorMessage||"unknown error",i=n.indexOf("NOT_IMPLEMENTED_AS_DESIGNED")>0?"Further actions cannot be performed in the current environment":n;l.push({type:"img",img:t.recorder&&t.recorder.length>0?t.recorder[t.recorder.length-1].screenshot:"",camera:o,duration:stillDuration,title:r,subTitle:i})}}}),p||l.push({title:"Done",subTitle:f,type:"img",duration:stillDuration,camera:o}),l};init_globals();var esm_exports={};__export(esm_exports,{create:()=>create,createStore:()=>createStore,default:()=>react,useStore:()=>useStore}),init_globals(),init_globals();var import_meta2={},createStoreImpl=t=>{let r,n=new Set,i=(t,i)=>{let a="function"==typeof t?t(r):t;if(!Object.is(a,r)){let t=r;r=(null!=i?i:"object"!=typeof a||null===a)?a:Object.assign({},r,a),n.forEach(n=>n(r,t))}},a=()=>r,o={setState:i,getState:a,getInitialState:()=>s,subscribe:t=>(n.add(t),()=>n.delete(t)),destroy:()=>{"production"!==(import_meta2.env?import_meta2.env.MODE:void 0)&&import_console_browserify.default.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),n.clear()}},s=r=t(i,a,o);return o},createStore=t=>t?createStoreImpl(t):createStoreImpl,import_react2=__toESM(__webpack_require__(4194),1),import_with_selector=__toESM(require_with_selector(),1),import_meta3={},{useDebugValue:useDebugValue}=import_react2.default,{useSyncExternalStoreWithSelector:useSyncExternalStoreWithSelector}=import_with_selector.default,didWarnAboutEqualityFn=!1,identity2=t=>t;function useStore(t,r=identity2,n){"production"!==(import_meta3.env?import_meta3.env.MODE:void 0)&&n&&!didWarnAboutEqualityFn&&(import_console_browserify.default.warn("[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937"),didWarnAboutEqualityFn=!0);let i=useSyncExternalStoreWithSelector(t.subscribe,t.getState,t.getServerState||t.getInitialState,r,n);return useDebugValue(i),i}var createImpl=t=>{"production"!==(import_meta3.env?import_meta3.env.MODE:void 0)&&"function"!=typeof t&&import_console_browserify.default.warn("[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.");let r="function"==typeof t?createStore(t):t,n=(t,n)=>useStore(r,t,n);return Object.assign(n,r),n},create=t=>t?createImpl(t):createImpl,react=t=>("production"!==(import_meta3.env?import_meta3.env.MODE:void 0)&&import_console_browserify.default.warn("[DEPRECATED] Default export is deprecated. Instead use `import { create } from 'zustand'`."),create(t)),{create:create2}=esm_exports,useBlackboardPreference=create2(t=>({markerVisible:!0,elementsVisible:!0,setMarkerVisible:r=>{t({markerVisible:r})},setTextsVisible:r=>{t({elementsVisible:r})}})),CONFIG_KEY="midscene-env-config",SERVICE_MODE_KEY="midscene-service-mode",TRACKING_ACTIVE_TAB_KEY="midscene-tracking-active-tab",DEEP_THINK_KEY="midscene-deep-think",getConfigStringFromLocalStorage=()=>localStorage.getItem(CONFIG_KEY)||"",parseConfig=t=>{let r=t.split("\n"),n={};return r.forEach(t=>{let r=t.trim();if(r.startsWith("#"))return;let i=r.replace(/^export\s+/i,"").replace(/;$/,"").trim().match(/^(\w+)=(.*)$/);if(i){let[,t,r]=i,a=r.trim();(a.startsWith("'")&&a.endsWith("'")||a.startsWith('"')&&a.endsWith('"'))&&(a=a.slice(1,-1)),n[t]=a}}),n},useEnvConfig=create2((t,r)=>{let n=getConfigStringFromLocalStorage(),i=parseConfig(n),a=window.location.href.startsWith("chrome-extension"),o=localStorage.getItem(SERVICE_MODE_KEY);return{serviceMode:a?"In-Browser-Extension":o||"Server",setServiceMode:r=>{if(a)throw Error("serviceMode cannot be set in extension");t({serviceMode:r}),localStorage.setItem(SERVICE_MODE_KEY,r)},config:i,configString:n,setConfig:r=>t({config:r}),loadConfig:r=>{t({config:parseConfig(r),configString:r}),localStorage.setItem(CONFIG_KEY,r)},syncFromStorage:()=>{let r=getConfigStringFromLocalStorage();t({config:parseConfig(r),configString:r})},forceSameTabNavigation:"false"!==localStorage.getItem(TRACKING_ACTIVE_TAB_KEY),setForceSameTabNavigation:r=>{t({forceSameTabNavigation:r}),localStorage.setItem(TRACKING_ACTIVE_TAB_KEY,r.toString())},deepThink:"true"===localStorage.getItem(DEEP_THINK_KEY),setDeepThink:r=>{t({deepThink:r}),localStorage.setItem(DEEP_THINK_KEY,r.toString())},popupTab:"playground",setPopupTab:r=>{t({popupTab:r})}}});init_globals();var elementColor=["#01204E"],highlightColorForSearchArea="#028391",highlightColorForElement="#fd5907";function djb2Hash(t){t||(t="unnamed");let r=5381;for(let n=0;n<t.length;n++)r=(r<<5)+r+t.charCodeAt(n);return r>>>0}function colorForName(t){return elementColor[djb2Hash(t)%elementColor.length]}function highlightColorForType(t){return"searchArea"===t?highlightColorForSearchArea:highlightColorForElement}function globalThemeConfig(){return{token:{colorPrimary:"#2B83FF"},components:{Layout:{headerHeight:60,headerPadding:"0 30px",headerBg:"#FFF",bodyBg:"#FFF"}}}}init_globals();var import_icons=__webpack_require__(8405),import_antd=__webpack_require__(1542),import_react3=__webpack_require__(4194),import_jsx_runtime=__toESM(require_jsx_runtime());function EnvConfig({showTooltipWhenEmpty:t=!0,showModelName:r=!0,tooltipPlacement:n="bottom",mode:i="icon"}){let{config:a,configString:o,loadConfig:s,syncFromStorage:l}=useEnvConfig(),[u,d]=(0,import_react3.useState)(!1),[c,h]=(0,import_react3.useState)(o),f=a.MIDSCENE_MODEL_NAME,p=(0,import_react3.useRef)(null),m=t=>{l(),d(!0),t.preventDefault(),t.stopPropagation()};return(0,import_react3.useEffect)(()=>{u&&h(o)},[u,o]),(0,import_jsx_runtime.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:"10px",alignItems:"center",height:"100%",minHeight:"32px"},ref:p,children:[r?f:null,(0,import_jsx_runtime.jsx)(import_antd.Tooltip,{title:"Please set up your environment variables before using.",placement:n,align:{offset:[-10,5]},getPopupContainer:()=>p.current,open:!u&&(t?0===Object.keys(a).length:void 0),children:"icon"===i?(0,import_jsx_runtime.jsx)(import_icons.SettingOutlined,{onClick:m}):(0,import_jsx_runtime.jsx)("span",{onClick:m,style:{color:"#006AFF",cursor:"pointer"},children:"set up"})}),(0,import_jsx_runtime.jsxs)(import_antd.Modal,{title:"Model Env Config",open:u,onOk:()=>{d(!1),s(c)},onCancel:()=>{d(!1)},okText:"Save",style:{width:"800px",height:"100%",marginTop:"10%"},destroyOnClose:!0,maskClosable:!0,centered:!0,children:[(0,import_jsx_runtime.jsx)(import_antd.Input.TextArea,{rows:7,placeholder:"OPENAI_API_KEY=sk-...\nMIDSCENE_MODEL_NAME=gpt-4o-2024-08-06\n...",value:c,onChange:t=>h(t.target.value),style:{whiteSpace:"nowrap",wordWrap:"break-word"}}),(0,import_jsx_runtime.jsxs)("div",{children:[(0,import_jsx_runtime.jsx)("p",{children:"The format is KEY=VALUE and separated by new lines."}),(0,import_jsx_runtime.jsxs)("p",{children:["These data will be saved ",(0,import_jsx_runtime.jsx)("strong",{children:"locally in your browser"}),"."]})]})]})]})}init_globals();var import_jsx_runtime2=__toESM(require_jsx_runtime()),Logo=({hideLogo:t=!1})=>t?null:(0,import_jsx_runtime2.jsx)("div",{className:"logo",children:(0,import_jsx_runtime2.jsx)("a",{href:"https://midscenejs.com/",target:"_blank",rel:"noreferrer",children:(0,import_jsx_runtime2.jsx)("img",{alt:"Midscene_logo",src:"https://lf3-static.bytednsdoc.com/obj/eden-cn/vhaeh7vhabf/Midscene.png"})})});init_globals();var import_icons2=__webpack_require__(8405),import_jsx_runtime3=__toESM(require_jsx_runtime());function timeCostStrElement(t){let r;return r="number"!=typeof t?"-":`${(t/1e3).toFixed(2)}s`,(0,import_jsx_runtime3.jsx)("span",{style:{fontVariantNumeric:"tabular-nums",fontFeatureSettings:"tnum"},children:r})}var iconForStatus=t=>{switch(t){case"finished":case"passed":case"success":case"connected":return(0,import_jsx_runtime3.jsx)("span",{style:{color:"#00AD4B"},children:(0,import_jsx_runtime3.jsx)(import_icons2.CheckOutlined,{})});case"finishedWithWarning":return(0,import_jsx_runtime3.jsx)("span",{style:{color:"#f7bb05"},children:(0,import_jsx_runtime3.jsx)(import_icons2.WarningOutlined,{})});case"failed":case"closed":case"timedOut":case"interrupted":return(0,import_jsx_runtime3.jsx)("span",{style:{color:"#FF0A0A"},children:(0,import_jsx_runtime3.jsx)(import_icons2.CloseOutlined,{})});case"pending":return(0,import_jsx_runtime3.jsx)(import_icons2.ClockCircleOutlined,{});case"cancelled":case"skipped":return(0,import_jsx_runtime3.jsx)(import_icons2.LogoutOutlined,{});case"running":return(0,import_jsx_runtime3.jsx)(import_icons2.ArrowRightOutlined,{});default:return(0,import_jsx_runtime3.jsx)(import_icons2.MinusOutlined,{})}};init_globals();var import_react4=__webpack_require__(4194),useServerValid=(t=!0)=>{let[r,n]=(0,import_react4.useState)(!0),{serviceMode:i}=useEnvConfig();return(0,import_react4.useEffect)(()=>{let r=!1;if(t)return Promise.resolve((async()=>{for(;!r;)n(!!await checkServerStatus()),await new Promise(t=>setTimeout(t,1e3))})()),()=>{r=!0}},[i,t]),r};init_globals();var import_icons4=__webpack_require__(8405),import_antd5=__webpack_require__(1542);function generateShaderSyncPolyfill(){return syncShader}function syncShader(t,r,n){let i=t.gl,a=t.shader,o=a._getProgramData(r.glProgram);for(let s in r.groups){let l=r.groups[s];for(let u in l.resources){let d=l.resources[u];if(d instanceof UniformGroup)d.ubo?a.bindUniformBlock(d,r._uniformBindMap[s][u],n.blockIndex++):a.updateUniformGroup(d);else if(d instanceof BufferResource)a.bindUniformBlock(d,r._uniformBindMap[s][u],n.blockIndex++);else if(d instanceof TextureSource){t.texture.bind(d,n.textureCount);let a=r._uniformBindMap[s][u],l=o.uniformData[a];l&&(l.value!==n.textureCount&&i.uniform1i(l.location,n.textureCount),n.textureCount++)}}}}init_globals(),init_globals(),init_GlUboSystem(),init_GlShaderSystem(),init_GlUniformGroupSystem(),init_GpuUboSystem(),init_UboSystem(),init_AbstractRenderer(),init_globals(),init_BufferResource(),init_UniformGroup(),init_TextureSource(),init_TextureStyle(),init_globals(),init_createUboElementsSTD40(),init_createUboElementsWGSL(),init_uniformParsers(),init_globals();var uboParserFunctions=[(t,r,n,i,a)=>{let o=i[t].toArray(!0);r[n]=o[0],r[n+1]=o[1],r[n+2]=o[2],r[n+4]=o[3],r[n+5]=o[4],r[n+6]=o[5],r[n+8]=o[6],r[n+9]=o[7],r[n+10]=o[8]},(t,r,n,i,a)=>{a=i[t],r[n]=a.x,r[n+1]=a.y,r[n+2]=a.width,r[n+3]=a.height},(t,r,n,i,a)=>{a=i[t],r[n]=a.x,r[n+1]=a.y},(t,r,n,i,a)=>{a=i[t],r[n]=a.red,r[n+1]=a.green,r[n+2]=a.blue,r[n+3]=a.alpha},(t,r,n,i,a)=>{a=i[t],r[n]=a.red,r[n+1]=a.green,r[n+2]=a.blue}],uboSingleFunctionsWGSL={f32:(t,r,n,i,a)=>{r[n]=a},i32:(t,r,n,i,a)=>{r[n]=a},"vec2<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1]},"vec3<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1],r[n+2]=a[2]},"vec4<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1],r[n+2]=a[2],r[n+3]=a[3]},"mat2x2<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1],r[n+2]=a[2],r[n+3]=a[3]},"mat3x3<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1],r[n+2]=a[2],r[n+4]=a[3],r[n+5]=a[4],r[n+6]=a[5],r[n+8]=a[6],r[n+9]=a[7],r[n+10]=a[8]},"mat4x4<f32>":(t,r,n,i,a)=>{for(let t=0;t<16;t++)r[n+t]=a[t]},"mat3x2<f32>":(t,r,n,i,a)=>{for(let t=0;t<6;t++)r[n+4*(t/3|0)+t%3]=a[t]},"mat4x2<f32>":(t,r,n,i,a)=>{for(let t=0;t<8;t++)r[n+4*(t/4|0)+t%4]=a[t]},"mat2x3<f32>":(t,r,n,i,a)=>{for(let t=0;t<6;t++)r[n+4*(t/2|0)+t%2]=a[t]},"mat4x3<f32>":(t,r,n,i,a)=>{for(let t=0;t<12;t++)r[n+4*(t/4|0)+t%4]=a[t]},"mat2x4<f32>":(t,r,n,i,a)=>{for(let t=0;t<8;t++)r[n+4*(t/2|0)+t%2]=a[t]},"mat3x4<f32>":(t,r,n,i,a)=>{for(let t=0;t<12;t++)r[n+4*(t/3|0)+t%3]=a[t]}},uboSingleFunctionsSTD40={f32:(t,r,n,i,a)=>{r[n]=a},i32:(t,r,n,i,a)=>{r[n]=a},"vec2<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1]},"vec3<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1],r[n+2]=a[2]},"vec4<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1],r[n+2]=a[2],r[n+3]=a[3]},"mat2x2<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1],r[n+4]=a[2],r[n+5]=a[3]},"mat3x3<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1],r[n+2]=a[2],r[n+4]=a[3],r[n+5]=a[4],r[n+6]=a[5],r[n+8]=a[6],r[n+9]=a[7],r[n+10]=a[8]},"mat4x4<f32>":(t,r,n,i,a)=>{for(let t=0;t<16;t++)r[n+t]=a[t]},"mat3x2<f32>":(t,r,n,i,a)=>{for(let t=0;t<6;t++)r[n+4*(t/3|0)+t%3]=a[t]},"mat4x2<f32>":(t,r,n,i,a)=>{for(let t=0;t<8;t++)r[n+4*(t/4|0)+t%4]=a[t]},"mat2x3<f32>":(t,r,n,i,a)=>{for(let t=0;t<6;t++)r[n+4*(t/2|0)+t%2]=a[t]},"mat4x3<f32>":(t,r,n,i,a)=>{for(let t=0;t<12;t++)r[n+4*(t/4|0)+t%4]=a[t]},"mat2x4<f32>":(t,r,n,i,a)=>{for(let t=0;t<8;t++)r[n+4*(t/2|0)+t%2]=a[t]},"mat3x4<f32>":(t,r,n,i,a)=>{for(let t=0;t<12;t++)r[n+4*(t/3|0)+t%3]=a[t]}};function generateUboSyncPolyfillSTD40(t){return generateUboSyncPolyfill(t,uboSingleFunctionsSTD40,t=>{let r=Math.max(WGSL_TO_STD40_SIZE[t.data.type]/16,1),n=t.data.value.length/t.data.size,i=(4-n%4)%4;return(a,o,s,l,u)=>{let d=0;for(let a=0;a<t.data.size*r;a++){for(let t=0;t<n;t++)o[s++]=u[d++];s+=i}}})}function generateUboSyncPolyfillWGSL(t){return generateUboSyncPolyfill(t,uboSingleFunctionsWGSL,t=>{let{size:r,align:n}=WGSL_ALIGN_SIZE_DATA[t.data.type],i=(r-n)/4;return(n,a,o,s,l)=>{let u=0;for(let n=0;n<t.data.size*(r/4);n++){for(let t=0;t<r/4;t++)a[o++]=l[u++];o+=i}}})}function generateUboSyncPolyfill(t,r,n){let i={};for(let a in t){let o=t[a],s=o.data,l=!1;i[s.name]={offset:o.offset/4,func:null};for(let t=0;t<uniformParsers.length;t++){let r=uniformParsers[t];if(s.type===r.type&&r.test(s)){i[s.name].func=uboParserFunctions[t],l=!0;break}}l||(1===s.size?i[s.name].func=r[s.type]:i[s.name].func=n(o))}return(t,r,n)=>{for(let a in i)i[a].func(a,r,n+i[a].offset,t,t[a])}}init_globals(),init_uniformParsers(),init_globals();var uniformSingleParserFunctions={f32(t,r,n,i,a,o,s){n!==i&&(r.value=i,s.uniform1f(a[t].location,i))},"vec2<f32>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]||(n[0]=i[0],n[1]=i[1],s.uniform2f(a[t].location,i[0],i[1]))},"vec3<f32>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]&&n[2]===i[2]||(n[0]=i[0],n[1]=i[1],n[2]=i[2],s.uniform3f(a[t].location,i[0],i[1],i[2]))},"vec4<f32>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]&&n[2]===i[2]&&n[3]===i[3]||(n[0]=i[0],n[1]=i[1],n[2]=i[2],n[3]=i[3],s.uniform4f(a[t].location,i[0],i[1],i[2],i[3]))},i32(t,r,n,i,a,o,s){n!==i&&(r.value=i,s.uniform1i(a[t].location,i))},"vec2<i32>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]||(n[0]=i[0],n[1]=i[1],s.uniform2i(a[t].location,i[0],i[1]))},"vec3<i32>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]&&n[2]===i[2]||(n[0]=i[0],n[1]=i[1],n[2]=i[2],s.uniform3i(a[t].location,i[0],i[1],i[2]))},"vec4<i32>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]&&n[2]===i[2]&&n[3]===i[3]||(n[0]=i[0],n[1]=i[1],n[2]=i[2],n[3]=i[3],s.uniform4i(a[t].location,i[0],i[1],i[2],i[3]))},u32(t,r,n,i,a,o,s){n!==i&&(r.value=i,s.uniform1ui(a[t].location,i))},"vec2<u32>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]||(n[0]=i[0],n[1]=i[1],s.uniform2ui(a[t].location,i[0],i[1]))},"vec3<u32>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]&&n[2]===i[2]||(n[0]=i[0],n[1]=i[1],n[2]=i[2],s.uniform3ui(a[t].location,i[0],i[1],i[2]))},"vec4<u32>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]&&n[2]===i[2]&&n[3]===i[3]||(n[0]=i[0],n[1]=i[1],n[2]=i[2],n[3]=i[3],s.uniform4ui(a[t].location,i[0],i[1],i[2],i[3]))},bool(t,r,n,i,a,o,s){n!==i&&(r.value=i,s.uniform1i(a[t].location,i))},"vec2<bool>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]||(n[0]=i[0],n[1]=i[1],s.uniform2i(a[t].location,i[0],i[1]))},"vec3<bool>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]&&n[2]===i[2]||(n[0]=i[0],n[1]=i[1],n[2]=i[2],s.uniform3i(a[t].location,i[0],i[1],i[2]))},"vec4<bool>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]&&n[2]===i[2]&&n[3]===i[3]||(n[0]=i[0],n[1]=i[1],n[2]=i[2],n[3]=i[3],s.uniform4i(a[t].location,i[0],i[1],i[2],i[3]))},"mat2x2<f32>"(t,r,n,i,a,o,s){s.uniformMatrix2fv(a[t].location,!1,i)},"mat3x3<f32>"(t,r,n,i,a,o,s){s.uniformMatrix3fv(a[t].location,!1,i)},"mat4x4<f32>"(t,r,n,i,a,o,s){s.uniformMatrix4fv(a[t].location,!1,i)}},uniformArrayParserFunctions={f32(t,r,n,i,a,o,s){s.uniform1fv(a[t].location,i)},"vec2<f32>"(t,r,n,i,a,o,s){s.uniform2fv(a[t].location,i)},"vec3<f32>"(t,r,n,i,a,o,s){s.uniform3fv(a[t].location,i)},"vec4<f32>"(t,r,n,i,a,o,s){s.uniform4fv(a[t].location,i)},"mat2x2<f32>"(t,r,n,i,a,o,s){s.uniformMatrix2fv(a[t].location,!1,i)},"mat3x3<f32>"(t,r,n,i,a,o,s){s.uniformMatrix3fv(a[t].location,!1,i)},"mat4x4<f32>"(t,r,n,i,a,o,s){s.uniformMatrix4fv(a[t].location,!1,i)},i32(t,r,n,i,a,o,s){s.uniform1iv(a[t].location,i)},"vec2<i32>"(t,r,n,i,a,o,s){s.uniform2iv(a[t].location,i)},"vec3<i32>"(t,r,n,i,a,o,s){s.uniform3iv(a[t].location,i)},"vec4<i32>"(t,r,n,i,a,o,s){s.uniform4iv(a[t].location,i)},u32(t,r,n,i,a,o,s){s.uniform1iv(a[t].location,i)},"vec2<u32>"(t,r,n,i,a,o,s){s.uniform2iv(a[t].location,i)},"vec3<u32>"(t,r,n,i,a,o,s){s.uniform3iv(a[t].location,i)},"vec4<u32>"(t,r,n,i,a,o,s){s.uniform4iv(a[t].location,i)},bool(t,r,n,i,a,o,s){s.uniform1iv(a[t].location,i)},"vec2<bool>"(t,r,n,i,a,o,s){s.uniform2iv(a[t].location,i)},"vec3<bool>"(t,r,n,i,a,o,s){s.uniform3iv(a[t].location,i)},"vec4<bool>"(t,r,n,i,a,o,s){s.uniform4iv(a[t].location,i)}},uniformParserFunctions=[(t,r,n,i,a,o,s)=>{s.uniformMatrix3fv(a[t].location,!1,o[t].toArray(!0))},(t,r,n,i,a,o,s)=>{n=a[t].value,i=o[t],n[0]===i.x&&n[1]===i.y&&n[2]===i.width&&n[3]===i.height||(n[0]=i.x,n[1]=i.y,n[2]=i.width,n[3]=i.height,s.uniform4f(a[t].location,i.x,i.y,i.width,i.height))},(t,r,n,i,a,o,s)=>{n=a[t].value,i=o[t],n[0]===i.x&&n[1]===i.y||(n[0]=i.x,n[1]=i.y,s.uniform2f(a[t].location,i.x,i.y))},(t,r,n,i,a,o,s)=>{n=a[t].value,i=o[t],n[0]===i.red&&n[1]===i.green&&n[2]===i.blue&&n[3]===i.alpha||(n[0]=i.red,n[1]=i.green,n[2]=i.blue,n[3]=i.alpha,s.uniform4f(a[t].location,i.red,i.green,i.blue,i.alpha))},(t,r,n,i,a,o,s)=>{n=a[t].value,i=o[t],n[0]===i.red&&n[1]===i.green&&n[2]===i.blue||(n[0]=i.red,n[1]=i.green,n[2]=i.blue,s.uniform3f(a[t].location,i.red,i.green,i.blue))}];function generateUniformsSyncPolyfill(t,r){let n={};for(let i in t.uniformStructures){if(!r[i])continue;let a=t.uniformStructures[i],o=!1;for(let t=0;t<uniformParsers.length;t++){let r=uniformParsers[t];if(a.type===r.type&&r.test(a)){n[i]=uniformParserFunctions[t],o=!0;break}}if(!o){let t=1===a.size?uniformSingleParserFunctions:uniformArrayParserFunctions;n[i]=t[a.type]}}return(t,r,i)=>{let a=i.gl;for(let i in n){let o=r[i],s=t[i],l=t[i].value;n[i](i,s,l,o,t,r,a)}}}function selfInstall(){Object.assign(AbstractRenderer.prototype,{_unsafeEvalCheck(){}}),Object.assign(UboSystem.prototype,{_systemCheck(){}}),Object.assign(GlUniformGroupSystem.prototype,{_generateUniformsSync:generateUniformsSyncPolyfill}),Object.assign(GlUboSystem.prototype,{_generateUboSync:generateUboSyncPolyfillSTD40}),Object.assign(GpuUboSystem.prototype,{_generateUboSync:generateUboSyncPolyfillWGSL}),Object.assign(GlShaderSystem.prototype,{_generateShaderSync:generateShaderSyncPolyfill})}selfInstall(),init_globals(),init_globals(),init_Extensions();var browserExt={extension:{type:ExtensionType.Environment,name:"browser",priority:-1},test:()=>!0,load:async()=>{await Promise.resolve().then(()=>(init_browserAll(),browserAll_exports))}};init_globals(),init_Extensions();var webworkerExt={extension:{type:ExtensionType.Environment,name:"webworker",priority:0},test:()=>"undefined"!=typeof self&&void 0!==self.WorkerGlobalScope,load:async()=>{await Promise.resolve().then(()=>(init_webworkerAll(),webworkerAll_exports))}};init_Extensions(),init_init5(),init_init4(),init_globals(),init_Extensions(),init_globals(),init_globals(),init_Extensions();var _isWebGLSupported,_isWebGPUSupported,environments=[];async function autoDetectEnvironment(t){if(t)for(let t=0;t<environments.length;t++){let r=environments[t];if(r.value.test())return void await r.value.load()}}function isWebGLSupported(t){return void 0!==_isWebGLSupported?_isWebGLSupported:_isWebGLSupported=(()=>{let r={stencil:!0,failIfMajorPerformanceCaveat:t??AbstractRenderer.defaultOptions.failIfMajorPerformanceCaveat};try{if(!DOMAdapter.get().getWebGLRenderingContext())return!1;let t=DOMAdapter.get().createCanvas().getContext("webgl",r),n=!!t?.getContextAttributes()?.stencil;if(t){let r=t.getExtension("WEBGL_lose_context");r&&r.loseContext()}return t=null,n}catch(t){return!1}})()}async function isWebGPUSupported(t={}){return void 0!==_isWebGPUSupported?_isWebGPUSupported:_isWebGPUSupported=await (async()=>{if(!DOMAdapter.get().getNavigator().gpu)return!1;try{let r=await navigator.gpu.requestAdapter(t);return await r.requestDevice(),!0}catch(t){return!1}})()}extensions.handleByNamedList(ExtensionType.Environment,environments),init_globals(),init_adapter(),init_AbstractRenderer(),init_globals(),init_adapter(),init_AbstractRenderer();var renderPriority=["webgl","webgpu","canvas"];async function autoDetectRenderer(t){let r,n=[];t.preference?(n.push(t.preference),renderPriority.forEach(r=>{r!==t.preference&&n.push(r)})):n=renderPriority.slice(),await autoDetectEnvironment(t.manageImports??!0);let i={};for(let a=0;a<n.length;a++){let o=n[a];if("webgpu"===o&&await isWebGPUSupported()){let{WebGPURenderer:n}=await Promise.resolve().then(()=>(init_WebGPURenderer(),WebGPURenderer_exports));r=n,i={...t,...t.webgpu};break}if("webgl"===o&&isWebGLSupported(t.failIfMajorPerformanceCaveat??AbstractRenderer.defaultOptions.failIfMajorPerformanceCaveat)){let{WebGLRenderer:n}=await Promise.resolve().then(()=>(init_WebGLRenderer(),WebGLRenderer_exports));r=n,i={...t,...t.webgl};break}if("canvas"===o)throw i={...t},Error("CanvasRenderer is not yet implemented")}if(delete i.webgpu,delete i.webgl,!r)throw Error("No available renderer for the current environment");let a=new r;return await a.init(i),a}init_Container(),init_deprecation();var _Application=class e{constructor(...t){this.stage=new Container,void 0!==t[0]&&deprecation(v8_0_0,"Application constructor options are deprecated, please use Application.init() instead.")}async init(t){t={...t},this.renderer=await autoDetectRenderer(t),e._plugins.forEach(r=>{r.init.call(this,t)})}render(){this.renderer.render({container:this.stage})}get canvas(){return this.renderer.canvas}get view(){return deprecation(v8_0_0,"Application.view is deprecated, please use Application.canvas instead."),this.renderer.canvas}get screen(){return this.renderer.screen}destroy(t=!1,r=!1){let n=e._plugins.slice(0);n.reverse(),n.forEach(t=>{t.destroy.call(this)}),this.stage.destroy(r),this.stage=null,this.renderer.destroy(t),this.renderer=null}};_Application._plugins=[];var Application=_Application;extensions.handleByList(ExtensionType.Application,Application._plugins),init_globals(),init_Extensions(),init_warn2(),init_globals();var BackgroundLoader=class{constructor(t,r=!1){this._loader=t,this._assetList=[],this._isLoading=!1,this._maxConcurrent=1,this.verbose=r}add(t){t.forEach(t=>{this._assetList.push(t)}),this.verbose&&import_console_browserify.default.log("[BackgroundLoader] assets: ",this._assetList),this._isActive&&!this._isLoading&&this._next()}async _next(){if(this._assetList.length&&this._isActive){this._isLoading=!0;let t=[],r=Math.min(this._assetList.length,this._maxConcurrent);for(let n=0;n<r;n++)t.push(this._assetList.pop());await this._loader.load(t),this._isLoading=!1,this._next()}}get active(){return this._isActive}set active(t){this._isActive!==t&&(this._isActive=t,t&&!this._isLoading&&this._next())}};init_Cache(),init_globals(),init_Extensions(),init_Texture();var cacheTextureArray={extension:ExtensionType.CacheParser,test:t=>Array.isArray(t)&&t.every(t=>t instanceof Texture),getCacheableAssets:(t,r)=>{let n={};return t.forEach(t=>{r.forEach((r,i)=>{n[t+(0===i?"":i+1)]=r})}),n}};async function testImageFormat(t){if("Image"in globalThis)return new Promise(r=>{let n=new Image;n.onload=()=>{r(!0)},n.onerror=()=>{r(!1)},n.src=t});if("createImageBitmap"in globalThis&&"fetch"in globalThis){try{let r=await (await fetch(t)).blob();await createImageBitmap(r)}catch(t){return!1}return!0}return!1}init_globals(),init_Extensions(),init_globals();var detectAvif={extension:{type:ExtensionType.DetectionParser,priority:1},test:async()=>testImageFormat("data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A="),add:async t=>[...t,"avif"],remove:async t=>t.filter(t=>"avif"!==t)};init_globals(),init_Extensions();var imageFormats=["png","jpg","jpeg"],detectDefaults={extension:{type:ExtensionType.DetectionParser,priority:-1},test:()=>Promise.resolve(!0),add:async t=>[...t,...imageFormats],remove:async t=>t.filter(t=>!imageFormats.includes(t))};init_globals(),init_Extensions(),init_globals();var inWorker="WorkerGlobalScope"in globalThis&&globalThis instanceof globalThis.WorkerGlobalScope;function testVideoFormat(t){return!inWorker&&""!==document.createElement("video").canPlayType(t)}var detectMp4={extension:{type:ExtensionType.DetectionParser,priority:0},test:async()=>testVideoFormat("video/mp4"),add:async t=>[...t,"mp4","m4v"],remove:async t=>t.filter(t=>"mp4"!==t&&"m4v"!==t)};init_globals(),init_Extensions();var detectOgv={extension:{type:ExtensionType.DetectionParser,priority:0},test:async()=>testVideoFormat("video/ogg"),add:async t=>[...t,"ogv"],remove:async t=>t.filter(t=>"ogv"!==t)};init_globals(),init_Extensions();var detectWebm={extension:{type:ExtensionType.DetectionParser,priority:0},test:async()=>testVideoFormat("video/webm"),add:async t=>[...t,"webm"],remove:async t=>t.filter(t=>"webm"!==t)};init_globals(),init_Extensions();var detectWebp={extension:{type:ExtensionType.DetectionParser,priority:0},test:async()=>testImageFormat("data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="),add:async t=>[...t,"webp"],remove:async t=>t.filter(t=>"webp"!==t)};init_globals(),init_warn2(),init_path(),init_convertToList(),init_isSingleItem();var Loader=class{constructor(){this._parsers=[],this._parsersValidated=!1,this.parsers=new Proxy(this._parsers,{set:(t,r,n)=>(this._parsersValidated=!1,t[r]=n,!0)}),this.promiseCache={}}reset(){this._parsersValidated=!1,this.promiseCache={}}_getLoadPromiseAndParser(t,r){let n={promise:null,parser:null};return n.promise=(async()=>{let i=null,a=null;if(r.loadParser&&((a=this._parserHash[r.loadParser])||warn(`[Assets] specified load parser "${r.loadParser}" not found while loading ${t}`)),!a){for(let n=0;n<this.parsers.length;n++){let i=this.parsers[n];if(i.load&&i.test?.(t,r,this)){a=i;break}}if(!a)return warn(`[Assets] ${t} could not be loaded as we don't know how to parse it, ensure the correct parser has been added`),null}i=await a.load(t,r,this),n.parser=a;for(let t=0;t<this.parsers.length;t++){let a=this.parsers[t];a.parse&&a.parse&&await a.testParse?.(i,r,this)&&(i=await a.parse(i,r,this)||i,n.parser=a)}return i})(),n}async load(t,r){this._parsersValidated||this._validateParsers();let n=0,i={},a=isSingleItem(t),o=convertToList(t,t=>({alias:[t],src:t})),s=o.length,l=o.map(async t=>{let a=path.toAbsolute(t.src);if(!i[t.src])try{this.promiseCache[a]||(this.promiseCache[a]=this._getLoadPromiseAndParser(a,t)),i[t.src]=await this.promiseCache[a].promise,r&&r(++n/s)}catch(r){throw delete this.promiseCache[a],delete i[t.src],Error(`[Loader.load] Failed to load ${a}.
906
906
  ${r}`)}});return await Promise.all(l),a?i[o[0].src]:i}async unload(t){let r=convertToList(t,t=>({alias:[t],src:t})).map(async t=>{let r=path.toAbsolute(t.src),n=this.promiseCache[r];if(n){let i=await n.promise;delete this.promiseCache[r],await n.parser?.unload?.(i,t,this)}});await Promise.all(r)}_validateParsers(){this._parsersValidated=!0,this._parserHash=this._parsers.filter(t=>t.name).reduce((t,r)=>(r.name?t[r.name]&&warn(`[Assets] loadParser name conflict "${r.name}"`):warn("[Assets] loadParser should have a name"),{...t,[r.name]:r}),{})}};function checkDataUrl(t,r){if(Array.isArray(r)){for(let n of r)if(t.startsWith(`data:${n}`))return!0;return!1}return t.startsWith(`data:${r}`)}function checkExtension(t,r){let n=t.split("?")[0],i=path.extname(n).toLowerCase();return Array.isArray(r)?r.includes(i):i===r}init_globals(),init_adapter(),init_Extensions(),init_globals(),init_globals(),init_path(),init_LoaderParser();var validJSONExtension=".json",validJSONMIME="application/json",loadJson={extension:{type:ExtensionType.LoadParser,priority:LoaderParserPriority.Low},name:"loadJson",test:t=>checkDataUrl(t,validJSONMIME)||checkExtension(t,validJSONExtension),async load(t){let r=await DOMAdapter.get().fetch(t);return await r.json()}};init_globals(),init_adapter(),init_Extensions(),init_LoaderParser();var validTXTExtension=".txt",validTXTMIME="text/plain",loadTxt={name:"loadTxt",extension:{type:ExtensionType.LoadParser,priority:LoaderParserPriority.Low},test:t=>checkDataUrl(t,validTXTMIME)||checkExtension(t,validTXTExtension),async load(t){let r=await DOMAdapter.get().fetch(t);return await r.text()}};init_globals(),init_adapter(),init_Extensions(),init_warn2(),init_path(),init_Cache(),init_LoaderParser();var validWeights=["normal","bold","100","200","300","400","500","600","700","800","900"],validFontExtensions=[".ttf",".otf",".woff",".woff2"],validFontMIMEs=["font/ttf","font/otf","font/woff","font/woff2"],CSS_IDENT_TOKEN_REGEX=/^(--|-?[A-Z_])[0-9A-Z_-]*$/i;function getFontFamilyName(t){let r=path.extname(t),n=path.basename(t,r).replace(/(-|_)/g," ").toLowerCase().split(" ").map(t=>t.charAt(0).toUpperCase()+t.slice(1)),i=n.length>0;for(let t of n)if(!t.match(CSS_IDENT_TOKEN_REGEX)){i=!1;break}let a=n.join(" ");return i||(a=`"${a.replace(/[\\"]/g,"\\$&")}"`),a}var validURICharactersRegex=/^[0-9A-Za-z%:/?#\[\]@!\$&'()\*\+,;=\-._~]*$/;function encodeURIWhenNeeded(t){return validURICharactersRegex.test(t)?t:encodeURI(t)}var loadWebFont={extension:{type:ExtensionType.LoadParser,priority:LoaderParserPriority.Low},name:"loadWebFont",test:t=>checkDataUrl(t,validFontMIMEs)||checkExtension(t,validFontExtensions),async load(t,r){let n=DOMAdapter.get().getFontFaceSet();if(n){let i=[],a=r.data?.family??getFontFamilyName(t),o=r.data?.weights?.filter(t=>validWeights.includes(t))??["normal"],s=r.data??{};for(let r=0;r<o.length;r++){let l=o[r],u=new FontFace(a,`url(${encodeURIWhenNeeded(t)})`,{...s,weight:l});await u.load(),n.add(u),i.push(u)}return Cache.set(`${a}-and-url`,{url:t,fontFaces:i}),1===i.length?i[0]:i}return warn("[loadWebFont] FontFace API is not supported. Skipping loading font"),null},unload(t){(Array.isArray(t)?t:[t]).forEach(t=>{Cache.remove(t.family),DOMAdapter.get().getFontFaceSet().delete(t)})}};function getResolutionOfUrl(t,r=1){let n=Resolver.RETINA_PREFIX?.exec(t);return n?parseFloat(n[1]):r}function createTexture(t,r,n){t.label=n,t._sourceOrigin=n;let i=new Texture({source:t,label:n}),a=()=>{delete r.promiseCache[n],Cache.has(n)&&Cache.remove(n)};return i.source.once("destroy",()=>{r.promiseCache[n]&&(warn("[Assets] A TextureSource managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the TextureSource."),a())}),i.once("destroy",()=>{t.destroyed||(warn("[Assets] A Texture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the Texture."),a())}),i}init_globals(),init_adapter(),init_Extensions(),init_ImageSource(),init_GraphicsContext(),init_globals(),init_Resolver(),init_LoaderParser(),init_globals(),init_Texture(),init_warn2(),init_Cache();var validSVGExtension=".svg",validSVGMIME="image/svg+xml",loadSvg={extension:{type:ExtensionType.LoadParser,priority:LoaderParserPriority.Low},name:"loadSVG",config:{crossOrigin:"anonymous",parseAsGraphicsContext:!1},test:t=>checkDataUrl(t,validSVGMIME)||checkExtension(t,validSVGExtension),async load(t,r,n){return r.data.parseAsGraphicsContext??this.config.parseAsGraphicsContext?loadAsGraphics(t):loadAsTexture(t,r,n,this.config.crossOrigin)},unload(t){t.destroy(!0)}};async function loadAsTexture(t,r,n,i){let a=await DOMAdapter.get().fetch(t),o=await a.blob(),s=URL.createObjectURL(o),l=new Image;l.src=s,l.crossOrigin=i,await l.decode(),URL.revokeObjectURL(s);let u=document.createElement("canvas"),d=u.getContext("2d"),c=r.data?.resolution||getResolutionOfUrl(t),h=r.data?.width??l.width,f=r.data?.height??l.height;u.width=h*c,u.height=f*c,d.drawImage(l,0,0,h*c,f*c);let{parseAsGraphicsContext:p,...m}=r.data;return createTexture(new ImageSource({resource:u,alphaMode:"premultiply-alpha-on-upload",resolution:c,...m}),n,t)}async function loadAsGraphics(t){let r=await DOMAdapter.get().fetch(t),n=await r.text(),i=new GraphicsContext;return i.svg(n),i}init_globals(),init_adapter(),init_Extensions(),init_ImageSource(),init_globals(),init_globals();var WORKER_CODE='(function () {\n \'use strict\';\n\n const WHITE_PNG = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+ip1sAAAAASUVORK5CYII=";\n async function checkImageBitmap() {\n try {\n if (typeof createImageBitmap !== "function")\n return false;\n const response = await fetch(WHITE_PNG);\n const imageBlob = await response.blob();\n const imageBitmap = await createImageBitmap(imageBlob);\n return imageBitmap.width === 1 && imageBitmap.height === 1;\n } catch (e) {\n return false;\n }\n }\n void checkImageBitmap().then((result) => {\n self.postMessage(result);\n });\n\n})();\n',WORKER_URL=null,WorkerInstance=class{constructor(){WORKER_URL||(WORKER_URL=URL.createObjectURL(new Blob([WORKER_CODE],{type:"application/javascript"}))),this.worker=new Worker(WORKER_URL)}};WorkerInstance.revokeObjectURL=function(){WORKER_URL&&(URL.revokeObjectURL(WORKER_URL),WORKER_URL=null)},init_globals();var WORKER_CODE2="(function () {\n 'use strict';\n\n async function loadImageBitmap(url) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`[WorkerManager.loadImageBitmap] Failed to fetch ${url}: ${response.status} ${response.statusText}`);\n }\n const imageBlob = await response.blob();\n const imageBitmap = await createImageBitmap(imageBlob);\n return imageBitmap;\n }\n self.onmessage = async (event) => {\n try {\n const imageBitmap = await loadImageBitmap(event.data.data[0]);\n self.postMessage({\n data: imageBitmap,\n uuid: event.data.uuid,\n id: event.data.id\n }, [imageBitmap]);\n } catch (e) {\n self.postMessage({\n error: e,\n uuid: event.data.uuid,\n id: event.data.id\n });\n }\n };\n\n})();\n",WORKER_URL2=null,WorkerInstance2=class{constructor(){WORKER_URL2||(WORKER_URL2=URL.createObjectURL(new Blob([WORKER_CODE2],{type:"application/javascript"}))),this.worker=new Worker(WORKER_URL2)}};WorkerInstance2.revokeObjectURL=function(){WORKER_URL2&&(URL.revokeObjectURL(WORKER_URL2),WORKER_URL2=null)};var MAX_WORKERS,UUID=0,WorkerManagerClass=class{constructor(){this._initialized=!1,this._createdWorkers=0,this._workerPool=[],this._queue=[],this._resolveHash={}}isImageBitmapSupported(){return void 0!==this._isImageBitmapSupported||(this._isImageBitmapSupported=new Promise(t=>{let{worker:r}=new WorkerInstance;r.addEventListener("message",n=>{r.terminate(),WorkerInstance.revokeObjectURL(),t(n.data)})})),this._isImageBitmapSupported}loadImageBitmap(t){return this._run("loadImageBitmap",[t])}async _initWorkers(){this._initialized||(this._initialized=!0)}_getWorker(){void 0===MAX_WORKERS&&(MAX_WORKERS=navigator.hardwareConcurrency||4);let t=this._workerPool.pop();return!t&&this._createdWorkers<MAX_WORKERS&&(this._createdWorkers++,(t=(new WorkerInstance2).worker).addEventListener("message",t=>{this._complete(t.data),this._returnWorker(t.target),this._next()})),t}_returnWorker(t){this._workerPool.push(t)}_complete(t){void 0!==t.error?this._resolveHash[t.uuid].reject(t.error):this._resolveHash[t.uuid].resolve(t.data),this._resolveHash[t.uuid]=null}async _run(t,r){await this._initWorkers();let n=new Promise((n,i)=>{this._queue.push({id:t,arguments:r,resolve:n,reject:i})});return this._next(),n}_next(){if(!this._queue.length)return;let t=this._getWorker();if(!t)return;let r=this._queue.pop(),n=r.id;this._resolveHash[UUID]={resolve:r.resolve,reject:r.reject},t.postMessage({data:r.arguments,uuid:UUID++,id:n})}},WorkerManager=new WorkerManagerClass;init_LoaderParser();var validImageExtensions=[".jpeg",".jpg",".png",".webp",".avif"],validImageMIMEs=["image/jpeg","image/png","image/webp","image/avif"];async function loadImageBitmap(t){let r=await DOMAdapter.get().fetch(t);if(!r.ok)throw Error(`[loadImageBitmap] Failed to fetch ${t}: ${r.status} ${r.statusText}`);let n=await r.blob();return await createImageBitmap(n)}var loadTextures={name:"loadTextures",extension:{type:ExtensionType.LoadParser,priority:LoaderParserPriority.High},config:{preferWorkers:!0,preferCreateImageBitmap:!0,crossOrigin:"anonymous"},test:t=>checkDataUrl(t,validImageMIMEs)||checkExtension(t,validImageExtensions),async load(t,r,n){let i=null;return i=globalThis.createImageBitmap&&this.config.preferCreateImageBitmap?this.config.preferWorkers&&await WorkerManager.isImageBitmapSupported()?await WorkerManager.loadImageBitmap(t):await loadImageBitmap(t):await new Promise(r=>{(i=new Image).crossOrigin=this.config.crossOrigin,i.src=t,i.complete?r(i):i.onload=()=>{r(i)}}),createTexture(new ImageSource({resource:i,alphaMode:"premultiply-alpha-on-upload",resolution:r.data?.resolution||getResolutionOfUrl(t),...r.data}),n,t)},unload(t){t.destroy(!0)}};init_globals(),init_Extensions(),init_VideoSource(),init_detectVideoAlphaMode();var validVideoExtensions=[".mp4",".m4v",".webm",".ogg",".ogv",".h264",".avi",".mov"],validVideoMIMEs=validVideoExtensions.map(t=>`video/${t.substring(1)}`);function crossOrigin(t,r,n){void 0!==n||r.startsWith("data:")?!1!==n&&(t.crossOrigin="string"==typeof n?n:"anonymous"):t.crossOrigin=determineCrossOrigin(r)}function preloadVideo(t){return new Promise((r,n)=>{function i(){o(),r()}function a(t){o(),n(t)}function o(){t.removeEventListener("canplaythrough",i),t.removeEventListener("error",a)}t.addEventListener("canplaythrough",i),t.addEventListener("error",a),t.load()})}function determineCrossOrigin(t,r=globalThis.location){if(t.startsWith("data:"))return"";r=r||globalThis.location;let n=new URL(t,document.baseURI);return n.hostname!==r.hostname||n.port!==r.port||n.protocol!==r.protocol?"anonymous":""}var loadVideoTextures={name:"loadVideo",extension:{type:ExtensionType.LoadParser},config:null,test(t){let r=checkDataUrl(t,validVideoMIMEs),n=checkExtension(t,validVideoExtensions);return r||n},async load(t,r,n){let i,a={...VideoSource.defaultOptions,resolution:r.data?.resolution||getResolutionOfUrl(t),alphaMode:r.data?.alphaMode||await detectVideoAlphaMode(),...r.data},o=document.createElement("video"),s={preload:!1!==a.autoLoad?"auto":void 0,"webkit-playsinline":!1!==a.playsinline?"":void 0,playsinline:!1!==a.playsinline?"":void 0,muted:!0===a.muted?"":void 0,loop:!0===a.loop?"":void 0,autoplay:!1!==a.autoPlay?"":void 0};Object.keys(s).forEach(t=>{let r=s[t];void 0!==r&&o.setAttribute(t,r)}),!0===a.muted&&(o.muted=!0),crossOrigin(o,t,a.crossorigin);let l=document.createElement("source");if(t.startsWith("data:"))i=t.slice(5,t.indexOf(";"));else if(!t.startsWith("blob:")){let r=t.split("?")[0].slice(t.lastIndexOf(".")+1).toLowerCase();i=VideoSource.MIME_TYPES[r]||`video/${r}`}return l.src=t,i&&(l.type=i),new Promise(i=>{let s=async()=>{let l=new VideoSource({...a,resource:o});o.removeEventListener("canplay",s),r.data.preload&&await preloadVideo(o),i(createTexture(l,n,t))};o.addEventListener("canplay",s),o.appendChild(l)})},unload(t){t.destroy(!0)}};init_globals(),init_Extensions(),init_Resolver(),init_globals(),init_Extensions(),init_Resolver();var resolveTextureUrl={extension:ExtensionType.ResolveParser,test:loadTextures.test,parse:t=>({resolution:parseFloat(Resolver.RETINA_PREFIX.exec(t)?.[1]??"1"),format:t.split(".").pop(),src:t})},resolveJsonUrl={extension:ExtensionType.ResolveParser,test:t=>Resolver.RETINA_PREFIX.test(t)&&t.endsWith(".json"),parse:resolveTextureUrl.parse};init_Resolver(),init_convertToList(),init_isSingleItem();var AssetsClass=class{constructor(){this._detections=[],this._initialized=!1,this.resolver=new Resolver,this.loader=new Loader,this.cache=Cache,this._backgroundLoader=new BackgroundLoader(this.loader),this._backgroundLoader.active=!0,this.reset()}async init(t={}){if(this._initialized)return void warn("[Assets]AssetManager already initialized, did you load before calling this Assets.init()?");if(this._initialized=!0,t.defaultSearchParams&&this.resolver.setDefaultSearchParams(t.defaultSearchParams),t.basePath&&(this.resolver.basePath=t.basePath),t.bundleIdentifier&&this.resolver.setBundleIdentifier(t.bundleIdentifier),t.manifest){let r=t.manifest;"string"==typeof r&&(r=await this.load(r)),this.resolver.addManifest(r)}let r=t.texturePreference?.resolution??1,n="number"==typeof r?[r]:r,i=await this._detectFormats({preferredFormats:t.texturePreference?.format,skipDetections:t.skipDetections,detections:this._detections});this.resolver.prefer({params:{format:i,resolution:n}}),t.preferences&&this.setPreferences(t.preferences)}add(t){this.resolver.add(t)}async load(t,r){this._initialized||await this.init();let n=isSingleItem(t),i=convertToList(t).map(t=>{if("string"!=typeof t){let r=this.resolver.getAlias(t);return r.some(t=>!this.resolver.hasKey(t))&&this.add(t),Array.isArray(r)?r[0]:r}return this.resolver.hasKey(t)||this.add({alias:t,src:t}),t}),a=this.resolver.resolve(i),o=await this._mapLoadToResolve(a,r);return n?o[i[0]]:o}addBundle(t,r){this.resolver.addBundle(t,r)}async loadBundle(t,r){this._initialized||await this.init();let n=!1;"string"==typeof t&&(n=!0,t=[t]);let i=this.resolver.resolveBundle(t),a={},o=Object.keys(i),s=0,l=0,u=()=>{r?.(++s/l)},d=o.map(t=>{let r=i[t];return l+=Object.keys(r).length,this._mapLoadToResolve(r,u).then(r=>{a[t]=r})});return await Promise.all(d),n?a[t[0]]:a}async backgroundLoad(t){this._initialized||await this.init(),"string"==typeof t&&(t=[t]);let r=this.resolver.resolve(t);this._backgroundLoader.add(Object.values(r))}async backgroundLoadBundle(t){this._initialized||await this.init(),"string"==typeof t&&(t=[t]),Object.values(this.resolver.resolveBundle(t)).forEach(t=>{this._backgroundLoader.add(Object.values(t))})}reset(){this.resolver.reset(),this.loader.reset(),this.cache.reset(),this._initialized=!1}get(t){if("string"==typeof t)return Cache.get(t);let r={};for(let n=0;n<t.length;n++)r[n]=Cache.get(t[n]);return r}async _mapLoadToResolve(t,r){let n=[...new Set(Object.values(t))];this._backgroundLoader.active=!1;let i=await this.loader.load(n,r);this._backgroundLoader.active=!0;let a={};return n.forEach(t=>{let r=i[t.src],n=[t.src];t.alias&&n.push(...t.alias),n.forEach(t=>{a[t]=r}),Cache.set(n,r)}),a}async unload(t){this._initialized||await this.init();let r=convertToList(t).map(t=>"string"!=typeof t?t.src:t),n=this.resolver.resolve(r);await this._unloadFromResolved(n)}async unloadBundle(t){this._initialized||await this.init(),t=convertToList(t);let r=this.resolver.resolveBundle(t),n=Object.keys(r).map(t=>this._unloadFromResolved(r[t]));await Promise.all(n)}async _unloadFromResolved(t){let r=Object.values(t);r.forEach(t=>{Cache.remove(t.src)}),await this.loader.unload(r)}async _detectFormats(t){let r=[];for(let n of(t.preferredFormats&&(r=Array.isArray(t.preferredFormats)?t.preferredFormats:[t.preferredFormats]),t.detections))t.skipDetections||await n.test()?r=await n.add(r):t.skipDetections||(r=await n.remove(r));return r=r.filter((t,n)=>r.indexOf(t)===n)}get detections(){return this._detections}setPreferences(t){this.loader.parsers.forEach(r=>{r.config&&Object.keys(r.config).filter(r=>r in t).forEach(n=>{r.config[n]=t[n]})})}},Assets=new AssetsClass;extensions.handleByList(ExtensionType.LoadParser,Assets.loader.parsers).handleByList(ExtensionType.ResolveParser,Assets.resolver.parsers).handleByList(ExtensionType.CacheParser,Assets.cache.parsers).handleByList(ExtensionType.DetectionParser,Assets.detections),extensions.add(cacheTextureArray,detectDefaults,detectAvif,detectWebp,detectMp4,detectOgv,detectWebm,loadJson,loadTxt,loadWebFont,loadSvg,loadTextures,loadVideoTextures,resolveTextureUrl,resolveJsonUrl);var assetKeyMap={loader:ExtensionType.LoadParser,resolver:ExtensionType.ResolveParser,cache:ExtensionType.CacheParser,detection:ExtensionType.DetectionParser};extensions.handle(ExtensionType.Asset,t=>{let r=t.ref;Object.entries(assetKeyMap).filter(([t])=>!!r[t]).forEach(([t,n])=>extensions.add(Object.assign(r[t],{extension:r[t].extension??n})))},t=>{let r=t.ref;Object.keys(assetKeyMap).filter(t=>!!r[t]).forEach(t=>extensions.remove(r[t]))}),init_globals(),init_GlProgram(),init_GpuProgram(),init_UniformGroup(),init_Filter(),init_globals();var vertex2="in vec2 aPosition;\nout vec2 vTextureCoord;\n\nuniform vec4 uInputSize;\nuniform vec4 uOutputFrame;\nuniform vec4 uOutputTexture;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;\n \n position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( void )\n{\n return aPosition * (uOutputFrame.zw * uInputSize.zw);\n}\n\nvoid main(void)\n{\n gl_Position = filterVertexPosition();\n vTextureCoord = filterTextureCoord();\n}\n";init_globals();var fragment2="\nin vec2 vTextureCoord;\n\nout vec4 finalColor;\n\nuniform float uAlpha;\nuniform sampler2D uTexture;\n\nvoid main()\n{\n finalColor = texture(uTexture, vTextureCoord) * uAlpha;\n}\n";init_globals();var source2="struct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\nstruct AlphaUniforms {\n uAlpha:f32,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n@group(0) @binding(1) var uTexture: texture_2d<f32>;\n@group(0) @binding(2) var uSampler : sampler;\n\n@group(1) @binding(0) var<uniform> alphaUniforms : AlphaUniforms;\n\nstruct VSOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n };\n\nfn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>\n{\n var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;\n\n position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\nfn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);\n}\n\nfn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw); \n}\n\nfn getSize() -> vec2<f32>\n{\n return gfu.uGlobalFrame.zw;\n}\n \n@vertex\nfn mainVertex(\n @location(0) aPosition : vec2<f32>, \n) -> VSOutput {\n return VSOutput(\n filterVertexPosition(aPosition),\n filterTextureCoord(aPosition)\n );\n}\n\n@fragment\nfn mainFragment(\n @location(0) uv: vec2<f32>,\n @builtin(position) position: vec4<f32>\n) -> @location(0) vec4<f32> {\n \n var sample = textureSample(uTexture, uSampler, uv);\n \n return sample * alphaUniforms.uAlpha;\n}",_AlphaFilter=class e extends Filter{constructor(t){t={...e.defaultOptions,...t};let r=GpuProgram.from({vertex:{source:source2,entryPoint:"mainVertex"},fragment:{source:source2,entryPoint:"mainFragment"}}),n=GlProgram.from({vertex:vertex2,fragment:fragment2,name:"alpha-filter"}),{alpha:i,...a}=t;super({...a,gpuProgram:r,glProgram:n,resources:{alphaUniforms:new UniformGroup({uAlpha:{value:i,type:"f32"}})}})}get alpha(){return this.resources.alphaUniforms.uniforms.uAlpha}set alpha(t){this.resources.alphaUniforms.uniforms.uAlpha=t}};_AlphaFilter.defaultOptions={alpha:1};var AlphaFilter=_AlphaFilter;init_globals(),init_TexturePool(),init_types2(),init_Filter(),init_globals(),init_GlProgram(),init_globals(),init_globals();var GAUSSIAN_VALUES={5:[.153388,.221461,.250301],7:[.071303,.131514,.189879,.214607],9:[.028532,.067234,.124009,.179044,.20236],11:[.0093,.028002,.065984,.121703,.175713,.198596],13:[.002406,.009255,.027867,.065666,.121117,.174868,.197641],15:[489e-6,.002403,.009246,.02784,.065602,.120999,.174697,.197448]},fragTemplate="in vec2 vBlurTexCoords[%size%];\nuniform sampler2D uTexture;\nout vec4 finalColor;\nvoid main(void)\n{\n finalColor = vec4(0.0);\n %blur%\n}";function generateBlurFragSource(t){let r,n=GAUSSIAN_VALUES[t],i=n.length,a=fragTemplate,o="";for(let a=0;a<t;a++){let s="finalColor += texture(uTexture, vBlurTexCoords[%index%]) * %value%;".replace("%index%",a.toString());r=a,a>=i&&(r=t-a-1),o+=s=s.replace("%value%",n[r].toString()),o+="\n"}return(a=a.replace("%blur%",o)).replace("%size%",t.toString())}init_globals();var vertTemplate="\n in vec2 aPosition;\n\n uniform float uStrength;\n\n out vec2 vBlurTexCoords[%size%];\n\n uniform vec4 uInputSize;\n uniform vec4 uOutputFrame;\n uniform vec4 uOutputTexture;\n\n vec4 filterVertexPosition( void )\n{\n vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;\n \n position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\n vec2 filterTextureCoord( void )\n {\n return aPosition * (uOutputFrame.zw * uInputSize.zw);\n }\n\n void main(void)\n {\n gl_Position = filterVertexPosition();\n\n float pixelStrength = uInputSize.%dimension% * uStrength;\n\n vec2 textureCoord = filterTextureCoord();\n %blur%\n }";function generateBlurVertSource(t,r){let n=Math.ceil(t/2),i,a=vertTemplate,o="";i=r?"vBlurTexCoords[%index%] = textureCoord + vec2(%sampleIndex% * pixelStrength, 0.0);":"vBlurTexCoords[%index%] = textureCoord + vec2(0.0, %sampleIndex% * pixelStrength);";for(let r=0;r<t;r++){let t=i.replace("%index%",r.toString());o+=t=t.replace("%sampleIndex%",r-(n-1)+".0"),o+="\n"}return(a=(a=a.replace("%blur%",o)).replace("%size%",t.toString())).replace("%dimension%",r?"z":"w")}function generateBlurGlProgram(t,r){let n=generateBlurVertSource(r,t),i=generateBlurFragSource(r);return GlProgram.from({vertex:n,fragment:i,name:`blur-${t?"horizontal":"vertical"}-pass-filter`})}init_globals(),init_GpuProgram(),init_globals();var source3="\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\nstruct BlurUniforms {\n uStrength:f32,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n@group(0) @binding(1) var uTexture: texture_2d<f32>;\n@group(0) @binding(2) var uSampler : sampler;\n\n@group(1) @binding(0) var<uniform> blurUniforms : BlurUniforms;\n\n\nstruct VSOutput {\n @builtin(position) position: vec4<f32>,\n %blur-struct%\n };\n\nfn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>\n{\n var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;\n\n position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\nfn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);\n}\n\nfn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw); \n}\n\nfn getSize() -> vec2<f32>\n{\n return gfu.uGlobalFrame.zw;\n}\n\n\n@vertex\nfn mainVertex(\n @location(0) aPosition : vec2<f32>, \n) -> VSOutput {\n\n let filteredCord = filterTextureCoord(aPosition);\n\n let strength = gfu.uInputSize.w * blurUniforms.uStrength;\n\n return VSOutput(\n filterVertexPosition(aPosition),\n %blur-vertex-out%\n );\n}\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n %blur-fragment-in%\n) -> @location(0) vec4<f32> {\n\n var finalColor = vec4(0.0);\n\n %blur-sampling%\n\n return finalColor;\n}";function generateBlurProgram(t,r){let n=GAUSSIAN_VALUES[r],i=n.length,a=[],o=[],s=[];for(let l=0;l<r;l++){a[l]=`@location(${l}) offset${l}: vec2<f32>,`,o[l]=t?`filteredCord + vec2(${l-i+1} * strength, 0.0),`:`filteredCord + vec2(0.0, ${l-i+1} * strength),`;let u=n[l<i?l:r-l-1].toString();s[l]=`finalColor += textureSample(uTexture, uSampler, offset${l}) * ${u};`}let l=a.join("\n"),u=o.join("\n"),d=s.join("\n"),c=source3.replace("%blur-struct%",l).replace("%blur-vertex-out%",u).replace("%blur-fragment-in%",l).replace("%blur-sampling%",d);return GpuProgram.from({vertex:{source:c,entryPoint:"mainVertex"},fragment:{source:c,entryPoint:"mainFragment"}})}var _BlurFilterPass=class e extends Filter{constructor(t){super({glProgram:generateBlurGlProgram((t={...e.defaultOptions,...t}).horizontal,t.kernelSize),gpuProgram:generateBlurProgram(t.horizontal,t.kernelSize),resources:{blurUniforms:{uStrength:{value:0,type:"f32"}}},...t}),this.horizontal=t.horizontal,this._quality=0,this.quality=t.quality,this.blur=t.strength,this._uniforms=this.resources.blurUniforms.uniforms}apply(t,r,n,i){if(this._uniforms.uStrength=this.strength/this.passes,1===this.passes)t.applyFilter(this,r,n,i);else{let a=TexturePool.getSameSizeTexture(r),o=r,s=a;this._state.blend=!1;for(let r=0;r<this.passes-1;r++){t.applyFilter(this,o,s,t.renderer.type===RendererType.WEBGPU);let r=s;s=o,o=r}this._state.blend=!0,t.applyFilter(this,o,n,i),TexturePool.returnTexture(a)}}get blur(){return this.strength}set blur(t){this.padding=1+2*Math.abs(t),this.strength=t}get quality(){return this._quality}set quality(t){this._quality=t,this.passes=t}};_BlurFilterPass.defaultOptions={strength:8,quality:4,kernelSize:5};var BlurFilterPass=_BlurFilterPass;init_globals(),init_globals(),init_ObservablePoint(),init_deprecation(),init_Bounds(),init_Container();var AbstractText=class extends Container{constructor(t,r){let{text:n,resolution:i,style:a,anchor:o,width:s,height:l,roundPixels:u,...d}=t;super({...d}),this.batched=!0,this.resolution=null,this._didTextUpdate=!0,this._roundPixels=0,this._bounds=new Bounds,this._boundsDirty=!0,this._styleClass=r,this.text=n??"",this.style=a,this.resolution=i??null,this.allowChildren=!1,this._anchor=new ObservablePoint({_onUpdate:()=>{this.onViewUpdate()}}),o&&(this.anchor=o),this.roundPixels=u??!1,s&&(this.width=s),l&&(this.height=l)}get anchor(){return this._anchor}set anchor(t){"number"==typeof t?this._anchor.set(t):this._anchor.copyFrom(t)}get roundPixels(){return!!this._roundPixels}set roundPixels(t){this._roundPixels=+!!t}set text(t){t=t.toString(),this._text!==t&&(this._text=t,this.onViewUpdate())}get text(){return this._text}get style(){return this._style}set style(t){t=t||{},this._style?.off("update",this.onViewUpdate,this),t instanceof this._styleClass?this._style=t:this._style=new this._styleClass(t),this._style.on("update",this.onViewUpdate,this),this.onViewUpdate()}get bounds(){return this._boundsDirty&&(this._updateBounds(),this._boundsDirty=!1),this._bounds}get width(){return Math.abs(this.scale.x)*this.bounds.width}set width(t){this._setWidth(t,this.bounds.width)}get height(){return Math.abs(this.scale.y)*this.bounds.height}set height(t){this._setHeight(t,this.bounds.height)}getSize(t){return t||(t={}),t.width=Math.abs(this.scale.x)*this.bounds.width,t.height=Math.abs(this.scale.y)*this.bounds.height,t}setSize(t,r){let n,i;"object"!=typeof t?(n=t,i=r??t):(n=t.width,i=t.height??t.width),void 0!==n&&this._setWidth(n,this.bounds.width),void 0!==i&&this._setHeight(i,this.bounds.height)}addBounds(t){let r=this.bounds;t.addFrame(r.minX,r.minY,r.maxX,r.maxY)}containsPoint(t){let r=this.bounds.maxX,n=this.bounds.maxY,i=-r*this.anchor.x,a=0;return t.x>=i&&t.x<=i+r&&(a=-n*this.anchor.y,t.y>=a&&t.y<=a+n)}onViewUpdate(){this._didChangeId+=4096,this._boundsDirty=!0,this.didViewUpdate||(this.didViewUpdate=!0,this._didTextUpdate=!0,this.renderGroup&&this.renderGroup.onChildViewUpdate(this))}_getKey(){return`${this.text}:${this._style.styleKey}`}destroy(t=!1){super.destroy(t),this.owner=null,this._bounds=null,this._anchor=null,("boolean"==typeof t?t:t?.style)&&this._style.destroy(t),this._style=null,this._text=null}};function ensureOptions(t,r){let n=t[0]??{};return("string"==typeof n||t[1])&&(deprecation(v8_0_0,`use new ${r}({ text: "hi!", style }) instead`),n={text:n,style:t[1]}),n}init_CanvasTextMetrics(),init_TextStyle();var Text2=class extends AbstractText{constructor(...t){super(ensureOptions(t,"Text"),TextStyle),this.renderPipeId="text"}_updateBounds(){let t=this._bounds,r=this._style.padding,n=this._anchor,{width:i,height:a}=CanvasTextMetrics.measureText(this._text,this._style);t.minX=-n._x*i-r,t.maxX=t.minX+i,t.minY=-n._y*a-r,t.maxY=t.minY+a}};init_Color(),init_Filter(),init_const2(),init_ObservablePoint(),init_Rectangle(),init_GlProgram(),init_GpuProgram(),init_ImageSource(),init_TextureSource(),init_Texture(),init_TexturePool(),init_textureFrom(),init_ViewSystem(),init_Container(),init_Graphics(),init_Sprite(),init_eventemitter3(),init_deprecation();var import_earcut2=__toESM(require_earcut(),1);extensions.add(browserExt,webworkerExt);var import_react6=__webpack_require__(4194),import_icons3=__webpack_require__(8405),import_extractor3=__toESM(require_extractor()),import_antd3=__webpack_require__(1542);init_globals();var import_antd2=__webpack_require__(1542),import_react5=__webpack_require__(4194),import_extractor2=__toESM(require_extractor());init_globals(),init_globals(),init_globals();var vertex3="in vec2 aPosition;\nout vec2 vTextureCoord;\n\nuniform vec4 uInputSize;\nuniform vec4 uOutputFrame;\nuniform vec4 uOutputTexture;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;\n \n position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( void )\n{\n return aPosition * (uOutputFrame.zw * uInputSize.zw);\n}\n\nvoid main(void)\n{\n gl_Position = filterVertexPosition();\n vTextureCoord = filterTextureCoord();\n}\n";init_globals();var wgslVertex="struct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\nstruct VSOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n };\n\nfn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>\n{\n var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;\n\n position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\nfn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);\n}\n\nfn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw); \n}\n\nfn getSize() -> vec2<f32>\n{\n return gfu.uGlobalFrame.zw;\n}\n \n@vertex\nfn mainVertex(\n @location(0) aPosition : vec2<f32>, \n) -> VSOutput {\n return VSOutput(\n filterVertexPosition(aPosition),\n filterTextureCoord(aPosition)\n );\n}";init_globals();var fragment3="in vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform float uGamma;\nuniform float uContrast;\nuniform float uSaturation;\nuniform float uBrightness;\nuniform vec4 uColor;\n\nvoid main()\n{\n vec4 c = texture(uTexture, vTextureCoord);\n\n if (c.a > 0.0) {\n c.rgb /= c.a;\n\n vec3 rgb = pow(c.rgb, vec3(1. / uGamma));\n rgb = mix(vec3(.5), mix(vec3(dot(vec3(.2125, .7154, .0721), rgb)), rgb, uSaturation), uContrast);\n rgb.r *= uColor.r;\n rgb.g *= uColor.g;\n rgb.b *= uColor.b;\n c.rgb = rgb * uBrightness;\n\n c.rgb *= c.a;\n }\n\n finalColor = c * uColor.a;\n}\n";init_globals();var source4="struct AdjustmentUniforms {\n uGamma: f32,\n uContrast: f32,\n uSaturation: f32,\n uBrightness: f32,\n uColor: vec4<f32>,\n};\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> adjustmentUniforms : AdjustmentUniforms;\n\n@fragment\nfn mainFragment(\n @location(0) uv: vec2<f32>,\n @builtin(position) position: vec4<f32>\n) -> @location(0) vec4<f32> {\n var sample = textureSample(uTexture, uSampler, uv);\n let color = adjustmentUniforms.uColor;\n\n if (sample.a > 0.0) \n {\n sample = vec4<f32>(sample.rgb / sample.a, sample.a);\n var rgb: vec3<f32> = pow(sample.rgb, vec3<f32>(1. / adjustmentUniforms.uGamma));\n rgb = mix(vec3<f32>(.5), mix(vec3<f32>(dot(vec3<f32>(.2125, .7154, .0721), rgb)), rgb, adjustmentUniforms.uSaturation), adjustmentUniforms.uContrast);\n rgb.r *= color.r;\n rgb.g *= color.g;\n rgb.b *= color.b;\n sample = vec4<f32>(rgb.rgb * adjustmentUniforms.uBrightness, sample.a);\n sample = vec4<f32>(sample.rgb * sample.a, sample.a);\n }\n\n return sample * color.a;\n}",__defProp2=Object.defineProperty,__defNormalProp2=(t,r,n)=>r in t?__defProp2(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField2=(t,r,n)=>(__defNormalProp2(t,"symbol"!=typeof r?r+"":r,n),n),_AdjustmentFilter=class e extends Filter{constructor(t){t={...e.DEFAULT_OPTIONS,...t},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source4,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment3,name:"adjustment-filter"}),resources:{adjustmentUniforms:{uGamma:{value:t.gamma,type:"f32"},uContrast:{value:t.contrast,type:"f32"},uSaturation:{value:t.saturation,type:"f32"},uBrightness:{value:t.brightness,type:"f32"},uColor:{value:[t.red,t.green,t.blue,t.alpha],type:"vec4<f32>"}}}}),__publicField2(this,"uniforms"),this.uniforms=this.resources.adjustmentUniforms.uniforms}get gamma(){return this.uniforms.uGamma}set gamma(t){this.uniforms.uGamma=t}get contrast(){return this.uniforms.uContrast}set contrast(t){this.uniforms.uContrast=t}get saturation(){return this.uniforms.uSaturation}set saturation(t){this.uniforms.uSaturation=t}get brightness(){return this.uniforms.uBrightness}set brightness(t){this.uniforms.uBrightness=t}get red(){return this.uniforms.uColor[0]}set red(t){this.uniforms.uColor[0]=t}get green(){return this.uniforms.uColor[1]}set green(t){this.uniforms.uColor[1]=t}get blue(){return this.uniforms.uColor[2]}set blue(t){this.uniforms.uColor[2]=t}get alpha(){return this.uniforms.uColor[3]}set alpha(t){this.uniforms.uColor[3]=t}};__publicField2(_AdjustmentFilter,"DEFAULT_OPTIONS",{gamma:1,contrast:1,saturation:1,brightness:1,red:1,green:1,blue:1,alpha:1}),init_globals(),init_globals(),init_globals();var fragment4="\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec2 uOffset;\n\nvoid main(void)\n{\n vec4 color = vec4(0.0);\n\n // Sample top left pixel\n color += texture(uTexture, vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y + uOffset.y));\n\n // Sample top right pixel\n color += texture(uTexture, vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y + uOffset.y));\n\n // Sample bottom right pixel\n color += texture(uTexture, vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y - uOffset.y));\n\n // Sample bottom left pixel\n color += texture(uTexture, vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y - uOffset.y));\n\n // Average\n color *= 0.25;\n\n finalColor = color;\n}";init_globals();var source5="struct KawaseBlurUniforms {\n uOffset:vec2<f32>,\n};\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> kawaseBlurUniforms : KawaseBlurUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let uOffset = kawaseBlurUniforms.uOffset;\n var color: vec4<f32> = vec4<f32>(0.0);\n\n // Sample top left pixel\n color += textureSample(uTexture, uSampler, vec2<f32>(uv.x - uOffset.x, uv.y + uOffset.y));\n // Sample top right pixel\n color += textureSample(uTexture, uSampler, vec2<f32>(uv.x + uOffset.x, uv.y + uOffset.y));\n // Sample bottom right pixel\n color += textureSample(uTexture, uSampler, vec2<f32>(uv.x + uOffset.x, uv.y - uOffset.y));\n // Sample bottom left pixel\n color += textureSample(uTexture, uSampler, vec2<f32>(uv.x - uOffset.x, uv.y - uOffset.y));\n // Average\n color *= 0.25;\n\n return color;\n}";init_globals();var fragmentClamp="\nprecision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec2 uOffset;\n\nuniform vec4 uInputClamp;\n\nvoid main(void)\n{\n vec4 color = vec4(0.0);\n\n // Sample top left pixel\n color += texture(uTexture, clamp(vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y + uOffset.y), uInputClamp.xy, uInputClamp.zw));\n\n // Sample top right pixel\n color += texture(uTexture, clamp(vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y + uOffset.y), uInputClamp.xy, uInputClamp.zw));\n\n // Sample bottom right pixel\n color += texture(uTexture, clamp(vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y - uOffset.y), uInputClamp.xy, uInputClamp.zw));\n\n // Sample bottom left pixel\n color += texture(uTexture, clamp(vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y - uOffset.y), uInputClamp.xy, uInputClamp.zw));\n\n // Average\n color *= 0.25;\n\n finalColor = color;\n}\n";init_globals();var sourceClamp="struct KawaseBlurUniforms {\n uOffset:vec2<f32>,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> kawaseBlurUniforms : KawaseBlurUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let uOffset = kawaseBlurUniforms.uOffset;\n var color: vec4<f32> = vec4(0.0);\n\n // Sample top left pixel\n color += textureSample(uTexture, uSampler, clamp(vec2<f32>(uv.x - uOffset.x, uv.y + uOffset.y), gfu.uInputClamp.xy, gfu.uInputClamp.zw));\n // Sample top right pixel\n color += textureSample(uTexture, uSampler, clamp(vec2<f32>(uv.x + uOffset.x, uv.y + uOffset.y), gfu.uInputClamp.xy, gfu.uInputClamp.zw));\n // Sample bottom right pixel\n color += textureSample(uTexture, uSampler, clamp(vec2<f32>(uv.x + uOffset.x, uv.y - uOffset.y), gfu.uInputClamp.xy, gfu.uInputClamp.zw));\n // Sample bottom left pixel\n color += textureSample(uTexture, uSampler, clamp(vec2<f32>(uv.x - uOffset.x, uv.y - uOffset.y), gfu.uInputClamp.xy, gfu.uInputClamp.zw));\n // Average\n color *= 0.25;\n \n return color;\n}",__defProp3=Object.defineProperty,__defNormalProp3=(t,r,n)=>r in t?__defProp3(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField3=(t,r,n)=>(__defNormalProp3(t,"symbol"!=typeof r?r+"":r,n),n),_KawaseBlurFilter=class e extends Filter{constructor(...t){let r=t[0]??{};("number"==typeof r||Array.isArray(r))&&(deprecation("6.0.0","KawaseBlurFilter constructor params are now options object. See params: { strength, quality, clamp, pixelSize }"),r={strength:r},void 0!==t[1]&&(r.quality=t[1]),void 0!==t[2]&&(r.clamp=t[2])),r={...e.DEFAULT_OPTIONS,...r},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:r?.clamp?sourceClamp:source5,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:r?.clamp?fragmentClamp:fragment4,name:"kawase-blur-filter"}),resources:{kawaseBlurUniforms:{uOffset:{value:new Float32Array(2),type:"vec2<f32>"}}}}),__publicField3(this,"uniforms"),__publicField3(this,"_pixelSize",{x:0,y:0}),__publicField3(this,"_clamp"),__publicField3(this,"_kernels",[]),__publicField3(this,"_blur"),__publicField3(this,"_quality"),this.uniforms=this.resources.kawaseBlurUniforms.uniforms,this.pixelSize=r.pixelSize??{x:1,y:1},Array.isArray(r.strength)?this.kernels=r.strength:"number"==typeof r.strength&&(this._blur=r.strength,this.quality=r.quality??3),this._clamp=!!r.clamp}apply(t,r,n,i){let a,o=this.pixelSizeX/r.source.width,s=this.pixelSizeY/r.source.height;if(1===this._quality||0===this._blur)a=this._kernels[0]+.5,this.uniforms.uOffset[0]=a*o,this.uniforms.uOffset[1]=a*s,t.applyFilter(this,r,n,i);else{let l=TexturePool.getSameSizeTexture(r),u,d=r,c=l,h=this._quality-1;for(let r=0;r<h;r++)a=this._kernels[r]+.5,this.uniforms.uOffset[0]=a*o,this.uniforms.uOffset[1]=a*s,t.applyFilter(this,d,c,!0),u=d,d=c,c=u;a=this._kernels[h]+.5,this.uniforms.uOffset[0]=a*o,this.uniforms.uOffset[1]=a*s,t.applyFilter(this,d,n,i),TexturePool.returnTexture(l)}}get strength(){return this._blur}set strength(t){this._blur=t,this._generateKernels()}get quality(){return this._quality}set quality(t){this._quality=Math.max(1,Math.round(t)),this._generateKernels()}get kernels(){return this._kernels}set kernels(t){Array.isArray(t)&&t.length>0?(this._kernels=t,this._quality=t.length,this._blur=Math.max(...t)):(this._kernels=[0],this._quality=1)}get pixelSize(){return this._pixelSize}set pixelSize(t){if("number"!=typeof t)return Array.isArray(t)?(this.pixelSizeX=t[0],void(this.pixelSizeY=t[1])):void(this._pixelSize=t);this.pixelSizeX=this.pixelSizeY=t}get pixelSizeX(){return this.pixelSize.x}set pixelSizeX(t){this.pixelSize.x=t}get pixelSizeY(){return this.pixelSize.y}set pixelSizeY(t){this.pixelSize.y=t}get clamp(){return this._clamp}_updatePadding(){this.padding=Math.ceil(this._kernels.reduce((t,r)=>t+r+.5,0))}_generateKernels(){let t=this._blur,r=this._quality,n=[t];if(t>0){let i=t,a=t/r;for(let t=1;t<r;t++)i-=a,n.push(i)}this._kernels=n,this._updatePadding()}};__publicField3(_KawaseBlurFilter,"DEFAULT_OPTIONS",{strength:4,quality:3,clamp:!1,pixelSize:{x:1,y:1}});var KawaseBlurFilter=_KawaseBlurFilter;init_globals();var fragment5="in vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform sampler2D uMapTexture;\nuniform float uBloomScale;\nuniform float uBrightness;\n\nvoid main() {\n vec4 color = texture(uTexture, vTextureCoord);\n color.rgb *= uBrightness;\n vec4 bloomColor = vec4(texture(uMapTexture, vTextureCoord).rgb, 0.0);\n bloomColor.rgb *= uBloomScale;\n finalColor = color + bloomColor;\n}\n";init_globals();var source6="struct AdvancedBloomUniforms {\n uBloomScale: f32,\n uBrightness: f32,\n};\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> advancedBloomUniforms : AdvancedBloomUniforms;\n@group(1) @binding(1) var uMapTexture: texture_2d<f32>;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n var color = textureSample(uTexture, uSampler, uv);\n color = vec4<f32>(color.rgb * advancedBloomUniforms.uBrightness, color.a);\n\n var bloomColor = vec4<f32>(textureSample(uMapTexture, uSampler, uv).rgb, 0.0);\n bloomColor = vec4<f32>(bloomColor.rgb * advancedBloomUniforms.uBloomScale, bloomColor.a);\n \n return color + bloomColor;\n}\n";init_globals(),init_globals();var fragment6="\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform float uThreshold;\n\nvoid main() {\n vec4 color = texture(uTexture, vTextureCoord);\n\n // A simple & fast algorithm for getting brightness.\n // It's inaccuracy , but good enought for this feature.\n float _max = max(max(color.r, color.g), color.b);\n float _min = min(min(color.r, color.g), color.b);\n float brightness = (_max + _min) * 0.5;\n\n if(brightness > uThreshold) {\n finalColor = color;\n } else {\n finalColor = vec4(0.0, 0.0, 0.0, 0.0);\n }\n}\n";init_globals();var source7="struct ExtractBrightnessUniforms {\n uThreshold: f32,\n};\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> extractBrightnessUniforms : ExtractBrightnessUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let color: vec4<f32> = textureSample(uTexture, uSampler, uv);\n\n // A simple & fast algorithm for getting brightness.\n // It's inaccurate, but good enough for this feature.\n let max: f32 = max(max(color.r, color.g), color.b);\n let min: f32 = min(min(color.r, color.g), color.b);\n let brightness: f32 = (max + min) * 0.5;\n\n return select(vec4<f32>(0.), color, brightness > extractBrightnessUniforms.uThreshold);\n}\n",__defProp4=Object.defineProperty,__defNormalProp4=(t,r,n)=>r in t?__defProp4(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField4=(t,r,n)=>(__defNormalProp4(t,"symbol"!=typeof r?r+"":r,n),n),_ExtractBrightnessFilter=class e extends Filter{constructor(t){super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source7,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment6,name:"extract-brightness-filter"}),resources:{extractBrightnessUniforms:{uThreshold:{value:(t={...e.DEFAULT_OPTIONS,...t}).threshold,type:"f32"}}}}),__publicField4(this,"uniforms"),this.uniforms=this.resources.extractBrightnessUniforms.uniforms}get threshold(){return this.uniforms.uThreshold}set threshold(t){this.uniforms.uThreshold=t}};__publicField4(_ExtractBrightnessFilter,"DEFAULT_OPTIONS",{threshold:.5});var ExtractBrightnessFilter=_ExtractBrightnessFilter,__defProp5=Object.defineProperty,__defNormalProp5=(t,r,n)=>r in t?__defProp5(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField5=(t,r,n)=>(__defNormalProp5(t,"symbol"!=typeof r?r+"":r,n),n),_AdvancedBloomFilter=class e extends Filter{constructor(t){t={...e.DEFAULT_OPTIONS,...t},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source6,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment5,name:"advanced-bloom-filter"}),resources:{advancedBloomUniforms:{uBloomScale:{value:t.bloomScale,type:"f32"},uBrightness:{value:t.brightness,type:"f32"}},uMapTexture:Texture.WHITE}}),__publicField5(this,"uniforms"),__publicField5(this,"bloomScale",1),__publicField5(this,"brightness",1),__publicField5(this,"_extractFilter"),__publicField5(this,"_blurFilter"),this.uniforms=this.resources.advancedBloomUniforms.uniforms,this._extractFilter=new ExtractBrightnessFilter({threshold:t.threshold}),this._blurFilter=new KawaseBlurFilter({strength:t.kernels??t.blur,quality:t.kernels?void 0:t.quality}),Object.assign(this,t)}apply(t,r,n,i){let a=TexturePool.getSameSizeTexture(r);this._extractFilter.apply(t,r,a,!0);let o=TexturePool.getSameSizeTexture(r);this._blurFilter.apply(t,a,o,!0),this.uniforms.uBloomScale=this.bloomScale,this.uniforms.uBrightness=this.brightness,this.resources.uMapTexture=o.source,t.applyFilter(this,r,n,i),TexturePool.returnTexture(o),TexturePool.returnTexture(a)}get threshold(){return this._extractFilter.threshold}set threshold(t){this._extractFilter.threshold=t}get kernels(){return this._blurFilter.kernels}set kernels(t){this._blurFilter.kernels=t}get blur(){return this._blurFilter.strength}set blur(t){this._blurFilter.strength=t}get quality(){return this._blurFilter.quality}set quality(t){this._blurFilter.quality=t}get pixelSize(){return this._blurFilter.pixelSize}set pixelSize(t){"number"==typeof t&&(t={x:t,y:t}),Array.isArray(t)&&(t={x:t[0],y:t[1]}),this._blurFilter.pixelSize=t}get pixelSizeX(){return this._blurFilter.pixelSizeX}set pixelSizeX(t){this._blurFilter.pixelSizeX=t}get pixelSizeY(){return this._blurFilter.pixelSizeY}set pixelSizeY(t){this._blurFilter.pixelSizeY=t}};__publicField5(_AdvancedBloomFilter,"DEFAULT_OPTIONS",{threshold:.5,bloomScale:1,brightness:1,blur:8,quality:4,pixelSize:{x:1,y:1}}),init_globals(),init_globals();var fragment7="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform float uSize;\nuniform vec3 uColor;\nuniform float uReplaceColor;\n\nuniform vec4 uInputSize;\n\nvec2 mapCoord( vec2 coord )\n{\n coord *= uInputSize.xy;\n coord += uInputSize.zw;\n\n return coord;\n}\n\nvec2 unmapCoord( vec2 coord )\n{\n coord -= uInputSize.zw;\n coord /= uInputSize.xy;\n\n return coord;\n}\n\nvec2 pixelate(vec2 coord, vec2 size)\n{\n return floor(coord / size) * size;\n}\n\nvec2 getMod(vec2 coord, vec2 size)\n{\n return mod(coord, size) / size;\n}\n\nfloat character(float n, vec2 p)\n{\n p = floor(p*vec2(4.0, 4.0) + 2.5);\n\n if (clamp(p.x, 0.0, 4.0) == p.x)\n {\n if (clamp(p.y, 0.0, 4.0) == p.y)\n {\n if (int(mod(n/exp2(p.x + 5.0*p.y), 2.0)) == 1) return 1.0;\n }\n }\n return 0.0;\n}\n\nvoid main()\n{\n vec2 coord = mapCoord(vTextureCoord);\n\n // get the grid position\n vec2 pixCoord = pixelate(coord, vec2(uSize));\n pixCoord = unmapCoord(pixCoord);\n\n // sample the color at grid position\n vec4 color = texture(uTexture, pixCoord);\n\n // brightness of the color as it's perceived by the human eye\n float gray = 0.3 * color.r + 0.59 * color.g + 0.11 * color.b;\n\n // determine the character to use\n float n = 65536.0; // .\n if (gray > 0.2) n = 65600.0; // :\n if (gray > 0.3) n = 332772.0; // *\n if (gray > 0.4) n = 15255086.0; // o\n if (gray > 0.5) n = 23385164.0; // &\n if (gray > 0.6) n = 15252014.0; // 8\n if (gray > 0.7) n = 13199452.0; // @\n if (gray > 0.8) n = 11512810.0; // #\n\n // get the mod..\n vec2 modd = getMod(coord, vec2(uSize));\n\n finalColor = (uReplaceColor > 0.5 ? vec4(uColor, 1.) : color) * character( n, vec2(-1.0) + modd * 2.0);\n}\n";init_globals();var source8="struct AsciiUniforms {\n uSize: f32,\n uColor: vec3<f32>,\n uReplaceColor: f32,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> asciiUniforms : AsciiUniforms;\n\n@fragment\nfn mainFragment(\n @location(0) uv: vec2<f32>,\n @builtin(position) position: vec4<f32>\n) -> @location(0) vec4<f32> {\n let pixelSize: f32 = asciiUniforms.uSize;\n let coord: vec2<f32> = mapCoord(uv);\n\n // get the rounded color..\n var pixCoord: vec2<f32> = pixelate(coord, vec2<f32>(pixelSize));\n pixCoord = unmapCoord(pixCoord);\n\n var color = textureSample(uTexture, uSampler, pixCoord);\n\n // determine the character to use\n let gray: f32 = 0.3 * color.r + 0.59 * color.g + 0.11 * color.b;\n \n var n: f32 = 65536.0; // .\n if (gray > 0.2) {\n n = 65600.0; // :\n }\n if (gray > 0.3) {\n n = 332772.0; // *\n }\n if (gray > 0.4) {\n n = 15255086.0; // o\n }\n if (gray > 0.5) {\n n = 23385164.0; // &\n }\n if (gray > 0.6) {\n n = 15252014.0; // 8\n }\n if (gray > 0.7) {\n n = 13199452.0; // @\n }\n if (gray > 0.8) {\n n = 11512810.0; // #\n }\n\n // get the mod..\n let modd: vec2<f32> = getMod(coord, vec2<f32>(pixelSize));\n return select(color, vec4<f32>(asciiUniforms.uColor, 1.), asciiUniforms.uReplaceColor > 0.5) * character(n, vec2<f32>(-1.0) + modd * 2.0);\n}\n\nfn pixelate(coord: vec2<f32>, size: vec2<f32>) -> vec2<f32>\n{\n return floor( coord / size ) * size;\n}\n\nfn getMod(coord: vec2<f32>, size: vec2<f32>) -> vec2<f32>\n{\n return moduloVec2( coord , size) / size;\n}\n\nfn character(n: f32, p: vec2<f32>) -> f32\n{\n var q: vec2<f32> = floor(p*vec2<f32>(4.0, 4.0) + 2.5);\n\n if (clamp(q.x, 0.0, 4.0) == q.x)\n {\n if (clamp(q.y, 0.0, 4.0) == q.y)\n {\n if (i32(modulo(n/exp2(q.x + 5.0*q.y), 2.0)) == 1)\n {\n return 1.0;\n }\n }\n }\n\n return 0.0;\n}\n\nfn modulo(x: f32, y: f32) -> f32\n{\n return x - y * floor(x/y);\n}\n\nfn moduloVec2(x: vec2<f32>, y: vec2<f32>) -> vec2<f32>\n{\n return x - y * floor(x/y);\n}\n\nfn mapCoord(coord: vec2<f32> ) -> vec2<f32>\n{\n var mappedCoord: vec2<f32> = coord;\n mappedCoord *= gfu.uInputSize.xy;\n mappedCoord += gfu.uOutputFrame.xy;\n return mappedCoord;\n}\n\nfn unmapCoord(coord: vec2<f32> ) -> vec2<f32>\n{\n var mappedCoord: vec2<f32> = coord;\n mappedCoord -= gfu.uOutputFrame.xy;\n mappedCoord /= gfu.uInputSize.xy;\n return mappedCoord;\n}",__defProp6=Object.defineProperty,__defNormalProp6=(t,r,n)=>r in t?__defProp6(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField6=(t,r,n)=>(__defNormalProp6(t,"symbol"!=typeof r?r+"":r,n),n),_AsciiFilter=class e extends Filter{constructor(...t){let r=t[0]??{};"number"==typeof r&&(deprecation("6.0.0","AsciiFilter constructor params are now options object. See params: { size, color, replaceColor }"),r={size:r}),super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source8,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment7,name:"ascii-filter"}),resources:{asciiUniforms:{uSize:{value:(r={...e.DEFAULT_OPTIONS,...r}).size,type:"f32"},uColor:{value:new Float32Array(3),type:"vec3<f32>"},uReplaceColor:{value:Number(r?.color&&!1!==r.replaceColor),type:"f32"}}}}),__publicField6(this,"uniforms"),__publicField6(this,"_color"),this.uniforms=this.resources.asciiUniforms.uniforms,this._color=new Color,this.color=r.color??0xffffff}get size(){return this.uniforms.uSize}set size(t){this.uniforms.uSize=t}get color(){return this._color.value}set color(t){this._color.setValue(t);let[r,n,i]=this._color.toArray();this.uniforms.uColor[0]=r,this.uniforms.uColor[1]=n,this.uniforms.uColor[2]=i}get replaceColor(){return this.uniforms.uReplaceColor>.5}set replaceColor(t){this.uniforms.uReplaceColor=+!!t}};__publicField6(_AsciiFilter,"DEFAULT_OPTIONS",{size:8,color:0xffffff,replaceColor:!1}),init_globals(),init_globals(),init_globals(),init_globals(),init_globals();var fragment9="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec2 uTransform;\nuniform vec3 uLightColor;\nuniform float uLightAlpha;\nuniform vec3 uShadowColor;\nuniform float uShadowAlpha;\n\nuniform vec4 uInputSize;\n\nvoid main(void) {\n vec2 transform = vec2(1.0 / uInputSize) * vec2(uTransform.x, uTransform.y);\n vec4 color = texture(uTexture, vTextureCoord);\n float light = texture(uTexture, vTextureCoord - transform).a;\n float shadow = texture(uTexture, vTextureCoord + transform).a;\n\n color.rgb = mix(color.rgb, uLightColor, clamp((color.a - light) * uLightAlpha, 0.0, 1.0));\n color.rgb = mix(color.rgb, uShadowColor, clamp((color.a - shadow) * uShadowAlpha, 0.0, 1.0));\n finalColor = vec4(color.rgb * color.a, color.a);\n}\n";init_globals();var source9="struct BevelUniforms {\n uLightColor: vec3<f32>,\n uLightAlpha: f32,\n uShadowColor: vec3<f32>,\n uShadowAlpha: f32,\n uTransform: vec2<f32>,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> bevelUniforms : BevelUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let transform = vec2<f32>(1.0 / gfu.uInputSize.xy) * vec2<f32>(bevelUniforms.uTransform.x, bevelUniforms.uTransform.y);\n var color: vec4<f32> = textureSample(uTexture, uSampler, uv);\n let lightSample: f32 = textureSample(uTexture, uSampler, uv - transform).a;\n let shadowSample: f32 = textureSample(uTexture, uSampler, uv + transform).a;\n\n let light = vec4<f32>(bevelUniforms.uLightColor, bevelUniforms.uLightAlpha);\n let shadow = vec4<f32>(bevelUniforms.uShadowColor, bevelUniforms.uShadowAlpha);\n\n color = vec4<f32>(mix(color.rgb, light.rgb, clamp((color.a - lightSample) * light.a, 0.0, 1.0)), color.a);\n color = vec4<f32>(mix(color.rgb, shadow.rgb, clamp((color.a - shadowSample) * shadow.a, 0.0, 1.0)), color.a);\n \n return vec4<f32>(color.rgb * color.a, color.a);\n}",__defProp7=Object.defineProperty,__defNormalProp7=(t,r,n)=>r in t?__defProp7(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField7=(t,r,n)=>(__defNormalProp7(t,"symbol"!=typeof r?r+"":r,n),n),_BevelFilter=class e extends Filter{constructor(t){t={...e.DEFAULT_OPTIONS,...t},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source9,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment9,name:"bevel-filter"}),resources:{bevelUniforms:{uLightColor:{value:new Float32Array(3),type:"vec3<f32>"},uLightAlpha:{value:t.lightAlpha,type:"f32"},uShadowColor:{value:new Float32Array(3),type:"vec3<f32>"},uShadowAlpha:{value:t.shadowAlpha,type:"f32"},uTransform:{value:new Float32Array(2),type:"vec2<f32>"}}},padding:1}),__publicField7(this,"uniforms"),__publicField7(this,"_thickness"),__publicField7(this,"_rotation"),__publicField7(this,"_lightColor"),__publicField7(this,"_shadowColor"),this.uniforms=this.resources.bevelUniforms.uniforms,this._lightColor=new Color,this._shadowColor=new Color,this.lightColor=t.lightColor??0xffffff,this.shadowColor=t.shadowColor??0,Object.assign(this,t)}get rotation(){return this._rotation/DEG_TO_RAD}set rotation(t){this._rotation=t*DEG_TO_RAD,this._updateTransform()}get thickness(){return this._thickness}set thickness(t){this._thickness=t,this._updateTransform()}get lightColor(){return this._lightColor.value}set lightColor(t){this._lightColor.setValue(t);let[r,n,i]=this._lightColor.toArray();this.uniforms.uLightColor[0]=r,this.uniforms.uLightColor[1]=n,this.uniforms.uLightColor[2]=i}get lightAlpha(){return this.uniforms.uLightAlpha}set lightAlpha(t){this.uniforms.uLightAlpha=t}get shadowColor(){return this._shadowColor.value}set shadowColor(t){this._shadowColor.setValue(t);let[r,n,i]=this._shadowColor.toArray();this.uniforms.uShadowColor[0]=r,this.uniforms.uShadowColor[1]=n,this.uniforms.uShadowColor[2]=i}get shadowAlpha(){return this.uniforms.uShadowAlpha}set shadowAlpha(t){this.uniforms.uShadowAlpha=t}_updateTransform(){this.uniforms.uTransform[0]=this.thickness*Math.cos(this._rotation),this.uniforms.uTransform[1]=this.thickness*Math.sin(this._rotation)}};__publicField7(_BevelFilter,"DEFAULT_OPTIONS",{rotation:45,thickness:2,lightColor:0xffffff,lightAlpha:.7,shadowColor:0,shadowAlpha:.7}),init_globals();var __defProp8=Object.defineProperty,__defNormalProp8=(t,r,n)=>r in t?__defProp8(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField8=(t,r,n)=>(__defNormalProp8(t,"symbol"!=typeof r?r+"":r,n),n),_BloomFilter=class e extends AlphaFilter{constructor(...t){let r=t[0]??{};if("number"==typeof r||Array.isArray(r)||"x"in r&&"y"in r){deprecation("6.0.0","BloomFilter constructor params are now options object. See params: { strength, quality, resolution, kernelSize }");let n=r;Array.isArray(n)&&(n={x:n[0],y:n[1]}),r={strength:n},void 0!==t[1]&&(r.quality=t[1]),void 0!==t[2]&&(r.resolution=t[2]),void 0!==t[3]&&(r.kernelSize=t[3])}r={...e.DEFAULT_OPTIONS,...r},super(),__publicField8(this,"_blurXFilter"),__publicField8(this,"_blurYFilter"),__publicField8(this,"_strength"),this._strength={x:2,y:2},r.strength&&("number"==typeof r.strength?(this._strength.x=r.strength,this._strength.y=r.strength):(this._strength.x=r.strength.x,this._strength.y=r.strength.y)),this._blurXFilter=new BlurFilterPass({...r,horizontal:!0,strength:this.strengthX}),this._blurYFilter=new BlurFilterPass({...r,horizontal:!1,strength:this.strengthY}),this._blurYFilter.blendMode="screen",Object.assign(this,r)}apply(t,r,n,i){let a=TexturePool.getSameSizeTexture(r);t.applyFilter(this,r,n,i),this._blurXFilter.apply(t,r,a,!0),this._blurYFilter.apply(t,a,n,!1),TexturePool.returnTexture(a)}get strength(){return this._strength}set strength(t){this._strength="number"==typeof t?{x:t,y:t}:t,this._updateStrength()}get strengthX(){return this.strength.x}set strengthX(t){this.strength.x=t,this._updateStrength()}get strengthY(){return this.strength.y}set strengthY(t){this.strength.y=t,this._updateStrength()}_updateStrength(){this._blurXFilter.blur=this.strengthX,this._blurYFilter.blur=this.strengthY}get blur(){return deprecation("6.0.0","BloomFilter.blur is deprecated, please use BloomFilter.strength instead"),this.strengthX}set blur(t){deprecation("6.0.0","BloomFilter.blur is deprecated, please use BloomFilter.strength instead"),this.strength=t}get blurX(){return deprecation("6.0.0","BloomFilter.blurX is deprecated, please use BloomFilter.strengthX instead"),this.strengthX}set blurX(t){deprecation("6.0.0","BloomFilter.blurX is deprecated, please use BloomFilter.strengthX instead"),this.strengthX=t}get blurY(){return deprecation("6.0.0","BloomFilter.blurY is deprecated, please use BloomFilter.strengthY instead"),this.strengthY}set blurY(t){deprecation("6.0.0","BloomFilter.blurY is deprecated, please use BloomFilter.strengthY instead"),this.strengthY=t}};__publicField8(_BloomFilter,"DEFAULT_OPTIONS",{strength:{x:2,y:2},quality:4,resolution:1,kernelSize:5}),init_globals(),init_globals();var fragment10="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec2 uDimensions;\nuniform vec2 uCenter;\nuniform float uRadius;\nuniform float uStrength;\n\nuniform vec4 uInputSize;\nuniform vec4 uInputClamp;\n\nvoid main()\n{\n vec2 coord = vTextureCoord * uInputSize.xy;\n coord -= uCenter * uDimensions.xy;\n float distance = length(coord);\n\n if (distance < uRadius) {\n float percent = distance / uRadius;\n if (uStrength > 0.0) {\n coord *= mix(1.0, smoothstep(0.0, uRadius / distance, percent), uStrength * 0.75);\n } else {\n coord *= mix(1.0, pow(percent, 1.0 + uStrength * 0.75) * uRadius / distance, 1.0 - percent);\n }\n }\n\n coord += uCenter * uDimensions.xy;\n coord /= uInputSize.xy;\n vec2 clampedCoord = clamp(coord, uInputClamp.xy, uInputClamp.zw);\n vec4 color = texture(uTexture, clampedCoord);\n\n if (coord != clampedCoord) {\n color *= max(0.0, 1.0 - length(coord - clampedCoord));\n }\n\n finalColor = color;\n}\n";init_globals();var source10="struct BulgePinchUniforms {\n uDimensions: vec2<f32>,\n uCenter: vec2<f32>,\n uRadius: f32,\n uStrength: f32,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> bulgePinchUniforms : BulgePinchUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let dimensions: vec2<f32> = bulgePinchUniforms.uDimensions;\n let center: vec2<f32> = bulgePinchUniforms.uCenter;\n let radius: f32 = bulgePinchUniforms.uRadius;\n let strength: f32 = bulgePinchUniforms.uStrength;\n var coord: vec2<f32> = (uv * gfu.uInputSize.xy) - center * dimensions.xy;\n\n let distance: f32 = length(coord);\n\n if (distance < radius) {\n let percent: f32 = distance / radius;\n if (strength > 0.0) {\n coord *= mix(1.0, smoothstep(0.0, radius / distance, percent), strength * 0.75);\n } else {\n coord *= mix(1.0, pow(percent, 1.0 + strength * 0.75) * radius / distance, 1.0 - percent);\n }\n }\n coord += (center * dimensions.xy);\n coord /= gfu.uInputSize.xy;\n\n let clampedCoord: vec2<f32> = clamp(coord, gfu.uInputClamp.xy, gfu.uInputClamp.zw);\n var color: vec4<f32> = textureSample(uTexture, uSampler, clampedCoord);\n if (coord.x != clampedCoord.x && coord.y != clampedCoord.y) {\n color *= max(0.0, 1.0 - length(coord - clampedCoord));\n }\n\n return color;\n}\n\nfn compareVec2(x: vec2<f32>, y: vec2<f32>) -> bool\n{\n if (x.x == y.x && x.y == y.y)\n {\n return true;\n }\n\n return false;\n}",__defProp9=Object.defineProperty,__defNormalProp9=(t,r,n)=>r in t?__defProp9(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField9=(t,r,n)=>(__defNormalProp9(t,"symbol"!=typeof r?r+"":r,n),n),_BulgePinchFilter=class e extends Filter{constructor(t){t={...e.DEFAULT_OPTIONS,...t},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source10,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment10,name:"bulge-pinch-filter"}),resources:{bulgePinchUniforms:{uDimensions:{value:[0,0],type:"vec2<f32>"},uCenter:{value:t.center,type:"vec2<f32>"},uRadius:{value:t.radius,type:"f32"},uStrength:{value:t.strength,type:"f32"}}}}),__publicField9(this,"uniforms"),this.uniforms=this.resources.bulgePinchUniforms.uniforms,Object.assign(this,t)}apply(t,r,n,i){this.uniforms.uDimensions[0]=r.frame.width,this.uniforms.uDimensions[1]=r.frame.height,t.applyFilter(this,r,n,i)}get center(){return this.uniforms.uCenter}set center(t){"number"==typeof t&&(t={x:t,y:t}),Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uCenter=t}get centerX(){return this.uniforms.uCenter.x}set centerX(t){this.uniforms.uCenter.x=t}get centerY(){return this.uniforms.uCenter.y}set centerY(t){this.uniforms.uCenter.y=t}get radius(){return this.uniforms.uRadius}set radius(t){this.uniforms.uRadius=t}get strength(){return this.uniforms.uStrength}set strength(t){this.uniforms.uStrength=t}};__publicField9(_BulgePinchFilter,"DEFAULT_OPTIONS",{center:{x:.5,y:.5},radius:100,strength:1}),init_globals(),init_globals();var fragment11="precision highp float;\nin vec2 vTextureCoord;\nin vec2 vFilterCoord;\nout vec4 finalColor;\n\nconst int TYPE_LINEAR = 0;\nconst int TYPE_RADIAL = 1;\nconst int TYPE_CONIC = 2;\nconst int MAX_STOPS = 32;\n\nuniform sampler2D uTexture;\nuniform vec4 uOptions;\nuniform vec2 uCounts;\nuniform vec3 uColors[MAX_STOPS];\nuniform vec4 uStops[MAX_STOPS];\n\nconst float PI = 3.1415926538;\nconst float PI_2 = PI*2.;\n\nstruct ColorStop {\n float offset;\n vec3 color;\n float alpha;\n};\n\nmat2 rotate2d(float angle){\n return mat2(cos(angle), -sin(angle),\n sin(angle), cos(angle));\n}\n\nfloat projectLinearPosition(vec2 pos, float angle){\n vec2 center = vec2(0.5);\n vec2 result = pos - center;\n result = rotate2d(angle) * result;\n result = result + center;\n return clamp(result.x, 0., 1.);\n}\n\nfloat projectRadialPosition(vec2 pos) {\n float r = distance(pos, vec2(0.5));\n return clamp(2.*r, 0., 1.);\n}\n\nfloat projectAnglePosition(vec2 pos, float angle) {\n vec2 center = pos - vec2(0.5);\n float polarAngle=atan(-center.y, center.x);\n return mod(polarAngle + angle, PI_2) / PI_2;\n}\n\nfloat projectPosition(vec2 pos, int type, float angle) {\n if (type == TYPE_LINEAR) {\n return projectLinearPosition(pos, angle);\n } else if (type == TYPE_RADIAL) {\n return projectRadialPosition(pos);\n } else if (type == TYPE_CONIC) {\n return projectAnglePosition(pos, angle);\n }\n\n return pos.y;\n}\n\nvoid main(void) {\n int uType = int(uOptions[0]);\n float uAngle = uOptions[1];\n float uAlpha = uOptions[2];\n float uReplace = uOptions[3];\n\n int uNumStops = int(uCounts[0]);\n float uMaxColors = uCounts[1];\n\n // current/original color\n vec4 currentColor = texture(uTexture, vTextureCoord);\n\n // skip calculations if gradient alpha is 0\n if (0.0 == uAlpha) {\n finalColor = currentColor;\n return;\n }\n\n // project position\n float y = projectPosition(vFilterCoord, int(uType), radians(uAngle));\n\n // check gradient bounds\n float offsetMin = uStops[0][0];\n float offsetMax = 0.0;\n\n int numStops = int(uNumStops);\n\n for (int i = 0; i < MAX_STOPS; i++) {\n if (i == numStops-1){ // last index\n offsetMax = uStops[i][0];\n }\n }\n\n if (y < offsetMin || y > offsetMax) {\n finalColor = currentColor;\n return;\n }\n\n // limit colors\n if (uMaxColors > 0.) {\n float stepSize = 1./uMaxColors;\n float stepNumber = float(floor(y/stepSize));\n y = stepSize * (stepNumber + 0.5);// offset by 0.5 to use color from middle of segment\n }\n\n // find color stops\n ColorStop from;\n ColorStop to;\n\n for (int i = 0; i < MAX_STOPS; i++) {\n if (y >= uStops[i][0]) {\n from = ColorStop(uStops[i][0], uColors[i], uStops[i][1]);\n to = ColorStop(uStops[i+1][0], uColors[i+1], uStops[i+1][1]);\n }\n\n if (i == numStops-1){ // last index\n break;\n }\n }\n\n // mix colors from stops\n vec4 colorFrom = vec4(from.color * from.alpha, from.alpha);\n vec4 colorTo = vec4(to.color * to.alpha, to.alpha);\n\n float segmentHeight = to.offset - from.offset;\n float relativePos = y - from.offset;// position from 0 to [segmentHeight]\n float relativePercent = relativePos / segmentHeight;// position in percent between [from.offset] and [to.offset].\n\n float gradientAlpha = uAlpha * currentColor.a;\n vec4 gradientColor = mix(colorFrom, colorTo, relativePercent) * gradientAlpha;\n\n if (uReplace < 0.5) {\n // mix resulting color with current color\n finalColor = gradientColor + currentColor*(1.-gradientColor.a);\n } else {\n // replace with gradient color\n finalColor = gradientColor;\n }\n}\n";init_globals();var vertex4="in vec2 aPosition;\nout vec2 vTextureCoord;\nout vec2 vFilterCoord;\n\nuniform vec4 uInputSize;\nuniform vec4 uOutputFrame;\nuniform vec4 uOutputTexture;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;\n \n position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( void )\n{\n return aPosition * (uOutputFrame.zw * uInputSize.zw);\n}\n\nvoid main(void)\n{\n gl_Position = filterVertexPosition();\n vTextureCoord = filterTextureCoord();\n vFilterCoord = vTextureCoord * uInputSize.xy / uOutputFrame.zw;\n}\n";init_globals();var source11="struct BaseUniforms {\n uOptions: vec4<f32>,\n uCounts: vec2<f32>,\n};\n\nstruct StopsUniforms {\n uColors: array<vec3<f32>, MAX_STOPS>,\n uStops: array<vec4<f32>, MAX_STOPS>,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> baseUniforms : BaseUniforms;\n@group(1) @binding(1) var<uniform> stopsUniforms : StopsUniforms;\n\nstruct VSOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>,\n @location(1) coord : vec2<f32>\n};\n\nfn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>\n{\n var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;\n\n position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\nfn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);\n}\n\nfn filterCoord( vTextureCoord:vec2<f32> ) -> vec2<f32>\n{\n return vTextureCoord * gfu.uInputSize.xy / gfu.uOutputFrame.zw;\n}\n\nfn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw); \n}\n\nfn getSize() -> vec2<f32>\n{\n return gfu.uGlobalFrame.zw;\n}\n \n@vertex\nfn mainVertex(\n @location(0) aPosition : vec2<f32>, \n) -> VSOutput {\n let vTextureCoord: vec2<f32> = filterTextureCoord(aPosition);\n return VSOutput(\n filterVertexPosition(aPosition),\n vTextureCoord,\n filterCoord(vTextureCoord),\n );\n}\n\nstruct ColorStop {\n offset: f32,\n color: vec3<f32>,\n alpha: f32,\n};\n\nfn rotate2d(angle: f32) -> mat2x2<f32>{\n return mat2x2(cos(angle), -sin(angle),\n sin(angle), cos(angle));\n}\n\nfn projectLinearPosition(pos: vec2<f32>, angle: f32) -> f32 {\n var center: vec2<f32> = vec2<f32>(0.5);\n var result: vec2<f32> = pos - center;\n result = rotate2d(angle) * result;\n result = result + center;\n return clamp(result.x, 0.0, 1.0);\n}\n\nfn projectRadialPosition(pos: vec2<f32>) -> f32 {\n var r: f32 = distance(pos, vec2<f32>(0.5));\n return clamp(2.0 * r, 0.0, 1.0);\n}\n\nfn projectAnglePosition(pos: vec2<f32>, angle: f32) -> f32 {\n var center: vec2<f32> = pos - vec2<f32>(0.5, 0.5);\n var polarAngle: f32 = atan2(-center.y, center.x);\n return ((polarAngle + angle) % PI_2) / PI_2;\n}\n\nfn projectPosition(pos: vec2<f32>, gradientType: i32, angle: f32) -> f32 {\n if (gradientType == TYPE_LINEAR) {\n return projectLinearPosition(pos, angle);\n } else if (gradientType == TYPE_RADIAL) {\n return projectRadialPosition(pos);\n } else if (gradientType == TYPE_CONIC) {\n return projectAnglePosition(pos, angle);\n }\n\n return pos.y;\n}\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>,\n @location(1) coord : vec2<f32>\n) -> @location(0) vec4<f32> {\n let uType: i32 = i32(baseUniforms.uOptions[0]);\n let uAngle: f32 = baseUniforms.uOptions[1];\n let uAlpha: f32 = baseUniforms.uOptions[2];\n let uReplace: f32 = baseUniforms.uOptions[3];\n\n let uNumStops: i32 = i32(baseUniforms.uCounts[0]);\n let uMaxColors: f32 = baseUniforms.uCounts[1];\n\n // current/original color\n var currentColor: vec4<f32> = textureSample(uTexture, uSampler, uv);\n\n // skip calculations if gradient alpha is 0\n if (uAlpha == 0.0) { return currentColor; }\n\n // project position\n var y: f32 = projectPosition(coord, uType, radians(uAngle));\n\n // check gradient bounds\n var offsetMin: f32 = stopsUniforms.uStops[0][0];\n var offsetMax: f32 = 0.0;\n\n let numStops: i32 = uNumStops;\n\n for (var i: i32 = 0; i < MAX_STOPS; i = i + 1) {\n if (i == numStops - 1) { // last index\n offsetMax = stopsUniforms.uStops[i][0];\n }\n }\n\n if (y < offsetMin || y > offsetMax) { return currentColor; }\n\n // limit colors\n if (uMaxColors > 0.0) {\n var stepSize: f32 = 1.0 / uMaxColors;\n var stepNumber: f32 = floor(y / stepSize);\n y = stepSize * (stepNumber + 0.5); // offset by 0.5 to use color from middle of segment\n }\n\n // find color stops\n var stopFrom: ColorStop;\n var stopTo: ColorStop;\n\n for (var i: i32 = 0; i < MAX_STOPS; i = i + 1) {\n if (y >= stopsUniforms.uStops[i][0]) {\n stopFrom = ColorStop(stopsUniforms.uStops[i][0], stopsUniforms.uColors[i], stopsUniforms.uStops[i][1]);\n stopTo = ColorStop(stopsUniforms.uStops[i + 1][0], stopsUniforms.uColors[i + 1], stopsUniforms.uStops[i + 1][1]);\n }\n\n if (i == numStops - 1) { // last index\n break;\n }\n }\n\n // mix colors from stops\n var colorFrom: vec4<f32> = vec4<f32>(stopFrom.color * stopFrom.alpha, stopFrom.alpha);\n var colorTo: vec4<f32> = vec4<f32>(stopTo.color * stopTo.alpha, stopTo.alpha);\n\n var segmentHeight: f32 = stopTo.offset - stopFrom.offset;\n var relativePos: f32 = y - stopFrom.offset; // position from 0 to [segmentHeight]\n var relativePercent: f32 = relativePos / segmentHeight; // position in percent between [from.offset] and [to.offset].\n\n var gradientAlpha: f32 = uAlpha * currentColor.a;\n var gradientColor: vec4<f32> = mix(colorFrom, colorTo, relativePercent) * gradientAlpha;\n\n if (uReplace < 0.5) {\n // mix resulting color with current color\n return gradientColor + currentColor * (1.0 - gradientColor.a);\n } else {\n // replace with gradient color\n return gradientColor;\n }\n}\n\nconst PI: f32 = 3.14159265358979323846264;\nconst PI_2: f32 = PI * 2.0;\n\nconst TYPE_LINEAR: i32 = 0;\nconst TYPE_RADIAL: i32 = 1;\nconst TYPE_CONIC: i32 = 2;\nconst MAX_STOPS: i32 = 32;";init_globals(),init_globals();var visitor,GradientParser=GradientParser||{};GradientParser.stringify=(visitor={"visit_linear-gradient":function(t){return visitor.visit_gradient(t)},"visit_repeating-linear-gradient":function(t){return visitor.visit_gradient(t)},"visit_radial-gradient":function(t){return visitor.visit_gradient(t)},"visit_repeating-radial-gradient":function(t){return visitor.visit_gradient(t)},visit_gradient:function(t){var r=visitor.visit(t.orientation);return r&&(r+=", "),t.type+"("+r+visitor.visit(t.colorStops)+")"},visit_shape:function(t){var r=t.value,n=visitor.visit(t.at),i=visitor.visit(t.style);return i&&(r+=" "+i),n&&(r+=" at "+n),r},"visit_default-radial":function(t){var r="",n=visitor.visit(t.at);return n&&(r+=n),r},"visit_extent-keyword":function(t){var r=t.value,n=visitor.visit(t.at);return n&&(r+=" at "+n),r},"visit_position-keyword":function(t){return t.value},visit_position:function(t){return visitor.visit(t.value.x)+" "+visitor.visit(t.value.y)},"visit_%":function(t){return t.value+"%"},visit_em:function(t){return t.value+"em"},visit_px:function(t){return t.value+"px"},visit_literal:function(t){return visitor.visit_color(t.value,t)},visit_hex:function(t){return visitor.visit_color("#"+t.value,t)},visit_rgb:function(t){return visitor.visit_color("rgb("+t.value.join(", ")+")",t)},visit_rgba:function(t){return visitor.visit_color("rgba("+t.value.join(", ")+")",t)},visit_color:function(t,r){var n=t,i=visitor.visit(r.length);return i&&(n+=" "+i),n},visit_angular:function(t){return t.value+"deg"},visit_directional:function(t){return"to "+t.value},visit_array:function(t){var r="",n=t.length;return t.forEach(function(t,i){r+=visitor.visit(t),i<n-1&&(r+=", ")}),r},visit:function(t){if(!t)return"";if(t instanceof Array)return visitor.visit_array(t,"");if(t.type){var r=visitor["visit_"+t.type];if(r)return r(t);throw Error("Missing visitor visit_"+t.type)}throw Error("Invalid node.")}},function(t){return visitor.visit(t)});var GradientParser=GradientParser||{};GradientParser.parse=function(){var t=/^(\-(webkit|o|ms|moz)\-)?(linear\-gradient)/i,r=/^(\-(webkit|o|ms|moz)\-)?(repeating\-linear\-gradient)/i,n=/^(\-(webkit|o|ms|moz)\-)?(radial\-gradient)/i,i=/^(\-(webkit|o|ms|moz)\-)?(repeating\-radial\-gradient)/i,a=/^to (left (top|bottom)|right (top|bottom)|left|right|top|bottom)/i,o=/^(closest\-side|closest\-corner|farthest\-side|farthest\-corner|contain|cover)/,s=/^(left|center|right|top|bottom)/i,l=/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))px/,u=/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))\%/,d=/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))em/,c=/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))deg/,h=/^\(/,f=/^\)/,p=/^,/,m=/^\#([0-9a-fA-F]+)/,g=/^([a-zA-Z]+)/,b=/^rgb/i,y=/^rgba/i,_=/^(([0-9]*\.[0-9]+)|([0-9]+\.?))/,v="";function A(t){var r=Error(v+": "+t);throw r.source=v,r}function w(){var t=O(x);return v.length>0&&A("Invalid input not EOF"),t}function x(){return E("linear-gradient",t,C)||E("repeating-linear-gradient",r,C)||E("radial-gradient",n,I)||E("repeating-radial-gradient",i,I)}function E(t,r,n){return S(r,function(r){var i=n();return i&&(D(p)||A("Missing comma before color stops")),{type:t,orientation:i,colorStops:O(M)}})}function S(t,r){var n=D(t);if(n){D(h)||A("Missing (");var i=r(n);return D(f)||A("Missing )"),i}}function C(){return L("directional",a,1)||L("angular",c,1)}function I(){var t,r,n=T();return n&&((t=[]).push(n),r=v,D(p)&&((n=T())?t.push(n):v=r)),t}function T(){var t=function(){var t=L("shape",/^(circle)/i,0);return t&&(t.style=B()||k()),t}()||function(){var t=L("shape",/^(ellipse)/i,0);return t&&(t.style=N()||k()),t}();if(t)t.at=P();else{var r=k();if(r){t=r;var n=P();n&&(t.at=n)}else{var i=R();i&&(t={type:"default-radial",at:i})}}return t}function k(){return L("extent-keyword",o,1)}function P(){if(L("position",/^at/,0)){var t=R();return t||A("Missing positioning value"),t}}function R(){var t={x:N(),y:N()};if(t.x||t.y)return{type:"position",value:t}}function O(t){var r=t(),n=[];if(r)for(n.push(r);D(p);)(r=t())?n.push(r):A("One extra comma");return n}function M(){var t=L("hex",m,1)||S(y,function(){return{type:"rgba",value:O(j)}})||S(b,function(){return{type:"rgb",value:O(j)}})||L("literal",g,0);return t||A("Expected color definition"),t.length=N(),t}function j(){return D(_)[1]}function N(){return L("%",u,1)||L("position-keyword",s,1)||B()}function B(){return L("px",l,1)||L("em",d,1)}function L(t,r,n){var i=D(r);if(i)return{type:t,value:i[n]}}function D(t){var r,n;return(n=/^[\n\r\t\s]+/.exec(v))&&U(n[0].length),(r=t.exec(v))&&U(r[0].length),r}function U(t){v=v.substr(t)}return function(t){return v=t.toString(),w()}}();var parse5=GradientParser.parse;function parseCssGradient(t){let r=parse5(trimCssGradient(t));if(0===r.length)throw Error("Invalid CSS gradient.");if(1!==r.length)throw Error("Unsupported CSS gradient (multiple gradients is not supported).");let n=r[0];return{type:typeFromCssType(n.type),stops:stopsFromCssStops(n.colorStops),angle:angleFromCssOrientation(n.orientation)}}function typeFromCssType(t){let r={"linear-gradient":0,"radial-gradient":1};if(!(t in r))throw Error(`Unsupported gradient type "${t}"`);return r[t]}function stopsFromCssStops(t){let r=offsetsFromCssColorStops(t),n=[],i=new Color;for(let a=0;a<t.length;a++){let o=colorAsStringFromCssStop(t[a]),s=i.setValue(o).toArray();n.push({offset:r[a],color:s.slice(0,3),alpha:s[3]})}return n}function colorAsStringFromCssStop(t){switch(t.type){case"hex":return`#${t.value}`;case"literal":return t.value;default:return`${t.type}(${t.value.join(",")})`}}function offsetsFromCssColorStops(t){let r=[];for(let n=0;n<t.length;n++){let i=t[n],a=-1;"literal"===i.type&&i.length&&"type"in i.length&&"%"===i.length.type&&"value"in i.length&&(a=parseFloat(i.length.value)/100),r.push(a)}let n=t=>{for(let n=t;n<r.length;n++)if(-1!==r[n])return{indexDelta:n-t,offset:r[n]};return{indexDelta:r.length-1-t,offset:1}},i=0;for(let t=0;t<r.length;t++){let a=r[t];if(-1!==a)i=a;else if(0===t)r[t]=0;else if(t+1===r.length)r[t]=1;else{let a=n(t),o=(a.offset-i)/(1+a.indexDelta);for(let n=0;n<=a.indexDelta;n++)r[t+n]=i+(n+1)*o;t+=a.indexDelta,i=r[t]}}return r.map(fixFloatRounding)}function fixFloatRounding(t){return t.toString().length>6?parseFloat(t.toString().substring(0,6)):t}function angleFromCssOrientation(t){if(void 0===t)return 0;if("type"in t&&"value"in t)switch(t.type){case"angular":return parseFloat(t.value);case"directional":return angleFromDirectionalValue(t.value)}return 0}function angleFromDirectionalValue(t){let r={left:270,top:0,bottom:180,right:90,"left top":315,"top left":315,"left bottom":225,"bottom left":225,"right top":45,"top right":45,"right bottom":135,"bottom right":135};if(!(t in r))throw Error(`Unsupported directional value "${t}"`);return r[t]}function trimCssGradient(t){let r=t.replace(/\s{2,}/gu," ");return(r=(r=(r=(r=r.replace(/;/g,"")).replace(/ ,/g,",")).replace(/\( /g,"(")).replace(/ \)/g,")")).trim()}GradientParser.stringify;var __defProp10=Object.defineProperty,__defNormalProp10=(t,r,n)=>r in t?__defProp10(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField10=(t,r,n)=>(__defNormalProp10(t,"symbol"!=typeof r?r+"":r,n),n),ANGLE_OFFSET=90;function sortColorStops(t){return[...t].sort((t,r)=>t.offset-r.offset)}var _ColorGradientFilter=class e extends Filter{constructor(t){if(!(t=t&&"css"in t?{...parseCssGradient(t.css||""),alpha:t.alpha??e.defaults.alpha,maxColors:t.maxColors??e.defaults.maxColors}:{...e.defaults,...t}).stops||t.stops.length<2)throw Error("ColorGradientFilter requires at least 2 color stops.");super({gpuProgram:GpuProgram.from({vertex:{source:source11,entryPoint:"mainVertex"},fragment:{source:source11,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex4,fragment:fragment11,name:"color-gradient-filter"}),resources:{baseUniforms:{uOptions:{value:[t.type,t.angle??ANGLE_OFFSET,t.alpha,+!!t.replace],type:"vec4<f32>"},uCounts:{value:[t.stops.length,t.maxColors],type:"vec2<f32>"}},stopsUniforms:{uColors:{value:new Float32Array(96),type:"vec3<f32>",size:32},uStops:{value:new Float32Array(128),type:"vec4<f32>",size:32}}}}),__publicField10(this,"baseUniforms"),__publicField10(this,"stopsUniforms"),__publicField10(this,"_stops",[]),this.baseUniforms=this.resources.baseUniforms.uniforms,this.stopsUniforms=this.resources.stopsUniforms.uniforms,Object.assign(this,t)}get stops(){return this._stops}set stops(t){let r,n,i,a=sortColorStops(t),o=new Color;for(let t=0;t<a.length;t++){o.setValue(a[t].color);let s=3*t;[r,n,i]=o.toArray(),this.stopsUniforms.uColors[s]=r,this.stopsUniforms.uColors[s+1]=n,this.stopsUniforms.uColors[s+2]=i,this.stopsUniforms.uStops[4*t]=a[t].offset,this.stopsUniforms.uStops[4*t+1]=a[t].alpha}this.baseUniforms.uCounts[0]=a.length,this._stops=a}get type(){return this.baseUniforms.uOptions[0]}set type(t){this.baseUniforms.uOptions[0]=t}get angle(){return this.baseUniforms.uOptions[1]+ANGLE_OFFSET}set angle(t){this.baseUniforms.uOptions[1]=t-ANGLE_OFFSET}get alpha(){return this.baseUniforms.uOptions[2]}set alpha(t){this.baseUniforms.uOptions[2]=t}get maxColors(){return this.baseUniforms.uCounts[1]}set maxColors(t){this.baseUniforms.uCounts[1]=t}get replace(){return this.baseUniforms.uOptions[3]>.5}set replace(t){this.baseUniforms.uOptions[3]=+!!t}};__publicField10(_ColorGradientFilter,"LINEAR",0),__publicField10(_ColorGradientFilter,"RADIAL",1),__publicField10(_ColorGradientFilter,"CONIC",2),__publicField10(_ColorGradientFilter,"defaults",{type:_ColorGradientFilter.LINEAR,stops:[{offset:0,color:0xff0000,alpha:1},{offset:1,color:255,alpha:1}],alpha:1,angle:90,maxColors:0,replace:!1}),init_globals(),init_globals();var fragment12="in vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform sampler2D uMapTexture;\nuniform float uMix;\nuniform float uSize;\nuniform float uSliceSize;\nuniform float uSlicePixelSize;\nuniform float uSliceInnerSize;\n\nvoid main() {\n vec4 color = texture(uTexture, vTextureCoord.xy);\n vec4 adjusted;\n\n if (color.a > 0.0) {\n color.rgb /= color.a;\n float innerWidth = uSize - 1.0;\n float zSlice0 = min(floor(color.b * innerWidth), innerWidth);\n float zSlice1 = min(zSlice0 + 1.0, innerWidth);\n float xOffset = uSlicePixelSize * 0.5 + color.r * uSliceInnerSize;\n float s0 = xOffset + (zSlice0 * uSliceSize);\n float s1 = xOffset + (zSlice1 * uSliceSize);\n float yOffset = uSliceSize * 0.5 + color.g * (1.0 - uSliceSize);\n vec4 slice0Color = texture(uMapTexture, vec2(s0,yOffset));\n vec4 slice1Color = texture(uMapTexture, vec2(s1,yOffset));\n float zOffset = fract(color.b * innerWidth);\n adjusted = mix(slice0Color, slice1Color, zOffset);\n\n color.rgb *= color.a;\n }\n\n finalColor = vec4(mix(color, adjusted, uMix).rgb, color.a);\n\n}";init_globals();var source12="struct ColorMapUniforms {\n uMix: f32,\n uSize: f32,\n uSliceSize: f32,\n uSlicePixelSize: f32,\n uSliceInnerSize: f32,\n};\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> colorMapUniforms : ColorMapUniforms;\n@group(1) @binding(1) var uMapTexture: texture_2d<f32>;\n@group(1) @binding(2) var uMapSampler: sampler;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n var color:vec4<f32> = textureSample(uTexture, uSampler, uv);\n\n var adjusted: vec4<f32>;\n\n var altColor: vec4<f32> = vec4<f32>(color.rgb / color.a, color.a);\n let innerWidth: f32 = colorMapUniforms.uSize - 1.0;\n let zSlice0: f32 = min(floor(color.b * innerWidth), innerWidth);\n let zSlice1: f32 = min(zSlice0 + 1.0, innerWidth);\n let xOffset: f32 = colorMapUniforms.uSlicePixelSize * 0.5 + color.r * colorMapUniforms.uSliceInnerSize;\n let s0: f32 = xOffset + (zSlice0 * colorMapUniforms.uSliceSize);\n let s1: f32 = xOffset + (zSlice1 * colorMapUniforms.uSliceSize);\n let yOffset: f32 = colorMapUniforms.uSliceSize * 0.5 + color.g * (1.0 - colorMapUniforms.uSliceSize);\n let slice0Color: vec4<f32> = textureSample(uMapTexture, uMapSampler, vec2(s0,yOffset));\n let slice1Color: vec4<f32> = textureSample(uMapTexture, uMapSampler, vec2(s1,yOffset));\n let zOffset: f32 = fract(color.b * innerWidth);\n adjusted = mix(slice0Color, slice1Color, zOffset);\n altColor = vec4<f32>(color.rgb * color.a, color.a);\n\n let realColor: vec4<f32> = select(color, altColor, color.a > 0.0);\n\n return vec4<f32>(mix(realColor, adjusted, colorMapUniforms.uMix).rgb, realColor.a);\n}",__defProp11=Object.defineProperty,__defNormalProp11=(t,r,n)=>r in t?__defProp11(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField11=(t,r,n)=>(__defNormalProp11(t,"symbol"!=typeof r?r+"":r,n),n),_ColorMapFilter=class e extends Filter{constructor(...t){let r=t[0]??{};if((r instanceof Texture||r instanceof TextureSource)&&(deprecation("6.0.0","ColorMapFilter constructor params are now options object. See params: { colorMap, nearest, mix }"),r={colorMap:r},void 0!==t[1]&&(r.nearest=t[1]),void 0!==t[2]&&(r.mix=t[2])),!(r={...e.DEFAULT_OPTIONS,...r}).colorMap)throw Error("No color map texture source was provided to ColorMapFilter");super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source12,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment12,name:"color-map-filter"}),resources:{colorMapUniforms:{uMix:{value:r.mix,type:"f32"},uSize:{value:0,type:"f32"},uSliceSize:{value:0,type:"f32"},uSlicePixelSize:{value:0,type:"f32"},uSliceInnerSize:{value:0,type:"f32"}},uMapTexture:r.colorMap.source,uMapSampler:r.colorMap.source.style}}),__publicField11(this,"uniforms"),__publicField11(this,"_size",0),__publicField11(this,"_sliceSize",0),__publicField11(this,"_slicePixelSize",0),__publicField11(this,"_sliceInnerSize",0),__publicField11(this,"_nearest",!1),__publicField11(this,"_scaleMode","linear"),__publicField11(this,"_colorMap"),this.uniforms=this.resources.colorMapUniforms.uniforms,Object.assign(this,r)}get mix(){return this.uniforms.uMix}set mix(t){this.uniforms.uMix=t}get colorSize(){return this._size}get colorMap(){return this._colorMap}set colorMap(t){if(!t||t===this.colorMap)return;let r=t instanceof Texture?t.source:t;r.style.scaleMode=this._scaleMode,r.autoGenerateMipmaps=!1,this._size=r.height,this._sliceSize=1/this._size,this._slicePixelSize=this._sliceSize/this._size,this._sliceInnerSize=this._slicePixelSize*(this._size-1),this.uniforms.uSize=this._size,this.uniforms.uSliceSize=this._sliceSize,this.uniforms.uSlicePixelSize=this._slicePixelSize,this.uniforms.uSliceInnerSize=this._sliceInnerSize,this.resources.uMapTexture=r,this._colorMap=t}get nearest(){return this._nearest}set nearest(t){this._nearest=t,this._scaleMode=t?"nearest":"linear";let r=this._colorMap;r&&r.source&&(r.source.scaleMode=this._scaleMode,r.source.autoGenerateMipmaps=!1,r.source.style.update(),r.source.update())}updateColorMap(){let t=this._colorMap;t?.source&&(t.source.update(),this.colorMap=t)}destroy(){this._colorMap?.destroy(),super.destroy()}};__publicField11(_ColorMapFilter,"DEFAULT_OPTIONS",{colorMap:Texture.WHITE,nearest:!1,mix:1}),init_globals(),init_globals();var fragment13="in vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec3 uColor;\nuniform float uAlpha;\n\nvoid main(void) {\n vec4 c = texture(uTexture, vTextureCoord);\n finalColor = vec4(mix(c.rgb, uColor.rgb, c.a * uAlpha), c.a);\n}\n";init_globals();var source13="struct ColorOverlayUniforms {\n uColor: vec3<f32>,\n uAlpha: f32,\n};\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> colorOverlayUniforms : ColorOverlayUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let c = textureSample(uTexture, uSampler, uv);\n return vec4<f32>(mix(c.rgb, colorOverlayUniforms.uColor.rgb, c.a * colorOverlayUniforms.uAlpha), c.a);\n}\n",__defProp12=Object.defineProperty,__defNormalProp12=(t,r,n)=>r in t?__defProp12(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField12=(t,r,n)=>(__defNormalProp12(t,"symbol"!=typeof r?r+"":r,n),n),_ColorOverlayFilter=class e extends Filter{constructor(...t){let r=t[0]??{};("number"==typeof r||Array.isArray(r)||r instanceof Float32Array)&&(deprecation("6.0.0","ColorOverlayFilter constructor params are now options object. See params: { color, alpha }"),r={color:r},void 0!==t[1]&&(r.alpha=t[1])),super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source13,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment13,name:"color-overlay-filter"}),resources:{colorOverlayUniforms:{uColor:{value:new Float32Array(3),type:"vec3<f32>"},uAlpha:{value:(r={...e.DEFAULT_OPTIONS,...r}).alpha,type:"f32"}}}}),__publicField12(this,"uniforms"),__publicField12(this,"_color"),this.uniforms=this.resources.colorOverlayUniforms.uniforms,this._color=new Color,this.color=r.color??0}get color(){return this._color.value}set color(t){this._color.setValue(t);let[r,n,i]=this._color.toArray();this.uniforms.uColor[0]=r,this.uniforms.uColor[1]=n,this.uniforms.uColor[2]=i}get alpha(){return this.uniforms.uAlpha}set alpha(t){this.uniforms.uAlpha=t}};__publicField12(_ColorOverlayFilter,"DEFAULT_OPTIONS",{color:0,alpha:1}),init_globals(),init_globals();var fragment14="in vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec3 uOriginalColor;\nuniform vec3 uTargetColor;\nuniform float uTolerance;\n\nvoid main(void) {\n vec4 c = texture(uTexture, vTextureCoord);\n vec3 colorDiff = uOriginalColor - (c.rgb / max(c.a, 0.0000000001));\n float colorDistance = length(colorDiff);\n float doReplace = step(colorDistance, uTolerance);\n finalColor = vec4(mix(c.rgb, (uTargetColor + colorDiff) * c.a, doReplace), c.a);\n}\n";init_globals();var source14="struct ColorReplaceUniforms {\n uOriginalColor: vec3<f32>,\n uTargetColor: vec3<f32>,\n uTolerance: f32,\n};\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> colorReplaceUniforms : ColorReplaceUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let sample: vec4<f32> = textureSample(uTexture, uSampler, uv);\n\n let colorDiff: vec3<f32> = colorReplaceUniforms.uOriginalColor - (sample.rgb / max(sample.a, 0.0000000001));\n let colorDistance: f32 = length(colorDiff);\n let doReplace: f32 = step(colorDistance, colorReplaceUniforms.uTolerance);\n\n return vec4<f32>(mix(sample.rgb, (colorReplaceUniforms.uTargetColor + colorDiff) * sample.a, doReplace), sample.a);\n}",__defProp13=Object.defineProperty,__defNormalProp13=(t,r,n)=>r in t?__defProp13(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField13=(t,r,n)=>(__defNormalProp13(t,"symbol"!=typeof r?r+"":r,n),n),_ColorReplaceFilter=class e extends Filter{constructor(...t){let r=t[0]??{};("number"==typeof r||Array.isArray(r)||r instanceof Float32Array)&&(deprecation("6.0.0","ColorReplaceFilter constructor params are now options object. See params: { originalColor, targetColor, tolerance }"),r={originalColor:r},void 0!==t[1]&&(r.targetColor=t[1]),void 0!==t[2]&&(r.tolerance=t[2])),super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source14,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment14,name:"color-replace-filter"}),resources:{colorReplaceUniforms:{uOriginalColor:{value:new Float32Array(3),type:"vec3<f32>"},uTargetColor:{value:new Float32Array(3),type:"vec3<f32>"},uTolerance:{value:(r={...e.DEFAULT_OPTIONS,...r}).tolerance,type:"f32"}}}}),__publicField13(this,"uniforms"),__publicField13(this,"_originalColor"),__publicField13(this,"_targetColor"),this.uniforms=this.resources.colorReplaceUniforms.uniforms,this._originalColor=new Color,this._targetColor=new Color,this.originalColor=r.originalColor??0xff0000,this.targetColor=r.targetColor??0,Object.assign(this,r)}get originalColor(){return this._originalColor.value}set originalColor(t){this._originalColor.setValue(t);let[r,n,i]=this._originalColor.toArray();this.uniforms.uOriginalColor[0]=r,this.uniforms.uOriginalColor[1]=n,this.uniforms.uOriginalColor[2]=i}get targetColor(){return this._targetColor.value}set targetColor(t){this._targetColor.setValue(t);let[r,n,i]=this._targetColor.toArray();this.uniforms.uTargetColor[0]=r,this.uniforms.uTargetColor[1]=n,this.uniforms.uTargetColor[2]=i}get tolerance(){return this.uniforms.uTolerance}set tolerance(t){this.uniforms.uTolerance=t}set newColor(t){deprecation("6.0.0","ColorReplaceFilter.newColor is deprecated, please use ColorReplaceFilter.targetColor instead"),this.targetColor=t}get newColor(){return deprecation("6.0.0","ColorReplaceFilter.newColor is deprecated, please use ColorReplaceFilter.targetColor instead"),this.targetColor}set epsilon(t){deprecation("6.0.0","ColorReplaceFilter.epsilon is deprecated, please use ColorReplaceFilter.tolerance instead"),this.tolerance=t}get epsilon(){return deprecation("6.0.0","ColorReplaceFilter.epsilon is deprecated, please use ColorReplaceFilter.tolerance instead"),this.tolerance}};__publicField13(_ColorReplaceFilter,"DEFAULT_OPTIONS",{originalColor:0xff0000,targetColor:0,tolerance:.4}),init_globals(),init_globals();var fragment15="in vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec2 uTexelSize;\nuniform mat3 uMatrix;\n\nvoid main(void)\n{\n vec4 c11 = texture(uTexture, vTextureCoord - uTexelSize); // top left\n vec4 c12 = texture(uTexture, vec2(vTextureCoord.x, vTextureCoord.y - uTexelSize.y)); // top center\n vec4 c13 = texture(uTexture, vec2(vTextureCoord.x + uTexelSize.x, vTextureCoord.y - uTexelSize.y)); // top right\n\n vec4 c21 = texture(uTexture, vec2(vTextureCoord.x - uTexelSize.x, vTextureCoord.y)); // mid left\n vec4 c22 = texture(uTexture, vTextureCoord); // mid center\n vec4 c23 = texture(uTexture, vec2(vTextureCoord.x + uTexelSize.x, vTextureCoord.y)); // mid right\n\n vec4 c31 = texture(uTexture, vec2(vTextureCoord.x - uTexelSize.x, vTextureCoord.y + uTexelSize.y)); // bottom left\n vec4 c32 = texture(uTexture, vec2(vTextureCoord.x, vTextureCoord.y + uTexelSize.y)); // bottom center\n vec4 c33 = texture(uTexture, vTextureCoord + uTexelSize); // bottom right\n\n finalColor =\n c11 * uMatrix[0][0] + c12 * uMatrix[0][1] + c13 * uMatrix[0][2] +\n c21 * uMatrix[1][0] + c22 * uMatrix[1][1] + c23 * uMatrix[1][2] +\n c31 * uMatrix[2][0] + c32 * uMatrix[2][1] + c33 * uMatrix[2][2];\n\n finalColor.a = c22.a;\n}";init_globals();var source15="struct ConvolutionUniforms {\n uMatrix: mat3x3<f32>,\n uTexelSize: vec2<f32>,\n};\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> convolutionUniforms : ConvolutionUniforms;\n\n@fragment\nfn mainFragment(\n @location(0) uv: vec2<f32>,\n @builtin(position) position: vec4<f32>\n) -> @location(0) vec4<f32> {\n let texelSize = convolutionUniforms.uTexelSize;\n let matrix = convolutionUniforms.uMatrix;\n\n let c11: vec4<f32> = textureSample(uTexture, uSampler, uv - texelSize); // top left\n let c12: vec4<f32> = textureSample(uTexture, uSampler, vec2<f32>(uv.x, uv.y - texelSize.y)); // top center\n let c13: vec4<f32> = textureSample(uTexture, uSampler, vec2<f32>(uv.x + texelSize.x, uv.y - texelSize.y)); // top right\n\n let c21: vec4<f32> = textureSample(uTexture, uSampler, vec2<f32>(uv.x - texelSize.x, uv.y)); // mid left\n let c22: vec4<f32> = textureSample(uTexture, uSampler, uv); // mid center\n let c23: vec4<f32> = textureSample(uTexture, uSampler, vec2<f32>(uv.x + texelSize.x, uv.y)); // mid right\n\n let c31: vec4<f32> = textureSample(uTexture, uSampler, vec2<f32>(uv.x - texelSize.x, uv.y + texelSize.y)); // bottom left\n let c32: vec4<f32> = textureSample(uTexture, uSampler, vec2<f32>(uv.x, uv.y + texelSize.y)); // bottom center\n let c33: vec4<f32> = textureSample(uTexture, uSampler, uv + texelSize); // bottom right\n\n var finalColor: vec4<f32> = vec4<f32>(\n c11 * matrix[0][0] + c12 * matrix[0][1] + c13 * matrix[0][2] +\n c21 * matrix[1][0] + c22 * matrix[1][1] + c23 * matrix[1][2] +\n c31 * matrix[2][0] + c32 * matrix[2][1] + c33 * matrix[2][2]\n );\n\n finalColor.a = c22.a;\n\n return finalColor;\n}",__defProp14=Object.defineProperty,__defNormalProp14=(t,r,n)=>r in t?__defProp14(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField14=(t,r,n)=>(__defNormalProp14(t,"symbol"!=typeof r?r+"":r,n),n),_ConvolutionFilter=class e extends Filter{constructor(...t){let r=t[0]??{};Array.isArray(r)&&(deprecation("6.0.0","ConvolutionFilter constructor params are now options object. See params: { matrix, width, height }"),r={matrix:r},void 0!==t[1]&&(r.width=t[1]),void 0!==t[2]&&(r.height=t[2]));let n=(r={...e.DEFAULT_OPTIONS,...r}).width??200,i=r.height??200;super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source15,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment15,name:"convolution-filter"}),resources:{convolutionUniforms:{uMatrix:{value:r.matrix,type:"mat3x3<f32>"},uTexelSize:{value:{x:1/n,y:1/i},type:"vec2<f32>"}}}}),__publicField14(this,"uniforms"),this.uniforms=this.resources.convolutionUniforms.uniforms,this.width=n,this.height=i}get matrix(){return this.uniforms.uMatrix}set matrix(t){t.forEach((t,r)=>{this.uniforms.uMatrix[r]=t})}get width(){return 1/this.uniforms.uTexelSize.x}set width(t){this.uniforms.uTexelSize.x=1/t}get height(){return 1/this.uniforms.uTexelSize.y}set height(t){this.uniforms.uTexelSize.y=1/t}};__publicField14(_ConvolutionFilter,"DEFAULT_OPTIONS",{matrix:new Float32Array(9),width:200,height:200}),init_globals(),init_globals(),init_globals(),init_globals(),init_globals();var fragment17="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec4 uLine;\nuniform vec2 uNoise;\nuniform vec3 uVignette;\nuniform float uSeed;\nuniform float uTime;\nuniform vec2 uDimensions;\n\nuniform vec4 uInputSize;\n\nconst float SQRT_2 = 1.414213;\n\nfloat rand(vec2 co) {\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nfloat vignette(vec3 co, vec2 coord)\n{\n float outter = SQRT_2 - uVignette[0] * SQRT_2;\n vec2 dir = vec2(0.5) - coord;\n dir.y *= uDimensions.y / uDimensions.x;\n float darker = clamp((outter - length(dir) * SQRT_2) / ( 0.00001 + uVignette[2] * SQRT_2), 0.0, 1.0);\n return darker + (1.0 - darker) * (1.0 - uVignette[1]);\n}\n\nfloat noise(vec2 coord)\n{\n vec2 pixelCoord = coord * uInputSize.xy;\n pixelCoord.x = floor(pixelCoord.x / uNoise[1]);\n pixelCoord.y = floor(pixelCoord.y / uNoise[1]);\n return (rand(pixelCoord * uNoise[1] * uSeed) - 0.5) * uNoise[0];\n}\n\nvec3 interlaceLines(vec3 co, vec2 coord)\n{\n vec3 color = co;\n\n float curvature = uLine[0];\n float lineWidth = uLine[1];\n float lineContrast = uLine[2];\n float verticalLine = uLine[3];\n\n vec2 dir = vec2(coord * uInputSize.xy / uDimensions - 0.5);\n\n float _c = curvature > 0. ? curvature : 1.;\n float k = curvature > 0. ? (length(dir * dir) * 0.25 * _c * _c + 0.935 * _c) : 1.;\n vec2 uv = dir * k;\n float v = verticalLine > 0.5 ? uv.x * uDimensions.x : uv.y * uDimensions.y;\n v *= min(1.0, 2.0 / lineWidth ) / _c;\n float j = 1. + cos(v * 1.2 - uTime) * 0.5 * lineContrast;\n color *= j;\n\n float segment = verticalLine > 0.5 ? mod((dir.x + .5) * uDimensions.x, 4.) : mod((dir.y + .5) * uDimensions.y, 4.);\n color *= 0.99 + ceil(segment) * 0.015;\n\n return color;\n}\n\nvoid main(void)\n{\n finalColor = texture(uTexture, vTextureCoord);\n vec2 coord = vTextureCoord * uInputSize.xy / uDimensions;\n\n if (uNoise[0] > 0.0 && uNoise[1] > 0.0)\n {\n float n = noise(vTextureCoord);\n finalColor += vec4(n, n, n, finalColor.a);\n }\n\n if (uVignette[0] > 0.)\n {\n float v = vignette(finalColor.rgb, coord);\n finalColor *= vec4(v, v, v, finalColor.a);\n }\n\n if (uLine[1] > 0.0)\n {\n finalColor = vec4(interlaceLines(finalColor.rgb, vTextureCoord), finalColor.a); \n }\n}\n";init_globals();var source17="struct CRTUniforms {\n uLine: vec4<f32>,\n uNoise: vec2<f32>,\n uVignette: vec3<f32>,\n uSeed: f32,\n uTime: f32,\n uDimensions: vec2<f32>,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> crtUniforms : CRTUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n \n var color: vec4<f32> = textureSample(uTexture, uSampler, uv);\n let coord: vec2<f32> = uv * gfu.uInputSize.xy / crtUniforms.uDimensions;\n\n let uNoise = crtUniforms.uNoise;\n\n if (uNoise[0] > 0.0 && uNoise[1] > 0.0)\n {\n color += vec4<f32>(vec3<f32>(noise(uv)), color.a);\n }\n\n if (crtUniforms.uVignette[0] > 0.)\n {\n color *= vec4<f32>(vec3<f32>(vignette(color.rgb, coord)), color.a);\n }\n\n if (crtUniforms.uLine[1] > 0.0)\n {\n color = vec4<f32>(vec3<f32>(interlaceLines(color.rgb, uv)), color.a); \n }\n\n return color;\n}\n\nconst SQRT_2: f32 = 1.414213;\n\nfn modulo(x: f32, y: f32) -> f32\n{\n return x - y * floor(x/y);\n}\n\nfn rand(co: vec2<f32>) -> f32\n{\n return fract(sin(dot(co, vec2<f32>(12.9898, 78.233))) * 43758.5453);\n}\n\nfn vignette(co: vec3<f32>, coord: vec2<f32>) -> f32\n{\n let uVignette = crtUniforms.uVignette;\n let uDimensions = crtUniforms.uDimensions;\n \n let outter: f32 = SQRT_2 - uVignette[0] * SQRT_2;\n var dir: vec2<f32> = vec2<f32>(0.5) - coord;\n dir.y *= uDimensions.y / uDimensions.x;\n let darker: f32 = clamp((outter - length(dir) * SQRT_2) / ( 0.00001 + uVignette[2] * SQRT_2), 0.0, 1.0);\n return darker + (1.0 - darker) * (1.0 - uVignette[1]);\n}\n\nfn noise(coord: vec2<f32>) -> f32\n{\n let uNoise = crtUniforms.uNoise;\n let uSeed = crtUniforms.uSeed;\n\n var pixelCoord: vec2<f32> = coord * gfu.uInputSize.xy;\n pixelCoord.x = floor(pixelCoord.x / uNoise[1]);\n pixelCoord.y = floor(pixelCoord.y / uNoise[1]);\n return (rand(pixelCoord * uNoise[1] * uSeed) - 0.5) * uNoise[0];\n}\n\nfn interlaceLines(co: vec3<f32>, coord: vec2<f32>) -> vec3<f32>\n{\n var color = co;\n\n let uDimensions = crtUniforms.uDimensions;\n\n let curvature: f32 = crtUniforms.uLine[0];\n let lineWidth: f32 = crtUniforms.uLine[1];\n let lineContrast: f32 = crtUniforms.uLine[2];\n let verticalLine: f32 = crtUniforms.uLine[3];\n\n let dir: vec2<f32> = vec2<f32>(coord * gfu.uInputSize.xy / uDimensions - 0.5);\n\n let _c: f32 = select(1., curvature, curvature > 0.);\n let k: f32 = select(1., (length(dir * dir) * 0.25 * _c * _c + 0.935 * _c), curvature > 0.);\n let uv: vec2<f32> = dir * k;\n let v: f32 = select(uv.y * uDimensions.y, uv.x * uDimensions.x, verticalLine > 0.5) * min(1.0, 2.0 / lineWidth ) / _c;\n let j: f32 = 1. + cos(v * 1.2 - crtUniforms.uTime) * 0.5 * lineContrast;\n color *= j;\n\n let segment: f32 = select(modulo((dir.y + .5) * uDimensions.y, 4.), modulo((dir.x + .5) * uDimensions.x, 4.), verticalLine > 0.5);\n color *= 0.99 + ceil(segment) * 0.015;\n\n return color;\n}",__defProp15=Object.defineProperty,__defNormalProp15=(t,r,n)=>r in t?__defProp15(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField15=(t,r,n)=>(__defNormalProp15(t,"symbol"!=typeof r?r+"":r,n),n),_CRTFilter=class e extends Filter{constructor(t){t={...e.DEFAULT_OPTIONS,...t},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source17,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment17,name:"crt-filter"}),resources:{crtUniforms:{uLine:{value:new Float32Array(4),type:"vec4<f32>"},uNoise:{value:new Float32Array(2),type:"vec2<f32>"},uVignette:{value:new Float32Array(3),type:"vec3<f32>"},uSeed:{value:t.seed,type:"f32"},uTime:{value:t.time,type:"f32"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"}}}}),__publicField15(this,"uniforms"),__publicField15(this,"seed"),__publicField15(this,"time"),this.uniforms=this.resources.crtUniforms.uniforms,Object.assign(this,t)}apply(t,r,n,i){this.uniforms.uDimensions[0]=r.frame.width,this.uniforms.uDimensions[1]=r.frame.height,this.uniforms.uSeed=this.seed,this.uniforms.uTime=this.time,t.applyFilter(this,r,n,i)}get curvature(){return this.uniforms.uLine[0]}set curvature(t){this.uniforms.uLine[0]=t}get lineWidth(){return this.uniforms.uLine[1]}set lineWidth(t){this.uniforms.uLine[1]=t}get lineContrast(){return this.uniforms.uLine[2]}set lineContrast(t){this.uniforms.uLine[2]=t}get verticalLine(){return this.uniforms.uLine[3]>.5}set verticalLine(t){this.uniforms.uLine[3]=+!!t}get noise(){return this.uniforms.uNoise[0]}set noise(t){this.uniforms.uNoise[0]=t}get noiseSize(){return this.uniforms.uNoise[1]}set noiseSize(t){this.uniforms.uNoise[1]=t}get vignetting(){return this.uniforms.uVignette[0]}set vignetting(t){this.uniforms.uVignette[0]=t}get vignettingAlpha(){return this.uniforms.uVignette[1]}set vignettingAlpha(t){this.uniforms.uVignette[1]=t}get vignettingBlur(){return this.uniforms.uVignette[2]}set vignettingBlur(t){this.uniforms.uVignette[2]=t}};__publicField15(_CRTFilter,"DEFAULT_OPTIONS",{curvature:1,lineWidth:1,lineContrast:.25,verticalLine:!1,noise:0,noiseSize:1,vignetting:.3,vignettingAlpha:1,vignettingBlur:.3,time:0,seed:0}),init_globals(),init_globals();var fragment18="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform float uAngle;\nuniform float uScale;\nuniform bool uGrayScale;\n\nuniform vec4 uInputSize;\n\nfloat pattern()\n{\n float s = sin(uAngle), c = cos(uAngle);\n vec2 tex = vTextureCoord * uInputSize.xy;\n vec2 point = vec2(\n c * tex.x - s * tex.y,\n s * tex.x + c * tex.y\n ) * uScale;\n return (sin(point.x) * sin(point.y)) * 4.0;\n }\n\n void main()\n {\n vec4 color = texture(uTexture, vTextureCoord);\n vec3 colorRGB = vec3(color);\n\n if (uGrayScale)\n {\n colorRGB = vec3(color.r + color.g + color.b) / 3.0;\n }\n\n finalColor = vec4(colorRGB * 10.0 - 5.0 + pattern(), color.a);\n}\n";init_globals();var source18="struct DotUniforms {\n uScale:f32,\n uAngle:f32,\n uGrayScale:f32,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> dotUniforms : DotUniforms;\n\n@fragment\nfn mainFragment(\n @location(0) uv: vec2<f32>,\n @builtin(position) position: vec4<f32>\n) -> @location(0) vec4<f32> {\n let color: vec4<f32> = textureSample(uTexture, uSampler, uv);\n let gray: vec3<f32> = vec3<f32>(dot(color.rgb, vec3<f32>(0.299, 0.587, 0.114)));\n // dotUniforms.uGrayScale == 1 doesn't ever pass so it is converted to a float and compared to 0.5 instead \n let finalColor: vec3<f32> = select(color.rgb, gray, f32(dotUniforms.uGrayScale) >= 0.5);\n\n return vec4<f32>(finalColor * 10.0 - 5.0 + pattern(uv), color.a);\n}\n\nfn pattern(uv: vec2<f32>) -> f32\n{\n let s: f32 = sin(dotUniforms.uAngle);\n let c: f32 = cos(dotUniforms.uAngle);\n \n let tex: vec2<f32> = uv * gfu.uInputSize.xy;\n \n let p: vec2<f32> = vec2<f32>(\n c * tex.x - s * tex.y,\n s * tex.x + c * tex.y\n ) * dotUniforms.uScale;\n\n return (sin(p.x) * sin(p.y)) * 4.0;\n}",__defProp16=Object.defineProperty,__defNormalProp16=(t,r,n)=>r in t?__defProp16(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField16=(t,r,n)=>(__defNormalProp16(t,"symbol"!=typeof r?r+"":r,n),n),_DotFilter=class e extends Filter{constructor(...t){let r=t[0]??{};"number"==typeof r&&(deprecation("6.0.0","DotFilter constructor params are now options object. See params: { scale, angle, grayscale }"),r={scale:r},void 0!==t[1]&&(r.angle=t[1]),void 0!==t[2]&&(r.grayscale=t[2])),super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source18,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment18,name:"dot-filter"}),resources:{dotUniforms:{uScale:{value:(r={...e.DEFAULT_OPTIONS,...r}).scale,type:"f32"},uAngle:{value:r.angle,type:"f32"},uGrayScale:{value:+!!r.grayscale,type:"f32"}}}})}get scale(){return this.resources.dotUniforms.uniforms.uScale}set scale(t){this.resources.dotUniforms.uniforms.uScale=t}get angle(){return this.resources.dotUniforms.uniforms.uAngle}set angle(t){this.resources.dotUniforms.uniforms.uAngle=t}get grayscale(){return 1===this.resources.dotUniforms.uniforms.uGrayScale}set grayscale(t){this.resources.dotUniforms.uniforms.uGrayScale=+!!t}};__publicField16(_DotFilter,"DEFAULT_OPTIONS",{scale:1,angle:5,grayscale:!0}),init_globals(),init_globals();var fragment19="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform float uAlpha;\nuniform vec3 uColor;\nuniform vec2 uOffset;\n\nuniform vec4 uInputSize;\n\nvoid main(void){\n vec4 sample = texture(uTexture, vTextureCoord - uOffset * uInputSize.zw);\n\n // Premultiply alpha\n sample.rgb = uColor.rgb * sample.a;\n\n // alpha user alpha\n sample *= uAlpha;\n\n finalColor = sample;\n}";init_globals();var source19="struct DropShadowUniforms {\n uAlpha: f32,\n uColor: vec3<f32>,\n uOffset: vec2<f32>,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> dropShadowUniforms : DropShadowUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n var color: vec4<f32> = textureSample(uTexture, uSampler, uv - dropShadowUniforms.uOffset * gfu.uInputSize.zw);\n\n // Premultiply alpha\n color = vec4<f32>(vec3<f32>(dropShadowUniforms.uColor.rgb * color.a), color.a);\n // alpha user alpha\n color *= dropShadowUniforms.uAlpha;\n\n return color;\n}",__defProp17=Object.defineProperty,__defNormalProp17=(t,r,n)=>r in t?__defProp17(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField17=(t,r,n)=>(__defNormalProp17(t,"symbol"!=typeof r?r+"":r,n),n),_DropShadowFilter=class e extends Filter{constructor(t){t={...e.DEFAULT_OPTIONS,...t},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source19,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment19,name:"drop-shadow-filter"}),resources:{dropShadowUniforms:{uAlpha:{value:t.alpha,type:"f32"},uColor:{value:new Float32Array(3),type:"vec3<f32>"},uOffset:{value:t.offset,type:"vec2<f32>"}}},resolution:t.resolution}),__publicField17(this,"uniforms"),__publicField17(this,"shadowOnly",!1),__publicField17(this,"_color"),__publicField17(this,"_blurFilter"),__publicField17(this,"_basePass"),this.uniforms=this.resources.dropShadowUniforms.uniforms,this._color=new Color,this.color=t.color??0,this._blurFilter=new KawaseBlurFilter({strength:t.kernels??t.blur,quality:t.kernels?void 0:t.quality}),this._basePass=new Filter({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:"\n @group(0) @binding(1) var uTexture: texture_2d<f32>; \n @group(0) @binding(2) var uSampler: sampler;\n @fragment\n fn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n ) -> @location(0) vec4<f32> {\n return textureSample(uTexture, uSampler, uv);\n }\n ",entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:"\n in vec2 vTextureCoord;\n out vec4 finalColor;\n uniform sampler2D uTexture;\n\n void main(void){\n finalColor = texture(uTexture, vTextureCoord);\n }\n ",name:"drop-shadow-filter"}),resources:{}}),Object.assign(this,t)}apply(t,r,n,i){let a=TexturePool.getSameSizeTexture(r);t.applyFilter(this,r,a,!0),this._blurFilter.apply(t,a,n,i),this.shadowOnly||t.applyFilter(this._basePass,r,n,!1),TexturePool.returnTexture(a)}get offset(){return this.uniforms.uOffset}set offset(t){this.uniforms.uOffset=t,this._updatePadding()}get offsetX(){return this.offset.x}set offsetX(t){this.offset.x=t,this._updatePadding()}get offsetY(){return this.offset.y}set offsetY(t){this.offset.y=t,this._updatePadding()}get color(){return this._color.value}set color(t){this._color.setValue(t);let[r,n,i]=this._color.toArray();this.uniforms.uColor[0]=r,this.uniforms.uColor[1]=n,this.uniforms.uColor[2]=i}get alpha(){return this.uniforms.uAlpha}set alpha(t){this.uniforms.uAlpha=t}get blur(){return this._blurFilter.strength}set blur(t){this._blurFilter.strength=t,this._updatePadding()}get quality(){return this._blurFilter.quality}set quality(t){this._blurFilter.quality=t,this._updatePadding()}get kernels(){return this._blurFilter.kernels}set kernels(t){this._blurFilter.kernels=t}get pixelSize(){return this._blurFilter.pixelSize}set pixelSize(t){"number"==typeof t&&(t={x:t,y:t}),Array.isArray(t)&&(t={x:t[0],y:t[1]}),this._blurFilter.pixelSize=t}get pixelSizeX(){return this._blurFilter.pixelSizeX}set pixelSizeX(t){this._blurFilter.pixelSizeX=t}get pixelSizeY(){return this._blurFilter.pixelSizeY}set pixelSizeY(t){this._blurFilter.pixelSizeY=t}_updatePadding(){let t=Math.max(Math.abs(this.offsetX),Math.abs(this.offsetY));this.padding=t+2*this.blur+4*this.quality}};__publicField17(_DropShadowFilter,"DEFAULT_OPTIONS",{offset:{x:4,y:4},color:0,alpha:.5,shadowOnly:!1,kernels:void 0,blur:2,quality:3,pixelSize:{x:1,y:1},resolution:1});var DropShadowFilter=_DropShadowFilter;init_globals(),init_globals(),init_globals(),init_globals(),init_globals();var fragment21="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform sampler2D uDisplacementMap;\nuniform float uSeed;\nuniform vec2 uDimensions;\nuniform float uAspect;\nuniform float uFillMode;\nuniform float uOffset;\nuniform float uDirection;\nuniform vec2 uRed;\nuniform vec2 uGreen;\nuniform vec2 uBlue;\n\nuniform vec4 uInputSize;\nuniform vec4 uInputClamp;\n\nconst int TRANSPARENT = 0;\nconst int ORIGINAL = 1;\nconst int LOOP = 2;\nconst int CLAMP = 3;\nconst int MIRROR = 4;\n\nvoid main(void)\n{\n vec2 coord = (vTextureCoord * uInputSize.xy) / uDimensions;\n\n if (coord.x > 1.0 || coord.y > 1.0) {\n return;\n }\n\n float sinDir = sin(uDirection);\n float cosDir = cos(uDirection);\n\n float cx = coord.x - 0.5;\n float cy = (coord.y - 0.5) * uAspect;\n float ny = (-sinDir * cx + cosDir * cy) / uAspect + 0.5;\n\n // displacementMap: repeat\n // ny = ny > 1.0 ? ny - 1.0 : (ny < 0.0 ? 1.0 + ny : ny);\n\n // displacementMap: mirror\n ny = ny > 1.0 ? 2.0 - ny : (ny < 0.0 ? -ny : ny);\n\n vec4 dc = texture(uDisplacementMap, vec2(0.5, ny));\n\n float displacement = (dc.r - dc.g) * (uOffset / uInputSize.x);\n\n coord = vTextureCoord + vec2(cosDir * displacement, sinDir * displacement * uAspect);\n\n int fillMode = int(uFillMode);\n\n if (fillMode == CLAMP) {\n coord = clamp(coord, uInputClamp.xy, uInputClamp.zw);\n } else {\n if( coord.x > uInputClamp.z ) {\n if (fillMode == TRANSPARENT) {\n discard;\n } else if (fillMode == LOOP) {\n coord.x -= uInputClamp.z;\n } else if (fillMode == MIRROR) {\n coord.x = uInputClamp.z * 2.0 - coord.x;\n }\n } else if( coord.x < uInputClamp.x ) {\n if (fillMode == TRANSPARENT) {\n discard;\n } else if (fillMode == LOOP) {\n coord.x += uInputClamp.z;\n } else if (fillMode == MIRROR) {\n coord.x *= -uInputClamp.z;\n }\n }\n\n if( coord.y > uInputClamp.w ) {\n if (fillMode == TRANSPARENT) {\n discard;\n } else if (fillMode == LOOP) {\n coord.y -= uInputClamp.w;\n } else if (fillMode == MIRROR) {\n coord.y = uInputClamp.w * 2.0 - coord.y;\n }\n } else if( coord.y < uInputClamp.y ) {\n if (fillMode == TRANSPARENT) {\n discard;\n } else if (fillMode == LOOP) {\n coord.y += uInputClamp.w;\n } else if (fillMode == MIRROR) {\n coord.y *= -uInputClamp.w;\n }\n }\n }\n\n finalColor.r = texture(uTexture, coord + uRed * (1.0 - uSeed * 0.4) / uInputSize.xy).r;\n finalColor.g = texture(uTexture, coord + uGreen * (1.0 - uSeed * 0.3) / uInputSize.xy).g;\n finalColor.b = texture(uTexture, coord + uBlue * (1.0 - uSeed * 0.2) / uInputSize.xy).b;\n finalColor.a = texture(uTexture, coord).a;\n}\n";init_globals();var source21="struct GlitchUniforms {\n uSeed: f32,\n uDimensions: vec2<f32>,\n uAspect: f32,\n uFillMode: f32,\n uOffset: f32,\n uDirection: f32,\n uRed: vec2<f32>,\n uGreen: vec2<f32>,\n uBlue: vec2<f32>,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> glitchUniforms : GlitchUniforms;\n@group(1) @binding(1) var uDisplacementMap: texture_2d<f32>; \n@group(1) @binding(2) var uDisplacementSampler: sampler; \n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let uSeed: f32 = glitchUniforms.uSeed;\n let uDimensions: vec2<f32> = glitchUniforms.uDimensions;\n let uAspect: f32 = glitchUniforms.uAspect;\n let uOffset: f32 = glitchUniforms.uOffset;\n let uDirection: f32 = glitchUniforms.uDirection;\n let uRed: vec2<f32> = glitchUniforms.uRed;\n let uGreen: vec2<f32> = glitchUniforms.uGreen;\n let uBlue: vec2<f32> = glitchUniforms.uBlue;\n\n let uInputSize: vec4<f32> = gfu.uInputSize;\n let uInputClamp: vec4<f32> = gfu.uInputClamp;\n\n var discarded: bool = false;\n var coord: vec2<f32> = (uv * uInputSize.xy) / uDimensions;\n\n if (coord.x > 1.0 || coord.y > 1.0) {\n discarded = true;\n }\n\n let sinDir: f32 = sin(uDirection);\n let cosDir: f32 = cos(uDirection);\n\n let cx: f32 = coord.x - 0.5;\n let cy: f32 = (coord.y - 0.5) * uAspect;\n var ny: f32 = (-sinDir * cx + cosDir * cy) / uAspect + 0.5;\n\n ny = select(select(ny, -ny, ny < 0.0), 2.0 - ny, ny > 1.0);\n\n let dc: vec4<f32> = textureSample(uDisplacementMap, uDisplacementSampler, vec2<f32>(0.5, ny));\n\n let displacement: f32 = (dc.r - dc.g) * (uOffset / uInputSize.x);\n\n coord = uv + vec2<f32>(cosDir * displacement, sinDir * displacement * uAspect);\n\n let fillMode: i32 = i32(glitchUniforms.uFillMode);\n\n if (fillMode == CLAMP) {\n coord = clamp(coord, uInputClamp.xy, uInputClamp.zw);\n } else {\n if (coord.x > uInputClamp.z) {\n if (fillMode == TRANSPARENT) {\n discarded = true;\n } else if (fillMode == LOOP) {\n coord.x = coord.x - uInputClamp.z;\n } else if (fillMode == MIRROR) {\n coord.x = uInputClamp.z * 2.0 - coord.x;\n }\n } else if (coord.x < uInputClamp.x) {\n if (fillMode == TRANSPARENT) {\n discarded = true;\n } else if (fillMode == LOOP) {\n coord.x = coord.x + uInputClamp.z;\n } else if (fillMode == MIRROR) {\n coord.x = coord.x * -uInputClamp.z;\n }\n }\n\n if (coord.y > uInputClamp.w) {\n if (fillMode == TRANSPARENT) {\n discarded = true;\n } else if (fillMode == LOOP) {\n coord.y = coord.y - uInputClamp.w;\n } else if (fillMode == MIRROR) {\n coord.y = uInputClamp.w * 2.0 - coord.y;\n }\n } else if (coord.y < uInputClamp.y) {\n if (fillMode == TRANSPARENT) {\n discarded = true;\n } else if (fillMode == LOOP) {\n coord.y = coord.y + uInputClamp.w;\n } else if (fillMode == MIRROR) {\n coord.y = coord.y * -uInputClamp.w;\n }\n }\n }\n\n let seedR: f32 = 1.0 - uSeed * 0.4;\n let seedG: f32 = 1.0 - uSeed * 0.3;\n let seedB: f32 = 1.0 - uSeed * 0.2;\n\n let offsetR: vec2<f32> = vec2(uRed.x * seedR / uInputSize.x, uRed.y * seedR / uInputSize.y);\n let offsetG: vec2<f32> = vec2(uGreen.x * seedG / uInputSize.x, uGreen.y * seedG / uInputSize.y);\n let offsetB: vec2<f32> = vec2(uBlue.x * seedB / uInputSize.x, uBlue.y * seedB / uInputSize.y);\n\n let r = textureSample(uTexture, uSampler, coord + offsetR).r;\n let g = textureSample(uTexture, uSampler, coord + offsetG).g;\n let b = textureSample(uTexture, uSampler, coord + offsetB).b;\n let a = textureSample(uTexture, uSampler, coord).a;\n\n return select(vec4<f32>(r, g, b, a), vec4<f32>(0.0,0.0,0.0,0.0), discarded);\n}\n\nconst TRANSPARENT: i32 = 0;\nconst ORIGINAL: i32 = 1;\nconst LOOP: i32 = 2;\nconst CLAMP: i32 = 3;\nconst MIRROR: i32 = 4;",__defProp18=Object.defineProperty,__defNormalProp18=(t,r,n)=>r in t?__defProp18(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField18=(t,r,n)=>(__defNormalProp18(t,"symbol"!=typeof r?r+"":r,n),n),_GlitchFilter=class e extends Filter{constructor(t){t={...e.defaults,...t};let r=GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source21,entryPoint:"mainFragment"}}),n=GlProgram.from({vertex:vertex3,fragment:fragment21,name:"glitch-filter"}),i=document.createElement("canvas");i.width=4,i.height=t.sampleSize??512;let a=new Texture({source:new ImageSource({resource:i})});super({gpuProgram:r,glProgram:n,resources:{glitchUniforms:{uSeed:{value:t?.seed??0,type:"f32"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"},uAspect:{value:1,type:"f32"},uFillMode:{value:t?.fillMode??0,type:"f32"},uOffset:{value:t?.offset??100,type:"f32"},uDirection:{value:t?.direction??0,type:"f32"},uRed:{value:t.red,type:"vec2<f32>"},uGreen:{value:t.green,type:"vec2<f32>"},uBlue:{value:t.blue,type:"vec2<f32>"}},uDisplacementMap:a.source,uDisplacementSampler:a.source.style}}),__publicField18(this,"uniforms"),__publicField18(this,"average",!1),__publicField18(this,"minSize",8),__publicField18(this,"sampleSize",512),__publicField18(this,"_canvas"),__publicField18(this,"texture"),__publicField18(this,"_slices",0),__publicField18(this,"_sizes",new Float32Array(1)),__publicField18(this,"_offsets",new Float32Array(1)),this.uniforms=this.resources.glitchUniforms.uniforms,this._canvas=i,this.texture=a,Object.assign(this,t)}apply(t,r,n,i){let{width:a,height:o}=r.frame;this.uniforms.uDimensions[0]=a,this.uniforms.uDimensions[1]=o,this.uniforms.uAspect=o/a,t.applyFilter(this,r,n,i)}_randomizeSizes(){let t=this._sizes,r=this._slices-1,n=this.sampleSize,i=Math.min(this.minSize/n,.9/this._slices);if(this.average){let n=this._slices,a=1;for(let o=0;o<r;o++){let r=Math.max(a/(n-o)*(1-.6*Math.random()),i);t[o]=r,a-=r}t[r]=a}else{let n=1,a=Math.sqrt(1/this._slices);for(let o=0;o<r;o++){let r=Math.max(a*n*Math.random(),i);t[o]=r,n-=r}t[r]=n}this.shuffle()}shuffle(){let t=this._sizes;for(let r=this._slices-1;r>0;r--){let n=Math.random()*r|0,i=t[r];t[r]=t[n],t[n]=i}}_randomizeOffsets(){for(let t=0;t<this._slices;t++)this._offsets[t]=Math.random()*(.5>Math.random()?-1:1)}refresh(){this._randomizeSizes(),this._randomizeOffsets(),this.redraw()}redraw(){let t,r=this.sampleSize,n=this.texture,i=this._canvas.getContext("2d");i.clearRect(0,0,8,r);let a=0;for(let n=0;n<this._slices;n++){t=Math.floor(256*this._offsets[n]);let o=this._sizes[n]*r,s=t>0?t:0,l=t<0?-t:0;i.fillStyle=`rgba(${s}, ${l}, 0, 1)`,i.fillRect(0,0|a,r,o+1|0),a+=o}n.source.update()}set sizes(t){let r=Math.min(this._slices,t.length);for(let n=0;n<r;n++)this._sizes[n]=t[n]}get sizes(){return this._sizes}set offsets(t){let r=Math.min(this._slices,t.length);for(let n=0;n<r;n++)this._offsets[n]=t[n]}get offsets(){return this._offsets}get slices(){return this._slices}set slices(t){this._slices!==t&&(this._slices=t,this._sizes=new Float32Array(t),this._offsets=new Float32Array(t),this.refresh())}get offset(){return this.uniforms.uOffset}set offset(t){this.uniforms.uOffset=t}get seed(){return this.uniforms.uSeed}set seed(t){this.uniforms.uSeed=t}get fillMode(){return this.uniforms.uFillMode}set fillMode(t){this.uniforms.uFillMode=t}get direction(){return this.uniforms.uDirection/DEG_TO_RAD}set direction(t){this.uniforms.uDirection=t*DEG_TO_RAD}get red(){return this.uniforms.uRed}set red(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uRed=t}get green(){return this.uniforms.uGreen}set green(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uGreen=t}get blue(){return this.uniforms.uBlue}set blue(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uBlue=t}destroy(){this.texture?.destroy(!0),this.texture=this._canvas=this.red=this.green=this.blue=this._sizes=this._offsets=null}};__publicField18(_GlitchFilter,"defaults",{slices:5,offset:100,direction:0,fillMode:0,average:!1,seed:0,red:{x:0,y:0},green:{x:0,y:0},blue:{x:0,y:0},minSize:8,sampleSize:512}),init_globals(),init_globals();var fragment22="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec2 uStrength;\nuniform vec3 uColor;\nuniform float uKnockout;\nuniform float uAlpha;\n\nuniform vec4 uInputSize;\nuniform vec4 uInputClamp;\n\nconst float PI = 3.14159265358979323846264;\n\n// Hard-assignment of DIST and ANGLE_STEP_SIZE instead of using uDistance and uQuality to allow them to be use on GLSL loop conditions\nconst float DIST = __DIST__;\nconst float ANGLE_STEP_SIZE = min(__ANGLE_STEP_SIZE__, PI * 2.);\nconst float ANGLE_STEP_NUM = ceil(PI * 2. / ANGLE_STEP_SIZE);\nconst float MAX_TOTAL_ALPHA = ANGLE_STEP_NUM * DIST * (DIST + 1.) / 2.;\n\nvoid main(void) {\n vec2 px = vec2(1.) / uInputSize.xy;\n\n float totalAlpha = 0.;\n\n vec2 direction;\n vec2 displaced;\n vec4 curColor;\n\n for (float angle = 0.; angle < PI * 2.; angle += ANGLE_STEP_SIZE) {\n direction = vec2(cos(angle), sin(angle)) * px;\n\n for (float curDistance = 0.; curDistance < DIST; curDistance++) {\n displaced = clamp(vTextureCoord + direction * (curDistance + 1.), uInputClamp.xy, uInputClamp.zw);\n curColor = texture(uTexture, displaced);\n totalAlpha += (DIST - curDistance) * curColor.a;\n }\n }\n \n curColor = texture(uTexture, vTextureCoord);\n\n vec4 glowColor = vec4(uColor, uAlpha);\n bool knockout = uKnockout > .5;\n float innerStrength = uStrength[0];\n float outerStrength = uStrength[1];\n\n float alphaRatio = totalAlpha / MAX_TOTAL_ALPHA;\n float innerGlowAlpha = (1. - alphaRatio) * innerStrength * curColor.a * uAlpha;\n float innerGlowStrength = min(1., innerGlowAlpha);\n \n vec4 innerColor = mix(curColor, glowColor, innerGlowStrength);\n float outerGlowAlpha = alphaRatio * outerStrength * (1. - curColor.a) * uAlpha;\n float outerGlowStrength = min(1. - innerColor.a, outerGlowAlpha);\n vec4 outerGlowColor = outerGlowStrength * glowColor.rgba;\n\n if (knockout) {\n float resultAlpha = outerGlowAlpha + innerGlowAlpha;\n finalColor = vec4(glowColor.rgb * resultAlpha, resultAlpha);\n }\n else {\n finalColor = innerColor + outerGlowColor;\n }\n}\n";init_globals();var source22="struct GlowUniforms {\n uDistance: f32,\n uStrength: vec2<f32>,\n uColor: vec3<f32>,\n uAlpha: f32,\n uQuality: f32,\n uKnockout: f32,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> glowUniforms : GlowUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let quality = glowUniforms.uQuality;\n let distance = glowUniforms.uDistance;\n\n let dist: f32 = glowUniforms.uDistance;\n let angleStepSize: f32 = min(1. / quality / distance, PI * 2.0);\n let angleStepNum: f32 = ceil(PI * 2.0 / angleStepSize);\n\n let px: vec2<f32> = vec2<f32>(1.0 / gfu.uInputSize.xy);\n\n var totalAlpha: f32 = 0.0;\n\n var direction: vec2<f32>;\n var displaced: vec2<f32>;\n var curColor: vec4<f32>;\n\n for (var angle = 0.0; angle < PI * 2.0; angle += angleStepSize) {\n direction = vec2<f32>(cos(angle), sin(angle)) * px;\n for (var curDistance = 0.0; curDistance < dist; curDistance+=1) {\n displaced = vec2<f32>(clamp(uv + direction * (curDistance + 1.0), gfu.uInputClamp.xy, gfu.uInputClamp.zw));\n curColor = textureSample(uTexture, uSampler, displaced);\n totalAlpha += (dist - curDistance) * curColor.a;\n }\n }\n \n curColor = textureSample(uTexture, uSampler, uv);\n\n let glowColorRGB = glowUniforms.uColor;\n let glowAlpha = glowUniforms.uAlpha;\n let glowColor = vec4<f32>(glowColorRGB, glowAlpha);\n let knockout: bool = glowUniforms.uKnockout > 0.5;\n let innerStrength = glowUniforms.uStrength[0];\n let outerStrength = glowUniforms.uStrength[1];\n\n let alphaRatio: f32 = (totalAlpha / (angleStepNum * dist * (dist + 1.0) / 2.0));\n let innerGlowAlpha: f32 = (1.0 - alphaRatio) * innerStrength * curColor.a * glowAlpha;\n let innerGlowStrength: f32 = min(1.0, innerGlowAlpha);\n \n let innerColor: vec4<f32> = mix(curColor, glowColor, innerGlowStrength);\n let outerGlowAlpha: f32 = alphaRatio * outerStrength * (1. - curColor.a) * glowAlpha;\n let outerGlowStrength: f32 = min(1.0 - innerColor.a, outerGlowAlpha);\n let outerGlowColor: vec4<f32> = outerGlowStrength * glowColor.rgba;\n \n if (knockout) {\n let resultAlpha: f32 = outerGlowAlpha + innerGlowAlpha;\n return vec4<f32>(glowColor.rgb * resultAlpha, resultAlpha);\n }\n else {\n return innerColor + outerGlowColor;\n }\n}\n\nconst PI: f32 = 3.14159265358979323846264;",__defProp19=Object.defineProperty,__defNormalProp19=(t,r,n)=>r in t?__defProp19(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField19=(t,r,n)=>(__defNormalProp19(t,"symbol"!=typeof r?r+"":r,n),n),_GlowFilter=class e extends Filter{constructor(t){let r=(t={...e.DEFAULT_OPTIONS,...t}).distance??10,n=t.quality??.1;super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source22,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment22.replace(/__ANGLE_STEP_SIZE__/gi,`${(1/n/r).toFixed(7)}`).replace(/__DIST__/gi,`${r.toFixed(0)}.0`),name:"glow-filter"}),resources:{glowUniforms:{uDistance:{value:r,type:"f32"},uStrength:{value:[t.innerStrength,t.outerStrength],type:"vec2<f32>"},uColor:{value:new Float32Array(3),type:"vec3<f32>"},uAlpha:{value:t.alpha,type:"f32"},uQuality:{value:n,type:"f32"},uKnockout:{value:+!!t?.knockout,type:"f32"}}},padding:r}),__publicField19(this,"uniforms"),__publicField19(this,"_color"),this.uniforms=this.resources.glowUniforms.uniforms,this._color=new Color,this.color=t.color??0xffffff}get distance(){return this.uniforms.uDistance}set distance(t){this.uniforms.uDistance=this.padding=t}get innerStrength(){return this.uniforms.uStrength[0]}set innerStrength(t){this.uniforms.uStrength[0]=t}get outerStrength(){return this.uniforms.uStrength[1]}set outerStrength(t){this.uniforms.uStrength[1]=t}get color(){return this._color.value}set color(t){this._color.setValue(t);let[r,n,i]=this._color.toArray();this.uniforms.uColor[0]=r,this.uniforms.uColor[1]=n,this.uniforms.uColor[2]=i}get alpha(){return this.uniforms.uAlpha}set alpha(t){this.uniforms.uAlpha=t}get quality(){return this.uniforms.uQuality}set quality(t){this.uniforms.uQuality=t}get knockout(){return 1===this.uniforms.uKnockout}set knockout(t){this.uniforms.uKnockout=+!!t}};__publicField19(_GlowFilter,"DEFAULT_OPTIONS",{distance:10,outerStrength:4,innerStrength:0,color:0xffffff,alpha:1,quality:.1,knockout:!1}),init_globals(),init_globals();var fragment23="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec2 uDimensions;\nuniform float uParallel;\nuniform vec2 uLight;\nuniform float uAspect;\nuniform float uTime;\nuniform vec3 uRay;\n\nuniform vec4 uInputSize;\n\n${PERLIN}\n\nvoid main(void) {\n vec2 uDimensions = uDimensions;\n bool uParallel = uParallel > 0.5;\n vec2 uLight = uLight;\n float uAspect = uAspect;\n\n vec2 coord = vTextureCoord * uInputSize.xy / uDimensions;\n\n float d;\n\n if (uParallel) {\n float _cos = uLight.x;\n float _sin = uLight.y;\n d = (_cos * coord.x) + (_sin * coord.y * uAspect);\n } else {\n float dx = coord.x - uLight.x / uDimensions.x;\n float dy = (coord.y - uLight.y / uDimensions.y) * uAspect;\n float dis = sqrt(dx * dx + dy * dy) + 0.00001;\n d = dy / dis;\n }\n\n float uTime = uTime;\n vec3 uRay = uRay;\n\n float gain = uRay[0];\n float lacunarity = uRay[1];\n float alpha = uRay[2];\n\n vec3 dir = vec3(d, d, 0.0);\n float noise = turb(dir + vec3(uTime, 0.0, 62.1 + uTime) * 0.05, vec3(480.0, 320.0, 480.0), lacunarity, gain);\n noise = mix(noise, 0.0, 0.3);\n //fade vertically.\n vec4 mist = vec4(vec3(noise), 1.0) * (1.0 - coord.y);\n mist.a = 1.0;\n // apply user alpha\n mist *= alpha;\n\n finalColor = texture(uTexture, vTextureCoord) + mist;\n}\n";init_globals();var source23="struct GodrayUniforms {\n uLight: vec2<f32>,\n uParallel: f32,\n uAspect: f32,\n uTime: f32,\n uRay: vec3<f32>,\n uDimensions: vec2<f32>,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> godrayUniforms : GodrayUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let uDimensions: vec2<f32> = godrayUniforms.uDimensions;\n let uParallel: bool = godrayUniforms.uParallel > 0.5;\n let uLight: vec2<f32> = godrayUniforms.uLight;\n let uAspect: f32 = godrayUniforms.uAspect;\n\n let coord: vec2<f32> = uv * gfu.uInputSize.xy / uDimensions;\n\n var d: f32;\n\n if (uParallel) {\n let _cos: f32 = uLight.x;\n let _sin: f32 = uLight.y;\n d = (_cos * coord.x) + (_sin * coord.y * uAspect);\n } else {\n let dx: f32 = coord.x - uLight.x / uDimensions.x;\n let dy: f32 = (coord.y - uLight.y / uDimensions.y) * uAspect;\n let dis: f32 = sqrt(dx * dx + dy * dy) + 0.00001;\n d = dy / dis;\n }\n\n let uTime: f32 = godrayUniforms.uTime;\n let uRay: vec3<f32> = godrayUniforms.uRay;\n \n let gain = uRay[0];\n let lacunarity = uRay[1];\n let alpha = uRay[2];\n\n let dir: vec3<f32> = vec3<f32>(d, d, 0.0);\n var noise: f32 = turb(dir + vec3<f32>(uTime, 0.0, 62.1 + uTime) * 0.05, vec3<f32>(480.0, 320.0, 480.0), lacunarity, gain);\n noise = mix(noise, 0.0, 0.3);\n //fade vertically.\n var mist: vec4<f32> = vec4<f32>(vec3<f32>(noise), 1.0) * (1.0 - coord.y);\n mist.a = 1.0;\n // apply user alpha\n mist *= alpha;\n return textureSample(uTexture, uSampler, uv) + mist;\n}\n\n${PERLIN}";init_globals();var perlin="vec3 mod289(vec3 x)\n{\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\nvec4 mod289(vec4 x)\n{\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\nvec4 permute(vec4 x)\n{\n return mod289(((x * 34.0) + 1.0) * x);\n}\nvec4 taylorInvSqrt(vec4 r)\n{\n return 1.79284291400159 - 0.85373472095314 * r;\n}\nvec3 fade(vec3 t)\n{\n return t * t * t * (t * (t * 6.0 - 15.0) + 10.0);\n}\n// Classic Perlin noise, periodic variant\nfloat pnoise(vec3 P, vec3 rep)\n{\n vec3 Pi0 = mod(floor(P), rep); // Integer part, modulo period\n vec3 Pi1 = mod(Pi0 + vec3(1.0), rep); // Integer part + 1, mod period\n Pi0 = mod289(Pi0);\n Pi1 = mod289(Pi1);\n vec3 Pf0 = fract(P); // Fractional part for interpolation\n vec3 Pf1 = Pf0 - vec3(1.0); // Fractional part - 1.0\n vec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\n vec4 iy = vec4(Pi0.yy, Pi1.yy);\n vec4 iz0 = Pi0.zzzz;\n vec4 iz1 = Pi1.zzzz;\n vec4 ixy = permute(permute(ix) + iy);\n vec4 ixy0 = permute(ixy + iz0);\n vec4 ixy1 = permute(ixy + iz1);\n vec4 gx0 = ixy0 * (1.0 / 7.0);\n vec4 gy0 = fract(floor(gx0) * (1.0 / 7.0)) - 0.5;\n gx0 = fract(gx0);\n vec4 gz0 = vec4(0.5) - abs(gx0) - abs(gy0);\n vec4 sz0 = step(gz0, vec4(0.0));\n gx0 -= sz0 * (step(0.0, gx0) - 0.5);\n gy0 -= sz0 * (step(0.0, gy0) - 0.5);\n vec4 gx1 = ixy1 * (1.0 / 7.0);\n vec4 gy1 = fract(floor(gx1) * (1.0 / 7.0)) - 0.5;\n gx1 = fract(gx1);\n vec4 gz1 = vec4(0.5) - abs(gx1) - abs(gy1);\n vec4 sz1 = step(gz1, vec4(0.0));\n gx1 -= sz1 * (step(0.0, gx1) - 0.5);\n gy1 -= sz1 * (step(0.0, gy1) - 0.5);\n vec3 g000 = vec3(gx0.x, gy0.x, gz0.x);\n vec3 g100 = vec3(gx0.y, gy0.y, gz0.y);\n vec3 g010 = vec3(gx0.z, gy0.z, gz0.z);\n vec3 g110 = vec3(gx0.w, gy0.w, gz0.w);\n vec3 g001 = vec3(gx1.x, gy1.x, gz1.x);\n vec3 g101 = vec3(gx1.y, gy1.y, gz1.y);\n vec3 g011 = vec3(gx1.z, gy1.z, gz1.z);\n vec3 g111 = vec3(gx1.w, gy1.w, gz1.w);\n vec4 norm0 = taylorInvSqrt(vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));\n g000 *= norm0.x;\n g010 *= norm0.y;\n g100 *= norm0.z;\n g110 *= norm0.w;\n vec4 norm1 = taylorInvSqrt(vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));\n g001 *= norm1.x;\n g011 *= norm1.y;\n g101 *= norm1.z;\n g111 *= norm1.w;\n float n000 = dot(g000, Pf0);\n float n100 = dot(g100, vec3(Pf1.x, Pf0.yz));\n float n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z));\n float n110 = dot(g110, vec3(Pf1.xy, Pf0.z));\n float n001 = dot(g001, vec3(Pf0.xy, Pf1.z));\n float n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z));\n float n011 = dot(g011, vec3(Pf0.x, Pf1.yz));\n float n111 = dot(g111, Pf1);\n vec3 fade_xyz = fade(Pf0);\n vec4 n_z = mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fade_xyz.z);\n vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);\n float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);\n return 2.2 * n_xyz;\n}\nfloat turb(vec3 P, vec3 rep, float lacunarity, float gain)\n{\n float sum = 0.0;\n float sc = 1.0;\n float totalgain = 1.0;\n for (float i = 0.0; i < 6.0; i++)\n {\n sum += totalgain * pnoise(P * sc, rep);\n sc *= lacunarity;\n totalgain *= gain;\n }\n return abs(sum);\n}\n";init_globals();var sourcePerlin="// Taken from https://gist.github.com/munrocket/236ed5ba7e409b8bdf1ff6eca5dcdc39\n\nfn moduloVec3(x: vec3<f32>, y: vec3<f32>) -> vec3<f32>\n{\n return x - y * floor(x/y);\n}\nfn mod289Vec3(x: vec3<f32>) -> vec3<f32>\n{\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\nfn mod289Vec4(x: vec4<f32>) -> vec4<f32>\n{\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\nfn permute4(x: vec4<f32>) -> vec4<f32>\n{\n return mod289Vec4(((x * 34.0) + 1.0) * x);\n}\nfn taylorInvSqrt(r: vec4<f32>) -> vec4<f32>\n{\n return 1.79284291400159 - 0.85373472095314 * r;\n}\nfn fade3(t: vec3<f32>) -> vec3<f32>\n{\n return t * t * t * (t * (t * 6.0 - 15.0) + 10.0);\n}\nfn fade2(t: vec2<f32>) -> vec2<f32> { return t * t * t * (t * (t * 6. - 15.) + 10.); }\n\nfn perlinNoise2(P: vec2<f32>) -> f32 {\n var Pi: vec4<f32> = floor(P.xyxy) + vec4<f32>(0., 0., 1., 1.);\n let Pf = fract(P.xyxy) - vec4<f32>(0., 0., 1., 1.);\n Pi = Pi % vec4<f32>(289.); // To avoid truncation effects in permutation\n let ix = Pi.xzxz;\n let iy = Pi.yyww;\n let fx = Pf.xzxz;\n let fy = Pf.yyww;\n let i = permute4(permute4(ix) + iy);\n var gx: vec4<f32> = 2. * fract(i * 0.0243902439) - 1.; // 1/41 = 0.024...\n let gy = abs(gx) - 0.5;\n let tx = floor(gx + 0.5);\n gx = gx - tx;\n var g00: vec2<f32> = vec2<f32>(gx.x, gy.x);\n var g10: vec2<f32> = vec2<f32>(gx.y, gy.y);\n var g01: vec2<f32> = vec2<f32>(gx.z, gy.z);\n var g11: vec2<f32> = vec2<f32>(gx.w, gy.w);\n let norm = 1.79284291400159 - 0.85373472095314 *\n vec4<f32>(dot(g00, g00), dot(g01, g01), dot(g10, g10), dot(g11, g11));\n g00 = g00 * norm.x;\n g01 = g01 * norm.y;\n g10 = g10 * norm.z;\n g11 = g11 * norm.w;\n let n00 = dot(g00, vec2<f32>(fx.x, fy.x));\n let n10 = dot(g10, vec2<f32>(fx.y, fy.y));\n let n01 = dot(g01, vec2<f32>(fx.z, fy.z));\n let n11 = dot(g11, vec2<f32>(fx.w, fy.w));\n let fade_xy = fade2(Pf.xy);\n let n_x = mix(vec2<f32>(n00, n01), vec2<f32>(n10, n11), vec2<f32>(fade_xy.x));\n let n_xy = mix(n_x.x, n_x.y, fade_xy.y);\n return 2.3 * n_xy;\n}\n\n// Classic Perlin noise, periodic variant\nfn perlinNoise3(P: vec3<f32>, rep: vec3<f32>) -> f32\n{\n var Pi0: vec3<f32> = moduloVec3(floor(P), rep); // Integer part, modulo period\n var Pi1: vec3<f32> = moduloVec3(Pi0 + vec3<f32>(1.0), rep); // Integer part + 1, mod period\n Pi0 = mod289Vec3(Pi0);\n Pi1 = mod289Vec3(Pi1);\n let Pf0: vec3<f32> = fract(P); // Fractional part for interpolation\n let Pf1: vec3<f32> = Pf0 - vec3<f32>(1.0); // Fractional part - 1.0\n let ix: vec4<f32> = vec4<f32>(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\n let iy: vec4<f32> = vec4<f32>(Pi0.yy, Pi1.yy);\n let iz0: vec4<f32> = Pi0.zzzz;\n let iz1: vec4<f32> = Pi1.zzzz;\n let ixy: vec4<f32> = permute4(permute4(ix) + iy);\n let ixy0: vec4<f32> = permute4(ixy + iz0);\n let ixy1: vec4<f32> = permute4(ixy + iz1);\n var gx0: vec4<f32> = ixy0 * (1.0 / 7.0);\n var gy0: vec4<f32> = fract(floor(gx0) * (1.0 / 7.0)) - 0.5;\n gx0 = fract(gx0);\n let gz0: vec4<f32> = vec4<f32>(0.5) - abs(gx0) - abs(gy0);\n let sz0: vec4<f32> = step(gz0, vec4<f32>(0.0));\n gx0 -= sz0 * (step(vec4<f32>(0.0), gx0) - 0.5);\n gy0 -= sz0 * (step(vec4<f32>(0.0), gy0) - 0.5);\n var gx1: vec4<f32> = ixy1 * (1.0 / 7.0);\n var gy1: vec4<f32> = fract(floor(gx1) * (1.0 / 7.0)) - 0.5;\n gx1 = fract(gx1);\n let gz1: vec4<f32> = vec4<f32>(0.5) - abs(gx1) - abs(gy1);\n let sz1: vec4<f32> = step(gz1, vec4<f32>(0.0));\n gx1 -= sz1 * (step(vec4<f32>(0.0), gx1) - 0.5);\n gy1 -= sz1 * (step(vec4<f32>(0.0), gy1) - 0.5);\n var g000: vec3<f32> = vec3<f32>(gx0.x, gy0.x, gz0.x);\n var g100: vec3<f32> = vec3<f32>(gx0.y, gy0.y, gz0.y);\n var g010: vec3<f32> = vec3<f32>(gx0.z, gy0.z, gz0.z);\n var g110: vec3<f32> = vec3<f32>(gx0.w, gy0.w, gz0.w);\n var g001: vec3<f32> = vec3<f32>(gx1.x, gy1.x, gz1.x);\n var g101: vec3<f32> = vec3<f32>(gx1.y, gy1.y, gz1.y);\n var g011: vec3<f32> = vec3<f32>(gx1.z, gy1.z, gz1.z);\n var g111: vec3<f32> = vec3<f32>(gx1.w, gy1.w, gz1.w);\n let norm0: vec4<f32> = taylorInvSqrt(vec4<f32>(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));\n g000 *= norm0.x;\n g010 *= norm0.y;\n g100 *= norm0.z;\n g110 *= norm0.w;\n let norm1: vec4<f32> = taylorInvSqrt(vec4<f32>(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));\n g001 *= norm1.x;\n g011 *= norm1.y;\n g101 *= norm1.z;\n g111 *= norm1.w;\n let n000: f32 = dot(g000, Pf0);\n let n100: f32 = dot(g100, vec3<f32>(Pf1.x, Pf0.yz));\n let n010: f32 = dot(g010, vec3<f32>(Pf0.x, Pf1.y, Pf0.z));\n let n110: f32 = dot(g110, vec3<f32>(Pf1.xy, Pf0.z));\n let n001: f32 = dot(g001, vec3<f32>(Pf0.xy, Pf1.z));\n let n101: f32 = dot(g101, vec3<f32>(Pf1.x, Pf0.y, Pf1.z));\n let n011: f32 = dot(g011, vec3<f32>(Pf0.x, Pf1.yz));\n let n111: f32 = dot(g111, Pf1);\n let fade_xyz: vec3<f32> = fade3(Pf0);\n let n_z: vec4<f32> = mix(vec4<f32>(n000, n100, n010, n110), vec4<f32>(n001, n101, n011, n111), fade_xyz.z);\n let n_yz: vec2<f32> = mix(n_z.xy, n_z.zw, fade_xyz.y);\n let n_xyz: f32 = mix(n_yz.x, n_yz.y, fade_xyz.x);\n return 2.2 * n_xyz;\n}\nfn turb(P: vec3<f32>, rep: vec3<f32>, lacunarity: f32, gain: f32) -> f32\n{\n var sum: f32 = 0.0;\n var sc: f32 = 1.0;\n var totalgain: f32 = 1.0;\n for (var i = 0.0; i < 6.0; i += 1)\n {\n sum += totalgain * perlinNoise3(P * sc, rep);\n sc *= lacunarity;\n totalgain *= gain;\n }\n return abs(sum);\n}",__defProp20=Object.defineProperty,__defNormalProp20=(t,r,n)=>r in t?__defProp20(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField20=(t,r,n)=>(__defNormalProp20(t,"symbol"!=typeof r?r+"":r,n),n),_GodrayFilter=class e extends Filter{constructor(t){super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source23.replace("${PERLIN}",sourcePerlin),entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment23.replace("${PERLIN}",perlin),name:"god-ray-filter"}),resources:{godrayUniforms:{uLight:{value:new Float32Array(2),type:"vec2<f32>"},uParallel:{value:0,type:"f32"},uAspect:{value:0,type:"f32"},uTime:{value:(t={...e.DEFAULT_OPTIONS,...t}).time,type:"f32"},uRay:{value:new Float32Array(3),type:"vec3<f32>"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"}}}}),__publicField20(this,"uniforms"),__publicField20(this,"time",0),__publicField20(this,"_angleLight",[0,0]),__publicField20(this,"_angle",0),__publicField20(this,"_center"),this.uniforms=this.resources.godrayUniforms.uniforms,Object.assign(this,t)}apply(t,r,n,i){let a=r.frame.width,o=r.frame.height;this.uniforms.uLight[0]=this.parallel?this._angleLight[0]:this._center.x,this.uniforms.uLight[1]=this.parallel?this._angleLight[1]:this._center.y,this.uniforms.uDimensions[0]=a,this.uniforms.uDimensions[1]=o,this.uniforms.uAspect=o/a,this.uniforms.uTime=this.time,t.applyFilter(this,r,n,i)}get angle(){return this._angle}set angle(t){this._angle=t;let r=t*DEG_TO_RAD;this._angleLight[0]=Math.cos(r),this._angleLight[1]=Math.sin(r)}get parallel(){return this.uniforms.uParallel>.5}set parallel(t){this.uniforms.uParallel=+!!t}get center(){return this._center}set center(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this._center=t}get centerX(){return this.center.x}set centerX(t){this.center.x=t}get centerY(){return this.center.y}set centerY(t){this.center.y=t}get gain(){return this.uniforms.uRay[0]}set gain(t){this.uniforms.uRay[0]=t}get lacunarity(){return this.uniforms.uRay[1]}set lacunarity(t){this.uniforms.uRay[1]=t}get alpha(){return this.uniforms.uRay[2]}set alpha(t){this.uniforms.uRay[2]=t}};__publicField20(_GodrayFilter,"DEFAULT_OPTIONS",{angle:30,gain:.5,lacunarity:2.5,parallel:!0,time:0,center:{x:0,y:0},alpha:1}),init_globals(),init_globals(),init_globals(),init_globals(),init_globals();var fragment25="in vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec3 uHsl;\nuniform float uAlpha;\nuniform float uColorize;\n\n// https://en.wikipedia.org/wiki/Luma_(video)\nconst vec3 weight = vec3(0.299, 0.587, 0.114);\n\nfloat getWeightedAverage(vec3 rgb) {\n return rgb.r * weight.r + rgb.g * weight.g + rgb.b * weight.b;\n}\n\n// https://gist.github.com/mairod/a75e7b44f68110e1576d77419d608786?permalink_comment_id=3195243#gistcomment-3195243\nconst vec3 k = vec3(0.57735, 0.57735, 0.57735);\n\nvec3 hueShift(vec3 color, float angle) {\n float cosAngle = cos(angle);\n return vec3(\n color * cosAngle +\n cross(k, color) * sin(angle) +\n k * dot(k, color) * (1.0 - cosAngle)\n );\n}\n\nvoid main()\n{\n vec4 color = texture(uTexture, vTextureCoord);\n vec3 resultRGB = color.rgb;\n\n float hue = uHsl[0];\n float saturation = uHsl[1];\n float lightness = uHsl[2];\n\n // colorize\n if (uColorize > 0.5) {\n resultRGB = vec3(getWeightedAverage(resultRGB), 0., 0.);\n }\n\n // hue\n resultRGB = hueShift(resultRGB, hue);\n\n // saturation\n // https://github.com/evanw/glfx.js/blob/master/src/filters/adjust/huesaturation.js\n float average = (resultRGB.r + resultRGB.g + resultRGB.b) / 3.0;\n\n if (saturation > 0.) {\n resultRGB += (average - resultRGB) * (1. - 1. / (1.001 - saturation));\n } else {\n resultRGB -= (average - resultRGB) * saturation;\n }\n\n // lightness\n resultRGB = mix(resultRGB, vec3(ceil(lightness)) * color.a, abs(lightness));\n\n // alpha\n finalColor = mix(color, vec4(resultRGB, color.a), uAlpha);\n}\n";init_globals();var source25="struct HslUniforms {\n uHsl:vec3<f32>,\n uColorize:f32,\n uAlpha:f32,\n};\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> hslUniforms : HslUniforms;\n\n@fragment\nfn mainFragment(\n @location(0) uv: vec2<f32>,\n @builtin(position) position: vec4<f32>\n) -> @location(0) vec4<f32> {\n let color: vec4<f32> = textureSample(uTexture, uSampler, uv);\n var resultRGB: vec3<f32> = color.rgb;\n\n let hue: f32 = hslUniforms.uHsl[0];\n let saturation: f32 = hslUniforms.uHsl[1];\n let lightness: f32 = hslUniforms.uHsl[2];\n\n // colorize\n if (hslUniforms.uColorize > 0.5) {\n resultRGB = vec3<f32>(dot(color.rgb, vec3<f32>(0.299, 0.587, 0.114)), 0., 0.);\n }\n\n // hue\n resultRGB = hueShift(resultRGB, hue);\n\n // saturation\n // https://github.com/evanw/glfx.js/blob/master/src/filters/adjust/huesaturation.js\n let average: f32 = (resultRGB.r + resultRGB.g + resultRGB.b) / 3.0;\n\n if (saturation > 0.) {\n resultRGB += (average - resultRGB) * (1. - 1. / (1.001 - saturation));\n } else {\n resultRGB -= (average - resultRGB) * saturation;\n }\n\n // lightness\n resultRGB = mix(resultRGB, vec3<f32>(ceil(lightness)) * color.a, abs(lightness));\n\n // alpha\n return mix(color, vec4<f32>(resultRGB, color.a), hslUniforms.uAlpha);\n}\n\n// https://gist.github.com/mairod/a75e7b44f68110e1576d77419d608786?permalink_comment_id=3195243#gistcomment-3195243\nconst k: vec3<f32> = vec3(0.57735, 0.57735, 0.57735);\n\nfn hueShift(color: vec3<f32>, angle: f32) -> vec3<f32> \n{\n let cosAngle: f32 = cos(angle);\n return vec3<f32>(\n color * cosAngle +\n cross(k, color) * sin(angle) +\n k * dot(k, color) * (1.0 - cosAngle)\n );\n}",__defProp21=Object.defineProperty,__defNormalProp21=(t,r,n)=>r in t?__defProp21(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField21=(t,r,n)=>(__defNormalProp21(t,"symbol"!=typeof r?r+"":r,n),n),_HslAdjustmentFilter=class e extends Filter{constructor(t){t={...e.DEFAULT_OPTIONS,...t},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source25,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment25,name:"hsl-adjustment-filter"}),resources:{hslUniforms:{uHsl:{value:new Float32Array(3),type:"vec3<f32>"},uColorize:{value:+!!t.colorize,type:"f32"},uAlpha:{value:t.alpha,type:"f32"}}}}),__publicField21(this,"uniforms"),__publicField21(this,"_hue"),this.uniforms=this.resources.hslUniforms.uniforms,Object.assign(this,t)}get hue(){return this._hue}set hue(t){this._hue=t,this.uniforms.uHsl[0]=Math.PI/180*t}get saturation(){return this.uniforms.uHsl[1]}set saturation(t){this.uniforms.uHsl[1]=t}get lightness(){return this.uniforms.uHsl[2]}set lightness(t){this.uniforms.uHsl[2]=t}get colorize(){return 1===this.uniforms.uColorize}set colorize(t){this.uniforms.uColorize=+!!t}get alpha(){return this.uniforms.uAlpha}set alpha(t){this.uniforms.uAlpha=t}};__publicField21(_HslAdjustmentFilter,"DEFAULT_OPTIONS",{hue:0,saturation:0,lightness:0,colorize:!1,alpha:1}),init_globals(),init_globals();var fragment26="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec2 uVelocity;\nuniform int uKernelSize;\nuniform float uOffset;\n\nuniform vec4 uInputSize;\n\nconst int MAX_KERNEL_SIZE = 2048;\n\n// Notice:\n// the perfect way:\n// int kernelSize = min(uKernelSize, MAX_KERNELSIZE);\n// BUT in real use-case , uKernelSize < MAX_KERNELSIZE almost always.\n// So use uKernelSize directly.\n\nvoid main(void)\n{\n vec4 color = texture(uTexture, vTextureCoord);\n\n if (uKernelSize == 0)\n {\n finalColor = color;\n return;\n }\n\n vec2 velocity = uVelocity / uInputSize.xy;\n float offset = -uOffset / length(uVelocity) - 0.5;\n int k = uKernelSize - 1;\n\n for(int i = 0; i < MAX_KERNEL_SIZE - 1; i++) {\n if (i == k) {\n break;\n }\n vec2 bias = velocity * (float(i) / float(k) + offset);\n color += texture(uTexture, vTextureCoord + bias);\n }\n finalColor = color / float(uKernelSize);\n}\n";init_globals();var source26="struct MotionBlurUniforms {\n uVelocity: vec2<f32>,\n uKernelSize: f32,\n uOffset: f32,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> motionBlurUniforms : MotionBlurUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let uVelocity = motionBlurUniforms.uVelocity;\n let uKernelSize = motionBlurUniforms.uKernelSize;\n let uOffset = motionBlurUniforms.uOffset;\n\n let velocity: vec2<f32> = uVelocity / gfu.uInputSize.xy;\n let offset: f32 = -uOffset / length(uVelocity) - 0.5;\n let k: i32 = i32(min(uKernelSize - 1, MAX_KERNEL_SIZE - 1));\n\n var color: vec4<f32> = textureSample(uTexture, uSampler, uv);\n\n for(var i: i32 = 0; i < k; i += 1) {\n let bias: vec2<f32> = velocity * (f32(i) / f32(k) + offset);\n color += textureSample(uTexture, uSampler, uv + bias);\n }\n \n return select(color / f32(uKernelSize), textureSample(uTexture, uSampler, uv), uKernelSize == 0);\n}\n\nconst MAX_KERNEL_SIZE: f32 = 2048;",__defProp22=Object.defineProperty,__defNormalProp22=(t,r,n)=>r in t?__defProp22(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField22=(t,r,n)=>(__defNormalProp22(t,"symbol"!=typeof r?r+"":r,n),n),_MotionBlurFilter=class e extends Filter{constructor(...t){let r=t[0]??{};(Array.isArray(r)||"x"in r&&"y"in r||r instanceof ObservablePoint)&&(deprecation("6.0.0","MotionBlurFilter constructor params are now options object. See params: { velocity, kernelSize, offset }"),r={velocity:{x:"x"in r?r.x:r[0],y:"y"in r?r.y:r[1]}},void 0!==t[1]&&(r.kernelSize=t[1]),void 0!==t[2]&&(r.offset=t[2])),r={...e.DEFAULT_OPTIONS,...r},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source26,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment26,name:"motion-blur-filter"}),resources:{motionBlurUniforms:{uVelocity:{value:r.velocity,type:"vec2<f32>"},uKernelSize:{value:Math.trunc(r.kernelSize??5),type:"i32"},uOffset:{value:r.offset,type:"f32"}}}}),__publicField22(this,"uniforms"),__publicField22(this,"_kernelSize"),this.uniforms=this.resources.motionBlurUniforms.uniforms,Object.assign(this,r)}get velocity(){return this.uniforms.uVelocity}set velocity(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uVelocity=t,this._updateDirty()}get velocityX(){return this.velocity.x}set velocityX(t){this.velocity.x=t,this._updateDirty()}get velocityY(){return this.velocity.y}set velocityY(t){this.velocity.y=t,this._updateDirty()}get kernelSize(){return this._kernelSize}set kernelSize(t){this._kernelSize=t,this._updateDirty()}get offset(){return this.uniforms.uOffset}set offset(t){this.uniforms.uOffset=t}_updateDirty(){this.padding=1+(0|Math.max(Math.abs(this.velocityX),Math.abs(this.velocityY))),this.uniforms.uKernelSize=0!==this.velocityX||0!==this.velocityY?this._kernelSize:0}};__publicField22(_MotionBlurFilter,"DEFAULT_OPTIONS",{velocity:{x:0,y:0},kernelSize:5,offset:0}),init_globals(),init_globals();var fragment27="in vec2 vTextureCoord;\nout vec4 finalColor;\n\nconst int MAX_COLORS = ${MAX_COLORS};\n\nuniform sampler2D uTexture;\nuniform vec3 uOriginalColors[MAX_COLORS];\nuniform vec3 uTargetColors[MAX_COLORS];\nuniform float uTolerance;\n\nvoid main(void)\n{\n finalColor = texture(uTexture, vTextureCoord);\n\n float alpha = finalColor.a;\n if (alpha < 0.0001)\n {\n return;\n }\n\n vec3 color = finalColor.rgb / alpha;\n\n for(int i = 0; i < MAX_COLORS; i++)\n {\n vec3 origColor = uOriginalColors[i];\n if (origColor.r < 0.0)\n {\n break;\n }\n vec3 colorDiff = origColor - color;\n if (length(colorDiff) < uTolerance)\n {\n vec3 targetColor = uTargetColors[i];\n finalColor = vec4((targetColor + colorDiff) * alpha, alpha);\n return;\n }\n }\n}\n";init_globals();var source27="struct MultiColorReplaceUniforms {\n uOriginalColors: array<vec3<f32>, MAX_COLORS>,\n uTargetColors: array<vec3<f32>, MAX_COLORS>,\n uTolerance:f32,\n};\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> multiColorReplaceUniforms : MultiColorReplaceUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let uOriginalColors = multiColorReplaceUniforms.uOriginalColors;\n let uTargetColors = multiColorReplaceUniforms.uTargetColors;\n let uTolerance = multiColorReplaceUniforms.uTolerance;\n\n var color: vec4<f32> = textureSample(uTexture, uSampler, uv);\n\n let alpha: f32 = color.a;\n\n if (alpha > 0.0001)\n {\n var modColor: vec3<f32> = vec3<f32>(color.rgb) / alpha;\n\n for(var i: i32 = 0; i < MAX_COLORS; i += 1)\n {\n let origColor: vec3<f32> = uOriginalColors[i];\n if (origColor.r < 0.0)\n {\n break;\n }\n let colorDiff: vec3<f32> = origColor - modColor;\n \n if (length(colorDiff) < uTolerance)\n {\n let targetColor: vec3<f32> = uTargetColors[i];\n color = vec4((targetColor + colorDiff) * alpha, alpha);\n return color;\n }\n }\n }\n\n return color;\n}\n\nconst MAX_COLORS: i32 = ${MAX_COLORS};",__defProp23=Object.defineProperty,__defNormalProp23=(t,r,n)=>r in t?__defProp23(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField23=(t,r,n)=>(__defNormalProp23(t,"symbol"!=typeof r?r+"":r,n),n),_MultiColorReplaceFilter=class e extends Filter{constructor(...t){let r=t[0]??{};Array.isArray(r)&&(deprecation("6.0.0","MultiColorReplaceFilter constructor params are now options object. See params: { replacements, tolerance, maxColors }"),r={replacements:r},t[1]&&(r.tolerance=t[1]),t[2]&&(r.maxColors=t[2]));let n=(r={...e.DEFAULT_OPTIONS,...r}).maxColors??r.replacements.length;super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source27.replace(/\$\{MAX_COLORS\}/g,n.toFixed(0)),entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment27.replace(/\$\{MAX_COLORS\}/g,n.toFixed(0)),name:"multi-color-replace-filter"}),resources:{multiColorReplaceUniforms:{uOriginalColors:{value:new Float32Array(3*n),type:"vec3<f32>",size:n},uTargetColors:{value:new Float32Array(3*n),type:"vec3<f32>",size:n},uTolerance:{value:r.tolerance,type:"f32"}}}}),__publicField23(this,"uniforms"),__publicField23(this,"_replacements",[]),__publicField23(this,"_maxColors"),this._maxColors=n,this.uniforms=this.resources.multiColorReplaceUniforms.uniforms,this.replacements=r.replacements}set replacements(t){let r,n,i,a=this.uniforms.uOriginalColors,o=this.uniforms.uTargetColors,s=t.length,l=new Color;if(s>this._maxColors)throw Error(`Length of replacements (${s}) exceeds the maximum colors length (${this._maxColors})`);a[3*s]=-1;for(let u=0;u<s;u++){let s=t[u];l.setValue(s[0]),[r,n,i]=l.toArray(),a[3*u]=r,a[3*u+1]=n,a[3*u+2]=i,l.setValue(s[1]),[r,n,i]=l.toArray(),o[3*u]=r,o[3*u+1]=n,o[3*u+2]=i}this._replacements=t}get replacements(){return this._replacements}refresh(){this.replacements=this._replacements}get maxColors(){return this._maxColors}get tolerance(){return this.uniforms.uTolerance}set tolerance(t){this.uniforms.uTolerance=t}set epsilon(t){deprecation("6.0.0","MultiColorReplaceFilter.epsilon is deprecated, please use MultiColorReplaceFilter.tolerance instead"),this.tolerance=t}get epsilon(){return deprecation("6.0.0","MultiColorReplaceFilter.epsilon is deprecated, please use MultiColorReplaceFilter.tolerance instead"),this.tolerance}};__publicField23(_MultiColorReplaceFilter,"DEFAULT_OPTIONS",{replacements:[[0xff0000,255]],tolerance:.05,maxColors:void 0}),init_globals(),init_globals();var fragment28="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform float uSepia;\nuniform vec2 uNoise;\nuniform vec3 uScratch;\nuniform vec3 uVignetting;\nuniform float uSeed;\nuniform vec2 uDimensions;\n\nuniform vec4 uInputSize;\n\nconst float SQRT_2 = 1.414213;\nconst vec3 SEPIA_RGB = vec3(112.0 / 255.0, 66.0 / 255.0, 20.0 / 255.0);\n\nfloat rand(vec2 co) {\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nvec3 Overlay(vec3 src, vec3 dst)\n{\n // if (dst <= 0.5) then: 2 * src * dst\n // if (dst > 0.5) then: 1 - 2 * (1 - dst) * (1 - src)\n return vec3((dst.x <= 0.5) ? (2.0 * src.x * dst.x) : (1.0 - 2.0 * (1.0 - dst.x) * (1.0 - src.x)),\n (dst.y <= 0.5) ? (2.0 * src.y * dst.y) : (1.0 - 2.0 * (1.0 - dst.y) * (1.0 - src.y)),\n (dst.z <= 0.5) ? (2.0 * src.z * dst.z) : (1.0 - 2.0 * (1.0 - dst.z) * (1.0 - src.z)));\n}\n\n\nvoid main()\n{\n finalColor = texture(uTexture, vTextureCoord);\n vec3 color = finalColor.rgb;\n\n if (uSepia > 0.0)\n {\n float gray = (color.x + color.y + color.z) / 3.0;\n vec3 grayscale = vec3(gray);\n\n color = Overlay(SEPIA_RGB, grayscale);\n\n color = grayscale + uSepia * (color - grayscale);\n }\n\n vec2 coord = vTextureCoord * uInputSize.xy / uDimensions.xy;\n\n float vignette = uVignetting[0];\n float vignetteAlpha = uVignetting[1];\n float vignetteBlur = uVignetting[2];\n\n if (vignette > 0.0)\n {\n float outter = SQRT_2 - vignette * SQRT_2;\n vec2 dir = vec2(vec2(0.5, 0.5) - coord);\n dir.y *= uDimensions.y / uDimensions.x;\n float darker = clamp((outter - length(dir) * SQRT_2) / ( 0.00001 + vignetteBlur * SQRT_2), 0.0, 1.0);\n color.rgb *= darker + (1.0 - darker) * (1.0 - vignetteAlpha);\n }\n\n float scratch = uScratch[0];\n float scratchDensity = uScratch[1];\n float scratchWidth = uScratch[2];\n\n if (scratchDensity > uSeed && scratch != 0.0)\n {\n float phase = uSeed * 256.0;\n float s = mod(floor(phase), 2.0);\n float dist = 1.0 / scratchDensity;\n float d = distance(coord, vec2(uSeed * dist, abs(s - uSeed * dist)));\n if (d < uSeed * 0.6 + 0.4)\n {\n highp float period = scratchDensity * 10.0;\n\n float xx = coord.x * period + phase;\n float aa = abs(mod(xx, 0.5) * 4.0);\n float bb = mod(floor(xx / 0.5), 2.0);\n float yy = (1.0 - bb) * aa + bb * (2.0 - aa);\n\n float kk = 2.0 * period;\n float dw = scratchWidth / uDimensions.x * (0.75 + uSeed);\n float dh = dw * kk;\n\n float tine = (yy - (2.0 - dh));\n\n if (tine > 0.0) {\n float _sign = sign(scratch);\n\n tine = s * tine / period + scratch + 0.1;\n tine = clamp(tine + 1.0, 0.5 + _sign * 0.5, 1.5 + _sign * 0.5);\n\n color.rgb *= tine;\n }\n }\n }\n\n float noise = uNoise[0];\n float noiseSize = uNoise[1];\n\n if (noise > 0.0 && noiseSize > 0.0)\n {\n vec2 pixelCoord = vTextureCoord.xy * uInputSize.xy;\n pixelCoord.x = floor(pixelCoord.x / noiseSize);\n pixelCoord.y = floor(pixelCoord.y / noiseSize);\n // vec2 d = pixelCoord * noiseSize * vec2(1024.0 + uSeed * 512.0, 1024.0 - uSeed * 512.0);\n // float _noise = snoise(d) * 0.5;\n float _noise = rand(pixelCoord * noiseSize * uSeed) - 0.5;\n color += _noise * noise;\n }\n\n finalColor.rgb = color;\n}";init_globals();var source28="struct OldFilmUniforms {\n uSepia: f32,\n uNoise: vec2<f32>,\n uScratch: vec3<f32>,\n uVignetting: vec3<f32>,\n uSeed: f32,\n uDimensions: vec2<f32>,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> oldFilmUniforms : OldFilmUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n var color: vec4<f32> = textureSample(uTexture, uSampler, uv);\n\n if (oldFilmUniforms.uSepia > 0.)\n {\n color = vec4<f32>(sepia(color.rgb), color.a);\n }\n\n let coord: vec2<f32> = uv * gfu.uInputSize.xy / oldFilmUniforms.uDimensions;\n\n if (oldFilmUniforms.uVignetting[0] > 0.)\n {\n color *= vec4<f32>(vec3<f32>(vignette(color.rgb, coord)), color.a);\n }\n\n let uScratch = oldFilmUniforms.uScratch; \n\n if (uScratch[1] > oldFilmUniforms.uSeed && uScratch[0] != 0.)\n {\n color = vec4<f32>(scratch(color.rgb, coord), color.a);\n }\n\n let uNoise = oldFilmUniforms.uNoise;\n\n if (uNoise[0] > 0.0 && uNoise[1] > 0.0)\n {\n color += vec4<f32>(vec3<f32>(noise(uv)), color.a);\n }\n\n return color;\n}\n\nconst SQRT_2: f32 = 1.414213;\nconst SEPIA_RGB: vec3<f32> = vec3<f32>(112.0 / 255.0, 66.0 / 255.0, 20.0 / 255.0);\n\nfn modulo(x: f32, y: f32) -> f32\n{\n return x - y * floor(x/y);\n}\n\nfn rand(co: vec2<f32>) -> f32\n{\n return fract(sin(dot(co, vec2<f32>(12.9898, 78.233))) * 43758.5453);\n}\n\nfn overlay(src: vec3<f32>, dst: vec3<f32>) -> vec3<f32>\n{\n // if (dst <= 0.5) then: 2 * src * dst\n // if (dst > 0.5) then: 1 - 2 * (1 - dst) * (1 - src)\n\n return vec3<f32>(\n select((1.0 - 2.0 * (1.0 - dst.x) * (1.0 - src.x)), (2.0 * src.x * dst.x), (dst.x <= 0.5)), \n select((1.0 - 2.0 * (1.0 - dst.y) * (1.0 - src.y)), (2.0 * src.y * dst.y), (dst.y <= 0.5)),\n select((1.0 - 2.0 * (1.0 - dst.z) * (1.0 - src.z)), (2.0 * src.z * dst.z), (dst.z <= 0.5))\n );\n}\n\nfn sepia(co: vec3<f32>) -> vec3<f32>\n{\n let gray: f32 = (co.x + co.y + co.z) / 3.0;\n let grayscale: vec3<f32> = vec3<f32>(gray);\n let color = overlay(SEPIA_RGB, grayscale);\n return grayscale + oldFilmUniforms.uSepia * (color - grayscale);\n}\n\nfn vignette(co: vec3<f32>, coord: vec2<f32>) -> f32\n{\n let uVignetting = oldFilmUniforms.uVignetting;\n let uDimensions = oldFilmUniforms.uDimensions;\n \n let outter: f32 = SQRT_2 - uVignetting[0] * SQRT_2;\n var dir: vec2<f32> = vec2<f32>(vec2<f32>(0.5) - coord);\n dir.y *= uDimensions.y / uDimensions.x;\n let darker: f32 = clamp((outter - length(dir) * SQRT_2) / ( 0.00001 + uVignetting[2] * SQRT_2), 0.0, 1.0);\n return darker + (1.0 - darker) * (1.0 - uVignetting[1]);\n}\n\nfn scratch(co: vec3<f32>, coord: vec2<f32>) -> vec3<f32>\n{\n var color = co;\n let uScratch = oldFilmUniforms.uScratch;\n let uSeed = oldFilmUniforms.uSeed;\n let uDimensions = oldFilmUniforms.uDimensions;\n\n let phase: f32 = uSeed * 256.0;\n let s: f32 = modulo(floor(phase), 2.0);\n let dist: f32 = 1.0 / uScratch[1];\n let d: f32 = distance(coord, vec2<f32>(uSeed * dist, abs(s - uSeed * dist)));\n\n if (d < uSeed * 0.6 + 0.4)\n {\n let period: f32 = uScratch[1] * 10.0;\n\n let xx: f32 = coord.x * period + phase;\n let aa: f32 = abs(modulo(xx, 0.5) * 4.0);\n let bb: f32 = modulo(floor(xx / 0.5), 2.0);\n let yy: f32 = (1.0 - bb) * aa + bb * (2.0 - aa);\n\n let kk: f32 = 2.0 * period;\n let dw: f32 = uScratch[2] / uDimensions.x * (0.75 + uSeed);\n let dh: f32 = dw * kk;\n\n var tine: f32 = (yy - (2.0 - dh));\n\n if (tine > 0.0) {\n let _sign: f32 = sign(uScratch[0]);\n\n tine = s * tine / period + uScratch[0] + 0.1;\n tine = clamp(tine + 1.0, 0.5 + _sign * 0.5, 1.5 + _sign * 0.5);\n\n color *= tine;\n }\n }\n\n return color;\n}\n\nfn noise(coord: vec2<f32>) -> f32\n{\n let uNoise = oldFilmUniforms.uNoise;\n let uSeed = oldFilmUniforms.uSeed;\n\n var pixelCoord: vec2<f32> = coord * gfu.uInputSize.xy;\n pixelCoord.x = floor(pixelCoord.x / uNoise[1]);\n pixelCoord.y = floor(pixelCoord.y / uNoise[1]);\n return (rand(pixelCoord * uNoise[1] * uSeed) - 0.5) * uNoise[0];\n}",__defProp24=Object.defineProperty,__defNormalProp24=(t,r,n)=>r in t?__defProp24(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField24=(t,r,n)=>(__defNormalProp24(t,"symbol"!=typeof r?r+"":r,n),n),_OldFilmFilter=class e extends Filter{constructor(t){t={...e.DEFAULT_OPTIONS,...t},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source28,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment28,name:"old-film-filter"}),resources:{oldFilmUniforms:{uSepia:{value:t.sepia,type:"f32"},uNoise:{value:new Float32Array(2),type:"vec2<f32>"},uScratch:{value:new Float32Array(3),type:"vec3<f32>"},uVignetting:{value:new Float32Array(3),type:"vec3<f32>"},uSeed:{value:t.seed,type:"f32"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"}}}}),__publicField24(this,"uniforms"),__publicField24(this,"seed"),this.uniforms=this.resources.oldFilmUniforms.uniforms,Object.assign(this,t)}apply(t,r,n,i){this.uniforms.uDimensions[0]=r.frame.width,this.uniforms.uDimensions[1]=r.frame.height,this.uniforms.uSeed=this.seed,t.applyFilter(this,r,n,i)}get sepia(){return this.uniforms.uSepia}set sepia(t){this.uniforms.uSepia=t}get noise(){return this.uniforms.uNoise[0]}set noise(t){this.uniforms.uNoise[0]=t}get noiseSize(){return this.uniforms.uNoise[1]}set noiseSize(t){this.uniforms.uNoise[1]=t}get scratch(){return this.uniforms.uScratch[0]}set scratch(t){this.uniforms.uScratch[0]=t}get scratchDensity(){return this.uniforms.uScratch[1]}set scratchDensity(t){this.uniforms.uScratch[1]=t}get scratchWidth(){return this.uniforms.uScratch[2]}set scratchWidth(t){this.uniforms.uScratch[2]=t}get vignetting(){return this.uniforms.uVignetting[0]}set vignetting(t){this.uniforms.uVignetting[0]=t}get vignettingAlpha(){return this.uniforms.uVignetting[1]}set vignettingAlpha(t){this.uniforms.uVignetting[1]=t}get vignettingBlur(){return this.uniforms.uVignetting[2]}set vignettingBlur(t){this.uniforms.uVignetting[2]=t}};__publicField24(_OldFilmFilter,"DEFAULT_OPTIONS",{sepia:.3,noise:.3,noiseSize:1,scratch:.5,scratchDensity:.3,scratchWidth:1,vignetting:.3,vignettingAlpha:1,vignettingBlur:.3,seed:0}),init_globals(),init_globals();var fragment29="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec2 uThickness;\nuniform vec3 uColor;\nuniform float uAlpha;\nuniform float uKnockout;\n\nuniform vec4 uInputClamp;\n\nconst float DOUBLE_PI = 2. * 3.14159265358979323846264;\nconst float ANGLE_STEP = ${ANGLE_STEP};\n\nfloat outlineMaxAlphaAtPos(vec2 pos) {\n if (uThickness.x == 0. || uThickness.y == 0.) {\n return 0.;\n }\n\n vec4 displacedColor;\n vec2 displacedPos;\n float maxAlpha = 0.;\n\n for (float angle = 0.; angle <= DOUBLE_PI; angle += ANGLE_STEP) {\n displacedPos.x = vTextureCoord.x + uThickness.x * cos(angle);\n displacedPos.y = vTextureCoord.y + uThickness.y * sin(angle);\n displacedColor = texture(uTexture, clamp(displacedPos, uInputClamp.xy, uInputClamp.zw));\n maxAlpha = max(maxAlpha, displacedColor.a);\n }\n\n return maxAlpha;\n}\n\nvoid main(void) {\n vec4 sourceColor = texture(uTexture, vTextureCoord);\n vec4 contentColor = sourceColor * float(uKnockout < 0.5);\n float outlineAlpha = uAlpha * outlineMaxAlphaAtPos(vTextureCoord.xy) * (1.-sourceColor.a);\n vec4 outlineColor = vec4(vec3(uColor) * outlineAlpha, outlineAlpha);\n finalColor = contentColor + outlineColor;\n}\n";init_globals();var source29="struct OutlineUniforms {\n uThickness:vec2<f32>,\n uColor:vec3<f32>,\n uAlpha:f32,\n uAngleStep:f32,\n uKnockout:f32,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> outlineUniforms : OutlineUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let sourceColor: vec4<f32> = textureSample(uTexture, uSampler, uv);\n let contentColor: vec4<f32> = sourceColor * (1. - outlineUniforms.uKnockout);\n \n let outlineAlpha: f32 = outlineUniforms.uAlpha * outlineMaxAlphaAtPos(uv) * (1. - sourceColor.a);\n let outlineColor: vec4<f32> = vec4<f32>(vec3<f32>(outlineUniforms.uColor) * outlineAlpha, outlineAlpha);\n \n return contentColor + outlineColor;\n}\n\nfn outlineMaxAlphaAtPos(uv: vec2<f32>) -> f32 {\n let thickness = outlineUniforms.uThickness;\n\n if (thickness.x == 0. || thickness.y == 0.) {\n return 0.;\n }\n \n let angleStep = outlineUniforms.uAngleStep;\n\n var displacedColor: vec4<f32>;\n var displacedPos: vec2<f32>;\n\n var maxAlpha: f32 = 0.;\n var displaced: vec2<f32>;\n var curColor: vec4<f32>;\n\n for (var angle = 0.; angle <= DOUBLE_PI; angle += angleStep)\n {\n displaced.x = uv.x + thickness.x * cos(angle);\n displaced.y = uv.y + thickness.y * sin(angle);\n curColor = textureSample(uTexture, uSampler, clamp(displaced, gfu.uInputClamp.xy, gfu.uInputClamp.zw));\n maxAlpha = max(maxAlpha, curColor.a);\n }\n\n return maxAlpha;\n}\n\nconst DOUBLE_PI: f32 = 3.14159265358979323846264 * 2.;",__defProp25=Object.defineProperty,__defNormalProp25=(t,r,n)=>r in t?__defProp25(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField25=(t,r,n)=>(__defNormalProp25(t,"symbol"!=typeof r?r+"":r,n),n),_OutlineFilter=class e extends Filter{constructor(...t){let r=t[0]??{};"number"==typeof r&&(deprecation("6.0.0","OutlineFilter constructor params are now options object. See params: { thickness, color, quality, alpha, knockout }"),r={thickness:r},void 0!==t[1]&&(r.color=t[1]),void 0!==t[2]&&(r.quality=t[2]),void 0!==t[3]&&(r.alpha=t[3]),void 0!==t[4]&&(r.knockout=t[4]));let n=(r={...e.DEFAULT_OPTIONS,...r}).quality??.1;super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source29,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment29.replace(/\$\{ANGLE_STEP\}/,e.getAngleStep(n).toFixed(7)),name:"outline-filter"}),resources:{outlineUniforms:{uThickness:{value:new Float32Array(2),type:"vec2<f32>"},uColor:{value:new Float32Array(3),type:"vec3<f32>"},uAlpha:{value:r.alpha,type:"f32"},uAngleStep:{value:0,type:"f32"},uKnockout:{value:+!!r.knockout,type:"f32"}}}}),__publicField25(this,"uniforms"),__publicField25(this,"_thickness"),__publicField25(this,"_quality"),__publicField25(this,"_color"),this.uniforms=this.resources.outlineUniforms.uniforms,this.uniforms.uAngleStep=e.getAngleStep(n),this._color=new Color,this.color=r.color??0,Object.assign(this,r)}apply(t,r,n,i){this.uniforms.uThickness[0]=this.thickness/r.source.width,this.uniforms.uThickness[1]=this.thickness/r.source.height,t.applyFilter(this,r,n,i)}static getAngleStep(t){return parseFloat((2*Math.PI/Math.max(t*e.MAX_SAMPLES,e.MIN_SAMPLES)).toFixed(7))}get thickness(){return this._thickness}set thickness(t){this._thickness=this.padding=t}get color(){return this._color.value}set color(t){this._color.setValue(t);let[r,n,i]=this._color.toArray();this.uniforms.uColor[0]=r,this.uniforms.uColor[1]=n,this.uniforms.uColor[2]=i}get alpha(){return this.uniforms.uAlpha}set alpha(t){this.uniforms.uAlpha=t}get quality(){return this._quality}set quality(t){this._quality=t,this.uniforms.uAngleStep=e.getAngleStep(t)}get knockout(){return 1===this.uniforms.uKnockout}set knockout(t){this.uniforms.uKnockout=+!!t}};__publicField25(_OutlineFilter,"DEFAULT_OPTIONS",{thickness:1,color:0,alpha:1,quality:.1,knockout:!1}),__publicField25(_OutlineFilter,"MIN_SAMPLES",1),__publicField25(_OutlineFilter,"MAX_SAMPLES",100),init_globals(),init_globals(),init_globals(),init_globals(),init_globals();var fragment31="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform float uRadian;\nuniform vec2 uCenter;\nuniform float uRadius;\nuniform int uKernelSize;\n\nuniform vec4 uInputSize;\n\nconst int MAX_KERNEL_SIZE = 2048;\n\nvoid main(void)\n{\n vec4 color = texture(uTexture, vTextureCoord);\n\n if (uKernelSize == 0)\n {\n finalColor = color;\n return;\n }\n\n float aspect = uInputSize.y / uInputSize.x;\n vec2 center = uCenter.xy / uInputSize.xy;\n float gradient = uRadius / uInputSize.x * 0.3;\n float radius = uRadius / uInputSize.x - gradient * 0.5;\n int k = uKernelSize - 1;\n\n vec2 coord = vTextureCoord;\n vec2 dir = vec2(center - coord);\n float dist = length(vec2(dir.x, dir.y * aspect));\n\n float radianStep = uRadian;\n if (radius >= 0.0 && dist > radius) {\n float delta = dist - radius;\n float gap = gradient;\n float scale = 1.0 - abs(delta / gap);\n if (scale <= 0.0) {\n finalColor = color;\n return;\n }\n radianStep *= scale;\n }\n radianStep /= float(k);\n\n float s = sin(radianStep);\n float c = cos(radianStep);\n mat2 rotationMatrix = mat2(vec2(c, -s), vec2(s, c));\n\n for(int i = 0; i < MAX_KERNEL_SIZE - 1; i++) {\n if (i == k) {\n break;\n }\n\n coord -= center;\n coord.y *= aspect;\n coord = rotationMatrix * coord;\n coord.y /= aspect;\n coord += center;\n\n vec4 sample = texture(uTexture, coord);\n\n // switch to pre-multiplied alpha to correctly blur transparent images\n // sample.rgb *= sample.a;\n\n color += sample;\n }\n\n finalColor = color / float(uKernelSize);\n}\n";init_globals();var source31="struct RadialBlurUniforms {\n uRadian: f32,\n uCenter: vec2<f32>,\n uKernelSize: f32,\n uRadius: f32,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> radialBlurUniforms : RadialBlurUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let uRadian = radialBlurUniforms.uRadian;\n let uCenter = radialBlurUniforms.uCenter;\n let uKernelSize = radialBlurUniforms.uKernelSize;\n let uRadius = radialBlurUniforms.uRadius;\n \n var returnColorOnly = false;\n\n if (uKernelSize == 0)\n {\n returnColorOnly = true;\n }\n\n let aspect: f32 = gfu.uInputSize.y / gfu.uInputSize.x;\n let center: vec2<f32> = uCenter.xy / gfu.uInputSize.xy;\n let gradient: f32 = uRadius / gfu.uInputSize.x * 0.3;\n let radius: f32 = uRadius / gfu.uInputSize.x - gradient * 0.5;\n let k: i32 = i32(uKernelSize - 1);\n\n var coord: vec2<f32> = uv;\n let dir: vec2<f32> = vec2<f32>(center - coord);\n let dist: f32 = length(vec2<f32>(dir.x, dir.y * aspect));\n\n var radianStep: f32 = uRadian;\n \n if (radius >= 0.0 && dist > radius)\n {\n let delta: f32 = dist - radius;\n let gap: f32 = gradient;\n let scale: f32 = 1.0 - abs(delta / gap);\n if (scale <= 0.0) {\n returnColorOnly = true;\n }\n radianStep *= scale;\n }\n\n radianStep /= f32(k);\n\n let s: f32 = sin(radianStep);\n let c: f32 = cos(radianStep);\n let rotationMatrix: mat2x2<f32> = mat2x2<f32>(vec2<f32>(c, -s), vec2<f32>(s, c));\n \n var color: vec4<f32> = textureSample(uTexture, uSampler, uv);\n let baseColor = vec4<f32>(color);\n\n let minK: i32 = min(i32(uKernelSize) - 1, MAX_KERNEL_SIZE - 1);\n\n for(var i: i32 = 0; i < minK; i += 1) \n {\n coord -= center;\n coord.y *= aspect;\n coord = rotationMatrix * coord;\n coord.y /= aspect;\n coord += center;\n let sample: vec4<f32> = textureSample(uTexture, uSampler, coord);\n // switch to pre-multiplied alpha to correctly blur transparent images\n // sample.rgb *= sample.a;\n color += sample;\n }\n\n return select(color / f32(uKernelSize), baseColor, returnColorOnly);\n}\n\nconst MAX_KERNEL_SIZE: i32 = 2048;",__defProp26=Object.defineProperty,__defNormalProp26=(t,r,n)=>r in t?__defProp26(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField26=(t,r,n)=>(__defNormalProp26(t,"symbol"!=typeof r?r+"":r,n),n),_RadialBlurFilter=class e extends Filter{constructor(...t){let r=t[0]??{};if("number"==typeof r){if(deprecation("6.0.0","RadialBlurFilter constructor params are now options object. See params: { angle, center, kernelSize, radius }"),r={angle:r},t[1]){let n="x"in t[1]?t[1].x:t[1][0],i="y"in t[1]?t[1].y:t[1][1];r.center={x:n,y:i}}t[2]&&(r.kernelSize=t[2]),t[3]&&(r.radius=t[3])}r={...e.DEFAULT_OPTIONS,...r},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source31,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment31,name:"radial-blur-filter"}),resources:{radialBlurUniforms:{uRadian:{value:0,type:"f32"},uCenter:{value:r.center,type:"vec2<f32>"},uKernelSize:{value:r.kernelSize,type:"i32"},uRadius:{value:r.radius,type:"f32"}}}}),__publicField26(this,"uniforms"),__publicField26(this,"_angle"),__publicField26(this,"_kernelSize"),this.uniforms=this.resources.radialBlurUniforms.uniforms,Object.assign(this,r)}_updateKernelSize(){this.uniforms.uKernelSize=0!==this._angle?this.kernelSize:0}get angle(){return this._angle}set angle(t){this._angle=t,this.uniforms.uRadian=t*Math.PI/180,this._updateKernelSize()}get center(){return this.uniforms.uCenter}set center(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uCenter=t}get centerX(){return this.center.x}set centerX(t){this.center.x=t}get centerY(){return this.center.y}set centerY(t){this.center.y=t}get kernelSize(){return this._kernelSize}set kernelSize(t){this._kernelSize=t,this._updateKernelSize()}get radius(){return this.uniforms.uRadius}set radius(t){this.uniforms.uRadius=t<0||t===1/0?-1:t}};__publicField26(_RadialBlurFilter,"DEFAULT_OPTIONS",{angle:0,center:{x:0,y:0},kernelSize:5,radius:-1}),init_globals(),init_globals();var fragment32="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform float uMirror;\nuniform float uBoundary;\nuniform vec2 uAmplitude;\nuniform vec2 uWavelength;\nuniform vec2 uAlpha;\nuniform float uTime;\nuniform vec2 uDimensions;\n\nuniform vec4 uInputSize;\nuniform vec4 uInputClamp;\n\nfloat rand(vec2 co) {\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nvoid main(void)\n{\n vec2 pixelCoord = vTextureCoord.xy * uInputSize.xy;\n vec2 coord = pixelCoord / uDimensions;\n\n if (coord.y < uBoundary) {\n finalColor = texture(uTexture, vTextureCoord);\n return;\n }\n\n float k = (coord.y - uBoundary) / (1. - uBoundary + 0.0001);\n float areaY = uBoundary * uDimensions.y / uInputSize.y;\n float v = areaY + areaY - vTextureCoord.y;\n float y = uMirror > 0.5 ? v : vTextureCoord.y;\n\n float _amplitude = ((uAmplitude.y - uAmplitude.x) * k + uAmplitude.x ) / uInputSize.x;\n float _waveLength = ((uWavelength.y - uWavelength.x) * k + uWavelength.x) / uInputSize.y;\n float _alpha = (uAlpha.y - uAlpha.x) * k + uAlpha.x;\n\n float x = vTextureCoord.x + cos(v * 6.28 / _waveLength - uTime) * _amplitude;\n x = clamp(x, uInputClamp.x, uInputClamp.z);\n\n vec4 color = texture(uTexture, vec2(x, y));\n\n finalColor = color * _alpha;\n}\n";init_globals();var source32="struct ReflectionUniforms {\n uMirror: f32,\n uBoundary: f32,\n uAmplitude: vec2<f32>,\n uWavelength: vec2<f32>,\n uAlpha: vec2<f32>,\n uTime: f32,\n uDimensions: vec2<f32>,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> reflectionUniforms : ReflectionUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let uDimensions: vec2<f32> = reflectionUniforms.uDimensions;\n let uBoundary: f32 = reflectionUniforms.uBoundary;\n let uMirror: bool = reflectionUniforms.uMirror > 0.5;\n let uAmplitude: vec2<f32> = reflectionUniforms.uAmplitude;\n let uWavelength: vec2<f32> = reflectionUniforms.uWavelength;\n let uAlpha: vec2<f32> = reflectionUniforms.uAlpha;\n let uTime: f32 = reflectionUniforms.uTime;\n\n let pixelCoord: vec2<f32> = uv * gfu.uInputSize.xy;\n let coord: vec2<f32> = pixelCoord /uDimensions;\n var returnColorOnly: bool = false;\n\n if (coord.y < uBoundary) {\n returnColorOnly = true;\n }\n\n let k: f32 = (coord.y - uBoundary) / (1. - uBoundary + 0.0001);\n let areaY: f32 = uBoundary * uDimensions.y / gfu.uInputSize.y;\n let v: f32 = areaY + areaY - uv.y;\n let y: f32 = select(uv.y, v, uMirror);\n\n let amplitude: f32 = ((uAmplitude.y - uAmplitude.x) * k + uAmplitude.x ) / gfu.uInputSize.x;\n let waveLength: f32 = ((uWavelength.y - uWavelength.x) * k + uWavelength.x) / gfu.uInputSize.y;\n let alpha: f32 = select((uAlpha.y - uAlpha.x) * k + uAlpha.x, 1., returnColorOnly);\n\n var x: f32 = uv.x + cos(v * 6.28 / waveLength - uTime) * amplitude;\n x = clamp(x, gfu.uInputClamp.x, gfu.uInputClamp.z);\n \n return textureSample(uTexture, uSampler, select(vec2<f32>(x, y), uv, returnColorOnly)) * alpha;\n}\n\nfn rand(co: vec2<f32>) -> f32 \n{\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}",__defProp27=Object.defineProperty,__defNormalProp27=(t,r,n)=>r in t?__defProp27(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField27=(t,r,n)=>(__defNormalProp27(t,"symbol"!=typeof r?r+"":r,n),n),_ReflectionFilter=class e extends Filter{constructor(t){t={...e.DEFAULT_OPTIONS,...t},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source32,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment32,name:"reflection-filter"}),resources:{reflectionUniforms:{uMirror:{value:+!!t.mirror,type:"f32"},uBoundary:{value:t.boundary,type:"f32"},uAmplitude:{value:t.amplitude,type:"vec2<f32>"},uWavelength:{value:t.waveLength,type:"vec2<f32>"},uAlpha:{value:t.alpha,type:"vec2<f32>"},uTime:{value:t.time,type:"f32"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"}}}}),__publicField27(this,"uniforms"),__publicField27(this,"time",0),this.uniforms=this.resources.reflectionUniforms.uniforms,Object.assign(this,t)}apply(t,r,n,i){this.uniforms.uDimensions[0]=r.frame.width,this.uniforms.uDimensions[1]=r.frame.height,this.uniforms.uTime=this.time,t.applyFilter(this,r,n,i)}get mirror(){return this.uniforms.uMirror>.5}set mirror(t){this.uniforms.uMirror=+!!t}get boundary(){return this.uniforms.uBoundary}set boundary(t){this.uniforms.uBoundary=t}get amplitude(){return Array.from(this.uniforms.uAmplitude)}set amplitude(t){this.uniforms.uAmplitude[0]=t[0],this.uniforms.uAmplitude[1]=t[1]}get amplitudeStart(){return this.uniforms.uAmplitude[0]}set amplitudeStart(t){this.uniforms.uAmplitude[0]=t}get amplitudeEnd(){return this.uniforms.uAmplitude[1]}set amplitudeEnd(t){this.uniforms.uAmplitude[1]=t}get waveLength(){return Array.from(this.uniforms.uWavelength)}set waveLength(t){this.uniforms.uWavelength[0]=t[0],this.uniforms.uWavelength[1]=t[1]}get wavelengthStart(){return this.uniforms.uWavelength[0]}set wavelengthStart(t){this.uniforms.uWavelength[0]=t}get wavelengthEnd(){return this.uniforms.uWavelength[1]}set wavelengthEnd(t){this.uniforms.uWavelength[1]=t}get alpha(){return Array.from(this.uniforms.uAlpha)}set alpha(t){this.uniforms.uAlpha[0]=t[0],this.uniforms.uAlpha[1]=t[1]}get alphaStart(){return this.uniforms.uAlpha[0]}set alphaStart(t){this.uniforms.uAlpha[0]=t}get alphaEnd(){return this.uniforms.uAlpha[1]}set alphaEnd(t){this.uniforms.uAlpha[1]=t}};__publicField27(_ReflectionFilter,"DEFAULT_OPTIONS",{mirror:!0,boundary:.5,amplitude:[0,20],waveLength:[30,100],alpha:[1,1],time:0}),init_globals(),init_globals();var fragment33="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec4 uInputSize;\nuniform vec2 uRed;\nuniform vec2 uGreen;\nuniform vec2 uBlue;\n\nvoid main(void)\n{\n float r = texture(uTexture, vTextureCoord + uRed/uInputSize.xy).r;\n float g = texture(uTexture, vTextureCoord + uGreen/uInputSize.xy).g;\n float b = texture(uTexture, vTextureCoord + uBlue/uInputSize.xy).b;\n float a = texture(uTexture, vTextureCoord).a;\n finalColor = vec4(r, g, b, a);\n}\n";init_globals();var source33="struct RgbSplitUniforms {\n uRed: vec2<f32>,\n uGreen: vec2<f32>,\n uBlue: vec3<f32>,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> rgbSplitUniforms : RgbSplitUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let r = textureSample(uTexture, uSampler, uv + vec2<f32>(rgbSplitUniforms.uRed.x / gfu.uInputSize.x, rgbSplitUniforms.uRed.y / gfu.uInputSize.y)).r;\n let g = textureSample(uTexture, uSampler, uv + vec2<f32>(rgbSplitUniforms.uGreen.x / gfu.uInputSize.x, rgbSplitUniforms.uGreen.y / gfu.uInputSize.y)).g;\n let b = textureSample(uTexture, uSampler, uv + vec2<f32>(rgbSplitUniforms.uBlue.x / gfu.uInputSize.x, rgbSplitUniforms.uBlue.y / gfu.uInputSize.y)).b;\n let a = textureSample(uTexture, uSampler, uv).a;\n return vec4<f32>(r, g, b, a);\n}\n",__defProp28=Object.defineProperty,__defNormalProp28=(t,r,n)=>r in t?__defProp28(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField28=(t,r,n)=>(__defNormalProp28(t,"symbol"!=typeof r?r+"":r,n),n),_RGBSplitFilter=class e extends Filter{constructor(...t){let r=t[0]??{};(Array.isArray(r)||"x"in r&&"y"in r)&&(deprecation("6.0.0","RGBSplitFilter constructor params are now options object. See params: { red, green, blue }"),r={red:r},void 0!==t[1]&&(r.green=t[1]),void 0!==t[2]&&(r.blue=t[2])),r={...e.DEFAULT_OPTIONS,...r},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source33,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment33,name:"rgb-split-filter"}),resources:{rgbSplitUniforms:{uRed:{value:r.red,type:"vec2<f32>"},uGreen:{value:r.green,type:"vec2<f32>"},uBlue:{value:r.blue,type:"vec2<f32>"}}}}),__publicField28(this,"uniforms"),this.uniforms=this.resources.rgbSplitUniforms.uniforms,Object.assign(this,r)}get red(){return this.uniforms.uRed}set red(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uRed=t}get redX(){return this.red.x}set redX(t){this.red.x=t}get redY(){return this.red.y}set redY(t){this.red.y=t}get green(){return this.uniforms.uGreen}set green(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uGreen=t}get greenX(){return this.green.x}set greenX(t){this.green.x=t}get greenY(){return this.green.y}set greenY(t){this.green.y=t}get blue(){return this.uniforms.uBlue}set blue(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uBlue=t}get blueX(){return this.blue.x}set blueX(t){this.blue.x=t}get blueY(){return this.blue.y}set blueY(t){this.blue.y=t}};__publicField28(_RGBSplitFilter,"DEFAULT_OPTIONS",{red:{x:-10,y:0},green:{x:0,y:10},blue:{x:0,y:0}}),init_globals(),init_globals();var fragment34="\nprecision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec2 uCenter;\nuniform float uTime;\nuniform float uSpeed;\nuniform vec4 uWave;\n\nuniform vec4 uInputSize;\nuniform vec4 uInputClamp;\n\nconst float PI = 3.14159;\n\nvoid main()\n{\n float uAmplitude = uWave[0];\n float uWavelength = uWave[1];\n float uBrightness = uWave[2];\n float uRadius = uWave[3];\n\n float halfWavelength = uWavelength * 0.5 / uInputSize.x;\n float maxRadius = uRadius / uInputSize.x;\n float currentRadius = uTime * uSpeed / uInputSize.x;\n\n float fade = 1.0;\n\n if (maxRadius > 0.0) {\n if (currentRadius > maxRadius) {\n finalColor = texture(uTexture, vTextureCoord);\n return;\n }\n fade = 1.0 - pow(currentRadius / maxRadius, 2.0);\n }\n\n vec2 dir = vec2(vTextureCoord - uCenter / uInputSize.xy);\n dir.y *= uInputSize.y / uInputSize.x;\n float dist = length(dir);\n\n if (dist <= 0.0 || dist < currentRadius - halfWavelength || dist > currentRadius + halfWavelength) {\n finalColor = texture(uTexture, vTextureCoord);\n return;\n }\n\n vec2 diffUV = normalize(dir);\n\n float diff = (dist - currentRadius) / halfWavelength;\n\n float p = 1.0 - pow(abs(diff), 2.0);\n\n // float powDiff = diff * pow(p, 2.0) * ( amplitude * fade );\n float powDiff = 1.25 * sin(diff * PI) * p * ( uAmplitude * fade );\n\n vec2 offset = diffUV * powDiff / uInputSize.xy;\n\n // Do clamp :\n vec2 coord = vTextureCoord + offset;\n vec2 clampedCoord = clamp(coord, uInputClamp.xy, uInputClamp.zw);\n vec4 color = texture(uTexture, clampedCoord);\n if (coord != clampedCoord) {\n color *= max(0.0, 1.0 - length(coord - clampedCoord));\n }\n\n // No clamp :\n // finalColor = texture(uTexture, vTextureCoord + offset);\n\n color.rgb *= 1.0 + (uBrightness - 1.0) * p * fade;\n\n finalColor = color;\n}\n";init_globals();var source34="\nstruct ShockWaveUniforms {\n uTime: f32,\n uOffset: vec2<f32>,\n uSpeed: f32,\n uWave: vec4<f32>,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> shockwaveUniforms : ShockWaveUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n\n let uTime = shockwaveUniforms.uTime;\n let uOffset = shockwaveUniforms.uOffset;\n let uSpeed = shockwaveUniforms.uSpeed;\n let uAmplitude = shockwaveUniforms.uWave[0];\n let uWavelength = shockwaveUniforms.uWave[1];\n let uBrightness = shockwaveUniforms.uWave[2];\n let uRadius = shockwaveUniforms.uWave[3];\n let halfWavelength: f32 = uWavelength * 0.5 / gfu.uInputSize.x;\n let maxRadius: f32 = uRadius / gfu.uInputSize.x;\n let currentRadius: f32 = uTime * uSpeed / gfu.uInputSize.x;\n var fade: f32 = 1.0;\n var returnColorOnly: bool = false;\n \n if (maxRadius > 0.0) {\n if (currentRadius > maxRadius) {\n returnColorOnly = true;\n }\n fade = 1.0 - pow(currentRadius / maxRadius, 2.0);\n }\n var dir: vec2<f32> = vec2<f32>(uv - uOffset / gfu.uInputSize.xy);\n dir.y *= gfu.uInputSize.y / gfu.uInputSize.x;\n\n let dist:f32 = length(dir);\n\n if (dist <= 0.0 || dist < currentRadius - halfWavelength || dist > currentRadius + halfWavelength) {\n returnColorOnly = true;\n }\n\n let diffUV: vec2<f32> = normalize(dir);\n let diff: f32 = (dist - currentRadius) / halfWavelength;\n let p: f32 = 1.0 - pow(abs(diff), 2.0);\n let powDiff: f32 = 1.25 * sin(diff * PI) * p * ( uAmplitude * fade );\n let offset: vec2<f32> = diffUV * powDiff / gfu.uInputSize.xy;\n // Do clamp :\n let coord: vec2<f32> = uv + offset;\n let clampedCoord: vec2<f32> = clamp(coord, gfu.uInputClamp.xy, gfu.uInputClamp.zw);\n\n var clampedColor: vec4<f32> = textureSample(uTexture, uSampler, clampedCoord);\n \n if (boolVec2(coord, clampedCoord)) \n {\n clampedColor *= max(0.0, 1.0 - length(coord - clampedCoord));\n }\n // No clamp :\n var finalColor = clampedColor;\n\n return select(finalColor, textureSample(uTexture, uSampler, uv), returnColorOnly);\n}\n\nfn boolVec2(x: vec2<f32>, y: vec2<f32>) -> bool\n{\n if (x.x == y.x && x.y == y.y)\n {\n return true;\n }\n \n return false;\n}\n\nconst PI: f32 = 3.14159265358979323846264;\n",__defProp29=Object.defineProperty,__defNormalProp29=(t,r,n)=>r in t?__defProp29(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField29=(t,r,n)=>(__defNormalProp29(t,"symbol"!=typeof r?r+"":r,n),n),_ShockwaveFilter=class e extends Filter{constructor(...t){let r=t[0]??{};(Array.isArray(r)||"x"in r&&"y"in r)&&(deprecation("6.0.0","ShockwaveFilter constructor params are now options object. See params: { center, speed, amplitude, wavelength, brightness, radius, time }"),r={center:r,...t[1]},void 0!==t[2]&&(r.time=t[2])),r={...e.DEFAULT_OPTIONS,...r},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source34,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment34,name:"shockwave-filter"}),resources:{shockwaveUniforms:{uTime:{value:r.time,type:"f32"},uCenter:{value:r.center,type:"vec2<f32>"},uSpeed:{value:r.speed,type:"f32"},uWave:{value:new Float32Array(4),type:"vec4<f32>"}}}}),__publicField29(this,"uniforms"),__publicField29(this,"time"),this.time=0,this.uniforms=this.resources.shockwaveUniforms.uniforms,Object.assign(this,r)}apply(t,r,n,i){this.uniforms.uTime=this.time,t.applyFilter(this,r,n,i)}get center(){return this.uniforms.uCenter}set center(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uCenter=t}get centerX(){return this.uniforms.uCenter.x}set centerX(t){this.uniforms.uCenter.x=t}get centerY(){return this.uniforms.uCenter.y}set centerY(t){this.uniforms.uCenter.y=t}get speed(){return this.uniforms.uSpeed}set speed(t){this.uniforms.uSpeed=t}get amplitude(){return this.uniforms.uWave[0]}set amplitude(t){this.uniforms.uWave[0]=t}get wavelength(){return this.uniforms.uWave[1]}set wavelength(t){this.uniforms.uWave[1]=t}get brightness(){return this.uniforms.uWave[2]}set brightness(t){this.uniforms.uWave[2]=t}get radius(){return this.uniforms.uWave[3]}set radius(t){this.uniforms.uWave[3]=t}};__publicField29(_ShockwaveFilter,"DEFAULT_OPTIONS",{center:{x:0,y:0},speed:500,amplitude:30,wavelength:160,brightness:1,radius:-1}),init_globals(),init_globals();var fragment35="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform sampler2D uMapTexture;\nuniform vec3 uColor;\nuniform float uAlpha;\nuniform vec2 uDimensions;\n\nuniform vec4 uInputSize;\n\nvoid main() {\n vec4 diffuseColor = texture(uTexture, vTextureCoord);\n vec2 lightCoord = (vTextureCoord * uInputSize.xy) / uDimensions;\n vec4 light = texture(uMapTexture, lightCoord);\n vec3 ambient = uColor.rgb * uAlpha;\n vec3 intensity = ambient + light.rgb;\n vec3 color = diffuseColor.rgb * intensity;\n finalColor = vec4(color, diffuseColor.a);\n}\n";init_globals();var source35="struct SimpleLightmapUniforms {\n uColor: vec3<f32>,\n uAlpha: f32,\n uDimensions: vec2<f32>,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> simpleLightmapUniforms : SimpleLightmapUniforms;\n@group(1) @binding(1) var uMapTexture: texture_2d<f32>;\n@group(1) @binding(2) var uMapSampler: sampler;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>,\n) -> @location(0) vec4<f32> {\n let uColor = simpleLightmapUniforms.uColor;\n let uAlpha = simpleLightmapUniforms.uAlpha;\n let uDimensions = simpleLightmapUniforms.uDimensions;\n\n let diffuseColor: vec4<f32> = textureSample(uTexture, uSampler, uv);\n let lightCoord: vec2<f32> = (uv * gfu.uInputSize.xy) / simpleLightmapUniforms.uDimensions;\n let light: vec4<f32> = textureSample(uMapTexture, uMapSampler, lightCoord);\n let ambient: vec3<f32> = uColor * uAlpha;\n let intensity: vec3<f32> = ambient + light.rgb;\n let finalColor: vec3<f32> = diffuseColor.rgb * intensity;\n return vec4<f32>(finalColor, diffuseColor.a);\n}",__defProp30=Object.defineProperty,__defNormalProp30=(t,r,n)=>r in t?__defProp30(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField30=(t,r,n)=>(__defNormalProp30(t,"symbol"!=typeof r?r+"":r,n),n),_SimpleLightmapFilter=class e extends Filter{constructor(...t){let r=t[0]??{};if(r instanceof Texture&&(deprecation("6.0.0","SimpleLightmapFilter constructor params are now options object. See params: { lightMap, color, alpha }"),r={lightMap:r},void 0!==t[1]&&(r.color=t[1]),void 0!==t[2]&&(r.alpha=t[2])),!(r={...e.DEFAULT_OPTIONS,...r}).lightMap)throw Error("No light map texture source was provided to SimpleLightmapFilter");super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source35,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment35,name:"simple-lightmap-filter"}),resources:{simpleLightmapUniforms:{uColor:{value:new Float32Array(3),type:"vec3<f32>"},uAlpha:{value:r.alpha,type:"f32"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"}},uMapTexture:r.lightMap.source,uMapSampler:r.lightMap.source.style}}),__publicField30(this,"uniforms"),__publicField30(this,"_color"),__publicField30(this,"_lightMap"),this.uniforms=this.resources.simpleLightmapUniforms.uniforms,this._color=new Color,this.color=r.color??0,Object.assign(this,r)}apply(t,r,n,i){this.uniforms.uDimensions[0]=r.frame.width,this.uniforms.uDimensions[1]=r.frame.height,t.applyFilter(this,r,n,i)}get lightMap(){return this._lightMap}set lightMap(t){this._lightMap=t,this.resources.uMapTexture=t.source,this.resources.uMapSampler=t.source.style}get color(){return this._color.value}set color(t){this._color.setValue(t);let[r,n,i]=this._color.toArray();this.uniforms.uColor[0]=r,this.uniforms.uColor[1]=n,this.uniforms.uColor[2]=i}get alpha(){return this.uniforms.uAlpha}set alpha(t){this.uniforms.uAlpha=t}};__publicField30(_SimpleLightmapFilter,"DEFAULT_OPTIONS",{lightMap:Texture.WHITE,color:0,alpha:1}),init_globals(),init_globals();var fragment36="in vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec2 uBlur;\nuniform vec2 uStart;\nuniform vec2 uEnd;\nuniform vec2 uDelta;\nuniform vec2 uDimensions;\n\nfloat random(vec3 scale, float seed)\n{\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n}\n\nvoid main(void)\n{\n vec4 color = vec4(0.0);\n float total = 0.0;\n\n float blur = uBlur[0];\n float gradientBlur = uBlur[1];\n\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n vec2 normal = normalize(vec2(uStart.y - uEnd.y, uEnd.x - uStart.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vTextureCoord * uDimensions - uStart, normal)) / gradientBlur) * blur;\n\n for (float t = -30.0; t <= 30.0; t++)\n {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 sample = texture(uTexture, vTextureCoord + uDelta / uDimensions * percent * radius);\n sample.rgb *= sample.a;\n color += sample * weight;\n total += weight;\n }\n\n color /= total;\n color.rgb /= color.a + 0.00001;\n\n finalColor = color;\n}\n";init_globals();var source36="struct TiltShiftUniforms {\n uBlur: vec2<f32>,\n uStart: vec2<f32>,\n uEnd: vec2<f32>,\n uDelta: vec2<f32>,\n uDimensions: vec2<f32>,\n};\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> tiltShiftUniforms : TiltShiftUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let uBlur = tiltShiftUniforms.uBlur[0];\n let uBlurGradient = tiltShiftUniforms.uBlur[1];\n let uStart = tiltShiftUniforms.uStart;\n let uEnd = tiltShiftUniforms.uEnd;\n let uDelta = tiltShiftUniforms.uDelta;\n let uDimensions = tiltShiftUniforms.uDimensions;\n\n var color: vec4<f32> = vec4<f32>(0.0);\n var total: f32 = 0.0;\n\n let offset: f32 = random(position, vec3<f32>(12.9898, 78.233, 151.7182), 0.0);\n let normal: vec2<f32> = normalize(vec2<f32>(uStart.y - uEnd.y, uEnd.x - uStart.x));\n let radius: f32 = smoothstep(0.0, 1.0, abs(dot(uv * uDimensions - uStart, normal)) / uBlurGradient) * uBlur;\n\n for (var t: f32 = -30.0; t <= 30.0; t += 1.0)\n {\n var percent: f32 = (t + offset - 0.5) / 30.0;\n var weight: f32 = 1.0 - abs(percent);\n var sample: vec4<f32> = textureSample(uTexture, uSampler, uv + uDelta / uDimensions * percent * radius);\n sample = vec4<f32>(sample.xyz * sample.a, sample.a); // multiply sample.rgb with sample.a\n color += sample * weight;\n total += weight;\n }\n\n color /= total;\n color = vec4<f32>(color.xyz / (color.a + 0.00001), color.a); // divide color.rgb by color.a + 0.00001\n\n return color;\n}\n\n\nfn random(position: vec4<f32>, scale: vec3<f32>, seed: f32) -> f32\n{\n return fract(sin(dot(position.xyz + seed, scale)) * 43758.5453 + seed);\n}",__defProp31=Object.defineProperty,__defNormalProp31=(t,r,n)=>r in t?__defProp31(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField31=(t,r,n)=>(__defNormalProp31(t,"symbol"!=typeof r?r+"":r,n),n),_TiltShiftAxisFilter=class e extends Filter{constructor(t){let{width:r,height:n}=ViewSystem.defaultOptions;t={...e.DEFAULT_OPTIONS,start:{x:0,y:n/2},end:{x:r,y:n/2},...t},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source36,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment36,name:"tilt-shift-axis-filter"}),resources:{tiltShiftUniforms:{uBlur:{value:new Float32Array([t.blur,t.gradientBlur]),type:"vec2<f32>"},uStart:{value:t.start,type:"vec2<f32>"},uEnd:{value:t.end,type:"vec2<f32>"},uDelta:{value:new Float32Array([0,0]),type:"vec2<f32>"},uDimensions:{value:new Float32Array([r,n]),type:"vec2<f32>"}}}}),__publicField31(this,"uniforms"),__publicField31(this,"_tiltAxis"),this.uniforms=this.resources.tiltShiftUniforms.uniforms,this._tiltAxis=t.axis}updateDimensions(t){let{uDimensions:r}=this.uniforms;r[0]=t.frame.width,r[1]=t.frame.height}updateDelta(){if(this.uniforms.uDelta[0]=0,this.uniforms.uDelta[1]=0,void 0===this._tiltAxis)return;let t=this.uniforms.uEnd,r=this.uniforms.uStart,n=t.x-r.x,i=t.y-r.y,a=Math.sqrt(n*n+i*i),o="vertical"===this._tiltAxis;this.uniforms.uDelta[0]=o?-i/a:n/a,this.uniforms.uDelta[1]=o?n/a:i/a}};__publicField31(_TiltShiftAxisFilter,"DEFAULT_OPTIONS",{blur:100,gradientBlur:600}),init_globals(),init_globals(),init_globals();var fragment37="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec2 uTwist;\nuniform vec2 uOffset;\nuniform vec4 uInputSize;\n\nvec2 mapCoord( vec2 coord )\n{\n coord *= uInputSize.xy;\n coord += uInputSize.zw;\n\n return coord;\n}\n\nvec2 unmapCoord( vec2 coord )\n{\n coord -= uInputSize.zw;\n coord /= uInputSize.xy;\n\n return coord;\n}\n\nvec2 twist(vec2 coord)\n{\n coord -= uOffset;\n\n float dist = length(coord);\n float uRadius = uTwist[0];\n float uAngle = uTwist[1];\n\n if (dist < uRadius)\n {\n float ratioDist = (uRadius - dist) / uRadius;\n float angleMod = ratioDist * ratioDist * uAngle;\n float s = sin(angleMod);\n float c = cos(angleMod);\n coord = vec2(coord.x * c - coord.y * s, coord.x * s + coord.y * c);\n }\n\n coord += uOffset;\n\n return coord;\n}\n\nvoid main(void)\n{\n vec2 coord = mapCoord(vTextureCoord);\n coord = twist(coord);\n coord = unmapCoord(coord);\n finalColor = texture(uTexture, coord);\n}\n";init_globals();var source37="struct TwistUniforms {\n uTwist:vec2<f32>,\n uOffset:vec2<f32>,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> twistUniforms : TwistUniforms;\n\n@fragment\nfn mainFragment(\n @location(0) uv: vec2<f32>,\n @builtin(position) position: vec4<f32>\n) -> @location(0) vec4<f32> {\n return textureSample(uTexture, uSampler, unmapCoord(twist(mapCoord(uv))));\n}\n\nfn mapCoord(coord: vec2<f32> ) -> vec2<f32>\n{\n var mappedCoord: vec2<f32> = coord;\n mappedCoord *= gfu.uInputSize.xy;\n mappedCoord += gfu.uOutputFrame.xy;\n return mappedCoord;\n}\n\nfn unmapCoord(coord: vec2<f32> ) -> vec2<f32>\n{\n var mappedCoord: vec2<f32> = coord;\n mappedCoord -= gfu.uOutputFrame.xy;\n mappedCoord /= gfu.uInputSize.xy;\n return mappedCoord;\n}\n\nfn twist(coord: vec2<f32>) -> vec2<f32>\n{\n var twistedCoord: vec2<f32> = coord;\n let uRadius = twistUniforms.uTwist[0];\n let uAngle = twistUniforms.uTwist[1];\n let uOffset = twistUniforms.uOffset;\n\n twistedCoord -= uOffset;\n \n let dist = length(twistedCoord);\n\n if (dist < uRadius)\n {\n let ratioDist: f32 = (uRadius - dist) / uRadius;\n let angleMod: f32 = ratioDist * ratioDist * uAngle;\n let s: f32 = sin(angleMod);\n let c: f32 = cos(angleMod);\n twistedCoord = vec2<f32>(twistedCoord.x * c - twistedCoord.y * s, twistedCoord.x * s + twistedCoord.y * c);\n }\n\n twistedCoord += uOffset;\n return twistedCoord;\n}\n",__defProp32=Object.defineProperty,__defNormalProp32=(t,r,n)=>r in t?__defProp32(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField32=(t,r,n)=>(__defNormalProp32(t,"symbol"!=typeof r?r+"":r,n),n),_TwistFilter=class e extends Filter{constructor(t){t={...e.DEFAULT_OPTIONS,...t},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source37,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment37,name:"twist-filter"}),resources:{twistUniforms:{uTwist:{value:[t.radius??0,t.angle??0],type:"vec2<f32>"},uOffset:{value:t.offset,type:"vec2<f32>"}}},...t}),__publicField32(this,"uniforms"),this.uniforms=this.resources.twistUniforms.uniforms}get radius(){return this.uniforms.uTwist[0]}set radius(t){this.uniforms.uTwist[0]=t}get angle(){return this.uniforms.uTwist[1]}set angle(t){this.uniforms.uTwist[1]=t}get offset(){return this.uniforms.uOffset}set offset(t){this.uniforms.uOffset=t}get offsetX(){return this.offset.x}set offsetX(t){this.offset.x=t}get offsetY(){return this.offset.y}set offsetY(t){this.offset.y=t}};__publicField32(_TwistFilter,"DEFAULT_OPTIONS",{padding:20,radius:200,angle:4,offset:{x:0,y:0}}),init_globals(),init_globals();var fragment38="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform float uStrength;\nuniform vec2 uCenter;\nuniform vec2 uRadii;\n\nuniform vec4 uInputSize;\n\nconst float MAX_KERNEL_SIZE = ${MAX_KERNEL_SIZE};\n\n// author: http://byteblacksmith.com/improvements-to-the-canonical-one-liner-glsl-rand-for-opengl-es-2-0/\nhighp float rand(vec2 co, float seed) {\n const highp float a = 12.9898, b = 78.233, c = 43758.5453;\n highp float dt = dot(co + seed, vec2(a, b)), sn = mod(dt, 3.14159);\n return fract(sin(sn) * c + seed);\n}\n\nvoid main() {\n float minGradient = uRadii[0] * 0.3;\n float innerRadius = (uRadii[0] + minGradient * 0.5) / uInputSize.x;\n\n float gradient = uRadii[1] * 0.3;\n float radius = (uRadii[1] - gradient * 0.5) / uInputSize.x;\n\n float countLimit = MAX_KERNEL_SIZE;\n\n vec2 dir = vec2(uCenter.xy / uInputSize.xy - vTextureCoord);\n float dist = length(vec2(dir.x, dir.y * uInputSize.y / uInputSize.x));\n\n float strength = uStrength;\n\n float delta = 0.0;\n float gap;\n if (dist < innerRadius) {\n delta = innerRadius - dist;\n gap = minGradient;\n } else if (radius >= 0.0 && dist > radius) { // radius < 0 means it's infinity\n delta = dist - radius;\n gap = gradient;\n }\n\n if (delta > 0.0) {\n float normalCount = gap / uInputSize.x;\n delta = (normalCount - delta) / normalCount;\n countLimit *= delta;\n strength *= delta;\n if (countLimit < 1.0)\n {\n gl_FragColor = texture(uTexture, vTextureCoord);\n return;\n }\n }\n\n // randomize the lookup values to hide the fixed number of samples\n float offset = rand(vTextureCoord, 0.0);\n\n float total = 0.0;\n vec4 color = vec4(0.0);\n\n dir *= strength;\n\n for (float t = 0.0; t < MAX_KERNEL_SIZE; t++) {\n float percent = (t + offset) / MAX_KERNEL_SIZE;\n float weight = 4.0 * (percent - percent * percent);\n vec2 p = vTextureCoord + dir * percent;\n vec4 sample = texture(uTexture, p);\n\n // switch to pre-multiplied alpha to correctly blur transparent images\n // sample.rgb *= sample.a;\n\n color += sample * weight;\n total += weight;\n\n if (t > countLimit){\n break;\n }\n }\n\n color /= total;\n // switch back from pre-multiplied alpha\n // color.rgb /= color.a + 0.00001;\n\n gl_FragColor = color;\n}\n";init_globals();var source38="struct ZoomBlurUniforms {\n uStrength:f32,\n uCenter:vec2<f32>,\n uRadii:vec2<f32>,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> zoomBlurUniforms : ZoomBlurUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let uStrength = zoomBlurUniforms.uStrength;\n let uCenter = zoomBlurUniforms.uCenter;\n let uRadii = zoomBlurUniforms.uRadii;\n\n let minGradient: f32 = uRadii[0] * 0.3;\n let innerRadius: f32 = (uRadii[0] + minGradient * 0.5) / gfu.uInputSize.x;\n\n let gradient: f32 = uRadii[1] * 0.3;\n let radius: f32 = (uRadii[1] - gradient * 0.5) / gfu.uInputSize.x;\n\n let MAX_KERNEL_SIZE: f32 = ${MAX_KERNEL_SIZE};\n\n var countLimit: f32 = MAX_KERNEL_SIZE;\n\n var dir: vec2<f32> = vec2<f32>(uCenter / gfu.uInputSize.xy - uv);\n let dist: f32 = length(vec2<f32>(dir.x, dir.y * gfu.uInputSize.y / gfu.uInputSize.x));\n\n var strength: f32 = uStrength;\n\n var delta: f32 = 0.0;\n var gap: f32;\n\n if (dist < innerRadius) {\n delta = innerRadius - dist;\n gap = minGradient;\n } else if (radius >= 0.0 && dist > radius) { // radius < 0 means it's infinity\n delta = dist - radius;\n gap = gradient;\n }\n\n var returnColorOnly: bool = false;\n\n if (delta > 0.0) {\n let normalCount: f32 = gap / gfu.uInputSize.x;\n delta = (normalCount - delta) / normalCount;\n countLimit *= delta;\n strength *= delta;\n \n if (countLimit < 1.0)\n {\n returnColorOnly = true;;\n }\n }\n\n // randomize the lookup values to hide the fixed number of samples\n let offset: f32 = rand(uv, 0.0);\n\n var total: f32 = 0.0;\n var color: vec4<f32> = vec4<f32>(0.);\n\n dir *= strength;\n\n for (var t = 0.0; t < MAX_KERNEL_SIZE; t += 1.0) {\n let percent: f32 = (t + offset) / MAX_KERNEL_SIZE;\n let weight: f32 = 4.0 * (percent - percent * percent);\n let p: vec2<f32> = uv + dir * percent;\n let sample: vec4<f32> = textureSample(uTexture, uSampler, p);\n \n if (t < countLimit)\n {\n color += sample * weight;\n total += weight;\n }\n }\n\n color /= total;\n\n return select(color, textureSample(uTexture, uSampler, uv), returnColorOnly);\n}\n\nfn modulo(x: f32, y: f32) -> f32\n{\n return x - y * floor(x/y);\n}\n\n// author: http://byteblacksmith.com/improvements-to-the-canonical-one-liner-glsl-rand-for-opengl-es-2-0/\nfn rand(co: vec2<f32>, seed: f32) -> f32\n{\n let a: f32 = 12.9898;\n let b: f32 = 78.233;\n let c: f32 = 43758.5453;\n let dt: f32 = dot(co + seed, vec2<f32>(a, b));\n let sn: f32 = modulo(dt, 3.14159);\n return fract(sin(sn) * c + seed);\n}",__defProp33=Object.defineProperty,__defNormalProp33=(t,r,n)=>r in t?__defProp33(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField33=(t,r,n)=>(__defNormalProp33(t,"symbol"!=typeof r?r+"":r,n),n),_ZoomBlurFilter=class e extends Filter{constructor(t){let r=(t={...e.DEFAULT_OPTIONS,...t}).maxKernelSize??32;super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source38.replace("${MAX_KERNEL_SIZE}",r.toFixed(1)),entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment38.replace("${MAX_KERNEL_SIZE}",r.toFixed(1)),name:"zoom-blur-filter"}),resources:{zoomBlurUniforms:{uStrength:{value:t.strength,type:"f32"},uCenter:{value:t.center,type:"vec2<f32>"},uRadii:{value:new Float32Array(2),type:"vec2<f32>"}}}}),__publicField33(this,"uniforms"),this.uniforms=this.resources.zoomBlurUniforms.uniforms,Object.assign(this,t)}get strength(){return this.uniforms.uStrength}set strength(t){this.uniforms.uStrength=t}get center(){return this.uniforms.uCenter}set center(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uCenter=t}get centerX(){return this.uniforms.uCenter.x}set centerX(t){this.uniforms.uCenter.x=t}get centerY(){return this.uniforms.uCenter.y}set centerY(t){this.uniforms.uCenter.y=t}get innerRadius(){return this.uniforms.uRadii[0]}set innerRadius(t){this.uniforms.uRadii[0]=t}get radius(){return this.uniforms.uRadii[1]}set radius(t){this.uniforms.uRadii[1]=t<0||t===1/0?-1:t}};__publicField33(_ZoomBlurFilter,"DEFAULT_OPTIONS",{strength:.1,center:{x:0,y:0},innerRadius:0,radius:-1,maxKernelSize:32});var import_jsx_runtime4=__toESM(require_jsx_runtime()),itemFillAlpha=.4,highlightAlpha=.4,pointRadius=10,pointMarkForItem=(t,r)=>{let[n,i]=t,a=highlightColorForType("element"),o=new Graphics;return o.beginFill(a,itemFillAlpha),o.drawCircle(n,i,pointRadius),o.endFill(),o},rectMarkForItem=(t,r,n)=>{let i,{left:a,top:o,width:s,height:l}=t;i="element"===n?colorForName(r):highlightColorForType("searchArea"===n?"searchArea":"element");let u="highlight"===n?highlightAlpha:itemFillAlpha,d=new Graphics;if(d.beginFill(i,u),d.lineStyle(1,i,1),d.drawRect(a,o,s,l),d.endFill(),d.filters=[new DropShadowFilter({blur:2,quality:3,alpha:.4,offset:{x:4,y:4},color:3355443})],!r)return[d];let c=new Text2(r,{fontSize:18,fill:0});return c.x=a,c.y=Math.max(o-22,0),[d,c]},Blackboard=t=>{let r=t.highlightElements||[],n=r.map(t=>t.id),i=t.highlightRect,a=t.highlightPoints,o=t.uiContext,{size:s,screenshotBase64:l}=o,u=s.width,d=s.height,c=(0,import_react5.useRef)(null),h=(0,import_react5.useMemo)(()=>new Application,[]),[f,p]=(0,import_react5.useState)(!1),m=(0,import_react5.useMemo)(()=>new Container,[]),g=(0,import_react5.useMemo)(()=>new Container,[]),[b,y]=(0,import_react5.useState)(null),_=(0,import_react5.useRef)(void 0),{markerVisible:v,setMarkerVisible:A,elementsVisible:w,setTextsVisible:x}=useBlackboardPreference();(0,import_react5.useEffect)(()=>(Promise.resolve((async()=>{if(!c.current||!u)return;await h.init({width:u,height:d,background:0xffffff});let t=c.current;c.current.appendChild(h.canvas);let{clientWidth:r}=c.current.parentElement,n=.6*window.innerHeight;if(u/d<=r/n){let r=n/d;t.style.width=`${Math.floor(u*r)}px`,t.style.height=`${Math.floor(d*r)}px`}h.stage.addChild(m),h.stage.addChild(g),p(!0)})()),()=>{import_console_browserify.default.log("will destroy");try{h.destroy(!0,{children:!0,texture:!0})}catch(t){import_console_browserify.default.warn("destroy failed",t)}}),[h,u,d]),(0,import_react5.useEffect)(()=>{if(f)return h.stage.eventMode="static",h.stage.hitArea=new Rectangle(0,0,u,d),h.stage.on("click",r=>{import_console_browserify.default.log("pixi click",r);let{x:n,y:i}=r.data.global;t.onCanvasClick?.([Math.round(n),Math.round(i)])}),()=>{h?.stage?.off("click")}},[f,t.onCanvasClick,u,d]),(0,import_react5.useEffect)(()=>{if(!f)return;let t=new Image;t.onload=()=>{if(!h.stage)return;let r=Texture.from(t),n=new Sprite(r);n.x=0,n.y=0,n.width=u,n.height=d,n.eventMode="passive",h.stage.addChildAt(n,0),_.current=n},t.onerror=t=>{import_console_browserify.default.error("load screenshot failed",t)},t.src=l},[h.stage,f,u,d]);let{highlightElementRects:E}=(0,import_react5.useMemo)(()=>{if(m.removeChildren(),g.removeChildren(),m.eventMode="passive",g.eventMode="passive",i){let[t]=rectMarkForItem(i,"Search Area","searchArea");m.addChild(t)}return r.length&&r.forEach(t=>{let{rect:r,content:n,id:i}=t,[a]=rectMarkForItem(r,n,"highlight");m.addChild(a)}),a?.length&&a.forEach(t=>{let r=pointMarkForItem(t,"highlightPoint");m.addChild(r)}),(0,import_extractor2.treeToList)(o.tree).forEach(t=>{let{rect:r,content:i,id:a}=t;if(n.includes(a)||b?.id===a)return;let[o]=rectMarkForItem(r,i,"element");g.addChild(o)}),g.visible=w,{highlightElementRects:[]}},[h,f,r,o.tree,b,i,a]),S=null;return 1===E.length?S=(0,import_jsx_runtime4.jsx)("div",{className:"bottom-tip",children:(0,import_jsx_runtime4.jsxs)("div",{className:"bottom-tip-item",children:["Element: ",JSON.stringify(E[0])]})}):E.length>1&&(S=(0,import_jsx_runtime4.jsx)("div",{className:"bottom-tip",children:(0,import_jsx_runtime4.jsxs)("div",{className:"bottom-tip-item",children:["Element: ",JSON.stringify(E)]})})),(0,import_jsx_runtime4.jsxs)("div",{className:"blackboard",children:[(0,import_jsx_runtime4.jsx)("div",{className:"blackboard-main-content",style:{width:"100%"},ref:c}),(0,import_jsx_runtime4.jsx)("div",{className:"blackboard-filter",style:{display:t.hideController?"none":"block"},children:(0,import_jsx_runtime4.jsx)("div",{className:"overlay-control",children:(0,import_jsx_runtime4.jsx)(import_antd2.Checkbox,{checked:w,onChange:t=>{x(t.target.checked),g.visible=t.target.checked},children:"Elements"})})}),(0,import_jsx_runtime4.jsx)("div",{className:"bottom-tip",style:{display:t.hideController?"none":"block"},children:S})]})},blackboard_default=Blackboard;init_globals();var globalTextureMap=new Map,loadTexture=async t=>{if(!globalTextureMap.has(t))return Assets.load(t).then(r=>{globalTextureMap.set(t,r)})},getTextureFromCache=t=>globalTextureMap.get(t),import_jsx_runtime5=__toESM(require_jsx_runtime()),canvasPaddingLeft=0,canvasPaddingTop=0,cubicBezier=(t,r,n,i,a)=>{let o=1-t;return r*o*o*o+3*n*t*o*o+3*i*t*t*o+a*t*t*t},cubicImage=t=>linear(t),cubicInsightElement=t=>cubicBezier(t,0,.5,.5,1),cubicMouse=t=>linear(t),linear=t=>t,sleep=t=>new Promise(r=>setTimeout(r,t)),ERROR_FRAME_CANCEL="frame cancel (this is an error on purpose)",frameKit=()=>{let t=!1;return{frame:r=>{if(t)throw Error(ERROR_FRAME_CANCEL);requestAnimationFrame(()=>{if(t)throw Error(ERROR_FRAME_CANCEL);r(performance.now())})},timeout:(r,n)=>{if(t)throw Error(ERROR_FRAME_CANCEL);setTimeout(()=>{if(t)throw Error(ERROR_FRAME_CANCEL);r()},n)},cancel:()=>{t=!0}}},singleElementFadeInDuration=80,LAYER_ORDER_IMG=0,LAYER_ORDER_INSIGHT=1,LAYER_ORDER_POINTER=2,LAYER_ORDER_SPINNING_POINTER=3,downloadReport=t=>{let r=new Blob([t],{type:"text/html"}),n=URL.createObjectURL(r),i=document.createElement("a");i.href=n,i.download="midscene_report.html",i.click()},RecordingSession=class{constructor(t){__publicField(this,"canvas"),__publicField(this,"mediaRecorder",null),__publicField(this,"chunks"),__publicField(this,"recording",!1),this.canvas=t,this.chunks=[]}start(){let t=new MediaRecorder(this.canvas.captureStream(60),{mimeType:"video/webm"});return t.ondataavailable=t=>{t.data.size>0&&this.chunks.push(t.data)},this.mediaRecorder=t,this.recording=!0,this.mediaRecorder.start()}stop(){this.recording&&this.mediaRecorder?(this.mediaRecorder.onstop=()=>{let t=new Blob(this.chunks,{type:"video/webm"}),r=URL.createObjectURL(t),n=document.createElement("a");n.href=r,n.download="midscene_replay.webm",n.click(),URL.revokeObjectURL(r)},this.mediaRecorder?.stop(),this.recording=!1,this.mediaRecorder=null):import_console_browserify.default.warn("not recording")}};function Player(t){let r,[n,i]=(0,import_react6.useState)(""),[a,o]=(0,import_react6.useState)(""),s=t?.replayScripts,l=t?.imageWidth||1920,u=t?.imageHeight||1080,d=t?.fitMode||"height",c=(0,import_react6.useRef)(s?.[0]?.img||null),h=(0,import_react6.useRef)(null),f=(0,import_react6.useMemo)(()=>new Application,[]),p=(0,import_react6.useRef)(null),m=(0,import_react6.useRef)(null),[g,b]=(0,import_react6.useState)(0),y=()=>{b(Date.now())},_=(0,import_react6.useMemo)(()=>new Container,[]),v=(0,import_react6.useMemo)(()=>{let t=new Container;return t.zIndex=LAYER_ORDER_INSIGHT,t},[]),A={left:0,top:0,width:l,pointerLeft:Math.round(l/2),pointerTop:Math.round(u/2)},[w,x]=(0,import_react6.useState)(-1),E=(0,import_react6.useRef)(!1);(0,import_react6.useEffect)(()=>(E.current=!1,()=>{E.current=!0}),[]);let S=(0,import_react6.useRef)({...A}),C=async()=>{let t=c.current;if(!t)return void import_console_browserify.default.warn("no image to update");getTextureFromCache(t)||(import_console_browserify.default.warn("image not loaded",t),await loadTexture(t));let r=getTextureFromCache(t);if(!r)throw Error("texture not found");let n=Sprite.from(r);if(!n)throw Error("sprite not found");let i="main-img",a=_.getChildByLabel(i);a&&_.removeChild(a),n.label=i,n.zIndex=LAYER_ORDER_IMG,n.width=l,n.height=u,_.addChild(n)},I=t=>{let r;m.current||(m.current=Sprite.from(mouseLoading),m.current.zIndex=LAYER_ORDER_SPINNING_POINTER,m.current.anchor.set(.5,.5),m.current.scale.set(.5),m.current.label="spinning-pointer"),m.current.x=p.current?.x||0,m.current.y=p.current?.y||0,_.addChild(m.current);let n=!1,i=a=>{if(n)return;r||(r=a);let o=(Math.sin((a-r)/500-Math.PI/2)+1)/2*Math.PI*2;m.current&&(m.current.rotation=o),t(i)};return t(i),()=>{m.current&&_.removeChild(m.current),n=!0}},T=async(t,r,n)=>{getTextureFromCache(t)||(import_console_browserify.default.warn("image not loaded",t),await loadTexture(t));let i=getTextureFromCache(t);if(!i)throw Error("texture not found");let a=Sprite.from(i),o=p.current?.x,s=p.current?.y;if("number"==typeof r&&(o=r),"number"==typeof n&&(s=n),void 0!==o&&void 0!==s){if(p.current){let t=_.getChildByLabel("pointer");t&&_.removeChild(t)}p.current=a,p.current.x=o,p.current.y=s,p.current.label="pointer",p.current.zIndex=LAYER_ORDER_POINTER,_.addChild(p.current)}else import_console_browserify.default.warn("invalid pointer position",r,n)},k=t=>{S.current=t;let r=Math.max(1,l/t.width);_.scale.set(r),_.x=Math.round(canvasPaddingLeft-t.left*r),_.y=Math.round(canvasPaddingTop-t.top*r);let n=_.getChildByLabel("pointer");n&&(n.scale.set(1/r),"number"==typeof t.pointerLeft&&"number"==typeof t.pointerTop&&(n.x=t.pointerLeft,n.y=t.pointerTop))},P=async(t,r,n)=>{let i={...S.current},a=i.left,o=i.top,s=i.pointerLeft,d=i.pointerTop,c=i.width/l,h=performance.now(),f="number"==typeof t.pointerLeft&&"number"==typeof t.pointerTop&&(t.pointerLeft!==s||t.pointerTop!==d),p=f?.375*r:0,m=p,g=r-p;await new Promise(i=>{let b=y=>{let _={...S.current},v=y-h;if(f)if(v<=p){let r=cubicMouse(Math.min(v/p,1));_.pointerLeft=s+(t.pointerLeft-s)*r,_.pointerTop=d+(t.pointerTop-d)*r}else _.pointerLeft=t.pointerLeft,_.pointerTop=t.pointerTop;if(v>m){let r=cubicImage(Math.min((v-m)/g,1)),n=c+(t.width/l-c)*r,i=l*n,s=u*n;_.width=i;let d=a+(t.left-a)*r,h=o+(t.top-o)*r,f=d+i-l,p=h+s-u;_.left=f>0?d+f:d,_.top=p>0?h+p:h}k(_),v<r?n(b):i()};n(b)})},R=(t,r,n,i=1)=>new Promise(a=>{let o=performance.now(),s=l=>{let u=l-o,d=Math.min(u/r,1);t.alpha=0===i?1-linear(d):linear(d),u<r?n(s):a()};n(s)}),O=async(t,r,n)=>R(t,r,n,0),M=async(t,r,n,i,a)=>{v.removeChildren();let o=[...t],s=o.length,l=0;await new Promise(t=>{let u=performance.now(),d=c=>{let h=c-u,f=Math.floor(cubicInsightElement(Math.min(h/i,1))*s);for(;l<f;){let t=Math.floor(Math.random()*o.length),r=o.splice(t,1)[0];if(r){let[t]=rectMarkForItem(r.rect,r.content,"element");t.alpha=0,v.addChild(t),l++,R(t,singleElementFadeInDuration,a)}}if(h<i)a(d);else{for(;o.length>0;){let t=Math.floor(Math.random()*o.length),r=o.splice(t,1)[0],[n]=rectMarkForItem(r.rect,r.content,"element");n.alpha=1,v.addChild(n)}if(n){let[t]=rectMarkForItem(n,"Search Area","searchArea");t.alpha=1,v.addChild(t)}r.map(t=>{let[r]=rectMarkForItem(t.rect,t.content||"","highlight");r.alpha=1,v.addChild(r)}),t()}};a(d)})},[j,N]=(0,import_react6.useState)(!1),B=(0,import_react6.useRef)(null);(0,import_react6.useEffect)(()=>(Promise.resolve((async()=>{if(await (async()=>{h.current&&s&&(await f.init({width:l,height:u,background:0xf4f4f4,autoDensity:!0,antialias:!0}),h.current&&(h.current.appendChild(f.canvas),_.x=0,_.y=0,f.stage.addChild(_),v.x=0,v.y=0,_.addChild(v)))})(),h.current&&l&&u){let t=l/u;h.current.style.setProperty("--canvas-aspect-ratio",t.toString()),h.current.setAttribute("data-fit-mode",d);let r=h.current.closest(".player-container");r&&r.setAttribute("data-fit-mode",d)}y()})()),()=>{try{f.destroy(!0,{children:!0,texture:!0})}catch(t){import_console_browserify.default.warn("destroy failed",t)}}),[l,u,d]),(0,import_react6.useEffect)(()=>{if(g)return(()=>{let t;return Promise.resolve((async()=>{if(!f)throw Error("app is not initialized");if(!s)throw Error("scripts is required");let{frame:r,cancel:n,timeout:a}=frameKit();t=n;let d=s.filter(t=>!!t.img).map(t=>t.img);await Promise.all([...d,mouseLoading,mousePointer].map(loadTexture)),v.removeChildren(),await T(mousePointer,l/2,u/2),await C(),await k({...A});let h=s.reduce((t,r)=>t+r.duration+(r.camera&&r.insightCameraDuration?r.insightCameraDuration:0),0),p=performance.now();x(0);let m=()=>{let t=Math.min((performance.now()-p)/h,1);if(x(t),t<1)return a(m,200)};for(let t in r(m),B.current&&B.current.start(),s){let n=s[t];if(i(n.title||""),o(n.subTitle||""),"sleep"===n.type)await sleep(n.duration);else if("insight"===n.type){if(!n.img)throw Error("img is required");c.current=n.img,await C();let t=n.context?.tree?(0,import_extractor3.treeToList)(n.context.tree):[],i=n.highlightElement?[n.highlightElement]:[];if(await M(t,i,n.searchArea,n.duration,r),n.camera){if(!n.insightCameraDuration)throw Error("insightCameraDuration is required");await P(n.camera,n.insightCameraDuration,r)}}else if("clear-insight"===n.type)await O(v,n.duration,r),v.removeChildren(),v.alpha=1;else if("img"===n.type)n.img&&n.img!==c.current&&(c.current=n.img,await C()),n.camera?await P(n.camera,n.duration,r):await sleep(n.duration);else if("pointer"===n.type){if(!n.img)throw Error("pointer img is required");await T(n.img)}else if("spinning-pointer"===n.type){let t=I(r);await sleep(n.duration),t()}}B.current&&(B.current.stop(),B.current=null,N(!1))})().catch(t=>{import_console_browserify.default.error("player error",t)})),()=>{t?.()}})()},[g]);let[L,D]=(0,import_react6.useState)(!1),U=Math.round(100*w),F=0===w?"none":"0.3s",z=1===w;(0,import_react6.useEffect)(()=>{if(z){let t=t=>{" "===t.key&&y()};return window.addEventListener("keydown",t),()=>{window.removeEventListener("keydown",t)}}},[z]);let G=()=>{};return w<1?r=(0,import_jsx_runtime5.jsx)(import_antd3.Spin,{indicator:(0,import_jsx_runtime5.jsx)(import_icons3.LoadingOutlined,{spin:!0,color:"#333"}),size:"default"}):L?(r=(0,import_jsx_runtime5.jsx)(import_antd3.Spin,{indicator:(0,import_jsx_runtime5.jsx)(import_icons3.CaretRightOutlined,{color:"#333"}),size:"default"}),G=()=>y()):r=(0,import_jsx_runtime5.jsx)(import_antd3.Spin,{indicator:(0,import_jsx_runtime5.jsx)(import_icons3.CaretRightOutlined,{color:"#333"}),size:"default"}),(0,import_jsx_runtime5.jsxs)("div",{className:"player-container",children:[(0,import_jsx_runtime5.jsx)("div",{className:"canvas-container",ref:h}),(0,import_jsx_runtime5.jsx)("div",{className:"player-timeline-wrapper",children:(0,import_jsx_runtime5.jsx)("div",{className:"player-timeline",children:(0,import_jsx_runtime5.jsx)("div",{className:"player-timeline-progress",style:{width:`${U}%`,transition:F}})})}),(0,import_jsx_runtime5.jsx)("div",{className:"player-tools-wrapper",children:(0,import_jsx_runtime5.jsx)("div",{className:"player-tools",children:(0,import_jsx_runtime5.jsxs)("div",{className:"player-control",children:[(0,import_jsx_runtime5.jsxs)("div",{className:"status-text",children:[(0,import_jsx_runtime5.jsx)("div",{className:"title",children:n}),(0,import_jsx_runtime5.jsx)(import_antd3.Tooltip,{title:a,children:(0,import_jsx_runtime5.jsx)("div",{className:"subtitle",children:a})})]}),j?null:(0,import_jsx_runtime5.jsx)("div",{className:"status-icon",onMouseEnter:()=>D(!0),onMouseLeave:()=>D(!1),onClick:G,children:r}),t?.reportFileContent?(0,import_jsx_runtime5.jsx)(import_antd3.Tooltip,{title:"Download Report",children:(0,import_jsx_runtime5.jsx)("div",{className:"status-icon",onMouseEnter:()=>D(!0),onMouseLeave:()=>D(!1),onClick:()=>downloadReport(t.reportFileContent),children:(0,import_jsx_runtime5.jsx)(import_icons3.DownloadOutlined,{color:"#333"})})}):null,(0,import_jsx_runtime5.jsx)(import_antd3.Tooltip,{title:j?"Generating...":"Export Video",children:(0,import_jsx_runtime5.jsx)("div",{className:"status-icon",onClick:j?void 0:()=>{B.current?import_console_browserify.default.warn("recorderSession exists"):f.canvas?(B.current=new RecordingSession(f.canvas),N(!0),y()):import_console_browserify.default.warn("canvas is not initialized")},style:{opacity:j?.5:1,cursor:j?"not-allowed":"pointer"},children:j?(0,import_jsx_runtime5.jsx)(import_antd3.Spin,{size:"default",percent:U}):(0,import_jsx_runtime5.jsx)(import_icons3.ExportOutlined,{})})})]})})})]})}init_globals();var import_jsx_runtime6=__toESM(require_jsx_runtime()),ShinyText=({text:t,disabled:r=!1,speed:n=5,className:i=""})=>{let a={"--animation-duration":`${n}s`};return(0,import_jsx_runtime6.jsx)("div",{className:`shiny-text ${r?"disabled":""} ${i}`,style:a,children:t})},shiny_text_default=ShinyText;init_globals();var import_antd4=__webpack_require__(1542),import_jsx_runtime7=__toESM(require_jsx_runtime()),errorMessageServerNotReady=(0,import_jsx_runtime7.jsxs)("span",{children:["Don't worry, just one more step to launch the playground server.",(0,import_jsx_runtime7.jsx)("br",{}),"Please run one of the commands under the midscene project directory:",(0,import_jsx_runtime7.jsx)("br",{}),"a. ",(0,import_jsx_runtime7.jsx)("strong",{children:"npx midscene-playground"}),(0,import_jsx_runtime7.jsx)("br",{}),"b. ",(0,import_jsx_runtime7.jsx)("strong",{children:"npx --yes @midscene/web"})]}),serverLaunchTip=(t=errorMessageServerNotReady)=>(0,import_jsx_runtime7.jsx)("div",{className:"server-tip",children:(0,import_jsx_runtime7.jsx)(import_antd4.Alert,{message:"Playground Server Not Ready",description:t,type:"warning"})}),emptyResultTip=(0,import_jsx_runtime7.jsx)("div",{className:"result-empty-tip",style:{textAlign:"center"},children:(0,import_jsx_runtime7.jsx)(shiny_text_default,{disabled:!0,text:"The result will be shown here"})}),trackingTip="limit popup to current tab",deepThinkTip="deep think",import_jsx_runtime8=__toESM(require_jsx_runtime()),PlaygroundResultView=({result:t,loading:r,serverValid:n,serviceMode:i,replayScriptsInfo:a,replayCounter:o,loadingProgressText:s,verticalMode:l=!1,notReadyMessage:u,fitMode:d})=>{let c="result-wrapper";l&&(c+=" vertical-mode-result"),a&&l&&(c+=" result-wrapper-compact");let h=emptyResultTip;return n||"Server"!==i?r?h=(0,import_jsx_runtime8.jsxs)("div",{className:"loading-container",children:[(0,import_jsx_runtime8.jsx)(import_antd5.Spin,{spinning:r,indicator:(0,import_jsx_runtime8.jsx)(import_icons4.LoadingOutlined,{spin:!0})}),(0,import_jsx_runtime8.jsx)("div",{className:"loading-progress-text loading-progress-text-progress",children:(0,import_jsx_runtime8.jsx)(shiny_text_default,{text:s,speed:3})})]}):a?h=(0,import_jsx_runtime8.jsx)(Player,{replayScripts:a.scripts,imageWidth:a.width,imageHeight:a.height,reportFileContent:("In-Browser-Extension"===i||"Server"===i)&&t?.reportHTML?t?.reportHTML:null,fitMode:d},o):t?.error?h=(0,import_jsx_runtime8.jsx)("pre",{children:t?.error}):void 0!==t?.result&&(h="string"==typeof t?.result?(0,import_jsx_runtime8.jsx)("pre",{children:t?.result}):(0,import_jsx_runtime8.jsx)("pre",{children:JSON.stringify(t?.result,null,2)})):h=serverLaunchTip(u),(0,import_jsx_runtime8.jsx)("div",{className:c,style:{height:"100%",display:"flex",flexDirection:"column",flex:"1 1 auto"},children:h})};init_globals();var import_env10=__toESM(require_env()),import_antd6=__webpack_require__(1542),import_react7=__webpack_require__(4194),import_jsx_runtime9=__toESM(require_jsx_runtime()),TITLE_TEXT={Server:"Server Status","In-Browser":"In-Browser"},SWITCH_BUTTON_TEXT={Server:"Switch to In-Browser Mode","In-Browser":"Switch to Server Mode"},ServiceModeControl=({serviceMode:t})=>{let{setServiceMode:r,config:n}=useEnvConfig(),i=useServerValid("Server"===t);(0,import_react7.useEffect)(()=>{(0,import_env10.overrideAIConfig)(n),"Server"===t&&overrideServerConfig(n)},[n,t]);let a="Server"===t&&(i?(0,import_jsx_runtime9.jsx)(import_antd6.Tooltip,{title:"Connected",children:(0,import_jsx_runtime9.jsx)("div",{className:"server-tip",children:iconForStatus("connected")})}):(0,import_jsx_runtime9.jsx)(import_antd6.Tooltip,{title:"Connection failed",children:(0,import_jsx_runtime9.jsx)("div",{className:"server-tip",children:iconForStatus("failed")})})),o=TITLE_TEXT[t];return(0,import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment,{children:[(0,import_jsx_runtime9.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"10px"},children:[(0,import_jsx_runtime9.jsx)("h3",{style:{whiteSpace:"nowrap",margin:0,flexShrink:0},children:o}),a,(0,import_jsx_runtime9.jsx)(EnvConfig,{showTooltipWhenEmpty:"Server"!==t})]}),(0,import_jsx_runtime9.jsx)("div",{className:"switch-btn-wrapper",children:(()=>{let n="Server"===t?"In-Browser":"Server",i=SWITCH_BUTTON_TEXT[t];return(0,import_jsx_runtime9.jsx)(import_antd6.Tooltip,{title:(0,import_jsx_runtime9.jsxs)("span",{children:["Server Mode: send the request through the server ",(0,import_jsx_runtime9.jsx)("br",{}),"In-Browser Mode: send the request through the browser fetch API (The AI service should support CORS in this case)"]}),children:(0,import_jsx_runtime9.jsx)(import_antd6.Button,{type:"link",onClick:t=>{t.preventDefault(),r(n)},children:i})})})()})]})};init_globals();var import_antd7=__webpack_require__(1542),playground_demo_ui_context_default={content:[{content:"Swag Labs",rect:{left:895,top:38,width:130,height:32,zoom:1},center:[960,54],page:{page:{_isDragging:!1,_timeoutSettings:{}},pageType:"puppeteer"},locator:"",id:"d6c5e2f100",attributes:{nodeType:"TEXT Node"},indexId:0},{content:"Username",rect:{left:814,top:154,width:292,height:40,zoom:1},center:[960,174],page:{page:{_isDragging:!1,_timeoutSettings:{}},pageType:"puppeteer"},locator:"[_midscene_retrieve_task_id='a9021f480e']",id:"a9021f480e",attributes:{class:".input_error.form_input",placeholder:"Username",type:"text","data-test":"username",id:"user-name",name:"user-name",autocorrect:"off",autocapitalize:"none",htmlTagName:"<input>",nodeType:"FORM_ITEM Node"},indexId:1},{content:"Password",rect:{left:814,top:209,width:292,height:40,zoom:1},center:[960,229],page:{page:{_isDragging:!1,_timeoutSettings:{}},pageType:"puppeteer"},locator:"[_midscene_retrieve_task_id='580f3b761d']",id:"580f3b761d",attributes:{class:".input_error.form_input",placeholder:"Password",type:"password","data-test":"password",id:"password",name:"password",autocorrect:"off",autocapitalize:"none",htmlTagName:"<input>",nodeType:"FORM_ITEM Node"},indexId:2},{content:"",rect:{left:814,top:253,width:292,height:45,zoom:1},center:[960,275],page:{page:{_isDragging:!1,_timeoutSettings:{}},pageType:"puppeteer"},locator:"[_midscene_retrieve_task_id='3e1faf0fd6']",id:"3e1faf0fd6",attributes:{class:".error-message-container",nodeType:"CONTAINER Node"},indexId:3},{content:"Login",rect:{left:814,top:303,width:292,height:49,zoom:1},center:[960,327],page:{page:{_isDragging:!1,_timeoutSettings:{}},pageType:"puppeteer"},locator:"[_midscene_retrieve_task_id='6db0b64062']",id:"6db0b64062",attributes:{type:"submit",class:".submit-button.btn_action","data-test":"login-button",id:"login-button",name:"login-button",value:"Login",htmlTagName:"<input>",nodeType:"FORM_ITEM Node"},indexId:4},{content:"Accepted usernames are:",rect:{left:570,top:435,width:221,height:21,zoom:1},center:[680,445],page:{page:{_isDragging:!1,_timeoutSettings:{}},pageType:"puppeteer"},locator:"",id:"5ca36a5942",attributes:{nodeType:"TEXT Node"},indexId:5},{content:"standard_user",rect:{left:570,top:479,width:109,height:19,zoom:1},center:[624,488],page:{page:{_isDragging:!1,_timeoutSettings:{}},pageType:"puppeteer"},locator:"",id:"fd2fe54174",attributes:{nodeType:"TEXT Node"},indexId:6},{content:"locked_out_user",rect:{left:570,top:503,width:126,height:19,zoom:1},center:[633,512],page:{page:{_isDragging:!1,_timeoutSettings:{}},pageType:"puppeteer"},locator:"",id:"403daee75b",attributes:{nodeType:"TEXT Node"},indexId:7},{content:"problem_user",rect:{left:570,top:527,width:101,height:19,zoom:1},center:[620,536],page:{page:{_isDragging:!1,_timeoutSettings:{}},pageType:"puppeteer"},locator:"",id:"2b34f1e161",attributes:{nodeType:"TEXT Node"},indexId:8},{content:"performance_glitch_user",rect:{left:570,top:551,width:193,height:19,zoom:1},center:[666,560],page:{page:{_isDragging:!1,_timeoutSettings:{}},pageType:"puppeteer"},locator:"",id:"6ae63a4d9e",attributes:{nodeType:"TEXT Node"},indexId:9},{content:"error_user",rect:{left:570,top:575,width:84,height:19,zoom:1},center:[612,584],page:{page:{_isDragging:!1,_timeoutSettings:{}},pageType:"puppeteer"},locator:"",id:"76030282f1",attributes:{nodeType:"TEXT Node"},indexId:10},{content:"visual_user",rect:{left:570,top:599,width:92,height:19,zoom:1},center:[616,608],page:{page:{_isDragging:!1,_timeoutSettings:{}},pageType:"puppeteer"},locator:"",id:"f34b057726",attributes:{nodeType:"TEXT Node"},indexId:11},{content:"Password for all users:",rect:{left:960,top:435,width:221,height:21,zoom:1},center:[1070,445],page:{page:{_isDragging:!1,_timeoutSettings:{}},pageType:"puppeteer"},locator:"",id:"e693f608cd",attributes:{nodeType:"TEXT Node"},indexId:12},{content:"secret_sauce",rect:{left:960,top:477,width:101,height:19,zoom:1},center:[1010,486],page:{page:{_isDragging:!1,_timeoutSettings:{}},pageType:"puppeteer"},locator:"",id:"cde9de9828",attributes:{nodeType:"TEXT Node"},indexId:13}],size:{width:1920,height:1080},screenshotBase64:"data:image/png;base64,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8xecP25c2/qkSycuun/hzOuuG3nIiEcWLlz56xfbBgYAAIBPMwEagO3AQ4sW9evb9/h3q2tdXd2EsWN/8eCDlbeXfPOKsy+84OBhww4YMmTrb108YUJ9fd3Io46ccMklZ5xy6ueHD6+s9+nd1Kd3U9thu/bdpbFHQ1EUpVJp3uzZzzz/3NAv/uV5Ey+dMHbsgP79t23gqqqqAf37V1VVVd7W19f1/9znKq//dKedpl151Xev/96Bo7647De/mTJpUmW9saHhntvn/tfLr3xp9PGTp0z5m+OOG3/m2MpHN98255Irrjjh6GMuu+jCmbfOOXz06AcffnjbBgMAAIBPki04ANgObNq0afYP5559+uk/vvvuoihOPOaYt9ata9vxefkrLxdFsf7tt2u6dNn6W2vWvrnnwD0+22/Xp5Y8PeywUa2trR9+leqqqjETxv/n88/X1NQseeaZR375y6OOOOKaG25o359lwzvvbNmyZff+/ZcuW3b131+3Q8+epVKptbX1C8MPbm1tnXvXneVyefkrL9/xk5+cfPzxN82eVRTFaytWvPXWuqIofnD77Xf/9KftOw8AAADkCNAAbB9u/dGPLvzyOQcNPeDRxY+PGzPmlttu27Jly4d/ZcYPbimXSzdMndqvb99Fjz9+2ZWTX1q+/EOO39zcvN/gwdOnTOnevfuGDe/s1NT06muvtffPUbyxZs3Y888//eSTr7rs8tdXrZo1d26lMg8a+Bc79Oz5DzfNbDtyS3Pze767+Mkn230eAAAAyBGgAdg+rFq9+q5/vHfcmDFda2t3auoz9647P/IrfZqarp0x4+rrruvT1HTjtGu+dtFXzrrwgqIoVq5evc+gQZVjamtrBw0ceO+CBZXjr7zssr867rjnli6tbC29zdO+tW7dpk2b+u6888pVqyp7QBel3z29cIfGxueWvnD6+HO6VFePOvTQ22fe/PN/+edfL1u29MVlL7z44hEnjK4cVl9XX1fX9b3n/Yh7uAEAAODTxR7QAGw3Zt465/BRo75+8cVz75y3bv36tvVyuVwul4uiKJXL5XK59G7qnTxx4pRJk+rr6tesXbvmzbUtLS2V9V88+OCIgw46eNiwno2NE8+/4E+6daus79q3b9farpUzHHX4EYcceFDbJUqlUrlcLhWl37149xK/z8aNGx9+7LFxY8bs0Nh44P77/+2J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QoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoCE6ZwSAAAInUlEQVQGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIOJ/AFTldxexlFiCAAAAAElFTkSuQmCC",screenshotBase64WithElementMarker:"data:image/png;base64,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vn9Zpk27K62tozJ7ztxMn/5g9t9vdGruvufebGqvPQen5nOf/1K+9e2L06mpqTE77NAv+++3X0495eTstNNOebVd8J9fy/cvuSwvpl+/fvnhD76fTgfsv1923nmnPPXUghz+pqNyyCFvSEPXrrlj6rQ899zz+dAH359vf+fivJj9998v69evz2lnvCvDhg5J//79M/ePf8xTTy1IfX19vvPtr6d//x2yse2375NzPvyhfO0b38qnJ3w2l1z2g4wZ84YsXbI00+68MytWrMzee++V17/+oAAAALDtqA8AAADbjPr6+vznBV/Orrvskttu+02m3XlX7pg6LTU77NAvJ580Pp/8xL+nqakxmxq178jMn/9kRreOysZGj25NTV1dkZEjhmdTp/3TKVm3bl2+9/3LMvPhWZn58Kz06NEjb37TEfnSFz+bL37pq7n7nnuzqeOPPy5fvfCirF69JnvvtWcqlUqq1WqWr1iRRx+dlwcffCg/nXh1fnLl5Rk6dEheTU8//UyefvqZvJiVq1ZnY926dcvEn/w4Hz7n3Myc+XBuvPGm1AwevEc+8R8fT+uoUfn2dy7Oixm8x+4596Mfzoc/8i+597778/Cs2amrKzJy5Ii8591n5vUHH5QX8oEPvDfb990+3734kjz11IL87Gc/T0337t0zfvwJ+cynPpGGhoYAAACw7ags3rC6GgAAALZJq1atyh//9EgG7rxT+vXrl83tySf/kuUrVmTI3nunrq7I/+RTn/lsfvazn+ezEz6dU045ORtbt25dzj3v47nttt/kiMP/IRd/95vZWqxZsyZ//OMj2WWXgenTp3derjVr1uZPf/pTXve616W5uWdeio6Ojvz1r4uyYMGC9OnTJ7vuukuKoggAAADbnvoAAACwzerevXtGt47KlrLLLgPzUt1yy22pOfbYo7OphoaGfOB9Z+W2236TeY89lq1JU1NTRo0amVeqqakx++47Mi9HURQZMKB/BgzoHwAAALZtRQAAAGArtF2vXqmZPWduXsjDD89KzfB99gkAAADwX+oDAAAAW6Gjj/7HfOe738v73n92xh1zVIYP3yev221Q5sz9Y+6774Hc/pvfpq6uLm95y7EBAAAA/kt9AAAAYCv0kQ9/MGvWrMlPJ/4sP7v6mvzs6muysZ49e+Rb3/ha3vCGgwMAAAD8l/oAAADAVqhSqeTf/+1f84EPvDd3/GFqnn7mmSxduiyDBu2avffeK4P32CONjQ0BAAAA/j/1AQAAgK1YS3Nzxo07OgAAAMD/rggAAAAAAAAApVAEAAAAAAAAgFIoAgAAAAAAAEApFAEAAAAAAACgFIoAAAAAAAAAUApFAAAAAAAAACiFIgAAAAAAAACUQhEAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEIRAAAAAAAAAEqhCAAAAAAAAAClUAQAAAAAAACAUigCAAAAAAAAQCkUAQAAAAAAAKAUigAAAAAAAABQCkUAAAAAAAAAKIUiAAAAAAAAAJRCEQAAAAAAAABKoQgAAAAAAAAApVAEAAAAAAAAgFIoAgAAAAAAAEApFAEAAAAAAACgFIoAAAAAAAAAUApFAAAAAAAAACiFIgAAAAAAAACUQhEAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEJ9AAC2pPaOpK092dCRakdHAAAAyqhSFEl9kXStS+qKAABsKfUBANhS1qxPZUNHGhsb06WpS+rq6gIAAFBG7e3tWb9+fdauXptqfZE0dQkAwJZQHwCALWFVW7rU1adHr+YAAACUXV1dXerq6tLY2JiVq1Zl/aq2pHvXAABsbkUAADa3NevTpa4+Pbp3DwAAwLamR/fu6VJXn6xZHwCAza0IAMDm1N6RyoaO9OjePQAAANuqHt27p7KhI2nvCADA5lQEAGBzamtPY2NjAAAAtnWNjY1JW3sAADanIgAAm9OGjnTp0iUAAADbui5duiQbOgIAsDkVAQDYjKodHamrqwsAAMC2rq6uLtWOjgAAbE5FAAAAAAAAACiFIgAAAAAAAACUQhEAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEIRAAAAAAAAAEqhCAAAAAAAAAClUAQAAAAAAACAUigCAAAAAAAAQCkUAQAAAAAAAKAUigAAAAAAAABQCkUAAAAAAAAAKIUiAAAAAAAAAJRCEQAAAAAAAABKoQgAAAAAAAAApVAEAAAAAAAAgFIoAgAAAAAAAEApFAEAAAAAAACgFIoAAAAAAAAAUApFAAAAAAAAACiFIgAAAAAAAACUQhEAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohfoAAABsTSqVALymVKsBAADYWtQHAABga1OtBuA1oVIJAADA1qQIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEIRAAAAAAAAAEqhCAAAAAAAAAClUAQAAAAAAACAUigCAAAAAAAAQCkUAQAAAAAAAKAUigAAAAAAAABQCkUAAAAAAAAAKIUiAAAAAAAAAJRCfQAAADaXSiUAAAAAbDlFAAAAAAAAACiFIgAAAFtaS0uqjz2WjB2bl2L9+vX55je/meXLl2dT3/ve9/L0008HAAAAgKQIAADAltTSkup116Wy2255qarVap566qm0t7dnUwsXLsy6desCAAAAQFIfAACALWXs2GTSpFQCAAAAwOZQHwAAgC1l8uTk619PJk1KJk/Oq23x4sW59tprs2DBguywww45+OCDM2rUqHS66667cv/99+f555/PLrvskje96U0ZOHBgaiZOnJgRI0Zk7ty5mT17ds4777zccMMNGTFiRB566KE88sgj6dmzZ4444oiMHDkyne6+++5MnTo1K1asyIABA3LMMcdk4MCB6ejoyEUXXZSjjjoqt912W55//vnsvvvuOfnkk3PHHXdk+vTpqVQq2X///XPEEUek07x58/L73/8+Tz31VPr27ZuDDjooo0ePDgAAAMBLUR8AAIAtZdCgZP78ZOzYbA7XX399+vXrl3e+851ZsGBBLr/88uy+++5pbm7OnXfemXvuuSennnpqWlpaMmPGjFx22WX5yEc+kt69e2fx4sWZNGlSxowZk3e9611pamrK4sWLc91112X8+PF561vfmvvvvz8TJ07MwIED07t378yePTu//vWv8573vCc77rhj7r777lx22WX59Kc/nZpFixbl9ttvzzve8Y5s2LAhEydOzIUXXpghQ4bknHPOycKFC/PjH/84AwYMyLBhw/KXv/wlEydOzIknnpg99tgj8+bNyzXXXJOuXbtm+PDhAQAAAPjfFAEAANhS5s/P5lStVvPss89m8eLFGTRoUD75yU+mR48eqbnrrrtyxBFHpLm5OdVqNSNHjswOO+yQWbNmpdOQIUMyduzYDBw4MEVRpGafffbJkCFD0tjYmDe84Q3p0aNHnnzyydQMGDAgZ599dnbcccesWLEiQ4YMSVtbWxYuXJhORxxxRHr37p1+/fpl9OjRWb16dY477rh069Yte+yxRwYPHpzHH388NdOnT88+++yTXXfdNevXr88uu+yS1tbWPPDAAwEAAAB4KeoDAACwlSuKIkVRZMOGDdlYtVrNhg0b0qVLl9ScfPLJue222/KDH/wgGzZsSGtra4488sjU/PWvf80vf/nLtLS0ZGNtbW3p1L9//2xqhx12SKdKpZK+fftm5cqVqalUKvnFL36RZcuWpaWlJZVKJTVr1qxJp759+6bT9ttvn549e6axsTGdtt9++yxbtiw1Tz/9dB577LE88cQT2VivXr0CAAAA8FLUBwAAYCtXX1+fAQMGZOHChenbt286Pffcc6lUKunfv386OjqyZs2avOUtb0lRFHnuuedy2WWXpW/fvjnwwAPTt2/fHH/88dlzzz3Tqb29PZVKJZ2KosimKpVKXsztt9+eXr165X3ve19q1q5dmwkTJmRjRVFkY5VKJS+mX79+2XXXXXPUUUelU0dHRwAAAABeqiIAAACvASNGjMgtt9ySRYsWpWbVqlWZNGlShg4dmrq6ulQqlVx66aWZOnVqarbbbrt069Yt7e3tqRk1alRuueWWrFq1KjWPP/54JkyYkOeffz6v1Pr167N+/fpUq9V0dHTkxhtvTKVSySs1YsSI3HfffXnqqadSs3z58lxwwQWZPn16AAAAAF6K+gAAALwGvPGNb8yGDRvy3e9+Nx0dHeno6Mjw4cNz4oknpqZSqeS0007LxIkTM3ny5HR0dGTXXXdNa2trag4//PCsXbs2F1xwQerr69PR0ZG3ve1t6du3b16pN7/5zbn88svzuc99Lh0dHdl///3Tv3//vFJ77LFHxo0blx//+MepVqtZvXp1Dj300IwePToAAAAAL0V9AAAAXiPe9KY35U1velOWLVuWnj17piiKbGyXXXbJxz/+8axcuTL19fVpbGxMp0qlknHjxuXoo4/OihUr0tLSko198IMfzKY++MEPZlPvfe97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3LuXoyeO4xZcsSKB5ctzN0d+/pl8m437VbFCBZ576mkSkhLZtW8fQYGB+JYqxelz50jPyKBW9er4+fpyN7du3ebnX07g5elFo/r1+D0XL18m6eZN7kdxb2/atmlDGb/S7D6wn8tXr9KkUSNu3brNz7+cwM3L04snW7agauXKnDl3ngOHD5GXn8+dqlSqROcXXsBms3PyzBl27d+H0+nExTAMmjdpwt3cSEgg5upVCioXEMATjzfH38+Pn45GceLUKZxOJ3fzWMNGWCxmjhw7hsPhQET+2MUjUZisnoiIiIg8LKYUW44TERERkYfEmZ5LjaZNkP+vj5a8T6cOHVj+yUpCQkMRERH5b1azWjVK+/nR65VX6PbSy1y4dImW7doiIiL/08UjUZisnoiIiIg8LBZERERERERERP4N40aMpFOHDrjt3r8fERERERER+c+wICIiIiJ/uQvRFzlwuDRXrsYiIiLy3+7ipWgOHjmMS0xsLPOXLEZERERERET+MyyIiIiIyF9uwdKlLFi6FBERkcLg3Q8+4N0PPkBERERERET+8wxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERET+cmX8/WncoAEPk4eHB61btMBsNiMiIv+ddm/Z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QdGiRek/YgRff/sNNrudkLlzCZ0ylZBx40lNS2PuwoWMGjyEe3X5yhWGjBnD/BkzCBk3nhsJCcyYN4/+vXvj9s6iRaz+cAWXjh3n1u3bTJkzm0cbNsDthbZt+fSfy3Dr3qkTZ86d48mOL+DidDrp3r8fq5Yv59juPeTk5jJ+2jQWzpnDvcq32ZgZNp9Rg4cwa/LbnDh9irkL36NhvXq4ha9ZTYO6dTnw7XYsFgs5OTkMnzAep9OJS2JSEj0G9Gdp2LvMeXsKWdnZfLltK59Gfo5LKR8foo/+jFvixWhcqjZuRHpGBiIifxW73U58YgJ/JDklhT+Sk5vDvys5JYU/I3x1BGs3buBOdoeDO+Xk5pCTm8PvuZmczB9xOBwkp6byR+x2O8kpKfyR5JQURERERERE5OEzpdhynIiIiIg8JM70XGo0bcJ/mtlsxt+vNPGJCfwZFrOZ0n6liU9M4N9RtkwA8YkJ/J5yAQEkJCXhcDj4s/xLlyY1NRWb3U5Bn//rI557+mnutGrtWsZMnYKbYRiUslpJTk3l95jNZvz9ShOfmMDv8fP1JS09HbvdjoiIiIiI/P9dPBKFyeqJiIiIyMNiQURERORvwG63E5+YwJ9ls9uJT0zg3xWfmMAfuZGQwL8r6eZN7mbQW6MpWqQId7p1O4+CHA4Hyamp/BG73U58YgJ/JDklBREREREREREREflrWRARERGRv4Ws7GxERERERERERESkcDMQEREREREREREREREREZFCwUBERERERERERERERERERAoFAxERERERERERERERERERKRQMRERERERERERERERERESkUDAQEREREREREREREREREZFCwUBERERERERERERERERERAoFAxERERERERERERERERERKRQMRERERERERERERERERESkUDAQEREREREREREREREREZFCwUBERERERERERERERERERAoFAxEREZFCrE7t2rRu0YJ6jzzCw1Lc25tWzZvzoDVt3Bi/UqUQERERERERERERuVcGIiIiIoVYx7btGDloMJs/j2Rgnz48DFUqVWL9J5/yoC1fuJAmjR9FRERERERERERE5F5ZEBERESnE5i1ehMu7M2dRs1p15H/XuWNHalWvztyFCxEREREREREREZH/LhZERERE/gacODFhQv53zR9rwu28PEREREREREREROS/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2Wxw9PgJwldH4Fbaz4+lYe/SunlzihYtSv8RI/j622+4V6+/9hqjBg+hfNmynDh9im3ffUfDevXo9+abuFSrUoV506bzWKNGWMxmzkdH03/ECGKvxeHW+5XuTBw9ilJWH+KuX2f5Jyv5LDISlxfatuXTfy6joDPnzvFkxxcQEREREfm/7uKRKExWT0REREQeFlOKLceJiIiIyEPiTM+lRtMm/DfwL12a1NRUbHY7d+Pl6YVhmMjKzubP8vP1JS09Hbvdzt2ULFECu91Odk4OBQ3rP4BZkydzp8tXrtDs2WcoqGSJEthsdnJyc7gbT09PDJOJ7Jwc7lfsyVN4e3lxp0FvjWbTli24GYZBKauV5NRUfo+XpxfFPIqSkpbG7ynj709iUhIiIiIiIoXFxSNRmKyeiIiIiDwsFkRERETk/yfp5k3+SE5uDv+u5JQU/khGZiZ3E746grUbN3Anu8PBnTIyM/kjubm5/FkNW7fCxP+UlZ1NQQ6Hg+TUVP5ITm4OObk5/JHEpCRERERERERERETk3lkQERERkf/zbt++ze3bt/lPS01LQ0RERERERERERP7vMhARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgULIiIiIvJvqV2jBrm3bnH111+5m+Le3jRu0ACn08mps2dJS09HRERERERERERE5GGwICIiIiL/ljHD3+RK7FXmLlzI3fiXLs3IQYMp7edL2TIB1GnRHLvdjoiIiIiIiIiIiMiDZiAiIiIiD9WV2Fi6vt6Xrq+/Tmk/P3xLlUJERERERERERETkYTAQERERkb+E0+lERERERERERERE5GGyICIiIlKIbY1cy+TZs5g2YQKN6tXnl9OnmTJnNuejo3EJLF+edSs/4fbt28yYP4+eXbvR/tlnuBGfQLNnn8GluLc3oVND+McTT5Cfn893u3YxY9475OXn41aieAn+tWgxT7VqxZXYWN7/1wq27tjB/RjUty/dO3WmYmAgh48eZWbYfC7F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RERERERERAoFAxERERERERERERERERERKRQMRERERERERERERERERESkUDAQEREREREREREREREREZFCwUBERERERERERERERERERAoFAxERERERERERERERERERKRQMREREROSBKVq0KI8/9hitW7TAw8MDuX+B5cvTukULHn/sMYoWKcIfqVmtGkUsFh60IhYLrVu0oIjFgoiIiIiIiIiIyH8TAxERERF5IOo98ggXo47y7qzZTBk7FmvJksj9a1S/PiMHDWb5ewv51+Il/J4WTZtxYPsO3hw4iAfNarWyaVUEVqsVERERERERERGR/yYWREREROSB6NiuHTt27mTwmLeQP2/L9u1s2b6dl5/vwMRRo/g9p86e4cNPPmHLju38nt1bttDx1VfJzMpCRERERERERETk78CCiIiIiDwQ5cuWIyEpEXkwnE4nfyQzK4upoXP4PWX8/alTqzYmkwkREREREREREZG/CwsiIiIihdjWyLVMnj2LaRMm0KhefX45fZopc2ZzPjoat6DAQGZMmkTLps2IT0xk45bNvL9iBW5frV5DaT8/ItatxWIpwvD+/Snj70+dFs1JSEzkmX/8g5mTJlMuIACb3U6bJ/+BS5c+fYhPTMClVvXqhIwfT9PGj/LrtWt8vmED4asjcJs+YSLPPf00J8+cZv2XXxEaMpUaVasx6K3RbNqyhT1bt7Fh89e8OXAQu/ft45fTpxk5eDA79+5l+PhxuFhLliR0aghtWrfGYrGwa98+xk0LISMzE5dBfftiMpkoWyaALi++yG/xNwiPWM0XX3+Fm5+vL/OmTeeJxx8n7vp1tn3/He+vWIHT6cRtUN++dO/UmYqBgRw+epSZYfO5FBPDvSru7c17s+fwj1atyMvLIyMzE5fl4eGs/mI992L9J59QoVx5Ll+5wqC3RnPr1i0K2rQqggZ162Iymfhu4ybsDgdXYq/Sa/Bg3Px8fZk3bTpPPP44cdevs+3773h/xQqcTiduzR59lBGDBlE5KJivvtnG0o8+Iu76de5Fm9at6d+rN68NGojbgN59CA6qSEhoKC4mk4mpY8fRtk0bShQvzo979zBj/nzSMzJwCwoMZMakSbRs2oz4xEQ2btnM+ytW4PbV6jWU9vMjYt1aLJYiDO/fnzL+/tRp0ZyExEREREREREREROTvxTxx2pQZiIiIiDwst218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AFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAP5ve3BAAgAAgAAo+j+6H6ECFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwYYkQHKd0AqxtAAAAAElFTkSuQmCC",url:"https://www.saucedemo.com/"},import_jsx_runtime10=__toESM(require_jsx_runtime()),ContextPreview=({uiContextPreview:t,setUiContextPreview:r,showContextPreview:n})=>n?(0,import_jsx_runtime10.jsxs)("div",{className:"form-part context-panel",children:[(0,import_jsx_runtime10.jsx)("h3",{children:"UI Context"}),t?(0,import_jsx_runtime10.jsx)(blackboard_default,{uiContext:t,hideController:!0}):(0,import_jsx_runtime10.jsxs)("div",{children:[iconForStatus("failed")," No UI context",(0,import_jsx_runtime10.jsx)(import_antd7.Button,{type:"link",onClick:t=>{t.preventDefault(),r(playground_demo_ui_context_default)},children:"Load Demo"}),(0,import_jsx_runtime10.jsx)("div",{children:"To load the UI context, you can either use the demo data above, or click the 'Send to Playground' in the report page."})]})]}):null;init_globals();var import_icons5=__webpack_require__(8405),import_antd10=__webpack_require__(1542),import_react9=__webpack_require__(4194);init_globals();var{create:create3}=esm_exports,HISTORY_KEY="midscene-prompt-history",getHistoryFromLocalStorage=()=>{let t=localStorage.getItem(HISTORY_KEY);return t?JSON.parse(t):[]},useHistoryStore=create3((t,r)=>({history:getHistoryFromLocalStorage(),clearHistory:()=>{t({history:[]}),localStorage.removeItem(HISTORY_KEY)},addHistory:n=>{let i=[n,...r().history.filter(t=>t.prompt!==n.prompt)];for(;i.length>10;)i.pop();t({history:i}),localStorage.setItem(HISTORY_KEY,JSON.stringify(i))}}));init_globals();var import_antd8=__webpack_require__(1542);init_globals();var React=__toESM(__webpack_require__(4194)),import_jsx_runtime11=__toESM(require_jsx_runtime()),SvgSetting=t=>(0,import_jsx_runtime11.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:27,height:27,fill:"none",viewBox:"0 0 27 27",...t,children:(0,import_jsx_runtime11.jsx)("path",{stroke:"#000",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.85,strokeWidth:1.333,d:"M19.527 8.855h-2M14.86 7.522v2.667M14.86 8.855H7.527M10.194 13.522H7.527M12.86 12.189v2.666M20.193 13.522H12.86M19.527 18.189h-2M14.86 16.855v2.667M14.86 18.189H7.527"})}),setting_default=SvgSetting,import_jsx_runtime12=__toESM(require_jsx_runtime()),ConfigSelector=({showDeepThinkOption:t=!1,enableTracking:r=!1})=>{let n=useEnvConfig(t=>t.forceSameTabNavigation),i=useEnvConfig(t=>t.setForceSameTabNavigation),a=useEnvConfig(t=>t.deepThink),o=useEnvConfig(t=>t.setDeepThink);if(!r&&!t)return null;let s=function(){let s=[];return r&&s.push({label:(0,import_jsx_runtime12.jsx)(import_antd8.Checkbox,{onChange:t=>i(t.target.checked),checked:n,children:trackingTip}),key:"track-config"}),t&&s.push({label:(0,import_jsx_runtime12.jsx)(import_antd8.Checkbox,{onChange:t=>{o(t.target.checked)},checked:a,children:deepThinkTip}),key:"deep-think-config"}),s}();return(0,import_jsx_runtime12.jsx)("div",{className:"selector-trigger",children:(0,import_jsx_runtime12.jsx)(import_antd8.Dropdown,{menu:{items:s},trigger:["click"],children:(0,import_jsx_runtime12.jsx)(setting_default,{width:24,height:24})})})};init_globals();var import_antd9=__webpack_require__(1542),import_react8=__webpack_require__(4194);init_globals();var React2=__toESM(__webpack_require__(4194)),import_jsx_runtime13=__toESM(require_jsx_runtime()),SvgClose=t=>(0,import_jsx_runtime13.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:18,height:16,fill:"none",viewBox:"0 0 18 16",...t,children:(0,import_jsx_runtime13.jsx)("path",{stroke:"#333",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.333,d:"m3.124 2.667 11.162 10.666M3.124 13.333 14.286 2.667"})}),close_default=SvgClose;init_globals();var React3=__toESM(__webpack_require__(4194)),import_jsx_runtime14=__toESM(require_jsx_runtime()),SvgHistory=t=>(0,import_jsx_runtime14.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:25,height:25,fill:"none",viewBox:"0 0 25 25",...t,children:[(0,import_jsx_runtime14.jsx)("path",{stroke:"#000",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.85,strokeWidth:1.33,d:"M6.63 9.021c-2.862 6.126 2.197 10.501 6.063 10.501a7 7 0 1 0-6.063-10.5Z"}),(0,import_jsx_runtime14.jsx)("path",{stroke:"#000",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.85,strokeWidth:1.33,d:"M12.695 8.322v4.203l2.967 2.968"})]}),history_default=SvgHistory;init_globals();var React4=__toESM(__webpack_require__(4194)),import_jsx_runtime15=__toESM(require_jsx_runtime()),SvgMagnifyingGlass=t=>(0,import_jsx_runtime15.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:19,height:19,fill:"none",viewBox:"0 0 19 19",...t,children:[(0,import_jsx_runtime15.jsxs)("g",{stroke:"#000",strokeLinejoin:"round",strokeOpacity:.65,strokeWidth:1.5,clipPath:"url(#magnifying-glass_svg__a)",children:[(0,import_jsx_runtime15.jsx)("path",{d:"M8.397 14.29a6.375 6.375 0 1 0 0-12.75 6.375 6.375 0 0 0 0 12.75Z"}),(0,import_jsx_runtime15.jsx)("path",{strokeLinecap:"round",d:"M10.518 5.42a2.99 2.99 0 0 0-2.12-.88 2.99 2.99 0 0 0-2.122.88M12.98 12.499l3.182 3.182"})]}),(0,import_jsx_runtime15.jsx)("defs",{children:(0,import_jsx_runtime15.jsx)("clipPath",{id:"magnifying-glass_svg__a",children:(0,import_jsx_runtime15.jsx)("path",{fill:"#fff",d:"M.522.04h18v18h-18z"})})})]}),magnifying_glass_default=SvgMagnifyingGlass,import_jsx_runtime16=__toESM(require_jsx_runtime()),{Text:Text3}=import_antd9.Typography,HistorySelector=({onSelect:t})=>{let[r,n]=(0,import_react8.useState)(!1),[i,a]=(0,import_react8.useState)(""),o=useHistoryStore(t=>t.history),s=useHistoryStore(t=>t.clearHistory),l=(0,import_react8.useMemo)(()=>{let t=Date.now(),r=t-6048e5,n=t-31536e6,a=o.filter(t=>t.prompt.toLowerCase().includes(i.toLowerCase()));return{recent7Days:a.filter(t=>t.timestamp>=r),recent1Year:a.filter(t=>t.timestamp<r&&t.timestamp>=n),older:a.filter(t=>t.timestamp<n)}},[o,i]),u=(r,i)=>0===i.length?null:(0,import_jsx_runtime16.jsxs)("div",{className:"history-group",children:[(0,import_jsx_runtime16.jsx)("div",{className:"history-group-title",children:r}),i.map((r,i)=>(0,import_jsx_runtime16.jsx)("div",{className:"history-item",onClick:()=>(r=>{t(r),n(!1)})(r),children:r.prompt},`${r.timestamp}-${i}`))]},r);return(0,import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment,{children:[(0,import_jsx_runtime16.jsx)("div",{className:"selector-trigger",onClick:()=>n(!0),children:(0,import_jsx_runtime16.jsx)(history_default,{width:24,height:24})}),(0,import_jsx_runtime16.jsx)(import_antd9.Modal,{open:r,onCancel:()=>n(!1),footer:null,width:"100%",closable:!1,centered:!1,transitionName:"",maskTransitionName:"",style:{margin:0,padding:0,maxWidth:"none",top:"auto",bottom:0},styles:{wrapper:{alignItems:"flex-end",justifyContent:"center",paddingBottom:0,display:"flex"},body:{height:"70vh",padding:0,margin:0},content:{height:"70vh",borderRadius:"12px 12px 0 0",margin:0,padding:0,marginBottom:0,position:"fixed",bottom:0,left:0,right:0}},maskClosable:!0,destroyOnClose:!0,children:(0,import_jsx_runtime16.jsxs)("div",{className:"history-modal-container",children:[(0,import_jsx_runtime16.jsxs)("div",{className:"history-modal-header",children:[(0,import_jsx_runtime16.jsxs)(Text3,{strong:!0,style:{fontSize:"16px"},children:["History (",o.length,")"]}),(0,import_jsx_runtime16.jsx)(import_antd9.Button,{size:"small",type:"text",icon:(0,import_jsx_runtime16.jsx)(close_default,{width:16,height:16}),onClick:()=>n(!1),className:"close-button"})]}),(0,import_jsx_runtime16.jsx)("div",{className:"history-search-section",children:(0,import_jsx_runtime16.jsxs)("div",{className:"search-input-wrapper",children:[(0,import_jsx_runtime16.jsx)(import_antd9.Input,{placeholder:"Search",value:i,onChange:t=>a(t.target.value),prefix:(0,import_jsx_runtime16.jsx)(magnifying_glass_default,{width:18,height:18}),className:"search-input",allowClear:!0}),(0,import_jsx_runtime16.jsx)(import_antd9.Button,{type:"link",onClick:()=>{s(),a(""),n(!1)},className:"clear-button",disabled:0===o.length,children:"Clear"})]})}),(0,import_jsx_runtime16.jsx)("div",{className:"history-content",children:0===o.length?(0,import_jsx_runtime16.jsx)("div",{className:"no-results",children:(0,import_jsx_runtime16.jsx)(Text3,{type:"secondary",children:"No history record"})}):(0,import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment,{children:[u("Last 7 days",l.recent7Days),u("Last 1 year",l.recent1Year),u("Earlier",l.older),i&&0===l.recent7Days.length&&0===l.recent1Year.length&&0===l.older.length&&(0,import_jsx_runtime16.jsx)("div",{className:"no-results",children:(0,import_jsx_runtime16.jsx)(Text3,{type:"secondary",children:"No matching history record"})})]})})]})})]})},import_jsx_runtime17=__toESM(require_jsx_runtime()),{TextArea:TextArea}=import_antd10.Input,PromptInput=({runButtonEnabled:t,form:r,serviceMode:n,selectedType:i,dryMode:a,stoppable:o,loading:s,onRun:l,onStop:u,clearPromptAfterRun:d=!0})=>{let[c,h]=(0,import_react9.useState)(!1),[f,p]=(0,import_react9.useState)(""),m=getPlaceholderForType(i),g=(0,import_react9.useRef)(null),b=useHistoryStore(t=>t.history),y=useHistoryStore(t=>t.addHistory),_=b[0];(0,import_react9.useEffect)(()=>{_?(r.setFieldsValue({type:_.type||"aiAction",prompt:_.prompt||""}),p(_.prompt||"")):(r.setFieldsValue({type:"aiAction",prompt:""}),p(""))},[]);let v=(0,import_react9.useCallback)(t=>{r.setFieldsValue({prompt:t.prompt,type:t.type}),p(t.prompt)},[r]),A=(0,import_react9.useCallback)(t=>{let n=t.target.value;p(n),r.setFieldValue("prompt",n)},[r]),w=t&&f.trim().length>0,x=(0,import_react9.useCallback)(()=>{let t=r.getFieldsValue();t.prompt&&y({type:t.type,prompt:t.prompt,timestamp:Date.now()}),l(),d&&(p(""),r.setFieldValue("prompt",""))},[r,y,l]),E=(0,import_react9.useCallback)(t=>{"Enter"===t.key&&t.metaKey&&w?(x(),t.preventDefault(),t.stopPropagation()):"Enter"===t.key&&setTimeout(()=>{if(g.current){let t=g.current.resizableTextArea.textArea,r=t.selectionStart,n=t.value.lastIndexOf("\n");(-1===n||r>n)&&(t.scrollTop=t.scrollHeight)}},0)},[x,w]),S=(0,import_react9.useCallback)(()=>{h(!0)},[]),C=(0,import_react9.useCallback)(()=>{h(!1)},[]),I=(0,import_react9.useCallback)(()=>{let t=t=>(0,import_jsx_runtime17.jsx)(import_antd10.Button,{type:"primary",icon:(0,import_jsx_runtime17.jsx)(import_icons5.SendOutlined,{}),style:{borderRadius:20,zIndex:999},onClick:x,disabled:!w,loading:s,children:t});return a?"aiAction"===i?(0,import_jsx_runtime17.jsx)(import_antd10.Tooltip,{title:"Start executing until some interaction actions need to be performed. You can see the process of planning and locating.",children:t("Dry Run")}):t("Run"):o?(0,import_jsx_runtime17.jsx)(import_antd10.Button,{icon:(0,import_jsx_runtime17.jsx)(import_icons5.BorderOutlined,{}),onClick:u,style:{borderRadius:20,zIndex:999},children:"Stop"}):t("Run")},[a,s,x,u,w,i,o]);return(0,import_jsx_runtime17.jsxs)("div",{className:"prompt-input-wrapper",children:[(0,import_jsx_runtime17.jsxs)(import_antd10.Space,{className:"mode-radio-group-wrapper",children:[(0,import_jsx_runtime17.jsx)(import_antd10.Form.Item,{name:"type",style:{margin:0},children:(0,import_jsx_runtime17.jsxs)(import_antd10.Radio.Group,{buttonStyle:"solid",disabled:!t,className:"mode-radio-group",children:[(0,import_jsx_runtime17.jsx)(import_antd10.Tooltip,{title:"Auto Planning: plan the steps and execute",children:(0,import_jsx_runtime17.jsx)(import_antd10.Radio.Button,{value:"aiAction",children:actionNameForType("aiAction")})}),(0,import_jsx_runtime17.jsx)(import_antd10.Tooltip,{title:"Extract data directly from the UI",children:(0,import_jsx_runtime17.jsx)(import_antd10.Radio.Button,{value:"aiQuery",children:actionNameForType("aiQuery")})}),(0,import_jsx_runtime17.jsx)(import_antd10.Tooltip,{title:"Understand the UI and determine if the assertion is true",children:(0,import_jsx_runtime17.jsx)(import_antd10.Radio.Button,{value:"aiAssert",children:actionNameForType("aiAssert")})}),(0,import_jsx_runtime17.jsx)(import_antd10.Tooltip,{title:"Instant Action: click something",children:(0,import_jsx_runtime17.jsx)(import_antd10.Radio.Button,{value:"aiTap",children:actionNameForType("aiTap")})})]})}),(0,import_jsx_runtime17.jsxs)("div",{className:"action-icons",children:[(0,import_jsx_runtime17.jsx)(HistorySelector,{onSelect:v}),(0,import_jsx_runtime17.jsx)("div",{className:c?"settings-wrapper settings-wrapper-hover":"settings-wrapper",onMouseEnter:S,onMouseLeave:C,children:(0,import_jsx_runtime17.jsx)(ConfigSelector,{enableTracking:"In-Browser-Extension"===n,showDeepThinkOption:"aiTap"===i})})]})]}),(0,import_jsx_runtime17.jsxs)("div",{className:`main-side-console-input ${t?"":"disabled"} ${s?"loading":""}`,children:[(0,import_jsx_runtime17.jsx)(import_antd10.Form.Item,{name:"prompt",style:{margin:0},children:(0,import_jsx_runtime17.jsx)(TextArea,{className:"main-side-console-input-textarea",disabled:!t,rows:4,placeholder:m,autoFocus:!0,onKeyDown:E,onChange:A,value:f,ref:g})}),(0,import_jsx_runtime17.jsx)("div",{className:"form-controller-wrapper",children:I()})]})]})};init_globals();var import_jsx_runtime18=__toESM(require_jsx_runtime()),GithubStar=()=>(0,import_jsx_runtime18.jsx)("a",{href:"https://github.com/web-infra-dev/midscene",target:"_blank",rel:"noreferrer",style:{display:"flex",alignItems:"center"},children:(0,import_jsx_runtime18.jsx)("img",{className:"github-star",src:"https://img.shields.io/github/stars/web-infra-dev/midscene?style=social",alt:"Github star",style:{display:"block"}})});init_globals();var import_react10=__webpack_require__(4194);init_globals();var React5=__toESM(__webpack_require__(4194)),{createElement:createElement,createContext:createContext,createRef:createRef,forwardRef:forwardRef,useCallback:useCallback2,useContext:useContext,useEffect:useEffect7,useImperativeHandle:useImperativeHandle,useLayoutEffect:useLayoutEffect,useMemo:useMemo5,useRef:useRef5,useState:useState7}=React5,useId=React5["useId".toString()],useLayoutEffect_do_not_use_directly=useLayoutEffect,PanelGroupContext=createContext(null);PanelGroupContext.displayName="PanelGroupContext";var useIsomorphicLayoutEffect=useLayoutEffect_do_not_use_directly,wrappedUseId="function"==typeof useId?useId:()=>null,counter=0;function useUniqueId(t=null){let r=wrappedUseId(),n=useRef5(t||r||null);return null===n.current&&(n.current=""+counter++),null!=t?t:n.current}function PanelWithForwardedRef({children:t,className:r="",collapsedSize:n,collapsible:i,defaultSize:a,forwardedRef:o,id:s,maxSize:l,minSize:u,onCollapse:d,onExpand:c,onResize:h,order:f,style:p,tagName:m="div",...g}){let b=useContext(PanelGroupContext);if(null===b)throw Error("Panel components must be rendered within a PanelGroup container");let{collapsePanel:y,expandPanel:_,getPanelSize:v,getPanelStyle:A,groupId:w,isPanelCollapsed:x,reevaluatePanelConstraints:E,registerPanel:S,resizePanel:C,unregisterPanel:I}=b,T=useUniqueId(s),k=useRef5({callbacks:{onCollapse:d,onExpand:c,onResize:h},constraints:{collapsedSize:n,collapsible:i,defaultSize:a,maxSize:l,minSize:u},id:T,idIsFromProps:void 0!==s,order:f});useRef5({didLogMissingDefaultSizeWarning:!1}),useIsomorphicLayoutEffect(()=>{let{callbacks:t,constraints:r}=k.current,o={...r};k.current.id=T,k.current.idIsFromProps=void 0!==s,k.current.order=f,t.onCollapse=d,t.onExpand=c,t.onResize=h,r.collapsedSize=n,r.collapsible=i,r.defaultSize=a,r.maxSize=l,r.minSize=u,o.collapsedSize===r.collapsedSize&&o.collapsible===r.collapsible&&o.maxSize===r.maxSize&&o.minSize===r.minSize||E(k.current,o)}),useIsomorphicLayoutEffect(()=>{let t=k.current;return S(t),()=>{I(t)}},[f,T,S,I]),useImperativeHandle(o,()=>({collapse:()=>{y(k.current)},expand:t=>{_(k.current,t)},getId:()=>T,getSize:()=>v(k.current),isCollapsed:()=>x(k.current),isExpanded:()=>!x(k.current),resize:t=>{C(k.current,t)}}),[y,_,v,x,T,C]);let P=A(k.current,a);return createElement(m,{...g,children:t,className:r,id:s,style:{...P,...p},"data-panel":"","data-panel-collapsible":i||void 0,"data-panel-group-id":w,"data-panel-id":T,"data-panel-size":parseFloat(""+P.flexGrow).toFixed(1)})}var Panel=forwardRef((t,r)=>createElement(PanelWithForwardedRef,{...t,forwardedRef:r}));PanelWithForwardedRef.displayName="Panel",Panel.displayName="forwardRef(Panel)";var currentCursorStyle=null,styleElement=null;function getCursorStyle(t,r){if(r){let t=!!(r&EXCEEDED_VERTICAL_MIN),n=!!(r&EXCEEDED_VERTICAL_MAX);if(r&EXCEEDED_HORIZONTAL_MIN)return t?"se-resize":n?"ne-resize":"e-resize";if(r&EXCEEDED_HORIZONTAL_MAX)return t?"sw-resize":n?"nw-resize":"w-resize";if(t)return"s-resize";if(n)return"n-resize"}switch(t){case"horizontal":return"ew-resize";case"intersection":return"move";case"vertical":return"ns-resize"}}function resetGlobalCursorStyle(){null!==styleElement&&(document.head.removeChild(styleElement),currentCursorStyle=null,styleElement=null)}function setGlobalCursorStyle(t,r){let n=getCursorStyle(t,r);currentCursorStyle!==n&&(currentCursorStyle=n,null===styleElement&&(styleElement=document.createElement("style"),document.head.appendChild(styleElement)),styleElement.innerHTML=`*{cursor: ${n}!important;}`)}function isKeyDown(t){return"keydown"===t.type}function isPointerEvent(t){return t.type.startsWith("pointer")}function isMouseEvent(t){return t.type.startsWith("mouse")}function getResizeEventCoordinates(t){if(isPointerEvent(t)){if(t.isPrimary)return{x:t.clientX,y:t.clientY}}else if(isMouseEvent(t))return{x:t.clientX,y:t.clientY};return{x:1/0,y:1/0}}function getInputType(){if("function"==typeof matchMedia)return matchMedia("(pointer:coarse)").matches?"coarse":"fine"}function intersects(t,r,n){return n?t.x<r.x+r.width&&t.x+t.width>r.x&&t.y<r.y+r.height&&t.y+t.height>r.y:t.x<=r.x+r.width&&t.x+t.width>=r.x&&t.y<=r.y+r.height&&t.y+t.height>=r.y}function compare(t,r){let n;if(t===r)throw Error("Cannot compare node with itself");let i={a:get_ancestors(t),b:get_ancestors(r)};for(;i.a.at(-1)===i.b.at(-1);)t=i.a.pop(),r=i.b.pop(),n=t;assert(n,"Stacking order can only be calculated for elements with a common ancestor");let a=get_z_index(find_stacking_context(i.a)),o=get_z_index(find_stacking_context(i.b));if(a===o){let t=n.childNodes,r={a:i.a.at(-1),b:i.b.at(-1)},a=t.length;for(;a--;){let n=t[a];if(n===r.a)return 1;if(n===r.b)return -1}}return Math.sign(a-o)}var props=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function is_flex_item(t){var r;let n=getComputedStyle(null!=(r=get_parent(t))?r:t).display;return"flex"===n||"inline-flex"===n}function creates_stacking_context(t){let r=getComputedStyle(t);return"fixed"===r.position||!("auto"===r.zIndex||"static"===r.position&&!is_flex_item(t))||1>+r.opacity||"transform"in r&&"none"!==r.transform||"webkitTransform"in r&&"none"!==r.webkitTransform||"mixBlendMode"in r&&"normal"!==r.mixBlendMode||"filter"in r&&"none"!==r.filter||"webkitFilter"in r&&"none"!==r.webkitFilter||"isolation"in r&&"isolate"===r.isolation||!!props.test(r.willChange)||"touch"===r.webkitOverflowScrolling}function find_stacking_context(t){let r=t.length;for(;r--;){let n=t[r];if(assert(n,"Missing node"),creates_stacking_context(n))return n}return null}function get_z_index(t){return t&&Number(getComputedStyle(t).zIndex)||0}function get_ancestors(t){let r=[];for(;t;)r.push(t),t=get_parent(t);return r}function get_parent(t){let{parentNode:r}=t;return r&&r instanceof ShadowRoot?r.host:r}var EXCEEDED_HORIZONTAL_MIN=1,EXCEEDED_HORIZONTAL_MAX=2,EXCEEDED_VERTICAL_MIN=4,EXCEEDED_VERTICAL_MAX=8,isCoarsePointer="coarse"===getInputType(),intersectingHandles=[],isPointerDown=!1,ownerDocumentCounts=new Map,panelConstraintFlags=new Map,registeredResizeHandlers=new Set;function registerResizeHandle(t,r,n,i,a){var o;let{ownerDocument:s}=r,l={direction:n,element:r,hitAreaMargins:i,setResizeHandlerState:a},u=null!=(o=ownerDocumentCounts.get(s))?o:0;return ownerDocumentCounts.set(s,u+1),registeredResizeHandlers.add(l),updateListeners(),function(){var r;panelConstraintFlags.delete(t),registeredResizeHandlers.delete(l);let n=null!=(r=ownerDocumentCounts.get(s))?r:1;if(ownerDocumentCounts.set(s,n-1),updateListeners(),1===n&&ownerDocumentCounts.delete(s),intersectingHandles.includes(l)){let t=intersectingHandles.indexOf(l);t>=0&&intersectingHandles.splice(t,1),updateCursor()}}}function handlePointerDown(t){let{target:r}=t,{x:n,y:i}=getResizeEventCoordinates(t);isPointerDown=!0,recalculateIntersectingHandles({target:r,x:n,y:i}),updateListeners(),intersectingHandles.length>0&&(updateResizeHandlerStates("down",t),t.preventDefault(),t.stopPropagation())}function handlePointerMove(t){let{x:r,y:n}=getResizeEventCoordinates(t);if(0===t.buttons&&(isPointerDown=!1,updateResizeHandlerStates("up",t)),!isPointerDown){let{target:i}=t;recalculateIntersectingHandles({target:i,x:r,y:n})}updateResizeHandlerStates("move",t),updateCursor(),intersectingHandles.length>0&&t.preventDefault()}function handlePointerUp(t){let{target:r}=t,{x:n,y:i}=getResizeEventCoordinates(t);panelConstraintFlags.clear(),isPointerDown=!1,intersectingHandles.length>0&&t.preventDefault(),updateResizeHandlerStates("up",t),recalculateIntersectingHandles({target:r,x:n,y:i}),updateCursor(),updateListeners()}function recalculateIntersectingHandles({target:t,x:r,y:n}){intersectingHandles.splice(0);let i=null;t instanceof HTMLElement&&(i=t),registeredResizeHandlers.forEach(t=>{let{element:a,hitAreaMargins:o}=t,s=a.getBoundingClientRect(),{bottom:l,left:u,right:d,top:c}=s,h=isCoarsePointer?o.coarse:o.fine;if(r>=u-h&&r<=d+h&&n>=c-h&&n<=l+h){if(null!==i&&a!==i&&!a.contains(i)&&!i.contains(a)&&compare(i,a)>0){let t=i,r=!1;for(;t&&!t.contains(a);){if(intersects(t.getBoundingClientRect(),s,!0)){r=!0;break}t=t.parentElement}if(r)return}intersectingHandles.push(t)}})}function reportConstraintsViolation(t,r){panelConstraintFlags.set(t,r)}function updateCursor(){let t=!1,r=!1;intersectingHandles.forEach(n=>{let{direction:i}=n;"horizontal"===i?t=!0:r=!0});let n=0;panelConstraintFlags.forEach(t=>{n|=t}),t&&r?setGlobalCursorStyle("intersection",n):t?setGlobalCursorStyle("horizontal",n):r?setGlobalCursorStyle("vertical",n):resetGlobalCursorStyle()}function updateListeners(){ownerDocumentCounts.forEach((t,r)=>{let{body:n}=r;n.removeEventListener("contextmenu",handlePointerUp),n.removeEventListener("pointerdown",handlePointerDown),n.removeEventListener("pointerleave",handlePointerMove),n.removeEventListener("pointermove",handlePointerMove)}),window.removeEventListener("pointerup",handlePointerUp),window.removeEventListener("pointercancel",handlePointerUp),registeredResizeHandlers.size>0&&(isPointerDown?(intersectingHandles.length>0&&ownerDocumentCounts.forEach((t,r)=>{let{body:n}=r;t>0&&(n.addEventListener("contextmenu",handlePointerUp),n.addEventListener("pointerleave",handlePointerMove),n.addEventListener("pointermove",handlePointerMove))}),window.addEventListener("pointerup",handlePointerUp),window.addEventListener("pointercancel",handlePointerUp)):ownerDocumentCounts.forEach((t,r)=>{let{body:n}=r;t>0&&(n.addEventListener("pointerdown",handlePointerDown,{capture:!0}),n.addEventListener("pointermove",handlePointerMove))}))}function updateResizeHandlerStates(t,r){registeredResizeHandlers.forEach(n=>{let{setResizeHandlerState:i}=n;i(t,intersectingHandles.includes(n),r)})}function useForceUpdate(){let[t,r]=useState7(0);return useCallback2(()=>r(t=>t+1),[])}function assert(t,r){if(!t)throw import_console_browserify.default.error(r),Error(r)}var PRECISION=10;function fuzzyCompareNumbers(t,r,n=PRECISION){return t.toFixed(n)===r.toFixed(n)?0:t>r?1:-1}function fuzzyNumbersEqual$1(t,r,n=PRECISION){return 0===fuzzyCompareNumbers(t,r,n)}function fuzzyNumbersEqual(t,r,n){return 0===fuzzyCompareNumbers(t,r,n)}function fuzzyLayoutsEqual(t,r,n){if(t.length!==r.length)return!1;for(let i=0;i<t.length;i++)if(!fuzzyNumbersEqual(t[i],r[i],n))return!1;return!0}function resizePanel({panelConstraints:t,panelIndex:r,size:n}){let i=t[r];assert(null!=i,`Panel constraints not found for index ${r}`);let{collapsedSize:a=0,collapsible:o,maxSize:s=100,minSize:l=0}=i;return 0>fuzzyCompareNumbers(n,l)&&(n=o&&0>fuzzyCompareNumbers(n,(a+l)/2)?a:l),n=parseFloat((n=Math.min(s,n)).toFixed(PRECISION))}function adjustLayoutByDelta({delta:t,initialLayout:r,panelConstraints:n,pivotIndices:i,prevLayout:a,trigger:o}){if(fuzzyNumbersEqual(t,0))return r;let s=[...r],[l,u]=i;assert(null!=l,"Invalid first pivot index"),assert(null!=u,"Invalid second pivot index");let d=0;if("keyboard"===o){{let i=t<0?u:l,a=n[i];assert(a,`Panel constraints not found for index ${i}`);let{collapsedSize:o=0,collapsible:s,minSize:d=0}=a;if(s){let n=r[i];if(assert(null!=n,`Previous layout not found for panel index ${i}`),fuzzyNumbersEqual(n,o)){let r=d-n;fuzzyCompareNumbers(r,Math.abs(t))>0&&(t=t<0?0-r:r)}}}{let i=t<0?l:u,a=n[i];assert(a,`No panel constraints found for index ${i}`);let{collapsedSize:o=0,collapsible:s,minSize:d=0}=a;if(s){let n=r[i];if(assert(null!=n,`Previous layout not found for panel index ${i}`),fuzzyNumbersEqual(n,d)){let r=n-o;fuzzyCompareNumbers(r,Math.abs(t))>0&&(t=t<0?0-r:r)}}}}{let i=t<0?1:-1,a=t<0?u:l,o=0;for(;;){let t=r[a];if(assert(null!=t,`Previous layout not found for panel index ${a}`),o+=resizePanel({panelConstraints:n,panelIndex:a,size:100})-t,(a+=i)<0||a>=n.length)break}let s=Math.min(Math.abs(t),Math.abs(o));t=t<0?0-s:s}{let i=t<0?l:u;for(;i>=0&&i<n.length;){let a=Math.abs(t)-Math.abs(d),o=r[i];assert(null!=o,`Previous layout not found for panel index ${i}`);let l=resizePanel({panelConstraints:n,panelIndex:i,size:o-a});if(!fuzzyNumbersEqual(o,l)&&(d+=o-l,s[i]=l,d.toPrecision(3).localeCompare(Math.abs(t).toPrecision(3),void 0,{numeric:!0})>=0))break;t<0?i--:i++}}if(fuzzyLayoutsEqual(a,s))return a;{let i=t<0?u:l,a=r[i];assert(null!=a,`Previous layout not found for panel index ${i}`);let o=a+d,c=resizePanel({panelConstraints:n,panelIndex:i,size:o});if(s[i]=c,!fuzzyNumbersEqual(c,o)){let r=o-c,i=t<0?u:l;for(;i>=0&&i<n.length;){let a=s[i];assert(null!=a,`Previous layout not found for panel index ${i}`);let o=resizePanel({panelConstraints:n,panelIndex:i,size:a+r});if(fuzzyNumbersEqual(a,o)||(r-=o-a,s[i]=o),fuzzyNumbersEqual(r,0))break;t>0?i--:i++}}}return fuzzyNumbersEqual(s.reduce((t,r)=>r+t,0),100)?s:a}function calculateAriaValues({layout:t,panelsArray:r,pivotIndices:n}){let i=0,a=100,o=0,s=0,l=n[0];return assert(null!=l,"No pivot index found"),r.forEach((t,r)=>{let{constraints:n}=t,{maxSize:u=100,minSize:d=0}=n;r===l?(i=d,a=u):(o+=d,s+=u)}),{valueMax:Math.min(a,100-o),valueMin:Math.max(i,100-s),valueNow:t[l]}}function getResizeHandleElementsForGroup(t,r=document){return Array.from(r.querySelectorAll(`[data-panel-resize-handle-id][data-panel-group-id="${t}"]`))}function getResizeHandleElementIndex(t,r,n=document){let i=getResizeHandleElementsForGroup(t,n).findIndex(t=>t.getAttribute("data-panel-resize-handle-id")===r);return null!=i?i:null}function determinePivotIndices(t,r,n){let i=getResizeHandleElementIndex(t,r,n);return null!=i?[i,i+1]:[-1,-1]}function getPanelGroupElement(t,r=document){var n;return r instanceof HTMLElement&&(null==r||null==(n=r.dataset)?void 0:n.panelGroupId)==t?r:r.querySelector(`[data-panel-group][data-panel-group-id="${t}"]`)||null}function getResizeHandleElement(t,r=document){return r.querySelector(`[data-panel-resize-handle-id="${t}"]`)||null}function getResizeHandlePanelIds(t,r,n,i=document){var a,o,s,l;let u=getResizeHandleElement(r,i),d=getResizeHandleElementsForGroup(t,i),c=u?d.indexOf(u):-1;return[null!=(a=null==(o=n[c])?void 0:o.id)?a:null,null!=(s=null==(l=n[c+1])?void 0:l.id)?s:null]}function useWindowSplitterPanelGroupBehavior({committedValuesRef:t,eagerValuesRef:r,groupId:n,layout:i,panelDataArray:a,panelGroupElement:o,setLayout:s}){useRef5({didWarnAboutMissingResizeHandle:!1}),useIsomorphicLayoutEffect(()=>{if(!o)return;let t=getResizeHandleElementsForGroup(n,o);for(let r=0;r<a.length-1;r++){let{valueMax:n,valueMin:o,valueNow:s}=calculateAriaValues({layout:i,panelsArray:a,pivotIndices:[r,r+1]}),l=t[r];if(null==l);else{let t=a[r];assert(t,`No panel data found for index "${r}"`),l.setAttribute("aria-controls",t.id),l.setAttribute("aria-valuemax",""+Math.round(n)),l.setAttribute("aria-valuemin",""+Math.round(o)),l.setAttribute("aria-valuenow",null!=s?""+Math.round(s):"")}}return()=>{t.forEach((t,r)=>{t.removeAttribute("aria-controls"),t.removeAttribute("aria-valuemax"),t.removeAttribute("aria-valuemin"),t.removeAttribute("aria-valuenow")})}},[n,i,a,o]),useEffect7(()=>{if(!o)return;let t=r.current;assert(t,"Eager values not found");let{panelDataArray:a}=t;assert(null!=getPanelGroupElement(n,o),`No group found for id "${n}"`);let l=getResizeHandleElementsForGroup(n,o);assert(l,`No resize handles found for group id "${n}"`);let u=l.map(t=>{let r=t.getAttribute("data-panel-resize-handle-id");assert(r,"Resize handle element has no handle id attribute");let[l,u]=getResizeHandlePanelIds(n,r,a,o);if(null==l||null==u)return()=>{};let d=t=>{if(!t.defaultPrevented&&"Enter"===t.key){t.preventDefault();let u=a.findIndex(t=>t.id===l);if(u>=0){let t=a[u];assert(t,`No panel data found for index ${u}`);let l=i[u],{collapsedSize:d=0,collapsible:c,minSize:h=0}=t.constraints;if(null!=l&&c){let t=adjustLayoutByDelta({delta:fuzzyNumbersEqual(l,d)?h-d:d-l,initialLayout:i,panelConstraints:a.map(t=>t.constraints),pivotIndices:determinePivotIndices(n,r,o),prevLayout:i,trigger:"keyboard"});i!==t&&s(t)}}}};return t.addEventListener("keydown",d),()=>{t.removeEventListener("keydown",d)}});return()=>{u.forEach(t=>t())}},[o,t,r,n,i,a,s])}function areEqual(t,r){if(t.length!==r.length)return!1;for(let n=0;n<t.length;n++)if(t[n]!==r[n])return!1;return!0}function getResizeEventCursorPosition(t,r){let n="horizontal"===t,{x:i,y:a}=getResizeEventCoordinates(r);return n?i:a}function calculateDragOffsetPercentage(t,r,n,i,a){let o="horizontal"===n,s=getResizeHandleElement(r,a);assert(s,`No resize handle element found for id "${r}"`);let l=s.getAttribute("data-panel-group-id");assert(l,"Resize handle element has no group id attribute");let{initialCursorPosition:u}=i,d=getResizeEventCursorPosition(n,t),c=getPanelGroupElement(l,a);assert(c,`No group element found for id "${l}"`);let h=c.getBoundingClientRect();return(d-u)/(o?h.width:h.height)*100}function calculateDeltaPercentage(t,r,n,i,a,o){if(isKeyDown(t)){let r="horizontal"===n,i=0;i=t.shiftKey?100:null!=a?a:10;let o=0;switch(t.key){case"ArrowDown":o=r?0:i;break;case"ArrowLeft":o=r?-i:0;break;case"ArrowRight":o=r?i:0;break;case"ArrowUp":o=r?0:-i;break;case"End":o=100;break;case"Home":o=-100}return o}return null==i?0:calculateDragOffsetPercentage(t,r,n,i,o)}function calculateUnsafeDefaultLayout({panelDataArray:t}){let r=Array(t.length),n=t.map(t=>t.constraints),i=0,a=100;for(let o=0;o<t.length;o++){let t=n[o];assert(t,`Panel constraints not found for index ${o}`);let{defaultSize:s}=t;null!=s&&(i++,r[o]=s,a-=s)}for(let o=0;o<t.length;o++){let s=n[o];assert(s,`Panel constraints not found for index ${o}`);let{defaultSize:l}=s;if(null!=l)continue;let u=a/(t.length-i);i++,r[o]=u,a-=u}return r}function callPanelCallbacks(t,r,n){r.forEach((r,i)=>{let a=t[i];assert(a,`Panel data not found for index ${i}`);let{callbacks:o,constraints:s,id:l}=a,{collapsedSize:u=0,collapsible:d}=s,c=n[l];if(null==c||r!==c){n[l]=r;let{onCollapse:t,onExpand:i,onResize:a}=o;a&&a(r,c),d&&(t||i)&&(!i||null!=c&&!fuzzyNumbersEqual$1(c,u)||fuzzyNumbersEqual$1(r,u)||i(),!t||null!=c&&fuzzyNumbersEqual$1(c,u)||!fuzzyNumbersEqual$1(r,u)||t())}})}function compareLayouts(t,r){if(t.length!==r.length)return!1;for(let n=0;n<t.length;n++)if(t[n]!=r[n])return!1;return!0}function computePanelFlexBoxStyle({defaultSize:t,dragState:r,layout:n,panelData:i,panelIndex:a,precision:o=3}){let s=n[a];return{flexBasis:0,flexGrow:null==s?null!=t?t.toPrecision(o):"1":1===i.length?"1":s.toPrecision(o),flexShrink:1,overflow:"hidden",pointerEvents:null!==r?"none":void 0}}function debounce(t,r=10){let n=null;return(...i)=>{null!==n&&clearTimeout(n),n=setTimeout(()=>{t(...i)},r)}}function initializeDefaultStorage(t){try{if("undefined"==typeof localStorage)throw Error("localStorage not supported in this environment");t.getItem=t=>localStorage.getItem(t),t.setItem=(t,r)=>{localStorage.setItem(t,r)}}catch(r){import_console_browserify.default.error(r),t.getItem=()=>null,t.setItem=()=>{}}}function getPanelGroupKey(t){return`react-resizable-panels:${t}`}function getPanelKey(t){return t.map(t=>{let{constraints:r,id:n,idIsFromProps:i,order:a}=t;return i?n:a?`${a}:${JSON.stringify(r)}`:JSON.stringify(r)}).sort((t,r)=>t.localeCompare(r)).join(",")}function loadSerializedPanelGroupState(t,r){try{let n=getPanelGroupKey(t),i=r.getItem(n);if(i){let t=JSON.parse(i);if("object"==typeof t&&null!=t)return t}}catch(t){}return null}function loadPanelGroupState(t,r,n){var i,a;return null!=(a=(null!=(i=loadSerializedPanelGroupState(t,n))?i:{})[getPanelKey(r)])?a:null}function savePanelGroupState(t,r,n,i,a){var o;let s=getPanelGroupKey(t),l=getPanelKey(r),u=null!=(o=loadSerializedPanelGroupState(t,a))?o:{};u[l]={expandToSizes:Object.fromEntries(n.entries()),layout:i};try{a.setItem(s,JSON.stringify(u))}catch(t){import_console_browserify.default.error(t)}}function validatePanelGroupLayout({layout:t,panelConstraints:r}){let n=[...t],i=n.reduce((t,r)=>t+r,0);if(n.length!==r.length)throw Error(`Invalid ${r.length} panel layout: ${n.map(t=>`${t}%`).join(", ")}`);if(!fuzzyNumbersEqual(i,100))for(let t=0;t<r.length;t++){let r=n[t];assert(null!=r,`No layout data found for index ${t}`);let a=100/i*r;n[t]=a}let a=0;for(let t=0;t<r.length;t++){let i=n[t];assert(null!=i,`No layout data found for index ${t}`);let o=resizePanel({panelConstraints:r,panelIndex:t,size:i});i!=o&&(a+=i-o,n[t]=o)}if(!fuzzyNumbersEqual(a,0))for(let t=0;t<r.length;t++){let i=n[t];assert(null!=i,`No layout data found for index ${t}`);let o=resizePanel({panelConstraints:r,panelIndex:t,size:i+a});if(i!==o&&(a-=o-i,n[t]=o,fuzzyNumbersEqual(a,0)))break}return n}var LOCAL_STORAGE_DEBOUNCE_INTERVAL=100,defaultStorage={getItem:t=>(initializeDefaultStorage(defaultStorage),defaultStorage.getItem(t)),setItem:(t,r)=>{initializeDefaultStorage(defaultStorage),defaultStorage.setItem(t,r)}},debounceMap={};function PanelGroupWithForwardedRef({autoSaveId:t=null,children:r,className:n="",direction:i,forwardedRef:a,id:o=null,onLayout:s=null,keyboardResizeBy:l=null,storage:u=defaultStorage,style:d,tagName:c="div",...h}){let f=useUniqueId(o),p=useRef5(null),[m,g]=useState7(null),[b,y]=useState7([]),_=useForceUpdate(),v=useRef5({}),A=useRef5(new Map),w=useRef5(0),x=useRef5({autoSaveId:t,direction:i,dragState:m,id:f,keyboardResizeBy:l,onLayout:s,storage:u}),E=useRef5({layout:b,panelDataArray:[],panelDataArrayChanged:!1});useRef5({didLogIdAndOrderWarning:!1,didLogPanelConstraintsWarning:!1,prevPanelIds:[]}),useImperativeHandle(a,()=>({getId:()=>x.current.id,getLayout:()=>{let{layout:t}=E.current;return t},setLayout:t=>{let{onLayout:r}=x.current,{layout:n,panelDataArray:i}=E.current,a=validatePanelGroupLayout({layout:t,panelConstraints:i.map(t=>t.constraints)});areEqual(n,a)||(y(a),E.current.layout=a,r&&r(a),callPanelCallbacks(i,a,v.current))}}),[]),useIsomorphicLayoutEffect(()=>{x.current.autoSaveId=t,x.current.direction=i,x.current.dragState=m,x.current.id=f,x.current.onLayout=s,x.current.storage=u}),useWindowSplitterPanelGroupBehavior({committedValuesRef:x,eagerValuesRef:E,groupId:f,layout:b,panelDataArray:E.current.panelDataArray,setLayout:y,panelGroupElement:p.current}),useEffect7(()=>{let{panelDataArray:r}=E.current;if(t){if(0===b.length||b.length!==r.length)return;let n=debounceMap[t];null==n&&(n=debounce(savePanelGroupState,LOCAL_STORAGE_DEBOUNCE_INTERVAL),debounceMap[t]=n),n(t,[...r],new Map(A.current),b,u)}},[t,b,u]),useEffect7(()=>{});let S=useCallback2(t=>{let{onLayout:r}=x.current,{layout:n,panelDataArray:i}=E.current;if(t.constraints.collapsible){let a=i.map(t=>t.constraints),{collapsedSize:o=0,panelSize:s,pivotIndices:l}=panelDataHelper(i,t,n);if(assert(null!=s,`Panel size not found for panel "${t.id}"`),!fuzzyNumbersEqual$1(s,o)){A.current.set(t.id,s);let u=adjustLayoutByDelta({delta:findPanelDataIndex(i,t)===i.length-1?s-o:o-s,initialLayout:n,panelConstraints:a,pivotIndices:l,prevLayout:n,trigger:"imperative-api"});compareLayouts(n,u)||(y(u),E.current.layout=u,r&&r(u),callPanelCallbacks(i,u,v.current))}}},[]),C=useCallback2((t,r)=>{let{onLayout:n}=x.current,{layout:i,panelDataArray:a}=E.current;if(t.constraints.collapsible){let o=a.map(t=>t.constraints),{collapsedSize:s=0,panelSize:l=0,minSize:u=0,pivotIndices:d}=panelDataHelper(a,t,i),c=null!=r?r:u;if(fuzzyNumbersEqual$1(l,s)){let r=A.current.get(t.id),s=null!=r&&r>=c?r:c,u=adjustLayoutByDelta({delta:findPanelDataIndex(a,t)===a.length-1?l-s:s-l,initialLayout:i,panelConstraints:o,pivotIndices:d,prevLayout:i,trigger:"imperative-api"});compareLayouts(i,u)||(y(u),E.current.layout=u,n&&n(u),callPanelCallbacks(a,u,v.current))}}},[]),I=useCallback2(t=>{let{layout:r,panelDataArray:n}=E.current,{panelSize:i}=panelDataHelper(n,t,r);return assert(null!=i,`Panel size not found for panel "${t.id}"`),i},[]),T=useCallback2((t,r)=>{let{panelDataArray:n}=E.current,i=findPanelDataIndex(n,t);return computePanelFlexBoxStyle({defaultSize:r,dragState:m,layout:b,panelData:n,panelIndex:i})},[m,b]),k=useCallback2(t=>{let{layout:r,panelDataArray:n}=E.current,{collapsedSize:i=0,collapsible:a,panelSize:o}=panelDataHelper(n,t,r);return assert(null!=o,`Panel size not found for panel "${t.id}"`),!0===a&&fuzzyNumbersEqual$1(o,i)},[]),P=useCallback2(t=>{let{layout:r,panelDataArray:n}=E.current,{collapsedSize:i=0,collapsible:a,panelSize:o}=panelDataHelper(n,t,r);return assert(null!=o,`Panel size not found for panel "${t.id}"`),!a||fuzzyCompareNumbers(o,i)>0},[]),R=useCallback2(t=>{let{panelDataArray:r}=E.current;r.push(t),r.sort((t,r)=>{let n=t.order,i=r.order;return null==n&&null==i?0:null==n?-1:null==i?1:n-i}),E.current.panelDataArrayChanged=!0,_()},[_]);useIsomorphicLayoutEffect(()=>{if(E.current.panelDataArrayChanged){E.current.panelDataArrayChanged=!1;let{autoSaveId:t,onLayout:r,storage:n}=x.current,{layout:i,panelDataArray:a}=E.current,o=null;if(t){let r=loadPanelGroupState(t,a,n);r&&(A.current=new Map(Object.entries(r.expandToSizes)),o=r.layout)}null==o&&(o=calculateUnsafeDefaultLayout({panelDataArray:a}));let s=validatePanelGroupLayout({layout:o,panelConstraints:a.map(t=>t.constraints)});areEqual(i,s)||(y(s),E.current.layout=s,r&&r(s),callPanelCallbacks(a,s,v.current))}}),useIsomorphicLayoutEffect(()=>{let t=E.current;return()=>{t.layout=[]}},[]);let O=useCallback2(t=>function(r){r.preventDefault();let n=p.current;if(!n)return()=>null;let{direction:i,dragState:a,id:o,keyboardResizeBy:s,onLayout:l}=x.current,{layout:u,panelDataArray:d}=E.current,{initialLayout:c}=null!=a?a:{},h=determinePivotIndices(o,t,n),f=calculateDeltaPercentage(r,t,i,a,s,n),m="horizontal"===i;"rtl"===document.dir&&m&&(f=-f);let g=adjustLayoutByDelta({delta:f,initialLayout:null!=c?c:u,panelConstraints:d.map(t=>t.constraints),pivotIndices:h,prevLayout:u,trigger:isKeyDown(r)?"keyboard":"mouse-or-touch"}),b=!compareLayouts(u,g);(isPointerEvent(r)||isMouseEvent(r))&&w.current!=f&&(w.current=f,reportConstraintsViolation(t,b?0:m?f<0?EXCEEDED_HORIZONTAL_MIN:EXCEEDED_HORIZONTAL_MAX:f<0?EXCEEDED_VERTICAL_MIN:EXCEEDED_VERTICAL_MAX)),b&&(y(g),E.current.layout=g,l&&l(g),callPanelCallbacks(d,g,v.current))},[]),M=useCallback2((t,r)=>{let{onLayout:n}=x.current,{layout:i,panelDataArray:a}=E.current,o=a.map(t=>t.constraints),{panelSize:s,pivotIndices:l}=panelDataHelper(a,t,i);assert(null!=s,`Panel size not found for panel "${t.id}"`);let u=adjustLayoutByDelta({delta:findPanelDataIndex(a,t)===a.length-1?s-r:r-s,initialLayout:i,panelConstraints:o,pivotIndices:l,prevLayout:i,trigger:"imperative-api"});compareLayouts(i,u)||(y(u),E.current.layout=u,n&&n(u),callPanelCallbacks(a,u,v.current))},[]),j=useCallback2((t,r)=>{let{layout:n,panelDataArray:i}=E.current,{collapsedSize:a=0,collapsible:o}=r,{collapsedSize:s=0,collapsible:l,maxSize:u=100,minSize:d=0}=t.constraints,{panelSize:c}=panelDataHelper(i,t,n);null!=c&&(o&&l&&fuzzyNumbersEqual$1(c,a)?fuzzyNumbersEqual$1(a,s)||M(t,s):c<d?M(t,d):c>u&&M(t,u))},[M]),N=useCallback2((t,r)=>{let{direction:n}=x.current,{layout:i}=E.current;if(!p.current)return;let a=getResizeHandleElement(t,p.current);assert(a,`Drag handle element not found for id "${t}"`);let o=getResizeEventCursorPosition(n,r);g({dragHandleId:t,dragHandleRect:a.getBoundingClientRect(),initialCursorPosition:o,initialLayout:i})},[]),B=useCallback2(()=>{g(null)},[]),L=useCallback2(t=>{let{panelDataArray:r}=E.current,n=findPanelDataIndex(r,t);n>=0&&(r.splice(n,1),delete v.current[t.id],E.current.panelDataArrayChanged=!0,_())},[_]),D=useMemo5(()=>({collapsePanel:S,direction:i,dragState:m,expandPanel:C,getPanelSize:I,getPanelStyle:T,groupId:f,isPanelCollapsed:k,isPanelExpanded:P,reevaluatePanelConstraints:j,registerPanel:R,registerResizeHandle:O,resizePanel:M,startDragging:N,stopDragging:B,unregisterPanel:L,panelGroupElement:p.current}),[S,m,i,C,I,T,f,k,P,j,R,O,M,N,B,L]),U={display:"flex",flexDirection:"horizontal"===i?"row":"column",height:"100%",overflow:"hidden",width:"100%"};return createElement(PanelGroupContext.Provider,{value:D},createElement(c,{...h,children:r,className:n,id:o,ref:p,style:{...U,...d},"data-panel-group":"","data-panel-group-direction":i,"data-panel-group-id":f}))}var PanelGroup=forwardRef((t,r)=>createElement(PanelGroupWithForwardedRef,{...t,forwardedRef:r}));function findPanelDataIndex(t,r){return t.findIndex(t=>t===r||t.id===r.id)}function panelDataHelper(t,r,n){let i=findPanelDataIndex(t,r),a=i===t.length-1?[i-1,i]:[i,i+1],o=n[i];return{...r.constraints,panelSize:o,pivotIndices:a}}function useWindowSplitterResizeHandlerBehavior({disabled:t,handleId:r,resizeHandler:n,panelGroupElement:i}){useEffect7(()=>{if(t||null==n||null==i)return;let a=getResizeHandleElement(r,i);if(null==a)return;let o=t=>{if(!t.defaultPrevented)switch(t.key){case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"End":case"Home":t.preventDefault(),n(t);break;case"F6":{t.preventDefault();let n=a.getAttribute("data-panel-group-id");assert(n,`No group element found for id "${n}"`);let o=getResizeHandleElementsForGroup(n,i),s=getResizeHandleElementIndex(n,r,i);assert(null!==s,`No resize element found for id "${r}"`),o[t.shiftKey?s>0?s-1:o.length-1:s+1<o.length?s+1:0].focus()}}};return a.addEventListener("keydown",o),()=>{a.removeEventListener("keydown",o)}},[i,t,r,n])}function PanelResizeHandle({children:t=null,className:r="",disabled:n=!1,hitAreaMargins:i,id:a,onBlur:o,onDragging:s,onFocus:l,style:u={},tabIndex:d=0,tagName:c="div",...h}){var f,p;let m=useRef5(null),g=useRef5({onDragging:s});useEffect7(()=>{g.current.onDragging=s});let b=useContext(PanelGroupContext);if(null===b)throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");let{direction:y,groupId:_,registerResizeHandle:v,startDragging:A,stopDragging:w,panelGroupElement:x}=b,E=useUniqueId(a),[S,C]=useState7("inactive"),[I,T]=useState7(!1),[k,P]=useState7(null),R=useRef5({state:S});useIsomorphicLayoutEffect(()=>{R.current.state=S}),useEffect7(()=>{if(n)P(null);else{let t=v(E);P(()=>t)}},[n,E,v]);let O=null!=(f=null==i?void 0:i.coarse)?f:15,M=null!=(p=null==i?void 0:i.fine)?p:5;return useEffect7(()=>{if(n||null==k)return;let t=m.current;return assert(t,"Element ref not attached"),registerResizeHandle(E,t,y,{coarse:O,fine:M},(t,r,n)=>{if(r)switch(t){case"down":{C("drag"),A(E,n);let{onDragging:t}=g.current;t&&t(!0);break}case"move":{let{state:t}=R.current;"drag"!==t&&C("hover"),k(n);break}case"up":{C("hover"),w();let{onDragging:t}=g.current;t&&t(!1)}}else C("inactive")})},[O,y,n,M,v,E,k,A,w]),useWindowSplitterResizeHandlerBehavior({disabled:n,handleId:E,resizeHandler:k,panelGroupElement:x}),createElement(c,{...h,children:t,className:r,id:a,onBlur:()=>{T(!1),null==o||o()},onFocus:()=>{T(!0),null==l||l()},ref:m,role:"separator",style:{touchAction:"none",userSelect:"none",...u},tabIndex:d,"data-panel-group-direction":y,"data-panel-group-id":_,"data-resize-handle":"","data-resize-handle-active":"drag"===S?"pointer":I?"keyboard":void 0,"data-resize-handle-state":S,"data-panel-resize-handle-enabled":!n,"data-panel-resize-handle-id":E})}PanelGroupWithForwardedRef.displayName="PanelGroup",PanelGroup.displayName="forwardRef(PanelGroup)",PanelResizeHandle.displayName="PanelResizeHandle";var import_jsx_runtime19=__toESM(require_jsx_runtime()),Describer=t=>{let{uiContext:r}=t,n=r.screenshotBase64,i=(0,import_react10.useRef)(null),[a,o]=(0,import_react10.useState)([]),[s,l]=(0,import_react10.useState)(),[u,d]=(0,import_react10.useState)(),[c,h]=(0,import_react10.useState)(!1),[f,p]=(0,import_react10.useState)(),m=useStaticPageAgent(r);(0,import_react10.useEffect)(()=>{let t=i.current;if(!t||!n)return;let r=t.getContext("2d");if(!r)return;let a=new Image;a.onload=()=>{t.width=a.width,t.height=a.height,r.drawImage(a,0,0)},a.src=n},[n]);let g="";return u?g=u:f&&!f.verifyResult?.pass?g=`Locate failed with prompt: ${f.prompt}`:f?g=f.deepThink?`Deep think: ${f.prompt}`:f.prompt:c&&(g="Loading..."),(0,import_jsx_runtime19.jsx)("div",{className:"image-describer",children:(0,import_jsx_runtime19.jsxs)(PanelGroup,{autoSaveId:"describer-layout",direction:"horizontal",children:[(0,import_jsx_runtime19.jsx)(Panel,{defaultSize:32,maxSize:60,minSize:20,style:{paddingRight:"24px"},children:(0,import_jsx_runtime19.jsxs)("div",{className:"form-part context-panel",children:[(0,import_jsx_runtime19.jsx)("h3",{children:"Screenshot"}),(0,import_jsx_runtime19.jsx)("div",{className:"form-sub-title",children:"Click on the screenshot, Midscene will help you describe the element at the clicked point."}),(0,import_jsx_runtime19.jsx)(Blackboard,{uiContext:{...r,tree:{node:null,children:[]}},highlightPoints:a,highlightRect:s,onCanvasClick:async t=>{if(m){h(!0),d(void 0),p(void 0),o([]),l(void 0);try{let r=[t[0],t[1]];o([r]);let n=await m?.describeElementAtPoint(r);import_console_browserify.default.log("describe result",n),p(n),n.verifyResult?.rect&&l(n.verifyResult.rect)}catch(t){d(t.message)}finally{h(!1)}}else import_console_browserify.default.error("agent is not initialized")},hideController:!0})]})}),(0,import_jsx_runtime19.jsx)(PanelResizeHandle,{className:"panel-resize-handle"}),(0,import_jsx_runtime19.jsx)(Panel,{children:(0,import_jsx_runtime19.jsx)(PlaygroundResultView,{result:{result:g,error:u||null},loading:c,serverValid:!0,serviceMode:"In-Browser",replayScriptsInfo:null,replayCounter:0,loadingProgressText:""})})]})})}},9084:function(t,r,n){var i=n(1549),a=n(4194),o=n(8082),s=n(8409),l=n(7966),u=n(5222),d=n(247),c=n(2957),h=n(9576),f=n(6327),p=n(3636),m=n(4465),g=n(2726),b=n(3876),y=n(3648),_=n(4838),v=n(8941);let A=t=>(0,i.jsx)("span",{className:"status-dot",style:{color:t},children:"●"}),w=t=>{var r,n,o;let{devices:s,loadingDevices:l,selectedDeviceId:d,onDeviceSelect:c,socketRef:f,scrcpyPlayerRef:p}=t,[m,g]=(0,a.useState)(!1),w=(0,a.useRef)(null),[x,E]=h.ZP.useMessage(),S=(0,u.useServerValid)(!0),C=(0,a.useCallback)(t=>{t!==w.current&&f.current&&f.current.connected&&(g(!1),c(t),w.current=t)},[c,f]),I=(0,a.useCallback)(()=>{p.current&&(p.current.disconnectDevice(),x.info("Device disconnected"))},[p,x]),T=!!d&&(null==(r=s.find(t=>t.id===d))?void 0:r.status.toLowerCase())!=="device";return(0,a.useEffect)(()=>{T&&d&&I()},[T,d,I,x]),(0,i.jsxs)("div",{className:"device-header",children:[E,(0,i.jsxs)("div",{className:"device-title-container",children:[(0,i.jsx)("h2",{className:"device-title",children:"Device"}),(0,i.jsx)(y.Z,{trigger:["click"],placement:"bottomLeft",open:m,onOpenChange:g,dropdownRender:()=>(0,i.jsxs)("div",{className:"device-dropdown",children:[(0,i.jsx)("div",{className:"dropdown-header",children:(0,i.jsx)("span",{className:"dropdown-title",children:"Devices list"})}),(0,i.jsxs)("div",{className:"device-list",children:[s.map(t=>(0,i.jsx)("div",{onClick:()=>{"device"===t.status.toLowerCase()&&C(t.id)},className:`device-list-item ${"device"===t.status.toLowerCase()&&d===t.id?"selected":""} ${"device"!==t.status.toLowerCase()?"offline":""}`,children:(0,i.jsxs)("div",{className:"device-item-content",children:[(0,i.jsx)("div",{className:"device-item-icon-container",children:(0,i.jsx)(b.Z,{className:"device-item-icon"})}),(0,i.jsxs)("div",{className:"device-item-info",children:[(0,i.jsx)("div",{className:"device-item-name",children:t.name||t.id}),(0,i.jsxs)("div",{className:"device-item-status",children:[(0,i.jsx)("div",{className:"status-badge",children:"device"===t.status.toLowerCase()?(0,i.jsxs)(i.Fragment,{children:[A("#52c41a"),(0,i.jsx)("span",{className:"status-text",children:"Online"})]}):(0,i.jsxs)(i.Fragment,{children:[A("#f5222d"),(0,i.jsx)("span",{className:"status-text",children:"Offline"})]})}),(0,i.jsx)(_.Z,{type:"vertical",className:"status-divider"}),(0,i.jsxs)("div",{className:"device-id-container",children:["Device ID: ",t.id]})]})]}),"device"===t.status.toLowerCase()&&d===t.id&&(0,i.jsx)("div",{className:"current-device-indicator",children:"Current device"})]})},t.id)),0===s.length&&(0,i.jsx)("div",{className:"device-list-empty",children:"No devices found"})]})]}),children:(0,i.jsxs)(v.ZP,{className:"device-dropdown-button",children:[(0,i.jsxs)("div",{className:"device-icon-container",children:[(0,i.jsx)(b.Z,{className:"device-icon"}),d&&S&&(0,i.jsx)("div",{className:"status-indicator",children:(null==(n=s.find(t=>t.id===d))?void 0:n.status.toLowerCase())==="device"?(0,i.jsx)(i.Fragment,{children:A("#52c41a")}):(0,i.jsx)(i.Fragment,{children:A("#f5222d")})})]}),d&&!T&&S?(0,i.jsx)("span",{className:"device-name",children:(null==(o=s.find(t=>t.id===d))?void 0:o.name)||d}):(0,i.jsx)("span",{className:"device-name no-device",children:"No device"}),(0,i.jsx)("span",{className:"dropdown-arrow",children:"▼"})]})})]})]})};var x=n(7379),E=n(2882),S=n(1138),C=n(2686),I=n(2688),T=n(1547),k=n(6112),P=n(8275),R=n(3405);let O=t=>(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16",...t,children:(0,i.jsx)("path",{fill:"#000",fillOpacity:.25,fillRule:"evenodd",d:"M9.68 2c1.2-1.2 3.2-1.28 4.4-.08s1.12 3.2-.08 4.4l-2.16 2.16c-.24.24-.56.24-.8 0s-.24-.56 0-.8l2.16-2.16c.8-.8.8-2.08.08-2.8s-2-.72-2.8.08L8.32 4.96c-.24.24-.56.24-.8 0s-.24-.56 0-.8zM5.6 13.2l2.16-2.16c.24-.24.56-.24.8 0s.24.56 0 .8L6.4 14c-1.2 1.2-3.12 1.36-4.4.08-1.36-1.28-1.2-3.2.08-4.4l2.16-2.16c.24-.24.56-.24.8 0s.24.56 0 .8l-2.16 2.16c-.8.8-.88 2-.08 2.8s2 .72 2.8-.08m4.64-8.24c.24-.24.64-.24.96 0 .24.24.24.64 0 .96L5.92 11.2c-.24.24-.64.24-.96 0-.24-.24-.24-.64 0-.96z",clipRule:"evenodd"})}),M=t=>(0,i.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16",...t,children:[(0,i.jsxs)("g",{fill:"#606266",clipPath:"url(#screenshot_svg__a)",children:[(0,i.jsx)("path",{d:"m4.883 2.663-.858 2.001h-2.69v8.673h13.341V4.664H11.32l-.859-2zm-1.738.667.858-2.001h7.338l.858 2.001h2.477a1.334 1.334 0 0 1 1.334 1.334v8.673a1.335 1.335 0 0 1-1.334 1.334H1.334A1.334 1.334 0 0 1 0 13.337V4.664A1.334 1.334 0 0 1 1.334 3.33z"}),(0,i.jsx)("path",{d:"M8.005 10.001a1.334 1.334 0 1 0 0-2.668 1.334 1.334 0 0 0 0 2.668m0 1.335a2.668 2.668 0 1 1 0-5.337 2.668 2.668 0 0 1 0 5.337m3.336-6.004h.667q.667 0 .667.667 0 .666-.667.667h-.667q-.667 0-.667-.667t.667-.667"})]}),(0,i.jsx)("defs",{children:(0,i.jsx)("clipPath",{id:"screenshot_svg__a",children:(0,i.jsx)("path",{fill:"#fff",d:"M0 0h16v16H0z"})})})]}),j=t=>(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16",...t,children:(0,i.jsx)("path",{fill:"#FF4550",d:"M14.08 1.92C12.88.72 10.88.8 9.68 2L7.52 4.16c-.24.24-.24.56 0 .8s.56.24.8 0l2.16-2.16c.8-.8 2.08-.8 2.8-.08s.72 2-.08 2.8l-2.16 2.16c-.24.24-.24.56 0 .8s.56.24.8 0L14 6.32c1.2-1.2 1.28-3.2.08-4.4m-6.32 9.12L5.6 13.2c-.8.8-2 .88-2.8.08s-.72-2 .08-2.8l2.16-2.16c.24-.24.24-.56 0-.8s-.56-.24-.8 0L2.08 9.68C.8 10.88.64 12.8 2 14.08c1.28 1.28 3.2 1.12 4.4-.08l2.16-2.16c.24-.24.24-.56 0-.8s-.56-.24-.8 0M5.92 4.96c-.24-.24-.64-.24-.96 0-.24.24-.24.64 0 .96l5.28 5.28c.24.24.64.24.96 0 .24-.24.24-.64 0-.96z"})}),{Text:N}=T.Z,B=(0,a.forwardRef)((t,r)=>{let{serverUrl:n,maxSize:o=1024,autoConnect:s=!0,autoReconnect:l=!0,reconnectInterval:d=5e3,onConnectionStatusChange:c}=t,[f,b]=(0,a.useState)(!1),[y,A]=(0,a.useState)(!1),[w,T]=(0,a.useState)(null),[B,L]=(0,a.useState)(""),D=(0,a.useRef)(null),U=(0,a.useRef)(null),F=(0,a.useRef)(null),z=(0,a.useRef)(null),G=(0,a.useRef)(null),H=(0,a.useRef)(null),q=(0,u.useServerValid)(!0),V=(0,a.useCallback)(t=>{if(t)try{for(;t.firstChild;)try{t.removeChild(t.firstChild)}catch(r){if(console.warn("Failed to remove child, skipping:",r),t.firstChild){t.innerHTML="";break}}}catch(r){console.error("Error clearing container:",r);try{t.innerHTML=""}catch(t){console.error("Failed to reset innerHTML:",t)}}},[]),W=(0,a.useCallback)(()=>{if(!F.current||!U.current||!w)return;let t=U.current,r=F.current,n=t.clientWidth,i=t.clientHeight,{width:a,height:o}=w,s=i-40,l=a/o,u=n,d=n/l;d>s&&(d=s,u=s*l),r.width=a,r.height=o,r.style.width=`${u}px`,r.style.height=`${d}px`,r.style.marginTop="20px",r.style.marginBottom="20px"},[w]);(0,a.useEffect)(()=>{let t=()=>{W()};return window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[W]),(0,a.useEffect)(()=>{W()},[w,W]);let $=async()=>{if(C.P.isSupported){let t=new C.P;return{renderer:t,element:t.canvas}}let t=new I.I;return{renderer:t,element:t.canvas}},K=async t=>{if(!S.h.isSupported)throw Error("Current browser does not support WebCodecs API, please use the latest version of Chrome/Edge browser");let{renderer:r,element:n}=await $();if(F.current=n,U.current){let t=U.current.querySelector(".canvas-wrapper");t&&(V(t),t.appendChild(F.current))}return new S.h({codec:t,renderer:r})},Z=t=>{let r=!1,n=[],i=new TransformStream({transform(t,i){let a={type:t.type,data:new Uint8Array(t.data),timestamp:t.timestamp};"configuration"===a.type?(i.enqueue(a),r=!0,n.length>0&&(n.forEach(t=>i.enqueue(t)),n=[])):"data"===a.type?r?i.enqueue(a):n.push(a):i.enqueue(a)}});return new ReadableStream({start(t){let r=!1,n=n=>{if(!r)try{t.enqueue(n)}catch(t){console.error("error occurred while enqueuing video data:",t),r=!0,o()}},i=n=>{console.error("stream error:",n),r||(t.error(Error(n.message)),r=!0,o())},a=()=>{r||(t.close(),r=!0,o())},o=()=>{D.current&&(D.current.off("video-data",n),D.current.off("error",i),D.current.off("disconnect",a))};return D.current&&(D.current.on("video-data",n),D.current.on("error",i),D.current.on("disconnect",a)),()=>{r=!0,o()}}}).pipeThrough(i)},X=async()=>{if(z.current)try{let t=await z.current.snapshot();if(t){let r=URL.createObjectURL(t),n=document.createElement("a");n.href=r,n.download=`screenshot_${new Date().toISOString().replace(/:/g,"-")}.png`,n.click(),URL.revokeObjectURL(r)}}catch(t){console.error("screenshot failed:",t),alert("screenshot failed")}},Y=(0,a.useCallback)(()=>{if(z.current)try{z.current.dispose(),z.current=null}catch(t){console.error("Error disposing decoder:",t)}U.current&&V(U.current.querySelector(".canvas-wrapper")),D.current&&(D.current.disconnect(),D.current=null),G.current&&(clearTimeout(G.current),G.current=null),H.current&&(clearTimeout(H.current),H.current=null),A(!1),b(!1),T(null)},[V]);(0,a.useImperativeHandle)(r,()=>({disconnectDevice:Y}),[Y]);let J=(0,a.useCallback)(async()=>{try{if(Y(),A(!1),b(!0),T(null),await new Promise(t=>setTimeout(t,150)),!n){console.error("Cannot connect: missing server URL"),b(!1),null==c||c(!1);return}let t=()=>{H.current&&(clearTimeout(H.current),H.current=null),H.current=setTimeout(()=>{var r;if(null==(r=D.current)?void 0:r.connected)try{D.current.emit("connect-device",{maxSize:o}),t()}catch(t){console.error("Failed to request connection:",t),null==c||c(!1),h.ZP.error("connection request failed, please refresh the page")}else{null==c||c(!1);try{D.current&&setTimeout(()=>{D.current&&D.current.connect()},500)}catch(t){console.error("Failed to reconnect:",t),h.ZP.error("reconnection failed, please refresh the page")}}},5e3)};if(D.current)D.current.connected?(D.current.emit("connect-device",{maxSize:o}),t()):D.current.connect();else try{D.current=(0,g.io)(n,{withCredentials:!0,reconnection:!0,reconnectionAttempts:5,reconnectionDelay:1e3,timeout:1e4}),D.current.on("connect",()=>{var r,n;null==c||c(!0),(null==(r=D.current)?void 0:r.id)&&L(D.current.id),G.current&&(clearTimeout(G.current),G.current=null),null==(n=D.current)||n.emit("connect-device",{maxSize:o}),t()}),D.current.on("video-metadata",async t=>{try{if(H.current&&(clearTimeout(H.current),H.current=null),z.current)try{z.current.dispose(),z.current=null}catch(t){console.error("Error disposing old decoder:",t)}if(U.current){let t=U.current.querySelector(".canvas-wrapper");V(t)}let r=(null==t?void 0:t.codec)?t.codec:E.W.H264;if(z.current=await K(r),!z.current)throw Error("Failed to create decoder");z.current.sizeChanged(t=>{let{width:r,height:n}=t;T({width:r,height:n})}),Z(t).pipeTo(z.current.writable).catch(t=>{console.error("video stream processing error:",t),null==c||c(!1)}),A(!0),b(!1),null==c||c(!0)}catch(t){console.error("Failed to initialize decoder:",t),b(!1),null==c||c(!1)}}),D.current.on("error",t=>{console.error("server error:",t),h.ZP.error("server error"),b(!1),null==c||c(!1),H.current&&(clearTimeout(H.current),H.current=null)}),D.current.on("disconnect",()=>{A(!1),null==c||c(!1),H.current&&(clearTimeout(H.current),H.current=null),z.current&&(z.current.dispose(),z.current=null),U.current&&V(U.current.querySelector(".canvas-wrapper")),l&&!G.current&&(G.current=setTimeout(()=>{G.current=null,J()},d))})}catch(t){console.error("Failed to create socket connection:",t),b(!1),null==c||c(!1),l&&!G.current&&(G.current=setTimeout(()=>{G.current=null,J()},d))}}catch(t){b(!1),null==c||c(!1),console.error(`Failed to connect: ${t.message}`),h.ZP.error("connection failed"),l&&!G.current&&(G.current=setTimeout(()=>{G.current=null,J()},d))}},[n,o,l,d,c,Y]);return(0,a.useEffect)(()=>{if(s&&!y&&!f){let t=setTimeout(()=>{J()},300);return()=>clearTimeout(t)}},[s,y,f,J]),(0,a.useEffect)(()=>()=>{if(null==c||c(!1),z.current)try{z.current.dispose(),z.current=null}catch(t){console.error("Error disposing decoder during unmount:",t)}if(U.current)try{let t=U.current.querySelector(".canvas-wrapper");t&&(t.innerHTML="")}catch(t){console.error("Error clearing canvas wrapper during unmount:",t)}D.current&&(D.current.disconnect(),D.current=null),G.current&&(clearTimeout(G.current),G.current=null),H.current&&(clearTimeout(H.current),H.current=null)},[c]),(0,i.jsx)("div",{className:"scrcpy-container",children:(0,i.jsxs)(k.Z,{children:[y&&(0,i.jsxs)("div",{className:"header-bar",children:[(0,i.jsxs)("div",{className:"header-left",children:[(0,i.jsx)(N,{style:{fontWeight:600,fontSize:12},children:"Screen Projection"}),(0,i.jsx)(P.Z,{placement:"bottom",title:`Device ID: ${B||"Unknown"}`,children:(0,i.jsx)(x.Z,{})})]}),(0,i.jsx)("div",{className:"screen-info",children:(0,i.jsxs)(N,{type:"secondary",children:["size : ",null==w?void 0:w.width,"\xd7",null==w?void 0:w.height]})}),(0,i.jsxs)("div",{className:"header-right",children:[(0,i.jsx)(P.Z,{placement:"bottom",title:"Screenshot",children:(0,i.jsx)(v.ZP,{icon:(0,i.jsx)(M,{}),onClick:X})}),(0,i.jsx)(_.Z,{type:"vertical",style:{margin:"0 16px"}}),(0,i.jsx)(P.Z,{placement:"bottom",title:"Connect Device",children:(0,i.jsx)(v.ZP,{disabled:y,style:{backgroundColor:"#fff"},icon:(0,i.jsx)(O,{}),onClick:J})}),y&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(_.Z,{type:"vertical",style:{margin:"0 16px"}}),(0,i.jsx)(P.Z,{title:"Disconnect Device",children:(0,i.jsx)(v.ZP,{icon:(0,i.jsx)(j,{}),onClick:Y})})]})]})]}),(0,i.jsx)(p.Z,{gutter:[16,16],children:(0,i.jsx)(m.Z,{span:24,children:(0,i.jsx)("div",{className:"video-section",children:(0,i.jsxs)("div",{ref:U,className:"video-container",children:[(0,i.jsx)("div",{className:"canvas-wrapper"}),!y&&q&&(0,i.jsxs)("div",{className:"empty-state",children:[(0,i.jsx)("div",{className:"empty-state-icon",children:"\uD83D\uDCF1"}),(0,i.jsx)("div",{className:"empty-state-text",children:f?"Connecting to device...":"No device connected"}),!f&&(0,i.jsx)(v.ZP,{type:"primary",onClick:()=>{J()},children:"Connect now"}),f&&(0,i.jsx)("div",{className:"loading-spinner",children:(0,i.jsx)(R.Z,{size:"large"})})]}),!q&&(0,i.jsx)("span",{children:"Please launch playground server!"})]})})})})]})})}),{Content:L}=d.Z,D=`http://localhost:${s.SCRCPY_SERVER_PORT}`;function U(){let[t]=c.Z.useForm(),r=c.Z.useWatch("type",t),[n,o]=(0,a.useState)(!1),[s,b]=(0,a.useState)(null),[y,_]=(0,a.useState)(!1),[v,A]=(0,a.useState)([]),[x,E]=(0,a.useState)(!0),S=(0,a.useRef)(null),[C,I]=h.ZP.useMessage(),[T,k]=(0,a.useState)(!1),[P,R]=(0,a.useState)({result:void 0,dump:null,reportHTML:null,error:null}),[O,M]=(0,a.useState)(0),[j,N]=(0,a.useState)(null),{config:U,deepThink:F}=(0,u.useEnvConfig)(),[z,G]=(0,a.useState)(""),H=(0,a.useRef)(null),q=(0,a.useRef)(null),V=Object.keys(U||{}).length>=1,W=(0,u.useServerValid)(!0),$=(0,a.useRef)(null),K=(0,a.useRef)(null),Z=(0,a.useCallback)(()=>{q.current&&(clearInterval(q.current),q.current=null)},[]);(0,a.useEffect)(()=>{let t=(0,g.io)(D,{withCredentials:!0,reconnectionAttempts:5,reconnectionDelay:1e3,timeout:5e3});t.on("connect",()=>{t.emit("get-devices")}),t.on("disconnect",t=>{E(!0)}),t.on("devices-list",t=>{A(t.devices),t.currentDeviceId&&(b(t.currentDeviceId),1===t.devices.length&&X(t.devices[0].id,!0)),E(!1)}),t.on("global-device-switched",t=>{b(t.deviceId)}),t.on("connect_error",t=>{console.error("Socket.IO connection error:",t),C.error("Waiting for device server connection, please try again later"),E(!1)}),t.on("error",t=>{console.error("Socket.IO error:",t),C.error(`Error occurred while communicating with the server: ${t.message||"Unknown error"}`)}),$.current=t;let r=setTimeout(()=>{t.connected&&t.emit("get-devices")},2e3);return()=>{clearTimeout(r),t.disconnect()}},[C]);let X=(0,a.useCallback)(function(t){let r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(t!==S.current){if(!$.current||!$.current.connected)return void C.warning("Waiting for device server connection, please try again later");_(!1),k(!1),R(null),N(null),o(!1),Z(),setTimeout(()=>{if(b(t),S.current=t,E(!0),$.current){$.current.emit("switch-device",t);let n=setTimeout(()=>{E(!1),C.error("Device switch timeout, please try again")},1e4);$.current.once("device-switched",()=>{clearTimeout(n),E(!1),setTimeout(()=>{_(!0),r||C.success(`Device selected: ${t}`)},500)}),$.current.once("error",t=>{clearTimeout(n),E(!1),C.error(`Device switch failed: ${t.message}`)})}else E(!1),C.error("Socket connection lost, please refresh the page")},500)}},[C,Z]),Y=(0,a.useCallback)(t=>{Z(),q.current=setInterval(async()=>{try{let r=await (0,u.getTaskProgress)(t);r.tip&&G(r.tip)}catch(t){console.error("Failed to poll task progress:",t)}},500)},[Z]);(0,a.useEffect)(()=>()=>{Z()},[Z]);let J=(0,a.useCallback)(t=>{k(t),t&&s&&!y&&setTimeout(()=>{_(!0)},100)},[s]);(0,a.useEffect)(()=>{if(y){let t=setTimeout(()=>{s===S.current&&_(!1)},800);return()=>clearTimeout(t)}},[y,s]),(0,a.useEffect)(()=>{(0,l.overrideAIConfig)(U),(0,u.overrideServerConfig)(U)},[U]);let Q=(0,a.useCallback)(async()=>{if(!s)return void C.warning("Please select a device first");if(!T)return void C.warning("Waiting for connection establishment, please try again later");o(!0),R(null),N(null),G("");let{type:r,prompt:n}=t.getFieldsValue(),i=Date.now().toString();H.current=i,Y(i);try{let t=await (0,u.requestPlaygroundServer)(s,r,n,{requestId:i,deepThink:F});if(Z(),R(t),o(!1),!t)throw Error("server returned empty response");if((null==t?void 0:t.dump)&&!["aiQuery","aiAssert"].includes(r)){let r=(0,u.allScriptsFromDump)(t.dump);N(r),M(t=>t+1)}else N(null);C.success("Command executed")}catch(t){Z(),o(!1),console.error("execute command error:",t),C.error(`Command execution failed: ${t instanceof Error?t.message:"Unknown error"}`)}},[s,C,T,t,Y,Z,F]),ee=()=>{R(null),N(null),o(!1)},et=(0,a.useCallback)(async()=>{Z(),o(!1),ee(),H.current&&await (0,u.cancelTask)(H.current),C.info("Operation stopped")},[C,Z]);return(0,i.jsxs)(f.ZP,{theme:(0,u.globalThemeConfig)(),children:[I,(0,i.jsx)(d.Z,{className:"app-container playground-container vertical-mode",children:(0,i.jsx)(L,{className:"app-content",children:(0,i.jsx)("div",{className:"app-grid-layout",children:(0,i.jsxs)(p.Z,{className:"app-grid-layout",children:[(0,i.jsx)(m.Z,{className:"app-panel left-panel",children:(0,i.jsxs)("div",{className:"panel-content left-panel-content",children:[(0,i.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"10px"},children:[(0,i.jsx)(u.Logo,{}),(0,i.jsx)(u.EnvConfig,{})]}),(0,i.jsx)("h2",{children:"Command input"}),(0,i.jsx)(c.Z,{form:t,className:"command-form",children:(0,i.jsxs)("div",{className:"form-content",children:[(0,i.jsx)("div",{className:"command-input-wrapper",children:(0,i.jsx)(u.PromptInput,{runButtonEnabled:!!s&&V,form:t,serviceMode:"Server",selectedType:r,dryMode:!1,stoppable:n,loading:n,onRun:Q,onStop:et})}),(0,i.jsx)("div",{className:"result-container",style:P?{}:{border:"1px solid #0000001f",borderRadius:"8px"},children:(0,i.jsx)(u.PlaygroundResultView,{result:P,loading:n,serverValid:W,serviceMode:"Server",replayScriptsInfo:j,replayCounter:O,loadingProgressText:z,verticalMode:!1,notReadyMessage:(0,i.jsxs)("span",{children:["Don't worry, just one more step to launch the playground server.",(0,i.jsx)("br",{}),(0,i.jsx)("strong",{children:"npx --yes @midscene/android-playground"})]})})})]})})]})}),(0,i.jsx)(m.Z,{className:"app-panel right-panel",children:(0,i.jsxs)("div",{className:"panel-content right-panel-content",children:[(0,i.jsx)(w,{devices:v,loadingDevices:x,selectedDeviceId:s,onDeviceSelect:X,socketRef:$,scrcpyPlayerRef:K}),(0,i.jsx)(B,{ref:K,serverUrl:D,autoConnect:y,onConnectionStatusChange:J})]})})]})})})})]})}let F=document.getElementById("root");F&&o.createRoot(F).render((0,i.jsx)(U,{}))},7752:function(t,r,n){n.r(r),n.d(r,{default:()=>i});let i={}}},__webpack_module_cache__={};function __webpack_require__(t){var r=__webpack_module_cache__[t];if(void 0!==r)return r.exports;var n=__webpack_module_cache__[t]={exports:{}};return __webpack_modules__[t].call(n.exports,n,n.exports,__webpack_require__),n.exports}__webpack_require__.m=__webpack_modules__,(()=>{__webpack_require__.n=t=>{var r=t&&t.__esModule?()=>t.default:()=>t;return __webpack_require__.d(r,{a:r}),r}})(),(()=>{var t,r=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__;__webpack_require__.t=function(n,i){if(1&i&&(n=this(n)),8&i||"object"==typeof n&&n&&(4&i&&n.__esModule||16&i&&"function"==typeof n.then))return n;var a=Object.create(null);__webpack_require__.r(a);var o={};t=t||[null,r({}),r([]),r(r)];for(var s=2&i&&n;"object"==typeof s&&!~t.indexOf(s);s=r(s))Object.getOwnPropertyNames(s).forEach(t=>{o[t]=()=>n[t]});return o.default=()=>n,__webpack_require__.d(a,o),a}})(),(()=>{__webpack_require__.d=(t,r)=>{for(var n in r)__webpack_require__.o(r,n)&&!__webpack_require__.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})}})(),(()=>{__webpack_require__.u=t=>"static/js/async/"+t+".834644b5.js"})(),(()=>{__webpack_require__.g=(()=>{if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(t){if("object"==typeof window)return window}})()})(),(()=>{__webpack_require__.o=(t,r)=>Object.prototype.hasOwnProperty.call(t,r)})(),(()=>{__webpack_require__.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}})(),(()=>{var t=[];__webpack_require__.O=(r,n,i,a)=>{if(n){a=a||0;for(var o=t.length;o>0&&t[o-1][2]>a;o--)t[o]=t[o-1];t[o]=[n,i,a];return}for(var s=1/0,o=0;o<t.length;o++){for(var[n,i,a]=t[o],l=!0,u=0;u<n.length;u++)(!1&a||s>=a)&&Object.keys(__webpack_require__.O).every(t=>__webpack_require__.O[t](n[u]))?n.splice(u--,1):(l=!1,a<s&&(s=a));if(l){t.splice(o--,1);var d=i();void 0!==d&&(r=d)}}return r}})(),(()=>{__webpack_require__.p="/"})(),(()=>{__webpack_require__.rv=()=>"1.3.12"})(),(()=>{__webpack_require__.b=document.baseURI||self.location.href;var t={980:0};__webpack_require__.O.j=r=>0===t[r];var r=(r,n)=>{var i,a,[o,s,l]=n,u=0;if(o.some(r=>0!==t[r])){for(i in s)__webpack_require__.o(s,i)&&(__webpack_require__.m[i]=s[i]);if(l)var d=l(__webpack_require__)}for(r&&r(n);u<o.length;u++)a=o[u],__webpack_require__.o(t,a)&&t[a]&&t[a][0](),t[a]=0;return __webpack_require__.O(d)},n=self.webpackChunkandroid_playground=self.webpackChunkandroid_playground||[];n.forEach(r.bind(null,0)),n.push=r.bind(null,n.push.bind(n))})(),(()=>{__webpack_require__.ruid="bundler=rspack@1.3.12"})();var __webpack_exports__=__webpack_require__.O(void 0,["361","770"],function(){return __webpack_require__(9084)});__webpack_exports__=__webpack_require__.O(__webpack_exports__)})();
907
- //# sourceMappingURL=index.59be8a4e.js.map
907
+ //# sourceMappingURL=index.59821346.js.map