momentic 3.12.0 → 3.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/cli.js +8 -8
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
- package/run-viewer-static/assets/index-B4I3eX7h.css +1 -0
- package/run-viewer-static/assets/{index-COZGvCgD.js → index-e3rbsDHq.js} +2 -2
- package/run-viewer-static/index.html +2 -2
- package/static/assets/index-B4I3eX7h.css +1 -0
- package/static/assets/{index-DiuWSiSU.js → index-qDNFV_K6.js} +259 -259
- package/static/index.html +2 -2
- package/run-viewer-static/assets/index-CySAbHI_.css +0 -1
- package/static/assets/index-CySAbHI_.css +0 -1
package/bin/cli.js
CHANGED
|
@@ -168,7 +168,7 @@ ${this.decisions.map(t=>t.toString()).join(`
|
|
|
168
168
|
`).map((o,r)=>r>0?`${n}${o}`:o).join(`
|
|
169
169
|
`)}logWithLevelHelper(t,n,...o){if(t<this.minLogLevel)return;let r=this.forcedStream??(t>=40?"stderr":"stdout"),i=(...d)=>r==="stderr"?console.error(...d):console.log(...d),s;Array.isArray(o[0])?(s=o[0],o=o.slice(1)):typeof o[0]=="object"&&!(o[0]instanceof Error)&&Object.entries(o[0]).length&&(s={...o[0],...this.logBindings},o=o.slice(1));let a=al.level===0,l=a&&t===50?"Error:":a&&t===40?"Warning:":"",c=[];if(l&&c.push(l),c.push(...o),i(n(...c)),s&&!Array.isArray(s)){let d=Object.entries(s);for(let[u,p]of d){let m=p;if(p instanceof Error){m=p.message,i(n(` ${u}:`,m)),i(n(" stack:",p.stack));let g=Object.entries(p).filter(([f])=>f!=="message"&&f!=="stack");for(let[f,y]of g){if(y instanceof Error){i(n(` ${u}.${f}:`,y.message)),y.stack&&i(n(` ${u}.${f}.stack:`,y.stack));continue}if(typeof y=="object"&&y!==null){let S=this.indentMultiline(ll(y,void 0,2)," ");i(n(` ${u}.${f}:`,S));continue}i(n(` ${u}.${f}:`,y));}}else typeof p=="object"?(m=ll(p,void 0,2),m=this.indentMultiline(m),i(n(` ${u}:`,m))):i(n(` ${u}:`,m));}}else if(s)for(let d of s){let u=d;typeof d=="object"&&(u=ll(d,void 0,2),u=u.split(`
|
|
170
170
|
`).map((p,m)=>m>0?` ${p}`:p).join(`
|
|
171
|
-
`)),i(" ",n(u));}}setMinLevel(t){typeof t=="string"?this.minLogLevel=QS[t]:this.minLogLevel=t;}setOutputStream(t){this.forcedStream=t;}log(...t){this.logWithLevel(30,al.reset,...t);}info(...t){this.logWithLevel(30,al.white,...t);}debug(...t){this.logWithLevel(20,al.dim,...t);}warn(...t){this.logWithLevel(40,al.yellow,...t);}error(...t){this.logWithLevel(50,al.red,...t);}success(...t){this.logWithLevel(30,al.green,...t);}dimmed(...t){this.logWithLevel(30,al.dim,...t);}underline(...t){this.logWithLevel(30,al.underline,...t);}bold(...t){this.logWithLevel(30,al.bold,...t);}grey(...t){this.logWithLevel(30,al.grey,...t);}child(t){let n=new e(this.minLogLevel,{...this.logBindings,...t});return n.forcedStream=this.forcedStream,n}async flush(){}bindings(){return this.logBindings}},R=aM._internalSingleton(),Vr={info:()=>{},error:()=>{},debug:()=>{},warn:()=>{},child:()=>Vr,flush:async()=>{},bindings:()=>({})},NC={},cM=({logger:e,logKey:t,maxCount:n,intervalMs:o},r,i,...s)=>{let a=NC[t];a?clearTimeout(a.timer):(a={count:0,totalCount:0},NC[t]=a),a.totalCount++,a.count<n&&(a.count++,e.debug(r,i,...s)),a.timer=setTimeout(()=>{let l=NC[t];l?.totalCount!==l?.count&&e.debug({logKey:t,totalCount:l?.totalCount,count:l?.count},`Debug logs were rate-limited for ${t}`),delete NC[t];},o);};var nV=1e4,oV=1,Eg=il.extend({browserType:z.enum(ac).optional(),slowMoMs:z.number().optional().refine(e=>e===void 0||e<=nV&&e>=-1,{message:`Slow motion must be between 0 and ${nV} milliseconds`}),basicAuthorization:z.object({username:z.string().optional(),password:z.string().optional()}).optional(),geolocation:z.object({latitude:z.number().refine(e=>e>=-90&&e<=90,{message:"Latitude must be between -90 and 90 degrees"}),longitude:z.number().refine(e=>e>=-180&&e<=180,{message:"Longitude must be between -180 and 180 degrees"})}).optional(),disableJavaScript:z.boolean().optional(),locale:z.string().optional(),timezone:z.enum(AC).optional(),colorScheme:z.enum(["light","dark"]).optional()}),rV=["extraHeaders","basicAuthorization","localChromeExtensionPaths","proxy"],dM=z.object({useMemory:z.boolean().optional(),failureRecovery:z.boolean().optional().describe("undefined means inherit org settings")}),uM=dM.extend({disableAICaching:z.boolean().optional(),failureRecoveryInstructions:z.string().optional()}),fge=z.object({viewport:fd.optional()}),Ns=fge.extend(uM.shape).extend(Eg.shape),LC=z.object({cron:z.string().refine(e=>isValidCron(e),{error:"Invalid cron expression."}).default("0 0 */1 * *"),enabled:z.boolean().default(false),env:z.string().optional(),timeZone:z.string().default("America/Los_Angeles"),jobKey:z.string().optional()}),kC=z.object({onSuccess:z.boolean().default(false),failureMessage:z.string().optional(),onFailure:z.boolean().default(true),successMessage:z.string().optional()}),yge=z.object({name:z.string(),required:z.boolean().optional(),defaultValue:z.string().describe("this is not optional because we need a value when the editor is first loaded")}),iV=yge.array(),Sge=z.object({name:z.string(),value:z.string()}),DC=Sge.array(),sV=z.object({name:z.string(),default:z.boolean().optional(),fixtures:L$.array().optional()});var ga=dM.extend({agentConfig:z.record(z.string(),z.string()).optional(),aiFailureAnalysis:z.boolean().optional(),classification:$G.optional(),triage:jG.optional(),healing:HE.optional(),explore:jE.optional(),select:V$.optional()}),bge=z.object({cliOnly:z.boolean().optional(),neverShowUsageBanner:z.boolean().optional(),hideInternalTraceInfo:z.boolean().optional(),bypassUsageLimits:z.boolean().optional()}),ZS=z.object({fakerConstantSeed:z.boolean().optional(),isolateCachesByEnvironment:z.boolean().optional()}),Tge=z.enum(["flaky_tests","low_test_coverage","frequent_bugs","fix_flaky_tests","migrate_tests","increase_test_coverage","catch_more_bugs"]),Age=z.enum(["ios","android","web"]),Ege=z.enum(["selenium","playwright","cypress","puppeteer","maestro","appium","detox","manual_qa","nothing_yet","other"]),Cge=z.enum(["advertisement","ai_search","google_search","hacker_news","linkedin","reddit","referral_from_customer","twitter_x","word_of_mouth","youtube","other"]),vge=z.object({helpIntents:z.array(Tge).optional(),helpIntentOtherText:z.string().optional(),deviceTypeIntent:Age.optional(),currentTestingTool:Ege.optional(),heardAboutSource:Cge.optional()}),Rge=z.object({discovery:vge.optional(),needsToCompleteOnboarding:z.boolean().optional(),wizardCompletedAt:z.iso.datetime().optional()}),Cg=z.object({ai:ga.optional(),githubAppInstallationId:z.number().nullish(),githubAppSummaryMessageEnabled:z.boolean().nullish(),githubReleaseAppInstallationId:z.number().nullish(),gitlabAppAccessToken:z.string().nullish(),gitlabAppBaseUrl:z.string().nullish(),browser:YO.optional(),internal:bge.optional(),advanced:ZS.optional(),onboarding:Rge.optional()});function aV(e){try{return Cg.parse(e)}catch{return R.warn("Cloud settings contain values this version of the CLI does not support. Please upgrade. Falling back to defaults."),Cg.parse({})}}z.object({globalOverrides:z.record(z.string(),z.string()).optional(),agentConfig:z.record(z.string(),z.string()).optional()});z.record(z.string(),z.string()).nullish();var cc=(n=>(n.CANNOT_FIX_TEST="CANNOT_FIX_TEST",n.FIXED="FIXED",n))(cc||{}),lV=z.object({index:z.int().nonnegative(),section:GO,step:Lt}),wge=z.object({additions:lV.array(),deletions:lV.array()}),eb=z.object({subAgentStatus:z.enum(cc).default("CANNOT_FIX_TEST"),rootCause:z.string(),solution:z.string(),verificationNotes:z.string().optional().default(""),diffs:wge.optional(),pullRequestUrl:z.string().optional(),branchUrl:z.string().optional()}),cV=eb.optional().catch(void 0),dV=z.object({subAgentStatus:z.literal("FIXED").default("FIXED"),rootCause:z.string(),solution:z.string(),verificationNotes:z.string().optional().default(""),gitPatch:z.string().min(1)});var Ls={WEBHOOK:"WEBHOOK",CRON:"CRON",MANUAL:"MANUAL",CLI:"CLI"},ht=(a=>(a.PENDING="PENDING",a.RUNNING="RUNNING",a.PASSED="PASSED",a.FAILED="FAILED",a.CANCELLED="CANCELLED",a.RETRYING="RETRYING",a.WAITING_FOR_USER="WAITING_FOR_USER",a))(ht||{});var tb=(r=>(r.NOT_ATTEMPTED="NOT_ATTEMPTED",r.PERM_HEAL_SUCCEEDED="PERM_HEAL_SUCCEEDED",r.PERM_HEAL_FAILED="PERM_HEAL_FAILED",r.PERM_HEAL_ON_SUCCESS_FAILED="PERM_HEAL_ON_SUCCESS_FAILED",r))(tb||{});var nb=z.enum(tb).default("NOT_ATTEMPTED"),FC=(n=>(n.BEFORE_ALL="BEFORE_ALL",n.AFTER_ALL="AFTER_ALL",n))(FC||{});var Ige=z.object({attempts:z.int().nonnegative()}),Eo=z.string().pipe(z.coerce.date()).or(z.date()),ss=z.object({id:z.string(),runKey:z.string(),organizationId:z.string(),executionType:Mu.optional().default("WEB"),createdAt:Eo,createdBy:z.string(),flake:z.boolean().nullish(),scheduledAt:Eo.or(z.null()),startedAt:Eo.or(z.null()),updatedAt:Eo.nullish(),finishedAt:Eo.or(z.null()),resolvedBaseUrl:z.string().nullish(),environmentName:z.string().nullish(),gitBranchName:z.string().nullish(),gitMainBranch:z.string().nullish(),githubRepository:z.string().nullish(),gitlabProjectPath:z.string().nullish(),labels:z.array(z.string()).optional(),gitOriginUrl:z.string().nullish(),gitCommitSha:z.string().nullish(),gitCommitShaShort:z.string().nullish(),gitCommitAuthorName:z.string().nullish(),gitCommitTimestamp:Eo.nullish(),gitCommitMessage:z.string().nullish(),schemaVersion:z.string().nullish(),cliVersion:z.string().nullish(),section:z.enum(FC).nullish(),status:z.enum(ht),healStatus:nb,healDetails:cV.nullish(),trigger:z.enum(Ls),attempts:z.number(),runAttempts:z.array(z.object({id:z.string(),status:z.enum(ht),startedAt:Eo.or(z.null()),finishedAt:Eo.or(z.null())})).optional(),videos:z.array(z.string()).optional(),failureReason:z.string().nullish(),failureDetails:$j.nullish(),failureRecoveryDetails:Ige.nullish(),pipelineId:z.string().nullish(),resolvedInputs:z.record(z.string(),z.string()).nullish(),quarantined:z.boolean().nullish().default(false),quarantinedReason:z.string().nullish(),localTestId:z.string().nullish(),testId:z.string().nullish(),testName:z.string().nullish(),description:z.string().nullish(),directory:z.string().nullish(),test:z.object({name:z.string(),id:z.string()}).nullish().default(null),suiteId:z.string().nullish(),aiSettings:ga.nullish(),stepsSnapshot:z.array(z.record(z.string(),z.unknown().optional())).nullish(),beforeStepsSnapshot:z.array(z.record(z.string(),z.unknown().optional())).nullish(),afterStepsSnapshot:z.array(z.record(z.string(),z.unknown().optional())).nullish()}),xge={id:true,status:true,healStatus:true,healDetails:true,testName:true,localTestId:true,testId:true,test:{select:{name:true,id:true}},finishedAt:true,failureReason:true,failureDetails:true},BC=ss.pick({...xge,test:true}),uV=ss.omit({failureReason:true,failureDetails:true,test:true}),pM=ss.extend({stepsSnapshot:z.array(z.record(z.string(),z.unknown().optional())).nullish(),beforeStepsSnapshot:z.array(z.record(z.string(),z.unknown().optional())).nullish(),afterStepsSnapshot:z.array(z.record(z.string(),z.unknown().optional())).nullish(),resolvedInputs:z.record(z.string(),z.string()).nullish(),test:z.object({name:z.string(),id:z.string(),description:z.string().nullish(),baseUrl:z.string().nullish(),advanced:Ns.nullish()}).nullish()}).extend(eM.shape),pV=e=>e.includes("PASSED")&&e.includes("FAILED");var _ge=z.object({category:z.string(),reasoning:z.string(),citations:z.array($o).optional()}),Pge=z.object({testInputs:z.record(z.string(),z.string()).optional(),envName:z.string().optional(),urlOverride:z.string().optional()}),Oge=z.object({reason:z.string().optional(),message:z.string().optional()}),Mge=z.object({runId:z.string().optional(),testId:z.string(),testName:z.string(),filePath:z.string(),labels:z.array(z.string()).optional(),status:z.enum(ht),startedAt:z.string(),finishedAt:z.string(),durationMs:z.number(),attempts:z.number(),quarantined:z.boolean(),recovered:z.boolean(),parameters:Pge.optional(),failure:Oge.nullable(),classification:_ge.nullable()}),Nge=z.object({testId:z.string(),testName:z.string(),filePath:z.string(),labels:z.array(z.string()).optional(),quarantined:z.boolean()}),Lge=z.object({total:z.number(),executed:z.number(),skipped:z.number(),passed:z.number(),failed:z.number(),cancelled:z.number(),quarantined:z.number(),recovered:z.number()}),mV=z.object({version:z.literal(1),runGroup:z.object({startedAt:z.string(),finishedAt:z.string(),durationMs:z.number()}),summary:Lge,runs:z.array(Mge),skipped:z.array(Nge)});var hV=z.enum(["error","warning","passing"]);var gV=z.enum(["safe_to_merge","confirm_intended_change","investigate_regression","fix_test","resolve_infra","review_coverage"]);var fV=z.object({kind:gV,detail:z.string().min(1).max(280)}),Sm=z.object({riskLevel:z.string(),headline:z.string().min(1).max(200).describe("One-sentence summary of what happened in this run. Plain text, no markdown."),overview:z.string().min(1).max(280).optional().describe("One plain-text sentence giving the bottom line of the run. No markdown."),summaryMarkdown:z.string().min(1).max(4e3).describe("Markdown body. Several short paragraphs or a tight list. No emojis, no top-level heading. Max 5 sentences."),recommendedAction:fV.optional()}),yV=Sm.extend({riskLevel:hV.describe("Traffic-light validation signal. Use passing when validation is trustworthy with no real concern, warning when review or follow-up is needed, and error when the evidence shows the PR may hide or cause a product regression or another material concern that requires review."),headline:z.string().min(1).max(60).describe("Short, factual, title-case status of the validation signal, 6 words max, no punctuation. Describe the outcome only - never name the process or mode (no 'dry run', 'auto-heal', 'triage', 'pending'); those are shown separately. Examples: 'Review Required', 'Sign In Failing Across 5 Tests', 'All Tests Passed'."),overview:z.string().min(1).max(280).describe("The bottom-line verdict in one plain sentence: what the Momentic validation means for user-visible behavior and how trustworthy the signal is. This is the conclusion only, not the evidence. No markdown, headings, lists, or emojis. Do not prescribe a merge decision (use recommendedAction)."),summaryMarkdown:z.string().min(1).max(1e3).describe("The supporting evidence behind the overview, in GitHub-flavored markdown: a few short sentences or a tight list with the specific tests, errors, and signals that justify the verdict. Must carry information the overview does not - never paraphrase or restate the overview. Do not prescribe a merge decision or restate repair mechanics. Max 4 sentences. No emojis or top-level heading."),recommendedAction:fV.extend({kind:gV.describe("The kind of action a reviewer should take. safe_to_merge = signal is trustworthy and can be merged as-is; confirm_intended_change = a product or UI change was detected (or a heal relaxed an expectation) and a human must confirm it is intentional; investigate_regression = evidence points to a real product bug or regression to investigate before merging; fix_test = a broken or stale test or test setup needs repair; resolve_infra = an infrastructure or environment problem needs resolving and a re-run; review_coverage = quarantine has materially reduced coverage that should be reviewed."),detail:z.string().min(1).max(280).describe("One plain-text sentence naming the specific next step (e.g. 'Confirm the new success-indicator color is an intended design change'). No markdown.")}).describe("The single most important next step a reviewer should take. Omit entirely when the signal is clean and there is genuinely nothing to do.").optional()});var SV=z.object({id:z.string(),status:z.enum(ht),trigger:z.enum(Ls),createdAt:Eo,startedAt:Eo.nullish(),finishedAt:Eo.nullish(),gitCommitSha:z.string().nullish(),gitCommitShaShort:z.string().nullish(),gitCommitTimestamp:Eo.nullish(),gitBranchName:z.string().nullish(),gitOriginUrl:z.string().nullish(),gitCommitMessage:z.string().nullish(),gitCommitAuthorName:z.string().nullish(),githubRepository:z.string().nullish(),gitlabProjectPath:z.string().nullish(),pipelineId:z.string().nullish(),ciProvider:z.string().nullish(),cliVersion:z.string().nullish(),labels:z.string().array().optional(),healRiskSummary:Sm.optional(),localSuiteName:z.string().optional(),suite:z.object({id:z.string(),name:z.string()}).nullish(),runs:z.object({executionType:Mu,status:z.enum(ht),environmentName:z.string().nullish()}).array()}),bV=SV.pick({id:true,createdAt:true,startedAt:true,finishedAt:true,status:true,trigger:true,suite:true,localSuiteName:true}).extend({runs:BC.array()}),TV=SV.extend({runs:ss.array()});var Dge=z.object({type:z.literal("TARGETING"),name:z.string().optional().describe("Target name to disambiguate for steps with multiple targets"),elementLocationDecisions:_$.array(),pageState:z.string().optional(),targetSource:z.enum(Hl).optional(),targetUpdateTime:z.string().optional()}),Fge=z.object({type:z.literal("AI_LOCATION"),matched:z.boolean(),pageState:z.string().optional(),ragUsed:z.boolean().optional(),thoughts:z.string().optional()}),Bge=z.object({type:z.literal("ASSERTION"),relevantElementsSerialized:z.string().array().optional(),pageState:z.string().optional(),ragUsed:z.boolean().optional()}),AV=z.discriminatedUnion("type",[Dge,Fge,Bge]);var Uge=z.object({id:z.string(),name:z.string()});Uge.extend(z.object({createdAt:Eo,createdBy:z.string(),schedule:LC,notification:kC,environment:z.object({name:z.string()}).nullish(),beforeTests:z.object({id:z.string()}).array().nullish(),afterTests:z.object({id:z.string()}).array().nullish()}).shape);var EV=z.object({id:z.guid(),orgId:z.string(),createdAt:Eo,startedAt:Eo.or(z.null()),finishedAt:Eo.or(z.null()),status:z.enum(ht),trigger:z.enum(Ls),suite:z.object({id:z.string(),name:z.string()}).nullish(),runs:ss.array()});EV.pick({id:true,createdAt:true,startedAt:true,finishedAt:true,status:true,trigger:true,suite:true});var CV=EV.extend({runs:BC.array()});function vV({beforeStatus:e,mainStatus:t,afterStatus:n}){return e==="FAILED"?"FAILED":e==="CANCELLED"?"CANCELLED":n==="FAILED"?"FAILED":n==="CANCELLED"?"CANCELLED":t==="FAILED"?"FAILED":t==="CANCELLED"?"CANCELLED":"PASSED"}function UC(e,t){return e.some(r=>t?.onlyQuarantined?r.status==="FAILED":!r.quarantined&&r.status==="FAILED")?"FAILED":e.some(r=>r.status==="CANCELLED")?"CANCELLED":"PASSED"}function RV(e){switch(e){case "PASSED":return "SUCCESS";case "FAILED":return "FAILED";case "CANCELLED":return "CANCELLED";case "RUNNING":case "PENDING":case "RETRYING":case "WAITING_FOR_USER":return "RUNNING"}}var mM=z.object({content:z.string(),ids:z.string().array(),tokenLength:z.number()}),Hge=z.object({chunks:mM.array()});z.object({ids:z.string().array(),score:z.number(),tokenLength:z.number()});Hge.extend({description:z.string().describe("Input to pass to RAG engine"),tokenLimit:z.number()});var wV=z.object({ids:z.number().array()}),IV=z.object({indices:z.number().array()});var dc=(n=>(n.Interactive="interactive",n.Runner="runner",n))(dc||{}),Gge=z.enum(dc),hr=z.object({disableCache:z.boolean().optional(),useMemory:z.boolean().optional(),clientMode:Gge.optional(),loggerTags:z.record(z.string(),z.string()).optional(),langfuseSessionId:z.string().optional(),agentConfigVersion:z.string().optional(),cacheBustReason:z.enum(hS).optional()});hr.extend({chunks:mM.array(),description:z.string().describe("Input to pass to AI"),type:z.union([z.literal("locator"),z.literal("assertion"),z.literal("ai-action")]),softTokenLimit:z.number(),mediumTokenLimit:z.number().optional(),hardTokenLimit:z.number(),callId:z.string().optional()});var jge=z.object({screenshotBase64AfterCommand:z.string(),urlAfterCommand:z.string(),serializedCommand:z.string(),elementInteracted:z.string().optional(),thoughts:z.string().optional()}),xV=z.object({goal:z.string(),browserState:z.string(),screenshot:z.string(),source:x$.optional().catch(void 0),isTieBreakerCall:z.boolean().optional(),memory:z.discriminatedUnion("type",[tl,z.object({type:z.literal("RESOLVED_TRACES"),traces:z.unknown().optional().array()})]).optional(),firstPassModelResults:yC.array().optional(),knowledgeBaseSection:z.string().optional()}),_V=z.object({target:z.string().or(z.number()),browserState:z.string().optional(),screenshot:z.string().optional(),boundingBox:z.object({x:z.number(),y:z.number(),height:z.number(),width:z.number()}).optional()}),PV=z.object({goal:z.string(),browserState:z.string(),screenshot:z.string().optional(),returnSchema:z.string().optional()}),OV=z.object({goal:z.string(),emulatorState:z.string(),screenshot:z.string().optional(),returnSchema:z.string().optional()}),hM=z.union([z.literal("NEGATED_CHECK"),z.literal("CONDITIONAL_CHECK")]),MV=z.object({goal:z.string(),browserState:z.string(),screenshot:z.string(),url:z.string(),contextChoice:lm.optional(),memory:z.discriminatedUnion("type",[im,z.object({type:z.literal("RESOLVED_TRACES"),traces:z.unknown().optional().array()})]).optional(),source:hM.optional(),recoveryHint:z.string().optional(),knowledgeBaseSection:z.string().optional()}),NV=z.object({command:Ru}),gM=z.object({goal:z.string(),browserState:z.string(),startingScreenshot:z.string().optional(),screenshot:z.string(),url:z.string(),history:jge.array(),actionHint:z.string().optional(),lastError:z.string().optional()}),LV=z.object({results:wC.array(),errorMessage:z.string(),errorStack:z.string().optional()}),kV=z.object({results:wC.array(),goal:z.string(),errorMessage:z.string()}),DV=z.object({failedResults:wC.array(),nextStepsSerialized:z.string().array(),currentUrl:z.string(),currentPageState:z.string(),currentScreenshot:z.string(),customInstructions:z.string().optional(),testDescription:z.string().optional()});z.object({description:z.string(),type:z.union([z.literal("locator"),z.literal("assertion"),z.literal("ai-action")]),excerpt:z.string()});var FV=z.object({type:z.string(),browserContext:z.string(),currentStep:z.string(),screenshot:z.string()}),BV=z.object({description:z.string(),browserState:z.string().optional(),screenshot:z.string()}),$ge=z.enum(["locator","assertion"]);z.object({completionType:$ge,currentGoal:z.string(),pastGoal:z.string().optional(),currentScreenshot:z.string(),pastScreenshot:z.string(),pastResult:z.union([z.boolean(),z.number()])});z.object({goal:z.string()});var UV=z.object({keywords:z.array(z.string())});var HC=(i=>(i.LOCATOR="locator",i.ASSERTION="assertion",i.VISUAL_ASSERTION="visual-assertion",i.TEXT_EXTRACTION="text-extraction",i.FAILURE_RECOVERY="failure-recovery",i))(HC||{}),Vge=["locator","assertion","visual-assertion","text-extraction","failure-recovery"];z.enum(HC);var zge=new Set(Vge);function Wge(e){return zge.has(e)}var qge=z.enum(["v1","v2","v3","v4"]),Kge=z.string().regex(/^v\d+\.\d+$/).describe("pinned sub-version like v3.1");z.union([qge,Kge,z.string().describe("for people with special configurations")]);var Rg={locator:"v4.2",assertion:"v4.1","visual-assertion":"v4.0","text-extraction":"v3.0","failure-recovery":"v2.1"},HV={locator:{v4:["v4.2","v4.1","v4.0"],v3:["v3.3","v3.2","v3.1","v3.0"],v2:["v2.2","v2.1","v2.0"],v1:["v1.0"]},assertion:{v4:["v4.1","v4.0"],v3:["v3.2","v3.1","v3.0"],v2:["v2.3","v2.2","v2.1","v2.0"],v1:["v1.0"]},"visual-assertion":{v4:["v4.0"],v3:["v3.2","v3.1","v3.0"],v2:["v2.0"],v1:["v1.0"]},"text-extraction":{v3:["v3.0"],v2:["v2.0"],v1:["v1.0"]},"failure-recovery":{v2:["v2.1","v2.0"],v1:["v1.0"]}},GV=(s=>(s.ANDROID_LOCATOR="android-locator",s.IOS_LOCATOR="ios-locator",s.ANDROID_ASSERTION="android-assertion",s.IOS_ASSERTION="ios-assertion",s.ANDROID_TEXT_EXTRACTION="android-text-extraction",s.IOS_TEXT_EXTRACTION="ios-text-extraction",s))(GV||{});z.enum(GV);var Yge={locator:["v1"],assertion:["v1"],"visual-assertion":["v1"],"text-extraction":["v1"]};function Jge(e){let t=Yge[e];if(!t)return new Set;let n=HV[e],o=new Set;for(let r of t){o.add(r);for(let i of n[r]??[])o.add(i);}return o}function GC(e){for(let[t,n]of Object.entries(e)){if(!Wge(t))continue;let o=HV[t];if(!o)continue;let r=new Set;for(let[i,s]of Object.entries(o)){r.add(i);for(let a of s)r.add(a);}if(!r.has(n)){let i=[...r].sort();throw new te("UserConfigurationError",`Invalid agent config: "${n}" is not a valid version for "${t}". Valid versions: ${i.join(", ")}`)}if(Jge(t).has(n))throw new te("UserConfigurationError",`Agent config "${n}" for "${t}" is no longer supported because it relies on a legacy model. Upgrade to a newer version.`)}}var yd=O__default.object({id:O__default.guid(),envKey:O__default.string().optional(),skipped:O__default.boolean().optional(),retries:O__default.number().optional()});var Lu=(r=>(r.PRESET="MOBILE_PRESET_STEP",r.MODULE="MOBILE_MODULE_STEP",r.AI_ACTION="MOBILE_AI_ACTION_STEP",r.CONDITIONAL="MOBILE_CONDITIONAL_STEP",r))(Lu||{});var wg=yd.extend({type:O__default.literal("MOBILE_CONDITIONAL_STEP")});var si=z.object({id:z.string(),name:uC,baseUrl:pC,description:z.string().optional().nullish(),schemaVersion:z.string(),advanced:Ns,retries:z.number().optional().nullish(),envs:z.array(sV).nullish(),parameters:iV.nullish(),disabled:z.boolean().optional(),labels:z.array(z.string()).optional().catch([])}),jV=z.enum(["INHERIT","ENABLED","DISABLED"]);var Qge=Ns.extend({failureRecovery:jV.optional(),useMemory:jV.optional()});si.pick({name:true,description:true,baseUrl:true,retries:true,disabled:true,parameters:true}).extend({advanced:Qge});si.pick({name:true,description:true,baseUrl:true,retries:true,disabled:true,advanced:true,parameters:true});var Zge=z.object({labels:z.array(z.string()).optional(),outputs:DC.nullish()}),Zn=si.extend(Zge.shape),efe=z.object({createdAt:z.coerce.date(),updatedAt:z.coerce.date(),updatedBy:z.string().nullable(),schedule:LC,notification:kC,createdBy:z.string(),organizationId:z.string(),folderId:z.string().nullable().optional()}),tfe=si.extend(efe.shape);tfe.extend(Ql.shape);var fM=si.extend(Ql.shape);si.extend(dd.shape);var nfe="test",ofe="module",rfe="mobile-test",ife="mobile-module",sfe="test/v2",afe="module/v2",lfe="mobile-test/v2",cfe="mobile-module/v2";var ke=(l=>(l.TEST=`momentic/${nfe}`,l.MODULE=`momentic/${ofe}`,l.TEST_V2=`momentic/${sfe}`,l.MODULE_V2=`momentic/${afe}`,l.MOBILE_TEST=`momentic/${rfe}`,l.MOBILE_MODULE=`momentic/${ife}`,l.MOBILE_TEST_V2=`momentic/${lfe}`,l.MOBILE_MODULE_V2=`momentic/${cfe}`,l))(ke||{});si.merge(dd);var dfe=Xn.extend({steps:z.array(z.record(z.string(),z.unknown().optional())),schemaVersion:z.string()}),ib=dfe.extend({fileType:z.literal(ke.MODULE)});z.object({test:z.string().describe("YAML for the test, including metadata and steps"),modules:z.record(z.string(),z.string()).describe("Map of module name to YAML for the module")});function jC(e){if(e===void 0)return "__undefined__";if(e===null)return null;if(typeof e!="object")return e;if(Array.isArray(e))return e.map(jC);let t={};for(let[n,o]of Object.entries(e))t[n]=jC(o);return t}var ufe=/^[a-z0-9]+(?:-[a-z0-9]+){2,}$/,$V=36,vo=z.union([z.guid().max($V,"V2 IDs must be 36 characters or fewer"),z.string().max($V,"V2 IDs must be 36 characters or fewer").regex(ufe,"V2 IDs must be lowercase kebab-case with at least three words, e.g. silver-river-lantern")],{error:"ID must be a UUID or lowercase kebab-case with at least three words, e.g. silver-river-lantern (36 characters max)"});var $C=O.discriminatedUnion("type",[O.object({type:O.literal("SCREEN")}),O.object({type:O.literal("OPEN_APP")}),O.object({type:O.literal("OPEN_WEBVIEW")})]),Sd=O.object({type:O.literal("description"),description:O.string()}),SM=O.object({type:O.literal("CUSTOM_COORDINATES"),startX:O.number().describe("Starting X coordinate in pixels"),startY:O.number().describe("Starting Y coordinate in pixels"),deltaPixels:O.number().describe("Number of pixels to scroll in the specified direction")}),VC=O.discriminatedUnion("type",[...$C.options,O.object({type:O.literal("CUSTOM"),target:Sd}),SM]);function pfe(e){return e.toLowerCase().replaceAll("_"," ")}function bM(e){switch(e.type){case "CUSTOM":return e.target.description;case "CUSTOM_COORDINATES":return `custom coordinates (x: ${Math.round(e.startX)}, y: ${Math.round(e.startY)}, delta: ${Math.round(e.deltaPixels)}px)`;case "SCREEN":case "OPEN_APP":case "OPEN_WEBVIEW":return pfe(e.type);default:{throw new Error("Unreachable")}}}var mfe=O.object({type:O.literal("coordinates"),xPercent:O.number(),yPercent:O.number()}),hfe=O.object({type:O.literal("absolute_percent"),x:O.number(),y:O.number()}),Ig=O.discriminatedUnion("type",[Sd,mfe,hfe]);var gfe=O.object({x1:O.number(),y1:O.number(),x2:O.number(),y2:O.number(),tolerance:O.nativeEnum(os),preciseTolerance:O.boolean().optional()}),ffe=O.object({width:O.number(),height:O.number(),tolerance:O.nativeEnum(os),preciseTolerance:O.boolean().optional()}),TM=O.object({requiredText:O.string().optional(),requiredAttributes:O.record(O.string(),O.string()).optional(),requiredBounds:O.boolean().optional(),position:gfe.optional(),shape:ffe.optional()}),VV=O.object({xPath:O.string(),requirements:TM.optional()}),yfe=O.object({type:O.literal("CUSTOM"),target:Sd,cache:O.lazy(()=>zV).optional()}),Sfe=O.object({pixelDelta:O.number().describe("Number of pixels to scroll in the specified direction"),scrollableElement:O.union([$C,yfe,SM]),direction:O.enum(["up","down"])}),zV=O.object({type:O.literal("NATIVE"),bounds:O.number().array().optional(),resolvedDescription:O.string().optional(),xPath:O.string().optional(),elementOnlySerializedXml:O.string().optional(),scrollDetails:Sfe.optional(),requirements:TM.optional(),requiredRelatedElements:VV.array().optional(),memory:tl.optional()}),bfe=O.object({type:O.literal("WEBVIEW"),resolvedDescription:O.string().optional(),xPath:O.string().optional(),browserCache:Gl.optional(),memory:tl.optional()}),zC=O.union([zV,bfe]);var Tfe=O.object({left:O.number(),top:O.number(),right:O.number(),bottom:O.number()});O.object({newViewportBounds:Tfe});var Afe=O.object({type:O.literal("CUSTOM"),target:Sd,cache:O.lazy(()=>YV).optional()}),WV=O.object({pixelDelta:O.number().describe("Number of pixels to scroll in the specified direction"),scrollableElement:O.union([$C,Afe,SM]),direction:O.enum(["up","down"])}),qV=(n=>(n.Native="native",n.Appium="appium",n))(qV||{}),AM=O.tuple([O.number(),O.number(),O.number(),O.number()]),KV=VV.extend({bounds:AM.optional(),browserCache:Gl.optional()}),YV=O.object({type:O.literal("NATIVE"),bounds:AM.optional(),resolvedDescription:O.string().optional(),sourceTree:O.nativeEnum(qV).optional(),xPath:O.string().optional(),elementOnlySerializedXml:O.string().optional(),scrollDetails:WV.optional(),requirements:TM.optional(),requiredRelatedElements:KV.array().optional(),memory:tl.optional()}),Efe=O.object({type:O.literal("WEBVIEW"),bounds:AM.optional(),resolvedDescription:O.string().optional(),xPath:O.string().optional(),scrollDetails:WV.optional(),browserCache:Gl.optional(),requiredRelatedElements:KV.array().optional(),memory:tl.optional()}),WC=O.discriminatedUnion("type",[YV,Efe]);var zt=(P=>(P.AI_CHECK="AI_CHECK",P.AI_EXTRACT="AI_EXTRACT",P.TAP="TAP",P.TYPE="TYPE",P.PRESS="PRESS",P.PRESS_KEYBOARD="PRESS_KEYBOARD",P.OPEN_APP="OPEN_APP",P.KILL_APP="KILL_APP",P.OPEN_NOTIFICATION_DRAWER="OPEN_NOTIFICATION_DRAWER",P.SWIPE="SWIPE",P.SCROLL_TO="SCROLL_TO",P.SCREEN_CHECK="SCREEN_CHECK",P.ELEMENT_CHECK="ELEMENT_CHECK",P.VISUAL_DIFF="VISUAL_DIFF",P.DRAG_AND_DROP="DRAG_AND_DROP",P.JAVASCRIPT="JAVASCRIPT",P.REQUEST="REQUEST",P.WAIT="WAIT",P.ADD_FILE="ADD_FILE",P.INSTALL_APP="INSTALL_APP",P.UNINSTALL_APP="UNINSTALL_APP",P.TOGGLE_SETTINGS="TOGGLE_SETTINGS",P.ROTATE_ORIENTATION="ROTATE_ORIENTATION",P.ADB_COMMAND="ADB_COMMAND",P.APPIUM_EXECUTE="APPIUM_EXECUTE",P.STATE="STATE",P))(zt||{}),Je=O__default.object({id:O__default.guid(),disableCache:O__default.boolean().optional()}),xg=O__default.object({updatedAt:O__default.coerce.date().optional(),updatedAtLoggerTags:O__default.record(O__default.string(),O__default.string()).optional()}),ya=xg.extend({target:zC}),qC=xg.extend({fromTarget:zC,toTarget:zC}),uc=xg.extend({target:WC}),JV=xg.extend({fromTarget:WC,toTarget:WC}),bd=e=>{switch(e.type){case "description":return e.description;case "coordinates":return `${Math.round(e.xPercent*100)}%, ${Math.round(e.yPercent*100)}%`;case "absolute_percent":return `x: ${e.x}%, y: ${e.y}%`}};var XV=Je.extend({type:O__default.literal("ADB_COMMAND"),command:O__default.string(),jsonArgs:O__default.string().optional()});var Cfe=O__default.string().trim(),ZV=Je.extend({type:O__default.literal("INSTALL_APP"),uri:Cfe});var ez=Je.extend({type:O__default.literal("OPEN_NOTIFICATION_DRAWER")});var sb=(r=>(r.AIRPLANE_MODE="AIRPLANE_MODE",r.DATA="DATA",r.WIFI="WIFI",r.LOCATION="LOCATION",r))(sb||{}),nz=Je.extend({type:O__default.literal("TOGGLE_SETTINGS"),settingsType:O__default.nativeEnum(sb)});var rz=Je.extend({type:O__default.literal("UNINSTALL_APP"),packageName:O__default.string()});var KC=Je.extend({type:O__default.literal("APPIUM_EXECUTE"),command:O__default.string(),jsonArgs:O__default.string().optional()});var iz=Je.extend({type:O__default.literal("ADD_FILE"),file:O__default.string(),storageLocation:O__default.string()});var Td=Je.extend({type:O__default.literal("AI_CHECK"),assertion:O__default.string(),timeoutSecs:O__default.number().optional(),contextChoice:lm.optional(),cache:xg.extend({memory:im.optional()}).optional()});var sz=Je.extend({type:O__default.literal("AI_EXTRACT"),goal:O__default.string(),schema:O__default.string().optional()});var _g=Je.extend({type:O__default.literal("JAVASCRIPT"),code:O__default.string(),timeout:O__default.number().int().max(600).optional().describe("Max seconds for the code to complete")});var az=Je.extend({type:O__default.literal("KILL_APP")});var lb=(n=>(n.HOME="HOME",n.POWER="POWER",n))(lb||{}),YC=(s=>(s.BACK="BACK",s.APP_SWITCHER="APP_SWITCHER",s.SEARCH="SEARCH",s.VOLUME_UP="VOLUME_UP",s.VOLUME_DOWN="VOLUME_DOWN",s.VOLUME_MUTE="VOLUME_MUTE",s))(YC||{}),JC=Je.extend({type:O__default.literal("PRESS"),key:O__default.nativeEnum(lb),longPress:O__default.boolean().optional()}),lz=JC.extend({key:O__default.nativeEnum(YC).or(O__default.nativeEnum(lb))}),cz=JC;var dz=Je.extend({type:O__default.literal("REQUEST")}).merge(yS);var xM=(n=>(n.PORTRAIT="PORTRAIT",n.LANDSCAPE="LANDSCAPE",n))(xM||{}),pz=Je.extend({type:O__default.literal("ROTATE_ORIENTATION"),orientation:O__default.nativeEnum(xM)});var Ife=O__default.object({type:O__default.literal("CONTENT"),negated:O__default.boolean().optional(),value:O__default.string()}),Og=Je.extend({type:O__default.literal("SCREEN_CHECK"),assertion:Ife,timeout:O__default.number().int().min(0).max(Xh).optional().describe("max seconds to wait for the assertion to be true")});var mz=Je.extend({type:O__default.literal("STATE")});var hz=Je.extend({type:O__default.literal("VISUAL_DIFF"),path:O__default.string().describe("path to the golden screenshot to compare against"),threshold:O__default.number().min(0).max(1).optional().describe("max allowed fraction of differing pixels before the diff fails (default 0.1)")});O__default.object({created:O__default.boolean(),goldenPath:O__default.string(),threshold:O__default.number(),goldenScreenshotBase64:O__default.string().optional(),currentScreenshotBase64:O__default.string().optional(),diffScreenshotBase64:O__default.string().optional(),goldenScreenshotSnapshotId:O__default.string().optional(),currentScreenshotSnapshotId:O__default.string().optional(),diffScreenshotSnapshotId:O__default.string().optional(),diffPercent:O__default.number().optional(),pass:O__default.boolean().optional(),dimensionMismatch:O__default.boolean().optional()});var fz=Je.extend({type:O__default.literal("WAIT"),timeoutSecs:O__default.number()});var cb=O__default.discriminatedUnion("type",[mz,Td,sz,_g,fz,dz,pz,Og,hz,iz,az]);O__default.discriminatedUnion("type",[...cb.options,JC]);var PM=Je.extend({type:O__default.literal("DRAG_AND_DROP"),fromTarget:Sd,toTarget:Sd,hoverDuration:O__default.number().optional(),dragDuration:O__default.number().optional()}),db=PM.extend({cache:qC.optional()}),ub=PM.extend({cache:JV.optional()});var OM=Je.extend({type:O__default.literal("ELEMENT_CHECK"),target:Ig,assertion:WE,timeout:O__default.number().int().min(0).max(Xh).optional().describe("max seconds to wait for the assertion to be true")}),bm=OM.extend({cache:ya.optional()}),Tm=OM.extend({cache:uc.optional()});var pb=(n=>(n.ENTER="ENTER",n.BACKSPACE="BACKSPACE",n))(pb||{}),XC=(t=>(t.CLOSE_KEYBOARD="CLOSE_KEYBOARD",t))(XC||{}),bz={repeat:O__default.number().int().min(1).optional(),keyPressDelayMs:O__default.number().min(0).optional()},Tz=Je.extend({type:O__default.literal("PRESS_KEYBOARD"),key:O__default.nativeEnum(pb),...bz}),Az=Je.extend({type:O__default.literal("PRESS_KEYBOARD"),key:O__default.nativeEnum(XC).or(O__default.nativeEnum(pb)),...bz});var Ez=Je.extend({type:O__default.literal("OPEN_APP"),packageName:O__default.string(),activityName:O__default.string().optional(),intentExtras:O__default.string().optional()}),Cz=Je.extend({type:O__default.literal("OPEN_APP"),packageName:O__default.string(),intentExtras:O__default.string().optional()});var MM=Je.extend({type:O__default.literal("SCROLL_TO"),target:Sd,direction:O__default.enum(["down","up"]),scrollableElement:VC,scrollStepPercent:O__default.number().min(.1).max(1).optional().describe("How much of the container height to scroll at each step (0.1 to 1.0). Default is 0.9 (90%)."),maxScrollAttempts:O__default.number().int().min(1).max(50).optional().describe("Maximum number of scroll attempts before giving up. Default is 20.")}),mb=MM.extend({cache:ya.optional()}),hb=MM.extend({cache:uc.optional()});var NM=Je.extend({type:O__default.literal("SWIPE"),direction:O__default.enum(["up","down","left","right"]),scrollableElement:VC,viewportPercent:O__default.number().optional(),durationMs:O__default.number().optional(),relativePosition:VE.optional()}),gb=NM.extend({cache:ya.optional()}),fb=NM.extend({cache:uc.optional()});var LM=Je.extend({type:O__default.literal("TAP"),target:Ig,longPress:O__default.boolean().optional(),longPressDurationMs:O__default.number().optional(),iterations:O__default.number().optional(),tapDelayMs:O__default.number().optional(),relativePosition:VE.optional(),doubleTap:O__default.boolean().optional(),doubleTapDelayMs:O__default.number().optional()}),yb=LM.extend({cache:ya.optional()}),Sb=LM.extend({cache:uc.optional()});var bb=(r=>(r.AUTO="auto",r.PROGRAMMATIC="programmatic",r.LONG_PRESS="long-press",r.BACKSPACE="backspace",r))(bb||{});var kM=Je.extend({type:O__default.literal("TYPE"),target:Ig.optional(),keyPressDelayMs:O__default.number().optional(),text:O__default.string(),clearContent:O__default.boolean().optional(),forceClearContent:O__default.boolean().optional(),replaceStrategy:O__default.nativeEnum(bb).optional()});var Tb=kM.extend({cache:ya.optional()}),Ab=kM.extend({cache:uc.optional()});var Eb=O__default.discriminatedUnion("type",[...cb.options,yb,Tb,lz,Az,rz,ZV,XV,KC,db,ez,mb,gb,nz,bm,Ez]);var Cb=O__default.discriminatedUnion("type",[...cb.options,Sb,Ab,cz,Tz,Cz,fb,ub,hb,Tm,KC]);var wz=O__default.union([O__default.string(),O__default.record(O__default.string(),O__default.unknown().optional())]),ev=yd.extend({type:O__default.literal("MOBILE_PRESET_STEP"),keyPressDelayMs:O__default.number().optional()}),Du=ev.extend({command:Eb}),Fu=ev.extend({command:Cb}),Ng=O__default.object({moduleId:O__default.string(),inputs:O__default.record(O__default.string(),O__default.string()).optional()}),vb=yd.merge(Ng.extend({type:O__default.literal("MOBILE_MODULE_STEP")}));Ng.extend({steps:O__default.lazy(()=>pc.array())});Ng.extend({steps:O__default.lazy(()=>Ad.array())});var DM=(n=>(n.V2="2",n.V3="3",n))(DM||{});var FM=O__default.nativeEnum(DM),Mfe=Ul.extend({platform:O__default.literal("ANDROID"),resolvedGoal:O__default.string(),steps:O__default.lazy(()=>Du.array()),autoGeneratedPostcondition:O__default.string().optional()}),Nfe=Ul.extend({platform:O__default.literal("IOS"),resolvedGoal:O__default.string(),steps:O__default.lazy(()=>Fu.array()),autoGeneratedPostcondition:O__default.string().optional()}),BM=O__default.discriminatedUnion("platform",[Mfe,Nfe]),Bu=yd.extend({type:O__default.literal("MOBILE_AI_ACTION_STEP"),text:O__default.string(),version:FM.optional(),cache:BM.optional(),precondition:O__default.string().optional(),postcondition:O__default.string().optional()});var kfe=O__default.discriminatedUnion("type",[Td,Og,bm,_g]),UM=ev.extend({command:kfe}),Dfe=O__default.discriminatedUnion("type",[Td,Og,Tm,_g]),HM=ev.extend({command:Dfe}),Ffe=O__default.object({assertion:UM,steps:O__default.lazy(()=>pc.array())}),Bfe=O__default.object({assertion:HM,steps:O__default.lazy(()=>Ad.array())}),Ufe=wg.extend({blocks:O__default.lazy(()=>Ffe.array()),elseSteps:O__default.lazy(()=>pc.array()).optional()}),Hfe=wg.extend({blocks:O__default.lazy(()=>Bfe.array()),elseSteps:O__default.lazy(()=>Ad.array()).optional()}),pc=O__default.discriminatedUnion("type",[Du,vb,Bu,Ufe]),Ad=O__default.discriminatedUnion("type",[Fu,vb,Bu,Hfe]);O__default.union([pc.array(),Ad.array()]);var GM=O__default.object({parameterNames:O__default.string().array(),defaultParameters:O__default.record(O__default.string(),O__default.string()).optional(),parameterEnums:O__default.record(O__default.string(),O__default.string().array()).optional()}),tv=O__default.object({moduleId:vo,name:O__default.string(),description:O__default.string().nullish(),platform:O__default.nativeEnum(sl).optional().default("ANDROID"),parameters:GM.optional(),enabled:O__default.boolean().nullish(),schemaVersion:O__default.string()}),jM=tv.omit({name:true}),Gfe=jM.extend({steps:wz.array()});O__default.object({fileType:O__default.literal(ke.MOBILE_MODULE)}).merge(Gfe);var Iz=tv.omit({platform:true,schemaVersion:true});({ANDROID:Iz.extend({platform:O__default.literal("ANDROID"),steps:pc.array()}),IOS:Iz.extend({platform:O__default.literal("IOS"),steps:Ad.array()})});var Lg=(t=>(t.MODULE="RESOLVED_MOBILE_MODULE",t))(Lg||{}),xz=O__default.object({description:O__default.string().optional(),name:O__default.string().describe("name of the module"),parameters:GM.optional()}),_z=Ng.merge(xz).extend({platform:O__default.literal("ANDROID"),get steps(){return dl.array()}}),Pz=Ng.merge(xz).extend({platform:O__default.literal("IOS"),get steps(){return ul.array()}});O__default.discriminatedUnion("platform",[_z,Pz]);var $M=yd.merge(_z).extend({type:O__default.literal("RESOLVED_MOBILE_MODULE")}),VM=yd.merge(Pz).extend({type:O__default.literal("RESOLVED_MOBILE_MODULE")});O__default.discriminatedUnion("platform",[$M,VM]);var jfe=O__default.object({assertion:UM,get steps(){return dl.array()}}),zM=wg.extend({get blocks(){return jfe.array()},get elseSteps(){return dl.array().optional()}}),$fe=O__default.object({assertion:HM,get steps(){return ul.array()}}),WM=wg.extend({get blocks(){return $fe.array()},get elseSteps(){return ul.array().optional()}}),dl=O__default.discriminatedUnion("type",[$M,Du,Bu,zM]),ul=O__default.discriminatedUnion("type",[VM,Fu,Bu,WM]);function Oz(e){return Object.values(Lg).includes(e)||Object.values(Lu).includes(e)}var Mz=(i=>(i.PRECONDITION="PRECONDITION",i.REPLAY="REPLAY",i.GENERATE="GENERATE",i.AUTOHEAL="AUTOHEAL",i.POSTCONDITION="POSTCONDITION",i))(Mz||{}),Nz=z.enum(["pending","running","success","failed"]),Lz=z.object({type:z.literal("THOUGHT"),text:z.string(),blockId:z.string().optional()}),kz=z.object({type:z.literal("TOOL_CALL"),toolName:z.string()}),Dz=z.object({type:z.literal("PHASE"),phase:z.nativeEnum(Mz),failureMessage:z.string().optional()}),Vfe=z.object({type:z.literal("STEP_UPDATE"),stepIndex:z.number(),step:dl,status:Nz,message:z.string().optional(),afterSnapshotId:z.string().optional()}),zfe=z.object({type:z.literal("STEP_UPDATE"),stepIndex:z.number(),step:ul,status:Nz,message:z.string().optional(),afterSnapshotId:z.string().optional()}),Fz=z.object({type:z.literal("POSTCONDITION_AUTOGENERATED"),postcondition:z.string()}),Wfe=z.object({type:z.literal("CACHED_STEPS_GENERATED"),cachedSteps:Du.array(),resolvedGoal:z.string()}),qfe=z.object({type:z.literal("CACHED_STEPS_GENERATED"),cachedSteps:Fu.array(),resolvedGoal:z.string()}),Bz=z.discriminatedUnion("type",[Lz,kz,Dz,Vfe,Wfe,Fz]),Uz=z.discriminatedUnion("type",[Lz,kz,Dz,zfe,qfe,Fz]);var mc=O__default.object({message:O__default.string().optional(),startTime:O__default.number(),endTime:O__default.number(),status:O__default.nativeEnum(Nt),trace:O__default.unknown().optional().optional(),beforeSnapshot:O__default.string().optional(),afterSnapshot:O__default.string().optional(),data:O__default.unknown().optional().optional().describe("output data from the step"),aiSuggested:O__default.boolean().optional(),beforeTestContext:Sg.optional(),afterTestContext:Sg.optional()}),Hz=mc.merge(Du).extend({previousAttempts:O__default.lazy(()=>Ds.array()).optional()}),Kfe=mc.merge(vb).extend({steps:O__default.lazy(()=>Ds.array()),name:O__default.string().optional(),previousAttempts:O__default.lazy(()=>Ds.array()).optional()}),Yfe=mc.merge(Bu).extend({steps:O__default.lazy(()=>Ds.array()),previousAttempts:O__default.lazy(()=>Ds.array()).optional(),failureRecoveryReason:O__default.string().optional(),trajectory:Bz.array().optional()}),Jfe=mc.merge(zM).extend({assertionResult:Hz.optional(),steps:O__default.lazy(()=>Ds.array()),previousAttempts:O__default.lazy(()=>Ds.array()).optional()}),Ds=O__default.discriminatedUnion("type",[Hz,Kfe,Yfe,Jfe]),Gz=mc.merge(Fu).extend({previousAttempts:O__default.lazy(()=>Fs.array()).optional()}),Xfe=mc.merge(vb).extend({steps:O__default.lazy(()=>Fs.array()),name:O__default.string().optional(),previousAttempts:O__default.lazy(()=>Fs.array()).optional()}),Qfe=mc.merge(Bu).extend({steps:O__default.lazy(()=>Fs.array()),previousAttempts:O__default.lazy(()=>Fs.array()).optional(),failureRecoveryReason:O__default.string().optional(),trajectory:Uz.array().optional()}),Zfe=mc.merge(WM).extend({assertionResult:Gz.optional(),steps:O__default.lazy(()=>Fs.array()),previousAttempts:O__default.lazy(()=>Fs.array()).optional()}),Fs=O__default.discriminatedUnion("type",[Gz,Xfe,Qfe,Zfe]);var eye=mc.extend({index:O__default.number().optional(),userFacingStepReference:O__default.string().optional(),description:O__default.string()}),jz=eye.extend({beforeScreenshot:O__default.string().optional(),afterScreenshot:O__default.string().optional()});var $z=z.object({attributesRequired:z.array(z.string()).optional(),textRequired:z.boolean().optional(),boundsRequired:z.boolean().optional(),positionSpecificity:z.enum(os).optional(),shapeSpecificity:z.enum(os).optional()}),tye=z.object({id:z.number(),requirements:$z}).array();z.object({thoughts:z.string(),id:z.number(),updatedMemory:pS.optional(),inWebview:z.boolean().optional(),requirements:$z.optional(),additionalElements:tye.optional()});var nye=z.literal("SCROLL_TO"),Vz=z.object({description:z.string(),screenXml:z.string(),screenshot:z.string(),source:nye.optional(),memory:z.discriminatedUnion("type",[tl,z.object({type:z.literal("RESOLVED_TRACES"),traces:z.unknown().optional().array()})]).optional()}),zz=z.object({assertion:z.string(),screenXml:z.string(),screenshot:z.string(),contextChoice:lm.optional(),memory:z.discriminatedUnion("type",[im,z.object({type:z.literal("RESOLVED_TRACES"),traces:z.unknown().optional().array()})]).optional()});z.object({thoughts:z.string(),result:z.boolean(),relevantElements:z.array(z.number()).optional(),updatedMemory:mS.optional()});var Wz=z.object({failedResults:jz.array(),nextStepsSerialized:z.string().array(),currentScreenXml:z.string(),currentScreenshot:z.string(),customInstructions:z.string().optional(),testDescription:z.string()}),qz=(o=>(o.LEGITIMATE="LEGITIMATE",o.RECOVERABLE="RECOVERABLE",o.INELIGIBLE="INELIGIBLE",o))(qz||{});z.object({thoughts:z.string(),scenario:z.enum(qz),instructions:z.string().nullish(),reasonSummary:z.string().nullish()});z.looseObject({type:z.literal("response.create")});var Kz=z.union([z.looseObject({response:z.looseObject({id:z.string()}),sequence_number:z.number(),type:z.literal("response.completed")}),z.looseObject({code:z.string().nullable(),message:z.string(),sequence_number:z.number(),type:z.literal("error")})]);var Yz="ui_states.jsonl";z.object({stepId:z.string(),parentStepIdChain:z.array(z.string()),fingerprintHash:z.string(),minhash:z.array(z.number().int()),canonicalUrl:z.string(),capturedAt:z.number().describe("Unix timestamp in milliseconds")});var kg=(s=>(s.TestRun="test-run",s.MobileTestRun="mobile-test-run",s.CreditsUsed="credits-used",s.CreditsUsedV2="credits-used-v2",s.StepsExecuted="steps-executed",s.LLMTokensUsed="llm-tokens-used",s))(kg||{}),as=(c=>(c.TestRunner="test-runner",c.Editor="editor",c.Mcp="mcp",c.Explore="explore",c.Heal="heal",c.ResultClassification="result-classification",c.GithubPrSummary="github-pr-summary",c.AppGraph="app-graph",c.RunViewer="run-viewer",c))(as||{}),oye=3;function rye(e){return e==="MODULE"||e==="CONDITIONAL"||e==="WHILE_LOOP"||e==="SECTION"||e==="RESOLVED_MODULE"}function Jz(e){if(!rye(e))switch(e){case "PRESET_ACTION":return 0;case "AI_ACTION":return 3;case "AI_ACTION_DYNAMIC":return 5;default:(n=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})();}}function Xz(e){switch(e.type){case "AI_EXTRACT":case "AI_ASSERTION":return oye;case "CAPTCHA":return 3;case "CLICK":case "TYPE":case "SELECT_OPTION":case "HOVER":case "ELEMENT_CHECK":case "FOCUS":case "BLUR":case "SCROLL_DOWN":case "SCROLL_LEFT":case "SCROLL_RIGHT":case "SCROLL_UP":case "MOUSE_DRAG":return e.useSelector||!e.target||e.target.type!=="description"?0:1;case "DRAG":return e.useSelector?0:1;case "VISUAL_DIFF":case "TAB":case "JAVASCRIPT":case "NAVIGATE":case "WAIT":case "SUCCESS":case "AUTH_LOAD":case "AUTH_SAVE":case "COOKIE":case "DIALOG":case "FILE_UPLOAD":case "GO_BACK":case "GO_FORWARD":case "LOCAL_STORAGE":case "NEW_TAB":case "CLOSE_TAB":case "PAGE_CHECK":case "PRESS":case "KEY_DOWN":case "KEY_UP":case "COPY":case "PASTE":case "REFRESH":case "REQUEST":case "GRAPHQL_REQUEST":case "WAIT_FOR_URL":case "REGISTER_REQUEST_LISTENER":case "AWAIT_LISTENER":case "RECORD_REQUESTS":case "GET_RECORDED_REQUESTS":case "SET_HEADER":case "MOCK_ROUTE":case "REMOVE_ROUTE_MOCK":case "OFFLINE_MODE":return 0;default:(n=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})();}}var qM=z.object({name:z.string(),value:z.string(),url:z.string().optional(),domain:z.string().optional(),path:z.string().optional(),expires:z.number().default(Date.now()/1e3+60*60*24*365),httpOnly:z.boolean().optional(),secure:z.boolean().default(true),sameSite:z.union([z.literal("Strict"),z.literal("Lax"),z.literal("None")]).default("None")});function nv(e,t){let n=[],o=splitCookiesString(e);for(let r of o){let i=parseString(r,{decodeValues:false});if(!i.name)throw new Error("Name missing from cookie");if(!i.value)continue;let s;if(i.sameSite){let d=i.sameSite.trim().toLowerCase();if(d==="strict")s="Strict";else if(d==="lax")s="Lax";else if(d==="none")s="None";else throw new Error(`Invalid sameSite setting in cookie: ${d}`)}i.httpOnly===void 0&&(i.httpOnly=false),!i.path&&i.domain&&(i.path="/"),!i.domain&&t&&(i.domain=t);let a=qM.parse({...i,expires:i.expires?i.expires.getTime()/1e3:void 0,sameSite:s});n.push(a);let l=[a.name,...Object.keys(a)].map(d=>d.toLowerCase()),c=r.match(/\b(\S+)=([^;]*)/g);if(c)for(let d of c){let[u,p]=d.split("=");if(!u||!p)throw new Error(`Invalid key-value pair in cookie: ${d}`);l.includes(u.toLowerCase())||n.push({...a,name:u,value:p});}}return n}var aye=z.object({origin:z.string(),localStorage:z.array(z.object({name:z.string(),value:z.string()})),sessionStorage:z.array(z.object({name:z.string(),value:z.string()})).optional()}),lye=z.object({entries:z.record(z.string(),z.array(z.tuple([z.unknown().optional(),z.unknown().optional()]))),version:z.number().optional()}),ov=z.object({cookies:qM.array().optional(),origins:aye.array().optional(),idb:z.record(z.string(),lye).optional().describe("key is db name")});function Qz(e,t){let n=[];return e.cloneSync()?.serializeSync()?.cookies.forEach(o=>{let r=qM.safeParse({name:o.key,...o});if(!r.success)return;let i=r.data;!i.domain&&!i.url&&(i.domain=t),n.push(i);}),n}var ls={type:true,cache:true},Zz=[Td.pick(ls),bm.pick(ls),yb.pick(ls),Tb.pick(ls),gb.pick(ls),mb.pick(ls),db.pick(ls)],KM=O__default.discriminatedUnion("type",Zz),eW=[Td.pick(ls),Tm.pick(ls),Sb.pick(ls),Ab.pick(ls),fb.pick(ls),ub.pick(ls),hb.pick(ls)],YM=O__default.discriminatedUnion("type",eW);Object.values(zt).filter(e=>Zz.some(t=>t.shape.type.safeParse(e).success));Object.values(zt).filter(e=>eW.some(t=>t.shape.type.safeParse(e).success));var JM=O__default.object({type:O__default.literal("MOBILE_AI_ACTION_STEP"),cache:BM}),rv=O__default.union([KM,JM]),iv=O__default.union([YM,JM]);var XM=(s=>(s.US_EAST_1="us-east1",s.US_EAST_2="us-east2",s.US_WEST_1="us-west1",s.US_WEST_2="us-west2",s.EU_NORTH_1="eu-north1",s.AS_SOUTH_1="as-south1",s))(XM||{}),QM=(o=>(o.US="us",o.EU="eu",o.AS="as",o))(QM||{}),tW=(t=>(t.LOCAL="local",t))(tW||{}),ZM=O__default.nativeEnum(XM).or(O__default.nativeEnum(QM)),eN=O__default.nativeEnum(XM).or(O__default.nativeEnum(QM)).or(O__default.nativeEnum(tW)),dye="closest";eN.or(O__default.literal(dye));var Fg=(n=>(n.ANDROID_14="14",n.ANDROID_15="15",n))(Fg||{});var sv=(t=>(t.IOS_26="26",t))(sv||{});var uye=["1.56.1-lim.1","1.60.0-lim.1"],nW=O__default.enum(uye);var oW=O__default.nativeEnum(Fg).or(O__default.nativeEnum(sv));var pye=O__default.object({disableMomenticAccessibilityTree:O__default.boolean().optional(),autoGrantPermissions:O__default.boolean().optional().describe("Automatically grant app permission prompts during the run. Android only."),autoAcceptAlerts:O__default.boolean().optional().describe("Automatically accept native alert dialogs. iOS only."),autoDismissAlerts:O__default.boolean().optional().describe("Automatically dismiss native alert dialogs. iOS only."),disableXmlSnapshots:O__default.boolean().optional().describe("Skip collecting XML snapshots during test runs. This can speed up test runs, but will cause the run viewer to show less information."),browserSettings:Eg.optional(),locale:O__default.string().optional().describe("Device locale code (e.g. 'fr', 'en-us'). Sets the device language and region. iOS and Android.")}),mye="avdId",hye="iosDeviceType",gye="iosVersion",tN=pye.extend({region:eN.optional().describe('Where the emulator runs: "local" for an emulator on your machine, or a region for hosted emulators. Defaults to hosted emulators.'),remoteEmulatorSettings:O__default.object({androidVersion:O__default.nativeEnum(Fg).optional()}).optional(),localEmulatorSettings:O__default.object({[mye]:Tg,[hye]:Tg,[gye]:Tg}).optional(),geolocation:O__default.object({latitude:O__default.number().refine(e=>e>=-90&&e<=90,{message:"Latitude must be between -90 and 90 degrees"}),longitude:O__default.number().refine(e=>e>=-180&&e<=180,{message:"Longitude must be between -180 and 180 degrees"})}).optional(),waitForStability:O__default.boolean().optional().describe("wait for stability before every targeting action")});var wb=O__default.object({retries:O__default.number().optional().describe("number of retries to run"),defaultChannel:O__default.string().optional().describe("Default app release channel to use when installing from managed mobile artifacts."),defaultTag:O__default.string().optional().describe("Default app artifact tag to use. If not set, the latest available tag is used."),defaultEnv:O__default.string().optional().describe("Default mobile environment name to load variables from at runtime."),defaultApkFilePath:Tg.describe("APK to install when using the emulator in the local region."),defaultAppFilePath:Tg.describe("App file (e.g. .app or .ipa) to install when using the emulator in the local region."),emulator:tN.optional().describe("Emulator configuration for local or remote mobile execution, including region and local emulator overrides."),ai:uM.optional().describe("AI behavior overrides for this mobile test, such as memory and failure recovery settings.")}),rW=O__default.object({id:vo,description:O__default.string(),schemaVersion:O__default.string(),settings:wb.optional(),disabled:O__default.boolean().optional(),labels:O__default.array(O__default.string()).optional()}),Bg=rW.extend({platform:O__default.literal("ANDROID").optional().default("ANDROID")}),Ug=rW.extend({platform:O__default.literal("IOS")}),iW=O__default.discriminatedUnion("platform",[Bg,Ug]),sW=O__default.object({fileType:O__default.literal(ke.MOBILE_TEST)}),aW=sW.merge(Bg),lW=sW.merge(Ug);O__default.discriminatedUnion("platform",[aW,lW]);var cW=Bg.merge(O__default.object({steps:O__default.array(pc)})),dW=Ug.merge(O__default.object({steps:O__default.array(Ad)}));O__default.discriminatedUnion("platform",[cW,dW]);var fye=aW.merge(cW),yye=lW.merge(dW);O__default.discriminatedUnion("platform",[fye,yye]);O__default.object({name:O__default.string(),steps:O__default.array(pc).optional(),settings:wb.optional()});var uW=Bg.extend({steps:dl.array(),beforeSteps:dl.array().optional(),afterSteps:dl.array().optional()}),pW=Ug.extend({steps:ul.array(),beforeSteps:ul.array().optional(),afterSteps:ul.array().optional()});O__default.discriminatedUnion("platform",[uW,pW]);var Sye=uW.extend({name:O__default.string()}),bye=pW.extend({name:O__default.string()});O__default.discriminatedUnion("platform",[Sye,bye]);var xr=O__default.object({startTime:O__default.number(),endTime:O__default.number().optional(),durationMs:O__default.number().optional(),error:O__default.string().optional(),result:O__default.unknown().optional().optional(),attributes:O__default.record(O__default.string(),O__default.unknown().optional()),subSpans:O__default.lazy(()=>Fye.array())});var nN=xr.extend({type:O__default.literal("SECTION"),name:O__default.string()}),Tye=xr.extend({type:O__default.literal("GET_PAGE_STATE")}),Aye=xr.extend({type:O__default.literal("GET_PAGE_SCREENSHOT")}),Eye=xr.extend({type:O__default.literal("SMART_WAITING")}),Cye=xr.extend({type:O__default.literal("SCROLL_ELEMENT_INTO_VIEW")}),vye=xr.extend({type:O__default.literal("AI_LOCATOR_CALL"),screenshotSnapshotId:O__default.string().optional(),result:O__default.object({id:O__default.number(),thoughts:O__default.string(),citations:$o.array().optional()}).optional()}),Rye=xr.extend({type:O__default.literal("AI_ASSERTION_CALL"),screenshotSnapshotId:O__default.string().optional(),elementScreenshotSnapshotId:O__default.string().optional(),result:O__default.object({thoughts:O__default.string(),result:O__default.boolean(),citations:$o.array().optional()}).optional()}),wye=xr.extend({type:O__default.literal("AI_EXTRACTION_CALL"),screenshotSnapshotId:O__default.string().optional(),browserStateSnapshotId:O__default.string().optional(),result:O__default.object({thoughts:O__default.string().optional(),result:O__default.unknown().optional().optional()}).optional()}),Iye=xr.extend({type:O__default.literal("ELEMENT_ASSERTION"),name:O__default.string(),result:O__default.object({success:O__default.boolean(),message:O__default.string().optional()}).optional()}),xye=xr.extend({type:O__default.literal("BROWSER_INTERACTION"),name:O__default.string(),coordinates:O__default.object({x:O__default.number(),y:O__default.number()}).optional(),value:O__default.string().optional(),selector:O__default.string().optional()}),_ye=xr.extend({type:O__default.literal("CACHE_RESOLUTION"),resolutionMethod:O__default.string().optional(),cacheMissReason:O__default.nativeEnum($h).optional(),targetSource:O__default.string().optional(),elementScreenshotSnapshotId:O__default.string().optional(),result:O__default.object({serializedElement:O__default.string()}).optional()}),Pye=xr.extend({type:O__default.literal("TARGET_RESOLUTION"),elementScreenshotSnapshotId:O__default.string().optional(),result:O__default.object({serializedElement:O__default.string()}).optional()}),Oye=xr.extend({type:O__default.literal("LOCATOR_REDIRECT"),elementScreenshotSnapshotId:O__default.string().optional(),result:O__default.object({outcome:O__default.string(),logs:O__default.string().array().optional(),serializedElement:O__default.string().optional(),relativeClickPoint:O__default.object({x:O__default.number(),y:O__default.number()}).optional(),force:O__default.boolean().optional()}).optional()}),Mye=xr.extend({type:O__default.literal("WAIT_FOR_STABILITY")}),Nye=xr.extend({type:O__default.literal("GENERIC"),name:O__default.string()}),Lye=xr.extend({type:O__default.literal("PAGE_ASSERTION"),name:O__default.string(),result:O__default.object({success:O__default.boolean(),message:O__default.string().optional()}).optional()}),kye=xr.extend({type:O__default.literal("AUTO_FOLLOW_NEW_TABS"),result:O__default.object({followed:O__default.boolean()}).optional()}),Dye=xr.extend({type:O__default.literal("VISUAL_DIFF"),name:O__default.string(),result:O__default.object({success:O__default.boolean(),message:O__default.string().optional()}).optional()});function mW(e){return e.type==="CACHE_RESOLUTION"||e.type==="TARGET_RESOLUTION"}var Fye=O__default.discriminatedUnion("type",[nN,Tye,Aye,Eye,Cye,vye,Rye,wye,Iye,xye,Pye,_ye,Oye,Mye,Lye,Dye,Nye,kye]);z.object({testId:z.string(),sessionId:z.string()});var hW=z.object({uploadUrl:z.string(),id:z.string()});new Set(Object.values($n));var Sn={AI_ACTION_DYNAMIC:"Ask AI achieve a specific goal. Fully dynamic and does not save the steps for reuse. Our most capable AI agent.",CONDITIONAL:"Execute steps based on the outcome of a conditional check",RESOLVED_MODULE:"A list of steps that can be reused in multiple tests.",AI_ASSERTION:"Ask AI to verify whether something is true on the page.",CLICK:"Click on an element on the page.",DIALOG:"Specify how native browser dialogs should be handled.",AI_EXTRACT:"Ask AI to extract data from the page.",BLUR:"Remove focus from an element on the page.",TYPE:"Type the specified text into an element.",PRESS:"Press the specified keys using the keyboard. (e.g. Control+A)",NAVIGATE:"Navigate to the specified URL.",GO_BACK:"Go back in browser history.",GO_FORWARD:"Go forward in browser history.",REFRESH:"Refresh the page. This will not clear cookies or session data.",TAB:"Switch to different tab in the browser.",NEW_TAB:"Create and switch to a new tab in the browser.",CLOSE_TAB:"Close a specified open tab or current tab if none specified.",COOKIE:"Set a cookie that will persist throughout the browser session.",LOCAL_STORAGE:"Set a localStorage value that will persist throughout the browser session",REQUEST:"Make an API request to a URL.",GRAPHQL_REQUEST:"Make a GraphQL request to a URL.",JAVASCRIPT:"Run JavaScript code in the browser or a Node.js environment.",DRAG:"Click and drag an element to another location.",WAIT_FOR_URL:"Wait for the active page's URL to match a target value or pattern.",COPY:"Copy the specified value to the browser clipboard.",PASTE:"Paste the browser clipboard contents.",SET_HEADER:"Set a header.",MOCK_ROUTE:"Mock network requests to a specific URL.",REMOVE_ROUTE_MOCK:"Remove a previously set route mock."};var Bye=z.string().refine(e=>nu.valid(e),{error:"must be a valid semver string"});function oN(e){return nu.parse(e)||void 0}function Ib(e){if(e!==void 0)return e===true||e==="true"||e==="1"}var fW="on-fail";function yW(e){return e==="on-fail"?"on-fail":e==="false"?false:!!e}var SW=(n=>(n.CLI="cli",n.MobileCLI="mobile-cli",n))(SW||{}),Uye=z.nativeEnum(SW),bW=(o=>(o.Error="error",o.Warn="warn",o.Info="info",o))(bW||{}),Hye=z.nativeEnum(bW),Gye=z.object({id:z.string(),level:Hye,versionRange:z.string(),announcement:z.string()});z.object({cliType:Uye,version:Bye});var TW=z.object({announcements:z.array(Gye)});var xb=55555,av="momentic-code-eval.js";z.object({body:z.string(),to:z.string(),from:z.string()});z.object({from:z.string().optional(),to:z.string(),timeout:z.number().optional(),beforeDate:z.string().pipe(z.coerce.date()).or(z.date()).optional(),afterDate:z.string().pipe(z.coerce.date()).or(z.date()).optional()});z.object({timeoutMs:z.number().nonnegative().optional()}).optional();z.object({phoneNumber:z.string(),leaseToken:z.string()});var jye=z.union([z.string(),z.date()]).transform(e=>e instanceof Date?e:new Date(e)),AW=z.object({phoneNumber:z.string(),expiresAt:jye,leaseToken:z.string()});z.object({to:z.email(),from:z.string(),subject:z.string(),body:z.string(),html:z.string().optional()});z.object({inbox:z.string().transform(e=>e.toLowerCase()),afterDate:z.string().pipe(z.coerce.date()).or(z.date()).optional(),timeout:z.number().optional(),trimWhitespace:z.boolean().optional()});z.object({inbox:z.string(),limit:z.number().optional(),afterDate:z.string().pipe(z.coerce.date()).or(z.date()).optional(),trimWhitespace:z.boolean().optional()});var EW=z.object({email:z.string(),prefix:z.string(),expiresAt:z.coerce.date()}),lv=(n=>(n.RAW="RAW",n.RESPONSE="RESPONSE",n))(lv||{}),CW=z.object({body:z.string().nullish(),status:z.number().optional(),headers:z.array(z.tuple([z.string(),z.string()])).optional()}),$ye=z.object({url:z.string(),options:z.object({method:z.string(),body:z.string().nullish(),headers:z.array(z.tuple([z.string(),z.string()])).optional()}).optional()}).optional(),Vye=z.object({body:z.string().nullish(),options:z.object({status:z.number(),statusText:z.string().optional(),headers:z.array(z.tuple([z.string(),z.string()])).optional()}).optional()}).optional(),vW=z.object({result:z.unknown().optional(),variableUpdates:z.record(z.string(),z.unknown().optional()).optional(),persistentVariableUpdates:z.record(z.string(),z.unknown().optional()).optional(),error:z.string().optional(),success:z.boolean()});z.object({id:z.string().optional(),orgId:z.string(),momenticLambdaAuthHash:z.string(),code:z.string(),fragment:z.boolean(),state:z.object({env:z.record(z.string(),z.unknown().optional()),request:$ye,response:Vye,additionalBindings:z.record(z.string(),z.unknown().optional()).optional()}),timeoutMs:z.number().optional(),disallowVariableUpdates:z.boolean().optional(),responseSerialization:z.enum(lv).optional()});var Uu=9e4;var zye=O.object({url:O.string(),lineNumber:O.number(),columnNumber:O.number()}),RW=O.object({timestamp:O.number(),text:O.string(),type:O.string(),tabIndex:O.number(),args:O.unknown().optional().array().optional(),url:O.string().optional(),location:zye.optional()}),wW=RW.array(),rN=wW.array();var _b=class{async getConsoleLogsForRunAttempt(t,n,o){}async getNetworkLogsForRunAttempt(t,n,o){}async getHtmlSnapshot(t,n){}async getA11yTreeSnapshot(t,n){}async getScreenshot(t,n){}async storeConsoleLogsForRunAttempt(t,n,o,r){}async storeNetworkLogsForRunAttempt(t,n,o,r){}listVideoAssetPaths(){return []}close(){}async storeScreenshot(t,n,o){}async storeOnDemandScreenshotById(t,n,o,r){}async storeHtmlSnapshot(t,n,o){}};var Wye=z.object({name:z.string(),version:z.string(),comment:z.string().optional()}),qye=z.object({name:z.string(),version:z.string(),comment:z.string().optional()}),Kye=z.object({onContentLoad:z.number().optional(),onLoad:z.number().optional(),comment:z.string().optional()}),Pb=z.object({startedDateTime:z.string(),id:z.string(),title:z.string().optional(),pageTimings:Kye,comment:z.string().optional()}),Yye=z.array(Pb),Jye=z.object({name:z.string(),value:z.string(),path:z.string().optional(),domain:z.string().optional(),expires:z.string().optional(),httpOnly:z.boolean().optional(),secure:z.boolean().optional(),comment:z.string().optional()}),xW=z.array(Jye),Xye=z.object({name:z.string(),value:z.string(),comment:z.string().optional()}),_W=z.array(Xye),Qye=z.object({name:z.string(),value:z.string(),comment:z.string().optional()}),Zye=z.array(Qye),eSe=z.object({name:z.string(),value:z.string().optional(),fileName:z.string().optional(),contentType:z.string().optional(),comment:z.string().optional()}),tSe=z.array(eSe),nSe=z.object({mimeType:z.string(),params:tSe,text:z.string(),comment:z.string().optional(),_redactedReason:z.string().optional()}),oSe=z.object({method:z.string(),url:z.string(),httpVersion:z.string().optional(),cookies:xW,headers:_W,queryString:Zye,postData:nSe.optional(),headersSize:z.number().optional(),bodySize:z.number().optional(),comment:z.string().optional()}),rSe=z.object({size:z.number().optional(),compression:z.number().optional(),mimeType:z.string().optional(),text:z.string().optional(),encoding:z.string().optional(),comment:z.string().optional(),_redactedReason:z.string().optional()}),iSe=z.object({status:z.number(),statusText:z.string(),httpVersion:z.string().optional(),cookies:xW,headers:_W,content:rSe,redirectURL:z.string().optional(),headersSize:z.number().optional(),bodySize:z.number().optional(),comment:z.string().optional(),_mocked:z.boolean().optional()}),IW=z.object({expires:z.string().optional(),lastAccess:z.string(),eTag:z.string(),hitCount:z.number(),comment:z.string().optional()}),sSe=z.object({beforeRequest:IW.optional(),afterRequest:IW.optional(),comment:z.string().optional()}),aSe=z.object({blocked:z.number().optional(),dns:z.number().optional(),connect:z.number().optional(),send:z.number(),wait:z.number(),receive:z.number(),ssl:z.number().optional(),comment:z.string().optional()}),Ob=z.object({pageref:z.string().optional(),startedDateTime:z.string(),time:z.number().optional(),request:oSe,response:iSe.optional(),cache:sSe.optional(),timings:aSe,serverIPAddress:z.string().optional(),connection:z.string().optional(),comment:z.string().optional(),_resourceType:z.string().optional()}),lSe=z.array(Ob),cSe=z.object({version:z.string().default("1.1"),creator:Wye.optional(),browser:qye.optional(),pages:Yye.optional(),entries:lSe,comment:z.string().optional()});z.object({log:cSe});z.record(z.string(),Pb);z.record(z.string(),Ob);function iN(e,t){return {log:{version:"1.2",creator:{name:"Momentic, Inc.",version:"1.0.0"},pages:Object.values(e).sort((n,o)=>new Date(n.startedDateTime).getTime()-new Date(o.startedDateTime).getTime()),entries:Object.values(t).sort((n,o)=>new Date(n.startedDateTime).getTime()-new Date(o.startedDateTime).getTime())}}}var sN=(b=>(b.DisableClickhouseCaches="disable_clickhouse_caches",b.ShowZeroOpacityElements="show_zero_opacity_elements",b.VisualActions="visual_actions",b.RagV2="rag_v2",b.DisableSecondaryCacheResolution="disable_secondary_cache_resolution",b.GlobalLocatorRedirect="global_locator_redirect",b.FakerConstantSeed="faker_constant_seed",b.AutoExpandIframes="auto_expand_iframes",b.MobileNewAiActionStepsUseV3="mobile_new_ai_action_steps_use_v3",b.PerformanceInsights="performance_insights",b.ShowKnowledgeBase="show_knowledge_base",b.AppGraphBackend="app_graph_backend",b.AppGraphUI="app_graph_ui",b.ClassificationUI="classification_ui",b.HealingUI="healing_ui",b.ExploreUI="explore_ui",b.SlackNotifications="slack_notifications",b.SlackNotificationDms="slack_notification_dms",b.ResultClassificationCache="result_classification_cache",b))(sN||{});var Hu=z.union([z.string(),z.number(),z.boolean(),z.null(),z.record(z.string(),z.lazy(()=>Hu)),z.array(z.lazy(()=>Hu))]),Mb=class{flags;payloads;constructor(t,n){this.flags=t,this.payloads=n;}isBooleanFlagEnabled(t){return process.env&&process.env[`MOMENTIC_FLAG_OVERRIDE_${t.toUpperCase()}`]==="true"?true:process.env&&process.env[`MOMENTIC_FLAG_OVERRIDE_${t.toUpperCase()}`]==="false"?false:this.flags[t]===true}getAllFlags(){let t=cloneDeep(this.flags);return Object.entries(t).forEach(([n,o])=>{typeof o=="boolean"&&Object.values(sN).includes(n)&&(t[n]=this.isBooleanFlagEnabled(n));}),t}getFlagPayload(t){let n=this.payloads[t];if(n!==void 0){if(typeof n=="string")try{return JSON.parse(n)}catch{return n}return n}}refresh(){throw new Error("Not implemented")}};var Nb={".123":"application/vnd.lotus-1-2-3",".3dml":"text/vnd.in3d.3dml",".3g2":"video/3gpp2",".3gp":"video/3gpp",".a":"application/octet-stream",".aab":"application/x-authorware-bin",".aac":"audio/x-aac",".aam":"application/x-authorware-map",".aas":"application/x-authorware-seg",".abw":"application/x-abiword",".acc":"application/vnd.americandynamics.acc",".ace":"application/x-ace-compressed",".acu":"application/vnd.acucobol",".acutc":"application/vnd.acucorp",".adp":"audio/adpcm",".aep":"application/vnd.audiograph",".afm":"application/x-font-type1",".afp":"application/vnd.ibm.modcap",".ai":"application/postscript",".aif":"audio/x-aiff",".aifc":"audio/x-aiff",".aiff":"audio/x-aiff",".air":"application/vnd.adobe.air-application-installer-package+zip",".ami":"application/vnd.amiga.ami",".apk":"application/vnd.android.package-archive",".application":"application/x-ms-application",".apr":"application/vnd.lotus-approach",".asc":"application/pgp-signature",".asf":"video/x-ms-asf",".asm":"text/x-asm",".aso":"application/vnd.accpac.simply.aso",".asx":"video/x-ms-asf",".atc":"application/vnd.acucorp",".atom":"application/atom+xml",".atomcat":"application/atomcat+xml",".atomsvc":"application/atomsvc+xml",".atx":"application/vnd.antix.game-component",".au":"audio/basic",".avi":"video/x-msvideo",".aw":"application/applixware",".azf":"application/vnd.airzip.filesecure.azf",".azs":"application/vnd.airzip.filesecure.azs",".azw":"application/vnd.amazon.ebook",".bat":"application/x-msdownload",".bcpio":"application/x-bcpio",".bdf":"application/x-font-bdf",".bdm":"application/vnd.syncml.dm+wbxml",".bh2":"application/vnd.fujitsu.oasysprs",".bin":"application/octet-stream",".bmi":"application/vnd.bmi",".bmp":"image/bmp",".book":"application/vnd.framemaker",".box":"application/vnd.previewsystems.box",".boz":"application/x-bzip2",".bpk":"application/octet-stream",".btif":"image/prs.btif",".bz":"application/x-bzip",".bz2":"application/x-bzip2",".c":"text/x-c",".c4d":"application/vnd.clonk.c4group",".c4f":"application/vnd.clonk.c4group",".c4g":"application/vnd.clonk.c4group",".c4p":"application/vnd.clonk.c4group",".c4u":"application/vnd.clonk.c4group",".cab":"application/vnd.ms-cab-compressed",".car":"application/vnd.curl.car",".cat":"application/vnd.ms-pki.seccat",".cc":"text/x-c",".cct":"application/x-director",".ccxml":"application/ccxml+xml",".cdbcmsg":"application/vnd.contact.cmsg",".cdf":"application/x-netcdf",".cdkey":"application/vnd.mediastation.cdkey",".cdx":"chemical/x-cdx",".cdxml":"application/vnd.chemdraw+xml",".cdy":"application/vnd.cinderella",".cer":"application/pkix-cert",".cgm":"image/cgm",".chat":"application/x-chat",".chm":"application/vnd.ms-htmlhelp",".chrt":"application/vnd.kde.kchart",".cif":"chemical/x-cif",".cii":"application/vnd.anser-web-certificate-issue-initiation",".cil":"application/vnd.ms-artgalry",".cla":"application/vnd.claymore",".class":"application/java-vm",".clkk":"application/vnd.crick.clicker.keyboard",".clkp":"application/vnd.crick.clicker.palette",".clkt":"application/vnd.crick.clicker.template",".clkw":"application/vnd.crick.clicker.wordbank",".clkx":"application/vnd.crick.clicker",".clp":"application/x-msclip",".cmc":"application/vnd.cosmocaller",".cmdf":"chemical/x-cmdf",".cml":"chemical/x-cml",".cmp":"application/vnd.yellowriver-custom-menu",".cmx":"image/x-cmx",".cod":"application/vnd.rim.cod",".com":"application/x-msdownload",".conf":"text/plain",".cpio":"application/x-cpio",".cpp":"text/x-c",".cpt":"application/mac-compactpro",".crd":"application/x-mscardfile",".crl":"application/pkix-crl",".crt":"application/x-x509-ca-cert",".csh":"application/x-csh",".csml":"chemical/x-csml",".csp":"application/vnd.commonspace",".css":"text/css",".cst":"application/x-director",".csv":"text/csv",".cu":"application/cu-seeme",".curl":"text/vnd.curl",".cww":"application/prs.cww",".cxt":"application/x-director",".cxx":"text/x-c",".daf":"application/vnd.mobius.daf",".dataless":"application/vnd.fdsn.seed",".davmount":"application/davmount+xml",".dcr":"application/x-director",".dcurl":"text/vnd.curl.dcurl",".dd2":"application/vnd.oma.dd2+xml",".ddd":"application/vnd.fujixerox.ddd",".deb":"application/x-debian-package",".def":"text/plain",".deploy":"application/octet-stream",".der":"application/x-x509-ca-cert",".dfac":"application/vnd.dreamfactory",".dic":"text/x-c",".diff":"text/plain",".dir":"application/x-director",".dis":"application/vnd.mobius.dis",".dist":"application/octet-stream",".distz":"application/octet-stream",".djv":"image/vnd.djvu",".djvu":"image/vnd.djvu",".dll":"application/x-msdownload",".dmg":"application/octet-stream",".dms":"application/octet-stream",".dna":"application/vnd.dna",".doc":"application/msword",".docm":"application/vnd.ms-word.document.macroenabled.12",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".dot":"application/msword",".dotm":"application/vnd.ms-word.template.macroenabled.12",".dotx":"application/vnd.openxmlformats-officedocument.wordprocessingml.template",".dp":"application/vnd.osgi.dp",".dpg":"application/vnd.dpgraph",".dsc":"text/prs.lines.tag",".dtb":"application/x-dtbook+xml",".dtd":"application/xml-dtd",".dts":"audio/vnd.dts",".dtshd":"audio/vnd.dts.hd",".dump":"application/octet-stream",".dvi":"application/x-dvi",".dwf":"model/vnd.dwf",".dwg":"image/vnd.dwg",".dxf":"image/vnd.dxf",".dxp":"application/vnd.spotfire.dxp",".dxr":"application/x-director",".ecelp4800":"audio/vnd.nuera.ecelp4800",".ecelp7470":"audio/vnd.nuera.ecelp7470",".ecelp9600":"audio/vnd.nuera.ecelp9600",".ecma":"application/ecmascript",".edm":"application/vnd.novadigm.edm",".edx":"application/vnd.novadigm.edx",".efif":"application/vnd.picsel",".ei6":"application/vnd.pg.osasli",".elc":"application/octet-stream",".eml":"message/rfc822",".emma":"application/emma+xml",".eol":"audio/vnd.digital-winds",".eot":"application/vnd.ms-fontobject",".eps":"application/postscript",".epub":"application/epub+zip",".es3":"application/vnd.eszigno3+xml",".esf":"application/vnd.epson.esf",".et3":"application/vnd.eszigno3+xml",".etx":"text/x-setext",".exe":"application/x-msdownload",".ext":"application/vnd.novadigm.ext",".ez":"application/andrew-inset",".ez2":"application/vnd.ezpix-album",".ez3":"application/vnd.ezpix-package",".f":"text/x-fortran",".f4v":"video/x-f4v",".f77":"text/x-fortran",".f90":"text/x-fortran",".fbs":"image/vnd.fastbidsheet",".fdf":"application/vnd.fdf",".fe_launch":"application/vnd.denovo.fcselayout-link",".fg5":"application/vnd.fujitsu.oasysgp",".fgd":"application/x-director",".fh":"image/x-freehand",".fh4":"image/x-freehand",".fh5":"image/x-freehand",".fh7":"image/x-freehand",".fhc":"image/x-freehand",".fig":"application/x-xfig",".fli":"video/x-fli",".flo":"application/vnd.micrografx.flo",".flv":"video/x-flv",".flw":"application/vnd.kde.kivio",".flx":"text/vnd.fmi.flexstor",".fly":"text/vnd.fly",".fm":"application/vnd.framemaker",".fnc":"application/vnd.frogans.fnc",".for":"text/x-fortran",".fpx":"image/vnd.fpx",".frame":"application/vnd.framemaker",".fsc":"application/vnd.fsc.weblaunch",".fst":"image/vnd.fst",".ftc":"application/vnd.fluxtime.clip",".fti":"application/vnd.anser-web-funds-transfer-initiation",".fvt":"video/vnd.fvt",".fzs":"application/vnd.fuzzysheet",".g3":"image/g3fax",".gac":"application/vnd.groove-account",".gdl":"model/vnd.gdl",".geo":"application/vnd.dynageo",".gex":"application/vnd.geometry-explorer",".ggb":"application/vnd.geogebra.file",".ggt":"application/vnd.geogebra.tool",".ghf":"application/vnd.groove-help",".gif":"image/gif",".gim":"application/vnd.groove-identity-message",".gmx":"application/vnd.gmx",".gnumeric":"application/x-gnumeric",".gph":"application/vnd.flographit",".gqf":"application/vnd.grafeq",".gqs":"application/vnd.grafeq",".gram":"application/srgs",".gre":"application/vnd.geometry-explorer",".grv":"application/vnd.groove-injector",".grxml":"application/srgs+xml",".gsf":"application/x-font-ghostscript",".gtar":"application/x-gtar",".gtm":"application/vnd.groove-tool-message",".gtw":"model/vnd.gtw",".gv":"text/vnd.graphviz",".gz":"application/x-gzip",".h":"text/x-c",".h261":"video/h261",".h263":"video/h263",".h264":"video/h264",".hbci":"application/vnd.hbci",".hdf":"application/x-hdf",".hh":"text/x-c",".hlp":"application/winhlp",".hpgl":"application/vnd.hp-hpgl",".hpid":"application/vnd.hp-hpid",".hps":"application/vnd.hp-hps",".hqx":"application/mac-binhex40",".htke":"application/vnd.kenameaapp",".htm":"text/html",".html":"text/html",".hvd":"application/vnd.yamaha.hv-dic",".hvp":"application/vnd.yamaha.hv-voice",".hvs":"application/vnd.yamaha.hv-script",".icc":"application/vnd.iccprofile",".ice":"x-conference/x-cooltalk",".icm":"application/vnd.iccprofile",".ico":"image/x-icon",".ics":"text/calendar",".ief":"image/ief",".ifb":"text/calendar",".ifm":"application/vnd.shana.informed.formdata",".iges":"model/iges",".igl":"application/vnd.igloader",".igs":"model/iges",".igx":"application/vnd.micrografx.igx",".iif":"application/vnd.shana.informed.interchange",".imp":"application/vnd.accpac.simply.imp",".ims":"application/vnd.ms-ims",".in":"text/plain",".ipk":"application/vnd.shana.informed.package",".irm":"application/vnd.ibm.rights-management",".irp":"application/vnd.irepository.package+xml",".iso":"application/octet-stream",".itp":"application/vnd.shana.informed.formtemplate",".ivp":"application/vnd.immervision-ivp",".ivu":"application/vnd.immervision-ivu",".jad":"text/vnd.sun.j2me.app-descriptor",".jam":"application/vnd.jam",".jar":"application/java-archive",".java":"text/x-java-source",".jisp":"application/vnd.jisp",".jlt":"application/vnd.hp-jlyt",".jnlp":"application/x-java-jnlp-file",".joda":"application/vnd.joost.joda-archive",".jpe":"image/jpeg",".jpeg":"image/jpeg",".jpg":"image/jpeg",".jpgm":"video/jpm",".jpgv":"video/jpeg",".jpm":"video/jpm",".js":"application/javascript",".json":"application/json",".kar":"audio/midi",".karbon":"application/vnd.kde.karbon",".kfo":"application/vnd.kde.kformula",".kia":"application/vnd.kidspiration",".kil":"application/x-killustrator",".kml":"application/vnd.google-earth.kml+xml",".kmz":"application/vnd.google-earth.kmz",".kne":"application/vnd.kinar",".knp":"application/vnd.kinar",".kon":"application/vnd.kde.kontour",".kpr":"application/vnd.kde.kpresenter",".kpt":"application/vnd.kde.kpresenter",".ksh":"text/plain",".ksp":"application/vnd.kde.kspread",".ktr":"application/vnd.kahootz",".ktz":"application/vnd.kahootz",".kwd":"application/vnd.kde.kword",".kwt":"application/vnd.kde.kword",".latex":"application/x-latex",".lbd":"application/vnd.llamagraphics.life-balance.desktop",".lbe":"application/vnd.llamagraphics.life-balance.exchange+xml",".les":"application/vnd.hhe.lesson-player",".lha":"application/octet-stream",".link66":"application/vnd.route66.link66+xml",".list":"text/plain",".list3820":"application/vnd.ibm.modcap",".listafp":"application/vnd.ibm.modcap",".log":"text/plain",".lostxml":"application/lost+xml",".lrf":"application/octet-stream",".lrm":"application/vnd.ms-lrm",".ltf":"application/vnd.frogans.ltf",".lvp":"audio/vnd.lucent.voice",".lwp":"application/vnd.lotus-wordpro",".lzh":"application/octet-stream",".m13":"application/x-msmediaview",".m14":"application/x-msmediaview",".m1v":"video/mpeg",".m2a":"audio/mpeg",".m2v":"video/mpeg",".m3a":"audio/mpeg",".m3u":"audio/x-mpegurl",".m4u":"video/vnd.mpegurl",".m4v":"video/x-m4v",".ma":"application/mathematica",".mag":"application/vnd.ecowin.chart",".maker":"application/vnd.framemaker",".man":"text/troff",".mathml":"application/mathml+xml",".mb":"application/mathematica",".mbk":"application/vnd.mobius.mbk",".mbox":"application/mbox",".mc1":"application/vnd.medcalcdata",".mcd":"application/vnd.mcd",".mcurl":"text/vnd.curl.mcurl",".mdb":"application/x-msaccess",".mdi":"image/vnd.ms-modi",".me":"text/troff",".mesh":"model/mesh",".mfm":"application/vnd.mfmp",".mgz":"application/vnd.proteus.magazine",".mht":"message/rfc822",".mhtml":"message/rfc822",".mid":"audio/midi",".midi":"audio/midi",".mif":"application/vnd.mif",".mime":"message/rfc822",".mj2":"video/mj2",".mjp2":"video/mj2",".mkv":"video/x-matroska",".mlp":"application/vnd.dolby.mlp",".mmd":"application/vnd.chipnuts.karaoke-mmd",".mmf":"application/vnd.smaf",".mmr":"image/vnd.fujixerox.edmics-mmr",".mny":"application/x-msmoney",".mobi":"application/x-mobipocket-ebook",".mov":"video/quicktime",".movie":"video/x-sgi-movie",".mp2":"audio/mpeg",".mp2a":"audio/mpeg",".mp3":"audio/mpeg",".mp4":"video/mp4",".mp4a":"audio/mp4",".mp4s":"application/mp4",".mp4v":"video/mp4",".mpa":"video/mpeg",".mpc":"application/vnd.mophun.certificate",".mpe":"video/mpeg",".mpeg":"video/mpeg",".mpg":"video/mpeg",".mpg4":"video/mp4",".mpga":"audio/mpeg",".mpkg":"application/vnd.apple.installer+xml",".mpm":"application/vnd.blueice.multipass",".mpn":"application/vnd.mophun.application",".mpp":"application/vnd.ms-project",".mpt":"application/vnd.ms-project",".mpy":"application/vnd.ibm.minipay",".mqy":"application/vnd.mobius.mqy",".mrc":"application/marc",".ms":"text/troff",".mscml":"application/mediaservercontrol+xml",".mseed":"application/vnd.fdsn.mseed",".mseq":"application/vnd.mseq",".msf":"application/vnd.epson.msf",".msh":"model/mesh",".msi":"application/x-msdownload",".msl":"application/vnd.mobius.msl",".msty":"application/vnd.muvee.style",".mts":"model/vnd.mts",".mus":"application/vnd.musician",".musicxml":"application/vnd.recordare.musicxml+xml",".mvb":"application/x-msmediaview",".mwf":"application/vnd.mfer",".mxf":"application/mxf",".mxl":"application/vnd.recordare.musicxml",".mxml":"application/xv+xml",".mxs":"application/vnd.triscape.mxs",".mxu":"video/vnd.mpegurl",".n-gage":"application/vnd.nokia.n-gage.symbian.install",".nb":"application/mathematica",".nc":"application/x-netcdf",".ncx":"application/x-dtbncx+xml",".ngdat":"application/vnd.nokia.n-gage.data",".nlu":"application/vnd.neurolanguage.nlu",".nml":"application/vnd.enliven",".nnd":"application/vnd.noblenet-directory",".nns":"application/vnd.noblenet-sealer",".nnw":"application/vnd.noblenet-web",".npx":"image/vnd.net-fpx",".nsf":"application/vnd.lotus-notes",".nws":"message/rfc822",".o":"application/octet-stream",".oa2":"application/vnd.fujitsu.oasys2",".oa3":"application/vnd.fujitsu.oasys3",".oas":"application/vnd.fujitsu.oasys",".obd":"application/x-msbinder",".obj":"application/octet-stream",".oda":"application/oda",".odb":"application/vnd.oasis.opendocument.database",".odc":"application/vnd.oasis.opendocument.chart",".odf":"application/vnd.oasis.opendocument.formula",".odft":"application/vnd.oasis.opendocument.formula-template",".odg":"application/vnd.oasis.opendocument.graphics",".odi":"application/vnd.oasis.opendocument.image",".odp":"application/vnd.oasis.opendocument.presentation",".ods":"application/vnd.oasis.opendocument.spreadsheet",".odt":"application/vnd.oasis.opendocument.text",".oga":"audio/ogg",".ogg":"audio/ogg",".ogv":"video/ogg",".ogx":"application/ogg",".onepkg":"application/onenote",".onetmp":"application/onenote",".onetoc":"application/onenote",".onetoc2":"application/onenote",".opf":"application/oebps-package+xml",".oprc":"application/vnd.palm",".org":"application/vnd.lotus-organizer",".osf":"application/vnd.yamaha.openscoreformat",".osfpvg":"application/vnd.yamaha.openscoreformat.osfpvg+xml",".otc":"application/vnd.oasis.opendocument.chart-template",".otf":"application/x-font-otf",".otg":"application/vnd.oasis.opendocument.graphics-template",".oth":"application/vnd.oasis.opendocument.text-web",".oti":"application/vnd.oasis.opendocument.image-template",".otm":"application/vnd.oasis.opendocument.text-master",".otp":"application/vnd.oasis.opendocument.presentation-template",".ots":"application/vnd.oasis.opendocument.spreadsheet-template",".ott":"application/vnd.oasis.opendocument.text-template",".oxt":"application/vnd.openofficeorg.extension",".p":"text/x-pascal",".p10":"application/pkcs10",".p12":"application/x-pkcs12",".p7b":"application/x-pkcs7-certificates",".p7c":"application/pkcs7-mime",".p7m":"application/pkcs7-mime",".p7r":"application/x-pkcs7-certreqresp",".p7s":"application/pkcs7-signature",".pas":"text/x-pascal",".pbd":"application/vnd.powerbuilder6",".pbm":"image/x-portable-bitmap",".pcf":"application/x-font-pcf",".pcl":"application/vnd.hp-pcl",".pclxl":"application/vnd.hp-pclxl",".pct":"image/x-pict",".pcurl":"application/vnd.curl.pcurl",".pcx":"image/x-pcx",".pdb":"application/vnd.palm",".pdf":"application/pdf",".pfa":"application/x-font-type1",".pfb":"application/x-font-type1",".pfm":"application/x-font-type1",".pfr":"application/font-tdpfr",".pfx":"application/x-pkcs12",".pgm":"image/x-portable-graymap",".pgn":"application/x-chess-pgn",".pgp":"application/pgp-encrypted",".pic":"image/x-pict",".pkg":"application/octet-stream",".pki":"application/pkixcmp",".pkipath":"application/pkix-pkipath",".pl":"text/plain",".plb":"application/vnd.3gpp.pic-bw-large",".plc":"application/vnd.mobius.plc",".plf":"application/vnd.pocketlearn",".pls":"application/pls+xml",".pml":"application/vnd.ctc-posml",".png":"image/png",".pnm":"image/x-portable-anymap",".portpkg":"application/vnd.macports.portpkg",".pot":"application/vnd.ms-powerpoint",".potm":"application/vnd.ms-powerpoint.template.macroenabled.12",".potx":"application/vnd.openxmlformats-officedocument.presentationml.template",".ppa":"application/vnd.ms-powerpoint",".ppam":"application/vnd.ms-powerpoint.addin.macroenabled.12",".ppd":"application/vnd.cups-ppd",".ppm":"image/x-portable-pixmap",".pps":"application/vnd.ms-powerpoint",".ppsm":"application/vnd.ms-powerpoint.slideshow.macroenabled.12",".ppsx":"application/vnd.openxmlformats-officedocument.presentationml.slideshow",".ppt":"application/vnd.ms-powerpoint",".pptm":"application/vnd.ms-powerpoint.presentation.macroenabled.12",".pptx":"application/vnd.openxmlformats-officedocument.presentationml.presentation",".pqa":"application/vnd.palm",".prc":"application/x-mobipocket-ebook",".pre":"application/vnd.lotus-freelance",".prf":"application/pics-rules",".ps":"application/postscript",".psb":"application/vnd.3gpp.pic-bw-small",".psd":"image/vnd.adobe.photoshop",".psf":"application/x-font-linux-psf",".ptid":"application/vnd.pvi.ptid1",".pub":"application/x-mspublisher",".pvb":"application/vnd.3gpp.pic-bw-var",".pwn":"application/vnd.3m.post-it-notes",".pwz":"application/vnd.ms-powerpoint",".py":"text/x-python",".pya":"audio/vnd.ms-playready.media.pya",".pyc":"application/x-python-code",".pyo":"application/x-python-code",".pyv":"video/vnd.ms-playready.media.pyv",".qam":"application/vnd.epson.quickanime",".qbo":"application/vnd.intu.qbo",".qfx":"application/vnd.intu.qfx",".qps":"application/vnd.publishare-delta-tree",".qt":"video/quicktime",".qwd":"application/vnd.quark.quarkxpress",".qwt":"application/vnd.quark.quarkxpress",".qxb":"application/vnd.quark.quarkxpress",".qxd":"application/vnd.quark.quarkxpress",".qxl":"application/vnd.quark.quarkxpress",".qxt":"application/vnd.quark.quarkxpress",".ra":"audio/x-pn-realaudio",".ram":"audio/x-pn-realaudio",".rar":"application/x-rar-compressed",".ras":"image/x-cmu-raster",".rcprofile":"application/vnd.ipunplugged.rcprofile",".rdf":"application/rdf+xml",".rdz":"application/vnd.data-vision.rdz",".rep":"application/vnd.businessobjects",".res":"application/x-dtbresource+xml",".rgb":"image/x-rgb",".rif":"application/reginfo+xml",".rl":"application/resource-lists+xml",".rlc":"image/vnd.fujixerox.edmics-rlc",".rld":"application/resource-lists-diff+xml",".rm":"application/vnd.rn-realmedia",".rmi":"audio/midi",".rmp":"audio/x-pn-realaudio-plugin",".rms":"application/vnd.jcp.javame.midlet-rms",".rnc":"application/relax-ng-compact-syntax",".roff":"text/troff",".rpm":"application/x-rpm",".rpss":"application/vnd.nokia.radio-presets",".rpst":"application/vnd.nokia.radio-preset",".rq":"application/sparql-query",".rs":"application/rls-services+xml",".rsd":"application/rsd+xml",".rss":"application/rss+xml",".rtf":"application/rtf",".rtx":"text/richtext",".s":"text/x-asm",".saf":"application/vnd.yamaha.smaf-audio",".sbml":"application/sbml+xml",".sc":"application/vnd.ibm.secure-container",".scd":"application/x-msschedule",".scm":"application/vnd.lotus-screencam",".scq":"application/scvp-cv-request",".scs":"application/scvp-cv-response",".scurl":"text/vnd.curl.scurl",".sda":"application/vnd.stardivision.draw",".sdc":"application/vnd.stardivision.calc",".sdd":"application/vnd.stardivision.impress",".sdkd":"application/vnd.solent.sdkm+xml",".sdkm":"application/vnd.solent.sdkm+xml",".sdp":"application/sdp",".sdw":"application/vnd.stardivision.writer",".see":"application/vnd.seemail",".seed":"application/vnd.fdsn.seed",".sema":"application/vnd.sema",".semd":"application/vnd.semd",".semf":"application/vnd.semf",".ser":"application/java-serialized-object",".setpay":"application/set-payment-initiation",".setreg":"application/set-registration-initiation",".sfd-hdstx":"application/vnd.hydrostatix.sof-data",".sfs":"application/vnd.spotfire.sfs",".sgl":"application/vnd.stardivision.writer-global",".sgm":"text/sgml",".sgml":"text/sgml",".sh":"application/x-sh",".shar":"application/x-shar",".shf":"application/shf+xml",".si":"text/vnd.wap.si",".sic":"application/vnd.wap.sic",".sig":"application/pgp-signature",".silo":"model/mesh",".sis":"application/vnd.symbian.install",".sisx":"application/vnd.symbian.install",".sit":"application/x-stuffit",".sitx":"application/x-stuffitx",".skd":"application/vnd.koan",".skm":"application/vnd.koan",".skp":"application/vnd.koan",".skt":"application/vnd.koan",".sl":"text/vnd.wap.sl",".slc":"application/vnd.wap.slc",".sldm":"application/vnd.ms-powerpoint.slide.macroenabled.12",".sldx":"application/vnd.openxmlformats-officedocument.presentationml.slide",".slt":"application/vnd.epson.salt",".smf":"application/vnd.stardivision.math",".smi":"application/smil+xml",".smil":"application/smil+xml",".snd":"audio/basic",".snf":"application/x-font-snf",".so":"application/octet-stream",".spc":"application/x-pkcs7-certificates",".spf":"application/vnd.yamaha.smaf-phrase",".spl":"application/x-futuresplash",".spot":"text/vnd.in3d.spot",".spp":"application/scvp-vp-response",".spq":"application/scvp-vp-request",".spx":"audio/ogg",".src":"application/x-wais-source",".srx":"application/sparql-results+xml",".sse":"application/vnd.kodak-descriptor",".ssf":"application/vnd.epson.ssf",".ssml":"application/ssml+xml",".stc":"application/vnd.sun.xml.calc.template",".std":"application/vnd.sun.xml.draw.template",".stf":"application/vnd.wt.stf",".sti":"application/vnd.sun.xml.impress.template",".stk":"application/hyperstudio",".stl":"application/vnd.ms-pki.stl",".str":"application/vnd.pg.format",".stw":"application/vnd.sun.xml.writer.template",".sus":"application/vnd.sus-calendar",".susp":"application/vnd.sus-calendar",".sv4cpio":"application/x-sv4cpio",".sv4crc":"application/x-sv4crc",".svd":"application/vnd.svd",".svg":"image/svg+xml",".svgz":"image/svg+xml",".swa":"application/x-director",".swf":"application/x-shockwave-flash",".swi":"application/vnd.arastra.swi",".sxc":"application/vnd.sun.xml.calc",".sxd":"application/vnd.sun.xml.draw",".sxg":"application/vnd.sun.xml.writer.global",".sxi":"application/vnd.sun.xml.impress",".sxm":"application/vnd.sun.xml.math",".sxw":"application/vnd.sun.xml.writer",".t":"text/troff",".tao":"application/vnd.tao.intent-module-archive",".tar":"application/x-tar",".tcap":"application/vnd.3gpp2.tcap",".tcl":"application/x-tcl",".teacher":"application/vnd.smart.teacher",".tex":"application/x-tex",".texi":"application/x-texinfo",".texinfo":"application/x-texinfo",".text":"text/plain",".tfm":"application/x-tex-tfm",".tgz":"application/x-gzip",".tif":"image/tiff",".tiff":"image/tiff",".tmo":"application/vnd.tmobile-livetv",".torrent":"application/x-bittorrent",".tpl":"application/vnd.groove-tool-template",".tpt":"application/vnd.trid.tpt",".tr":"text/troff",".tra":"application/vnd.trueapp",".trm":"application/x-msterminal",".tsv":"text/tab-separated-values",".ttc":"application/x-font-ttf",".ttf":"application/x-font-ttf",".twd":"application/vnd.simtech-mindmapper",".twds":"application/vnd.simtech-mindmapper",".txd":"application/vnd.genomatix.tuxedo",".txf":"application/vnd.mobius.txf",".txt":"text/plain",".u32":"application/x-authorware-bin",".udeb":"application/x-debian-package",".ufd":"application/vnd.ufdl",".ufdl":"application/vnd.ufdl",".umj":"application/vnd.umajin",".unityweb":"application/vnd.unity",".uoml":"application/vnd.uoml+xml",".uri":"text/uri-list",".uris":"text/uri-list",".urls":"text/uri-list",".ustar":"application/x-ustar",".utz":"application/vnd.uiq.theme",".uu":"text/x-uuencode",".vcd":"application/x-cdlink",".vcf":"text/x-vcard",".vcg":"application/vnd.groove-vcard",".vcs":"text/x-vcalendar",".vcx":"application/vnd.vcx",".vis":"application/vnd.visionary",".viv":"video/vnd.vivo",".vor":"application/vnd.stardivision.writer",".vox":"application/x-authorware-bin",".vrml":"model/vrml",".vsd":"application/vnd.visio",".vsf":"application/vnd.vsf",".vss":"application/vnd.visio",".vst":"application/vnd.visio",".vsw":"application/vnd.visio",".vtu":"model/vnd.vtu",".vxml":"application/voicexml+xml",".w3d":"application/x-director",".webm":"video/webm",".wad":"application/x-doom",".wav":"audio/x-wav",".wax":"audio/x-ms-wax",".wbmp":"image/vnd.wap.wbmp",".wbs":"application/vnd.criticaltools.wbs+xml",".wbxml":"application/vnd.wap.wbxml",".wcm":"application/vnd.ms-works",".wdb":"application/vnd.ms-works",".wiz":"application/msword",".wks":"application/vnd.ms-works",".wm":"video/x-ms-wm",".wma":"audio/x-ms-wma",".wmd":"application/x-ms-wmd",".wmf":"application/x-msmetafile",".wml":"text/vnd.wap.wml",".wmlc":"application/vnd.wap.wmlc",".wmls":"text/vnd.wap.wmlscript",".wmlsc":"application/vnd.wap.wmlscriptc",".wmv":"video/x-ms-wmv",".wmx":"video/x-ms-wmx",".wmz":"application/x-ms-wmz",".wpd":"application/vnd.wordperfect",".wpl":"application/vnd.ms-wpl",".wps":"application/vnd.ms-works",".wqd":"application/vnd.wqd",".wri":"application/x-mswrite",".wrl":"model/vrml",".wsdl":"application/wsdl+xml",".wspolicy":"application/wspolicy+xml",".wtb":"application/vnd.webturbo",".wvx":"video/x-ms-wvx",".x32":"application/x-authorware-bin",".x3d":"application/vnd.hzn-3d-crossword",".xap":"application/x-silverlight-app",".xar":"application/vnd.xara",".xbap":"application/x-ms-xbap",".xbd":"application/vnd.fujixerox.docuworks.binder",".xbm":"image/x-xbitmap",".xdm":"application/vnd.syncml.dm+xml",".xdp":"application/vnd.adobe.xdp+xml",".xdw":"application/vnd.fujixerox.docuworks",".xenc":"application/xenc+xml",".xer":"application/patch-ops-error+xml",".xfdf":"application/vnd.adobe.xfdf",".xfdl":"application/vnd.xfdl",".xht":"application/xhtml+xml",".xhtml":"application/xhtml+xml",".xhvml":"application/xv+xml",".xif":"image/vnd.xiff",".xla":"application/vnd.ms-excel",".xlam":"application/vnd.ms-excel.addin.macroenabled.12",".xlb":"application/vnd.ms-excel",".xlc":"application/vnd.ms-excel",".xlm":"application/vnd.ms-excel",".xls":"application/vnd.ms-excel",".xlsb":"application/vnd.ms-excel.sheet.binary.macroenabled.12",".xlsm":"application/vnd.ms-excel.sheet.macroenabled.12",".xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",".xlt":"application/vnd.ms-excel",".xltm":"application/vnd.ms-excel.template.macroenabled.12",".xltx":"application/vnd.openxmlformats-officedocument.spreadsheetml.template",".xlw":"application/vnd.ms-excel",".xml":"application/xml",".xo":"application/vnd.olpc-sugar",".xop":"application/xop+xml",".xpdl":"application/xml",".xpi":"application/x-xpinstall",".xpm":"image/x-xpixmap",".xpr":"application/vnd.is-xpr",".xps":"application/vnd.ms-xpsdocument",".xpw":"application/vnd.intercon.formnet",".xpx":"application/vnd.intercon.formnet",".xsl":"application/xml",".xslt":"application/xslt+xml",".xsm":"application/vnd.syncml+xml",".xspf":"application/xspf+xml",".xul":"application/vnd.mozilla.xul+xml",".xvm":"application/xv+xml",".xvml":"application/xv+xml",".xwd":"image/x-xwindowdump",".xyz":"chemical/x-xyz",".zaz":"application/vnd.zzazz.deck+xml",".zip":"application/zip",".zir":"application/vnd.zul",".zirz":"application/vnd.zul",".zmm":"application/vnd.handheld-entertainment+xml"},PW=[".sh",".exe",".app",".bat",".cmd",".msi",".apk",".jar",".py",".js",".cron",".php",".asp"];var OW=z.discriminatedUnion("operation",[z.object({operation:z.literal("upsert"),path:z.string().min(1),content:z.string()}),z.object({operation:z.literal("delete"),path:z.string().min(1)})]),pSe=z.object({githubLogin:z.string().optional(),email:z.string().optional()}),mSe=z.object({baseSha:z.string().min(1),headSha:z.string().min(1)}),hSe=z.object({baseBranch:z.string().min(1).max(255),baseCommitSha:z.string().min(1),headBranch:z.string().min(1).max(255).optional(),branchPrefix:z.string().min(1).max(255).optional(),idempotencyKey:z.string().min(1).optional()}),gSe=z.object({commitMessage:z.string().min(1),title:z.string().min(1),body:z.string(),reviewers:z.array(z.string().min(1)).optional(),draft:z.boolean().optional()});hSe.extend(gSe.shape).extend({changes:z.array(OW).min(1),coAuthorRange:mSe.optional(),requestCommitAuthorsAsReviewers:z.boolean().optional()}).superRefine((e,t)=>{e.headBranch||(!e.branchPrefix||!e.idempotencyKey)&&t.addIssue({code:"custom",message:"branchPrefix and idempotencyKey are required when headBranch is omitted",path:["idempotencyKey"]});});var MW=z.object({pullRequestUrl:z.url(),pullRequestNumber:z.number(),headBranch:z.string(),commitSha:z.string(),created:z.boolean(),authors:z.array(pSe).optional()});z.object({branch:z.string().min(1).max(255),commitMessage:z.string().min(1),changes:z.array(OW).min(1)});var NW=z.object({branch:z.string(),commitSha:z.string(),committed:z.boolean()}),LW=z.object({issueNumber:z.number(),htmlUrl:z.url(),headBranch:z.string().min(1),baseBranch:z.string().min(1),latestCommitSha:z.string().min(1),draft:z.boolean().optional(),title:z.string().optional(),body:z.string().optional()});z.object({number:z.number(),htmlUrl:z.url()});var fSe=z.object({path:z.string().min(1),status:z.string().min(1),additions:z.number(),deletions:z.number(),previousPath:z.string().optional(),patch:z.string().optional()}),ySe=z.object({sha:z.string().min(1),author:z.string().optional(),email:z.string().optional(),date:z.string().optional(),message:z.string()}),kW=z.object({mergeBaseSha:z.string().min(1),totalCommits:z.number(),commits:z.array(ySe),files:z.array(fSe)}),DW=z.object({content:z.string().nullable()}),FW=z.object({name:z.string().min(1),protected:z.boolean()}),BW=z.object({iid:z.number(),webUrl:z.url(),sourceBranch:z.string().min(1),targetBranch:z.string().min(1),latestCommitSha:z.string().min(1)}),SSe=z.object({name:z.string(),path:z.string(),body:z.string()}),UW=z.object({template:SSe});function gr(e){let[t,n,...o]=e.split("/");if(!(!t||!n||o.length>0))return {owner:t,repo:n}}function HW(e){let t=gr(e);if(t)return t;throw new mt(`Invalid GitHub repository string: ${e}. Expected format "owner/repo".`)}var bSe=/^co-authored-by:\s*.*?<([^>]+)>\s*$/gim,TSe=/^(?:\d+\+)?([^@]+)@users\.noreply\.github\.com$/i;function cv(e){return e.match(TSe)?.[1]}function GW(e){let t=[];for(let n of e.matchAll(bSe)){let o=n[1]?.trim();o&&t.push({email:o,githubLogin:cv(o)});}return t}function ASe(e){return (e.githubLogin??(e.email?cv(e.email):void 0))?.toLowerCase().endsWith("[bot]")??false}function jW(e){return e.filter(t=>!ASe(t))}var $W="https://static.momentic.ai";function Lb(e,t){return {light:`${$W}/${e}.svg`,dark:`${$W}/${e}-dark.svg`,alt:t}}var kb={runGroup:Lb("run-group-button","View run group"),basePr:Lb("view-base-pr-button","View base PR"),branch:Lb("view-branch-button","View branch"),commit:Lb("view-commit-button","View commit")};function Db({href:e,button:t}){return `<a href="${e}"><picture><source media="(prefers-color-scheme: dark)" srcset="${t.dark}" /><img src="${t.light}" alt="${t.alt}" /></picture></a>`}var aN=O__default.object({platformSep:O__default.string(),fullPathSegments:O__default.string().array(),relativePathSegments:O__default.string().array(),relativePath:O__default.string().describe("path relative to the root test directory, i.e. my-folder/my-test.yaml"),fileName:O__default.string().describe("base name of the file including the extension, e.g. my-module.module.yaml"),lastModified:O__default.coerce.date(),createdAt:O__default.coerce.date()});var ESe=z.array(aN.extend({id:z.string(),name:z.string(),description:z.string().optional(),labels:z.string().array().optional()})),CSe=aN.extend({id:z.string(),name:z.string(),description:z.string().optional(),content:dC}),vSe=z.array(CSe);z.object({tests:ESe,modules:vSe,labels:z.string().array()});z.string().array();var VW=z.object({pathSegments:z.string().array()});fM.merge(Zn);var zW=z.object({schemaVersion:z.string(),stepLists:Ql}),WW=Zn.partial().merge(si.pick({id:true})),vm="1-255 chars; Only letters/numbers/dashes. Cannot start/end with '-'. Not '.yaml', 'none', or UUID.",lN={name:z.string().min(1).max(255).describe(vm),description:z.string().optional(),baseUrl:z.url().optional().describe("For LLM: Ask the user for the base URL if they don't provide it."),environment:z.string().optional().describe("For LLM: Do not include the variable unless the user explicitly asks for it and use the environment lookup tool to get the correct one before passing here."),browserType:z.enum(ac).optional().describe("For LLM: Never assign this variable unless the user explicitly asks for it."),viewport:fd.optional().describe("For LLM: Never assign this variable unless the user explicitly asks for it."),pathSegments:z.string().array().optional().describe("For LLM: Only use if explicitly called for by the user. Used to create the test in the correct folder. Paths are relative to the project root.")},qW=z.object(lN);fM.extend(z.object({relativeFilePath:z.string().describe("relative to project root")}).shape);var KW=z.object({name:z.string()});z.object({relativeFilePath:z.string()});var YW=z.object({name:z.string(),sourceModuleContent:dC});z.object({relativeFilePath:z.string()});var JW=z.object({name:z.string(),description:z.string(),enabled:z.boolean(),steps:z.lazy(()=>tn.array()),testFilePath:z.string().describe("relative to the project root"),folderPath:z.string().optional().describe("user selected folder path")}),XW=z.object({name:z.string(),description:z.string(),enabled:z.boolean()}).partial(),QW=z.object({folderPath:z.string()}),ZW=z.object({folderPath:z.string()});z.array(WS);var e1=z.object({defaultEnv:z.string().optional().describe("name of the default env, or undefined to unset")}),t1=z.object({configFilePath:z.string().describe("full path on disk")});z.string().array();z.object({message:z.string(),newRelativeTestPath:z.string().optional()});var cN=z.object({name:z.string(),absolutePath:z.string(),relativePath:z.string(),pathSegments:z.array(z.string()),isDirectory:z.boolean(),size:z.number(),createdAt:z.coerce.date(),modifiedAt:z.coerce.date(),accessedAt:z.coerce.date()}),n1=z.object({pathSegments:z.array(z.string())});z.object({absolutePath:z.string(),pathSegments:z.array(z.string()),contents:z.array(cN)});var o1=z.object({sourceDirectoryPath:z.string().optional(),value:z.string(),allowedExtensions:z.array(z.string()).optional()}),RSe=z.object({name:z.string(),value:z.string(),isDirectory:z.boolean()});z.object({suggestions:z.array(RSe)});var r1=z.object({pathSegments:z.array(z.string())}),i1=z.object({pathSegments:z.array(z.string()),newPathSegments:z.array(z.string())}),s1=z.object({pathSegments:z.array(z.string()),recursive:z.boolean().optional()});z.object({success:z.boolean(),message:z.string(),pathSegments:z.array(z.string()).optional()});z.object({gitBranch:z.string(),fileMtime:z.coerce.date(),gitCommitSha:z.string()});var a1=typeof process<"u"&&true&&true,dv=58889,Gg=24*60*60*1e3;var l1=z.object({id:z.string(),createdAt:z.coerce.date(),createdBy:z.string(),organizationId:z.string(),name:z.string(),description:z.string().nullish(),enabled:z.boolean(),schemaVersion:z.string().describe("Schema version for steps"),parameters:z.string().array().nullish().describe("Parameter list"),parameterEnums:z.record(z.string(),z.string().array()).nullish(),defaultParameters:z.record(z.string(),z.string()).nullish(),defaultCacheKey:z.string().nullish(),defaultCacheTtl:z.number().nullish(),defaultCacheAllInvocations:z.boolean().nullish(),autoAuth:z.boolean().nullish(),defaultRetries:z.int().min(0).nullish(),advanced:FO.nullish()});l1.extend({steps:z.lazy(()=>Lt.array())});var c1=5*60*1e3,Fb=Xn.extend(l1.omit({id:true,createdAt:true,createdBy:true,organizationId:true,enabled:true}).shape);var wSe="org_01HMJTX4GT1KG94KZRCT8MZ6YB",ISe="org_01HMSCJQBCCG51M2ZF65YC5B8W",xSe="org_01JPR6MGFQSHF3W234R3XJDPMB",_Se=[wSe,ISe,xSe];function d1(e){return _Se.includes(e)}var u1=(o=>(o.AZURE="AZURE",o.KERNEL="KERNEL",o.BROWSERBASE="BROWSERBASE",o))(u1||{}),dN=z.enum(u1);z.object({azureRegion:z.string().optional(),azureWorkspaceId:z.string().optional()});z.object({});var PSe=z.enum(["us-west-2","us-east-1","eu-central-1","ap-southeast-1"]);z.object({region:PSe.optional()});var uN=(t=>(t.TEST_REVIEW="TEST_REVIEW",t))(uN||{});var OSe=z.object({type:z.literal("DESCRIPTION_UPDATE"),thoughts:z.string()}),uv=z.discriminatedUnion("type",[OSe]),MSe=z.object({testId:z.string(),name:z.string(),orgId:z.string(),runId:z.string(),steps:tn.array(),purpose:z.enum(uN),details:uv.or(uv.array()).optional()});MSe.pick({name:true,orgId:true});var NSe=z.object({id:z.string(),name:z.string().nullish(),createdAt:z.string().pipe(z.coerce.date()).or(z.date()),organizationId:z.string(),schemaVersion:z.string(),runId:z.string().nullish(),purpose:z.enum(uN),details:uv.or(uv.array()).optional(),applied:z.boolean().nullish(),appliedAt:z.coerce.date().nullish()}),p1=NSe.extend({steps:tn.array()});var m1=z.enum(["v1","v2"]);var kSe=z.enum(["element","content","attribute","tag_name","style"]),pv=z.enum(["exists","visible","enabled","editable","focused","contains","equals","starts_with"]);[...ej,...ZG].forEach(e=>{if(!pv.options.includes(e.toLowerCase()))throw new Error(`V2CheckConditionSchema is missing option: ${e}`)});var pN={element:{aliasPrefix:"",assertionType:"ELEMENT_EXISTENCE",requiresName:false},content:{aliasPrefix:"Content",assertionType:"ELEMENT_CONTENT",requiresName:false},attribute:{aliasPrefix:"Attribute",assertionType:"ELEMENT_ATTRIBUTE",requiresName:true},tag_name:{aliasPrefix:"Name",assertionType:"ELEMENT_NAME",requiresName:false},style:{aliasPrefix:"Style",assertionType:"ELEMENT_STYLE",requiresName:true}},f1={exists:{positiveAliasSuffix:"Exists",negativeAliasSuffix:"DoesNotExist",elementCondition:"EXISTS",contentOperation:"EXISTS"},visible:{positiveAliasSuffix:"Visible",negativeAliasSuffix:"NotVisible",elementCondition:"VISIBLE"},enabled:{positiveAliasSuffix:"Enabled",negativeAliasSuffix:"NotEnabled",elementCondition:"ENABLED"},editable:{positiveAliasSuffix:"Editable",negativeAliasSuffix:"NotEditable",elementCondition:"EDITABLE"},focused:{positiveAliasSuffix:"Focused",negativeAliasSuffix:"NotFocused",elementCondition:"FOCUSED"},contains:{positiveAliasSuffix:"Contains",negativeAliasSuffix:"DoesNotContain",contentOperation:"CONTAINS"},equals:{positiveAliasSuffix:"Equals",negativeAliasSuffix:"DoesNotEqual",contentOperation:"EQUALS"},starts_with:{positiveAliasSuffix:"StartsWith",negativeAliasSuffix:"DoesNotStartWith",contentOperation:"STARTS_WITH"}},y1={ELEMENT_EXISTENCE:"element",ELEMENT_CONTENT:"content",ELEMENT_ATTRIBUTE:"attribute",ELEMENT_NAME:"tag_name",ELEMENT_STYLE:"style"};function h1(e){return {alias:mN(e),subject:e.subject,condition:e.condition,negated:e.negated,assertionType:pN[e.subject].assertionType,requiresName:pN[e.subject].requiresName,requiresValue:e.subject!=="element"&&e.condition!=="exists"}}function mN(e){let t=pN[e.subject],n=f1[e.condition];if(!S1(e.subject,e.condition))throw new Error(`Unsupported element check alias for subject '${e.subject}' and condition '${e.condition}'.`);let o=e.negated?n.negativeAliasSuffix:n.positiveAliasSuffix;return `checkElement${t.aliasPrefix}${o}`}function S1(e,t){let n=f1[t],o=n.elementCondition,r=n.contentOperation;return e==="element"?o!==void 0:r!==void 0}var DSe=kSe.options.flatMap(e=>pv.options.flatMap(t=>S1(e,t)?[h1({subject:e,condition:t,negated:false}),h1({subject:e,condition:t,negated:true})]:[])),b1=new Map(DSe.map(e=>[e.alias,e]));var FSe=z.enum(zl),BSe=z.enum(ws);function Ui(e){return b1.get(e)}function A1(e){let t=y1[e.type],n=e.type==="ELEMENT_EXISTENCE"?e.condition:e.operation;return mN({subject:t,condition:USe(n),negated:e.negated})}function E1(e){return FSe.parse(e.toUpperCase())}function Bb(e){return BSe.parse(e.toUpperCase())}function USe(e){return pv.parse(e.toLowerCase())}var Ze={saveAs:z.string().optional(),retries:z.number().optional(),skipped:z.boolean().optional(),comment:z.string().optional()};z.object(Ze);var Ub=Object.keys(Ze);function qe(e){return z.union([z.strictObject({[e.key]:e.simplified}),z.strictObject({[e.key]:e.detailed})])}function qn(e){return z.strictObject({[e.key]:e.detailed})}var C1='Coordinates must be "x, y" pixel values, e.g. "100, 200"',jg=z.union([jl,z.string().regex(/^\s*-?\d+(?:\.\d+)?\s*,\s*-?\d+(?:\.\d+)?\s*$/,C1)],{error:C1});z.union([z.string(),jl]);var Hs={css:z.string().optional(),coords:jg.optional(),x:z.union([z.number(),z.string()]).optional(),y:z.union([z.number(),z.string()]).optional()},gN={on:z.string().optional(),...Hs},Gs={...Ze,useSelector:z.boolean().optional(),force:z.boolean().optional(),DANGEROUS_FORCE_DYNAMIC:z.boolean().optional(),iframe:z.string().optional()},Hb={...Gs,offset:jg.optional()};function Hi({schema:e,descriptionKey:t,required:n=true}){return e.superRefine((o,r)=>{let s=[t in o?Object.entries(o).find(([a])=>a===t)?.[1]:void 0,"css"in o?o.css:void 0,"coords"in o?o.coords:void 0,"x"in o||"y"in o?true:void 0].filter(a=>a!==void 0).length;n&&s!==1&&r.addIssue({code:"custom",message:`Use exactly one target: ${t}, css, coords, or x/y.`}),!n&&s>1&&r.addIssue({code:"custom",message:`Use at most one target: ${t}, css, coords, or x/y.`}),("x"in o||"y"in o)&&(!("x"in o)||o.x===void 0||!("y"in o)||o.y===void 0)&&r.addIssue({code:"custom",message:"x and y must be provided together."});})}var HSe=Hi({descriptionKey:"on",schema:z.strictObject({...gN,...Hb,times:z.int().min(1).optional(),rightClick:z.boolean().optional(),waitForDownload:z.boolean().optional(),delay:z.number().optional(),downloadTimeout:z.number().optional()})}),GSe=Hi({descriptionKey:"on",schema:z.strictObject({...gN,...Hb,rightClick:z.boolean().optional(),waitForDownload:z.boolean().optional(),delay:z.number().optional(),downloadTimeout:z.number().optional()})}),jSe=Hi({descriptionKey:"on",schema:z.strictObject({...gN,...Hb,times:z.int().min(1).optional(),waitForDownload:z.boolean().optional(),delay:z.number().optional(),downloadTimeout:z.number().optional()})}),v1=qe({key:"click",simplified:z.string(),detailed:HSe}),R1=qe({key:"doubleClick",simplified:z.string(),detailed:GSe}),w1=qe({key:"rightClick",simplified:z.string(),detailed:jSe}),$Se=Hi({descriptionKey:"into",required:false,schema:z.strictObject({text:z.string(),into:z.string().optional(),...Hs,...Hb,pressEnter:z.boolean().optional(),clear:z.union([z.literal("inputs"),z.literal("always"),z.literal("never"),z.boolean()]).optional(),delay:z.number().optional()})}),I1=qe({key:"type",simplified:z.string(),detailed:$Se}),x1=qn({key:"select",detailed:Hi({descriptionKey:"from",schema:z.strictObject({from:z.string().optional(),...Hs,label:z.string().optional(),value:z.string().optional(),index:z.union([z.string(),z.number()]).optional(),...Gs})}).superRefine((e,t)=>{[e.label,e.value,e.index].filter(o=>o!==void 0).length!==1&&t.addIssue({code:"custom",message:"select requires exactly one of label, value, or index"});})}),_1=qe({key:"hover",simplified:z.string(),detailed:Hi({descriptionKey:"on",schema:z.strictObject({on:z.string().optional(),...Hs,...Hb})})}),P1=qn({key:"blur",detailed:Hi({descriptionKey:"on",required:false,schema:z.strictObject({on:z.string().optional(),...Hs,...Gs})})}),O1=qe({key:"focus",simplified:z.string(),detailed:Hi({descriptionKey:"on",schema:z.strictObject({on:z.string().optional(),...Hs,...Gs})})}),M1=qn({key:"dragAndDrop",detailed:z.strictObject({from:z.string().optional(),to:z.string().optional(),fromCss:z.string().optional(),toCss:z.string().optional(),fromCoords:jg.optional(),toCoords:jg.optional(),fromX:z.union([z.number(),z.string()]).optional(),fromY:z.union([z.number(),z.string()]).optional(),toX:z.union([z.number(),z.string()]).optional(),toY:z.union([z.number(),z.string()]).optional(),steps:z.number().optional(),hover:z.number().optional(),...Gs}).superRefine((e,t)=>{let n=[e.from,e.fromCss,e.fromCoords,e.fromX!==void 0||e.fromY!==void 0?true:void 0].filter(r=>r!==void 0).length,o=[e.to,e.toCss,e.toCoords,e.toX!==void 0||e.toY!==void 0?true:void 0].filter(r=>r!==void 0).length;n!==1&&t.addIssue({code:"custom",message:"Use exactly one from target."}),o!==1&&t.addIssue({code:"custom",message:"Use exactly one to target."}),(e.fromX!==void 0||e.fromY!==void 0)&&(e.fromX===void 0||e.fromY===void 0)&&t.addIssue({code:"custom",message:"fromX and fromY must be provided together."}),(e.toX!==void 0||e.toY!==void 0)&&(e.toX===void 0||e.toY===void 0)&&t.addIssue({code:"custom",message:"toX and toY must be provided together."});})}),N1=z.union([z.strictObject({mouseDrag:jg}),z.strictObject({mouseDrag:Hi({descriptionKey:"from",required:false,schema:z.strictObject({from:z.string().optional(),...Hs,delta:jg,steps:z.number().optional(),...Gs})})})]),L1=qe({key:"press",simplified:z.string(),detailed:z.strictObject({key:z.string(),repeat:z.number().optional(),delay:z.number().optional(),convertMeta:z.boolean().optional(),...Ze})}),k1=qe({key:"keyDown",simplified:z.string(),detailed:z.strictObject({key:z.string(),convertMeta:z.boolean().optional(),...Ze})}),D1=qe({key:"keyUp",simplified:z.string(),detailed:z.strictObject({key:z.string(),convertMeta:z.boolean().optional(),...Ze})}),F1=qe({key:"navigate",simplified:z.string(),detailed:z.strictObject({url:z.string(),timeout:z.number().optional(),...Ze})}),B1=qe({key:"newTab",simplified:z.string(),detailed:z.strictObject({url:z.string(),timeout:z.number().optional(),...Ze})}),U1=qe({key:"switchTab",simplified:z.union([z.number(),z.string()]),detailed:z.strictObject({substring:z.string().optional(),regex:z.string().optional(),index:z.union([z.string(),z.number()]).optional(),timeout:z.number().optional(),...Ze}).superRefine((e,t)=>{[e.substring,e.regex,e.index].filter(o=>o!==void 0).length!==1&&t.addIssue({code:"custom",message:"switchTab requires exactly one of substring, regex, or index"});})}),H1=qn({key:"closeTab",detailed:z.strictObject({substring:z.string().optional(),regex:z.string().optional(),index:z.union([z.string(),z.number()]).optional(),timeout:z.number().optional(),...Ze}).superRefine((e,t)=>{[e.substring,e.regex,e.index].filter(o=>o!==void 0).length<=1||t.addIssue({code:"custom",message:"closeTab accepts at most one of substring, regex, or index"});})}),G1=qn({key:"goBack",detailed:z.strictObject(Ze)}),j1=qn({key:"goForward",detailed:z.strictObject(Ze)}),$1=qn({key:"refresh",detailed:z.strictObject({timeout:z.number().optional(),...Ze})}),mv=z.enum(["goBack","goForward","refresh","paste","authSave","offline","online","blur","visualDiff","captcha","closeTab"]),V1=qe({key:"scrollUp",simplified:z.number().nonnegative(),detailed:Hi({descriptionKey:"in",required:false,schema:z.strictObject({pixels:z.number().nonnegative().optional(),in:z.string().optional(),...Hs,...Gs})})}),z1=qe({key:"scrollDown",simplified:z.number().nonnegative(),detailed:Hi({descriptionKey:"in",required:false,schema:z.strictObject({pixels:z.number().nonnegative().optional(),in:z.string().optional(),...Hs,...Gs})})}),W1=qe({key:"scrollLeft",simplified:z.number().nonnegative(),detailed:Hi({descriptionKey:"in",required:false,schema:z.strictObject({pixels:z.number().nonnegative().optional(),in:z.string().optional(),...Hs,...Gs})})}),q1=qe({key:"scrollRight",simplified:z.number().nonnegative(),detailed:Hi({descriptionKey:"in",required:false,schema:z.strictObject({pixels:z.number().nonnegative().optional(),in:z.string().optional(),...Hs,...Gs})})}),K1=qe({key:"wait",simplified:z.number(),detailed:z.strictObject({ms:z.number(),...Ze})}),VSe=qe({key:"assert",simplified:z.string(),detailed:z.strictObject({that:z.string(),timeout:z.number().optional(),DANGEROUS_FORCE_DYNAMIC:z.boolean().optional(),iframe:z.string().optional(),source:z.string().optional(),...Ze})}),zSe=qe({key:"assertVisually",simplified:z.string(),detailed:z.strictObject({that:z.string(),timeout:z.number().optional(),DANGEROUS_FORCE_DYNAMIC:z.boolean().optional(),iframe:z.string().optional(),source:z.string().optional(),...Ze})}),hv=VSe,gv=zSe,Y1=qe({key:"checkPageContains",simplified:z.string(),detailed:z.strictObject({text:z.string(),timeout:z.number().optional(),iframe:z.string().optional(),...Ze})}),J1=qe({key:"checkPageDoesNotContain",simplified:z.string(),detailed:z.strictObject({text:z.string(),timeout:z.number().optional(),iframe:z.string().optional(),...Ze})}),fN=z.union([Y1,J1]),WSe=z.record(z.string(),z.unknown().optional()),fv=WSe.superRefine((e,t)=>{let n=Object.keys(e),o=n[0];if(n.length!==1||o===void 0){t.addIssue({code:"custom",message:"element checks require exactly one checkElement... key"});return}let r=Ui(o);if(r===void 0){t.addIssue({code:"custom",message:"element checks require exactly one checkElement... key"});return}if(typeof e[r.alias]=="string")return;let i=Hi({descriptionKey:"element",schema:z.looseObject({element:z.string().optional(),...Hs,...Gs,timeout:z.number().optional(),name:z.string().optional(),value:z.string().optional()})}).safeParse(e[r.alias]);if(!i.success){t.addIssue({code:"custom",message:`element check alias '${r.alias}' must be a string target or detailed object`,path:[r.alias]});return}r.requiresName&&i.data.name===void 0&&t.addIssue({code:"custom",message:`element check alias '${r.alias}' requires a name`,path:[r.alias,"name"]}),r.requiresValue&&i.data.value===void 0&&t.addIssue({code:"custom",message:`element check alias '${r.alias}' requires a value`,path:[r.alias,"value"]});}),X1=qe({key:"extract",simplified:z.string(),detailed:z.strictObject({goal:z.string(),schema:Hu.optional(),DANGEROUS_FORCE_DYNAMIC:z.boolean().optional(),iframe:z.string().optional(),...Ze})}),Q1=qe({key:"cookie",simplified:z.string(),detailed:z.strictObject({value:z.string(),...Ze})}),Z1=qn({key:"localStorage",detailed:z.strictObject({key:z.string(),value:z.string(),...Ze})}),eq=qe({key:"request",simplified:z.string(),detailed:z.strictObject({url:z.string(),method:ad.optional(),headers:z.record(z.string(),z.string()).optional(),params:z.record(z.string(),z.string()).optional(),body:Hu.optional(),contentType:z.enum(Wl).optional(),timeout:z.number().optional(),...Ze})}),tq=qn({key:"graphqlRequest",detailed:z.strictObject({url:z.string(),query:z.string(),variables:Hu.optional(),headers:z.record(z.string(),z.string()).optional(),timeout:z.number().optional(),...Ze})}),yv=qe({key:"javascript",simplified:z.string(),detailed:z.strictObject({code:z.string(),environment:z.enum(["node","browser","NODE","BROWSER"]).optional(),fragment:z.boolean().optional(),timeout:z.number().optional(),...Ze})}),$g={substring:z.string().optional(),glob:z.string().optional(),regex:z.string().optional(),domain:z.string().optional()};function qSe(e){return [e.substring,e.glob,e.regex,e.domain].filter(t=>t!==void 0).length}function Vg(e){let t=qSe(e.payload);if(e.required&&t!==1||!e.required&&t>1){e.ctx.addIssue({code:"custom",message:e.required?"requires exactly one of substring, glob, regex, or domain":"requires at most one of substring, glob, regex, or domain"});return}!e.required&&t===0&&e.payload.method&&e.ctx.addIssue({code:"custom",message:"method requires a URL matcher"});}var nq=qn({key:"header",detailed:z.strictObject({name:z.string(),value:z.string(),...$g,method:z.string().optional(),...Ze}).superRefine((e,t)=>{Vg({payload:e,ctx:t,required:false});})}),oq=qn({key:"mock",detailed:z.strictObject({...$g,method:z.string().optional(),responseGenerator:z.string(),fetchOriginalResponse:z.boolean().optional(),key:z.string().optional(),...Ze}).superRefine((e,t)=>{Vg({payload:e,ctx:t,required:true});})}),rq=qe({key:"removeRouteMock",simplified:z.string(),detailed:z.strictObject({key:z.string().optional(),...Ze})}),iq=qe({key:"waitForUrl",simplified:z.string(),detailed:z.strictObject({...$g,caseInsensitive:z.boolean().optional(),timeout:z.number().optional(),...Ze}).superRefine((e,t)=>{Vg({payload:e,ctx:t,required:true});})}),sq=qe({key:"waitForUrlNotToMatch",simplified:z.string(),detailed:z.strictObject({...$g,caseInsensitive:z.boolean().optional(),timeout:z.number().optional(),...Ze}).superRefine((e,t)=>{Vg({payload:e,ctx:t,required:true});})}),KSe=z.union([iq,sq]),aq=qe({key:"dialog",simplified:z.enum(["ACCEPT","DISMISS"]),detailed:z.strictObject({action:z.enum(["ACCEPT","DISMISS"]),...Ze})}),lq=qe({key:"fileUpload",simplified:z.string(),detailed:z.strictObject({path:z.string(),name:z.string().optional(),...Ze})}),cq=qe({key:"copy",simplified:z.union([z.string(),z.boolean(),z.null()]),detailed:z.strictObject({value:z.union([z.string(),z.boolean(),z.null()]),...Ze})}),dq=qn({key:"paste",detailed:z.strictObject(Ze)}),uq=qn({key:"captcha",detailed:z.strictObject({...Gs})}),YSe=z.strictObject({data:z.union([z.string(),el]),width:z.number(),height:z.number()}),pq=qe({key:"visualDiff",simplified:z.string(),detailed:Hi({descriptionKey:"on",required:false,schema:z.strictObject({on:z.string().optional(),...Hs,threshold:z.number().optional(),screenshot:YSe.optional(),...Gs})})}),mq=qn({key:"offline",detailed:z.strictObject(Ze)}),hq=qn({key:"online",detailed:z.strictObject(Ze)}),gq=qn({key:"registerRequestListener",detailed:z.strictObject({...$g,key:z.string(),method:z.string().optional(),...Ze}).superRefine((e,t)=>{Vg({payload:e,ctx:t,required:true});})}),fq=qe({key:"awaitListener",simplified:z.string(),detailed:z.strictObject({key:z.string(),timeout:z.number().optional(),...Ze})}),yq=qn({key:"recordRequests",detailed:z.strictObject({...$g,key:z.string(),method:z.string().optional(),...Ze}).superRefine((e,t)=>{Vg({payload:e,ctx:t,required:true});})}),Sq=qe({key:"getRecordedRequests",simplified:z.string(),detailed:z.strictObject({key:z.string(),...Ze})}),bq=qe({key:"authLoad",simplified:z.string(),detailed:z.strictObject({path:z.string(),...Ze})}),Tq=qe({key:"authSave",simplified:z.string(),detailed:z.strictObject({path:z.string().optional(),...Ze})});z.union([v1,R1,w1,U1,H1,I1,x1,_1,P1,O1,M1,N1,L1,k1,D1,F1,B1,G1,j1,$1,V1,z1,W1,q1,K1,hv,gv,fN,X1,Q1,Z1,eq,tq,yv,nq,oq,rq,KSe,aq,lq,cq,dq,uq,pq,mq,hq,gq,fq,yq,Sq,bq,Tq,fv]);var Aq=new Map([["click",v1],["doubleClick",R1],["rightClick",w1],["switchTab",U1],["closeTab",H1],["type",I1],["select",x1],["hover",_1],["blur",P1],["focus",O1],["dragAndDrop",M1],["mouseDrag",N1],["press",L1],["keyDown",k1],["keyUp",D1],["navigate",F1],["newTab",B1],["goBack",G1],["goForward",j1],["refresh",$1],["scrollUp",V1],["scrollDown",z1],["scrollLeft",W1],["scrollRight",q1],["wait",K1],["assert",hv],["assertVisually",gv],["checkPageContains",Y1],["checkPageDoesNotContain",J1],["extract",X1],["cookie",Q1],["localStorage",Z1],["request",eq],["graphqlRequest",tq],["javascript",yv],["header",nq],["mock",oq],["removeRouteMock",rq],["waitForUrl",iq],["waitForUrlNotToMatch",sq],["dialog",aq],["fileUpload",lq],["copy",cq],["paste",dq],["captcha",uq],["visualDiff",pq],["offline",mq],["online",hq],["registerRequestListener",gq],["awaitListener",fq],["recordRequests",yq],["getRecordedRequests",Sq],["authLoad",bq],["authSave",Tq]]),Eq=Object.freeze([...Aq.keys()]),fc=z.custom().superRefine((e,t)=>{if(typeof e!="object"||e===null){t.addIssue({code:"custom",message:"Steps must be objects with exactly one action key."});return}let n=Object.keys(e),o=n[0];if(n.length!==1||o===void 0){t.addIssue({code:"custom",message:"Steps must have exactly one action key."});return}let r=Aq.get(o)??(Ui(o)?fv:void 0);if(!r){t.addIssue({code:"custom",message:`Unsupported step type '${o}'.`});return}let i=r.safeParse(e);if(!i.success){let s=JSe(i.error.issues,o);s.length>0&&Cq(t,s);}});function JSe(e,t){return XSe(e).filter(n=>!QSe(n,t))}function Cq(e,t){for(let n of t){if(n.code==="invalid_union"){Cq(e,yN(n));continue}e.addIssue({...n});}}function XSe(e){let t=[];for(let n of e){if(n.code==="invalid_union"){t.push(...yN(n));continue}t.push(n);}return t}function QSe(e,t){return e.code!=="unrecognized_keys"?false:t===void 0?e.path.length===0:e.path.length===1&&e.path[0]===t}function yN(e){let t=e.errors[0]??[],n=hN(t);for(let o of e.errors.slice(1)){let r=hN(o);r>n&&(t=o,n=r);}return t}function hN(e){return e.reduce((t,n)=>{let o=n.code==="invalid_union"?hN(yN(n)):0;return t+n.path.length+o},0)}var vq=z.strictObject({string:z.string()}),ZSe=z.strictObject({javascript:z.string()}),Rq=z.union([vq,ZSe]),ebe=z.union([z.strictObject({name:z.string(),required:z.boolean().optional(),default:vq.optional()}),z.strictObject({name:z.string(),required:z.boolean().optional(),defaultValue:z.string()})]),wq=ebe.array(),tbe=z.strictObject({name:z.string(),default:Rq.optional(),enum:z.array(z.string()).optional()}),Iq=tbe.array(),Gb=z.union([Rq,z.string()]),xq=z.record(z.string(),Gb);var nbe=z.preprocess(e=>typeof e=="number"?String(e):e,RO),Sv=z.looseObject({goal:z.string(),version:nbe.optional(),...Ze}),obe=z.union([z.strictObject({act:z.string()}),z.strictObject({act:Sv})]),SN=z.looseObject({path:z.string(),inputs:z.record(z.string(),Gb).optional(),...Ze}),rbe=z.union([z.strictObject({module:z.string()}),z.strictObject({module:SN})]),Rd=z.union([hv,gv,fN,yv,fv]),ibe=new Set(["then",...Ub]),sbe=z.looseObject({then:z.lazy(()=>pl.array()),...Ze}).superRefine((e,t)=>{Object.entries(e).filter(([o,r])=>!ibe.has(o)&&Rd.safeParse({[o]:r}).success).length!==1&&t.addIssue({code:"custom",message:"Conditional steps require exactly one assertion condition at the top level."});}),abe=z.strictObject({if:sbe}),lbe=new Set(["do","maxIterations",...Ub]),cbe=z.looseObject({do:z.lazy(()=>pl.array()),maxIterations:z.number().int().positive().optional(),...Ze}).superRefine((e,t)=>{let n=Object.entries(e).filter(([o,r])=>!lbe.has(o)&&Rd.safeParse({[o]:r}).success).length;if(n>1){t.addIssue({code:"custom",message:"While loops accept at most one condition at the top level."});return}n===0&&e.maxIterations===void 0&&t.addIssue({code:"custom",message:"While loops require a condition or a maximum number of iterations."});}),dbe=z.strictObject({while:cbe}),pl=z.lazy(()=>z.union([mv,obe,rbe,abe,dbe,fc]));z.object({before:pl.array().optional(),steps:pl.array(),after:pl.array().optional()});var ube=z.union([fd,z.string().refine(e=>{let t=e.match(/^\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\s*$/);if(!t)return false;let[,n,o]=t;return fd.safeParse({width:Number(n),height:Number(o)}).success},"Viewport must be two numeric values, e.g. 1920, 1080")]),pbe=Ns.omit({viewport:true}).extend({viewport:ube.optional()}),bN=z.object({id:vo,version:z.string().optional(),url:pC.optional(),description:z.string().optional(),retries:z.number().optional(),defaultEnv:z.string().optional(),parameters:wq.optional(),outputs:DC.optional(),disabled:z.boolean().optional(),labels:z.array(z.string()).optional()}).extend(pbe.shape),ju=z.looseObject({fileType:z.literal(ke.TEST_V2)}).extend(bN.shape).extend({before:pl.array().optional(),steps:pl.array(),after:pl.array().optional()});var mbe=z.array(z.string()),hbe=z.union([z.string(),z.record(z.string(),z.unknown().optional())]),bv=Xn.omit({moduleId:true,name:true,parameters:true,defaultParameters:true,parameterEnums:true}).extend({id:vo,version:z.string().optional(),name:z.string().optional(),parameters:z.union([Iq,mbe]).optional(),defaultParameters:z.record(z.string(),z.string()).optional(),parameterEnums:z.record(z.string(),z.array(z.string())).optional()}),Tv=z.looseObject(bv.extend({fileType:z.literal(ke.MODULE_V2),steps:hbe.array().optional()}).shape).superRefine(Pq),Av=z.looseObject(bv.extend({fileType:z.literal(ke.MODULE_V2),steps:pl.array().optional()}).shape).superRefine(Pq);function _q(e){return e.steps??[]}function Pq(e,t){"main"in e&&t.addIssue({code:"custom",message:"v2 modules must use steps, not main",path:["main"]});}var TN=(n=>(n.TEST="TEST",n.MODULE="MODULE",n))(TN||{}),gbe=z.enum(TN),Oq=z.object({orgId:z.string(),entityType:gbe,entityId:z.string()}),AN=Oq.extend({entityType:z.literal("TEST"),stepLists:nl}),EN=Oq.extend({entityType:z.literal("MODULE"),steps:Lt.array()});z.discriminatedUnion("entityType",[AN,EN]);var Mq=(o=>(o.WEB="web",o.ANDROID="android",o.IOS="ios",o))(Mq||{}),CN=z.nativeEnum(Mq);var Nq=z.object({entity_type:z.string(),value:z.string(),schema_version:z.string().optional()}),Lq=RS(Nq),kq=Nq.extend({cache_key:z.string()});function jb({entityType:e,entityId:t}){return `${e}:${t}`}var Im=z.string();var Dq='Coordinates must be "x, y" pixel values, e.g. "100, 200"',Hq=z.union([jl,z.string().regex(/^\s*-?\d+(?:\.\d+)?\s*,\s*-?\d+(?:\.\d+)?\s*$/,Dq)],{error:Dq}),Fq='Percent must be a number or a percent string, e.g. 90 or "90%"',Gq=z.union([z.number(),z.string().regex(/^-?\d+(?:\.\d+)?%$/,Fq)],{error:Fq}).transform(e=>typeof e=="number"?e:Number(e.slice(0,-1))).pipe(z.number().min(0,{message:"Percent must be >= 0"}).max(100,{message:"Percent must be <= 100"})),fbe=z.strictObject({x:z.number(),y:z.number(),delta:z.number()}),jq=z.union([z.string(),fbe]),Pn={...Ze,DANGEROUS_FORCE_DYNAMIC:z.boolean().optional()},ybe=["home","power","back","app_switcher","search","volume_up","volume_down","volume_mute"],Sbe=["enter","backspace","close_keyboard"],Bq=["airplane_mode","data","wifi","location"],Uq=["portrait","landscape"],bbe=z.strictObject({on:Im.optional(),longPress:z.boolean().optional(),longPressDuration:z.number().optional(),iterations:z.number().optional(),tapDelay:z.number().optional(),offset:Hq.optional(),...Pn}),$q=qe({key:"tap",simplified:Im,detailed:bbe}),Tbe=z.strictObject({text:z.string(),into:Im.optional(),clearContent:z.boolean().optional(),forceClearContent:z.boolean().optional(),delay:z.number().optional(),replaceStrategy:z.nativeEnum(bb).optional(),keyPressDelay:z.number().optional(),...Pn}),Vq=qe({key:"type",simplified:z.string(),detailed:Tbe}),zq=z.enum(ybe),Abe=z.strictObject({key:zq,longPress:z.boolean().optional(),...Pn}),Wq=qe({key:"press",simplified:zq,detailed:Abe}),qq=z.enum(Sbe),Ebe=z.strictObject({key:qq,repeat:z.number().optional(),delay:z.number().optional(),keyPressDelay:z.number().optional(),...Pn}),Kq=qe({key:"pressKey",simplified:qq,detailed:Ebe}),Cbe=z.strictObject({package:z.string(),activity:z.string().optional(),intentExtras:z.string().optional(),...Pn}),Yq=qe({key:"openApp",simplified:z.string(),detailed:Cbe}),Jq=qn({key:"killApp",detailed:z.strictObject(Pn)}),Xq=qn({key:"openNotifications",detailed:z.strictObject(Pn)}),Qq=z.enum(["up","down","left","right"]),vbe=z.strictObject({direction:Qq,in:jq.optional(),viewportPercent:Gq.optional(),duration:z.number().optional(),offset:Hq.optional(),...Pn}),Zq=qe({key:"swipe",simplified:Qq,detailed:vbe}),Rbe=z.enum(["up","down"]),wbe=z.strictObject({on:Im,direction:Rbe.optional(),in:jq.optional(),scrollStepPercent:Gq.optional(),maxScrollAttempts:z.number().optional(),...Pn}),e2=qe({key:"scrollTo",simplified:z.string(),detailed:wbe}),vN=qe({key:"assert",simplified:z.string(),detailed:z.strictObject({that:z.string(),timeout:z.number().optional(),...Pn})}),RN=qe({key:"assertVisually",simplified:z.string(),detailed:z.strictObject({that:z.string(),timeout:z.number().optional(),...Pn})}),t2=qe({key:"extract",simplified:z.string(),detailed:z.strictObject({goal:z.string(),schema:Hu.optional(),...Pn})}),n2=qe({key:"checkScreenContains",simplified:z.string(),detailed:z.strictObject({text:z.string(),timeout:z.number().optional(),...Pn})}),o2=qe({key:"checkScreenDoesNotContain",simplified:z.string(),detailed:z.strictObject({text:z.string(),timeout:z.number().optional(),...Pn})}),r2=z.union([n2,o2]),Ibe=z.record(z.string(),z.unknown().optional()),wN=Ibe.superRefine((e,t)=>{let n=Object.keys(e),o=n[0];if(n.length!==1||o===void 0){t.addIssue({code:"custom",message:"element checks require exactly one checkElement... key"});return}let r=Ui(o);if(r===void 0){t.addIssue({code:"custom",message:"element checks require exactly one checkElement... key"});return}if(typeof e[r.alias]=="string")return;let i=z.looseObject({on:Im.optional(),timeout:z.number().optional(),name:z.string().optional(),value:z.string().optional(),...Pn}).safeParse(e[r.alias]);if(!i.success){t.addIssue({code:"custom",message:`element check alias '${r.alias}' must be a string target or detailed object`,path:[r.alias]});return}i.data.on===void 0&&t.addIssue({code:"custom",message:`element check alias '${r.alias}' requires a target via 'on'`,path:[r.alias,"on"]}),r.requiresName&&i.data.name===void 0&&t.addIssue({code:"custom",message:`element check alias '${r.alias}' requires a name`,path:[r.alias,"name"]}),r.requiresValue&&i.data.value===void 0&&t.addIssue({code:"custom",message:`element check alias '${r.alias}' requires a value`,path:[r.alias,"value"]});}),xbe=z.strictObject({from:Im,to:Im,hoverDuration:z.number().optional(),dragDuration:z.number().optional(),...Pn}),i2=qn({key:"dragAndDrop",detailed:xbe}),IN=qe({key:"javascript",simplified:z.string(),detailed:z.strictObject({code:z.string(),timeout:z.number().optional(),...Pn})}),s2=qe({key:"request",simplified:z.string(),detailed:z.strictObject({url:z.string(),method:ad.optional(),headers:z.record(z.string(),z.string()).optional(),params:z.record(z.string(),z.string()).optional(),body:z.string().optional(),bodyType:z.nativeEnum(Wl).optional(),timeout:z.number().optional(),...Pn})}),a2=qe({key:"wait",simplified:z.number(),detailed:z.strictObject({ms:z.number(),...Pn})}),l2=qe({key:"visualDiff",simplified:z.string(),detailed:z.strictObject({path:z.string(),threshold:z.number().min(0).max(1).optional(),...Pn})}),c2=qn({key:"addFile",detailed:z.strictObject({path:z.string(),location:z.string(),...Pn})}),d2=qe({key:"installApp",simplified:z.string(),detailed:z.strictObject({path:z.string(),...Pn})}),u2=qe({key:"uninstallApp",simplified:z.string(),detailed:z.strictObject({package:z.string(),...Pn})}),p2=qe({key:"toggleSettings",simplified:z.enum(Bq),detailed:z.strictObject({setting:z.enum(Bq),...Pn})}),m2=qe({key:"rotate",simplified:z.enum(Uq),detailed:z.strictObject({orientation:z.enum(Uq),...Pn})}),h2=qe({key:"adb",simplified:z.string(),detailed:z.strictObject({command:z.string(),args:z.string().optional(),...Pn})}),g2=qn({key:"appium",detailed:z.strictObject({script:z.string(),args:z.string().optional(),...Pn})}),f2=qn({key:"debugState",detailed:z.strictObject(Pn)}),y2=z.enum(["killApp","openNotifications","debugState"]);z.union([$q,Vq,Wq,Kq,Yq,Jq,Xq,Zq,e2,vN,RN,t2,r2,i2,IN,s2,a2,l2,c2,d2,u2,p2,m2,h2,g2,f2,wN]);var S2=new Map([["tap",$q],["type",Vq],["press",Wq],["pressKey",Kq],["openApp",Yq],["killApp",Jq],["openNotifications",Xq],["swipe",Zq],["scrollTo",e2],["assert",vN],["assertVisually",RN],["extract",t2],["checkScreenContains",n2],["checkScreenDoesNotContain",o2],["dragAndDrop",i2],["javascript",IN],["request",s2],["wait",a2],["visualDiff",l2],["addFile",c2],["installApp",d2],["uninstallApp",u2],["toggleSettings",p2],["rotate",m2],["adb",h2],["appium",g2],["debugState",f2]]);Object.freeze([...S2.keys()]);var b2=z.custom().superRefine((e,t)=>{if(typeof e!="object"||e===null){t.addIssue({code:"custom",message:"v2 mobile commands must be objects with exactly one action key."});return}let n=Object.keys(e),o=n[0];if(n.length!==1||o===void 0){t.addIssue({code:"custom",message:"v2 mobile commands must have exactly one action key."});return}let r=S2.get(o)??(Ui(o)?wN:void 0);if(!r){t.addIssue({code:"custom",message:`Unsupported v2 mobile command '${o}'.`});return}let i=r.safeParse(e);if(!i.success)for(let s of i.error.issues)t.addIssue({...s});}),T2=z.union([vN,RN,r2,IN,wN]);var _be=z.preprocess(e=>typeof e=="number"?String(e):e,FM),Pbe=z.looseObject({goal:z.string(),version:_be.optional(),precondition:z.string().optional(),postcondition:z.string().optional(),...Ze}),Obe=z.union([z.strictObject({act:z.string()}),z.strictObject({act:Pbe})]),Mbe=z.looseObject({path:z.string(),inputs:z.record(z.string(),Gb).optional(),...Ze}),Nbe=z.union([z.strictObject({module:z.string()}),z.strictObject({module:Mbe})]),Lbe=new Set(["then",...Ub]),kbe=z.looseObject({then:z.lazy(()=>yc.array()),...Ze}).superRefine((e,t)=>{if("else"in e){t.addIssue({code:"custom",message:"v2 mobile conditionals do not support 'else'. Use a separate step instead.",path:["else"]});return}Object.entries(e).filter(([o,r])=>!Lbe.has(o)&&T2.safeParse({[o]:r}).success).length!==1&&t.addIssue({code:"custom",message:"v2 mobile conditional steps require exactly one assertion condition at the top level."});}),Dbe=z.strictObject({if:kbe}),yc=z.lazy(()=>z.union([y2,Obe,Nbe,Dbe,b2]));z.object({before:yc.array().optional(),steps:yc.array(),after:yc.array().optional()});var xN=["android","ios"],Fbe=z.literal("android"),Bbe=z.literal("ios");z.enum(xN);function Ev(e){if(typeof e!="object"||e===null)return e;let t=e;if(typeof t.platform!="string")return e;let n=t.platform.toLowerCase();return n===t.platform?e:{...t,platform:n}}var A2=Bg.omit({schemaVersion:true,settings:true,platform:true}).extend({version:z.string().optional(),platform:Fbe,...wb.shape}),E2=Ug.omit({schemaVersion:true,settings:true,platform:true}).extend({version:z.string().optional(),platform:Bbe,...wb.shape}),Ube=z.discriminatedUnion("platform",[A2,E2]),C2=z.preprocess(Ev,Ube),v2={before:yc.array().optional(),steps:yc.array(),after:yc.array().optional()},R2=z.looseObject({fileType:z.literal(ke.MOBILE_TEST_V2)}).extend(A2.shape).extend(v2);z.preprocess(Ev,R2);var w2=z.looseObject({fileType:z.literal(ke.MOBILE_TEST_V2)}).extend(E2.shape).extend(v2);z.preprocess(Ev,w2);var Hbe=z.discriminatedUnion("platform",[R2,w2]);z.preprocess(Ev,Hbe);var Gbe=z.preprocess(e=>typeof e=="string"?e.toLowerCase():e,z.enum(xN).optional().default("android")),Cv=tv.omit({moduleId:true,name:true,schemaVersion:true,platform:true}).extend({id:vo,name:z.string().optional(),version:z.string().optional(),platform:Gbe});z.looseObject(Cv.extend({fileType:z.literal(ke.MOBILE_MODULE_V2),steps:z.array(z.record(z.string(),z.unknown().optional())).optional()}).shape);z.looseObject(Cv.extend({fileType:z.literal(ke.MOBILE_MODULE_V2),steps:yc.array().optional()}).shape);var vv="x-momentic-cli-version",x2="x-momentic-client-mode",Rv="x-momentic-runner",_2="x-momentic-cli-type",P2="x-momentic-logger-tags",jbe="x-momentic-main-branch-name",$be="x-momentic-branch-name",Vbe="x-momentic-commit-timestamp",zbe="x-momentic-last-commit-on-main",Wbe="x-momentic-last-commit-on-main-timestamp",qbe="x-momentic-merged-branch-name",O2="x-momentic-session-id",M2="x-momentic-parent-trace-id";O.object({error:O.boolean(),reason:O.string(),message:O.string()});hr.merge(gM);var N2=YE;hr.merge(gM);hr.merge(MV).extend({useConsensus:O.boolean().optional(),attemptNumber:O.number().optional()});var _N=QG;hr.merge(NV);var L2=T$;hr.merge(xV);var k2=yC;hr.merge(WG);hr.merge(_V);var D2=y$;hr.merge(PV);hr.merge(OV);hr.merge(FV);hr.merge(BV);O.object({testPaths:O.string().array().describe("can be either hyphenated, lowercase test names or UUIDs"),env:O.string().optional(),all:O.boolean().optional(),urlOverride:O.string().optional(),customHeaders:O.record(O.string(),O.string()).optional(),testInputMatrix:O.record(O.string(),O.string()).array().optional()});var F2=O.object({queuedTests:O.unknown().optional().array(),runIds:O.guid().array(),runGroupId:O.string().optional()});O.string().array();O.union([O.object({paths:O.string().array().describe("Export specific test paths or folder paths (e.g. todo-test, auth/onboarding)"),all:O.boolean().describe("run all tests").optional()}),O.object({path:O.string().describe("deprecated; present for backcompat")})]);var Kbe=O.object({tests:O.record(O.string().describe("Test name (keys correspond to entries in `tests`)"),O.string().describe("Slash-separated folder name path that the test lives in (e.g. 'Auth/Login'). Top-level entities are omitted.")),modules:O.record(O.string().describe("Module name (keys correspond to entries in `modules`)"),O.string().describe("Slash-separated folder name path that the module lives in."))}),B2=O.object({tests:O.record(O.string().describe("Test name"),O.string().describe("Test YAML")),modules:O.record(O.string().describe("Module name"),O.string().describe("Module YAML")),folderPaths:Kbe.optional().describe("Optional map from exported entity name to its slash-separated cloud folder path. Used by the CLI to recreate folder structure on disk.")}),Ybe=O.object({test:O.string().describe("test YAML"),modules:O.record(O.string().describe("moduleId"),O.string().describe("module YAML"))});Ybe.array();O.object({testId:O.string(),schemaVersion:O.string()}).merge(dd);function wv(e){let{gitMainBranch:t,gitBranchName:n,gitCommitTimestamp:o,lastCommitOnMainSha:r,lastCommitOnMainTimestamp:i}=e,s={};return t&&(s[jbe]=encodeURIComponent(t)),n&&(s[$be]=encodeURIComponent(n)),o&&(s[Vbe]=o.toISOString()),r&&(s[zbe]=encodeURIComponent(r)),i&&(s[Wbe]=i.toISOString()),e.mergedGitBranchName&&(s[qbe]=encodeURIComponent(e.mergedGitBranchName)),s}O.object({entries:O.array(Hj)});O.object({platform:CN.optional(),entries:O.array(Lq)});O.object({testId:O.string(),environment:O.string().optional(),platform:CN.optional()});O.object({testId:O.string(),key:O.string(),environment:O.string().optional()});function U2(e){return O.record(O.string(),O.unknown().optional()).transform(t=>{let n={};for(let[o,r]of Object.entries(t)){let i=e.safeParse(r);i.success&&(n[o]=i.data);}return n})}var H2=U2(Gj),G2=kq.array();function I2(e){return U2(wS(e))}var j2={ANDROID:e=>I2(rv).parse(e),IOS:e=>I2(iv).parse(e)},Jbe=O.object({id:O.string(),completionType:O.string(),description:O.string().optional(),thoughts:O.string(),result:O.string(),sessionType:O.string(),timeCreated:O.string().optional(),citations:O.array($o).optional()}),Xbe=O.object({id:O.string(),assertion:O.string().optional(),result:O.string(),thoughts:O.string(),sessionType:O.string(),timeCreated:O.string().optional(),citations:O.array($o).optional()});O.object({completionType:O.string(),traceIds:O.string().array()});var PN=O.union([Jbe,Xbe]).array(),$2=O.object({trigger:O.nativeEnum(Ls),status:O.nativeEnum(ht),startedAt:O.coerce.date().optional(),gitCommitSha:O.string().optional(),gitCommitShaShort:O.string().optional(),gitCommitTimestamp:O.coerce.date().optional(),gitBranchName:O.string().optional(),gitOriginUrl:O.string().optional(),gitCommitMessage:O.string().optional(),gitCommitAuthorName:O.string().optional(),githubRepository:O.string().optional(),gitlabProjectPath:O.string().optional(),pipelineId:O.string().optional(),cliVersion:O.string().optional()});O.object({id:O.string()});var V2=O.object({status:O.nativeEnum(ht),updatedAt:O.coerce.date().optional(),finishedAt:O.coerce.date().optional()});O.object({summary:Sm,githubRepository:O.string().optional(),gitBranchName:O.string().optional()});O.object({updates:O.object({runId:O.string(),healStatus:nb,healDetails:eb.optional()}).array()});var z2=O.object({stepsSnapshot:O.array(O.record(O.string(),O.unknown().optional())).optional(),beforeStepsSnapshot:O.array(O.record(O.string(),O.unknown().optional())).optional(),afterStepsSnapshot:O.array(O.record(O.string(),O.unknown().optional())).optional(),runGroupId:O.string().optional(),testId:O.string(),testName:O.string(),resolvedBaseUrl:O.string().optional(),environmentName:O.string().optional(),labels:O.array(O.string()).optional(),cliVersion:O.string().optional(),trigger:O.nativeEnum(Ls),schemaVersion:O.string().optional(),section:O.nativeEnum(FC).optional(),resolvedInputs:O.record(O.string(),O.string()).optional(),quarantined:O.boolean().optional().default(false),quarantinedReason:O.string().optional(),aiSettings:ga.optional()});O.object({id:O.string()});var Qbe=pM.pick({id:true,status:true,healStatus:true,healDetails:true,testName:true,testId:true,test:true,failureReason:true,failureDetails:true}),W2=Qbe.array(),q2=pM.pick({startedAt:true,finishedAt:true,updatedAt:true,results:true,beforeResults:true,afterResults:true,status:true,healStatus:true,healDetails:true,failureDetails:true,failureReason:true,failureRecoveryDetails:true,resolvedBaseUrl:true,environmentName:true,labels:true,cliVersion:true,resolvedInputs:true,attempts:true,flake:true,aiSettings:true}).partial();O.object({id:O.string()});var K2=O.object({run:ss.omit({runAttempts:true}),attemptZipUrls:O.array(O.string().url().nullish())}),Y2=O.object({status:O.nativeEnum(ht),finishedAt:O.coerce.date().optional(),schemaVersion:O.string().optional().default("1.0.19"),results:O.record(O.string(),O.unknown().optional()).array().optional(),beforeResults:O.record(O.string(),O.unknown().optional()).array().optional(),afterResults:O.record(O.string(),O.unknown().optional()).array().optional()});O.object({screenshot:O.string(),contentType:O.enum(["image/jpeg","image/png"]).optional()});O.object({id:O.string(),screenshot:O.string(),contentType:O.enum(["image/jpeg","image/png"])});var J2=O.object({key:O.string()}),X2=O.object({orgId:O.string(),userId:O.string(),email:O.string().optional(),name:O.string().optional(),pylonEmailHash:O.string().optional(),selfServe:O.boolean().optional()}),Q2=O.object({blocked:O.boolean()}),Z2=O.array(k$);O.record(O.string(),O.union([O.string(),O.boolean()]));O.object({workosAccessToken:O.string().min(1),organizationId:O.string().optional(),clientName:O.string().min(1).max(80).optional()});var eK=O.object({apiKey:O.string(),apiKeyName:O.string(),organizationId:O.string(),user:O.object({id:O.string(),email:O.string().optional()}),selfServe:O.boolean().optional()}),tK=O.object({error:O.literal("multiple_organizations"),organizations:O.array(O.object({id:O.string(),name:O.string()}))}),Zbe=["web","ios","android"];O.object({platforms:O.array(O.enum(Zbe)),packageManager:O.enum(["npm","pnpm","yarn","bun"]),wizardVersion:O.string().min(1).max(40),cliVersions:O.object({momentic:O.string().max(40).optional(),momenticMobile:O.string().max(40).optional()}).optional(),firstRunIds:O.array(O.guid()).max(10).optional()});O.object({ok:O.literal(true)});O.object({paths:O.string().array(),env:O.string().optional(),urlOverride:O.string().optional(),customHeaders:O.record(O.string(),O.string()).optional()});var nK=O.object({suiteRunIds:O.string().array(),runGroupIds:O.string().array()});O.object({suiteRunIds:O.string().array()});CV.array();O.object({runGroupIds:O.string().array()});var ON=O.object({uploadUrl:O.string()});hr.merge(LV);hr.merge(DV);hr.merge(kV);var eTe=O.object({testId:O.string().optional().default(""),testName:O.string().optional().default(""),suiteId:O.string().optional().default(""),suiteName:O.string().optional().default(""),isInteractive:O.boolean().optional().default(false),runner:O.nativeEnum(as).optional(),creditsUsed:O.number().optional(),stepsExecuted:O.number().optional(),tokensUsed:O.number().optional()}),tTe=O.object({transactionId:O.string(),timestamp:O.string(),event:O.nativeEnum(kg),properties:eTe});tTe.array();var oK=p1.omit({steps:true}).extend({steps:O.array(O.record(O.string(),O.unknown().optional())).describe("unparsed ResolvedStep[]")});O.object({limit:O.number().min(1).max(10).optional(),page:O.number().min(1).optional(),start:Eo.optional(),end:Eo.optional(),gitBranchName:O.string().optional(),status:O.nativeEnum(ht).optional()});var rK=uV.array(),nTe=O.object({testId:vo.optional(),gitBranchName:O.string().optional(),gitCommitSha:O.string().optional(),status:O.nativeEnum(ht).optional(),label:O.string().array().optional(),limit:O.number().min(1).max(100).optional(),page:O.number().min(1).optional(),start:Eo.optional(),end:Eo.optional(),quarantined:O.boolean().optional(),recovered:O.boolean().optional(),includeFailureDetails:O.boolean().optional()});nTe.extend({orgId:O.string().optional(),testId:mr(vo),status:mr(O.nativeEnum(ht)),gitBranchName:mr(O.string()),label:mr(O.string()),testName:O.string().optional(),trigger:mr(O.nativeEnum(Ls)),executionType:mr(Mu),cliVersion:mr(O.string()),githubRepository:mr(O.string()),gitlabProjectPath:mr(O.string()),environment:mr(O.string()),directory:mr(O.string()),failureCategory:mr(O.string()),exclude:mr(O.string()),healed:O.boolean().optional()});var oTe=ss.omit({test:true}),iK=O.object({runs:oTe.array(),page:O.number(),pageSize:O.number(),pageCount:O.number()});O.object({applied:O.boolean().optional(),appliedAt:O.coerce.date().optional()});var sK=ON.extend({id:O.string()});O.object({runGroupId:O.guid().optional(),persist:O.boolean().optional()});var aK=O.object({runGroupId:O.guid()}),lK=O.object({quarantined:O.object({testId:vo,quarantinedAt:O.coerce.date(),quarantinedBy:O.string().optional(),quarantinedReason:O.string()}).array()}),cK=O.object({gitLocalUsername:O.string().optional(),gitLocalEmail:O.string().optional(),gitLocalName:O.string().optional()});O.object({testId:vo,testName:O.string().optional(),reason:O.string()}).merge(cK);O.object({testName:O.string().optional(),reason:O.string().optional()}).merge(cK);hr.merge(Vz);hr.merge(zz);hr.merge(Wz);O.object({apkToInstall:O.object({channel:O.string(),tag:O.string().optional()}).optional(),hostname:O.string().optional(),region:ZM.optional(),osVersion:O.nativeEnum(Fg).optional(),sessionId:O.string().optional(),playwrightVersion:nW.optional()});var dK=O.object({name:O.string(),apiUrl:O.string(),webRtcUrl:O.string(),adbUrl:O.string(),token:O.string(),apkDownloadUrl:O.string().optional(),playwrightServerUrl:O.string().optional(),region:O.string().optional(),resolvedTag:O.string().optional()});O.object({appToInstall:O.object({channel:O.string(),tag:O.string().optional()}).optional(),hostname:O.string().optional(),region:ZM.optional(),osVersion:O.nativeEnum(sv).optional(),sessionId:O.string().optional(),installAppOnClient:O.boolean().optional()});var uK=O.object({id:O.string(),apiUrl:O.string(),webRtcUrl:O.string(),wdaUrl:O.string(),token:O.string(),appDownloadUrl:O.string().optional(),appMd5:O.string().optional(),region:O.string().optional(),resolvedTag:O.string().optional()});O.object({channel:O.string().trim().min(1,"channel must be a non-empty string"),tag:O.string().trim().min(1,"tag must be a non-empty string"),md5:O.string()});var pK=O.object({id:O.string(),uploadUrl:O.string().optional(),downloadUrl:O.string(),md5:O.string().optional()}),rTe=O.object({channel:O.string(),tag:O.string(),md5:O.string(),platform:O.nativeEnum(sl).default("ANDROID"),createdAt:O.number().describe("Unix timestamp in milliseconds")}),mK=O.object({assets:O.array(rTe)}),hK=O.object({downloadUrl:O.string()}),MN=(n=>(n.PLAYWRIGHT="PLAYWRIGHT",n.CDP="CDP",n))(MN||{}),iTe=O.nativeEnum(MN);O.object({runId:O.guid().optional(),attemptedProviders:O.array(dN).optional()});var gK=O.object({wsEndpoint:O.string(),accessToken:O.string().optional(),endpointType:iTe.optional(),provider:dN.optional()});z.object({repositoriesIndexed:z.boolean(),indexingInProgress:z.boolean(),indexesOutdated:z.boolean()});var fK=(s=>(s.Queued="queued",s.InProgress="in_progress",s.Completed="completed",s.Waiting="waiting",s.Requested="requested",s.Pending="pending",s))(fK||{}),yK=(a=>(a.Success="success",a.Failure="failure",a.Neutral="neutral",a.Cancelled="cancelled",a.Skipped="skipped",a.TimedOut="timed_out",a.ActionRequired="action_required",a))(yK||{});z.object({name:z.string(),status:z.enum(fK),conclusion:z.enum(yK).nullable()});var $b=z.object({sha:z.string(),message:z.string(),author:z.object({name:z.string().optional(),email:z.string().optional(),date:z.coerce.date().optional()}),committer:z.object({name:z.string().optional(),email:z.string().optional(),date:z.coerce.date().optional()})}),NN=z.object({mergedBranch:z.string().optional()});var SK=z.object({orgId:z.string(),cacheKeys:z.string().array()});z.object({keyParams:SK,clientMetadata:z.string(),lockAcquisitionTimeoutMs:z.number().optional()});var bK=z.object({acquired:z.boolean(),acquiredByMetadata:z.string(),keyPrefix:z.string()});z.object({keyPrefix:z.string(),result:z.string(),ttlMs:z.number()});z.union([z.object({keyPrefix:z.string()}),SK]);var sTe=z.object({remainingTtlMs:z.number(),value:z.string().nullish()});z.object({results:z.record(z.string(),sTe),activeLocks:z.string().array()});var TK=0,AK=5*60*1e3;var EK=z.object({testId:z.string().min(1),stepId:z.string().min(1),baseTestFileHash:z.string().min(1),branchName:z.string().min(1).optional(),environment:z.string().min(1).optional(),classification:mO,healDetails:dV.optional()}),aTe=EK.extend({createdAt:z.coerce.date(),updatedAt:z.coerce.date()});z.object({branchName:z.string().min(1).optional(),mainBranchName:z.string().min(1).optional(),stepId:z.string().min(1),baseTestFileHash:z.string().min(1),environment:z.string().min(1).optional()});var CK=aTe.array();z.object({entries:EK.array()});var lTe=30*Gg;function vK(){return new Date(Date.now()-lTe)}function Wg(e){if(e.startsWith("https://api"))return e.replace("https://api","https://app");if(e.startsWith("http://localhost:8000"))return e.replace("http://localhost:8000","http://localhost:3000");throw new Error(`Unknown Momentic app server URL pattern: ${e}`)}var cTe=z.object({version:z.string(),json:z.record(z.string(),z.unknown().optional()),hash:z.string()}),RK=z.record(z.string(),z.unknown().optional());z.object({newSvgs:z.array(cTe),metadata:RK.optional()});var dTe=z.object({version:z.string(),json:z.record(z.string(),z.unknown().optional()).nullish(),hash:z.string(),description:z.string().nullish(),metadata:RK.nullish()}),wK=z.record(z.string().describe("icon hash"),dTe);var LN="metadata.json",kN="test.yaml",IK=".snapshot.zip",DN=Zn.extend(Ql.shape),uTe=z.object({envName:z.string().optional(),baseUrl:z.string(),variables:z.record(z.string(),z.unknown().optional()),resolvedEnv:WS.optional()}),xK=z.object({browser:il.optional(),ai:ga.optional(),advanced:ZS.optional(),retries:z.number().optional()});z.object({momenticVersion:z.string(),schemaVersion:z.string(),createdAt:z.string(),relativeFilePath:z.string(),environment:uTe,config:xK});var _K=z.object({variables:z.record(z.string(),z.unknown().optional()),resolvedEnv:WS.optional()}),pTe=z.object({envName:z.string().optional(),baseUrl:z.string(),encryptedSecrets:z.string()}),PK=z.object({momenticVersion:z.string(),schemaVersion:z.string(),createdAt:z.string(),relativeFilePath:z.string(),environment:pTe,config:xK});function OK(e){let t;try{t=JSON.parse(e);}catch(n){return `The schema is not valid JSON. ${n}`}try{validator(t);}catch(n){return `The schema is not a valid JSON schema. ${n}`}}var MK=e=>{e.extraHeaders&&(e.extraHeaders=Object.fromEntries(Object.entries(e.extraHeaders).filter(([t,n])=>t.trim()&&n.trim())));};var Iv=class{async resolveStepCacheEntries(){}async saveStepCacheEntries(){}async saveSnapshotCacheEntries(){}async deleteStepCacheEntry(){}};function hTe(e){return e.map(t=>({...t,environment:void 0}))}function FN(e,t){return t?e:hTe(e)}var UN="browser-crash-dump.zip",BN=class{loggerBindings;attachBeforeScreenshot(){}attachAfterScreenshot(){}attachBeforeHtmlSnapshot(){}attachAfterHtmlSnapshot(){}recordTargetAutoHeal(){}storeTraceAsset(){}async finish(){}async startSubSteps(){return new Vb}},Vb=class{async getScreenshot(){}async getHtmlSnapshot(){}async startStep(){return new BN}flushResults(t){}};var ct="metadata.json",zr="assets",to="runs",gTe=z.object({step:tn,status:z.enum(Nt),startedAt:z.coerce.date(),finishedAt:z.coerce.date().optional(),healMetadata:z.object({healType:z.enum(VS).or(z.literal("AI")),healedAt:z.coerce.date()}).optional(),beforeSnapshotId:z.guid().optional(),afterSnapshotId:z.guid().optional(),message:z.string().optional()}),fTe=gTe.extend({finishedAt:z.coerce.date().optional().transform(e=>e??new Date)});fTe.extend({step:z.unknown().optional()});var HN=z.object({avdId:z.string().optional(),channel:z.string().optional(),tag:z.string().optional(),region:z.string().optional(),osVersion:oW.optional()}),LK="1.0.0",kK=Y2.extend({id:z.guid().optional(),startedAt:z.coerce.date(),runAttemptSchemaVersion:z.string().optional(),schemaVersion:z.string().optional().default("1.0.19"),results:z.record(z.string(),z.unknown().optional()).array().optional(),beforeResults:z.record(z.string(),z.unknown().optional()).array().optional(),afterResults:z.record(z.string(),z.unknown().optional()).array().optional(),assetDetails:HN.optional(),viewport:fd.optional(),activeVideos:z.array(z.object({videoName:z.string(),timestamp:z.coerce.date()})).optional()}),zb=kK.extend({assetDetails:HN.optional(),finishedAt:z.coerce.date().optional().transform(e=>e??new Date)});kK.extend(tM.shape);var DK=zb.extend(tM.shape),yTe=z.object({results:z.array(Ds),beforeResults:z.array(Ds).optional(),afterResults:z.array(Ds).optional()});zb.extend(yTe.shape);var STe=z.object({results:z.array(Fs),beforeResults:z.array(Fs).optional(),afterResults:z.array(Fs).optional()});zb.extend(STe.shape);var FK=q2.merge(z2).extend({executionType:Mu.optional().default("WEB"),testId:vo,testDescription:z.string().optional(),directory:z.string().optional(),runGroupId:z.guid(),status:z.enum(ht),healStatus:nb,startedAt:z.coerce.date(),schemaVersion:z.string().nullish(),attempts:z.number(),failureRecoveryDetails:z.object({attempts:z.number()}).optional(),aiSettings:ga.optional(),avgCpuUsage:z.number().optional(),avgMemoryUsage:z.number().optional()}),bTe=FK.extend(HN.shape),xm=FK.extend({finishedAt:z.coerce.date().optional().transform(e=>e??new Date)});bTe.extend({finishedAt:z.coerce.date().optional().transform(e=>e??new Date)});var NK=z.object({mode:z.enum(["SELECTED","RUN_ALL","RUN_NONE","SHADOW"]),baseRef:z.string().nullable(),headSha:z.string(),planId:z.string().nullable(),totalCandidates:z.number().int().nonnegative(),selectedCount:z.number().int().nonnegative(),anchorSegmentIds:z.array(z.string()),userSummary:z.string(),toolCallCount:z.number().int().nonnegative(),selectedTests:z.array(MC),forcedTests:z.array(z.object({name:z.string(),testPath:z.string(),status:z.enum(["A","M","R","C","T"])})).optional().default([]),runAllReason:z.string().nullable()}),TTe=$2.merge(V2).extend({id:z.guid().optional(),startedAt:z.coerce.date(),cliVersion:z.string(),labels:z.string().array().optional().default([]),suiteName:z.string().optional(),ciProvider:z.string().optional(),gitMainBranch:z.string().optional(),ai:ga.optional(),browser:il.optional(),aiSelect:z.union([NK.transform(e=>[e]),z.array(NK)]).optional()}),Ta=TTe.extend({healRiskSummary:Sm.optional(),updatedAt:z.coerce.date().optional().transform(e=>e??new Date),finishedAt:z.coerce.date().optional().transform(e=>e??new Date)});var ATe=new Set(["AWAIT_LISTENER","REGISTER_REQUEST_LISTENER","GET_RECORDED_REQUESTS","MOCK_ROUTE","REMOVE_ROUTE_MOCK","SCROLL_DOWN","SCROLL_UP","SCROLL_LEFT","SCROLL_RIGHT","VISUAL_DIFF","WAIT","SET_HEADER","OFFLINE_MODE"]),ETe=new Set(["MODULE","RESOLVED_MODULE"]);function xv(e){return e.type!=="PRESET_ACTION"?e.type:e.command.type}function _v(e){return ETe.has(e.type)?false:e.type!=="PRESET_ACTION"?true:!ATe.has(e.command.type)}var BK="progress.json",UK="1.0.0",CTe=z.object({runId:z.string(),testId:z.string().optional(),testName:z.string().optional(),directory:z.string().optional(),status:z.nativeEnum(ht),completedSteps:z.number(),totalSteps:z.number(),startedAt:z.coerce.date(),updatedAt:z.coerce.date()});z.object({schemaVersion:z.string(),runGroupId:z.string(),status:z.nativeEnum(ht),totalRuns:z.number(),completedRuns:z.number(),completedSteps:z.number(),totalSteps:z.number(),startedAt:z.coerce.date(),updatedAt:z.coerce.date(),runs:CTe.array()});function HK(e){try{return existsSync(e)&&statSync(e).isDirectory()}catch(t){return R.error({err:t},`Error reading path ${e} during directory existence check.`),false}}var GK="CumAaTMUcwjt05OddAmefKgshbhfRmWxzxih",qg="https://us-west.metrics.momentic.ai",Kg="c60c6a0f-60da-41a7-a61b-07969a0aa303",_m=!!process.env.CI||!!process.env.GITHUB_ACTIONS||!!process.env.GITHUB_RUN_ID||!!process.env.GITLAB_CI||!!process.env.CI_COMMIT_SHA||!!process.env.JENKINS_URL||!!process.env.BUILD_NUMBER||!!process.env.JENKINS_HOME||!!process.env.CIRCLECI||!!process.env.CIRCLE_BUILD_NUM||!!process.env.TRAVIS||!!process.env.TRAVIS_BUILD_NUMBER||!!process.env.BITBUCKET_BUILD_NUMBER||!!process.env.BITBUCKET_COMMIT||!!process.env.CODEBUILD_BUILD_ID||!!process.env.TF_BUILD||!!process.env.BUILD_BUILDID||!!process.env.AGENT_ID||!!process.env.BUILDER_SA_EMAIL||!!process.env.HEROKU_TEST_RUN_ID||!!process.env.CI_NODE_INDEX||!!process.env.TEAMCITY_VERSION||!!process.env.BUILD_VCS_NUMBER||!!process.env.BUILDKITE||!!process.env.BUILDKITE_BUILD_NUMBER||!!process.env.APPVEYOR||!!process.env.APPVEYOR_BUILD_NUMBER||!!process.env.DRONE||!!process.env.DRONE_BUILD_NUMBER||!!process.env.SHIPPABLE||!!process.env.BUILD_URL||!!process.env.SEMAPHORE||!!process.env.SEMAPHORE_EXECUTABLE_UUID||!!process.env.WOODPECKER||!!process.env.CI_BUILD_NUMBER||!!process.env.WERCKER_MAIN_PIPELINE_STARTED||!!process.env.BUDDY_EXECUTION_ID;var OTe=new Set(["exit","quit"]),VK=(()=>{try{return statSync("/.dockerenv"),!0}catch{return false}})();async function fr(e){return _m||VK?true:(await R.flush(),await new Promise(n=>setTimeout(n,100)),await confirm({message:e}))}async function GN(e){let t=dirname(e);return HK(t)?existsSync(e)?fr(`File '${jK(e)}' already exists. Overwrite existing content?`):true:await fr(`Directory '${jK(t)}' doesn't exist. Create it now?`)?(mkdirSync(t,{recursive:true}),true):false}function jK(e){return e.replace(/(\s+)/g,"\\$1")}async function zK(e,t){return _m||VK?t:(await input({message:e,default:t})).trim()||t}async function WK(){let e;try{e=(await input({message:"ask"})).trim();}catch(t){if(t instanceof Error&&t.name==="ExitPromptError"){R.info("");return}throw t}if(!OTe.has(e.toLowerCase()))return e}var Yg=new Map,KK="Log throttle exceeded",jTe=100,$Te=5e3,VTe=DTe(global.fetch,{retries:2,retryOn:function(e,t,n){return !!(t!==null||n&&n.status>=500)},retryDelay:function(e){return Math.pow(2,e)*500}}),zTe=`${qg}/logs/json`,jN=class{constructor(t,n){this.flushIntervalMs=t;this.maxBatchSize=n;}records=[];flushTimer;push(t){if(this.records.push(t),this.records.length>=this.maxBatchSize){this.flushTimer&&(clearTimeout(this.flushTimer),this.flushTimer=void 0),this.flush();return}this.scheduleFlush();}scheduleFlush(){this.flushTimer||(this.flushTimer=setTimeout(()=>{this.flushTimer=void 0,this.flush();},this.flushIntervalMs));}async flush(){if(this.records.length===0)return;let t=this.records;this.records=[];try{let n=await VTe(zTe,{method:"POST",headers:{"Content-Type":"application/json","signoz-access-token":GK,"x-momentic-metrics-api-key":Kg},body:ll(t),signal:AbortSignal.timeout(5e3)});if(!n.ok)throw new Error(`Got error status (${n.statusText}) from SigNoz`)}catch{}}},$N=class e{consoleLogger;hostname;bindingAttributes;disableConsoleLogs;minLevelValue=20;logsInCurrentWindow=0;droppedLogsInWindow=false;lastWindowStart=Date.now();flushIntervalMs;maxBatchSize;buffer;constructor({bindings:t,hostname:n,disableConsoleLogs:o,flushIntervalMs:r,maxBatchSize:i,buffer:s}){this.hostname=n??wd.hostname(),this.disableConsoleLogs=o,this.bindingAttributes={...t,env:"production"},this.flushIntervalMs=r??5e3,this.maxBatchSize=i??10,this.buffer=s??new jN(this.flushIntervalMs,this.maxBatchSize);let a={base:this.bindingAttributes,errorKey:"err",level:"debug"};this.consoleLogger=qK(a);}child(t){return new e({bindings:{...this.bindingAttributes,...t},hostname:this.hostname,disableConsoleLogs:this.disableConsoleLogs,flushIntervalMs:this.flushIntervalMs,maxBatchSize:this.maxBatchSize,buffer:this.buffer})}async flush(){await this.buffer.flush(),this.disableConsoleLogs||this.consoleLogger.flush();}shouldAllowLog(t){if(t===KK)return true;let n=Date.now();return n-this.lastWindowStart>$Te&&(this.logsInCurrentWindow=0,this.droppedLogsInWindow&&this.log("error",void 0,KK),this.droppedLogsInWindow=false,this.lastWindowStart=n),this.logsInCurrentWindow<jTe?(this.logsInCurrentWindow++,true):(this.droppedLogsInWindow=true,false)}log(t,n,o,...r){try{this.logHelper(t,n,o,...r);}catch(i){this.consoleLogger.warn(`Failed to log to Signoz: ${i}`);}}logHelper(t,n,o,...r){if(QS[t]<this.minLevelValue||!this.shouldAllowLog(o))return;typeof n=="string"&&!o&&(n={message:n}),typeof n=="object"&&n&&"err"in n&&n.err instanceof Error&&(n.err=HTe.err(n.err));let i={...this.bindingAttributes,...n&&typeof n=="object"?n:{},...r.length>0?{args:r}:{}},s={host:this.hostname,env:this.bindingAttributes.env},a=WTe();this.disableConsoleLogs||this.consoleLogger[t]({...i,...a??{}},o,...r);let l={timestamp:Math.round(Date.now()*1e6),...a??{},severity_text:t.toUpperCase(),resources:s,attributes:{},body:eV({message:o||"",...i})};this.buffer.push(l);}setApp(t){let n=this.bindingAttributes.app;this.bindingAttributes.app=t,Yg.set("app",this),Yg.delete(n);}debug(t,n,...o){this.log("debug",t,n,...o);}info(t,n,...o){this.log("info",t,n,...o);}warn(t,n,...o){this.log("warn",t,n,...o);}error(t,n,...o){this.log("error",t,n,...o);}bindings(){return this.bindingAttributes}addBinding(t,n){this.bindingAttributes[t]=n;}setMinLevel(t){typeof t=="number"?(this.minLevelValue=t,this.consoleLogger.level=tV[t]):(this.minLevelValue=QS[t],this.consoleLogger.level=t);}enableConsoleLogs(){this.disableConsoleLogs=false;}},Jg=({app:e,hostname:t,disableConsoleLogs:n})=>(Yg.has(e)||Yg.set(e,new $N({bindings:{app:e},hostname:t,disableConsoleLogs:n})),Yg.get(e));function WTe(){let e=trace.getSpan(context.active());if(!e)return;let t=e.spanContext();if(isSpanContextValid(t))return {trace_id:t.traceId,span_id:t.spanId,trace_flags:t.traceFlags}}async function Pv(){await Promise.all([...Yg.values()].map(e=>e.flush()));}var $u=class extends Error{constructor(t){super(t),this.name="TimeoutError";}};var YK=e=>{let t=e.reason===void 0?new DOMException("This operation was aborted.","AbortError"):e.reason;return t instanceof Error?t:new DOMException(t,"AbortError")};function Ie(e,t){let{milliseconds:n,fallback:o,message:r,customTimers:i={setTimeout,clearTimeout}}=t,s;if(typeof n!="number"||Math.sign(n)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${n}\``);return new Promise((a,l)=>{let c;if(t.signal){let{signal:p}=t;if(p.aborted)return l(YK(p));c=()=>l(YK(p)),p.addEventListener("abort",c,{once:true});}let d=()=>{if(t.signal&&t.signal.removeEventListener("abort",c),o)try{a(o());}catch(p){l(p);}else {typeof e.cancel=="function"&&Promise.resolve().then(()=>e.cancel()).catch(()=>{});let p=r instanceof Error?r:new $u(r??`Promise timed out after ${n}ms`);l(p);}};n<1/0&&(s=i.setTimeout(d,n));let u=()=>{i.clearTimeout(s),t.signal&&t.signal.removeEventListener("abort",c);};Promise.resolve(e).then(p=>{u(),a(p);}).catch(p=>{u(),l(p);});})}var Ov="organization";function Mv(e){let t=new PostHog(e.writeKey,{host:e.host,...e.flushImmediately?{flushAt:1,flushInterval:0}:{}}),n=e.platform,o=(l,c,d)=>{let{type:u,...p}=l;t.capture({distinctId:c??d??randomUUID(),event:u,...d&&{groups:{[Ov]:d}},properties:{platform:n,user_id:c??void 0,org_id:d??void 0,...p,organizationId:d??void 0,...c==null&&d==null&&{$process_person_profile:false}}});},r=({orgId:l,properties:c})=>{t.groupIdentify({groupType:Ov,groupKey:l,properties:c});},i=({userId:l,properties:c})=>{Object.values(c).some(u=>u!=null&&u!=="")&&t.identify({distinctId:l,properties:c});},s=()=>t.shutdown();if(e.identity==="stashed"){let l=null;return {shutdownAnalytics:s,groupIdentifyOrg:r,setAnalyticsIdentity:d=>{l=d,e.onIdentify?.(d),i({userId:d.userId,properties:{email:d.email,...d.selfServe!==void 0?{self_serve:d.selfServe}:{}}});},captureEvent:d=>o(d,l?.userId??null,l?.orgId??null)}}return {shutdownAnalytics:s,groupIdentifyOrg:r,identifyUser:i,captureEvent:(l,{userId:c,orgId:d})=>o(l,c,d),captureBillingEvent:(l,{userId:c,orgId:d})=>o(l,c,d)}}async function JK(e,t,n){let o,r=0,i=3,s,a;for(;r<i;)try{let l=await Ie(e.getAllFlagsAndPayloads(n??t,{personProperties:{organizationId:t},groups:{[Ov]:t}}),{milliseconds:5e3});s=l.featureFlags||{},a=l.featureFlagPayloads||{};break}catch(l){o=l,r++,await new Promise(c=>setTimeout(c,100*r));}if(s&&a)return {flags:s,payloads:a};throw o}var Nv=class e extends Mb{constructor(n,o,r,i,s){super(i,s);this.client=n;this.orgId=o;this.userId=r;}static async init(n,o){let r=new PostHog("phc_WRWd8LYIv6rolgDsyCdrPpxtZhsu6qXAkEwPicl44bI",{host:"https://p.momentic.ai"}),{flags:i,payloads:s}=await JK(r,n,o);return new e(r,n,o,i,s)}async refresh(){let{flags:n,payloads:o}=await JK(this.client,this.orgId,this.userId);this.flags=n,this.payloads=o;}};var QTe=2e3,Pm=e=>Number.parseInt(e,10),zN=e=>readFileSync(e,"utf8").trim(),Xg=e=>Pm(zN(e)),XK,Lv,Wb={samples:0,lowMemorySamples:0,highCpuSamples:0,highHeapSamples:0};function eY(){return {...Wb}}var Dv=wd.platform(),ZTe=wd.cpus().map(e=>({model:e.model,speed:e.speed})).reduce((e,t)=>(e[t.model]={speed:t.speed},e.totalCores=(e.totalCores??0)+1,e),{});function VN(e=Date.now()){let t=wd.cpus(),n={measurementTime:e,user:0,nice:0,sys:0,idle:0,irq:0,total:0};for(let o of t)n.user+=o.times.user,n.nice+=o.times.nice,n.sys+=o.times.sys,n.idle+=o.times.idle,n.irq+=o.times.irq;return n.total=n.user+n.nice+n.sys+n.idle+n.irq,n}function tY(e,t){let n={user:t.user-e.user,nice:t.nice-e.nice,sys:t.sys-e.sys,idle:t.idle-e.idle,irq:t.irq-e.irq,total:t.total-e.total};return n.total<=0?null:{measurementTime:t.measurementTime,intervalMs:t.measurementTime-e.measurementTime,user:n.user/n.total*100,nice:n.nice/n.total*100,sys:n.sys/n.total*100,idle:n.idle/n.total*100,irq:n.irq/n.total*100,total:100-n.idle/n.total*100}}function eAe(){let e=VN();return ()=>{let t=VN(),n=tY(e,t);return e=t,n}}function QK(){try{let t=readFileSync("/sys/fs/cgroup/cpu.stat","utf8").match(/^usage_usec\s+(\d+)/m);if(t?.[1])return Pm(t[1])}catch{}try{let e=Xg("/sys/fs/cgroup/cpuacct/cpuacct.usage");if(!isNaN(e))return e/1e3}catch{}return null}function tAe(){try{let t=zN("/sys/fs/cgroup/cpu.max").split(" "),n=t[0],o=t[1];return !n||!o||n==="max"?null:Pm(n)/Pm(o)}catch{}try{let e=Xg("/sys/fs/cgroup/cpu/cpu.cfs_quota_us"),t=Xg("/sys/fs/cgroup/cpu/cpu.cfs_period_us");return e===-1||isNaN(t)?null:e/t}catch{return null}}function nAe(){if(Dv!=="linux")return null;let e=QK();if(e===null)return null;let t=tAe()??wd.cpus().length,n=e,o=Date.now();return ()=>{let r=QK();if(r===null)return null;let i=Date.now(),s=i-o;if(s<=0)return null;let a=r-n,l=s*1e3,c=Math.max(0,Math.min(100,a/l/t*100));return n=r,o=i,{measurementTime:i,intervalMs:s,user:c,nice:0,sys:0,idle:Math.max(0,100-c),irq:0,total:c}}}function oAe(){let e=process.cpuUsage(),t=process.hrtime.bigint();return ()=>{let n=process.cpuUsage(),o=process.hrtime.bigint(),r=Number(o-t)/1e6,i=n.user-e.user,s=n.system-e.system;if(e=n,t=o,r<=0)return null;let a=Math.max(wd.cpus().length,1),l=c=>Math.max(0,c/1e3/r*100/a);return {total:l(i+s),user:l(i),sys:l(s),intervalMs:r}}}function nY({intervalMs:e=QTe,maxSamples:t=1e4,keepSamples:n=true,onSample:o}={}){let r=[],i=nAe()??eAe(),s=oAe(),a=()=>{let d=Date.now(),u=iY(),p=process.memoryUsage(),m=i(),h=s(),g={timestamp:d,system:{cpu:m,memory:{total:u.totalMemory,free:u.freeMemory,freePercentage:u.freePercentage}},process:{cpu:h,memory:{rss:p.rss,heapTotal:p.heapTotal,heapUsed:p.heapUsed,external:p.external,arrayBuffers:p.arrayBuffers}}};o?.(g),n&&(r.push(g),r.length>t&&r.shift());};a();let l=setInterval(a,e),c=d=>({samples:n?[...r]:[]});return {stop:()=>(clearInterval(l),c()),getSeries:()=>c()}}var kv=e=>{try{let t={},n=!1,o=iY(),r=iAe();Wb.samples++,o.freePercentage<.05&&(Object.assign(t,process.memoryUsage()),n=!0,Wb.lowMemorySamples++),r&&r?.total>80&&(n=!0,Wb.highCpuSamples++);let i=XTe.getHeapStatistics(),s=i.used_heap_size,a=i.heap_size_limit;s/a>.9&&(n=!0,Wb.highHeapSamples++),n?e.warn({memory:o,cpu:r,heapStats:i,...t},"Critical resource usage metrics detected"):e.debug({memory:o,cpu:r},"Got machine resource usage metrics");}catch{}},oY=e=>{kv(e),setTimeout(()=>kv(e),5e3);};function rY(e){return kv(e),{interval:setInterval(()=>kv(e),2e4),cpuMetadata:ZTe,platform:Dv}}function rAe(){if(Dv!=="linux")return null;try{let e=zN("/sys/fs/cgroup/memory.max"),t=Xg("/sys/fs/cgroup/memory.current");if(e==="max"||isNaN(t))return null;let n=Pm(e);if(isNaN(n))return null;let o=Math.max(0,n-t);return {totalMemory:n,freeMemory:o,freePercentage:o/n}}catch{}try{let e=Xg("/sys/fs/cgroup/memory/memory.limit_in_bytes"),t=Xg("/sys/fs/cgroup/memory/memory.usage_in_bytes");if(isNaN(e)||isNaN(t))return null;let n=wd.totalmem();if(e>=n)return null;let o=Math.max(0,e-t);return {totalMemory:e,freeMemory:o,freePercentage:o/e}}catch{return null}}function iY(){let e=rAe();if(e)return e;let t=wd.totalmem(),n=Dv==="darwin"?sAe():(()=>{let r=wd.freemem();return {availableMemory:r,rawFreeMemory:r,cachedMemory:0}})(),o=n.availableMemory/t;return {totalMemory:t,freeMemory:n.availableMemory,freePercentage:o}}function iAe(){let e=VN();if(!Lv)return Lv=e,null;let t=tY(Lv,e);return Lv=e,t?(XK=t,XK):null}function sAe(){try{let e=execSync("/usr/bin/vm_stat",{encoding:"utf8",stdio:["pipe","pipe","ignore"]}),n=e.match(/page size of (\d+) bytes/)?.[1],o=n?Pm(n):4096,r=d=>{let p=e.match(new RegExp(`${d}:\\s+(\\d+)\\.`,"i"))?.[1];return p?Pm(p):0},i=r("Pages free"),s=r("Pages inactive"),a=r("Pages speculative"),l=i*o,c=(s+a)*o;return {availableMemory:l+c,rawFreeMemory:l,cachedMemory:c}}catch{let e=wd.freemem();return {availableMemory:e,rawFreeMemory:e,cachedMemory:0}}}process.env.APP||"unknown";var Fv="deployment.environment",Bv="service.instance.id";function sY(){return process.env.MOMENTIC_LOCAL_DEV==="1"&&process.env.LOCAL_SIGNOZ==="true"}var Qg=false,Uv,qb,Kb,cY=[],Hv;function Gv(){return Qg}function dY(e){cY.push(e);}async function bAe(){for(let e of cY)try{await e();}catch{}}function TAe(){return Gv()&&trace.getSpan(context.active())!==void 0}function AAe(){return sY()?new OTLPTraceExporter({url:"http://localhost:4318/v1/traces"}):new OTLPTraceExporter({url:`${qg}/v1/traces`,headers:{"x-momentic-metrics-api-key":Kg}})}function EAe(e){let t="production",n=v4$1(),o=AAe();return new NodeTracerProvider({resource:resourceFromAttributes({[ATTR_SERVICE_NAME]:e,[Fv]:t,[Bv]:n,[ATTR_SERVICE_VERSION]:"3.12.0"}),spanProcessors:[new BatchSpanProcessor(o)]})}function CAe(e){Hv=registerInstrumentations({tracerProvider:e,instrumentations:[new UndiciInstrumentation({requireParentforSpans:true})]});}function vAe(e){return !e&&!Uv?trace.getTracer("momentic-serverless"):Kb?.getTracer("momentic-serverless")??trace.getTracer("momentic-serverless")}async function Vu(e){if(!(!e.enabled||Qg))try{Uv=e.serviceName;let t=EAe(e.serviceName);Kb=t,qb=new AsyncLocalStorageContextManager,t.register({contextManager:qb.enable(),propagator:new W3CTraceContextPropagator}),CAe(t),Qg=!0;}catch{Qg=false,Uv=void 0,Kb=void 0,qb=void 0,Hv=void 0;}}async function jv(){if(Qg)try{await bAe(),await Kb?.shutdown();}catch{}finally{Hv?.();try{qb?.disable();}catch{}Qg=false,Uv=void 0,qb=void 0,Kb=void 0,Hv=void 0;}}async function He(e){if(!Gv()||!e.root&&!TAe())return e.fn(void 0);let t=e.serviceName===void 0?e.attributes:{...e.attributes??{},"momentic.span_service_name":e.serviceName};return await vAe(e.serviceName).startActiveSpan(e.name,{attributes:t,kind:e.kind??SpanKind.CLIENT},async n=>{try{let o=await e.fn(n);return n.setStatus({code:SpanStatusCode.OK}),o}catch(o){throw n.setStatus({code:SpanStatusCode.ERROR,message:o instanceof Error?o.message.slice(0,300):void 0}),o instanceof Error&&n.recordException(o),o}finally{n.end();}})}var Yb=class{increment(t,n,o){}gauge(t,n){}distribution(t,n,o){}async flush(){}async recordDuration(t){return await qN(t)}};async function qN({fn:e,name:t,timeoutMs:n,timeoutMessage:o,trace:r}){let i=r?()=>He({name:r.name,attributes:r.attributes,fn:e}):e,s=Promise.resolve(i());return n===void 0?await s:await Ie(s,{milliseconds:n,message:o??`Timed out after ${n}ms recording duration for ${t}`})}function RAe(e){if(!e||e.length===0)return {};let t={};for(let n of e){let o=n.indexOf(":");if(o>-1){let r=n.slice(0,o).trim(),i=n.slice(o+1).trim();r&&(t[r]=i);continue}t[n]=true;}return t}function KN(e,t){let n=RAe(e);return !t||Object.keys(t).length===0?n:{...t,...n}}function DAe(){return new OTLPMetricExporter({url:`${qg}/v1/metrics`,headers:{"x-momentic-metrics-api-key":Kg},temporalityPreference:AggregationTemporalityPreference.DELTA})}var YN=[100,500,1e3,2e3,3e3,4e3,5e3,7500,1e4,15e3,2e4],$v=(e,t)=>({instrumentName:e,instrumentType:InstrumentType.HISTOGRAM,aggregation:{type:AggregationType.EXPLICIT_BUCKET_HISTOGRAM,options:{boundaries:t,recordMinMax:false}}}),FAe=[$v("test_event_duration",YN),$v("test_step_duration",YN),$v("test_mobile_step_duration",YN),$v("web_agent_action_duration",[25,50,100,200,350,500,750,1e3,2e3,5e3,1e4,2e4])],Vv=class{globalAttributes;provider;meter;counterCache=new Map;histogramCache=new Map;observableGaugeCache=new Map;gaugeValues=new Map;getCounter(t){let n=this.counterCache.get(t);if(n)return n;let o=this.meter.createCounter(t);return this.counterCache.set(t,o),o}getHistogram(t){let n=this.histogramCache.get(t);if(n)return n;let o=this.meter.createHistogram(t);return this.histogramCache.set(t,o),o}ensureObservableGauge(t){let n=this.observableGaugeCache.get(t);if(n)return n;let o=this.meter.createObservableGauge(t);return o.addCallback(r=>{let i=this.gaugeValues.get(t);i!==void 0&&r.observe(i,this.globalAttributes);}),this.observableGaugeCache.set(t,o),o}constructor(t){this.globalAttributes={...t.globalAttributes??{}};let n=typeof process<"u"?"production":"unknown",o=resourceFromAttributes({[ATTR_SERVICE_NAME]:t.serviceName,[Fv]:n,[Bv]:typeof process<"u"&&process.env.SERVICE_INSTANCE_ID?process.env.SERVICE_INSTANCE_ID:v4$1(),[ATTR_SERVICE_VERSION]:"3.12.0"}),r=DAe(),i=new PeriodicExportingMetricReader({exporter:r,exportIntervalMillis:t.exportIntervalMs??6e4});this.provider=new MeterProvider({resource:o,readers:[i],views:FAe}),metrics.setGlobalMeterProvider(this.provider),this.meter=metrics.getMeter("momentic-serverless");}increment(t,n,o){try{let r=KN(o,this.globalAttributes);this.getCounter(t).add(typeof n=="number"?n:1,r);}catch{}}gauge(t,n){try{this.ensureObservableGauge(t),this.gaugeValues.set(t,n);}catch{}}distribution(t,n,o){try{let r=KN(o,this.globalAttributes);this.getHistogram(t).record(n,r);}catch{}}async flush(){try{await this.provider.forceFlush();}catch{}}async recordDuration(t){let{name:n,tags:o}=t,r=Date.now();try{return await qN(t)}finally{this.distribution(n,Date.now()-r,o);}}};var Tt=new Yb;function pY(e){if(!e.disabled)try{Tt=new Vv(e);}catch{Tt=new Yb;}}var JN;function mY(e){JN=e;}function zu(e){UAe(e)&&JN&&JN(e);}var BAe=new Set(["InternalWebAgentError","InternalPlatformError","UnknownError"]);function UAe(e){return e instanceof Error&&e.name==="AbortError"||lC(e,De)?false:e instanceof te?BAe.has(e.reason):true}function HAe({usage:e,promptType:t,result:n="success"}){let o=[`type:${t}`,`result:${n}`],r=e.inputTokens??0,i=e.inputTokenDetails.cacheReadTokens??e.cachedInputTokens??0,s=e.outputTokens??0;Tt.distribution("ai_session_tokens",r,[...o,"category:input"]),Tt.distribution("ai_session_tokens",Math.max(0,Math.min(i,r)),[...o,"category:cached_input"]),Tt.distribution("ai_session_tokens",s,[...o,"category:output"]);}function zv({usage:e,promptType:t,logger:n,message:o,result:r="success",attributes:i}){HAe({usage:e,promptType:t,result:r}),n.info({...i,promptType:t,result:r,usage:e},o);}function Aa({usage:e,promptType:t,logger:n}){let o=Promise.resolve(e).catch(r=>{n.warn({err:r,promptType:t},"Failed to resolve AI session usage");});return ({message:r,result:i="success",attributes:s})=>{o.then(a=>{a&&zv({usage:a,promptType:t,logger:n,result:i,message:r,attributes:s});});}}function wY(){return globalThis.crypto}function eL(e){let t=wY(),n=new Uint8Array(e);if(t&&typeof t.getRandomValues=="function")return t.getRandomValues(n),n;for(let o=0;o<n.length;o++)n[o]=Math.floor(Math.random()*256);return n}function qu(){let e=wY();if(e&&typeof e.randomUUID=="function")return e.randomUUID();let t=eL(16);t[6]=t[6]&15|64,t[8]=t[8]&63|128;let n=[...t].map(o=>o.toString(16).padStart(2,"0")).join("");return `${n.slice(0,8)}-${n.slice(8,12)}-${n.slice(12,16)}-${n.slice(16,20)}-${n.slice(20)}`}function tL(e){let t=globalThis.Buffer;if(t)return t.from(e).toString("base64");let n="";for(let a=0;a<e.length;a++)n+=String.fromCharCode(e[a]);let o=globalThis.btoa;if(typeof o=="function")return o(n);let r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i="",s=0;for(;s<n.length;){let a=n.charCodeAt(s++)&255,l=s<n.length?n.charCodeAt(s++)&255:NaN,c=s<n.length?n.charCodeAt(s++)&255:NaN,d=a>>2,u=(a&3)<<4|(Number.isNaN(l)?0:l>>4),p=Number.isNaN(l)?64:(l&15)<<2|(Number.isNaN(c)?0:c>>6),m=Number.isNaN(c)?64:c&63;i+=r.charAt(d),i+=r.charAt(u),i+=p===64?"=":r.charAt(p),i+=m===64?"=":r.charAt(m);}return i}function jAe(e){return new Promise(t=>setTimeout(t,e))}function Xb(e){if(e)return e.endsWith("/")?e:`${e}/`}function $Ae(e){var t;let n=(t=e.get("Retry-After"))!=null?t:e.get("retry-after");if(!n)return;let o=Number(n);if(n.trim()!==""&&!Number.isNaN(o))return o*1e3;let r=new Date(n).getTime();if(!Number.isNaN(r)){let i=r-Date.now();return i>0?i:0}}function VAe(e,t){if(t&&typeof t=="object"&&t!==null&&"retryAfterMs"in t){let r=t.retryAfterMs;if(typeof r=="number")return Math.max(0,r)}if(e<=1)return 0;let n=500,o=Math.pow(2,e-2);return n*o}async function zAe(e,t,n){let o=n.sdkName?`[raindrop-ai/${n.sdkName}]`:"[raindrop-ai/core]",r;for(let i=1;i<=n.maxAttempts;i++){if(i>1){let s=VAe(i,r);n.debug&&console.warn(`${o} ${t} retry ${i}/${n.maxAttempts} in ${s}ms`),s>0&&await jAe(s);}else n.debug&&console.log(`${o} ${t} attempt ${i}/${n.maxAttempts}`);try{return await e()}catch(s){if(r=s,n.debug){let a=s instanceof Error?s.message:String(s);console.warn(`${o} ${t} attempt ${i} failed: ${a}${i===n.maxAttempts?" (no more retries)":""}`);}if(r&&typeof r=="object"&&"retryable"in r&&!r.retryable||i===n.maxAttempts)break}}throw r instanceof Error?r:new Error(String(r))}async function Om(e,t,n,o){let r=`POST ${e}`;await zAe(async()=>{let i=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json",...n},body:JSON.stringify(t)});if(!i.ok){let s=await i.text().catch(()=>""),a=new Error(`HTTP ${i.status} ${i.statusText}${s?`: ${s}`:""}`),l=$Ae(i.headers);throw typeof l=="number"&&(a.retryAfterMs=l),a.retryable=i.status===429||i.status>=500,a}},r,o);}var hY={UNSET:0,ERROR:2};function gY(e){let t=e?e.traceIdB64:tL(eL(16)),n=tL(eL(8));return {traceIdB64:t,spanIdB64:n,parentSpanIdB64:e?e.spanIdB64:void 0}}function Qb(){return Date.now().toString()+"000000"}function fY(e){return String(Math.floor(e))+"000000"}function Y(e,t){if(t!==void 0)return {key:e,value:{stringValue:t}}}function et(e,t){if(t!==void 0&&Number.isFinite(t))return {key:e,value:{intValue:String(Math.trunc(t))}}}function ef(e,t){if(t!==void 0&&Number.isFinite(t))return {key:e,value:{doubleValue:t}}}function WAe(e,t){if(t!==void 0)return {key:e,value:{boolValue:t}}}function Id(e,t){if(!(!t||t.length===0))return {key:e,value:{arrayValue:{values:t.filter(n=>typeof n=="string").map(n=>({stringValue:n}))}}}}function XN(e){let t=e.attributes.filter(o=>o!==void 0),n={traceId:e.ids.traceIdB64,spanId:e.ids.spanIdB64,name:e.name,startTimeUnixNano:e.startTimeUnixNano,endTimeUnixNano:e.endTimeUnixNano};return e.ids.parentSpanIdB64&&(n.parentSpanId=e.ids.parentSpanIdB64),t.length&&(n.attributes=t),e.status&&(n.status=e.status),n}function yY(e,t="raindrop.core",n="0.0.0"){return {resourceSpans:[{resource:{attributes:[{key:"service.name",value:{stringValue:t}}]},scopeSpans:[{scope:{name:t,version:n},spans:e}]}]}}var qAe="RAINDROP_LOCAL_DEBUGGER",KAe="RAINDROP_WORKSHOP",SY="http://localhost:5899/v1/";function lL(e){var t;try{let n=(t=globalThis?.process)==null?void 0:t.env;if(n&&typeof n[e]=="string"&&n[e].length>0)return n[e]}catch{}}function YAe(){let e=lL(KAe);if(e===void 0)return;let t=e.trim();if(t.length!==0){if(/^https?:\/\//i.test(t))return {url:t};if(/^(1|true|yes|on)$/i.test(t))return "enable";if(/^(0|false|no|off)$/i.test(t))return "disable"}}function JAe(e){return e?!!(e==="localhost"||e==="127.0.0.1"||e==="0.0.0.0"||e==="::1"||e.endsWith(".localhost")):false}function XAe(){try{let e=globalThis?.location;if(e&&typeof e.hostname=="string"&&e.hostname.length>0)return e.hostname}catch{}}function QAe(){return !!(JAe(XAe())||lL("NODE_ENV")==="development")}function Nm(e){var t,n,o;if(e===null)return null;if(typeof e=="string"&&e.length>0)return (t=Xb(e))!=null?t:null;let r=lL(qAe);if(r)return (n=Xb(r))!=null?n:null;let i=YAe();return i==="disable"?null:i==="enable"?SY:i&&"url"in i?(o=Xb(i.url))!=null?o:null:QAe()?SY:null}function Qv(e){return Nm(e)!==null}function ZAe(e,t={}){var n;let o=Nm(t.baseUrl);o&&Om(`${o}traces`,e,{},{maxAttempts:1,debug:(n=t.debug)!=null?n:false,sdkName:t.sdkName}).catch(()=>{});}function eEe(e,t={}){var n;let o=Nm(t.baseUrl);if(!o)return;let r=t.writeKey?{Authorization:`Bearer ${t.writeKey}`}:{};Om(`${o}events/track_partial`,e,r,{maxAttempts:1,debug:(n=t.debug)!=null?n:false,sdkName:t.sdkName}).catch(()=>{});}function Wu(e,t={}){var n,o;let r=Nm(t.baseUrl);r&&Om(`${r}live`,{...e,type:e.type,timestamp:(n=e.timestamp)!=null?n:Date.now()},{},{maxAttempts:1,debug:(o=t.debug)!=null?o:false,sdkName:t.sdkName}).catch(()=>{});}function tEe(e,t){var n,o,r,i;let s={...e,...t};return (e.properties||t.properties)&&(s.properties={...(n=e.properties)!=null?n:{},...(o=t.properties)!=null?o:{}}),(e.attachments||t.attachments)&&(s.attachments=[...(r=e.attachments)!=null?r:[],...(i=t.attachments)!=null?i:[]]),s}var nEe=class{constructor(e){this.buffers=new Map,this.sticky=new Map,this.timers=new Map,this.inFlight=new Set;var t,n,o,r,i,s,a,l;this.writeKey=(t=e.writeKey)==null?void 0:t.trim(),this.baseUrl=(n=Xb(e.endpoint))!=null?n:"https://api.raindrop.ai/v1/",this.enabled=e.enabled!==false,this.debug=e.debug,this.partialFlushMs=(o=e.partialFlushMs)!=null?o:1e3,this.sdkName=(r=e.sdkName)!=null?r:"core",this.prefix=`[raindrop-ai/${this.sdkName}]`,this.defaultEventName=(i=e.defaultEventName)!=null?i:"ai_generation",this.localDebuggerUrl=(s=Nm(e.localDebuggerUrl))!=null?s:void 0,this.debug&&this.localDebuggerUrl&&console.log(`${this.prefix} Local debugger mirroring: ${this.localDebuggerUrl}`);let c=typeof process<"u"&&typeof process.version=="string";this.context={library:{name:(a=e.libraryName)!=null?a:"@raindrop-ai/core",version:(l=e.libraryVersion)!=null?l:"0.0.0"},metadata:{jsRuntime:c?"node":"web",...c?{nodeVersion:process.version}:{}}};}isDebugEnabled(){return this.debug}authHeaders(){return this.writeKey?{Authorization:`Bearer ${this.writeKey}`}:{}}async patch(e,t){var n,o,r,i,s,a,l,c,d,u,p;if(!this.enabled||!e||!e.trim())return;this.debug&&console.log(`${this.prefix} queue patch`,{eventId:e,userId:t.userId,convoId:t.convoId,eventName:t.eventName,hasInput:typeof t.input=="string"&&t.input.length>0,hasOutput:typeof t.output=="string"&&t.output.length>0,attachments:(o=(n=t.attachments)==null?void 0:n.length)!=null?o:0,isPending:t.isPending});let m=(r=this.sticky.get(e))!=null?r:{},h=(i=this.buffers.get(e))!=null?i:{},g=tEe(h,t);g.isPending=(l=(a=(s=t.isPending)!=null?s:h.isPending)!=null?a:m.isPending)!=null?l:true,this.buffers.set(e,g),this.sticky.set(e,{userId:(c=g.userId)!=null?c:m.userId,convoId:(d=g.convoId)!=null?d:m.convoId,eventName:(u=g.eventName)!=null?u:m.eventName,isPending:(p=g.isPending)!=null?p:m.isPending});let f=this.timers.get(e);if(f&&clearTimeout(f),g.isPending===false){await this.flushOne(e);return}let y=setTimeout(()=>{this.flushOne(e).catch(()=>{});},this.partialFlushMs);this.timers.set(e,y);}async finish(e,t){await this.patch(e,{...t,isPending:false});}async flush(){if(!this.enabled)return;let e=[...this.buffers.keys()];await Promise.all(e.map(t=>this.flushOne(t))),await Promise.all([...this.inFlight].map(t=>t.catch(()=>{})));}async shutdown(){for(let e of this.timers.values())clearTimeout(e);this.timers.clear(),await this.flush();}async trackSignal(e){var t,n;if(!this.enabled)return;let o=[{event_id:e.eventId,signal_name:e.name,signal_type:(t=e.type)!=null?t:"default",timestamp:e.timestamp,sentiment:e.sentiment,attachment_id:e.attachmentId,properties:{...(n=e.properties)!=null?n:{},...e.comment?{comment:e.comment}:{},...e.after?{after:e.after}:{}}}];if(!this.writeKey)return;let r=`${this.baseUrl}signals/track`;try{await Om(r,o,this.authHeaders(),{maxAttempts:3,debug:this.debug,sdkName:this.sdkName});}catch(i){let s=i instanceof Error?i.message:String(i);console.warn(`${this.prefix} failed to send signal (dropping): ${s}`);}}async identify(e){if(!this.enabled)return;let n=(Array.isArray(e)?e:[e]).filter(r=>!r?.userId||!r.userId.trim()?(this.debug&&console.warn(`${this.prefix} skipping identify: missing userId`),false):true).map(r=>{var i;return {user_id:r.userId,traits:(i=r.traits)!=null?i:{}}});if(!this.writeKey||n.length===0)return;let o=`${this.baseUrl}users/identify`;try{await Om(o,n,this.authHeaders(),{maxAttempts:3,debug:this.debug,sdkName:this.sdkName});}catch(r){let i=r instanceof Error?r.message:String(r);console.warn(`${this.prefix} failed to send identify (dropping): ${i}`);}}async flushOne(e){var t,n,o,r,i,s,a,l,c,d,u,p,m;if(!this.enabled)return;let h=this.timers.get(e);h&&(clearTimeout(h),this.timers.delete(e));let g=this.buffers.get(e);if(this.buffers.delete(e),!g)return;let f=(t=this.sticky.get(e))!=null?t:{},y=(o=(n=g.eventName)!=null?n:f.eventName)!=null?o:this.defaultEventName,S=(r=g.userId)!=null?r:f.userId;if(!S){this.debug&&console.warn(`${this.prefix} skipping track_partial for ${e}: missing userId`),this.sticky.delete(e);return}let{wizardSession:b,...E}=(i=g.properties)!=null?i:{},C=(s=g.convoId)!=null?s:f.convoId,w=(l=(a=g.isPending)!=null?a:f.isPending)!=null?l:true,I={event_id:e,user_id:S,event:y,timestamp:(c=g.timestamp)!=null?c:new Date().toISOString(),ai_data:{input:g.input,output:g.output,model:g.model,convo_id:C},properties:{...E,...b?{"raindrop.wizardSession":b}:{},$context:this.context},attachments:g.attachments,is_pending:w},x=`${this.baseUrl}events/track_partial`;if(this.debug&&console.log(`${this.prefix} sending track_partial`,{eventId:e,eventName:y,userId:S,convoId:C,isPending:w,inputPreview:typeof g.input=="string"?g.input.slice(0,120):void 0,outputPreview:typeof g.output=="string"?g.output.slice(0,120):void 0,attachments:(u=(d=g.attachments)==null?void 0:d.length)!=null?u:0,attachmentKinds:(m=(p=g.attachments)==null?void 0:p.map(P=>({type:P.type,role:P.role,name:P.name,valuePreview:P.value.slice(0,60)})))!=null?m:[],endpoint:x}),this.localDebuggerUrl&&eEe(I,{baseUrl:this.localDebuggerUrl,writeKey:this.writeKey,debug:this.debug,sdkName:this.sdkName}),!this.writeKey){w||this.sticky.delete(e);return}let v=Om(x,I,this.authHeaders(),{maxAttempts:3,debug:this.debug,sdkName:this.sdkName});this.inFlight.add(v);try{try{await v,this.debug&&console.log(`${this.prefix} sent track_partial ${e} (${y})`);}catch(P){let _=P instanceof Error?P.message:String(P);console.warn(`${this.prefix} failed to send track_partial (dropping): ${_}`);}}finally{this.inFlight.delete(v);}w||this.sticky.delete(e);}},IY=["apikey","apisecret","apitoken","secretaccesskey","sessiontoken","privatekey","privatekeyid","clientsecret","accesstoken","refreshtoken","oauthtoken","bearertoken","authorization","password","passphrase"],xY="[REDACTED]";function _Y(e){return e.toLowerCase().replace(/[-_.]/g,"")}function PY(e,t){var n,o;let r=oEe((n=t?.secretKeyNames)!=null?n:IY),i=(o=t?.placeholder)!=null?o:xY,s=new WeakSet,a=l=>{if(l===null||typeof l!="object")return l;if(s.has(l))return "[CIRCULAR]";if(s.add(l),Array.isArray(l))return l.map(d=>a(d));let c={};for(let[d,u]of Object.entries(l))r.has(_Y(d))?c[d]=i:c[d]=a(u);return c};return a(e)}function oEe(e){let t=new Set;for(let n of e)t.add(_Y(n));return t}var OY=["ai.request.providerOptions","ai.response.providerMetadata"];function MY(e){let t=e.attributes;if(!t||t.length===0)return e;let n;for(let o=0;o<t.length;o++){let r=t[o],i=NY(r.key,r.value);i!==void 0&&(n||(n=t.slice()),n[o]={key:r.key,value:i});}return n?{...e,attributes:n}:e}var rEe=new Set(OY);function NY(e,t){if(!rEe.has(e))return;let n=t.stringValue;if(typeof n!="string"||n.length===0)return;let o;try{o=JSON.parse(n);}catch{return}let r=PY(o),i;try{i=JSON.stringify(r);}catch{return}if(i!==n)return {stringValue:i}}var iEe=class{constructor(e){this.queue=[],this.inFlight=new Set;var t,n,o,r,i,s,a,l,c;this.writeKey=(t=e.writeKey)==null?void 0:t.trim(),this.baseUrl=(n=Xb(e.endpoint))!=null?n:"https://api.raindrop.ai/v1/",this.enabled=e.enabled!==false,this.debug=e.debug,this.debugSpans=e.debugSpans===true,this.flushIntervalMs=(o=e.flushIntervalMs)!=null?o:1e3,this.maxBatchSize=(r=e.maxBatchSize)!=null?r:50,this.maxQueueSize=(i=e.maxQueueSize)!=null?i:5e3,this.sdkName=(s=e.sdkName)!=null?s:"core",this.prefix=`[raindrop-ai/${this.sdkName}]`,this.serviceName=(a=e.serviceName)!=null?a:"raindrop.core",this.serviceVersion=(l=e.serviceVersion)!=null?l:"0.0.0",this.localDebuggerUrl=(c=Nm(e.localDebuggerUrl))!=null?c:void 0,this.debug&&this.localDebuggerUrl&&console.log(`${this.prefix} Local debugger mirroring: ${this.localDebuggerUrl}`),this.transformSpanHook=e.transformSpan,this.disableDefaultRedaction=e.disableDefaultRedaction===true;}redactSpan(e){let t=e;if(this.transformSpanHook)try{let n=this.transformSpanHook(t);if(n===null)return null;n!==void 0&&(t=n);}catch(n){if(this.debug){let o=n instanceof Error?n.message:String(n);console.warn(`${this.prefix} transformSpan hook threw: ${o}`);}return null}return this.disableDefaultRedaction||(t=MY(t)),t}isDebugEnabled(){return this.debug}authHeaders(){return this.writeKey?{Authorization:`Bearer ${this.writeKey}`}:{}}startSpan(e){var t,n;let o=gY(e.parent),r=(t=e.startTimeUnixNano)!=null?t:Qb(),i=[Y("ai.telemetry.metadata.raindrop.eventId",e.eventId),Y("ai.operationId",e.operationId)];(n=e.attributes)!=null&&n.length&&i.push(...e.attributes);let s={ids:o,name:e.name,startTimeUnixNano:r,attributes:i};return this.mirrorToLocalDebugger(XN({ids:s.ids,name:s.name,startTimeUnixNano:s.startTimeUnixNano,endTimeUnixNano:s.startTimeUnixNano,attributes:s.attributes,status:{code:hY.UNSET}})),s}mirrorToLocalDebugger(e){if(!this.localDebuggerUrl)return;let t=this.redactSpan(e);if(t===null)return;let n=yY([t],this.serviceName,this.serviceVersion);ZAe(n,{baseUrl:this.localDebuggerUrl,debug:false,sdkName:this.sdkName});}endSpan(e,t){var n,o;if(e.endTimeUnixNano)return;e.endTimeUnixNano=(n=t?.endTimeUnixNano)!=null?n:Qb(),(o=t?.attributes)!=null&&o.length&&e.attributes.push(...t.attributes);let r=t?.status;if(!r&&t?.error!==void 0){let s=t.error instanceof Error?t.error.message:String(t.error);r={code:hY.ERROR,message:s};}let i=XN({ids:e.ids,name:e.name,startTimeUnixNano:e.startTimeUnixNano,endTimeUnixNano:e.endTimeUnixNano,attributes:e.attributes,status:r});this.enqueue(i),this.mirrorToLocalDebugger(i);}createSpan(e){var t;let n=gY(e.parent),o=[Y("ai.telemetry.metadata.raindrop.eventId",e.eventId)];(t=e.attributes)!=null&&t.length&&o.push(...e.attributes);let r=XN({ids:n,name:e.name,startTimeUnixNano:e.startTimeUnixNano,endTimeUnixNano:e.endTimeUnixNano,attributes:o,status:e.status});this.enqueue(r),this.mirrorToLocalDebugger(r);}enqueue(e){if(!this.enabled)return;if(this.debugSpans){let n=o=>o?o.slice(-8):"none";console.log(`${this.prefix}[span] name=${e.name} trace=${n(e.traceId)} span=${n(e.spanId)} parent=${n(e.parentSpanId)}`);}let t=this.redactSpan(e);if(t!==null){if(this.queue.length>=this.maxQueueSize&&this.queue.shift(),this.queue.push(t),this.queue.length>=this.maxBatchSize){this.flush().catch(()=>{});return}this.timer||(this.timer=setTimeout(()=>{this.timer=void 0,this.flush().catch(()=>{});},this.flushIntervalMs));}}async flush(){if(this.enabled)for(this.timer&&(clearTimeout(this.timer),this.timer=void 0);this.queue.length>0;){let e=this.queue.splice(0,this.maxBatchSize);if(!this.writeKey)continue;let t=yY(e,this.serviceName,this.serviceVersion),n=`${this.baseUrl}traces`;this.debug&&console.log(`${this.prefix} sending traces batch`,{spans:e.length,endpoint:n});let o=Om(n,t,this.authHeaders(),{maxAttempts:3,debug:this.debug,sdkName:this.sdkName});this.inFlight.add(o);try{try{await o,this.debug&&console.log(`${this.prefix} sent ${e.length} spans`);}catch(r){let i=r instanceof Error?r.message:String(r);console.warn(`${this.prefix} failed to send ${e.length} spans: ${i}`);}}finally{this.inFlight.delete(o);}}}async shutdown(){this.timer&&(clearTimeout(this.timer),this.timer=void 0),await this.flush(),await Promise.all([...this.inFlight].map(e=>e.catch(()=>{})));}},sEe={};function bY(){return globalThis.RAINDROP_ASYNC_LOCAL_STORAGE}var aEe=class{constructor(){this._stack=[];}isEmpty(){return this._stack.length===0}getStore(){return this._stack[this._stack.length-1]}run(e,t){this._stack.push(e);try{return t()}finally{this._stack.pop();}}},lEe=class{},cEe=class extends lEe{constructor(){super(),this._fallback=null;let e=bY();if(e){this._storage=new e;return}this._fallback=new aEe,this._storage=this._fallback;}maybeAdoptAsyncLocalStorage(){if(!this._fallback||!this._fallback.isEmpty())return;let e=bY();e&&(this._storage=new e,this._fallback=null);}isReady(){return true}getParentSpanIds(){this.maybeAdoptAsyncLocalStorage();let e=this._storage.getStore();if(!(!e||e===sEe))return {traceIdB64:e.traceIdB64,spanIdB64:e.spanIdB64,eventId:e.eventId}}runInContext(e,t){return this.maybeAdoptAsyncLocalStorage(),this._storage.run(e,t)}getCurrentSpan(){return this.maybeAdoptAsyncLocalStorage(),this._storage.getStore()}},QN=null;function Ku(){return QN||(QN=globalThis.RAINDROP_CONTEXT_MANAGER?new globalThis.RAINDROP_CONTEXT_MANAGER:new cEe),QN}function LY(e,t){return Ku().runInContext(e,t)}async function Mm(){return Ku().getParentSpanIds()}async function Zb(e,t){let n=Ku(),o={traceIdB64:e.traceIdB64,spanIdB64:e.spanIdB64,eventId:e.eventId};return n.runInContext(o,t)}async function*dEe(e,t){let n;for(;;){let o=await LY(e,async()=>{try{return await t.next(n)}catch(r){return {value:void 0,done:true,error:r}}});if("error"in o&&o.error!==void 0)throw o.error;if(o.done)return o.value;n=yield o.value;}}globalThis.RAINDROP_ASYNC_LOCAL_STORAGE=AsyncLocalStorage;function Se(e){return typeof e=="object"&&e!==null}function li(e){return typeof e=="function"}function TY(e){var t;if(!e||typeof e!="object")return false;if(((t=e.constructor)==null?void 0:t.name)==="Module")return true;try{let o=Object.keys(e);if(o.length===0)return !1;let r=Object.getOwnPropertyDescriptor(e,o[0]);if(!r)return !1;let i="writable"in r?r.writable:!0;return !r.configurable&&!i}catch{return false}}function Jv(e){try{return JSON.stringify(e)}catch{return}}function dt(e){try{return JSON.stringify(e,(t,n)=>n instanceof Uint8Array?tL(n):n)}catch{return}}function oR(e){if(typeof e=="string"){let r=e.indexOf("/");return r>0&&r<e.length-1?{provider:e.slice(0,r),modelId:e.slice(r+1)}:{modelId:e}}if(!Se(e))return {};let t=typeof e.provider=="string"?e.provider:void 0,n;if(typeof e.modelId=="string"?n=e.modelId:typeof e.model=="string"&&(n=e.model),!n)return {provider:t};let o=n.indexOf("/");return !t&&o>0&&o<n.length-1?{provider:n.slice(0,o),modelId:n.slice(o+1)}:{provider:t,modelId:n}}function cL(e){if(!Se(e))return;let t=e.text;return typeof t=="string"?t:void 0}function uEe(e){var t;if(!Se(e))return;let n=e.object;if(n!==void 0)return (t=Jv(n))!=null?t:String(n)}function pEe(e){if(typeof e!="function")return false;let t=e.prototype;return Se(t)?typeof t.generate=="function"&&typeof t.stream=="function":false}function dL(e){if(!Se(e))return;let t=e.model;if(typeof t=="string"&&t.length)return t;let n=e.response;if(Se(n)){let o=n.modelId;if(typeof o=="string"&&o.length)return o}}function eT(e){if(Se(e)){if(typeof e.finishReason=="string")return e.finishReason;if(Se(e.finishReason)&&typeof e.finishReason.unified=="string")return e.finishReason.unified}}function AY(e){if(typeof Buffer<"u")return Buffer.from(e).toString("base64");let t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return typeof btoa=="function"?btoa(t):""}function Xv(e,t){if(e instanceof URL)return e.toString();if(typeof e=="string")return e.startsWith("data:")||e.startsWith("http://")||e.startsWith("https://")?e:`data:${t};base64,${e}`;if(e instanceof Uint8Array){let n=AY(e);return n?`data:${t};base64,${n}`:void 0}if(e instanceof ArrayBuffer){let n=AY(new Uint8Array(e));return n?`data:${t};base64,${n}`:void 0}}function kY(e){if(typeof e=="string")return e;if(e instanceof URL)return e.toString();if(e instanceof Uint8Array)return `[binary:${e.byteLength} bytes]`;if(e instanceof ArrayBuffer)return `[binary:${e.byteLength} bytes]`}function EY(e){if(typeof e.mediaType=="string")return e.mediaType;if(typeof e.mimeType=="string")return e.mimeType;let t=e.file;if(Se(t)){if(typeof t.mediaType=="string")return t.mediaType;if(typeof t.mimeType=="string")return t.mimeType}}function mEe(e){if(typeof e.filename=="string")return e.filename;if(typeof e.name=="string")return e.name;let t=e.file;if(Se(t)){if(typeof t.filename=="string")return t.filename;if(typeof t.name=="string")return t.name}}function hEe(e){if("data"in e)return e.data;let t=e.file;if(Se(t)){if("file_data"in t)return t.file_data;if("data"in t)return t.data}}function gEe(e,t){var n,o,r;let i=e.type;if(typeof i=="string"){if(i==="image"){let s=(n=EY(e))!=null?n:"image/png",a=Xv(e.image,s);return a?{type:"image",role:t,value:a}:void 0}if(i==="image_url"){let s=e.image_url,a=Se(s)?s.url:s,l=Xv(a,"image/png");return l?{type:"image",role:t,value:l}:void 0}if(i==="file"){let s=EY(e),a=hEe(e),l=s?.startsWith("image/")===true,c=l&&s?Xv(a,s):kY(a);if(!c)return;let d=(r=(o=mEe(e))!=null?o:s)!=null?r:"file";return {type:l?"image":"text",role:t,name:d,value:c}}}}function nL(e,t){if(!Array.isArray(e))return;let n=[];for(let o of e){if(!Se(o))continue;let r=gEe(o,t);r&&n.push(r);}return n.length?n:void 0}function fEe(e){var t,n,o,r;let i=typeof e.mediaType=="string"?e.mediaType:typeof e.mimeType=="string"?e.mimeType:void 0,s=(r=(o=(n=(t=e.base64Data)!=null?t:e.base64)!=null?n:e.uint8ArrayData)!=null?o:e.uint8Array)!=null?r:e.data,a=i?.startsWith("image/")===true,l=a&&i?Xv(s,i):kY(s);if(!l)return;let c=typeof e.filename=="string"?e.filename:typeof e.name=="string"?e.name:i??"file";return {type:a?"image":"text",role:"output",name:c,value:l}}async function yEe(e){let t=e;if(t&&(typeof t=="object"||typeof t=="function")&&typeof t.then=="function")try{t=await t;}catch{return}if(!Array.isArray(t))return;let n=[];for(let o of t){if(!Se(o))continue;let r=fEe(o);r&&n.push(r);}return n.length?n:void 0}function DY(e){if(typeof e=="string")return e;if(!Array.isArray(e))return;let t="";for(let n of e)!Se(n)||n.type!=="text"||typeof n.text!="string"||(t+=n.text);return t.length?t:void 0}function uL(e){let t=e.messages;if(Array.isArray(t))return t;let n=e.prompt;if(Array.isArray(n))return n}function FY(e){let t=uL(e);if(t)for(let n=t.length-1;n>=0;n--){let o=t[n];if(Se(o)&&o.role==="user")return o}}function pL(e){var t;if(Se(e))return nL((t=FY(e))==null?void 0:t.content,"input")}async function mL(e){if(!Se(e))return;let t=await yEe(e.files);if(t?.length)return t;let n=rR(e);for(let o=n.length-1;o>=0;o--){let r=n[o];if(!(!Se(r)||r.role!=="assistant"))return nL(r.content,"output")}return nL(e.content,"output")}function hL(e){var t,n;if(!Se(e))return;let o=(t=FY(e))==null?void 0:t.content;if(o===void 0)return;let r=DY(o);return r!==void 0?r:(n=dt(o))!=null?n:String(o)}function gL(e){var t;if(!Se(e))return;let n=e.prompt;if(typeof n=="string")return n;let o=uL(e);if(Array.isArray(o)&&o.length>0){let i=o[o.length-1];if(Se(i)){let s=i.content,a=DY(s);if(a!==void 0)return a;let l=Jv(s);if(l)return l}return (t=Jv(o))!=null?t:void 0}let r=e.input;return typeof r=="string"?r:Jv(e)}function fL(e){if(!Se(e))return [];let t=[];typeof e.system=="string"&&e.system&&t.push({role:"system",content:e.system});let n=uL(e);if(Array.isArray(n)){for(let o of n)Se(o)&&typeof o.role=="string"&&t.push(o);return t}return typeof e.prompt=="string"&&e.prompt&&t.push({role:"user",content:e.prompt}),t}function rR(e){if(!Se(e))return [];let t=e.response;if(Se(t)&&Array.isArray(t.messages))return t.messages.filter(o=>Se(o)&&typeof o.role=="string"&&"content"in o).map(o=>o);let n=e.steps;if(Array.isArray(n)&&n.length>0){let o=n[n.length-1];if(Se(o)&&Se(o.response)){let r=o.response.messages;if(Array.isArray(r))return r.filter(i=>Se(i)&&typeof i.role=="string"&&"content"in i).map(i=>i)}}return []}function Zv(e){if(typeof e.toolCallId=="string"&&e.toolCallId.length>0)return `id:${e.toolCallId}`;if(typeof e.toolName=="string"&&e.toolName.length>0){let t=dt(e.input);return t!==void 0?`name:${e.toolName}|input:${t}`:`name:${e.toolName}`}}function SEe(e,t){return e.isError===true||e.type==="tool-error"?true:Se(t)&&typeof t.type=="string"?t.type.startsWith("error")||t.type==="execution-denied":false}function bEe(e){if(typeof e=="string"&&e.length>0)return e;if(Se(e)){if(typeof e.value=="string"&&e.value.length>0)return e.value;if(typeof e.reason=="string"&&e.reason.length>0)return e.reason;if(typeof e.message=="string"&&e.message.length>0)return e.message}return dt(e)}function TEe(e){if(!Se(e))return [];let t=e.content;return Array.isArray(t)?t.filter(Se):Se(t)?[t]:[]}function AEe(e){return "input"in e?e.input:"args"in e?e.args:void 0}function yL(e){let t=e.toolCallId;return typeof t=="string"&&t.length>0?t:void 0}function EEe(e){return "output"in e?e.output:"result"in e?e.result:e.error}function CEe(e,t,n){var o;if(!t)return;let r=(o=e.get(t))!=null?o:[];r.includes(n)||(r.push(n),e.set(t,r));}function vEe(e,t){if(!t)return;let n=e.get(t);if(!n||n.length===0)return;let o=n.shift();if(o!==void 0)return n.length===0&&e.delete(t),o}function REe(e){var t,n,o,r;let{spans:i,pendingKeysByToolName:s,part:a}=e,l=yL(a),c=typeof a.toolName=="string"?a.toolName:void 0,d=AEe(a),u=Zv({toolCallId:l,toolName:c,input:d});if(!u)return;let p=l==null?Zv({toolCallId:void 0,toolName:c,input:void 0}):void 0,m=p&&p!==u?i.get(p):void 0,h=(t=i.get(u))!=null?t:m;i.set(u,{key:u,toolCallId:(n=h?.toolCallId)!=null?n:l,toolName:(o=h?.toolName)!=null?o:c,input:(r=h?.input)!=null?r:d,result:h?.result,status:h?.status,errorMessage:h?.errorMessage}),p&&p!==u&&i.delete(p),!l&&h?.result===void 0&&CEe(s,c,u);}function wEe(e){var t,n,o;let{spans:r,pendingKeysByToolName:i,part:s}=e,a=yL(s),l=typeof s.toolName=="string"?s.toolName:void 0,c=EEe(s),d=Zv({toolCallId:a,toolName:l,input:void 0}),u=a!=null?d:(t=vEe(i,l))!=null?t:d;if(!u)return;let p=r.get(u),m=SEe(s,c);r.set(u,{key:u,toolCallId:(n=p?.toolCallId)!=null?n:a,toolName:(o=p?.toolName)!=null?o:l,input:p?.input,result:c,status:m?"ERROR":"OK",errorMessage:m?bEe(c):void 0});}function BY(e){let t=new Map,n=new Map;for(let o of e)for(let r of TEe(o)){if(r.type==="tool-call"){REe({spans:t,pendingKeysByToolName:n,part:r});continue}(r.type==="tool-result"||r.type==="tool-error")&&wEe({spans:t,pendingKeysByToolName:n,part:r});}return [...t.values()]}function IEe(e){if(!Array.isArray(e))return;let t="";for(let n of e)Se(n)&&n.type==="text"&&typeof n.text=="string"&&(t+=n.text);return t.length?t:void 0}function xEe(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(!Se(n)||n.type!=="tool-call")continue;let o=yL(n),r=typeof n.toolName=="string"?n.toolName:void 0;(o||r)&&t.push({toolCallId:o,toolName:r,input:n.input});}return t.length?t:void 0}function nf(e){if(!Se(e))return;let t=e.experimental_telemetry;if(Se(t))return {functionId:typeof t.functionId=="string"?t.functionId:void 0,isEnabled:typeof t.isEnabled=="boolean"?t.isEnabled:void 0,recordInputs:typeof t.recordInputs=="boolean"?t.recordInputs:void 0,recordOutputs:typeof t.recordOutputs=="boolean"?t.recordOutputs:void 0,metadata:Se(t.metadata)?t.metadata:void 0}}function Ea(e,t){return {operationName:`${e}${t?` ${t}`:""}`,resourceName:t}}function UY(e,t){if(t==null)return;if(typeof t=="string")return Y(e,t);if(typeof t=="number")return Number.isInteger(t)?et(e,t):ef(e,t);if(typeof t=="boolean")return WAe(e,t);if(Array.isArray(t)&&t.every(o=>typeof o=="string"))return Id(e,t);let n=dt(t);return n?Y(e,n):void 0}function iR(e){return e?Object.entries(e).filter(([t])=>!t.startsWith("raindrop.internal.")).map(([t,n])=>UY(`ai.telemetry.metadata.${t==="raindrop.userId"?"raindrop.ai.userId":t}`,n)):[]}function SL(e){return Se(e)?Object.entries(e).filter(([,t])=>typeof t=="string").map(([t,n])=>Y(`ai.request.headers.${t}`,n)):[]}function bL(e){if(!Se(e))return [];let t=[],n=["maxRetries","timeout","maxOutputTokens","temperature","topP","topK","presencePenalty","frequencyPenalty","seed","stopSequences"];for(let o of n){if(!(o in e))continue;let r=e[o];o==="stopSequences"&&Array.isArray(r)&&r.every(i=>typeof i=="string")?t.push(Id(`ai.settings.${o}`,r)):o==="timeout"&&typeof r=="number"?t.push(et(`ai.settings.${o}`,r)):t.push(UY(`ai.settings.${o}`,r));}return t}function HY(e){return Se(e)?[ef("gen_ai.request.frequency_penalty",typeof e.frequencyPenalty=="number"?e.frequencyPenalty:void 0),et("gen_ai.request.max_tokens",typeof e.maxOutputTokens=="number"?e.maxOutputTokens:void 0),ef("gen_ai.request.presence_penalty",typeof e.presencePenalty=="number"?e.presencePenalty:void 0),...Array.isArray(e.stopSequences)&&e.stopSequences.every(t=>typeof t=="string")?[Id("gen_ai.request.stop_sequences",e.stopSequences)]:[],ef("gen_ai.request.temperature",typeof e.temperature=="number"?e.temperature:void 0),et("gen_ai.request.top_k",typeof e.topK=="number"?e.topK:void 0),ef("gen_ai.request.top_p",typeof e.topP=="number"?e.topP:void 0)]:[]}function GY(e){if(!Se(e)||!Se(e.providerOptions))return;let t=dt(e.providerOptions);return t?Y("ai.request.providerOptions",t):void 0}var _Ee=class{constructor(){this._stack=[];}getStore(){return this._stack[this._stack.length-1]}run(e,t){this._stack.push(e);try{return t()}finally{this._stack.pop();}}},Wv=null;function jY(){if(Wv)return Wv;let e=globalThis.RAINDROP_ASYNC_LOCAL_STORAGE;return Wv=e?new e:new _Ee,Wv}function TL(){return jY().getStore()}function oL(e,t){return jY().run(e,t)}function $Y(e){var t;if(e.length===0)return;let n=e[0];if(!Se(n))return;let o=Se(n.metadata)?n.metadata:void 0,r=Se(n.telemetry)?n.telemetry.metadata:void 0,i=Se(r)?r:void 0,s=nf(n),a=s?.metadata&&typeof s.metadata=="object"?s.metadata:void 0,l=(t=o??i)!=null?t:a;if(!l)return;let c={rawMetadata:l},d=l["raindrop.userId"];typeof d=="string"&&d&&(c.userId=d);let u=l["raindrop.eventId"];typeof u=="string"&&u&&(c.eventId=u);let p=l["raindrop.internal.eventIdGenerated"];(p===true||p==="true"||p==="1")&&(c.eventIdGenerated=true);let m=l["raindrop.convoId"];typeof m=="string"&&m&&(c.convoId=m);let h=l["raindrop.eventName"];typeof h=="string"&&h&&(c.eventName=h);let g=l["raindrop.properties"];if(typeof g=="string")try{let f=JSON.parse(g);f&&typeof f=="object"&&(c.properties=f);}catch{}else g&&typeof g=="object"&&(c.properties=g);return c}var PEe=class{constructor(){this._stack=[];}getStore(){return this._stack[this._stack.length-1]}run(e,t){this._stack.push(e);try{return t()}finally{this._stack.pop();}}},qv=null;function AL(){if(qv)return qv;let e=globalThis.RAINDROP_ASYNC_LOCAL_STORAGE;return qv=e?new e:new PEe,qv}function rL(){return AL().getStore()}function iL(e){var t;let n=AL();(t=n.enterWith)==null||t.call(n,e);}function VY(){var e;let t=AL();(e=t.enterWith)==null||e.call(t,void 0);}var EL=class{constructor(e){this.callStates=new Map,this.priorParentContexts=new Map,this.onStart=t=>{var n,o,r,i,s;if(t.isEnabled===false)return;let a=t.operationId==="ai.embed"||t.operationId==="ai.embedMany",l=t.recordInputs!==false,c=t.recordOutputs!==false,d=t.functionId,u=t.metadata,p=TL(),m=u??p?.rawMetadata,h=this.extractRaindropMetadata(m),g=Ku().getParentSpanIds(),f=m?.["raindrop.internal.eventIdGenerated"]==="true"||m?.["raindrop.internal.eventIdGenerated"]===true||p?.eventIdGenerated===true,y=h.eventId&&!f?h.eventId:void 0,S=(i=(r=(o=y??((n=this.defaultContext)==null?void 0:n.eventId))!=null?o:g?.eventId)!=null?r:h.eventId)!=null?i:qu(),b=g&&g.eventId===S?{traceIdB64:g.traceIdB64,spanIdB64:g.spanIdB64}:void 0,{operationName:E,resourceName:C}=Ea(t.operationId,d),w=!a&&this.subagentWrapping?rL():void 0,I=!a&&this.subagentWrapping&&w===void 0&&typeof m?.["ash.subagent.name"]=="string"?m["ash.subagent.name"]:void 0,x=(s=w?.toolName)!=null?s:I,v,P;if(x&&this.sendTraces){let B=w?[Y("raindrop.parent.callId",w.parentCallId),Y("raindrop.parent.toolCallId",w.toolCallId),Y("raindrop.parent.toolName",w.toolName)]:[];v=this.traceShipper.startSpan({name:x,parent:b,eventId:S,operationId:"ai.toolCall",attributes:[Y("operation.name","ai.toolCall"),Y("resource.name",x),Y("raindrop.span.kind","tool_call"),Y("ai.toolCall.name",x),Y("raindrop.subagent.name",x),Y("raindrop.agent.role","subagent"),...B]});let D=this.spanParentRef(v),V=this.traceShipper.startSpan({name:"agent.subagent",parent:D,eventId:S,operationId:"agent.subagent",attributes:[Y("operation.name","agent.subagent"),Y("raindrop.span.kind","llm_call"),Y("raindrop.subagent.name",x)]});this.traceShipper.endSpan(V),P=D;}let _;if(this.sendTraces){let B=!a&&l?[Y("ai.prompt",dt({system:t.system,prompt:t.prompt,messages:t.messages}))]:[],D=a&&l?t.operationId==="ai.embedMany"?[Y("ai.values",dt(t.value))]:[Y("ai.value",dt(t.value))]:[];_=this.traceShipper.startSpan({name:t.operationId,parent:P??b,eventId:S,operationId:t.operationId,attributes:[Y("operation.name",E),Y("resource.name",C),Y("ai.telemetry.functionId",d),Y("ai.model.provider",t.provider),Y("ai.model.id",t.modelId),...iR(m?Object.fromEntries(Object.entries(m).filter(([V])=>V!=="raindrop.eventId"&&V!=="raindrop.internal.eventIdGenerated")):void 0),...B,...D]});}this.callStates.set(t.callId,{operationId:t.operationId,eventId:S,rootSpan:_,rootParent:_?this.spanParentRef(_):P??b,stepSpan:void 0,stepParent:void 0,toolSpans:new Map,embedSpans:new Map,parentContextToolCallIds:new Set,recordInputs:l,recordOutputs:c,functionId:d,metadata:m,accumulatedText:"",inputText:a?void 0:this.extractInputText(t),toolCallCount:0,subagentName:x,subagentToolCallSpan:v});},this.onStepStart=t=>{let n=this.getState(t.callId);if(!n?.rootSpan||!n.rootParent)return;let r=n.operationId==="ai.streamText"||n.operationId==="ai.streamObject"?`${n.operationId}.doStream`:`${n.operationId}.doGenerate`,{operationName:i,resourceName:s}=Ea(r,n.functionId),a=[];n.recordInputs&&(t.promptMessages&&a.push(Y("ai.prompt.messages",dt(t.promptMessages))),t.stepTools&&a.push(Id("ai.prompt.tools",t.stepTools.map(c=>JSON.stringify(c)))),t.stepToolChoice!=null&&a.push(Y("ai.prompt.toolChoice",JSON.stringify(t.stepToolChoice))));let l=this.traceShipper.startSpan({name:r,parent:n.rootParent,eventId:n.eventId,operationId:r,attributes:[Y("operation.name",i),Y("resource.name",s),Y("ai.telemetry.functionId",n.functionId),Y("ai.model.provider",t.provider),Y("ai.model.id",t.modelId),Y("gen_ai.system",t.provider),Y("gen_ai.request.model",t.modelId),...a]});n.stepSpan=l,n.stepParent=this.spanParentRef(l);},this.onToolExecutionStart=t=>this.toolExecutionStart(t),this.onToolExecutionEnd=t=>this.toolExecutionEnd(t),this.onToolCallStart=t=>this.toolExecutionStart(t),this.onToolCallFinish=t=>this.toolExecutionEnd(t),this.onLanguageModelCallStart=t=>{},this.onLanguageModelCallEnd=t=>{},this.onChunk=t=>{var n,o,r,i,s;let a=(o=t.callId)!=null?o:(n=t.chunk)==null?void 0:n.callId;if(!a)return;let l=this.getState(a);if(!l)return;let c=t.chunk;if(!(!c||typeof c!="object")){if(c.type==="text-delta"){let d=(r=c.textDelta)!=null?r:c.delta;typeof d=="string"&&(l.accumulatedText+=d,this.emitLive(l,"text_delta",d));}else if(c.type==="reasoning"||c.type==="reasoning-delta"){let d=(s=(i=c.textDelta)!=null?i:c.text)!=null?s:c.delta;typeof d=="string"&&this.emitLive(l,"reasoning_delta",d);}}},this.onStepFinish=t=>{var n,o,r,i,s,a,l,c,d;let u=this.getState(t.callId);if(!u?.stepSpan)return;let p=[];if(u.recordOutputs&&(p.push(Y("ai.response.finishReason",t.finishReason),Y("ai.response.text",(n=t.text)!=null?n:void 0),Y("ai.response.id",(o=t.response)==null?void 0:o.id),Y("ai.response.model",(r=t.response)==null?void 0:r.modelId),Y("ai.response.timestamp",((i=t.response)==null?void 0:i.timestamp)instanceof Date?t.response.timestamp.toISOString():(s=t.response)==null?void 0:s.timestamp),Y("ai.response.providerMetadata",t.providerMetadata?dt(t.providerMetadata):void 0)),((a=t.toolCalls)==null?void 0:a.length)>0&&p.push(Y("ai.response.toolCalls",JSON.stringify(t.toolCalls.map(h=>({toolCallId:h.toolCallId,toolName:h.toolName,input:h.input}))))),((l=t.reasoning)==null?void 0:l.length)>0)){let h=t.reasoning.filter(g=>"text"in g).map(g=>g.text).join(`
|
|
171
|
+
`)),i(" ",n(u));}}setMinLevel(t){typeof t=="string"?this.minLogLevel=QS[t]:this.minLogLevel=t;}setOutputStream(t){this.forcedStream=t;}log(...t){this.logWithLevel(30,al.reset,...t);}info(...t){this.logWithLevel(30,al.white,...t);}debug(...t){this.logWithLevel(20,al.dim,...t);}warn(...t){this.logWithLevel(40,al.yellow,...t);}error(...t){this.logWithLevel(50,al.red,...t);}success(...t){this.logWithLevel(30,al.green,...t);}dimmed(...t){this.logWithLevel(30,al.dim,...t);}underline(...t){this.logWithLevel(30,al.underline,...t);}bold(...t){this.logWithLevel(30,al.bold,...t);}grey(...t){this.logWithLevel(30,al.grey,...t);}child(t){let n=new e(this.minLogLevel,{...this.logBindings,...t});return n.forcedStream=this.forcedStream,n}async flush(){}bindings(){return this.logBindings}},R=aM._internalSingleton(),Vr={info:()=>{},error:()=>{},debug:()=>{},warn:()=>{},child:()=>Vr,flush:async()=>{},bindings:()=>({})},NC={},cM=({logger:e,logKey:t,maxCount:n,intervalMs:o},r,i,...s)=>{let a=NC[t];a?clearTimeout(a.timer):(a={count:0,totalCount:0},NC[t]=a),a.totalCount++,a.count<n&&(a.count++,e.debug(r,i,...s)),a.timer=setTimeout(()=>{let l=NC[t];l?.totalCount!==l?.count&&e.debug({logKey:t,totalCount:l?.totalCount,count:l?.count},`Debug logs were rate-limited for ${t}`),delete NC[t];},o);};var nV=1e4,oV=1,Eg=il.extend({browserType:z.enum(ac).optional(),slowMoMs:z.number().optional().refine(e=>e===void 0||e<=nV&&e>=-1,{message:`Slow motion must be between 0 and ${nV} milliseconds`}),basicAuthorization:z.object({username:z.string().optional(),password:z.string().optional()}).optional(),geolocation:z.object({latitude:z.number().refine(e=>e>=-90&&e<=90,{message:"Latitude must be between -90 and 90 degrees"}),longitude:z.number().refine(e=>e>=-180&&e<=180,{message:"Longitude must be between -180 and 180 degrees"})}).optional(),disableJavaScript:z.boolean().optional(),locale:z.string().optional(),timezone:z.enum(AC).optional(),colorScheme:z.enum(["light","dark"]).optional()}),rV=["extraHeaders","basicAuthorization","localChromeExtensionPaths","proxy"],dM=z.object({useMemory:z.boolean().optional(),failureRecovery:z.boolean().optional().describe("undefined means inherit org settings")}),uM=dM.extend({disableAICaching:z.boolean().optional(),failureRecoveryInstructions:z.string().optional()}),fge=z.object({viewport:fd.optional()}),Ns=fge.extend(uM.shape).extend(Eg.shape),LC=z.object({cron:z.string().refine(e=>isValidCron(e),{error:"Invalid cron expression."}).default("0 0 */1 * *"),enabled:z.boolean().default(false),env:z.string().optional(),timeZone:z.string().default("America/Los_Angeles"),jobKey:z.string().optional()}),kC=z.object({onSuccess:z.boolean().default(false),failureMessage:z.string().optional(),onFailure:z.boolean().default(true),successMessage:z.string().optional()}),yge=z.object({name:z.string(),required:z.boolean().optional(),defaultValue:z.string().describe("this is not optional because we need a value when the editor is first loaded")}),iV=yge.array(),Sge=z.object({name:z.string(),value:z.string()}),DC=Sge.array(),sV=z.object({name:z.string(),default:z.boolean().optional(),fixtures:L$.array().optional()});var ga=dM.extend({agentConfig:z.record(z.string(),z.string()).optional(),aiFailureAnalysis:z.boolean().optional(),classification:$G.optional(),triage:jG.optional(),healing:HE.optional(),explore:jE.optional(),select:V$.optional()}),bge=z.object({cliOnly:z.boolean().optional(),neverShowUsageBanner:z.boolean().optional(),hideInternalTraceInfo:z.boolean().optional(),bypassUsageLimits:z.boolean().optional()}),ZS=z.object({fakerConstantSeed:z.boolean().optional(),isolateCachesByEnvironment:z.boolean().optional()}),Tge=z.enum(["flaky_tests","low_test_coverage","frequent_bugs","fix_flaky_tests","migrate_tests","increase_test_coverage","catch_more_bugs"]),Age=z.enum(["ios","android","web"]),Ege=z.enum(["selenium","playwright","cypress","puppeteer","maestro","appium","detox","manual_qa","nothing_yet","other"]),Cge=z.enum(["advertisement","ai_search","google_search","hacker_news","linkedin","reddit","referral_from_customer","twitter_x","word_of_mouth","youtube","other"]),vge=z.object({helpIntents:z.array(Tge).optional(),helpIntentOtherText:z.string().optional(),deviceTypeIntent:Age.optional(),currentTestingTool:Ege.optional(),heardAboutSource:Cge.optional()}),Rge=z.object({discovery:vge.optional(),needsToCompleteOnboarding:z.boolean().optional(),wizardCompletedAt:z.iso.datetime().optional()}),Cg=z.object({ai:ga.optional(),githubAppInstallationId:z.number().nullish(),githubAppSummaryMessageEnabled:z.boolean().nullish(),githubReleaseAppInstallationId:z.number().nullish(),gitlabAppAccessToken:z.string().nullish(),gitlabAppBaseUrl:z.string().nullish(),browser:YO.optional(),internal:bge.optional(),advanced:ZS.optional(),onboarding:Rge.optional()});function aV(e){try{return Cg.parse(e)}catch{return R.warn("Cloud settings contain values this version of the CLI does not support. Please upgrade. Falling back to defaults."),Cg.parse({})}}z.object({globalOverrides:z.record(z.string(),z.string()).optional(),agentConfig:z.record(z.string(),z.string()).optional()});z.record(z.string(),z.string()).nullish();var cc=(n=>(n.CANNOT_FIX_TEST="CANNOT_FIX_TEST",n.FIXED="FIXED",n))(cc||{}),lV=z.object({index:z.int().nonnegative(),section:GO,step:Lt}),wge=z.object({additions:lV.array(),deletions:lV.array()}),eb=z.object({subAgentStatus:z.enum(cc).default("CANNOT_FIX_TEST"),rootCause:z.string(),solution:z.string(),verificationNotes:z.string().optional().default(""),diffs:wge.optional(),pullRequestUrl:z.string().optional(),branchUrl:z.string().optional()}),cV=eb.optional().catch(void 0),dV=z.object({subAgentStatus:z.literal("FIXED").default("FIXED"),rootCause:z.string(),solution:z.string(),verificationNotes:z.string().optional().default(""),gitPatch:z.string().min(1)});var Ls={WEBHOOK:"WEBHOOK",CRON:"CRON",MANUAL:"MANUAL",CLI:"CLI"},ht=(a=>(a.PENDING="PENDING",a.RUNNING="RUNNING",a.PASSED="PASSED",a.FAILED="FAILED",a.CANCELLED="CANCELLED",a.RETRYING="RETRYING",a.WAITING_FOR_USER="WAITING_FOR_USER",a))(ht||{});var tb=(r=>(r.NOT_ATTEMPTED="NOT_ATTEMPTED",r.PERM_HEAL_SUCCEEDED="PERM_HEAL_SUCCEEDED",r.PERM_HEAL_FAILED="PERM_HEAL_FAILED",r.PERM_HEAL_ON_SUCCESS_FAILED="PERM_HEAL_ON_SUCCESS_FAILED",r))(tb||{});var nb=z.enum(tb).default("NOT_ATTEMPTED"),FC=(n=>(n.BEFORE_ALL="BEFORE_ALL",n.AFTER_ALL="AFTER_ALL",n))(FC||{});var Ige=z.object({attempts:z.int().nonnegative()}),Eo=z.string().pipe(z.coerce.date()).or(z.date()),ss=z.object({id:z.string(),runKey:z.string(),organizationId:z.string(),executionType:Mu.optional().default("WEB"),createdAt:Eo,createdBy:z.string(),flake:z.boolean().nullish(),scheduledAt:Eo.or(z.null()),startedAt:Eo.or(z.null()),updatedAt:Eo.nullish(),finishedAt:Eo.or(z.null()),resolvedBaseUrl:z.string().nullish(),environmentName:z.string().nullish(),gitBranchName:z.string().nullish(),gitMainBranch:z.string().nullish(),githubRepository:z.string().nullish(),gitlabProjectPath:z.string().nullish(),labels:z.array(z.string()).optional(),gitOriginUrl:z.string().nullish(),gitCommitSha:z.string().nullish(),gitCommitShaShort:z.string().nullish(),gitCommitAuthorName:z.string().nullish(),gitCommitTimestamp:Eo.nullish(),gitCommitMessage:z.string().nullish(),schemaVersion:z.string().nullish(),cliVersion:z.string().nullish(),section:z.enum(FC).nullish(),status:z.enum(ht),healStatus:nb,healDetails:cV.nullish(),trigger:z.enum(Ls),attempts:z.number(),runAttempts:z.array(z.object({id:z.string(),status:z.enum(ht),startedAt:Eo.or(z.null()),finishedAt:Eo.or(z.null())})).optional(),videos:z.array(z.string()).optional(),failureReason:z.string().nullish(),failureDetails:$j.nullish(),failureRecoveryDetails:Ige.nullish(),pipelineId:z.string().nullish(),resolvedInputs:z.record(z.string(),z.string()).nullish(),quarantined:z.boolean().nullish().default(false),quarantinedReason:z.string().nullish(),localTestId:z.string().nullish(),testId:z.string().nullish(),testName:z.string().nullish(),description:z.string().nullish(),directory:z.string().nullish(),test:z.object({name:z.string(),id:z.string()}).nullish().default(null),suiteId:z.string().nullish(),aiSettings:ga.nullish(),stepsSnapshot:z.array(z.record(z.string(),z.unknown().optional())).nullish(),beforeStepsSnapshot:z.array(z.record(z.string(),z.unknown().optional())).nullish(),afterStepsSnapshot:z.array(z.record(z.string(),z.unknown().optional())).nullish()}),xge={id:true,status:true,healStatus:true,healDetails:true,testName:true,localTestId:true,testId:true,test:{select:{name:true,id:true}},finishedAt:true,failureReason:true,failureDetails:true},BC=ss.pick({...xge,test:true}),uV=ss.omit({failureReason:true,failureDetails:true,test:true}),pM=ss.extend({stepsSnapshot:z.array(z.record(z.string(),z.unknown().optional())).nullish(),beforeStepsSnapshot:z.array(z.record(z.string(),z.unknown().optional())).nullish(),afterStepsSnapshot:z.array(z.record(z.string(),z.unknown().optional())).nullish(),resolvedInputs:z.record(z.string(),z.string()).nullish(),test:z.object({name:z.string(),id:z.string(),description:z.string().nullish(),baseUrl:z.string().nullish(),advanced:Ns.nullish()}).nullish()}).extend(eM.shape),pV=e=>e.includes("PASSED")&&e.includes("FAILED");var _ge=z.object({category:z.string(),reasoning:z.string(),citations:z.array($o).optional()}),Pge=z.object({testInputs:z.record(z.string(),z.string()).optional(),envName:z.string().optional(),urlOverride:z.string().optional()}),Oge=z.object({reason:z.string().optional(),message:z.string().optional()}),Mge=z.object({runId:z.string().optional(),testId:z.string(),testName:z.string(),filePath:z.string(),labels:z.array(z.string()).optional(),status:z.enum(ht),startedAt:z.string(),finishedAt:z.string(),durationMs:z.number(),attempts:z.number(),quarantined:z.boolean(),recovered:z.boolean(),parameters:Pge.optional(),failure:Oge.nullable(),classification:_ge.nullable()}),Nge=z.object({testId:z.string(),testName:z.string(),filePath:z.string(),labels:z.array(z.string()).optional(),quarantined:z.boolean()}),Lge=z.object({total:z.number(),executed:z.number(),skipped:z.number(),passed:z.number(),failed:z.number(),cancelled:z.number(),quarantined:z.number(),recovered:z.number()}),mV=z.object({version:z.literal(1),runGroup:z.object({startedAt:z.string(),finishedAt:z.string(),durationMs:z.number()}),summary:Lge,runs:z.array(Mge),skipped:z.array(Nge)});var hV=z.enum(["error","warning","passing"]);var gV=z.enum(["safe_to_merge","confirm_intended_change","investigate_regression","fix_test","resolve_infra","review_coverage"]);var fV=z.object({kind:gV,detail:z.string().min(1).max(280)}),Sm=z.object({riskLevel:z.string(),headline:z.string().min(1).max(200).describe("One-sentence summary of what happened in this run. Plain text, no markdown."),overview:z.string().min(1).max(280).optional().describe("One plain-text sentence giving the bottom line of the run. No markdown."),summaryMarkdown:z.string().min(1).max(4e3).describe("Markdown body. Several short paragraphs or a tight list. No emojis, no top-level heading. Max 5 sentences."),recommendedAction:fV.optional()}),yV=Sm.extend({riskLevel:hV.describe("Traffic-light validation signal. Use passing when validation is trustworthy with no real concern, warning when review or follow-up is needed, and error when the evidence shows the PR may hide or cause a product regression or another material concern that requires review."),headline:z.string().min(1).max(60).describe("Short, factual, title-case status of the validation signal, 6 words max, no punctuation. Describe the outcome only - never name the process or mode (no 'dry run', 'auto-heal', 'triage', 'pending'); those are shown separately. Examples: 'Review Required', 'Sign In Failing Across 5 Tests', 'All Tests Passed'."),overview:z.string().min(1).max(280).describe("The bottom-line verdict in one plain sentence: what the Momentic validation means for user-visible behavior and how trustworthy the signal is. This is the conclusion only, not the evidence. No markdown, headings, lists, or emojis. Do not prescribe a merge decision (use recommendedAction)."),summaryMarkdown:z.string().min(1).max(1e3).describe("The supporting evidence behind the overview, in GitHub-flavored markdown: a few short sentences or a tight list with the specific tests, errors, and signals that justify the verdict. Must carry information the overview does not - never paraphrase or restate the overview. Do not prescribe a merge decision or restate repair mechanics. Max 4 sentences. No emojis or top-level heading."),recommendedAction:fV.extend({kind:gV.describe("The kind of action a reviewer should take. safe_to_merge = signal is trustworthy and can be merged as-is; confirm_intended_change = a product or UI change was detected (or a heal relaxed an expectation) and a human must confirm it is intentional; investigate_regression = evidence points to a real product bug or regression to investigate before merging; fix_test = a broken or stale test or test setup needs repair; resolve_infra = an infrastructure or environment problem needs resolving and a re-run; review_coverage = quarantine has materially reduced coverage that should be reviewed."),detail:z.string().min(1).max(280).describe("One plain-text sentence naming the specific next step (e.g. 'Confirm the new success-indicator color is an intended design change'). No markdown.")}).describe("The single most important next step a reviewer should take. Omit entirely when the signal is clean and there is genuinely nothing to do.").optional()});var SV=z.object({id:z.string(),status:z.enum(ht),trigger:z.enum(Ls),createdAt:Eo,startedAt:Eo.nullish(),finishedAt:Eo.nullish(),gitCommitSha:z.string().nullish(),gitCommitShaShort:z.string().nullish(),gitCommitTimestamp:Eo.nullish(),gitBranchName:z.string().nullish(),gitOriginUrl:z.string().nullish(),gitCommitMessage:z.string().nullish(),gitCommitAuthorName:z.string().nullish(),githubRepository:z.string().nullish(),gitlabProjectPath:z.string().nullish(),pipelineId:z.string().nullish(),ciProvider:z.string().nullish(),cliVersion:z.string().nullish(),labels:z.string().array().optional(),healRiskSummary:Sm.optional(),localSuiteName:z.string().optional(),suite:z.object({id:z.string(),name:z.string()}).nullish(),runs:z.object({executionType:Mu,status:z.enum(ht),environmentName:z.string().nullish()}).array()}),bV=SV.pick({id:true,createdAt:true,startedAt:true,finishedAt:true,status:true,trigger:true,suite:true,localSuiteName:true}).extend({runs:BC.array()}),TV=SV.extend({runs:ss.array()});var Dge=z.object({type:z.literal("TARGETING"),name:z.string().optional().describe("Target name to disambiguate for steps with multiple targets"),elementLocationDecisions:_$.array(),pageState:z.string().optional(),targetSource:z.enum(Hl).optional(),targetUpdateTime:z.string().optional()}),Fge=z.object({type:z.literal("AI_LOCATION"),matched:z.boolean(),pageState:z.string().optional(),ragUsed:z.boolean().optional(),thoughts:z.string().optional()}),Bge=z.object({type:z.literal("ASSERTION"),relevantElementsSerialized:z.string().array().optional(),pageState:z.string().optional(),ragUsed:z.boolean().optional()}),AV=z.discriminatedUnion("type",[Dge,Fge,Bge]);var Uge=z.object({id:z.string(),name:z.string()});Uge.extend(z.object({createdAt:Eo,createdBy:z.string(),schedule:LC,notification:kC,environment:z.object({name:z.string()}).nullish(),beforeTests:z.object({id:z.string()}).array().nullish(),afterTests:z.object({id:z.string()}).array().nullish()}).shape);var EV=z.object({id:z.guid(),orgId:z.string(),createdAt:Eo,startedAt:Eo.or(z.null()),finishedAt:Eo.or(z.null()),status:z.enum(ht),trigger:z.enum(Ls),suite:z.object({id:z.string(),name:z.string()}).nullish(),runs:ss.array()});EV.pick({id:true,createdAt:true,startedAt:true,finishedAt:true,status:true,trigger:true,suite:true});var CV=EV.extend({runs:BC.array()});function vV({beforeStatus:e,mainStatus:t,afterStatus:n}){return e==="FAILED"?"FAILED":e==="CANCELLED"?"CANCELLED":n==="FAILED"?"FAILED":n==="CANCELLED"?"CANCELLED":t==="FAILED"?"FAILED":t==="CANCELLED"?"CANCELLED":"PASSED"}function UC(e,t){return e.some(r=>t?.onlyQuarantined?r.status==="FAILED":!r.quarantined&&r.status==="FAILED")?"FAILED":e.some(r=>r.status==="CANCELLED")?"CANCELLED":"PASSED"}function RV(e){switch(e){case "PASSED":return "SUCCESS";case "FAILED":return "FAILED";case "CANCELLED":return "CANCELLED";case "RUNNING":case "PENDING":case "RETRYING":case "WAITING_FOR_USER":return "RUNNING"}}var mM=z.object({content:z.string(),ids:z.string().array(),tokenLength:z.number()}),Hge=z.object({chunks:mM.array()});z.object({ids:z.string().array(),score:z.number(),tokenLength:z.number()});Hge.extend({description:z.string().describe("Input to pass to RAG engine"),tokenLimit:z.number()});var wV=z.object({ids:z.number().array()}),IV=z.object({indices:z.number().array()});var dc=(n=>(n.Interactive="interactive",n.Runner="runner",n))(dc||{}),Gge=z.enum(dc),hr=z.object({disableCache:z.boolean().optional(),useMemory:z.boolean().optional(),clientMode:Gge.optional(),loggerTags:z.record(z.string(),z.string()).optional(),langfuseSessionId:z.string().optional(),agentConfigVersion:z.string().optional(),cacheBustReason:z.enum(hS).optional()});hr.extend({chunks:mM.array(),description:z.string().describe("Input to pass to AI"),type:z.union([z.literal("locator"),z.literal("assertion"),z.literal("ai-action")]),softTokenLimit:z.number(),mediumTokenLimit:z.number().optional(),hardTokenLimit:z.number(),callId:z.string().optional()});var jge=z.object({screenshotBase64AfterCommand:z.string(),urlAfterCommand:z.string(),serializedCommand:z.string(),elementInteracted:z.string().optional(),thoughts:z.string().optional()}),xV=z.object({goal:z.string(),browserState:z.string(),screenshot:z.string(),source:x$.optional().catch(void 0),isTieBreakerCall:z.boolean().optional(),memory:z.discriminatedUnion("type",[tl,z.object({type:z.literal("RESOLVED_TRACES"),traces:z.unknown().optional().array()})]).optional(),firstPassModelResults:yC.array().optional(),knowledgeBaseSection:z.string().optional()}),_V=z.object({target:z.string().or(z.number()),browserState:z.string().optional(),screenshot:z.string().optional(),boundingBox:z.object({x:z.number(),y:z.number(),height:z.number(),width:z.number()}).optional()}),PV=z.object({goal:z.string(),browserState:z.string(),screenshot:z.string().optional(),returnSchema:z.string().optional()}),OV=z.object({goal:z.string(),emulatorState:z.string(),screenshot:z.string().optional(),returnSchema:z.string().optional()}),hM=z.union([z.literal("NEGATED_CHECK"),z.literal("CONDITIONAL_CHECK")]),MV=z.object({goal:z.string(),browserState:z.string(),screenshot:z.string(),url:z.string(),contextChoice:lm.optional(),memory:z.discriminatedUnion("type",[im,z.object({type:z.literal("RESOLVED_TRACES"),traces:z.unknown().optional().array()})]).optional(),source:hM.optional(),recoveryHint:z.string().optional(),knowledgeBaseSection:z.string().optional()}),NV=z.object({command:Ru}),gM=z.object({goal:z.string(),browserState:z.string(),startingScreenshot:z.string().optional(),screenshot:z.string(),url:z.string(),history:jge.array(),actionHint:z.string().optional(),lastError:z.string().optional()}),LV=z.object({results:wC.array(),errorMessage:z.string(),errorStack:z.string().optional()}),kV=z.object({results:wC.array(),goal:z.string(),errorMessage:z.string()}),DV=z.object({failedResults:wC.array(),nextStepsSerialized:z.string().array(),currentUrl:z.string(),currentPageState:z.string(),currentScreenshot:z.string(),customInstructions:z.string().optional(),testDescription:z.string().optional()});z.object({description:z.string(),type:z.union([z.literal("locator"),z.literal("assertion"),z.literal("ai-action")]),excerpt:z.string()});var FV=z.object({type:z.string(),browserContext:z.string(),currentStep:z.string(),screenshot:z.string()}),BV=z.object({description:z.string(),browserState:z.string().optional(),screenshot:z.string()}),$ge=z.enum(["locator","assertion"]);z.object({completionType:$ge,currentGoal:z.string(),pastGoal:z.string().optional(),currentScreenshot:z.string(),pastScreenshot:z.string(),pastResult:z.union([z.boolean(),z.number()])});z.object({goal:z.string()});var UV=z.object({keywords:z.array(z.string())});var HC=(i=>(i.LOCATOR="locator",i.ASSERTION="assertion",i.VISUAL_ASSERTION="visual-assertion",i.TEXT_EXTRACTION="text-extraction",i.FAILURE_RECOVERY="failure-recovery",i))(HC||{}),Vge=["locator","assertion","visual-assertion","text-extraction","failure-recovery"];z.enum(HC);var zge=new Set(Vge);function Wge(e){return zge.has(e)}var qge=z.enum(["v1","v2","v3","v4"]),Kge=z.string().regex(/^v\d+\.\d+$/).describe("pinned sub-version like v3.1");z.union([qge,Kge,z.string().describe("for people with special configurations")]);var Rg={locator:"v4.2",assertion:"v4.1","visual-assertion":"v4.0","text-extraction":"v3.0","failure-recovery":"v2.1"},HV={locator:{v4:["v4.2","v4.1","v4.0"],v3:["v3.3","v3.2","v3.1","v3.0"],v2:["v2.2","v2.1","v2.0"],v1:["v1.0"]},assertion:{v4:["v4.1","v4.0"],v3:["v3.2","v3.1","v3.0"],v2:["v2.3","v2.2","v2.1","v2.0"],v1:["v1.0"]},"visual-assertion":{v4:["v4.0"],v3:["v3.2","v3.1","v3.0"],v2:["v2.0"],v1:["v1.0"]},"text-extraction":{v3:["v3.0"],v2:["v2.0"],v1:["v1.0"]},"failure-recovery":{v2:["v2.1","v2.0"],v1:["v1.0"]}},GV=(s=>(s.ANDROID_LOCATOR="android-locator",s.IOS_LOCATOR="ios-locator",s.ANDROID_ASSERTION="android-assertion",s.IOS_ASSERTION="ios-assertion",s.ANDROID_TEXT_EXTRACTION="android-text-extraction",s.IOS_TEXT_EXTRACTION="ios-text-extraction",s))(GV||{});z.enum(GV);var Yge={locator:["v1"],assertion:["v1"],"visual-assertion":["v1"],"text-extraction":["v1"]};function Jge(e){let t=Yge[e];if(!t)return new Set;let n=HV[e],o=new Set;for(let r of t){o.add(r);for(let i of n[r]??[])o.add(i);}return o}function GC(e){for(let[t,n]of Object.entries(e)){if(!Wge(t))continue;let o=HV[t];if(!o)continue;let r=new Set;for(let[i,s]of Object.entries(o)){r.add(i);for(let a of s)r.add(a);}if(!r.has(n)){let i=[...r].sort();throw new te("UserConfigurationError",`Invalid agent config: "${n}" is not a valid version for "${t}". Valid versions: ${i.join(", ")}`)}if(Jge(t).has(n))throw new te("UserConfigurationError",`Agent config "${n}" for "${t}" is no longer supported because it relies on a legacy model. Upgrade to a newer version.`)}}var yd=O__default.object({id:O__default.guid(),envKey:O__default.string().optional(),skipped:O__default.boolean().optional(),retries:O__default.number().optional()});var Lu=(r=>(r.PRESET="MOBILE_PRESET_STEP",r.MODULE="MOBILE_MODULE_STEP",r.AI_ACTION="MOBILE_AI_ACTION_STEP",r.CONDITIONAL="MOBILE_CONDITIONAL_STEP",r))(Lu||{});var wg=yd.extend({type:O__default.literal("MOBILE_CONDITIONAL_STEP")});var si=z.object({id:z.string(),name:uC,baseUrl:pC,description:z.string().optional().nullish(),schemaVersion:z.string(),advanced:Ns,retries:z.number().optional().nullish(),envs:z.array(sV).nullish(),parameters:iV.nullish(),disabled:z.boolean().optional(),labels:z.array(z.string()).optional().catch([])}),jV=z.enum(["INHERIT","ENABLED","DISABLED"]);var Qge=Ns.extend({failureRecovery:jV.optional(),useMemory:jV.optional()});si.pick({name:true,description:true,baseUrl:true,retries:true,disabled:true,parameters:true}).extend({advanced:Qge});si.pick({name:true,description:true,baseUrl:true,retries:true,disabled:true,advanced:true,parameters:true});var Zge=z.object({labels:z.array(z.string()).optional(),outputs:DC.nullish()}),Zn=si.extend(Zge.shape),efe=z.object({createdAt:z.coerce.date(),updatedAt:z.coerce.date(),updatedBy:z.string().nullable(),schedule:LC,notification:kC,createdBy:z.string(),organizationId:z.string(),folderId:z.string().nullable().optional()}),tfe=si.extend(efe.shape);tfe.extend(Ql.shape);var fM=si.extend(Ql.shape);si.extend(dd.shape);var nfe="test",ofe="module",rfe="mobile-test",ife="mobile-module",sfe="test/v2",afe="module/v2",lfe="mobile-test/v2",cfe="mobile-module/v2";var ke=(l=>(l.TEST=`momentic/${nfe}`,l.MODULE=`momentic/${ofe}`,l.TEST_V2=`momentic/${sfe}`,l.MODULE_V2=`momentic/${afe}`,l.MOBILE_TEST=`momentic/${rfe}`,l.MOBILE_MODULE=`momentic/${ife}`,l.MOBILE_TEST_V2=`momentic/${lfe}`,l.MOBILE_MODULE_V2=`momentic/${cfe}`,l))(ke||{});si.merge(dd);var dfe=Xn.extend({steps:z.array(z.record(z.string(),z.unknown().optional())),schemaVersion:z.string()}),ib=dfe.extend({fileType:z.literal(ke.MODULE)});z.object({test:z.string().describe("YAML for the test, including metadata and steps"),modules:z.record(z.string(),z.string()).describe("Map of module name to YAML for the module")});function jC(e){if(e===void 0)return "__undefined__";if(e===null)return null;if(typeof e!="object")return e;if(Array.isArray(e))return e.map(jC);let t={};for(let[n,o]of Object.entries(e))t[n]=jC(o);return t}var ufe=/^[a-z0-9]+(?:-[a-z0-9]+){2,}$/,$V=36,vo=z.union([z.guid().max($V,"V2 IDs must be 36 characters or fewer"),z.string().max($V,"V2 IDs must be 36 characters or fewer").regex(ufe,"V2 IDs must be lowercase kebab-case with at least three words, e.g. silver-river-lantern")],{error:"ID must be a UUID or lowercase kebab-case with at least three words, e.g. silver-river-lantern (36 characters max)"});var $C=O.discriminatedUnion("type",[O.object({type:O.literal("SCREEN")}),O.object({type:O.literal("OPEN_APP")}),O.object({type:O.literal("OPEN_WEBVIEW")})]),Sd=O.object({type:O.literal("description"),description:O.string()}),SM=O.object({type:O.literal("CUSTOM_COORDINATES"),startX:O.number().describe("Starting X coordinate in pixels"),startY:O.number().describe("Starting Y coordinate in pixels"),deltaPixels:O.number().describe("Number of pixels to scroll in the specified direction")}),VC=O.discriminatedUnion("type",[...$C.options,O.object({type:O.literal("CUSTOM"),target:Sd}),SM]);function pfe(e){return e.toLowerCase().replaceAll("_"," ")}function bM(e){switch(e.type){case "CUSTOM":return e.target.description;case "CUSTOM_COORDINATES":return `custom coordinates (x: ${Math.round(e.startX)}, y: ${Math.round(e.startY)}, delta: ${Math.round(e.deltaPixels)}px)`;case "SCREEN":case "OPEN_APP":case "OPEN_WEBVIEW":return pfe(e.type);default:{throw new Error("Unreachable")}}}var mfe=O.object({type:O.literal("coordinates"),xPercent:O.number(),yPercent:O.number()}),hfe=O.object({type:O.literal("absolute_percent"),x:O.number(),y:O.number()}),Ig=O.discriminatedUnion("type",[Sd,mfe,hfe]);var gfe=O.object({x1:O.number(),y1:O.number(),x2:O.number(),y2:O.number(),tolerance:O.nativeEnum(os),preciseTolerance:O.boolean().optional()}),ffe=O.object({width:O.number(),height:O.number(),tolerance:O.nativeEnum(os),preciseTolerance:O.boolean().optional()}),TM=O.object({requiredText:O.string().optional(),requiredAttributes:O.record(O.string(),O.string()).optional(),requiredBounds:O.boolean().optional(),position:gfe.optional(),shape:ffe.optional()}),VV=O.object({xPath:O.string(),requirements:TM.optional()}),yfe=O.object({type:O.literal("CUSTOM"),target:Sd,cache:O.lazy(()=>zV).optional()}),Sfe=O.object({pixelDelta:O.number().describe("Number of pixels to scroll in the specified direction"),scrollableElement:O.union([$C,yfe,SM]),direction:O.enum(["up","down"])}),zV=O.object({type:O.literal("NATIVE"),bounds:O.number().array().optional(),resolvedDescription:O.string().optional(),xPath:O.string().optional(),elementOnlySerializedXml:O.string().optional(),scrollDetails:Sfe.optional(),requirements:TM.optional(),requiredRelatedElements:VV.array().optional(),memory:tl.optional()}),bfe=O.object({type:O.literal("WEBVIEW"),resolvedDescription:O.string().optional(),xPath:O.string().optional(),browserCache:Gl.optional(),memory:tl.optional()}),zC=O.union([zV,bfe]);var Tfe=O.object({left:O.number(),top:O.number(),right:O.number(),bottom:O.number()});O.object({newViewportBounds:Tfe});var Afe=O.object({type:O.literal("CUSTOM"),target:Sd,cache:O.lazy(()=>YV).optional()}),WV=O.object({pixelDelta:O.number().describe("Number of pixels to scroll in the specified direction"),scrollableElement:O.union([$C,Afe,SM]),direction:O.enum(["up","down"])}),qV=(n=>(n.Native="native",n.Appium="appium",n))(qV||{}),AM=O.tuple([O.number(),O.number(),O.number(),O.number()]),KV=VV.extend({bounds:AM.optional(),browserCache:Gl.optional()}),YV=O.object({type:O.literal("NATIVE"),bounds:AM.optional(),resolvedDescription:O.string().optional(),sourceTree:O.nativeEnum(qV).optional(),xPath:O.string().optional(),elementOnlySerializedXml:O.string().optional(),scrollDetails:WV.optional(),requirements:TM.optional(),requiredRelatedElements:KV.array().optional(),memory:tl.optional()}),Efe=O.object({type:O.literal("WEBVIEW"),bounds:AM.optional(),resolvedDescription:O.string().optional(),xPath:O.string().optional(),scrollDetails:WV.optional(),browserCache:Gl.optional(),requiredRelatedElements:KV.array().optional(),memory:tl.optional()}),WC=O.discriminatedUnion("type",[YV,Efe]);var zt=(P=>(P.AI_CHECK="AI_CHECK",P.AI_EXTRACT="AI_EXTRACT",P.TAP="TAP",P.TYPE="TYPE",P.PRESS="PRESS",P.PRESS_KEYBOARD="PRESS_KEYBOARD",P.OPEN_APP="OPEN_APP",P.KILL_APP="KILL_APP",P.OPEN_NOTIFICATION_DRAWER="OPEN_NOTIFICATION_DRAWER",P.SWIPE="SWIPE",P.SCROLL_TO="SCROLL_TO",P.SCREEN_CHECK="SCREEN_CHECK",P.ELEMENT_CHECK="ELEMENT_CHECK",P.VISUAL_DIFF="VISUAL_DIFF",P.DRAG_AND_DROP="DRAG_AND_DROP",P.JAVASCRIPT="JAVASCRIPT",P.REQUEST="REQUEST",P.WAIT="WAIT",P.ADD_FILE="ADD_FILE",P.INSTALL_APP="INSTALL_APP",P.UNINSTALL_APP="UNINSTALL_APP",P.TOGGLE_SETTINGS="TOGGLE_SETTINGS",P.ROTATE_ORIENTATION="ROTATE_ORIENTATION",P.ADB_COMMAND="ADB_COMMAND",P.APPIUM_EXECUTE="APPIUM_EXECUTE",P.STATE="STATE",P))(zt||{}),Je=O__default.object({id:O__default.guid(),disableCache:O__default.boolean().optional()}),xg=O__default.object({updatedAt:O__default.coerce.date().optional(),updatedAtLoggerTags:O__default.record(O__default.string(),O__default.string()).optional()}),ya=xg.extend({target:zC}),qC=xg.extend({fromTarget:zC,toTarget:zC}),uc=xg.extend({target:WC}),JV=xg.extend({fromTarget:WC,toTarget:WC}),bd=e=>{switch(e.type){case "description":return e.description;case "coordinates":return `${Math.round(e.xPercent*100)}%, ${Math.round(e.yPercent*100)}%`;case "absolute_percent":return `x: ${e.x}%, y: ${e.y}%`}};var XV=Je.extend({type:O__default.literal("ADB_COMMAND"),command:O__default.string(),jsonArgs:O__default.string().optional()});var Cfe=O__default.string().trim(),ZV=Je.extend({type:O__default.literal("INSTALL_APP"),uri:Cfe});var ez=Je.extend({type:O__default.literal("OPEN_NOTIFICATION_DRAWER")});var sb=(r=>(r.AIRPLANE_MODE="AIRPLANE_MODE",r.DATA="DATA",r.WIFI="WIFI",r.LOCATION="LOCATION",r))(sb||{}),nz=Je.extend({type:O__default.literal("TOGGLE_SETTINGS"),settingsType:O__default.nativeEnum(sb)});var rz=Je.extend({type:O__default.literal("UNINSTALL_APP"),packageName:O__default.string()});var KC=Je.extend({type:O__default.literal("APPIUM_EXECUTE"),command:O__default.string(),jsonArgs:O__default.string().optional()});var iz=Je.extend({type:O__default.literal("ADD_FILE"),file:O__default.string(),storageLocation:O__default.string()});var Td=Je.extend({type:O__default.literal("AI_CHECK"),assertion:O__default.string(),timeoutSecs:O__default.number().optional(),contextChoice:lm.optional(),cache:xg.extend({memory:im.optional()}).optional()});var sz=Je.extend({type:O__default.literal("AI_EXTRACT"),goal:O__default.string(),schema:O__default.string().optional()});var _g=Je.extend({type:O__default.literal("JAVASCRIPT"),code:O__default.string(),timeout:O__default.number().int().max(600).optional().describe("Max seconds for the code to complete")});var az=Je.extend({type:O__default.literal("KILL_APP")});var lb=(n=>(n.HOME="HOME",n.POWER="POWER",n))(lb||{}),YC=(s=>(s.BACK="BACK",s.APP_SWITCHER="APP_SWITCHER",s.SEARCH="SEARCH",s.VOLUME_UP="VOLUME_UP",s.VOLUME_DOWN="VOLUME_DOWN",s.VOLUME_MUTE="VOLUME_MUTE",s))(YC||{}),JC=Je.extend({type:O__default.literal("PRESS"),key:O__default.nativeEnum(lb),longPress:O__default.boolean().optional()}),lz=JC.extend({key:O__default.nativeEnum(YC).or(O__default.nativeEnum(lb))}),cz=JC;var dz=Je.extend({type:O__default.literal("REQUEST")}).merge(yS);var xM=(n=>(n.PORTRAIT="PORTRAIT",n.LANDSCAPE="LANDSCAPE",n))(xM||{}),pz=Je.extend({type:O__default.literal("ROTATE_ORIENTATION"),orientation:O__default.nativeEnum(xM)});var Ife=O__default.object({type:O__default.literal("CONTENT"),negated:O__default.boolean().optional(),value:O__default.string()}),Og=Je.extend({type:O__default.literal("SCREEN_CHECK"),assertion:Ife,timeout:O__default.number().int().min(0).max(Xh).optional().describe("max seconds to wait for the assertion to be true")});var mz=Je.extend({type:O__default.literal("STATE")});var hz=Je.extend({type:O__default.literal("VISUAL_DIFF"),path:O__default.string().describe("path to the golden screenshot to compare against"),threshold:O__default.number().min(0).max(1).optional().describe("max allowed fraction of differing pixels before the diff fails (default 0.1)")});O__default.object({created:O__default.boolean(),goldenPath:O__default.string(),threshold:O__default.number(),goldenScreenshotBase64:O__default.string().optional(),currentScreenshotBase64:O__default.string().optional(),diffScreenshotBase64:O__default.string().optional(),goldenScreenshotSnapshotId:O__default.string().optional(),currentScreenshotSnapshotId:O__default.string().optional(),diffScreenshotSnapshotId:O__default.string().optional(),diffPercent:O__default.number().optional(),pass:O__default.boolean().optional(),dimensionMismatch:O__default.boolean().optional()});var fz=Je.extend({type:O__default.literal("WAIT"),timeoutSecs:O__default.number()});var cb=O__default.discriminatedUnion("type",[mz,Td,sz,_g,fz,dz,pz,Og,hz,iz,az]);O__default.discriminatedUnion("type",[...cb.options,JC]);var PM=Je.extend({type:O__default.literal("DRAG_AND_DROP"),fromTarget:Sd,toTarget:Sd,hoverDuration:O__default.number().optional(),dragDuration:O__default.number().optional()}),db=PM.extend({cache:qC.optional()}),ub=PM.extend({cache:JV.optional()});var OM=Je.extend({type:O__default.literal("ELEMENT_CHECK"),target:Ig,assertion:WE,timeout:O__default.number().int().min(0).max(Xh).optional().describe("max seconds to wait for the assertion to be true")}),bm=OM.extend({cache:ya.optional()}),Tm=OM.extend({cache:uc.optional()});var pb=(n=>(n.ENTER="ENTER",n.BACKSPACE="BACKSPACE",n))(pb||{}),XC=(t=>(t.CLOSE_KEYBOARD="CLOSE_KEYBOARD",t))(XC||{}),bz={repeat:O__default.number().int().min(1).optional(),keyPressDelayMs:O__default.number().min(0).optional()},Tz=Je.extend({type:O__default.literal("PRESS_KEYBOARD"),key:O__default.nativeEnum(pb),...bz}),Az=Je.extend({type:O__default.literal("PRESS_KEYBOARD"),key:O__default.nativeEnum(XC).or(O__default.nativeEnum(pb)),...bz});var Ez=Je.extend({type:O__default.literal("OPEN_APP"),packageName:O__default.string(),activityName:O__default.string().optional(),intentExtras:O__default.string().optional()}),Cz=Je.extend({type:O__default.literal("OPEN_APP"),packageName:O__default.string(),intentExtras:O__default.string().optional()});var MM=Je.extend({type:O__default.literal("SCROLL_TO"),target:Sd,direction:O__default.enum(["down","up"]),scrollableElement:VC,scrollStepPercent:O__default.number().min(.1).max(1).optional().describe("How much of the container height to scroll at each step (0.1 to 1.0). Default is 0.9 (90%)."),maxScrollAttempts:O__default.number().int().min(1).max(50).optional().describe("Maximum number of scroll attempts before giving up. Default is 20.")}),mb=MM.extend({cache:ya.optional()}),hb=MM.extend({cache:uc.optional()});var NM=Je.extend({type:O__default.literal("SWIPE"),direction:O__default.enum(["up","down","left","right"]),scrollableElement:VC,viewportPercent:O__default.number().optional(),durationMs:O__default.number().optional(),relativePosition:VE.optional()}),gb=NM.extend({cache:ya.optional()}),fb=NM.extend({cache:uc.optional()});var LM=Je.extend({type:O__default.literal("TAP"),target:Ig,longPress:O__default.boolean().optional(),longPressDurationMs:O__default.number().optional(),iterations:O__default.number().optional(),tapDelayMs:O__default.number().optional(),relativePosition:VE.optional(),doubleTap:O__default.boolean().optional(),doubleTapDelayMs:O__default.number().optional()}),yb=LM.extend({cache:ya.optional()}),Sb=LM.extend({cache:uc.optional()});var bb=(r=>(r.AUTO="auto",r.PROGRAMMATIC="programmatic",r.LONG_PRESS="long-press",r.BACKSPACE="backspace",r))(bb||{});var kM=Je.extend({type:O__default.literal("TYPE"),target:Ig.optional(),keyPressDelayMs:O__default.number().optional(),text:O__default.string(),clearContent:O__default.boolean().optional(),forceClearContent:O__default.boolean().optional(),replaceStrategy:O__default.nativeEnum(bb).optional()});var Tb=kM.extend({cache:ya.optional()}),Ab=kM.extend({cache:uc.optional()});var Eb=O__default.discriminatedUnion("type",[...cb.options,yb,Tb,lz,Az,rz,ZV,XV,KC,db,ez,mb,gb,nz,bm,Ez]);var Cb=O__default.discriminatedUnion("type",[...cb.options,Sb,Ab,cz,Tz,Cz,fb,ub,hb,Tm,KC]);var wz=O__default.union([O__default.string(),O__default.record(O__default.string(),O__default.unknown().optional())]),ev=yd.extend({type:O__default.literal("MOBILE_PRESET_STEP"),keyPressDelayMs:O__default.number().optional()}),Du=ev.extend({command:Eb}),Fu=ev.extend({command:Cb}),Ng=O__default.object({moduleId:O__default.string(),inputs:O__default.record(O__default.string(),O__default.string()).optional()}),vb=yd.merge(Ng.extend({type:O__default.literal("MOBILE_MODULE_STEP")}));Ng.extend({steps:O__default.lazy(()=>pc.array())});Ng.extend({steps:O__default.lazy(()=>Ad.array())});var DM=(n=>(n.V2="2",n.V3="3",n))(DM||{});var FM=O__default.nativeEnum(DM),Mfe=Ul.extend({platform:O__default.literal("ANDROID"),resolvedGoal:O__default.string(),steps:O__default.lazy(()=>Du.array()),autoGeneratedPostcondition:O__default.string().optional()}),Nfe=Ul.extend({platform:O__default.literal("IOS"),resolvedGoal:O__default.string(),steps:O__default.lazy(()=>Fu.array()),autoGeneratedPostcondition:O__default.string().optional()}),BM=O__default.discriminatedUnion("platform",[Mfe,Nfe]),Bu=yd.extend({type:O__default.literal("MOBILE_AI_ACTION_STEP"),text:O__default.string(),version:FM.optional(),cache:BM.optional(),precondition:O__default.string().optional(),postcondition:O__default.string().optional()});var kfe=O__default.discriminatedUnion("type",[Td,Og,bm,_g]),UM=ev.extend({command:kfe}),Dfe=O__default.discriminatedUnion("type",[Td,Og,Tm,_g]),HM=ev.extend({command:Dfe}),Ffe=O__default.object({assertion:UM,steps:O__default.lazy(()=>pc.array())}),Bfe=O__default.object({assertion:HM,steps:O__default.lazy(()=>Ad.array())}),Ufe=wg.extend({blocks:O__default.lazy(()=>Ffe.array()),elseSteps:O__default.lazy(()=>pc.array()).optional()}),Hfe=wg.extend({blocks:O__default.lazy(()=>Bfe.array()),elseSteps:O__default.lazy(()=>Ad.array()).optional()}),pc=O__default.discriminatedUnion("type",[Du,vb,Bu,Ufe]),Ad=O__default.discriminatedUnion("type",[Fu,vb,Bu,Hfe]);O__default.union([pc.array(),Ad.array()]);var GM=O__default.object({parameterNames:O__default.string().array(),defaultParameters:O__default.record(O__default.string(),O__default.string()).optional(),parameterEnums:O__default.record(O__default.string(),O__default.string().array()).optional()}),tv=O__default.object({moduleId:vo,name:O__default.string(),description:O__default.string().nullish(),platform:O__default.nativeEnum(sl).optional().default("ANDROID"),parameters:GM.optional(),enabled:O__default.boolean().nullish(),schemaVersion:O__default.string()}),jM=tv.omit({name:true}),Gfe=jM.extend({steps:wz.array()});O__default.object({fileType:O__default.literal(ke.MOBILE_MODULE)}).merge(Gfe);var Iz=tv.omit({platform:true,schemaVersion:true});({ANDROID:Iz.extend({platform:O__default.literal("ANDROID"),steps:pc.array()}),IOS:Iz.extend({platform:O__default.literal("IOS"),steps:Ad.array()})});var Lg=(t=>(t.MODULE="RESOLVED_MOBILE_MODULE",t))(Lg||{}),xz=O__default.object({description:O__default.string().optional(),name:O__default.string().describe("name of the module"),parameters:GM.optional()}),_z=Ng.merge(xz).extend({platform:O__default.literal("ANDROID"),get steps(){return dl.array()}}),Pz=Ng.merge(xz).extend({platform:O__default.literal("IOS"),get steps(){return ul.array()}});O__default.discriminatedUnion("platform",[_z,Pz]);var $M=yd.merge(_z).extend({type:O__default.literal("RESOLVED_MOBILE_MODULE")}),VM=yd.merge(Pz).extend({type:O__default.literal("RESOLVED_MOBILE_MODULE")});O__default.discriminatedUnion("platform",[$M,VM]);var jfe=O__default.object({assertion:UM,get steps(){return dl.array()}}),zM=wg.extend({get blocks(){return jfe.array()},get elseSteps(){return dl.array().optional()}}),$fe=O__default.object({assertion:HM,get steps(){return ul.array()}}),WM=wg.extend({get blocks(){return $fe.array()},get elseSteps(){return ul.array().optional()}}),dl=O__default.discriminatedUnion("type",[$M,Du,Bu,zM]),ul=O__default.discriminatedUnion("type",[VM,Fu,Bu,WM]);function Oz(e){return Object.values(Lg).includes(e)||Object.values(Lu).includes(e)}var Mz=(i=>(i.PRECONDITION="PRECONDITION",i.REPLAY="REPLAY",i.GENERATE="GENERATE",i.AUTOHEAL="AUTOHEAL",i.POSTCONDITION="POSTCONDITION",i))(Mz||{}),Nz=z.enum(["pending","running","success","failed"]),Lz=z.object({type:z.literal("THOUGHT"),text:z.string(),blockId:z.string().optional()}),kz=z.object({type:z.literal("TOOL_CALL"),toolName:z.string()}),Dz=z.object({type:z.literal("PHASE"),phase:z.nativeEnum(Mz),failureMessage:z.string().optional()}),Vfe=z.object({type:z.literal("STEP_UPDATE"),stepIndex:z.number(),step:dl,status:Nz,message:z.string().optional(),afterSnapshotId:z.string().optional()}),zfe=z.object({type:z.literal("STEP_UPDATE"),stepIndex:z.number(),step:ul,status:Nz,message:z.string().optional(),afterSnapshotId:z.string().optional()}),Fz=z.object({type:z.literal("POSTCONDITION_AUTOGENERATED"),postcondition:z.string()}),Wfe=z.object({type:z.literal("CACHED_STEPS_GENERATED"),cachedSteps:Du.array(),resolvedGoal:z.string()}),qfe=z.object({type:z.literal("CACHED_STEPS_GENERATED"),cachedSteps:Fu.array(),resolvedGoal:z.string()}),Bz=z.discriminatedUnion("type",[Lz,kz,Dz,Vfe,Wfe,Fz]),Uz=z.discriminatedUnion("type",[Lz,kz,Dz,zfe,qfe,Fz]);var mc=O__default.object({message:O__default.string().optional(),startTime:O__default.number(),endTime:O__default.number(),status:O__default.nativeEnum(Nt),trace:O__default.unknown().optional().optional(),beforeSnapshot:O__default.string().optional(),afterSnapshot:O__default.string().optional(),data:O__default.unknown().optional().optional().describe("output data from the step"),aiSuggested:O__default.boolean().optional(),beforeTestContext:Sg.optional(),afterTestContext:Sg.optional()}),Hz=mc.merge(Du).extend({previousAttempts:O__default.lazy(()=>Ds.array()).optional()}),Kfe=mc.merge(vb).extend({steps:O__default.lazy(()=>Ds.array()),name:O__default.string().optional(),previousAttempts:O__default.lazy(()=>Ds.array()).optional()}),Yfe=mc.merge(Bu).extend({steps:O__default.lazy(()=>Ds.array()),previousAttempts:O__default.lazy(()=>Ds.array()).optional(),failureRecoveryReason:O__default.string().optional(),trajectory:Bz.array().optional()}),Jfe=mc.merge(zM).extend({assertionResult:Hz.optional(),steps:O__default.lazy(()=>Ds.array()),previousAttempts:O__default.lazy(()=>Ds.array()).optional()}),Ds=O__default.discriminatedUnion("type",[Hz,Kfe,Yfe,Jfe]),Gz=mc.merge(Fu).extend({previousAttempts:O__default.lazy(()=>Fs.array()).optional()}),Xfe=mc.merge(vb).extend({steps:O__default.lazy(()=>Fs.array()),name:O__default.string().optional(),previousAttempts:O__default.lazy(()=>Fs.array()).optional()}),Qfe=mc.merge(Bu).extend({steps:O__default.lazy(()=>Fs.array()),previousAttempts:O__default.lazy(()=>Fs.array()).optional(),failureRecoveryReason:O__default.string().optional(),trajectory:Uz.array().optional()}),Zfe=mc.merge(WM).extend({assertionResult:Gz.optional(),steps:O__default.lazy(()=>Fs.array()),previousAttempts:O__default.lazy(()=>Fs.array()).optional()}),Fs=O__default.discriminatedUnion("type",[Gz,Xfe,Qfe,Zfe]);var eye=mc.extend({index:O__default.number().optional(),userFacingStepReference:O__default.string().optional(),description:O__default.string()}),jz=eye.extend({beforeScreenshot:O__default.string().optional(),afterScreenshot:O__default.string().optional()});var $z=z.object({attributesRequired:z.array(z.string()).optional(),textRequired:z.boolean().optional(),boundsRequired:z.boolean().optional(),positionSpecificity:z.enum(os).optional(),shapeSpecificity:z.enum(os).optional()}),tye=z.object({id:z.number(),requirements:$z}).array();z.object({thoughts:z.string(),id:z.number(),updatedMemory:pS.optional(),inWebview:z.boolean().optional(),requirements:$z.optional(),additionalElements:tye.optional()});var nye=z.literal("SCROLL_TO"),Vz=z.object({description:z.string(),screenXml:z.string(),screenshot:z.string(),source:nye.optional(),memory:z.discriminatedUnion("type",[tl,z.object({type:z.literal("RESOLVED_TRACES"),traces:z.unknown().optional().array()})]).optional()}),zz=z.object({assertion:z.string(),screenXml:z.string(),screenshot:z.string(),contextChoice:lm.optional(),memory:z.discriminatedUnion("type",[im,z.object({type:z.literal("RESOLVED_TRACES"),traces:z.unknown().optional().array()})]).optional()});z.object({thoughts:z.string(),result:z.boolean(),relevantElements:z.array(z.number()).optional(),updatedMemory:mS.optional()});var Wz=z.object({failedResults:jz.array(),nextStepsSerialized:z.string().array(),currentScreenXml:z.string(),currentScreenshot:z.string(),customInstructions:z.string().optional(),testDescription:z.string()}),qz=(o=>(o.LEGITIMATE="LEGITIMATE",o.RECOVERABLE="RECOVERABLE",o.INELIGIBLE="INELIGIBLE",o))(qz||{});z.object({thoughts:z.string(),scenario:z.enum(qz),instructions:z.string().nullish(),reasonSummary:z.string().nullish()});z.looseObject({type:z.literal("response.create")});var Kz=z.union([z.looseObject({response:z.looseObject({id:z.string()}),sequence_number:z.number(),type:z.literal("response.completed")}),z.looseObject({code:z.string().nullable(),message:z.string(),sequence_number:z.number(),type:z.literal("error")})]);var Yz="ui_states.jsonl";z.object({stepId:z.string(),parentStepIdChain:z.array(z.string()),fingerprintHash:z.string(),minhash:z.array(z.number().int()),canonicalUrl:z.string(),capturedAt:z.number().describe("Unix timestamp in milliseconds")});var kg=(s=>(s.TestRun="test-run",s.MobileTestRun="mobile-test-run",s.CreditsUsed="credits-used",s.CreditsUsedV2="credits-used-v2",s.StepsExecuted="steps-executed",s.LLMTokensUsed="llm-tokens-used",s))(kg||{}),as=(c=>(c.TestRunner="test-runner",c.Editor="editor",c.Mcp="mcp",c.Explore="explore",c.Heal="heal",c.ResultClassification="result-classification",c.GithubPrSummary="github-pr-summary",c.AppGraph="app-graph",c.RunViewer="run-viewer",c))(as||{}),oye=3;function rye(e){return e==="MODULE"||e==="CONDITIONAL"||e==="WHILE_LOOP"||e==="SECTION"||e==="RESOLVED_MODULE"}function Jz(e){if(!rye(e))switch(e){case "PRESET_ACTION":return 0;case "AI_ACTION":return 3;case "AI_ACTION_DYNAMIC":return 5;default:(n=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})();}}function Xz(e){switch(e.type){case "AI_EXTRACT":case "AI_ASSERTION":return oye;case "CAPTCHA":return 3;case "CLICK":case "TYPE":case "SELECT_OPTION":case "HOVER":case "ELEMENT_CHECK":case "FOCUS":case "BLUR":case "SCROLL_DOWN":case "SCROLL_LEFT":case "SCROLL_RIGHT":case "SCROLL_UP":case "MOUSE_DRAG":return e.useSelector||!e.target||e.target.type!=="description"?0:1;case "DRAG":return e.useSelector?0:1;case "VISUAL_DIFF":case "TAB":case "JAVASCRIPT":case "NAVIGATE":case "WAIT":case "SUCCESS":case "AUTH_LOAD":case "AUTH_SAVE":case "COOKIE":case "DIALOG":case "FILE_UPLOAD":case "GO_BACK":case "GO_FORWARD":case "LOCAL_STORAGE":case "NEW_TAB":case "CLOSE_TAB":case "PAGE_CHECK":case "PRESS":case "KEY_DOWN":case "KEY_UP":case "COPY":case "PASTE":case "REFRESH":case "REQUEST":case "GRAPHQL_REQUEST":case "WAIT_FOR_URL":case "REGISTER_REQUEST_LISTENER":case "AWAIT_LISTENER":case "RECORD_REQUESTS":case "GET_RECORDED_REQUESTS":case "SET_HEADER":case "MOCK_ROUTE":case "REMOVE_ROUTE_MOCK":case "OFFLINE_MODE":return 0;default:(n=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})();}}var qM=z.object({name:z.string(),value:z.string(),url:z.string().optional(),domain:z.string().optional(),path:z.string().optional(),expires:z.number().default(Date.now()/1e3+60*60*24*365),httpOnly:z.boolean().optional(),secure:z.boolean().default(true),sameSite:z.union([z.literal("Strict"),z.literal("Lax"),z.literal("None")]).default("None")});function nv(e,t){let n=[],o=splitCookiesString(e);for(let r of o){let i=parseString(r,{decodeValues:false});if(!i.name)throw new Error("Name missing from cookie");if(!i.value)continue;let s;if(i.sameSite){let d=i.sameSite.trim().toLowerCase();if(d==="strict")s="Strict";else if(d==="lax")s="Lax";else if(d==="none")s="None";else throw new Error(`Invalid sameSite setting in cookie: ${d}`)}i.httpOnly===void 0&&(i.httpOnly=false),!i.path&&i.domain&&(i.path="/"),!i.domain&&t&&(i.domain=t);let a=qM.parse({...i,expires:i.expires?i.expires.getTime()/1e3:void 0,sameSite:s});n.push(a);let l=[a.name,...Object.keys(a)].map(d=>d.toLowerCase()),c=r.match(/\b(\S+)=([^;]*)/g);if(c)for(let d of c){let[u,p]=d.split("=");if(!u||!p)throw new Error(`Invalid key-value pair in cookie: ${d}`);l.includes(u.toLowerCase())||n.push({...a,name:u,value:p});}}return n}var aye=z.object({origin:z.string(),localStorage:z.array(z.object({name:z.string(),value:z.string()})),sessionStorage:z.array(z.object({name:z.string(),value:z.string()})).optional()}),lye=z.object({entries:z.record(z.string(),z.array(z.tuple([z.unknown().optional(),z.unknown().optional()]))),version:z.number().optional()}),ov=z.object({cookies:qM.array().optional(),origins:aye.array().optional(),idb:z.record(z.string(),lye).optional().describe("key is db name")});function Qz(e,t){let n=[];return e.cloneSync()?.serializeSync()?.cookies.forEach(o=>{let r=qM.safeParse({name:o.key,...o});if(!r.success)return;let i=r.data;!i.domain&&!i.url&&(i.domain=t),n.push(i);}),n}var ls={type:true,cache:true},Zz=[Td.pick(ls),bm.pick(ls),yb.pick(ls),Tb.pick(ls),gb.pick(ls),mb.pick(ls),db.pick(ls)],KM=O__default.discriminatedUnion("type",Zz),eW=[Td.pick(ls),Tm.pick(ls),Sb.pick(ls),Ab.pick(ls),fb.pick(ls),ub.pick(ls),hb.pick(ls)],YM=O__default.discriminatedUnion("type",eW);Object.values(zt).filter(e=>Zz.some(t=>t.shape.type.safeParse(e).success));Object.values(zt).filter(e=>eW.some(t=>t.shape.type.safeParse(e).success));var JM=O__default.object({type:O__default.literal("MOBILE_AI_ACTION_STEP"),cache:BM}),rv=O__default.union([KM,JM]),iv=O__default.union([YM,JM]);var XM=(s=>(s.US_EAST_1="us-east1",s.US_EAST_2="us-east2",s.US_WEST_1="us-west1",s.US_WEST_2="us-west2",s.EU_NORTH_1="eu-north1",s.AS_SOUTH_1="as-south1",s))(XM||{}),QM=(o=>(o.US="us",o.EU="eu",o.AS="as",o))(QM||{}),tW=(t=>(t.LOCAL="local",t))(tW||{}),ZM=O__default.nativeEnum(XM).or(O__default.nativeEnum(QM)),eN=O__default.nativeEnum(XM).or(O__default.nativeEnum(QM)).or(O__default.nativeEnum(tW)),dye="closest";eN.or(O__default.literal(dye));var Fg=(n=>(n.ANDROID_14="14",n.ANDROID_15="15",n))(Fg||{});var sv=(t=>(t.IOS_26="26",t))(sv||{});var uye=["1.56.1-lim.1","1.60.0-lim.1"],nW=O__default.enum(uye);var oW=O__default.nativeEnum(Fg).or(O__default.nativeEnum(sv));var pye=O__default.object({disableMomenticAccessibilityTree:O__default.boolean().optional(),autoGrantPermissions:O__default.boolean().optional().describe("Automatically grant app permission prompts during the run. Android only."),autoAcceptAlerts:O__default.boolean().optional().describe("Automatically accept native alert dialogs. iOS only."),autoDismissAlerts:O__default.boolean().optional().describe("Automatically dismiss native alert dialogs. iOS only."),disableXmlSnapshots:O__default.boolean().optional().describe("Skip collecting XML snapshots during test runs. This can speed up test runs, but will cause the run viewer to show less information."),browserSettings:Eg.optional(),locale:O__default.string().optional().describe("Device locale code (e.g. 'fr', 'en-us'). Sets the device language and region. iOS and Android.")}),mye="avdId",hye="iosDeviceType",gye="iosVersion",tN=pye.extend({region:eN.optional().describe('Where the emulator runs: "local" for an emulator on your machine, or a region for hosted emulators. Defaults to hosted emulators.'),remoteEmulatorSettings:O__default.object({androidVersion:O__default.nativeEnum(Fg).optional()}).optional(),localEmulatorSettings:O__default.object({[mye]:Tg,[hye]:Tg,[gye]:Tg}).optional(),geolocation:O__default.object({latitude:O__default.number().refine(e=>e>=-90&&e<=90,{message:"Latitude must be between -90 and 90 degrees"}),longitude:O__default.number().refine(e=>e>=-180&&e<=180,{message:"Longitude must be between -180 and 180 degrees"})}).optional(),waitForStability:O__default.boolean().optional().describe("wait for stability before every targeting action")});var wb=O__default.object({retries:O__default.number().optional().describe("number of retries to run"),defaultChannel:O__default.string().optional().describe("Default app release channel to use when installing from managed mobile artifacts."),defaultTag:O__default.string().optional().describe("Default app artifact tag to use. If not set, the latest available tag is used."),defaultEnv:O__default.string().optional().describe("Default mobile environment name to load variables from at runtime."),defaultApkFilePath:Tg.describe("APK to install when using the emulator in the local region."),defaultAppFilePath:Tg.describe("App file (e.g. .app or .ipa) to install when using the emulator in the local region."),emulator:tN.optional().describe("Emulator configuration for local or remote mobile execution, including region and local emulator overrides."),ai:uM.optional().describe("AI behavior overrides for this mobile test, such as memory and failure recovery settings.")}),rW=O__default.object({id:vo,description:O__default.string(),schemaVersion:O__default.string(),settings:wb.optional(),disabled:O__default.boolean().optional(),labels:O__default.array(O__default.string()).optional()}),Bg=rW.extend({platform:O__default.literal("ANDROID").optional().default("ANDROID")}),Ug=rW.extend({platform:O__default.literal("IOS")}),iW=O__default.discriminatedUnion("platform",[Bg,Ug]),sW=O__default.object({fileType:O__default.literal(ke.MOBILE_TEST)}),aW=sW.merge(Bg),lW=sW.merge(Ug);O__default.discriminatedUnion("platform",[aW,lW]);var cW=Bg.merge(O__default.object({steps:O__default.array(pc)})),dW=Ug.merge(O__default.object({steps:O__default.array(Ad)}));O__default.discriminatedUnion("platform",[cW,dW]);var fye=aW.merge(cW),yye=lW.merge(dW);O__default.discriminatedUnion("platform",[fye,yye]);O__default.object({name:O__default.string(),steps:O__default.array(pc).optional(),settings:wb.optional()});var uW=Bg.extend({steps:dl.array(),beforeSteps:dl.array().optional(),afterSteps:dl.array().optional()}),pW=Ug.extend({steps:ul.array(),beforeSteps:ul.array().optional(),afterSteps:ul.array().optional()});O__default.discriminatedUnion("platform",[uW,pW]);var Sye=uW.extend({name:O__default.string()}),bye=pW.extend({name:O__default.string()});O__default.discriminatedUnion("platform",[Sye,bye]);var xr=O__default.object({startTime:O__default.number(),endTime:O__default.number().optional(),durationMs:O__default.number().optional(),error:O__default.string().optional(),result:O__default.unknown().optional().optional(),attributes:O__default.record(O__default.string(),O__default.unknown().optional()),subSpans:O__default.lazy(()=>Fye.array())});var nN=xr.extend({type:O__default.literal("SECTION"),name:O__default.string()}),Tye=xr.extend({type:O__default.literal("GET_PAGE_STATE")}),Aye=xr.extend({type:O__default.literal("GET_PAGE_SCREENSHOT")}),Eye=xr.extend({type:O__default.literal("SMART_WAITING")}),Cye=xr.extend({type:O__default.literal("SCROLL_ELEMENT_INTO_VIEW")}),vye=xr.extend({type:O__default.literal("AI_LOCATOR_CALL"),screenshotSnapshotId:O__default.string().optional(),result:O__default.object({id:O__default.number(),thoughts:O__default.string(),citations:$o.array().optional()}).optional()}),Rye=xr.extend({type:O__default.literal("AI_ASSERTION_CALL"),screenshotSnapshotId:O__default.string().optional(),elementScreenshotSnapshotId:O__default.string().optional(),result:O__default.object({thoughts:O__default.string(),result:O__default.boolean(),citations:$o.array().optional()}).optional()}),wye=xr.extend({type:O__default.literal("AI_EXTRACTION_CALL"),screenshotSnapshotId:O__default.string().optional(),browserStateSnapshotId:O__default.string().optional(),result:O__default.object({thoughts:O__default.string().optional(),result:O__default.unknown().optional().optional()}).optional()}),Iye=xr.extend({type:O__default.literal("ELEMENT_ASSERTION"),name:O__default.string(),result:O__default.object({success:O__default.boolean(),message:O__default.string().optional()}).optional()}),xye=xr.extend({type:O__default.literal("BROWSER_INTERACTION"),name:O__default.string(),coordinates:O__default.object({x:O__default.number(),y:O__default.number()}).optional(),value:O__default.string().optional(),selector:O__default.string().optional()}),_ye=xr.extend({type:O__default.literal("CACHE_RESOLUTION"),resolutionMethod:O__default.string().optional(),cacheMissReason:O__default.nativeEnum($h).optional(),targetSource:O__default.string().optional(),elementScreenshotSnapshotId:O__default.string().optional(),result:O__default.object({serializedElement:O__default.string()}).optional()}),Pye=xr.extend({type:O__default.literal("TARGET_RESOLUTION"),elementScreenshotSnapshotId:O__default.string().optional(),result:O__default.object({serializedElement:O__default.string()}).optional()}),Oye=xr.extend({type:O__default.literal("LOCATOR_REDIRECT"),elementScreenshotSnapshotId:O__default.string().optional(),result:O__default.object({outcome:O__default.string(),logs:O__default.string().array().optional(),serializedElement:O__default.string().optional(),relativeClickPoint:O__default.object({x:O__default.number(),y:O__default.number()}).optional(),force:O__default.boolean().optional()}).optional()}),Mye=xr.extend({type:O__default.literal("WAIT_FOR_STABILITY")}),Nye=xr.extend({type:O__default.literal("GENERIC"),name:O__default.string()}),Lye=xr.extend({type:O__default.literal("PAGE_ASSERTION"),name:O__default.string(),result:O__default.object({success:O__default.boolean(),message:O__default.string().optional()}).optional()}),kye=xr.extend({type:O__default.literal("AUTO_FOLLOW_NEW_TABS"),result:O__default.object({followed:O__default.boolean()}).optional()}),Dye=xr.extend({type:O__default.literal("VISUAL_DIFF"),name:O__default.string(),result:O__default.object({success:O__default.boolean(),message:O__default.string().optional()}).optional()});function mW(e){return e.type==="CACHE_RESOLUTION"||e.type==="TARGET_RESOLUTION"}var Fye=O__default.discriminatedUnion("type",[nN,Tye,Aye,Eye,Cye,vye,Rye,wye,Iye,xye,Pye,_ye,Oye,Mye,Lye,Dye,Nye,kye]);z.object({testId:z.string(),sessionId:z.string()});var hW=z.object({uploadUrl:z.string(),id:z.string()});new Set(Object.values($n));var Sn={AI_ACTION_DYNAMIC:"Ask AI achieve a specific goal. Fully dynamic and does not save the steps for reuse. Our most capable AI agent.",CONDITIONAL:"Execute steps based on the outcome of a conditional check",RESOLVED_MODULE:"A list of steps that can be reused in multiple tests.",AI_ASSERTION:"Ask AI to verify whether something is true on the page.",CLICK:"Click on an element on the page.",DIALOG:"Specify how native browser dialogs should be handled.",AI_EXTRACT:"Ask AI to extract data from the page.",BLUR:"Remove focus from an element on the page.",TYPE:"Type the specified text into an element.",PRESS:"Press the specified keys using the keyboard. (e.g. Control+A)",NAVIGATE:"Navigate to the specified URL.",GO_BACK:"Go back in browser history.",GO_FORWARD:"Go forward in browser history.",REFRESH:"Refresh the page. This will not clear cookies or session data.",TAB:"Switch to different tab in the browser.",NEW_TAB:"Create and switch to a new tab in the browser.",CLOSE_TAB:"Close a specified open tab or current tab if none specified.",COOKIE:"Set a cookie that will persist throughout the browser session.",LOCAL_STORAGE:"Set a localStorage value that will persist throughout the browser session",REQUEST:"Make an API request to a URL.",GRAPHQL_REQUEST:"Make a GraphQL request to a URL.",JAVASCRIPT:"Run JavaScript code in the browser or a Node.js environment.",DRAG:"Click and drag an element to another location.",WAIT_FOR_URL:"Wait for the active page's URL to match a target value or pattern.",COPY:"Copy the specified value to the browser clipboard.",PASTE:"Paste the browser clipboard contents.",SET_HEADER:"Set a header.",MOCK_ROUTE:"Mock network requests to a specific URL.",REMOVE_ROUTE_MOCK:"Remove a previously set route mock."};var Bye=z.string().refine(e=>nu.valid(e),{error:"must be a valid semver string"});function oN(e){return nu.parse(e)||void 0}function Ib(e){if(e!==void 0)return e===true||e==="true"||e==="1"}var fW="on-fail";function yW(e){return e==="on-fail"?"on-fail":e==="false"?false:!!e}var SW=(n=>(n.CLI="cli",n.MobileCLI="mobile-cli",n))(SW||{}),Uye=z.nativeEnum(SW),bW=(o=>(o.Error="error",o.Warn="warn",o.Info="info",o))(bW||{}),Hye=z.nativeEnum(bW),Gye=z.object({id:z.string(),level:Hye,versionRange:z.string(),announcement:z.string()});z.object({cliType:Uye,version:Bye});var TW=z.object({announcements:z.array(Gye)});var xb=55555,av="momentic-code-eval.js";z.object({body:z.string(),to:z.string(),from:z.string()});z.object({from:z.string().optional(),to:z.string(),timeout:z.number().optional(),beforeDate:z.string().pipe(z.coerce.date()).or(z.date()).optional(),afterDate:z.string().pipe(z.coerce.date()).or(z.date()).optional()});z.object({timeoutMs:z.number().nonnegative().optional()}).optional();z.object({phoneNumber:z.string(),leaseToken:z.string()});var jye=z.union([z.string(),z.date()]).transform(e=>e instanceof Date?e:new Date(e)),AW=z.object({phoneNumber:z.string(),expiresAt:jye,leaseToken:z.string()});z.object({to:z.email(),from:z.string(),subject:z.string(),body:z.string(),html:z.string().optional()});z.object({inbox:z.string().transform(e=>e.toLowerCase()),afterDate:z.string().pipe(z.coerce.date()).or(z.date()).optional(),timeout:z.number().optional(),trimWhitespace:z.boolean().optional()});z.object({inbox:z.string(),limit:z.number().optional(),afterDate:z.string().pipe(z.coerce.date()).or(z.date()).optional(),trimWhitespace:z.boolean().optional()});var EW=z.object({email:z.string(),prefix:z.string(),expiresAt:z.coerce.date()}),lv=(n=>(n.RAW="RAW",n.RESPONSE="RESPONSE",n))(lv||{}),CW=z.object({body:z.string().nullish(),status:z.number().optional(),headers:z.array(z.tuple([z.string(),z.string()])).optional()}),$ye=z.object({url:z.string(),options:z.object({method:z.string(),body:z.string().nullish(),headers:z.array(z.tuple([z.string(),z.string()])).optional()}).optional()}).optional(),Vye=z.object({body:z.string().nullish(),options:z.object({status:z.number(),statusText:z.string().optional(),headers:z.array(z.tuple([z.string(),z.string()])).optional()}).optional()}).optional(),vW=z.object({result:z.unknown().optional(),variableUpdates:z.record(z.string(),z.unknown().optional()).optional(),persistentVariableUpdates:z.record(z.string(),z.unknown().optional()).optional(),error:z.string().optional(),success:z.boolean()});z.object({id:z.string().optional(),orgId:z.string(),momenticLambdaAuthHash:z.string(),code:z.string(),fragment:z.boolean(),state:z.object({env:z.record(z.string(),z.unknown().optional()),request:$ye,response:Vye,additionalBindings:z.record(z.string(),z.unknown().optional()).optional()}),timeoutMs:z.number().optional(),disallowVariableUpdates:z.boolean().optional(),responseSerialization:z.enum(lv).optional()});var Uu=9e4;var zye=O.object({url:O.string(),lineNumber:O.number(),columnNumber:O.number()}),RW=O.object({timestamp:O.number(),text:O.string(),type:O.string(),tabIndex:O.number(),args:O.unknown().optional().array().optional(),url:O.string().optional(),location:zye.optional()}),wW=RW.array(),rN=wW.array();var _b=class{async getConsoleLogsForRunAttempt(t,n,o){}async getNetworkLogsForRunAttempt(t,n,o){}async getHtmlSnapshot(t,n){}async getA11yTreeSnapshot(t,n){}async getScreenshot(t,n){}async storeConsoleLogsForRunAttempt(t,n,o,r){}async storeNetworkLogsForRunAttempt(t,n,o,r){}listVideoAssetPaths(){return []}close(){}async storeScreenshot(t,n,o){}async storeOnDemandScreenshotById(t,n,o,r){}async storeHtmlSnapshot(t,n,o){}};var Wye=z.object({name:z.string(),version:z.string(),comment:z.string().optional()}),qye=z.object({name:z.string(),version:z.string(),comment:z.string().optional()}),Kye=z.object({onContentLoad:z.number().optional(),onLoad:z.number().optional(),comment:z.string().optional()}),Pb=z.object({startedDateTime:z.string(),id:z.string(),title:z.string().optional(),pageTimings:Kye,comment:z.string().optional()}),Yye=z.array(Pb),Jye=z.object({name:z.string(),value:z.string(),path:z.string().optional(),domain:z.string().optional(),expires:z.string().optional(),httpOnly:z.boolean().optional(),secure:z.boolean().optional(),comment:z.string().optional()}),xW=z.array(Jye),Xye=z.object({name:z.string(),value:z.string(),comment:z.string().optional()}),_W=z.array(Xye),Qye=z.object({name:z.string(),value:z.string(),comment:z.string().optional()}),Zye=z.array(Qye),eSe=z.object({name:z.string(),value:z.string().optional(),fileName:z.string().optional(),contentType:z.string().optional(),comment:z.string().optional()}),tSe=z.array(eSe),nSe=z.object({mimeType:z.string(),params:tSe,text:z.string(),comment:z.string().optional(),_redactedReason:z.string().optional()}),oSe=z.object({method:z.string(),url:z.string(),httpVersion:z.string().optional(),cookies:xW,headers:_W,queryString:Zye,postData:nSe.optional(),headersSize:z.number().optional(),bodySize:z.number().optional(),comment:z.string().optional()}),rSe=z.object({size:z.number().optional(),compression:z.number().optional(),mimeType:z.string().optional(),text:z.string().optional(),encoding:z.string().optional(),comment:z.string().optional(),_redactedReason:z.string().optional()}),iSe=z.object({status:z.number(),statusText:z.string(),httpVersion:z.string().optional(),cookies:xW,headers:_W,content:rSe,redirectURL:z.string().optional(),headersSize:z.number().optional(),bodySize:z.number().optional(),comment:z.string().optional(),_mocked:z.boolean().optional()}),IW=z.object({expires:z.string().optional(),lastAccess:z.string(),eTag:z.string(),hitCount:z.number(),comment:z.string().optional()}),sSe=z.object({beforeRequest:IW.optional(),afterRequest:IW.optional(),comment:z.string().optional()}),aSe=z.object({blocked:z.number().optional(),dns:z.number().optional(),connect:z.number().optional(),send:z.number(),wait:z.number(),receive:z.number(),ssl:z.number().optional(),comment:z.string().optional()}),Ob=z.object({pageref:z.string().optional(),startedDateTime:z.string(),time:z.number().optional(),request:oSe,response:iSe.optional(),cache:sSe.optional(),timings:aSe,serverIPAddress:z.string().optional(),connection:z.string().optional(),comment:z.string().optional(),_resourceType:z.string().optional()}),lSe=z.array(Ob),cSe=z.object({version:z.string().default("1.1"),creator:Wye.optional(),browser:qye.optional(),pages:Yye.optional(),entries:lSe,comment:z.string().optional()});z.object({log:cSe});z.record(z.string(),Pb);z.record(z.string(),Ob);function iN(e,t){return {log:{version:"1.2",creator:{name:"Momentic, Inc.",version:"1.0.0"},pages:Object.values(e).sort((n,o)=>new Date(n.startedDateTime).getTime()-new Date(o.startedDateTime).getTime()),entries:Object.values(t).sort((n,o)=>new Date(n.startedDateTime).getTime()-new Date(o.startedDateTime).getTime())}}}var sN=(b=>(b.DisableClickhouseCaches="disable_clickhouse_caches",b.ShowZeroOpacityElements="show_zero_opacity_elements",b.VisualActions="visual_actions",b.RagV2="rag_v2",b.DisableSecondaryCacheResolution="disable_secondary_cache_resolution",b.GlobalLocatorRedirect="global_locator_redirect",b.FakerConstantSeed="faker_constant_seed",b.AutoExpandIframes="auto_expand_iframes",b.MobileNewAiActionStepsUseV3="mobile_new_ai_action_steps_use_v3",b.PerformanceInsights="performance_insights",b.ShowKnowledgeBase="show_knowledge_base",b.AppGraphBackend="app_graph_backend",b.AppGraphUI="app_graph_ui",b.ClassificationUI="classification_ui",b.HealingUI="healing_ui",b.ExploreUI="explore_ui",b.SlackNotifications="slack_notifications",b.SlackNotificationDms="slack_notification_dms",b.ResultClassificationCache="result_classification_cache",b))(sN||{});var Hu=z.union([z.string(),z.number(),z.boolean(),z.null(),z.record(z.string(),z.lazy(()=>Hu)),z.array(z.lazy(()=>Hu))]),Mb=class{flags;payloads;constructor(t,n){this.flags=t,this.payloads=n;}isBooleanFlagEnabled(t){return process.env&&process.env[`MOMENTIC_FLAG_OVERRIDE_${t.toUpperCase()}`]==="true"?true:process.env&&process.env[`MOMENTIC_FLAG_OVERRIDE_${t.toUpperCase()}`]==="false"?false:this.flags[t]===true}getAllFlags(){let t=cloneDeep(this.flags);return Object.entries(t).forEach(([n,o])=>{typeof o=="boolean"&&Object.values(sN).includes(n)&&(t[n]=this.isBooleanFlagEnabled(n));}),t}getFlagPayload(t){let n=this.payloads[t];if(n!==void 0){if(typeof n=="string")try{return JSON.parse(n)}catch{return n}return n}}refresh(){throw new Error("Not implemented")}};var Nb={".123":"application/vnd.lotus-1-2-3",".3dml":"text/vnd.in3d.3dml",".3g2":"video/3gpp2",".3gp":"video/3gpp",".a":"application/octet-stream",".aab":"application/x-authorware-bin",".aac":"audio/x-aac",".aam":"application/x-authorware-map",".aas":"application/x-authorware-seg",".abw":"application/x-abiword",".acc":"application/vnd.americandynamics.acc",".ace":"application/x-ace-compressed",".acu":"application/vnd.acucobol",".acutc":"application/vnd.acucorp",".adp":"audio/adpcm",".aep":"application/vnd.audiograph",".afm":"application/x-font-type1",".afp":"application/vnd.ibm.modcap",".ai":"application/postscript",".aif":"audio/x-aiff",".aifc":"audio/x-aiff",".aiff":"audio/x-aiff",".air":"application/vnd.adobe.air-application-installer-package+zip",".ami":"application/vnd.amiga.ami",".apk":"application/vnd.android.package-archive",".application":"application/x-ms-application",".apr":"application/vnd.lotus-approach",".asc":"application/pgp-signature",".asf":"video/x-ms-asf",".asm":"text/x-asm",".aso":"application/vnd.accpac.simply.aso",".asx":"video/x-ms-asf",".atc":"application/vnd.acucorp",".atom":"application/atom+xml",".atomcat":"application/atomcat+xml",".atomsvc":"application/atomsvc+xml",".atx":"application/vnd.antix.game-component",".au":"audio/basic",".avi":"video/x-msvideo",".aw":"application/applixware",".azf":"application/vnd.airzip.filesecure.azf",".azs":"application/vnd.airzip.filesecure.azs",".azw":"application/vnd.amazon.ebook",".bat":"application/x-msdownload",".bcpio":"application/x-bcpio",".bdf":"application/x-font-bdf",".bdm":"application/vnd.syncml.dm+wbxml",".bh2":"application/vnd.fujitsu.oasysprs",".bin":"application/octet-stream",".bmi":"application/vnd.bmi",".bmp":"image/bmp",".book":"application/vnd.framemaker",".box":"application/vnd.previewsystems.box",".boz":"application/x-bzip2",".bpk":"application/octet-stream",".btif":"image/prs.btif",".bz":"application/x-bzip",".bz2":"application/x-bzip2",".c":"text/x-c",".c4d":"application/vnd.clonk.c4group",".c4f":"application/vnd.clonk.c4group",".c4g":"application/vnd.clonk.c4group",".c4p":"application/vnd.clonk.c4group",".c4u":"application/vnd.clonk.c4group",".cab":"application/vnd.ms-cab-compressed",".car":"application/vnd.curl.car",".cat":"application/vnd.ms-pki.seccat",".cc":"text/x-c",".cct":"application/x-director",".ccxml":"application/ccxml+xml",".cdbcmsg":"application/vnd.contact.cmsg",".cdf":"application/x-netcdf",".cdkey":"application/vnd.mediastation.cdkey",".cdx":"chemical/x-cdx",".cdxml":"application/vnd.chemdraw+xml",".cdy":"application/vnd.cinderella",".cer":"application/pkix-cert",".cgm":"image/cgm",".chat":"application/x-chat",".chm":"application/vnd.ms-htmlhelp",".chrt":"application/vnd.kde.kchart",".cif":"chemical/x-cif",".cii":"application/vnd.anser-web-certificate-issue-initiation",".cil":"application/vnd.ms-artgalry",".cla":"application/vnd.claymore",".class":"application/java-vm",".clkk":"application/vnd.crick.clicker.keyboard",".clkp":"application/vnd.crick.clicker.palette",".clkt":"application/vnd.crick.clicker.template",".clkw":"application/vnd.crick.clicker.wordbank",".clkx":"application/vnd.crick.clicker",".clp":"application/x-msclip",".cmc":"application/vnd.cosmocaller",".cmdf":"chemical/x-cmdf",".cml":"chemical/x-cml",".cmp":"application/vnd.yellowriver-custom-menu",".cmx":"image/x-cmx",".cod":"application/vnd.rim.cod",".com":"application/x-msdownload",".conf":"text/plain",".cpio":"application/x-cpio",".cpp":"text/x-c",".cpt":"application/mac-compactpro",".crd":"application/x-mscardfile",".crl":"application/pkix-crl",".crt":"application/x-x509-ca-cert",".csh":"application/x-csh",".csml":"chemical/x-csml",".csp":"application/vnd.commonspace",".css":"text/css",".cst":"application/x-director",".csv":"text/csv",".cu":"application/cu-seeme",".curl":"text/vnd.curl",".cww":"application/prs.cww",".cxt":"application/x-director",".cxx":"text/x-c",".daf":"application/vnd.mobius.daf",".dataless":"application/vnd.fdsn.seed",".davmount":"application/davmount+xml",".dcr":"application/x-director",".dcurl":"text/vnd.curl.dcurl",".dd2":"application/vnd.oma.dd2+xml",".ddd":"application/vnd.fujixerox.ddd",".deb":"application/x-debian-package",".def":"text/plain",".deploy":"application/octet-stream",".der":"application/x-x509-ca-cert",".dfac":"application/vnd.dreamfactory",".dic":"text/x-c",".diff":"text/plain",".dir":"application/x-director",".dis":"application/vnd.mobius.dis",".dist":"application/octet-stream",".distz":"application/octet-stream",".djv":"image/vnd.djvu",".djvu":"image/vnd.djvu",".dll":"application/x-msdownload",".dmg":"application/octet-stream",".dms":"application/octet-stream",".dna":"application/vnd.dna",".doc":"application/msword",".docm":"application/vnd.ms-word.document.macroenabled.12",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".dot":"application/msword",".dotm":"application/vnd.ms-word.template.macroenabled.12",".dotx":"application/vnd.openxmlformats-officedocument.wordprocessingml.template",".dp":"application/vnd.osgi.dp",".dpg":"application/vnd.dpgraph",".dsc":"text/prs.lines.tag",".dtb":"application/x-dtbook+xml",".dtd":"application/xml-dtd",".dts":"audio/vnd.dts",".dtshd":"audio/vnd.dts.hd",".dump":"application/octet-stream",".dvi":"application/x-dvi",".dwf":"model/vnd.dwf",".dwg":"image/vnd.dwg",".dxf":"image/vnd.dxf",".dxp":"application/vnd.spotfire.dxp",".dxr":"application/x-director",".ecelp4800":"audio/vnd.nuera.ecelp4800",".ecelp7470":"audio/vnd.nuera.ecelp7470",".ecelp9600":"audio/vnd.nuera.ecelp9600",".ecma":"application/ecmascript",".edm":"application/vnd.novadigm.edm",".edx":"application/vnd.novadigm.edx",".efif":"application/vnd.picsel",".ei6":"application/vnd.pg.osasli",".elc":"application/octet-stream",".eml":"message/rfc822",".emma":"application/emma+xml",".eol":"audio/vnd.digital-winds",".eot":"application/vnd.ms-fontobject",".eps":"application/postscript",".epub":"application/epub+zip",".es3":"application/vnd.eszigno3+xml",".esf":"application/vnd.epson.esf",".et3":"application/vnd.eszigno3+xml",".etx":"text/x-setext",".exe":"application/x-msdownload",".ext":"application/vnd.novadigm.ext",".ez":"application/andrew-inset",".ez2":"application/vnd.ezpix-album",".ez3":"application/vnd.ezpix-package",".f":"text/x-fortran",".f4v":"video/x-f4v",".f77":"text/x-fortran",".f90":"text/x-fortran",".fbs":"image/vnd.fastbidsheet",".fdf":"application/vnd.fdf",".fe_launch":"application/vnd.denovo.fcselayout-link",".fg5":"application/vnd.fujitsu.oasysgp",".fgd":"application/x-director",".fh":"image/x-freehand",".fh4":"image/x-freehand",".fh5":"image/x-freehand",".fh7":"image/x-freehand",".fhc":"image/x-freehand",".fig":"application/x-xfig",".fli":"video/x-fli",".flo":"application/vnd.micrografx.flo",".flv":"video/x-flv",".flw":"application/vnd.kde.kivio",".flx":"text/vnd.fmi.flexstor",".fly":"text/vnd.fly",".fm":"application/vnd.framemaker",".fnc":"application/vnd.frogans.fnc",".for":"text/x-fortran",".fpx":"image/vnd.fpx",".frame":"application/vnd.framemaker",".fsc":"application/vnd.fsc.weblaunch",".fst":"image/vnd.fst",".ftc":"application/vnd.fluxtime.clip",".fti":"application/vnd.anser-web-funds-transfer-initiation",".fvt":"video/vnd.fvt",".fzs":"application/vnd.fuzzysheet",".g3":"image/g3fax",".gac":"application/vnd.groove-account",".gdl":"model/vnd.gdl",".geo":"application/vnd.dynageo",".gex":"application/vnd.geometry-explorer",".ggb":"application/vnd.geogebra.file",".ggt":"application/vnd.geogebra.tool",".ghf":"application/vnd.groove-help",".gif":"image/gif",".gim":"application/vnd.groove-identity-message",".gmx":"application/vnd.gmx",".gnumeric":"application/x-gnumeric",".gph":"application/vnd.flographit",".gqf":"application/vnd.grafeq",".gqs":"application/vnd.grafeq",".gram":"application/srgs",".gre":"application/vnd.geometry-explorer",".grv":"application/vnd.groove-injector",".grxml":"application/srgs+xml",".gsf":"application/x-font-ghostscript",".gtar":"application/x-gtar",".gtm":"application/vnd.groove-tool-message",".gtw":"model/vnd.gtw",".gv":"text/vnd.graphviz",".gz":"application/x-gzip",".h":"text/x-c",".h261":"video/h261",".h263":"video/h263",".h264":"video/h264",".hbci":"application/vnd.hbci",".hdf":"application/x-hdf",".hh":"text/x-c",".hlp":"application/winhlp",".hpgl":"application/vnd.hp-hpgl",".hpid":"application/vnd.hp-hpid",".hps":"application/vnd.hp-hps",".hqx":"application/mac-binhex40",".htke":"application/vnd.kenameaapp",".htm":"text/html",".html":"text/html",".hvd":"application/vnd.yamaha.hv-dic",".hvp":"application/vnd.yamaha.hv-voice",".hvs":"application/vnd.yamaha.hv-script",".icc":"application/vnd.iccprofile",".ice":"x-conference/x-cooltalk",".icm":"application/vnd.iccprofile",".ico":"image/x-icon",".ics":"text/calendar",".ief":"image/ief",".ifb":"text/calendar",".ifm":"application/vnd.shana.informed.formdata",".iges":"model/iges",".igl":"application/vnd.igloader",".igs":"model/iges",".igx":"application/vnd.micrografx.igx",".iif":"application/vnd.shana.informed.interchange",".imp":"application/vnd.accpac.simply.imp",".ims":"application/vnd.ms-ims",".in":"text/plain",".ipk":"application/vnd.shana.informed.package",".irm":"application/vnd.ibm.rights-management",".irp":"application/vnd.irepository.package+xml",".iso":"application/octet-stream",".itp":"application/vnd.shana.informed.formtemplate",".ivp":"application/vnd.immervision-ivp",".ivu":"application/vnd.immervision-ivu",".jad":"text/vnd.sun.j2me.app-descriptor",".jam":"application/vnd.jam",".jar":"application/java-archive",".java":"text/x-java-source",".jisp":"application/vnd.jisp",".jlt":"application/vnd.hp-jlyt",".jnlp":"application/x-java-jnlp-file",".joda":"application/vnd.joost.joda-archive",".jpe":"image/jpeg",".jpeg":"image/jpeg",".jpg":"image/jpeg",".jpgm":"video/jpm",".jpgv":"video/jpeg",".jpm":"video/jpm",".js":"application/javascript",".json":"application/json",".kar":"audio/midi",".karbon":"application/vnd.kde.karbon",".kfo":"application/vnd.kde.kformula",".kia":"application/vnd.kidspiration",".kil":"application/x-killustrator",".kml":"application/vnd.google-earth.kml+xml",".kmz":"application/vnd.google-earth.kmz",".kne":"application/vnd.kinar",".knp":"application/vnd.kinar",".kon":"application/vnd.kde.kontour",".kpr":"application/vnd.kde.kpresenter",".kpt":"application/vnd.kde.kpresenter",".ksh":"text/plain",".ksp":"application/vnd.kde.kspread",".ktr":"application/vnd.kahootz",".ktz":"application/vnd.kahootz",".kwd":"application/vnd.kde.kword",".kwt":"application/vnd.kde.kword",".latex":"application/x-latex",".lbd":"application/vnd.llamagraphics.life-balance.desktop",".lbe":"application/vnd.llamagraphics.life-balance.exchange+xml",".les":"application/vnd.hhe.lesson-player",".lha":"application/octet-stream",".link66":"application/vnd.route66.link66+xml",".list":"text/plain",".list3820":"application/vnd.ibm.modcap",".listafp":"application/vnd.ibm.modcap",".log":"text/plain",".lostxml":"application/lost+xml",".lrf":"application/octet-stream",".lrm":"application/vnd.ms-lrm",".ltf":"application/vnd.frogans.ltf",".lvp":"audio/vnd.lucent.voice",".lwp":"application/vnd.lotus-wordpro",".lzh":"application/octet-stream",".m13":"application/x-msmediaview",".m14":"application/x-msmediaview",".m1v":"video/mpeg",".m2a":"audio/mpeg",".m2v":"video/mpeg",".m3a":"audio/mpeg",".m3u":"audio/x-mpegurl",".m4u":"video/vnd.mpegurl",".m4v":"video/x-m4v",".ma":"application/mathematica",".mag":"application/vnd.ecowin.chart",".maker":"application/vnd.framemaker",".man":"text/troff",".mathml":"application/mathml+xml",".mb":"application/mathematica",".mbk":"application/vnd.mobius.mbk",".mbox":"application/mbox",".mc1":"application/vnd.medcalcdata",".mcd":"application/vnd.mcd",".mcurl":"text/vnd.curl.mcurl",".mdb":"application/x-msaccess",".mdi":"image/vnd.ms-modi",".me":"text/troff",".mesh":"model/mesh",".mfm":"application/vnd.mfmp",".mgz":"application/vnd.proteus.magazine",".mht":"message/rfc822",".mhtml":"message/rfc822",".mid":"audio/midi",".midi":"audio/midi",".mif":"application/vnd.mif",".mime":"message/rfc822",".mj2":"video/mj2",".mjp2":"video/mj2",".mkv":"video/x-matroska",".mlp":"application/vnd.dolby.mlp",".mmd":"application/vnd.chipnuts.karaoke-mmd",".mmf":"application/vnd.smaf",".mmr":"image/vnd.fujixerox.edmics-mmr",".mny":"application/x-msmoney",".mobi":"application/x-mobipocket-ebook",".mov":"video/quicktime",".movie":"video/x-sgi-movie",".mp2":"audio/mpeg",".mp2a":"audio/mpeg",".mp3":"audio/mpeg",".mp4":"video/mp4",".mp4a":"audio/mp4",".mp4s":"application/mp4",".mp4v":"video/mp4",".mpa":"video/mpeg",".mpc":"application/vnd.mophun.certificate",".mpe":"video/mpeg",".mpeg":"video/mpeg",".mpg":"video/mpeg",".mpg4":"video/mp4",".mpga":"audio/mpeg",".mpkg":"application/vnd.apple.installer+xml",".mpm":"application/vnd.blueice.multipass",".mpn":"application/vnd.mophun.application",".mpp":"application/vnd.ms-project",".mpt":"application/vnd.ms-project",".mpy":"application/vnd.ibm.minipay",".mqy":"application/vnd.mobius.mqy",".mrc":"application/marc",".ms":"text/troff",".mscml":"application/mediaservercontrol+xml",".mseed":"application/vnd.fdsn.mseed",".mseq":"application/vnd.mseq",".msf":"application/vnd.epson.msf",".msh":"model/mesh",".msi":"application/x-msdownload",".msl":"application/vnd.mobius.msl",".msty":"application/vnd.muvee.style",".mts":"model/vnd.mts",".mus":"application/vnd.musician",".musicxml":"application/vnd.recordare.musicxml+xml",".mvb":"application/x-msmediaview",".mwf":"application/vnd.mfer",".mxf":"application/mxf",".mxl":"application/vnd.recordare.musicxml",".mxml":"application/xv+xml",".mxs":"application/vnd.triscape.mxs",".mxu":"video/vnd.mpegurl",".n-gage":"application/vnd.nokia.n-gage.symbian.install",".nb":"application/mathematica",".nc":"application/x-netcdf",".ncx":"application/x-dtbncx+xml",".ngdat":"application/vnd.nokia.n-gage.data",".nlu":"application/vnd.neurolanguage.nlu",".nml":"application/vnd.enliven",".nnd":"application/vnd.noblenet-directory",".nns":"application/vnd.noblenet-sealer",".nnw":"application/vnd.noblenet-web",".npx":"image/vnd.net-fpx",".nsf":"application/vnd.lotus-notes",".nws":"message/rfc822",".o":"application/octet-stream",".oa2":"application/vnd.fujitsu.oasys2",".oa3":"application/vnd.fujitsu.oasys3",".oas":"application/vnd.fujitsu.oasys",".obd":"application/x-msbinder",".obj":"application/octet-stream",".oda":"application/oda",".odb":"application/vnd.oasis.opendocument.database",".odc":"application/vnd.oasis.opendocument.chart",".odf":"application/vnd.oasis.opendocument.formula",".odft":"application/vnd.oasis.opendocument.formula-template",".odg":"application/vnd.oasis.opendocument.graphics",".odi":"application/vnd.oasis.opendocument.image",".odp":"application/vnd.oasis.opendocument.presentation",".ods":"application/vnd.oasis.opendocument.spreadsheet",".odt":"application/vnd.oasis.opendocument.text",".oga":"audio/ogg",".ogg":"audio/ogg",".ogv":"video/ogg",".ogx":"application/ogg",".onepkg":"application/onenote",".onetmp":"application/onenote",".onetoc":"application/onenote",".onetoc2":"application/onenote",".opf":"application/oebps-package+xml",".oprc":"application/vnd.palm",".org":"application/vnd.lotus-organizer",".osf":"application/vnd.yamaha.openscoreformat",".osfpvg":"application/vnd.yamaha.openscoreformat.osfpvg+xml",".otc":"application/vnd.oasis.opendocument.chart-template",".otf":"application/x-font-otf",".otg":"application/vnd.oasis.opendocument.graphics-template",".oth":"application/vnd.oasis.opendocument.text-web",".oti":"application/vnd.oasis.opendocument.image-template",".otm":"application/vnd.oasis.opendocument.text-master",".otp":"application/vnd.oasis.opendocument.presentation-template",".ots":"application/vnd.oasis.opendocument.spreadsheet-template",".ott":"application/vnd.oasis.opendocument.text-template",".oxt":"application/vnd.openofficeorg.extension",".p":"text/x-pascal",".p10":"application/pkcs10",".p12":"application/x-pkcs12",".p7b":"application/x-pkcs7-certificates",".p7c":"application/pkcs7-mime",".p7m":"application/pkcs7-mime",".p7r":"application/x-pkcs7-certreqresp",".p7s":"application/pkcs7-signature",".pas":"text/x-pascal",".pbd":"application/vnd.powerbuilder6",".pbm":"image/x-portable-bitmap",".pcf":"application/x-font-pcf",".pcl":"application/vnd.hp-pcl",".pclxl":"application/vnd.hp-pclxl",".pct":"image/x-pict",".pcurl":"application/vnd.curl.pcurl",".pcx":"image/x-pcx",".pdb":"application/vnd.palm",".pdf":"application/pdf",".pfa":"application/x-font-type1",".pfb":"application/x-font-type1",".pfm":"application/x-font-type1",".pfr":"application/font-tdpfr",".pfx":"application/x-pkcs12",".pgm":"image/x-portable-graymap",".pgn":"application/x-chess-pgn",".pgp":"application/pgp-encrypted",".pic":"image/x-pict",".pkg":"application/octet-stream",".pki":"application/pkixcmp",".pkipath":"application/pkix-pkipath",".pl":"text/plain",".plb":"application/vnd.3gpp.pic-bw-large",".plc":"application/vnd.mobius.plc",".plf":"application/vnd.pocketlearn",".pls":"application/pls+xml",".pml":"application/vnd.ctc-posml",".png":"image/png",".pnm":"image/x-portable-anymap",".portpkg":"application/vnd.macports.portpkg",".pot":"application/vnd.ms-powerpoint",".potm":"application/vnd.ms-powerpoint.template.macroenabled.12",".potx":"application/vnd.openxmlformats-officedocument.presentationml.template",".ppa":"application/vnd.ms-powerpoint",".ppam":"application/vnd.ms-powerpoint.addin.macroenabled.12",".ppd":"application/vnd.cups-ppd",".ppm":"image/x-portable-pixmap",".pps":"application/vnd.ms-powerpoint",".ppsm":"application/vnd.ms-powerpoint.slideshow.macroenabled.12",".ppsx":"application/vnd.openxmlformats-officedocument.presentationml.slideshow",".ppt":"application/vnd.ms-powerpoint",".pptm":"application/vnd.ms-powerpoint.presentation.macroenabled.12",".pptx":"application/vnd.openxmlformats-officedocument.presentationml.presentation",".pqa":"application/vnd.palm",".prc":"application/x-mobipocket-ebook",".pre":"application/vnd.lotus-freelance",".prf":"application/pics-rules",".ps":"application/postscript",".psb":"application/vnd.3gpp.pic-bw-small",".psd":"image/vnd.adobe.photoshop",".psf":"application/x-font-linux-psf",".ptid":"application/vnd.pvi.ptid1",".pub":"application/x-mspublisher",".pvb":"application/vnd.3gpp.pic-bw-var",".pwn":"application/vnd.3m.post-it-notes",".pwz":"application/vnd.ms-powerpoint",".py":"text/x-python",".pya":"audio/vnd.ms-playready.media.pya",".pyc":"application/x-python-code",".pyo":"application/x-python-code",".pyv":"video/vnd.ms-playready.media.pyv",".qam":"application/vnd.epson.quickanime",".qbo":"application/vnd.intu.qbo",".qfx":"application/vnd.intu.qfx",".qps":"application/vnd.publishare-delta-tree",".qt":"video/quicktime",".qwd":"application/vnd.quark.quarkxpress",".qwt":"application/vnd.quark.quarkxpress",".qxb":"application/vnd.quark.quarkxpress",".qxd":"application/vnd.quark.quarkxpress",".qxl":"application/vnd.quark.quarkxpress",".qxt":"application/vnd.quark.quarkxpress",".ra":"audio/x-pn-realaudio",".ram":"audio/x-pn-realaudio",".rar":"application/x-rar-compressed",".ras":"image/x-cmu-raster",".rcprofile":"application/vnd.ipunplugged.rcprofile",".rdf":"application/rdf+xml",".rdz":"application/vnd.data-vision.rdz",".rep":"application/vnd.businessobjects",".res":"application/x-dtbresource+xml",".rgb":"image/x-rgb",".rif":"application/reginfo+xml",".rl":"application/resource-lists+xml",".rlc":"image/vnd.fujixerox.edmics-rlc",".rld":"application/resource-lists-diff+xml",".rm":"application/vnd.rn-realmedia",".rmi":"audio/midi",".rmp":"audio/x-pn-realaudio-plugin",".rms":"application/vnd.jcp.javame.midlet-rms",".rnc":"application/relax-ng-compact-syntax",".roff":"text/troff",".rpm":"application/x-rpm",".rpss":"application/vnd.nokia.radio-presets",".rpst":"application/vnd.nokia.radio-preset",".rq":"application/sparql-query",".rs":"application/rls-services+xml",".rsd":"application/rsd+xml",".rss":"application/rss+xml",".rtf":"application/rtf",".rtx":"text/richtext",".s":"text/x-asm",".saf":"application/vnd.yamaha.smaf-audio",".sbml":"application/sbml+xml",".sc":"application/vnd.ibm.secure-container",".scd":"application/x-msschedule",".scm":"application/vnd.lotus-screencam",".scq":"application/scvp-cv-request",".scs":"application/scvp-cv-response",".scurl":"text/vnd.curl.scurl",".sda":"application/vnd.stardivision.draw",".sdc":"application/vnd.stardivision.calc",".sdd":"application/vnd.stardivision.impress",".sdkd":"application/vnd.solent.sdkm+xml",".sdkm":"application/vnd.solent.sdkm+xml",".sdp":"application/sdp",".sdw":"application/vnd.stardivision.writer",".see":"application/vnd.seemail",".seed":"application/vnd.fdsn.seed",".sema":"application/vnd.sema",".semd":"application/vnd.semd",".semf":"application/vnd.semf",".ser":"application/java-serialized-object",".setpay":"application/set-payment-initiation",".setreg":"application/set-registration-initiation",".sfd-hdstx":"application/vnd.hydrostatix.sof-data",".sfs":"application/vnd.spotfire.sfs",".sgl":"application/vnd.stardivision.writer-global",".sgm":"text/sgml",".sgml":"text/sgml",".sh":"application/x-sh",".shar":"application/x-shar",".shf":"application/shf+xml",".si":"text/vnd.wap.si",".sic":"application/vnd.wap.sic",".sig":"application/pgp-signature",".silo":"model/mesh",".sis":"application/vnd.symbian.install",".sisx":"application/vnd.symbian.install",".sit":"application/x-stuffit",".sitx":"application/x-stuffitx",".skd":"application/vnd.koan",".skm":"application/vnd.koan",".skp":"application/vnd.koan",".skt":"application/vnd.koan",".sl":"text/vnd.wap.sl",".slc":"application/vnd.wap.slc",".sldm":"application/vnd.ms-powerpoint.slide.macroenabled.12",".sldx":"application/vnd.openxmlformats-officedocument.presentationml.slide",".slt":"application/vnd.epson.salt",".smf":"application/vnd.stardivision.math",".smi":"application/smil+xml",".smil":"application/smil+xml",".snd":"audio/basic",".snf":"application/x-font-snf",".so":"application/octet-stream",".spc":"application/x-pkcs7-certificates",".spf":"application/vnd.yamaha.smaf-phrase",".spl":"application/x-futuresplash",".spot":"text/vnd.in3d.spot",".spp":"application/scvp-vp-response",".spq":"application/scvp-vp-request",".spx":"audio/ogg",".src":"application/x-wais-source",".srx":"application/sparql-results+xml",".sse":"application/vnd.kodak-descriptor",".ssf":"application/vnd.epson.ssf",".ssml":"application/ssml+xml",".stc":"application/vnd.sun.xml.calc.template",".std":"application/vnd.sun.xml.draw.template",".stf":"application/vnd.wt.stf",".sti":"application/vnd.sun.xml.impress.template",".stk":"application/hyperstudio",".stl":"application/vnd.ms-pki.stl",".str":"application/vnd.pg.format",".stw":"application/vnd.sun.xml.writer.template",".sus":"application/vnd.sus-calendar",".susp":"application/vnd.sus-calendar",".sv4cpio":"application/x-sv4cpio",".sv4crc":"application/x-sv4crc",".svd":"application/vnd.svd",".svg":"image/svg+xml",".svgz":"image/svg+xml",".swa":"application/x-director",".swf":"application/x-shockwave-flash",".swi":"application/vnd.arastra.swi",".sxc":"application/vnd.sun.xml.calc",".sxd":"application/vnd.sun.xml.draw",".sxg":"application/vnd.sun.xml.writer.global",".sxi":"application/vnd.sun.xml.impress",".sxm":"application/vnd.sun.xml.math",".sxw":"application/vnd.sun.xml.writer",".t":"text/troff",".tao":"application/vnd.tao.intent-module-archive",".tar":"application/x-tar",".tcap":"application/vnd.3gpp2.tcap",".tcl":"application/x-tcl",".teacher":"application/vnd.smart.teacher",".tex":"application/x-tex",".texi":"application/x-texinfo",".texinfo":"application/x-texinfo",".text":"text/plain",".tfm":"application/x-tex-tfm",".tgz":"application/x-gzip",".tif":"image/tiff",".tiff":"image/tiff",".tmo":"application/vnd.tmobile-livetv",".torrent":"application/x-bittorrent",".tpl":"application/vnd.groove-tool-template",".tpt":"application/vnd.trid.tpt",".tr":"text/troff",".tra":"application/vnd.trueapp",".trm":"application/x-msterminal",".tsv":"text/tab-separated-values",".ttc":"application/x-font-ttf",".ttf":"application/x-font-ttf",".twd":"application/vnd.simtech-mindmapper",".twds":"application/vnd.simtech-mindmapper",".txd":"application/vnd.genomatix.tuxedo",".txf":"application/vnd.mobius.txf",".txt":"text/plain",".u32":"application/x-authorware-bin",".udeb":"application/x-debian-package",".ufd":"application/vnd.ufdl",".ufdl":"application/vnd.ufdl",".umj":"application/vnd.umajin",".unityweb":"application/vnd.unity",".uoml":"application/vnd.uoml+xml",".uri":"text/uri-list",".uris":"text/uri-list",".urls":"text/uri-list",".ustar":"application/x-ustar",".utz":"application/vnd.uiq.theme",".uu":"text/x-uuencode",".vcd":"application/x-cdlink",".vcf":"text/x-vcard",".vcg":"application/vnd.groove-vcard",".vcs":"text/x-vcalendar",".vcx":"application/vnd.vcx",".vis":"application/vnd.visionary",".viv":"video/vnd.vivo",".vor":"application/vnd.stardivision.writer",".vox":"application/x-authorware-bin",".vrml":"model/vrml",".vsd":"application/vnd.visio",".vsf":"application/vnd.vsf",".vss":"application/vnd.visio",".vst":"application/vnd.visio",".vsw":"application/vnd.visio",".vtu":"model/vnd.vtu",".vxml":"application/voicexml+xml",".w3d":"application/x-director",".webm":"video/webm",".wad":"application/x-doom",".wav":"audio/x-wav",".wax":"audio/x-ms-wax",".wbmp":"image/vnd.wap.wbmp",".wbs":"application/vnd.criticaltools.wbs+xml",".wbxml":"application/vnd.wap.wbxml",".wcm":"application/vnd.ms-works",".wdb":"application/vnd.ms-works",".wiz":"application/msword",".wks":"application/vnd.ms-works",".wm":"video/x-ms-wm",".wma":"audio/x-ms-wma",".wmd":"application/x-ms-wmd",".wmf":"application/x-msmetafile",".wml":"text/vnd.wap.wml",".wmlc":"application/vnd.wap.wmlc",".wmls":"text/vnd.wap.wmlscript",".wmlsc":"application/vnd.wap.wmlscriptc",".wmv":"video/x-ms-wmv",".wmx":"video/x-ms-wmx",".wmz":"application/x-ms-wmz",".wpd":"application/vnd.wordperfect",".wpl":"application/vnd.ms-wpl",".wps":"application/vnd.ms-works",".wqd":"application/vnd.wqd",".wri":"application/x-mswrite",".wrl":"model/vrml",".wsdl":"application/wsdl+xml",".wspolicy":"application/wspolicy+xml",".wtb":"application/vnd.webturbo",".wvx":"video/x-ms-wvx",".x32":"application/x-authorware-bin",".x3d":"application/vnd.hzn-3d-crossword",".xap":"application/x-silverlight-app",".xar":"application/vnd.xara",".xbap":"application/x-ms-xbap",".xbd":"application/vnd.fujixerox.docuworks.binder",".xbm":"image/x-xbitmap",".xdm":"application/vnd.syncml.dm+xml",".xdp":"application/vnd.adobe.xdp+xml",".xdw":"application/vnd.fujixerox.docuworks",".xenc":"application/xenc+xml",".xer":"application/patch-ops-error+xml",".xfdf":"application/vnd.adobe.xfdf",".xfdl":"application/vnd.xfdl",".xht":"application/xhtml+xml",".xhtml":"application/xhtml+xml",".xhvml":"application/xv+xml",".xif":"image/vnd.xiff",".xla":"application/vnd.ms-excel",".xlam":"application/vnd.ms-excel.addin.macroenabled.12",".xlb":"application/vnd.ms-excel",".xlc":"application/vnd.ms-excel",".xlm":"application/vnd.ms-excel",".xls":"application/vnd.ms-excel",".xlsb":"application/vnd.ms-excel.sheet.binary.macroenabled.12",".xlsm":"application/vnd.ms-excel.sheet.macroenabled.12",".xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",".xlt":"application/vnd.ms-excel",".xltm":"application/vnd.ms-excel.template.macroenabled.12",".xltx":"application/vnd.openxmlformats-officedocument.spreadsheetml.template",".xlw":"application/vnd.ms-excel",".xml":"application/xml",".xo":"application/vnd.olpc-sugar",".xop":"application/xop+xml",".xpdl":"application/xml",".xpi":"application/x-xpinstall",".xpm":"image/x-xpixmap",".xpr":"application/vnd.is-xpr",".xps":"application/vnd.ms-xpsdocument",".xpw":"application/vnd.intercon.formnet",".xpx":"application/vnd.intercon.formnet",".xsl":"application/xml",".xslt":"application/xslt+xml",".xsm":"application/vnd.syncml+xml",".xspf":"application/xspf+xml",".xul":"application/vnd.mozilla.xul+xml",".xvm":"application/xv+xml",".xvml":"application/xv+xml",".xwd":"image/x-xwindowdump",".xyz":"chemical/x-xyz",".zaz":"application/vnd.zzazz.deck+xml",".zip":"application/zip",".zir":"application/vnd.zul",".zirz":"application/vnd.zul",".zmm":"application/vnd.handheld-entertainment+xml"},PW=[".sh",".exe",".app",".bat",".cmd",".msi",".apk",".jar",".py",".js",".cron",".php",".asp"];var OW=z.discriminatedUnion("operation",[z.object({operation:z.literal("upsert"),path:z.string().min(1),content:z.string()}),z.object({operation:z.literal("delete"),path:z.string().min(1)})]),pSe=z.object({githubLogin:z.string().optional(),email:z.string().optional()}),mSe=z.object({baseSha:z.string().min(1),headSha:z.string().min(1)}),hSe=z.object({baseBranch:z.string().min(1).max(255),baseCommitSha:z.string().min(1),headBranch:z.string().min(1).max(255).optional(),branchPrefix:z.string().min(1).max(255).optional(),idempotencyKey:z.string().min(1).optional()}),gSe=z.object({commitMessage:z.string().min(1),title:z.string().min(1),body:z.string(),reviewers:z.array(z.string().min(1)).optional(),draft:z.boolean().optional()});hSe.extend(gSe.shape).extend({changes:z.array(OW).min(1),coAuthorRange:mSe.optional(),requestCommitAuthorsAsReviewers:z.boolean().optional()}).superRefine((e,t)=>{e.headBranch||(!e.branchPrefix||!e.idempotencyKey)&&t.addIssue({code:"custom",message:"branchPrefix and idempotencyKey are required when headBranch is omitted",path:["idempotencyKey"]});});var MW=z.object({pullRequestUrl:z.url(),pullRequestNumber:z.number(),headBranch:z.string(),commitSha:z.string(),created:z.boolean(),authors:z.array(pSe).optional()});z.object({branch:z.string().min(1).max(255),commitMessage:z.string().min(1),changes:z.array(OW).min(1)});var NW=z.object({branch:z.string(),commitSha:z.string(),committed:z.boolean()}),LW=z.object({issueNumber:z.number(),htmlUrl:z.url(),headBranch:z.string().min(1),baseBranch:z.string().min(1),latestCommitSha:z.string().min(1),draft:z.boolean().optional(),title:z.string().optional(),body:z.string().optional()});z.object({number:z.number(),htmlUrl:z.url()});var fSe=z.object({path:z.string().min(1),status:z.string().min(1),additions:z.number(),deletions:z.number(),previousPath:z.string().optional(),patch:z.string().optional()}),ySe=z.object({sha:z.string().min(1),author:z.string().optional(),email:z.string().optional(),date:z.string().optional(),message:z.string()}),kW=z.object({mergeBaseSha:z.string().min(1),totalCommits:z.number(),commits:z.array(ySe),files:z.array(fSe)}),DW=z.object({content:z.string().nullable()}),FW=z.object({name:z.string().min(1),protected:z.boolean()}),BW=z.object({iid:z.number(),webUrl:z.url(),sourceBranch:z.string().min(1),targetBranch:z.string().min(1),latestCommitSha:z.string().min(1)}),SSe=z.object({name:z.string(),path:z.string(),body:z.string()}),UW=z.object({template:SSe});function gr(e){let[t,n,...o]=e.split("/");if(!(!t||!n||o.length>0))return {owner:t,repo:n}}function HW(e){let t=gr(e);if(t)return t;throw new mt(`Invalid GitHub repository string: ${e}. Expected format "owner/repo".`)}var bSe=/^co-authored-by:\s*.*?<([^>]+)>\s*$/gim,TSe=/^(?:\d+\+)?([^@]+)@users\.noreply\.github\.com$/i;function cv(e){return e.match(TSe)?.[1]}function GW(e){let t=[];for(let n of e.matchAll(bSe)){let o=n[1]?.trim();o&&t.push({email:o,githubLogin:cv(o)});}return t}function ASe(e){return (e.githubLogin??(e.email?cv(e.email):void 0))?.toLowerCase().endsWith("[bot]")??false}function jW(e){return e.filter(t=>!ASe(t))}var $W="https://static.momentic.ai";function Lb(e,t){return {light:`${$W}/${e}.svg`,dark:`${$W}/${e}-dark.svg`,alt:t}}var kb={runGroup:Lb("run-group-button","View run group"),basePr:Lb("view-base-pr-button","View base PR"),branch:Lb("view-branch-button","View branch"),commit:Lb("view-commit-button","View commit")};function Db({href:e,button:t}){return `<a href="${e}"><picture><source media="(prefers-color-scheme: dark)" srcset="${t.dark}" /><img src="${t.light}" alt="${t.alt}" /></picture></a>`}var aN=O__default.object({platformSep:O__default.string(),fullPathSegments:O__default.string().array(),relativePathSegments:O__default.string().array(),relativePath:O__default.string().describe("path relative to the root test directory, i.e. my-folder/my-test.yaml"),fileName:O__default.string().describe("base name of the file including the extension, e.g. my-module.module.yaml"),lastModified:O__default.coerce.date(),createdAt:O__default.coerce.date()});var ESe=z.array(aN.extend({id:z.string(),name:z.string(),description:z.string().optional(),labels:z.string().array().optional()})),CSe=aN.extend({id:z.string(),name:z.string(),description:z.string().optional(),content:dC}),vSe=z.array(CSe);z.object({tests:ESe,modules:vSe,labels:z.string().array()});z.string().array();var VW=z.object({pathSegments:z.string().array()});fM.merge(Zn);var zW=z.object({schemaVersion:z.string(),stepLists:Ql}),WW=Zn.partial().merge(si.pick({id:true})),vm="1-255 chars; Only letters/numbers/dashes. Cannot start/end with '-'. Not '.yaml', 'none', or UUID.",lN={name:z.string().min(1).max(255).describe(vm),description:z.string().optional(),baseUrl:z.url().optional().describe("For LLM: Ask the user for the base URL if they don't provide it."),environment:z.string().optional().describe("For LLM: Do not include the variable unless the user explicitly asks for it and use the environment lookup tool to get the correct one before passing here."),browserType:z.enum(ac).optional().describe("For LLM: Never assign this variable unless the user explicitly asks for it."),viewport:fd.optional().describe("For LLM: Never assign this variable unless the user explicitly asks for it."),pathSegments:z.string().array().optional().describe("For LLM: Only use if explicitly called for by the user. Used to create the test in the correct folder. Paths are relative to the project root.")},qW=z.object(lN);fM.extend(z.object({relativeFilePath:z.string().describe("relative to project root")}).shape);var KW=z.object({name:z.string()});z.object({relativeFilePath:z.string()});var YW=z.object({name:z.string(),sourceModuleContent:dC});z.object({relativeFilePath:z.string()});var JW=z.object({name:z.string(),description:z.string(),enabled:z.boolean(),steps:z.lazy(()=>tn.array()),testFilePath:z.string().describe("relative to the project root"),folderPath:z.string().optional().describe("user selected folder path")}),XW=z.object({name:z.string(),description:z.string(),enabled:z.boolean()}).partial(),QW=z.object({folderPath:z.string()}),ZW=z.object({folderPath:z.string()});z.array(WS);var e1=z.object({defaultEnv:z.string().optional().describe("name of the default env, or undefined to unset")}),t1=z.object({configFilePath:z.string().describe("full path on disk")});z.string().array();z.object({message:z.string(),newRelativeTestPath:z.string().optional()});var cN=z.object({name:z.string(),absolutePath:z.string(),relativePath:z.string(),pathSegments:z.array(z.string()),isDirectory:z.boolean(),size:z.number(),createdAt:z.coerce.date(),modifiedAt:z.coerce.date(),accessedAt:z.coerce.date()}),n1=z.object({pathSegments:z.array(z.string())});z.object({absolutePath:z.string(),pathSegments:z.array(z.string()),contents:z.array(cN)});var o1=z.object({sourceDirectoryPath:z.string().optional(),value:z.string(),allowedExtensions:z.array(z.string()).optional()}),RSe=z.object({name:z.string(),value:z.string(),isDirectory:z.boolean()});z.object({suggestions:z.array(RSe)});var r1=z.object({pathSegments:z.array(z.string())}),i1=z.object({pathSegments:z.array(z.string()),newPathSegments:z.array(z.string())}),s1=z.object({pathSegments:z.array(z.string()),recursive:z.boolean().optional()});z.object({success:z.boolean(),message:z.string(),pathSegments:z.array(z.string()).optional()});z.object({gitBranch:z.string(),fileMtime:z.coerce.date(),gitCommitSha:z.string()});var a1=typeof process<"u"&&true&&true,dv=58889,Gg=24*60*60*1e3;var l1=z.object({id:z.string(),createdAt:z.coerce.date(),createdBy:z.string(),organizationId:z.string(),name:z.string(),description:z.string().nullish(),enabled:z.boolean(),schemaVersion:z.string().describe("Schema version for steps"),parameters:z.string().array().nullish().describe("Parameter list"),parameterEnums:z.record(z.string(),z.string().array()).nullish(),defaultParameters:z.record(z.string(),z.string()).nullish(),defaultCacheKey:z.string().nullish(),defaultCacheTtl:z.number().nullish(),defaultCacheAllInvocations:z.boolean().nullish(),autoAuth:z.boolean().nullish(),defaultRetries:z.int().min(0).nullish(),advanced:FO.nullish()});l1.extend({steps:z.lazy(()=>Lt.array())});var c1=5*60*1e3,Fb=Xn.extend(l1.omit({id:true,createdAt:true,createdBy:true,organizationId:true,enabled:true}).shape);var wSe="org_01HMJTX4GT1KG94KZRCT8MZ6YB",ISe="org_01HMSCJQBCCG51M2ZF65YC5B8W",xSe="org_01JPR6MGFQSHF3W234R3XJDPMB",_Se=[wSe,ISe,xSe];function d1(e){return _Se.includes(e)}var u1=(o=>(o.AZURE="AZURE",o.KERNEL="KERNEL",o.BROWSERBASE="BROWSERBASE",o))(u1||{}),dN=z.enum(u1);z.object({azureRegion:z.string().optional(),azureWorkspaceId:z.string().optional()});z.object({});var PSe=z.enum(["us-west-2","us-east-1","eu-central-1","ap-southeast-1"]);z.object({region:PSe.optional()});var uN=(t=>(t.TEST_REVIEW="TEST_REVIEW",t))(uN||{});var OSe=z.object({type:z.literal("DESCRIPTION_UPDATE"),thoughts:z.string()}),uv=z.discriminatedUnion("type",[OSe]),MSe=z.object({testId:z.string(),name:z.string(),orgId:z.string(),runId:z.string(),steps:tn.array(),purpose:z.enum(uN),details:uv.or(uv.array()).optional()});MSe.pick({name:true,orgId:true});var NSe=z.object({id:z.string(),name:z.string().nullish(),createdAt:z.string().pipe(z.coerce.date()).or(z.date()),organizationId:z.string(),schemaVersion:z.string(),runId:z.string().nullish(),purpose:z.enum(uN),details:uv.or(uv.array()).optional(),applied:z.boolean().nullish(),appliedAt:z.coerce.date().nullish()}),p1=NSe.extend({steps:tn.array()});var m1=z.enum(["v1","v2"]);var kSe=z.enum(["element","content","attribute","tag_name","style"]),pv=z.enum(["exists","visible","enabled","editable","focused","contains","equals","starts_with"]);[...ej,...ZG].forEach(e=>{if(!pv.options.includes(e.toLowerCase()))throw new Error(`V2CheckConditionSchema is missing option: ${e}`)});var pN={element:{aliasPrefix:"",assertionType:"ELEMENT_EXISTENCE",requiresName:false},content:{aliasPrefix:"Content",assertionType:"ELEMENT_CONTENT",requiresName:false},attribute:{aliasPrefix:"Attribute",assertionType:"ELEMENT_ATTRIBUTE",requiresName:true},tag_name:{aliasPrefix:"Name",assertionType:"ELEMENT_NAME",requiresName:false},style:{aliasPrefix:"Style",assertionType:"ELEMENT_STYLE",requiresName:true}},f1={exists:{positiveAliasSuffix:"Exists",negativeAliasSuffix:"DoesNotExist",elementCondition:"EXISTS",contentOperation:"EXISTS"},visible:{positiveAliasSuffix:"Visible",negativeAliasSuffix:"NotVisible",elementCondition:"VISIBLE"},enabled:{positiveAliasSuffix:"Enabled",negativeAliasSuffix:"NotEnabled",elementCondition:"ENABLED"},editable:{positiveAliasSuffix:"Editable",negativeAliasSuffix:"NotEditable",elementCondition:"EDITABLE"},focused:{positiveAliasSuffix:"Focused",negativeAliasSuffix:"NotFocused",elementCondition:"FOCUSED"},contains:{positiveAliasSuffix:"Contains",negativeAliasSuffix:"DoesNotContain",contentOperation:"CONTAINS"},equals:{positiveAliasSuffix:"Equals",negativeAliasSuffix:"DoesNotEqual",contentOperation:"EQUALS"},starts_with:{positiveAliasSuffix:"StartsWith",negativeAliasSuffix:"DoesNotStartWith",contentOperation:"STARTS_WITH"}},y1={ELEMENT_EXISTENCE:"element",ELEMENT_CONTENT:"content",ELEMENT_ATTRIBUTE:"attribute",ELEMENT_NAME:"tag_name",ELEMENT_STYLE:"style"};function h1(e){return {alias:mN(e),subject:e.subject,condition:e.condition,negated:e.negated,assertionType:pN[e.subject].assertionType,requiresName:pN[e.subject].requiresName,requiresValue:e.subject!=="element"&&e.condition!=="exists"}}function mN(e){let t=pN[e.subject],n=f1[e.condition];if(!S1(e.subject,e.condition))throw new Error(`Unsupported element check alias for subject '${e.subject}' and condition '${e.condition}'.`);let o=e.negated?n.negativeAliasSuffix:n.positiveAliasSuffix;return `checkElement${t.aliasPrefix}${o}`}function S1(e,t){let n=f1[t],o=n.elementCondition,r=n.contentOperation;return e==="element"?o!==void 0:r!==void 0}var DSe=kSe.options.flatMap(e=>pv.options.flatMap(t=>S1(e,t)?[h1({subject:e,condition:t,negated:false}),h1({subject:e,condition:t,negated:true})]:[])),b1=new Map(DSe.map(e=>[e.alias,e]));var FSe=z.enum(zl),BSe=z.enum(ws);function Ui(e){return b1.get(e)}function A1(e){let t=y1[e.type],n=e.type==="ELEMENT_EXISTENCE"?e.condition:e.operation;return mN({subject:t,condition:USe(n),negated:e.negated})}function E1(e){return FSe.parse(e.toUpperCase())}function Bb(e){return BSe.parse(e.toUpperCase())}function USe(e){return pv.parse(e.toLowerCase())}var Ze={saveAs:z.string().optional(),retries:z.number().optional(),skipped:z.boolean().optional(),comment:z.string().optional()};z.object(Ze);var Ub=Object.keys(Ze);function qe(e){return z.union([z.strictObject({[e.key]:e.simplified}),z.strictObject({[e.key]:e.detailed})])}function qn(e){return z.strictObject({[e.key]:e.detailed})}var C1='Coordinates must be "x, y" pixel values, e.g. "100, 200"',jg=z.union([jl,z.string().regex(/^\s*-?\d+(?:\.\d+)?\s*,\s*-?\d+(?:\.\d+)?\s*$/,C1)],{error:C1});z.union([z.string(),jl]);var Hs={css:z.string().optional(),coords:jg.optional(),x:z.union([z.number(),z.string()]).optional(),y:z.union([z.number(),z.string()]).optional()},gN={on:z.string().optional(),...Hs},Gs={...Ze,useSelector:z.boolean().optional(),force:z.boolean().optional(),DANGEROUS_FORCE_DYNAMIC:z.boolean().optional(),iframe:z.string().optional()},Hb={...Gs,offset:jg.optional()};function Hi({schema:e,descriptionKey:t,required:n=true}){return e.superRefine((o,r)=>{let s=[t in o?Object.entries(o).find(([a])=>a===t)?.[1]:void 0,"css"in o?o.css:void 0,"coords"in o?o.coords:void 0,"x"in o||"y"in o?true:void 0].filter(a=>a!==void 0).length;n&&s!==1&&r.addIssue({code:"custom",message:`Use exactly one target: ${t}, css, coords, or x/y.`}),!n&&s>1&&r.addIssue({code:"custom",message:`Use at most one target: ${t}, css, coords, or x/y.`}),("x"in o||"y"in o)&&(!("x"in o)||o.x===void 0||!("y"in o)||o.y===void 0)&&r.addIssue({code:"custom",message:"x and y must be provided together."});})}var HSe=Hi({descriptionKey:"on",schema:z.strictObject({...gN,...Hb,times:z.int().min(1).optional(),rightClick:z.boolean().optional(),waitForDownload:z.boolean().optional(),delay:z.number().optional(),downloadTimeout:z.number().optional()})}),GSe=Hi({descriptionKey:"on",schema:z.strictObject({...gN,...Hb,rightClick:z.boolean().optional(),waitForDownload:z.boolean().optional(),delay:z.number().optional(),downloadTimeout:z.number().optional()})}),jSe=Hi({descriptionKey:"on",schema:z.strictObject({...gN,...Hb,times:z.int().min(1).optional(),waitForDownload:z.boolean().optional(),delay:z.number().optional(),downloadTimeout:z.number().optional()})}),v1=qe({key:"click",simplified:z.string(),detailed:HSe}),R1=qe({key:"doubleClick",simplified:z.string(),detailed:GSe}),w1=qe({key:"rightClick",simplified:z.string(),detailed:jSe}),$Se=Hi({descriptionKey:"into",required:false,schema:z.strictObject({text:z.string(),into:z.string().optional(),...Hs,...Hb,pressEnter:z.boolean().optional(),clear:z.union([z.literal("inputs"),z.literal("always"),z.literal("never"),z.boolean()]).optional(),delay:z.number().optional()})}),I1=qe({key:"type",simplified:z.string(),detailed:$Se}),x1=qn({key:"select",detailed:Hi({descriptionKey:"from",schema:z.strictObject({from:z.string().optional(),...Hs,label:z.string().optional(),value:z.string().optional(),index:z.union([z.string(),z.number()]).optional(),...Gs})}).superRefine((e,t)=>{[e.label,e.value,e.index].filter(o=>o!==void 0).length!==1&&t.addIssue({code:"custom",message:"select requires exactly one of label, value, or index"});})}),_1=qe({key:"hover",simplified:z.string(),detailed:Hi({descriptionKey:"on",schema:z.strictObject({on:z.string().optional(),...Hs,...Hb})})}),P1=qn({key:"blur",detailed:Hi({descriptionKey:"on",required:false,schema:z.strictObject({on:z.string().optional(),...Hs,...Gs})})}),O1=qe({key:"focus",simplified:z.string(),detailed:Hi({descriptionKey:"on",schema:z.strictObject({on:z.string().optional(),...Hs,...Gs})})}),M1=qn({key:"dragAndDrop",detailed:z.strictObject({from:z.string().optional(),to:z.string().optional(),fromCss:z.string().optional(),toCss:z.string().optional(),fromCoords:jg.optional(),toCoords:jg.optional(),fromX:z.union([z.number(),z.string()]).optional(),fromY:z.union([z.number(),z.string()]).optional(),toX:z.union([z.number(),z.string()]).optional(),toY:z.union([z.number(),z.string()]).optional(),steps:z.number().optional(),hover:z.number().optional(),...Gs}).superRefine((e,t)=>{let n=[e.from,e.fromCss,e.fromCoords,e.fromX!==void 0||e.fromY!==void 0?true:void 0].filter(r=>r!==void 0).length,o=[e.to,e.toCss,e.toCoords,e.toX!==void 0||e.toY!==void 0?true:void 0].filter(r=>r!==void 0).length;n!==1&&t.addIssue({code:"custom",message:"Use exactly one from target."}),o!==1&&t.addIssue({code:"custom",message:"Use exactly one to target."}),(e.fromX!==void 0||e.fromY!==void 0)&&(e.fromX===void 0||e.fromY===void 0)&&t.addIssue({code:"custom",message:"fromX and fromY must be provided together."}),(e.toX!==void 0||e.toY!==void 0)&&(e.toX===void 0||e.toY===void 0)&&t.addIssue({code:"custom",message:"toX and toY must be provided together."});})}),N1=z.union([z.strictObject({mouseDrag:jg}),z.strictObject({mouseDrag:Hi({descriptionKey:"from",required:false,schema:z.strictObject({from:z.string().optional(),...Hs,delta:jg,steps:z.number().optional(),...Gs})})})]),L1=qe({key:"press",simplified:z.string(),detailed:z.strictObject({key:z.string(),repeat:z.number().optional(),delay:z.number().optional(),convertMeta:z.boolean().optional(),...Ze})}),k1=qe({key:"keyDown",simplified:z.string(),detailed:z.strictObject({key:z.string(),convertMeta:z.boolean().optional(),...Ze})}),D1=qe({key:"keyUp",simplified:z.string(),detailed:z.strictObject({key:z.string(),convertMeta:z.boolean().optional(),...Ze})}),F1=qe({key:"navigate",simplified:z.string(),detailed:z.strictObject({url:z.string(),timeout:z.number().optional(),...Ze})}),B1=qe({key:"newTab",simplified:z.string(),detailed:z.strictObject({url:z.string(),timeout:z.number().optional(),...Ze})}),U1=qe({key:"switchTab",simplified:z.union([z.number(),z.string()]),detailed:z.strictObject({substring:z.string().optional(),regex:z.string().optional(),index:z.union([z.string(),z.number()]).optional(),timeout:z.number().optional(),...Ze}).superRefine((e,t)=>{[e.substring,e.regex,e.index].filter(o=>o!==void 0).length!==1&&t.addIssue({code:"custom",message:"switchTab requires exactly one of substring, regex, or index"});})}),H1=qn({key:"closeTab",detailed:z.strictObject({substring:z.string().optional(),regex:z.string().optional(),index:z.union([z.string(),z.number()]).optional(),timeout:z.number().optional(),...Ze}).superRefine((e,t)=>{[e.substring,e.regex,e.index].filter(o=>o!==void 0).length<=1||t.addIssue({code:"custom",message:"closeTab accepts at most one of substring, regex, or index"});})}),G1=qn({key:"goBack",detailed:z.strictObject(Ze)}),j1=qn({key:"goForward",detailed:z.strictObject(Ze)}),$1=qn({key:"refresh",detailed:z.strictObject({timeout:z.number().optional(),...Ze})}),mv=z.enum(["goBack","goForward","refresh","paste","authSave","offline","online","blur","visualDiff","captcha","closeTab"]),V1=qe({key:"scrollUp",simplified:z.number().nonnegative(),detailed:Hi({descriptionKey:"in",required:false,schema:z.strictObject({pixels:z.number().nonnegative().optional(),in:z.string().optional(),...Hs,...Gs})})}),z1=qe({key:"scrollDown",simplified:z.number().nonnegative(),detailed:Hi({descriptionKey:"in",required:false,schema:z.strictObject({pixels:z.number().nonnegative().optional(),in:z.string().optional(),...Hs,...Gs})})}),W1=qe({key:"scrollLeft",simplified:z.number().nonnegative(),detailed:Hi({descriptionKey:"in",required:false,schema:z.strictObject({pixels:z.number().nonnegative().optional(),in:z.string().optional(),...Hs,...Gs})})}),q1=qe({key:"scrollRight",simplified:z.number().nonnegative(),detailed:Hi({descriptionKey:"in",required:false,schema:z.strictObject({pixels:z.number().nonnegative().optional(),in:z.string().optional(),...Hs,...Gs})})}),K1=qe({key:"wait",simplified:z.number(),detailed:z.strictObject({ms:z.number(),...Ze})}),VSe=qe({key:"assert",simplified:z.string(),detailed:z.strictObject({that:z.string(),timeout:z.number().optional(),DANGEROUS_FORCE_DYNAMIC:z.boolean().optional(),iframe:z.string().optional(),source:z.string().optional(),...Ze})}),zSe=qe({key:"assertVisually",simplified:z.string(),detailed:z.strictObject({that:z.string(),timeout:z.number().optional(),DANGEROUS_FORCE_DYNAMIC:z.boolean().optional(),iframe:z.string().optional(),source:z.string().optional(),...Ze})}),hv=VSe,gv=zSe,Y1=qe({key:"checkPageContains",simplified:z.string(),detailed:z.strictObject({text:z.string(),timeout:z.number().optional(),iframe:z.string().optional(),...Ze})}),J1=qe({key:"checkPageDoesNotContain",simplified:z.string(),detailed:z.strictObject({text:z.string(),timeout:z.number().optional(),iframe:z.string().optional(),...Ze})}),fN=z.union([Y1,J1]),WSe=z.record(z.string(),z.unknown().optional()),fv=WSe.superRefine((e,t)=>{let n=Object.keys(e),o=n[0];if(n.length!==1||o===void 0){t.addIssue({code:"custom",message:"element checks require exactly one checkElement... key"});return}let r=Ui(o);if(r===void 0){t.addIssue({code:"custom",message:"element checks require exactly one checkElement... key"});return}if(typeof e[r.alias]=="string")return;let i=Hi({descriptionKey:"element",schema:z.looseObject({element:z.string().optional(),...Hs,...Gs,timeout:z.number().optional(),name:z.string().optional(),value:z.string().optional()})}).safeParse(e[r.alias]);if(!i.success){t.addIssue({code:"custom",message:`element check alias '${r.alias}' must be a string target or detailed object`,path:[r.alias]});return}r.requiresName&&i.data.name===void 0&&t.addIssue({code:"custom",message:`element check alias '${r.alias}' requires a name`,path:[r.alias,"name"]}),r.requiresValue&&i.data.value===void 0&&t.addIssue({code:"custom",message:`element check alias '${r.alias}' requires a value`,path:[r.alias,"value"]});}),X1=qe({key:"extract",simplified:z.string(),detailed:z.strictObject({goal:z.string(),schema:Hu.optional(),DANGEROUS_FORCE_DYNAMIC:z.boolean().optional(),iframe:z.string().optional(),...Ze})}),Q1=qe({key:"cookie",simplified:z.string(),detailed:z.strictObject({value:z.string(),...Ze})}),Z1=qn({key:"localStorage",detailed:z.strictObject({key:z.string(),value:z.string(),...Ze})}),eq=qe({key:"request",simplified:z.string(),detailed:z.strictObject({url:z.string(),method:ad.optional(),headers:z.record(z.string(),z.string()).optional(),params:z.record(z.string(),z.string()).optional(),body:Hu.optional(),contentType:z.enum(Wl).optional(),timeout:z.number().optional(),...Ze})}),tq=qn({key:"graphqlRequest",detailed:z.strictObject({url:z.string(),query:z.string(),variables:Hu.optional(),headers:z.record(z.string(),z.string()).optional(),timeout:z.number().optional(),...Ze})}),yv=qe({key:"javascript",simplified:z.string(),detailed:z.strictObject({code:z.string(),environment:z.enum(["node","browser","NODE","BROWSER"]).optional(),fragment:z.boolean().optional(),timeout:z.number().optional(),...Ze})}),$g={substring:z.string().optional(),glob:z.string().optional(),regex:z.string().optional(),domain:z.string().optional()};function qSe(e){return [e.substring,e.glob,e.regex,e.domain].filter(t=>t!==void 0).length}function Vg(e){let t=qSe(e.payload);if(e.required&&t!==1||!e.required&&t>1){e.ctx.addIssue({code:"custom",message:e.required?"requires exactly one of substring, glob, regex, or domain":"requires at most one of substring, glob, regex, or domain"});return}!e.required&&t===0&&e.payload.method&&e.ctx.addIssue({code:"custom",message:"method requires a URL matcher"});}var nq=qn({key:"header",detailed:z.strictObject({name:z.string(),value:z.string(),...$g,method:z.string().optional(),...Ze}).superRefine((e,t)=>{Vg({payload:e,ctx:t,required:false});})}),oq=qn({key:"mock",detailed:z.strictObject({...$g,method:z.string().optional(),responseGenerator:z.string(),fetchOriginalResponse:z.boolean().optional(),key:z.string().optional(),...Ze}).superRefine((e,t)=>{Vg({payload:e,ctx:t,required:true});})}),rq=qe({key:"removeRouteMock",simplified:z.string(),detailed:z.strictObject({key:z.string().optional(),...Ze})}),iq=qe({key:"waitForUrl",simplified:z.string(),detailed:z.strictObject({...$g,caseInsensitive:z.boolean().optional(),timeout:z.number().optional(),...Ze}).superRefine((e,t)=>{Vg({payload:e,ctx:t,required:true});})}),sq=qe({key:"waitForUrlNotToMatch",simplified:z.string(),detailed:z.strictObject({...$g,caseInsensitive:z.boolean().optional(),timeout:z.number().optional(),...Ze}).superRefine((e,t)=>{Vg({payload:e,ctx:t,required:true});})}),KSe=z.union([iq,sq]),aq=qe({key:"dialog",simplified:z.enum(["ACCEPT","DISMISS"]),detailed:z.strictObject({action:z.enum(["ACCEPT","DISMISS"]),...Ze})}),lq=qe({key:"fileUpload",simplified:z.string(),detailed:z.strictObject({path:z.string(),name:z.string().optional(),...Ze})}),cq=qe({key:"copy",simplified:z.union([z.string(),z.boolean(),z.null()]),detailed:z.strictObject({value:z.union([z.string(),z.boolean(),z.null()]),...Ze})}),dq=qn({key:"paste",detailed:z.strictObject(Ze)}),uq=qn({key:"captcha",detailed:z.strictObject({...Gs})}),YSe=z.strictObject({data:z.union([z.string(),el]),width:z.number(),height:z.number()}),pq=qe({key:"visualDiff",simplified:z.string(),detailed:Hi({descriptionKey:"on",required:false,schema:z.strictObject({on:z.string().optional(),...Hs,threshold:z.number().optional(),screenshot:YSe.optional(),...Gs})})}),mq=qn({key:"offline",detailed:z.strictObject(Ze)}),hq=qn({key:"online",detailed:z.strictObject(Ze)}),gq=qn({key:"registerRequestListener",detailed:z.strictObject({...$g,key:z.string(),method:z.string().optional(),...Ze}).superRefine((e,t)=>{Vg({payload:e,ctx:t,required:true});})}),fq=qe({key:"awaitListener",simplified:z.string(),detailed:z.strictObject({key:z.string(),timeout:z.number().optional(),...Ze})}),yq=qn({key:"recordRequests",detailed:z.strictObject({...$g,key:z.string(),method:z.string().optional(),...Ze}).superRefine((e,t)=>{Vg({payload:e,ctx:t,required:true});})}),Sq=qe({key:"getRecordedRequests",simplified:z.string(),detailed:z.strictObject({key:z.string(),...Ze})}),bq=qe({key:"authLoad",simplified:z.string(),detailed:z.strictObject({path:z.string(),...Ze})}),Tq=qe({key:"authSave",simplified:z.string(),detailed:z.strictObject({path:z.string().optional(),...Ze})});z.union([v1,R1,w1,U1,H1,I1,x1,_1,P1,O1,M1,N1,L1,k1,D1,F1,B1,G1,j1,$1,V1,z1,W1,q1,K1,hv,gv,fN,X1,Q1,Z1,eq,tq,yv,nq,oq,rq,KSe,aq,lq,cq,dq,uq,pq,mq,hq,gq,fq,yq,Sq,bq,Tq,fv]);var Aq=new Map([["click",v1],["doubleClick",R1],["rightClick",w1],["switchTab",U1],["closeTab",H1],["type",I1],["select",x1],["hover",_1],["blur",P1],["focus",O1],["dragAndDrop",M1],["mouseDrag",N1],["press",L1],["keyDown",k1],["keyUp",D1],["navigate",F1],["newTab",B1],["goBack",G1],["goForward",j1],["refresh",$1],["scrollUp",V1],["scrollDown",z1],["scrollLeft",W1],["scrollRight",q1],["wait",K1],["assert",hv],["assertVisually",gv],["checkPageContains",Y1],["checkPageDoesNotContain",J1],["extract",X1],["cookie",Q1],["localStorage",Z1],["request",eq],["graphqlRequest",tq],["javascript",yv],["header",nq],["mock",oq],["removeRouteMock",rq],["waitForUrl",iq],["waitForUrlNotToMatch",sq],["dialog",aq],["fileUpload",lq],["copy",cq],["paste",dq],["captcha",uq],["visualDiff",pq],["offline",mq],["online",hq],["registerRequestListener",gq],["awaitListener",fq],["recordRequests",yq],["getRecordedRequests",Sq],["authLoad",bq],["authSave",Tq]]),Eq=Object.freeze([...Aq.keys()]),fc=z.custom().superRefine((e,t)=>{if(typeof e!="object"||e===null){t.addIssue({code:"custom",message:"Steps must be objects with exactly one action key."});return}let n=Object.keys(e),o=n[0];if(n.length!==1||o===void 0){t.addIssue({code:"custom",message:"Steps must have exactly one action key."});return}let r=Aq.get(o)??(Ui(o)?fv:void 0);if(!r){t.addIssue({code:"custom",message:`Unsupported step type '${o}'.`});return}let i=r.safeParse(e);if(!i.success){let s=JSe(i.error.issues,o);s.length>0&&Cq(t,s);}});function JSe(e,t){return XSe(e).filter(n=>!QSe(n,t))}function Cq(e,t){for(let n of t){if(n.code==="invalid_union"){Cq(e,yN(n));continue}e.addIssue({...n});}}function XSe(e){let t=[];for(let n of e){if(n.code==="invalid_union"){t.push(...yN(n));continue}t.push(n);}return t}function QSe(e,t){return e.code!=="unrecognized_keys"?false:t===void 0?e.path.length===0:e.path.length===1&&e.path[0]===t}function yN(e){let t=e.errors[0]??[],n=hN(t);for(let o of e.errors.slice(1)){let r=hN(o);r>n&&(t=o,n=r);}return t}function hN(e){return e.reduce((t,n)=>{let o=n.code==="invalid_union"?hN(yN(n)):0;return t+n.path.length+o},0)}var vq=z.strictObject({string:z.string()}),ZSe=z.strictObject({javascript:z.string()}),Rq=z.union([vq,ZSe]),ebe=z.union([z.strictObject({name:z.string(),required:z.boolean().optional(),default:vq.optional()}),z.strictObject({name:z.string(),required:z.boolean().optional(),defaultValue:z.string()})]),wq=ebe.array(),tbe=z.strictObject({name:z.string(),default:Rq.optional(),enum:z.array(z.string()).optional()}),Iq=tbe.array(),Gb=z.union([Rq,z.string()]),xq=z.record(z.string(),Gb);var nbe=z.preprocess(e=>typeof e=="number"?String(e):e,RO),Sv=z.looseObject({goal:z.string(),version:nbe.optional(),...Ze}),obe=z.union([z.strictObject({act:z.string()}),z.strictObject({act:Sv})]),SN=z.looseObject({path:z.string(),inputs:z.record(z.string(),Gb).optional(),...Ze}),rbe=z.union([z.strictObject({module:z.string()}),z.strictObject({module:SN})]),Rd=z.union([hv,gv,fN,yv,fv]),ibe=new Set(["then",...Ub]),sbe=z.looseObject({then:z.lazy(()=>pl.array()),...Ze}).superRefine((e,t)=>{Object.entries(e).filter(([o,r])=>!ibe.has(o)&&Rd.safeParse({[o]:r}).success).length!==1&&t.addIssue({code:"custom",message:"Conditional steps require exactly one assertion condition at the top level."});}),abe=z.strictObject({if:sbe}),lbe=new Set(["do","maxIterations",...Ub]),cbe=z.looseObject({do:z.lazy(()=>pl.array()),maxIterations:z.number().int().positive().optional(),...Ze}).superRefine((e,t)=>{let n=Object.entries(e).filter(([o,r])=>!lbe.has(o)&&Rd.safeParse({[o]:r}).success).length;if(n>1){t.addIssue({code:"custom",message:"While loops accept at most one condition at the top level."});return}n===0&&e.maxIterations===void 0&&t.addIssue({code:"custom",message:"While loops require a condition or a maximum number of iterations."});}),dbe=z.strictObject({while:cbe}),pl=z.lazy(()=>z.union([mv,obe,rbe,abe,dbe,fc]));z.object({before:pl.array().optional(),steps:pl.array(),after:pl.array().optional()});var ube=z.union([fd,z.string().refine(e=>{let t=e.match(/^\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\s*$/);if(!t)return false;let[,n,o]=t;return fd.safeParse({width:Number(n),height:Number(o)}).success},"Viewport must be two numeric values, e.g. 1920, 1080")]),pbe=Ns.omit({viewport:true}).extend({viewport:ube.optional()}),bN=z.object({id:vo,version:z.string().optional(),url:pC.optional(),description:z.string().optional(),retries:z.number().optional(),defaultEnv:z.string().optional(),parameters:wq.optional(),outputs:DC.optional(),disabled:z.boolean().optional(),labels:z.array(z.string()).optional()}).extend(pbe.shape),ju=z.looseObject({fileType:z.literal(ke.TEST_V2)}).extend(bN.shape).extend({before:pl.array().optional(),steps:pl.array(),after:pl.array().optional()});var mbe=z.array(z.string()),hbe=z.union([z.string(),z.record(z.string(),z.unknown().optional())]),bv=Xn.omit({moduleId:true,name:true,parameters:true,defaultParameters:true,parameterEnums:true}).extend({id:vo,version:z.string().optional(),name:z.string().optional(),parameters:z.union([Iq,mbe]).optional(),defaultParameters:z.record(z.string(),z.string()).optional(),parameterEnums:z.record(z.string(),z.array(z.string())).optional()}),Tv=z.looseObject(bv.extend({fileType:z.literal(ke.MODULE_V2),steps:hbe.array().optional()}).shape).superRefine(Pq),Av=z.looseObject(bv.extend({fileType:z.literal(ke.MODULE_V2),steps:pl.array().optional()}).shape).superRefine(Pq);function _q(e){return e.steps??[]}function Pq(e,t){"main"in e&&t.addIssue({code:"custom",message:"v2 modules must use steps, not main",path:["main"]});}var TN=(n=>(n.TEST="TEST",n.MODULE="MODULE",n))(TN||{}),gbe=z.enum(TN),Oq=z.object({orgId:z.string(),entityType:gbe,entityId:z.string()}),AN=Oq.extend({entityType:z.literal("TEST"),stepLists:nl}),EN=Oq.extend({entityType:z.literal("MODULE"),steps:Lt.array()});z.discriminatedUnion("entityType",[AN,EN]);var Mq=(o=>(o.WEB="web",o.ANDROID="android",o.IOS="ios",o))(Mq||{}),CN=z.nativeEnum(Mq);var Nq=z.object({entity_type:z.string(),value:z.string(),schema_version:z.string().optional()}),Lq=RS(Nq),kq=Nq.extend({cache_key:z.string()});function jb({entityType:e,entityId:t}){return `${e}:${t}`}var Im=z.string();var Dq='Coordinates must be "x, y" pixel values, e.g. "100, 200"',Hq=z.union([jl,z.string().regex(/^\s*-?\d+(?:\.\d+)?\s*,\s*-?\d+(?:\.\d+)?\s*$/,Dq)],{error:Dq}),Fq='Percent must be a number or a percent string, e.g. 90 or "90%"',Gq=z.union([z.number(),z.string().regex(/^-?\d+(?:\.\d+)?%$/,Fq)],{error:Fq}).transform(e=>typeof e=="number"?e:Number(e.slice(0,-1))).pipe(z.number().min(0,{message:"Percent must be >= 0"}).max(100,{message:"Percent must be <= 100"})),fbe=z.strictObject({x:z.number(),y:z.number(),delta:z.number()}),jq=z.union([z.string(),fbe]),Pn={...Ze,DANGEROUS_FORCE_DYNAMIC:z.boolean().optional()},ybe=["home","power","back","app_switcher","search","volume_up","volume_down","volume_mute"],Sbe=["enter","backspace","close_keyboard"],Bq=["airplane_mode","data","wifi","location"],Uq=["portrait","landscape"],bbe=z.strictObject({on:Im.optional(),longPress:z.boolean().optional(),longPressDuration:z.number().optional(),iterations:z.number().optional(),tapDelay:z.number().optional(),offset:Hq.optional(),...Pn}),$q=qe({key:"tap",simplified:Im,detailed:bbe}),Tbe=z.strictObject({text:z.string(),into:Im.optional(),clearContent:z.boolean().optional(),forceClearContent:z.boolean().optional(),delay:z.number().optional(),replaceStrategy:z.nativeEnum(bb).optional(),keyPressDelay:z.number().optional(),...Pn}),Vq=qe({key:"type",simplified:z.string(),detailed:Tbe}),zq=z.enum(ybe),Abe=z.strictObject({key:zq,longPress:z.boolean().optional(),...Pn}),Wq=qe({key:"press",simplified:zq,detailed:Abe}),qq=z.enum(Sbe),Ebe=z.strictObject({key:qq,repeat:z.number().optional(),delay:z.number().optional(),keyPressDelay:z.number().optional(),...Pn}),Kq=qe({key:"pressKey",simplified:qq,detailed:Ebe}),Cbe=z.strictObject({package:z.string(),activity:z.string().optional(),intentExtras:z.string().optional(),...Pn}),Yq=qe({key:"openApp",simplified:z.string(),detailed:Cbe}),Jq=qn({key:"killApp",detailed:z.strictObject(Pn)}),Xq=qn({key:"openNotifications",detailed:z.strictObject(Pn)}),Qq=z.enum(["up","down","left","right"]),vbe=z.strictObject({direction:Qq,in:jq.optional(),viewportPercent:Gq.optional(),duration:z.number().optional(),offset:Hq.optional(),...Pn}),Zq=qe({key:"swipe",simplified:Qq,detailed:vbe}),Rbe=z.enum(["up","down"]),wbe=z.strictObject({on:Im,direction:Rbe.optional(),in:jq.optional(),scrollStepPercent:Gq.optional(),maxScrollAttempts:z.number().optional(),...Pn}),e2=qe({key:"scrollTo",simplified:z.string(),detailed:wbe}),vN=qe({key:"assert",simplified:z.string(),detailed:z.strictObject({that:z.string(),timeout:z.number().optional(),...Pn})}),RN=qe({key:"assertVisually",simplified:z.string(),detailed:z.strictObject({that:z.string(),timeout:z.number().optional(),...Pn})}),t2=qe({key:"extract",simplified:z.string(),detailed:z.strictObject({goal:z.string(),schema:Hu.optional(),...Pn})}),n2=qe({key:"checkScreenContains",simplified:z.string(),detailed:z.strictObject({text:z.string(),timeout:z.number().optional(),...Pn})}),o2=qe({key:"checkScreenDoesNotContain",simplified:z.string(),detailed:z.strictObject({text:z.string(),timeout:z.number().optional(),...Pn})}),r2=z.union([n2,o2]),Ibe=z.record(z.string(),z.unknown().optional()),wN=Ibe.superRefine((e,t)=>{let n=Object.keys(e),o=n[0];if(n.length!==1||o===void 0){t.addIssue({code:"custom",message:"element checks require exactly one checkElement... key"});return}let r=Ui(o);if(r===void 0){t.addIssue({code:"custom",message:"element checks require exactly one checkElement... key"});return}if(typeof e[r.alias]=="string")return;let i=z.looseObject({on:Im.optional(),timeout:z.number().optional(),name:z.string().optional(),value:z.string().optional(),...Pn}).safeParse(e[r.alias]);if(!i.success){t.addIssue({code:"custom",message:`element check alias '${r.alias}' must be a string target or detailed object`,path:[r.alias]});return}i.data.on===void 0&&t.addIssue({code:"custom",message:`element check alias '${r.alias}' requires a target via 'on'`,path:[r.alias,"on"]}),r.requiresName&&i.data.name===void 0&&t.addIssue({code:"custom",message:`element check alias '${r.alias}' requires a name`,path:[r.alias,"name"]}),r.requiresValue&&i.data.value===void 0&&t.addIssue({code:"custom",message:`element check alias '${r.alias}' requires a value`,path:[r.alias,"value"]});}),xbe=z.strictObject({from:Im,to:Im,hoverDuration:z.number().optional(),dragDuration:z.number().optional(),...Pn}),i2=qn({key:"dragAndDrop",detailed:xbe}),IN=qe({key:"javascript",simplified:z.string(),detailed:z.strictObject({code:z.string(),timeout:z.number().optional(),...Pn})}),s2=qe({key:"request",simplified:z.string(),detailed:z.strictObject({url:z.string(),method:ad.optional(),headers:z.record(z.string(),z.string()).optional(),params:z.record(z.string(),z.string()).optional(),body:z.string().optional(),bodyType:z.nativeEnum(Wl).optional(),timeout:z.number().optional(),...Pn})}),a2=qe({key:"wait",simplified:z.number(),detailed:z.strictObject({ms:z.number(),...Pn})}),l2=qe({key:"visualDiff",simplified:z.string(),detailed:z.strictObject({path:z.string(),threshold:z.number().min(0).max(1).optional(),...Pn})}),c2=qn({key:"addFile",detailed:z.strictObject({path:z.string(),location:z.string(),...Pn})}),d2=qe({key:"installApp",simplified:z.string(),detailed:z.strictObject({path:z.string(),...Pn})}),u2=qe({key:"uninstallApp",simplified:z.string(),detailed:z.strictObject({package:z.string(),...Pn})}),p2=qe({key:"toggleSettings",simplified:z.enum(Bq),detailed:z.strictObject({setting:z.enum(Bq),...Pn})}),m2=qe({key:"rotate",simplified:z.enum(Uq),detailed:z.strictObject({orientation:z.enum(Uq),...Pn})}),h2=qe({key:"adb",simplified:z.string(),detailed:z.strictObject({command:z.string(),args:z.string().optional(),...Pn})}),g2=qn({key:"appium",detailed:z.strictObject({script:z.string(),args:z.string().optional(),...Pn})}),f2=qn({key:"debugState",detailed:z.strictObject(Pn)}),y2=z.enum(["killApp","openNotifications","debugState"]);z.union([$q,Vq,Wq,Kq,Yq,Jq,Xq,Zq,e2,vN,RN,t2,r2,i2,IN,s2,a2,l2,c2,d2,u2,p2,m2,h2,g2,f2,wN]);var S2=new Map([["tap",$q],["type",Vq],["press",Wq],["pressKey",Kq],["openApp",Yq],["killApp",Jq],["openNotifications",Xq],["swipe",Zq],["scrollTo",e2],["assert",vN],["assertVisually",RN],["extract",t2],["checkScreenContains",n2],["checkScreenDoesNotContain",o2],["dragAndDrop",i2],["javascript",IN],["request",s2],["wait",a2],["visualDiff",l2],["addFile",c2],["installApp",d2],["uninstallApp",u2],["toggleSettings",p2],["rotate",m2],["adb",h2],["appium",g2],["debugState",f2]]);Object.freeze([...S2.keys()]);var b2=z.custom().superRefine((e,t)=>{if(typeof e!="object"||e===null){t.addIssue({code:"custom",message:"v2 mobile commands must be objects with exactly one action key."});return}let n=Object.keys(e),o=n[0];if(n.length!==1||o===void 0){t.addIssue({code:"custom",message:"v2 mobile commands must have exactly one action key."});return}let r=S2.get(o)??(Ui(o)?wN:void 0);if(!r){t.addIssue({code:"custom",message:`Unsupported v2 mobile command '${o}'.`});return}let i=r.safeParse(e);if(!i.success)for(let s of i.error.issues)t.addIssue({...s});}),T2=z.union([vN,RN,r2,IN,wN]);var _be=z.preprocess(e=>typeof e=="number"?String(e):e,FM),Pbe=z.looseObject({goal:z.string(),version:_be.optional(),precondition:z.string().optional(),postcondition:z.string().optional(),...Ze}),Obe=z.union([z.strictObject({act:z.string()}),z.strictObject({act:Pbe})]),Mbe=z.looseObject({path:z.string(),inputs:z.record(z.string(),Gb).optional(),...Ze}),Nbe=z.union([z.strictObject({module:z.string()}),z.strictObject({module:Mbe})]),Lbe=new Set(["then",...Ub]),kbe=z.looseObject({then:z.lazy(()=>yc.array()),...Ze}).superRefine((e,t)=>{if("else"in e){t.addIssue({code:"custom",message:"v2 mobile conditionals do not support 'else'. Use a separate step instead.",path:["else"]});return}Object.entries(e).filter(([o,r])=>!Lbe.has(o)&&T2.safeParse({[o]:r}).success).length!==1&&t.addIssue({code:"custom",message:"v2 mobile conditional steps require exactly one assertion condition at the top level."});}),Dbe=z.strictObject({if:kbe}),yc=z.lazy(()=>z.union([y2,Obe,Nbe,Dbe,b2]));z.object({before:yc.array().optional(),steps:yc.array(),after:yc.array().optional()});var xN=["android","ios"],Fbe=z.literal("android"),Bbe=z.literal("ios");z.enum(xN);function Ev(e){if(typeof e!="object"||e===null)return e;let t=e;if(typeof t.platform!="string")return e;let n=t.platform.toLowerCase();return n===t.platform?e:{...t,platform:n}}var A2=Bg.omit({schemaVersion:true,settings:true,platform:true}).extend({version:z.string().optional(),platform:Fbe,...wb.shape}),E2=Ug.omit({schemaVersion:true,settings:true,platform:true}).extend({version:z.string().optional(),platform:Bbe,...wb.shape}),Ube=z.discriminatedUnion("platform",[A2,E2]),C2=z.preprocess(Ev,Ube),v2={before:yc.array().optional(),steps:yc.array(),after:yc.array().optional()},R2=z.looseObject({fileType:z.literal(ke.MOBILE_TEST_V2)}).extend(A2.shape).extend(v2);z.preprocess(Ev,R2);var w2=z.looseObject({fileType:z.literal(ke.MOBILE_TEST_V2)}).extend(E2.shape).extend(v2);z.preprocess(Ev,w2);var Hbe=z.discriminatedUnion("platform",[R2,w2]);z.preprocess(Ev,Hbe);var Gbe=z.preprocess(e=>typeof e=="string"?e.toLowerCase():e,z.enum(xN).optional().default("android")),Cv=tv.omit({moduleId:true,name:true,schemaVersion:true,platform:true}).extend({id:vo,name:z.string().optional(),version:z.string().optional(),platform:Gbe});z.looseObject(Cv.extend({fileType:z.literal(ke.MOBILE_MODULE_V2),steps:z.array(z.record(z.string(),z.unknown().optional())).optional()}).shape);z.looseObject(Cv.extend({fileType:z.literal(ke.MOBILE_MODULE_V2),steps:yc.array().optional()}).shape);var vv="x-momentic-cli-version",x2="x-momentic-client-mode",Rv="x-momentic-runner",_2="x-momentic-cli-type",P2="x-momentic-logger-tags",jbe="x-momentic-main-branch-name",$be="x-momentic-branch-name",Vbe="x-momentic-commit-timestamp",zbe="x-momentic-last-commit-on-main",Wbe="x-momentic-last-commit-on-main-timestamp",qbe="x-momentic-merged-branch-name",O2="x-momentic-session-id",M2="x-momentic-parent-trace-id";O.object({error:O.boolean(),reason:O.string(),message:O.string()});hr.merge(gM);var N2=YE;hr.merge(gM);hr.merge(MV).extend({useConsensus:O.boolean().optional(),attemptNumber:O.number().optional()});var _N=QG;hr.merge(NV);var L2=T$;hr.merge(xV);var k2=yC;hr.merge(WG);hr.merge(_V);var D2=y$;hr.merge(PV);hr.merge(OV);hr.merge(FV);hr.merge(BV);O.object({testPaths:O.string().array().describe("can be either hyphenated, lowercase test names or UUIDs"),env:O.string().optional(),all:O.boolean().optional(),urlOverride:O.string().optional(),customHeaders:O.record(O.string(),O.string()).optional(),testInputMatrix:O.record(O.string(),O.string()).array().optional()});var F2=O.object({queuedTests:O.unknown().optional().array(),runIds:O.guid().array(),runGroupId:O.string().optional()});O.string().array();O.union([O.object({paths:O.string().array().describe("Export specific test paths or folder paths (e.g. todo-test, auth/onboarding)"),all:O.boolean().describe("run all tests").optional()}),O.object({path:O.string().describe("deprecated; present for backcompat")})]);var Kbe=O.object({tests:O.record(O.string().describe("Test name (keys correspond to entries in `tests`)"),O.string().describe("Slash-separated folder name path that the test lives in (e.g. 'Auth/Login'). Top-level entities are omitted.")),modules:O.record(O.string().describe("Module name (keys correspond to entries in `modules`)"),O.string().describe("Slash-separated folder name path that the module lives in."))}),B2=O.object({tests:O.record(O.string().describe("Test name"),O.string().describe("Test YAML")),modules:O.record(O.string().describe("Module name"),O.string().describe("Module YAML")),folderPaths:Kbe.optional().describe("Optional map from exported entity name to its slash-separated cloud folder path. Used by the CLI to recreate folder structure on disk.")}),Ybe=O.object({test:O.string().describe("test YAML"),modules:O.record(O.string().describe("moduleId"),O.string().describe("module YAML"))});Ybe.array();O.object({testId:O.string(),schemaVersion:O.string()}).merge(dd);function wv(e){let{gitMainBranch:t,gitBranchName:n,gitCommitTimestamp:o,lastCommitOnMainSha:r,lastCommitOnMainTimestamp:i}=e,s={};return t&&(s[jbe]=encodeURIComponent(t)),n&&(s[$be]=encodeURIComponent(n)),o&&(s[Vbe]=o.toISOString()),r&&(s[zbe]=encodeURIComponent(r)),i&&(s[Wbe]=i.toISOString()),e.mergedGitBranchName&&(s[qbe]=encodeURIComponent(e.mergedGitBranchName)),s}O.object({entries:O.array(Hj)});O.object({platform:CN.optional(),entries:O.array(Lq)});O.object({testId:O.string(),environment:O.string().optional(),platform:CN.optional()});O.object({testId:O.string(),key:O.string(),environment:O.string().optional()});function U2(e){return O.record(O.string(),O.unknown().optional()).transform(t=>{let n={};for(let[o,r]of Object.entries(t)){let i=e.safeParse(r);i.success&&(n[o]=i.data);}return n})}var H2=U2(Gj),G2=kq.array();function I2(e){return U2(wS(e))}var j2={ANDROID:e=>I2(rv).parse(e),IOS:e=>I2(iv).parse(e)},Jbe=O.object({id:O.string(),completionType:O.string(),description:O.string().optional(),thoughts:O.string(),result:O.string(),sessionType:O.string(),timeCreated:O.string().optional(),citations:O.array($o).optional()}),Xbe=O.object({id:O.string(),assertion:O.string().optional(),result:O.string(),thoughts:O.string(),sessionType:O.string(),timeCreated:O.string().optional(),citations:O.array($o).optional()});O.object({completionType:O.string(),traceIds:O.string().array()});var PN=O.union([Jbe,Xbe]).array(),$2=O.object({trigger:O.nativeEnum(Ls),status:O.nativeEnum(ht),startedAt:O.coerce.date().optional(),gitCommitSha:O.string().optional(),gitCommitShaShort:O.string().optional(),gitCommitTimestamp:O.coerce.date().optional(),gitBranchName:O.string().optional(),gitOriginUrl:O.string().optional(),gitCommitMessage:O.string().optional(),gitCommitAuthorName:O.string().optional(),githubRepository:O.string().optional(),gitlabProjectPath:O.string().optional(),pipelineId:O.string().optional(),cliVersion:O.string().optional()});O.object({id:O.string()});var V2=O.object({status:O.nativeEnum(ht),updatedAt:O.coerce.date().optional(),finishedAt:O.coerce.date().optional()});O.object({summary:Sm,githubRepository:O.string().optional(),gitBranchName:O.string().optional()});O.object({updates:O.object({runId:O.string(),healStatus:nb,healDetails:eb.optional()}).array()});var z2=O.object({stepsSnapshot:O.array(O.record(O.string(),O.unknown().optional())).optional(),beforeStepsSnapshot:O.array(O.record(O.string(),O.unknown().optional())).optional(),afterStepsSnapshot:O.array(O.record(O.string(),O.unknown().optional())).optional(),runGroupId:O.string().optional(),testId:O.string(),testName:O.string(),resolvedBaseUrl:O.string().optional(),environmentName:O.string().optional(),labels:O.array(O.string()).optional(),cliVersion:O.string().optional(),trigger:O.nativeEnum(Ls),schemaVersion:O.string().optional(),section:O.nativeEnum(FC).optional(),resolvedInputs:O.record(O.string(),O.string()).optional(),quarantined:O.boolean().optional().default(false),quarantinedReason:O.string().optional(),aiSettings:ga.optional()});O.object({id:O.string()});var Qbe=pM.pick({id:true,status:true,healStatus:true,healDetails:true,testName:true,testId:true,test:true,failureReason:true,failureDetails:true}),W2=Qbe.array(),q2=pM.pick({startedAt:true,finishedAt:true,updatedAt:true,results:true,beforeResults:true,afterResults:true,status:true,healStatus:true,healDetails:true,failureDetails:true,failureReason:true,failureRecoveryDetails:true,resolvedBaseUrl:true,environmentName:true,labels:true,cliVersion:true,resolvedInputs:true,attempts:true,flake:true,aiSettings:true}).partial();O.object({id:O.string()});var K2=O.object({run:ss.omit({runAttempts:true}),attemptZipUrls:O.array(O.string().url().nullish())}),Y2=O.object({status:O.nativeEnum(ht),finishedAt:O.coerce.date().optional(),schemaVersion:O.string().optional().default("1.0.19"),results:O.record(O.string(),O.unknown().optional()).array().optional(),beforeResults:O.record(O.string(),O.unknown().optional()).array().optional(),afterResults:O.record(O.string(),O.unknown().optional()).array().optional()});O.object({screenshot:O.string(),contentType:O.enum(["image/jpeg","image/png"]).optional()});O.object({id:O.string(),screenshot:O.string(),contentType:O.enum(["image/jpeg","image/png"])});var J2=O.object({key:O.string()}),X2=O.object({orgId:O.string(),userId:O.string(),email:O.string().optional(),name:O.string().optional(),pylonEmailHash:O.string().optional(),selfServe:O.boolean().optional()}),Q2=O.object({blocked:O.boolean()}),Z2=O.array(k$);O.record(O.string(),O.union([O.string(),O.boolean()]));O.object({workosAccessToken:O.string().min(1),organizationId:O.string().optional(),clientName:O.string().min(1).max(80).optional()});var eK=O.object({apiKey:O.string(),apiKeyName:O.string(),organizationId:O.string(),user:O.object({id:O.string(),email:O.string().optional()}),selfServe:O.boolean().optional()}),tK=O.object({error:O.literal("multiple_organizations"),organizations:O.array(O.object({id:O.string(),name:O.string()}))}),Zbe=["web","ios","android"];O.object({platforms:O.array(O.enum(Zbe)),packageManager:O.enum(["npm","pnpm","yarn","bun"]),wizardVersion:O.string().min(1).max(40),cliVersions:O.object({momentic:O.string().max(40).optional(),momenticMobile:O.string().max(40).optional()}).optional(),firstRunIds:O.array(O.guid()).max(10).optional()});O.object({ok:O.literal(true)});O.object({paths:O.string().array(),env:O.string().optional(),urlOverride:O.string().optional(),customHeaders:O.record(O.string(),O.string()).optional()});var nK=O.object({suiteRunIds:O.string().array(),runGroupIds:O.string().array()});O.object({suiteRunIds:O.string().array()});CV.array();O.object({runGroupIds:O.string().array()});var ON=O.object({uploadUrl:O.string()});hr.merge(LV);hr.merge(DV);hr.merge(kV);var eTe=O.object({testId:O.string().optional().default(""),testName:O.string().optional().default(""),suiteId:O.string().optional().default(""),suiteName:O.string().optional().default(""),isInteractive:O.boolean().optional().default(false),runner:O.nativeEnum(as).optional(),creditsUsed:O.number().optional(),stepsExecuted:O.number().optional(),tokensUsed:O.number().optional()}),tTe=O.object({transactionId:O.string(),timestamp:O.string(),event:O.nativeEnum(kg),properties:eTe});tTe.array();var oK=p1.omit({steps:true}).extend({steps:O.array(O.record(O.string(),O.unknown().optional())).describe("unparsed ResolvedStep[]")});O.object({limit:O.number().min(1).max(10).optional(),page:O.number().min(1).optional(),start:Eo.optional(),end:Eo.optional(),gitBranchName:O.string().optional(),status:O.nativeEnum(ht).optional()});var rK=uV.array(),nTe=O.object({testId:vo.optional(),gitBranchName:O.string().optional(),gitCommitSha:O.string().optional(),status:O.nativeEnum(ht).optional(),label:O.string().array().optional(),limit:O.number().min(1).max(100).optional(),page:O.number().min(1).optional(),start:Eo.optional(),end:Eo.optional(),quarantined:O.boolean().optional(),recovered:O.boolean().optional(),includeFailureDetails:O.boolean().optional()});nTe.extend({orgId:O.string().optional(),testId:mr(vo),status:mr(O.nativeEnum(ht)),gitBranchName:mr(O.string()),label:mr(O.string()),testName:O.string().optional(),trigger:mr(O.nativeEnum(Ls)),executionType:mr(Mu),cliVersion:mr(O.string()),githubRepository:mr(O.string()),gitlabProjectPath:mr(O.string()),environment:mr(O.string()),directory:mr(O.string()),failureCategory:mr(O.string()),exclude:mr(O.string()),healed:O.boolean().optional()});var oTe=ss.omit({test:true}),iK=O.object({runs:oTe.array(),page:O.number(),pageSize:O.number(),pageCount:O.number()});O.object({applied:O.boolean().optional(),appliedAt:O.coerce.date().optional()});var sK=ON.extend({id:O.string()});O.object({runGroupId:O.guid().optional(),persist:O.boolean().optional()});var aK=O.object({runGroupId:O.guid()}),lK=O.object({quarantined:O.object({testId:vo,quarantinedAt:O.coerce.date(),quarantinedBy:O.string().optional(),quarantinedReason:O.string()}).array()}),cK=O.object({gitLocalUsername:O.string().optional(),gitLocalEmail:O.string().optional(),gitLocalName:O.string().optional()});O.object({testId:vo,testName:O.string().optional(),reason:O.string()}).merge(cK);O.object({testName:O.string().optional(),reason:O.string().optional()}).merge(cK);hr.merge(Vz);hr.merge(zz);hr.merge(Wz);O.object({apkToInstall:O.object({channel:O.string(),tag:O.string().optional()}).optional(),hostname:O.string().optional(),region:ZM.optional(),osVersion:O.nativeEnum(Fg).optional(),sessionId:O.string().optional(),playwrightVersion:nW.optional()});var dK=O.object({name:O.string(),apiUrl:O.string(),webRtcUrl:O.string(),adbUrl:O.string(),token:O.string(),apkDownloadUrl:O.string().optional(),playwrightServerUrl:O.string().optional(),region:O.string().optional(),resolvedTag:O.string().optional()});O.object({appToInstall:O.object({channel:O.string(),tag:O.string().optional()}).optional(),hostname:O.string().optional(),region:ZM.optional(),osVersion:O.nativeEnum(sv).optional(),sessionId:O.string().optional(),installAppOnClient:O.boolean().optional()});var uK=O.object({id:O.string(),apiUrl:O.string(),webRtcUrl:O.string(),wdaUrl:O.string(),token:O.string(),appDownloadUrl:O.string().optional(),appMd5:O.string().optional(),region:O.string().optional(),resolvedTag:O.string().optional()});O.object({channel:O.string().trim().min(1,"channel must be a non-empty string"),tag:O.string().trim().min(1,"tag must be a non-empty string"),md5:O.string()});var pK=O.object({id:O.string(),uploadUrl:O.string().optional(),downloadUrl:O.string(),md5:O.string().optional()}),rTe=O.object({channel:O.string(),tag:O.string(),md5:O.string(),platform:O.nativeEnum(sl).default("ANDROID"),createdAt:O.number().describe("Unix timestamp in milliseconds")}),mK=O.object({assets:O.array(rTe)}),hK=O.object({downloadUrl:O.string()}),MN=(n=>(n.PLAYWRIGHT="PLAYWRIGHT",n.CDP="CDP",n))(MN||{}),iTe=O.nativeEnum(MN);O.object({runId:O.guid().optional(),attemptedProviders:O.array(dN).optional()});var gK=O.object({wsEndpoint:O.string(),accessToken:O.string().optional(),endpointType:iTe.optional(),provider:dN.optional()});z.object({repositoriesIndexed:z.boolean(),indexingInProgress:z.boolean(),indexesOutdated:z.boolean()});var fK=(s=>(s.Queued="queued",s.InProgress="in_progress",s.Completed="completed",s.Waiting="waiting",s.Requested="requested",s.Pending="pending",s))(fK||{}),yK=(a=>(a.Success="success",a.Failure="failure",a.Neutral="neutral",a.Cancelled="cancelled",a.Skipped="skipped",a.TimedOut="timed_out",a.ActionRequired="action_required",a))(yK||{});z.object({name:z.string(),status:z.enum(fK),conclusion:z.enum(yK).nullable()});var $b=z.object({sha:z.string(),message:z.string(),author:z.object({name:z.string().optional(),email:z.string().optional(),date:z.coerce.date().optional()}),committer:z.object({name:z.string().optional(),email:z.string().optional(),date:z.coerce.date().optional()})}),NN=z.object({mergedBranch:z.string().optional()});var SK=z.object({orgId:z.string(),cacheKeys:z.string().array()});z.object({keyParams:SK,clientMetadata:z.string(),lockAcquisitionTimeoutMs:z.number().optional()});var bK=z.object({acquired:z.boolean(),acquiredByMetadata:z.string(),keyPrefix:z.string()});z.object({keyPrefix:z.string(),result:z.string(),ttlMs:z.number()});z.union([z.object({keyPrefix:z.string()}),SK]);var sTe=z.object({remainingTtlMs:z.number(),value:z.string().nullish()});z.object({results:z.record(z.string(),sTe),activeLocks:z.string().array()});var TK=0,AK=5*60*1e3;var EK=z.object({testId:z.string().min(1),stepId:z.string().min(1),baseTestFileHash:z.string().min(1),branchName:z.string().min(1).optional(),environment:z.string().min(1).optional(),classification:mO,healDetails:dV.optional()}),aTe=EK.extend({createdAt:z.coerce.date(),updatedAt:z.coerce.date()});z.object({branchName:z.string().min(1).optional(),mainBranchName:z.string().min(1).optional(),stepId:z.string().min(1),baseTestFileHash:z.string().min(1),environment:z.string().min(1).optional()});var CK=aTe.array();z.object({entries:EK.array()});var lTe=30*Gg;function vK(){return new Date(Date.now()-lTe)}function Wg(e){if(e.startsWith("https://api"))return e.replace("https://api","https://app");if(e.startsWith("http://localhost:8000"))return e.replace("http://localhost:8000","http://localhost:3000");throw new Error(`Unknown Momentic app server URL pattern: ${e}`)}var cTe=z.object({version:z.string(),json:z.record(z.string(),z.unknown().optional()),hash:z.string()}),RK=z.record(z.string(),z.unknown().optional());z.object({newSvgs:z.array(cTe),metadata:RK.optional()});var dTe=z.object({version:z.string(),json:z.record(z.string(),z.unknown().optional()).nullish(),hash:z.string(),description:z.string().nullish(),metadata:RK.nullish()}),wK=z.record(z.string().describe("icon hash"),dTe);var LN="metadata.json",kN="test.yaml",IK=".snapshot.zip",DN=Zn.extend(Ql.shape),uTe=z.object({envName:z.string().optional(),baseUrl:z.string(),variables:z.record(z.string(),z.unknown().optional()),resolvedEnv:WS.optional()}),xK=z.object({browser:il.optional(),ai:ga.optional(),advanced:ZS.optional(),retries:z.number().optional()});z.object({momenticVersion:z.string(),schemaVersion:z.string(),createdAt:z.string(),relativeFilePath:z.string(),environment:uTe,config:xK});var _K=z.object({variables:z.record(z.string(),z.unknown().optional()),resolvedEnv:WS.optional()}),pTe=z.object({envName:z.string().optional(),baseUrl:z.string(),encryptedSecrets:z.string()}),PK=z.object({momenticVersion:z.string(),schemaVersion:z.string(),createdAt:z.string(),relativeFilePath:z.string(),environment:pTe,config:xK});function OK(e){let t;try{t=JSON.parse(e);}catch(n){return `The schema is not valid JSON. ${n}`}try{validator(t);}catch(n){return `The schema is not a valid JSON schema. ${n}`}}var MK=e=>{e.extraHeaders&&(e.extraHeaders=Object.fromEntries(Object.entries(e.extraHeaders).filter(([t,n])=>t.trim()&&n.trim())));};var Iv=class{async resolveStepCacheEntries(){}async saveStepCacheEntries(){}async saveSnapshotCacheEntries(){}async deleteStepCacheEntry(){}};function hTe(e){return e.map(t=>({...t,environment:void 0}))}function FN(e,t){return t?e:hTe(e)}var UN="browser-crash-dump.zip",BN=class{loggerBindings;attachBeforeScreenshot(){}attachAfterScreenshot(){}attachBeforeHtmlSnapshot(){}attachAfterHtmlSnapshot(){}recordTargetAutoHeal(){}storeTraceAsset(){}async finish(){}async startSubSteps(){return new Vb}},Vb=class{async getScreenshot(){}async getHtmlSnapshot(){}async startStep(){return new BN}flushResults(t){}};var ct="metadata.json",zr="assets",to="runs",gTe=z.object({step:tn,status:z.enum(Nt),startedAt:z.coerce.date(),finishedAt:z.coerce.date().optional(),healMetadata:z.object({healType:z.enum(VS).or(z.literal("AI")),healedAt:z.coerce.date()}).optional(),beforeSnapshotId:z.guid().optional(),afterSnapshotId:z.guid().optional(),message:z.string().optional()}),fTe=gTe.extend({finishedAt:z.coerce.date().optional().transform(e=>e??new Date)});fTe.extend({step:z.unknown().optional()});var HN=z.object({avdId:z.string().optional(),channel:z.string().optional(),tag:z.string().optional(),region:z.string().optional(),osVersion:oW.optional()}),LK="1.0.0",kK=Y2.extend({id:z.guid().optional(),startedAt:z.coerce.date(),runAttemptSchemaVersion:z.string().optional(),schemaVersion:z.string().optional().default("1.0.19"),results:z.record(z.string(),z.unknown().optional()).array().optional(),beforeResults:z.record(z.string(),z.unknown().optional()).array().optional(),afterResults:z.record(z.string(),z.unknown().optional()).array().optional(),assetDetails:HN.optional(),viewport:fd.optional(),activeVideos:z.array(z.object({videoName:z.string(),timestamp:z.coerce.date()})).optional()}),zb=kK.extend({assetDetails:HN.optional(),finishedAt:z.coerce.date().optional().transform(e=>e??new Date)});kK.extend(tM.shape);var DK=zb.extend(tM.shape),yTe=z.object({results:z.array(Ds),beforeResults:z.array(Ds).optional(),afterResults:z.array(Ds).optional()});zb.extend(yTe.shape);var STe=z.object({results:z.array(Fs),beforeResults:z.array(Fs).optional(),afterResults:z.array(Fs).optional()});zb.extend(STe.shape);var FK=q2.merge(z2).extend({executionType:Mu.optional().default("WEB"),testId:vo,testDescription:z.string().optional(),directory:z.string().optional(),runGroupId:z.guid(),status:z.enum(ht),healStatus:nb,startedAt:z.coerce.date(),schemaVersion:z.string().nullish(),attempts:z.number(),failureRecoveryDetails:z.object({attempts:z.number()}).optional(),aiSettings:ga.optional(),avgCpuUsage:z.number().optional(),avgMemoryUsage:z.number().optional()}),bTe=FK.extend(HN.shape),xm=FK.extend({finishedAt:z.coerce.date().optional().transform(e=>e??new Date)});bTe.extend({finishedAt:z.coerce.date().optional().transform(e=>e??new Date)});var NK=z.object({mode:z.enum(["SELECTED","RUN_ALL","RUN_NONE","SHADOW"]),baseRef:z.string().nullable(),headSha:z.string(),planId:z.string().nullable(),totalCandidates:z.number().int().nonnegative(),selectedCount:z.number().int().nonnegative(),anchorSegmentIds:z.array(z.string()),userSummary:z.string(),toolCallCount:z.number().int().nonnegative(),selectedTests:z.array(MC),forcedTests:z.array(z.object({name:z.string(),testPath:z.string(),status:z.enum(["A","M","R","C","T"])})).optional().default([]),runAllReason:z.string().nullable()}),TTe=$2.merge(V2).extend({id:z.guid().optional(),startedAt:z.coerce.date(),cliVersion:z.string(),labels:z.string().array().optional().default([]),suiteName:z.string().optional(),ciProvider:z.string().optional(),gitMainBranch:z.string().optional(),ai:ga.optional(),browser:il.optional(),aiSelect:z.union([NK.transform(e=>[e]),z.array(NK)]).optional()}),Ta=TTe.extend({healRiskSummary:Sm.optional(),updatedAt:z.coerce.date().optional().transform(e=>e??new Date),finishedAt:z.coerce.date().optional().transform(e=>e??new Date)});var ATe=new Set(["AWAIT_LISTENER","REGISTER_REQUEST_LISTENER","GET_RECORDED_REQUESTS","MOCK_ROUTE","REMOVE_ROUTE_MOCK","SCROLL_DOWN","SCROLL_UP","SCROLL_LEFT","SCROLL_RIGHT","VISUAL_DIFF","WAIT","SET_HEADER","OFFLINE_MODE"]),ETe=new Set(["MODULE","RESOLVED_MODULE"]);function xv(e){return e.type!=="PRESET_ACTION"?e.type:e.command.type}function _v(e){return ETe.has(e.type)?false:e.type!=="PRESET_ACTION"?true:!ATe.has(e.command.type)}var BK="progress.json",UK="1.0.0",CTe=z.object({runId:z.string(),testId:z.string().optional(),testName:z.string().optional(),directory:z.string().optional(),status:z.nativeEnum(ht),completedSteps:z.number(),totalSteps:z.number(),startedAt:z.coerce.date(),updatedAt:z.coerce.date()});z.object({schemaVersion:z.string(),runGroupId:z.string(),status:z.nativeEnum(ht),totalRuns:z.number(),completedRuns:z.number(),completedSteps:z.number(),totalSteps:z.number(),startedAt:z.coerce.date(),updatedAt:z.coerce.date(),runs:CTe.array()});function HK(e){try{return existsSync(e)&&statSync(e).isDirectory()}catch(t){return R.error({err:t},`Error reading path ${e} during directory existence check.`),false}}var GK="CumAaTMUcwjt05OddAmefKgshbhfRmWxzxih",qg="https://us-west.metrics.momentic.ai",Kg="c60c6a0f-60da-41a7-a61b-07969a0aa303",_m=!!process.env.CI||!!process.env.GITHUB_ACTIONS||!!process.env.GITHUB_RUN_ID||!!process.env.GITLAB_CI||!!process.env.CI_COMMIT_SHA||!!process.env.JENKINS_URL||!!process.env.BUILD_NUMBER||!!process.env.JENKINS_HOME||!!process.env.CIRCLECI||!!process.env.CIRCLE_BUILD_NUM||!!process.env.TRAVIS||!!process.env.TRAVIS_BUILD_NUMBER||!!process.env.BITBUCKET_BUILD_NUMBER||!!process.env.BITBUCKET_COMMIT||!!process.env.CODEBUILD_BUILD_ID||!!process.env.TF_BUILD||!!process.env.BUILD_BUILDID||!!process.env.AGENT_ID||!!process.env.BUILDER_SA_EMAIL||!!process.env.HEROKU_TEST_RUN_ID||!!process.env.CI_NODE_INDEX||!!process.env.TEAMCITY_VERSION||!!process.env.BUILD_VCS_NUMBER||!!process.env.BUILDKITE||!!process.env.BUILDKITE_BUILD_NUMBER||!!process.env.APPVEYOR||!!process.env.APPVEYOR_BUILD_NUMBER||!!process.env.DRONE||!!process.env.DRONE_BUILD_NUMBER||!!process.env.SHIPPABLE||!!process.env.BUILD_URL||!!process.env.SEMAPHORE||!!process.env.SEMAPHORE_EXECUTABLE_UUID||!!process.env.WOODPECKER||!!process.env.CI_BUILD_NUMBER||!!process.env.WERCKER_MAIN_PIPELINE_STARTED||!!process.env.BUDDY_EXECUTION_ID;var OTe=new Set(["exit","quit"]),VK=(()=>{try{return statSync("/.dockerenv"),!0}catch{return false}})();async function fr(e){return _m||VK?true:(await R.flush(),await new Promise(n=>setTimeout(n,100)),await confirm({message:e}))}async function GN(e){let t=dirname(e);return HK(t)?existsSync(e)?fr(`File '${jK(e)}' already exists. Overwrite existing content?`):true:await fr(`Directory '${jK(t)}' doesn't exist. Create it now?`)?(mkdirSync(t,{recursive:true}),true):false}function jK(e){return e.replace(/(\s+)/g,"\\$1")}async function zK(e,t){return _m||VK?t:(await input({message:e,default:t})).trim()||t}async function WK(){let e;try{e=(await input({message:"ask"})).trim();}catch(t){if(t instanceof Error&&t.name==="ExitPromptError"){R.info("");return}throw t}if(!OTe.has(e.toLowerCase()))return e}var Yg=new Map,KK="Log throttle exceeded",jTe=100,$Te=5e3,VTe=DTe(global.fetch,{retries:2,retryOn:function(e,t,n){return !!(t!==null||n&&n.status>=500)},retryDelay:function(e){return Math.pow(2,e)*500}}),zTe=`${qg}/logs/json`,jN=class{constructor(t,n){this.flushIntervalMs=t;this.maxBatchSize=n;}records=[];flushTimer;push(t){if(this.records.push(t),this.records.length>=this.maxBatchSize){this.flushTimer&&(clearTimeout(this.flushTimer),this.flushTimer=void 0),this.flush();return}this.scheduleFlush();}scheduleFlush(){this.flushTimer||(this.flushTimer=setTimeout(()=>{this.flushTimer=void 0,this.flush();},this.flushIntervalMs));}async flush(){if(this.records.length===0)return;let t=this.records;this.records=[];try{let n=await VTe(zTe,{method:"POST",headers:{"Content-Type":"application/json","signoz-access-token":GK,"x-momentic-metrics-api-key":Kg},body:ll(t),signal:AbortSignal.timeout(5e3)});if(!n.ok)throw new Error(`Got error status (${n.statusText}) from SigNoz`)}catch{}}},$N=class e{consoleLogger;hostname;bindingAttributes;disableConsoleLogs;minLevelValue=20;logsInCurrentWindow=0;droppedLogsInWindow=false;lastWindowStart=Date.now();flushIntervalMs;maxBatchSize;buffer;constructor({bindings:t,hostname:n,disableConsoleLogs:o,flushIntervalMs:r,maxBatchSize:i,buffer:s}){this.hostname=n??wd.hostname(),this.disableConsoleLogs=o,this.bindingAttributes={...t,env:"production"},this.flushIntervalMs=r??5e3,this.maxBatchSize=i??10,this.buffer=s??new jN(this.flushIntervalMs,this.maxBatchSize);let a={base:this.bindingAttributes,errorKey:"err",level:"debug"};this.consoleLogger=qK(a);}child(t){return new e({bindings:{...this.bindingAttributes,...t},hostname:this.hostname,disableConsoleLogs:this.disableConsoleLogs,flushIntervalMs:this.flushIntervalMs,maxBatchSize:this.maxBatchSize,buffer:this.buffer})}async flush(){await this.buffer.flush(),this.disableConsoleLogs||this.consoleLogger.flush();}shouldAllowLog(t){if(t===KK)return true;let n=Date.now();return n-this.lastWindowStart>$Te&&(this.logsInCurrentWindow=0,this.droppedLogsInWindow&&this.log("error",void 0,KK),this.droppedLogsInWindow=false,this.lastWindowStart=n),this.logsInCurrentWindow<jTe?(this.logsInCurrentWindow++,true):(this.droppedLogsInWindow=true,false)}log(t,n,o,...r){try{this.logHelper(t,n,o,...r);}catch(i){this.consoleLogger.warn(`Failed to log to Signoz: ${i}`);}}logHelper(t,n,o,...r){if(QS[t]<this.minLevelValue||!this.shouldAllowLog(o))return;typeof n=="string"&&!o&&(n={message:n}),typeof n=="object"&&n&&"err"in n&&n.err instanceof Error&&(n.err=HTe.err(n.err));let i={...this.bindingAttributes,...n&&typeof n=="object"?n:{},...r.length>0?{args:r}:{}},s={host:this.hostname,env:this.bindingAttributes.env},a=WTe();this.disableConsoleLogs||this.consoleLogger[t]({...i,...a??{}},o,...r);let l={timestamp:Math.round(Date.now()*1e6),...a??{},severity_text:t.toUpperCase(),resources:s,attributes:{},body:eV({message:o||"",...i})};this.buffer.push(l);}setApp(t){let n=this.bindingAttributes.app;this.bindingAttributes.app=t,Yg.set("app",this),Yg.delete(n);}debug(t,n,...o){this.log("debug",t,n,...o);}info(t,n,...o){this.log("info",t,n,...o);}warn(t,n,...o){this.log("warn",t,n,...o);}error(t,n,...o){this.log("error",t,n,...o);}bindings(){return this.bindingAttributes}addBinding(t,n){this.bindingAttributes[t]=n;}setMinLevel(t){typeof t=="number"?(this.minLevelValue=t,this.consoleLogger.level=tV[t]):(this.minLevelValue=QS[t],this.consoleLogger.level=t);}enableConsoleLogs(){this.disableConsoleLogs=false;}},Jg=({app:e,hostname:t,disableConsoleLogs:n})=>(Yg.has(e)||Yg.set(e,new $N({bindings:{app:e},hostname:t,disableConsoleLogs:n})),Yg.get(e));function WTe(){let e=trace.getSpan(context.active());if(!e)return;let t=e.spanContext();if(isSpanContextValid(t))return {trace_id:t.traceId,span_id:t.spanId,trace_flags:t.traceFlags}}async function Pv(){await Promise.all([...Yg.values()].map(e=>e.flush()));}var $u=class extends Error{constructor(t){super(t),this.name="TimeoutError";}};var YK=e=>{let t=e.reason===void 0?new DOMException("This operation was aborted.","AbortError"):e.reason;return t instanceof Error?t:new DOMException(t,"AbortError")};function Ie(e,t){let{milliseconds:n,fallback:o,message:r,customTimers:i={setTimeout,clearTimeout}}=t,s;if(typeof n!="number"||Math.sign(n)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${n}\``);return new Promise((a,l)=>{let c;if(t.signal){let{signal:p}=t;if(p.aborted)return l(YK(p));c=()=>l(YK(p)),p.addEventListener("abort",c,{once:true});}let d=()=>{if(t.signal&&t.signal.removeEventListener("abort",c),o)try{a(o());}catch(p){l(p);}else {typeof e.cancel=="function"&&Promise.resolve().then(()=>e.cancel()).catch(()=>{});let p=r instanceof Error?r:new $u(r??`Promise timed out after ${n}ms`);l(p);}};n<1/0&&(s=i.setTimeout(d,n));let u=()=>{i.clearTimeout(s),t.signal&&t.signal.removeEventListener("abort",c);};Promise.resolve(e).then(p=>{u(),a(p);}).catch(p=>{u(),l(p);});})}var Ov="organization";function Mv(e){let t=new PostHog(e.writeKey,{host:e.host,...e.flushImmediately?{flushAt:1,flushInterval:0}:{}}),n=e.platform,o=(l,c,d)=>{let{type:u,...p}=l;t.capture({distinctId:c??d??randomUUID(),event:u,...d&&{groups:{[Ov]:d}},properties:{platform:n,user_id:c??void 0,org_id:d??void 0,...p,organizationId:d??void 0,...c==null&&d==null&&{$process_person_profile:false}}});},r=({orgId:l,properties:c})=>{t.groupIdentify({groupType:Ov,groupKey:l,properties:c});},i=({userId:l,properties:c})=>{Object.values(c).some(u=>u!=null&&u!=="")&&t.identify({distinctId:l,properties:c});},s=()=>t.shutdown();if(e.identity==="stashed"){let l=null;return {shutdownAnalytics:s,groupIdentifyOrg:r,setAnalyticsIdentity:d=>{l=d,e.onIdentify?.(d),i({userId:d.userId,properties:{email:d.email,...d.selfServe!==void 0?{self_serve:d.selfServe}:{}}});},captureEvent:d=>o(d,l?.userId??null,l?.orgId??null)}}return {shutdownAnalytics:s,groupIdentifyOrg:r,identifyUser:i,captureEvent:(l,{userId:c,orgId:d})=>o(l,c,d),captureBillingEvent:(l,{userId:c,orgId:d})=>o(l,c,d)}}async function JK(e,t,n){let o,r=0,i=3,s,a;for(;r<i;)try{let l=await Ie(e.getAllFlagsAndPayloads(n??t,{personProperties:{organizationId:t},groups:{[Ov]:t}}),{milliseconds:5e3});s=l.featureFlags||{},a=l.featureFlagPayloads||{};break}catch(l){o=l,r++,await new Promise(c=>setTimeout(c,100*r));}if(s&&a)return {flags:s,payloads:a};throw o}var Nv=class e extends Mb{constructor(n,o,r,i,s){super(i,s);this.client=n;this.orgId=o;this.userId=r;}static async init(n,o){let r=new PostHog("phc_WRWd8LYIv6rolgDsyCdrPpxtZhsu6qXAkEwPicl44bI",{host:"https://p.momentic.ai"}),{flags:i,payloads:s}=await JK(r,n,o);return new e(r,n,o,i,s)}async refresh(){let{flags:n,payloads:o}=await JK(this.client,this.orgId,this.userId);this.flags=n,this.payloads=o;}};var QTe=2e3,Pm=e=>Number.parseInt(e,10),zN=e=>readFileSync(e,"utf8").trim(),Xg=e=>Pm(zN(e)),XK,Lv,Wb={samples:0,lowMemorySamples:0,highCpuSamples:0,highHeapSamples:0};function eY(){return {...Wb}}var Dv=wd.platform(),ZTe=wd.cpus().map(e=>({model:e.model,speed:e.speed})).reduce((e,t)=>(e[t.model]={speed:t.speed},e.totalCores=(e.totalCores??0)+1,e),{});function VN(e=Date.now()){let t=wd.cpus(),n={measurementTime:e,user:0,nice:0,sys:0,idle:0,irq:0,total:0};for(let o of t)n.user+=o.times.user,n.nice+=o.times.nice,n.sys+=o.times.sys,n.idle+=o.times.idle,n.irq+=o.times.irq;return n.total=n.user+n.nice+n.sys+n.idle+n.irq,n}function tY(e,t){let n={user:t.user-e.user,nice:t.nice-e.nice,sys:t.sys-e.sys,idle:t.idle-e.idle,irq:t.irq-e.irq,total:t.total-e.total};return n.total<=0?null:{measurementTime:t.measurementTime,intervalMs:t.measurementTime-e.measurementTime,user:n.user/n.total*100,nice:n.nice/n.total*100,sys:n.sys/n.total*100,idle:n.idle/n.total*100,irq:n.irq/n.total*100,total:100-n.idle/n.total*100}}function eAe(){let e=VN();return ()=>{let t=VN(),n=tY(e,t);return e=t,n}}function QK(){try{let t=readFileSync("/sys/fs/cgroup/cpu.stat","utf8").match(/^usage_usec\s+(\d+)/m);if(t?.[1])return Pm(t[1])}catch{}try{let e=Xg("/sys/fs/cgroup/cpuacct/cpuacct.usage");if(!isNaN(e))return e/1e3}catch{}return null}function tAe(){try{let t=zN("/sys/fs/cgroup/cpu.max").split(" "),n=t[0],o=t[1];return !n||!o||n==="max"?null:Pm(n)/Pm(o)}catch{}try{let e=Xg("/sys/fs/cgroup/cpu/cpu.cfs_quota_us"),t=Xg("/sys/fs/cgroup/cpu/cpu.cfs_period_us");return e===-1||isNaN(t)?null:e/t}catch{return null}}function nAe(){if(Dv!=="linux")return null;let e=QK();if(e===null)return null;let t=tAe()??wd.cpus().length,n=e,o=Date.now();return ()=>{let r=QK();if(r===null)return null;let i=Date.now(),s=i-o;if(s<=0)return null;let a=r-n,l=s*1e3,c=Math.max(0,Math.min(100,a/l/t*100));return n=r,o=i,{measurementTime:i,intervalMs:s,user:c,nice:0,sys:0,idle:Math.max(0,100-c),irq:0,total:c}}}function oAe(){let e=process.cpuUsage(),t=process.hrtime.bigint();return ()=>{let n=process.cpuUsage(),o=process.hrtime.bigint(),r=Number(o-t)/1e6,i=n.user-e.user,s=n.system-e.system;if(e=n,t=o,r<=0)return null;let a=Math.max(wd.cpus().length,1),l=c=>Math.max(0,c/1e3/r*100/a);return {total:l(i+s),user:l(i),sys:l(s),intervalMs:r}}}function nY({intervalMs:e=QTe,maxSamples:t=1e4,keepSamples:n=true,onSample:o}={}){let r=[],i=nAe()??eAe(),s=oAe(),a=()=>{let d=Date.now(),u=iY(),p=process.memoryUsage(),m=i(),h=s(),g={timestamp:d,system:{cpu:m,memory:{total:u.totalMemory,free:u.freeMemory,freePercentage:u.freePercentage}},process:{cpu:h,memory:{rss:p.rss,heapTotal:p.heapTotal,heapUsed:p.heapUsed,external:p.external,arrayBuffers:p.arrayBuffers}}};o?.(g),n&&(r.push(g),r.length>t&&r.shift());};a();let l=setInterval(a,e),c=d=>({samples:n?[...r]:[]});return {stop:()=>(clearInterval(l),c()),getSeries:()=>c()}}var kv=e=>{try{let t={},n=!1,o=iY(),r=iAe();Wb.samples++,o.freePercentage<.05&&(Object.assign(t,process.memoryUsage()),n=!0,Wb.lowMemorySamples++),r&&r?.total>80&&(n=!0,Wb.highCpuSamples++);let i=XTe.getHeapStatistics(),s=i.used_heap_size,a=i.heap_size_limit;s/a>.9&&(n=!0,Wb.highHeapSamples++),n?e.warn({memory:o,cpu:r,heapStats:i,...t},"Critical resource usage metrics detected"):e.debug({memory:o,cpu:r},"Got machine resource usage metrics");}catch{}},oY=e=>{kv(e),setTimeout(()=>kv(e),5e3);};function rY(e){return kv(e),{interval:setInterval(()=>kv(e),2e4),cpuMetadata:ZTe,platform:Dv}}function rAe(){if(Dv!=="linux")return null;try{let e=zN("/sys/fs/cgroup/memory.max"),t=Xg("/sys/fs/cgroup/memory.current");if(e==="max"||isNaN(t))return null;let n=Pm(e);if(isNaN(n))return null;let o=Math.max(0,n-t);return {totalMemory:n,freeMemory:o,freePercentage:o/n}}catch{}try{let e=Xg("/sys/fs/cgroup/memory/memory.limit_in_bytes"),t=Xg("/sys/fs/cgroup/memory/memory.usage_in_bytes");if(isNaN(e)||isNaN(t))return null;let n=wd.totalmem();if(e>=n)return null;let o=Math.max(0,e-t);return {totalMemory:e,freeMemory:o,freePercentage:o/e}}catch{return null}}function iY(){let e=rAe();if(e)return e;let t=wd.totalmem(),n=Dv==="darwin"?sAe():(()=>{let r=wd.freemem();return {availableMemory:r,rawFreeMemory:r,cachedMemory:0}})(),o=n.availableMemory/t;return {totalMemory:t,freeMemory:n.availableMemory,freePercentage:o}}function iAe(){let e=VN();if(!Lv)return Lv=e,null;let t=tY(Lv,e);return Lv=e,t?(XK=t,XK):null}function sAe(){try{let e=execSync("/usr/bin/vm_stat",{encoding:"utf8",stdio:["pipe","pipe","ignore"]}),n=e.match(/page size of (\d+) bytes/)?.[1],o=n?Pm(n):4096,r=d=>{let p=e.match(new RegExp(`${d}:\\s+(\\d+)\\.`,"i"))?.[1];return p?Pm(p):0},i=r("Pages free"),s=r("Pages inactive"),a=r("Pages speculative"),l=i*o,c=(s+a)*o;return {availableMemory:l+c,rawFreeMemory:l,cachedMemory:c}}catch{let e=wd.freemem();return {availableMemory:e,rawFreeMemory:e,cachedMemory:0}}}process.env.APP||"unknown";var Fv="deployment.environment",Bv="service.instance.id";function sY(){return process.env.MOMENTIC_LOCAL_DEV==="1"&&process.env.LOCAL_SIGNOZ==="true"}var Qg=false,Uv,qb,Kb,cY=[],Hv;function Gv(){return Qg}function dY(e){cY.push(e);}async function bAe(){for(let e of cY)try{await e();}catch{}}function TAe(){return Gv()&&trace.getSpan(context.active())!==void 0}function AAe(){return sY()?new OTLPTraceExporter({url:"http://localhost:4318/v1/traces"}):new OTLPTraceExporter({url:`${qg}/v1/traces`,headers:{"x-momentic-metrics-api-key":Kg}})}function EAe(e){let t="production",n=v4$1(),o=AAe();return new NodeTracerProvider({resource:resourceFromAttributes({[ATTR_SERVICE_NAME]:e,[Fv]:t,[Bv]:n,[ATTR_SERVICE_VERSION]:"3.12.1"}),spanProcessors:[new BatchSpanProcessor(o)]})}function CAe(e){Hv=registerInstrumentations({tracerProvider:e,instrumentations:[new UndiciInstrumentation({requireParentforSpans:true})]});}function vAe(e){return !e&&!Uv?trace.getTracer("momentic-serverless"):Kb?.getTracer("momentic-serverless")??trace.getTracer("momentic-serverless")}async function Vu(e){if(!(!e.enabled||Qg))try{Uv=e.serviceName;let t=EAe(e.serviceName);Kb=t,qb=new AsyncLocalStorageContextManager,t.register({contextManager:qb.enable(),propagator:new W3CTraceContextPropagator}),CAe(t),Qg=!0;}catch{Qg=false,Uv=void 0,Kb=void 0,qb=void 0,Hv=void 0;}}async function jv(){if(Qg)try{await bAe(),await Kb?.shutdown();}catch{}finally{Hv?.();try{qb?.disable();}catch{}Qg=false,Uv=void 0,qb=void 0,Kb=void 0,Hv=void 0;}}async function He(e){if(!Gv()||!e.root&&!TAe())return e.fn(void 0);let t=e.serviceName===void 0?e.attributes:{...e.attributes??{},"momentic.span_service_name":e.serviceName};return await vAe(e.serviceName).startActiveSpan(e.name,{attributes:t,kind:e.kind??SpanKind.CLIENT},async n=>{try{let o=await e.fn(n);return n.setStatus({code:SpanStatusCode.OK}),o}catch(o){throw n.setStatus({code:SpanStatusCode.ERROR,message:o instanceof Error?o.message.slice(0,300):void 0}),o instanceof Error&&n.recordException(o),o}finally{n.end();}})}var Yb=class{increment(t,n,o){}gauge(t,n){}distribution(t,n,o){}async flush(){}async recordDuration(t){return await qN(t)}};async function qN({fn:e,name:t,timeoutMs:n,timeoutMessage:o,trace:r}){let i=r?()=>He({name:r.name,attributes:r.attributes,fn:e}):e,s=Promise.resolve(i());return n===void 0?await s:await Ie(s,{milliseconds:n,message:o??`Timed out after ${n}ms recording duration for ${t}`})}function RAe(e){if(!e||e.length===0)return {};let t={};for(let n of e){let o=n.indexOf(":");if(o>-1){let r=n.slice(0,o).trim(),i=n.slice(o+1).trim();r&&(t[r]=i);continue}t[n]=true;}return t}function KN(e,t){let n=RAe(e);return !t||Object.keys(t).length===0?n:{...t,...n}}function DAe(){return new OTLPMetricExporter({url:`${qg}/v1/metrics`,headers:{"x-momentic-metrics-api-key":Kg},temporalityPreference:AggregationTemporalityPreference.DELTA})}var YN=[100,500,1e3,2e3,3e3,4e3,5e3,7500,1e4,15e3,2e4],$v=(e,t)=>({instrumentName:e,instrumentType:InstrumentType.HISTOGRAM,aggregation:{type:AggregationType.EXPLICIT_BUCKET_HISTOGRAM,options:{boundaries:t,recordMinMax:false}}}),FAe=[$v("test_event_duration",YN),$v("test_step_duration",YN),$v("test_mobile_step_duration",YN),$v("web_agent_action_duration",[25,50,100,200,350,500,750,1e3,2e3,5e3,1e4,2e4])],Vv=class{globalAttributes;provider;meter;counterCache=new Map;histogramCache=new Map;observableGaugeCache=new Map;gaugeValues=new Map;getCounter(t){let n=this.counterCache.get(t);if(n)return n;let o=this.meter.createCounter(t);return this.counterCache.set(t,o),o}getHistogram(t){let n=this.histogramCache.get(t);if(n)return n;let o=this.meter.createHistogram(t);return this.histogramCache.set(t,o),o}ensureObservableGauge(t){let n=this.observableGaugeCache.get(t);if(n)return n;let o=this.meter.createObservableGauge(t);return o.addCallback(r=>{let i=this.gaugeValues.get(t);i!==void 0&&r.observe(i,this.globalAttributes);}),this.observableGaugeCache.set(t,o),o}constructor(t){this.globalAttributes={...t.globalAttributes??{}};let n=typeof process<"u"?"production":"unknown",o=resourceFromAttributes({[ATTR_SERVICE_NAME]:t.serviceName,[Fv]:n,[Bv]:typeof process<"u"&&process.env.SERVICE_INSTANCE_ID?process.env.SERVICE_INSTANCE_ID:v4$1(),[ATTR_SERVICE_VERSION]:"3.12.1"}),r=DAe(),i=new PeriodicExportingMetricReader({exporter:r,exportIntervalMillis:t.exportIntervalMs??6e4});this.provider=new MeterProvider({resource:o,readers:[i],views:FAe}),metrics.setGlobalMeterProvider(this.provider),this.meter=metrics.getMeter("momentic-serverless");}increment(t,n,o){try{let r=KN(o,this.globalAttributes);this.getCounter(t).add(typeof n=="number"?n:1,r);}catch{}}gauge(t,n){try{this.ensureObservableGauge(t),this.gaugeValues.set(t,n);}catch{}}distribution(t,n,o){try{let r=KN(o,this.globalAttributes);this.getHistogram(t).record(n,r);}catch{}}async flush(){try{await this.provider.forceFlush();}catch{}}async recordDuration(t){let{name:n,tags:o}=t,r=Date.now();try{return await qN(t)}finally{this.distribution(n,Date.now()-r,o);}}};var Tt=new Yb;function pY(e){if(!e.disabled)try{Tt=new Vv(e);}catch{Tt=new Yb;}}var JN;function mY(e){JN=e;}function zu(e){UAe(e)&&JN&&JN(e);}var BAe=new Set(["InternalWebAgentError","InternalPlatformError","UnknownError"]);function UAe(e){return e instanceof Error&&e.name==="AbortError"||lC(e,De)?false:e instanceof te?BAe.has(e.reason):true}function HAe({usage:e,promptType:t,result:n="success"}){let o=[`type:${t}`,`result:${n}`],r=e.inputTokens??0,i=e.inputTokenDetails.cacheReadTokens??e.cachedInputTokens??0,s=e.outputTokens??0;Tt.distribution("ai_session_tokens",r,[...o,"category:input"]),Tt.distribution("ai_session_tokens",Math.max(0,Math.min(i,r)),[...o,"category:cached_input"]),Tt.distribution("ai_session_tokens",s,[...o,"category:output"]);}function zv({usage:e,promptType:t,logger:n,message:o,result:r="success",attributes:i}){HAe({usage:e,promptType:t,result:r}),n.info({...i,promptType:t,result:r,usage:e},o);}function Aa({usage:e,promptType:t,logger:n}){let o=Promise.resolve(e).catch(r=>{n.warn({err:r,promptType:t},"Failed to resolve AI session usage");});return ({message:r,result:i="success",attributes:s})=>{o.then(a=>{a&&zv({usage:a,promptType:t,logger:n,result:i,message:r,attributes:s});});}}function wY(){return globalThis.crypto}function eL(e){let t=wY(),n=new Uint8Array(e);if(t&&typeof t.getRandomValues=="function")return t.getRandomValues(n),n;for(let o=0;o<n.length;o++)n[o]=Math.floor(Math.random()*256);return n}function qu(){let e=wY();if(e&&typeof e.randomUUID=="function")return e.randomUUID();let t=eL(16);t[6]=t[6]&15|64,t[8]=t[8]&63|128;let n=[...t].map(o=>o.toString(16).padStart(2,"0")).join("");return `${n.slice(0,8)}-${n.slice(8,12)}-${n.slice(12,16)}-${n.slice(16,20)}-${n.slice(20)}`}function tL(e){let t=globalThis.Buffer;if(t)return t.from(e).toString("base64");let n="";for(let a=0;a<e.length;a++)n+=String.fromCharCode(e[a]);let o=globalThis.btoa;if(typeof o=="function")return o(n);let r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i="",s=0;for(;s<n.length;){let a=n.charCodeAt(s++)&255,l=s<n.length?n.charCodeAt(s++)&255:NaN,c=s<n.length?n.charCodeAt(s++)&255:NaN,d=a>>2,u=(a&3)<<4|(Number.isNaN(l)?0:l>>4),p=Number.isNaN(l)?64:(l&15)<<2|(Number.isNaN(c)?0:c>>6),m=Number.isNaN(c)?64:c&63;i+=r.charAt(d),i+=r.charAt(u),i+=p===64?"=":r.charAt(p),i+=m===64?"=":r.charAt(m);}return i}function jAe(e){return new Promise(t=>setTimeout(t,e))}function Xb(e){if(e)return e.endsWith("/")?e:`${e}/`}function $Ae(e){var t;let n=(t=e.get("Retry-After"))!=null?t:e.get("retry-after");if(!n)return;let o=Number(n);if(n.trim()!==""&&!Number.isNaN(o))return o*1e3;let r=new Date(n).getTime();if(!Number.isNaN(r)){let i=r-Date.now();return i>0?i:0}}function VAe(e,t){if(t&&typeof t=="object"&&t!==null&&"retryAfterMs"in t){let r=t.retryAfterMs;if(typeof r=="number")return Math.max(0,r)}if(e<=1)return 0;let n=500,o=Math.pow(2,e-2);return n*o}async function zAe(e,t,n){let o=n.sdkName?`[raindrop-ai/${n.sdkName}]`:"[raindrop-ai/core]",r;for(let i=1;i<=n.maxAttempts;i++){if(i>1){let s=VAe(i,r);n.debug&&console.warn(`${o} ${t} retry ${i}/${n.maxAttempts} in ${s}ms`),s>0&&await jAe(s);}else n.debug&&console.log(`${o} ${t} attempt ${i}/${n.maxAttempts}`);try{return await e()}catch(s){if(r=s,n.debug){let a=s instanceof Error?s.message:String(s);console.warn(`${o} ${t} attempt ${i} failed: ${a}${i===n.maxAttempts?" (no more retries)":""}`);}if(r&&typeof r=="object"&&"retryable"in r&&!r.retryable||i===n.maxAttempts)break}}throw r instanceof Error?r:new Error(String(r))}async function Om(e,t,n,o){let r=`POST ${e}`;await zAe(async()=>{let i=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json",...n},body:JSON.stringify(t)});if(!i.ok){let s=await i.text().catch(()=>""),a=new Error(`HTTP ${i.status} ${i.statusText}${s?`: ${s}`:""}`),l=$Ae(i.headers);throw typeof l=="number"&&(a.retryAfterMs=l),a.retryable=i.status===429||i.status>=500,a}},r,o);}var hY={UNSET:0,ERROR:2};function gY(e){let t=e?e.traceIdB64:tL(eL(16)),n=tL(eL(8));return {traceIdB64:t,spanIdB64:n,parentSpanIdB64:e?e.spanIdB64:void 0}}function Qb(){return Date.now().toString()+"000000"}function fY(e){return String(Math.floor(e))+"000000"}function Y(e,t){if(t!==void 0)return {key:e,value:{stringValue:t}}}function et(e,t){if(t!==void 0&&Number.isFinite(t))return {key:e,value:{intValue:String(Math.trunc(t))}}}function ef(e,t){if(t!==void 0&&Number.isFinite(t))return {key:e,value:{doubleValue:t}}}function WAe(e,t){if(t!==void 0)return {key:e,value:{boolValue:t}}}function Id(e,t){if(!(!t||t.length===0))return {key:e,value:{arrayValue:{values:t.filter(n=>typeof n=="string").map(n=>({stringValue:n}))}}}}function XN(e){let t=e.attributes.filter(o=>o!==void 0),n={traceId:e.ids.traceIdB64,spanId:e.ids.spanIdB64,name:e.name,startTimeUnixNano:e.startTimeUnixNano,endTimeUnixNano:e.endTimeUnixNano};return e.ids.parentSpanIdB64&&(n.parentSpanId=e.ids.parentSpanIdB64),t.length&&(n.attributes=t),e.status&&(n.status=e.status),n}function yY(e,t="raindrop.core",n="0.0.0"){return {resourceSpans:[{resource:{attributes:[{key:"service.name",value:{stringValue:t}}]},scopeSpans:[{scope:{name:t,version:n},spans:e}]}]}}var qAe="RAINDROP_LOCAL_DEBUGGER",KAe="RAINDROP_WORKSHOP",SY="http://localhost:5899/v1/";function lL(e){var t;try{let n=(t=globalThis?.process)==null?void 0:t.env;if(n&&typeof n[e]=="string"&&n[e].length>0)return n[e]}catch{}}function YAe(){let e=lL(KAe);if(e===void 0)return;let t=e.trim();if(t.length!==0){if(/^https?:\/\//i.test(t))return {url:t};if(/^(1|true|yes|on)$/i.test(t))return "enable";if(/^(0|false|no|off)$/i.test(t))return "disable"}}function JAe(e){return e?!!(e==="localhost"||e==="127.0.0.1"||e==="0.0.0.0"||e==="::1"||e.endsWith(".localhost")):false}function XAe(){try{let e=globalThis?.location;if(e&&typeof e.hostname=="string"&&e.hostname.length>0)return e.hostname}catch{}}function QAe(){return !!(JAe(XAe())||lL("NODE_ENV")==="development")}function Nm(e){var t,n,o;if(e===null)return null;if(typeof e=="string"&&e.length>0)return (t=Xb(e))!=null?t:null;let r=lL(qAe);if(r)return (n=Xb(r))!=null?n:null;let i=YAe();return i==="disable"?null:i==="enable"?SY:i&&"url"in i?(o=Xb(i.url))!=null?o:null:QAe()?SY:null}function Qv(e){return Nm(e)!==null}function ZAe(e,t={}){var n;let o=Nm(t.baseUrl);o&&Om(`${o}traces`,e,{},{maxAttempts:1,debug:(n=t.debug)!=null?n:false,sdkName:t.sdkName}).catch(()=>{});}function eEe(e,t={}){var n;let o=Nm(t.baseUrl);if(!o)return;let r=t.writeKey?{Authorization:`Bearer ${t.writeKey}`}:{};Om(`${o}events/track_partial`,e,r,{maxAttempts:1,debug:(n=t.debug)!=null?n:false,sdkName:t.sdkName}).catch(()=>{});}function Wu(e,t={}){var n,o;let r=Nm(t.baseUrl);r&&Om(`${r}live`,{...e,type:e.type,timestamp:(n=e.timestamp)!=null?n:Date.now()},{},{maxAttempts:1,debug:(o=t.debug)!=null?o:false,sdkName:t.sdkName}).catch(()=>{});}function tEe(e,t){var n,o,r,i;let s={...e,...t};return (e.properties||t.properties)&&(s.properties={...(n=e.properties)!=null?n:{},...(o=t.properties)!=null?o:{}}),(e.attachments||t.attachments)&&(s.attachments=[...(r=e.attachments)!=null?r:[],...(i=t.attachments)!=null?i:[]]),s}var nEe=class{constructor(e){this.buffers=new Map,this.sticky=new Map,this.timers=new Map,this.inFlight=new Set;var t,n,o,r,i,s,a,l;this.writeKey=(t=e.writeKey)==null?void 0:t.trim(),this.baseUrl=(n=Xb(e.endpoint))!=null?n:"https://api.raindrop.ai/v1/",this.enabled=e.enabled!==false,this.debug=e.debug,this.partialFlushMs=(o=e.partialFlushMs)!=null?o:1e3,this.sdkName=(r=e.sdkName)!=null?r:"core",this.prefix=`[raindrop-ai/${this.sdkName}]`,this.defaultEventName=(i=e.defaultEventName)!=null?i:"ai_generation",this.localDebuggerUrl=(s=Nm(e.localDebuggerUrl))!=null?s:void 0,this.debug&&this.localDebuggerUrl&&console.log(`${this.prefix} Local debugger mirroring: ${this.localDebuggerUrl}`);let c=typeof process<"u"&&typeof process.version=="string";this.context={library:{name:(a=e.libraryName)!=null?a:"@raindrop-ai/core",version:(l=e.libraryVersion)!=null?l:"0.0.0"},metadata:{jsRuntime:c?"node":"web",...c?{nodeVersion:process.version}:{}}};}isDebugEnabled(){return this.debug}authHeaders(){return this.writeKey?{Authorization:`Bearer ${this.writeKey}`}:{}}async patch(e,t){var n,o,r,i,s,a,l,c,d,u,p;if(!this.enabled||!e||!e.trim())return;this.debug&&console.log(`${this.prefix} queue patch`,{eventId:e,userId:t.userId,convoId:t.convoId,eventName:t.eventName,hasInput:typeof t.input=="string"&&t.input.length>0,hasOutput:typeof t.output=="string"&&t.output.length>0,attachments:(o=(n=t.attachments)==null?void 0:n.length)!=null?o:0,isPending:t.isPending});let m=(r=this.sticky.get(e))!=null?r:{},h=(i=this.buffers.get(e))!=null?i:{},g=tEe(h,t);g.isPending=(l=(a=(s=t.isPending)!=null?s:h.isPending)!=null?a:m.isPending)!=null?l:true,this.buffers.set(e,g),this.sticky.set(e,{userId:(c=g.userId)!=null?c:m.userId,convoId:(d=g.convoId)!=null?d:m.convoId,eventName:(u=g.eventName)!=null?u:m.eventName,isPending:(p=g.isPending)!=null?p:m.isPending});let f=this.timers.get(e);if(f&&clearTimeout(f),g.isPending===false){await this.flushOne(e);return}let y=setTimeout(()=>{this.flushOne(e).catch(()=>{});},this.partialFlushMs);this.timers.set(e,y);}async finish(e,t){await this.patch(e,{...t,isPending:false});}async flush(){if(!this.enabled)return;let e=[...this.buffers.keys()];await Promise.all(e.map(t=>this.flushOne(t))),await Promise.all([...this.inFlight].map(t=>t.catch(()=>{})));}async shutdown(){for(let e of this.timers.values())clearTimeout(e);this.timers.clear(),await this.flush();}async trackSignal(e){var t,n;if(!this.enabled)return;let o=[{event_id:e.eventId,signal_name:e.name,signal_type:(t=e.type)!=null?t:"default",timestamp:e.timestamp,sentiment:e.sentiment,attachment_id:e.attachmentId,properties:{...(n=e.properties)!=null?n:{},...e.comment?{comment:e.comment}:{},...e.after?{after:e.after}:{}}}];if(!this.writeKey)return;let r=`${this.baseUrl}signals/track`;try{await Om(r,o,this.authHeaders(),{maxAttempts:3,debug:this.debug,sdkName:this.sdkName});}catch(i){let s=i instanceof Error?i.message:String(i);console.warn(`${this.prefix} failed to send signal (dropping): ${s}`);}}async identify(e){if(!this.enabled)return;let n=(Array.isArray(e)?e:[e]).filter(r=>!r?.userId||!r.userId.trim()?(this.debug&&console.warn(`${this.prefix} skipping identify: missing userId`),false):true).map(r=>{var i;return {user_id:r.userId,traits:(i=r.traits)!=null?i:{}}});if(!this.writeKey||n.length===0)return;let o=`${this.baseUrl}users/identify`;try{await Om(o,n,this.authHeaders(),{maxAttempts:3,debug:this.debug,sdkName:this.sdkName});}catch(r){let i=r instanceof Error?r.message:String(r);console.warn(`${this.prefix} failed to send identify (dropping): ${i}`);}}async flushOne(e){var t,n,o,r,i,s,a,l,c,d,u,p,m;if(!this.enabled)return;let h=this.timers.get(e);h&&(clearTimeout(h),this.timers.delete(e));let g=this.buffers.get(e);if(this.buffers.delete(e),!g)return;let f=(t=this.sticky.get(e))!=null?t:{},y=(o=(n=g.eventName)!=null?n:f.eventName)!=null?o:this.defaultEventName,S=(r=g.userId)!=null?r:f.userId;if(!S){this.debug&&console.warn(`${this.prefix} skipping track_partial for ${e}: missing userId`),this.sticky.delete(e);return}let{wizardSession:b,...E}=(i=g.properties)!=null?i:{},C=(s=g.convoId)!=null?s:f.convoId,w=(l=(a=g.isPending)!=null?a:f.isPending)!=null?l:true,I={event_id:e,user_id:S,event:y,timestamp:(c=g.timestamp)!=null?c:new Date().toISOString(),ai_data:{input:g.input,output:g.output,model:g.model,convo_id:C},properties:{...E,...b?{"raindrop.wizardSession":b}:{},$context:this.context},attachments:g.attachments,is_pending:w},x=`${this.baseUrl}events/track_partial`;if(this.debug&&console.log(`${this.prefix} sending track_partial`,{eventId:e,eventName:y,userId:S,convoId:C,isPending:w,inputPreview:typeof g.input=="string"?g.input.slice(0,120):void 0,outputPreview:typeof g.output=="string"?g.output.slice(0,120):void 0,attachments:(u=(d=g.attachments)==null?void 0:d.length)!=null?u:0,attachmentKinds:(m=(p=g.attachments)==null?void 0:p.map(P=>({type:P.type,role:P.role,name:P.name,valuePreview:P.value.slice(0,60)})))!=null?m:[],endpoint:x}),this.localDebuggerUrl&&eEe(I,{baseUrl:this.localDebuggerUrl,writeKey:this.writeKey,debug:this.debug,sdkName:this.sdkName}),!this.writeKey){w||this.sticky.delete(e);return}let v=Om(x,I,this.authHeaders(),{maxAttempts:3,debug:this.debug,sdkName:this.sdkName});this.inFlight.add(v);try{try{await v,this.debug&&console.log(`${this.prefix} sent track_partial ${e} (${y})`);}catch(P){let _=P instanceof Error?P.message:String(P);console.warn(`${this.prefix} failed to send track_partial (dropping): ${_}`);}}finally{this.inFlight.delete(v);}w||this.sticky.delete(e);}},IY=["apikey","apisecret","apitoken","secretaccesskey","sessiontoken","privatekey","privatekeyid","clientsecret","accesstoken","refreshtoken","oauthtoken","bearertoken","authorization","password","passphrase"],xY="[REDACTED]";function _Y(e){return e.toLowerCase().replace(/[-_.]/g,"")}function PY(e,t){var n,o;let r=oEe((n=t?.secretKeyNames)!=null?n:IY),i=(o=t?.placeholder)!=null?o:xY,s=new WeakSet,a=l=>{if(l===null||typeof l!="object")return l;if(s.has(l))return "[CIRCULAR]";if(s.add(l),Array.isArray(l))return l.map(d=>a(d));let c={};for(let[d,u]of Object.entries(l))r.has(_Y(d))?c[d]=i:c[d]=a(u);return c};return a(e)}function oEe(e){let t=new Set;for(let n of e)t.add(_Y(n));return t}var OY=["ai.request.providerOptions","ai.response.providerMetadata"];function MY(e){let t=e.attributes;if(!t||t.length===0)return e;let n;for(let o=0;o<t.length;o++){let r=t[o],i=NY(r.key,r.value);i!==void 0&&(n||(n=t.slice()),n[o]={key:r.key,value:i});}return n?{...e,attributes:n}:e}var rEe=new Set(OY);function NY(e,t){if(!rEe.has(e))return;let n=t.stringValue;if(typeof n!="string"||n.length===0)return;let o;try{o=JSON.parse(n);}catch{return}let r=PY(o),i;try{i=JSON.stringify(r);}catch{return}if(i!==n)return {stringValue:i}}var iEe=class{constructor(e){this.queue=[],this.inFlight=new Set;var t,n,o,r,i,s,a,l,c;this.writeKey=(t=e.writeKey)==null?void 0:t.trim(),this.baseUrl=(n=Xb(e.endpoint))!=null?n:"https://api.raindrop.ai/v1/",this.enabled=e.enabled!==false,this.debug=e.debug,this.debugSpans=e.debugSpans===true,this.flushIntervalMs=(o=e.flushIntervalMs)!=null?o:1e3,this.maxBatchSize=(r=e.maxBatchSize)!=null?r:50,this.maxQueueSize=(i=e.maxQueueSize)!=null?i:5e3,this.sdkName=(s=e.sdkName)!=null?s:"core",this.prefix=`[raindrop-ai/${this.sdkName}]`,this.serviceName=(a=e.serviceName)!=null?a:"raindrop.core",this.serviceVersion=(l=e.serviceVersion)!=null?l:"0.0.0",this.localDebuggerUrl=(c=Nm(e.localDebuggerUrl))!=null?c:void 0,this.debug&&this.localDebuggerUrl&&console.log(`${this.prefix} Local debugger mirroring: ${this.localDebuggerUrl}`),this.transformSpanHook=e.transformSpan,this.disableDefaultRedaction=e.disableDefaultRedaction===true;}redactSpan(e){let t=e;if(this.transformSpanHook)try{let n=this.transformSpanHook(t);if(n===null)return null;n!==void 0&&(t=n);}catch(n){if(this.debug){let o=n instanceof Error?n.message:String(n);console.warn(`${this.prefix} transformSpan hook threw: ${o}`);}return null}return this.disableDefaultRedaction||(t=MY(t)),t}isDebugEnabled(){return this.debug}authHeaders(){return this.writeKey?{Authorization:`Bearer ${this.writeKey}`}:{}}startSpan(e){var t,n;let o=gY(e.parent),r=(t=e.startTimeUnixNano)!=null?t:Qb(),i=[Y("ai.telemetry.metadata.raindrop.eventId",e.eventId),Y("ai.operationId",e.operationId)];(n=e.attributes)!=null&&n.length&&i.push(...e.attributes);let s={ids:o,name:e.name,startTimeUnixNano:r,attributes:i};return this.mirrorToLocalDebugger(XN({ids:s.ids,name:s.name,startTimeUnixNano:s.startTimeUnixNano,endTimeUnixNano:s.startTimeUnixNano,attributes:s.attributes,status:{code:hY.UNSET}})),s}mirrorToLocalDebugger(e){if(!this.localDebuggerUrl)return;let t=this.redactSpan(e);if(t===null)return;let n=yY([t],this.serviceName,this.serviceVersion);ZAe(n,{baseUrl:this.localDebuggerUrl,debug:false,sdkName:this.sdkName});}endSpan(e,t){var n,o;if(e.endTimeUnixNano)return;e.endTimeUnixNano=(n=t?.endTimeUnixNano)!=null?n:Qb(),(o=t?.attributes)!=null&&o.length&&e.attributes.push(...t.attributes);let r=t?.status;if(!r&&t?.error!==void 0){let s=t.error instanceof Error?t.error.message:String(t.error);r={code:hY.ERROR,message:s};}let i=XN({ids:e.ids,name:e.name,startTimeUnixNano:e.startTimeUnixNano,endTimeUnixNano:e.endTimeUnixNano,attributes:e.attributes,status:r});this.enqueue(i),this.mirrorToLocalDebugger(i);}createSpan(e){var t;let n=gY(e.parent),o=[Y("ai.telemetry.metadata.raindrop.eventId",e.eventId)];(t=e.attributes)!=null&&t.length&&o.push(...e.attributes);let r=XN({ids:n,name:e.name,startTimeUnixNano:e.startTimeUnixNano,endTimeUnixNano:e.endTimeUnixNano,attributes:o,status:e.status});this.enqueue(r),this.mirrorToLocalDebugger(r);}enqueue(e){if(!this.enabled)return;if(this.debugSpans){let n=o=>o?o.slice(-8):"none";console.log(`${this.prefix}[span] name=${e.name} trace=${n(e.traceId)} span=${n(e.spanId)} parent=${n(e.parentSpanId)}`);}let t=this.redactSpan(e);if(t!==null){if(this.queue.length>=this.maxQueueSize&&this.queue.shift(),this.queue.push(t),this.queue.length>=this.maxBatchSize){this.flush().catch(()=>{});return}this.timer||(this.timer=setTimeout(()=>{this.timer=void 0,this.flush().catch(()=>{});},this.flushIntervalMs));}}async flush(){if(this.enabled)for(this.timer&&(clearTimeout(this.timer),this.timer=void 0);this.queue.length>0;){let e=this.queue.splice(0,this.maxBatchSize);if(!this.writeKey)continue;let t=yY(e,this.serviceName,this.serviceVersion),n=`${this.baseUrl}traces`;this.debug&&console.log(`${this.prefix} sending traces batch`,{spans:e.length,endpoint:n});let o=Om(n,t,this.authHeaders(),{maxAttempts:3,debug:this.debug,sdkName:this.sdkName});this.inFlight.add(o);try{try{await o,this.debug&&console.log(`${this.prefix} sent ${e.length} spans`);}catch(r){let i=r instanceof Error?r.message:String(r);console.warn(`${this.prefix} failed to send ${e.length} spans: ${i}`);}}finally{this.inFlight.delete(o);}}}async shutdown(){this.timer&&(clearTimeout(this.timer),this.timer=void 0),await this.flush(),await Promise.all([...this.inFlight].map(e=>e.catch(()=>{})));}},sEe={};function bY(){return globalThis.RAINDROP_ASYNC_LOCAL_STORAGE}var aEe=class{constructor(){this._stack=[];}isEmpty(){return this._stack.length===0}getStore(){return this._stack[this._stack.length-1]}run(e,t){this._stack.push(e);try{return t()}finally{this._stack.pop();}}},lEe=class{},cEe=class extends lEe{constructor(){super(),this._fallback=null;let e=bY();if(e){this._storage=new e;return}this._fallback=new aEe,this._storage=this._fallback;}maybeAdoptAsyncLocalStorage(){if(!this._fallback||!this._fallback.isEmpty())return;let e=bY();e&&(this._storage=new e,this._fallback=null);}isReady(){return true}getParentSpanIds(){this.maybeAdoptAsyncLocalStorage();let e=this._storage.getStore();if(!(!e||e===sEe))return {traceIdB64:e.traceIdB64,spanIdB64:e.spanIdB64,eventId:e.eventId}}runInContext(e,t){return this.maybeAdoptAsyncLocalStorage(),this._storage.run(e,t)}getCurrentSpan(){return this.maybeAdoptAsyncLocalStorage(),this._storage.getStore()}},QN=null;function Ku(){return QN||(QN=globalThis.RAINDROP_CONTEXT_MANAGER?new globalThis.RAINDROP_CONTEXT_MANAGER:new cEe),QN}function LY(e,t){return Ku().runInContext(e,t)}async function Mm(){return Ku().getParentSpanIds()}async function Zb(e,t){let n=Ku(),o={traceIdB64:e.traceIdB64,spanIdB64:e.spanIdB64,eventId:e.eventId};return n.runInContext(o,t)}async function*dEe(e,t){let n;for(;;){let o=await LY(e,async()=>{try{return await t.next(n)}catch(r){return {value:void 0,done:true,error:r}}});if("error"in o&&o.error!==void 0)throw o.error;if(o.done)return o.value;n=yield o.value;}}globalThis.RAINDROP_ASYNC_LOCAL_STORAGE=AsyncLocalStorage;function Se(e){return typeof e=="object"&&e!==null}function li(e){return typeof e=="function"}function TY(e){var t;if(!e||typeof e!="object")return false;if(((t=e.constructor)==null?void 0:t.name)==="Module")return true;try{let o=Object.keys(e);if(o.length===0)return !1;let r=Object.getOwnPropertyDescriptor(e,o[0]);if(!r)return !1;let i="writable"in r?r.writable:!0;return !r.configurable&&!i}catch{return false}}function Jv(e){try{return JSON.stringify(e)}catch{return}}function dt(e){try{return JSON.stringify(e,(t,n)=>n instanceof Uint8Array?tL(n):n)}catch{return}}function oR(e){if(typeof e=="string"){let r=e.indexOf("/");return r>0&&r<e.length-1?{provider:e.slice(0,r),modelId:e.slice(r+1)}:{modelId:e}}if(!Se(e))return {};let t=typeof e.provider=="string"?e.provider:void 0,n;if(typeof e.modelId=="string"?n=e.modelId:typeof e.model=="string"&&(n=e.model),!n)return {provider:t};let o=n.indexOf("/");return !t&&o>0&&o<n.length-1?{provider:n.slice(0,o),modelId:n.slice(o+1)}:{provider:t,modelId:n}}function cL(e){if(!Se(e))return;let t=e.text;return typeof t=="string"?t:void 0}function uEe(e){var t;if(!Se(e))return;let n=e.object;if(n!==void 0)return (t=Jv(n))!=null?t:String(n)}function pEe(e){if(typeof e!="function")return false;let t=e.prototype;return Se(t)?typeof t.generate=="function"&&typeof t.stream=="function":false}function dL(e){if(!Se(e))return;let t=e.model;if(typeof t=="string"&&t.length)return t;let n=e.response;if(Se(n)){let o=n.modelId;if(typeof o=="string"&&o.length)return o}}function eT(e){if(Se(e)){if(typeof e.finishReason=="string")return e.finishReason;if(Se(e.finishReason)&&typeof e.finishReason.unified=="string")return e.finishReason.unified}}function AY(e){if(typeof Buffer<"u")return Buffer.from(e).toString("base64");let t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return typeof btoa=="function"?btoa(t):""}function Xv(e,t){if(e instanceof URL)return e.toString();if(typeof e=="string")return e.startsWith("data:")||e.startsWith("http://")||e.startsWith("https://")?e:`data:${t};base64,${e}`;if(e instanceof Uint8Array){let n=AY(e);return n?`data:${t};base64,${n}`:void 0}if(e instanceof ArrayBuffer){let n=AY(new Uint8Array(e));return n?`data:${t};base64,${n}`:void 0}}function kY(e){if(typeof e=="string")return e;if(e instanceof URL)return e.toString();if(e instanceof Uint8Array)return `[binary:${e.byteLength} bytes]`;if(e instanceof ArrayBuffer)return `[binary:${e.byteLength} bytes]`}function EY(e){if(typeof e.mediaType=="string")return e.mediaType;if(typeof e.mimeType=="string")return e.mimeType;let t=e.file;if(Se(t)){if(typeof t.mediaType=="string")return t.mediaType;if(typeof t.mimeType=="string")return t.mimeType}}function mEe(e){if(typeof e.filename=="string")return e.filename;if(typeof e.name=="string")return e.name;let t=e.file;if(Se(t)){if(typeof t.filename=="string")return t.filename;if(typeof t.name=="string")return t.name}}function hEe(e){if("data"in e)return e.data;let t=e.file;if(Se(t)){if("file_data"in t)return t.file_data;if("data"in t)return t.data}}function gEe(e,t){var n,o,r;let i=e.type;if(typeof i=="string"){if(i==="image"){let s=(n=EY(e))!=null?n:"image/png",a=Xv(e.image,s);return a?{type:"image",role:t,value:a}:void 0}if(i==="image_url"){let s=e.image_url,a=Se(s)?s.url:s,l=Xv(a,"image/png");return l?{type:"image",role:t,value:l}:void 0}if(i==="file"){let s=EY(e),a=hEe(e),l=s?.startsWith("image/")===true,c=l&&s?Xv(a,s):kY(a);if(!c)return;let d=(r=(o=mEe(e))!=null?o:s)!=null?r:"file";return {type:l?"image":"text",role:t,name:d,value:c}}}}function nL(e,t){if(!Array.isArray(e))return;let n=[];for(let o of e){if(!Se(o))continue;let r=gEe(o,t);r&&n.push(r);}return n.length?n:void 0}function fEe(e){var t,n,o,r;let i=typeof e.mediaType=="string"?e.mediaType:typeof e.mimeType=="string"?e.mimeType:void 0,s=(r=(o=(n=(t=e.base64Data)!=null?t:e.base64)!=null?n:e.uint8ArrayData)!=null?o:e.uint8Array)!=null?r:e.data,a=i?.startsWith("image/")===true,l=a&&i?Xv(s,i):kY(s);if(!l)return;let c=typeof e.filename=="string"?e.filename:typeof e.name=="string"?e.name:i??"file";return {type:a?"image":"text",role:"output",name:c,value:l}}async function yEe(e){let t=e;if(t&&(typeof t=="object"||typeof t=="function")&&typeof t.then=="function")try{t=await t;}catch{return}if(!Array.isArray(t))return;let n=[];for(let o of t){if(!Se(o))continue;let r=fEe(o);r&&n.push(r);}return n.length?n:void 0}function DY(e){if(typeof e=="string")return e;if(!Array.isArray(e))return;let t="";for(let n of e)!Se(n)||n.type!=="text"||typeof n.text!="string"||(t+=n.text);return t.length?t:void 0}function uL(e){let t=e.messages;if(Array.isArray(t))return t;let n=e.prompt;if(Array.isArray(n))return n}function FY(e){let t=uL(e);if(t)for(let n=t.length-1;n>=0;n--){let o=t[n];if(Se(o)&&o.role==="user")return o}}function pL(e){var t;if(Se(e))return nL((t=FY(e))==null?void 0:t.content,"input")}async function mL(e){if(!Se(e))return;let t=await yEe(e.files);if(t?.length)return t;let n=rR(e);for(let o=n.length-1;o>=0;o--){let r=n[o];if(!(!Se(r)||r.role!=="assistant"))return nL(r.content,"output")}return nL(e.content,"output")}function hL(e){var t,n;if(!Se(e))return;let o=(t=FY(e))==null?void 0:t.content;if(o===void 0)return;let r=DY(o);return r!==void 0?r:(n=dt(o))!=null?n:String(o)}function gL(e){var t;if(!Se(e))return;let n=e.prompt;if(typeof n=="string")return n;let o=uL(e);if(Array.isArray(o)&&o.length>0){let i=o[o.length-1];if(Se(i)){let s=i.content,a=DY(s);if(a!==void 0)return a;let l=Jv(s);if(l)return l}return (t=Jv(o))!=null?t:void 0}let r=e.input;return typeof r=="string"?r:Jv(e)}function fL(e){if(!Se(e))return [];let t=[];typeof e.system=="string"&&e.system&&t.push({role:"system",content:e.system});let n=uL(e);if(Array.isArray(n)){for(let o of n)Se(o)&&typeof o.role=="string"&&t.push(o);return t}return typeof e.prompt=="string"&&e.prompt&&t.push({role:"user",content:e.prompt}),t}function rR(e){if(!Se(e))return [];let t=e.response;if(Se(t)&&Array.isArray(t.messages))return t.messages.filter(o=>Se(o)&&typeof o.role=="string"&&"content"in o).map(o=>o);let n=e.steps;if(Array.isArray(n)&&n.length>0){let o=n[n.length-1];if(Se(o)&&Se(o.response)){let r=o.response.messages;if(Array.isArray(r))return r.filter(i=>Se(i)&&typeof i.role=="string"&&"content"in i).map(i=>i)}}return []}function Zv(e){if(typeof e.toolCallId=="string"&&e.toolCallId.length>0)return `id:${e.toolCallId}`;if(typeof e.toolName=="string"&&e.toolName.length>0){let t=dt(e.input);return t!==void 0?`name:${e.toolName}|input:${t}`:`name:${e.toolName}`}}function SEe(e,t){return e.isError===true||e.type==="tool-error"?true:Se(t)&&typeof t.type=="string"?t.type.startsWith("error")||t.type==="execution-denied":false}function bEe(e){if(typeof e=="string"&&e.length>0)return e;if(Se(e)){if(typeof e.value=="string"&&e.value.length>0)return e.value;if(typeof e.reason=="string"&&e.reason.length>0)return e.reason;if(typeof e.message=="string"&&e.message.length>0)return e.message}return dt(e)}function TEe(e){if(!Se(e))return [];let t=e.content;return Array.isArray(t)?t.filter(Se):Se(t)?[t]:[]}function AEe(e){return "input"in e?e.input:"args"in e?e.args:void 0}function yL(e){let t=e.toolCallId;return typeof t=="string"&&t.length>0?t:void 0}function EEe(e){return "output"in e?e.output:"result"in e?e.result:e.error}function CEe(e,t,n){var o;if(!t)return;let r=(o=e.get(t))!=null?o:[];r.includes(n)||(r.push(n),e.set(t,r));}function vEe(e,t){if(!t)return;let n=e.get(t);if(!n||n.length===0)return;let o=n.shift();if(o!==void 0)return n.length===0&&e.delete(t),o}function REe(e){var t,n,o,r;let{spans:i,pendingKeysByToolName:s,part:a}=e,l=yL(a),c=typeof a.toolName=="string"?a.toolName:void 0,d=AEe(a),u=Zv({toolCallId:l,toolName:c,input:d});if(!u)return;let p=l==null?Zv({toolCallId:void 0,toolName:c,input:void 0}):void 0,m=p&&p!==u?i.get(p):void 0,h=(t=i.get(u))!=null?t:m;i.set(u,{key:u,toolCallId:(n=h?.toolCallId)!=null?n:l,toolName:(o=h?.toolName)!=null?o:c,input:(r=h?.input)!=null?r:d,result:h?.result,status:h?.status,errorMessage:h?.errorMessage}),p&&p!==u&&i.delete(p),!l&&h?.result===void 0&&CEe(s,c,u);}function wEe(e){var t,n,o;let{spans:r,pendingKeysByToolName:i,part:s}=e,a=yL(s),l=typeof s.toolName=="string"?s.toolName:void 0,c=EEe(s),d=Zv({toolCallId:a,toolName:l,input:void 0}),u=a!=null?d:(t=vEe(i,l))!=null?t:d;if(!u)return;let p=r.get(u),m=SEe(s,c);r.set(u,{key:u,toolCallId:(n=p?.toolCallId)!=null?n:a,toolName:(o=p?.toolName)!=null?o:l,input:p?.input,result:c,status:m?"ERROR":"OK",errorMessage:m?bEe(c):void 0});}function BY(e){let t=new Map,n=new Map;for(let o of e)for(let r of TEe(o)){if(r.type==="tool-call"){REe({spans:t,pendingKeysByToolName:n,part:r});continue}(r.type==="tool-result"||r.type==="tool-error")&&wEe({spans:t,pendingKeysByToolName:n,part:r});}return [...t.values()]}function IEe(e){if(!Array.isArray(e))return;let t="";for(let n of e)Se(n)&&n.type==="text"&&typeof n.text=="string"&&(t+=n.text);return t.length?t:void 0}function xEe(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(!Se(n)||n.type!=="tool-call")continue;let o=yL(n),r=typeof n.toolName=="string"?n.toolName:void 0;(o||r)&&t.push({toolCallId:o,toolName:r,input:n.input});}return t.length?t:void 0}function nf(e){if(!Se(e))return;let t=e.experimental_telemetry;if(Se(t))return {functionId:typeof t.functionId=="string"?t.functionId:void 0,isEnabled:typeof t.isEnabled=="boolean"?t.isEnabled:void 0,recordInputs:typeof t.recordInputs=="boolean"?t.recordInputs:void 0,recordOutputs:typeof t.recordOutputs=="boolean"?t.recordOutputs:void 0,metadata:Se(t.metadata)?t.metadata:void 0}}function Ea(e,t){return {operationName:`${e}${t?` ${t}`:""}`,resourceName:t}}function UY(e,t){if(t==null)return;if(typeof t=="string")return Y(e,t);if(typeof t=="number")return Number.isInteger(t)?et(e,t):ef(e,t);if(typeof t=="boolean")return WAe(e,t);if(Array.isArray(t)&&t.every(o=>typeof o=="string"))return Id(e,t);let n=dt(t);return n?Y(e,n):void 0}function iR(e){return e?Object.entries(e).filter(([t])=>!t.startsWith("raindrop.internal.")).map(([t,n])=>UY(`ai.telemetry.metadata.${t==="raindrop.userId"?"raindrop.ai.userId":t}`,n)):[]}function SL(e){return Se(e)?Object.entries(e).filter(([,t])=>typeof t=="string").map(([t,n])=>Y(`ai.request.headers.${t}`,n)):[]}function bL(e){if(!Se(e))return [];let t=[],n=["maxRetries","timeout","maxOutputTokens","temperature","topP","topK","presencePenalty","frequencyPenalty","seed","stopSequences"];for(let o of n){if(!(o in e))continue;let r=e[o];o==="stopSequences"&&Array.isArray(r)&&r.every(i=>typeof i=="string")?t.push(Id(`ai.settings.${o}`,r)):o==="timeout"&&typeof r=="number"?t.push(et(`ai.settings.${o}`,r)):t.push(UY(`ai.settings.${o}`,r));}return t}function HY(e){return Se(e)?[ef("gen_ai.request.frequency_penalty",typeof e.frequencyPenalty=="number"?e.frequencyPenalty:void 0),et("gen_ai.request.max_tokens",typeof e.maxOutputTokens=="number"?e.maxOutputTokens:void 0),ef("gen_ai.request.presence_penalty",typeof e.presencePenalty=="number"?e.presencePenalty:void 0),...Array.isArray(e.stopSequences)&&e.stopSequences.every(t=>typeof t=="string")?[Id("gen_ai.request.stop_sequences",e.stopSequences)]:[],ef("gen_ai.request.temperature",typeof e.temperature=="number"?e.temperature:void 0),et("gen_ai.request.top_k",typeof e.topK=="number"?e.topK:void 0),ef("gen_ai.request.top_p",typeof e.topP=="number"?e.topP:void 0)]:[]}function GY(e){if(!Se(e)||!Se(e.providerOptions))return;let t=dt(e.providerOptions);return t?Y("ai.request.providerOptions",t):void 0}var _Ee=class{constructor(){this._stack=[];}getStore(){return this._stack[this._stack.length-1]}run(e,t){this._stack.push(e);try{return t()}finally{this._stack.pop();}}},Wv=null;function jY(){if(Wv)return Wv;let e=globalThis.RAINDROP_ASYNC_LOCAL_STORAGE;return Wv=e?new e:new _Ee,Wv}function TL(){return jY().getStore()}function oL(e,t){return jY().run(e,t)}function $Y(e){var t;if(e.length===0)return;let n=e[0];if(!Se(n))return;let o=Se(n.metadata)?n.metadata:void 0,r=Se(n.telemetry)?n.telemetry.metadata:void 0,i=Se(r)?r:void 0,s=nf(n),a=s?.metadata&&typeof s.metadata=="object"?s.metadata:void 0,l=(t=o??i)!=null?t:a;if(!l)return;let c={rawMetadata:l},d=l["raindrop.userId"];typeof d=="string"&&d&&(c.userId=d);let u=l["raindrop.eventId"];typeof u=="string"&&u&&(c.eventId=u);let p=l["raindrop.internal.eventIdGenerated"];(p===true||p==="true"||p==="1")&&(c.eventIdGenerated=true);let m=l["raindrop.convoId"];typeof m=="string"&&m&&(c.convoId=m);let h=l["raindrop.eventName"];typeof h=="string"&&h&&(c.eventName=h);let g=l["raindrop.properties"];if(typeof g=="string")try{let f=JSON.parse(g);f&&typeof f=="object"&&(c.properties=f);}catch{}else g&&typeof g=="object"&&(c.properties=g);return c}var PEe=class{constructor(){this._stack=[];}getStore(){return this._stack[this._stack.length-1]}run(e,t){this._stack.push(e);try{return t()}finally{this._stack.pop();}}},qv=null;function AL(){if(qv)return qv;let e=globalThis.RAINDROP_ASYNC_LOCAL_STORAGE;return qv=e?new e:new PEe,qv}function rL(){return AL().getStore()}function iL(e){var t;let n=AL();(t=n.enterWith)==null||t.call(n,e);}function VY(){var e;let t=AL();(e=t.enterWith)==null||e.call(t,void 0);}var EL=class{constructor(e){this.callStates=new Map,this.priorParentContexts=new Map,this.onStart=t=>{var n,o,r,i,s;if(t.isEnabled===false)return;let a=t.operationId==="ai.embed"||t.operationId==="ai.embedMany",l=t.recordInputs!==false,c=t.recordOutputs!==false,d=t.functionId,u=t.metadata,p=TL(),m=u??p?.rawMetadata,h=this.extractRaindropMetadata(m),g=Ku().getParentSpanIds(),f=m?.["raindrop.internal.eventIdGenerated"]==="true"||m?.["raindrop.internal.eventIdGenerated"]===true||p?.eventIdGenerated===true,y=h.eventId&&!f?h.eventId:void 0,S=(i=(r=(o=y??((n=this.defaultContext)==null?void 0:n.eventId))!=null?o:g?.eventId)!=null?r:h.eventId)!=null?i:qu(),b=g&&g.eventId===S?{traceIdB64:g.traceIdB64,spanIdB64:g.spanIdB64}:void 0,{operationName:E,resourceName:C}=Ea(t.operationId,d),w=!a&&this.subagentWrapping?rL():void 0,I=!a&&this.subagentWrapping&&w===void 0&&typeof m?.["ash.subagent.name"]=="string"?m["ash.subagent.name"]:void 0,x=(s=w?.toolName)!=null?s:I,v,P;if(x&&this.sendTraces){let B=w?[Y("raindrop.parent.callId",w.parentCallId),Y("raindrop.parent.toolCallId",w.toolCallId),Y("raindrop.parent.toolName",w.toolName)]:[];v=this.traceShipper.startSpan({name:x,parent:b,eventId:S,operationId:"ai.toolCall",attributes:[Y("operation.name","ai.toolCall"),Y("resource.name",x),Y("raindrop.span.kind","tool_call"),Y("ai.toolCall.name",x),Y("raindrop.subagent.name",x),Y("raindrop.agent.role","subagent"),...B]});let D=this.spanParentRef(v),V=this.traceShipper.startSpan({name:"agent.subagent",parent:D,eventId:S,operationId:"agent.subagent",attributes:[Y("operation.name","agent.subagent"),Y("raindrop.span.kind","llm_call"),Y("raindrop.subagent.name",x)]});this.traceShipper.endSpan(V),P=D;}let _;if(this.sendTraces){let B=!a&&l?[Y("ai.prompt",dt({system:t.system,prompt:t.prompt,messages:t.messages}))]:[],D=a&&l?t.operationId==="ai.embedMany"?[Y("ai.values",dt(t.value))]:[Y("ai.value",dt(t.value))]:[];_=this.traceShipper.startSpan({name:t.operationId,parent:P??b,eventId:S,operationId:t.operationId,attributes:[Y("operation.name",E),Y("resource.name",C),Y("ai.telemetry.functionId",d),Y("ai.model.provider",t.provider),Y("ai.model.id",t.modelId),...iR(m?Object.fromEntries(Object.entries(m).filter(([V])=>V!=="raindrop.eventId"&&V!=="raindrop.internal.eventIdGenerated")):void 0),...B,...D]});}this.callStates.set(t.callId,{operationId:t.operationId,eventId:S,rootSpan:_,rootParent:_?this.spanParentRef(_):P??b,stepSpan:void 0,stepParent:void 0,toolSpans:new Map,embedSpans:new Map,parentContextToolCallIds:new Set,recordInputs:l,recordOutputs:c,functionId:d,metadata:m,accumulatedText:"",inputText:a?void 0:this.extractInputText(t),toolCallCount:0,subagentName:x,subagentToolCallSpan:v});},this.onStepStart=t=>{let n=this.getState(t.callId);if(!n?.rootSpan||!n.rootParent)return;let r=n.operationId==="ai.streamText"||n.operationId==="ai.streamObject"?`${n.operationId}.doStream`:`${n.operationId}.doGenerate`,{operationName:i,resourceName:s}=Ea(r,n.functionId),a=[];n.recordInputs&&(t.promptMessages&&a.push(Y("ai.prompt.messages",dt(t.promptMessages))),t.stepTools&&a.push(Id("ai.prompt.tools",t.stepTools.map(c=>JSON.stringify(c)))),t.stepToolChoice!=null&&a.push(Y("ai.prompt.toolChoice",JSON.stringify(t.stepToolChoice))));let l=this.traceShipper.startSpan({name:r,parent:n.rootParent,eventId:n.eventId,operationId:r,attributes:[Y("operation.name",i),Y("resource.name",s),Y("ai.telemetry.functionId",n.functionId),Y("ai.model.provider",t.provider),Y("ai.model.id",t.modelId),Y("gen_ai.system",t.provider),Y("gen_ai.request.model",t.modelId),...a]});n.stepSpan=l,n.stepParent=this.spanParentRef(l);},this.onToolExecutionStart=t=>this.toolExecutionStart(t),this.onToolExecutionEnd=t=>this.toolExecutionEnd(t),this.onToolCallStart=t=>this.toolExecutionStart(t),this.onToolCallFinish=t=>this.toolExecutionEnd(t),this.onLanguageModelCallStart=t=>{},this.onLanguageModelCallEnd=t=>{},this.onChunk=t=>{var n,o,r,i,s;let a=(o=t.callId)!=null?o:(n=t.chunk)==null?void 0:n.callId;if(!a)return;let l=this.getState(a);if(!l)return;let c=t.chunk;if(!(!c||typeof c!="object")){if(c.type==="text-delta"){let d=(r=c.textDelta)!=null?r:c.delta;typeof d=="string"&&(l.accumulatedText+=d,this.emitLive(l,"text_delta",d));}else if(c.type==="reasoning"||c.type==="reasoning-delta"){let d=(s=(i=c.textDelta)!=null?i:c.text)!=null?s:c.delta;typeof d=="string"&&this.emitLive(l,"reasoning_delta",d);}}},this.onStepFinish=t=>{var n,o,r,i,s,a,l,c,d;let u=this.getState(t.callId);if(!u?.stepSpan)return;let p=[];if(u.recordOutputs&&(p.push(Y("ai.response.finishReason",t.finishReason),Y("ai.response.text",(n=t.text)!=null?n:void 0),Y("ai.response.id",(o=t.response)==null?void 0:o.id),Y("ai.response.model",(r=t.response)==null?void 0:r.modelId),Y("ai.response.timestamp",((i=t.response)==null?void 0:i.timestamp)instanceof Date?t.response.timestamp.toISOString():(s=t.response)==null?void 0:s.timestamp),Y("ai.response.providerMetadata",t.providerMetadata?dt(t.providerMetadata):void 0)),((a=t.toolCalls)==null?void 0:a.length)>0&&p.push(Y("ai.response.toolCalls",JSON.stringify(t.toolCalls.map(h=>({toolCallId:h.toolCallId,toolName:h.toolName,input:h.input}))))),((l=t.reasoning)==null?void 0:l.length)>0)){let h=t.reasoning.filter(g=>"text"in g).map(g=>g.text).join(`
|
|
172
172
|
`);h&&p.push(Y("ai.response.reasoning",h));}p.push(Id("gen_ai.response.finish_reasons",[t.finishReason]),Y("gen_ai.response.id",(c=t.response)==null?void 0:c.id),Y("gen_ai.response.model",(d=t.response)==null?void 0:d.modelId));let m=t.usage;m&&p.push(et("ai.usage.inputTokens",m.inputTokens),et("ai.usage.outputTokens",m.outputTokens),et("ai.usage.totalTokens",m.totalTokens),et("ai.usage.reasoningTokens",m.reasoningTokens),et("ai.usage.cachedInputTokens",m.cachedInputTokens),et("gen_ai.usage.input_tokens",m.inputTokens),et("gen_ai.usage.output_tokens",m.outputTokens)),this.emitProviderExecutedToolSpans(t,u),this.traceShipper.endSpan(u.stepSpan,{attributes:p}),u.stepSpan=void 0,u.stepParent=void 0;},this.onEmbedStart=t=>{let n=this.getState(t.callId);if(!n?.rootSpan||!n.rootParent)return;let{operationName:o,resourceName:r}=Ea(t.operationId,n.functionId),i=n.recordInputs?[Y("ai.values",dt(t.values))]:[],s=this.traceShipper.startSpan({name:t.operationId,parent:n.rootParent,eventId:n.eventId,operationId:t.operationId,attributes:[Y("operation.name",o),Y("resource.name",r),Y("ai.telemetry.functionId",n.functionId),...i]});n.embedSpans.set(t.embedCallId,s);},this.onEmbedFinish=t=>{var n;let o=this.getState(t.callId);if(!o)return;let r=o.embedSpans.get(t.embedCallId);if(!r)return;let i=[];o.recordOutputs&&i.push(Y("ai.embeddings",dt(t.embeddings))),((n=t.usage)==null?void 0:n.tokens)!=null&&i.push(et("ai.usage.tokens",t.usage.tokens)),this.traceShipper.endSpan(r,{attributes:i}),o.embedSpans.delete(t.embedCallId);},this.onEmbedEnd=t=>this.onEmbedFinish(t),this.onFinish=t=>{let n=this.getState(t.callId);if(!n)return;n.operationId==="ai.embed"||n.operationId==="ai.embedMany"?this.finishEmbed(t,n):this.finishGenerate(t,n),n.subagentToolCallSpan&&this.traceShipper.endSpan(n.subagentToolCallSpan),this.cleanup(t.callId);},this.onEnd=t=>this.onFinish(t),this.onError=t=>{var n;let o=t;if(!o?.callId)return;let r=this.getState(o.callId);if(!r)return;let i=(n=o.error)!=null?n:t;r.stepSpan&&this.traceShipper.endSpan(r.stepSpan,{error:i});for(let s of r.embedSpans.values())this.traceShipper.endSpan(s,{error:i});r.embedSpans.clear();for(let s of r.parentContextToolCallIds)this.priorParentContexts.delete(s);r.parentContextToolCallIds.clear();for(let s of r.toolSpans.values())this.traceShipper.endSpan(s,{error:i});r.toolSpans.clear(),r.rootSpan&&this.traceShipper.endSpan(r.rootSpan,{error:i}),r.subagentToolCallSpan&&this.traceShipper.endSpan(r.subagentToolCallSpan,{error:i}),this.cleanup(o.callId);},this.executeTool=async({callId:t,toolCallId:n,execute:o})=>{let r=this.getState(t),i=r?.toolSpans.get(n);return i?Zb({traceIdB64:i.ids.traceIdB64,spanIdB64:i.ids.spanIdB64,eventId:r.eventId},()=>o()):o()},this.traceShipper=e.traceShipper,this.eventShipper=e.eventShipper,this.sendTraces=e.sendTraces!==false,this.sendEvents=e.sendEvents!==false,this.subagentWrapping=e.subagentWrapping!==false,this.debug=e.debug===true,this.defaultContext=e.context;}getState(e){return this.callStates.get(e)}cleanup(e){this.callStates.delete(e);}spanParentRef(e){return {traceIdB64:e.ids.traceIdB64,spanIdB64:e.ids.spanIdB64}}emitLive(e,t,n,o){var r,i,s,a,l,c;if(!Qv()||!e.rootSpan)return;let d=this.extractRaindropMetadata(e.metadata);Wu({traceId:e.rootSpan.ids.traceIdB64,type:t,content:n,metadata:{userId:(i=d.userId)!=null?i:(r=this.defaultContext)==null?void 0:r.userId,convoId:(a=d.convoId)!=null?a:(s=this.defaultContext)==null?void 0:s.convoId,eventName:(c=d.eventName)!=null?c:(l=this.defaultContext)==null?void 0:l.eventName,eventId:e.eventId,...o}});}extractRaindropMetadata(e){if(!e)return {};let t={},n=e["raindrop.userId"];typeof n=="string"&&n&&(t.userId=n);let o=e["raindrop.eventId"];typeof o=="string"&&o&&(t.eventId=o);let r=e["raindrop.convoId"];typeof r=="string"&&r&&(t.convoId=r);let i=e["raindrop.eventName"];typeof i=="string"&&i&&(t.eventName=i);let s=e["raindrop.properties"];if(typeof s=="string")try{t.properties=JSON.parse(s);}catch{}else s&&typeof s=="object"&&(t.properties=s);return t}extractInputText(e){if(typeof e.prompt=="string")return e.prompt;if(Array.isArray(e.messages))for(let t=e.messages.length-1;t>=0;t--){let n=e.messages[t];if(n?.role==="user"){if(typeof n.content=="string")return n.content;if(Array.isArray(n.content)){let o=n.content.find(r=>r?.type==="text"&&typeof r.text=="string");if(o)return o.text}}}}toolExecutionStart(e){let{toolCall:t}=e,n=rL();this.priorParentContexts.set(t.toolCallId,n??null),iL({parentCallId:e.callId,toolCallId:t.toolCallId,toolName:t.toolName});let o=this.getState(e.callId);if(o?.parentContextToolCallIds.add(t.toolCallId),!o?.stepParent)return;let{operationName:r,resourceName:i}=Ea("ai.toolCall",o.functionId),s=o.recordInputs?[Y("ai.toolCall.args",dt(t.input))]:[],a=this.traceShipper.startSpan({name:"ai.toolCall",parent:o.stepParent,eventId:o.eventId,operationId:"ai.toolCall",attributes:[Y("operation.name",r),Y("resource.name",i),Y("ai.telemetry.functionId",o.functionId),Y("ai.toolCall.name",t.toolName),Y("ai.toolCall.id",t.toolCallId),...s]});o.toolSpans.set(t.toolCallId,a),this.emitLive(o,"tool_start",t.toolName,{args:t.input});}toolExecutionEnd(e){var t;let n=(t=e.toolCall)==null?void 0:t.toolCallId;if(n&&this.priorParentContexts.has(n)){let i=this.priorParentContexts.get(n);this.priorParentContexts.delete(n),i?iL(i):VY();}let o=this.getState(e.callId);if(!o)return;let r=o.toolSpans.get(e.toolCall.toolCallId);if(r){if(o.toolCallCount+=1,e.success){let i=o.recordOutputs?[Y("ai.toolCall.result",dt(e.output))]:[];this.traceShipper.endSpan(r,{attributes:i});}else this.traceShipper.endSpan(r,{error:e.error});this.emitLive(o,"tool_result",e.toolCall.toolName),o.toolSpans.delete(e.toolCall.toolCallId);}}emitProviderExecutedToolSpans(e,t){if(!t.stepParent)return;let n=Array.isArray(e.content)?e.content:[],o=n.filter(i=>i?.type==="tool-call"&&i.providerExecuted===true);if(o.length===0)return;let r=new Map;for(let i of n)(i?.type==="tool-result"||i?.type==="tool-error")&&typeof i.toolCallId=="string"&&r.set(i.toolCallId,i);for(let i of o){let{operationName:s,resourceName:a}=Ea("ai.toolCall",t.functionId),l=t.recordInputs?[Y("ai.toolCall.args",dt(i.input))]:[],c=this.traceShipper.startSpan({name:"ai.toolCall",parent:t.stepParent,eventId:t.eventId,operationId:"ai.toolCall",attributes:[Y("operation.name",s),Y("resource.name",a),Y("ai.telemetry.functionId",t.functionId),Y("ai.toolCall.name",i.toolName),Y("ai.toolCall.id",i.toolCallId),Y("ai.toolCall.providerExecuted","true"),...l]});t.toolCallCount+=1,this.emitLive(t,"tool_start",i.toolName,{args:i.input});let d=r.get(i.toolCallId);if(d?.type==="tool-error")this.traceShipper.endSpan(c,{error:d.error});else {let u=t.recordOutputs&&d&&"output"in d?[Y("ai.toolCall.result",dt(d.output))]:[];this.traceShipper.endSpan(c,{attributes:u});}this.emitLive(t,"tool_result",i.toolName);}}finishGenerate(e,t){var n,o,r,i,s,a,l,c,d,u,p,m,h,g;if(t.rootSpan){let y=[];if(t.recordOutputs&&(y.push(Y("ai.response.finishReason",e.finishReason),Y("ai.response.text",(n=e.text)!=null?n:void 0),Y("ai.response.providerMetadata",e.providerMetadata?dt(e.providerMetadata):void 0)),((o=e.toolCalls)==null?void 0:o.length)>0&&y.push(Y("ai.response.toolCalls",JSON.stringify(e.toolCalls.map(b=>({toolCallId:b.toolCallId,toolName:b.toolName,input:b.input}))))),((r=e.reasoning)==null?void 0:r.length)>0)){let b=e.reasoning.filter(E=>"text"in E).map(E=>E.text).join(`
|
|
173
173
|
`);b&&y.push(Y("ai.response.reasoning",b));}let S=(i=e.totalUsage)!=null?i:e.usage;S&&y.push(et("ai.usage.inputTokens",S.inputTokens),et("ai.usage.outputTokens",S.outputTokens),et("ai.usage.totalTokens",S.totalTokens),et("ai.usage.reasoningTokens",S.reasoningTokens),et("ai.usage.cachedInputTokens",S.cachedInputTokens)),y.push(et("ai.toolCall.count",t.toolCallCount)),this.traceShipper.endSpan(t.rootSpan,{attributes:y});}let f=t.subagentName!==void 0&&t.subagentToolCallSpan!==void 0;if(this.sendEvents&&!f){let y=this.extractRaindropMetadata(t.metadata),S=(a=y.userId)!=null?a:(s=this.defaultContext)==null?void 0:s.userId;if(S){let b=(d=(c=y.eventName)!=null?c:(l=this.defaultContext)==null?void 0:l.eventName)!=null?d:t.operationId,E=(u=e.text)!=null?u:t.accumulatedText||void 0,C=t.inputText,w=(p=e.response)==null?void 0:p.modelId,I={...(m=this.defaultContext)==null?void 0:m.properties,...y.properties},x=(g=y.convoId)!=null?g:(h=this.defaultContext)==null?void 0:h.convoId;this.eventShipper.patch(t.eventId,{eventName:b,userId:S,convoId:x,input:C,output:E,model:w,properties:Object.keys(I).length>0?I:void 0,isPending:false}).catch(v=>{this.debug&&console.warn(`[raindrop-ai/ai-sdk] event patch failed: ${v instanceof Error?v.message:v}`);});}}}finishEmbed(e,t){var n;if(!t.rootSpan)return;let o=[],r=t.operationId==="ai.embedMany";t.recordOutputs&&(r?o.push(Y("ai.embeddings",dt(e.embedding))):o.push(Y("ai.embedding",dt(e.embedding)))),((n=e.usage)==null?void 0:n.tokens)!=null&&o.push(et("ai.usage.tokens",e.usage.tokens)),this.traceShipper.endSpan(t.rootSpan,{attributes:o});}},OEe="__raindrop_report",CY={missing_context:{description:"You cannot complete the task because critical information, credentials, or access is missing and the user cannot provide it. Do NOT report this for normal clarifying questions \u2014 only when you are blocked.",sentiment:"NEGATIVE"},repeatedly_broken_tool:{description:"A tool has failed or not returned the expected response on multiple distinct attempts in this conversation, preventing task completion. A single tool error is NOT enough \u2014 the tool must be persistently broken or aberrantly behaving across retries.",sentiment:"NEGATIVE"},capability_gap:{description:"The task requires a tool, permission, or capability that you do not have. For example, the user asks you to perform an action but no suitable tool exists, or you lack the necessary access. Do NOT report this if you simply need more information from the user \u2014 only when the gap is in your own capabilities.",sentiment:"NEGATIVE"},complete_task_failure:{description:"You were unable to accomplish what the user asked despite making genuine attempts. This might be things like, you genuinely do not have the capabilities the user is asking for. You have tried but run into a persistent bug in the environment etc. This is NOT a refusal or policy block \u2014 you tried and failed to deliver the result.",sentiment:"NEGATIVE"}},MEe="You have a diagnostic tool for flagging serious failures for developer review. Only call this when you hit a significant, unrecoverable problem \u2014 not for minor hiccups or routine clarifications. If you can still help the user, do that instead of calling this tool. This tool is invisible to the user \u2014 never mention it or its output.";function tf(e){return typeof e!="string"?void 0:e.trim()||void 0}function NEe(e){if(!e)return CY;let t=Object.entries(e).map(([n,o])=>{var r;let i=n.trim();if(!i||!o||typeof o!="object")return;let s=(r=o.description)==null?void 0:r.trim();if(!s)return;let a=o.sentiment;return [i,{description:s,...a==="POSITIVE"||a==="NEGATIVE"?{sentiment:a}:{}}]}).filter(n=>n!==void 0);return t.length===0?CY:Object.fromEntries(t)}function zY(e){var t,n;let o=NEe(e.signals),r=Object.keys(o),i={},s={};for(let p of r){let m=o[p];m&&(i[p]=m.description,s[p]=m.sentiment);}let a=((t=e.guidance)==null?void 0:t.trim())||"",l=((n=e.toolName)==null?void 0:n.trim())||OEe,c=r.map(p=>{let m=s[p],h=m?` [${m.toLowerCase()}]`:"";return `- ${p}: ${i[p]}${h}`}).join(`
|
|
174
174
|
`),d=a?`
|
|
@@ -200,7 +200,7 @@ Categories:
|
|
|
200
200
|
`);if(n<1||n>o.length)return;let r=Math.max(1,n-dJ),i=Math.min(o.length,n+dJ),s=String(i).length,a=[];for(let l=r;l<=i;l++){let c=l===n?ACe:TCe;a.push(`${c}${String(l).padStart(s)} | ${o[l-1]??""}`);}return a.join(`
|
|
201
201
|
`)}var mJ="\r",hJ="\x1B[1A",gJ="\x1B[J",RCe="\u28CB\u28D9\u28F9\u28F8\u28FC\u28F4\u28E6\u28E7\u28C7\u28CF",wCe="|/-\\",ICe="\u2736\u2738\u2739\u273A\u2739\u2737",xCe="*",_Ce="#0891b2",PCe={pass:{glyph:"\u2713",ascii:"v",paint:al.green},fail:{glyph:"\u2718",ascii:"x",paint:al.red},skip:{glyph:"\u2212",ascii:"-",paint:al.dim},cancel:{glyph:"\u2298",ascii:"o",paint:al.yellow},retry:{glyph:"\u21BB",ascii:"~",paint:al.yellow}};function nr(e){let t=e.colorLevel>0&&e.isTTY,n=(o,r)=>t?r(o):o;return {unicode:e.unicode,color:t,bold:o=>n(o,al.bold),dim:o=>n(o,al.gray),code:o=>n(o,al.hex(_Ce)),spinner:o=>{let r=e.unicode?RCe:wCe,i=(o%r.length+r.length)%r.length;return n(r.charAt(i),al.cyan)},classifySpinner:o=>{let r=e.unicode?ICe:xCe,i=(o%r.length+r.length)%r.length;return n(r.charAt(i),al.cyan)},statusGlyph:o=>{let r=PCe[o],i=e.unicode?r.glyph:r.ascii;return t?r.paint(i):i},separator:e.unicode?" \xB7 ":" | "}}function fJ(e,t=""){let n=process.stdout?.columns||process.stderr?.columns||80,o=Math.max(n-t.length,20),r=[];for(let i of e.split(`
|
|
202
202
|
`)){let s="";for(let a of i.split(" ")){if(!s.length){s=a;continue}let l=`${s} ${a}`;if(l.length<=o){s=l;continue}r.push(t+s),s=a;}r.push(t+s);}return r.join(`
|
|
203
|
-
`)}var MCe={PASS:{glyph:"pass",isTerminal:true},FAIL:{glyph:"fail",isTerminal:true},SKIP:{glyph:"skip",isTerminal:true},CANCEL:{glyph:"cancel",isTerminal:true},RETRY:{glyph:"retry",isTerminal:false}},NCe={PASSED:"PASS",FAILED:"FAIL",CANCELLED:"CANCEL",RETRYING:"RETRY",RUNNING:"RUNNING",SKIP:"SKIP",RUN:"RUNNING",RETRY:"RETRY"};function yJ(e,t,n=0){let o=NCe[e];if(!o)return;let r=nr(t);if(o==="RUNNING")return {badge:r.spinner(n),isTerminal:false};let{glyph:i,isTerminal:s}=MCe[o];return {badge:r.statusGlyph(i),isTerminal:s}}function xd(e,t){return !t.isTTY||t.colorLevel===0?e:`\x1B]8;;${e}\x07${e}\x1B]8;;\x07`}function SJ({parallel:e,remoteBrowser:t}){let n=cpus$1().length;if(t){if(e<=n*4)return;let o=Math.max(1,n*4-2);R.warn(`Running ${e} workers on a ${n}-core machine with a remote browser. We recommend at most ~${o} workers ((cores \xD7 4) \u2212 2) to avoid local saturation.`);return}n>=e*2||R.warn(`Running ${e} workers on a ${n}-core machine. Chrome needs ~2 cores per worker; expect slowdowns.`);}function bJ(){let e=eY(),t=[];e.lowMemorySamples>0&&t.push(`memory low ${e.lowMemorySamples}x`),e.highCpuSamples>0&&t.push(`CPU saturated ${e.highCpuSamples}x`),e.highHeapSamples>0&&t.push(`heap near limit ${e.highHeapSamples}x`),t.length!==0&&(R.log(""),R.warn(`Machine was under pressure during this run (${t.join(", ")}). Slowdowns and timeouts may be related.`));}var Ee=Jg({app:"cli",hostname:hostname(),disableConsoleLogs:true}).child({cliVersion:"3.12.
|
|
203
|
+
`)}var MCe={PASS:{glyph:"pass",isTerminal:true},FAIL:{glyph:"fail",isTerminal:true},SKIP:{glyph:"skip",isTerminal:true},CANCEL:{glyph:"cancel",isTerminal:true},RETRY:{glyph:"retry",isTerminal:false}},NCe={PASSED:"PASS",FAILED:"FAIL",CANCELLED:"CANCEL",RETRYING:"RETRY",RUNNING:"RUNNING",SKIP:"SKIP",RUN:"RUNNING",RETRY:"RETRY"};function yJ(e,t,n=0){let o=NCe[e];if(!o)return;let r=nr(t);if(o==="RUNNING")return {badge:r.spinner(n),isTerminal:false};let{glyph:i,isTerminal:s}=MCe[o];return {badge:r.statusGlyph(i),isTerminal:s}}function xd(e,t){return !t.isTTY||t.colorLevel===0?e:`\x1B]8;;${e}\x07${e}\x1B]8;;\x07`}function SJ({parallel:e,remoteBrowser:t}){let n=cpus$1().length;if(t){if(e<=n*4)return;let o=Math.max(1,n*4-2);R.warn(`Running ${e} workers on a ${n}-core machine with a remote browser. We recommend at most ~${o} workers ((cores \xD7 4) \u2212 2) to avoid local saturation.`);return}n>=e*2||R.warn(`Running ${e} workers on a ${n}-core machine. Chrome needs ~2 cores per worker; expect slowdowns.`);}function bJ(){let e=eY(),t=[];e.lowMemorySamples>0&&t.push(`memory low ${e.lowMemorySamples}x`),e.highCpuSamples>0&&t.push(`CPU saturated ${e.highCpuSamples}x`),e.highHeapSamples>0&&t.push(`heap near limit ${e.highHeapSamples}x`),t.length!==0&&(R.log(""),R.warn(`Machine was under pressure during this run (${t.join(", ")}). Slowdowns and timeouts may be related.`));}var Ee=Jg({app:"cli",hostname:hostname(),disableConsoleLogs:true}).child({cliVersion:"3.12.1"});var kCe=5,Lm=" ";async function cR({getResults:e,checkDone:t,name:n,timeoutMs:o=18e5}){let r=Date.now(),i=0;for(;Date.now()-r<o;){let s;i>kCe&&(R.error(`Failed to fetch ${n} status too many times.`),process.exit(1));try{s=await e(),i=0;}catch(c){i++,Ee.warn({err:c},"Failed to fetch run status; retrying."),R.warn({err:c},"Failed to fetch run status; retrying."),await new Promise(d=>setTimeout(d,1500*i));continue}if(t(s))return s;let l=Math.max(1e4,Math.floor(o/100));await new Promise(c=>setTimeout(c,l));}R.error(`Timeout elapsed waiting for ${n} to complete (${Math.floor(o/1e3)}s).`),process.exit(1);}function TJ(e){let t={passed:[],failed:[],cancelled:[],quarantinedPassed:[],quarantinedFailed:[]};for(let n of e)switch(n.status){case "PASSED":(n.quarantined?t.quarantinedPassed:t.passed).push(n);break;case "FAILED":(n.quarantined?t.quarantinedFailed:t.failed).push(n);break;case "CANCELLED":t.cancelled.push(n);break}return t}function GL(e){let t=TJ(e),n=t.failed.filter(r=>r.failureDetails?.classification?.action==="heal"),o=t.failed.filter(r=>r.failureDetails?.classification?.action==="warn");return {passed:t.passed.length,failed:t.failed.length,cancelled:t.cancelled.length,quarantinedPassed:t.quarantinedPassed.length,quarantinedFailed:t.quarantinedFailed.length,healElectedFailures:n.length,warnElectedFailures:o.length}}function of(e,{onlyQuarantined:t=false,overrideExitCode:n=false}={}){let o=n?e.healElectedFailures+e.warnElectedFailures:0,r=e.failed-o,i=t?e.quarantinedFailed:0;return r+i>0||e.cancelled>0}function jL({results:e,startTime:t,getPath:n,getUrl:o,printFailureBody:r,getCancellationReason:i,recoveredCount:s,skippedCount:a,videoRecordingActive:l}){let{passed:c,failed:d,cancelled:u,quarantinedPassed:p,quarantinedFailed:m}=TJ(e),h=vt(),g=h.unicode?"\u2500":"-",f=process.stdout?.columns||80,y=(S,b,E,C)=>{let w=` ${b+1}) ${n(S)} `,I=Math.max(3,f-w.length-2);R.log(""),R.log(E(`${w}${g.repeat(I)}`)),R.log(""),C();let x=o(S);x&&(R.log(""),R.log(`${Lm}${xd(x,h)}`));};lJ(()=>{d.forEach((x,v)=>{y(x,v,al.red.bold,()=>r?.(x));}),u.forEach((x,v)=>{y(x,d.length+v,al.yellow.bold,()=>{let P=i?.(x)??"Cancelled";R.log(`${Lm}${al.yellow.bold(P)}`);});});let S=(x,v,P)=>{x.length!==0&&(R.log(""),R.log(` ${P(`${x.length} ${v}`)}`),x.forEach(_=>{R.dimmed(`${Lm}${n(_)}`);}));};S(d,"failed",al.red.bold),S(m,"failed",x=>al.red.bold(`${x} (quarantined)`)),S(u,"cancelled",al.yellow.bold),a&&(R.log(""),R.log(` ${al.yellow.bold(`${a} skipped`)}`));let b=c.length+p.length,E=Math.max(1,Math.round((Date.now()-t)/1e3)),C=[];p.length>0&&C.push(`${p.length} quarantined`),s&&s>0&&C.push(`${s} recovered`);let w=C.length>0?` (${C.join(", ")})`:"",I=DCe(e,h,l);R.log(""),R.log(` ${al.green.bold(`${b} passed${w} (${E}s)`)}${I}`),bJ();});}function dR(e){return jL(e),GL(e.results)}function DCe(e,t,n=false){let o=e.length;if(o===0)return "";let r=e.filter(a=>a.usedRemoteBrowser).length;return r===0?"":`${t.unicode?" \xB7 ":" | "}${r}/${o} ran on remote browser${n?" (video saved async)":""}`}function uR(e){if(!e.failureDetails||!e.failureReason)return;let t=Yl({failureReason:e.failureReason,classification:e.failureDetails.classification,manualClassification:e.failureDetails.manualClassification}),n=t.title??e.failureReason,o=e.failureDetails.classification?.rootCause??t.description??t.title??e.failureReason;R.log(`${Lm}${al.red.bold(n)}`),o&&o!==n&&(R.log(""),R.log(fJ(o,Lm)));let r=uJ({failureDetails:e.failureDetails,filePath:e.filePath,results:e.results,beforeResults:e.beforeResults,afterResults:e.afterResults});r&&(R.log(""),R.log(r));let i=e.failureDetails.classification?.citations;if(i&&i.length>0){R.log(""),R.log(`${Lm}${al.bold("Sources:")}`);for(let s of i)R.log(`${Lm} [${s.refId}] ${s.title}`);}}var rf=" ".repeat(6);var FCe=(e,t,n,o)=>{if(n==="length"||n==="prototype"||n==="arguments"||n==="caller")return;let r=Object.getOwnPropertyDescriptor(e,n),i=Object.getOwnPropertyDescriptor(t,n);!BCe(r,i)&&o||Object.defineProperty(e,n,i);},BCe=function(e,t){return e===void 0||e.configurable||e.writable===t.writable&&e.enumerable===t.enumerable&&e.configurable===t.configurable&&(e.writable||e.value===t.value)},UCe=(e,t)=>{let n=Object.getPrototypeOf(t);n!==Object.getPrototypeOf(e)&&Object.setPrototypeOf(e,n);},HCe=(e,t)=>`/* Wrapped ${e}*/
|
|
204
204
|
${t}`,GCe=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),jCe=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),$Ce=(e,t,n)=>{let o=n===""?"":`with ${n.trim()}() `,r=HCe.bind(null,o,t.toString());Object.defineProperty(r,"name",jCe);let{writable:i,enumerable:s,configurable:a}=GCe;Object.defineProperty(e,"toString",{value:r,writable:i,enumerable:s,configurable:a});};function $L(e,t,{ignoreNonConfigurable:n=false}={}){let{name:o}=e;for(let r of Reflect.ownKeys(t))FCe(e,t,r,n);return UCe(e,t),$Ce(e,t,o),e}var pR=new WeakMap,AJ=(e,t={})=>{if(typeof e!="function")throw new TypeError("Expected a function");let n,o=0,r=e.displayName||e.name||"<anonymous>",i=function(...s){if(pR.set(i,++o),o===1)n=e.apply(this,s),e=void 0;else if(t.throw===true)throw new Error(`Function \`${r}\` can only be called once`);return n};return $L(i,e),pR.set(i,o),i};AJ.callCount=e=>{if(!pR.has(e))throw new Error(`The given function \`${e.name}\` is not wrapped by the \`onetime\` package`);return pR.get(e)};var EJ=AJ;var km=[];km.push("SIGHUP","SIGINT","SIGTERM");process.platform!=="win32"&&km.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&km.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var mR=e=>!!e&&typeof e=="object"&&typeof e.removeListener=="function"&&typeof e.emit=="function"&&typeof e.reallyExit=="function"&&typeof e.listeners=="function"&&typeof e.kill=="function"&&typeof e.pid=="number"&&typeof e.on=="function",VL=Symbol.for("signal-exit emitter"),zL=globalThis,VCe=Object.defineProperty.bind(Object),WL=class{emitted={afterExit:false,exit:false};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(zL[VL])return zL[VL];VCe(zL,VL,{value:this,writable:false,enumerable:false,configurable:false});}on(t,n){this.listeners[t].push(n);}removeListener(t,n){let o=this.listeners[t],r=o.indexOf(n);r!==-1&&(r===0&&o.length===1?o.length=0:o.splice(r,1));}emit(t,n,o){if(this.emitted[t])return false;this.emitted[t]=true;let r=false;for(let i of this.listeners[t])r=i(n,o)===true||r;return t==="exit"&&(r=this.emit("afterExit",n,o)||r),r}},hR=class{},zCe=e=>({onExit(t,n){return e.onExit(t,n)},load(){return e.load()},unload(){return e.unload()}}),qL=class extends hR{onExit(){return ()=>{}}load(){}unload(){}},KL=class extends hR{#s=YL.platform==="win32"?"SIGINT":"SIGHUP";#n=new WL;#e;#r;#p;#t={};#i=false;constructor(t){super(),this.#e=t,this.#t={};for(let n of km)this.#t[n]=()=>{let o=this.#e.listeners(n),{count:r}=this.#n,i=t;if(typeof i.__signal_exit_emitter__=="object"&&typeof i.__signal_exit_emitter__.count=="number"&&(r+=i.__signal_exit_emitter__.count),o.length===r){this.unload();let s=this.#n.emit("exit",null,n),a=n==="SIGHUP"?this.#s:n;s||t.kill(t.pid,a);}};this.#p=t.reallyExit,this.#r=t.emit;}onExit(t,n){if(!mR(this.#e))return ()=>{};this.#i===false&&this.load();let o=n?.alwaysLast?"afterExit":"exit";return this.#n.on(o,t),()=>{this.#n.removeListener(o,t),this.#n.listeners.exit.length===0&&this.#n.listeners.afterExit.length===0&&this.unload();}}load(){if(!this.#i){this.#i=true,this.#n.count+=1;for(let t of km)try{let n=this.#t[t];n&&this.#e.on(t,n);}catch{}this.#e.emit=(t,...n)=>this.#m(t,...n),this.#e.reallyExit=t=>this.#o(t);}}unload(){this.#i&&(this.#i=false,km.forEach(t=>{let n=this.#t[t];if(!n)throw new Error("Listener not defined for signal: "+t);try{this.#e.removeListener(t,n);}catch{}}),this.#e.emit=this.#r,this.#e.reallyExit=this.#p,this.#n.count-=1);}#o(t){return mR(this.#e)?(this.#e.exitCode=t||0,this.#n.emit("exit",this.#e.exitCode,null),this.#p.call(this.#e,this.#e.exitCode)):0}#m(t,...n){let o=this.#r;if(t==="exit"&&mR(this.#e)){typeof n[0]=="number"&&(this.#e.exitCode=n[0]);let r=o.call(this.#e,t,...n);return this.#n.emit("exit",this.#e.exitCode,null),r}else return o.call(this.#e,t,...n)}},YL=globalThis.process,{onExit:CJ}=zCe(mR(YL)?new KL(YL):new qL);var vJ=ml.stderr.isTTY?ml.stderr:ml.stdout.isTTY?ml.stdout:void 0,WCe=vJ?EJ(()=>{CJ(()=>{vJ.write("\x1B[?25h");},{alwaysLast:true});}):()=>{},RJ=WCe;var fR=false,sf={};sf.show=(e=ml.stderr)=>{e.isTTY&&(fR=false,e.write("\x1B[?25h"));};sf.hide=(e=ml.stderr)=>{e.isTTY&&(RJ(),fR=true,e.write("\x1B[?25l"));};sf.toggle=(e,t)=>{e!==void 0&&(fR=e),fR?sf.show(t):sf.hide(t);};var JL=sf;var rT=pO(XL());function QL(){return ml.platform!=="win32"?ml.env.TERM!=="linux":!!ml.env.CI||!!ml.env.WT_SESSION||!!ml.env.TERMINUS_SUBLIME||ml.env.ConEmuTask==="{cmd::Cmder}"||ml.env.TERM_PROGRAM==="Terminus-Sublime"||ml.env.TERM_PROGRAM==="vscode"||ml.env.TERM==="xterm-256color"||ml.env.TERM==="alacritty"||ml.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var KCe={info:al.blue("\u2139"),success:al.green("\u2714"),warning:al.yellow("\u26A0"),error:al.red("\u2716")},YCe={info:al.blue("i"),success:al.green("\u221A"),warning:al.yellow("\u203C"),error:al.red("\xD7")},JCe=QL()?KCe:YCe,oT=JCe;function ZL({onlyFirst:e=false}={}){let r="(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";return new RegExp(r,e?void 0:"g")}var XCe=ZL();function ek(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return !e.includes("\x1B")&&!e.includes("\x9B")?e:e.replace(XCe,"")}function tk({stream:e=process.stdout}={}){return !!(e&&e.isTTY&&process.env.TERM!=="dumb"&&!("CI"in process.env))}function nk(){let{env:e}=ml,{TERM:t,TERM_PROGRAM:n}=e;return ml.platform!=="win32"?t!=="linux":!!e.WT_SESSION||!!e.TERMINUS_SUBLIME||e.ConEmuTask==="{cmd::Cmder}"||n==="Terminus-Sublime"||n==="vscode"||t==="xterm-256color"||t==="alacritty"||t==="rxvt-unicode"||t==="rxvt-unicode-256color"||e.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var QCe=3,ok=class{#s=0;start(){this.#s++,this.#s===1&&this.#n();}stop(){if(this.#s<=0)throw new Error("`stop` called more times than `start`");this.#s--,this.#s===0&&this.#e();}#n(){ml.platform==="win32"||!ml.stdin.isTTY||(ml.stdin.setRawMode(true),ml.stdin.on("data",this.#r),ml.stdin.resume());}#e(){ml.stdin.isTTY&&(ml.stdin.off("data",this.#r),ml.stdin.pause(),ml.stdin.setRawMode(false));}#r(t){t[0]===QCe&&ml.emit("SIGINT");}},ZCe=new ok,rk=ZCe;pO(XL());var ik=class{#s=0;#n=false;#e=0;#r=-1;#p=0;#t;#i;#o;#m;#g;#c;#d;#u;#f;#a;#l;color;constructor(t){typeof t=="string"&&(t={text:t}),this.#t={color:"cyan",stream:ml.stderr,discardStdin:true,hideCursor:true,...t},this.color=this.#t.color,this.spinner=this.#t.spinner,this.#g=this.#t.interval,this.#o=this.#t.stream,this.#c=typeof this.#t.isEnabled=="boolean"?this.#t.isEnabled:tk({stream:this.#o}),this.#d=typeof this.#t.isSilent=="boolean"?this.#t.isSilent:false,this.text=this.#t.text,this.prefixText=this.#t.prefixText,this.suffixText=this.#t.suffixText,this.indent=this.#t.indent,ml.env.NODE_ENV==="test"&&(this._stream=this.#o,this._isEnabled=this.#c,Object.defineProperty(this,"_linesToClear",{get(){return this.#s},set(n){this.#s=n;}}),Object.defineProperty(this,"_frameIndex",{get(){return this.#r}}),Object.defineProperty(this,"_lineCount",{get(){return this.#e}}));}get indent(){return this.#u}set indent(t=0){if(!(t>=0&&Number.isInteger(t)))throw new Error("The `indent` option must be an integer from 0 and up");this.#u=t,this.#h();}get interval(){return this.#g??this.#i.interval??100}get spinner(){return this.#i}set spinner(t){if(this.#r=-1,this.#g=void 0,typeof t=="object"){if(t.frames===void 0)throw new Error("The given spinner must have a `frames` property");this.#i=t;}else if(!nk())this.#i=rT.default.line;else if(t===void 0)this.#i=rT.default.dots;else if(t!=="default"&&rT.default[t])this.#i=rT.default[t];else throw new Error(`There is no built-in spinner named '${t}'. See https://github.com/sindresorhus/cli-spinners/blob/main/spinners.json for a full list.`)}get text(){return this.#f}set text(t=""){this.#f=t,this.#h();}get prefixText(){return this.#a}set prefixText(t=""){this.#a=t,this.#h();}get suffixText(){return this.#l}set suffixText(t=""){this.#l=t,this.#h();}get isSpinning(){return this.#m!==void 0}#y(t=this.#a,n=" "){return typeof t=="string"&&t!==""?t+n:typeof t=="function"?t()+n:""}#S(t=this.#l,n=" "){return typeof t=="string"&&t!==""?n+t:typeof t=="function"?n+t():""}#h(){let t=this.#o.columns??80,n=this.#y(this.#a,"-"),o=this.#S(this.#l,"-"),r=" ".repeat(this.#u)+n+"--"+this.#f+"--"+o;this.#e=0;for(let i of ek(r).split(`
|
|
205
205
|
`))this.#e+=Math.max(1,Math.ceil(JZ(i,{countAnsiEscapeCodes:true})/t));}get isEnabled(){return this.#c&&!this.#d}set isEnabled(t){if(typeof t!="boolean")throw new TypeError("The `isEnabled` option must be a boolean");this.#c=t;}get isSilent(){return this.#d}set isSilent(t){if(typeof t!="boolean")throw new TypeError("The `isSilent` option must be a boolean");this.#d=t;}frame(){let t=Date.now();(this.#r===-1||t-this.#p>=this.interval)&&(this.#r=++this.#r%this.#i.frames.length,this.#p=t);let{frames:n}=this.#i,o=n[this.#r];this.color&&(o=al[this.color](o));let r=typeof this.#a=="string"&&this.#a!==""?this.#a+" ":"",i=typeof this.text=="string"?" "+this.text:"",s=typeof this.#l=="string"&&this.#l!==""?" "+this.#l:"";return r+o+i+s}clear(){if(!this.#c||!this.#o.isTTY)return this;this.#o.cursorTo(0);for(let t=0;t<this.#s;t++)t>0&&this.#o.moveCursor(0,-1),this.#o.clearLine(1);return (this.#u||this.lastIndent!==this.#u)&&this.#o.cursorTo(this.#u),this.lastIndent=this.#u,this.#s=0,this}render(){return this.#d?this:(this.clear(),this.#o.write(this.frame()),this.#s=this.#e,this)}start(t){return t&&(this.text=t),this.#d?this:this.#c?this.isSpinning?this:(this.#t.hideCursor&&JL.hide(this.#o),this.#t.discardStdin&&ml.stdin.isTTY&&(this.#n=true,rk.start()),this.render(),this.#m=setInterval(this.render.bind(this),this.interval),this):(this.text&&this.#o.write(`- ${this.text}
|
|
206
206
|
`),this)}stop(){return this.#c?(clearInterval(this.#m),this.#m=void 0,this.#r=0,this.clear(),this.#t.hideCursor&&JL.show(this.#o),this.#t.discardStdin&&ml.stdin.isTTY&&this.#n&&(rk.stop(),this.#n=false),this):this}succeed(t){return this.stopAndPersist({symbol:oT.success,text:t})}fail(t){return this.stopAndPersist({symbol:oT.error,text:t})}warn(t){return this.stopAndPersist({symbol:oT.warning,text:t})}info(t){return this.stopAndPersist({symbol:oT.info,text:t})}stopAndPersist(t={}){if(this.#d)return this;let n=t.prefixText??this.#a,o=this.#y(n," "),r=t.symbol??" ",i=t.text??this.text,a=typeof i=="string"?(r?" ":"")+i:"",l=t.suffixText??this.#l,c=this.#S(l," "),d=o+r+a+c+`
|
|
@@ -256,7 +256,7 @@ ${u}`,{cause:d})}i=DT({testV2:l,testName:Jn__default.basename(e,".test.yaml")});
|
|
|
256
256
|
${z.prettifyError(s)}`:`: ${Q(s)}`;R.warn(`Project config at ${e} does not match the required schema${a}`);return}let o=deletedDiff(t,n),r=fQ(o,"");r.length>0&&R.warn(`Momentic config file at ${e} contains unrecognized keys: ${r.join(", ")}. These keys will be ignored.`);let i=uxe(n);return mxe(t)&&i.push("ai.classification.categories"),i.length>0&&R.warn(`Momentic config file at ${e} sets cloud-managed AI settings (${i.join(", ")}) that are configured in the Momentic dashboard and ignored locally. Remove them from this file.`),n}function hxe(e){let t=gQ(e,"workspace configuration");if(t!==void 0)try{return rxe.parse(t)}catch(n){R.warn(`Possible Momentic workspace configuration file at ${e} does not adhere to the required schema: ${Q(n)}`);return}}function gxe(){let e=[],t=cwd(),n=Jn__default.parse(t).root,o=15,r=0;for(;r<o;){r++;let i=Jn__default.basename(t);if(Qk.includes(i))return R.warn(`Stopping search for Momentic projects since the current directory name (${i}) is likely a system artifact folder.`),e;for(let s of readdirSync(t))if(s.endsWith(Oc)){let a=Jn__default.join(t,s),l=lD(a);l&&e.push({configFilePath:a,config:l,rootDir:dirname(a)});}if(e.length)return e;if(t=Jn__default.dirname(t),t===n)break}return e}async function on(e={}){let{configFilePath:t,nameFilter:n,skipExitOnError:o}=e,r=await cD(t,o);if(n&&(r=r.filter(i=>i.config.name===n)),r.length>1)throw new Error(`Multiple valid projects were found in the same directory. Please use the '-c / --config' flag to disambiguate:
|
|
257
257
|
${r.map(i=>i.configFilePath)}`);if(r.length===0)throw new Error("No valid Momentic project file available.");return R.debug(`Found valid project configuration at ${r[0].configFilePath}`),r[0]}async function fxe(e){let t=hxe(e);if(!t||!t.projects||!t.projects.length)return;let n=t.projects.map(s=>(s.endsWith("/")||(s+="/"),`${s}*${Oc}`)),o=AbortSignal.timeout(2e3),r;try{r=await Bd(n,{cwd:cwd(),maxDepth:BT,ignore:[],nodir:!0,signal:o});}catch(s){throw R.error({err:s},`Failed to list the available Momentic projects in the current directory. This usually indicates the 'include' or 'exclude' option in your ${HT} is misconfigured.`),s}let i=[];for(let s of r){let a=Jn__default.join(cwd(),s),l=lD(a);l&&i.push({configFilePath:a,config:l,rootDir:dirname(a)});}return i}async function cD(e,t){if(e){e=Jn__default.resolve(e);let o=lD(e);return o?[{config:o,configFilePath:e,rootDir:Jn__default.dirname(e)}]:(console.error(`No valid Momentic project file found at ${e}.`),t||process.exit(1),[])}if(existsSync(HT)){let o=await fxe(HT);if(o)return o}return gxe()}function jd(e,t){let n=nT.stringify(e);writeFileSync(t,n);}async function Ks({project:e,apiClient:t,classificationOverrides:n}){let{classification:o,healing:r,explore:i}=(await t.getOrgSettings()).ai??{},s=Sxe({flags:n,config:e.config.ai?.classification,cloudConfig:o}),a=yxe({config:e.config.ai?.triage,cloudConfig:r}),l={...e.config.ai};return delete l.healing,delete l.triage,n?.disabled&&(l.aiFailureAnalysis=false),{...e,config:{...e.config,ai:{...l,classification:s,triage:a,explore:i}}}}function yxe({config:e,cloudConfig:t}){if(!(!e&&!t))return {onHealFail:e?.onHealFail??t?.onFail??gO,onHealSuccess:e?.onHealSuccess??t?.onSuccess??fO,remoteBrowser:e?.remoteBrowser,requestCommitAuthorsAsReviewers:e?.requestCommitAuthorsAsReviewers??t?.requestCommitAuthorsAsReviewers}}function Sxe({flags:e,config:t,cloudConfig:n}){if(!(!t&&!n))return {enabled:e?.disabled?false:t?.enabled??n?.enabled??false,overrideExitCode:e?.overrideExitCode??t?.overrideExitCode??n?.overrideExitCode??VG,categories:n?.categories??ns}}var yQ="golden/visual-diff",SQ="reports",yl="test-results";var bxe=z.object({width:z.number(),height:z.number()}),Df=class{defaultGoldenScreenshotDir;regenerateGoldenFiles;apiClient;constructor(t,n,o){let r=Jn__default.join(t.rootDir,t.config.goldenFileDir??yQ);this.defaultGoldenScreenshotDir=r,this.regenerateGoldenFiles=o,this.apiClient=n;}async prepareGoldenScreenshotForComparison(t,n,o){if(Pj(n.screenshot?.data))return {buffer:(await this.apiClient.fetchOnDemandScreenshot(n.screenshot.data.id)).data,width:n.screenshot.width,height:n.screenshot.height};if(n.screenshot?.data?.startsWith("https://")){let s=await fetch(n.screenshot.data);return {buffer:Buffer.from(await s.arrayBuffer()),width:n.screenshot.width,height:n.screenshot.height}}let r=n.screenshot?.data;r||(r=Jn__default.join(this.defaultGoldenScreenshotDir,`${n.id}.jpg`));let i=`${r}.metadata.json`;if(this.regenerateGoldenFiles)return br__default.mkdirSync(Jn__default.dirname(r),{recursive:true}),br__default.writeFileSync(r,o.buffer),br__default.writeFileSync(i,JSON.stringify({width:o.width,height:o.height})),{buffer:Buffer.from(o.buffer),width:o.width,height:o.height};if(br__default.existsSync(r)){let s=br__default.readFileSync(r),a=bxe.parse(JSON.parse(br__default.readFileSync(i,"utf-8")));return {buffer:s,width:a.width,height:a.height}}else throw new te("UserConfigurationError",`Cannot execute visual diff without a saved baseline screenshot at ${r}`)}};var bQ=3e3,un=GT(),Exe=promisify(execFile);async function mD(e,t){try{return await GT(e).revparse(t)}catch(n){if(EQ(n))return;throw n}}async function $d(e){return mD(e,["--show-toplevel"])}async function TQ(e){return mD(e,["HEAD"])}async function AQ(e){return mD(e,["--abbrev-ref","HEAD"])}async function Cw({cwd:e,base:t,head:n,logger:o}){try{let r=(await GT(e).raw(["merge-base",t,n])).trim();if(r.length>0)return r;o.warn({base:t,head:n},"git merge-base returned empty");}catch(r){o.warn({err:r,base:t,head:n},"git merge-base failed");}}function hD(){return process.env.GITHUB_BASE_REF||process.env.BUILDKITE_PULL_REQUEST_BASE_BRANCH||process.env.CI_MERGE_REQUEST_TARGET_BRANCH_NAME||void 0}async function jT({client:e,repository:t,base:n,head:o,logger:r}){let i=gr(t);if(i)try{let s=await e.compareCommitsFromGithub({owner:i.owner,repo:i.repo,base:n,head:o});return s.commits.length===0?void 0:s}catch(s){r.warn({err:s,repository:t,base:n,head:o},"remote commit compare failed");return}}async function Ia(e){let{logger:t,operation:n,fn:o,context:r}=e,i=Date.now();try{return await o()}finally{let s=Date.now()-i;s>bQ&&!process.env.CI&&t.warn({operation:n,durationMs:s,thresholdMs:bQ,...r??{}},"[timing] slow git metadata operation");}}function Mc(e){if(e)try{let t=new Date(e);return isNaN(t.getTime())?void 0:t}catch{return}}async function Cxe(e){let t=await hn(e,un.raw(["config","--list"])),n={};if(!t)return n;for(let o of t.split(`
|
|
258
258
|
`)){let r=o.indexOf("=");if(r===-1)continue;let i=o.slice(0,r),s=o.slice(r+1).trim();n[i]=s;}return n}async function vxe(e,t,n){try{let r=n["github.user"]||void 0;if(r)return r}catch{}let o;try{if(t?.startsWith("http://")||t?.startsWith("https://"))o=new URL(t).host;else if(t?.startsWith("git@")){let r=t.indexOf("@"),i=t.indexOf(":",r+1);r!==-1&&i!==-1&&(o=t.slice(r+1,i));}}catch{}if(o=o?.toLowerCase(),!!o&&t?.startsWith("git@")&&o.includes("github"))try{let{stdout:r,stderr:i}=await Exe("ssh",["-T","-o","BatchMode=yes",`git@${o}`],{timeout:5e3}),a=`${r??""}${i??""}`.trim().match(/Hi\s+([A-Za-z0-9_-]+)!/);if(a?.[1])return a[1]}catch{return}}async function Rxe(e,t,n){let o=t?.includes("github.com"),r=t?.includes("gitlab.com");try{if(o)return vxe(e,t,n);if(r)return}catch{}}function $T(e){if(e.startsWith("git@")){let t=e.split(":");if(t.length===2){let n=t[1].replace(".git","").split("/");if(n.length===2){let o=n[0],r=n[1];return `${o}/${r}`}}}else if(e.startsWith("http")||e.startsWith("https")){let n=new URL(e).pathname.split("/").filter(Boolean);if(n.length>=2){let o=n[0],r=n[1].replace(".git","");return `${o}/${r}`}}}function EQ(e){if(!(e instanceof Error))return false;let t=e.message;return t.includes("not a git repository")||t.includes("ENOENT")||t.includes("detected dubious ownership")}async function hn(e,t){try{return (await t).trim()}catch(n){if(EQ(n))return;e.error({err:n},"Failed to run git command");return}}async function xa(e,t){if(e)try{return (await GT(t).revparse([e]))?.trim()||void 0}catch{return}}async function VT(e){let t=await xa(e);return t||await xa(`origin/${e}`)}function wxe(){if(process.env.GITHUB_ACTION)return "GithubActions";if(process.env.GITLAB_CI)return "GitlabCI";if(process.env.CIRCLECI)return "CircleCI";if(process.env.BUILDKITE)return "Buildkite";if(process.env["System.CollectionUri"]?.includes("azure"))return "AzureDevOps";if(process.env.PROJECT_ID&&process.env.BUILD_ID)return "GCPCloudBuild";if(process.env.BITRISE_BUILD_SLUG)return "Bitrise";if(process.env.MOMENTIC_GIT_OVERRIDE)return "Custom"}async function Ixe(e){let[t,n,o]=await Promise.all([hn(e,un.show(["--no-patch","--format=%ci"])),hn(e,un.show(["-s","--pretty=%B"])),hn(e,un.show(["-s","--pretty=%an"]))]),r=process.env.GITHUB_SERVER_URL&&process.env.GITHUB_REPOSITORY?`${process.env.GITHUB_SERVER_URL}/${process.env.GITHUB_REPOSITORY}`:void 0;return {ciProvider:"GithubActions",gitCommitSha:process.env.GITHUB_SHA,gitCommitShaShort:process.env.GITHUB_SHA?.slice(0,6),gitCommitTimestamp:t?Mc(t):void 0,gitBranchName:process.env.GITHUB_HEAD_REF||process.env.GITHUB_REF_NAME,gitOriginUrl:r,gitCommitMessage:n,gitCommitAuthorName:o,githubRepository:process.env.GITHUB_REPOSITORY,pipelineId:process.env.GITHUB_RUN_ID}}async function xxe(e){let[t,n,o]=await Promise.all([hn(e,un.listRemote(["--get-url","origin"])),hn(e,un.show(["-s","--pretty=%B"])),hn(e,un.show(["-s","--pretty=%an"]))]);return {ciProvider:"GitlabCI",gitCommitSha:process.env.CI_COMMIT_SHA,gitCommitShaShort:process.env.CI_COMMIT_SHORT_SHA,gitCommitTimestamp:process.env.CI_COMMIT_TIMESTAMP?Mc(process.env.CI_COMMIT_TIMESTAMP):void 0,gitBranchName:process.env.CI_COMMIT_BRANCH||process.env.CI_COMMIT_REF_NAME,gitOriginUrl:t,gitCommitMessage:n,gitCommitAuthorName:o,gitlabProjectPath:process.env.CI_PROJECT_PATH,pipelineId:`${process.env.CI_PIPELINE_ID}:${process.env.CI_JOB_ID}`}}async function _xe(e){let[t,n,o,r]=await Promise.all([hn(e,un.show(["--no-patch","--format=%ci"])),hn(e,un.listRemote(["--get-url","origin"])),hn(e,un.show(["-s","--pretty=%B"])),hn(e,un.show(["-s","--pretty=%an"]))]),s=process.env.CIRCLE_REPOSITORY_URL?.trim()||void 0||n||void 0,a=s?.includes("github.com")??false,l=s?.includes("gitlab.com")??false,c=s?$T(s):void 0;return {ciProvider:"CircleCI",gitCommitSha:process.env.CIRCLE_SHA1,gitCommitShaShort:process.env.CIRCLE_SHA1?.slice(0,6),gitCommitTimestamp:t?Mc(t):void 0,gitBranchName:process.env.CIRCLE_BRANCH,gitOriginUrl:s,gitCommitMessage:o,gitCommitAuthorName:r,githubRepository:a?c:void 0,gitlabProjectPath:l?c:void 0,pipelineId:process.env.CIRCLE_PIPELINE_ID}}async function Pxe(e){let[t,n,o]=await Promise.all([hn(e,un.show(["--no-patch","--format=%ci"])),hn(e,un.show(["-s","--pretty=%B"])),hn(e,un.show(["-s","--pretty=%an"]))]),r=process.env.BUILDKITE_REPO,i=r?.includes("github.com"),s=r?.includes("gitlab.com"),a=r?$T(r):void 0;return {ciProvider:"Buildkite",gitCommitSha:process.env.BUILDKITE_COMMIT,gitCommitShaShort:process.env.BUILDKITE_COMMIT?.slice(0,6),gitCommitTimestamp:t?Mc(t):void 0,gitBranchName:process.env.BUILDKITE_BRANCH,gitOriginUrl:r,gitCommitMessage:n,gitCommitAuthorName:o,githubRepository:i?a:void 0,gitlabProjectPath:s?a:void 0,pipelineId:`${process.env.BUILDKITE_PIPELINE_ID}:${process.env.BUILDKITE_BUILD_ID}:${process.env.BUILDKITE_JOB_ID}`}}async function Oxe(e){let[t,n,o]=await Promise.all([hn(e,un.show(["--no-patch","--format=%ci"])),hn(e,un.show(["-s","--pretty=%B"])),hn(e,un.show(["-s","--pretty=%an"]))]),r=process.env["Build.Repository.Uri"],i=r?.includes("github.com"),s=r?.includes("gitlab.com"),a=r?$T(r):void 0;return {ciProvider:"AzureDevOps",gitCommitSha:process.env["Build.SourceVersion"],gitCommitShaShort:process.env["Build.SourceVersion"]?.slice(0,6),gitCommitTimestamp:t?Mc(t):void 0,gitBranchName:process.env["System.PullRequest.SourceBranch"]??process.env["Build.SourceBranchName"],gitOriginUrl:r,gitCommitMessage:n,gitCommitAuthorName:o,githubRepository:i?a:void 0,gitlabProjectPath:s?a:void 0,pipelineId:`${process.env["System.JobId"]}:${process.env["System.JobAttempt"]}`}}async function Mxe(e,t,n){let[o,r,i,s,a,l,c,d,u]=await Promise.all([hn(e,un.revparse(["HEAD"])),hn(e,un.revparse(["--short","HEAD"])),hn(e,un.revparse(["--abbrev-ref","HEAD"])),hn(e,un.listRemote(["--get-url","origin"])),hn(e,un.show(["--no-patch","--format=%ci"])),hn(e,un.show(["-s","--pretty=%B"])),hn(e,un.show(["-s","--pretty=%an"])),t?hn(e,un.raw(["merge-base","--fork-point",t])):Promise.resolve(void 0),Cxe(e)]),p=d||(t?await hn(e,un.raw(["merge-base",t,"HEAD"])):void 0),m=p?await hn(e,un.show(["--no-patch","--format=%ci",p])):void 0,h=s?.includes("github.com"),g=s?.includes("gitlab.com"),f=s?$T(s):void 0,y=u["user.email"]||void 0,S=u["user.name"]||void 0,b=u["user.username"]||void 0,E=u["github.user"]||void 0,I=(n?.includeHostingUsername??true?await Rxe(e,s,u):void 0)??b??E??void 0;return {ciProvider:"none",gitCommitSha:o,gitCommitShaShort:r,gitBranchName:i,gitOriginUrl:s,gitCommitTimestamp:a?Mc(a):void 0,gitCommitMessage:l,gitCommitAuthorName:c,gitLocalUsername:I,gitLocalEmail:y,gitLocalName:S,lastCommitOnMainSha:p,lastCommitOnMainTimestamp:m?Mc(m):void 0,githubRepository:h?f:void 0,gitlabProjectPath:g?f:void 0,pipelineId:void 0}}async function Nxe(e){let[t,n]=await Promise.all([hn(e,un.show(["--no-patch","--format=%ci"])),hn(e,un.show(["-s","--pretty=%an"]))]),o=process.env.GIT_REPOSITORY_URL,r=o?.includes("github.com"),i=o?.includes("gitlab.com"),s=o?$T(o):void 0;return {ciProvider:"Bitrise",gitCommitSha:process.env.BITRISE_GIT_COMMIT,gitCommitShaShort:process.env.BITRISE_GIT_COMMIT?.slice(0,6),gitCommitTimestamp:t?Mc(t):void 0,gitBranchName:process.env.BITRISE_GIT_BRANCH,gitOriginUrl:o,gitCommitMessage:process.env.BITRISE_GIT_MESSAGE,gitCommitAuthorName:n,githubRepository:r?s:void 0,gitlabProjectPath:i?s:void 0,pipelineId:`${process.env.BITRISE_APP_SLUG}:${process.env.BITRISE_BUILD_SLUG}`}}async function Lxe(){let e=process.env._HEAD_REPO_URL;return {ciProvider:"GCPCloudBuild",gitCommitSha:process.env.COMMIT_SHA,gitCommitShaShort:process.env.COMMIT_SHA?.slice(0,6),gitBranchName:process.env.BRANCH_NAME,gitOriginUrl:e?process.env._HEAD_REPO_URL:void 0,gitCommitTimestamp:void 0,gitCommitMessage:void 0,gitCommitAuthorName:void 0,githubRepository:e?process.env.REPO_FULL_NAME:void 0,pipelineId:`${process.env.PROJECT_ID}:${process.env.BUILD_ID}`}}function kxe(){return {ciProvider:"Custom",gitCommitSha:process.env.GIT_COMMIT_SHA,gitCommitShaShort:process.env.GIT_COMMIT_SHA_SHORT??process.env.GIT_COMMIT_SHA?.slice(0,6),gitCommitTimestamp:Mc(process.env.GIT_COMMIT_TIMESTAMP),gitBranchName:process.env.GIT_BRANCH_NAME,gitOriginUrl:process.env.GIT_ORIGIN_URL,gitCommitAuthorName:process.env.GIT_COMMIT_AUTHOR_NAME,gitCommitMessage:process.env.GIT_COMMIT_MESSAGE,lastCommitOnMainSha:process.env.LAST_COMMIT_ON_MAIN_SHA,lastCommitOnMainTimestamp:Mc(process.env.LAST_COMMIT_ON_MAIN_TIMESTAMP),mergedGitBranchName:process.env.MERGED_GIT_BRANCH_NAME,githubRepository:process.env.GITHUB_REPOSITORY,gitlabProjectPath:process.env.GITLAB_PROJECT_PATH,gitLocalUsername:process.env.GIT_USERNAME,gitLocalEmail:process.env.GIT_EMAIL,gitLocalName:process.env.GIT_NAME}}async function Dxe(e){let t=[...e.config.gitProtectedBranches??[]];return e.config.gitMainBranch&&t.push(e.config.gitMainBranch),{gitMainBranch:e.config.gitMainBranch,gitProtectedBranches:t}}async function _a(e,t,n){let o=wxe();if(!o)return Mxe(e,t,n);switch(o){case "GithubActions":return Ixe(e);case "GitlabCI":return xxe(e);case "CircleCI":return _xe(e);case "Buildkite":return Pxe(e);case "AzureDevOps":return Oxe(e);case "GCPCloudBuild":return Lxe();case "Bitrise":return Nxe(e);case "Custom":return kxe()}}async function Fxe(e,t,n,o){let r=o,i=o.gitCommitSha;if(!i)return r;let s=o.gitMainBranch;if(s&&(!r.lastCommitOnMainSha||!r.lastCommitOnMainTimestamp))try{let a=await Ia({logger:e,operation:"getRemoteMetadataFromGitlab.getMergeBaseCommitFromGitlab",fn:()=>t.getMergeBaseCommitFromGitlab(n,s,i),context:{projectPath:n,mainBranch:s}});r={...r,lastCommitOnMainSha:a.sha,lastCommitOnMainTimestamp:a.committer.date};}catch(a){e.warn({err:a},"Failed to get merge base commit from Gitlab");}if(!r.gitCommitTimestamp||!r.gitCommitAuthorName||!r.gitCommitMessage||!r.gitCommitAuthorName)try{let a=await Ia({logger:e,operation:"getRemoteMetadataFromGitlab.getCommitFromGitlab",fn:()=>t.getCommitFromGitlab(n,i),context:{projectPath:n,gitCommitSha:i}});a&&(r={...r,gitCommitTimestamp:r.gitCommitTimestamp??a.committer.date,gitCommitAuthorName:r.gitCommitAuthorName??a.author.name,gitCommitMessage:r.gitCommitMessage??a.message});}catch(a){e.warn({err:a},"Failed to get commit from Gitlab");}if(o.gitBranchName&&o.gitBranchName===o.gitMainBranch&&!r.mergedGitBranchName){let a=o.gitBranchName;try{let l=await Ia({logger:e,operation:"getRemoteMetadataFromGitlab.getMergedBranchFromGitlab",fn:()=>t.getMergedBranchFromGitlab(n,a,i),context:{projectPath:n,branchName:a,gitCommitSha:i}});l.mergedBranch&&(r={...r,mergedGitBranchName:l.mergedBranch});}catch(l){e.warn({err:l},"Failed to get merged branch from Gitlab");}}return r}async function Bxe(e,t,n,o,r){let i=r,s=r.gitCommitSha;if(!s)return i;let a=r.gitMainBranch;if(a&&(!i.lastCommitOnMainSha||!i.lastCommitOnMainTimestamp))try{let l=await Ia({logger:e,operation:"getRemoteMetadataFromGitHub.getMergeBaseCommitFromGithub",fn:()=>t.getMergeBaseCommitFromGithub(n,o,a,s),context:{owner:n,repo:o,mainBranch:a}});i={...i,lastCommitOnMainSha:l.sha,lastCommitOnMainTimestamp:l.committer.date};}catch(l){e.warn({err:l},"Failed to get merge base commit from GitHub");}if(!i.gitCommitTimestamp||!i.gitCommitAuthorName||!i.gitCommitMessage||!i.gitCommitAuthorName)try{let l=await Ia({logger:e,operation:"getRemoteMetadataFromGitHub.getCommitFromGithub",fn:()=>t.getCommitFromGithub(n,o,s),context:{owner:n,repo:o,gitCommitSha:s}});l&&(i={...i,gitCommitTimestamp:i.gitCommitTimestamp??l.committer.date,gitCommitAuthorName:i.gitCommitAuthorName??l.author.name,gitCommitMessage:i.gitCommitMessage??l.message});}catch(l){e.warn({err:l},"Failed to get commit from GitHub");}if(r.gitBranchName&&r.gitBranchName===r.gitMainBranch&&!i.mergedGitBranchName){let l=r.gitBranchName;try{let c=await Ia({logger:e,operation:"getRemoteMetadataFromGitHub.getMergedBranchFromGithub",fn:()=>t.getMergedBranchFromGithub(n,o,l,s),context:{owner:n,repo:o,branchName:l,gitCommitSha:s}});c.mergedBranch&&(i={...i,mergedGitBranchName:c.mergedBranch});}catch(c){e.warn({err:c},"Failed to get merged branch from GitHub");}}return i}async function Uxe(e,t,n){try{if(n.githubRepository){let{owner:o,repo:r}=HW(n.githubRepository);return await Ia({logger:e,operation:"getRemoteMetadataIfNeeded.getRemoteMetadataFromGitHub",fn:()=>Bxe(e,t,o,r,n),context:{githubRepository:n.githubRepository}})}else if(n.gitlabProjectPath){let o=n.gitlabProjectPath;return await Ia({logger:e,operation:"getRemoteMetadataIfNeeded.getRemoteMetadataFromGitlab",fn:()=>Fxe(e,t,o,n),context:{gitlabProjectPath:o}})}}catch(o){e.warn({err:o},"Failed to get remote git metadata");}return n}async function Hxe(e,t,n,o){let r={},i={gitMainBranch:n.config.gitMainBranch};return Ia({logger:e,operation:"getGitMetadata.total",fn:async()=>{let[s,a]=await Promise.all([Ia({logger:e,operation:"getGitMetadata.getConfiguredGitMetadata",fn:()=>Dxe(n),context:{projectConfigPath:n.configFilePath}}),Ia({logger:e,operation:"getGitMetadata.getEnvironmentGitMetadata",fn:async()=>{let d=await _a(e,n.config.gitMainBranch,o);return i.ciProvider=d.ciProvider,d},context:i})]),l={...s,...a};r.gitBranchName=l.gitBranchName,r.githubRepository=l.githubRepository,r.gitlabProjectPath=l.gitlabProjectPath,(!l.lastCommitOnMainSha||!l.lastCommitOnMainTimestamp)&&l.gitBranchName===s.gitMainBranch&&(l.lastCommitOnMainSha=l.gitCommitSha,l.lastCommitOnMainTimestamp=l.gitCommitTimestamp);let c=await Ia({logger:e,operation:"getGitMetadata.getRemoteMetadataIfNeeded",fn:()=>Uxe(e,t,l),context:{githubRepository:l.githubRepository,gitlabProjectPath:l.gitlabProjectPath,gitBranchName:l.gitBranchName}});return {...s,...a,...c}},context:r})}async function CQ(e){try{let t=await GT(e).remote(["show","origin"]);return t?t.match(/HEAD branch: (.*)$/m)?.[1]?.trim():void 0}catch{return}}async function vQ(){try{return (await un.revparse(["--is-inside-work-tree"])).trim()==="true"}catch{return false}}var pD=new Map;async function Gxe(e,t,n){let o,r;try{[o,r]=await Promise.all([hn(e,un.raw(["symbolic-ref","--short","-q","HEAD"]).then(a=>a.trim())),hn(e,un.revparse(["--verify","HEAD"]).then(a=>a.trim()))]);}catch{return}if(!o||!r)return;let i=`${t.configFilePath}:${t.config.gitMainBranch}:${t.config.gitProtectedBranches?.join(",")}`,s=`${n?.includeHostingUsername}`;return `${o}:${r}:${i}:${s}`}async function ui(e,t,n,o){let r=await Gxe(e,n,o);if(r&&pD.has(r))return e.debug("Using cached git metadata"),pD.get(r);let i=await Hxe(e,t,n,o);return r&&pD.set(r,i),i}var jxe=1024*1024;async function Rw({cwd:e,baseRef:t="HEAD"}){let n=GT(await Bf(e)),[o,r]=await Promise.all([n.diff(["--name-only","--diff-filter=ACDMRTUXB",t,"--"]),n.raw(["ls-files","--others","--exclude-standard"])]);return $xe(Iw([...RQ(o),...RQ(r)]))}function $xe(e){return e.filter(fD)}function fD(e){let t=Sl.basename(e);return e.endsWith(".test.yaml")||e.endsWith(".module.yaml")||t===Oc||t===HT}async function ww({cwd:e,paths:t,maxFileSizeBytes:n=jxe}){let o=await Bf(e),r=[];for(let i of Iw(t)){let s=_Q({repoRoot:o,relativePath:i});if(!fD(i))throw new Error(`Pull request path is not a Momentic file: ${i}`);let a=await promises.stat(s).catch(()=>{});if(!a){r.push({operation:"delete",path:i});continue}if(!a.isFile())throw new Error(`Cannot create pull request change for non-file path: ${i}`);if(a.size>n)throw new Error(`Cannot create pull request change for oversized file: ${i}`);let l=await promises.readFile(s,"utf8");if(l.includes("\0"))throw new Error(`Cannot create pull request change for binary file: ${i}`);r.push({operation:"upsert",path:i,content:l});}return r}async function wQ({cwd:e}){let t=await Bf(e),n=await promises.mkdtemp(Sl.join(gD.tmpdir(),"momentic-git-snapshot-"));try{let o=GT(t).env("GIT_INDEX_FILE",Sl.join(n,"index"));return await o.raw(["read-tree","HEAD"]),await o.raw(["add","-A","--"]),(await o.raw(["write-tree"])).trim()}finally{await promises.rm(n,{recursive:true,force:true});}}async function Ff({cwd:e,paths:t,baseRef:n="HEAD",maxFileSizeBytes:o}){let r=await Bf(e),i=Iw(t??await Rw({cwd:r,baseRef:n}));if(i.length===0)return "";let a=(await ww({cwd:r,paths:i,maxFileSizeBytes:o})).filter(c=>c.operation==="upsert").map(c=>c.path),l=await promises.mkdtemp(Sl.join(gD.tmpdir(),"momentic-git-patch-"));try{let c=GT(r).env("GIT_INDEX_FILE",Sl.join(l,"index"));return await c.raw(["read-tree",n]),a.length>0&&await c.raw(["add","--intent-to-add","--",...a]),await c.raw(["diff","--binary","--",...i])}finally{await promises.rm(l,{recursive:true,force:true});}}async function IQ({cwd:e,patch:t}){let n=await Bf(e),o=await promises.mkdtemp(Sl.join(gD.tmpdir(),"momentic-git-apply-")),r=Sl.join(o,"heal.patch");try{await promises.writeFile(r,t,"utf8");let i=GT(n),s=Vxe(await i.raw(["apply","--numstat","-z","--",r]));if(s.length===0)throw new Error("Cannot apply an empty heal patch.");for(let a of s)if(_Q({repoRoot:n,relativePath:a}),!fD(a))throw new Error(`Heal patch path is not a Momentic file: ${a}`);return await i.raw(["apply","--check","--",r]),await i.raw(["apply","--",r]),s}finally{await promises.rm(o,{recursive:true,force:true});}}async function xQ({cwd:e,paths:t,baseBranch:n,baseCommitSha:o,headBranch:r,branchPrefix:i,idempotencyKey:s,commitMessage:a,title:l,body:c,reviewers:d,draft:u,coAuthorRange:p,requestCommitAuthorsAsReviewers:m,maxFileSizeBytes:h}){let g=await Bf(e),f=await ww({cwd:g,paths:t??await Rw({cwd:g,baseRef:o}),maxFileSizeBytes:h}),y=n??await AQ(g);if(!y)throw new De(`Cannot determine base branch because git is not usable in '${g}'.`);let S=o??await TQ(g);if(!S)throw new De(`Cannot determine base commit SHA because git is not usable in '${g}'.`);return {baseBranch:y,baseCommitSha:S,headBranch:r,branchPrefix:i,idempotencyKey:s,commitMessage:a,title:l,body:c,changes:f,reviewers:d,draft:u,coAuthorRange:p,requestCommitAuthorsAsReviewers:m}}function RQ(e){return e?e.split(`
|
|
259
|
-
`).filter(t=>t.length>0):[]}function Iw(e){return [...new Set(e)]}function Vxe(e){let t=e.split("\0"),n=[];for(let o=0;o<t.length;o++){let r=t[o];if(!r)continue;let i=r.split(" ");if(i.length<3)throw new Error("Cannot determine files touched by heal patch.");let s=i.slice(2).join(" ");if(s){n.push(s);continue}let a=t[++o],l=t[++o];if(!a||!l)throw new Error("Cannot determine renamed files touched by heal patch.");n.push(a,l);}return Iw(n)}async function Bf(e){let t=await $d(e);if(!t)throw new De(`Cannot find a git repository at '${e}'. Install git and run this from inside a git worktree.`);return t}function _Q({repoRoot:e,relativePath:t}){if(!t||Sl.isAbsolute(t)||t.includes("\0"))throw new Error(`Unsafe pull request path: ${t}`);let n=Sl.resolve(e),o=Sl.resolve(n,t);if(o!==n&&!o.startsWith(`${n}${Sl.sep}`))throw new Error(`Pull request path escapes repository root: ${t}`);return o}var PQ=new Set([".DS_Store","__MACOSX"]),OQ={status:(e,t)=>{if(e.status===t.status)return e.status;if(e.status==="FAILED"||t.status==="FAILED")return "FAILED";if(e.status==="CANCELLED"||t.status==="CANCELLED")return "CANCELLED";if(e.status==="RETRYING"||t.status==="RETRYING")return "RETRYING";if(e.status==="RUNNING"||t.status==="RUNNING")return "RUNNING";if(e.status==="PENDING"||t.status==="PENDING")return "PENDING";throw new Error(`Invalid run status merge: ${e.status} and ${t.status}`)},startedAt:(e,t)=>e.startedAt<t.startedAt?e.startedAt:t.startedAt,updatedAt:(e,t)=>e.updatedAt>t.updatedAt?e.updatedAt:t.updatedAt,finishedAt:(e,t)=>!e.finishedAt||!t.finishedAt?new Date:e.finishedAt>t.finishedAt?e.finishedAt:t.finishedAt,gitCommitTimestamp:(e,t)=>{if(!(!e&&!t)){if(!e.gitCommitTimestamp||!t.gitCommitTimestamp||e.gitCommitTimestamp.getTime()!==t.gitCommitTimestamp.getTime())throw new Error(`Git commit timestamps must match to be merged: ${e.gitCommitTimestamp} and ${t.gitCommitTimestamp}`);return e.gitCommitTimestamp}},pipelineId:(e,t)=>e.pipelineId===t.pipelineId?e.pipelineId:!e.pipelineId&&t.pipelineId?t.pipelineId:!t.pipelineId&&e.pipelineId?e.pipelineId:e.startedAt<t.startedAt?t.pipelineId:e.pipelineId,labels:(e,t)=>{let n=new Set([...e.labels??[],...t.labels??[]]);return Array.from(n)},ai:(e,t)=>e.ai??t.ai,browser:(e,t)=>e.browser??t.browser,aiSelect:(e,t)=>{let n=[...e.aiSelect??[],...t.aiSelect??[]];return n.length>0?n:void 0},healRiskSummary:()=>{}};function Wxe(e,t,n){if(OQ[n]){let i=OQ[n];return i(e,t)}let o=e[n],r=t[n];if(o===void 0)return r;if(r===void 0)return o;if(o!==r)throw new Error(`Metadata values for key "${n}" do not match: "${o}" vs "${r}"`);return o}var yD=class extends Error{constructor(t,n){let o=`${t} contains invalid Momentic results: ${n}. Please ensure that the path points to a folder containing only valid results. If you passed \`--output-dir test-results/results-1\` to the \`run\` command, your results path for merging should be \`test-results\`.`;super(o),this.name="InvalidMomenticResultsPathError";}};function MQ(e,t){try{let n=Jn__default.join(t,ct);return Ta.parse(JSON.parse(br__default.readFileSync(n,"utf-8")))}catch{throw new yD(e,t)}}function NQ(e,t,n){let o=randomUUID(),r=e.child({runGroupId:o});br__default.rmSync(t,{recursive:true,force:true});let i=br__default.readdirSync(n).filter(l=>!PQ.has(l)).map(l=>Jn__default.join(n,l));if(i.length===0)throw new Error(`No run groups found in results path: ${n}`);br__default.mkdirSync(t,{recursive:true});let s={...MQ(n,i[0]),id:o,healRiskSummary:void 0,aiSelect:void 0};for(let l of i){let c=Jn__default.join(l,to);if(!br__default.existsSync(c))continue;let d=MQ(n,l);r.info({oldRunGroupId:d.id},"Merging run groups");for(let p in d){if(p==="id")continue;let m=p;s[m]=Wxe(s,d,m);}let u=br__default.readdirSync(c);for(let p of u){if(PQ.has(p))continue;let m=Jn__default.join(c,p),h=Jn__default.join(t,to,p);br__default.cpSync(m,h,{recursive:true});}}let a=Jn__default.join(t,ct);br__default.writeFileSync(a,JSON.stringify(s,null,2));}var be="v1",SD="cli",qm="3.12.
|
|
259
|
+
`).filter(t=>t.length>0):[]}function Iw(e){return [...new Set(e)]}function Vxe(e){let t=e.split("\0"),n=[];for(let o=0;o<t.length;o++){let r=t[o];if(!r)continue;let i=r.split(" ");if(i.length<3)throw new Error("Cannot determine files touched by heal patch.");let s=i.slice(2).join(" ");if(s){n.push(s);continue}let a=t[++o],l=t[++o];if(!a||!l)throw new Error("Cannot determine renamed files touched by heal patch.");n.push(a,l);}return Iw(n)}async function Bf(e){let t=await $d(e);if(!t)throw new De(`Cannot find a git repository at '${e}'. Install git and run this from inside a git worktree.`);return t}function _Q({repoRoot:e,relativePath:t}){if(!t||Sl.isAbsolute(t)||t.includes("\0"))throw new Error(`Unsafe pull request path: ${t}`);let n=Sl.resolve(e),o=Sl.resolve(n,t);if(o!==n&&!o.startsWith(`${n}${Sl.sep}`))throw new Error(`Pull request path escapes repository root: ${t}`);return o}var PQ=new Set([".DS_Store","__MACOSX"]),OQ={status:(e,t)=>{if(e.status===t.status)return e.status;if(e.status==="FAILED"||t.status==="FAILED")return "FAILED";if(e.status==="CANCELLED"||t.status==="CANCELLED")return "CANCELLED";if(e.status==="RETRYING"||t.status==="RETRYING")return "RETRYING";if(e.status==="RUNNING"||t.status==="RUNNING")return "RUNNING";if(e.status==="PENDING"||t.status==="PENDING")return "PENDING";throw new Error(`Invalid run status merge: ${e.status} and ${t.status}`)},startedAt:(e,t)=>e.startedAt<t.startedAt?e.startedAt:t.startedAt,updatedAt:(e,t)=>e.updatedAt>t.updatedAt?e.updatedAt:t.updatedAt,finishedAt:(e,t)=>!e.finishedAt||!t.finishedAt?new Date:e.finishedAt>t.finishedAt?e.finishedAt:t.finishedAt,gitCommitTimestamp:(e,t)=>{if(!(!e&&!t)){if(!e.gitCommitTimestamp||!t.gitCommitTimestamp||e.gitCommitTimestamp.getTime()!==t.gitCommitTimestamp.getTime())throw new Error(`Git commit timestamps must match to be merged: ${e.gitCommitTimestamp} and ${t.gitCommitTimestamp}`);return e.gitCommitTimestamp}},pipelineId:(e,t)=>e.pipelineId===t.pipelineId?e.pipelineId:!e.pipelineId&&t.pipelineId?t.pipelineId:!t.pipelineId&&e.pipelineId?e.pipelineId:e.startedAt<t.startedAt?t.pipelineId:e.pipelineId,labels:(e,t)=>{let n=new Set([...e.labels??[],...t.labels??[]]);return Array.from(n)},ai:(e,t)=>e.ai??t.ai,browser:(e,t)=>e.browser??t.browser,aiSelect:(e,t)=>{let n=[...e.aiSelect??[],...t.aiSelect??[]];return n.length>0?n:void 0},healRiskSummary:()=>{}};function Wxe(e,t,n){if(OQ[n]){let i=OQ[n];return i(e,t)}let o=e[n],r=t[n];if(o===void 0)return r;if(r===void 0)return o;if(o!==r)throw new Error(`Metadata values for key "${n}" do not match: "${o}" vs "${r}"`);return o}var yD=class extends Error{constructor(t,n){let o=`${t} contains invalid Momentic results: ${n}. Please ensure that the path points to a folder containing only valid results. If you passed \`--output-dir test-results/results-1\` to the \`run\` command, your results path for merging should be \`test-results\`.`;super(o),this.name="InvalidMomenticResultsPathError";}};function MQ(e,t){try{let n=Jn__default.join(t,ct);return Ta.parse(JSON.parse(br__default.readFileSync(n,"utf-8")))}catch{throw new yD(e,t)}}function NQ(e,t,n){let o=randomUUID(),r=e.child({runGroupId:o});br__default.rmSync(t,{recursive:true,force:true});let i=br__default.readdirSync(n).filter(l=>!PQ.has(l)).map(l=>Jn__default.join(n,l));if(i.length===0)throw new Error(`No run groups found in results path: ${n}`);br__default.mkdirSync(t,{recursive:true});let s={...MQ(n,i[0]),id:o,healRiskSummary:void 0,aiSelect:void 0};for(let l of i){let c=Jn__default.join(l,to);if(!br__default.existsSync(c))continue;let d=MQ(n,l);r.info({oldRunGroupId:d.id},"Merging run groups");for(let p in d){if(p==="id")continue;let m=p;s[m]=Wxe(s,d,m);}let u=br__default.readdirSync(c);for(let p of u){if(PQ.has(p))continue;let m=Jn__default.join(c,p),h=Jn__default.join(t,to,p);br__default.cpSync(m,h,{recursive:true});}}let a=Jn__default.join(t,ct);br__default.writeFileSync(a,JSON.stringify(s,null,2));}var be="v1",SD="cli",qm="3.12.1";var qxe=9e4,Kxe=3,Yxe=1500,Jxe=15e3,no=class extends Error{status;rawError;constructor(t,n,o,r={}){super(o,r),this.status=t,this.rawError=n;}},bD=class extends De{constructor(t,n={}){super(t,n),this.name="PlanLimitExceededError";}};async function Xxe(e){return e.text().then(t=>{try{return JSON.parse(t).error}catch{return t}})}var TD=class{baseUrl;logger;constructor(t){this.baseUrl=t.baseUrl,this.logger=t.logger;}getHeaders(){let t={"Content-Type":"application/json"};return (t[vv]=qm),(t[_2]=SD),t}async sendRequest(t,n){let{retries:o=Kxe,requestTimeoutMs:r=qxe,initialRetryDelayMs:i=Yxe,maxRetryDelayMs:s=Jxe,onFailedRequest:a}=n,l=o,c=o,d,u={path:t,baseUrl:this.baseUrl,method:n.method};for(;l>0;)try{return l--,await this.sendSingleRequestHelper(t,n,r)}catch(p){d=p;try{a?.(d);}catch{}if(p instanceof no&&p.status>=400&&p.status<500)throw p.status===402?new bD(p.rawError,{cause:p}):p;if(p instanceof Error&&p.name==="AbortError"&&(d=new $u),l===0)throw d;let m=c-l,h=Math.min(i*Math.pow(2,m-1),s);await new Promise(g=>setTimeout(g,h));}throw this.logger.warn({...u,err:d},"Got fatal error response from Momentic server"),d}async sendSingleRequestHelper(t,n,o){let r={path:t,baseUrl:this.baseUrl,method:n.method},i=new AbortController,s=setTimeout(()=>i.abort(),o),a=()=>i.abort();n.signal&&n.signal.addEventListener("abort",a,{once:true});let l=Date.now(),c={...this.getHeaders(),...n.extraHeaders};try{let d=await fetch(`${this.baseUrl}${t}`,{method:n.method,body:n.body?JSON.stringify(n.body):void 0,headers:c,signal:i.signal});if(!d.ok){let m=await Xxe(d);throw new no(d.status,m,`Request to ${n.method} ${t} failed with status ${d.status}: ${m}`)}let u;if(d.status===204)u={};else if(n.responseType==="buffer"){let m=await d.arrayBuffer();u=Buffer.from(m);}else {let m=await d.text();try{u=JSON.parse(m);}catch{u=m;}}this.logger&&n.logResponse===!0&&u&&this.logger.debug({result:u,status:d.status,durationMs:Date.now()-l,...r},"Got response from Momentic server");let p=n.responseHeadersObject;return p&&d.headers.forEach((m,h)=>{p[h.toLowerCase()]=m;}),u}finally{clearTimeout(s),n.signal&&n.signal.removeEventListener("abort",a);}}},Wi=class extends TD{apiKey;mode;runner;constructor(t){super(t),this.apiKey=t.apiKey,this.mode=t.mode,this.runner=t.runner;}getHeaders(){return {...super.getHeaders(),Authorization:`Bearer ${this.apiKey}`,[x2]:this.mode,[Rv]:this.runner}}};var xw=class extends Error{constructor(t,n){super(t),this.name="ParseError",this.type=n.type,this.field=n.field,this.value=n.value,this.line=n.line;}};function AD(e){}function LQ(e){if(typeof e=="function")throw new TypeError("`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?");let{onEvent:t=AD,onError:n=AD,onRetry:o=AD,onComment:r}=e,i="",s=true,a,l="",c="";function d(g){let f=s?g.replace(/^\xEF\xBB\xBF/,""):g,[y,S]=Qxe(`${i}${f}`);for(let b of y)u(b);i=S,s=false;}function u(g){if(g===""){m();return}if(g.startsWith(":")){r&&r(g.slice(g.startsWith(": ")?2:1));return}let f=g.indexOf(":");if(f!==-1){let y=g.slice(0,f),S=g[f+1]===" "?2:1,b=g.slice(f+S);p(y,b,g);return}p(g,"",g);}function p(g,f,y){switch(g){case "event":c=f;break;case "data":l=`${l}${f}
|
|
260
260
|
`;break;case "id":a=f.includes("\0")?void 0:f;break;case "retry":/^\d+$/.test(f)?o(parseInt(f,10)):n(new xw(`Invalid \`retry\` value: "${f}"`,{type:"invalid-retry",value:f,line:y}));break;default:n(new xw(`Unknown field "${g.length>20?`${g.slice(0,20)}\u2026`:g}"`,{type:"unknown-field",field:g,value:f,line:y}));break}}function m(){l.length>0&&t({id:a,event:c||void 0,data:l.endsWith(`
|
|
261
261
|
`)?l.slice(0,-1):l}),a=void 0,l="",c="";}function h(g={}){i&&g.consume&&u(i),s=true,a=void 0,l="",c="",i="";}return {feed:d,reset:h}}function Qxe(e){let t=[],n="",o=0;for(;o<e.length;){let r=e.indexOf("\r",o),i=e.indexOf(`
|
|
262
262
|
`,o),s=-1;if(r!==-1&&i!==-1?s=Math.min(r,i):r!==-1?s=r:i!==-1&&(s=i),s===-1){n=e.slice(o);break}else {let a=e.slice(o,s);t.push(a),o=s+1,e[o-1]==="\r"&&e[o]===`
|
|
@@ -288,7 +288,7 @@ ${t}:`]}}function V5({id:e,model:t,created:n}){return {id:e??void 0,modelId:t??v
|
|
|
288
288
|
|
|
289
289
|
`,CNe=1e4,uZ=O__default.object({stream:O__default.boolean().optional(),type:O__default.literal("response.create").optional()}).passthrough(),vNe=uZ.extend({stream:O__default.literal(true)});function pZ(e={}){let t=new oF(e);return async(n,o)=>{if(!INe(n,o))return fetch(n,o);let r=await RNe(o?.body);if(!r)return fetch(n,o);let i=vNe.safeParse(r);return i.success?t.fetch({httpUrl:mZ(n),init:o,request:i.data}):fetch(n,o)}}var oF=class{constructor(t){this.options=t;}websocket;openPromise;latestResponseId;previousFullInput;pendingRequest;async fetch({httpUrl:t,init:n,request:o}){if(this.pendingRequest)return fetch(t,n);let r=await this.open({httpUrl:t,init:n}),i=new ReadableStream({start:s=>{let a={controller:s,fullRequest:o,sentContinuation:false,startedStreaming:false,retryingFullContext:false};this.pendingRequest=a,this.sendRequest({websocket:r,pendingRequest:a});},cancel:()=>{this.websocket?.close(),this.websocket=void 0,this.openPromise=void 0,this.latestResponseId=void 0,this.previousFullInput=void 0,this.pendingRequest=void 0;}});return new Response(i,{status:200,headers:{"content-type":"text/event-stream","cache-control":"no-cache, no-transform"}})}async open({httpUrl:t,init:n}){return this.websocket?.readyState===nF.OPEN?this.websocket:this.openPromise?this.openPromise:(this.openPromise=new Promise((o,r)=>{let i=new nF(xNe(t),{headers:_Ne(n?.headers)}),s=setTimeout(()=>{i.terminate(),r(new Error("Timed out opening OpenAI responses websocket"));},CNe);i.once("open",()=>{clearTimeout(s),this.websocket=i,this.openPromise=void 0,o(i);}),i.once("error",a=>{clearTimeout(s),this.resetConnection(),r(a);}),i.on("close",()=>{this.resetConnection();}),i.on("message",a=>{this.handleMessage(a);});}),this.openPromise)}sendRequest({websocket:t,pendingRequest:n}){let o=this.buildPayload(n.fullRequest);n.sentContinuation=!!o.previous_response_id,t.send(JSON.stringify(o));}buildPayload(t){let{background:n,stream:o,...r}=t,i={...r,type:"response.create"};MNe({payload:i,compactThreshold:this.options.compactThreshold});let s=Array.isArray(t.input)?t.input:void 0,a=this.latestResponseId&&s&&this.previousFullInput?PNe({currentInput:s,previousInput:this.previousFullInput}):void 0;return a&&a.length>0?(i.input=a,i.previous_response_id=this.latestResponseId,i):(delete i.previous_response_id,i)}handleMessage(t){let n=this.pendingRequest;if(!n)return;let o=LNe(t),r;try{r=JSON.parse(o);}catch(a){n.controller.error(a),this.pendingRequest=void 0,this.websocket?.close();return}let i=Kz.safeParse(r),s=i.success?i.data:void 0;if(NNe(s)&&n.sentContinuation&&!n.startedStreaming&&!n.retryingFullContext&&this.websocket?.readyState===nF.OPEN){this.latestResponseId=void 0,this.previousFullInput=void 0,n.retryingFullContext=true,n.sentContinuation=false;let a=this.buildPayload(n.fullRequest);delete a.previous_response_id,this.websocket.send(JSON.stringify(a));return}if(n.startedStreaming=true,n.controller.enqueue(kNe(o)),s?.type==="response.completed"){this.latestResponseId=s.response.id,this.previousFullInput=Array.isArray(n.fullRequest.input)?n.fullRequest.input:void 0,this.closePendingRequest();return}s?.type==="error"&&(this.latestResponseId=void 0,this.previousFullInput=void 0,this.closePendingRequest());}closePendingRequest(){let t=this.pendingRequest;t&&(t.controller.enqueue(new TextEncoder().encode(ENe)),t.controller.close(),this.pendingRequest=void 0);}resetConnection(){this.websocket=void 0,this.openPromise=void 0,this.latestResponseId=void 0,this.previousFullInput=void 0;let t=this.pendingRequest;t&&(t.controller.error(new Error("OpenAI responses websocket connection closed")),this.pendingRequest=void 0);}};async function RNe(e){let t=await wNe(e);if(!t)return;let n=uZ.safeParse(JSON.parse(t));return n.success?n.data:void 0}async function wNe(e){if(typeof e=="string")return e;if(e instanceof URLSearchParams)return e.toString();if(e instanceof Blob)return e.text();if(e instanceof ArrayBuffer)return new TextDecoder().decode(e);if(ArrayBuffer.isView(e))return new TextDecoder().decode(e)}function INe(e,t){return (t?.method??(e instanceof Request?e.method:"GET")).toUpperCase()==="POST"&&mZ(e).endsWith("/responses")}function mZ(e){return e instanceof Request?e.url:e.toString()}function xNe(e){let t=new URL(e);return t.protocol=t.protocol==="https:"?"wss:":"ws:",t.toString()}function _Ne(e){if(!e)return {};if(e instanceof Headers){let t={};return e.forEach((n,o)=>{t[o]=n;}),t}return Array.isArray(e)?Object.fromEntries(e):e}function PNe({currentInput:e,previousInput:t}){let n=0;for(;n<e.length&&n<t.length&&JSON.stringify(e[n])===JSON.stringify(t[n]);)n+=1;if(!(n<t.length))return e.slice(n).filter(ONe)}function ONe(e){return "role"in e&&e.role==="assistant"?false:"type"in e?e.type==="item_reference"||e.type==="reasoning"?false:e.type!=="function_call"&&e.type!=="custom_tool_call"&&e.type!=="local_shell_call":true}function MNe({payload:e,compactThreshold:t}){t&&(e.context_management=[{type:"compaction",compact_threshold:t}]);}function NNe(e){return e?.type==="error"&&e.code==="previous_response_not_found"}function LNe(e){return typeof e=="string"?e:e instanceof ArrayBuffer?new TextDecoder().decode(e):Array.isArray(e)?Buffer.concat(e).toString("utf8"):e.toString("utf8")}function kNe(e){return new TextEncoder().encode(`data: ${e}
|
|
290
290
|
|
|
291
|
-
`)}var FNe="MOMENTIC_OPENAI_RESPONSES_WEBSOCKET_COMPACT_THRESHOLD",BNe=2e5;function qf(e){let{apiKey:t,sessionId:n,loggerTags:o,runner:r,parentTraceId:i}=e,s={Authorization:`Bearer ${t}`,[vv]:qm,...n&&{[O2]:n},...r&&{[Rv]:r},...i&&{[M2]:i},...o&&{[P2]:JSON.stringify(o)}};for(let[a,l]of Object.entries(s))s[a]=l.replace(/[\u0100-\uffff]/g,c=>"\\u"+c.charCodeAt(0).toString(16).padStart(4,"0"));return s}var hZ="bedrock/",gZ="azure/",fZ=e=>t=>{let n=qf(e),o=`${e.baseUrl}/v1/llm/anthropic/${encodeURIComponent(t)}`;return t.startsWith(hZ)?o=`${e.baseUrl}/v1/llm/provider/bedrock/anthropic/${encodeURIComponent(t.slice(hZ.length))}`:t.startsWith(gZ)&&(o=`${e.baseUrl}/v1/llm/provider/foundry/anthropic/${encodeURIComponent(t.slice(gZ.length))}`),createAnthropic({baseURL:o,headers:n,apiKey:e.apiKey})(t)},yZ=e=>t=>{let n=qf(e),o=e.useOpenAIResponsesWebSocket??false,r=o?e.openAIResponsesWebSocketCompactThreshold??UNe(process.env[FNe])??BNe:void 0;return Wf({baseURL:`${e.baseUrl}/v1/llm/provider/openai/${t}`,headers:n,apiKey:e.apiKey,fetch:o?pZ({compactThreshold:r}):void 0})(t)},SZ=e=>t=>{let n=qf(e);return Wf({baseURL:`${e.baseUrl}/v1/llm/provider/xai/${t}`,headers:n,apiKey:e.apiKey})(t)},bZ=e=>t=>{let n=qf(e);return Wf({baseURL:`${e.baseUrl}/v1/llm/provider/azure/${t}`,headers:n,apiKey:e.apiKey})(t)};function rF(e){return t=>n=>{let o=qf(t);return Wf({baseURL:`${t.baseUrl}/v1/llm/provider/${e}/${n}`,headers:o,apiKey:t.apiKey}).chat(n)}}var TZ=rF("azure/deepseek"),AZ=rF("azure/kimi"),EZ=rF("fireworks/glm"),CZ=e=>t=>{let n=qf(e);return $D({baseURL:`${e.baseUrl}/v1/llm/provider/vertex`,headers:n,apiKey:e.apiKey})(t)};function UNe(e){if(!e)return;let t=Number.parseInt(e,10);return Number.isFinite(t)&&t>0?t:void 0}var Sr=class extends Wi{agentConfig;constructor(t,n){let o={...Rg,...t};GC(o),super(n),this.agentConfig=o;}getAgentConfig(){return this.agentConfig}async rankChunksWithAi(t,n){let o={...t,loggerTags:n.loggerTags},r=await this.sendRequest(`/${be}/web-agent/recommend-chunks-ai`,{method:"POST",body:o,signal:n.abortSignal});return IV.parse(r)}async rankChunksWithRag(t,n){let o=await this.sendRequest(`/${be}/web-agent/recommend-chunks`,{method:"POST",body:{cliVersion:qm,...t},signal:n.abortSignal});return wV.parse(o)}async getScreenshotFromS3(t){let n=await this.sendRequest(`/${be}/s3/visual-diff-screenshot`,{method:"POST",body:{url:t}});return z.string().parse(n)}async getElementLocation(t,n){let o={...t,disableCache:n.disableCache,loggerTags:n.loggerTags,useMemory:n.useMemory,cacheBustReason:n.cacheBustReason,agentConfigVersion:this.agentConfig?.locator},r=await this.sendRequest(`/${be}/web-agent/locate-element`,{method:"POST",body:o,signal:n.abortSignal});return k2.parse(r)}async getAssertionResult(t,n){let o={...t,disableCache:!!n.disableCache,useConsensus:!!n.useConsensus,attemptNumber:n.attemptNumber,loggerTags:n.loggerTags,useMemory:n.useMemory,agentConfigVersion:this.agentConfig?.assertion},r=await this.sendRequest(`/${be}/web-agent/assertion`,{method:"POST",body:o,signal:n.abortSignal});return _N.parse(r)}async getLintStepResult(t,n){let o={...t,disableCache:!!n.disableCache,loggerTags:n.loggerTags},r=await this.sendRequest(`/${be}/web-agent/lint/step`,{method:"POST",body:o,signal:n.abortSignal});return L2.parse(r)}async getVisualAssertionResult(t,n){let o={...t,disableCache:!!n.disableCache,useConsensus:!!n.useConsensus,attemptNumber:n.attemptNumber,loggerTags:n.loggerTags,useMemory:n.useMemory,agentConfigVersion:this.agentConfig?.["visual-assertion"]},r=await this.sendRequest(`/${be}/web-agent/visual-assertion`,{method:"POST",body:o,signal:n.abortSignal});return _N.parse(r)}async getAiActionCommand(t,n){let o=await this.sendRequest(`/${be}/web-agent/next-command-dynamic`,{method:"POST",body:{...t,disableCache:n.disableCache,loggerTags:n.loggerTags},signal:n.abortSignal});return N2.parse(o)}async getMultiturnAiActionCommand(t,n){return await this.sendRequest(`/${be}/web-agent/ai-action/next-command`,{method:"POST",body:{...t,disableCache:n.disableCache,loggerTags:n.loggerTags},signal:n.abortSignal})}async getMultiturnAiActionEvaluation(t,n){let o=await this.sendRequest(`/${be}/web-agent/ai-action/evaluate`,{method:"POST",body:{...t,disableCache:n.disableCache,loggerTags:n.loggerTags},signal:n.abortSignal});return WO.parse(o)}async getReverseMappedDescription(t,n){let o=await this.sendRequest(`/${be}/web-agent/reverse-mapped-description`,{method:"POST",body:{...t,disableCache:n.disableCache,loggerTags:n.loggerTags},signal:n.abortSignal});return D2.parse(o)}async getTextExtraction(t,n){let o={...t,disableCache:n.disableCache,loggerTags:n.loggerTags,agentConfigVersion:this.agentConfig?.["text-extraction"]},r=await this.sendRequest(`/${be}/web-agent/text-extraction`,{method:"POST",body:o,signal:n.abortSignal});return zO.parse(r)}async getPageSummary(t,n){let o={...t,disableCache:n.disableCache,loggerTags:n.loggerTags},r=await this.sendRequest(`/${be}/web-agent/page-summary`,{method:"POST",body:o,signal:n.abortSignal});return w$.parse(r)}async getSmartWaitingDecision(t,n){let o={...t,disableCache:n.disableCache,loggerTags:n.loggerTags},r=await this.sendRequest(`/${be}/web-agent/smart-waiting`,{method:"POST",body:o,signal:n.abortSignal});return I$.parse(r)}async getKnowledgeSuggestion(t,n){throw new Error("Knowledge suggestion generation is only available on InternalGenerator")}async getTestResultClassification(t,n){let o=await this.sendRequest(`/${be}/web-agent/result-classification`,{method:"POST",body:{...t,loggerTags:n.loggerTags},signal:n.abortSignal});return nC.parse(o)}async getExtractedKeywords(t,n){let o=await this.sendRequest(`/${be}/web-agent/extract-keywords`,{method:"POST",body:t,signal:n.abortSignal});return UV.parse(o)}async getAutohealingProposal(t,n){let o=await this.sendRequest(`/${be}/web-agent/autoheal-section`,{method:"POST",body:{...t,loggerTags:n.loggerTags},signal:n.abortSignal});return A$.parse(o)}async getFailureRecoveryProposal(t,n){let o=await this.sendRequest(`/${be}/web-agent/failure-recovery`,{method:"POST",body:{...t,loggerTags:n.loggerTags},signal:n.abortSignal});return v$.parse(o)}async getFailureRecoveryPlan(t,n){let o=await this.sendRequest(`/${be}/web-agent/failure-recovery-plan`,{method:"POST",body:{...t,loggerTags:n.loggerTags,agentConfigVersion:this.agentConfig?.["failure-recovery"]},signal:n.abortSignal});return C$.parse(o)}async getIframeRegex(t,n){let o=await this.sendRequest(`/${be}/web-agent/iframe-regex`,{method:"POST",body:{...t,loggerTags:n.loggerTags},signal:n.abortSignal});return qG.parse(o)}createAgentTrace(t){let n=randomUUID(),{completionType:o,runId:r,orgId:i,logger:s}=t,a=async l=>{try{await this.sendRequest(`/${be}/traces/result-classification`,{method:"POST",body:{id:n,completionType:o,input:{runId:r},...l,metadata:{orgId:i,runId:r,...l.metadata}}});}catch(c){s.warn({err:c},"Failed to upsert result classification trace");}};return a({}),{id:n,update:a}}getAnthropicModelFactory(t){return this.buildModelFactory(fZ,t)}getAnthropicBedrockModelFactory(t){let n=this.getAnthropicModelFactory(t);return o=>n(`bedrock/${o}`)}getAnthropicFoundryModelFactory(t){let n=this.getAnthropicModelFactory(t);return o=>n(`azure/${o}`)}getOpenAIModelFactory(t){let{sessionId:n,logger:o,streamType:r,useOpenAIResponsesWebSocket:i,parentTraceId:s}=t;return yZ({baseUrl:this.baseUrl,apiKey:this.apiKey,loggerTags:{...jt(o),promptType:r},sessionId:n,useOpenAIResponsesWebSocket:i,runner:this.runner,parentTraceId:s})}getXAIModelFactory(t){return this.buildModelFactory(SZ,t)}getAzureOpenAIModelFactory(t){return this.buildModelFactory(bZ,t)}getAzureDeepSeekModelFactory(t){return this.buildModelFactory(TZ,t)}getAzureKimiModelFactory(t){return this.buildModelFactory(AZ,t)}getFireworksGLMModelFactory(t){return this.buildModelFactory(EZ,t)}getVertexGeminiModelFactory(t){return this.buildModelFactory(CZ,t)}buildModelFactory(t,n){let{sessionId:o,logger:r,streamType:i,parentTraceId:s}=n;return t({baseUrl:this.baseUrl,apiKey:this.apiKey,loggerTags:{...jt(r),promptType:i},sessionId:o,runner:this.runner,parentTraceId:s})}};var Ft=class extends Wi{getAppUrl(){return Wg(this.baseUrl)}async getAuthInfo(){let t;try{t=await this.sendRequest(`/${be}/auth/check`,{method:"GET",retries:10,requestTimeoutMs:5e3});}catch(n){throw n instanceof no?n.status>=400&&n.status<500?new Error(n.rawError,{cause:n}):new Error(`Momentic server error (HTTP ${n.status}). Please try again in a moment.`,{cause:n}):new Error(`Could not reach Momentic server at ${this.baseUrl}. Check your network connection. If you're on a restricted network (VPN, firewall, or proxy), you may need to whitelist Momentic's servers: https://momentic.ai/docs/environment/authentication#ip-whitelist`,{cause:n})}return X2.parse(t)}async getCliAnnouncements(){let t=await this.sendRequest(`/${be}/announcements`,{method:"GET",retries:1,requestTimeoutMs:5e3});return TW.parse(t).announcements}async getQuotaStatus(){let t=await this.sendRequest(`/${be}/billing/check-quota`,{method:"GET",retries:3,requestTimeoutMs:5e3});return Q2.parse(t)}async createRemoteBrowserConnection(t){let n=await this.sendRequest(`/${be}/browsers/connection`,{method:"POST",body:{...t?.runId?{runId:t.runId}:{},...t?.attemptedProviders?{attemptedProviders:t.attemptedProviders}:{}},retries:3,requestTimeoutMs:1e4});return gK.parse(n)}async bulkGetRunStatus(t){let n=await this.sendRequest(`/${be}/runs/status`,{method:"POST",body:t,retries:3,requestTimeoutMs:1e4});return W2.parse(n)}async getRunExport(t){let n=await this.sendRequest(`/${be}/runs/${encodeURIComponent(t)}/export`,{method:"GET",retries:3,requestTimeoutMs:1e4});return K2.parse(n)}async getResultClassificationCacheEntries(t){let n=await this.sendRequest(`/${be}/result-classification-cache`,{method:"POST",body:t,retries:1,requestTimeoutMs:1e4});return CK.parse(n)}async createResultClassificationCacheEntries(t){await this.sendRequest(`/${be}/result-classification-cache`,{method:"PATCH",body:t,retries:1,requestTimeoutMs:1e4});}async saveRunClassification(t,n){await this.sendRequest(`/${be}/runs/${encodeURIComponent(t)}/classification`,{method:"PATCH",body:n,retries:3,requestTimeoutMs:1e4});}async saveRunHealMetadataBatch(t){await this.sendRequest(`/${be}/runs/heal-metadata`,{method:"PATCH",body:t,retries:3,requestTimeoutMs:1e4});}async getTestYAMLExport(t){let n=await this.sendRequest(`/${be}/tests/export`,{method:"POST",body:t,retries:3,requestTimeoutMs:3e4});return B2.parse(n)}async updateStepCaches(t,n){await this.sendRequest(`/${be}/cache`,{method:"PATCH",body:t,extraHeaders:n,retries:3,requestTimeoutMs:1e4,initialRetryDelayMs:3e3});}async updateSnapshotCaches(t,n){await this.sendRequest(`/${be}/snapshot-cache`,{method:"PATCH",body:t,extraHeaders:n,retries:3,requestTimeoutMs:1e4,initialRetryDelayMs:3e3});}async getStepCacheForTest(t,n){let o=await this.sendRequest(`/${be}/cache`,{method:"POST",body:t,extraHeaders:n,retries:10,requestTimeoutMs:3e4,initialRetryDelayMs:3e3});return H2.parse(o)}async getSnapshotCacheForTest(t,n){let o=await this.sendRequest(`/${be}/snapshot-cache`,{method:"POST",body:t,extraHeaders:n,retries:10,requestTimeoutMs:3e4,initialRetryDelayMs:3e3});return G2.parse(o)}async deleteStepCacheEntry(t,n){await this.sendRequest(`/${be}/cache/entry`,{method:"DELETE",body:t,extraHeaders:n,retries:3,requestTimeoutMs:1e4});}async getWebStepCacheMemoryTraces(t){let n=await this.sendRequest(`/${be}/cache/traces`,{method:"POST",body:t,retries:10,requestTimeoutMs:3e4,initialRetryDelayMs:3e3});return PN.parse(n)}cacheRouteForPlatform(t){switch(t){case "ANDROID":return "android-cache";case "IOS":return "ios-cache"}}async deleteMobileStepCacheEntry({platform:t,body:n,headers:o}){await this.sendRequest(`/${be}/${this.cacheRouteForPlatform(t)}/entry`,{method:"DELETE",body:n,extraHeaders:o,retries:3,requestTimeoutMs:1e4});}async getMobileStepCacheMemoryTraces(t,n){let o=await this.sendRequest(`/${be}/${this.cacheRouteForPlatform(t)}/traces`,{method:"POST",body:n,retries:10,requestTimeoutMs:3e4,initialRetryDelayMs:3e3});return PN.parse(o)}async updateMobileStepCaches(t){await this.sendRequest(`/${be}/${this.cacheRouteForPlatform(t.platform)}`,{method:"PATCH",body:t.body,extraHeaders:t.headers,retries:3,requestTimeoutMs:1e4,initialRetryDelayMs:3e3});}async getMobileStepCacheForTest({platform:t,body:n,headers:o}){let r=await this.sendRequest(`/${be}/${this.cacheRouteForPlatform(t)}`,{method:"POST",body:n,extraHeaders:o,retries:10,requestTimeoutMs:3e4,initialRetryDelayMs:3e3});return j2[t](r)}async queueTests(t){let n=await this.sendRequest(`/${be}/tests/queue`,{method:"POST",body:t,retries:3,requestTimeoutMs:1e4});return F2.parse(n)}async uploadScreenshot(t){let n=await this.sendRequest(`/${be}/screenshots`,{method:"POST",body:t,retries:3,requestTimeoutMs:5e3});return J2.parse(n)}async uploadOnDemandScreenshot(t){return await this.sendRequest(`/${be}/on-demand-screenshots`,{method:"POST",body:t,retries:3,requestTimeoutMs:5e3}),{apiServerUrl:`${this.baseUrl}/${be}/on-demand-screenshots/${t.id}`}}async fetchOnDemandScreenshot(t){let n={};return {data:await this.sendRequest(`/${be}/on-demand-screenshots/${encodeURIComponent(t)}`,{method:"GET",retries:3,requestTimeoutMs:5e3,responseType:"buffer",responseHeadersObject:n}),contentType:n["content-type"]??"image/jpeg"}}async getAllEnvironments(){let t=await this.sendRequest(`/${be}/environments`,{method:"GET",retries:3,requestTimeoutMs:5e3});return Z2.parse(t)}async acquireCacheLock(t,n){let o=await this.sendRequest(`/${be}/result-cache/lock`,{method:"POST",body:t,signal:n,retries:3,requestTimeoutMs:3e4});return bK.parse(o)}async releaseCacheLock(t){await this.sendRequest(`/${be}/result-cache/lock`,{method:"DELETE",body:{key:t},retries:3,requestTimeoutMs:5e3});}async deleteCacheResult(t){await this.sendRequest(`/${be}/result-cache/entry`,{method:"DELETE",body:t,retries:3,requestTimeoutMs:5e3});}async setCacheResult(t){await this.sendRequest(`/${be}/result-cache/entry`,{method:"PATCH",body:t,retries:3,requestTimeoutMs:5e3});}async getCacheResult(t){try{return await this.sendRequest(`/${be}/result-cache/entry`,{method:"POST",body:t,retries:3,requestTimeoutMs:5e3})}catch(n){if(n instanceof Error&&n.message.includes("404"))return null;throw n}}async queueSuiteRuns(t){let n=await this.sendRequest(`/${be}/suites/queue`,{method:"POST",body:t,retries:3,requestTimeoutMs:5e3});return nK.parse(n)}async bulkGetRunGroupStatus(t){let n={runGroupIds:t},o=await this.sendRequest(`/${be}/run-groups/status`,{method:"POST",body:n,retries:3,requestTimeoutMs:5e3});return bV.array().parse(o)}async getRunGroupWithRuns(t){try{let n=await this.sendRequest(`/${be}/run-groups/${encodeURIComponent(t)}`,{method:"GET",retries:3,requestTimeoutMs:1e4});return TV.parse(n)}catch(n){if(n instanceof no&&n.status===404)return null;throw n}}async getRun(t){try{let n=await this.sendRequest(`/${be}/runs/${encodeURIComponent(t)}/metadata`,{method:"GET",retries:3,requestTimeoutMs:1e4});return ss.parse(n)}catch(n){if(n instanceof no&&n.status===404)return null;throw n}}async getRunsByCommit(t){let o=[];for(let r=1;;r++){let i=await this.listRuns({gitCommitSha:t,includeFailureDetails:true,limit:100,page:r});if(o.push(...i.runs.map(s=>({...s,test:null}))),i.runs.length<100||r>=i.pageCount)break}return o}async updateGithubPRHealRiskSummary(t,n){await this.sendRequest(`/${be}/run-groups/${encodeURIComponent(t)}/github-pr-heal-risk-summary`,{method:"PATCH",body:n,retries:3,requestTimeoutMs:1e4});}async uploadProposedSteps(t,n){try{await this.sendRequest(`/${be}/test-fragments/`,{method:"POST",body:t,retries:3,requestTimeoutMs:1e4});}catch(o){n.error({err:o},"Failed to upload proposed steps");}}async reportBillableEvents(t,n){try{await this.sendRequest(`/${be}/billing/events`,{method:"POST",body:n,retries:10,requestTimeoutMs:1e4});}catch(o){t.error({err:o},"Failed to report billable event");}}async fetchTestFragment(t){let n=await this.sendRequest(`/${be}/test-fragments/${t}`,{method:"GET",retries:3,requestTimeoutMs:1e4});return oK.parse(n)}async patchTestFragment(t,n){await this.sendRequest(`/${be}/test-fragments/${t}`,{method:"PATCH",body:n,retries:3,requestTimeoutMs:1e4});}async getPastTestResults(t,n){let o=await this.sendRequest(`/${be}/results/tests/${t}`,{method:"POST",body:n,retries:3,requestTimeoutMs:1e4});return rK.parse(o)}async listRuns(t){let n=await this.sendRequest(`/${be}/results/runs`,{method:"POST",body:t,retries:3,requestTimeoutMs:1e4});return iK.parse(n)}async generateTestResultsUploadUrl(){let t=await this.sendRequest(`/${be}/results/uploads`,{method:"POST",retries:3,requestTimeoutMs:1e4});return sK.parse(t)}async startProcessingResultsUpload(t,n){let o=await this.sendRequest(`/${be}/results/uploads/${t}/process`,{method:"POST",body:n,retries:3,requestTimeoutMs:1e4});return aK.parse(o)}async fetchIconKnowledgeBase(t){try{let n=await this.sendRequest(`/${be}/knowledge-base/icons`,{method:"GET",retries:3,requestTimeoutMs:5e3});return wK.parse(n)}catch(n){return t.error({err:n},"Failed to fetch icon knowledge base"),null}}async saveNewIcons(t,n){try{await this.sendRequest(`/${be}/knowledge-base/icons`,{method:"POST",body:t,retries:3,requestTimeoutMs:5e3});}catch(o){n.error({err:o},"Failed to save new icons to icon knowledge base");}}async retrieveKnowledgeBase({query:t,clientName:n,testId:o,types:r,agentSubtype:i,limit:s,mode:a,scoreMultiplier:l,retries:c,signal:d},u){try{let p=await this.sendRequest(`/${be}/knowledge-base/retrieve`,{method:"POST",body:{query:t,clientName:n,testId:o,types:r,agentSubtype:i,limit:s,mode:a,scoreMultiplier:l},retries:c??3,requestTimeoutMs:5e3,signal:d});return j$.parse(p)}catch(p){return u.warn({err:p},"Failed to retrieve from knowledge base"),null}}async createKnowledgeItem(t){let n=await this.sendRequest(`/${be}/knowledge-base/items`,{method:"POST",body:t,retries:2,requestTimeoutMs:15e3});return oM.parse(n)}async getMergeBaseCommitFromGithub(t,n,o,r){let i=new URLSearchParams;i.set("base",o),i.set("head",r);let s=await this.sendRequest(`/${be}/git/github/${t}/${n}/merge-base-commit?${i.toString()}`,{method:"GET",retries:3,requestTimeoutMs:1e4});return $b.parse(s)}async compareCommitsFromGithub({owner:t,repo:n,base:o,head:r}){let i=new URLSearchParams;i.set("base",o),i.set("head",r);let s=await this.sendRequest(`/${be}/git/github/${t}/${n}/compare?${i.toString()}`,{method:"GET",retries:3,requestTimeoutMs:5e3});return kW.parse(s)}async getGithubFileContent({owner:t,repo:n,path:o,ref:r}){let i=new URLSearchParams;i.set("path",o),i.set("ref",r);let s=await this.sendRequest(`/${be}/git/github/${t}/${n}/contents?${i.toString()}`,{method:"GET",retries:3,requestTimeoutMs:5e3});return DW.parse(s).content??void 0}async getGithubBranchMetadata(t,n,o){let r=new URLSearchParams;r.set("branch",o);let i=await this.sendRequest(`/${be}/git/github/${t}/${n}/branch-metadata?${r.toString()}`,{method:"GET",retries:3,requestTimeoutMs:1e4});return FW.parse(i)}async createGithubPullRequest(t,n,o){let r=await this.sendRequest(`/${be}/git/github/${t}/${n}/pull-requests`,{method:"POST",body:o,retries:3,requestTimeoutMs:6e4});return MW.parse(r)}async createGithubCommit(t,n,o){let r=await this.sendRequest(`/${be}/git/github/${t}/${n}/commits`,{method:"POST",body:o,retries:3,requestTimeoutMs:6e4});return NW.parse(r)}async getGithubPullRequestTemplate(t,n){try{let o=await this.sendRequest(`/${be}/git/github/${t}/${n}/pull-request-template`,{method:"GET",retries:3,requestTimeoutMs:1e4});return UW.parse(o).template}catch(o){if(o instanceof no&&o.status===404)return;throw o}}async getGithubPullRequestForBranch(t,n,o){let r=new URLSearchParams;r.set("branch",o);let i;try{i=await this.sendRequest(`/${be}/git/github/${t}/${n}/pull-requests?${r.toString()}`,{method:"GET",retries:3,requestTimeoutMs:1e4});}catch(s){if(s instanceof no&&s.status===404)return;throw s}return LW.parse(i)}async getCommitFromGithub(t,n,o){let r=await this.sendRequest(`/${be}/git/github/${t}/${n}/commits/${o}`,{method:"GET",retries:3,requestTimeoutMs:1e4});return $b.parse(r)}async getMergedBranchFromGithub(t,n,o,r){let i=encodeURIComponent(o),s=await this.sendRequest(`/${be}/git/github/${t}/${n}/${i}/${r}/merged-branch`,{method:"GET",retries:3,requestTimeoutMs:1e4});return NN.parse(s)}async getMergeBaseCommitFromGitlab(t,n,o){let r=new URLSearchParams;r.set("base",n),r.set("head",o);let i=encodeURIComponent(t),s=await this.sendRequest(`/${be}/git/gitlab/${i}/merge-base-commit?${r.toString()}`,{method:"GET",retries:3,requestTimeoutMs:5e3});return $b.parse(s)}async getGitlabMergeRequestForBranch(t,n){let o=new URLSearchParams;o.set("branch",n);let r=encodeURIComponent(t),i;try{i=await this.sendRequest(`/${be}/git/gitlab/${r}/merge-requests?${o.toString()}`,{method:"GET",retries:3,requestTimeoutMs:1e4});}catch(s){if(s instanceof no&&s.status===404)return;throw s}return BW.parse(i)}async getCommitFromGitlab(t,n){let o=encodeURIComponent(t),r=await this.sendRequest(`/${be}/git/gitlab/${o}/commits/${n}`,{method:"GET",retries:3,requestTimeoutMs:1e4});return $b.parse(r)}async getMergedBranchFromGitlab(t,n,o){let r=encodeURIComponent(n),i=encodeURIComponent(t),s=await this.sendRequest(`/${be}/git/gitlab/${i}/${r}/${o}/merged-branch`,{method:"GET",retries:3,requestTimeoutMs:1e4});return NN.parse(s)}async getAgentConfig(){let t=await this.sendRequest(`/${be}/web-agent/agent-config`,{method:"GET",retries:3,requestTimeoutMs:5e3});return z.record(z.string(),z.string()).parse(t)}async getOrgSettings(){try{let t=await this.sendRequest(`/${be}/org-settings`,{method:"GET",retries:3,requestTimeoutMs:5e3});return aV(t)}catch(t){if(t instanceof no&&t.status===404)return this.logger.warn({err:t},"Momentic server does not expose org settings; continuing with local project settings"),Cg.parse({});throw t}}async getQuarantinedTests(){let t=await this.sendRequest(`/${be}/quarantine`,{method:"GET"});return lK.parse(t)}async sendExploreSlackNotification(t){await this.sendRequest(`/${be}/explore/slack-notification`,{method:"POST",body:t,retries:2,requestTimeoutMs:1e4});}async recordExplorerSuggestedTests(t){await this.sendRequest(`/${be}/explore/suggested-tests`,{method:"POST",body:t,retries:2,requestTimeoutMs:1e4});}async quarantineTest(t,n,o){await this.sendRequest(`/${be}/quarantine`,{method:"POST",body:{testId:t.id,testName:t.name,reason:n,...o??{}},retries:3,requestTimeoutMs:1e4});}async unquarantineTest(t,n,o){await this.sendRequest(`/${be}/quarantine/${t.id}`,{method:"DELETE",body:{testName:t.name,reason:n,...o??{}},retries:3,requestTimeoutMs:1e4});}platformRoute(t){switch(t){case "ANDROID":return "android";case "IOS":return "ios"}}async createAndroidEmulator(t){let n=await this.sendRequest(`/${be}/limbar/android`,{method:"POST",retries:3,body:t,requestTimeoutMs:9e4,initialRetryDelayMs:5e3,maxRetryDelayMs:15e3});return dK.parse(n)}async extendEmulatorTtl(t,n){try{await this.sendRequest(`/${be}/limbar/${this.platformRoute(t)}/${n}/keepalive`,{method:"POST",retries:3,requestTimeoutMs:15e3});}catch{}}async generateAssetUploadUrl({channel:t,tag:n,md5:o,platform:r}){let i={channel:t,tag:n,md5:o},s=await this.sendRequest(`/${be}/limbar/${this.platformRoute(r)}/upload-url`,{method:"POST",retries:3,body:i,requestTimeoutMs:15e3,logResponse:true});return pK.parse(s)}async deleteAndroidEmulator(t){await this.sendRequest(`/${be}/limbar/android/${t}`,{method:"DELETE",retries:3,requestTimeoutMs:3e4});}async getMobileAssets(){let t=await this.sendRequest(`/${be}/limbar/assets`,{method:"GET",retries:3,requestTimeoutMs:1e4});return mK.parse(t)}async getLimbarAssetDownloadUrl(t,n,o){let r=await this.sendRequest(`/${be}/limbar/assets/${t}/${n}/${this.platformRoute(o)}/download-url`,{method:"GET",retries:2,requestTimeoutMs:3e4});return hK.parse(r)}async deleteAsset(t,n,o){await this.sendRequest(`/${be}/limbar/assets/${t}/${n}/${this.platformRoute(o)}`,{method:"DELETE",retries:3,requestTimeoutMs:1e4});}async createIosEmulator(t){let n=await this.sendRequest(`/${be}/limbar/ios`,{method:"POST",retries:3,body:t,requestTimeoutMs:9e4,initialRetryDelayMs:5e3,maxRetryDelayMs:15e3});return uK.parse(n)}async deleteIosEmulator(t){await this.sendRequest(`/${be}/limbar/ios/${t}`,{method:"DELETE",retries:3,requestTimeoutMs:3e4});}async generateMobileLogcatUploadUrl(t){let n=await this.sendRequest(`/${be}/logcat/mobile/upload`,{method:"POST",body:t,retries:3,requestTimeoutMs:1e4});return hW.parse(n)}async generateMcpSessionTraceUploadUrl(t){let n=await this.sendRequest(`/${be}/mcp/upload`,{method:"POST",body:t,retries:3,requestTimeoutMs:1e4});return ON.parse(n)}};async function Zm(e){let t=process.versions.node,n=parseInt(t.split(".")[0]);(isNaN(n)||n<18)&&(R.error(`Node.js version 20 or higher is required to run the CLI. Detected: ${process.versions.node}.`),process.exit(1)),R.debug(`Identified node version ${t}`);let o=await e.client.getAuthInfo();return R.debug("Got auth info from API"),o}var qd=class{apiClient;constructor(t){this.apiClient=t;}async reportBillableEvents(t,n){await this.apiClient.reportBillableEvents(t,n);}};var Kd=class extends Wi{generator;constructor(t,n){super(t),this.generator=n;}async runTemplateMatching(t,n={}){let o=await this.sendRequest(`/${be}/web-agent/template-matching`,{method:"POST",body:t,signal:n?.signal});return KG.parse(o)}async constructIframeRegex(t,n={}){return this.generator.getIframeRegex(t,{abortSignal:n.signal,loggerTags:n.loggerTags})}};var Kf=class{constructor(t,n){this.client=t;this.orgId=n;}getApiServerUrl(){return this.client.baseUrl}getAppServerUrl(){let t=this.getApiServerUrl();return Wg(t)}async acquireCacheLock(t,n){return this.client.acquireCacheLock(t,n)}async createOnDemandScreenshot(t,n,o){let{apiServerUrl:r}=await this.client.uploadOnDemandScreenshot({id:t,screenshot:n.toString("base64"),contentType:o});return {apiServerUrl:r,appServerUrl:`${this.getAppServerUrl()}/api/on-demand-screenshots/${t}`,universalHandle:{id:t,contentType:o}}}async fetchOnDemandScreenshot(t){return this.client.fetchOnDemandScreenshot(t.id)}async releaseCacheLock(t){return this.client.releaseCacheLock(t)}async deleteCacheResult(t){return this.client.deleteCacheResult(t)}async setCacheResult(t){return this.client.setCacheResult(t)}async getCacheResult(t){return this.client.getCacheResult(t)}fetchIconKnowledgeBase(t){return this.client.fetchIconKnowledgeBase(t)}saveNewIcons(t,n){return this.client.saveNewIcons(t,n)}};var Yd="v1",VNe=2e3,vZ="sms.lease() and sms.release() are only supported when running tests via the Momentic CLI.",Jd=class{httpClient;fakerInstance;supportsLease;type="API_CLIENT";sms={send:this.sendSms.bind(this),fetchLatest:this.fetchLatestSms.bind(this),lease:this.leasePhoneNumber.bind(this),release:this.releasePhoneNumber.bind(this)};email={send:this.sendEmail.bind(this),fetchLatest:this.fetchLatestEmail.bind(this),fetchAll:this.fetchAllEmails.bind(this),create:this.createEmail.bind(this)};activeLeases=new Map;constructor(t){this.httpClient=t.httpClient,this.supportsLease=t.supportsLease??true,t.fakerSeed&&(this.fakerInstance=new Faker({locale:en$1}),this.fakerInstance.seed(t.fakerSeed));}async sendSms(t){return this.httpClient.sendRequest(`/${Yd}/tools/sms/send`,{method:"POST",body:t}).then(()=>{}).catch(n=>{throw n instanceof no?new Error(n.rawError):new Error(`Failed to send sms: ${n.message}`)})}async fetchLatestSms(t){return this.httpClient.sendRequest(`/${Yd}/tools/sms/fetchLatest`,{method:"POST",body:t}).catch(n=>{throw n instanceof no?new Error(n.rawError):n})}async leasePhoneNumber(t){if(!this.supportsLease)throw new Error(vZ);let n=await this.httpClient.sendRequest(`/${Yd}/tools/sms/lease`,{method:"POST",body:t??{}}).catch(r=>{throw r instanceof no?new Error(r.rawError):new Error(`Failed to lease phone number: ${r.message}`)}),o=AW.parse(n);return this.activeLeases.set(o.phoneNumber,{leaseToken:o.leaseToken}),o}async releasePhoneNumber(t){if(!this.supportsLease)throw new Error(vZ);return this.activeLeases.delete(t.phoneNumber),this.httpClient.sendRequest(`/${Yd}/tools/sms/release`,{method:"POST",body:t}).then(()=>{}).catch(n=>{throw n instanceof no?new Error(n.rawError):new Error(`Failed to release phone number: ${n.message}`)})}async dispose(){let t=[...this.activeLeases.entries()];this.activeLeases.clear(),await Promise.allSettled(t.map(([n,{leaseToken:o}])=>Ie(this.httpClient.sendRequest(`/${Yd}/tools/sms/release`,{method:"POST",body:{phoneNumber:n,leaseToken:o}}),{milliseconds:VNe,fallback:()=>{}})));}async sendEmail(t){return this.httpClient.sendRequest(`/${Yd}/tools/email/send`,{method:"POST",body:t}).then(()=>{}).catch(n=>{throw n instanceof no?new Error(n.rawError):new Error(`Failed to send email: ${n.message}`)})}async fetchAllEmails(t){return this.httpClient.sendRequest(`/${Yd}/tools/email/fetchAll`,{method:"POST",body:t}).catch(n=>{throw n instanceof no?new Error(n.rawError):new Error(`Failed to fetch all emails: ${n.message}`)})}async fetchLatestEmail(t){return this.httpClient.sendRequest(`/${Yd}/tools/email/fetchLatest`,{method:"POST",body:t}).catch(n=>{throw n instanceof no?new Error(n.rawError):new Error(`Failed to fetch latest emails: ${n.message}`)})}async createEmail(){let t=await this.httpClient.sendRequest(`/${Yd}/tools/email/create`,{method:"POST",body:{}}).catch(n=>{throw n instanceof no?new Error(n.rawError):new Error(`Failed to create email inbox: ${n.message}`)});return EW.parse(t)}};function RZ(e,t,n){return fetch(e,{method:"PUT",body:n,headers:{"Content-Type":t}})}var Kw=class{constructor(t){this.client=t;}async uploadResultsArchive(t){let{runGroupId:n,archive:o,persist:r}=t,{uploadUrl:i,id:s}=await this.client.generateTestResultsUploadUrl(),a=await RZ(i,"application/zip",o);if(!a.ok)throw new Error(`Failed to upload test results: ${await a.text()}`);let{runGroupId:l}=await this.client.startProcessingResultsUpload(s,{runGroupId:n,persist:r});return l}};function Xd({logger:e,orgId:t,client:n,gitMetadata:o,regenerateCache:r,alwaysSaveCache:i,noCache:s,isolateCachesByEnvironment:a=false,bustOldestCachePercentage:l}){return s?new Iv:new sF(e,t,n,o,{regenerateCache:r,alwaysSaveCache:i,bustOldestCachePercentage:l,isolateCachesByEnvironment:a})}var sF=class{constructor(t,n,o,r,i){this.orgId=n;this.client=o;let{regenerateCache:s,alwaysSaveCache:a,bustOldestCachePercentage:l,isolateCachesByEnvironment:c}=i,{gitBranchName:d,gitProtectedBranches:u}=r;t.info({options:i,gitBranchName:d,gitProtectedBranches:u},"Cache storage initialization options"),this.cacheHeaders=wv(r),this.isolateCachesByEnvironment=c,this.readCaches=!s;let p=d&&u.includes(d);a||!p?this.writeCaches=true:this.writeCaches=false,p||(this.bustOldestCachePercentage=l);}cacheHeaders;readCaches;writeCaches;isolateCachesByEnvironment;bustOldestCachePercentage;async saveStepCacheEntries({entries:t,logger:n}){if(!this.writeCaches){n.debug("Skipping cache storage because branch is protected");return}try{await this.client.updateStepCaches({entries:FN(t,this.isolateCachesByEnvironment)},this.cacheHeaders);}catch(o){n.error({err:o},"Failed to save step cache entries");}}async saveSnapshotCacheEntries({entries:t,logger:n}){if(t.length!==0){if(!this.writeCaches){n.debug("Skipping snapshot cache storage because branch is protected");return}try{await this.client.updateSnapshotCaches({entries:FN(t,this.isolateCachesByEnvironment)},this.cacheHeaders);}catch(o){n.error({err:o},"Failed to save snapshot cache entries");}}}async deleteStepCacheEntry({logger:t,testId:n,key:o,environment:r}){try{await this.client.deleteStepCacheEntry({testId:n,key:o,environment:this.isolateCachesByEnvironment?r:void 0},this.cacheHeaders);}catch(i){t.error({err:i},"Failed to delete step cache entry");}}async resolveStepCacheEntries(t){if(!this.readCaches){t.logger.debug("Skipping cache resolution because of regenerate flag");return}let n=t.useSnapshotIdentityCache?await this.tryRestoreStepIdsFromSnapshot(t):void 0,{steps:o,beforeSteps:r,afterSteps:i}=t.stepLists,s=await this.client.getStepCacheForTest({testId:t.testId,environment:this.isolateCachesByEnvironment?t.environment:void 0},this.cacheHeaders);if(this.bustOldestCachePercentage!==void 0){let u=Object.entries(s).map(([h,g])=>({key:h,time:g.value.cache?.updatedAt?.getTime()??0}));u.sort((h,g)=>h.time-g.time);let p=u.length,m=Math.max(1,Math.floor(p*this.bustOldestCachePercentage/100));u.slice(0,m).forEach(({key:h})=>{delete s[h];}),t.logger.info({nCachesToBust:m,bustOldestCachePercentage:this.bustOldestCachePercentage,totalCaches:p},"Busted oldest caches");}let a={totalSteps:0,cacheKeysHit:[],cacheKeysMissed:[],uniqueKeysHit:[],cacheMissSamples:[]};for(let u of [o,r,i]){if(!u)continue;let p=ep({steps:u,stepCacheEntries:s,logger:t.logger});a.totalSteps+=p.totalSteps,a.cacheKeysHit.push(...p.cacheKeysHit),a.cacheKeysMissed.push(...p.cacheKeysMissed),a.uniqueKeysHit.push(...p.uniqueKeysHit),a.cacheMissSamples.push(...p.cacheMissSamples);}n&&WNe({cacheResolutionStats:a,logger:t.logger,restoredIdentity:n,schemaVersion:t.schemaVersion,testId:t.testId});let l=["platform:web","source:local",`fileFormat:${t.useSnapshotIdentityCache?"v2":"v1"}`,`snapshotIdentityCache:${t.useSnapshotIdentityCache}`,`orgId:${this.orgId}`,"cliVersion:3.12.0"];if(Tt.increment("step_cache_resolution",a.cacheKeysHit.length,[...l,"outcome:hit"]),Tt.increment("step_cache_resolution",a.cacheKeysMissed.length,[...l,"outcome:miss"]),Tt.increment("step_cache_resolution",a.totalSteps,[...l,"outcome:total"]),!this.writeCaches){t.logger.debug("Skipping cache last used at update because branch is protected");return}let{cachesToSave:c,snapshotCachesToSave:d}=await Yn({stepLists:t.stepLists,useSnapshotIdentityCache:t.useSnapshotIdentityCache,cacheCreationParams:{environment:t.environment,testId:t.testId,orgId:this.orgId}});t.useSnapshotIdentityCache&&this.saveSnapshotCacheEntries({entries:d,logger:t.logger}),this.saveStepCacheEntries({entries:c,logger:t.logger});}async tryRestoreStepIdsFromSnapshot(t){try{return await this.restoreStepIdsFromSnapshot(t)}catch(n){t.logger.warn({err:n,testId:t.testId},"Failed to restore step ids from snapshot cache; proceeding without identity cache"),Tt.increment("step_cache_resolution",1,["platform:web","source:local","fileFormat:v2","snapshotIdentityCache:true",`orgId:${this.orgId}`,"cliVersion:3.12.0","outcome:identity_restore_error"]);return}}async restoreStepIdsFromSnapshot(t){let{logger:n,testId:o}=t,r=await this.client.getSnapshotCacheForTest({testId:o,environment:this.isolateCachesByEnvironment?t.environment:void 0},this.cacheHeaders);for(let a of r){if(!a.schema_version)continue;let l=oN(a.schema_version),c=oN(at);if(l&&c&&l.compare(c)>0){n.warn(`Snapshot cache for test ${o} was written at schema version ${a.schema_version}, which is newer than this CLI's latest (${at}). Please update your momentic package version. Skipping identity restoration from snapshot cache.`);return}}let i=XR({entries:r,orgId:this.orgId,testId:o,logger:n}),s=JR({currentStepLists:t.stepLists,previousSnapshot:i.testSnapshot,previousModuleSnapshots:i.moduleSnapshots,generateUuid:randomUUID});return t.stepLists.steps.splice(0,t.stepLists.steps.length,...s.stepLists.steps),t.stepLists.beforeSteps=s.stepLists.beforeSteps,t.stepLists.afterSteps=s.stepLists.afterSteps,n.debug({snapshotEntries:r.length,testSnapshotHit:!!i.testSnapshot,moduleSnapshots:Array.from(i.moduleSnapshots.keys()),mintedSteps:s.stats.mintedSteps,stats:s.stats,moduleRestoreResults:s.moduleRestoreResults.map(({moduleId:a,snapshotHit:l,stats:c})=>({moduleId:a,snapshotHit:l,stats:c}))},"Restored step ids from snapshot cache"),s}};function WNe({cacheResolutionStats:e,logger:t,restoredIdentity:n,schemaVersion:o,testId:r}){let i=e.cacheKeysHit.length,s=e.cacheKeysMissed.length,a=i+s,l=a>0?Math.round(s/a*1e3)/10:0,c=n.stats.matchedSteps+n.stats.mintedSteps,d=c>0?Math.round(n.stats.mintedSteps/c*1e3)/10:0,u=n.moduleRestoreResults.filter(({snapshotHit:g,stats:f})=>!g||f.mintedSteps>0||f.bustedConditionals>0).slice(0,10).map(({moduleId:g,snapshotHit:f,stats:y})=>({moduleId:g,snapshotHit:f,stats:y})),p=n.stats.mintedSteps>=5&&d>=25,m=p||n.stats.bustedConditionals>0||u.some(({stats:g})=>g.mintedSteps>=5||g.bustedConditionals>0),h={cacheHits:i,cacheMissRate:l,cacheMisses:s,cacheMissSamples:e.cacheMissSamples.slice(0,10),hasHighMintRate:p,identityMintRate:d,moduleIdentityIssueCount:u.length,moduleIdentityIssues:u,schemaVersion:o,snapshotIdentityCache:true,stepIdentityStats:n.stats,testId:r,totalCacheableSteps:e.totalSteps};if(!m){t.debug(h,"V2 cache resolution completed");return}t.warn(h,"V2 cache resolution degraded");}function qNe(e){let t=new wZ,n=Jn__default.join(e,ct),o=Ta.parse(JSON.parse(br__default.readFileSync(n,"utf-8")));t.addLocalFile(n);for(let r of br__default.readdirSync(Jn__default.join(e,to))){if(!r.endsWith(".zip"))continue;let i=r.replace(/\.zip$/,""),s=new wZ(Jn__default.join(e,to,r));for(let a of s.getEntries())a.isDirectory||t.addFile(Jn__default.join(to,i,a.entryName),a.getData());}return {runGroupId:o.id,buffer:t.toBuffer()}}async function YT(e){let{client:t,resultsPath:n,persist:o}=e;if(!br__default.existsSync(n))return {success:false,error:"results path does not exist"};let r=new Kw(t);try{let{runGroupId:i,buffer:s}=qNe(n),a=await r.uploadResultsArchive({runGroupId:i,archive:s,persist:o});return {success:!0,runGroupUrl:`${t.getAppUrl()}/run-groups/${a}`}}catch(i){return {success:false,error:Q(i)}}}var JT=class e{constructor(t,n=true){this.filePath=t;n&&br__default.rmSync(this.filePath,{recursive:true,force:true}),br__default.mkdirSync(this.filePath,{recursive:true});}children=[];streams=[];close(){for(let t of this.children)t.close();for(let t of this.streams)t.end();}cd(t){let n=new e(Jn__default.join(this.filePath,t));return this.children.push(n),n}cwd(){return this.filePath}mkdir(t){br__default.mkdirSync(Jn__default.join(this.filePath,t),{recursive:true});}readFile(t){let n=Jn__default.join(this.filePath,t);if(br__default.existsSync(n))return br__default.readFileSync(n)}storeFile(t){let{name:n,contents:o}=t,r=Jn__default.join(this.filePath,n);try{br__default.mkdirSync(Jn__default.dirname(r),{recursive:!0}),br__default.writeFileSync(r,o);}catch{}}createFileStream(t){let n=Jn__default.join(this.filePath,t),o=br__default.createWriteStream(n);return this.streams.push(o),o}createRunArchive(t,n){let o=new lF(Jn__default.join(this.filePath,to),t,n);return this.children.push(o),o}},lF=class{children=[];tempPath;finalPath;logger;closed=false;constructor(t,n,o){this.tempPath=Jn__default.join(t,`temp-storage-${n}`),this.finalPath=Jn__default.join(t,`${n}.zip`),this.logger=o,br__default.rmSync(this.tempPath,{recursive:true,force:true}),br__default.rmSync(this.finalPath,{recursive:true,force:true}),br__default.mkdirSync(this.tempPath,{recursive:true});}readFile(t){let n=Jn__default.join(this.tempPath,t);if(br__default.existsSync(n))return br__default.readFileSync(n)}mkdir(t){br__default.mkdirSync(Jn__default.join(this.tempPath,t),{recursive:true});}cd(t){let n=new JT(Jn__default.join(this.tempPath,t));return this.children.push(n),n}cwd(){return this.tempPath}storeFile(t){if(this.closed)return;let{name:n,contents:o}=t,r=Jn__default.join(this.tempPath,n);br__default.mkdirSync(Jn__default.dirname(r),{recursive:true}),br__default.writeFileSync(r,o);}close(){if(!this.closed){this.closed=true;for(let t of this.children)t.close();try{let t=new wZ;t.addLocalFolder(this.tempPath,void 0,o=>o!==".DS_Store");let n=t.toBuffer();br__default.writeFileSync(this.finalPath,n),br__default.rmSync(this.tempPath,{recursive:!0,force:!0});}catch(t){this.logger.warn({err:t,finalPath:this.finalPath,tempPath:this.tempPath},"Failed to archive run artifacts; leaving raw files on disk");}}}};function PZ(e){try{return br__default.existsSync(e)?JSON.parse(br__default.readFileSync(e,"utf-8")):void 0}catch{return}}function IZ(e){return br__default.existsSync(e)?br__default.readFileSync(e,"utf-8").split(`
|
|
291
|
+
`)}var FNe="MOMENTIC_OPENAI_RESPONSES_WEBSOCKET_COMPACT_THRESHOLD",BNe=2e5;function qf(e){let{apiKey:t,sessionId:n,loggerTags:o,runner:r,parentTraceId:i}=e,s={Authorization:`Bearer ${t}`,[vv]:qm,...n&&{[O2]:n},...r&&{[Rv]:r},...i&&{[M2]:i},...o&&{[P2]:JSON.stringify(o)}};for(let[a,l]of Object.entries(s))s[a]=l.replace(/[\u0100-\uffff]/g,c=>"\\u"+c.charCodeAt(0).toString(16).padStart(4,"0"));return s}var hZ="bedrock/",gZ="azure/",fZ=e=>t=>{let n=qf(e),o=`${e.baseUrl}/v1/llm/anthropic/${encodeURIComponent(t)}`;return t.startsWith(hZ)?o=`${e.baseUrl}/v1/llm/provider/bedrock/anthropic/${encodeURIComponent(t.slice(hZ.length))}`:t.startsWith(gZ)&&(o=`${e.baseUrl}/v1/llm/provider/foundry/anthropic/${encodeURIComponent(t.slice(gZ.length))}`),createAnthropic({baseURL:o,headers:n,apiKey:e.apiKey})(t)},yZ=e=>t=>{let n=qf(e),o=e.useOpenAIResponsesWebSocket??false,r=o?e.openAIResponsesWebSocketCompactThreshold??UNe(process.env[FNe])??BNe:void 0;return Wf({baseURL:`${e.baseUrl}/v1/llm/provider/openai/${t}`,headers:n,apiKey:e.apiKey,fetch:o?pZ({compactThreshold:r}):void 0})(t)},SZ=e=>t=>{let n=qf(e);return Wf({baseURL:`${e.baseUrl}/v1/llm/provider/xai/${t}`,headers:n,apiKey:e.apiKey})(t)},bZ=e=>t=>{let n=qf(e);return Wf({baseURL:`${e.baseUrl}/v1/llm/provider/azure/${t}`,headers:n,apiKey:e.apiKey})(t)};function rF(e){return t=>n=>{let o=qf(t);return Wf({baseURL:`${t.baseUrl}/v1/llm/provider/${e}/${n}`,headers:o,apiKey:t.apiKey}).chat(n)}}var TZ=rF("azure/deepseek"),AZ=rF("azure/kimi"),EZ=rF("fireworks/glm"),CZ=e=>t=>{let n=qf(e);return $D({baseURL:`${e.baseUrl}/v1/llm/provider/vertex`,headers:n,apiKey:e.apiKey})(t)};function UNe(e){if(!e)return;let t=Number.parseInt(e,10);return Number.isFinite(t)&&t>0?t:void 0}var Sr=class extends Wi{agentConfig;constructor(t,n){let o={...Rg,...t};GC(o),super(n),this.agentConfig=o;}getAgentConfig(){return this.agentConfig}async rankChunksWithAi(t,n){let o={...t,loggerTags:n.loggerTags},r=await this.sendRequest(`/${be}/web-agent/recommend-chunks-ai`,{method:"POST",body:o,signal:n.abortSignal});return IV.parse(r)}async rankChunksWithRag(t,n){let o=await this.sendRequest(`/${be}/web-agent/recommend-chunks`,{method:"POST",body:{cliVersion:qm,...t},signal:n.abortSignal});return wV.parse(o)}async getScreenshotFromS3(t){let n=await this.sendRequest(`/${be}/s3/visual-diff-screenshot`,{method:"POST",body:{url:t}});return z.string().parse(n)}async getElementLocation(t,n){let o={...t,disableCache:n.disableCache,loggerTags:n.loggerTags,useMemory:n.useMemory,cacheBustReason:n.cacheBustReason,agentConfigVersion:this.agentConfig?.locator},r=await this.sendRequest(`/${be}/web-agent/locate-element`,{method:"POST",body:o,signal:n.abortSignal});return k2.parse(r)}async getAssertionResult(t,n){let o={...t,disableCache:!!n.disableCache,useConsensus:!!n.useConsensus,attemptNumber:n.attemptNumber,loggerTags:n.loggerTags,useMemory:n.useMemory,agentConfigVersion:this.agentConfig?.assertion},r=await this.sendRequest(`/${be}/web-agent/assertion`,{method:"POST",body:o,signal:n.abortSignal});return _N.parse(r)}async getLintStepResult(t,n){let o={...t,disableCache:!!n.disableCache,loggerTags:n.loggerTags},r=await this.sendRequest(`/${be}/web-agent/lint/step`,{method:"POST",body:o,signal:n.abortSignal});return L2.parse(r)}async getVisualAssertionResult(t,n){let o={...t,disableCache:!!n.disableCache,useConsensus:!!n.useConsensus,attemptNumber:n.attemptNumber,loggerTags:n.loggerTags,useMemory:n.useMemory,agentConfigVersion:this.agentConfig?.["visual-assertion"]},r=await this.sendRequest(`/${be}/web-agent/visual-assertion`,{method:"POST",body:o,signal:n.abortSignal});return _N.parse(r)}async getAiActionCommand(t,n){let o=await this.sendRequest(`/${be}/web-agent/next-command-dynamic`,{method:"POST",body:{...t,disableCache:n.disableCache,loggerTags:n.loggerTags},signal:n.abortSignal});return N2.parse(o)}async getMultiturnAiActionCommand(t,n){return await this.sendRequest(`/${be}/web-agent/ai-action/next-command`,{method:"POST",body:{...t,disableCache:n.disableCache,loggerTags:n.loggerTags},signal:n.abortSignal})}async getMultiturnAiActionEvaluation(t,n){let o=await this.sendRequest(`/${be}/web-agent/ai-action/evaluate`,{method:"POST",body:{...t,disableCache:n.disableCache,loggerTags:n.loggerTags},signal:n.abortSignal});return WO.parse(o)}async getReverseMappedDescription(t,n){let o=await this.sendRequest(`/${be}/web-agent/reverse-mapped-description`,{method:"POST",body:{...t,disableCache:n.disableCache,loggerTags:n.loggerTags},signal:n.abortSignal});return D2.parse(o)}async getTextExtraction(t,n){let o={...t,disableCache:n.disableCache,loggerTags:n.loggerTags,agentConfigVersion:this.agentConfig?.["text-extraction"]},r=await this.sendRequest(`/${be}/web-agent/text-extraction`,{method:"POST",body:o,signal:n.abortSignal});return zO.parse(r)}async getPageSummary(t,n){let o={...t,disableCache:n.disableCache,loggerTags:n.loggerTags},r=await this.sendRequest(`/${be}/web-agent/page-summary`,{method:"POST",body:o,signal:n.abortSignal});return w$.parse(r)}async getSmartWaitingDecision(t,n){let o={...t,disableCache:n.disableCache,loggerTags:n.loggerTags},r=await this.sendRequest(`/${be}/web-agent/smart-waiting`,{method:"POST",body:o,signal:n.abortSignal});return I$.parse(r)}async getKnowledgeSuggestion(t,n){throw new Error("Knowledge suggestion generation is only available on InternalGenerator")}async getTestResultClassification(t,n){let o=await this.sendRequest(`/${be}/web-agent/result-classification`,{method:"POST",body:{...t,loggerTags:n.loggerTags},signal:n.abortSignal});return nC.parse(o)}async getExtractedKeywords(t,n){let o=await this.sendRequest(`/${be}/web-agent/extract-keywords`,{method:"POST",body:t,signal:n.abortSignal});return UV.parse(o)}async getAutohealingProposal(t,n){let o=await this.sendRequest(`/${be}/web-agent/autoheal-section`,{method:"POST",body:{...t,loggerTags:n.loggerTags},signal:n.abortSignal});return A$.parse(o)}async getFailureRecoveryProposal(t,n){let o=await this.sendRequest(`/${be}/web-agent/failure-recovery`,{method:"POST",body:{...t,loggerTags:n.loggerTags},signal:n.abortSignal});return v$.parse(o)}async getFailureRecoveryPlan(t,n){let o=await this.sendRequest(`/${be}/web-agent/failure-recovery-plan`,{method:"POST",body:{...t,loggerTags:n.loggerTags,agentConfigVersion:this.agentConfig?.["failure-recovery"]},signal:n.abortSignal});return C$.parse(o)}async getIframeRegex(t,n){let o=await this.sendRequest(`/${be}/web-agent/iframe-regex`,{method:"POST",body:{...t,loggerTags:n.loggerTags},signal:n.abortSignal});return qG.parse(o)}createAgentTrace(t){let n=randomUUID(),{completionType:o,runId:r,orgId:i,logger:s}=t,a=async l=>{try{await this.sendRequest(`/${be}/traces/result-classification`,{method:"POST",body:{id:n,completionType:o,input:{runId:r},...l,metadata:{orgId:i,runId:r,...l.metadata}}});}catch(c){s.warn({err:c},"Failed to upsert result classification trace");}};return a({}),{id:n,update:a}}getAnthropicModelFactory(t){return this.buildModelFactory(fZ,t)}getAnthropicBedrockModelFactory(t){let n=this.getAnthropicModelFactory(t);return o=>n(`bedrock/${o}`)}getAnthropicFoundryModelFactory(t){let n=this.getAnthropicModelFactory(t);return o=>n(`azure/${o}`)}getOpenAIModelFactory(t){let{sessionId:n,logger:o,streamType:r,useOpenAIResponsesWebSocket:i,parentTraceId:s}=t;return yZ({baseUrl:this.baseUrl,apiKey:this.apiKey,loggerTags:{...jt(o),promptType:r},sessionId:n,useOpenAIResponsesWebSocket:i,runner:this.runner,parentTraceId:s})}getXAIModelFactory(t){return this.buildModelFactory(SZ,t)}getAzureOpenAIModelFactory(t){return this.buildModelFactory(bZ,t)}getAzureDeepSeekModelFactory(t){return this.buildModelFactory(TZ,t)}getAzureKimiModelFactory(t){return this.buildModelFactory(AZ,t)}getFireworksGLMModelFactory(t){return this.buildModelFactory(EZ,t)}getVertexGeminiModelFactory(t){return this.buildModelFactory(CZ,t)}buildModelFactory(t,n){let{sessionId:o,logger:r,streamType:i,parentTraceId:s}=n;return t({baseUrl:this.baseUrl,apiKey:this.apiKey,loggerTags:{...jt(r),promptType:i},sessionId:o,runner:this.runner,parentTraceId:s})}};var Ft=class extends Wi{getAppUrl(){return Wg(this.baseUrl)}async getAuthInfo(){let t;try{t=await this.sendRequest(`/${be}/auth/check`,{method:"GET",retries:10,requestTimeoutMs:5e3});}catch(n){throw n instanceof no?n.status>=400&&n.status<500?new Error(n.rawError,{cause:n}):new Error(`Momentic server error (HTTP ${n.status}). Please try again in a moment.`,{cause:n}):new Error(`Could not reach Momentic server at ${this.baseUrl}. Check your network connection. If you're on a restricted network (VPN, firewall, or proxy), you may need to whitelist Momentic's servers: https://momentic.ai/docs/environment/authentication#ip-whitelist`,{cause:n})}return X2.parse(t)}async getCliAnnouncements(){let t=await this.sendRequest(`/${be}/announcements`,{method:"GET",retries:1,requestTimeoutMs:5e3});return TW.parse(t).announcements}async getQuotaStatus(){let t=await this.sendRequest(`/${be}/billing/check-quota`,{method:"GET",retries:3,requestTimeoutMs:5e3});return Q2.parse(t)}async createRemoteBrowserConnection(t){let n=await this.sendRequest(`/${be}/browsers/connection`,{method:"POST",body:{...t?.runId?{runId:t.runId}:{},...t?.attemptedProviders?{attemptedProviders:t.attemptedProviders}:{}},retries:3,requestTimeoutMs:1e4});return gK.parse(n)}async bulkGetRunStatus(t){let n=await this.sendRequest(`/${be}/runs/status`,{method:"POST",body:t,retries:3,requestTimeoutMs:1e4});return W2.parse(n)}async getRunExport(t){let n=await this.sendRequest(`/${be}/runs/${encodeURIComponent(t)}/export`,{method:"GET",retries:3,requestTimeoutMs:1e4});return K2.parse(n)}async getResultClassificationCacheEntries(t){let n=await this.sendRequest(`/${be}/result-classification-cache`,{method:"POST",body:t,retries:1,requestTimeoutMs:1e4});return CK.parse(n)}async createResultClassificationCacheEntries(t){await this.sendRequest(`/${be}/result-classification-cache`,{method:"PATCH",body:t,retries:1,requestTimeoutMs:1e4});}async saveRunClassification(t,n){await this.sendRequest(`/${be}/runs/${encodeURIComponent(t)}/classification`,{method:"PATCH",body:n,retries:3,requestTimeoutMs:1e4});}async saveRunHealMetadataBatch(t){await this.sendRequest(`/${be}/runs/heal-metadata`,{method:"PATCH",body:t,retries:3,requestTimeoutMs:1e4});}async getTestYAMLExport(t){let n=await this.sendRequest(`/${be}/tests/export`,{method:"POST",body:t,retries:3,requestTimeoutMs:3e4});return B2.parse(n)}async updateStepCaches(t,n){await this.sendRequest(`/${be}/cache`,{method:"PATCH",body:t,extraHeaders:n,retries:3,requestTimeoutMs:1e4,initialRetryDelayMs:3e3});}async updateSnapshotCaches(t,n){await this.sendRequest(`/${be}/snapshot-cache`,{method:"PATCH",body:t,extraHeaders:n,retries:3,requestTimeoutMs:1e4,initialRetryDelayMs:3e3});}async getStepCacheForTest(t,n){let o=await this.sendRequest(`/${be}/cache`,{method:"POST",body:t,extraHeaders:n,retries:10,requestTimeoutMs:3e4,initialRetryDelayMs:3e3});return H2.parse(o)}async getSnapshotCacheForTest(t,n){let o=await this.sendRequest(`/${be}/snapshot-cache`,{method:"POST",body:t,extraHeaders:n,retries:10,requestTimeoutMs:3e4,initialRetryDelayMs:3e3});return G2.parse(o)}async deleteStepCacheEntry(t,n){await this.sendRequest(`/${be}/cache/entry`,{method:"DELETE",body:t,extraHeaders:n,retries:3,requestTimeoutMs:1e4});}async getWebStepCacheMemoryTraces(t){let n=await this.sendRequest(`/${be}/cache/traces`,{method:"POST",body:t,retries:10,requestTimeoutMs:3e4,initialRetryDelayMs:3e3});return PN.parse(n)}cacheRouteForPlatform(t){switch(t){case "ANDROID":return "android-cache";case "IOS":return "ios-cache"}}async deleteMobileStepCacheEntry({platform:t,body:n,headers:o}){await this.sendRequest(`/${be}/${this.cacheRouteForPlatform(t)}/entry`,{method:"DELETE",body:n,extraHeaders:o,retries:3,requestTimeoutMs:1e4});}async getMobileStepCacheMemoryTraces(t,n){let o=await this.sendRequest(`/${be}/${this.cacheRouteForPlatform(t)}/traces`,{method:"POST",body:n,retries:10,requestTimeoutMs:3e4,initialRetryDelayMs:3e3});return PN.parse(o)}async updateMobileStepCaches(t){await this.sendRequest(`/${be}/${this.cacheRouteForPlatform(t.platform)}`,{method:"PATCH",body:t.body,extraHeaders:t.headers,retries:3,requestTimeoutMs:1e4,initialRetryDelayMs:3e3});}async getMobileStepCacheForTest({platform:t,body:n,headers:o}){let r=await this.sendRequest(`/${be}/${this.cacheRouteForPlatform(t)}`,{method:"POST",body:n,extraHeaders:o,retries:10,requestTimeoutMs:3e4,initialRetryDelayMs:3e3});return j2[t](r)}async queueTests(t){let n=await this.sendRequest(`/${be}/tests/queue`,{method:"POST",body:t,retries:3,requestTimeoutMs:1e4});return F2.parse(n)}async uploadScreenshot(t){let n=await this.sendRequest(`/${be}/screenshots`,{method:"POST",body:t,retries:3,requestTimeoutMs:5e3});return J2.parse(n)}async uploadOnDemandScreenshot(t){return await this.sendRequest(`/${be}/on-demand-screenshots`,{method:"POST",body:t,retries:3,requestTimeoutMs:5e3}),{apiServerUrl:`${this.baseUrl}/${be}/on-demand-screenshots/${t.id}`}}async fetchOnDemandScreenshot(t){let n={};return {data:await this.sendRequest(`/${be}/on-demand-screenshots/${encodeURIComponent(t)}`,{method:"GET",retries:3,requestTimeoutMs:5e3,responseType:"buffer",responseHeadersObject:n}),contentType:n["content-type"]??"image/jpeg"}}async getAllEnvironments(){let t=await this.sendRequest(`/${be}/environments`,{method:"GET",retries:3,requestTimeoutMs:5e3});return Z2.parse(t)}async acquireCacheLock(t,n){let o=await this.sendRequest(`/${be}/result-cache/lock`,{method:"POST",body:t,signal:n,retries:3,requestTimeoutMs:3e4});return bK.parse(o)}async releaseCacheLock(t){await this.sendRequest(`/${be}/result-cache/lock`,{method:"DELETE",body:{key:t},retries:3,requestTimeoutMs:5e3});}async deleteCacheResult(t){await this.sendRequest(`/${be}/result-cache/entry`,{method:"DELETE",body:t,retries:3,requestTimeoutMs:5e3});}async setCacheResult(t){await this.sendRequest(`/${be}/result-cache/entry`,{method:"PATCH",body:t,retries:3,requestTimeoutMs:5e3});}async getCacheResult(t){try{return await this.sendRequest(`/${be}/result-cache/entry`,{method:"POST",body:t,retries:3,requestTimeoutMs:5e3})}catch(n){if(n instanceof Error&&n.message.includes("404"))return null;throw n}}async queueSuiteRuns(t){let n=await this.sendRequest(`/${be}/suites/queue`,{method:"POST",body:t,retries:3,requestTimeoutMs:5e3});return nK.parse(n)}async bulkGetRunGroupStatus(t){let n={runGroupIds:t},o=await this.sendRequest(`/${be}/run-groups/status`,{method:"POST",body:n,retries:3,requestTimeoutMs:5e3});return bV.array().parse(o)}async getRunGroupWithRuns(t){try{let n=await this.sendRequest(`/${be}/run-groups/${encodeURIComponent(t)}`,{method:"GET",retries:3,requestTimeoutMs:1e4});return TV.parse(n)}catch(n){if(n instanceof no&&n.status===404)return null;throw n}}async getRun(t){try{let n=await this.sendRequest(`/${be}/runs/${encodeURIComponent(t)}/metadata`,{method:"GET",retries:3,requestTimeoutMs:1e4});return ss.parse(n)}catch(n){if(n instanceof no&&n.status===404)return null;throw n}}async getRunsByCommit(t){let o=[];for(let r=1;;r++){let i=await this.listRuns({gitCommitSha:t,includeFailureDetails:true,limit:100,page:r});if(o.push(...i.runs.map(s=>({...s,test:null}))),i.runs.length<100||r>=i.pageCount)break}return o}async updateGithubPRHealRiskSummary(t,n){await this.sendRequest(`/${be}/run-groups/${encodeURIComponent(t)}/github-pr-heal-risk-summary`,{method:"PATCH",body:n,retries:3,requestTimeoutMs:1e4});}async uploadProposedSteps(t,n){try{await this.sendRequest(`/${be}/test-fragments/`,{method:"POST",body:t,retries:3,requestTimeoutMs:1e4});}catch(o){n.error({err:o},"Failed to upload proposed steps");}}async reportBillableEvents(t,n){try{await this.sendRequest(`/${be}/billing/events`,{method:"POST",body:n,retries:10,requestTimeoutMs:1e4});}catch(o){t.error({err:o},"Failed to report billable event");}}async fetchTestFragment(t){let n=await this.sendRequest(`/${be}/test-fragments/${t}`,{method:"GET",retries:3,requestTimeoutMs:1e4});return oK.parse(n)}async patchTestFragment(t,n){await this.sendRequest(`/${be}/test-fragments/${t}`,{method:"PATCH",body:n,retries:3,requestTimeoutMs:1e4});}async getPastTestResults(t,n){let o=await this.sendRequest(`/${be}/results/tests/${t}`,{method:"POST",body:n,retries:3,requestTimeoutMs:1e4});return rK.parse(o)}async listRuns(t){let n=await this.sendRequest(`/${be}/results/runs`,{method:"POST",body:t,retries:3,requestTimeoutMs:1e4});return iK.parse(n)}async generateTestResultsUploadUrl(){let t=await this.sendRequest(`/${be}/results/uploads`,{method:"POST",retries:3,requestTimeoutMs:1e4});return sK.parse(t)}async startProcessingResultsUpload(t,n){let o=await this.sendRequest(`/${be}/results/uploads/${t}/process`,{method:"POST",body:n,retries:3,requestTimeoutMs:1e4});return aK.parse(o)}async fetchIconKnowledgeBase(t){try{let n=await this.sendRequest(`/${be}/knowledge-base/icons`,{method:"GET",retries:3,requestTimeoutMs:5e3});return wK.parse(n)}catch(n){return t.error({err:n},"Failed to fetch icon knowledge base"),null}}async saveNewIcons(t,n){try{await this.sendRequest(`/${be}/knowledge-base/icons`,{method:"POST",body:t,retries:3,requestTimeoutMs:5e3});}catch(o){n.error({err:o},"Failed to save new icons to icon knowledge base");}}async retrieveKnowledgeBase({query:t,clientName:n,testId:o,types:r,agentSubtype:i,limit:s,mode:a,scoreMultiplier:l,retries:c,signal:d},u){try{let p=await this.sendRequest(`/${be}/knowledge-base/retrieve`,{method:"POST",body:{query:t,clientName:n,testId:o,types:r,agentSubtype:i,limit:s,mode:a,scoreMultiplier:l},retries:c??3,requestTimeoutMs:5e3,signal:d});return j$.parse(p)}catch(p){return u.warn({err:p},"Failed to retrieve from knowledge base"),null}}async createKnowledgeItem(t){let n=await this.sendRequest(`/${be}/knowledge-base/items`,{method:"POST",body:t,retries:2,requestTimeoutMs:15e3});return oM.parse(n)}async getMergeBaseCommitFromGithub(t,n,o,r){let i=new URLSearchParams;i.set("base",o),i.set("head",r);let s=await this.sendRequest(`/${be}/git/github/${t}/${n}/merge-base-commit?${i.toString()}`,{method:"GET",retries:3,requestTimeoutMs:1e4});return $b.parse(s)}async compareCommitsFromGithub({owner:t,repo:n,base:o,head:r}){let i=new URLSearchParams;i.set("base",o),i.set("head",r);let s=await this.sendRequest(`/${be}/git/github/${t}/${n}/compare?${i.toString()}`,{method:"GET",retries:3,requestTimeoutMs:5e3});return kW.parse(s)}async getGithubFileContent({owner:t,repo:n,path:o,ref:r}){let i=new URLSearchParams;i.set("path",o),i.set("ref",r);let s=await this.sendRequest(`/${be}/git/github/${t}/${n}/contents?${i.toString()}`,{method:"GET",retries:3,requestTimeoutMs:5e3});return DW.parse(s).content??void 0}async getGithubBranchMetadata(t,n,o){let r=new URLSearchParams;r.set("branch",o);let i=await this.sendRequest(`/${be}/git/github/${t}/${n}/branch-metadata?${r.toString()}`,{method:"GET",retries:3,requestTimeoutMs:1e4});return FW.parse(i)}async createGithubPullRequest(t,n,o){let r=await this.sendRequest(`/${be}/git/github/${t}/${n}/pull-requests`,{method:"POST",body:o,retries:3,requestTimeoutMs:6e4});return MW.parse(r)}async createGithubCommit(t,n,o){let r=await this.sendRequest(`/${be}/git/github/${t}/${n}/commits`,{method:"POST",body:o,retries:3,requestTimeoutMs:6e4});return NW.parse(r)}async getGithubPullRequestTemplate(t,n){try{let o=await this.sendRequest(`/${be}/git/github/${t}/${n}/pull-request-template`,{method:"GET",retries:3,requestTimeoutMs:1e4});return UW.parse(o).template}catch(o){if(o instanceof no&&o.status===404)return;throw o}}async getGithubPullRequestForBranch(t,n,o){let r=new URLSearchParams;r.set("branch",o);let i;try{i=await this.sendRequest(`/${be}/git/github/${t}/${n}/pull-requests?${r.toString()}`,{method:"GET",retries:3,requestTimeoutMs:1e4});}catch(s){if(s instanceof no&&s.status===404)return;throw s}return LW.parse(i)}async getCommitFromGithub(t,n,o){let r=await this.sendRequest(`/${be}/git/github/${t}/${n}/commits/${o}`,{method:"GET",retries:3,requestTimeoutMs:1e4});return $b.parse(r)}async getMergedBranchFromGithub(t,n,o,r){let i=encodeURIComponent(o),s=await this.sendRequest(`/${be}/git/github/${t}/${n}/${i}/${r}/merged-branch`,{method:"GET",retries:3,requestTimeoutMs:1e4});return NN.parse(s)}async getMergeBaseCommitFromGitlab(t,n,o){let r=new URLSearchParams;r.set("base",n),r.set("head",o);let i=encodeURIComponent(t),s=await this.sendRequest(`/${be}/git/gitlab/${i}/merge-base-commit?${r.toString()}`,{method:"GET",retries:3,requestTimeoutMs:5e3});return $b.parse(s)}async getGitlabMergeRequestForBranch(t,n){let o=new URLSearchParams;o.set("branch",n);let r=encodeURIComponent(t),i;try{i=await this.sendRequest(`/${be}/git/gitlab/${r}/merge-requests?${o.toString()}`,{method:"GET",retries:3,requestTimeoutMs:1e4});}catch(s){if(s instanceof no&&s.status===404)return;throw s}return BW.parse(i)}async getCommitFromGitlab(t,n){let o=encodeURIComponent(t),r=await this.sendRequest(`/${be}/git/gitlab/${o}/commits/${n}`,{method:"GET",retries:3,requestTimeoutMs:1e4});return $b.parse(r)}async getMergedBranchFromGitlab(t,n,o){let r=encodeURIComponent(n),i=encodeURIComponent(t),s=await this.sendRequest(`/${be}/git/gitlab/${i}/${r}/${o}/merged-branch`,{method:"GET",retries:3,requestTimeoutMs:1e4});return NN.parse(s)}async getAgentConfig(){let t=await this.sendRequest(`/${be}/web-agent/agent-config`,{method:"GET",retries:3,requestTimeoutMs:5e3});return z.record(z.string(),z.string()).parse(t)}async getOrgSettings(){try{let t=await this.sendRequest(`/${be}/org-settings`,{method:"GET",retries:3,requestTimeoutMs:5e3});return aV(t)}catch(t){if(t instanceof no&&t.status===404)return this.logger.warn({err:t},"Momentic server does not expose org settings; continuing with local project settings"),Cg.parse({});throw t}}async getQuarantinedTests(){let t=await this.sendRequest(`/${be}/quarantine`,{method:"GET"});return lK.parse(t)}async sendExploreSlackNotification(t){await this.sendRequest(`/${be}/explore/slack-notification`,{method:"POST",body:t,retries:2,requestTimeoutMs:1e4});}async recordExplorerSuggestedTests(t){await this.sendRequest(`/${be}/explore/suggested-tests`,{method:"POST",body:t,retries:2,requestTimeoutMs:1e4});}async quarantineTest(t,n,o){await this.sendRequest(`/${be}/quarantine`,{method:"POST",body:{testId:t.id,testName:t.name,reason:n,...o??{}},retries:3,requestTimeoutMs:1e4});}async unquarantineTest(t,n,o){await this.sendRequest(`/${be}/quarantine/${t.id}`,{method:"DELETE",body:{testName:t.name,reason:n,...o??{}},retries:3,requestTimeoutMs:1e4});}platformRoute(t){switch(t){case "ANDROID":return "android";case "IOS":return "ios"}}async createAndroidEmulator(t){let n=await this.sendRequest(`/${be}/limbar/android`,{method:"POST",retries:3,body:t,requestTimeoutMs:9e4,initialRetryDelayMs:5e3,maxRetryDelayMs:15e3});return dK.parse(n)}async extendEmulatorTtl(t,n){try{await this.sendRequest(`/${be}/limbar/${this.platformRoute(t)}/${n}/keepalive`,{method:"POST",retries:3,requestTimeoutMs:15e3});}catch{}}async generateAssetUploadUrl({channel:t,tag:n,md5:o,platform:r}){let i={channel:t,tag:n,md5:o},s=await this.sendRequest(`/${be}/limbar/${this.platformRoute(r)}/upload-url`,{method:"POST",retries:3,body:i,requestTimeoutMs:15e3,logResponse:true});return pK.parse(s)}async deleteAndroidEmulator(t){await this.sendRequest(`/${be}/limbar/android/${t}`,{method:"DELETE",retries:3,requestTimeoutMs:3e4});}async getMobileAssets(){let t=await this.sendRequest(`/${be}/limbar/assets`,{method:"GET",retries:3,requestTimeoutMs:1e4});return mK.parse(t)}async getLimbarAssetDownloadUrl(t,n,o){let r=await this.sendRequest(`/${be}/limbar/assets/${t}/${n}/${this.platformRoute(o)}/download-url`,{method:"GET",retries:2,requestTimeoutMs:3e4});return hK.parse(r)}async deleteAsset(t,n,o){await this.sendRequest(`/${be}/limbar/assets/${t}/${n}/${this.platformRoute(o)}`,{method:"DELETE",retries:3,requestTimeoutMs:1e4});}async createIosEmulator(t){let n=await this.sendRequest(`/${be}/limbar/ios`,{method:"POST",retries:3,body:t,requestTimeoutMs:9e4,initialRetryDelayMs:5e3,maxRetryDelayMs:15e3});return uK.parse(n)}async deleteIosEmulator(t){await this.sendRequest(`/${be}/limbar/ios/${t}`,{method:"DELETE",retries:3,requestTimeoutMs:3e4});}async generateMobileLogcatUploadUrl(t){let n=await this.sendRequest(`/${be}/logcat/mobile/upload`,{method:"POST",body:t,retries:3,requestTimeoutMs:1e4});return hW.parse(n)}async generateMcpSessionTraceUploadUrl(t){let n=await this.sendRequest(`/${be}/mcp/upload`,{method:"POST",body:t,retries:3,requestTimeoutMs:1e4});return ON.parse(n)}};async function Zm(e){let t=process.versions.node,n=parseInt(t.split(".")[0]);(isNaN(n)||n<18)&&(R.error(`Node.js version 20 or higher is required to run the CLI. Detected: ${process.versions.node}.`),process.exit(1)),R.debug(`Identified node version ${t}`);let o=await e.client.getAuthInfo();return R.debug("Got auth info from API"),o}var qd=class{apiClient;constructor(t){this.apiClient=t;}async reportBillableEvents(t,n){await this.apiClient.reportBillableEvents(t,n);}};var Kd=class extends Wi{generator;constructor(t,n){super(t),this.generator=n;}async runTemplateMatching(t,n={}){let o=await this.sendRequest(`/${be}/web-agent/template-matching`,{method:"POST",body:t,signal:n?.signal});return KG.parse(o)}async constructIframeRegex(t,n={}){return this.generator.getIframeRegex(t,{abortSignal:n.signal,loggerTags:n.loggerTags})}};var Kf=class{constructor(t,n){this.client=t;this.orgId=n;}getApiServerUrl(){return this.client.baseUrl}getAppServerUrl(){let t=this.getApiServerUrl();return Wg(t)}async acquireCacheLock(t,n){return this.client.acquireCacheLock(t,n)}async createOnDemandScreenshot(t,n,o){let{apiServerUrl:r}=await this.client.uploadOnDemandScreenshot({id:t,screenshot:n.toString("base64"),contentType:o});return {apiServerUrl:r,appServerUrl:`${this.getAppServerUrl()}/api/on-demand-screenshots/${t}`,universalHandle:{id:t,contentType:o}}}async fetchOnDemandScreenshot(t){return this.client.fetchOnDemandScreenshot(t.id)}async releaseCacheLock(t){return this.client.releaseCacheLock(t)}async deleteCacheResult(t){return this.client.deleteCacheResult(t)}async setCacheResult(t){return this.client.setCacheResult(t)}async getCacheResult(t){return this.client.getCacheResult(t)}fetchIconKnowledgeBase(t){return this.client.fetchIconKnowledgeBase(t)}saveNewIcons(t,n){return this.client.saveNewIcons(t,n)}};var Yd="v1",VNe=2e3,vZ="sms.lease() and sms.release() are only supported when running tests via the Momentic CLI.",Jd=class{httpClient;fakerInstance;supportsLease;type="API_CLIENT";sms={send:this.sendSms.bind(this),fetchLatest:this.fetchLatestSms.bind(this),lease:this.leasePhoneNumber.bind(this),release:this.releasePhoneNumber.bind(this)};email={send:this.sendEmail.bind(this),fetchLatest:this.fetchLatestEmail.bind(this),fetchAll:this.fetchAllEmails.bind(this),create:this.createEmail.bind(this)};activeLeases=new Map;constructor(t){this.httpClient=t.httpClient,this.supportsLease=t.supportsLease??true,t.fakerSeed&&(this.fakerInstance=new Faker({locale:en$1}),this.fakerInstance.seed(t.fakerSeed));}async sendSms(t){return this.httpClient.sendRequest(`/${Yd}/tools/sms/send`,{method:"POST",body:t}).then(()=>{}).catch(n=>{throw n instanceof no?new Error(n.rawError):new Error(`Failed to send sms: ${n.message}`)})}async fetchLatestSms(t){return this.httpClient.sendRequest(`/${Yd}/tools/sms/fetchLatest`,{method:"POST",body:t}).catch(n=>{throw n instanceof no?new Error(n.rawError):n})}async leasePhoneNumber(t){if(!this.supportsLease)throw new Error(vZ);let n=await this.httpClient.sendRequest(`/${Yd}/tools/sms/lease`,{method:"POST",body:t??{}}).catch(r=>{throw r instanceof no?new Error(r.rawError):new Error(`Failed to lease phone number: ${r.message}`)}),o=AW.parse(n);return this.activeLeases.set(o.phoneNumber,{leaseToken:o.leaseToken}),o}async releasePhoneNumber(t){if(!this.supportsLease)throw new Error(vZ);return this.activeLeases.delete(t.phoneNumber),this.httpClient.sendRequest(`/${Yd}/tools/sms/release`,{method:"POST",body:t}).then(()=>{}).catch(n=>{throw n instanceof no?new Error(n.rawError):new Error(`Failed to release phone number: ${n.message}`)})}async dispose(){let t=[...this.activeLeases.entries()];this.activeLeases.clear(),await Promise.allSettled(t.map(([n,{leaseToken:o}])=>Ie(this.httpClient.sendRequest(`/${Yd}/tools/sms/release`,{method:"POST",body:{phoneNumber:n,leaseToken:o}}),{milliseconds:VNe,fallback:()=>{}})));}async sendEmail(t){return this.httpClient.sendRequest(`/${Yd}/tools/email/send`,{method:"POST",body:t}).then(()=>{}).catch(n=>{throw n instanceof no?new Error(n.rawError):new Error(`Failed to send email: ${n.message}`)})}async fetchAllEmails(t){return this.httpClient.sendRequest(`/${Yd}/tools/email/fetchAll`,{method:"POST",body:t}).catch(n=>{throw n instanceof no?new Error(n.rawError):new Error(`Failed to fetch all emails: ${n.message}`)})}async fetchLatestEmail(t){return this.httpClient.sendRequest(`/${Yd}/tools/email/fetchLatest`,{method:"POST",body:t}).catch(n=>{throw n instanceof no?new Error(n.rawError):new Error(`Failed to fetch latest emails: ${n.message}`)})}async createEmail(){let t=await this.httpClient.sendRequest(`/${Yd}/tools/email/create`,{method:"POST",body:{}}).catch(n=>{throw n instanceof no?new Error(n.rawError):new Error(`Failed to create email inbox: ${n.message}`)});return EW.parse(t)}};function RZ(e,t,n){return fetch(e,{method:"PUT",body:n,headers:{"Content-Type":t}})}var Kw=class{constructor(t){this.client=t;}async uploadResultsArchive(t){let{runGroupId:n,archive:o,persist:r}=t,{uploadUrl:i,id:s}=await this.client.generateTestResultsUploadUrl(),a=await RZ(i,"application/zip",o);if(!a.ok)throw new Error(`Failed to upload test results: ${await a.text()}`);let{runGroupId:l}=await this.client.startProcessingResultsUpload(s,{runGroupId:n,persist:r});return l}};function Xd({logger:e,orgId:t,client:n,gitMetadata:o,regenerateCache:r,alwaysSaveCache:i,noCache:s,isolateCachesByEnvironment:a=false,bustOldestCachePercentage:l}){return s?new Iv:new sF(e,t,n,o,{regenerateCache:r,alwaysSaveCache:i,bustOldestCachePercentage:l,isolateCachesByEnvironment:a})}var sF=class{constructor(t,n,o,r,i){this.orgId=n;this.client=o;let{regenerateCache:s,alwaysSaveCache:a,bustOldestCachePercentage:l,isolateCachesByEnvironment:c}=i,{gitBranchName:d,gitProtectedBranches:u}=r;t.info({options:i,gitBranchName:d,gitProtectedBranches:u},"Cache storage initialization options"),this.cacheHeaders=wv(r),this.isolateCachesByEnvironment=c,this.readCaches=!s;let p=d&&u.includes(d);a||!p?this.writeCaches=true:this.writeCaches=false,p||(this.bustOldestCachePercentage=l);}cacheHeaders;readCaches;writeCaches;isolateCachesByEnvironment;bustOldestCachePercentage;async saveStepCacheEntries({entries:t,logger:n}){if(!this.writeCaches){n.debug("Skipping cache storage because branch is protected");return}try{await this.client.updateStepCaches({entries:FN(t,this.isolateCachesByEnvironment)},this.cacheHeaders);}catch(o){n.error({err:o},"Failed to save step cache entries");}}async saveSnapshotCacheEntries({entries:t,logger:n}){if(t.length!==0){if(!this.writeCaches){n.debug("Skipping snapshot cache storage because branch is protected");return}try{await this.client.updateSnapshotCaches({entries:FN(t,this.isolateCachesByEnvironment)},this.cacheHeaders);}catch(o){n.error({err:o},"Failed to save snapshot cache entries");}}}async deleteStepCacheEntry({logger:t,testId:n,key:o,environment:r}){try{await this.client.deleteStepCacheEntry({testId:n,key:o,environment:this.isolateCachesByEnvironment?r:void 0},this.cacheHeaders);}catch(i){t.error({err:i},"Failed to delete step cache entry");}}async resolveStepCacheEntries(t){if(!this.readCaches){t.logger.debug("Skipping cache resolution because of regenerate flag");return}let n=t.useSnapshotIdentityCache?await this.tryRestoreStepIdsFromSnapshot(t):void 0,{steps:o,beforeSteps:r,afterSteps:i}=t.stepLists,s=await this.client.getStepCacheForTest({testId:t.testId,environment:this.isolateCachesByEnvironment?t.environment:void 0},this.cacheHeaders);if(this.bustOldestCachePercentage!==void 0){let u=Object.entries(s).map(([h,g])=>({key:h,time:g.value.cache?.updatedAt?.getTime()??0}));u.sort((h,g)=>h.time-g.time);let p=u.length,m=Math.max(1,Math.floor(p*this.bustOldestCachePercentage/100));u.slice(0,m).forEach(({key:h})=>{delete s[h];}),t.logger.info({nCachesToBust:m,bustOldestCachePercentage:this.bustOldestCachePercentage,totalCaches:p},"Busted oldest caches");}let a={totalSteps:0,cacheKeysHit:[],cacheKeysMissed:[],uniqueKeysHit:[],cacheMissSamples:[]};for(let u of [o,r,i]){if(!u)continue;let p=ep({steps:u,stepCacheEntries:s,logger:t.logger});a.totalSteps+=p.totalSteps,a.cacheKeysHit.push(...p.cacheKeysHit),a.cacheKeysMissed.push(...p.cacheKeysMissed),a.uniqueKeysHit.push(...p.uniqueKeysHit),a.cacheMissSamples.push(...p.cacheMissSamples);}n&&WNe({cacheResolutionStats:a,logger:t.logger,restoredIdentity:n,schemaVersion:t.schemaVersion,testId:t.testId});let l=["platform:web","source:local",`fileFormat:${t.useSnapshotIdentityCache?"v2":"v1"}`,`snapshotIdentityCache:${t.useSnapshotIdentityCache}`,`orgId:${this.orgId}`,"cliVersion:3.12.1"];if(Tt.increment("step_cache_resolution",a.cacheKeysHit.length,[...l,"outcome:hit"]),Tt.increment("step_cache_resolution",a.cacheKeysMissed.length,[...l,"outcome:miss"]),Tt.increment("step_cache_resolution",a.totalSteps,[...l,"outcome:total"]),!this.writeCaches){t.logger.debug("Skipping cache last used at update because branch is protected");return}let{cachesToSave:c,snapshotCachesToSave:d}=await Yn({stepLists:t.stepLists,useSnapshotIdentityCache:t.useSnapshotIdentityCache,cacheCreationParams:{environment:t.environment,testId:t.testId,orgId:this.orgId}});t.useSnapshotIdentityCache&&this.saveSnapshotCacheEntries({entries:d,logger:t.logger}),this.saveStepCacheEntries({entries:c,logger:t.logger});}async tryRestoreStepIdsFromSnapshot(t){try{return await this.restoreStepIdsFromSnapshot(t)}catch(n){t.logger.warn({err:n,testId:t.testId},"Failed to restore step ids from snapshot cache; proceeding without identity cache"),Tt.increment("step_cache_resolution",1,["platform:web","source:local","fileFormat:v2","snapshotIdentityCache:true",`orgId:${this.orgId}`,"cliVersion:3.12.1","outcome:identity_restore_error"]);return}}async restoreStepIdsFromSnapshot(t){let{logger:n,testId:o}=t,r=await this.client.getSnapshotCacheForTest({testId:o,environment:this.isolateCachesByEnvironment?t.environment:void 0},this.cacheHeaders);for(let a of r){if(!a.schema_version)continue;let l=oN(a.schema_version),c=oN(at);if(l&&c&&l.compare(c)>0){n.warn(`Snapshot cache for test ${o} was written at schema version ${a.schema_version}, which is newer than this CLI's latest (${at}). Please update your momentic package version. Skipping identity restoration from snapshot cache.`);return}}let i=XR({entries:r,orgId:this.orgId,testId:o,logger:n}),s=JR({currentStepLists:t.stepLists,previousSnapshot:i.testSnapshot,previousModuleSnapshots:i.moduleSnapshots,generateUuid:randomUUID});return t.stepLists.steps.splice(0,t.stepLists.steps.length,...s.stepLists.steps),t.stepLists.beforeSteps=s.stepLists.beforeSteps,t.stepLists.afterSteps=s.stepLists.afterSteps,n.debug({snapshotEntries:r.length,testSnapshotHit:!!i.testSnapshot,moduleSnapshots:Array.from(i.moduleSnapshots.keys()),mintedSteps:s.stats.mintedSteps,stats:s.stats,moduleRestoreResults:s.moduleRestoreResults.map(({moduleId:a,snapshotHit:l,stats:c})=>({moduleId:a,snapshotHit:l,stats:c}))},"Restored step ids from snapshot cache"),s}};function WNe({cacheResolutionStats:e,logger:t,restoredIdentity:n,schemaVersion:o,testId:r}){let i=e.cacheKeysHit.length,s=e.cacheKeysMissed.length,a=i+s,l=a>0?Math.round(s/a*1e3)/10:0,c=n.stats.matchedSteps+n.stats.mintedSteps,d=c>0?Math.round(n.stats.mintedSteps/c*1e3)/10:0,u=n.moduleRestoreResults.filter(({snapshotHit:g,stats:f})=>!g||f.mintedSteps>0||f.bustedConditionals>0).slice(0,10).map(({moduleId:g,snapshotHit:f,stats:y})=>({moduleId:g,snapshotHit:f,stats:y})),p=n.stats.mintedSteps>=5&&d>=25,m=p||n.stats.bustedConditionals>0||u.some(({stats:g})=>g.mintedSteps>=5||g.bustedConditionals>0),h={cacheHits:i,cacheMissRate:l,cacheMisses:s,cacheMissSamples:e.cacheMissSamples.slice(0,10),hasHighMintRate:p,identityMintRate:d,moduleIdentityIssueCount:u.length,moduleIdentityIssues:u,schemaVersion:o,snapshotIdentityCache:true,stepIdentityStats:n.stats,testId:r,totalCacheableSteps:e.totalSteps};if(!m){t.debug(h,"V2 cache resolution completed");return}t.warn(h,"V2 cache resolution degraded");}function qNe(e){let t=new wZ,n=Jn__default.join(e,ct),o=Ta.parse(JSON.parse(br__default.readFileSync(n,"utf-8")));t.addLocalFile(n);for(let r of br__default.readdirSync(Jn__default.join(e,to))){if(!r.endsWith(".zip"))continue;let i=r.replace(/\.zip$/,""),s=new wZ(Jn__default.join(e,to,r));for(let a of s.getEntries())a.isDirectory||t.addFile(Jn__default.join(to,i,a.entryName),a.getData());}return {runGroupId:o.id,buffer:t.toBuffer()}}async function YT(e){let{client:t,resultsPath:n,persist:o}=e;if(!br__default.existsSync(n))return {success:false,error:"results path does not exist"};let r=new Kw(t);try{let{runGroupId:i,buffer:s}=qNe(n),a=await r.uploadResultsArchive({runGroupId:i,archive:s,persist:o});return {success:!0,runGroupUrl:`${t.getAppUrl()}/run-groups/${a}`}}catch(i){return {success:false,error:Q(i)}}}var JT=class e{constructor(t,n=true){this.filePath=t;n&&br__default.rmSync(this.filePath,{recursive:true,force:true}),br__default.mkdirSync(this.filePath,{recursive:true});}children=[];streams=[];close(){for(let t of this.children)t.close();for(let t of this.streams)t.end();}cd(t){let n=new e(Jn__default.join(this.filePath,t));return this.children.push(n),n}cwd(){return this.filePath}mkdir(t){br__default.mkdirSync(Jn__default.join(this.filePath,t),{recursive:true});}readFile(t){let n=Jn__default.join(this.filePath,t);if(br__default.existsSync(n))return br__default.readFileSync(n)}storeFile(t){let{name:n,contents:o}=t,r=Jn__default.join(this.filePath,n);try{br__default.mkdirSync(Jn__default.dirname(r),{recursive:!0}),br__default.writeFileSync(r,o);}catch{}}createFileStream(t){let n=Jn__default.join(this.filePath,t),o=br__default.createWriteStream(n);return this.streams.push(o),o}createRunArchive(t,n){let o=new lF(Jn__default.join(this.filePath,to),t,n);return this.children.push(o),o}},lF=class{children=[];tempPath;finalPath;logger;closed=false;constructor(t,n,o){this.tempPath=Jn__default.join(t,`temp-storage-${n}`),this.finalPath=Jn__default.join(t,`${n}.zip`),this.logger=o,br__default.rmSync(this.tempPath,{recursive:true,force:true}),br__default.rmSync(this.finalPath,{recursive:true,force:true}),br__default.mkdirSync(this.tempPath,{recursive:true});}readFile(t){let n=Jn__default.join(this.tempPath,t);if(br__default.existsSync(n))return br__default.readFileSync(n)}mkdir(t){br__default.mkdirSync(Jn__default.join(this.tempPath,t),{recursive:true});}cd(t){let n=new JT(Jn__default.join(this.tempPath,t));return this.children.push(n),n}cwd(){return this.tempPath}storeFile(t){if(this.closed)return;let{name:n,contents:o}=t,r=Jn__default.join(this.tempPath,n);br__default.mkdirSync(Jn__default.dirname(r),{recursive:true}),br__default.writeFileSync(r,o);}close(){if(!this.closed){this.closed=true;for(let t of this.children)t.close();try{let t=new wZ;t.addLocalFolder(this.tempPath,void 0,o=>o!==".DS_Store");let n=t.toBuffer();br__default.writeFileSync(this.finalPath,n),br__default.rmSync(this.tempPath,{recursive:!0,force:!0});}catch(t){this.logger.warn({err:t,finalPath:this.finalPath,tempPath:this.tempPath},"Failed to archive run artifacts; leaving raw files on disk");}}}};function PZ(e){try{return br__default.existsSync(e)?JSON.parse(br__default.readFileSync(e,"utf-8")):void 0}catch{return}}function IZ(e){return br__default.existsSync(e)?br__default.readFileSync(e,"utf-8").split(`
|
|
292
292
|
`).map(n=>n.trim()).filter(n=>n.length>0):[]}function XNe(e,t){let n=e.attemptIdToAttemptNumber.get(t);if(n)return Jn__default.join(e.inflatedPath,"attempts",n);let o=Jn__default.join(e.inflatedPath,"attempts");if(!br__default.existsSync(o))return;let r=br__default.readdirSync(o,{withFileTypes:true}).filter(i=>i.isDirectory()).map(i=>i.name);for(let i of r){let s=Jn__default.join(o,i,ct),a=PZ(s);if(typeof a!="object"||a===null)continue;let l=a.id;if(typeof l=="string"&&l===t)return e.attemptIdToAttemptNumber.set(t,i),Jn__default.join(o,i)}}function xZ(e,t,n){let o=Jn__default.join(e,"attempts");if(!br__default.existsSync(o))return;let r=br__default.readdirSync(o,{withFileTypes:true}).filter(i=>i.isDirectory()).map(i=>i.name);for(let i of r){let s=Jn__default.join(o,i,"assets",`${t}.${n}`);if(br__default.existsSync(s))return s}}var Jw=class{constructor(t,n,o){this.outputDir=t;this.runId=n;this.runAttemptId=o;this.runsDir=Jn__default.join(t,to),this.zipPath=Jn__default.join(this.runsDir,`${n}.zip`);}inflatedByRunId=new Map;zipPath;runsDir;ensureInflatedRun(t){let n=this.inflatedByRunId.get(t);if(n)return n;if(t!==this.runId||!br__default.existsSync(this.zipPath))return;let o=Jn__default.join(this.runsDir,`temp-unzipped-${t}-${randomUUID()}`);br__default.mkdirSync(o,{recursive:true}),new wZ(this.zipPath).extractAllTo(o,true);let i={runId:t,zipPath:this.zipPath,inflatedPath:o,attemptIdToAttemptNumber:new Map};return this.inflatedByRunId.set(t,i),i}close(){for(let t of this.inflatedByRunId.values())br__default.rmSync(t.inflatedPath,{recursive:true,force:true});this.inflatedByRunId.clear();}getAttemptDir(){let t=this.ensureInflatedRun(this.runId);if(t)return XNe(t,this.runAttemptId)}listVideoAssetPaths(){let t=this.getAttemptDir();if(!t)return [];let n=Jn__default.join(t,"assets");return br__default.existsSync(n)?br__default.readdirSync(n,{withFileTypes:true}).filter(r=>r.isFile()).map(r=>Jn__default.join(n,r.name)).filter(r=>{let i=Jn__default.extname(r).toLowerCase();return i===".webm"||i===".mp4"}):[]}readAttemptAssetText(t,n){let o=this.getAttemptDir();if(!o)return;let r=Jn__default.join(o,"assets",`${t}.${n}`);if(br__default.existsSync(r))try{return br__default.readFileSync(r,"utf-8")}catch{return}}async getConsoleLogsForRunAttempt(t,n,o){if(n!==this.runId||o!==this.runAttemptId)return;let r=this.getAttemptDir();if(!r)return;let i=PZ(Jn__default.join(r,"console.json")),s=rN.safeParse(i);return s.success?s.data:void 0}async getNetworkLogsForRunAttempt(t,n,o){if(n!==this.runId||o!==this.runAttemptId)return;let r=this.getAttemptDir();if(!r)return;let i=Jn__default.join(r,"assets","har-pages.log"),s=Jn__default.join(r,"assets","har-entries.log"),a={};for(let d of IZ(i)){let u=Pb.safeParse(_Z(d));u.success&&(a[u.data.id]=u.data);}let l={},c=IZ(s);for(let d=0;d<c.length;d++){let u=c[d],p=Ob.safeParse(_Z(u));if(!p.success)continue;let m=`${p.data.startedDateTime}-${d}`;l[m]=p.data;}if(Object.keys(l).length!==0)return iN(a,l)}async getHtmlSnapshot(t,n){let o=this.readAttemptAssetText(n,"html");if(o)return o;let r=this.ensureInflatedRun(this.runId);if(!r)return;let i=xZ(r.inflatedPath,n,"html");if(i)try{return br__default.readFileSync(i,"utf-8")}catch{return}}async getA11yTreeSnapshot(t,n){let o=this.readAttemptAssetText(n,"xml");if(o)return o;let r=this.ensureInflatedRun(this.runId);if(!r)return;let i=xZ(r.inflatedPath,n,"xml");if(i)try{return br__default.readFileSync(i,"utf-8")}catch{return}}async getScreenshot(t,n){if(!this.ensureInflatedRun(this.runId))return;let r=this.getAttemptDir();if(r)for(let i of ["png","jpeg"])try{return br__default.readFileSync(Jn__default.join(r,"assets",`${n}.${i}`))}catch{continue}}};function _Z(e){try{return JSON.parse(e)}catch{return}}function OZ(e,t){let n=QNe(e);return n==="EACCES"||n==="EPERM"?{status:403,body:{error:`Permission denied: ${t}`}}:n==="ENOENT"?{status:404,body:{error:`Not found: ${t}`}}:n==="ENOTDIR"?{status:400,body:{error:`Not a directory: ${t}`}}:n==="EISDIR"?{status:400,body:{error:`Is a directory: ${t}`}}:n==="EEXIST"?{status:409,body:{error:`Already exists: ${t}`}}:n==="ENOTEMPTY"?{status:409,body:{error:`Directory is not empty: ${t}`}}:{status:500,body:{error:`${t}: ${Q(e)}`}}}function QNe(e){if(e&&typeof e=="object"&&"code"in e&&typeof e.code=="string")return e.code}function Yf({test:e,envNameOverride:t,urlOverride:n,resolveEnv:o}){let r=t??ZNe(e),i,s={};if(r){try{i=o(r);}catch(l){let c=`Failed to resolve environment ${r} for test ${e.name}: ${Q(l)}`;throw l instanceof De?new De(c,{cause:l}):new Error(c,{cause:l})}s=i.variables;}let a=e.baseUrl;if(n)a=n;else if(!a){let l=s[Qo];typeof l=="string"&&(a=l);}if(!a)throw new Iu(`Cannot run test with no base URL and no ${Qo} variable defined in its environment`);return {envName:r,resolvedEnv:i,environmentVariables:s,baseUrl:a}}function ZNe(e){for(let t of e.envs??[])if(t.default)return t.name}async function XT(e,t,n,o,r=pt){let i=o??await Ve(e,false,r),s=i[n],a=eLe(s,t);if(t.id){if(a.length===0)throw new mt(`No ${n} found with id '${t.id}' in project '${e.rootDir}'.`);return Xw(a,i)}if(t.name){if(a.length===0)throw new mt(`No ${n} found with exact name '${t.name}' in project '${e.rootDir}'.`);if(a.length>1){let l=a.map(c=>({id:c.id,path:c.relativePath}));throw new mt([`Multiple ${n} found with exact name '${t.name}'. Please disambiguate by id or path.`,JSON.stringify(l,null,2)].join(`
|
|
293
293
|
`))}return Xw(a,i)}if(t.path){let l=t.path;if(a.length===0)throw new mt(`No ${n} found at path '${l}'. Provide an absolute path or a path relative to '${e.rootDir}'.`);if(a.length>1){let c=a.filter(u=>u.fullFilePath===l||u.relativePath===l||u.fullFilePath.endsWith(`/${l}`)||u.relativePath.endsWith(`/${l}`));if(c.length===1)return Xw(c,i);let d=a.map(u=>({id:u.id,path:u.fullFilePath}));throw new mt([`Multiple ${n} matched the provided path '${l}'. Please pass the absolute path.`,JSON.stringify(d,null,2)].join(`
|
|
294
294
|
`))}return Xw(a,i)}throw new Error("No valid selector field provided. Exactly one of id, name, or path must be specified.")}function Xw(e,t){let n=e[0];if(!n)throw e.length>0?new Error("No entity found: matches array is not empty. Unknown error."):new Error("No entity found.");return {entity:n,momenticFiles:t}}function eLe(e,t){if(t.id){let n=Object.values(e).find(o=>o.id===t.id);return n?[n]:[]}if(t.name)return Object.values(e).filter(n=>n.name===t.name);if(t.path){let n=t.path;return Object.values(e).filter(o=>o.fullFilePath.includes(n)||o.relativePath.includes(n))}throw new Error("No valid selector field provided: expected exactly one of 'id', 'name', or 'path'.")}function MZ({momenticFiles:e,logger:t}){let n=new Set,o=new Set,r=Object.values(e.tests).map(i=>i.fullFilePath);for(;r.length>0;){let i=r.shift();if(!i||o.has(i))continue;o.add(i);let s=tLe({fullFilePath:i,momenticFiles:e,logger:t});for(let a of s){let l=e.modules[a];!l||n.has(a)||(n.add(a),r.push(l.fullFilePath));}}return Object.values(e.modules).filter(i=>!n.has(i.id)).sort((i,s)=>i.relativePath.localeCompare(s.relativePath))}function tLe({fullFilePath:e,momenticFiles:t,logger:n}){try{return Aw(e,t)}catch(o){return n.warn({err:o,fullFilePath:e},"Failed to analyze a file while searching for unused modules."),new Set}}async function NZ({cwd:e,projectName:t}){let n=Jn__default.join(e,Oc);if(br__default.existsSync(n))throw new Error(`A ${Oc} file already exists at ${n}. Please rename or remove it to initialize a new project.`);let o=await CQ(e)??"main",r={name:t,include:Mf,gitMainBranch:o,fileFormat:"v2",browser:{disableSecondaryCacheResolution:true},ai:{useMemory:true,failureRecovery:true,agentConfig:{...Rg}}};return jd(r,n),{configPath:n}}var rLe="npx skills@latest add momentic-ai/skills",iLe="https://momentic.ai/docs/integrations/mcp-server",sLe={web:["https://momentic.ai/docs/quickstart/web"],mobile:["https://momentic.ai/docs/quickstart/ios","https://momentic.ai/docs/quickstart/android"]};function LZ({platform:e}){let t="npx momentic app",n=sLe[e].map(r=>al.underline.cyan(r)).join(al.dim(" \xB7 ")),o=(r,i)=>` ${al.dim(r.padEnd(14))}${i}`;R.log(""),R.log(al.bold("Next steps")),R.log(o("Editor skills",al.cyan(rLe))),R.log(o("Coding agent",`${al.dim("Momentic MCP \u2192")} ${al.underline.cyan(iLe)}`)),R.log(o("Local editor",al.cyan(t))),R.log(o("Docs",n));}var kZ=["cursor","claude-code","codex","opencode","copilot"],lLe={cursor:Jn__default.join(".cursor","skills"),"claude-code":Jn__default.join(".claude","skills"),codex:Jn__default.join(".agents","skills"),opencode:Jn__default.join(".opencode","skills"),copilot:Jn__default.join(".github","skills")};function DZ({editor:e,skillsDir:t,cwd:n=process.cwd()}){br__default.existsSync(t)||(R.error(`Could not find skills directory at ${t}. Is the CLI package installed correctly?`),process.exit(1));let o=br__default.readdirSync(t).filter(s=>s.endsWith(".md"));o.length===0&&(R.error(`No skill markdown files found in ${t}. Is the CLI package installed correctly?`),process.exit(1));let r=cLe({cwd:n}),i=Jn__default.join(r,lLe[e]);for(let s of o){let a=Jn__default.basename(s,".md"),l=Jn__default.join(i,a),c=br__default.readFileSync(Jn__default.join(t,s),"utf8");br__default.mkdirSync(l,{recursive:true}),br__default.writeFileSync(Jn__default.join(l,"SKILL.md"),c),R.success(`Installed SKILL.md at ${Jn__default.join(l,"SKILL.md")}.`);}}function cLe({cwd:e}){try{return execSync("git rev-parse --show-toplevel",{cwd:e,encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim()||e}catch{return e}}var BZ=Jn__default.join(wd.homedir(),".momentic"),Qd=Jn__default.join(BZ,"auth.json"),uLe=new Set(["EPERM","EACCES","EROFS"]),pLe=z.object({workos:z.object({accessToken:z.string(),refreshToken:z.string(),expiresAt:z.number()}),user:z.object({id:z.string(),email:z.string().optional()}),organizationId:z.string(),apiKey:z.string(),apiKeyName:z.string(),serverUrl:z.string(),createdAt:z.string(),selfServe:z.boolean().optional()});function UZ(){if(!br__default.existsSync(Qd))return null;try{let e=br__default.readFileSync(Qd,"utf-8"),t=pLe.safeParse(JSON.parse(e));return t.success?t.data:null}catch{return null}}function HZ(e){try{br__default.mkdirSync(BZ,{recursive:!0,mode:448}),br__default.writeFileSync(Qd,JSON.stringify(e,null,2),{mode:384});}catch(t){throw qJ(t)&&uLe.has(t.code)?new De(`Couldn't save your Momentic credentials to ${Qd} (${t.code}). Make sure that file and its parent directory are writable and owned by you \u2014 for example, they may have been created by a previous \`sudo\` run. Fix the permissions and try again.`,{cause:t}):t}}function GZ(){return br__default.existsSync(Qd)?(br__default.unlinkSync(Qd),true):false}function Qw(){return UZ()?.apiKey||void 0}function Zw(){return UZ()?.serverUrl||void 0}var cF="client_01HM3P9MPY20QDSXAECT6PY1JF",jZ="https://api.workos.com";async function $Z({clientId:e}){let t=await fetch(`${jZ}/user_management/authorize/device`,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:e}).toString()});if(!t.ok)throw new Error(`WorkOS device authorization failed (${t.status}): ${await t.text()}`);return await t.json()}async function VZ({clientId:e,deviceCode:t,interval:n,expiresIn:o,onProgress:r}){let i=Date.now()+o*1e3,s=Math.max(n,1);for(;Date.now()<i;){await mLe(s*1e3);let a=await fetch(`${jZ}/user_management/authenticate`,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:device_code",device_code:t,client_id:e}).toString()});if(a.ok)return await a.json();let l=await a.json().catch(()=>({})),c=l.error??"";if(c==="authorization_pending"){r?.("polling");continue}if(c==="slow_down"){s+=5,r?.("slow_down");continue}throw c==="expired_token"?new De("The login request expired. Please run `login` again."):c==="access_denied"?new De("Login was denied."):new Error(`WorkOS device token exchange failed: ${l.error_description??c??a.statusText}`)}throw new De("Timed out waiting for sign-in. Please run `login` again.")}function mLe(e){return new Promise(t=>setTimeout(t,e))}async function dF({serverUrl:e,body:t}){let n=await fetch(`${e}/v1/auth/exchange-workos-token`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(t)}),o=await n.text(),r;try{r=o?JSON.parse(o):void 0;}catch{}if(n.status===200){let s=eK.safeParse(r);if(s.success)return {kind:"ok",data:s.data}}if(n.status===409){let s=tK.safeParse(r);if(s.success)return {kind:"multi_org",data:s.data}}let i=hLe(r)??o??n.statusText;return {kind:"error",status:n.status,message:i}}function hLe(e){if(e&&typeof e=="object"&&"error"in e){let{error:t}=e;if(typeof t=="string")return t}}async function WZ({serverUrl:e,ui:t,openBrowser:n=true,clientName:o=wd.hostname(),coldRun:r=false}){let i=await $Z({clientId:cF}),s=i.verification_uri_complete??i.verification_uri,a=r?"Create account or sign in":"Sign in",l=r?"Waiting for you to create your account or sign in...":"Waiting for you to sign in...",c=r?"Waiting for you to create your account or sign in (slowing polling)...":"Waiting for you to sign in (slowing polling)...";if(t.note(`${al.bold(i.user_code)}
|
|
@@ -312,7 +312,7 @@ ${l}`:a}function pF(e,t,n={}){if(e.length===0)return "";let o=nr(t),r=Math.max(n
|
|
|
312
312
|
${r}
|
|
313
313
|
`);}catch(n){e.logger.warn({err:n},"Failed to check CLI version against npm");}}async function VLe(e,t,n){if(!a6){a6=true;try{let o=await e.getCliAnnouncements();for(let{announcement:r,level:i}of o)R.log(`
|
|
314
314
|
${n6({announcement:r,level:i},n)}
|
|
315
|
-
`);}catch(o){t.warn({err:o},"Failed to fetch CLI announcements");}}}var mF="^22.12.0 || >=24.0.0";function u6(){(nu.satisfies(process.version,mF)||(R.error(`Momentic requires Node.js ${mF}, but you are running ${process.version}. Upgrade Node.js (https://nodejs.org/en/download) and try again.`),process.exit(1)));}var eA=25;function p6(e){return {v2ProjectConfig:{...e.config,fileFormat:"v2"},migratedFilePaths:[]}}function m6(e){return {legacyProjectConfig:{...e.config,fileFormat:"v1"},migratedFilePaths:[]}}function hF({project:e,newProjectConfig:t,fileFormatLabel:n,migratedFilePaths:o}){e.config=t,jd(e.config,e.configFilePath),o.push(e.configFilePath),R.info(`Updated ${e.configFilePath} to use ${n} file format`),t.hooks?.postSave&&(R.info(`Running post-save hook for ${o.length} migrated files`),hw([...new Set(o)],t));}async function tA(e,t,n){for(let o=0;o<e.length;o+=t)await Promise.all(e.slice(o,o+t).map(n));}function gF(e){return e.upgradedAgents.length>0||e.enabledUseMemory||e.enabledFailureRecovery}function WLe(e){let t=e.ai??={},n=t.agentConfig??={},o=[];for(let[s,a]of Object.entries(Rg)){let l=n[s];l!==a&&(l?.startsWith(`${a}.`)||(n[s]=a,o.push({type:s,newValue:a})));}let r=t.useMemory!==true;r&&(t.useMemory=true);let i=t.failureRecovery!==true;return i&&(t.failureRecovery=true),{upgradedAgents:o,enabledUseMemory:r,enabledFailureRecovery:i}}async function h6({project:e,dryRun:t,migrate:n}){let o=e.config.fileFormat!=="v2",r=WLe(e.config);return o?{fileFormatChanged:o,aiSettings:r,migration:await n()}:(!t&&gF(r)&&jd(e.config,e.configFilePath),{fileFormatChanged:false,aiSettings:r,migration:fF()})}function fF(){return {migratedTestPaths:[],migratedModulePaths:[],alreadyV2TestCount:0,alreadyV2ModuleCount:0}}function yF({summary:e,fileFormatChanged:t,aiSettings:n,dryRun:o,testNoun:r="test",moduleNoun:i="module"}){let s=o?"Would migrate":"Migrated",a=uT(r,e.migratedTestPaths.length),l=uT(i,e.migratedModulePaths.length);R.info(`${s} ${e.migratedTestPaths.length} ${a} and ${e.migratedModulePaths.length} ${l} to v2.`),(e.alreadyV2TestCount>0||e.alreadyV2ModuleCount>0)&&R.dimmed(` Skipped ${e.alreadyV2TestCount} already-v2 ${uT(r,e.alreadyV2TestCount)} and ${e.alreadyV2ModuleCount} already-v2 ${uT(i,e.alreadyV2ModuleCount)}.`),t&&R.dimmed(" + fileFormat: v2");for(let c of n.upgradedAgents)R.dimmed(` + ai.agentConfig.${c.type}: ${c.newValue}`);n.enabledUseMemory&&R.dimmed(" + ai.useMemory: true"),n.enabledFailureRecovery&&R.dimmed(" + ai.failureRecovery: true");}var SF=false,g6;try{let e=await import('@sentry/node'),t="production";e.init({dsn:"https://89e980855f7b9c6e56fc6c7e7143888b@o4506426201800704.ingest.us.sentry.io/4508343221354497",environment:t,enabled:t!=="development",dist:"production",release:"cli@3.12.0",tracesSampleRate:0,skipOpenTelemetrySetup:!0,sendDefaultPii:!0,beforeSend(n,o){return gX(o?.originalException)||lC(o?.originalException,De)||fX(o?.originalException)?null:n}}),mY(e.captureException),g6=n=>{if(!n){e.setUser(null);return}e.setUser({id:n.userId,organizationId:n.orgId,...n.email&&{email:n.email}});},SF=!0;}catch{}var f6=e=>g6?.(e);var KLe=new wR(30,60*1e3),uI="https://api.momentic.ai",ey,y6,ou=e=>{uI=e;},Jr=()=>uI,S6=()=>Wg(uI),yp=e=>{y6=e;},ru=()=>y6,rr=()=>ey,b6=()=>{if(!ey)throw new Error("Global API client has not been initialized.");return ey};var nA,aI,T6,A6,E6,lI,C6,v6=({authInfo:e,apiKey:t,apiClient:n})=>{ey=n,nA=e.orgId,aI=e.userId,T6=e.email,A6=e.name,E6=e.pylonEmailHash,lI=t,C6=e.selfServe;},ty=async({apiClient:e,apiKey:t,skipPrompts:n})=>{let o=await Zm({client:e});return v6({authInfo:o,apiKey:t,apiClient:e}),o},pI=async({apiKey:e,mode:t,runner:n})=>{if(ey&&nA&&lI)return nA;let o=new Ft({baseUrl:uI,apiKey:e,logger:R,mode:t,runner:n});ey=o;try{let r=await o.getAuthInfo();return v6({authInfo:r,apiKey:e,apiClient:o}),r.orgId}catch(r){throw new Error(`Error checking API key against server: ${r}`,{cause:r})}},oo=()=>{if(!nA)throw new Error("Your organization ID is invalid.");return nA},kc=()=>{if(!aI)throw new Error("Your user ID is invalid.");return aI},R6=()=>aI,ny=()=>T6,w6=()=>A6,I6=()=>E6,mI=()=>C6,Xs=()=>{if(!lI)throw new Error("Your API key is invalid.");return lI},cI,dI,iu=()=>{dI?.abort(),dI=void 0;},oy=(e,t)=>{cI=e,iu(),dI=new AbortController;let n=dI.signal,o=[e.configFilePath];e.config.environments?.forEach(r=>{if(!r.envFile)return;let i=Jn__default.resolve(e.rootDir,r.envFile);try{if(br__default.lstatSync(i).isSymbolicLink())return;br__default.existsSync(i)&&o.push(i);}catch(s){R.warn({err:s},`Failed to check if env file ${i} exists`);}});try{YLe({filesToWatch:o,revalidator:t,signal:n,project:e});}catch(r){R.error({err:r},"Failed to start config file watchers");}};async function ry({project:e,apiClient:t}){let n=o=>Ks({project:o,apiClient:t});oy(await n(e),async o=>n(await on({configFilePath:o})));}var st=()=>{if(!cI)throw new De("No Momentic project is currently loaded. Open or select a project before invoking this action.");return cI};function YLe({filesToWatch:e,revalidator:t,signal:n,project:o}){R.debug("Starting watch on the following files:"),e.forEach(r=>{R.debug(`- ${r}`);}),e.forEach(r=>{let i=async(a,l)=>{if(a.mtime.getTime()!==l.mtime.getTime()){KLe.increment("setLocalProject")&&R.warn(`A file change under the ${o.rootDir} directory has caused Momentic to reload its configuration more than 30 times in the last minute. Rapid changes to files may indicate your momentic.config.yaml 'include' glob is incorrect. Please ensure temporary, library, and auto-generated files are not included in Momentic's context.`);try{cI=await Promise.resolve(t(o.configFilePath));}catch(c){R.warn({err:c},`Failed to reload Momentic configuration after a change to ${r}; continuing with the previously loaded configuration`);}}};br__default.watchFile(r,{persistent:false},i);let s=()=>{br__default.unwatchFile(r,i),n.removeEventListener("abort",s);};n.addEventListener("abort",s);});}function St(e){return function(...t){let n=t[t.length-1],o=e(...t);Promise.resolve(o).catch(n);}}var XLe="3.12.0",nh=Jg({app:"desktop-server",hostname:hostname(),disableConsoleLogs:true}).child({cliVersion:XLe});(async()=>{try{let e=await _a(nh);e.gitBranchName&&nh.addBinding("branch",e.gitBranchName);}catch{}})();var x6=Router();x6.get("/",async(e,t)=>{let n=st(),o=rr();if(!o){t.status(500).json({message:"API client not initialized"});return}let r=await ui(nh,o,n),i=r?.gitProtectedBranches&&r?.gitBranchName&&r.gitProtectedBranches.includes(r.gitBranchName),{noCache:s,alwaysSaveCache:a}=ru(),l=!s&&(a||!i);t.status(200).json({saveCaches:l,checkedOutBranch:r?.gitBranchName});});var bF=x6;var eke=5e3,tke=[".js",".mjs",".cjs",".ts"];function TF(e={}){let t=Router();function n(){let u=st();return Jn__default.dirname(u.configFilePath)}function o(u){return Jn__default.join(n(),...u)}function r(u){let p=Jn__default.relative(n(),u);return p?p.split(Jn__default.sep):[]}function i(u,p){let m=br__default.statSync(u),h=r(u);return cN.parse({name:p,absolutePath:u,relativePath:h.join(Jn__default.sep),pathSegments:h,isDirectory:m.isDirectory(),size:m.size,createdAt:m.birthtime,modifiedAt:m.mtime,accessedAt:m.atime})}function s(u){let p=Jn__default.relative(n(),u);return p===""||!p.startsWith("..")&&!Jn__default.isAbsolute(p)}async function a(u){let p=st();return Bd(["*"],{cwd:u,ignore:p.config.exclude??[],maxDepth:1,nodir:false,signal:AbortSignal.timeout(eke)})}function l(u){let p=u.trimStart().replace(/^file:\/\//,"").replaceAll("\\","/"),m=p.lastIndexOf("/");return m===-1?{directoryText:"",filePrefix:p}:{directoryText:p.slice(0,m+1),filePrefix:p.slice(m+1)}}function c(u){return u.replaceAll("\\","/").split("/").filter(p=>p&&p!==".")}function d({sourceDirectoryPath:u,targetPath:p,isDirectory:m}){let h=Jn__default.relative(u,p).split(Jn__default.sep).join("/");return m?h?`${h}/`:"./":h}return t.post("/file-reference-suggestions",St(async(u,p,m)=>{let h=o1.safeParse(u.body);if(!h.success){p.status(400).json({error:`Failed to parse file-reference-suggestions body: ${h.error.message}`});return}let{sourceDirectoryPath:g="",value:f}=h.data,y=new Set((h.data.allowedExtensions??tke).map(v=>v.toLowerCase())),S=l(f);if(S.directoryText.startsWith("/")){p.status(200).json({suggestions:[]});return}let b=Jn__default.resolve(n(),...c(g)),E=Jn__default.resolve(b,...c(S.directoryText));if(!s(b)||!s(E)){p.status(200).json({suggestions:[]});return}if(!br__default.existsSync(E)||!br__default.statSync(E).isDirectory()){p.status(200).json({suggestions:[]});return}let C;try{C=await a(E);}catch(v){if(v instanceof Error&&v.name==="TimeoutError"){p.status(408).json({error:"Folder listing timed out. This directory may contain too many files."});return}throw v}let w=C.map(v=>{let P=Jn__default.join(E,v);return {entryName:v,targetPath:P,isDirectory:br__default.statSync(P).isDirectory()}}),I=S.filePrefix.toLowerCase(),x=w.filter(v=>v.entryName.startsWith(".")||!v.entryName.toLowerCase().startsWith(I)?false:v.isDirectory?true:y.has(Jn__default.extname(v.entryName).toLowerCase())).sort((v,P)=>v.isDirectory!==P.isDirectory?v.isDirectory?-1:1:v.entryName.localeCompare(P.entryName)).map(v=>({name:v.entryName,isDirectory:v.isDirectory,value:d({sourceDirectoryPath:b,targetPath:v.targetPath,isDirectory:v.isDirectory})}));p.status(200).json({suggestions:x});})),t.post("/",St(async(u,p,m)=>{let h;try{h=n1.parse(u.body).pathSegments;}catch(E){p.status(400).json({error:`Failed to parse folder read body: ${E}`});return}let g=o(h);if(!br__default.existsSync(g)){p.status(404).json({error:`Path not found: ${h.join(Jn__default.sep)}`});return}if(!br__default.statSync(g).isDirectory()){p.status(400).json({error:`Path is not a directory: ${h.join(Jn__default.sep)}`});return}let y;try{y=await a(g);}catch(E){if(E instanceof Error&&E.name==="TimeoutError"){p.status(408).json({error:"Folder listing timed out. This directory may contain too many files."});return}throw E}let S=y.map(E=>{let C=Jn__default.join(g,E);return i(C,E)});if(e.allowedFileTypes){let E=new Set(e.allowedFileTypes);S=(await Promise.all(S.map(async C=>{if(C.isDirectory||!(C.name.endsWith(".test.yaml")||C.name.endsWith(".module.yaml")))return C;let I=await nke(C.absolutePath);return I!==void 0&&E.has(I)?C:null}))).filter(C=>C!==null);}let b={absolutePath:g,pathSegments:h,contents:S};p.status(200).json(b);})),t.put("/",St(async(u,p,m)=>{let h;try{h=r1.parse(u.body).pathSegments;}catch(y){p.status(400).json({error:`Failed to parse folder create body: ${y}`});return}let g=o(h);if(br__default.existsSync(g)){p.status(200).json({success:true,message:`Folder already exists: ${h.join(Jn__default.sep)}`,pathSegments:h});return}br__default.mkdirSync(g,{recursive:true});let f={success:true,message:`Folder created: ${h.join(Jn__default.sep)}`,pathSegments:h};p.status(201).json(f);})),t.patch("/",St(async(u,p,m)=>{let h,g;try{let E=i1.parse(u.body);h=E.pathSegments,g=E.newPathSegments;}catch(E){p.status(400).json({error:`Failed to parse folder update body: ${E}`});return}let f=o(h),y=o(g);if(!br__default.existsSync(f)){p.status(400).json({error:`Folder not found: ${h.join(Jn__default.sep)}`});return}if(br__default.existsSync(y)){p.status(400).json({error:`Destination already exists: ${g.join(Jn__default.sep)}`});return}let S=Jn__default.dirname(y);br__default.existsSync(S)||br__default.mkdirSync(S,{recursive:true}),br__default.renameSync(f,y);let b={success:true,message:`Folder moved from ${h.join(Jn__default.sep)} to ${g.join(Jn__default.sep)}`,pathSegments:g};p.status(200).json(b);})),t.delete("/",St(async(u,p,m)=>{let h,g=true;try{let b=s1.parse(u.body);h=b.pathSegments,g=b.recursive??!0;}catch(b){p.status(400).json({error:`Failed to parse folder delete body: ${b}`});return}let f=o(h);if(!br__default.existsSync(f)){p.status(200).json({success:true,message:`Folder not found: ${h.join(Jn__default.sep)}`,pathSegments:h});return}if(!br__default.statSync(f).isDirectory()){p.status(400).json({error:`Path is not a directory: ${h.join(Jn__default.sep)}`});return}try{if(g)br__default.rmSync(f,{recursive:!0,force:!0});else {if(br__default.readdirSync(f).length>0){p.status(409).json({error:`Cannot delete non-empty directory without recursive flag: ${h.join("/")}`});return}br__default.rmdirSync(f);}}catch(b){let{status:E,body:C}=OZ(b,`delete folder ${h.join("/")}`);p.status(E).json(C);return}let S={success:true,message:`Folder deleted: ${h.join("/")}`,pathSegments:h};p.status(200).json(S);})),t}async function nke(e){try{let t=await br__default.promises.open(e,"r");try{let n=Buffer.alloc(4096),{bytesRead:o}=await t.read(n,0,n.length,0);return n.toString("utf-8",0,o).match(/^fileType:\s*(.+)$/m)?.[1]?.trim()}finally{await t.close();}}catch{}}var _6=Router();_6.get("/",async(e,t)=>{let n=st(),o=rr();if(!o){t.status(500).json({message:"API client not initialized"});return}let r=await ui(nh,o,n);t.status(200).json(r);});var AF=_6;var rke=({metadata:e,logger:t,globalE2eStateManager:n})=>{let{sessionId:o}=e;return async()=>{t.info({sessionId:o},"Cancel event received");let r=n.getSession(o);if(!r)throw new Error("No active session found");try{r.controller.setClosed();}catch{}}},P6={event:"cancel",createHandler:rke};var ike=({metadata:e,logger:t,globalE2eStateManager:n})=>{let{testId:o,sessionId:r}=e;return async(i,s)=>{let{stepId:a,environment:l,parentStepIdChain:c}=i;t.info({testId:o,stepId:a},"Clearing AI action cache");try{let d=n.getSession(r);if(!d)throw new Error("No active session found");let u=kR(a,c.join(":")||void 0);await Promise.all(u.map(p=>d.cacheStorage.deleteStepCacheEntry({logger:t,testId:o,key:p,environment:l}))),s({ok:!0});}catch(d){t.error({testId:o,stepId:a,err:d},"Failed to clear AI action cache"),s({ok:false,error:Q(d)});}}},O6={event:"clearAIActionCache",createHandler:ike};var ske=({metadata:e,logger:t,globalE2eStateManager:n})=>{let{sessionId:o}=e;return async(r,i)=>{let s=n.getSession(o);if(!s)throw new Error("No active session found");s.controller.setOpen();let a=s.controller.browser;try{let c=(await a.getBrowserState({skipWait:!0})).serialize();t.debug({a11yTree:c},"Fetched a11y tree from the browser"),i({a11yTree:c});}catch(l){t.error({err:l},"Error fetching a11y tree from the browser"),i({err:l.message});}}},M6={event:"fetchA11yTree",createHandler:ske};var ake=({metadata:e,logger:t,globalE2eStateManager:n})=>{let{sessionId:o}=e;return async(r,i)=>{let s=n.getSession(o);if(!s)throw new Error("No active session found");s.controller.setOpen();let a=s.controller.browser;try{let l=await a.html();i({html:l});}catch(l){t.error({err:l},"Error fetching DOM from the browser"),l.name==="TimeoutError"?i({err:"Timed out fetching DOM tree. This page may be too large for Momentic to process."}):i({err:l.message});}}},N6={event:"fetchDom",createHandler:ake};var lke=({metadata:e,logger:t,globalE2eStateManager:n})=>{let{sessionId:o}=e;return r=>{t.info({sessionId:o,reason:r},`Disconnect event received (${r})`),n.removeSession(o,t);}},L6={event:"disconnect",createHandler:lke};function Ss(e){let{result:t,nestedResults:n}=e;if(!e.nestedResults.length)return;let{firstMetadata:o,lastMetadata:r}=cke(n);dke(t,o,r);let i=[...e.asyncTasks];e.asyncTasks.push((async()=>{try{await uke(i,t,o,r);}catch(s){e.logger.error({result:e.result,err:s},"Error hoisting scalar result metadata");}})());}function cke(e){let t=e[0],n;for(;;){switch(t.type){case "PRESET_ACTION":case "CONDITIONAL":n=t;break;case "AI_ACTION_DYNAMIC":case "AI_ACTION":case "MODULE":case "SECTION":case "WHILE_LOOP":if(!t.results.length){n=t;break}t=t.results[0];break;default:return (s=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})()}if(n)break}let o=e[e.length-1],r;for(;;){switch(o.type){case "PRESET_ACTION":{r=o;break}case "AI_ACTION_DYNAMIC":case "CONDITIONAL":case "AI_ACTION":case "MODULE":case "SECTION":case "WHILE_LOOP":if(!o.results.length){r=o;break}o=o.results[o.results.length-1];break;default:return (s=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})()}if(r)break}return {firstMetadata:n,lastMetadata:r}}function dke(e,t,n){t&&(e.beforeUrl=t.beforeUrl),n&&(e.afterUrl=n.afterUrl,e.data=n.data,n.status!=="SUCCESS"&&(e.message=n.message,e.failureClassification=n.failureClassification));}async function uke(e,t,n,o){await Promise.allSettled(e),n&&(t.beforeSnapshot=n.beforeSnapshot),o&&(t.afterSnapshot=o.afterSnapshot);}async function k6(e){let t;try{t=new URL(e.url).hostname;}catch{}let n=[];return e.headers.getSetCookie()?.forEach(o=>{let r=nv(o,t);n.push(...r);}),n}function bke(e,t){if(!e&&!t)return;let n;if(e){let{url:r,options:i}=e;n=new Request(r,i);}let o;if(t){let{body:r,options:i}=t;o=new Response(r??null,i);}return {request:n,response:o}}async function Tke(e,t){switch(e){case "RAW":return t;case "RESPONSE":if(t instanceof Response){let n=[];return t.headers.forEach((r,i)=>{n.push([i,r]);}),{status:t.status,headers:n,body:await t.text()}}else throw new Error("Result is not a Response object")}}var Ake=Object.getPrototypeOf(async function(){}).constructor;async function D6(e,t,n){let o=t.code;t.options.fragment&&(o=`return ${t.code}`),o=`${o}
|
|
315
|
+
`);}catch(o){t.warn({err:o},"Failed to fetch CLI announcements");}}}var mF="^22.12.0 || >=24.0.0";function u6(){(nu.satisfies(process.version,mF)||(R.error(`Momentic requires Node.js ${mF}, but you are running ${process.version}. Upgrade Node.js (https://nodejs.org/en/download) and try again.`),process.exit(1)));}var eA=25;function p6(e){return {v2ProjectConfig:{...e.config,fileFormat:"v2"},migratedFilePaths:[]}}function m6(e){return {legacyProjectConfig:{...e.config,fileFormat:"v1"},migratedFilePaths:[]}}function hF({project:e,newProjectConfig:t,fileFormatLabel:n,migratedFilePaths:o}){e.config=t,jd(e.config,e.configFilePath),o.push(e.configFilePath),R.info(`Updated ${e.configFilePath} to use ${n} file format`),t.hooks?.postSave&&(R.info(`Running post-save hook for ${o.length} migrated files`),hw([...new Set(o)],t));}async function tA(e,t,n){for(let o=0;o<e.length;o+=t)await Promise.all(e.slice(o,o+t).map(n));}function gF(e){return e.upgradedAgents.length>0||e.enabledUseMemory||e.enabledFailureRecovery}function WLe(e){let t=e.ai??={},n=t.agentConfig??={},o=[];for(let[s,a]of Object.entries(Rg)){let l=n[s];l!==a&&(l?.startsWith(`${a}.`)||(n[s]=a,o.push({type:s,newValue:a})));}let r=t.useMemory!==true;r&&(t.useMemory=true);let i=t.failureRecovery!==true;return i&&(t.failureRecovery=true),{upgradedAgents:o,enabledUseMemory:r,enabledFailureRecovery:i}}async function h6({project:e,dryRun:t,migrate:n}){let o=e.config.fileFormat!=="v2",r=WLe(e.config);return o?{fileFormatChanged:o,aiSettings:r,migration:await n()}:(!t&&gF(r)&&jd(e.config,e.configFilePath),{fileFormatChanged:false,aiSettings:r,migration:fF()})}function fF(){return {migratedTestPaths:[],migratedModulePaths:[],alreadyV2TestCount:0,alreadyV2ModuleCount:0}}function yF({summary:e,fileFormatChanged:t,aiSettings:n,dryRun:o,testNoun:r="test",moduleNoun:i="module"}){let s=o?"Would migrate":"Migrated",a=uT(r,e.migratedTestPaths.length),l=uT(i,e.migratedModulePaths.length);R.info(`${s} ${e.migratedTestPaths.length} ${a} and ${e.migratedModulePaths.length} ${l} to v2.`),(e.alreadyV2TestCount>0||e.alreadyV2ModuleCount>0)&&R.dimmed(` Skipped ${e.alreadyV2TestCount} already-v2 ${uT(r,e.alreadyV2TestCount)} and ${e.alreadyV2ModuleCount} already-v2 ${uT(i,e.alreadyV2ModuleCount)}.`),t&&R.dimmed(" + fileFormat: v2");for(let c of n.upgradedAgents)R.dimmed(` + ai.agentConfig.${c.type}: ${c.newValue}`);n.enabledUseMemory&&R.dimmed(" + ai.useMemory: true"),n.enabledFailureRecovery&&R.dimmed(" + ai.failureRecovery: true");}var SF=false,g6;try{let e=await import('@sentry/node'),t="production";e.init({dsn:"https://89e980855f7b9c6e56fc6c7e7143888b@o4506426201800704.ingest.us.sentry.io/4508343221354497",environment:t,enabled:t!=="development",dist:"production",release:"cli@3.12.1",tracesSampleRate:0,skipOpenTelemetrySetup:!0,sendDefaultPii:!0,beforeSend(n,o){return gX(o?.originalException)||lC(o?.originalException,De)||fX(o?.originalException)?null:n}}),mY(e.captureException),g6=n=>{if(!n){e.setUser(null);return}e.setUser({id:n.userId,organizationId:n.orgId,...n.email&&{email:n.email}});},SF=!0;}catch{}var f6=e=>g6?.(e);var KLe=new wR(30,60*1e3),uI="https://api.momentic.ai",ey,y6,ou=e=>{uI=e;},Jr=()=>uI,S6=()=>Wg(uI),yp=e=>{y6=e;},ru=()=>y6,rr=()=>ey,b6=()=>{if(!ey)throw new Error("Global API client has not been initialized.");return ey};var nA,aI,T6,A6,E6,lI,C6,v6=({authInfo:e,apiKey:t,apiClient:n})=>{ey=n,nA=e.orgId,aI=e.userId,T6=e.email,A6=e.name,E6=e.pylonEmailHash,lI=t,C6=e.selfServe;},ty=async({apiClient:e,apiKey:t,skipPrompts:n})=>{let o=await Zm({client:e});return v6({authInfo:o,apiKey:t,apiClient:e}),o},pI=async({apiKey:e,mode:t,runner:n})=>{if(ey&&nA&&lI)return nA;let o=new Ft({baseUrl:uI,apiKey:e,logger:R,mode:t,runner:n});ey=o;try{let r=await o.getAuthInfo();return v6({authInfo:r,apiKey:e,apiClient:o}),r.orgId}catch(r){throw new Error(`Error checking API key against server: ${r}`,{cause:r})}},oo=()=>{if(!nA)throw new Error("Your organization ID is invalid.");return nA},kc=()=>{if(!aI)throw new Error("Your user ID is invalid.");return aI},R6=()=>aI,ny=()=>T6,w6=()=>A6,I6=()=>E6,mI=()=>C6,Xs=()=>{if(!lI)throw new Error("Your API key is invalid.");return lI},cI,dI,iu=()=>{dI?.abort(),dI=void 0;},oy=(e,t)=>{cI=e,iu(),dI=new AbortController;let n=dI.signal,o=[e.configFilePath];e.config.environments?.forEach(r=>{if(!r.envFile)return;let i=Jn__default.resolve(e.rootDir,r.envFile);try{if(br__default.lstatSync(i).isSymbolicLink())return;br__default.existsSync(i)&&o.push(i);}catch(s){R.warn({err:s},`Failed to check if env file ${i} exists`);}});try{YLe({filesToWatch:o,revalidator:t,signal:n,project:e});}catch(r){R.error({err:r},"Failed to start config file watchers");}};async function ry({project:e,apiClient:t}){let n=o=>Ks({project:o,apiClient:t});oy(await n(e),async o=>n(await on({configFilePath:o})));}var st=()=>{if(!cI)throw new De("No Momentic project is currently loaded. Open or select a project before invoking this action.");return cI};function YLe({filesToWatch:e,revalidator:t,signal:n,project:o}){R.debug("Starting watch on the following files:"),e.forEach(r=>{R.debug(`- ${r}`);}),e.forEach(r=>{let i=async(a,l)=>{if(a.mtime.getTime()!==l.mtime.getTime()){KLe.increment("setLocalProject")&&R.warn(`A file change under the ${o.rootDir} directory has caused Momentic to reload its configuration more than 30 times in the last minute. Rapid changes to files may indicate your momentic.config.yaml 'include' glob is incorrect. Please ensure temporary, library, and auto-generated files are not included in Momentic's context.`);try{cI=await Promise.resolve(t(o.configFilePath));}catch(c){R.warn({err:c},`Failed to reload Momentic configuration after a change to ${r}; continuing with the previously loaded configuration`);}}};br__default.watchFile(r,{persistent:false},i);let s=()=>{br__default.unwatchFile(r,i),n.removeEventListener("abort",s);};n.addEventListener("abort",s);});}function St(e){return function(...t){let n=t[t.length-1],o=e(...t);Promise.resolve(o).catch(n);}}var XLe="3.12.1",nh=Jg({app:"desktop-server",hostname:hostname(),disableConsoleLogs:true}).child({cliVersion:XLe});(async()=>{try{let e=await _a(nh);e.gitBranchName&&nh.addBinding("branch",e.gitBranchName);}catch{}})();var x6=Router();x6.get("/",async(e,t)=>{let n=st(),o=rr();if(!o){t.status(500).json({message:"API client not initialized"});return}let r=await ui(nh,o,n),i=r?.gitProtectedBranches&&r?.gitBranchName&&r.gitProtectedBranches.includes(r.gitBranchName),{noCache:s,alwaysSaveCache:a}=ru(),l=!s&&(a||!i);t.status(200).json({saveCaches:l,checkedOutBranch:r?.gitBranchName});});var bF=x6;var eke=5e3,tke=[".js",".mjs",".cjs",".ts"];function TF(e={}){let t=Router();function n(){let u=st();return Jn__default.dirname(u.configFilePath)}function o(u){return Jn__default.join(n(),...u)}function r(u){let p=Jn__default.relative(n(),u);return p?p.split(Jn__default.sep):[]}function i(u,p){let m=br__default.statSync(u),h=r(u);return cN.parse({name:p,absolutePath:u,relativePath:h.join(Jn__default.sep),pathSegments:h,isDirectory:m.isDirectory(),size:m.size,createdAt:m.birthtime,modifiedAt:m.mtime,accessedAt:m.atime})}function s(u){let p=Jn__default.relative(n(),u);return p===""||!p.startsWith("..")&&!Jn__default.isAbsolute(p)}async function a(u){let p=st();return Bd(["*"],{cwd:u,ignore:p.config.exclude??[],maxDepth:1,nodir:false,signal:AbortSignal.timeout(eke)})}function l(u){let p=u.trimStart().replace(/^file:\/\//,"").replaceAll("\\","/"),m=p.lastIndexOf("/");return m===-1?{directoryText:"",filePrefix:p}:{directoryText:p.slice(0,m+1),filePrefix:p.slice(m+1)}}function c(u){return u.replaceAll("\\","/").split("/").filter(p=>p&&p!==".")}function d({sourceDirectoryPath:u,targetPath:p,isDirectory:m}){let h=Jn__default.relative(u,p).split(Jn__default.sep).join("/");return m?h?`${h}/`:"./":h}return t.post("/file-reference-suggestions",St(async(u,p,m)=>{let h=o1.safeParse(u.body);if(!h.success){p.status(400).json({error:`Failed to parse file-reference-suggestions body: ${h.error.message}`});return}let{sourceDirectoryPath:g="",value:f}=h.data,y=new Set((h.data.allowedExtensions??tke).map(v=>v.toLowerCase())),S=l(f);if(S.directoryText.startsWith("/")){p.status(200).json({suggestions:[]});return}let b=Jn__default.resolve(n(),...c(g)),E=Jn__default.resolve(b,...c(S.directoryText));if(!s(b)||!s(E)){p.status(200).json({suggestions:[]});return}if(!br__default.existsSync(E)||!br__default.statSync(E).isDirectory()){p.status(200).json({suggestions:[]});return}let C;try{C=await a(E);}catch(v){if(v instanceof Error&&v.name==="TimeoutError"){p.status(408).json({error:"Folder listing timed out. This directory may contain too many files."});return}throw v}let w=C.map(v=>{let P=Jn__default.join(E,v);return {entryName:v,targetPath:P,isDirectory:br__default.statSync(P).isDirectory()}}),I=S.filePrefix.toLowerCase(),x=w.filter(v=>v.entryName.startsWith(".")||!v.entryName.toLowerCase().startsWith(I)?false:v.isDirectory?true:y.has(Jn__default.extname(v.entryName).toLowerCase())).sort((v,P)=>v.isDirectory!==P.isDirectory?v.isDirectory?-1:1:v.entryName.localeCompare(P.entryName)).map(v=>({name:v.entryName,isDirectory:v.isDirectory,value:d({sourceDirectoryPath:b,targetPath:v.targetPath,isDirectory:v.isDirectory})}));p.status(200).json({suggestions:x});})),t.post("/",St(async(u,p,m)=>{let h;try{h=n1.parse(u.body).pathSegments;}catch(E){p.status(400).json({error:`Failed to parse folder read body: ${E}`});return}let g=o(h);if(!br__default.existsSync(g)){p.status(404).json({error:`Path not found: ${h.join(Jn__default.sep)}`});return}if(!br__default.statSync(g).isDirectory()){p.status(400).json({error:`Path is not a directory: ${h.join(Jn__default.sep)}`});return}let y;try{y=await a(g);}catch(E){if(E instanceof Error&&E.name==="TimeoutError"){p.status(408).json({error:"Folder listing timed out. This directory may contain too many files."});return}throw E}let S=y.map(E=>{let C=Jn__default.join(g,E);return i(C,E)});if(e.allowedFileTypes){let E=new Set(e.allowedFileTypes);S=(await Promise.all(S.map(async C=>{if(C.isDirectory||!(C.name.endsWith(".test.yaml")||C.name.endsWith(".module.yaml")))return C;let I=await nke(C.absolutePath);return I!==void 0&&E.has(I)?C:null}))).filter(C=>C!==null);}let b={absolutePath:g,pathSegments:h,contents:S};p.status(200).json(b);})),t.put("/",St(async(u,p,m)=>{let h;try{h=r1.parse(u.body).pathSegments;}catch(y){p.status(400).json({error:`Failed to parse folder create body: ${y}`});return}let g=o(h);if(br__default.existsSync(g)){p.status(200).json({success:true,message:`Folder already exists: ${h.join(Jn__default.sep)}`,pathSegments:h});return}br__default.mkdirSync(g,{recursive:true});let f={success:true,message:`Folder created: ${h.join(Jn__default.sep)}`,pathSegments:h};p.status(201).json(f);})),t.patch("/",St(async(u,p,m)=>{let h,g;try{let E=i1.parse(u.body);h=E.pathSegments,g=E.newPathSegments;}catch(E){p.status(400).json({error:`Failed to parse folder update body: ${E}`});return}let f=o(h),y=o(g);if(!br__default.existsSync(f)){p.status(400).json({error:`Folder not found: ${h.join(Jn__default.sep)}`});return}if(br__default.existsSync(y)){p.status(400).json({error:`Destination already exists: ${g.join(Jn__default.sep)}`});return}let S=Jn__default.dirname(y);br__default.existsSync(S)||br__default.mkdirSync(S,{recursive:true}),br__default.renameSync(f,y);let b={success:true,message:`Folder moved from ${h.join(Jn__default.sep)} to ${g.join(Jn__default.sep)}`,pathSegments:g};p.status(200).json(b);})),t.delete("/",St(async(u,p,m)=>{let h,g=true;try{let b=s1.parse(u.body);h=b.pathSegments,g=b.recursive??!0;}catch(b){p.status(400).json({error:`Failed to parse folder delete body: ${b}`});return}let f=o(h);if(!br__default.existsSync(f)){p.status(200).json({success:true,message:`Folder not found: ${h.join(Jn__default.sep)}`,pathSegments:h});return}if(!br__default.statSync(f).isDirectory()){p.status(400).json({error:`Path is not a directory: ${h.join(Jn__default.sep)}`});return}try{if(g)br__default.rmSync(f,{recursive:!0,force:!0});else {if(br__default.readdirSync(f).length>0){p.status(409).json({error:`Cannot delete non-empty directory without recursive flag: ${h.join("/")}`});return}br__default.rmdirSync(f);}}catch(b){let{status:E,body:C}=OZ(b,`delete folder ${h.join("/")}`);p.status(E).json(C);return}let S={success:true,message:`Folder deleted: ${h.join("/")}`,pathSegments:h};p.status(200).json(S);})),t}async function nke(e){try{let t=await br__default.promises.open(e,"r");try{let n=Buffer.alloc(4096),{bytesRead:o}=await t.read(n,0,n.length,0);return n.toString("utf-8",0,o).match(/^fileType:\s*(.+)$/m)?.[1]?.trim()}finally{await t.close();}}catch{}}var _6=Router();_6.get("/",async(e,t)=>{let n=st(),o=rr();if(!o){t.status(500).json({message:"API client not initialized"});return}let r=await ui(nh,o,n);t.status(200).json(r);});var AF=_6;var rke=({metadata:e,logger:t,globalE2eStateManager:n})=>{let{sessionId:o}=e;return async()=>{t.info({sessionId:o},"Cancel event received");let r=n.getSession(o);if(!r)throw new Error("No active session found");try{r.controller.setClosed();}catch{}}},P6={event:"cancel",createHandler:rke};var ike=({metadata:e,logger:t,globalE2eStateManager:n})=>{let{testId:o,sessionId:r}=e;return async(i,s)=>{let{stepId:a,environment:l,parentStepIdChain:c}=i;t.info({testId:o,stepId:a},"Clearing AI action cache");try{let d=n.getSession(r);if(!d)throw new Error("No active session found");let u=kR(a,c.join(":")||void 0);await Promise.all(u.map(p=>d.cacheStorage.deleteStepCacheEntry({logger:t,testId:o,key:p,environment:l}))),s({ok:!0});}catch(d){t.error({testId:o,stepId:a,err:d},"Failed to clear AI action cache"),s({ok:false,error:Q(d)});}}},O6={event:"clearAIActionCache",createHandler:ike};var ske=({metadata:e,logger:t,globalE2eStateManager:n})=>{let{sessionId:o}=e;return async(r,i)=>{let s=n.getSession(o);if(!s)throw new Error("No active session found");s.controller.setOpen();let a=s.controller.browser;try{let c=(await a.getBrowserState({skipWait:!0})).serialize();t.debug({a11yTree:c},"Fetched a11y tree from the browser"),i({a11yTree:c});}catch(l){t.error({err:l},"Error fetching a11y tree from the browser"),i({err:l.message});}}},M6={event:"fetchA11yTree",createHandler:ske};var ake=({metadata:e,logger:t,globalE2eStateManager:n})=>{let{sessionId:o}=e;return async(r,i)=>{let s=n.getSession(o);if(!s)throw new Error("No active session found");s.controller.setOpen();let a=s.controller.browser;try{let l=await a.html();i({html:l});}catch(l){t.error({err:l},"Error fetching DOM from the browser"),l.name==="TimeoutError"?i({err:"Timed out fetching DOM tree. This page may be too large for Momentic to process."}):i({err:l.message});}}},N6={event:"fetchDom",createHandler:ake};var lke=({metadata:e,logger:t,globalE2eStateManager:n})=>{let{sessionId:o}=e;return r=>{t.info({sessionId:o,reason:r},`Disconnect event received (${r})`),n.removeSession(o,t);}},L6={event:"disconnect",createHandler:lke};function Ss(e){let{result:t,nestedResults:n}=e;if(!e.nestedResults.length)return;let{firstMetadata:o,lastMetadata:r}=cke(n);dke(t,o,r);let i=[...e.asyncTasks];e.asyncTasks.push((async()=>{try{await uke(i,t,o,r);}catch(s){e.logger.error({result:e.result,err:s},"Error hoisting scalar result metadata");}})());}function cke(e){let t=e[0],n;for(;;){switch(t.type){case "PRESET_ACTION":case "CONDITIONAL":n=t;break;case "AI_ACTION_DYNAMIC":case "AI_ACTION":case "MODULE":case "SECTION":case "WHILE_LOOP":if(!t.results.length){n=t;break}t=t.results[0];break;default:return (s=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})()}if(n)break}let o=e[e.length-1],r;for(;;){switch(o.type){case "PRESET_ACTION":{r=o;break}case "AI_ACTION_DYNAMIC":case "CONDITIONAL":case "AI_ACTION":case "MODULE":case "SECTION":case "WHILE_LOOP":if(!o.results.length){r=o;break}o=o.results[o.results.length-1];break;default:return (s=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})()}if(r)break}return {firstMetadata:n,lastMetadata:r}}function dke(e,t,n){t&&(e.beforeUrl=t.beforeUrl),n&&(e.afterUrl=n.afterUrl,e.data=n.data,n.status!=="SUCCESS"&&(e.message=n.message,e.failureClassification=n.failureClassification));}async function uke(e,t,n,o){await Promise.allSettled(e),n&&(t.beforeSnapshot=n.beforeSnapshot),o&&(t.afterSnapshot=o.afterSnapshot);}async function k6(e){let t;try{t=new URL(e.url).hostname;}catch{}let n=[];return e.headers.getSetCookie()?.forEach(o=>{let r=nv(o,t);n.push(...r);}),n}function bke(e,t){if(!e&&!t)return;let n;if(e){let{url:r,options:i}=e;n=new Request(r,i);}let o;if(t){let{body:r,options:i}=t;o=new Response(r??null,i);}return {request:n,response:o}}async function Tke(e,t){switch(e){case "RAW":return t;case "RESPONSE":if(t instanceof Response){let n=[];return t.headers.forEach((r,i)=>{n.push([i,r]);}),{status:t.status,headers:n,body:await t.text()}}else throw new Error("Result is not a Response object")}}var Ake=Object.getPrototypeOf(async function(){}).constructor;async function D6(e,t,n){let o=t.code;t.options.fragment&&(o=`return ${t.code}`),o=`${o}
|
|
316
316
|
//# sourceURL=${av}`;let{env:r,additionalBindings:i,request:s,response:a}=t.bindings,l=t.tools,c={},d=(b,E)=>{r[b]=E,c[b]=E;},u={},p=(b,E)=>{r[b]=E,u[b]=E;},m;o.includes("Octokit")&&(m=(await import('@octokit/rest')).Octokit);let h;o.includes("createAppAuth")&&(h=(await import('@octokit/auth-app')).createAppAuth);let g=async()=>{try{return await Promise.resolve(new Ake("axios","moment","faker","assert","pg","Octokit","createAppAuth","OTPAuth","child_process","extractCookiesFromResponse","env","setVariable","setPersistentVariable","sendSms","waitForLatestSms","email","sms","mock",...Object.keys(i??{}),o)(hke,fke,l.fakerInstance??faker,mke,Ske,m,h,yke,gke,k6,r,t.options.disallowVariableUpdates?void 0:d,t.options.disallowVariableUpdates?void 0:p,E=>l.sms.send(E),E=>l.sms.fetchLatest(E),l.email,l.sms,bke(s,a),...Object.values(i??{})))}catch(b){throw new oC(Q(b),{cause:b})}},f=true,y,S;try{let b=await Ie(g(),{milliseconds:t.options.timeoutMs,message:`Timeout of ${t.options.timeoutMs}ms exceeded for code execution`,signal:t.signal});y=await Tke(t.options.responseSerialization??"RAW",b);}catch(b){n.error({err:b,env:r,evalCode:o},`[${e}] Error executing code: ${b}`),f=false,b instanceof $u?S=`Timeout of ${t.options.timeoutMs}ms exceeded for code execution`:S=b instanceof Error?b.message:`${b}`;}return {result:y,variableUpdates:c,persistentVariableUpdates:u,success:f,error:S}}async function F6({code:e,fragment:t,context:n,localTools:o,logger:r,signal:i,timeoutMs:s=Uu,disallowVariableUpdates:a,additionalBindings:l,responseSerialization:c,mock:d}){let u=randomUUID(),p=await D6(u,{code:e,options:{fragment:t,timeoutMs:s,disallowVariableUpdates:a,responseSerialization:c},bindings:{...n.toObjectCopy(),...d,additionalBindings:l},tools:o,signal:i},r);return R.debug(`[${u}] Got execution result: ${JSON.stringify(p)}`),p}var wke=DTe(global.fetch,{retries:3,retryOn:function(e,t,n){return !!(t!==null||n&&n.status>=500)},retryDelay:function(e){return Math.pow(2,e)*500}}),B6=process.env.GCP_JS_EVAL_FUNCTION_ENDPOINT,U6=process.env.MOMENTIC_LAMBDA_AUTH_SECRET;async function H6({orgId:e,code:t,fragment:n,context:o,timeoutMs:r=Uu,retries:i=2,signal:s,logger:a,additionalBindings:l,disallowVariableUpdates:c,responseSerialization:d,mock:u}){if(!B6)throw new Error("GCP_JS_EVAL_FUNCTION_ENDPOINT environment variable not set");let p,m,h=0;if(!U6)throw new Error("Missing lambda auth secret.");let g=createHmac("sha256",U6).update(e).digest("hex");for(;h<=i;){h++,s?.throwIfAborted();let y={id:randomUUID(),orgId:e,momenticLambdaAuthHash:g,code:t,fragment:n,state:{...o.toObjectCopy(),...u,additionalBindings:l},timeoutMs:r,disallowVariableUpdates:c,responseSerialization:d};try{if(p=await Ie(wke(B6,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(y)}),{milliseconds:r,message:`Timeout of ${r}ms exceeded for code execution`,signal:s}),!p)throw new Error("Got empty response from code evaluation server");if(!p.ok)throw new Error(`Code evaluation server returned error code ${p.status}`);m=void 0;break}catch(S){m=S;}}if(m)throw a.error({err:m},"Failed to evaluate code remotely"),m;if(!p)throw new Error(`An unexpected code evaluation error occurred${m?`: ${m}`:""}`);let f;try{f=vW.parse(await p.json());}catch(y){throw new Error(`Code evaluation server returned invalid response: ${y}`)}if(f.error)throw new Error(`Code evaluation error: ${f.error}`);return f}async function Sp(e){let t;if(process.env.GCP_JS_EVAL_FUNCTION_ENDPOINT)t=await H6(e);else if(e.localTools)t=await F6({...e,localTools:e.localTools});else throw new Error("No code evaluation environment available");if(t.error){let n=`Failed to evaluate code:
|
|
317
317
|
${t.error}
|
|
318
318
|
Code received:
|
|
@@ -5760,7 +5760,7 @@ ${e}`;case "ELEMENT_CHECK":return `${G9}
|
|
|
5760
5760
|
${e}`;default:return e}}async function La({frameConfig:e,action:t,browser:n}){let o=n.getActiveFrameConfig();e?n.setActiveFrameConfig(e):o?.type==="auto"&&n.setActiveFrameConfig(void 0);try{return await t()}finally{n.setActiveFrameConfig(o);}}var iBe=["NAVIGATE","NEW_TAB","CLOSE_TAB","TAB","REFRESH","WAIT_FOR_URL"];async function V9({beforeUrl:e,beforePages:t,browser:n,command:o,logger:r}){if(iBe.includes(o.type))return;await xo().startAsyncSpan("AUTO_FOLLOW_NEW_TABS",async s=>{let c=("cache"in o&&o.cache&&"target"in o.cache?o.cache.target:void 0)?.nodeOnlySerializedHtml?.includes("<a")??false?300:3e3,d=Date.now(),u=0;for(r.info({command:o.type,beforePages:t,beforeUrl:e,timeout:c},"Checking for new tabs to auto-follow");u===0||Date.now()-d<c;){await ot(250),u++;let p=(await n.getOpenPages()).map(h=>h.url),m=n.url();if(p.length!==t.length)for(let h=p.length-1;h>=t.length;h--){let g=p[h];if(np(g,r)&&g!==e&&g!==m){r.info({beforePages:t,afterPages:p,beforeUrl:e},"Auto-following new tab after preset action"),await n.switchToPage({type:"INDEX",index:String(h)}),s.result={followed:true};return}}}s.result={followed:false};});}async function Uc(e,t={}){let n=await e.getBrowserState(t);return {serializedTree:n.serialize(t.serializationOpts),tree:n}}var z9=e=>!!e&&jh(e),W9=e=>{let{cache:t,description:n,disableSecondaryCacheResolution:o,logger:r}=e,i=t,s=false,a;if(i&&o&&i.targetSource==="HEURISTIC_HEALED"&&(s=true,a="Heuristic healed cache incompatible",i=void 0),i){let l=i.inputDescription;(l?!j9(n,l):!!n)&&(r.warn({old:i.inputDescription,new:n},"Target cache was generated with a different description, clearing it automatically"),s=true,a="Description changed",i=void 0);}return {cache:i,cacheBustedBeforeAction:s,cacheBustReason:a}};var K9={minChunkTokenCount:1e4,acceptableChunkTokenCount:25e3,maxChunkTokenCount:5e4,maxLineLength:4e3},q9=/<(\S+) id="(\d+)".*?>/g,sBe=/(<\/(\S+)>)|(<(\S+).*?\/>)/g,Y9=["h1","h2","section","footer","nav","aside","form","label","dialog"],aBe=[...Y9,"span","div","h3"],lBe=["table","select","form","ul","ol","menu","pre","code","dialog"],cBe=["table","form","dialog","nav","section","ul","select"];function J9(e){return dBe(e)}function dBe({logger:e,serializedTree:t,options:n}){let{minChunkTokenCount:o,acceptableChunkTokenCount:r,maxChunkTokenCount:i,maxLineLength:s}=n,a=[],l=t.split(`
|
|
5761
5761
|
`),c=0,d=[],u=0,p=[],m=[],h=false;for(;c<l.length;){h&&(a.push({ids:p,content:d.join(`
|
|
5762
5762
|
`),tokenLength:u}),d=[],u=0,p=m.length?[m[m.length-1].id]:[],h=false);let g=l[c],f=At(g);u+=f,g.length>s&&(g=g.slice(0,s));let b=Array.from(g.matchAll(q9)).map(V=>V&&V.length>=3?{tagName:V[1],id:V[2]}:void 0).filter(V=>!!V),C=Array.from(g.matchAll(sBe)).map(V=>V&&(V[2]||V[4])).filter(V=>!!V);C.reverse();let w=g.replace(/ id="[0-9]+"/g,"");d.push(w);for(let V of b)p.push(V.id),m.push(V);for(let V of C){let ne=m[m.length-1];ne&&ne.tagName===V&&m.pop();}let I=m.some(V=>lBe.includes(V.tagName)),x=l[c+1]??"",v=At(x),_=Array.from(x.matchAll(q9)).map(V=>V&&V.length>2?V[1]:void 0).filter(V=>!!V),B=_.some(V=>Y9.includes(V)),D=_.some(V=>aBe.includes(V));u+v>=i&&(h=true),u>=o&&(B&&!I||C.some(V=>cBe.includes(V)))&&(h=true),u>=r&&D&&!I&&(h=true),c++;}return d.length&&a.push({ids:p,content:d.join(`
|
|
5763
|
-
`),tokenLength:u}),a.forEach((g,f)=>{let y=g.ids[0],S=g.ids[g.ids.length-1];e.debug({tokenLength:g.tokenLength,minId:y,maxId:S},`Chunk for page filtering (index ${f+1}/${a.length})`);}),{chunks:a}}var X9=5e6,pBe=1e5,mBe=3e4,hBe=6e4,gBe=1e5;async function Qs(e){let{fixtures:t}=e,{logger:n}=t,o=e.tree,r=e.serializedTree,i=At(r);if(i>X9)throw new te("UserConfigurationError",`Page accessibility tree is too large for AI page filtering (${i} tokens). Maximum supported size is ${X9} tokens.`);if(i>pBe){let s=J9({serializedTree:r,options:K9,logger:n}),a=randomUUID();o=await fBe({...e,chunks:s.chunks,callId:a}),r=o.serialize();let l=At(r);n.info({oldTokens:i,newTokens:l,langfuseCallId:a},"Filtered page using AI chunk ranking");}return r}async function fBe({type:e,callId:t,chunks:n,description:o,fixtures:r,tree:i}){let{generator:s,signal:a,logger:l}=r,c=await s.rankChunksWithAi({chunks:n,description:o,type:e,softTokenLimit:mBe,mediumTokenLimit:hBe,hardTokenLimit:gBe,callId:t},{abortSignal:a,logger:l,loggerTags:jt(l)}),d=[];return n.forEach((p,m)=>{c.indices.includes(m)&&(d=d.concat(p.ids));}),i.pruneUsingRelevantIds(new Set(d))}async function pB(e,t){if(!e.description)throw new te("UserConfigurationError","Cannot locate element with empty description");return La({action:async()=>SBe(e,t),frameConfig:e.iframeUrl?{type:"url",url:e.iframeUrl}:void 0,browser:t.browser,logger:e.logger})}async function SBe(e,t){let{disableCache:n,testContext:o,filterByViewport:r,skipWait:i,source:s,memory:a,logger:l,allowNotActionableNodesOverride:c,allowIneligibleTagRedirect:d,showZeroOpacityElementsOverride:u,skipSavingVisualAttributes:p,isAutoHeal:m,cacheBustReason:h,acceptElementMovedError:g}=e,{orgId:f,browser:y,localCodeEvalTools:S,generator:b,abortSignal:E}=t,C=e.description,w=xo(),I=e.useMemory&&!n;o&&(C=await gi({orgId:f,s:C,context:o,localTools:S,signal:E,logger:l})),s&&(C=$9(C,s));let{serializedTree:x,tree:v}=await w.startAsyncSpan("GET_PAGE_STATE",async()=>Uc(y,{allowNotActionableNodesOverride:c,allowIneligibleTagRedirect:d,showZeroOpacityElementsOverride:u,filterByViewport:r,abortSignal:E,skipWait:i,logger:l}),{}),P=await w.startAsyncSpan("GET_PAGE_SCREENSHOT",async()=>{let j,F=Date.now(),J;for(;!j&&Date.now()-F<3e3;){E.throwIfAborted();try{j=await y.screenshot({clearHighlights:!0,respectActiveFrame:!0,retries:2});}catch(X){J=X;}}if(!j)throw new te("ActionFailureError",`Failed to take screenshot of page to locate element. The page may be unresponsive, or your machine might be severely resource constrained. Error: ${J?.message}`);return j}),_=x,B=false,V=`data:image/jpeg;base64,${P.toString("base64")}`,ne=jt(l);_=await Qs({type:"locator",description:C,screenshot:V,serializedTree:x,tree:v,fixtures:{generator:b,signal:E,logger:l,orgId:f}}),_!==x&&(B=true);let re=await w.startAsyncSpan("AI_LOCATOR_CALL",async j=>{m&&(j.attributes.isAutoHeal=true),h&&(j.attributes.cacheBustReason=h);let F=await b.getElementLocation({browserState:_,goal:C,screenshot:V,source:s,memory:I?a:void 0},{disableCache:n,abortSignal:E,logger:l,loggerTags:ne,useMemory:I,cacheBustReason:h});if(j.result=F,I&&(j.attributes.useMemory=true,j.attributes.memoryTraces=F.rememberedTraces??[],F.updatedMemory&&(j.attributes.memorySavedNewResult=true)),w.storeTraceAsset){let J=randomUUID();w.storeTraceAsset({snapshotId:J,data:P}),j.screenshotSnapshotId=J;}return F});if(l.debug({usedRag:B,result:re},"Got locator result"),!(re.id>0))throw new og(`Could not find any relevant element: ${re.thoughts}`,re.updatedMemory?{type:"GCS_TRACES",traces:re.updatedMemory}:void 0);let{resolution:z,target:M,frameConfig:K}=await w.startAsyncSpan("TARGET_RESOLUTION",async j=>{let F=await y.createTargetFromA11yId({id:re.id,requirements:re.requirements,additionalElements:re.additionalElements,description:C,targetSource:"AI",logger:l,skipSavingVisualAttributes:p,acceptElementMovedError:g});return j.result={serializedElement:F.target.nodeOnlySerializedHtml??"Unknown HTML element"},F});if(z.a11yNode?.properties?.hidden&&z.a11yNode?.properties?.hidden!=="false")throw new te("ActionFailureError",`Momentic's AI found a relevant element to interact with, but it is explicitly marked with an 'aria-hidden' attribute. Please remove this attribute or adjust the element description to locate a different element. Element chosen: ${z.displayString}`);return I&&(re.updatedMemory?M.memory={type:"GCS_TRACES",traces:re.updatedMemory}:a&&(M.memory=a)),{thoughts:re.thoughts,target:M,resolution:z,frameConfig:K,screenshot:V}}var bBe=15;async function MI({command:e,logger:t,fixtures:n,useMemory:o,maxRetries:r=bBe,recoveryHint:i}){if(!e.assertion.trim())throw new te("ActionFailureError","Assertion command is missing the assertion content");let s=hM.optional().catch(void 0).parse(e.source);e.source&&!s&&t.warn(`Invalid source ${e.source} for AI assertion, ignoring...`);let a=xo();return a.startAsyncSpan("AI_ASSERTION_CALL",async l=>{let{browser:c}=n,d=e.timeout?e.timeout*1e3:c.smartWaitingTimeout,u=L3(d,r-1),p=0,m=Date.now(),h=m+d,g=m,f,y,S;try{await La({action:()=>c.clearHighlights(),frameConfig:e.iframeUrl?{type:"url",url:e.iframeUrl}:void 0,browser:c,logger:t});}catch(C){t.warn({err:C},"Failed to clear highlights before AI check, continuing...");}for(;p<r;){n.abortSignal.throwIfAborted();let C=Date.now();if(p>0){if(C>=h)break;let x=h-C,v=g-C,P=Math.min(v,x);P>0&&await ot(P,n.abortSignal);}let w=Date.now();if(p>0&&w>=h)break;let I=false;try{if(f=await La({action:async()=>{let v=await Z9(c,t,n.abortSignal);return y&&y.serializedTree===v.serializedTree&&y.screenshotBuff.equals(v.screenshotBuff)?(I=!0,f):(y=v,e7({command:e,state:v,fixtures:n,useMemory:o,useConsensus:!1,highlightElementsOnFailure:!1,attemptNumber:p,logger:t,source:s,recoveryHint:i}))},frameConfig:e.iframeUrl?{type:"url",url:e.iframeUrl}:void 0,logger:t,browser:c}),f?.aiResult.result){f?.updatedMemory&&yT(e,f.updatedMemory,t);break}else throw f?.aiResult.thoughts?new te("AssertionFailureError",f.aiResult.thoughts):new te("InternalPlatformError","No thoughts were provided for AI assertion failure")}catch(x){n.abortSignal.throwIfAborted(),S=x instanceof Error?x:new Error(`${x}`),I?t.info(`AI check attempt ${p} failed (re-used previous result)`):t.info({err:x},`AI check assert attempt ${p} failed, retrying...`);}finally{p++,g=w+u;}}if(!f?.aiResult.result){let C=h-Date.now();C>0&&await ot(C,n.abortSignal);}if(!f?.aiResult.result)try{f=await La({action:async()=>e7({command:e,state:await Z9(c,t,n.abortSignal),fixtures:n,useMemory:o,useConsensus:!0,highlightElementsOnFailure:!0,attemptNumber:p,logger:t,recoveryHint:i}),frameConfig:e.iframeUrl?{type:"url",url:e.iframeUrl}:void 0,logger:t,browser:c});}catch(C){n.abortSignal.throwIfAborted(),S=C instanceof Error?C:new Error(`${C}`);}finally{p++;}f?.updatedMemory&&yT(e,f.updatedMemory,t);let b=f?.afterScreenshotOverride;if(b&&a.storeTraceAsset){let C=randomUUID();a.storeTraceAsset({snapshotId:C,data:b}),l.screenshotSnapshotId=C;}let E=f?.elementScreenshotOverride;if(E&&a.storeTraceAsset){let C=randomUUID();a.storeTraceAsset({snapshotId:C,data:E}),l.elementScreenshotSnapshotId=C;}if(o&&(l.attributes.useMemory=true,l.attributes.memoryTraces=f?.aiResult.rememberedTraces??[],f?.updatedMemory&&(l.attributes.memorySavedNewResult=true)),!f?.aiResult.result){l.result=f?.aiResult??{thoughts:S?.message??"AI check failed after all attempts",result:false};let C=`AI check still failing after ${p} attempts.`;throw S&&(C+=` Latest result: ${S.message}`),new te("AssertionFailureError",C)}return l.result=f.aiResult,{...f,thoughts:f.aiResult.thoughts,succeedImmediately:false,urlAfterCommand:c.url()}})}async function Z9(e,t,n){await e.waitForPageLoad({signal:n});let[o,r]=await Promise.all([Uc(e,{abortSignal:n,skipWait:true,skipWaitForPageLoad:true,logger:t}),e.screenshot({retries:1,respectActiveFrame:true})]);return {...o,screenshotBuff:r}}async function e7({command:e,state:t,fixtures:n,useConsensus:o,useMemory:r,highlightElementsOnFailure:i,attemptNumber:s,source:a,logger:l,recoveryHint:c}){let {browser:d,generator:u,abortSignal:p}=n,{serializedTree:h,tree:g}=t,f=t.screenshotBuff,y=f.toString("base64"),S=d.url(),b=e.contextChoice??"MULTIMODAL",E=h;b!=="VISION_ONLY"&&(E=await Qs({type:"assertion",serializedTree:h,tree:g,description:e.assertion,screenshot:y,fixtures:{generator:u,signal:p,logger:l,orgId:n.orgId}}),E);let C={goal:e.assertion,url:S,memory:r?e.cache?.memory:void 0,browserState:E,screenshot:y,contextChoice:b,source:a,recoveryHint:c},I=await(b==="VISION_ONLY"?(v,P)=>u.getVisualAssertionResult(v,P):(v,P)=>u.getAssertionResult(v,P))(C,{useConsensus:o,attemptNumber:s,useMemory:r,disableCache:!!e.disableCache,abortSignal:p,logger:l,loggerTags:jt(l)}),x;if((I.result||i)&&I.relevantElements?.length){I.relevantElements.map(v=>d.getSerializedFormFromA11yId(v)).filter(v=>!!v);try{let v=I.relevantElements[0],{resolution:P}=await d.createTargetFromA11yId({id:v,description:null,targetSource:"AI",skipSaveToCache:!0});x=await d.screenshot({locator:P.locator,clearHighlights:!0,respectActiveFrame:!0});}catch(v){l.debug({err:v},"Failed to capture element screenshot for trace, continuing...");}await TBe(I.relevantElements,d,l);}return {aiResult:I,afterScreenshotOverride:f,elementScreenshotOverride:x,updatedMemory:r?I.updatedMemory:void 0}}async function TBe(e,t,n){let o=Date.now();for(let r of e){if(Date.now()-o>2e3){n.debug("Highlighting relevant elements took over 2s, aborting...");return}try{let i=new AbortController;await Ie(t.highlightA11yId(r),{milliseconds:1e3,fallback:()=>{throw i.abort(),new Error("Timed out waiting for highlighting to complete")}});}catch(i){n.debug({err:i},"Failed to highlight relevant element after assertion, continuing...");return}}}async function n7(e){let{command:t,logger:n,fixtures:o,disableCache:r}=e,{browser:i,generator:s,abortSignal:a}=o;if(!t.goal.trim())throw new te("ActionFailureError","Cannot perform AI extraction without goal");if(t.schema){let u=OK(t.schema);if(u)throw new te("UserConfigurationError",u)}let l=await i.getCondensedHtml(),c=await i.screenshot({retries:2}),d=xo();try{return await d.startAsyncSpan("AI_EXTRACTION_CALL",async u=>{let p=await s.getTextExtraction({goal:t.goal,browserState:l,returnSchema:t.schema,screenshot:`data:image/jpeg;base64,${c.toString("base64")}`},{disableCache:r,abortSignal:a,loggerTags:jt(n)});if(u.result=p,ABe({tracer:d,span:u,screenshot:c,htmlState:l,logger:n}),p.result==="NOT_FOUND")throw new te("ActionFailureError","No relevant data found for extraction goal on this page");if(p.thoughts?.includes("MaxGenerationLengthExceededError"))throw new te("UserConfigurationError",p.thoughts);return {thoughts:p.thoughts||void 0,data:p.result,succeedImmediately:!1,urlAfterCommand:i.url()}})}catch(u){let p=Q(u);throw p.includes("MaxGenerationLengthExceededError")?new te("UserConfigurationError","You tried to extract too much data. Please rephrase your query to limit the results returned or use a JavaScript step in the browser instead."):p.includes("AIProviderError")&&p.includes("time")?new te("AIProviderError","The AI provider responded with an error. This may be because you tried to extract too much data. Please limit extraction results to 2000 characters.",{errOptions:{cause:u}}):u}}function ABe(e){let{tracer:t,span:n,screenshot:o,htmlState:r,logger:i}=e;if(t.storeTraceAsset)try{let s=randomUUID();t.storeTraceAsset({snapshotId:s,data:o}),n.screenshotSnapshotId=s;let a=randomUUID();t.storeTraceAsset({snapshotId:a,data:Buffer.from(r),extension:"html"}),n.browserStateSnapshotId=a;}catch(s){i.debug({err:s},"Failed to store extraction trace assets");}}async function o7(e,t){let{logger:n}=e,{abortSignal:o,browser:r}=t,i=Date.now();try{await EBe(i,e,t);}catch(s){if(s instanceof Error&&(s.name==="AbortError"||s.name==="TimeoutError")||o.aborted)return;n.warn({err:s},"Unexpected error occurred during AI smart waiting");let a=r.smartWaitingTimeout-(Date.now()-i);a>0&&await ot(a,o);}finally{n.debug({durationMs:Date.now()-i},"AI smart waiting complete");}}async function EBe(e,t,n){let{abortSignal:o,browser:r}=n;if(r.smartWaitingTimeout<3e3){await ot(r.smartWaitingTimeout,o);return}if(!t.description)throw new te("UserConfigurationError","Cannot locate element with empty description");await Ie(CBe(e,t,n),{milliseconds:r.smartWaitingTimeout});}async function CBe(e,t,n){let{logger:o,iframeUrl:r}=t,{browser:i}=n;for(;Date.now()-e<i.smartWaitingTimeout;)if(await La({action:async()=>vBe(t,n),frameConfig:r?{type:"url",url:r}:void 0,browser:i,logger:o}))return}async function vBe(e,t){let{testContext:n,logger:o}=e,{browser:r,abortSignal:i,localCodeEvalTools:s,orgId:a,generator:l}=t,c=e.description;n&&(c=await gi({orgId:a,s:c,context:n,localTools:s,signal:i,logger:o})),i.throwIfAborted();let d;try{d=await r.screenshot({clearHighlights:!0,respectActiveFrame:!0,retries:2});}catch(h){throw new te("ActionFailureError",`Failed to take screenshot of page to perform smart waiting. The page may be unresponsive, or your machine might be severely resource constrained. Error: ${h instanceof Error?h.message:h}`)}let p=`data:image/jpeg;base64,${d.toString("base64")}`;i.throwIfAborted();let m=await l.getSmartWaitingDecision({description:c,screenshot:p},{abortSignal:i,loggerTags:jt(o)});return o.debug({result:m},"Got smart waiting result"),m.isPageReady}var RBe=3e4;async function s7(e){return xo().startAsyncSpan("ELEMENT_ASSERTION",async n=>wBe(e,n),{name:"Element check"})}async function wBe(e,t){let{command:n,timeoutMs:o,fixtures:r,disableCache:i}=e,{abortSignal:s}=r,a=()=>qE(n.cache)?n.cache:void 0,l=a(),c=!i&&!!l?.target&&jh(l.target),d=cloneDeep(l),u=(E=false)=>{if(l=a(),!!l)if(E){let C=Tk(d,l);l.target=C.target,l.updatedAt=C.updatedAt;}else {if(!d){l=void 0;return}l.target=d.target,l.updatedAt=d.updatedAt;}},p=Date.now(),m=c?Math.max(o/10,RBe):0,h=p,g=0,f,y=500,S=false;for(;g<2||Date.now()-p<o;){g++,g>1&&await ot(y,s),s?.throwIfAborted(),l=a();let E=g===1,C=c&&Date.now()-h>=m;C&&(h=Date.now());let{result:w,elementWasFound:I}=await r7({cacheToUse:l,skipAISmartWaiting:!E,useAIIfCacheFails:!c||C,params:e});if(f=w,S=S||I,w.success)break;u(),y=Math.min(y*1.25,1e4);}if(!f)throw new te("InternalPlatformError",`Failed to evaluate manual element assertion in ${o}ms.`);if(s?.throwIfAborted(),!f.success){let E=a(),C=E?.target?.memory?{target:{id:-1,memory:E.target.memory}}:void 0,{result:w,elementWasFound:I}=await r7({cacheToUse:C,skipAISmartWaiting:true,useAIIfCacheFails:true,params:e});f=w,S=S||I,f.success||u(true);}let b=a();return f.success&&b?.target&&!S&&(b.target=fT(b.target),b.updatedAt=new Date),t.result={success:f.success,message:f.err?.message},f}async function r7({cacheToUse:e,skipAISmartWaiting:t,useAIIfCacheFails:n,params:o}){let{command:r,disableCache:i,fixtures:s,tracer:a,targetingWrapper:l}=o,{logger:c}=s;if(r.target&&!sd(r.target))throw new Error("Element assertion with x/y is not supported yet");let d=AX(r.assertion),u=IBe(r.assertion),p,m=false,h=cloneDeep(e);try{let{elementInteractedDisplayString:g,result:f,thoughts:y}=await l({tracer:a,command:r,target:r.target,cache:h?.target,action:async S=>xBe(S.locator,o),options:{...r,allowNotActionableNodesOverride:u,allowIneligibleTagRedirect:u,showZeroOpacityElementsOverride:!0,disableCache:i,memory:h?.target?.memory,disableGlobalLocatorRedirect:!0,source:ym(r),skipAISmartWaiting:t,targetName:"target"},retriesWithAI:n?1:0});return p={success:f.success,data:f.data,err:f.err,elementInteractedDisplayString:g,thoughts:y},m=!0,f.success||(c.warn({aiThoughts:y,elementString:g,err:f.err},"Element check found an element but failed"),p={...f,thoughts:y}),{result:p,elementWasFound:m}}catch(g){if(d)return p={success:true,thoughts:`The element described does not exist on the page: ${g.message}`,err:void 0,data:void 0},{result:p,elementWasFound:m};if(!(g instanceof te)||g.reason!="ActionFailureError")throw g;return p={success:false,err:g,data:void 0,thoughts:void 0},c.warn({err:g},"Element check did not find an element and failed"),{result:p,elementWasFound:m}}}function IBe(e){return !(e.type==="ELEMENT_EXISTENCE"&&e.condition==="VISIBLE"&&!e.negated)}async function xBe(e,{command:t,fixtures:n}){return await n.browser.highlight(e),await _Be(e,t.assertion)}async function _Be(e,t){let n=true,o,r;switch(t.type){case "ELEMENT_CONTENT":{let s=await e.textContent()??"";if(r={elementTextContent:mn(s,500,true)},!pT(s,t.value,t.operation,{negated:!!t.negated,ignoreCase:false})){let a=df(t);n=false,o=new te("AssertionFailureError",`The content ${a} '${t.value}': ${s}`);}break}case "ELEMENT_ATTRIBUTE":{r={elementOuterHtml:mn(await e.evaluate(a=>a.cloneNode(false).outerHTML),500,true)};let s=null;try{s=await e.getAttribute(t.attr,{timeout:3e3});}catch(a){o=new te("AssertionFailureError",Q(a)),n=false;break}if(!pT(s,t.value,t.operation,{negated:!!t.negated,ignoreCase:false})){let a=df(t);n=false,t.operation==="EXISTS"?o=new te("AssertionFailureError",`The attribute ${t.attr} ${a}`):o=new te("AssertionFailureError",`The attribute ${t.attr} ${a} '${t.value}': ${s}`);}break}case "ELEMENT_EXISTENCE":{switch(t.condition){case "VISIBLE":{n=await e.evaluate(async(a,l)=>{let c=Date.now();for(;Date.now()-c<l;){await new Promise(u=>setTimeout(u,250));let d=a.getBoundingClientRect();if(!(d.width===0||d.height===0)&&window.getComputedStyle(a).visibility!=="hidden"&&window.getComputedStyle(a).display!=="none")return true}return false},ca*1e3);break}case "EDITABLE":{n=await e.isEditable({timeout:ca*1e3});break}case "EXISTS":{n=true;break}case "ENABLED":{n=await e.isEnabled({timeout:ca*1e3});break}case "FOCUSED":{n=await e.evaluate(a=>a===document.activeElement);break}default:return (a=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})(t.condition)}if(n=t.negated?!n:n,!n){let s=df(t);o=new te("AssertionFailureError",`The element ${s}`);}break}case "ELEMENT_NAME":{let s=await e.evaluate(a=>a.tagName);if(!pT(s,t.value,t.operation,{negated:!!t.negated,ignoreCase:true})){let a=df(t);n=false,o=new te("AssertionFailureError",`The element tag name ${a} '${t.value}': ${s}`);}break}case "ELEMENT_STYLE":{let s=await e.evaluate((a,l)=>window.getComputedStyle(a).getPropertyValue(l),t.property);if(!pT(s,t.value,t.operation,{negated:!!t.negated,ignoreCase:false})){let a=df(t);n=false,t.operation==="EXISTS"?o=new te("AssertionFailureError",`The style property ${t.property} ${a}`):o=new te("AssertionFailureError",`The style property ${t.property} ${a} '${t.value}': ${s}`);}break}default:return (s=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})()}return {thoughts:void 0,success:n,data:r,err:o}}function a7(e){return e.type==="ELEMENT_EXISTENCE"&&e.negated&&e.condition==="EXISTS"}async function lA(e,t){let n=await e.screenshot(t),{width:o,height:r}=imageSize(n);return {buffer:n,width:Math.ceil(o),height:Math.ceil(r)}}async function c7(e){let{command:t,browser:n,logger:o}=e;if(t.target&&!sd(t.target))throw new Error("Visual Diff with x/y is not supported yet");return await n.waitForStability({logger:o}),xo().startAsyncSpan("VISUAL_DIFF",async i=>{try{let s=await MBe(e);return i.result={success:!s.fail,message:s.thoughts},s}catch(s){throw s instanceof te&&(i.result={success:false,message:s.message}),s}},{name:"Compare against golden"})}async function MBe({tracer:e,command:t,disableCache:n,browser:o,targetingWrapper:r,logger:i,screenshotStorage:s}){let a={clearHighlights:true,hideCaret:true},l=t.target&&sd(t.target)?t.target:void 0,c;l?.elementDescriptor?c=(await r({tracer:e,command:t,target:l,cache:t.cache?.target,action:async _=>lA(o,{locator:_.locator,...a}),options:{...t,disableCache:n,disableGlobalLocatorRedirect:true,memory:t.cache?.target?.memory,targetName:"target"}})).result:c=await lA(o,a);let d=await s.prepareGoldenScreenshotForComparison(i,t,c);if((c.height!==d.height||c.width!==d.width)&&i.warn({currHeight:c.height,currWidth:c.width,savedHeight:d.height,savedWidth:d.width},"Mismatched before and after visual diff screenshot sizes"),Math.abs(c.height-d.height)>10||Math.abs(c.width-d.width)>10){let P=`${c.width}x${c.height}`,_=`${d.width}x${d.height}`;return {fail:true,thoughts:`Current screenshot (${P}) does not match saved screenshot dimensions (${_}) - did you change the size of the target or the viewport?`,beforeScreenshotOverride:d.buffer,afterScreenshotOverride:c.buffer,succeedImmediately:false,urlAfterCommand:o.url()}}let u=await Jimp.fromBuffer(c.buffer),p={width:c.width,height:c.height},m=await Jimp.fromBuffer(d.buffer),h={width:d.width,height:d.height},g,f=p.width*p.height,y=h.width*h.height,S=Math.abs(p.height-h.height),b=Math.abs(p.width-h.width);if(f>y){let P=u.cover({w:h.width,h:h.height});c.buffer=await P.getBuffer("image/jpeg"),g="current",c.width=h.width,c.height=h.height;}else if(y>f){let P=m.cover({w:p.width,h:p.height});d.buffer=await P.getBuffer("image/jpeg"),g="saved";}let E={data:Buffer.alloc(c.width*c.height*4),width:c.width,height:c.height},C=t.threshold??.1,I=uFe(mB.decode(d.buffer).data,mB.decode(c.buffer).data,E.data,c.width,c.height,{threshold:C,diffColorAlt:[0,255,0]})/(c.width*c.height)*100,x=I>C*100,v=`Visual diff of ${I.toFixed(2)}% detected, which is ${x?"over":"under"} the threshold of ${C*100}%.`;if(g&&(v+=` The ${g} screenshot was cropped since it was taller by ${S} pixels and wider by ${b} pixels.`),x)throw new te("ActionFailureError",v);return {fail:x,thoughts:v,beforeScreenshotOverride:c.buffer,afterScreenshotOverride:mB.encode(E,75).data,succeedImmediately:false,urlAfterCommand:o.url()}}var NBe=3e4;function LBe(e){if(!e.body)return {};switch(e.body.type){case "json":return {content:e.body.content,contentType:"application/json"};case "form-urlencoded":{let t=new URLSearchParams;return Object.entries(e.body.content).forEach(([n,o])=>{t.append(n,o);}),{content:t.toString(),contentType:"application/x-www-form-urlencoded;charset=UTF-8"}}}}async function d7({command:e,logger:t,baseUrl:n,fetchImplementation:o=fetch}){let r=e.timeout??NBe/1e3,i=Object.fromEntries(Object.entries(e.headers||{}).filter(([h,g])=>h&&g)),s=new URLSearchParams;Object.entries(e.params||{}).filter(([h,g])=>h&&g).forEach(([h,g])=>{s.append(h,g);});let a=s.toString(),l;if(yf(e.url)&&(l=e.url),n&&Sf(e.url,n)&&(l=new URL(e.url,n).toString()),!l)throw new te("ActionFailureError",`Invalid URL: ${e.url}`);let c=l;t.info({url:c,searchParams:a,headers:i,body:e.body,method:e.method},"Making HTTP request");let u=await Ie((async()=>{let h=a?`${c}?${a}`:c;try{let g=LBe(e),f=new Headers(i);return g.contentType&&!f.has("Content-Type")&&f.set("Content-Type",g.contentType),await o(h,{headers:f,method:e.method,body:g.content})}catch(g){throw new Error(`Failed to make HTTP request: ${g}`,{cause:g})}})(),{milliseconds:r*1e3,fallback:()=>{throw new te("ActionFailureError",`Fetch request timed out after ${r} seconds`)}});if(!u.ok){let h;try{h=await u.text();}catch(g){h=`Failed to read response body: ${g}`;}throw new te("ActionFailureError",`Fetch request failed with status ${u.status}: ${h}`)}let p={};u.headers.forEach((h,g)=>{p[g]=h;});let m={status:u.status,headers:p,request:{url:u.url,method:e.method,headers:i}};if(e.body?.type==="json"&&e.body.content)try{m.request.json=JSON.parse(e.body.content);}catch{}if(u.headers.get("content-type")?.includes("json"))try{m.json=await u.json();}catch{}else u.headers.get("content-type")?.includes("text")&&(m.text=await u.text());return m}var kBe=5e3;async function NI({timeout:e=ca,...t}){let n=Date.now(),o=e*1e3,r=o+1e4,i,s=0,a=500;for(;s-n<o;){if(Date.now()-n>r){t.logger.warn("Exceeded max system timeout for page assertion, exiting...");break}t.signal?.throwIfAborted();let l=Date.now();i=await u7(t),s=Date.now();let c=s-l;if(c>1e3&&t.logger.warn({pageAssertDuration:c},"Page assertion took longer than expected"),!i.success)await ot(a,t.signal),a=Math.min(Math.floor(a*1.5),kBe);else return i}return i=await u7(t),i}async function u7(e){return xo().startAsyncSpan("PAGE_ASSERTION",async n=>{let o=await DBe(e);return n.result={success:o.success,message:o.err?.message},o},{name:"Page check"})}async function DBe({assertion:e,browser:t,autoExpandIframes:n}){switch(e.type){case "CONTENT":case "CONTENT":{let r,i=false,s;try{let a;if(n){let l=await t.evaluateFunctionInAllFrames(p7,{value:e.value,negated:!!e.negated,returnHtml:!1});i=e.negated?l.every(c=>c.evaluation):l.some(c=>c.evaluation),a=l.find(c=>c.pageHtml)?.pageHtml;}else ({evaluation:i,pageHtml:a}=await t.evaluateFunctionInPage(p7,{value:e.value,negated:!!e.negated,returnHtml:!0},"checking page content"));if(!i){let l=e.negated?Pd.CONTAINS:Od.CONTAINS;s=new te("AssertionFailureError",`The page ${l} '${e.value}'.`),r=a;}}catch(a){s=new te("AssertionFailureError",`Failed to evaluate page content assertion: ${a instanceof Error?a.message:`${a}`}`);}return {success:i,err:s,data:i||!r?void 0:{pageContent:r}}}default:return (r=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})()}}function p7({value:e,negated:t,returnHtml:n}){let o=document.body.innerHTML,r=o.includes(e)===!t;return o.length>1e4&&(o=o.slice(0,1e4)+"...TRUNCATED"),{evaluation:r,pageHtml:!r&&n?o:void 0}}var FBe=3e4;async function m7({command:e,logger:t,baseUrl:n,fetchImplementation:o=fetch}){let r=e.timeout??FBe/1e3,i=new AbortController,s=Object.fromEntries(Object.entries(e.headers||{}).filter(([u,p])=>u&&p));s["Content-Type"]="application/json";let a;if(yf(e.url)&&(a=e.url),n&&Sf(e.url,n)&&(a=new URL(e.url,n).toString()),!a)throw new te("ActionFailureError",`Invalid URL: ${e.url}`);let c=await Ie((async()=>{try{return await o(a,{headers:s,method:"POST",body:JSON.stringify({query:e.query,variables:e.variables?JSON.parse(e.variables):void 0}),signal:i.signal})}catch(u){throw new Error(`Failed to make HTTP request: ${u}`,{cause:u})}})(),{milliseconds:r*1e3});if(!c)throw new te("ActionFailureError",`GraphQL request timed out after ${r} seconds`);if(!c.ok){let u,p=await c.text();try{u=JSON.parse(p);}catch{throw new te("ActionFailureError",`GraphQL request failed with status ${c.status}: ${p}`)}throw u?.errors?.length&&u?.errors[0]?.message?new te("ActionFailureError",`GraphQL request failed with status ${c.status}: ${u.errors[0].message}`):new te("ActionFailureError",`GraphQL request failed with status ${c.status}: ${p}`)}let d={};return c.headers.forEach((u,p)=>{d[p]=u;}),{status:c.status,headers:d,json:await c.json()}}var ly=class{orgId;options;storage;localCodeEvalTools;uploadedFileStorage;visualDiffScreenshotStorage;browser;generator;executeAbortController=new AbortController;logger;executionOptionsStack=[];recordAbortController=null;registeredListeners={};recordedRequests={};constructor({browser:t,generator:n,logger:o,storage:r,orgId:i,localCodeEvalTools:s,uploadedFileStorage:a,visualDiffScreenshotStorage:l,options:c}){this.orgId=i,this.options=c,this.browser=t,this.browser.registerAbortSignal(this.executeAbortController.signal),this.storage=r,this.uploadedFileStorage=a,this.visualDiffScreenshotStorage=l,this.localCodeEvalTools=s,this.generator=n,this.logger=o;}setOpen(){this.executeAbortController=new AbortController,this.browser.registerAbortSignal(this.executeAbortController.signal);}setClosed(){this.executeAbortController.abort();}throwIfClosed(){this.executeAbortController.signal.throwIfAborted();}get closed(){return this.executeAbortController.signal.aborted}async withExecutionOptions(t,n){this.executionOptionsStack.push(t);try{return await n()}finally{this.executionOptionsStack.pop();}}getCurrentExecutionOptions(){return this.executionOptionsStack[this.executionOptionsStack.length-1]??{}}async evaluateAiAction({goal:t,startingScreenshot:n,history:o,disableCache:r,langfuseSessionId:i,lastError:s,logger:a=this.logger}){let[l,c]=await Promise.all([Uc(this.browser,{abortSignal:this.executeAbortController.signal,skipWait:true,skipWaitForPageLoad:true,logger:a}),this.browser.screenshot({retries:1,clearHighlights:true})]),d=`data:image/jpeg;base64,${c.toString("base64")}`,u=await Qs({type:"ai-action",description:t,screenshot:d,serializedTree:l.serializedTree,tree:l.tree,fixtures:{generator:this.generator,signal:this.executeAbortController.signal,logger:a,orgId:this.orgId}}),p={url:this.browser.url(),browserState:u,startingScreenshot:n,history:o,goal:t,screenshot:d,lastError:s};return await this.generator.getMultiturnAiActionEvaluation(p,{disableCache:r,abortSignal:this.executeAbortController.signal,loggerTags:{...jt(a)},langfuseSessionId:i})}async promptToCommand({goal:t,startingScreenshot:n,history:o,actionHint:r,disableCache:i,logger:s=this.logger,langfuseSessionId:a}){let l=this.browser.url(),[c,d]=await Promise.all([Uc(this.browser,{abortSignal:this.executeAbortController.signal,skipWait:true,skipWaitForPageLoad:true,logger:s}),this.browser.screenshot({retries:1,clearHighlights:true})]),u=`data:image/jpeg;base64,${d.toString("base64")}`,p=await Qs({type:"ai-action",description:t,screenshot:u,serializedTree:c.serializedTree,tree:c.tree,fixtures:{generator:this.generator,signal:this.executeAbortController.signal,logger:s,orgId:this.orgId}}),m={url:l,browserState:p,startingScreenshot:n,history:o,goal:t,actionHint:r,screenshot:u};try{return await this.generator.getMultiturnAiActionCommand(m,{disableCache:i,abortSignal:this.executeAbortController.signal,loggerTags:{...jt(s)},langfuseSessionId:a})}catch(h){throw new te("InternalWebAgentError",`Error generating command: ${h instanceof Error?h.message:h}`,{errOptions:{cause:h}})}}async getBrowserState(t){return Uc(this.browser,t)}async locateElement(t){return await pB(t,this.getControllerFixtures())}async locateElementWithSelector(t,n){return La({action:async()=>{let o=await this.browser.resolveHardcodedCssSelector({selector:t,timeoutMs:2e3,logger:this.logger});return {thoughts:"Located element with selector",target:{id:-1,selector:t,targetSource:"USER_CSS_SELECTOR",targetUpdateTime:new Date().toUTCString()},resolution:o}},frameConfig:n?{type:"url",url:n}:void 0,browser:this.browser,logger:this.logger})}getControllerFixtures(){return {browser:this.browser,generator:this.generator,logger:this.logger,orgId:this.orgId,storage:this.storage,localCodeEvalTools:this.localCodeEvalTools,abortSignal:this.executeAbortController.signal}}shouldUseMemory(){return this.options?.useMemory??true}async wrapMultiElementTargetingCommand({tracer:t,command:n,targetNames:o,descriptions:r,caches:i,action:s,options:a,retriesWithAI:l=1}){let c=[];for(let d=0;d<r.length;d++){let u=r[d],p=await this.wrapElementTargetingCommand({tracer:t,command:n,target:u,cache:i[d],action:async m=>m,options:{...a,targetName:o[d]}});c.push(p);}try{let d=await s(...c.map(m=>m.result)),u=m=>m==="fromTarget"?"From Target":m==="toTarget"?"To Target":"Target",p=c.map((m,h)=>m.thoughts?`${u(o[h])}: ${m.thoughts}`:void 0).filter(m=>!!m).join(" -------------- ")||void 0;return {result:d,elementInteractedDisplayStrings:c.map(m=>m.elementInteractedDisplayString),thoughts:p}}catch(d){if(this.throwIfClosed(),l>0)return this.logger.warn({err:d},"Failed to execute action with multiple cached targets, retrying with AI"),this.wrapMultiElementTargetingCommand({tracer:t,command:n,targetNames:o,descriptions:r,caches:r.map(()=>{}),action:s,options:a,retriesWithAI:l-1});throw new te("ActionFailureError",d.message,{errOptions:{cause:d}})}}async wrapHardcodedCssTargetingCommandHelper({target:t,action:n,options:o,command:r}){let i=this.logger.child({commandId:r.id}),{targetName:s}=o;if(t.type!=="description")throw new te("ActionFailureError","Cannot use selector with non-description target");let a,l=Date.now(),c=Date.now();for(;Date.now()-c<this.browser.smartWaitingTimeout;){l=Date.now();try{let d=await this.browser.resolveHardcodedCssSelector({selector:t.elementDescriptor,targetName:s,logger:i});return {result:await n({locator:d.locator,originalElementLocationResult:void 0,serverSideBoundingBox:null}),elementInteractedDisplayString:d.displayString}}catch(d){if(d.name==="AbortError")throw d;a=d,i.warn({err:d},"Failed to action on hardcoded css selector"),Date.now()-l<500&&await ot(500);}}throw a}async scrollIntoViewAndResolveFinalTarget(t){let{resolutionResult:n,disableGlobalLocatorRedirect:o,logger:r}=t,i=xo(),s=!o&&this.browser.userBrowserSettings.globalLocatorRedirect!==false;(this.browser.userBrowserSettings.visualActions||s)&&await i.startAsyncSpan("SCROLL_ELEMENT_INTO_VIEW",async()=>{await this.browser.scrollIntoViewIfNeeded(n.locator);});let a;return s&&(a=await i.startAsyncSpan("LOCATOR_REDIRECT",async l=>{let{targetingResult:c,metadata:d}=await this.browser.performTargetRedirection(n,r);if(l.result=d,d.outcome==="redirected to new element"&&c&&i.storeTraceAsset&&!this.browser.userBrowserSettings.disableBrowserMonitoring){let u=randomUUID();(async()=>{try{let p=await this.browser.screenshot({locator:c.locator,clearHighlights:!0,boundingBoxOverride:c.serverSideBoundingBox??void 0});i.storeTraceAsset?.({snapshotId:u,data:p});}catch(p){r.debug({err:p},"Failed to capture element screenshot for redirect trace");}})(),l.elementScreenshotSnapshotId=u;}return c})),a||(a={locator:n.locator,serverSideBoundingBox:await n.locator.boundingBox({timeout:Qe}),originalElementLocationResult:n.originalElementLocationResult}),a}async resolveCachedTargetForAction(t){let{cache:n,options:o,logger:r}=t,s=await xo().startAsyncSpan("CACHE_RESOLUTION",async l=>{l.targetSource=n.targetSource,l.attributes.smartWaitingTimeoutMs=this.browser.smartWaitingTimeout;try{let c=await this.browser.resolveTarget(n,{allowNotActionableNodesOverride:o.allowNotActionableNodesOverride,logger:r,signal:this.executeAbortController.signal,...o.resolveTargetOptions,acceptElementMovedError:o.force});l.attributes.targetDisplayString=c.displayString,l.attributes.decisions=c.decisions;let d=c.decisions.find(u=>u.matched);return d&&(l.resolutionMethod=d.type),c}catch(c){throw c instanceof Li&&(l.cacheMissReason=c.cacheMissReason,l.attributes.decisions=c.decisions),c}}),a=await this.scrollIntoViewAndResolveFinalTarget({resolutionResult:s,disableGlobalLocatorRedirect:o.disableGlobalLocatorRedirect,logger:r});return o.force||await s.revalidator?.(),{resolutionResult:s,finalTarget:a}}async wrapElementTargetingCommand(t){return await La({action:()=>this.wrapElementTargetingCommandHelper(t),frameConfig:t.options.iframeUrl?{type:"url",url:t.options.iframeUrl}:void 0,browser:this.browser,logger:this.logger})}async wrapElementTargetingCommandHelper(t){let{tracer:n,target:o,action:r,options:i,command:s,finalAttempt:a=false,originalCache:l=t.cache}=t,{retriesWithAI:c=1}=t,{disableCache:d,useSelector:u,targetName:p}=i,m=xo(),h=this.logger.child({commandId:s.id}),g=this.shouldUseMemory(),f=cloneDeep(t.cache);if((!f||d)&&!XG(o))throw new te("ActionFailureError","Cannot target element with no cached data or element descriptor");if(u)return this.wrapHardcodedCssTargetingCommandHelper(t);let y=false,S;d&&(h.info("Cache explicitly disabled for this step"),y=true,S="Cache explicitly disabled",f=void 0);let b=W9({cache:f,description:o.elementDescriptor,disableSecondaryCacheResolution:!!this.browser.userBrowserSettings.disableSecondaryCacheResolution,logger:h});f=b.cache,y=y||b.cacheBustedBeforeAction,!S&&b.cacheBustReason&&(S=b.cacheBustReason);let E=true;if(!z9(f))return c--,E=false,this.executeTargetingCommandWithAI({tracer:m,stepTracer:n,target:o,options:i,command:s,action:r,originalCache:l,logger:h,useMemory:g,cacheBustedBeforeAction:y,cacheBustReason:S});try{let{resolutionResult:C,finalTarget:w}=await this.resolveCachedTargetForAction({cache:f,options:i,logger:h}),I=await r(w);if(Tt.increment("cache_target_resolution_v2",1,["outcome:hit","platform:web",`hasRequirements:${!!f.requirements}`,`hasAdditionalElements:${!!f.additionalElements}`,`orgId:${this.orgId}`,"cliVersion:3.12.0"]),DR({cmd:s,key:p,newTarget:f,logger:h,updatedWithAI:!1}),E){let x=C.decisions.filter(v=>v.matched);if(x.length!==1)h.warn({decisions:C.decisions},"Expected exactly 1 matching method for element location, got more or less");else {let v=x[0].type;n.recordTargetAutoHeal({healType:v});}}return {result:I,elementInteractedDisplayString:C.displayString}}catch(C){this.throwIfClosed();let w=PO(C);if(w&&!a)return h.warn({err:C},"Encountered error that is retryable with cache"),this.wrapElementTargetingCommandHelper({tracer:n,command:s,target:o,action:r,cache:l,originalCache:l,retriesWithAI:c,finalAttempt:true,options:i});if(C instanceof te&&!w)throw h.warn({err:C},"Failed to execute command with target (fatal)"),C;if(c>0&&o){h.info({err:C},"Failed to execute action with cached target, retrying with AI"),Tt.increment("cache_target_resolution_v2",1,["outcome:miss","platform:web",`hasRequirements:${!!f.requirements}`,`hasAdditionalElements:${!!f.additionalElements}`,`orgId:${this.orgId}`,"cliVersion:3.12.0",`missReason:${C instanceof Li?C.cacheMissReason:"unknown"}`]);let I;f.memory&&zE(f.memory)&&(I=f.memory);let x=C instanceof Li&&C.cacheMissReason==="failing-ldist";return this.wrapElementTargetingCommandHelper({tracer:n,command:s,target:o,cache:void 0,action:r,originalCache:l,retriesWithAI:c,finalAttempt:true,options:{...i,memory:I,targetHealingInProgress:true},skipInitialLocateWait:x})}throw new te("ActionFailureError",`Failed to execute interactive command: ${C instanceof Error?C.message:`${C}`}`,{errOptions:{cause:C}})}}async executeTargetingCommandWithAI(t){let{tracer:n,stepTracer:o,target:r,options:i,command:s,action:a,originalCache:l,logger:c,useMemory:d,cacheBustedBeforeAction:u,cacheBustReason:p,skipInitialLocateWait:m}=t;c.info({description:r.elementDescriptor,targetHealingInProgress:i.targetHealingInProgress,cacheBustedBeforeAction:u,memory:i.memory,useMemory:d},"Prompting AI for an updated element location");let h=false;(u||!l)&&!this.getCurrentExecutionOptions().skipAISmartWaiting&&!i.skipAISmartWaiting?(await n.startAsyncSpan("SMART_WAITING",async()=>await o7({description:r.elementDescriptor,iframeUrl:i.iframeUrl,source:i.source,logger:c,allowNotActionableNodesOverride:i.allowNotActionableNodesOverride},this.getControllerFixtures())),h=true):(u||!l)&&(i.skipAISmartWaiting?c.debug("Skipping AI smart waiting for this targeting attempt"):c.debug("Skipping AI smart waiting due to controller execution options"));let g=2;for(let f=1;f<=g;f++){let y=false,S=this.browser.getActiveFrameConfig(),b=i.force||f>1;try{let E;try{E=await pB({description:r.elementDescriptor,disableCache:!!i.disableCache,iframeUrl:i.iframeUrl,source:i.source,useMemory:d,memory:d?i.memory:void 0,allowNotActionableNodesOverride:i.allowNotActionableNodesOverride,allowIneligibleTagRedirect:i.allowIneligibleTagRedirect,showZeroOpacityElementsOverride:i.showZeroOpacityElementsOverride,logger:c,skipWait:h||m,isAutoHeal:!!i.targetHealingInProgress,cacheBustReason:p,acceptElementMovedError:b},this.getControllerFixtures());}catch(I){if(I instanceof og&&I.updatedLocatorMemory){let x={id:-1,...l,memory:I.updatedLocatorMemory};DR({cmd:s,key:i.targetName,newTarget:x,logger:c,updatedWithAI:!0});}throw I}E.frameConfig&&(this.browser.setActiveFrameConfig(E.frameConfig),y=!0);let C=await this.scrollIntoViewAndResolveFinalTarget({resolutionResult:E.resolution,disableGlobalLocatorRedirect:i.disableGlobalLocatorRedirect,logger:c}),w=await a(C);return DR({cmd:s,key:i.targetName,newTarget:E.target,logger:c,updatedWithAI:!0}),i.targetHealingInProgress&&(o.recordTargetAutoHeal({healType:"AI"}),E.target.targetSource="AI_HEALED",E.target.targetUpdateTime=new Date().toUTCString(),E.target.targetUpdateLoggerTags=jt(c)),{result:w,elementInteractedDisplayString:E.resolution.displayString,thoughts:E.thoughts}}catch(E){if(y&&this.browser.setActiveFrameConfig(S),this.throwIfClosed(),f<g&&PO(E)){c.warn({err:E,aiAttempt:f},"Encountered retryable AI targeting error; retrying with AI once");continue}throw E instanceof te?E:new te("ActionFailureError",E.message)}}throw new te("ActionFailureError","Failed to execute AI targeting after retry")}async screenshotWithDimensions(t){return lA(this.browser,t)}async executePresetCommand(t,n,o,r,i){this.options?.slowMoMs&&await ot(this.options.slowMoMs);let s=await this.browser.getOpenPages(),a=this.browser.url(),l;try{l=await this.resolveCommandTemplateStrings(n,o);}catch(c){throw this.throwIfClosed(),new te("ActionFailureError",`Failed to substitute template strings in command: ${c.message}`,{errOptions:{cause:c}})}try{let c=await He({name:`cli.command.${n.type}`,attributes:{"momentic.command_type":n.type,"momentic.command_id":n.id},fn:()=>this.executePresetCommandHelper(t,n,o,r,i)});return this.options?.autoFollowNewTabs&&await V9({beforeUrl:a,command:n,beforePages:s.map(d=>d.url),browser:this.browser,logger:this.logger}),c}catch(c){throw c.name!=="AbortError"&&this.logger.error({err:c},"Error thrown in action controller"),c}finally{j6(n,l);}}createCallbacksForBrowser(t){return {createIsolatedFolder:()=>GF(t)}}async traceBrowserInteraction(t,n,o){return xo().startAsyncSpan("BROWSER_INTERACTION",async i=>n(i),{name:t,...o})}async resolveCommandTemplateStrings(t,n){return hI({obj:t,context:n,bannedKeys:["type","a11yData","thoughts","cache","code"],orgId:this.orgId,logger:this.logger,signal:this.executeAbortController.signal,localTools:this.localCodeEvalTools})}async executePresetCommandHelper(t,n,o,r,i){r=r||"disableCache"in n&&!!n.disableCache;let s=this.logger.child({commandId:n.id});switch(n.type){case "SUCCESS":{let a=n.condition;return a?.assertion.trim()?MI({command:a,fixtures:this.getControllerFixtures(),useMemory:this.shouldUseMemory(),logger:s,recoveryHint:i}):{succeedImmediately:false,urlAfterCommand:this.browser.url()}}case "AI_ASSERTION":{if(!n.assertion.trim())throw new te("ActionFailureError","Missing assertion");if(n.timeout&&n.timeout>1800)throw new te("AssertionFailureError",`AI check timeout of ${n.timeout} exceeds the maximum allowed value of 30 minutes.`);return MI({command:n,fixtures:this.getControllerFixtures(),useMemory:this.shouldUseMemory(),logger:s,recoveryHint:i})}case "AI_EXTRACT":return n7({command:n,logger:s,fixtures:this.getControllerFixtures(),disableCache:r});case "NAVIGATE":if(!yf(n.url)&&!Sf(n.url,this.browser.baseUrl))throw new te("ActionFailureError",`Invalid URL provided to navigate command: ${n.url}`);await this.traceBrowserInteraction("Navigate",()=>this.browser.navigate({url:n.url,loadTimeoutMs:n.loadTimeout?n.loadTimeout*1e3:void 0}));break;case "DIALOG":this.browser.registerDialogHandler(n.action);break;case "CAPTCHA":throw new te("UserConfigurationError","Captcha solving is no longer available on Momentic");case "GO_BACK":await this.traceBrowserInteraction("Go back",()=>this.browser.goBack());break;case "GO_FORWARD":await this.traceBrowserInteraction("Go forward",()=>this.browser.goForward());break;case "SCROLL_LEFT":case "SCROLL_RIGHT":case "SCROLL_DOWN":case "SCROLL_UP":{let a,l;if(n.target&&$l(n.target)){let u=ei(n.target.pixels);await this.browser.hoverUsingVisualCoordinates(u);}else if(n.target&&n.target.elementDescriptor.trim()){let{elementInteractedDisplayString:u,thoughts:p}=await this.wrapElementTargetingCommand({tracer:t,command:n,target:n.target,cache:n.cache?.target,action:m=>this.browser.hover(m),options:{...n,targetName:"target",disableGlobalLocatorRedirect:true,disableCache:r}});a=u,l=p;}let c=this.browser.getViewport()?.height??$r.height,d=this.browser.getViewport()?.width??$r.width;switch(n.type){case "SCROLL_UP":await this.traceBrowserInteraction("Scroll up",()=>this.browser.scrollVertical(-(n.deltaY??c)));break;case "SCROLL_DOWN":await this.traceBrowserInteraction("Scroll down",()=>this.browser.scrollVertical(n.deltaY??c));break;case "SCROLL_LEFT":await this.traceBrowserInteraction("Scroll left",()=>this.browser.scrollHorizontal(-(n.deltaX??d)));break;case "SCROLL_RIGHT":await this.traceBrowserInteraction("Scroll right",()=>this.browser.scrollHorizontal(n.deltaX??d));break}return {succeedImmediately:false,urlAfterCommand:this.browser.url(),elementInteracted:a,thoughts:l}}case "WAIT_FOR_URL":{if(n.timeout&&n.timeout>1800)throw new te("UserConfigurationError",`Wait for URL timeout of ${n.timeout} exceeds the maximum allowed value of 30 minutes.`);let a=n.matcher;await this.browser.waitForUrl({beforeUrl:this.browser.url(),matcher:a},{timeout:n.timeout?n.timeout*1e3:void 0,negated:n.negated,caseInsensitive:n.caseInsensitive});break}case "WAIT":{if(n.delay>1800)throw new te("UserConfigurationError",`Wait timeout of ${n.delay} seconds exceeds the maximum allowed value of 30 minutes`);let a=n.delay*1e3;await ot(a,this.executeAbortController.signal);break}case "REFRESH":await this.traceBrowserInteraction("Refresh",()=>this.browser.refresh({loadTimeoutMs:n.loadTimeout?n.loadTimeout*1e3:void 0}));break;case "CLICK":{if($l(n.target)){let p=ei(n.target.pixels),m={...n,relativePosition:n.relativePosition?ei(n.relativePosition):void 0};await this.traceBrowserInteraction("Click",()=>this.browser.clickUsingVisualCoordinates(p,m),{coordinates:p});break}let a=this.browser.url(),{elementInteractedDisplayString:l,result:c,thoughts:d}=await this.wrapElementTargetingCommand({tracer:t,target:n.target,command:n,cache:n.cache?.target,action:p=>this.traceBrowserInteraction("Click",async m=>{let h={...n,relativePosition:n.relativePosition?ei(n.relativePosition):void 0},g=await this.browser.click(p,this.createCallbacksForBrowser(this.orgId),h);return g.coordinates&&(m.coordinates=g.coordinates),g},{selector:p.locator.toString()}),options:{...n,targetName:"target",disableCache:r}}),u={urlAfterCommand:this.browser.url(),succeedImmediately:false,elementInteracted:l,thoughts:d,data:c.downloadedFile?{downloadedFile:c.downloadedFile}:void 0};return WR(a,u.urlAfterCommand)&&(u.succeedImmediately=true,u.succeedImmediatelyReason="URL changed"),u}case "COPY":return await this.browser.copy(n.value),{succeedImmediately:false,data:n.value,urlAfterCommand:this.browser.url()};case "PASTE":{await this.browser.paste();break}case "DRAG":{if($l(n.fromTarget)&&$l(n.toTarget)){let c=ei(n.fromTarget.pixels),d=ei(n.toTarget.pixels);await this.traceBrowserInteraction("Drag",()=>this.browser.dragAndDropUsingVisualCoordinates(c,d,{hoverDurationMs:n.hoverSeconds?n.hoverSeconds*1e3:void 0}),{coordinates:c});break}if($l(n.fromTarget)||$l(n.toTarget))throw new Error("Drag and drop targets must be both coordinates or both descriptions");let{elementInteractedDisplayStrings:a,thoughts:l}=await this.wrapMultiElementTargetingCommand({tracer:t,command:n,targetNames:["fromTarget","toTarget"],descriptions:[n.fromTarget,n.toTarget],caches:[n.cache?.fromTarget,n.cache?.toTarget],action:(c,d)=>this.traceBrowserInteraction("Drag",()=>this.browser.dragAndDrop(c,d,{hoverDurationMs:n.hoverSeconds?n.hoverSeconds*1e3:void 0,steps:n.steps})),options:{...n,disableCache:r}});return {succeedImmediately:false,urlAfterCommand:this.browser.url(),elementInteracted:a[0],thoughts:l}}case "MOUSE_DRAG":{let a=parseInt(n.deltaX),l=parseInt(n.deltaY),c=n.steps??5;if(isNaN(a)||isNaN(l))throw new te("ActionFailureError",`Invalid pixel values passed to mouse drag command: (${n.deltaX}, ${n.deltaY})`);if(n.target&&$l(n.target)){let p=ei(n.target.pixels);await this.traceBrowserInteraction("Mouse drag",()=>this.browser.mouseDragUsingVisualCoordinates({deltaX:a,deltaY:l,steps:c,fromTarget:p}),{coordinates:p});break}let d,u;if(n.target?.elementDescriptor){let{elementInteractedDisplayString:p,thoughts:m}=await this.wrapElementTargetingCommand({tracer:t,command:n,target:n.target,cache:n.cache?.target,action:async h=>this.traceBrowserInteraction("Mouse drag",()=>this.browser.mouseDrag(a,l,c,h.locator,{force:n.force})),options:{...n,targetName:"target",disableCache:r}});d=p,u=m;}else await this.traceBrowserInteraction("Mouse drag",()=>this.browser.mouseDrag(a,l,c,void 0,{force:n.force}));return {succeedImmediately:false,urlAfterCommand:this.browser.url(),elementInteracted:d,thoughts:u}}case "SELECT_OPTION":{if(!sd(n.target))throw new Error("Select with x/y is not supported yet");let a=n.target.elementDescriptor,l=n.choice,{elementInteractedDisplayString:c,thoughts:d}=await this.wrapElementTargetingCommand({tracer:t,command:n,target:{type:"description",elementDescriptor:a},cache:n.cache?.target,action:u=>this.traceBrowserInteraction("Select option",()=>this.browser.selectOption(u,l,n.force),{value:l.type==="LABEL"?l.label:l.type==="VALUE"?l.value:l.index}),options:{...n,targetName:"target",disableCache:r,source:ym(n)}});return {succeedImmediately:false,urlAfterCommand:this.browser.url(),elementInteracted:c,thoughts:d}}case "TAB":{let a={loadTimeoutMs:n.loadTimeout?n.loadTimeout*1e3:void 0,retry:true};await this.browser.switchToPage(n.action,a);break}case "NEW_TAB":await this.browser.createNewTab(n.url,{loadTimeoutMs:n.loadTimeout?n.loadTimeout*1e3:void 0});break;case "CLOSE_TAB":await this.browser.closePage(n.action,{retry:true});break;case "COOKIE":{if(!n.value)break;let a=await this.browser.setCookie(n.value);s.debug({results:a},"Set cookies");break}case "LOCAL_STORAGE":if(!n.value||!n.key)break;await this.browser.setLocalStorage(n.key,n.value);break;case "JAVASCRIPT":{let a;try{n.environment==="BROWSER"?(a=await this.browser.evaluateCodeInPage({code:n.code,fragment:n.fragment??!1,context:o.toObjectCopy(),timeoutMs:n.timeout?n.timeout*1e3:void 0}),s.info({result:a},"Executed JavaScript in browser")):a=await Sp({orgId:this.orgId,code:n.code,fragment:!!n.fragment,context:o,timeoutMs:n.timeout?n.timeout*1e3:void 0,logger:s,localTools:this.localCodeEvalTools,signal:this.executeAbortController.signal,callbacks:{onPersistentVariableUpdates:async l=>{if(!this.options?.scratchPadId){s.warn({updates:l},"Got persistent variable updates but scratch pad is not available");return}await this.storage.savePersistentVariables?.({scratchPadId:this.options?.scratchPadId,orgId:this.orgId,updates:l,logger:s});}}});}catch(l){throw this.throwIfClosed(),new te("ActionFailureError",l instanceof Error?l.message:`${l}`,{errOptions:{cause:l}})}try{JSON.stringify(a);}catch(l){throw new te("ActionFailureError",`Return value is not serializable: ${l instanceof Error?l.message:`${l}`}`,{errOptions:{cause:l}})}return {urlAfterCommand:this.browser.url(),succeedImmediately:false,data:a}}case "TYPE":{if(n.target&&$l(n.target)){let m=ei(n.target.pixels),h={...n,relativePosition:n.relativePosition?ei(n.relativePosition):void 0};await this.browser.clickUsingVisualCoordinates(m,h),await this.traceBrowserInteraction("Type",()=>this.browser.type(n.value,{force:n.force,clearContent:n.clearContent,forceClearContent:n.forceClearContent,delay:n.delay,pressEnter:n.pressEnter},true),{value:n.value});break}let a=this.browser.url(),l,c,d=cloneDeep(n.target),u=this.browser.userBrowserSettings.globalLocatorRedirect===void 0||this.browser.userBrowserSettings.globalLocatorRedirect==="always";if(d){let{elementInteractedDisplayString:m,thoughts:h}=await this.wrapElementTargetingCommand({tracer:t,command:n,target:d,cache:n.cache?.target,action:g=>this.traceBrowserInteraction("Type",()=>this.browser.typeIntoTarget(n.value,g,{force:n.force,clearContent:n.clearContent,forceClearContent:n.forceClearContent,delay:n.delay,pressEnter:n.pressEnter,relativePosition:n.relativePosition}),{value:n.value,selector:g.locator.toString()}),options:{...n,targetName:"target",disableCache:r,disableGlobalLocatorRedirect:!u,source:ym(n)}});l=m,c=h;}else await this.traceBrowserInteraction("Type",()=>this.browser.type(n.value,{force:n.force,clearContent:n.clearContent,forceClearContent:n.forceClearContent,delay:n.delay,pressEnter:n.pressEnter},true),{value:n.value});let p={urlAfterCommand:this.browser.url(),succeedImmediately:false,elementInteracted:l,thoughts:c};return WR(a,p.urlAfterCommand)&&(p.succeedImmediately=true,p.succeedImmediatelyReason="URL changed"),p}case "HOVER":{if($l(n.target)){let c=ei(n.target.pixels);await this.traceBrowserInteraction("Hover",()=>this.browser.hoverUsingVisualCoordinates(c),{coordinates:c});break}let{elementInteractedDisplayString:a,thoughts:l}=await this.wrapElementTargetingCommand({tracer:t,command:n,target:n.target,cache:n.cache?.target,action:c=>this.traceBrowserInteraction("Hover",()=>this.browser.hover(c,{relativePosition:n.relativePosition?ei(n.relativePosition):void 0}),{selector:c.locator.toString()}),options:{...n,targetName:"target",disableCache:r}});return {succeedImmediately:false,urlAfterCommand:this.browser.url(),elementInteracted:a,thoughts:l}}case "FOCUS":{if(!sd(n.target))throw new Error("Focus with x/y is not supported yet");let{elementInteractedDisplayString:a,thoughts:l}=await this.wrapElementTargetingCommand({tracer:t,command:n,target:n.target,cache:n.cache?.target,action:c=>this.browser.focus(c),options:{...n,targetName:"target",disableCache:r}});return {succeedImmediately:false,urlAfterCommand:this.browser.url(),elementInteracted:a,thoughts:l}}case "BLUR":{if(n.target&&!sd(n.target))throw new Error("Blur with x/y is not supported yet");if(!n.target||!n.target.elementDescriptor)return await this.browser.blur(null),{succeedImmediately:false,urlAfterCommand:this.browser.url()};let{elementInteractedDisplayString:a,thoughts:l}=await this.wrapElementTargetingCommand({tracer:t,target:n.target,command:n,cache:n.cache?.target,action:c=>this.browser.blur(c),options:{...n,targetName:"target",disableCache:r}});return {succeedImmediately:false,urlAfterCommand:this.browser.url(),elementInteracted:a,thoughts:l}}case "PRESS":{let a=this.browser.url();await this.traceBrowserInteraction("Press key",()=>this.browser.press(n.value,{repeat:n.repeat,convertMeta:n.convertMeta??true,delayMs:n.delayMs}),{value:n.value});let l={urlAfterCommand:this.browser.url(),succeedImmediately:false};return WR(a,l.urlAfterCommand)&&(l.succeedImmediately=true,l.succeedImmediatelyReason="URL changed"),l}case "KEY_DOWN":return await this.browser.keyDown(n.value,{convertMeta:n.convertMeta??true}),{urlAfterCommand:this.browser.url(),succeedImmediately:false};case "KEY_UP":return await this.browser.keyUp(n.value,{convertMeta:n.convertMeta??true}),{urlAfterCommand:this.browser.url(),succeedImmediately:false};case "REQUEST":{let a=new CookieJar,l=UBe(fetch,a),c;try{c=new URL(n.url).hostname;}catch{}let d=await d7({command:n,baseUrl:this.browser.baseUrl,logger:s,fetchImplementation:l});return {data:CS.parse({...d,cookies:Qz(a,c)}),succeedImmediately:false,urlAfterCommand:this.browser.url()}}case "GRAPHQL_REQUEST":return {data:await m7({command:n,baseUrl:this.browser.baseUrl,logger:s}),succeedImmediately:false,urlAfterCommand:this.browser.url()};case "VISUAL_DIFF":return c7({tracer:t,command:n,disableCache:r,browser:this.browser,logger:s,screenshotStorage:this.visualDiffScreenshotStorage,targetingWrapper:a=>this.wrapElementTargetingCommand(a)});case "FILE_UPLOAD":{let a,l;if(n.fileSource.type==="URL"?(l=n.fileSource.url,a=await x8({uri:n.fileSource.url,logger:s,orgId:this.orgId})):n.fileSource.type==="USER_FILE"&&(l=n.fileSource.name,a=await this.uploadedFileStorage?.getFileForUpload(n.fileSource.name,this.orgId)),!a)throw new te("UserConfigurationError",`Attempted to use non-existent file for upload step: ${l}`);await this.browser.setFileChooserHandler({...a,filename:n.filename});break}case "AUTH_SAVE":{let a=await this.browser.saveAuthState();if(n.storageState&&ap(n.storageState)){let l=Jn__default.resolve(n.storageState);br__default.mkdirSync(Jn__default.dirname(l),{recursive:true}),br__default.writeFileSync(l,`${JSON.stringify(a,null,2)}
|
|
5763
|
+
`),tokenLength:u}),a.forEach((g,f)=>{let y=g.ids[0],S=g.ids[g.ids.length-1];e.debug({tokenLength:g.tokenLength,minId:y,maxId:S},`Chunk for page filtering (index ${f+1}/${a.length})`);}),{chunks:a}}var X9=5e6,pBe=1e5,mBe=3e4,hBe=6e4,gBe=1e5;async function Qs(e){let{fixtures:t}=e,{logger:n}=t,o=e.tree,r=e.serializedTree,i=At(r);if(i>X9)throw new te("UserConfigurationError",`Page accessibility tree is too large for AI page filtering (${i} tokens). Maximum supported size is ${X9} tokens.`);if(i>pBe){let s=J9({serializedTree:r,options:K9,logger:n}),a=randomUUID();o=await fBe({...e,chunks:s.chunks,callId:a}),r=o.serialize();let l=At(r);n.info({oldTokens:i,newTokens:l,langfuseCallId:a},"Filtered page using AI chunk ranking");}return r}async function fBe({type:e,callId:t,chunks:n,description:o,fixtures:r,tree:i}){let{generator:s,signal:a,logger:l}=r,c=await s.rankChunksWithAi({chunks:n,description:o,type:e,softTokenLimit:mBe,mediumTokenLimit:hBe,hardTokenLimit:gBe,callId:t},{abortSignal:a,logger:l,loggerTags:jt(l)}),d=[];return n.forEach((p,m)=>{c.indices.includes(m)&&(d=d.concat(p.ids));}),i.pruneUsingRelevantIds(new Set(d))}async function pB(e,t){if(!e.description)throw new te("UserConfigurationError","Cannot locate element with empty description");return La({action:async()=>SBe(e,t),frameConfig:e.iframeUrl?{type:"url",url:e.iframeUrl}:void 0,browser:t.browser,logger:e.logger})}async function SBe(e,t){let{disableCache:n,testContext:o,filterByViewport:r,skipWait:i,source:s,memory:a,logger:l,allowNotActionableNodesOverride:c,allowIneligibleTagRedirect:d,showZeroOpacityElementsOverride:u,skipSavingVisualAttributes:p,isAutoHeal:m,cacheBustReason:h,acceptElementMovedError:g}=e,{orgId:f,browser:y,localCodeEvalTools:S,generator:b,abortSignal:E}=t,C=e.description,w=xo(),I=e.useMemory&&!n;o&&(C=await gi({orgId:f,s:C,context:o,localTools:S,signal:E,logger:l})),s&&(C=$9(C,s));let{serializedTree:x,tree:v}=await w.startAsyncSpan("GET_PAGE_STATE",async()=>Uc(y,{allowNotActionableNodesOverride:c,allowIneligibleTagRedirect:d,showZeroOpacityElementsOverride:u,filterByViewport:r,abortSignal:E,skipWait:i,logger:l}),{}),P=await w.startAsyncSpan("GET_PAGE_SCREENSHOT",async()=>{let j,F=Date.now(),J;for(;!j&&Date.now()-F<3e3;){E.throwIfAborted();try{j=await y.screenshot({clearHighlights:!0,respectActiveFrame:!0,retries:2});}catch(X){J=X;}}if(!j)throw new te("ActionFailureError",`Failed to take screenshot of page to locate element. The page may be unresponsive, or your machine might be severely resource constrained. Error: ${J?.message}`);return j}),_=x,B=false,V=`data:image/jpeg;base64,${P.toString("base64")}`,ne=jt(l);_=await Qs({type:"locator",description:C,screenshot:V,serializedTree:x,tree:v,fixtures:{generator:b,signal:E,logger:l,orgId:f}}),_!==x&&(B=true);let re=await w.startAsyncSpan("AI_LOCATOR_CALL",async j=>{m&&(j.attributes.isAutoHeal=true),h&&(j.attributes.cacheBustReason=h);let F=await b.getElementLocation({browserState:_,goal:C,screenshot:V,source:s,memory:I?a:void 0},{disableCache:n,abortSignal:E,logger:l,loggerTags:ne,useMemory:I,cacheBustReason:h});if(j.result=F,I&&(j.attributes.useMemory=true,j.attributes.memoryTraces=F.rememberedTraces??[],F.updatedMemory&&(j.attributes.memorySavedNewResult=true)),w.storeTraceAsset){let J=randomUUID();w.storeTraceAsset({snapshotId:J,data:P}),j.screenshotSnapshotId=J;}return F});if(l.debug({usedRag:B,result:re},"Got locator result"),!(re.id>0))throw new og(`Could not find any relevant element: ${re.thoughts}`,re.updatedMemory?{type:"GCS_TRACES",traces:re.updatedMemory}:void 0);let{resolution:z,target:M,frameConfig:K}=await w.startAsyncSpan("TARGET_RESOLUTION",async j=>{let F=await y.createTargetFromA11yId({id:re.id,requirements:re.requirements,additionalElements:re.additionalElements,description:C,targetSource:"AI",logger:l,skipSavingVisualAttributes:p,acceptElementMovedError:g});return j.result={serializedElement:F.target.nodeOnlySerializedHtml??"Unknown HTML element"},F});if(z.a11yNode?.properties?.hidden&&z.a11yNode?.properties?.hidden!=="false")throw new te("ActionFailureError",`Momentic's AI found a relevant element to interact with, but it is explicitly marked with an 'aria-hidden' attribute. Please remove this attribute or adjust the element description to locate a different element. Element chosen: ${z.displayString}`);return I&&(re.updatedMemory?M.memory={type:"GCS_TRACES",traces:re.updatedMemory}:a&&(M.memory=a)),{thoughts:re.thoughts,target:M,resolution:z,frameConfig:K,screenshot:V}}var bBe=15;async function MI({command:e,logger:t,fixtures:n,useMemory:o,maxRetries:r=bBe,recoveryHint:i}){if(!e.assertion.trim())throw new te("ActionFailureError","Assertion command is missing the assertion content");let s=hM.optional().catch(void 0).parse(e.source);e.source&&!s&&t.warn(`Invalid source ${e.source} for AI assertion, ignoring...`);let a=xo();return a.startAsyncSpan("AI_ASSERTION_CALL",async l=>{let{browser:c}=n,d=e.timeout?e.timeout*1e3:c.smartWaitingTimeout,u=L3(d,r-1),p=0,m=Date.now(),h=m+d,g=m,f,y,S;try{await La({action:()=>c.clearHighlights(),frameConfig:e.iframeUrl?{type:"url",url:e.iframeUrl}:void 0,browser:c,logger:t});}catch(C){t.warn({err:C},"Failed to clear highlights before AI check, continuing...");}for(;p<r;){n.abortSignal.throwIfAborted();let C=Date.now();if(p>0){if(C>=h)break;let x=h-C,v=g-C,P=Math.min(v,x);P>0&&await ot(P,n.abortSignal);}let w=Date.now();if(p>0&&w>=h)break;let I=false;try{if(f=await La({action:async()=>{let v=await Z9(c,t,n.abortSignal);return y&&y.serializedTree===v.serializedTree&&y.screenshotBuff.equals(v.screenshotBuff)?(I=!0,f):(y=v,e7({command:e,state:v,fixtures:n,useMemory:o,useConsensus:!1,highlightElementsOnFailure:!1,attemptNumber:p,logger:t,source:s,recoveryHint:i}))},frameConfig:e.iframeUrl?{type:"url",url:e.iframeUrl}:void 0,logger:t,browser:c}),f?.aiResult.result){f?.updatedMemory&&yT(e,f.updatedMemory,t);break}else throw f?.aiResult.thoughts?new te("AssertionFailureError",f.aiResult.thoughts):new te("InternalPlatformError","No thoughts were provided for AI assertion failure")}catch(x){n.abortSignal.throwIfAborted(),S=x instanceof Error?x:new Error(`${x}`),I?t.info(`AI check attempt ${p} failed (re-used previous result)`):t.info({err:x},`AI check assert attempt ${p} failed, retrying...`);}finally{p++,g=w+u;}}if(!f?.aiResult.result){let C=h-Date.now();C>0&&await ot(C,n.abortSignal);}if(!f?.aiResult.result)try{f=await La({action:async()=>e7({command:e,state:await Z9(c,t,n.abortSignal),fixtures:n,useMemory:o,useConsensus:!0,highlightElementsOnFailure:!0,attemptNumber:p,logger:t,recoveryHint:i}),frameConfig:e.iframeUrl?{type:"url",url:e.iframeUrl}:void 0,logger:t,browser:c});}catch(C){n.abortSignal.throwIfAborted(),S=C instanceof Error?C:new Error(`${C}`);}finally{p++;}f?.updatedMemory&&yT(e,f.updatedMemory,t);let b=f?.afterScreenshotOverride;if(b&&a.storeTraceAsset){let C=randomUUID();a.storeTraceAsset({snapshotId:C,data:b}),l.screenshotSnapshotId=C;}let E=f?.elementScreenshotOverride;if(E&&a.storeTraceAsset){let C=randomUUID();a.storeTraceAsset({snapshotId:C,data:E}),l.elementScreenshotSnapshotId=C;}if(o&&(l.attributes.useMemory=true,l.attributes.memoryTraces=f?.aiResult.rememberedTraces??[],f?.updatedMemory&&(l.attributes.memorySavedNewResult=true)),!f?.aiResult.result){l.result=f?.aiResult??{thoughts:S?.message??"AI check failed after all attempts",result:false};let C=`AI check still failing after ${p} attempts.`;throw S&&(C+=` Latest result: ${S.message}`),new te("AssertionFailureError",C)}return l.result=f.aiResult,{...f,thoughts:f.aiResult.thoughts,succeedImmediately:false,urlAfterCommand:c.url()}})}async function Z9(e,t,n){await e.waitForPageLoad({signal:n});let[o,r]=await Promise.all([Uc(e,{abortSignal:n,skipWait:true,skipWaitForPageLoad:true,logger:t}),e.screenshot({retries:1,respectActiveFrame:true})]);return {...o,screenshotBuff:r}}async function e7({command:e,state:t,fixtures:n,useConsensus:o,useMemory:r,highlightElementsOnFailure:i,attemptNumber:s,source:a,logger:l,recoveryHint:c}){let {browser:d,generator:u,abortSignal:p}=n,{serializedTree:h,tree:g}=t,f=t.screenshotBuff,y=f.toString("base64"),S=d.url(),b=e.contextChoice??"MULTIMODAL",E=h;b!=="VISION_ONLY"&&(E=await Qs({type:"assertion",serializedTree:h,tree:g,description:e.assertion,screenshot:y,fixtures:{generator:u,signal:p,logger:l,orgId:n.orgId}}),E);let C={goal:e.assertion,url:S,memory:r?e.cache?.memory:void 0,browserState:E,screenshot:y,contextChoice:b,source:a,recoveryHint:c},I=await(b==="VISION_ONLY"?(v,P)=>u.getVisualAssertionResult(v,P):(v,P)=>u.getAssertionResult(v,P))(C,{useConsensus:o,attemptNumber:s,useMemory:r,disableCache:!!e.disableCache,abortSignal:p,logger:l,loggerTags:jt(l)}),x;if((I.result||i)&&I.relevantElements?.length){I.relevantElements.map(v=>d.getSerializedFormFromA11yId(v)).filter(v=>!!v);try{let v=I.relevantElements[0],{resolution:P}=await d.createTargetFromA11yId({id:v,description:null,targetSource:"AI",skipSaveToCache:!0});x=await d.screenshot({locator:P.locator,clearHighlights:!0,respectActiveFrame:!0});}catch(v){l.debug({err:v},"Failed to capture element screenshot for trace, continuing...");}await TBe(I.relevantElements,d,l);}return {aiResult:I,afterScreenshotOverride:f,elementScreenshotOverride:x,updatedMemory:r?I.updatedMemory:void 0}}async function TBe(e,t,n){let o=Date.now();for(let r of e){if(Date.now()-o>2e3){n.debug("Highlighting relevant elements took over 2s, aborting...");return}try{let i=new AbortController;await Ie(t.highlightA11yId(r),{milliseconds:1e3,fallback:()=>{throw i.abort(),new Error("Timed out waiting for highlighting to complete")}});}catch(i){n.debug({err:i},"Failed to highlight relevant element after assertion, continuing...");return}}}async function n7(e){let{command:t,logger:n,fixtures:o,disableCache:r}=e,{browser:i,generator:s,abortSignal:a}=o;if(!t.goal.trim())throw new te("ActionFailureError","Cannot perform AI extraction without goal");if(t.schema){let u=OK(t.schema);if(u)throw new te("UserConfigurationError",u)}let l=await i.getCondensedHtml(),c=await i.screenshot({retries:2}),d=xo();try{return await d.startAsyncSpan("AI_EXTRACTION_CALL",async u=>{let p=await s.getTextExtraction({goal:t.goal,browserState:l,returnSchema:t.schema,screenshot:`data:image/jpeg;base64,${c.toString("base64")}`},{disableCache:r,abortSignal:a,loggerTags:jt(n)});if(u.result=p,ABe({tracer:d,span:u,screenshot:c,htmlState:l,logger:n}),p.result==="NOT_FOUND")throw new te("ActionFailureError","No relevant data found for extraction goal on this page");if(p.thoughts?.includes("MaxGenerationLengthExceededError"))throw new te("UserConfigurationError",p.thoughts);return {thoughts:p.thoughts||void 0,data:p.result,succeedImmediately:!1,urlAfterCommand:i.url()}})}catch(u){let p=Q(u);throw p.includes("MaxGenerationLengthExceededError")?new te("UserConfigurationError","You tried to extract too much data. Please rephrase your query to limit the results returned or use a JavaScript step in the browser instead."):p.includes("AIProviderError")&&p.includes("time")?new te("AIProviderError","The AI provider responded with an error. This may be because you tried to extract too much data. Please limit extraction results to 2000 characters.",{errOptions:{cause:u}}):u}}function ABe(e){let{tracer:t,span:n,screenshot:o,htmlState:r,logger:i}=e;if(t.storeTraceAsset)try{let s=randomUUID();t.storeTraceAsset({snapshotId:s,data:o}),n.screenshotSnapshotId=s;let a=randomUUID();t.storeTraceAsset({snapshotId:a,data:Buffer.from(r),extension:"html"}),n.browserStateSnapshotId=a;}catch(s){i.debug({err:s},"Failed to store extraction trace assets");}}async function o7(e,t){let{logger:n}=e,{abortSignal:o,browser:r}=t,i=Date.now();try{await EBe(i,e,t);}catch(s){if(s instanceof Error&&(s.name==="AbortError"||s.name==="TimeoutError")||o.aborted)return;n.warn({err:s},"Unexpected error occurred during AI smart waiting");let a=r.smartWaitingTimeout-(Date.now()-i);a>0&&await ot(a,o);}finally{n.debug({durationMs:Date.now()-i},"AI smart waiting complete");}}async function EBe(e,t,n){let{abortSignal:o,browser:r}=n;if(r.smartWaitingTimeout<3e3){await ot(r.smartWaitingTimeout,o);return}if(!t.description)throw new te("UserConfigurationError","Cannot locate element with empty description");await Ie(CBe(e,t,n),{milliseconds:r.smartWaitingTimeout});}async function CBe(e,t,n){let{logger:o,iframeUrl:r}=t,{browser:i}=n;for(;Date.now()-e<i.smartWaitingTimeout;)if(await La({action:async()=>vBe(t,n),frameConfig:r?{type:"url",url:r}:void 0,browser:i,logger:o}))return}async function vBe(e,t){let{testContext:n,logger:o}=e,{browser:r,abortSignal:i,localCodeEvalTools:s,orgId:a,generator:l}=t,c=e.description;n&&(c=await gi({orgId:a,s:c,context:n,localTools:s,signal:i,logger:o})),i.throwIfAborted();let d;try{d=await r.screenshot({clearHighlights:!0,respectActiveFrame:!0,retries:2});}catch(h){throw new te("ActionFailureError",`Failed to take screenshot of page to perform smart waiting. The page may be unresponsive, or your machine might be severely resource constrained. Error: ${h instanceof Error?h.message:h}`)}let p=`data:image/jpeg;base64,${d.toString("base64")}`;i.throwIfAborted();let m=await l.getSmartWaitingDecision({description:c,screenshot:p},{abortSignal:i,loggerTags:jt(o)});return o.debug({result:m},"Got smart waiting result"),m.isPageReady}var RBe=3e4;async function s7(e){return xo().startAsyncSpan("ELEMENT_ASSERTION",async n=>wBe(e,n),{name:"Element check"})}async function wBe(e,t){let{command:n,timeoutMs:o,fixtures:r,disableCache:i}=e,{abortSignal:s}=r,a=()=>qE(n.cache)?n.cache:void 0,l=a(),c=!i&&!!l?.target&&jh(l.target),d=cloneDeep(l),u=(E=false)=>{if(l=a(),!!l)if(E){let C=Tk(d,l);l.target=C.target,l.updatedAt=C.updatedAt;}else {if(!d){l=void 0;return}l.target=d.target,l.updatedAt=d.updatedAt;}},p=Date.now(),m=c?Math.max(o/10,RBe):0,h=p,g=0,f,y=500,S=false;for(;g<2||Date.now()-p<o;){g++,g>1&&await ot(y,s),s?.throwIfAborted(),l=a();let E=g===1,C=c&&Date.now()-h>=m;C&&(h=Date.now());let{result:w,elementWasFound:I}=await r7({cacheToUse:l,skipAISmartWaiting:!E,useAIIfCacheFails:!c||C,params:e});if(f=w,S=S||I,w.success)break;u(),y=Math.min(y*1.25,1e4);}if(!f)throw new te("InternalPlatformError",`Failed to evaluate manual element assertion in ${o}ms.`);if(s?.throwIfAborted(),!f.success){let E=a(),C=E?.target?.memory?{target:{id:-1,memory:E.target.memory}}:void 0,{result:w,elementWasFound:I}=await r7({cacheToUse:C,skipAISmartWaiting:true,useAIIfCacheFails:true,params:e});f=w,S=S||I,f.success||u(true);}let b=a();return f.success&&b?.target&&!S&&(b.target=fT(b.target),b.updatedAt=new Date),t.result={success:f.success,message:f.err?.message},f}async function r7({cacheToUse:e,skipAISmartWaiting:t,useAIIfCacheFails:n,params:o}){let{command:r,disableCache:i,fixtures:s,tracer:a,targetingWrapper:l}=o,{logger:c}=s;if(r.target&&!sd(r.target))throw new Error("Element assertion with x/y is not supported yet");let d=AX(r.assertion),u=IBe(r.assertion),p,m=false,h=cloneDeep(e);try{let{elementInteractedDisplayString:g,result:f,thoughts:y}=await l({tracer:a,command:r,target:r.target,cache:h?.target,action:async S=>xBe(S.locator,o),options:{...r,allowNotActionableNodesOverride:u,allowIneligibleTagRedirect:u,showZeroOpacityElementsOverride:!0,disableCache:i,memory:h?.target?.memory,disableGlobalLocatorRedirect:!0,source:ym(r),skipAISmartWaiting:t,targetName:"target"},retriesWithAI:n?1:0});return p={success:f.success,data:f.data,err:f.err,elementInteractedDisplayString:g,thoughts:y},m=!0,f.success||(c.warn({aiThoughts:y,elementString:g,err:f.err},"Element check found an element but failed"),p={...f,thoughts:y}),{result:p,elementWasFound:m}}catch(g){if(d)return p={success:true,thoughts:`The element described does not exist on the page: ${g.message}`,err:void 0,data:void 0},{result:p,elementWasFound:m};if(!(g instanceof te)||g.reason!="ActionFailureError")throw g;return p={success:false,err:g,data:void 0,thoughts:void 0},c.warn({err:g},"Element check did not find an element and failed"),{result:p,elementWasFound:m}}}function IBe(e){return !(e.type==="ELEMENT_EXISTENCE"&&e.condition==="VISIBLE"&&!e.negated)}async function xBe(e,{command:t,fixtures:n}){return await n.browser.highlight(e),await _Be(e,t.assertion)}async function _Be(e,t){let n=true,o,r;switch(t.type){case "ELEMENT_CONTENT":{let s=await e.textContent()??"";if(r={elementTextContent:mn(s,500,true)},!pT(s,t.value,t.operation,{negated:!!t.negated,ignoreCase:false})){let a=df(t);n=false,o=new te("AssertionFailureError",`The content ${a} '${t.value}': ${s}`);}break}case "ELEMENT_ATTRIBUTE":{r={elementOuterHtml:mn(await e.evaluate(a=>a.cloneNode(false).outerHTML),500,true)};let s=null;try{s=await e.getAttribute(t.attr,{timeout:3e3});}catch(a){o=new te("AssertionFailureError",Q(a)),n=false;break}if(!pT(s,t.value,t.operation,{negated:!!t.negated,ignoreCase:false})){let a=df(t);n=false,t.operation==="EXISTS"?o=new te("AssertionFailureError",`The attribute ${t.attr} ${a}`):o=new te("AssertionFailureError",`The attribute ${t.attr} ${a} '${t.value}': ${s}`);}break}case "ELEMENT_EXISTENCE":{switch(t.condition){case "VISIBLE":{n=await e.evaluate(async(a,l)=>{let c=Date.now();for(;Date.now()-c<l;){await new Promise(u=>setTimeout(u,250));let d=a.getBoundingClientRect();if(!(d.width===0||d.height===0)&&window.getComputedStyle(a).visibility!=="hidden"&&window.getComputedStyle(a).display!=="none")return true}return false},ca*1e3);break}case "EDITABLE":{n=await e.isEditable({timeout:ca*1e3});break}case "EXISTS":{n=true;break}case "ENABLED":{n=await e.isEnabled({timeout:ca*1e3});break}case "FOCUSED":{n=await e.evaluate(a=>a===document.activeElement);break}default:return (a=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})(t.condition)}if(n=t.negated?!n:n,!n){let s=df(t);o=new te("AssertionFailureError",`The element ${s}`);}break}case "ELEMENT_NAME":{let s=await e.evaluate(a=>a.tagName);if(!pT(s,t.value,t.operation,{negated:!!t.negated,ignoreCase:true})){let a=df(t);n=false,o=new te("AssertionFailureError",`The element tag name ${a} '${t.value}': ${s}`);}break}case "ELEMENT_STYLE":{let s=await e.evaluate((a,l)=>window.getComputedStyle(a).getPropertyValue(l),t.property);if(!pT(s,t.value,t.operation,{negated:!!t.negated,ignoreCase:false})){let a=df(t);n=false,t.operation==="EXISTS"?o=new te("AssertionFailureError",`The style property ${t.property} ${a}`):o=new te("AssertionFailureError",`The style property ${t.property} ${a} '${t.value}': ${s}`);}break}default:return (s=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})()}return {thoughts:void 0,success:n,data:r,err:o}}function a7(e){return e.type==="ELEMENT_EXISTENCE"&&e.negated&&e.condition==="EXISTS"}async function lA(e,t){let n=await e.screenshot(t),{width:o,height:r}=imageSize(n);return {buffer:n,width:Math.ceil(o),height:Math.ceil(r)}}async function c7(e){let{command:t,browser:n,logger:o}=e;if(t.target&&!sd(t.target))throw new Error("Visual Diff with x/y is not supported yet");return await n.waitForStability({logger:o}),xo().startAsyncSpan("VISUAL_DIFF",async i=>{try{let s=await MBe(e);return i.result={success:!s.fail,message:s.thoughts},s}catch(s){throw s instanceof te&&(i.result={success:false,message:s.message}),s}},{name:"Compare against golden"})}async function MBe({tracer:e,command:t,disableCache:n,browser:o,targetingWrapper:r,logger:i,screenshotStorage:s}){let a={clearHighlights:true,hideCaret:true},l=t.target&&sd(t.target)?t.target:void 0,c;l?.elementDescriptor?c=(await r({tracer:e,command:t,target:l,cache:t.cache?.target,action:async _=>lA(o,{locator:_.locator,...a}),options:{...t,disableCache:n,disableGlobalLocatorRedirect:true,memory:t.cache?.target?.memory,targetName:"target"}})).result:c=await lA(o,a);let d=await s.prepareGoldenScreenshotForComparison(i,t,c);if((c.height!==d.height||c.width!==d.width)&&i.warn({currHeight:c.height,currWidth:c.width,savedHeight:d.height,savedWidth:d.width},"Mismatched before and after visual diff screenshot sizes"),Math.abs(c.height-d.height)>10||Math.abs(c.width-d.width)>10){let P=`${c.width}x${c.height}`,_=`${d.width}x${d.height}`;return {fail:true,thoughts:`Current screenshot (${P}) does not match saved screenshot dimensions (${_}) - did you change the size of the target or the viewport?`,beforeScreenshotOverride:d.buffer,afterScreenshotOverride:c.buffer,succeedImmediately:false,urlAfterCommand:o.url()}}let u=await Jimp.fromBuffer(c.buffer),p={width:c.width,height:c.height},m=await Jimp.fromBuffer(d.buffer),h={width:d.width,height:d.height},g,f=p.width*p.height,y=h.width*h.height,S=Math.abs(p.height-h.height),b=Math.abs(p.width-h.width);if(f>y){let P=u.cover({w:h.width,h:h.height});c.buffer=await P.getBuffer("image/jpeg"),g="current",c.width=h.width,c.height=h.height;}else if(y>f){let P=m.cover({w:p.width,h:p.height});d.buffer=await P.getBuffer("image/jpeg"),g="saved";}let E={data:Buffer.alloc(c.width*c.height*4),width:c.width,height:c.height},C=t.threshold??.1,I=uFe(mB.decode(d.buffer).data,mB.decode(c.buffer).data,E.data,c.width,c.height,{threshold:C,diffColorAlt:[0,255,0]})/(c.width*c.height)*100,x=I>C*100,v=`Visual diff of ${I.toFixed(2)}% detected, which is ${x?"over":"under"} the threshold of ${C*100}%.`;if(g&&(v+=` The ${g} screenshot was cropped since it was taller by ${S} pixels and wider by ${b} pixels.`),x)throw new te("ActionFailureError",v);return {fail:x,thoughts:v,beforeScreenshotOverride:c.buffer,afterScreenshotOverride:mB.encode(E,75).data,succeedImmediately:false,urlAfterCommand:o.url()}}var NBe=3e4;function LBe(e){if(!e.body)return {};switch(e.body.type){case "json":return {content:e.body.content,contentType:"application/json"};case "form-urlencoded":{let t=new URLSearchParams;return Object.entries(e.body.content).forEach(([n,o])=>{t.append(n,o);}),{content:t.toString(),contentType:"application/x-www-form-urlencoded;charset=UTF-8"}}}}async function d7({command:e,logger:t,baseUrl:n,fetchImplementation:o=fetch}){let r=e.timeout??NBe/1e3,i=Object.fromEntries(Object.entries(e.headers||{}).filter(([h,g])=>h&&g)),s=new URLSearchParams;Object.entries(e.params||{}).filter(([h,g])=>h&&g).forEach(([h,g])=>{s.append(h,g);});let a=s.toString(),l;if(yf(e.url)&&(l=e.url),n&&Sf(e.url,n)&&(l=new URL(e.url,n).toString()),!l)throw new te("ActionFailureError",`Invalid URL: ${e.url}`);let c=l;t.info({url:c,searchParams:a,headers:i,body:e.body,method:e.method},"Making HTTP request");let u=await Ie((async()=>{let h=a?`${c}?${a}`:c;try{let g=LBe(e),f=new Headers(i);return g.contentType&&!f.has("Content-Type")&&f.set("Content-Type",g.contentType),await o(h,{headers:f,method:e.method,body:g.content})}catch(g){throw new Error(`Failed to make HTTP request: ${g}`,{cause:g})}})(),{milliseconds:r*1e3,fallback:()=>{throw new te("ActionFailureError",`Fetch request timed out after ${r} seconds`)}});if(!u.ok){let h;try{h=await u.text();}catch(g){h=`Failed to read response body: ${g}`;}throw new te("ActionFailureError",`Fetch request failed with status ${u.status}: ${h}`)}let p={};u.headers.forEach((h,g)=>{p[g]=h;});let m={status:u.status,headers:p,request:{url:u.url,method:e.method,headers:i}};if(e.body?.type==="json"&&e.body.content)try{m.request.json=JSON.parse(e.body.content);}catch{}if(u.headers.get("content-type")?.includes("json"))try{m.json=await u.json();}catch{}else u.headers.get("content-type")?.includes("text")&&(m.text=await u.text());return m}var kBe=5e3;async function NI({timeout:e=ca,...t}){let n=Date.now(),o=e*1e3,r=o+1e4,i,s=0,a=500;for(;s-n<o;){if(Date.now()-n>r){t.logger.warn("Exceeded max system timeout for page assertion, exiting...");break}t.signal?.throwIfAborted();let l=Date.now();i=await u7(t),s=Date.now();let c=s-l;if(c>1e3&&t.logger.warn({pageAssertDuration:c},"Page assertion took longer than expected"),!i.success)await ot(a,t.signal),a=Math.min(Math.floor(a*1.5),kBe);else return i}return i=await u7(t),i}async function u7(e){return xo().startAsyncSpan("PAGE_ASSERTION",async n=>{let o=await DBe(e);return n.result={success:o.success,message:o.err?.message},o},{name:"Page check"})}async function DBe({assertion:e,browser:t,autoExpandIframes:n}){switch(e.type){case "CONTENT":case "CONTENT":{let r,i=false,s;try{let a;if(n){let l=await t.evaluateFunctionInAllFrames(p7,{value:e.value,negated:!!e.negated,returnHtml:!1});i=e.negated?l.every(c=>c.evaluation):l.some(c=>c.evaluation),a=l.find(c=>c.pageHtml)?.pageHtml;}else ({evaluation:i,pageHtml:a}=await t.evaluateFunctionInPage(p7,{value:e.value,negated:!!e.negated,returnHtml:!0},"checking page content"));if(!i){let l=e.negated?Pd.CONTAINS:Od.CONTAINS;s=new te("AssertionFailureError",`The page ${l} '${e.value}'.`),r=a;}}catch(a){s=new te("AssertionFailureError",`Failed to evaluate page content assertion: ${a instanceof Error?a.message:`${a}`}`);}return {success:i,err:s,data:i||!r?void 0:{pageContent:r}}}default:return (r=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})()}}function p7({value:e,negated:t,returnHtml:n}){let o=document.body.innerHTML,r=o.includes(e)===!t;return o.length>1e4&&(o=o.slice(0,1e4)+"...TRUNCATED"),{evaluation:r,pageHtml:!r&&n?o:void 0}}var FBe=3e4;async function m7({command:e,logger:t,baseUrl:n,fetchImplementation:o=fetch}){let r=e.timeout??FBe/1e3,i=new AbortController,s=Object.fromEntries(Object.entries(e.headers||{}).filter(([u,p])=>u&&p));s["Content-Type"]="application/json";let a;if(yf(e.url)&&(a=e.url),n&&Sf(e.url,n)&&(a=new URL(e.url,n).toString()),!a)throw new te("ActionFailureError",`Invalid URL: ${e.url}`);let c=await Ie((async()=>{try{return await o(a,{headers:s,method:"POST",body:JSON.stringify({query:e.query,variables:e.variables?JSON.parse(e.variables):void 0}),signal:i.signal})}catch(u){throw new Error(`Failed to make HTTP request: ${u}`,{cause:u})}})(),{milliseconds:r*1e3});if(!c)throw new te("ActionFailureError",`GraphQL request timed out after ${r} seconds`);if(!c.ok){let u,p=await c.text();try{u=JSON.parse(p);}catch{throw new te("ActionFailureError",`GraphQL request failed with status ${c.status}: ${p}`)}throw u?.errors?.length&&u?.errors[0]?.message?new te("ActionFailureError",`GraphQL request failed with status ${c.status}: ${u.errors[0].message}`):new te("ActionFailureError",`GraphQL request failed with status ${c.status}: ${p}`)}let d={};return c.headers.forEach((u,p)=>{d[p]=u;}),{status:c.status,headers:d,json:await c.json()}}var ly=class{orgId;options;storage;localCodeEvalTools;uploadedFileStorage;visualDiffScreenshotStorage;browser;generator;executeAbortController=new AbortController;logger;executionOptionsStack=[];recordAbortController=null;registeredListeners={};recordedRequests={};constructor({browser:t,generator:n,logger:o,storage:r,orgId:i,localCodeEvalTools:s,uploadedFileStorage:a,visualDiffScreenshotStorage:l,options:c}){this.orgId=i,this.options=c,this.browser=t,this.browser.registerAbortSignal(this.executeAbortController.signal),this.storage=r,this.uploadedFileStorage=a,this.visualDiffScreenshotStorage=l,this.localCodeEvalTools=s,this.generator=n,this.logger=o;}setOpen(){this.executeAbortController=new AbortController,this.browser.registerAbortSignal(this.executeAbortController.signal);}setClosed(){this.executeAbortController.abort();}throwIfClosed(){this.executeAbortController.signal.throwIfAborted();}get closed(){return this.executeAbortController.signal.aborted}async withExecutionOptions(t,n){this.executionOptionsStack.push(t);try{return await n()}finally{this.executionOptionsStack.pop();}}getCurrentExecutionOptions(){return this.executionOptionsStack[this.executionOptionsStack.length-1]??{}}async evaluateAiAction({goal:t,startingScreenshot:n,history:o,disableCache:r,langfuseSessionId:i,lastError:s,logger:a=this.logger}){let[l,c]=await Promise.all([Uc(this.browser,{abortSignal:this.executeAbortController.signal,skipWait:true,skipWaitForPageLoad:true,logger:a}),this.browser.screenshot({retries:1,clearHighlights:true})]),d=`data:image/jpeg;base64,${c.toString("base64")}`,u=await Qs({type:"ai-action",description:t,screenshot:d,serializedTree:l.serializedTree,tree:l.tree,fixtures:{generator:this.generator,signal:this.executeAbortController.signal,logger:a,orgId:this.orgId}}),p={url:this.browser.url(),browserState:u,startingScreenshot:n,history:o,goal:t,screenshot:d,lastError:s};return await this.generator.getMultiturnAiActionEvaluation(p,{disableCache:r,abortSignal:this.executeAbortController.signal,loggerTags:{...jt(a)},langfuseSessionId:i})}async promptToCommand({goal:t,startingScreenshot:n,history:o,actionHint:r,disableCache:i,logger:s=this.logger,langfuseSessionId:a}){let l=this.browser.url(),[c,d]=await Promise.all([Uc(this.browser,{abortSignal:this.executeAbortController.signal,skipWait:true,skipWaitForPageLoad:true,logger:s}),this.browser.screenshot({retries:1,clearHighlights:true})]),u=`data:image/jpeg;base64,${d.toString("base64")}`,p=await Qs({type:"ai-action",description:t,screenshot:u,serializedTree:c.serializedTree,tree:c.tree,fixtures:{generator:this.generator,signal:this.executeAbortController.signal,logger:s,orgId:this.orgId}}),m={url:l,browserState:p,startingScreenshot:n,history:o,goal:t,actionHint:r,screenshot:u};try{return await this.generator.getMultiturnAiActionCommand(m,{disableCache:i,abortSignal:this.executeAbortController.signal,loggerTags:{...jt(s)},langfuseSessionId:a})}catch(h){throw new te("InternalWebAgentError",`Error generating command: ${h instanceof Error?h.message:h}`,{errOptions:{cause:h}})}}async getBrowserState(t){return Uc(this.browser,t)}async locateElement(t){return await pB(t,this.getControllerFixtures())}async locateElementWithSelector(t,n){return La({action:async()=>{let o=await this.browser.resolveHardcodedCssSelector({selector:t,timeoutMs:2e3,logger:this.logger});return {thoughts:"Located element with selector",target:{id:-1,selector:t,targetSource:"USER_CSS_SELECTOR",targetUpdateTime:new Date().toUTCString()},resolution:o}},frameConfig:n?{type:"url",url:n}:void 0,browser:this.browser,logger:this.logger})}getControllerFixtures(){return {browser:this.browser,generator:this.generator,logger:this.logger,orgId:this.orgId,storage:this.storage,localCodeEvalTools:this.localCodeEvalTools,abortSignal:this.executeAbortController.signal}}shouldUseMemory(){return this.options?.useMemory??true}async wrapMultiElementTargetingCommand({tracer:t,command:n,targetNames:o,descriptions:r,caches:i,action:s,options:a,retriesWithAI:l=1}){let c=[];for(let d=0;d<r.length;d++){let u=r[d],p=await this.wrapElementTargetingCommand({tracer:t,command:n,target:u,cache:i[d],action:async m=>m,options:{...a,targetName:o[d]}});c.push(p);}try{let d=await s(...c.map(m=>m.result)),u=m=>m==="fromTarget"?"From Target":m==="toTarget"?"To Target":"Target",p=c.map((m,h)=>m.thoughts?`${u(o[h])}: ${m.thoughts}`:void 0).filter(m=>!!m).join(" -------------- ")||void 0;return {result:d,elementInteractedDisplayStrings:c.map(m=>m.elementInteractedDisplayString),thoughts:p}}catch(d){if(this.throwIfClosed(),l>0)return this.logger.warn({err:d},"Failed to execute action with multiple cached targets, retrying with AI"),this.wrapMultiElementTargetingCommand({tracer:t,command:n,targetNames:o,descriptions:r,caches:r.map(()=>{}),action:s,options:a,retriesWithAI:l-1});throw new te("ActionFailureError",d.message,{errOptions:{cause:d}})}}async wrapHardcodedCssTargetingCommandHelper({target:t,action:n,options:o,command:r}){let i=this.logger.child({commandId:r.id}),{targetName:s}=o;if(t.type!=="description")throw new te("ActionFailureError","Cannot use selector with non-description target");let a,l=Date.now(),c=Date.now();for(;Date.now()-c<this.browser.smartWaitingTimeout;){l=Date.now();try{let d=await this.browser.resolveHardcodedCssSelector({selector:t.elementDescriptor,targetName:s,logger:i});return {result:await n({locator:d.locator,originalElementLocationResult:void 0,serverSideBoundingBox:null}),elementInteractedDisplayString:d.displayString}}catch(d){if(d.name==="AbortError")throw d;a=d,i.warn({err:d},"Failed to action on hardcoded css selector"),Date.now()-l<500&&await ot(500);}}throw a}async scrollIntoViewAndResolveFinalTarget(t){let{resolutionResult:n,disableGlobalLocatorRedirect:o,logger:r}=t,i=xo(),s=!o&&this.browser.userBrowserSettings.globalLocatorRedirect!==false;(this.browser.userBrowserSettings.visualActions||s)&&await i.startAsyncSpan("SCROLL_ELEMENT_INTO_VIEW",async()=>{await this.browser.scrollIntoViewIfNeeded(n.locator);});let a;return s&&(a=await i.startAsyncSpan("LOCATOR_REDIRECT",async l=>{let{targetingResult:c,metadata:d}=await this.browser.performTargetRedirection(n,r);if(l.result=d,d.outcome==="redirected to new element"&&c&&i.storeTraceAsset&&!this.browser.userBrowserSettings.disableBrowserMonitoring){let u=randomUUID();(async()=>{try{let p=await this.browser.screenshot({locator:c.locator,clearHighlights:!0,boundingBoxOverride:c.serverSideBoundingBox??void 0});i.storeTraceAsset?.({snapshotId:u,data:p});}catch(p){r.debug({err:p},"Failed to capture element screenshot for redirect trace");}})(),l.elementScreenshotSnapshotId=u;}return c})),a||(a={locator:n.locator,serverSideBoundingBox:await n.locator.boundingBox({timeout:Qe}),originalElementLocationResult:n.originalElementLocationResult}),a}async resolveCachedTargetForAction(t){let{cache:n,options:o,logger:r}=t,s=await xo().startAsyncSpan("CACHE_RESOLUTION",async l=>{l.targetSource=n.targetSource,l.attributes.smartWaitingTimeoutMs=this.browser.smartWaitingTimeout;try{let c=await this.browser.resolveTarget(n,{allowNotActionableNodesOverride:o.allowNotActionableNodesOverride,logger:r,signal:this.executeAbortController.signal,...o.resolveTargetOptions,acceptElementMovedError:o.force});l.attributes.targetDisplayString=c.displayString,l.attributes.decisions=c.decisions;let d=c.decisions.find(u=>u.matched);return d&&(l.resolutionMethod=d.type),c}catch(c){throw c instanceof Li&&(l.cacheMissReason=c.cacheMissReason,l.attributes.decisions=c.decisions),c}}),a=await this.scrollIntoViewAndResolveFinalTarget({resolutionResult:s,disableGlobalLocatorRedirect:o.disableGlobalLocatorRedirect,logger:r});return o.force||await s.revalidator?.(),{resolutionResult:s,finalTarget:a}}async wrapElementTargetingCommand(t){return await La({action:()=>this.wrapElementTargetingCommandHelper(t),frameConfig:t.options.iframeUrl?{type:"url",url:t.options.iframeUrl}:void 0,browser:this.browser,logger:this.logger})}async wrapElementTargetingCommandHelper(t){let{tracer:n,target:o,action:r,options:i,command:s,finalAttempt:a=false,originalCache:l=t.cache}=t,{retriesWithAI:c=1}=t,{disableCache:d,useSelector:u,targetName:p}=i,m=xo(),h=this.logger.child({commandId:s.id}),g=this.shouldUseMemory(),f=cloneDeep(t.cache);if((!f||d)&&!XG(o))throw new te("ActionFailureError","Cannot target element with no cached data or element descriptor");if(u)return this.wrapHardcodedCssTargetingCommandHelper(t);let y=false,S;d&&(h.info("Cache explicitly disabled for this step"),y=true,S="Cache explicitly disabled",f=void 0);let b=W9({cache:f,description:o.elementDescriptor,disableSecondaryCacheResolution:!!this.browser.userBrowserSettings.disableSecondaryCacheResolution,logger:h});f=b.cache,y=y||b.cacheBustedBeforeAction,!S&&b.cacheBustReason&&(S=b.cacheBustReason);let E=true;if(!z9(f))return c--,E=false,this.executeTargetingCommandWithAI({tracer:m,stepTracer:n,target:o,options:i,command:s,action:r,originalCache:l,logger:h,useMemory:g,cacheBustedBeforeAction:y,cacheBustReason:S});try{let{resolutionResult:C,finalTarget:w}=await this.resolveCachedTargetForAction({cache:f,options:i,logger:h}),I=await r(w);if(Tt.increment("cache_target_resolution_v2",1,["outcome:hit","platform:web",`hasRequirements:${!!f.requirements}`,`hasAdditionalElements:${!!f.additionalElements}`,`orgId:${this.orgId}`,"cliVersion:3.12.1"]),DR({cmd:s,key:p,newTarget:f,logger:h,updatedWithAI:!1}),E){let x=C.decisions.filter(v=>v.matched);if(x.length!==1)h.warn({decisions:C.decisions},"Expected exactly 1 matching method for element location, got more or less");else {let v=x[0].type;n.recordTargetAutoHeal({healType:v});}}return {result:I,elementInteractedDisplayString:C.displayString}}catch(C){this.throwIfClosed();let w=PO(C);if(w&&!a)return h.warn({err:C},"Encountered error that is retryable with cache"),this.wrapElementTargetingCommandHelper({tracer:n,command:s,target:o,action:r,cache:l,originalCache:l,retriesWithAI:c,finalAttempt:true,options:i});if(C instanceof te&&!w)throw h.warn({err:C},"Failed to execute command with target (fatal)"),C;if(c>0&&o){h.info({err:C},"Failed to execute action with cached target, retrying with AI"),Tt.increment("cache_target_resolution_v2",1,["outcome:miss","platform:web",`hasRequirements:${!!f.requirements}`,`hasAdditionalElements:${!!f.additionalElements}`,`orgId:${this.orgId}`,"cliVersion:3.12.1",`missReason:${C instanceof Li?C.cacheMissReason:"unknown"}`]);let I;f.memory&&zE(f.memory)&&(I=f.memory);let x=C instanceof Li&&C.cacheMissReason==="failing-ldist";return this.wrapElementTargetingCommandHelper({tracer:n,command:s,target:o,cache:void 0,action:r,originalCache:l,retriesWithAI:c,finalAttempt:true,options:{...i,memory:I,targetHealingInProgress:true},skipInitialLocateWait:x})}throw new te("ActionFailureError",`Failed to execute interactive command: ${C instanceof Error?C.message:`${C}`}`,{errOptions:{cause:C}})}}async executeTargetingCommandWithAI(t){let{tracer:n,stepTracer:o,target:r,options:i,command:s,action:a,originalCache:l,logger:c,useMemory:d,cacheBustedBeforeAction:u,cacheBustReason:p,skipInitialLocateWait:m}=t;c.info({description:r.elementDescriptor,targetHealingInProgress:i.targetHealingInProgress,cacheBustedBeforeAction:u,memory:i.memory,useMemory:d},"Prompting AI for an updated element location");let h=false;(u||!l)&&!this.getCurrentExecutionOptions().skipAISmartWaiting&&!i.skipAISmartWaiting?(await n.startAsyncSpan("SMART_WAITING",async()=>await o7({description:r.elementDescriptor,iframeUrl:i.iframeUrl,source:i.source,logger:c,allowNotActionableNodesOverride:i.allowNotActionableNodesOverride},this.getControllerFixtures())),h=true):(u||!l)&&(i.skipAISmartWaiting?c.debug("Skipping AI smart waiting for this targeting attempt"):c.debug("Skipping AI smart waiting due to controller execution options"));let g=2;for(let f=1;f<=g;f++){let y=false,S=this.browser.getActiveFrameConfig(),b=i.force||f>1;try{let E;try{E=await pB({description:r.elementDescriptor,disableCache:!!i.disableCache,iframeUrl:i.iframeUrl,source:i.source,useMemory:d,memory:d?i.memory:void 0,allowNotActionableNodesOverride:i.allowNotActionableNodesOverride,allowIneligibleTagRedirect:i.allowIneligibleTagRedirect,showZeroOpacityElementsOverride:i.showZeroOpacityElementsOverride,logger:c,skipWait:h||m,isAutoHeal:!!i.targetHealingInProgress,cacheBustReason:p,acceptElementMovedError:b},this.getControllerFixtures());}catch(I){if(I instanceof og&&I.updatedLocatorMemory){let x={id:-1,...l,memory:I.updatedLocatorMemory};DR({cmd:s,key:i.targetName,newTarget:x,logger:c,updatedWithAI:!0});}throw I}E.frameConfig&&(this.browser.setActiveFrameConfig(E.frameConfig),y=!0);let C=await this.scrollIntoViewAndResolveFinalTarget({resolutionResult:E.resolution,disableGlobalLocatorRedirect:i.disableGlobalLocatorRedirect,logger:c}),w=await a(C);return DR({cmd:s,key:i.targetName,newTarget:E.target,logger:c,updatedWithAI:!0}),i.targetHealingInProgress&&(o.recordTargetAutoHeal({healType:"AI"}),E.target.targetSource="AI_HEALED",E.target.targetUpdateTime=new Date().toUTCString(),E.target.targetUpdateLoggerTags=jt(c)),{result:w,elementInteractedDisplayString:E.resolution.displayString,thoughts:E.thoughts}}catch(E){if(y&&this.browser.setActiveFrameConfig(S),this.throwIfClosed(),f<g&&PO(E)){c.warn({err:E,aiAttempt:f},"Encountered retryable AI targeting error; retrying with AI once");continue}throw E instanceof te?E:new te("ActionFailureError",E.message)}}throw new te("ActionFailureError","Failed to execute AI targeting after retry")}async screenshotWithDimensions(t){return lA(this.browser,t)}async executePresetCommand(t,n,o,r,i){this.options?.slowMoMs&&await ot(this.options.slowMoMs);let s=await this.browser.getOpenPages(),a=this.browser.url(),l;try{l=await this.resolveCommandTemplateStrings(n,o);}catch(c){throw this.throwIfClosed(),new te("ActionFailureError",`Failed to substitute template strings in command: ${c.message}`,{errOptions:{cause:c}})}try{let c=await He({name:`cli.command.${n.type}`,attributes:{"momentic.command_type":n.type,"momentic.command_id":n.id},fn:()=>this.executePresetCommandHelper(t,n,o,r,i)});return this.options?.autoFollowNewTabs&&await V9({beforeUrl:a,command:n,beforePages:s.map(d=>d.url),browser:this.browser,logger:this.logger}),c}catch(c){throw c.name!=="AbortError"&&this.logger.error({err:c},"Error thrown in action controller"),c}finally{j6(n,l);}}createCallbacksForBrowser(t){return {createIsolatedFolder:()=>GF(t)}}async traceBrowserInteraction(t,n,o){return xo().startAsyncSpan("BROWSER_INTERACTION",async i=>n(i),{name:t,...o})}async resolveCommandTemplateStrings(t,n){return hI({obj:t,context:n,bannedKeys:["type","a11yData","thoughts","cache","code"],orgId:this.orgId,logger:this.logger,signal:this.executeAbortController.signal,localTools:this.localCodeEvalTools})}async executePresetCommandHelper(t,n,o,r,i){r=r||"disableCache"in n&&!!n.disableCache;let s=this.logger.child({commandId:n.id});switch(n.type){case "SUCCESS":{let a=n.condition;return a?.assertion.trim()?MI({command:a,fixtures:this.getControllerFixtures(),useMemory:this.shouldUseMemory(),logger:s,recoveryHint:i}):{succeedImmediately:false,urlAfterCommand:this.browser.url()}}case "AI_ASSERTION":{if(!n.assertion.trim())throw new te("ActionFailureError","Missing assertion");if(n.timeout&&n.timeout>1800)throw new te("AssertionFailureError",`AI check timeout of ${n.timeout} exceeds the maximum allowed value of 30 minutes.`);return MI({command:n,fixtures:this.getControllerFixtures(),useMemory:this.shouldUseMemory(),logger:s,recoveryHint:i})}case "AI_EXTRACT":return n7({command:n,logger:s,fixtures:this.getControllerFixtures(),disableCache:r});case "NAVIGATE":if(!yf(n.url)&&!Sf(n.url,this.browser.baseUrl))throw new te("ActionFailureError",`Invalid URL provided to navigate command: ${n.url}`);await this.traceBrowserInteraction("Navigate",()=>this.browser.navigate({url:n.url,loadTimeoutMs:n.loadTimeout?n.loadTimeout*1e3:void 0}));break;case "DIALOG":this.browser.registerDialogHandler(n.action);break;case "CAPTCHA":throw new te("UserConfigurationError","Captcha solving is no longer available on Momentic");case "GO_BACK":await this.traceBrowserInteraction("Go back",()=>this.browser.goBack());break;case "GO_FORWARD":await this.traceBrowserInteraction("Go forward",()=>this.browser.goForward());break;case "SCROLL_LEFT":case "SCROLL_RIGHT":case "SCROLL_DOWN":case "SCROLL_UP":{let a,l;if(n.target&&$l(n.target)){let u=ei(n.target.pixels);await this.browser.hoverUsingVisualCoordinates(u);}else if(n.target&&n.target.elementDescriptor.trim()){let{elementInteractedDisplayString:u,thoughts:p}=await this.wrapElementTargetingCommand({tracer:t,command:n,target:n.target,cache:n.cache?.target,action:m=>this.browser.hover(m),options:{...n,targetName:"target",disableGlobalLocatorRedirect:true,disableCache:r}});a=u,l=p;}let c=this.browser.getViewport()?.height??$r.height,d=this.browser.getViewport()?.width??$r.width;switch(n.type){case "SCROLL_UP":await this.traceBrowserInteraction("Scroll up",()=>this.browser.scrollVertical(-(n.deltaY??c)));break;case "SCROLL_DOWN":await this.traceBrowserInteraction("Scroll down",()=>this.browser.scrollVertical(n.deltaY??c));break;case "SCROLL_LEFT":await this.traceBrowserInteraction("Scroll left",()=>this.browser.scrollHorizontal(-(n.deltaX??d)));break;case "SCROLL_RIGHT":await this.traceBrowserInteraction("Scroll right",()=>this.browser.scrollHorizontal(n.deltaX??d));break}return {succeedImmediately:false,urlAfterCommand:this.browser.url(),elementInteracted:a,thoughts:l}}case "WAIT_FOR_URL":{if(n.timeout&&n.timeout>1800)throw new te("UserConfigurationError",`Wait for URL timeout of ${n.timeout} exceeds the maximum allowed value of 30 minutes.`);let a=n.matcher;await this.browser.waitForUrl({beforeUrl:this.browser.url(),matcher:a},{timeout:n.timeout?n.timeout*1e3:void 0,negated:n.negated,caseInsensitive:n.caseInsensitive});break}case "WAIT":{if(n.delay>1800)throw new te("UserConfigurationError",`Wait timeout of ${n.delay} seconds exceeds the maximum allowed value of 30 minutes`);let a=n.delay*1e3;await ot(a,this.executeAbortController.signal);break}case "REFRESH":await this.traceBrowserInteraction("Refresh",()=>this.browser.refresh({loadTimeoutMs:n.loadTimeout?n.loadTimeout*1e3:void 0}));break;case "CLICK":{if($l(n.target)){let p=ei(n.target.pixels),m={...n,relativePosition:n.relativePosition?ei(n.relativePosition):void 0};await this.traceBrowserInteraction("Click",()=>this.browser.clickUsingVisualCoordinates(p,m),{coordinates:p});break}let a=this.browser.url(),{elementInteractedDisplayString:l,result:c,thoughts:d}=await this.wrapElementTargetingCommand({tracer:t,target:n.target,command:n,cache:n.cache?.target,action:p=>this.traceBrowserInteraction("Click",async m=>{let h={...n,relativePosition:n.relativePosition?ei(n.relativePosition):void 0},g=await this.browser.click(p,this.createCallbacksForBrowser(this.orgId),h);return g.coordinates&&(m.coordinates=g.coordinates),g},{selector:p.locator.toString()}),options:{...n,targetName:"target",disableCache:r}}),u={urlAfterCommand:this.browser.url(),succeedImmediately:false,elementInteracted:l,thoughts:d,data:c.downloadedFile?{downloadedFile:c.downloadedFile}:void 0};return WR(a,u.urlAfterCommand)&&(u.succeedImmediately=true,u.succeedImmediatelyReason="URL changed"),u}case "COPY":return await this.browser.copy(n.value),{succeedImmediately:false,data:n.value,urlAfterCommand:this.browser.url()};case "PASTE":{await this.browser.paste();break}case "DRAG":{if($l(n.fromTarget)&&$l(n.toTarget)){let c=ei(n.fromTarget.pixels),d=ei(n.toTarget.pixels);await this.traceBrowserInteraction("Drag",()=>this.browser.dragAndDropUsingVisualCoordinates(c,d,{hoverDurationMs:n.hoverSeconds?n.hoverSeconds*1e3:void 0}),{coordinates:c});break}if($l(n.fromTarget)||$l(n.toTarget))throw new Error("Drag and drop targets must be both coordinates or both descriptions");let{elementInteractedDisplayStrings:a,thoughts:l}=await this.wrapMultiElementTargetingCommand({tracer:t,command:n,targetNames:["fromTarget","toTarget"],descriptions:[n.fromTarget,n.toTarget],caches:[n.cache?.fromTarget,n.cache?.toTarget],action:(c,d)=>this.traceBrowserInteraction("Drag",()=>this.browser.dragAndDrop(c,d,{hoverDurationMs:n.hoverSeconds?n.hoverSeconds*1e3:void 0,steps:n.steps})),options:{...n,disableCache:r}});return {succeedImmediately:false,urlAfterCommand:this.browser.url(),elementInteracted:a[0],thoughts:l}}case "MOUSE_DRAG":{let a=parseInt(n.deltaX),l=parseInt(n.deltaY),c=n.steps??5;if(isNaN(a)||isNaN(l))throw new te("ActionFailureError",`Invalid pixel values passed to mouse drag command: (${n.deltaX}, ${n.deltaY})`);if(n.target&&$l(n.target)){let p=ei(n.target.pixels);await this.traceBrowserInteraction("Mouse drag",()=>this.browser.mouseDragUsingVisualCoordinates({deltaX:a,deltaY:l,steps:c,fromTarget:p}),{coordinates:p});break}let d,u;if(n.target?.elementDescriptor){let{elementInteractedDisplayString:p,thoughts:m}=await this.wrapElementTargetingCommand({tracer:t,command:n,target:n.target,cache:n.cache?.target,action:async h=>this.traceBrowserInteraction("Mouse drag",()=>this.browser.mouseDrag(a,l,c,h.locator,{force:n.force})),options:{...n,targetName:"target",disableCache:r}});d=p,u=m;}else await this.traceBrowserInteraction("Mouse drag",()=>this.browser.mouseDrag(a,l,c,void 0,{force:n.force}));return {succeedImmediately:false,urlAfterCommand:this.browser.url(),elementInteracted:d,thoughts:u}}case "SELECT_OPTION":{if(!sd(n.target))throw new Error("Select with x/y is not supported yet");let a=n.target.elementDescriptor,l=n.choice,{elementInteractedDisplayString:c,thoughts:d}=await this.wrapElementTargetingCommand({tracer:t,command:n,target:{type:"description",elementDescriptor:a},cache:n.cache?.target,action:u=>this.traceBrowserInteraction("Select option",()=>this.browser.selectOption(u,l,n.force),{value:l.type==="LABEL"?l.label:l.type==="VALUE"?l.value:l.index}),options:{...n,targetName:"target",disableCache:r,source:ym(n)}});return {succeedImmediately:false,urlAfterCommand:this.browser.url(),elementInteracted:c,thoughts:d}}case "TAB":{let a={loadTimeoutMs:n.loadTimeout?n.loadTimeout*1e3:void 0,retry:true};await this.browser.switchToPage(n.action,a);break}case "NEW_TAB":await this.browser.createNewTab(n.url,{loadTimeoutMs:n.loadTimeout?n.loadTimeout*1e3:void 0});break;case "CLOSE_TAB":await this.browser.closePage(n.action,{retry:true});break;case "COOKIE":{if(!n.value)break;let a=await this.browser.setCookie(n.value);s.debug({results:a},"Set cookies");break}case "LOCAL_STORAGE":if(!n.value||!n.key)break;await this.browser.setLocalStorage(n.key,n.value);break;case "JAVASCRIPT":{let a;try{n.environment==="BROWSER"?(a=await this.browser.evaluateCodeInPage({code:n.code,fragment:n.fragment??!1,context:o.toObjectCopy(),timeoutMs:n.timeout?n.timeout*1e3:void 0}),s.info({result:a},"Executed JavaScript in browser")):a=await Sp({orgId:this.orgId,code:n.code,fragment:!!n.fragment,context:o,timeoutMs:n.timeout?n.timeout*1e3:void 0,logger:s,localTools:this.localCodeEvalTools,signal:this.executeAbortController.signal,callbacks:{onPersistentVariableUpdates:async l=>{if(!this.options?.scratchPadId){s.warn({updates:l},"Got persistent variable updates but scratch pad is not available");return}await this.storage.savePersistentVariables?.({scratchPadId:this.options?.scratchPadId,orgId:this.orgId,updates:l,logger:s});}}});}catch(l){throw this.throwIfClosed(),new te("ActionFailureError",l instanceof Error?l.message:`${l}`,{errOptions:{cause:l}})}try{JSON.stringify(a);}catch(l){throw new te("ActionFailureError",`Return value is not serializable: ${l instanceof Error?l.message:`${l}`}`,{errOptions:{cause:l}})}return {urlAfterCommand:this.browser.url(),succeedImmediately:false,data:a}}case "TYPE":{if(n.target&&$l(n.target)){let m=ei(n.target.pixels),h={...n,relativePosition:n.relativePosition?ei(n.relativePosition):void 0};await this.browser.clickUsingVisualCoordinates(m,h),await this.traceBrowserInteraction("Type",()=>this.browser.type(n.value,{force:n.force,clearContent:n.clearContent,forceClearContent:n.forceClearContent,delay:n.delay,pressEnter:n.pressEnter},true),{value:n.value});break}let a=this.browser.url(),l,c,d=cloneDeep(n.target),u=this.browser.userBrowserSettings.globalLocatorRedirect===void 0||this.browser.userBrowserSettings.globalLocatorRedirect==="always";if(d){let{elementInteractedDisplayString:m,thoughts:h}=await this.wrapElementTargetingCommand({tracer:t,command:n,target:d,cache:n.cache?.target,action:g=>this.traceBrowserInteraction("Type",()=>this.browser.typeIntoTarget(n.value,g,{force:n.force,clearContent:n.clearContent,forceClearContent:n.forceClearContent,delay:n.delay,pressEnter:n.pressEnter,relativePosition:n.relativePosition}),{value:n.value,selector:g.locator.toString()}),options:{...n,targetName:"target",disableCache:r,disableGlobalLocatorRedirect:!u,source:ym(n)}});l=m,c=h;}else await this.traceBrowserInteraction("Type",()=>this.browser.type(n.value,{force:n.force,clearContent:n.clearContent,forceClearContent:n.forceClearContent,delay:n.delay,pressEnter:n.pressEnter},true),{value:n.value});let p={urlAfterCommand:this.browser.url(),succeedImmediately:false,elementInteracted:l,thoughts:c};return WR(a,p.urlAfterCommand)&&(p.succeedImmediately=true,p.succeedImmediatelyReason="URL changed"),p}case "HOVER":{if($l(n.target)){let c=ei(n.target.pixels);await this.traceBrowserInteraction("Hover",()=>this.browser.hoverUsingVisualCoordinates(c),{coordinates:c});break}let{elementInteractedDisplayString:a,thoughts:l}=await this.wrapElementTargetingCommand({tracer:t,command:n,target:n.target,cache:n.cache?.target,action:c=>this.traceBrowserInteraction("Hover",()=>this.browser.hover(c,{relativePosition:n.relativePosition?ei(n.relativePosition):void 0}),{selector:c.locator.toString()}),options:{...n,targetName:"target",disableCache:r}});return {succeedImmediately:false,urlAfterCommand:this.browser.url(),elementInteracted:a,thoughts:l}}case "FOCUS":{if(!sd(n.target))throw new Error("Focus with x/y is not supported yet");let{elementInteractedDisplayString:a,thoughts:l}=await this.wrapElementTargetingCommand({tracer:t,command:n,target:n.target,cache:n.cache?.target,action:c=>this.browser.focus(c),options:{...n,targetName:"target",disableCache:r}});return {succeedImmediately:false,urlAfterCommand:this.browser.url(),elementInteracted:a,thoughts:l}}case "BLUR":{if(n.target&&!sd(n.target))throw new Error("Blur with x/y is not supported yet");if(!n.target||!n.target.elementDescriptor)return await this.browser.blur(null),{succeedImmediately:false,urlAfterCommand:this.browser.url()};let{elementInteractedDisplayString:a,thoughts:l}=await this.wrapElementTargetingCommand({tracer:t,target:n.target,command:n,cache:n.cache?.target,action:c=>this.browser.blur(c),options:{...n,targetName:"target",disableCache:r}});return {succeedImmediately:false,urlAfterCommand:this.browser.url(),elementInteracted:a,thoughts:l}}case "PRESS":{let a=this.browser.url();await this.traceBrowserInteraction("Press key",()=>this.browser.press(n.value,{repeat:n.repeat,convertMeta:n.convertMeta??true,delayMs:n.delayMs}),{value:n.value});let l={urlAfterCommand:this.browser.url(),succeedImmediately:false};return WR(a,l.urlAfterCommand)&&(l.succeedImmediately=true,l.succeedImmediatelyReason="URL changed"),l}case "KEY_DOWN":return await this.browser.keyDown(n.value,{convertMeta:n.convertMeta??true}),{urlAfterCommand:this.browser.url(),succeedImmediately:false};case "KEY_UP":return await this.browser.keyUp(n.value,{convertMeta:n.convertMeta??true}),{urlAfterCommand:this.browser.url(),succeedImmediately:false};case "REQUEST":{let a=new CookieJar,l=UBe(fetch,a),c;try{c=new URL(n.url).hostname;}catch{}let d=await d7({command:n,baseUrl:this.browser.baseUrl,logger:s,fetchImplementation:l});return {data:CS.parse({...d,cookies:Qz(a,c)}),succeedImmediately:false,urlAfterCommand:this.browser.url()}}case "GRAPHQL_REQUEST":return {data:await m7({command:n,baseUrl:this.browser.baseUrl,logger:s}),succeedImmediately:false,urlAfterCommand:this.browser.url()};case "VISUAL_DIFF":return c7({tracer:t,command:n,disableCache:r,browser:this.browser,logger:s,screenshotStorage:this.visualDiffScreenshotStorage,targetingWrapper:a=>this.wrapElementTargetingCommand(a)});case "FILE_UPLOAD":{let a,l;if(n.fileSource.type==="URL"?(l=n.fileSource.url,a=await x8({uri:n.fileSource.url,logger:s,orgId:this.orgId})):n.fileSource.type==="USER_FILE"&&(l=n.fileSource.name,a=await this.uploadedFileStorage?.getFileForUpload(n.fileSource.name,this.orgId)),!a)throw new te("UserConfigurationError",`Attempted to use non-existent file for upload step: ${l}`);await this.browser.setFileChooserHandler({...a,filename:n.filename});break}case "AUTH_SAVE":{let a=await this.browser.saveAuthState();if(n.storageState&&ap(n.storageState)){let l=Jn__default.resolve(n.storageState);br__default.mkdirSync(Jn__default.dirname(l),{recursive:true}),br__default.writeFileSync(l,`${JSON.stringify(a,null,2)}
|
|
5764
5764
|
`,"utf8");}return {data:a,succeedImmediately:false,urlAfterCommand:this.browser.url()}}case "AUTH_LOAD":{let a;if(ap(n.storageState))try{a=JSON.parse(br__default.readFileSync(Jn__default.resolve(n.storageState),"utf8"));}catch(c){throw new te("UserConfigurationError",`Failed to read auth state from '${n.storageState}': ${Q(c)}`,{errOptions:{cause:c}})}else if(!n.storageState.trim())a=void 0;else if(a=await Sp({orgId:this.orgId,code:n.storageState,fragment:false,context:o,logger:s,localTools:this.localCodeEvalTools,signal:this.executeAbortController.signal}),typeof a!="object")throw new te("ActionFailureError",`Credentials must evaluate to an object (received ${typeof a} instead)`);let l;try{l=ov.optional().parse(a);}catch(c){throw new te("ActionFailureError",`Credentials provided do not follow the required format: ${c}`)}await this.browser.loadAuthState(l);break}case "ELEMENT_CHECK":{let a=(n.timeout??ca)*1e3,l=this.generator.getAgentConfig()?.assertion;if(a7(n.assertion)&&!n.useSelector&&n.target.type==="description"&&l&&l!=="v1"){let d={id:n.id,type:"AI_ASSERTION",assertion:`There is no element on the page closely matches the following description. If the description has single quotes, remember that requires an exact text substring match. Description: ${n.target.elementDescriptor}`,iframeUrl:n.iframeUrl,timeout:n.timeout,source:"NEGATED_CHECK",cache:n.cache&&"memory"in n.cache?{memory:n.cache?.memory}:void 0};try{let u=await MI({command:d,logger:s,fixtures:this.getControllerFixtures(),useMemory:this.shouldUseMemory()});return {succeedImmediately:!1,thoughts:`The element described does not exist on the page: ${u.thoughts}`,urlAfterCommand:this.browser.url(),afterScreenshotOverride:u.afterScreenshotOverride}}finally{d.cache?.memory&&yT(n,d.cache?.memory.traces,s);}}let c=await s7({command:n,tracer:t,timeoutMs:a,targetingWrapper:d=>this.wrapElementTargetingCommand(d),fixtures:this.getControllerFixtures(),disableCache:r});return {fail:!c.success,data:c.data,elementInteracted:c.elementInteractedDisplayString,thoughts:c.err?.message??c.thoughts??`Element assertion ${c.success?"succeeded":"failed"}.`,succeedImmediately:false,urlAfterCommand:this.browser.url()}}case "PAGE_CHECK":{let a=await La({action:async()=>NI({assertion:n.assertion,browser:this.browser,logger:s,timeout:n.timeout,signal:this.executeAbortController.signal,autoExpandIframes:!!this.browser.userBrowserSettings.autoExpandIframes}),frameConfig:n.iframeUrl?{type:"url",url:n.iframeUrl}:void 0,browser:this.browser,logger:s});return {fail:!a.success,data:a.data,thoughts:a.success?"Page assertion passed.":a.err?.message??`Page assertion still failing after ${n.timeout} seconds.`,urlAfterCommand:this.browser.url(),succeedImmediately:false}}case "REGISTER_REQUEST_LISTENER":{let a=new Rp(n.requestMatcher),l=this.browser.registerRequestListener(a);return this.registeredListeners[n.key]=l.then(async c=>await zF(c)).catch(c=>{s.error({err:c},"Failed to get request listener response");}),{succeedImmediately:false,urlAfterCommand:this.browser.url()}}case "AWAIT_LISTENER":{let a=this.registeredListeners[n.key];if(!a)throw new te("ActionFailureError",`No listener registered with key: ${n.key}`);let l=n.timeout??10;return {data:await Ie(a,{milliseconds:l*1e3,message:`Request listener timed out after ${l} seconds`}),succeedImmediately:false,urlAfterCommand:this.browser.url()}}case "RECORD_REQUESTS":{let a=new Rp(n.requestMatcher);return this.recordedRequests[n.key]={},this.browser.registerRequestRecorder(n.key,{matches:l=>a.matches({url:l.request.url,method:l.request.method}),onRequestStart:(l,c)=>{this.recordedRequests[n.key][l]=EI(c);},onRequestComplete:(l,c)=>{this.recordedRequests[n.key]?.[l]&&(this.recordedRequests[n.key][l]=EI(c));}}),{succeedImmediately:false,urlAfterCommand:this.browser.url()}}case "GET_RECORDED_REQUESTS":{let a=this.recordedRequests[n.key];if(!a)throw new te("ActionFailureError",`No recorder registered with key: ${n.key}`);return delete this.recordedRequests[n.key],{data:Object.values(a),succeedImmediately:false,urlAfterCommand:this.browser.url()}}case "SET_HEADER":{let a;return n.requestMatcher&&(a=new Rp(n.requestMatcher)),this.browser.setHeader(n.name,n.value,a),{succeedImmediately:false,urlAfterCommand:this.browser.url()}}case "MOCK_ROUTE":return {data:{key:this.browser.registerMock(n.key,new Rp(n.requestMatcher),async(l,c)=>{let d=await Sp({orgId:this.orgId,code:n.responseGenerator,fragment:false,context:o,timeoutMs:void 0,logger:s,localTools:this.localCodeEvalTools,mock:{request:l,response:c},disallowVariableUpdates:true,responseSerialization:"RESPONSE"}),u=CW.parse(d);return new Response(u.body,{status:u.status,headers:u.headers})},n.fetchOriginalResponse??false)},succeedImmediately:false,urlAfterCommand:this.browser.url()};case "REMOVE_ROUTE_MOCK":return this.browser.removeMock(n.key),{succeedImmediately:false,urlAfterCommand:this.browser.url()};case "OFFLINE_MODE":return await this.browser.setOfflineMode(n.enable),{succeedImmediately:false,urlAfterCommand:this.browser.url()};default:return (l=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})()}return {succeedImmediately:false,urlAfterCommand:this.browser.url()}}async getReverseMappedDescription({browserState:t,targetId:n,disableCache:o,screenshot:r}){return (await this.generator.getReverseMappedDescription({browserState:t,target:n,screenshot:r},{disableCache:o,abortSignal:this.executeAbortController.signal,loggerTags:jt(this.logger)})).phrase}async stopRecordMode(){this.recordAbortController?.abort(),await this.browser.clearAllCdpHighlights();}async startRecordMode({params:t,abortController:n,isClickToRecord:o}){this.recordAbortController=n;let r=new xI({signal:n.signal,...t});return await this.browser.startRecording(this.recordAbortController.signal,r,o),r}async runSectionAutohealing(t){return this.generator.getAutohealingProposal(t,{disableCache:true,abortSignal:this.executeAbortController.signal,loggerTags:jt(this.logger)})}async getFailureRecoveryPlan(t,n){return this.generator.getFailureRecoveryPlan(t,{disableCache:true,abortSignal:this.executeAbortController.signal,loggerTags:jt(n??this.logger)})}};var fB=async e=>{let{step:t,resolvedInputs:n}=e.moduleParams,{logger:o,context:r,storage:i,codeEvalTools:s,controller:a}=e.fixtures,l=a.browser,{orgId:c,runId:d}=e.inputs,u=a.executeAbortController.signal;Object.keys(n).length>0&&(r.setInputs(n),o.info(Vs({json:{inputs:n,moduleId:t.moduleId},maxJsonStringSize:1e3}),"Set module inputs"));let p,m=false,h,g;if(t.cacheConfig||t.defaultCacheAllInvocations){let f=t.cacheConfig?.cacheKey||t.defaultCacheKey||"",y=await gi({orgId:c,s:f,context:r,logger:o,localTools:s,signal:u});g={orgId:c,cacheKeys:[y,...Object.entries(n).map(([b,E])=>`${b}:${E}`)]},o.info({original:f,keyParams:g},"Module cache key params");let S=Date.now();for(;Date.now()-S<c1;){u?.throwIfAborted();let b=await i.getCacheResult(g);if(b){o.info({cacheResult:mn(b,1e3,true)},"Got result from module execution cache"),p=LI(t,n,"SUCCESS"),p.message="Used cached module result.",p.data=JSON.parse(b),m=true;break}else o.info({cacheKey:f,keyParams:g},"No cache result found, continuing with lock acquisition");let E=await i.acquireCacheLock({keyParams:g,clientMetadata:`hostName:${hostname()};runId:${d}`},u);if(E.acquired){h=E.keyPrefix,o.info({cacheKeyPrefixIfLockAcquired:h,cacheKey:f,keyParams:g},"Acquired cache lock and proceeding with module execution");break}else o.debug({cacheKeyPrefixIfLockAcquired:h,cacheKey:f,keyParams:g},"Failed to acquire cache lock, retrying...");await ot(2500+Math.random()*1e4,u);}}try{if(!p)p=await jBe(e);else if(t.autoAuth){let f=ov.safeParse(p.data);if(!f.success)throw new te("UserConfigurationError",`Cached authentication module result is not a valid storage state: ${f.error.message}`);o.debug("Automatically loading auth state after cached module result"),await l.loadAuthState(f.data);let y=!1,S=t.advanced?.cacheInvalidation;if(S&&S.type==="PAGE_CHECK"){let b={type:"CONTENT",value:S.substring},E=await NI({timeout:ca,assertion:b,browser:l,logger:o,signal:u,autoExpandIframes:!!l.userBrowserSettings.autoExpandIframes});E.success?o.debug({invalResult:E},"Cached result still valid after page check, continuing..."):(o.info({invalResult:E},"Invalidating cached result due to page check failure"),y=!0);}if(g&&y)return await i.deleteCacheResult(g),fB(e)}}finally{try{h!==void 0&&!m&&p?.status==="SUCCESS"&&await $Be({step:t,result:p,browser:a.browser,cacheKeyPrefix:h,logger:o,storage:i});}finally{h!==void 0&&await i.releaseCacheLock(h);}}return p},jBe=async e=>{let{currentParentIdChain:t}=e,{step:n,tracer:o}=e.moduleParams,r=LI(n,e.moduleParams.resolvedInputs,"SUCCESS"),i=await o.startSubSteps(),{status:s,results:a}=await e.executeStepList({...e,listParams:{steps:n.steps,containerName:`module ('${n.name}')`,tracer:i,currentParentIdChain:t}});return r.results=a,r.status=s,r.finishedAt=new Date,Ss({asyncTasks:e.work.asyncTasks,nestedResults:a,result:r,logger:e.fixtures.logger}),r};function LI(e,t,n){let o={};return Object.entries(t).forEach(([i,s])=>{o[i]=JSON.stringify(s);}),{type:"MODULE",id:e.id,moduleId:e.moduleId,moduleName:e.name,startedAt:new Date,cacheConfig:e.cacheConfig,inputs:o,results:[],finishedAt:new Date,status:n}}async function g7({orgId:e,step:t,context:n,logger:o,codeEvalTools:r,signal:i}){let s={};try{for(let a of t.parameters??[]){let l=t.inputs?.[a]??t.defaultParameters?.[a];if(!l){o.warn(`No value or default found for parameter '${a}' that is required by module '${t.name}'`);continue}s[a]=await Sp({orgId:e,code:l,fragment:!0,context:n,logger:o,localTools:r,signal:i});}return s}catch(a){throw i?.throwIfAborted(),new te("UserConfigurationError",`Failed to evaluate module inputs: ${a}`)}}async function $Be({step:e,result:t,browser:n,cacheKeyPrefix:o,logger:r,storage:i}){let s=e.cacheConfig?.cacheExpiryMs;(!s||s===TK)&&(s=e.defaultCacheTtl??AK);let a;e.autoAuth?a=JSON.stringify(await n.saveAuthState()):t.data!==void 0?a=JSON.stringify(t.data):a='""',r.debug({cacheKeyPrefix:o,ttlMs:s,truncatedCacheResultJson:Vs({json:a,maxJsonStringSize:1e4})},"Setting module cache result"),await i.setCacheResult({result:a,keyPrefix:o,ttlMs:s});}async function Ip(e,t,n){return VBe(e,t,n)}async function VBe(e,t,n){let o=new Date;try{return n.throwIfAborted(),await t()}catch(r){let i=new Date,s="FAILED",a;if(n.aborted||r instanceof DOMException&&r.name==="AbortError"?(a="Step aborted by user.",s="CANCELLED"):r instanceof te?a=`${r}`:a=`An unexpected error occurred: ${r.message}`,e.type==="RESOLVED_MODULE"){let l=LI(e,{},"FAILED");return l.message=a,l.startedAt=o,l.finishedAt=i,l}return {...ff(e),startedAt:o,finishedAt:i,status:s,data:null,message:a,results:[]}}}async function yi(e,t){let n=false;try{return e&&!e.state.failureRecoveryDisabled&&(e.state.failureRecoveryDisabled=!0,n=!0),await t()}finally{e&&n&&(e.state.failureRecoveryDisabled=void 0);}}var kI=20;function q({text:e,section:t}){if(!t)return [{type:"text",text:e}];let n=`### ${t}`;return e.length===0?[{type:"text",text:n}]:[{type:"text",text:`${n}
|
|
5765
5765
|
${e}`}]}function Ki({base64Data:e,mediaType:t,section:n}){return n?[{type:"text",text:`### ${n}`},{type:"media",data:e,mediaType:t}]:[{type:"media",data:e,mediaType:t}]}function ae(e){if(e.length===0)throw new mt("No content parts provided to construct the tool response content.");return {type:"content",value:e}}function xl(e){return {type:"content",value:[{type:"text",text:e}]}}function f7(e,t=2e4){let n={};for(let[o,r]of Object.entries(e)){if(typeof r=="object"&&r!==null){let i=JSON.stringify(r,null,2);if(At(i)>t){n[o]="[too large truncated]";continue}n[o]=r;continue}n[o]=r;}return n}function y7(e,t){let n={},o=0,r=Object.entries(e).map(([i,s])=>{let a=JSON.stringify(s,null,2),l=At(a);return {key:i,value:s,tokens:l}}).sort((i,s)=>i.tokens-s.tokens);for(let{key:i,value:s,tokens:a}of r)o+a<=t&&(n[i]=s,o+=a);return n}function S7({projectRoot:e,filePath:t,pathLabel:n="path"}){if(!t||!Jn__default.isAbsolute(t))return t;let o=Jn__default.relative(e,t);if(o.startsWith("..")||Jn__default.isAbsolute(o))throw new Error(`Error: ${n} "${t}" must be inside project root "${e}".`);return o}function b7(e){return e.map(t=>{switch(t.type){case "text":return t;case "media":return {type:"image",data:t.data,mimeType:t.mediaType};default:return (o=>{throw new Error("Unhandled content part")})()}})}var A7=["__generated__"],E7=[".env",".npmrc",".netrc",".git-credentials","credentials","credentials.json"],C7=[".env.","id_rsa","id_ecdsa","id_ed25519","service-account"],v7=[".pem",".key",".p12",".pfx",".keystore",".jks",".tfstate"],R7=[".tfstate."],DI=[...E7.map(e=>`**/${e}`),...C7.map(e=>`**/${e}*`),...v7.map(e=>`**/*${e}`),...R7.map(e=>`**/*${e}*`)];function T7(e){let t=Jn__default.basename(e).toLowerCase();return E7.includes(t)||C7.some(n=>t.startsWith(n))||v7.some(n=>t.endsWith(n))||R7.some(n=>t.includes(n))}function cA(e,t){return Jn__default.resolve(Jn__default.resolve(e),t)}async function w7(e,t){let n=cA(e,t);if(T7(n))throw new Error(`Path '${t}' matches the sensitive-file deny list (likely credentials or secrets) and cannot be read.`);let o=await TB.realpath(n);if(T7(o))throw new Error(`Path '${t}' matches the sensitive-file deny list (likely credentials or secrets) and cannot be read.`);return o}var qBe=z.object({pattern:z.string().min(1).describe("Glob pattern to match against file paths (relative to the search root). Patterns are NOT recursive by default \u2014 `*` matches a single path segment, the same way shell globs do. Prefix with `**/` for recursive globs (e.g. `**/*.ts` to find all TypeScript files, `**/open-app*` to find any file whose basename starts with `open-app`)."),path:z.string().optional().describe("Optional repo-relative directory to start the search in. Defaults to the working directory root."),maxResults:z.int().min(1).max(1e3).default(100).describe("Maximum number of paths to return. Defaults to 100.")}),KBe="Find files by glob pattern. Skips common build/dependency/IDE directories (package manager folders, .git, dist, build, .next, __generated__, etc.) by default. Returns one repo-relative path per line.";function BI(e){return {tool:tool({description:KBe,inputSchema:qBe,execute:async n=>{let o=await YBe(n,e);return ae(q({text:JBe(n.pattern,o)}))},toModelOutput:({output:n})=>n}),name:pd}}async function YBe({pattern:e,path:t,maxResults:n},o){let r=Jn__default.resolve(o.repoRoot),i=t?cA(r,t):r;return (await Bd([e],{cwd:i,ignore:[...A7.map(a=>`**/${a}`),...DI],maxDepth:1/0,nodir:true,signal:AbortSignal.timeout(3e4)})).slice(0,n).map(a=>Jn__default.relative(r,Jn__default.resolve(i,a)))}function JBe(e,t){return t.length===0?!e.includes("**/")&&!e.startsWith("**")?`(no matching files. Tip: '${e}' only matches at the top of the search root \u2014 prepend '**/' for a recursive match, e.g. '**/${e}'.)`:"(no matching files)":t.join(`
|
|
5766
5766
|
`)}function UI({lines:e,startLine:t,maxLines:n,maxBytes:o,truncateLineChars:r}){let i=e.length,s=Math.max(1,t);if(s>i)return {content:"",endLine:s-1,droppedLines:0,droppedBytesFromByteCap:0};let a=Math.min(i,s-1+n),l=e.slice(s-1,a).map(g=>r?I7(g,300):g),c=l.join(`
|
|
@@ -7500,7 +7500,7 @@ with this test we are editing:
|
|
|
7500
7500
|
to pick which of these modules are relevant:
|
|
7501
7501
|
|
|
7502
7502
|
`;let p=pWe(c);u+=p;let m=streamObject({schema:V0,model:d("claude-sonnet-4-5-20250929"),system:uWe,messages:[{role:"user",content:u}],providerOptions:{anthropic:bs}}),h=[];for await(let b of m.textStream)h.push(b);let g=h.join(""),f;try{let b=JSON.parse(g);f=V0.parse(b);}catch(b){r.error({rawResponse:g,parseError:b},"Failed to parse AI response as JSON"),n.addError(`Failed to parse AI response: ${Q(b)}. Raw response: ${g}`);return}let y=new Set(c.map(b=>b.moduleId)),S=f.recommendations.filter(b=>y.has(b.moduleId)?!0:(r.warn({moduleId:b.moduleId,moduleName:b.moduleName},"AI recommended a module that doesn't exist"),!1));n.addPartFromText(JSON.stringify({recommendations:S,totalModulesAnalyzed:c.length},null,2));}catch(c){r.error({err:c},"Error in module recommendation"),n.addError(`Failed to recommend modules: ${Q(c)}`);}}}),s_=[hWe,cWe];var gWe=1e5,bre=Ar({schema:{name:US,description:"Get the current browser state for a granular session. Defaults: screenshot on, browser snapshot off. The browser snapshot includes the URL, accessibility tree, and other context. Ask for it (returnBrowserState: true) when you need it for locator resolution or richer page structure\u2014e.g. when screenshot-only output is insufficient. For large pages, pass `hint` to AI-filter the snapshot down to the relevant sections.",inputSchema:{sessionId:z.string().describe("The session id to query."),returnBrowserState:z.boolean().default(false).describe("Include the serialized browser snapshot. Default false. Set to true when you need the browser snapshot for element targeting or page structure."),returnScreenshot:z.boolean().default(true).describe("Include a screenshot. Default true. Set to false if you already have a screenshot of the present state and don't need a new one. EX: you just previewed a step and see that the page is too complicated and need the browser snapshot."),hint:z.string().optional().describe("Short natural-language description of what you need from the page (e.g. the action you are about to take or the element you are looking for). Required when returnBrowserState=true and the page is large: the hint is fed into an AI page-filtering step that returns only the most relevant sections of the accessibility tree, keeping the snapshot under the per-tool token budget.")}},handle:async(e,t,n)=>{let o=Hp({response:n,sessionId:t.sessionId,toolName:US});if(!o)return;o.controller.setOpen();let r=await H0({browser:o.controller.browser,supportsFileOutput:e.supportsFileOutput,returnBrowserState:t.returnBrowserState,returnScreenshot:t.returnScreenshot,tokenLimit:gWe,hint:t.hint,filtering:{generator:e.generator,orgId:e.orgId,logger:e.logger,signal:o.controller.executeAbortController.signal}});n.addContentParts(r);}}),Tre=Ar({schema:{name:HS,description:"Get the current environment variables for a session.",inputSchema:{sessionId:z.string()}},handle:async(e,t,n)=>{let o=Hp({response:n,sessionId:t.sessionId,toolName:HS});if(!o)return;let r=await ra({testContext:o.context,supportsFileOutput:e.supportsFileOutput});n.addContentParts(r);}});var Are=Ar({schema:{name:ud,description:`Start a granular browser session for a specific test. Requires a testId. Returns session metadata (sessionId, testId, testFileAbsolutePath, projectConfigAbsolutePath, cwd, viewport, etc.), a Step Authoring Guide artifact that includes projectRootAbsolutePath, projectConfigAbsolutePath, and cwd, and a Test Content section that lists every step in the bound test with its stable stepId context. ${AA} Read the Step Authoring Guide artifact before creating, previewing, running, or splicing CLI-style steps. Use the Test Content section for the step ids required by tools that operate on existing steps in this session's test. After editing with splice, prefer the splice response or request returnTest for the updated active-session step ids. Use ${jr} to inspect persisted test state by id or path, especially for a different test.`,inputSchema:{testId:z.string().describe("The test id to target when starting a session."),envName:z.string().optional().describe("Optional environment override (matches CLI --env behavior). Defaults to the test's default env when omitted."),projectConfigPath:z.string().optional().describe("Optional path to a momentic.config.yaml file (matches CLI --config)."),projectNameFilter:z.string().optional().describe("Optional project name filter for workspace configs (matches CLI --filter)."),headfulBrowser:z.boolean().optional().describe("Whether to launch a headful browser for the session. When omitted, uses the MCP server default if configured."),video:z.boolean().optional().describe("Whether to record a video of the browser session. When omitted, uses the MCP server default if configured. When the session is terminated, the response will include the path to the video output directory.")}},handle:async(e,t,n)=>{let{logger:o}=e,r=t.video??e.videoDefault??false,i;r&&(Yi(e.project.rootDir),i=Ji({rootDir:e.project.rootDir,entity:"video",ext:"d"}),mkdirSync(i,{recursive:true}));let s;try{let l=rr();if(!l){n.addError("API client is not initialized; cannot start MCP session.");return}let c=await Ks({project:await on({configFilePath:t.projectConfigPath??e.project.configFilePath,nameFilter:t.projectNameFilter,skipExitOnError:!0}),apiClient:l}),d=new sa(l,e.orgId,c);s=await ia.startSession({logger:o,storage:d,testId:t.testId,idleTimeoutMs:e.sessionIdleTimeoutMs,runner:"mcp",envName:t.envName,headfulOverride:t.headfulBrowser??e.headfulDefault??!0,customHeaders:e.customHeaders,devicePixelRatio:e.devicePixelRatio,videoOutputDir:i});}catch(l){n.addError(Q(l));return}oa({type:"mcp:session_started",test_platform:"web"});let a=s.controller.browser.getViewport();n.addPartFromText(JSON.stringify({sessionId:s.sessionId,testId:s.testId,testFileAbsolutePath:s.testFileAbsolutePath,projectRootAbsolutePath:e.project.rootDir,projectConfigAbsolutePath:e.project.configFilePath,cwd:process.cwd(),createdAt:s.createdAt,expiresAt:s.lastAccessedAt+s.idleTimeoutMs,idleTimeoutMinutes:s.idleTimeoutMs/(60*1e3),envName:s.envName,baseUrl:s.baseUrl,viewport:a},null,2)),n.addContentParts(await Vee({projectRootAbsolutePath:e.project.rootDir,projectConfigAbsolutePath:e.project.configFilePath,cwd:process.cwd(),stepSchema:Es(),stepSchemaTitle:"Step schema",supportsFileOutput:e.supportsFileOutput}));try{let l=await Up({project:s.storage.getProject(),storage:s.storage,selector:{id:s.testId},envName:s.envName,logger:o,mutableStepState:s.mutableStepState,includeCache:!1,hydrateStepIdentity:!0,supportsFileOutput:e.supportsFileOutput});n.addContentParts(l);}catch(l){o.warn({sessionId:s.sessionId,err:l},"Session started but resolved test content could not be loaded");}try{n.addContentParts(await Qr({browser:s.controller.browser,supportsFileOutput:e.supportsFileOutput}));}catch(l){o.warn({sessionId:s.sessionId,err:l},"Session started but initial screenshot capture failed"),n.addPartFromText(JSON.stringify({warning:"Session started successfully, but initial screenshot capture failed.",screenshotError:Q(l)},null,2));}i&&n.addContentParts(q({text:Dr({filePath:i,title:"Video output directory"}),section:"Video Output"}));}}),Ere=Ar({schema:{name:gC,description:"Kill a granular browser session by sessionId. Returns available session ids if the target is missing.",inputSchema:{sessionId:z.string().describe("The session id to terminate.")}},handle:async(e,t,n)=>{let{sessionId:o}=t;try{let r=ia.getSession(o),i=r?.videoOutputDir,s=await ia.killSession(t.sessionId,"explicit kill");if(s.killed&&oa({type:"mcp:session_killed",test_platform:"web",reason:"explicit kill"}),!s.killed){r?n.addError(`Failed to terminate session '${t.sessionId}'.`):n.addError(JSON.stringify({message:`No active session found for id '${t.sessionId}'.`,availableSessionIds:ia.listSessionIds()},null,2));return}n.addPartFromText(JSON.stringify({sessionId:t.sessionId,killed:!0},null,2));let a=await zee({killResult:s,rootDir:e.project.rootDir});a&&n.addContentParts(q({text:Dr({filePath:a.filePath,title:"Session span report"}),section:"Session Spans"})),i&&n.addContentParts(q({text:Dr({filePath:i,title:"Video output directory"}),section:"Video Output"}));}catch(r){n.addError(Q(r));}}});var My=async({step:e,controller:t,executionOptions:n,storage:o,codeEvalTools:r,logger:i,socket:s,testContext:a,orgId:l,sessionId:c,usageTracker:d,apiClient:u})=>{let{results:p}=await z0({steps:[e],controller:t,executionOptions:n,storage:o,codeEvalTools:r,logger:i,socket:s,testContext:a,orgId:l,sessionId:c,usageTracker:d,apiClient:u});return p[0]},z0=async({steps:e,fromStep:t,toStep:n,tracer:o,controller:r,executionOptions:i,storage:s,codeEvalTools:a,logger:l,socket:c,testContext:d,orgId:u,sessionId:p,usageTracker:m,apiClient:h})=>{let g={controller:r,storage:s,codeEvalTools:a,logger:l,context:d,usageTracker:m},f=o??(c?new mu({orgId:u,parentStep:null,parentTracer:null,socket:c}):new Vb);r.setOpen();let y={results:[],asyncTasks:[],state:{autoHealingDisabled:true,failureRecoveryDisabled:true,failureRecoveryAttempts:0},...t&&{fastForwardingToStep:true}},S=()=>na({listParams:{containerName:"agent-step-list",steps:e,tracer:f},fixtures:g,options:{collectDebugData:false,reinitializeBrowser:false,disableHealing:true},inputs:{orgId:u,userId:R6(),runId:randomUUID(),sessionId:p,steps:e,testMetadata:null,orgSettings:{},fromStep:t,toStep:n},callbacks:{test:{},step:{}},runParams:h?{apiClient:h}:null,work:y});return i?r.withExecutionOptions(i,S):S()};async function a_({step:e,project:t,logger:n,storage:o,controller:r,codeEvalTools:i,socket:s,orgId:a,sessionId:l,testContext:c,supportsFileOutput:d,tempCaches:u,usageTracker:p,apiClient:m}){let h=await Tx(e,{project:t,logger:n,tempCaches:u});switch(h.type){case "PRESET_ACTION":return TWe({step:h,logger:n,storage:o,controller:r,codeEvalTools:i,socket:s,orgId:a,sessionId:l,testContext:c,supportsFileOutput:d,tempCaches:u,usageTracker:p,apiClient:m});case "AI_ACTION_DYNAMIC":return AWe({step:h,logger:n,storage:o,controller:r,codeEvalTools:i,socket:s,orgId:a,sessionId:l,testContext:c,supportsFileOutput:d,usageTracker:p,apiClient:m});case "RESOLVED_MODULE":return EWe({step:h,logger:n,storage:o,controller:r,codeEvalTools:i,socket:s,orgId:a,sessionId:l,testContext:c,supportsFileOutput:d,usageTracker:p,apiClient:m});default:{let[g,f]=await Promise.all([Qr({browser:r.browser,supportsFileOutput:d}),ra({testContext:c,supportsFileOutput:d})]);return [...q({text:`Preview for step type ${h.type} is not supported. Only PRESET_ACTION, RESOLVED_MODULE, and AI_ACTION_DYNAMIC are supported.`,section:"Error"}),...g,...f]}}}async function TWe({step:e,logger:t,storage:n,controller:o,codeEvalTools:r,socket:i,orgId:s,sessionId:a,testContext:l,supportsFileOutput:c,tempCaches:d,usageTracker:u,apiClient:p}){let m=await My({step:e,logger:t,storage:n,controller:o,executionOptions:{skipAISmartWaiting:true},codeEvalTools:r,socket:i,orgId:s,sessionId:a,testContext:l,usageTracker:u,apiClient:p}),h=[];m?m.status==="SUCCESS"?(CWe({logger:t,tempCaches:d,command:e.command,parts:h}),h.push(...q({text:`Step Execution successful: ${m.message}`,section:"Successful Result"}))):h.push(...q({text:`Step Execution failed: ${m.message}`,section:"Error"})):h.push(...q({text:"Step Execution errored for an unknown reason.",section:"Error"}));let[g,f]=await Promise.all([Qr({browser:o.browser,supportsFileOutput:c}),ra({testContext:l,supportsFileOutput:c})]);return h.push(...g,...f),h}async function AWe({step:e,logger:t,storage:n,controller:o,codeEvalTools:r,socket:i,orgId:s,sessionId:a,testContext:l,supportsFileOutput:c,usageTracker:d,apiClient:u}){let p=await My({step:e,logger:t,storage:n,controller:o,executionOptions:{skipAISmartWaiting:true},codeEvalTools:r,socket:i,orgId:s,sessionId:a,testContext:l,usageTracker:d,apiClient:u}),m=[];p?p.status==="SUCCESS"?m.push(...q({text:`AI action completed successfully: ${p.message??"Goal achieved"}`,section:"Successful Result"})):m.push(...q({text:`AI action failed: ${p.message??"Unknown error while previewing AI action"}`,section:"Error"})):m.push(...q({text:"AI action executed with unknown result.",section:"Error"}));let[h,g]=await Promise.all([Qr({browser:o.browser,supportsFileOutput:c}),ra({testContext:l,supportsFileOutput:c})]);return m.push(...h,...g),m}async function EWe({step:e,logger:t,storage:n,controller:o,codeEvalTools:r,socket:i,orgId:s,sessionId:a,testContext:l,supportsFileOutput:c,usageTracker:d,apiClient:u}){let p=await My({step:e,logger:t,storage:n,controller:o,executionOptions:{skipAISmartWaiting:true},codeEvalTools:r,socket:i,orgId:s,sessionId:a,testContext:l,usageTracker:d,apiClient:u}),m=[];p?p.status==="SUCCESS"?m.push(...q({text:`Module executed successfully: ${p.message}`,section:"Successful Result"})):m.push(...q({text:`Module execution failed: ${p.message}`,section:"Error"})):m.push(...q({text:"Module execution errored for an unknown reason.",section:"Error"}));let[h,g]=await Promise.all([Qr({browser:o.browser,supportsFileOutput:c}),ra({testContext:l,supportsFileOutput:c})]);return m.push(...h,...g),m}function CWe({logger:e,tempCaches:t,command:n,parts:o}){if(t&&ur(n)&&n.cache)try{let r=randomUUID();t[r]=Kl.parse(cloneDeep({type:n.type,cache:n.cache})),o.push(...q({text:r,section:"CacheId"}));}catch(r){e.warn({err:r},"Failed to save temp cache for step. Continuing...");}}var Cre=({steps:e,fromStep:t,toStep:n})=>{let o={total:0,fastForwardingToStep:true},r=(i,s)=>{if(i.skipped)return false;let a=s.map(c=>c.id),l=LA(i.id,a,t.fromStepId,t.parentStepIdChain);if(o.fastForwardingToStep){if(!l)return false;o.fastForwardingToStep=false;}return o.total+=1,!!(n&&LA(i.id,a,n.toStepId,n.parentStepIdChain))};return Vi({steps:e,earlyStop:true,onPresetAction:(i,s)=>r(i,s.parentChain),onConditional:(i,s)=>{if(i.skipped)return false;let a=s.parentChain.map(c=>c.id),l=LA(i.id,a,t.fromStepId,t.parentStepIdChain);if(o.fastForwardingToStep){if(!l)return false;o.fastForwardingToStep=false;}return !!(n&&LA(i.id,a,n.toStepId,n.parentStepIdChain))},onSimpleStepContainer:(i,s)=>r(i,s.parentChain)}),o.total};var RWe="Cannot add a module step inside another module. Modules cannot be nested.";function W0(e,t){switch(t){case "setup":return e.beforeSteps??[];case "teardown":return e.afterSteps??[];case "main":return e.steps;default:{throw new Error("Unknown test section")}}}function wWe(e,t,n){let o=W0(e,t);if(!n?.length)return o;let r=CX(o,n);if(!r)throw new Error(`No step found with parent chain [${n.join(", ")}] in ${t} section, or parent does not support nested steps`);return r}function vre(e,t){let n=t.moduleId,o=r=>{r.type!=="RESOLVED_MODULE"||r.moduleId!==n||(t.parameters!==void 0&&(r.parameters=t.parameters),t.parameterEnums!==void 0&&(r.parameterEnums=t.parameterEnums),t.defaultParameters!==void 0&&(r.defaultParameters=t.defaultParameters),t.name!==void 0&&(r.name=t.name),t.description!==void 0&&(r.description=t.description),t.enabled!==void 0&&(r.enabled=t.enabled),t.steps!==void 0&&(r.steps=t.steps));};for(let r of [e.steps,e.beforeSteps,e.afterSteps])Vi({steps:r,onPresetAction:o,onConditional:o,onSimpleStepContainer:o});}async function l_({project:e,storage:t,orgId:n,logger:o,testPath:r,saveChangesToDisk:i,supportsFileOutput:s,tempCaches:a,mutableStepState:l,params:c,envName:d}){let u=Jn__default.join(e.rootDir,r),p=await t.getTestByPath({relativeTestPath:r,logger:o}),m=l?.stepLists??p,h=cloneDeep({steps:m.steps??[],beforeSteps:m.beforeSteps??[],afterSteps:m.afterSteps??[]}),g=cloneDeep(h),f=await Promise.all(c.steps.map(v=>Tx(v,{project:e,logger:o,tempCaches:a}))),y=cloneDeep(f),S=c.parentStepIdChain,b;try{b=wWe(g,c.targetSection,S);}catch(v){return ae(q({text:`Error: ${Q(v)}`,section:"Error"}))}if(c.startIndex<0||c.startIndex>b.length)return ae(q({text:`Error: Invalid startIndex ${c.startIndex} for splicing ${c.targetSection} section with ${b.length} steps (must be 0-${b.length})`,section:"Error"}));let E=f.length,C=c.deleteCount,w=cloneDeep(b.slice(c.startIndex,c.startIndex+C)),I=[];if(S?.length){let v=vX(W0(g,c.targetSection),S,c.targetSection);if(I.push(...v),v.some(_=>_.type==="RESOLVED_MODULE")&&f.some(_=>_.type==="RESOLVED_MODULE"))return ae(q({text:`Error: ${RWe}`,section:"Error"}))}b.splice(c.startIndex,c.deleteCount,...f);for(let v of f)v.type==="RESOLVED_MODULE"&&vre(g,v);for(let v of I)v.type==="RESOLVED_MODULE"&&vre(g,v);if(l&&(l.stepLists=g),i){let v=await t.updateTestByPath({logger:o,relativeTestPath:r,stepLists:g,schemaVersion:at});o.info({testPath:r,testFilePath:u,projectFileFormat:e.config.fileFormat,moduleUpdateCount:v.moduleUpdates.length,snapshotCacheCount:v.snapshotCachesToSave.length},"MCP splice persisted test changes to disk");}else o.info({testPath:r,testFilePath:u,projectFileFormat:e.config.fileFormat},"MCP splice skipped disk persistence");let x=[...q({text:`Successfully spliced ${E} step(s) at index ${c.startIndex} in the ${c.targetSection} section, removing ${C} step(s).`,section:"Result"})];return x.push(...await _We({logger:o,project:e,orgId:n,testId:p.id,environment:d,originalSteps:h,updatedSteps:g})),x.push(...await xne({rootDir:e.rootDir,supportsFileOutput:s,deletedStepRefs:w.map((v,P)=>({id:v.id,index:c.startIndex+P})),insertedStepRefs:y.map((v,P)=>({id:v.id,index:c.startIndex+P})),deletedSteps:op(w,{includeCache:false}),insertedSteps:op(y,{includeCache:false}),metadata:{section:c.targetSection,parentStepIdChain:S??[],startIndex:c.startIndex,deleteCount:C,insertedCount:E},artifactEntity:"splice-restoration-payload"})),c.returnTest&&x.push(...q({text:JSON.stringify(await t_({project:e,storage:t,selector:{path:r},envName:d,logger:o,mutableStepState:l,supportsFileOutput:s,hydrateStepIdentity:false}),null,2),section:"Test Content"})),ae(x)}async function c_({project:e,logger:t,testPath:n,storage:o,controller:r,codeEvalTools:i,socket:s,orgId:a,sessionId:l,envName:c,testContext:d,tracer:u,params:p,tokenLimit:m,supportsFileOutput:h,usageTracker:g,mutableStepState:f,apiClient:y,disableCache:S}){let{fromStep:b,toStep:E,targetSection:C}=p,w=await o.getTestByPath({relativeTestPath:n,logger:t}),{alwaysSaveCache:I,noCache:x}=ru(),v=await vs({logger:t,orgId:a,project:e,alwaysSaveCache:I,noCache:x||S===true}),P=f?.stepLists??{beforeSteps:w.beforeSteps??[],afterSteps:w.afterSteps??[],steps:w.steps};await v.resolveStepCacheEntries({logger:t,schemaVersion:w.schemaVersion,stepLists:P,testId:w.id,environment:c,useSnapshotIdentityCache:!f&&e.config.fileFormat==="v2"}),f&&(f.stepLists=P);let _=S?cloneDeep(P):P;S&&IWe(_);let B=W0(_,C),D=cloneDeep({steps:_.steps,beforeSteps:_.beforeSteps,afterSteps:_.afterSteps}),{result:V}=Fm(B,b.fromStepId,b.parentStepIdChain);if(!V)return ae(q({text:`Error: No step found with id "${b.fromStepId}" and parent chain [${b.parentStepIdChain.join(", ")}] in ${C} section.`,section:"Error"}));if(E){let{result:Oe}=Fm(B,E.toStepId,E.parentStepIdChain);if(!Oe)return ae(q({text:`Error: No step found with id "${E.toStepId}" and parent chain [${E.parentStepIdChain.join(", ")}] in ${C} section.`,section:"Error"}))}if(u?.setProgressTotal){let Oe=Cre({steps:B,fromStep:b,toStep:E});u.setProgressTotal(Oe);}r.setOpen();let ne;try{ne=await z0({steps:B,controller:r,storage:o,codeEvalTools:i,logger:t,socket:s,orgId:a,sessionId:l,testContext:d,fromStep:b,toStep:E,tracer:u,usageTracker:g,apiClient:y});}finally{await g.flush(t);}let{results:re}=ne;if(!re||re.length===0)return ae(q({text:"Error: No steps were executed.",section:"Error"}));let H=re.at(-1);if(!H)return ae(q({text:"Error: No steps were executed.",section:"Error"}));let z={logger:t,cacheStorage:v,orgId:a,testId:w.id,environment:c,originalStepsWithCaches:D,updatedStepsWithCaches:{steps:_.steps,beforeSteps:_.beforeSteps??[],afterSteps:_.afterSteps??[]}},M=H.status!=="SUCCESS";await Bm({logger:t,cacheStorage:v,orgId:a,testId:w.id,environment:c,stepLists:z.updatedStepsWithCaches,useSnapshotIdentityCache:e.config.fileFormat==="v2"}),M?H.status==="FAILED"&&await mf(z):await Um(z);let K=C==="main"?"":` in ${C}`,j=Oe=>{let Ye="fromStepId"in Oe?Oe.fromStepId:Oe.toStepId;return Oe.parentStepIdChain.length>0?`id "${Ye}" (parent chain [${Oe.parentStepIdChain.join(", ")}])`:`id "${Ye}"`},F=b?j(b):"beginning",J=E?`Steps from ${F} through ${j(E)}${K}`:`Steps from ${F} to end${K}`,X=[];if(M)X.push(...q({text:`Error: step with id ${H.id} failed: ${H.message}`,section:"Error"}));else {r.setOpen();let Oe=`${J} executed successfully.`;X.push(...q({text:Oe,section:"Result"})),H.data&&X.push(...q({text:`Data: ${JSON.stringify(H.data,null,2)}`,section:"Result Data"}));}let[ue,xe]=await Promise.all([Qr({browser:r.browser,supportsFileOutput:h}),ra({testContext:d,supportsFileOutput:h,limits:{tokenLimit:m}})]);return ae([...X,...ue,...xe])}function IWe(e){for(let t of [e.steps,e.beforeSteps,e.afterSteps])t&&xWe(t);}function xWe(e){Vi({steps:e,earlyStop:false,onPresetAction:t=>(ur(t.command)&&delete t.command.cache,false),onSimpleStepContainer:()=>false,onConditional:()=>false});}async function _We({logger:e,project:t,orgId:n,testId:o,environment:r,originalSteps:i,updatedSteps:s}){let a=[];try{let{alwaysSaveCache:l,noCache:c}=ru(),d=await vs({logger:e,orgId:n,project:t,alwaysSaveCache:l,noCache:c});await Bm({logger:e,cacheStorage:d,orgId:n,testId:o,environment:r,stepLists:s,useSnapshotIdentityCache:t.config.fileFormat==="v2"}),await Um({logger:e,cacheStorage:d,orgId:n,testId:o,environment:r,originalStepsWithCaches:i,updatedStepsWithCaches:s});}catch(l){e.warn({err:l},"Failed to save step caches after execution, future runs may be slower"),a.push(...q({text:"Warning: Steps were saved successfully, but updating the step cache failed. Future runs may be slower until the cache is refreshed.",section:"Warning"}));}return a}var q0=class{constructor(t,n,o,r){this.reporter=t;this.step=n;this.parentStepIdChain=o;this.setTotal=r;}loggerBindings;attachBeforeScreenshot(t){}attachAfterScreenshot(t){}attachBeforeHtmlSnapshot(t){}attachAfterHtmlSnapshot(t){}recordTargetAutoHeal(t){}storeTraceAsset(){}async finish(t){this.reporter.onStepComplete(this.step);}async startSubSteps(){return new d_(this.reporter,this.parentStepIdChain.concat(this.step.id),this.setTotal)}},d_=class{constructor(t,n=[],o){this.reporter=t;this.parentStepIdChain=n;this.setTotal=o;}loggerBindings;setProgressTotal(t){this.setTotal(t);}async getScreenshot(t,n){}async getHtmlSnapshot(t,n){}flushResults(t){}async startStep(t,n){return this.reporter.onStepStart(t.step),new q0(this.reporter,t.step,this.parentStepIdChain,this.setTotal)}};function Rre(e,t,n,o){let r=NA(e),i={completed:0,total:0},s=new AbortController,a=false,l=p=>{r&&mne(e,i,p,t,s,n);},c=()=>{r&&(a||(a=true,l("Starting step execution...")));},d=p=>{!Number.isFinite(p)||p<0||(i.total=p);},u={onStepStart:p=>{c(),i.total===i.completed&&(i.total+=1),l(`Starting: ${Kn(p)}`);},onStepComplete:p=>{o(),c(),i.completed+=1,i.total<i.completed&&(i.total=i.completed),l(`Completed: ${Kn(p)}`);}};return new d_(u,[],d)}var Ire=`CLI-style step definition. Use the Step Authoring Guide artifact returned from ${ud} when you start your session to get the full step schema.`,PWe=Ar({schema:{name:h$,description:"Create a test. The name must satisfy Momentic entity naming rules, and you must provide either a baseUrl or environment or the tool will fail.",inputSchema:lN},handle:async(e,t,n,o)=>{try{let r=await e.storage.createTest(t);oa({type:"mcp:test_create",test_platform:"web"}),n.addPartFromText(JSON.stringify(r,null,2));}catch(r){n.addError(Q(r));return}}}),OWe=Ar({schema:{name:jr,description:`Fetch a loaded test by id or path, including resolved module steps and stable stepId and parentStepIdChain values for the persisted test state. Use this to inspect a test before starting a session or to inspect a different test. For the active session after ${gm}, prefer the splice response or request returnTest on the splice call for updated step ids. Step ids from another test are inspection-only for the active session. Start a session for that test before running or editing it.`,inputSchema:{testId:z.string().optional().describe(`Id of the test to fetch. If you do not already know it, list project tests with ${VO}. Either testId or testPath is required.`),testPath:z.string().optional().describe("Path to the test file, relative to the project root or absolute. When provided, skips the entity-registry lookup. Either testId or testPath is required.")}},handle:async(e,t,n,o)=>{try{let r=t.testId?{id:t.testId}:t.testPath?{path:t.testPath}:void 0;if(!r){n.addError("Either testId or testPath is required.");return}let i=await Up({project:e.project,storage:e.storage,selector:r,envName:void 0,logger:e.logger,includeCache:!1,hydrateStepIdentity:!0,supportsFileOutput:e.supportsFileOutput});n.addContentParts(i);}catch(r){n.addError(Q(r));return}}}),wre=Ar({schema:{name:hC,description:`Reload the active session's test from disk into mutable in-memory step state. Use this after manually editing a v2 YAML test/module on disk and running lint, before ${pg}. Returns updated Test Content with step ids for the active session.`,inputSchema:{sessionId:z.string().describe("The active session whose bound test should be reloaded.")}},handle:async(e,t,n,o)=>{let r=Hp({response:n,sessionId:t.sessionId,toolName:hC});if(!r)return;let i=r.storage.getProject();if(i.config.fileFormat!=="v2"){n.addError(`${hC} is only available for v2 file-format projects.`);return}let s=await r.storage.getTestByPath({relativeTestPath:r.relativeTestPath,logger:e.logger}),a={beforeSteps:s.beforeSteps,steps:s.steps,afterSteps:s.afterSteps},{alwaysSaveCache:l,noCache:c}=ru(),d=await vs({logger:e.logger,orgId:r.orgId,project:i,alwaysSaveCache:l,noCache:c});r.mutableStepState.testId=s.id,r.mutableStepState.stepLists=await Ec({cacheStorage:d,logger:e.logger,schemaVersion:s.schemaVersion,stepLists:a,testId:s.id,environment:r.envName,useSnapshotIdentityCache:true}),n.addContentParts(q({text:`Reloaded test ${s.id} from disk into session ${r.sessionId}.`,section:"Result"})),n.addContentParts(await Up({project:i,storage:r.storage,selector:{path:r.relativeTestPath},envName:r.envName,logger:e.logger,mutableStepState:r.mutableStepState,includeCache:false,hydrateStepIdentity:false,supportsFileOutput:e.supportsFileOutput}));}}),MWe={...wre,addToolToMcpServer:(e,t)=>{e.project.config.fileFormat==="v2"&&wre.addToolToMcpServer(e,t);}},NWe=Ar({schema:{name:VO,description:`List local test artifacts. Returns a Project Context section with projectRootAbsolutePath, projectConfigAbsolutePath, and cwd, plus separate segments for each relevant artifact type: tests, modules, and environments. ${AA} When file output is enabled, the artifact links are relative to cwd. Read or grep only the specific artifact files you need instead of loading everything at once. Assume nothing changed since your last successful call to this tool unless the user indicates updates (e.g. new/changed tests, modules, environments, or project config change); avoid redundant calls just to refresh.`,inputSchema:{}},handle:async(e,t,n,o)=>{let{project:r,logger:i}=e,s=[],a=[];try{let[c,d]=await Promise.all([e.storage.listTests(),e.storage.listModules()]),u=c.map(m=>({id:m.id,name:m.name,description:m.description,testFileAbsolutePath:m.fullFilePath,labels:m.labels||[]}));s.push({title:"Tests",entity:"test-list",payload:{tests:u}});let p=d.map(m=>({id:m.id,name:m.name,description:m.description,fullFilePath:m.fullFilePath,type:m.type}));s.push({title:"Modules",entity:"module-list",payload:{modules:p}});}catch(c){a.push(`Tests and modules discovery failed: ${Q(c)}`);}try{let c=e.storage.listEnvironments(i);s.push({title:"Environments",entity:"environment-list",payload:{environments:c}});}catch(c){a.push(`Environments discovery failed: ${Q(c)}`);}let l=await Wee({artifacts:s,rootDir:r.rootDir,supportsFileOutput:e.supportsFileOutput,projectRootAbsolutePath:r.rootDir,projectConfigAbsolutePath:r.configFilePath,cwd:process.cwd()});n.addContentParts(l),a.length>0&&n.addContentParts(q({section:"Discovery Errors",text:a.map(c=>`- ${c}`).join(`
|
|
7503
|
-
`)}));}}),xre=Ar({schema:{name:GS,description:"Execute a step without adding it to the test. IMPORTANT: do NOT preview an AI Action (AI_ACTION_DYNAMIC) step with this tool. AI Actions run many sub-steps and routinely take well over 60s, and MCP tool calls are capped at 60s and cancelled regardless of progress \u2014 the step is killed and its work lost. ALWAYS preview an AI Action with the equivalent `momentic preview-step` CLI command in your terminal, which has no MCP tool-call timeout. When this server runs with --daemon the CLI shares this session, so pass the same sessionId; otherwise drive the whole flow over the CLI.",inputSchema:{sessionId:z.string(),step:z.string().describe(Ire)}},handle:async(e,t,n,o)=>{let{sessionId:r,step:i}=t,s=Hp({response:n,sessionId:r,toolName:GS});if(!s)return;s.controller.setOpen();let a;try{a=await a_({project:s.storage.getProject(),step:i,logger:e.logger,storage:s.storage,controller:s.controller,codeEvalTools:s.codeEvalTools,orgId:s.orgId,sessionId:s.sessionId,testContext:s.context,supportsFileOutput:e.supportsFileOutput,tempCaches:s.tempCaches,usageTracker:s.usageTracker,apiClient:rr()});}finally{await s.usageTracker.flush(e.logger);}n.addContentParts(a);}}),_re=Ar({schema:{name:gm,description:"Insert, delete, or replace steps in the active session's test by index. Use parentStepIdChain to splice into nested steps (e.g. inside a conditional or module). The response includes inserted/deleted step refs with the updated active-session ids; use those ids for later run_step calls. The response always includes a recovery artifact with the full deleted and inserted payloads; only inspect it when you need to undo or inspect a mistaken splice.",inputSchema:{sessionId:z.string(),startIndex:z.number(),deleteCount:z.number().describe("Number of steps to remove. Use 0 to insert without deleting, 1 to replace a single step, or N to delete N steps."),steps:z.array(z.string()).describe(Ire),targetSection:fm.default("main"),parentStepIdChain:z.array(z.string()).optional().describe("When splicing into a nested step (e.g. conditional or module), the chain of parent step ids from root to the container. Empty or omit for top-level."),returnTest:z.boolean().default(false).describe("Return the full post-splice test snapshot. Avoid this by default. Use true only when you truly need the full updated test; the normal response already includes inserted/deleted step references plus a recovery artifact for mistaken-splice recovery.")}},handle:async(e,t,n,o)=>{let r=Hp({response:n,sessionId:t.sessionId,toolName:gm});if(!r)return;let i=await l_({project:r.storage.getProject(),storage:r.storage,orgId:r.orgId,logger:e.logger,testPath:r.relativeTestPath,envName:r.envName,saveChangesToDisk:e.saveChangesToDisk,supportsFileOutput:e.supportsFileOutput,tempCaches:r.tempCaches,mutableStepState:r.mutableStepState,params:{startIndex:t.startIndex,deleteCount:t.deleteCount,steps:t.steps,targetSection:t.targetSection,parentStepIdChain:t.parentStepIdChain,returnTest:t.returnTest}});t.steps.length>0&&oa({type:"mcp:step_added",test_platform:"web",step_count:t.steps.length});let s=i.value.map(a=>a.type==="media"?{type:"media",data:a.data,mediaType:"image/jpeg"}:a);n.addContentParts(s);}}),Pre=Ar({schema:{name:pg,description:`${mC} Use step ids from the active session: the Test Content section returned by ${ud}, or the inserted/deleted refs returned by ${gm}. If you need a full updated post-splice view, set returnTest on the splice call. Do not parse the raw YAML at testFileAbsolutePath for step ids; v2 simplified test files do not store step ids on disk. IMPORTANT: do NOT run a range containing an AI Action (AI_ACTION_DYNAMIC) with this tool. AI Actions run many sub-steps and routinely take well over 60s, and MCP tool calls are capped at 60s and cancelled regardless of progress \u2014 the run is killed and its work lost. ALWAYS execute such a range with the equivalent \`momentic run-step\` CLI command in your terminal, which has no MCP tool-call timeout. When this server runs with --daemon the CLI shares this session, so pass the same sessionId; otherwise drive the whole flow over the CLI.`,inputSchema:{sessionId:z.string(),fromStep:IC,toStep:xC.optional(),targetSection:fm.default("main"),resetSession:z.boolean().default(false).describe("Whether to reset the browser session before running the steps."),disableCache:z.boolean().default(false).describe("Run this invocation without reading or writing step caches.")}},handle:async(e,t,n,o)=>{let r=Hp({response:n,sessionId:t.sessionId,toolName:pg});if(!r)return;r.controller.setOpen(),t.resetSession&&await n_({project:r.storage.getProject(),logger:e.logger,relativeTestPath:r.relativeTestPath,orgId:r.orgId,storage:r.storage,apiKey:Xs(),baseUrl:Jr(),controller:r.controller,testContext:r.context,supportsFileOutput:e.supportsFileOutput});let i=Rre(o,e.logger,n,()=>{ia.touchSession(r.sessionId);}),s=await c_({project:r.storage.getProject(),logger:e.logger,testPath:r.relativeTestPath,storage:r.storage,controller:r.controller,codeEvalTools:r.codeEvalTools,orgId:r.orgId,sessionId:r.sessionId,testContext:r.context,tracer:i,params:{fromStep:t.fromStep,toStep:t.toStep,targetSection:t.targetSection},supportsFileOutput:e.supportsFileOutput,envName:r.envName,usageTracker:r.usageTracker,mutableStepState:r.mutableStepState,apiClient:rr(),disableCache:t.disableCache});oa({type:"mcp:run_step_completed",test_platform:"web",status:"completed"});let a=s.value.map(l=>l.type==="media"?{type:"media",data:l.data,mediaType:"image/jpeg"}:l);n.addContentParts(a);}}),Ore=[NWe,PWe,OWe,MWe];var Mre=[bre,Tre,Are,Ere,xre,Pre,_re];async function DWe({testPath:e,logger:t,project:n,storage:o,orgId:r,mutableStepState:i}){let s=await o.getTestByPath({relativeTestPath:e,logger:t}),a=s.envs?.find(u=>u.default)?.name;if(i&&i.testId!==s.id)throw new Error(`Cannot extract a module from test ${s.id} with mutable state for ${i.testId}.`);let l=i?.stepLists??{steps:s.steps,beforeSteps:s.beforeSteps??void 0,afterSteps:s.afterSteps??void 0},c=await vs({logger:t,orgId:r,project:n}),d=await Ec({cacheStorage:c,logger:t,schemaVersion:s.schemaVersion,stepLists:l,testId:s.id,environment:a,useSnapshotIdentityCache:n.config.fileFormat==="v2"});return {availableSteps:d.steps,baseState:{steps:d.steps,beforeSteps:d.beforeSteps??[],afterSteps:d.afterSteps??[]},cacheSaveContext:{testId:s.id,environment:a,stepCacheStorage:c}}}async function u_({project:e,storage:t,logger:n,relativeTestPath:o,saveChangesToDisk:r,mutableStepState:i,params:s}){let a=oo();Zl(s.name);let l=await t.scanEntities(),c;s.startIndex!==void 0&&o!==void 0&&(c=await DWe({testPath:o,logger:n,project:e,storage:t,orgId:a,mutableStepState:i}));let{stepsToExtract:d,startIndex:u,endIndex:p}=_ne({moduleName:s.name,existingModuleNames:Object.values(l.modules).map(v=>v.name),...s,parameterNames:s.parameters,testPath:o,availableSteps:c?.availableSteps,containsNestedModuleStep:EX}),{module:m}=await t.createModule({name:s.name,description:s.description??"",enabled:s.enabled??true,parameters:s.parameters,defaultParameters:s.defaultParameters,parameterEnums:s.parameterEnums,steps:d,subDir:s.subDir,momenticFiles:l});if(s.startIndex===void 0)return {module:m};if(!o||!c)throw new Error("Failed to initialize extraction state for module create");let h=Object.keys(s.moduleInputs??{}).length>0,g=(m.parameters?.length??0)>0,f;h?f=s.moduleInputs:g?f={}:f=void 0;let y={...m,type:"RESOLVED_MODULE",id:randomUUID(),steps:m.steps,inputs:f},S=cloneDeep(c.baseState);S.steps.splice(u,p-u,y),i&&(i.stepLists=S);let{environment:b,stepCacheStorage:E,testId:C}=c.cacheSaveContext,w=e.config.fileFormat==="v2",{cachesToSave:I,snapshotCachesToSave:x}=await Yn({stepLists:S,useSnapshotIdentityCache:w,cacheCreationParams:{orgId:a,testId:C,environment:b}});return w&&await E.saveSnapshotCacheEntries({logger:n,entries:x}),await E.saveStepCacheEntries({logger:n,entries:I}),r&&await t.updateTestByPath({logger:n,relativeTestPath:o,stepLists:S,schemaVersion:at}),{module:m}}var Nre=Ar({schema:{name:p$,description:"Create a module. The name must satisfy Momentic entity naming rules or the tool will fail. If startIndex is provided, testPath is required and the specified test range is extracted into the module, then replaced with a module invocation in that test. endIndex may only be provided when startIndex is set.",inputSchema:{name:z.string().describe(vm),description:z.string(),enabled:z.boolean().default(true),parameters:z.string().array().optional().describe("Array of parameter names for the module, e.g., ['apiKey', 'userId']."),defaultParameters:z.record(z.string(),z.string()).optional().describe("Default values for parameters, e.g., { 'apiKey': 'default123' }. Keys must match parameters."),parameterEnums:z.record(z.string(),z.string().array()).optional().describe("Enum options for parameters, e.g., { 'role': ['admin', 'user'] }. Keys must match parameters."),moduleInputs:z.record(z.string(),z.string()).optional().describe("Input parameters to pass to the new module when it's inserted into the test. Keys must match the module's defined parameters. Only relevant when extracting from a test."),subDir:z.string().optional().describe("Subdirectory to create the module in. If not provided, the module is created in the project root."),testPath:z.string().optional().describe("Relative path to the test to extract steps from. Required when startIndex is provided."),startIndex:z.number().optional().describe("Start index of steps to extract from the target test (0-based)."),endIndex:z.number().optional().describe("End index of steps to extract from the target test (exclusive). Only valid when startIndex is provided. If not provided, extracts just startIndex.")}},handle:async(e,t,n,o)=>{let{testPath:r,...i}=t;try{let s=S7({projectRoot:e.project.rootDir,filePath:r,pathLabel:"testPath"}),a=await u_({project:e.project,storage:e.storage,logger:e.logger,relativeTestPath:s,saveChangesToDisk:e.saveChangesToDisk,params:i});n.addPartFromText(JSON.stringify(a.module,null,2));}catch(s){n.addError(Q(s));}}});var Ly=[...Ore,...s_,...Mre,Nre,lte,fte,Ate,ute];var Lre=Ly.map(e=>e.tool),p_=new Map(Lre.map(e=>[e.schema.name,e]));async function kre(e){let{project:t,applicationName:n,daemonPort:o,daemonToken:r,daemonSessionId:i,logger:s,cliVersion:a}=e,l=t.configFilePath;await o_(e);let{context:c}=r_({...e,logger:s.child({daemonSessionId:i}),applicationName:`${n}-daemon`,serverId:i});await Ane({adapter:{getTool:d=>{let u=p_.get(d);if(!u)throw new Error(`Unknown web MCP tool '${d}'. Known tools: ${Array.from(p_.keys()).join(", ")}`);return {name:u.schema.name,execute:async({input:p,extra:m})=>await Sne({context:c,tool:u,input:p,extra:m})}}},sessionManager:ia,daemonPort:o,daemonToken:r,daemonId:i,cliVersion:a,workerType:"momentic-web-mcp",configPath:l,inactivityTimeoutMsOverride:$0(e)*2,onShutdown:()=>{iu();}});}async function K0(e){let{project:t,logger:n,apiKey:o,serverUrl:r,cliVersion:i,alwaysSaveCache:s,noCache:a,videoDefault:l,headfulDefault:c,devicePixelRatio:d,sessionIdleTimeoutMinutes:u}=e,p=t.configFilePath;return pne({workerType:"momentic-web-mcp",configPath:p,apiKey:o,serverUrl:r,cliVersion:i,logger:n,buildDaemonArgs:({entryScript:m})=>UWe({entryScript:m,serverUrl:r,configPath:p,alwaysSaveCache:s,noCache:a,videoDefault:l,headfulDefault:c,devicePixelRatio:d,sessionIdleTimeoutMinutes:u})})}async function Dre(e){let{logger:t,applicationName:n,cliVersion:o,serverUrl:r}=e;ou(r),await K0(e);let{info:i,mcpLogger:s}=j0({logger:t,applicationName:`${n}-daemon-proxy`,cliVersion:o});return Px({context:{logger:s},info:i,tools:bne({tools:Lre,resolveDaemonStateForCall:()=>K0(e),logger:s})})}var BWe=30*6e4;async function Y0({options:e,toolName:t,input:n,timeoutMs:o=BWe}){ou(e.serverUrl);let r=p_.get(t);if(!r)throw new Error(`Unknown web MCP tool '${t}'. Known tools: ${Array.from(p_.keys()).join(", ")}`);let i=r.schema.inputSchema.parse(n),s=await K0(e);return S0({state:s,toolName:t,input:i,timeoutMs:o})}function UWe({entryScript:e,serverUrl:t,configPath:n,alwaysSaveCache:o,noCache:r,videoDefault:i,headfulDefault:s,devicePixelRatio:a,sessionIdleTimeoutMinutes:l}){let c=[e,"mcp","--server",t,"--daemon","--config",n,"--headful-browser",s?"true":"false","--video",i?"true":"false"];return o&&c.push("--save-cache"),r&&c.push("--disable-cache"),c.push("--pixel-ratio",String(a)),l!==void 0&&c.push("--session-idle-timeout-minutes",String(l)),c}var J0=async(e,t)=>{try{let{killed:n,failed:o}=await ia.killAllSessions(e);o.length>0?t.warn({failed:o,reason:e},"Some browser sessions failed to terminate on shutdown"):n.length>0&&t.info({killedCount:n.length,reason:e},"Terminated browser sessions on shutdown");}catch(n){t.warn({err:n,reason:e},"Failed to terminate browser sessions on shutdown");}};async function X0(e){let{daemon:t,logger:n}=e,o=une.safeParse(process.env);if(t&&o.success&&o.data[xx]==="momentic-web-mcp")return kre({...e,daemonPort:o.data[wx],daemonToken:o.data[Ix],daemonSessionId:o.data[_x]});if(Ju(n,true),t)return await Dre(e);await o_(e);let{context:r,info:i}=r_(e);return Px({context:r,info:i,tools:Ly,shutdownHandlers:[J0,iu,async()=>{await Zx();}]})}var XA="3.12.0",En=Jg({app:"desktop-server",hostname:hostname(),disableConsoleLogs:true}).child({cliVersion:XA});(async()=>{try{let e=await _a(En);e.gitBranchName&&En.addBinding("branch",e.gitBranchName);}catch{}})();var jp=Router();async function h_(e){return (await Lf(e,En)).map(o=>{let r=e.modules[o.moduleId];if(!r){R.warn(`Found a dangling module with ID ${o.moduleId} that could not be found on disk.`);return}return {...r,content:o}}).filter(o=>o!==void 0)}jp.get("/",St(async(e,t)=>{let n=st(),o=await Ws(n),r=await h_(o);t.status(200).json(r);}));jp.post("/",St(async(e,t)=>{let n;try{n=JW.parse(e.body);}catch(l){t.status(400).json({error:`Invalid request body: ${l}`});return}try{Zl(n.name);}catch(l){t.status(400).json({error:`Invalid module name: ${l}`});return}let o=st(),r=await Ve(o),i=r.modules;if(Object.values(i).find(l=>l.name===n.name)){t.status(400).send(`A module with the name "${n.name}" already exists. Please choose a different name.`);return}let s=Jn__default.join(o.rootDir,n.folderPath??Jn__default.dirname(n.testFilePath));if(!br__default.existsSync(s)||!br__default.statSync(s).isDirectory()){t.status(400).json({error:`The folder configured for module creation '${s}' does not exist.`});return}let a=await fw({...n,folder:s,project:o,momenticFiles:r});t.status(201).json(a);}));jp.get("/:moduleId/tests",St(async(e,t)=>{if(!e.params.moduleId){t.status(400).json({error:"Missing moduleId in url path."});return}let n=st(),o=await Ve(n),r=e.params.moduleId;if(!o.modules[r]){t.status(404).json({error:"Module not found."});return}let i=[];for(let a of Object.values(o.tests))rQ(a.fullFilePath,o).has(r)&&i.push({id:a.id,name:a.name,relativePath:a.relativePath});let s={tests:i};t.status(200).json(s);}));jp.get("/:moduleId",St(async(e,t)=>{if(!e.params.moduleId){t.status(400).json({error:"Missing moduleId in url path."});return}let n=await Ws(st()),o=n.modules[e.params.moduleId];if(!o){t.status(404).json({error:"Module not found."});return}try{let r=await Pc({modHandle:o,momenticFiles:n,logger:R});t.json(r);}catch(r){t.status(400).json({err:r});}}));jp.post("/:moduleId/duplicate",St(async(e,t)=>{if(!e.params.moduleId){t.status(400).json({error:"Missing moduleId in url path."});return}let n;try{n=YW.parse(e.body);}catch(h){t.status(400).json({error:`Invalid request body: ${h}`});return}try{Zl(n.name);}catch(h){t.status(400).json({error:h.message});return}let o=st(),r=await Ve(o),i=r.modules[e.params.moduleId];if(!i){t.status(404).json({error:"Module not found."});return}if(Object.values(r.modules).find(h=>h.name===n.name)){t.status(400).send(`A module with the name "${n.name}" already exists. Please choose a different name.`);return}let s=n.sourceModuleContent;if(s.moduleId!==e.params.moduleId){t.status(400).json({error:"Duplicate source module content does not match moduleId."});return}let a=Jn__default.join(o.rootDir,Jn__default.dirname(i.relativePath));if(!br__default.existsSync(a)||!br__default.statSync(a).isDirectory()){t.status(400).json({error:`The folder configured for module creation '${a}' does not exist.`});return}let l=In(n.name),c=Jn__default.join(a,`${l}.module.yaml`),d=xc({projectConfig:o.config,momenticFiles:r,entityType:"module"}),{stepsToSave:u}=await Yn({stepLists:{steps:s.steps},createNewCacheIds:true}),p={fileType:ke.MODULE,schemaVersion:at,moduleId:d,name:n.name,description:"",enabled:true,steps:u.steps,parameters:s.parameters,defaultParameters:s.defaultParameters,parameterEnums:s.parameterEnums,defaultCacheKey:s.defaultCacheKey,defaultCacheTtl:s.defaultCacheTtl,defaultCacheAllInvocations:s.defaultCacheAllInvocations,autoAuth:s.autoAuth,advanced:s.advanced,defaultRetries:s.defaultRetries};Ra({module:p,filePath:c,projectConfig:o.config,momenticFiles:r});let m={relativeFilePath:Jn__default.relative(o.rootDir,c)};t.status(201).json(m);}));jp.patch("/:moduleId/move",St(async(e,t)=>{if(!e.params.moduleId){t.status(400).json({error:"Missing moduleId in url path."});return}let n;try{n=QW.parse(e.body);}catch(i){t.status(400).json({error:`Invalid request body: ${Q(i)}`});return}let o=st();if(!(await Ws(o)).modules[e.params.moduleId]){t.status(404).json({error:"Module not found."});return}await lQ({moduleId:e.params.moduleId,targetFolderRelativePath:n.folderPath,project:o}),t.status(200).json({message:"ok"});}));jp.patch("/:moduleId/metadata",St(async(e,t)=>{if(!e.params.moduleId){t.status(400).json({error:"Missing moduleId in url path."});return}let n;try{n=XW.parse(e.body);}catch(i){t.status(400).json({error:`Invalid request body: ${i}`});return}let o=st(),r=await Ws(o);await cQ({moduleId:e.params.moduleId,content:n,momenticFiles:r,logger:R,project:o}),t.status(201).json({message:"ok"});}));var Fre=jp;var QA=Router();QA.get("/",St(async(e,t)=>{let n=st(),o=await Ve(n),r=new Set;o?.tests&&Object.values(o.tests).forEach(c=>{c.labels?.forEach(d=>r.add(d));});let i=Array.from(r).sort(),s=Object.values(o.tests),a=await h_(o),l={labels:i,tests:s,modules:a};t.status(200).json(l);}));QA.get("/folders",St(async(e,t)=>{let n=st(),o=await J4(n);t.status(200).json(o);}));QA.get("/labels",St(async(e,t)=>{let n=st(),o=await Ve(n),r=new Set;for(let s of Object.values(o.tests))s.labels?.forEach(a=>r.add(a));let i=Array.from(r).sort();t.status(200).json(i);}));QA.post("/in-folder",St(async(e,t)=>{let n=VW.safeParse(e.body);if(!n.success){t.status(400).json({error:`Failed to parse entities-in-folder body: ${n.error.message}`});return}let{pathSegments:o}=n.data,r=st(),[i,s]=await Promise.all([Y4(r,o),Ws(r)]),a=Object.values(i.tests),l=await h_(s),c=new Set(Object.keys(i.modules)),d=l.filter(p=>c.has(p.id)),u={tests:a,modules:d};t.status(200).json(u);}));var Bre=QA;var Q0=Router();Q0.get("/",St((e,t)=>{let n=Ew(st(),En);t.status(200).json(n);}));Q0.get("/names",St((e,t)=>{let o=st().config.environments?.map(r=>r.name)??[];t.status(200).json(o);}));var Ure=Q0;var Hre=Router();Hre.get("/",St((e,t)=>{let n={userId:kc(),orgId:oo(),email:ny(),name:w6(),pylonEmailHash:I6(),cliVersion:XA};t.status(200).json(n);}));var Gre=Hre;var Z0="mcp-session-id",jre="MOMENTIC_SESSION_IDLE_TIMEOUT_MINUTES",g_=Router();function KWe(){let e=process.env[jre];if(!e)return hu*60*1e3;let t=Number.parseInt(e,10);return Number.isNaN(t)||t<1?(En.warn({envVar:jre,rawValue:e,fallback:hu},"Invalid MCP session idle timeout env var; falling back to default"),hu*60*1e3):t*60*1e3}function YWe(e){let{headfulDefault:t,supportsFileOutput:n}={},o={serverId:randomUUID(),applicationName:"momentic-mcp-desktop-server",cliVersion:XA},r=st(),i=Xs(),s=Jr(),a=En.child({orgId:oo(),userId:kc(),...o}),l=new Ft({baseUrl:s,apiKey:i,logger:a,mode:"interactive",runner:"mcp"}),c=Ib(process.env.MOMENTIC_HEADFUL_BROWSER),d=new Sr(r.config.ai?.agentConfig,{baseUrl:s,apiKey:i,logger:a,mode:"interactive",runner:"mcp"}),u=oo(),p=new sa(l,u,r);return {context:{project:r,orgId:u,logger:a,generator:d,apiClient:l,storage:p,serverId:o.serverId,extractBaseDir:ea(r.rootDir),saveChangesToDisk:true,supportsFileOutput:n??true,knowledgeRetrievalResults:Jt,knowledgeCitations:[],sessionIdleTimeoutMs:KWe(),headfulDefault:t??c??true,categoryDefinitions:r.config.ai?.classification?.categories??ns},info:o}}var gu={};g_.post("/",async(e,t)=>{let n=String(e.headers[Z0]??"");try{if(n&&gu[n]){await gu[n].handleRequest(e,t,e.body);return}if(!n&&isInitializeRequest(e.body)){let{context:o,info:r}=YWe(),i=b0(o,r,Ly),s=new StreamableHTTPServerTransport({sessionIdGenerator:()=>randomUUID(),enableDnsRebindingProtection:!1,onsessioninitialized:a=>{gu[a]=s;}});s.onclose=()=>{let a=s.sessionId;a&&gu[a]&&delete gu[a],i.close().catch(()=>{});},await i.connect(s),await s.handleRequest(e,t,e.body);return}t.status(400).json({jsonrpc:"2.0",error:{code:-32e3,message:"Bad Request: No valid session ID provided"},id:null});}catch{t.headersSent||t.status(500).json({jsonrpc:"2.0",error:{code:-32603,message:"Internal server error"},id:null});}});g_.get("/",async(e,t)=>{let n=String(e.headers[Z0]??"");if(!n||!gu[n]){t.status(400).send("Invalid or missing session ID");return}await gu[n].handleRequest(e,t);});g_.delete("/",async(e,t)=>{let n=String(e.headers[Z0]??"");if(!n||!gu[n]){t.status(400).send("Invalid or missing session ID");return}let o=gu[n];try{await o.handleRequest(e,t);}catch{t.headersSent||t.status(500).send("Error processing session termination");}});var Vre=g_;var zre=Router();zre.get("/:id",St(async(e,t)=>{let{id:n}=e.params;if(!n){t.status(400).json({error:"Missing ID"});return}let o=rr();if(!o){t.status(500).json({error:"API client not initialized"});return}try{let{data:r,contentType:i}=await o.fetchOnDemandScreenshot(n);t.setHeader("Content-Type",i),t.status(200).send(r);}catch(r){En.error({err:r,screenshotId:n},"Failed to proxy on-demand screenshot"),t.status(404).json({error:"Screenshot not found"});}}));var Wre=zre;var f_=Router();f_.get("/",St(async(e,t)=>{let n=new Map;for(let i of await cD())n.set(i.configFilePath,i);let o=st();n.set(o.configFilePath,o);let r=[...n.values()].map(i=>({name:i.config.name,configFilePath:i.configFilePath,fileFormat:i.config.fileFormat}));t.status(200).json(r);}));f_.get("/current",St((e,t)=>{let n=st();if(!n){t.status(404).json({error:"No project found."});return}let o={name:n.config.name,configFilePath:n.configFilePath,fileFormat:n.config.fileFormat};t.status(200).json(o);}));f_.post("/set",St(async(e,t)=>{let n;try{n=t1.parse(e.body);}catch(o){t.status(400).json({error:`Invalid request body: ${o}`});return}En.info("Setting local project");try{let o=await on({configFilePath:n.configFilePath}),r=rr();if(!r)throw new Error("API client is not initialized.");await ry({project:o,apiClient:r});}catch(o){t.status(400).json({error:`Error setting project: ${o}`});return}t.sendStatus(204);}));var qre=f_;var Kre=Router();Kre.get("/",St((e,t)=>{let n=st(),o={ai:n.config.ai,browser:n.config.browser,displayRoot:n.config.displayRoot};t.status(200).json(o);}));var Yre=Kre;var Jc=Router();Jc.post("/",St(async(e,t)=>{let n;try{n=qW.parse(e.body);}catch(o){t.status(400).json({error:`Invalid request body: ${o}`});return}try{let o=st(),r=await YA({project:o,input:n});oa({type:"test_editor:test_create",test_platform:"web"}),t.status(201).json(r);}catch(o){if(o instanceof mt){t.status(400).json({error:o.message});return}throw o}}));Jc.get("/:testPath",St(async(e,t)=>{let{testPath:n}=e.params;if(!n){t.status(400).json({error:"Missing testPath in url path."});return}let o=st(),r=await Ws(o),i;try{i=await ps(Jn__default.join(o.rootDir,n),En,r),await(await vs({logger:En,orgId:oo(),project:o})).resolveStepCacheEntries({schemaVersion:i.schemaVersion,testId:i.id,environment:i.envs?.find(a=>a.default)?.name,stepLists:{beforeSteps:i.beforeSteps,steps:i.steps,afterSteps:i.afterSteps},logger:En,useSnapshotIdentityCache:o.config.fileFormat==="v2"}),t.status(200).json(i);}catch(s){t.status(400).send({error:s.message});return}(async()=>{try{await Tw({relativeTestPath:n,stepLists:{steps:i.steps,beforeSteps:i.beforeSteps,afterSteps:i.afterSteps},schemaVersion:at,momenticFiles:r,project:o});}catch(s){En.error({err:s},"Failed to save migrated test to disk after initial fetch");}})();}));Jc.get("/:testPath/metadata",St(async(e,t)=>{let{testPath:n}=e.params;if(!n){t.status(400).json({error:"Missing testPath in url path."});return}let o=st(),r=Jn__default.join(o.rootDir,n);if(!br__default.existsSync(r)){t.status(404).json({error:"Test file not found."});return}let i=br__default.statSync(r),s=await _a(En),a={gitBranch:s.gitBranchName??"unknown",fileMtime:i.mtime,gitCommitSha:s.gitCommitSha??"unknown"};t.status(200).json(a);}));Jc.patch("/:testPath/metadata",St(async(e,t)=>{if(!e.params.testPath){t.status(400).json({error:"Missing testPath in url path."});return}let n;try{n=WW.parse(e.body);}catch(i){t.status(400).json({error:`Invalid request body: ${i}`});return}let r={message:"ok",newRelativeTestPath:UT(e.params.testPath,n,st()).newRelativeTestPath};t.status(200).json(r);}));Jc.patch("/:testPath",St(async(e,t)=>{let{testPath:n}=e.params;if(!n){t.status(400).json({error:"Missing testPath in url path."});return}let o;try{o=zW.parse(e.body);}catch(m){En.warn({err:m},"Invalid save request"),t.status(400).json({error:`Invalid request body: ${m}`});return}En.info({testPath:n},"Save received");let r=st(),i=await Ws(r),s;try{s=Ud(n,r);}catch(m){t.status(400).json({error:`Existing test file on disk is invalid: ${m}`});return}let a=r.config.fileFormat==="v2",{stepsToSave:l,moduleUpdates:c,cachesToSave:d,snapshotCachesToSave:u}=await Yn({stepLists:o.stepLists,useSnapshotIdentityCache:a,cacheCreationParams:{orgId:oo(),testId:s.id,environment:s.envs?.find(m=>m.default)?.name}}),p=await vs({logger:En,orgId:oo(),project:r});a&&await p.saveSnapshotCacheEntries({logger:En,entries:u}),await p.saveStepCacheEntries({logger:En,entries:d}),iD({relativeTestPath:n,stepsToSave:l,moduleUpdates:c,schemaVersion:o.schemaVersion,momenticFiles:i,project:r}),t.status(201).json({message:"ok"});}));Jc.patch("/:testPath/environments",St(async(e,t)=>{let{testPath:n}=e.params;if(!n){t.status(400).json({error:"Missing testPath in url path."});return}let o;try{o=e1.parse(e.body);}catch(r){t.status(400).json({error:`Invalid request body: ${r}`});return}UT(n,{envs:o.defaultEnv?[{name:o.defaultEnv,default:true}]:[]},st()),t.status(201).json({message:"ok"});}));Jc.patch("/:testPath/move",St(async(e,t)=>{let{testPath:n}=e.params;if(!n){t.status(400).json({error:"Missing testPath in url path."});return}let o;try{o=ZW.parse(e.body);}catch(i){t.status(400).json({error:`Invalid request body: ${Q(i)}`});return}let r=st();if(!br__default.existsSync(Jn__default.join(r.rootDir,n))){t.status(404).json({error:"Test not found."});return}await dQ({relativeTestPath:n,targetFolderRelativePath:o.folderPath,project:r}),t.status(200).json({message:"ok"});}));Jc.delete("/:testPath",St((e,t)=>{let{testPath:n}=e.params;if(!n){t.status(400).json({error:"Missing testPath in url path."});return}let o=st(),r=Jn__default.join(o.rootDir,n);if(!br__default.existsSync(r)){t.status(404).json({error:"Test not found."});return}br__default.unlinkSync(r),t.status(200).json({message:"ok"});}));Jc.post("/:testPath/duplicate",St(async(e,t)=>{let{testPath:n}=e.params;if(!n){t.status(400).json({error:"Missing testPath in url path."});return}let o;try{o=KW.parse(e.body);}catch(h){t.status(400).json({error:`Invalid request body: ${h}`});return}try{Zl(o.name);}catch(h){t.status(400).json({error:h.message});return}let r=st(),i=Jn__default.join(r.rootDir,n);if(!br__default.existsSync(i)){t.status(404).json({error:"Test not found."});return}let s=await Ve(r),a;try{a=await ps(i,En,s);}catch(h){t.status(400).send({error:h.message});return}let l=xc({projectConfig:r.config,momenticFiles:s,entityType:"test"}),c=Zn.parse({...a,name:o.name,id:l}),{stepsToSave:d}=await Yn({stepLists:{steps:a.steps,beforeSteps:a.beforeSteps,afterSteps:a.afterSteps},createNewCacheIds:true}),u=Jn__default.dirname(i),p=Jn__default.join(u,`${o.name}.test.yaml`);wa({test:{fileType:ke.TEST,...c,...d},filePath:p,projectConfig:r.config,momenticFiles:s});let m={relativeFilePath:Jn__default.relative(r.rootDir,p)};oa({type:"test_editor:test_duplicated"}),t.status(201).json(m);}));var Jre=Jc;var Xre=z.object({name:z.string().min(1).describe("Short, human-readable name for the slice you are delegating (used as a label)."),instructions:z.string().min(1).describe("Focused, self-contained instructions for the child: which area it should own and what to cover. The child inherits the same input you received but cannot see your conversation, so these instructions must stand alone."),budget:z.number().int().positive().optional().describe("Maximum number of test plans this child should produce. Allocate a portion of your remaining budget to each child. Omit to let the child use its own judgement.")});function Qre(e){return e.kind==="diff"?e.diffSummary:yt`
|
|
7503
|
+
`)}));}}),xre=Ar({schema:{name:GS,description:"Execute a step without adding it to the test. IMPORTANT: do NOT preview an AI Action (AI_ACTION_DYNAMIC) step with this tool. AI Actions run many sub-steps and routinely take well over 60s, and MCP tool calls are capped at 60s and cancelled regardless of progress \u2014 the step is killed and its work lost. ALWAYS preview an AI Action with the equivalent `momentic preview-step` CLI command in your terminal, which has no MCP tool-call timeout. When this server runs with --daemon the CLI shares this session, so pass the same sessionId; otherwise drive the whole flow over the CLI.",inputSchema:{sessionId:z.string(),step:z.string().describe(Ire)}},handle:async(e,t,n,o)=>{let{sessionId:r,step:i}=t,s=Hp({response:n,sessionId:r,toolName:GS});if(!s)return;s.controller.setOpen();let a;try{a=await a_({project:s.storage.getProject(),step:i,logger:e.logger,storage:s.storage,controller:s.controller,codeEvalTools:s.codeEvalTools,orgId:s.orgId,sessionId:s.sessionId,testContext:s.context,supportsFileOutput:e.supportsFileOutput,tempCaches:s.tempCaches,usageTracker:s.usageTracker,apiClient:rr()});}finally{await s.usageTracker.flush(e.logger);}n.addContentParts(a);}}),_re=Ar({schema:{name:gm,description:"Insert, delete, or replace steps in the active session's test by index. Use parentStepIdChain to splice into nested steps (e.g. inside a conditional or module). The response includes inserted/deleted step refs with the updated active-session ids; use those ids for later run_step calls. The response always includes a recovery artifact with the full deleted and inserted payloads; only inspect it when you need to undo or inspect a mistaken splice.",inputSchema:{sessionId:z.string(),startIndex:z.number(),deleteCount:z.number().describe("Number of steps to remove. Use 0 to insert without deleting, 1 to replace a single step, or N to delete N steps."),steps:z.array(z.string()).describe(Ire),targetSection:fm.default("main"),parentStepIdChain:z.array(z.string()).optional().describe("When splicing into a nested step (e.g. conditional or module), the chain of parent step ids from root to the container. Empty or omit for top-level."),returnTest:z.boolean().default(false).describe("Return the full post-splice test snapshot. Avoid this by default. Use true only when you truly need the full updated test; the normal response already includes inserted/deleted step references plus a recovery artifact for mistaken-splice recovery.")}},handle:async(e,t,n,o)=>{let r=Hp({response:n,sessionId:t.sessionId,toolName:gm});if(!r)return;let i=await l_({project:r.storage.getProject(),storage:r.storage,orgId:r.orgId,logger:e.logger,testPath:r.relativeTestPath,envName:r.envName,saveChangesToDisk:e.saveChangesToDisk,supportsFileOutput:e.supportsFileOutput,tempCaches:r.tempCaches,mutableStepState:r.mutableStepState,params:{startIndex:t.startIndex,deleteCount:t.deleteCount,steps:t.steps,targetSection:t.targetSection,parentStepIdChain:t.parentStepIdChain,returnTest:t.returnTest}});t.steps.length>0&&oa({type:"mcp:step_added",test_platform:"web",step_count:t.steps.length});let s=i.value.map(a=>a.type==="media"?{type:"media",data:a.data,mediaType:"image/jpeg"}:a);n.addContentParts(s);}}),Pre=Ar({schema:{name:pg,description:`${mC} Use step ids from the active session: the Test Content section returned by ${ud}, or the inserted/deleted refs returned by ${gm}. If you need a full updated post-splice view, set returnTest on the splice call. Do not parse the raw YAML at testFileAbsolutePath for step ids; v2 simplified test files do not store step ids on disk. IMPORTANT: do NOT run a range containing an AI Action (AI_ACTION_DYNAMIC) with this tool. AI Actions run many sub-steps and routinely take well over 60s, and MCP tool calls are capped at 60s and cancelled regardless of progress \u2014 the run is killed and its work lost. ALWAYS execute such a range with the equivalent \`momentic run-step\` CLI command in your terminal, which has no MCP tool-call timeout. When this server runs with --daemon the CLI shares this session, so pass the same sessionId; otherwise drive the whole flow over the CLI.`,inputSchema:{sessionId:z.string(),fromStep:IC,toStep:xC.optional(),targetSection:fm.default("main"),resetSession:z.boolean().default(false).describe("Whether to reset the browser session before running the steps."),disableCache:z.boolean().default(false).describe("Run this invocation without reading or writing step caches.")}},handle:async(e,t,n,o)=>{let r=Hp({response:n,sessionId:t.sessionId,toolName:pg});if(!r)return;r.controller.setOpen(),t.resetSession&&await n_({project:r.storage.getProject(),logger:e.logger,relativeTestPath:r.relativeTestPath,orgId:r.orgId,storage:r.storage,apiKey:Xs(),baseUrl:Jr(),controller:r.controller,testContext:r.context,supportsFileOutput:e.supportsFileOutput});let i=Rre(o,e.logger,n,()=>{ia.touchSession(r.sessionId);}),s=await c_({project:r.storage.getProject(),logger:e.logger,testPath:r.relativeTestPath,storage:r.storage,controller:r.controller,codeEvalTools:r.codeEvalTools,orgId:r.orgId,sessionId:r.sessionId,testContext:r.context,tracer:i,params:{fromStep:t.fromStep,toStep:t.toStep,targetSection:t.targetSection},supportsFileOutput:e.supportsFileOutput,envName:r.envName,usageTracker:r.usageTracker,mutableStepState:r.mutableStepState,apiClient:rr(),disableCache:t.disableCache});oa({type:"mcp:run_step_completed",test_platform:"web",status:"completed"});let a=s.value.map(l=>l.type==="media"?{type:"media",data:l.data,mediaType:"image/jpeg"}:l);n.addContentParts(a);}}),Ore=[NWe,PWe,OWe,MWe];var Mre=[bre,Tre,Are,Ere,xre,Pre,_re];async function DWe({testPath:e,logger:t,project:n,storage:o,orgId:r,mutableStepState:i}){let s=await o.getTestByPath({relativeTestPath:e,logger:t}),a=s.envs?.find(u=>u.default)?.name;if(i&&i.testId!==s.id)throw new Error(`Cannot extract a module from test ${s.id} with mutable state for ${i.testId}.`);let l=i?.stepLists??{steps:s.steps,beforeSteps:s.beforeSteps??void 0,afterSteps:s.afterSteps??void 0},c=await vs({logger:t,orgId:r,project:n}),d=await Ec({cacheStorage:c,logger:t,schemaVersion:s.schemaVersion,stepLists:l,testId:s.id,environment:a,useSnapshotIdentityCache:n.config.fileFormat==="v2"});return {availableSteps:d.steps,baseState:{steps:d.steps,beforeSteps:d.beforeSteps??[],afterSteps:d.afterSteps??[]},cacheSaveContext:{testId:s.id,environment:a,stepCacheStorage:c}}}async function u_({project:e,storage:t,logger:n,relativeTestPath:o,saveChangesToDisk:r,mutableStepState:i,params:s}){let a=oo();Zl(s.name);let l=await t.scanEntities(),c;s.startIndex!==void 0&&o!==void 0&&(c=await DWe({testPath:o,logger:n,project:e,storage:t,orgId:a,mutableStepState:i}));let{stepsToExtract:d,startIndex:u,endIndex:p}=_ne({moduleName:s.name,existingModuleNames:Object.values(l.modules).map(v=>v.name),...s,parameterNames:s.parameters,testPath:o,availableSteps:c?.availableSteps,containsNestedModuleStep:EX}),{module:m}=await t.createModule({name:s.name,description:s.description??"",enabled:s.enabled??true,parameters:s.parameters,defaultParameters:s.defaultParameters,parameterEnums:s.parameterEnums,steps:d,subDir:s.subDir,momenticFiles:l});if(s.startIndex===void 0)return {module:m};if(!o||!c)throw new Error("Failed to initialize extraction state for module create");let h=Object.keys(s.moduleInputs??{}).length>0,g=(m.parameters?.length??0)>0,f;h?f=s.moduleInputs:g?f={}:f=void 0;let y={...m,type:"RESOLVED_MODULE",id:randomUUID(),steps:m.steps,inputs:f},S=cloneDeep(c.baseState);S.steps.splice(u,p-u,y),i&&(i.stepLists=S);let{environment:b,stepCacheStorage:E,testId:C}=c.cacheSaveContext,w=e.config.fileFormat==="v2",{cachesToSave:I,snapshotCachesToSave:x}=await Yn({stepLists:S,useSnapshotIdentityCache:w,cacheCreationParams:{orgId:a,testId:C,environment:b}});return w&&await E.saveSnapshotCacheEntries({logger:n,entries:x}),await E.saveStepCacheEntries({logger:n,entries:I}),r&&await t.updateTestByPath({logger:n,relativeTestPath:o,stepLists:S,schemaVersion:at}),{module:m}}var Nre=Ar({schema:{name:p$,description:"Create a module. The name must satisfy Momentic entity naming rules or the tool will fail. If startIndex is provided, testPath is required and the specified test range is extracted into the module, then replaced with a module invocation in that test. endIndex may only be provided when startIndex is set.",inputSchema:{name:z.string().describe(vm),description:z.string(),enabled:z.boolean().default(true),parameters:z.string().array().optional().describe("Array of parameter names for the module, e.g., ['apiKey', 'userId']."),defaultParameters:z.record(z.string(),z.string()).optional().describe("Default values for parameters, e.g., { 'apiKey': 'default123' }. Keys must match parameters."),parameterEnums:z.record(z.string(),z.string().array()).optional().describe("Enum options for parameters, e.g., { 'role': ['admin', 'user'] }. Keys must match parameters."),moduleInputs:z.record(z.string(),z.string()).optional().describe("Input parameters to pass to the new module when it's inserted into the test. Keys must match the module's defined parameters. Only relevant when extracting from a test."),subDir:z.string().optional().describe("Subdirectory to create the module in. If not provided, the module is created in the project root."),testPath:z.string().optional().describe("Relative path to the test to extract steps from. Required when startIndex is provided."),startIndex:z.number().optional().describe("Start index of steps to extract from the target test (0-based)."),endIndex:z.number().optional().describe("End index of steps to extract from the target test (exclusive). Only valid when startIndex is provided. If not provided, extracts just startIndex.")}},handle:async(e,t,n,o)=>{let{testPath:r,...i}=t;try{let s=S7({projectRoot:e.project.rootDir,filePath:r,pathLabel:"testPath"}),a=await u_({project:e.project,storage:e.storage,logger:e.logger,relativeTestPath:s,saveChangesToDisk:e.saveChangesToDisk,params:i});n.addPartFromText(JSON.stringify(a.module,null,2));}catch(s){n.addError(Q(s));}}});var Ly=[...Ore,...s_,...Mre,Nre,lte,fte,Ate,ute];var Lre=Ly.map(e=>e.tool),p_=new Map(Lre.map(e=>[e.schema.name,e]));async function kre(e){let{project:t,applicationName:n,daemonPort:o,daemonToken:r,daemonSessionId:i,logger:s,cliVersion:a}=e,l=t.configFilePath;await o_(e);let{context:c}=r_({...e,logger:s.child({daemonSessionId:i}),applicationName:`${n}-daemon`,serverId:i});await Ane({adapter:{getTool:d=>{let u=p_.get(d);if(!u)throw new Error(`Unknown web MCP tool '${d}'. Known tools: ${Array.from(p_.keys()).join(", ")}`);return {name:u.schema.name,execute:async({input:p,extra:m})=>await Sne({context:c,tool:u,input:p,extra:m})}}},sessionManager:ia,daemonPort:o,daemonToken:r,daemonId:i,cliVersion:a,workerType:"momentic-web-mcp",configPath:l,inactivityTimeoutMsOverride:$0(e)*2,onShutdown:()=>{iu();}});}async function K0(e){let{project:t,logger:n,apiKey:o,serverUrl:r,cliVersion:i,alwaysSaveCache:s,noCache:a,videoDefault:l,headfulDefault:c,devicePixelRatio:d,sessionIdleTimeoutMinutes:u}=e,p=t.configFilePath;return pne({workerType:"momentic-web-mcp",configPath:p,apiKey:o,serverUrl:r,cliVersion:i,logger:n,buildDaemonArgs:({entryScript:m})=>UWe({entryScript:m,serverUrl:r,configPath:p,alwaysSaveCache:s,noCache:a,videoDefault:l,headfulDefault:c,devicePixelRatio:d,sessionIdleTimeoutMinutes:u})})}async function Dre(e){let{logger:t,applicationName:n,cliVersion:o,serverUrl:r}=e;ou(r),await K0(e);let{info:i,mcpLogger:s}=j0({logger:t,applicationName:`${n}-daemon-proxy`,cliVersion:o});return Px({context:{logger:s},info:i,tools:bne({tools:Lre,resolveDaemonStateForCall:()=>K0(e),logger:s})})}var BWe=30*6e4;async function Y0({options:e,toolName:t,input:n,timeoutMs:o=BWe}){ou(e.serverUrl);let r=p_.get(t);if(!r)throw new Error(`Unknown web MCP tool '${t}'. Known tools: ${Array.from(p_.keys()).join(", ")}`);let i=r.schema.inputSchema.parse(n),s=await K0(e);return S0({state:s,toolName:t,input:i,timeoutMs:o})}function UWe({entryScript:e,serverUrl:t,configPath:n,alwaysSaveCache:o,noCache:r,videoDefault:i,headfulDefault:s,devicePixelRatio:a,sessionIdleTimeoutMinutes:l}){let c=[e,"mcp","--server",t,"--daemon","--config",n,"--headful-browser",s?"true":"false","--video",i?"true":"false"];return o&&c.push("--save-cache"),r&&c.push("--disable-cache"),c.push("--pixel-ratio",String(a)),l!==void 0&&c.push("--session-idle-timeout-minutes",String(l)),c}var J0=async(e,t)=>{try{let{killed:n,failed:o}=await ia.killAllSessions(e);o.length>0?t.warn({failed:o,reason:e},"Some browser sessions failed to terminate on shutdown"):n.length>0&&t.info({killedCount:n.length,reason:e},"Terminated browser sessions on shutdown");}catch(n){t.warn({err:n,reason:e},"Failed to terminate browser sessions on shutdown");}};async function X0(e){let{daemon:t,logger:n}=e,o=une.safeParse(process.env);if(t&&o.success&&o.data[xx]==="momentic-web-mcp")return kre({...e,daemonPort:o.data[wx],daemonToken:o.data[Ix],daemonSessionId:o.data[_x]});if(Ju(n,true),t)return await Dre(e);await o_(e);let{context:r,info:i}=r_(e);return Px({context:r,info:i,tools:Ly,shutdownHandlers:[J0,iu,async()=>{await Zx();}]})}var XA="3.12.1",En=Jg({app:"desktop-server",hostname:hostname(),disableConsoleLogs:true}).child({cliVersion:XA});(async()=>{try{let e=await _a(En);e.gitBranchName&&En.addBinding("branch",e.gitBranchName);}catch{}})();var jp=Router();async function h_(e){return (await Lf(e,En)).map(o=>{let r=e.modules[o.moduleId];if(!r){R.warn(`Found a dangling module with ID ${o.moduleId} that could not be found on disk.`);return}return {...r,content:o}}).filter(o=>o!==void 0)}jp.get("/",St(async(e,t)=>{let n=st(),o=await Ws(n),r=await h_(o);t.status(200).json(r);}));jp.post("/",St(async(e,t)=>{let n;try{n=JW.parse(e.body);}catch(l){t.status(400).json({error:`Invalid request body: ${l}`});return}try{Zl(n.name);}catch(l){t.status(400).json({error:`Invalid module name: ${l}`});return}let o=st(),r=await Ve(o),i=r.modules;if(Object.values(i).find(l=>l.name===n.name)){t.status(400).send(`A module with the name "${n.name}" already exists. Please choose a different name.`);return}let s=Jn__default.join(o.rootDir,n.folderPath??Jn__default.dirname(n.testFilePath));if(!br__default.existsSync(s)||!br__default.statSync(s).isDirectory()){t.status(400).json({error:`The folder configured for module creation '${s}' does not exist.`});return}let a=await fw({...n,folder:s,project:o,momenticFiles:r});t.status(201).json(a);}));jp.get("/:moduleId/tests",St(async(e,t)=>{if(!e.params.moduleId){t.status(400).json({error:"Missing moduleId in url path."});return}let n=st(),o=await Ve(n),r=e.params.moduleId;if(!o.modules[r]){t.status(404).json({error:"Module not found."});return}let i=[];for(let a of Object.values(o.tests))rQ(a.fullFilePath,o).has(r)&&i.push({id:a.id,name:a.name,relativePath:a.relativePath});let s={tests:i};t.status(200).json(s);}));jp.get("/:moduleId",St(async(e,t)=>{if(!e.params.moduleId){t.status(400).json({error:"Missing moduleId in url path."});return}let n=await Ws(st()),o=n.modules[e.params.moduleId];if(!o){t.status(404).json({error:"Module not found."});return}try{let r=await Pc({modHandle:o,momenticFiles:n,logger:R});t.json(r);}catch(r){t.status(400).json({err:r});}}));jp.post("/:moduleId/duplicate",St(async(e,t)=>{if(!e.params.moduleId){t.status(400).json({error:"Missing moduleId in url path."});return}let n;try{n=YW.parse(e.body);}catch(h){t.status(400).json({error:`Invalid request body: ${h}`});return}try{Zl(n.name);}catch(h){t.status(400).json({error:h.message});return}let o=st(),r=await Ve(o),i=r.modules[e.params.moduleId];if(!i){t.status(404).json({error:"Module not found."});return}if(Object.values(r.modules).find(h=>h.name===n.name)){t.status(400).send(`A module with the name "${n.name}" already exists. Please choose a different name.`);return}let s=n.sourceModuleContent;if(s.moduleId!==e.params.moduleId){t.status(400).json({error:"Duplicate source module content does not match moduleId."});return}let a=Jn__default.join(o.rootDir,Jn__default.dirname(i.relativePath));if(!br__default.existsSync(a)||!br__default.statSync(a).isDirectory()){t.status(400).json({error:`The folder configured for module creation '${a}' does not exist.`});return}let l=In(n.name),c=Jn__default.join(a,`${l}.module.yaml`),d=xc({projectConfig:o.config,momenticFiles:r,entityType:"module"}),{stepsToSave:u}=await Yn({stepLists:{steps:s.steps},createNewCacheIds:true}),p={fileType:ke.MODULE,schemaVersion:at,moduleId:d,name:n.name,description:"",enabled:true,steps:u.steps,parameters:s.parameters,defaultParameters:s.defaultParameters,parameterEnums:s.parameterEnums,defaultCacheKey:s.defaultCacheKey,defaultCacheTtl:s.defaultCacheTtl,defaultCacheAllInvocations:s.defaultCacheAllInvocations,autoAuth:s.autoAuth,advanced:s.advanced,defaultRetries:s.defaultRetries};Ra({module:p,filePath:c,projectConfig:o.config,momenticFiles:r});let m={relativeFilePath:Jn__default.relative(o.rootDir,c)};t.status(201).json(m);}));jp.patch("/:moduleId/move",St(async(e,t)=>{if(!e.params.moduleId){t.status(400).json({error:"Missing moduleId in url path."});return}let n;try{n=QW.parse(e.body);}catch(i){t.status(400).json({error:`Invalid request body: ${Q(i)}`});return}let o=st();if(!(await Ws(o)).modules[e.params.moduleId]){t.status(404).json({error:"Module not found."});return}await lQ({moduleId:e.params.moduleId,targetFolderRelativePath:n.folderPath,project:o}),t.status(200).json({message:"ok"});}));jp.patch("/:moduleId/metadata",St(async(e,t)=>{if(!e.params.moduleId){t.status(400).json({error:"Missing moduleId in url path."});return}let n;try{n=XW.parse(e.body);}catch(i){t.status(400).json({error:`Invalid request body: ${i}`});return}let o=st(),r=await Ws(o);await cQ({moduleId:e.params.moduleId,content:n,momenticFiles:r,logger:R,project:o}),t.status(201).json({message:"ok"});}));var Fre=jp;var QA=Router();QA.get("/",St(async(e,t)=>{let n=st(),o=await Ve(n),r=new Set;o?.tests&&Object.values(o.tests).forEach(c=>{c.labels?.forEach(d=>r.add(d));});let i=Array.from(r).sort(),s=Object.values(o.tests),a=await h_(o),l={labels:i,tests:s,modules:a};t.status(200).json(l);}));QA.get("/folders",St(async(e,t)=>{let n=st(),o=await J4(n);t.status(200).json(o);}));QA.get("/labels",St(async(e,t)=>{let n=st(),o=await Ve(n),r=new Set;for(let s of Object.values(o.tests))s.labels?.forEach(a=>r.add(a));let i=Array.from(r).sort();t.status(200).json(i);}));QA.post("/in-folder",St(async(e,t)=>{let n=VW.safeParse(e.body);if(!n.success){t.status(400).json({error:`Failed to parse entities-in-folder body: ${n.error.message}`});return}let{pathSegments:o}=n.data,r=st(),[i,s]=await Promise.all([Y4(r,o),Ws(r)]),a=Object.values(i.tests),l=await h_(s),c=new Set(Object.keys(i.modules)),d=l.filter(p=>c.has(p.id)),u={tests:a,modules:d};t.status(200).json(u);}));var Bre=QA;var Q0=Router();Q0.get("/",St((e,t)=>{let n=Ew(st(),En);t.status(200).json(n);}));Q0.get("/names",St((e,t)=>{let o=st().config.environments?.map(r=>r.name)??[];t.status(200).json(o);}));var Ure=Q0;var Hre=Router();Hre.get("/",St((e,t)=>{let n={userId:kc(),orgId:oo(),email:ny(),name:w6(),pylonEmailHash:I6(),cliVersion:XA};t.status(200).json(n);}));var Gre=Hre;var Z0="mcp-session-id",jre="MOMENTIC_SESSION_IDLE_TIMEOUT_MINUTES",g_=Router();function KWe(){let e=process.env[jre];if(!e)return hu*60*1e3;let t=Number.parseInt(e,10);return Number.isNaN(t)||t<1?(En.warn({envVar:jre,rawValue:e,fallback:hu},"Invalid MCP session idle timeout env var; falling back to default"),hu*60*1e3):t*60*1e3}function YWe(e){let{headfulDefault:t,supportsFileOutput:n}={},o={serverId:randomUUID(),applicationName:"momentic-mcp-desktop-server",cliVersion:XA},r=st(),i=Xs(),s=Jr(),a=En.child({orgId:oo(),userId:kc(),...o}),l=new Ft({baseUrl:s,apiKey:i,logger:a,mode:"interactive",runner:"mcp"}),c=Ib(process.env.MOMENTIC_HEADFUL_BROWSER),d=new Sr(r.config.ai?.agentConfig,{baseUrl:s,apiKey:i,logger:a,mode:"interactive",runner:"mcp"}),u=oo(),p=new sa(l,u,r);return {context:{project:r,orgId:u,logger:a,generator:d,apiClient:l,storage:p,serverId:o.serverId,extractBaseDir:ea(r.rootDir),saveChangesToDisk:true,supportsFileOutput:n??true,knowledgeRetrievalResults:Jt,knowledgeCitations:[],sessionIdleTimeoutMs:KWe(),headfulDefault:t??c??true,categoryDefinitions:r.config.ai?.classification?.categories??ns},info:o}}var gu={};g_.post("/",async(e,t)=>{let n=String(e.headers[Z0]??"");try{if(n&&gu[n]){await gu[n].handleRequest(e,t,e.body);return}if(!n&&isInitializeRequest(e.body)){let{context:o,info:r}=YWe(),i=b0(o,r,Ly),s=new StreamableHTTPServerTransport({sessionIdGenerator:()=>randomUUID(),enableDnsRebindingProtection:!1,onsessioninitialized:a=>{gu[a]=s;}});s.onclose=()=>{let a=s.sessionId;a&&gu[a]&&delete gu[a],i.close().catch(()=>{});},await i.connect(s),await s.handleRequest(e,t,e.body);return}t.status(400).json({jsonrpc:"2.0",error:{code:-32e3,message:"Bad Request: No valid session ID provided"},id:null});}catch{t.headersSent||t.status(500).json({jsonrpc:"2.0",error:{code:-32603,message:"Internal server error"},id:null});}});g_.get("/",async(e,t)=>{let n=String(e.headers[Z0]??"");if(!n||!gu[n]){t.status(400).send("Invalid or missing session ID");return}await gu[n].handleRequest(e,t);});g_.delete("/",async(e,t)=>{let n=String(e.headers[Z0]??"");if(!n||!gu[n]){t.status(400).send("Invalid or missing session ID");return}let o=gu[n];try{await o.handleRequest(e,t);}catch{t.headersSent||t.status(500).send("Error processing session termination");}});var Vre=g_;var zre=Router();zre.get("/:id",St(async(e,t)=>{let{id:n}=e.params;if(!n){t.status(400).json({error:"Missing ID"});return}let o=rr();if(!o){t.status(500).json({error:"API client not initialized"});return}try{let{data:r,contentType:i}=await o.fetchOnDemandScreenshot(n);t.setHeader("Content-Type",i),t.status(200).send(r);}catch(r){En.error({err:r,screenshotId:n},"Failed to proxy on-demand screenshot"),t.status(404).json({error:"Screenshot not found"});}}));var Wre=zre;var f_=Router();f_.get("/",St(async(e,t)=>{let n=new Map;for(let i of await cD())n.set(i.configFilePath,i);let o=st();n.set(o.configFilePath,o);let r=[...n.values()].map(i=>({name:i.config.name,configFilePath:i.configFilePath,fileFormat:i.config.fileFormat}));t.status(200).json(r);}));f_.get("/current",St((e,t)=>{let n=st();if(!n){t.status(404).json({error:"No project found."});return}let o={name:n.config.name,configFilePath:n.configFilePath,fileFormat:n.config.fileFormat};t.status(200).json(o);}));f_.post("/set",St(async(e,t)=>{let n;try{n=t1.parse(e.body);}catch(o){t.status(400).json({error:`Invalid request body: ${o}`});return}En.info("Setting local project");try{let o=await on({configFilePath:n.configFilePath}),r=rr();if(!r)throw new Error("API client is not initialized.");await ry({project:o,apiClient:r});}catch(o){t.status(400).json({error:`Error setting project: ${o}`});return}t.sendStatus(204);}));var qre=f_;var Kre=Router();Kre.get("/",St((e,t)=>{let n=st(),o={ai:n.config.ai,browser:n.config.browser,displayRoot:n.config.displayRoot};t.status(200).json(o);}));var Yre=Kre;var Jc=Router();Jc.post("/",St(async(e,t)=>{let n;try{n=qW.parse(e.body);}catch(o){t.status(400).json({error:`Invalid request body: ${o}`});return}try{let o=st(),r=await YA({project:o,input:n});oa({type:"test_editor:test_create",test_platform:"web"}),t.status(201).json(r);}catch(o){if(o instanceof mt){t.status(400).json({error:o.message});return}throw o}}));Jc.get("/:testPath",St(async(e,t)=>{let{testPath:n}=e.params;if(!n){t.status(400).json({error:"Missing testPath in url path."});return}let o=st(),r=await Ws(o),i;try{i=await ps(Jn__default.join(o.rootDir,n),En,r),await(await vs({logger:En,orgId:oo(),project:o})).resolveStepCacheEntries({schemaVersion:i.schemaVersion,testId:i.id,environment:i.envs?.find(a=>a.default)?.name,stepLists:{beforeSteps:i.beforeSteps,steps:i.steps,afterSteps:i.afterSteps},logger:En,useSnapshotIdentityCache:o.config.fileFormat==="v2"}),t.status(200).json(i);}catch(s){t.status(400).send({error:s.message});return}(async()=>{try{await Tw({relativeTestPath:n,stepLists:{steps:i.steps,beforeSteps:i.beforeSteps,afterSteps:i.afterSteps},schemaVersion:at,momenticFiles:r,project:o});}catch(s){En.error({err:s},"Failed to save migrated test to disk after initial fetch");}})();}));Jc.get("/:testPath/metadata",St(async(e,t)=>{let{testPath:n}=e.params;if(!n){t.status(400).json({error:"Missing testPath in url path."});return}let o=st(),r=Jn__default.join(o.rootDir,n);if(!br__default.existsSync(r)){t.status(404).json({error:"Test file not found."});return}let i=br__default.statSync(r),s=await _a(En),a={gitBranch:s.gitBranchName??"unknown",fileMtime:i.mtime,gitCommitSha:s.gitCommitSha??"unknown"};t.status(200).json(a);}));Jc.patch("/:testPath/metadata",St(async(e,t)=>{if(!e.params.testPath){t.status(400).json({error:"Missing testPath in url path."});return}let n;try{n=WW.parse(e.body);}catch(i){t.status(400).json({error:`Invalid request body: ${i}`});return}let r={message:"ok",newRelativeTestPath:UT(e.params.testPath,n,st()).newRelativeTestPath};t.status(200).json(r);}));Jc.patch("/:testPath",St(async(e,t)=>{let{testPath:n}=e.params;if(!n){t.status(400).json({error:"Missing testPath in url path."});return}let o;try{o=zW.parse(e.body);}catch(m){En.warn({err:m},"Invalid save request"),t.status(400).json({error:`Invalid request body: ${m}`});return}En.info({testPath:n},"Save received");let r=st(),i=await Ws(r),s;try{s=Ud(n,r);}catch(m){t.status(400).json({error:`Existing test file on disk is invalid: ${m}`});return}let a=r.config.fileFormat==="v2",{stepsToSave:l,moduleUpdates:c,cachesToSave:d,snapshotCachesToSave:u}=await Yn({stepLists:o.stepLists,useSnapshotIdentityCache:a,cacheCreationParams:{orgId:oo(),testId:s.id,environment:s.envs?.find(m=>m.default)?.name}}),p=await vs({logger:En,orgId:oo(),project:r});a&&await p.saveSnapshotCacheEntries({logger:En,entries:u}),await p.saveStepCacheEntries({logger:En,entries:d}),iD({relativeTestPath:n,stepsToSave:l,moduleUpdates:c,schemaVersion:o.schemaVersion,momenticFiles:i,project:r}),t.status(201).json({message:"ok"});}));Jc.patch("/:testPath/environments",St(async(e,t)=>{let{testPath:n}=e.params;if(!n){t.status(400).json({error:"Missing testPath in url path."});return}let o;try{o=e1.parse(e.body);}catch(r){t.status(400).json({error:`Invalid request body: ${r}`});return}UT(n,{envs:o.defaultEnv?[{name:o.defaultEnv,default:true}]:[]},st()),t.status(201).json({message:"ok"});}));Jc.patch("/:testPath/move",St(async(e,t)=>{let{testPath:n}=e.params;if(!n){t.status(400).json({error:"Missing testPath in url path."});return}let o;try{o=ZW.parse(e.body);}catch(i){t.status(400).json({error:`Invalid request body: ${Q(i)}`});return}let r=st();if(!br__default.existsSync(Jn__default.join(r.rootDir,n))){t.status(404).json({error:"Test not found."});return}await dQ({relativeTestPath:n,targetFolderRelativePath:o.folderPath,project:r}),t.status(200).json({message:"ok"});}));Jc.delete("/:testPath",St((e,t)=>{let{testPath:n}=e.params;if(!n){t.status(400).json({error:"Missing testPath in url path."});return}let o=st(),r=Jn__default.join(o.rootDir,n);if(!br__default.existsSync(r)){t.status(404).json({error:"Test not found."});return}br__default.unlinkSync(r),t.status(200).json({message:"ok"});}));Jc.post("/:testPath/duplicate",St(async(e,t)=>{let{testPath:n}=e.params;if(!n){t.status(400).json({error:"Missing testPath in url path."});return}let o;try{o=KW.parse(e.body);}catch(h){t.status(400).json({error:`Invalid request body: ${h}`});return}try{Zl(o.name);}catch(h){t.status(400).json({error:h.message});return}let r=st(),i=Jn__default.join(r.rootDir,n);if(!br__default.existsSync(i)){t.status(404).json({error:"Test not found."});return}let s=await Ve(r),a;try{a=await ps(i,En,s);}catch(h){t.status(400).send({error:h.message});return}let l=xc({projectConfig:r.config,momenticFiles:s,entityType:"test"}),c=Zn.parse({...a,name:o.name,id:l}),{stepsToSave:d}=await Yn({stepLists:{steps:a.steps,beforeSteps:a.beforeSteps,afterSteps:a.afterSteps},createNewCacheIds:true}),u=Jn__default.dirname(i),p=Jn__default.join(u,`${o.name}.test.yaml`);wa({test:{fileType:ke.TEST,...c,...d},filePath:p,projectConfig:r.config,momenticFiles:s});let m={relativeFilePath:Jn__default.relative(r.rootDir,p)};oa({type:"test_editor:test_duplicated"}),t.status(201).json(m);}));var Jre=Jc;var Xre=z.object({name:z.string().min(1).describe("Short, human-readable name for the slice you are delegating (used as a label)."),instructions:z.string().min(1).describe("Focused, self-contained instructions for the child: which area it should own and what to cover. The child inherits the same input you received but cannot see your conversation, so these instructions must stand alone."),budget:z.number().int().positive().optional().describe("Maximum number of test plans this child should produce. Allocate a portion of your remaining budget to each child. Omit to let the child use its own judgement.")});function Qre(e){return e.kind==="diff"?e.diffSummary:yt`
|
|
7504
7504
|
You are seeding end-to-end test coverage for this entire application from scratch. There is no diff and no single assigned surface — the whole product is in scope.
|
|
7505
7505
|
|
|
7506
7506
|
Map the application's user-facing surfaces from the codebase, then cover them. Whenever you identify a self-contained area that warrants its own focused pass, delegate it to a child explorer with ${ma} as described in your instructions, and explore the rest yourself. Fold the children's findings into your final submission so it reflects the whole app.
|
|
@@ -8913,7 +8913,7 @@ ${i.length===0?"(none)":l}
|
|
|
8913
8913
|
`);for(let l of e){let c=l.files.map(h=>t.get(h)).filter(h=>h!==void 0),d=l.files.map(h=>n.get(h)).filter(h=>h!==void 0),u=pE({bfsSummaries:d}),p=nP({fileSummaries:c,bfsSummaries:u,candidateTestsBlock:a,tokenBudget:r});if(!ale({estimatedTokens:p.estimatedTokens,tokenBudget:r,fileCount:l.files.length})){s.push(l);continue}i.debug({folder:l.folder,files:l.files.length},"Splitting oversized folder group");let m=Math.ceil(l.files.length/2);s.push({folder:`${l.folder} (1/2)`,files:l.files.slice(0,m)},{folder:`${l.folder} (2/2)`,files:l.files.slice(m)});}return s}async function r3e({groups:e,logger:t,insightStore:n}){let o=new Set,r=new Map;for(let d of e){let u=d.folder.split("/").filter(m=>m.length>0),p=[d.folder];for(let m=u.length-1;m>0;m--)p.push(u.slice(0,m).join("/"));r.set(d.folder,p);for(let m of p)o.add(m);}let i=[...o];if(i.length===0)return new Map;let s=50,a=[];try{for(let d=0;d<i.length;d+=s){let u=i.slice(d,d+s),p=await n.getInsightsForFolders(u);a.push(...p);}}catch(d){return t.warn({err:d},"Code insights prefetch failed, continuing without KB context"),new Map}t.info({folderCount:i.length,insightCount:a.length},"Code insights prefetch complete");let l=new Map;for(let d of a){let u=l.get(d.folderPath)??[];u.push(d),l.set(d.folderPath,u);}let c=new Map;for(let d of e){let u=r.get(d.folder)??[d.folder],p=[];for(let m of u){let h=l.get(m);h&&p.push(...h);}c.set(d.folder,p);}return c}function i3e(e,t){e?.write(`${t}
|
|
8914
8914
|
`);}var Ll="/v1/app-graph",aP=class{constructor(t,n){this.apiClient=t;this.logger=n;}async claim(t){let n=await this.apiClient.sendRequest(`${Ll}/ai-select/claim`,{method:"POST",body:t,retries:2,requestTimeoutMs:15e3});return z$.parse(n)}async getPlan(t){let n=new URLSearchParams({repository:t.repository,headSha:t.headSha}),o=await this.apiClient.sendRequest(`${Ll}/ai-select/plan?${n.toString()}`,{method:"GET",retries:1,requestTimeoutMs:1e4});return q$.parse(o)}async finalize(t){let n=await this.apiClient.sendRequest(`${Ll}/ai-select/finalize`,{method:"POST",body:t,retries:2,requestTimeoutMs:3e4});return W$.parse(n)}async release(t){await this.apiClient.sendRequest(`${Ll}/ai-select/release`,{method:"POST",body:{selectionPlanKey:t},retries:1,requestTimeoutMs:5e3}).catch(n=>{this.logger.warn({err:n,selectionPlanKey:t},"Failed to release ai-select lock");});}async searchObservedTests(t){let n=await this.apiClient.sendRequest(`${Ll}/ai-select/search/observed-tests`,{method:"POST",body:t,retries:2,requestTimeoutMs:15e3});return sM.parse(n)}async searchSegments(t){let n=await this.apiClient.sendRequest(`${Ll}/ai-select/search/segments`,{method:"POST",body:t,retries:2,requestTimeoutMs:15e3});return sM.parse(n)}async getObservedTest(t){let n=await this.apiClient.sendRequest(`${Ll}/ai-select/observed-tests/${encodeURIComponent(t)}`,{method:"GET",retries:2,requestTimeoutMs:1e4});return K$.parse(n)}async getSegment(t){let n=await this.apiClient.sendRequest(`${Ll}/ai-select/segments/${encodeURIComponent(t)}`,{method:"GET",retries:2,requestTimeoutMs:1e4});return Y$.parse(n)}async listObservedTestsForSegment(t){let n=await this.apiClient.sendRequest(`${Ll}/ai-select/segments/${encodeURIComponent(t)}/observed-tests`,{method:"GET",retries:2,requestTimeoutMs:1e4});return J$.parse(n)}async getCodeInsights(t){let n=await this.apiClient.sendRequest(`${Ll}/ai-select/code-insights`,{method:"POST",body:{repository:t.repository,folderPaths:t.folderPaths},retries:1,requestTimeoutMs:1e4});return X$.parse(n).insights}async createCodeInsight(t){let n=await this.apiClient.sendRequest(`${Ll}/ai-select/code-insight`,{method:"POST",body:t,retries:1,requestTimeoutMs:15e3});return Q$.parse(n)}},s3e=2e3,Dle=12e4;async function Fle(e){let t=Date.now()+(e.timeoutMs??Dle),n=0;for(;;){n+=1;let o=await e.client.claim(e.claim);if(o.status==="claimed")return {kind:"claimed",selectionPlanKey:o.selectionPlanKey,trackId:o.trackId};if(o.status==="ready")return {kind:"ready",plan:o.plan,planId:o.planId};if(Date.now()>=t)throw new Error(`ai-select: timed out waiting for plan after ${e.timeoutMs??Dle}ms`);e.logger.info({attempt:n,claimedBy:o.claimedBy},"ai-select plan computing on another shard; polling"),await ot(o.retryAfterMs??s3e);}}async function l3e(e){try{return await X_({repoRoot:e.repoRoot,explicitBase:"HEAD~1",logger:e.logger})}catch{return jU({repoRoot:e.repoRoot,client:e.apiClient,repository:e.repository,base:null,logger:e.logger})}}async function mH(e){return He({name:"ai_select.resolve_plan",root:true,attributes:{"momentic.repository":e.repository},fn:()=>c3e(e)})}async function c3e(e){let t=new aP(e.apiClient,e.logger),n=e.agentOutputStream?vt(e.agentOutputStream):vt();e.agentOutputStream!==void 0&&!!e.agentOutputStream.isTTY;e.agentOutputStream&&e.agentOutputStream.write(`Selecting tests to run with AI:
|
|
8915
8915
|
`);let r;try{r=await He({name:"ai_select.assemble_diff",attributes:{"momentic.explicit_base":e.explicitBase??"auto"},fn:()=>wo({text:"Analyzing code changes...",screen:n},()=>X_({repoRoot:e.repoRoot,explicitBase:e.explicitBase,configBase:e.config?.baseRef,mainBranch:e.mainBranch,logger:e.logger}))});}catch(p){let m=p instanceof _h?p.message:`Could not assemble diff against base ref: ${Q(p)}.`,h=Fae({explicitBase:e.explicitBase,configBase:e.config?.baseRef,mainBranch:e.mainBranch}),g=h?await jU({repoRoot:e.repoRoot,client:e.apiClient,repository:e.repository,base:h,logger:e.logger}):null;if(g)r=g;else {let f=e.config?.onBaseUnavailable??"use-head";switch(f){case "fail":throw new _h(`AI selection base unavailable and ai.select.onBaseUnavailable is "fail": ${m}`);case "run-all":return {kind:"run-all",reason:m,diff:null};case "use-head":{let y=await l3e(e);if(y===null)return {kind:"run-all",reason:`Could not assemble diff against the HEAD commit's parent: ${m}`,diff:null};r=y;break}default:return tt(f)}}}if(e.logger.info({changedFiles:r.changedFiles.length},"Diff assembled"),r.changedFiles.length===0)return {kind:"run-none",reason:"No source-code changes detected between base and head.",diff:r};let i=createHash("sha256").update(e.candidateTests.map(p=>p.testPath).sort().join(`
|
|
8916
|
-
`)).digest("hex").slice(0,12),s=`${r.headSha}:${i}`,a=r.repoRoot,l=Jn__default.relative(a,e.repoRoot),c=l?e.candidateTests.map(p=>({...p,testPath:Jn__default.posix.join(l.split(Jn__default.sep).join("/"),p.testPath)})):e.candidateTests;if(e.dryRun){let p=await uH({apiClient:t,generator:e.generator,logger:e.logger,repository:e.repository,repoRoot:a,projectRoot:e.repoRoot,diff:r,candidateTests:c,allTestDefinitions:e.allTestDefinitions,importIndexCachePath:eP(a),agentOutputStream:e.agentOutputStream});return p.fallbackToRunAll?{kind:"run-all",reason:p.userSummary,diff:r}:{kind:"ready",plan:{version:2,userSummary:p.userSummary,toolCallCount:p.toolCallCount,selectedTests:p.selectedTests,anchorSegmentIds:p.anchorSegmentIds,budget:{source:e.budgetSource,cap:e.budgetCap??null},generatedAt:new Date().toISOString()},planId:`dry-run-${s}`,mode:"SELECTED",diff:r}}let d=await Fle({client:t,claim:{repository:e.repository,headSha:s,baseRef:r.baseRef,changedFiles:r.changedFiles.map(p=>p.path),diffSummary:null,budgetCap:e.budgetCap,dryRun:e.dryRun},logger:e.logger});if(d.kind==="ready")return e.logger.info({planId:d.planId,planSize:d.plan.selectedTests.length,suiteHash:i},"ai-select: reusing cached plan from server"),{kind:"ready",plan:d.plan,planId:d.planId,mode:"SELECTED",diff:r};let u=await uH({apiClient:t,generator:e.generator,logger:e.logger,repository:e.repository,repoRoot:a,projectRoot:e.repoRoot,diff:r,candidateTests:c,allTestDefinitions:e.allTestDefinitions,importIndexCachePath:eP(a),agentOutputStream:e.agentOutputStream});if(u.fallbackToRunAll)return await t.release(d.selectionPlanKey),{kind:"run-all",reason:u.userSummary,diff:r};try{e.logger.info({selectedCount:u.selectedTests.length,durationMs:u.totalDurationMs,suiteHash:i},"ai-select: computed fresh plan");let p=await t.finalize({selectionPlanKey:d.selectionPlanKey,repository:e.repository,headSha:s,mode:"SELECTED",userSummary:u.userSummary,toolCallCount:u.toolCallCount,selectedTests:u.selectedTests,anchorSegmentIds:u.anchorSegmentIds,budget:{source:e.budgetSource,cap:e.budgetCap}});return {kind:"ready",plan:p.plan,planId:p.planId,mode:"SELECTED",diff:r}}catch(p){return e.logger.error({err:p},"ai-select finalize failed; falling back to run-all"),await t.release(d.selectionPlanKey),{kind:"run-all",reason:`Could not record selection plan: ${Q(p)}.`,diff:r}}}function Mh(e){let t=e??m3e();return Ble()&&t===1&&R.warn("Running with --pixel-ratio=1 on a Retina screen. Viewport calculations may be incorrect; omit the flag to auto-detect."),t}function m3e(){let e=Ble(),t=e?2:1;return R.debug(`Auto-detected device pixel ratio ${t} (Mac OS Retina: ${e}).`),t}var Ble=once(()=>{if(platform()!=="darwin")return false;try{return execSync("system_profiler SPDisplaysDataType").toString().includes("Retina")}catch{return false}});async function lP(e,t=true,n=false){let o=y3e(e),r=await g3e.which(o[0],true),i=o.slice(1),s=h3e.exec(f3e(r),i,{delay:100,silent:n});if(t)return s}var Ule="the Momentic GitHub app is missing permission to create pull requests or write branches for this repository";function S3e(e,{context:t}){return e instanceof no?e.rawError.includes("Resource not accessible by integration")?`Cannot create ${t} because ${Ule}.`:e.status>=400&&e.status<500?e.rawError:`Could not create ${t} due to a GitHub error.`:`Could not create ${t}: ${Q(e)}`}function Hle(e){return e instanceof no?e.rawError.includes("Resource not accessible by integration")?Ule:e.status>=400&&e.status<500?e.rawError:"a GitHub error occurred":Q(e)}function Gle(e,t){R.error(S3e(e,t));}function cP(e){return jle(e,"runs","run")}function hH(e){return jle(e,"run-groups","run group")}function jle(e,t,n){let o=e.trim(),r=/^https?:\/\//i.test(o)?T3e(o,t,n):o;if(!z.guid().safeParse(r).success)throw new Error(`Invalid ${n} ID: ${e}. Expected a UUID or a URL like https://app.momentic.ai/${t}/<id>.`);return r}function T3e(e,t,n){let o;try{o=new URL(e);}catch{throw new Error(`Invalid ${n} URL: ${e}`)}let r=o.pathname.split("/").filter(i=>i.length>0);if(r.length!==2||r[0]!==t)throw new Error(`Could not extract ${n} ID from URL: ${e}. Expected a URL like https://app.momentic.ai/${t}/<id>.`);return r[1]}function dP(e){return new Promise((t,n)=>{let o=[];createReadStream(e).pipe(A3e()).on("data",r=>o.push(r)).on("end",()=>t(o)).on("error",r=>n(r));})}var an="3.12.0",{checkCLIVersion:Br,getLatestCLIVersion:$le}=d6({packageName:"momentic",currentVersion:an,changelogUrl:"https://github.com/momentic-ai/cli/releases",updateCommand:"npx momentic@latest upgrade"});mke("phc_WRWd8LYIv6rolgDsyCdrPpxtZhsu6qXAkEwPicl44bI","POSTHOG_WEB_WRITE_KEY is not set");var{captureEvent:bu,setAnalyticsIdentity:uP,shutdownAnalytics:Vle}=Mv({writeKey:"phc_WRWd8LYIv6rolgDsyCdrPpxtZhsu6qXAkEwPicl44bI",host:"https://p.momentic.ai",platform:"cli",identity:"stashed",flushImmediately:true,onIdentify:f6});async function lt(){try{await Ie(Promise.all([Pv(),Tt.flush(),Vle(),jv()]),{milliseconds:5e3});}catch{}}async function Nh({tests:e,momenticFiles:t,project:n,yes:o,include:r,exclude:i,labels:s,logger:a}){let l=new Set;if(e&&e.length>0){let d=e.some(p=>br__default.existsSync(p)),u=cwd();d?(u!==n.rootDir&&a.warn(`Test paths resolve against the current directory ('${u}'), not the project root ('${n.rootDir}'). Run from the project root or use substring filters to avoid surprises.`),e.forEach(p=>{if(!br__default.existsSync(p))throw new Error(`Path '${p}' does not exist.`);let m;try{m=br__default.statSync(p).isDirectory();}catch(g){a.warn({err:g},`Skipping path ${p} because it cannot be read`);return}let h=Jn__default.resolve(p);Object.values(t.tests).filter(g=>m?g.fullFilePath.startsWith(h):g.fullFilePath===h).forEach(g=>{l.add(g.fullFilePath);});})):Object.values(t.tests).forEach(p=>{e.some(m=>p.relativePath.includes(m))&&l.add(p.fullFilePath);});}else !o&&!await fr("No test paths or substrings were provided. Do you want to run all tests?")&&(a.error("Cancelled by user."),process.exit(1)),Object.values(t.tests).forEach(u=>{l.add(u.fullFilePath);});for(let d of l){let u=Jn__default.relative(n.rootDir,d);r&&!r.some(p=>new RegExp(p).test(u))&&l.delete(d),i&&i.some(p=>new RegExp(p).test(u))&&l.delete(d);}let c=Array.from(l).map(async d=>{try{let u=await ps(d,Ee,t);if(nu.gt(u.schemaVersion,at)&&a.warn(`Test ${d} has schema version ${u.schemaVersion}, which is greater than what is currently supported by this SDK. Please update your momentic package version to avoid unexpected behavior.`),s&&s.length>0){let p=u.labels||[];if(!s.some(h=>p.includes(h)))return null}return {...u,fullFilePath:d,relativeFilePath:Jn__default.relative(n.rootDir,d)}}catch(u){a.error(`Failed to read and resolve test at '${d}': ${Q(u)}`),process.exit(1);}});return compact(await Promise.all(c))}function Wle({testDefinitions:e,quarantinedTestsMetadata:t,onlyQuarantined:n=false,skipQuarantined:o=false}){let[r,i]=partition(e,l=>l.disabled),[s,a]=partition(i,l=>l.id in t);return {testsToSkip:r,quarantinedTestsToSkip:o?s:[],testsToRun:n?[]:a,quarantinedTestsToRun:o?[]:s}}function qle({testsToRun:e,quarantinedTestsToRun:t,quarantinedTestsMetadata:n,testInputMatrix:o}){let r=[],i=(s,a,l)=>{o?o.forEach((c,d)=>{r.push({inputs:c,inputIndex:d,testDefinition:s,quarantined:a,quarantinedMetadata:l});}):r.push({inputs:void 0,testDefinition:s,quarantined:a,quarantinedMetadata:l});};return e.forEach(s=>i(s,false)),t.forEach(s=>i(s,true,n[s.id])),r}var Kle=()=>process.exit(130),Yle=()=>process.exit(143);process.on("SIGINT",Kle);process.on("SIGTERM",Yle);function mE(){process.off("SIGINT",Kle),process.off("SIGTERM",Yle);}async function Jle({orgId:e,codeEvalTools:t,logger:n,outputDefinitions:o,testContext:r}){let i={};for(let s of o){let{name:a,value:l}=s;i[a]=await gi({orgId:e,s:l,localTools:t,logger:n,context:r});}return i}var Xle=new Set;async function Qle({baseUrl:e,envName:t,devicePixelRatio:n,apiClient:o,test:r,storageClient:i,codeEvalTools:s,generator:a,orgId:l,variables:c,logger:d,customHeaders:u,testInputs:p,localBrowserConfig:m,aiSettings:h,visualDiffScreenshotStorage:g,tracer:f,runId:y,browserTypeOverride:S,attemptedRemoteBrowserProviders:b}){let E={baseUrl:o.baseUrl,apiKey:o.apiKey,logger:Ee,mode:o.mode,runner:o.runner},{controller:C,context:w}=await $A({baseUrl:e,envName:t,test:r,variables:c,logger:d,orgId:l,localBrowserConfig:m,aiSettings:h,customHeaders:u,codeEvalTools:s,storage:i,enricher:new Kd(E,a),generator:a,visualDiffScreenshotStorage:g,devicePixelRatio:n,browserTypeOverride:S,callbacks:{onNetworkPage:I=>f.onNetworkPage(I),onNetworkLogs:I=>f.onNetworkLogs(I)},videoOptions:f.videoOutputPath?{videoOutputPath:f.videoOutputPath,onVideoPageChange:({videoName:I,timestamp:x})=>{f.setActiveVideo(I,x);}}:void 0,validateBrowserType:I=>{lT(I)||(Ee.warn({browserType:I,testName:r.name},"Browser required by test does not appear to be installed"),!Xle.has(I)&&(Xle.add(I),R.warn(`Browser ${I} does not appear to be installed. Run '${xu(I)}' if you hit launch errors.`)));},createRemoteBrowserConnection:m.remoteBrowser?async()=>{let I=await o.createRemoteBrowserConnection({runId:y,attemptedProviders:b});return I.provider&&b?.push(I.provider),I}:void 0});try{await Yx({orgId:l,test:r,testInputs:p,localTools:s,logger:d,context:w});}catch(I){try{await C.browser.cleanup();}catch(x){d.error({err:x},"Failed to clean up browser after test input resolution failed");}throw I instanceof VA&&(R.error(I.message),process.exit(1)),I}return {controller:C,context:w}}function Zle({testAdvancedSettings:e,orgSettings:t,logger:n}){if(e.failureRecovery===false||e.failureRecovery===void 0&&!t?.failureRecovery)return false;if(!_m){let o="This test is ineligible for failure recovery since this does not appear to be a CI environment";return n.warn(o),R.debug(o),false}return true}async function ece({attemptInputs:e,attemptFixtures:t,attemptMetadata:n,runFixtures:o,recordVideo:r,stepCallbacks:i}){let{orgId:s,userId:a,runId:l}=n,{runTracer:c,runGroupTracer:d,project:u,apiClient:p}=o,{controller:m,context:h,codeEvalTools:g,storageClient:f,logger:y,usageTracker:S,tracer:b}=t,{test:E,orgSettings:C}=e;y.info(`Running test '${E.name}' locally (run link: https://app.momentic.ai/runs/${l})`);let w={controller:m,storage:f,usageTracker:S,context:h,logger:y,codeEvalTools:g},I={orgId:s,userId:a,runId:l,testMetadata:E,steps:E.steps,beforeSteps:E.beforeSteps,afterSteps:E.afterSteps,orgSettings:C},x={collectDebugData:true,reinitializeBrowser:true,disableHealing:!await Zle({testAdvancedSettings:E.advanced,orgSettings:C.ai,logger:y})};return Goe({fixtures:w,inputs:I,options:x,callbacks:{step:i??{},test:{onTestComplete:async P=>{await m.browser.cleanup({saveRemoteVideos:r!=="on-fail"||P?.status!=="PASSED"}),await g.dispose();}}},testParams:{attemptTracer:b},runParams:{runTracer:c,runGroupTracer:d,project:u,apiClient:p,captureEvent:bu,abortSignal:o.abortSignal}})}async function tce(e){let{testDefinition:t,logger:n}=e,o=new Date;try{return await _3e(e)}catch(r){zu(r);let{customHeaders:i,envName:s,testInputs:a,urlOverride:l}=e,c={customHeaders:i,envName:s,testInputs:a,urlOverride:l},d="Fatal error running test";return n.error({err:r},d),R.error({err:r},d),nce({err:cm(r),parameters:c,test:t,failureReason:te.reasonFor(r,"UnknownError"),startedAt:o,lastAttemptStartedAt:o,attempts:0,quarantined:e.quarantined,quarantinedMetadata:e.quarantinedMetadata})}}async function _3e(e){let{testDefinition:t,snapshot:n,project:o,apiClient:r,orgId:i,userId:s,urlOverride:a,runGroupTracer:l,logger:c,gitMetadata:d,cacheOptions:u,runId:p,testInputs:m,quarantined:h,quarantinedMetadata:g,usageTracker:f}=e,y=n?{...o.config,...n.metadata.config}:o.config,S=new Kf(r,i),b=Xd({logger:c,orgId:i,client:r,gitMetadata:d,regenerateCache:u.regenerateCache,alwaysSaveCache:u.alwaysSaveCache,noCache:n?true:u.noCache,isolateCachesByEnvironment:o.config?.advanced?.isolateCachesByEnvironment,bustOldestCachePercentage:u.bustOldestCachePercentage}),E,C;n?(E={envName:n.metadata.environment.envName,resolvedEnv:n.metadata.environment.resolvedEnv,environmentVariables:{...n.metadata.environment.variables},baseUrl:n.metadata.environment.baseUrl},C={steps:t.steps,beforeSteps:t.beforeSteps,afterSteps:t.afterSteps}):(E=Yf({test:t,envNameOverride:e.envName,urlOverride:a,resolveEnv:re=>Gd(re,o,c)}),C=await Ec({cacheStorage:b,logger:c,schemaVersion:t.schemaVersion,stepLists:{steps:t.steps,beforeSteps:t.beforeSteps,afterSteps:t.afterSteps},testId:t.id,environment:E.envName,useSnapshotIdentityCache:o.config.fileFormat==="v2"}));let{envName:w,resolvedEnv:I,environmentVariables:x,baseUrl:v}=E,P=C.steps,_=C.beforeSteps??void 0,B=C.afterSteps??void 0,D=await l.startRun({logger:c,runId:p,originalSteps:{beforeSteps:t.beforeSteps,steps:t.steps,afterSteps:t.afterSteps},testId:t.id,testName:t.name,directory:dirname(t.relativeFilePath),testDescription:t.description??void 0,testLabels:t.labels,baseUrl:v,environmentName:w,schemaVersion:t.schemaVersion,resolvedInputs:m,quarantined:h,quarantinedReason:g?.quarantinedReason,aiSettings:y.ai}),V=c.child(D.loggerBindings||{});Object.entries(D.envVarBindings||{}).forEach(([re,H])=>{x[re]=H;});let ne=await P3e({...e,effectiveConfig:y,variables:x,envName:w,resolvedEnv:I,baseUrl:v,storageClient:S,tracer:D,runGroupTracer:l,logger:V,cacheStorage:b,stepsWithCaches:P,beforeStepsWithCaches:_,afterStepsWithCaches:B,usageTracker:f});return await D.finish({logger:c,status:ne.status,finishedAt:ne.finishedAt,failureDetails:ne.failureDetails,failureReason:ne.failureReason,isFlake:ne.isFlake,failureRecoveryDetails:ne.failureRecoveryDetails}),{runId:D.runId,...ne}}async function P3e(e){let{testDefinition:t,effectiveConfig:n,stepsWithCaches:o,beforeStepsWithCaches:r,afterStepsWithCaches:i,project:s,regenerateGoldenFiles:a,apiClient:l,generator:c,baseUrl:d,storageClient:u,orgId:p,userId:m,envName:h,urlOverride:g,customHeaders:f,testInputs:y,variables:S,resolvedEnv:b,retriesOverride:E,devicePixelRatio:C,logUpdate:w,tracer:I,runGroupTracer:x,logger:v,cacheStorage:P,gitMetadata:_,quarantined:B,quarantinedMetadata:D,usageTracker:V}=e,ne=n,re=ne.ai?.aiFailureAnalysis??false,H=new Date,z=new Df(s,l,a),M={envName:h,urlOverride:g,customHeaders:f,testInputs:y},K={...ne.browser||{},...b?.browser||{},...t.advanced||{},...e.remoteBrowserOverride?{remoteBrowser:true}:{}},j=K.remoteBrowser===true,F=[],J,X=Math.abs(E??t.retries??n.retries??1),ue=[];v.info({..._,labels:t.labels,name:t.name,cwd:process.cwd()},"Starting test run using CLI");for(let xe=0;xe<=X;xe++){let Oe=randomUUID(),Ye=await I.startAttempt(Oe),me=v.child(Ye.loggerBindings||{}),ie={...t,steps:cloneDeep(o),beforeSteps:cloneDeep(r),afterSteps:cloneDeep(i)};xe!==0&&w("RETRY",`attempt ${xe+1}/${X+1}`);let Re=new Date,Ke=new Jd({httpClient:new Wi({baseUrl:l.baseUrl,apiKey:l.apiKey,logger:me,mode:l.mode,runner:l.runner}),fakerSeed:ne.advanced?.fakerConstantSeed?xb:void 0});try{let{controller:$e,context:Ge}=await Qle({tracer:Ye,runId:I.runId,baseUrl:d,envName:h,apiClient:l,devicePixelRatio:C,logger:me,storageClient:u,codeEvalTools:Ke,test:ie,generator:c,orgId:p,variables:S,customHeaders:f,testInputs:y,localBrowserConfig:K,browserTypeOverride:e.browserTypeOverride,attemptedRemoteBrowserProviders:F,aiSettings:{...ne.ai||{},...ie.advanced||{}},visualDiffScreenshotStorage:z});e.abortSignal&&(e.abortSignal.aborted?$e.executeAbortController.abort():e.abortSignal.addEventListener("abort",()=>{$e.executeAbortController.abort();},{once:!0})),J=await ece({attemptMetadata:{attemptNumber:xe+1,orgId:p,userId:m,runId:I.runId},attemptFixtures:{logger:me,storageClient:u,usageTracker:V,codeEvalTools:Ke,context:Ge,controller:$e,tracer:Ye},attemptInputs:{test:ie,orgSettings:ne},runFixtures:{runTracer:I,runGroupTracer:x,project:s,apiClient:l,abortSignal:e.abortSignal},recordVideo:e.recordVideo??!1,stepCallbacks:{onStepStart:e.onStepStart}});let It=new Date,ln={logger:v,cacheStorage:P,orgId:p,testId:t.id,environment:h,originalStepsWithCaches:{steps:cloneDeep(o),beforeSteps:cloneDeep(r),afterSteps:cloneDeep(i)},updatedStepsWithCaches:{steps:ie.steps,beforeSteps:ie.beforeSteps,afterSteps:ie.afterSteps}};await Bm({logger:v,cacheStorage:P,orgId:p,testId:t.id,environment:h,stepLists:ln.updatedStepsWithCaches,useSnapshotIdentityCache:s.config.fileFormat==="v2"}),J?.status==="PASSED"?await Um(ln):J?.status==="FAILED"&&xe===X&&await mf(ln),await Ye.finish({logger:me,result:J}),ue.unshift(J.status);let So=await Jle({orgId:p,codeEvalTools:Ke,logger:me,outputDefinitions:t.outputs??[],testContext:Ge}),aa=pV(ue),Ii=xe+1;if(J.status!=="FAILED")return {...J,runAttemptId:Oe,parameters:M,test:ie,filePath:ie.relativeFilePath,startedAt:H,lastAttemptStartedAt:Re,finishedAt:It,attempts:Ii,baseUrl:d,outputs:So,isFlake:aa,quarantined:B,quarantinedMetadata:D,usedRemoteBrowser:j};let ts=J.failedStepResult,jo=ts?.message||"Unknown failure",Gn=ts?.failureReason??Vj(jo)??"UnknownError",xi=me.child({failureReason:Gn,errorMessage:jo,numAttempts:(X+1).toString(),name:ie.name});if(xe<X){xi.warn(`Retrying failed execution attempt for run: ${jo}`);continue}xi.error(`Test failed after all exhausting attempts: ${jo}`);let Xo=new Error(jo),vr={errorMessage:jo,errorStack:Xo.stack},_i;if(ne.ai?.classification?.enabled===!0){let jn=ts?.failureClassification;jn||(e.onStepStart?.(rm),jn=await Mx({runTracer:I,runGroupTracer:x,outputDir:e.outputDir,orgId:p,project:s,generator:c,apiClient:l,logger:v,testPlatform:"web",aiSettings:ne.ai,captureEvent:bu,abortSignal:e.abortSignal,failedStepMessage:ts?.message})),jn&&(_i=jn.classification.category,Gn=jn.classification.category,vr.classification={reason:jn.classification.category,secondaryCategories:jn.classification.secondaryCategories,summary:jn.classification.reasoning,recoverable:jn.classification.recoverable,confidence:jn.classification.confidence,action:jn.action,citations:jn.classification.citations,source:"v2"});}else if(re){let jn;try{if(J.results&&J.results.length>0){e.onStepStart?.(rm);let{classification:k,aiFailureReason:fe}=await D3({logger:me,browserStateStorage:Ye,generator:c,fullResults:J,failureReason:Gn,error:Xo,maxItemsFromEnd:void 0,numStepsWithScreenshots:void 0,disableCache:!1});jn=k,_i=fe;}}catch(k){me.warn({err:k},"Failed to classify test results");}jn&&(vr.classification=jn,Gn=_i??Gn,vr.classification.source="v1");}return {...J,runAttemptId:Oe,parameters:M,failureDetails:vr,failureReason:Gn,test:ie,filePath:ie.relativeFilePath,startedAt:H,lastAttemptStartedAt:Re,finishedAt:It,attempts:xe+1,baseUrl:d,outputs:So,quarantined:B,quarantinedMetadata:D,usedRemoteBrowser:j}}catch($e){let Ge=`Encountered fatal platform error while running test '${ie.name}'`;return me.error({err:$e},Ge),R.error({err:$e},Ge),await Ye.finish({logger:me,result:{status:"FAILED"}}),nce({err:cm($e),parameters:M,test:ie,failureReason:te.reasonFor($e,"InternalPlatformError"),startedAt:H,lastAttemptStartedAt:Re,attempts:xe+1,quarantined:B,quarantinedMetadata:D,runAttemptId:Oe,baseUrl:d,usedRemoteBrowser:j})}}throw new Error("This code should not be reachable")}function nce({err:e,parameters:t,test:n,failureReason:o,startedAt:r,lastAttemptStartedAt:i,attempts:s,quarantined:a,quarantinedMetadata:l,runAttemptId:c,baseUrl:d,usedRemoteBrowser:u}){return {status:"FAILED",results:[],parameters:t,test:n,filePath:n.relativeFilePath,failureReason:o,failureDetails:{errorMessage:e.message,errorStack:e.stack},startedAt:r,lastAttemptStartedAt:i,finishedAt:new Date,attempts:s,outputs:{},quarantined:a,quarantinedMetadata:l,runAttemptId:c,baseUrl:d,usedRemoteBrowser:u}}var oce=3e4;async function nS({timeoutMinutes:e,cancel:t,run:n}){let o=()=>void t("SIGINT received"),r=()=>void t("SIGTERM received");mE(),process.once("SIGINT",o),process.once("SIGTERM",r);let i;e!==void 0&&e>0&&(i=setTimeout(()=>void t(`Timeout of ${e} minute(s) reached`),e*60*1e3));try{return await n()}finally{process.off("SIGINT",o),process.off("SIGTERM",r),clearTimeout(i);}}var tS=class{constructor(t){this.params=t;}runQueue={};runResults=[];cancelledRunsById=new Map;cancelled=false;cancellationReason;async cancel(t,n=true){if(this.cancelled)return;this.cancelled=true,this.cancellationReason=t;for(let r of Object.values(this.runQueue))r.done||r.abortController.abort();n&&await Ie(Promise.allSettled(Object.values(this.runQueue).map(r=>r.promise)),{milliseconds:oce}).catch(()=>{this.params.runGroupLogger.warn(`Graceful shutdown timeout of ${oce}ms reached while waiting for running tests to settle.`);});let o=new Set(this.runResults.map(r=>r.runId).filter(r=>!!r));for(let r of Object.values(this.runQueue)){if(r.done||o.has(r.activeRun.runId))continue;let{activeRun:i}=r,s={results:[],beforeResults:[],afterResults:[],test:i.testDefinition,filePath:i.testDefinition.relativeFilePath,startedAt:i.startedAt,lastAttemptStartedAt:i.startedAt,finishedAt:new Date,status:"CANCELLED",attempts:0,runId:i.runId,cancellationReason:t,quarantined:i.quarantined,quarantinedMetadata:i.quarantinedMetadata,parameters:{testInputs:i.inputs,envName:this.params.envName,urlOverride:this.params.urlOverride,customHeaders:this.params.customHeaders},outputs:{}};this.cancelledRunsById.set(i.runId,s);}}resolveNext(){if(this.params.next)return this.params.next;let t=[...this.params.testsToRun??[]];return ()=>Promise.resolve(t.shift())}async run(){let t=this.resolveNext(),{parallel:n,reporter:o,runGroupTracer:r,runGroupLogger:i,logger:s,project:a,client:l,generator:c,orgId:d,userId:u,devicePixelRatio:p,outputDir:m,retriesOverride:h,urlOverride:g,envName:f,customHeaders:y,regenerateGoldenFiles:S,gitMetadata:b,cacheOptions:E,browserTypeOverride:C,remoteBrowserOverride:w,onResult:I,onFatal:x}=this.params,v=0,P=true;for(;P;){let _=Object.values(this.runQueue);if(_.length===n&&await Promise.race(_.map(re=>re.promise)),this.cancelled){P=false;continue}let B=await t();if(B===void 0){P=false;continue}let D=`test-${v++}`,V={...B,startedAt:new Date},ne=new AbortController;this.runQueue[D]={done:false,activeRun:V,abortController:ne,promise:(async({inputs:re,quarantined:H,quarantinedMetadata:z,testDefinition:M,snapshot:K,runId:j})=>{let F=M.relativeFilePath.includes("..")?M.fullFilePath:M.relativeFilePath;o.onTestBegin(F);let J=i.child({testId:M.id,runId:j}),X=new kd({logger:J,reporter:new qd(l),runType:"test-run",runId:j,testMetadata:M,suiteMetadata:void 0,runner:"test-runner"});try{let ue=await tce({testDefinition:M,snapshot:K,project:a,testInputs:re,quarantined:H,quarantinedMetadata:z,orgId:d,userId:u,runId:j,devicePixelRatio:p,apiClient:l,runGroupTracer:r,outputDir:m,generator:c,retriesOverride:h,urlOverride:g,envName:f,customHeaders:y,regenerateGoldenFiles:S,logUpdate:(xe,Oe)=>o.onTestStatus(F,xe,Oe),...KZ(o,F),logger:J,gitMetadata:b,cacheOptions:E,usageTracker:X,browserTypeOverride:C,remoteBrowserOverride:w,recordVideo:this.params.recordVideo,abortSignal:ne.signal});o.onTestEnd(F,ue.status,{recovered:ue.status==="PASSED"&&!!ue.failureRecoveryDetails?.attempts}),this.runResults.push(ue),I?.(ue);}catch(ue){let xe=`Encountered unexpected fatal error when running test '${M.name}'`;J.error({err:ue},xe),R.error({err:ue},xe),zu(ue),x?.(ue),await this.cancel("Fatal error occurred",false);}finally{let ue=this.runQueue[D];ue&&(ue.done=true),await X.flush(s),delete this.runQueue[D];}})(V)};}return await Promise.allSettled(Object.values(this.runQueue).map(_=>_.promise)),{runResults:this.runResults,cancelledRunsById:this.cancelledRunsById,cancelled:this.cancelled,cancellationReason:this.cancellationReason}}};var M3e=200,N3e=new Set(Fj),L3e=new Set(["PASSED","FAILED","CANCELLED"]);function ice(e){return e.length}function mP(e){return e.filter(t=>N3e.has(t.status)).length}var hE=class{constructor(t,n){this.sink=t;this.runId=n;}reportCompletedSteps(t){this.sink.updateRun(this.runId,{completedSteps:t});}setStatus(t){this.sink.updateRun(this.runId,{status:t});}},pP=class{constructor(t,n,o){this.runGroupId=n;this.logger=o;this.filePath=Jn__default.join(t,BK);}filePath;runs=new Map;startedAt=new Date;runGroupStatus="RUNNING";lastWriteMs=0;registerRun(t){let n=new Date;return this.runs.set(t.runId,{runId:t.runId,testId:t.testId,testName:t.testName,directory:t.directory,status:"RUNNING",completedSteps:0,totalSteps:t.totalSteps,startedAt:n,updatedAt:n}),this.write(true),new hE(this,t.runId)}updateRun(t,n){let o=this.runs.get(t);o&&(n.completedSteps!==void 0&&(o.completedSteps=n.completedSteps,o.completedSteps>o.totalSteps&&(o.totalSteps=o.completedSteps)),n.status!==void 0&&(o.status=n.status),o.updatedAt=new Date,this.write(n.status!==void 0));}finish(t){this.runGroupStatus=t,this.write(true);}write(t){let n=Date.now();if(!t&&n-this.lastWriteMs<M3e)return;this.lastWriteMs=n;let o=[...this.runs.values()],r={schemaVersion:UK,runGroupId:this.runGroupId,status:this.runGroupStatus,totalRuns:o.length,completedRuns:o.filter(s=>L3e.has(s.status)).length,completedSteps:o.reduce((s,a)=>s+a.completedSteps,0),totalSteps:o.reduce((s,a)=>s+a.totalSteps,0),startedAt:this.startedAt,updatedAt:new Date,runs:o},i=`${this.filePath}.tmp`;try{br__default.writeFileSync(i,JSON.stringify(r,null,2)),br__default.renameSync(i,this.filePath);}catch(s){this.logger.warn({err:s},"Failed to write run progress file");}}};function yH(e){return createHash("sha1").update(e).digest("hex")}var D3e=["tab","view","mode","step"],F3e=[/^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$/i,/^(?=.*\d)[A-Za-z0-9_-]{16,256}$/,/^\d{3,32}$/,/^[0-9A-HJKMNP-TV-Z]{26}$/];function B3e(e){return F3e.some(t=>t.test(e))}function sce(e,t={}){let n;try{n=new URL(e);}catch{return e}let o=new Set(t.queryAllowlist??D3e),i=n.pathname.split("/").map(c=>c.length>0&&B3e(c)?"{id}":c).join("/"),s=[],a=Array.from(n.searchParams.keys()).sort();for(let c of a){if(!o.has(c))continue;let d=n.searchParams.getAll(c).sort();for(let u of d)s.push(`${encodeURIComponent(c)}=${encodeURIComponent(u)}`);}let l=s.length>0?`?${s.join("&")}`:"";return `${n.protocol}//${n.host}${i}${l}`}var U3e=new Set(["id","name","role","type","href","for","placeholder","aria-label","data-testid"]),H3e=/^[A-Za-z0-9_-]{16,256}$|^:r[0-9a-z]{1,32}:$/,G3e=[/\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/gi,/\b[0-9a-f]{12,64}\b/gi,/\b[0-9A-HJKMNP-TV-Z]{26}\b/g,/\b\d{5,}\b/g,/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,16}\b/g],ace=new Set(["h1","h2","h3","h4","h5","h6"]),j3e=new Set(["input","select","textarea"]);function $3e(e){let t=e;for(let n of G3e)t=t.replace(n,"{id}");return t}function lce(e){return $3e(e).toLowerCase().replace(/\s+/g," ").trim().replace(/[.,:;!?]+$/u,"").replace(/\s*\d+\s*$/u,"").trim()}function V3e(e){let t=e.length;return t<=4?"txt:xs":t<=16?"txt:s":t<=64?"txt:m":t<=256?"txt:l":"txt:xl"}function z3e(e,t){return e==="href"?t.startsWith("#")?"href:hash":t.startsWith("/")?"href:rel":/^https?:\/\//.test(t)?"href:abs":/^(mailto|tel):/.test(t)?`href:${t.split(":")[0]}`:"href:other":H3e.test(t)?"@gen":lce(t)}function cce(e,t,n){let o=e.tag.toLowerCase(),r=(e.role??e.attributes?.role)?.toLowerCase(),i=Math.min(Math.floor(t/4),6),s=`<${o}@${i}`;if(r!==void 0&&(s+=` role=${r}`),e.attributes!==void 0){let l=Object.keys(e.attributes).filter(c=>U3e.has(c.toLowerCase())).sort();for(let c of l){let d=c.toLowerCase();if(d==="role")continue;let u=e.attributes[c];if(u===void 0)continue;let p=z3e(d,u);s+=` ${d}=${p}`;}}n.tokens.push(s);let a=e.text?.trim();a!==void 0&&a.length>0&&(r==="button"||r==="link"||r==="heading"||o==="button"||o==="a"||o==="label"||ace.has(o)?n.tokens.push(`label=${lce(a)}`):n.tokens.push(V3e(a))),(o==="button"||r==="button")&&(n.counts.buttons+=1),(o==="a"||r==="link")&&(n.counts.links+=1),(j3e.has(o)||r==="textbox"||r==="combobox")&&(n.counts.formFields+=1),(ace.has(o)||r==="heading")&&(n.counts.headings+=1);for(let l of e.children??[])cce(l,t+1,n);}function dce(e){let t={tokens:[],counts:{buttons:0,links:0,formFields:0,headings:0}};return cce(e,0,t),{tokens:t.tokens,counts:t.counts}}function uce(e,t){let n=new TextEncoder().encode(e),o=n.length,r=Math.floor(o/4),i=t>>>0,s=3432918353,a=461845907;for(let u=0;u<r;u++){let p=u*4,m=n[p]|n[p+1]<<8|n[p+2]<<16|n[p+3]<<24;m=Math.imul(m,s),m=m<<15|m>>>17,m=Math.imul(m,a),i^=m,i=i<<13|i>>>19,i=Math.imul(i,5)+3864292196;}let l=0,c=o&3,d=r*4;return c===3&&(l^=n[d+2]<<16),c>=2&&(l^=n[d+1]<<8),c>=1&&(l^=n[d],l=Math.imul(l,s),l=l<<15|l>>>17,l=Math.imul(l,a),i^=l),i^=o,i^=i>>>16,i=Math.imul(i,2246822507),i^=i>>>13,i=Math.imul(i,3266489909),i^=i>>>16,i>>>0}var hP=128,W3e=4294967295,q3e=(()=>{let e=[];for(let t=0;t<hP;t++)e.push(uce(`perm:${t}`,0));return e})();function pce(e){let t=new Uint32Array(hP);for(let o=0;o<hP;o++)t[o]=W3e;let n=new Set(e);for(let o of n)for(let r=0;r<hP;r++){let i=uce(o,q3e[r]);i<t[r]&&(t[r]=i);}return t}var Y3e=32;function SH(e){let t=sce(e.url,{queryAllowlist:e.queryAllowlist}),{tokens:n,counts:o}=dce(e.dom),r=[`url:${t}`,`counts:buttons=${o.buttons}`,`counts:links=${o.links}`,`counts:formFields=${o.formFields}`,`counts:headings=${o.headings}`,...n],i=pce(r),s=Buffer.from(i.buffer,i.byteOffset,i.byteLength);return {fingerprintHash:createHash$1("sha256").update(s).digest("hex").slice(0,Y3e),minhash:Array.from(i),canonicalUrl:t}}var J3e=new Set([65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111]),Hn="\uFFFD",N;(function(e){e[e.EOF=-1]="EOF",e[e.NULL=0]="NULL",e[e.TABULATION=9]="TABULATION",e[e.CARRIAGE_RETURN=13]="CARRIAGE_RETURN",e[e.LINE_FEED=10]="LINE_FEED",e[e.FORM_FEED=12]="FORM_FEED",e[e.SPACE=32]="SPACE",e[e.EXCLAMATION_MARK=33]="EXCLAMATION_MARK",e[e.QUOTATION_MARK=34]="QUOTATION_MARK",e[e.AMPERSAND=38]="AMPERSAND",e[e.APOSTROPHE=39]="APOSTROPHE",e[e.HYPHEN_MINUS=45]="HYPHEN_MINUS",e[e.SOLIDUS=47]="SOLIDUS",e[e.DIGIT_0=48]="DIGIT_0",e[e.DIGIT_9=57]="DIGIT_9",e[e.SEMICOLON=59]="SEMICOLON",e[e.LESS_THAN_SIGN=60]="LESS_THAN_SIGN",e[e.EQUALS_SIGN=61]="EQUALS_SIGN",e[e.GREATER_THAN_SIGN=62]="GREATER_THAN_SIGN",e[e.QUESTION_MARK=63]="QUESTION_MARK",e[e.LATIN_CAPITAL_A=65]="LATIN_CAPITAL_A",e[e.LATIN_CAPITAL_Z=90]="LATIN_CAPITAL_Z",e[e.RIGHT_SQUARE_BRACKET=93]="RIGHT_SQUARE_BRACKET",e[e.GRAVE_ACCENT=96]="GRAVE_ACCENT",e[e.LATIN_SMALL_A=97]="LATIN_SMALL_A",e[e.LATIN_SMALL_Z=122]="LATIN_SMALL_Z";})(N||(N={}));var Qi={DASH_DASH:"--",CDATA_START:"[CDATA[",DOCTYPE:"doctype",SCRIPT:"script",PUBLIC:"public",SYSTEM:"system"};function gP(e){return e>=55296&&e<=57343}function mce(e){return e>=56320&&e<=57343}function hce(e,t){return (e-55296)*1024+9216+t}function fP(e){return e!==32&&e!==10&&e!==13&&e!==9&&e!==12&&e>=1&&e<=31||e>=127&&e<=159}function yP(e){return e>=64976&&e<=65007||J3e.has(e)}var ce;(function(e){e.controlCharacterInInputStream="control-character-in-input-stream",e.noncharacterInInputStream="noncharacter-in-input-stream",e.surrogateInInputStream="surrogate-in-input-stream",e.nonVoidHtmlElementStartTagWithTrailingSolidus="non-void-html-element-start-tag-with-trailing-solidus",e.endTagWithAttributes="end-tag-with-attributes",e.endTagWithTrailingSolidus="end-tag-with-trailing-solidus",e.unexpectedSolidusInTag="unexpected-solidus-in-tag",e.unexpectedNullCharacter="unexpected-null-character",e.unexpectedQuestionMarkInsteadOfTagName="unexpected-question-mark-instead-of-tag-name",e.invalidFirstCharacterOfTagName="invalid-first-character-of-tag-name",e.unexpectedEqualsSignBeforeAttributeName="unexpected-equals-sign-before-attribute-name",e.missingEndTagName="missing-end-tag-name",e.unexpectedCharacterInAttributeName="unexpected-character-in-attribute-name",e.unknownNamedCharacterReference="unknown-named-character-reference",e.missingSemicolonAfterCharacterReference="missing-semicolon-after-character-reference",e.unexpectedCharacterAfterDoctypeSystemIdentifier="unexpected-character-after-doctype-system-identifier",e.unexpectedCharacterInUnquotedAttributeValue="unexpected-character-in-unquoted-attribute-value",e.eofBeforeTagName="eof-before-tag-name",e.eofInTag="eof-in-tag",e.missingAttributeValue="missing-attribute-value",e.missingWhitespaceBetweenAttributes="missing-whitespace-between-attributes",e.missingWhitespaceAfterDoctypePublicKeyword="missing-whitespace-after-doctype-public-keyword",e.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers="missing-whitespace-between-doctype-public-and-system-identifiers",e.missingWhitespaceAfterDoctypeSystemKeyword="missing-whitespace-after-doctype-system-keyword",e.missingQuoteBeforeDoctypePublicIdentifier="missing-quote-before-doctype-public-identifier",e.missingQuoteBeforeDoctypeSystemIdentifier="missing-quote-before-doctype-system-identifier",e.missingDoctypePublicIdentifier="missing-doctype-public-identifier",e.missingDoctypeSystemIdentifier="missing-doctype-system-identifier",e.abruptDoctypePublicIdentifier="abrupt-doctype-public-identifier",e.abruptDoctypeSystemIdentifier="abrupt-doctype-system-identifier",e.cdataInHtmlContent="cdata-in-html-content",e.incorrectlyOpenedComment="incorrectly-opened-comment",e.eofInScriptHtmlCommentLikeText="eof-in-script-html-comment-like-text",e.eofInDoctype="eof-in-doctype",e.nestedComment="nested-comment",e.abruptClosingOfEmptyComment="abrupt-closing-of-empty-comment",e.eofInComment="eof-in-comment",e.incorrectlyClosedComment="incorrectly-closed-comment",e.eofInCdata="eof-in-cdata",e.absenceOfDigitsInNumericCharacterReference="absence-of-digits-in-numeric-character-reference",e.nullCharacterReference="null-character-reference",e.surrogateCharacterReference="surrogate-character-reference",e.characterReferenceOutsideUnicodeRange="character-reference-outside-unicode-range",e.controlCharacterReference="control-character-reference",e.noncharacterCharacterReference="noncharacter-character-reference",e.missingWhitespaceBeforeDoctypeName="missing-whitespace-before-doctype-name",e.missingDoctypeName="missing-doctype-name",e.invalidCharacterSequenceAfterDoctypeName="invalid-character-sequence-after-doctype-name",e.duplicateAttribute="duplicate-attribute",e.nonConformingDoctype="non-conforming-doctype",e.missingDoctype="missing-doctype",e.misplacedDoctype="misplaced-doctype",e.endTagWithoutMatchingOpenElement="end-tag-without-matching-open-element",e.closingOfElementWithOpenChildElements="closing-of-element-with-open-child-elements",e.disallowedContentInNoscriptInHead="disallowed-content-in-noscript-in-head",e.openElementsLeftAfterEof="open-elements-left-after-eof",e.abandonedHeadElementChild="abandoned-head-element-child",e.misplacedStartTagForHeadElement="misplaced-start-tag-for-head-element",e.nestedNoscriptInHead="nested-noscript-in-head",e.eofInElementThatCanContainOnlyText="eof-in-element-that-can-contain-only-text";})(ce||(ce={}));var Q3e=65536,SP=class{constructor(t){this.handler=t,this.html="",this.pos=-1,this.lastGapPos=-2,this.gapStack=[],this.skipNextNewLine=false,this.lastChunkWritten=false,this.endOfChunkHit=false,this.bufferWaterline=Q3e,this.isEol=false,this.lineStartPos=0,this.droppedBufferSize=0,this.line=1,this.lastErrOffset=-1;}get col(){return this.pos-this.lineStartPos+ +(this.lastGapPos!==this.pos)}get offset(){return this.droppedBufferSize+this.pos}getError(t,n){let{line:o,col:r,offset:i}=this,s=r+n,a=i+n;return {code:t,startLine:o,endLine:o,startCol:s,endCol:s,startOffset:a,endOffset:a}}_err(t){this.handler.onParseError&&this.lastErrOffset!==this.offset&&(this.lastErrOffset=this.offset,this.handler.onParseError(this.getError(t,0)));}_addGap(){this.gapStack.push(this.lastGapPos),this.lastGapPos=this.pos;}_processSurrogate(t){if(this.pos!==this.html.length-1){let n=this.html.charCodeAt(this.pos+1);if(mce(n))return this.pos++,this._addGap(),hce(t,n)}else if(!this.lastChunkWritten)return this.endOfChunkHit=true,N.EOF;return this._err(ce.surrogateInInputStream),t}willDropParsedChunk(){return this.pos>this.bufferWaterline}dropParsedChunk(){this.willDropParsedChunk()&&(this.html=this.html.substring(this.pos),this.lineStartPos-=this.pos,this.droppedBufferSize+=this.pos,this.pos=0,this.lastGapPos=-2,this.gapStack.length=0);}write(t,n){this.html.length>0?this.html+=t:this.html=t,this.endOfChunkHit=false,this.lastChunkWritten=n;}insertHtmlAtCurrentPos(t){this.html=this.html.substring(0,this.pos+1)+t+this.html.substring(this.pos+1),this.endOfChunkHit=false;}startsWith(t,n){if(this.pos+t.length>this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,false;if(n)return this.html.startsWith(t,this.pos);for(let o=0;o<t.length;o++)if((this.html.charCodeAt(this.pos+o)|32)!==t.charCodeAt(o))return false;return true}peek(t){let n=this.pos+t;if(n>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,N.EOF;let o=this.html.charCodeAt(n);return o===N.CARRIAGE_RETURN?N.LINE_FEED:o}advance(){if(this.pos++,this.isEol&&(this.isEol=false,this.line++,this.lineStartPos=this.pos),this.pos>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,N.EOF;let t=this.html.charCodeAt(this.pos);return t===N.CARRIAGE_RETURN?(this.isEol=true,this.skipNextNewLine=true,N.LINE_FEED):t===N.LINE_FEED&&(this.isEol=true,this.skipNextNewLine)?(this.line--,this.skipNextNewLine=false,this._addGap(),this.advance()):(this.skipNextNewLine=false,gP(t)&&(t=this._processSurrogate(t)),this.handler.onParseError===null||t>31&&t<127||t===N.LINE_FEED||t===N.CARRIAGE_RETURN||t>159&&t<64976||this._checkForProblematicCharacters(t),t)}_checkForProblematicCharacters(t){fP(t)?this._err(ce.controlCharacterInInputStream):yP(t)&&this._err(ce.noncharacterInInputStream);}retreat(t){for(this.pos-=t;this.pos<this.lastGapPos;)this.lastGapPos=this.gapStack.pop(),this.pos--;this.isEol=false;}};var Kt;(function(e){e[e.CHARACTER=0]="CHARACTER",e[e.NULL_CHARACTER=1]="NULL_CHARACTER",e[e.WHITESPACE_CHARACTER=2]="WHITESPACE_CHARACTER",e[e.START_TAG=3]="START_TAG",e[e.END_TAG=4]="END_TAG",e[e.COMMENT=5]="COMMENT",e[e.DOCTYPE=6]="DOCTYPE",e[e.EOF=7]="EOF",e[e.HIBERNATION=8]="HIBERNATION";})(Kt||(Kt={}));function bP(e,t){for(let n=e.attrs.length-1;n>=0;n--)if(e.attrs[n].name===t)return e.attrs[n].value;return null}var e4e=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]);function gce(e){return e>=55296&&e<=57343||e>1114111?65533:e4e.get(e)??e}function fce(e){let t=atob(e),n=t.length&-2,o=new Uint16Array(n/2);for(let r=0,i=0;r<n;r+=2){let s=t.charCodeAt(r),a=t.charCodeAt(r+1);o[i++]=s|a<<8;}return o}var bH=fce("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IAAOA12J/c8iFvaxBhAAhOVGFjZGZnbG1vcHFzdHV4owOlA6kDsAO/A8IDxgPNA9ID8gP9AwEEFAQeBCAEJQRHAEphSAA7gNAA0EBjAHUAdABlADuAyQDJQIABYWl5ALYDuQO+A/Ihb24aYXIAYwA7gMoAykAtZG8AdAAWYXIAAOA12AjdcgBhAHYAZQA7gMgAyEDlIm1lbnQAoAgiAAFhcNYD2QNjAHIAEmF0AHkAUwLhAwAAAADpA20lYWxsU3F1YXJlAACg+yVlJ3J5U21hbGxTcXVhcmUAAKCrJQABZ3D2A/kDbwBuABhhZgAA4DXYPN3zImlsb26VY3UAAAFhaQYEDgRsAFSgdSppImxkZQAAoEIi7CNpYnJpdW0AoMwhAAFjaRgEGwRyAACgMCFtAACgcyphAJdjbQBsADuAywDLQAABaXApBC0E8yF0cwCgAyLvJG5lbnRpYWxFAKBHIYACY2Zpb3MAPQQ/BEMEXQRyBHkAJGRyAADgNdgJ3WwibGVkAFMCTAQAAAAAVARtJWFsbFNxdWFyZQAAoPwlZSdyeVNtYWxsU3F1YXJlAACgqiVwA2UEAABpBAAAAABtBGYAAOA12D3dwSFsbACgACLyI2llcnRyZgCgMSFjAPIAcQQABkpUYWJjZGZnb3JzdIgEiwSOBJMElwSkBKcEqwStBLIE5QTqBGMAeQADZDuAPgA+QO0hbWFkoJMD3GNyImV2ZQAeYYABZWl5AJ0EoASjBOQhaWwiYXIAYwAcYRNkbwB0ACBhcgAA4DXYCt0AoNkicABmAADgNdg+3eUiYXRlcgADRUZHTFNUvwTIBM8E1QTZBOAEcSJ1YWwATKBlIuUhc3MAoNsidSRsbEVxdWFsAACgZyJyI2VhdGVyAACgoirlIXNzAKB3IuwkYW50RXF1YWwAoH4qaSJsZGUAAKBzImMAcgAA4DXYotwAoGsiAARBYWNmaW9zdfkE/QQFBQgFCwUTBSIFKwVSIkRjeQAqZAABY3QBBQQFZQBrAMdiXmDpIXJjJGFyAACgDCFsJWJlcnRTcGFjZQAAoAsh8AEYBQAAGwVmAACgDSHpJXpvbnRhbExpbmUAoAAlAAFjdCYFKAXyABIF8iFvayZhbQBwAEQBMQU5BW8AdwBuAEgAdQBtAPAAAAFxInVhbAAAoE8iAAdFSk9hY2RmZ21ub3N0dVMFVgVZBVwFYwVtBXAFcwV6BZAFtgXFBckFzQVjAHkAFWTsIWlnMmFjAHkAAWRjAHUAdABlADuAzQDNQAABaXlnBWwFcgBjADuAzgDOQBhkbwB0ADBhcgAAoBEhcgBhAHYAZQA7gMwAzEAAoREhYXB/BYsFAAFjZ4MFhQVyACphaSNuYXJ5SQAAoEghbABpAGUA8wD6AvQBlQUAAKUFZaAsIgABZ3KaBZ4F8iFhbACgKyLzI2VjdGlvbgCgwiJpI3NpYmxlAAABQ1SsBbEFbyJtbWEAAKBjIGkibWVzAACgYiCAAWdwdAC8Bb8FwwVvAG4ALmFmAADgNdhA3WEAmWNjAHIAAKAQIWkibGRlAChh6wHSBQAA1QVjAHkABmRsADuAzwDPQIACY2Zvc3UA4QXpBe0F8gX9BQABaXnlBegFcgBjADRhGWRyAADgNdgN3XAAZgAA4DXYQd3jAfcFAAD7BXIAAOA12KXc8iFjeQhk6yFjeQRkgANISmFjZm9zAAwGDwYSBhUGHQYhBiYGYwB5ACVkYwB5AAxk8CFwYZpjAAFleRkGHAbkIWlsNmEaZHIAAOA12A7dcABmAADgNdhC3WMAcgAA4DXYptyABUpUYWNlZmxtb3N0AD0GQAZDBl4GawZkB2gHcAd0B80H2gdjAHkACWQ7gDwAPECAAmNtbnByAEwGTwZSBlUGWwb1IXRlOWHiIWRhm2NnAACg6ifsI2FjZXRyZgCgEiFyAACgniGAAWFleQBkBmcGagbyIW9uPWHkIWlsO2EbZAABZnNvBjQHdAAABUFDREZSVFVWYXKABp4GpAbGBssG3AYDByEHwQIqBwABbnKEBowGZyVsZUJyYWNrZXQAAKDoJ/Ihb3cAoZAhQlKTBpcGYQByAACg5CHpJGdodEFycm93AKDGIWUjaWxpbmcAAKAII28A9QGqBgAAsgZiJWxlQnJhY2tldAAAoOYnbgDUAbcGAAC+BmUkZVZlY3RvcgAAoGEp5SJjdG9yQqDDIWEAcgAAoFkpbCJvb3IAAKAKI2kiZ2h0AAABQVbSBtcGciJyb3cAAKCUIeUiY3RvcgCgTikAAWVy4AbwBmUAAKGjIkFW5gbrBnIicm93AACgpCHlImN0b3IAoFopaSNhbmdsZQBCorIi+wYAAAAA/wZhAHIAAKDPKXEidWFsAACgtCJwAIABRFRWAAoHEQcYB+8kd25WZWN0b3IAoFEpZSRlVmVjdG9yAACgYCnlImN0b3JCoL8hYQByAACgWCnlImN0b3JCoLwhYQByAACgUilpAGcAaAB0AGEAcgByAG8A9wDMAnMAAANFRkdMU1Q/B0cHTgdUB1gHXwfxJXVhbEdyZWF0ZXIAoNoidSRsbEVxdWFsAACgZiJyI2VhdGVyAACgdiLlIXNzAKChKuwkYW50RXF1YWwAoH0qaSJsZGUAAKByInIAAOA12A/dZaDYIuYjdGFycm93AKDaIWkiZG90AD9hgAFucHcAege1B7kHZwAAAkxSbHKCB5QHmwerB+UhZnQAAUFSiAeNB3Iicm93AACg9SfpJGdodEFycm93AKD3J+kkZ2h0QXJyb3cAoPYn5SFmdAABYXLcAqEHaQBnAGgAdABhAHIAcgBvAPcA5wJpAGcAaAB0AGEAcgByAG8A9wDuAmYAAOA12EPdZQByAAABTFK/B8YHZSRmdEFycm93AACgmSHpJGdodEFycm93AKCYIYABY2h0ANMH1QfXB/IAWgYAoLAh8iFva0FhAKBqIgAEYWNlZmlvc3XpB+wH7gf/BwMICQgOCBEIcAAAoAUpeQAcZAABZGzyB/kHaSR1bVNwYWNlAACgXyBsI2ludHJmAACgMyFyAADgNdgQ3e4jdXNQbHVzAKATInAAZgAA4DXYRN1jAPIA/gecY4AESmFjZWZvc3R1ACEIJAgoCDUIgQiFCDsKQApHCmMAeQAKZGMidXRlAENhgAFhZXkALggxCDQI8iFvbkdh5CFpbEVhHWSAAWdzdwA7CGEIfQjhInRpdmWAAU1UVgBECEwIWQhlJWRpdW1TcGFjZQAAoAsgaABpAAABY25SCFMIawBTAHAAYQBjAOUASwhlAHIAeQBUAGgAaQDuAFQI9CFlZAABR0xnCHUIcgBlAGEAdABlAHIARwByAGUAYQB0AGUA8gDrBGUAcwBzAEwAZQBzAPMA2wdMImluZQAKYHIAAOA12BHdAAJCbnB0jAiRCJkInAhyImVhawAAoGAgwiZyZWFraW5nU3BhY2WgYGYAAKAVIUOq7CqzCMIIzQgAAOcIGwkAAAAAAAAtCQAAbwkAAIcJAACdCcAJGQoAADQKAAFvdbYIvAjuI2dydWVudACgYiJwIkNhcAAAoG0ibyh1YmxlVmVydGljYWxCYXIAAKAmIoABbHF4ANII1wjhCOUibWVudACgCSL1IWFsVKBgImkibGRlAADgQiI4A2kic3RzAACgBCJyI2VhdGVyAACjbyJFRkdMU1T1CPoIAgkJCQ0JFQlxInVhbAAAoHEidSRsbEVxdWFsAADgZyI4A3IjZWF0ZXIAAOBrIjgD5SFzcwCgeSLsJGFudEVxdWFsAOB+KjgDaSJsZGUAAKB1IvUhbXBEASAJJwnvI3duSHVtcADgTiI4A3EidWFsAADgTyI4A2UAAAFmczEJRgn0JFRyaWFuZ2xlQqLqIj0JAAAAAEIJYQByAADgzyk4A3EidWFsAACg7CJzAICibiJFR0xTVABRCVYJXAlhCWkJcSJ1YWwAAKBwInIjZWF0ZXIAAKB4IuUhc3MA4GoiOAPsJGFudEVxdWFsAOB9KjgDaSJsZGUAAKB0IuUic3RlZAABR0x1CX8J8iZlYXRlckdyZWF0ZXIA4KIqOAPlI3NzTGVzcwDgoSo4A/IjZWNlZGVzAKGAIkVTjwmVCXEidWFsAADgryo4A+wkYW50RXF1YWwAoOAiAAFlaaAJqQl2JmVyc2VFbGVtZW50AACgDCLnJWh0VHJpYW5nbGVCousitgkAAAAAuwlhAHIAAODQKTgDcSJ1YWwAAKDtIgABcXXDCeAJdSNhcmVTdQAAAWJwywnVCfMhZXRF4I8iOANxInVhbAAAoOIi5SJyc2V0ReCQIjgDcSJ1YWwAAKDjIoABYmNwAOYJ8AkNCvMhZXRF4IIi0iBxInVhbAAAoIgi4yJlZWRzgKGBIkVTVAD6CQAKBwpxInVhbAAA4LAqOAPsJGFudEVxdWFsAKDhImkibGRlAADgfyI4A+UicnNldEXggyLSIHEidWFsAACgiSJpImxkZQCAoUEiRUZUACIKJwouCnEidWFsAACgRCJ1JGxsRXF1YWwAAKBHImkibGRlAACgSSJlJXJ0aWNhbEJhcgAAoCQiYwByAADgNdip3GkAbABkAGUAO4DRANFAnWMAB0VhY2RmZ21vcHJzdHV2XgphCmgKcgp2CnoKgQqRCpYKqwqtCrsKyArNCuwhaWdSYWMAdQB0AGUAO4DTANNAAAFpeWwKcQpyAGMAO4DUANRAHmRiImxhYwBQYXIAAOA12BLdcgBhAHYAZQA7gNIA0kCAAWFlaQCHCooKjQpjAHIATGFnAGEAqWNjInJvbgCfY3AAZgAA4DXYRt3lI25DdXJseQABRFGeCqYKbyV1YmxlUXVvdGUAAKAcIHUib3RlAACgGCAAoFQqAAFjbLEKtQpyAADgNdiq3GEAcwBoADuA2ADYQGkAbAHACsUKZABlADuA1QDVQGUAcwAAoDcqbQBsADuA1gDWQGUAcgAAAUJQ0wrmCgABYXLXCtoKcgAAoD4gYQBjAAABZWvgCuIKAKDeI2UAdAAAoLQjYSVyZW50aGVzaXMAAKDcI4AEYWNmaGlsb3JzAP0KAwsFCwkLCwsMCxELIwtaC3IjdGlhbEQAAKACInkAH2RyAADgNdgT3WkApmOgY/Ujc01pbnVzsWAAAWlwFQsgC24AYwBhAHIAZQBwAGwAYQBuAOUACgVmAACgGSGAobsqZWlvACoLRQtJC+MiZWRlc4CheiJFU1QANAs5C0ALcSJ1YWwAAKCvKuwkYW50RXF1YWwAoHwiaSJsZGUAAKB+Im0AZQAAoDMgAAFkcE0LUQv1IWN0AKAPIm8jcnRpb24AYaA3ImwAAKAdIgABY2leC2ILcgAA4DXYq9yoYwACVWZvc2oLbwtzC3cLTwBUADuAIgAiQHIAAOA12BTdcABmAACgGiFjAHIAAOA12KzcAAZCRWFjZWZoaW9yc3WPC5MLlwupC7YL2AvbC90LhQyTDJoMowzhIXJyAKAQKUcAO4CuAK5AgAFjbnIAnQugC6ML9SF0ZVRhZwAAoOsncgB0oKAhbAAAoBYpgAFhZXkArwuyC7UL8iFvblhh5CFpbFZhIGR2oBwhZSJyc2UAAAFFVb8LzwsAAWxxwwvIC+UibWVudACgCyL1JGlsaWJyaXVtAKDLIXAmRXF1aWxpYnJpdW0AAKBvKXIAAKAcIW8AoWPnIWh0AARBQ0RGVFVWYewLCgwQDDIMNwxeDHwM9gIAAW5y8Av4C2clbGVCcmFja2V0AACg6SfyIW93AKGSIUJM/wsDDGEAcgAAoOUhZSRmdEFycm93AACgxCFlI2lsaW5nAACgCSNvAPUBFgwAAB4MYiVsZUJyYWNrZXQAAKDnJ24A1AEjDAAAKgxlJGVWZWN0b3IAAKBdKeUiY3RvckKgwiFhAHIAAKBVKWwib29yAACgCyMAAWVyOwxLDGUAAKGiIkFWQQxGDHIicm93AACgpiHlImN0b3IAoFspaSNhbmdsZQBCorMiVgwAAAAAWgxhAHIAAKDQKXEidWFsAACgtSJwAIABRFRWAGUMbAxzDO8kd25WZWN0b3IAoE8pZSRlVmVjdG9yAACgXCnlImN0b3JCoL4hYQByAACgVCnlImN0b3JCoMAhYQByAACgUykAAXB1iQyMDGYAAKAdIe4kZEltcGxpZXMAoHAp6SRnaHRhcnJvdwCg2yEAAWNongyhDHIAAKAbIQCgsSHsJGVEZWxheWVkAKD0KYAGSE9hY2ZoaW1vcXN0dQC/DMgMzAzQDOIM5gwKDQ0NFA0ZDU8NVA1YDQABQ2PDDMYMyCFjeSlkeQAoZEYiVGN5ACxkYyJ1dGUAWmEAorwqYWVpedgM2wzeDOEM8iFvbmBh5CFpbF5hcgBjAFxhIWRyAADgNdgW3e8hcnQAAkRMUlXvDPYM/QwEDW8kd25BcnJvdwAAoJMhZSRmdEFycm93AACgkCHpJGdodEFycm93AKCSIXAjQXJyb3cAAKCRIechbWGjY+EkbGxDaXJjbGUAoBgicABmAADgNdhK3XICHw0AAAAAIg10AACgGiLhIXJlgKGhJUlTVQAqDTINSg3uJXRlcnNlY3Rpb24AoJMidQAAAWJwNw1ADfMhZXRFoI8icSJ1YWwAAKCRIuUicnNldEWgkCJxInVhbAAAoJIibiJpb24AAKCUImMAcgAA4DXYrtxhAHIAAKDGIgACYmNtcF8Nag2ODZANc6DQImUAdABFoNAicSJ1YWwAAKCGIgABY2huDYkNZSJlZHMAgKF7IkVTVAB4DX0NhA1xInVhbAAAoLAq7CRhbnRFcXVhbACgfSJpImxkZQAAoH8iVABoAGEA9ADHCwCgESIAodEiZXOVDZ8NciJzZXQARaCDInEidWFsAACghyJlAHQAAKDRIoAFSFJTYWNmaGlvcnMAtQ27Db8NyA3ODdsN3w3+DRgOHQ4jDk8AUgBOADuA3gDeQMEhREUAoCIhAAFIY8MNxg1jAHkAC2R5ACZkAAFidcwNzQ0JYKRjgAFhZXkA1A3XDdoN8iFvbmRh5CFpbGJhImRyAADgNdgX3QABZWnjDe4N8gHoDQAA7Q3lImZvcmUAoDQiYQCYYwABY27yDfkNayNTcGFjZQAA4F8gCiDTInBhY2UAoAkg7CFkZYChPCJFRlQABw4MDhMOcSJ1YWwAAKBDInUkbGxFcXVhbAAAoEUiaSJsZGUAAKBIInAAZgAA4DXYS93pI3BsZURvdACg2yAAAWN0Jw4rDnIAAOA12K/c8iFva2Zh4QpFDlYOYA5qDgAAbg5yDgAAAAAAAAAAAAB5DnwOqA6zDgAADg8RDxYPGg8AAWNySA5ODnUAdABlADuA2gDaQHIAb6CfIeMhaXIAoEkpcgDjAVsOAABdDnkADmR2AGUAbGEAAWl5Yw5oDnIAYwA7gNsA20AjZGIibGFjAHBhcgAA4DXYGN1yAGEAdgBlADuA2QDZQOEhY3JqYQABZGl/Dp8OZQByAAABQlCFDpcOAAFhcokOiw5yAF9gYQBjAAABZWuRDpMOAKDfI2UAdAAAoLUjYSVyZW50aGVzaXMAAKDdI28AbgBQoMMi7CF1cwCgjiIAAWdwqw6uDm8AbgByYWYAAOA12EzdAARBREVUYWRwc78O0g7ZDuEOBQPqDvMOBw9yInJvdwDCoZEhyA4AAMwOYQByAACgEilvJHduQXJyb3cAAKDFIW8kd25BcnJvdwAAoJUhcSV1aWxpYnJpdW0AAKBuKWUAZQBBoKUiciJyb3cAAKClIW8AdwBuAGEAcgByAG8A9wAQA2UAcgAAAUxS+Q4AD2UkZnRBcnJvdwAAoJYh6SRnaHRBcnJvdwCglyFpAGyg0gNvAG4ApWPpIW5nbmFjAHIAAOA12LDcaSJsZGUAaGFtAGwAO4DcANxAgAREYmNkZWZvc3YALQ8xDzUPNw89D3IPdg97D4AP4SFzaACgqyJhAHIAAKDrKnkAEmThIXNobKCpIgCg5ioAAWVyQQ9DDwCgwSKAAWJ0eQBJD00Paw9hAHIAAKAWIGmgFiDjIWFsAAJCTFNUWA9cD18PZg9hAHIAAKAjIukhbmV8YGUkcGFyYXRvcgAAoFgnaSJsZGUAAKBAItQkaGluU3BhY2UAoAogcgAA4DXYGd1wAGYAAOA12E3dYwByAADgNdix3GQiYXNoAACgqiKAAmNlZm9zAI4PkQ+VD5kPng/pIXJjdGHkIWdlAKDAInIAAOA12BrdcABmAADgNdhO3WMAcgAA4DXYstwAAmZpb3OqD64Prw+0D3IAAOA12BvdnmNwAGYAAOA12E/dYwByAADgNdiz3IAEQUlVYWNmb3N1AMgPyw/OD9EP2A/gD+QP6Q/uD2MAeQAvZGMAeQAHZGMAeQAuZGMAdQB0AGUAO4DdAN1AAAFpedwP3w9yAGMAdmErZHIAAOA12BzdcABmAADgNdhQ3WMAcgAA4DXYtNxtAGwAeGEABEhhY2RlZm9z/g8BEAUQDRAQEB0QIBAkEGMAeQAWZGMidXRlAHlhAAFheQkQDBDyIW9ufWEXZG8AdAB7YfIBFRAAABwQbwBXAGkAZAB0AOgAVAhhAJZjcgAAoCghcABmAACgJCFjAHIAAOA12LXc4QtCEEkQTRAAAGcQbRByEAAAAAAAAAAAeRCKEJcQ8hD9EAAAGxEhETIROREAAD4RYwB1AHQAZQA7gOEA4UByImV2ZQADYYCiPiJFZGl1eQBWEFkQWxBgEGUQAOA+IjMDAKA/InIAYwA7gOIA4kB0AGUAO4C0ALRAMGRsAGkAZwA7gOYA5kByoGEgAOA12B7dcgBhAHYAZQA7gOAA4EAAAWVwfBCGEAABZnCAEIQQ8yF5bQCgNSHoAIMQaABhALFjAAFhcI0QWwAAAWNskRCTEHIAAWFnAACgPypkApwQAAAAALEQAKInImFkc3ajEKcQqRCuEG4AZAAAoFUqAKBcKmwib3BlAACgWCoAoFoqAKMgImVsbXJzersQvRDAEN0Q5RDtEACgpCllAACgICJzAGQAYaAhImEEzhDQENIQ1BDWENgQ2hDcEACgqCkAoKkpAKCqKQCgqykAoKwpAKCtKQCgrikAoK8pdAB2oB8iYgBkoL4iAKCdKQABcHTpEOwQaAAAoCIixWDhIXJyAKB8IwABZ3D1EPgQbwBuAAVhZgAA4DXYUt0Ao0giRWFlaW9wBxEJEQ0RDxESERQRAKBwKuMhaXIAoG8qAKBKImQAAKBLInMAJ2DyIW94ZaBIIvEADhFpAG4AZwA7gOUA5UCAAWN0eQAmESoRKxFyAADgNdi23CpgbQBwAGWgSCLxAPgBaQBsAGQAZQA7gOMA40BtAGwAO4DkAORAAAFjaUERRxFvAG4AaQBuAPQA6AFuAHQAAKARKgAITmFiY2RlZmlrbG5vcHJzdWQRaBGXEZ8RpxGrEdIR1hErEjASexKKEn0RThNbE3oTbwB0AACg7SoAAWNybBGJEWsAAAJjZXBzdBF4EX0RghHvIW5nAKBMInAjc2lsb24A9mNyImltZQAAoDUgaQBtAGWgPSJxAACgzSJ2AY0RkRFlAGUAAKC9ImUAZABnoAUjZQAAoAUjcgBrAHSgtSPiIXJrAKC2IwABb3mjEaYRbgDnAHcRMWTxIXVvAKAeIIACY21wcnQAtBG5Eb4RwRHFEeEhdXPloDUi5ABwInR5dgAAoLApcwDpAH0RbgBvAPUA6gCAAWFodwDLEcwRzhGyYwCgNiHlIWVuAKBsInIAAOA12B/dZwCAA2Nvc3R1dncA4xHyEQUSEhIhEiYSKRKAAWFpdQDpEesR7xHwAKMFcgBjAACg7yVwAACgwyKAAWRwdAD4EfwRABJvAHQAAKAAKuwhdXMAoAEqaSJtZXMAAKACKnECCxIAAAAADxLjIXVwAKAGKmEAcgAAoAUm8iNpYW5nbGUAAWR1GhIeEu8hd24AoL0lcAAAoLMlcCJsdXMAAKAEKmUA5QBCD+UAkg9hInJvdwAAoA0pgAFha28ANhJoEncSAAFjbjoSZRJrAIABbHN0AEESRxJNEm8jemVuZ2UAAKDrKXEAdQBhAHIA5QBcBPIjaWFuZ2xlgKG0JWRscgBYElwSYBLvIXduAKC+JeUhZnQAoMIlaSJnaHQAAKC4JWsAAKAjJLEBbRIAAHUSsgFxEgAAcxIAoJIlAKCRJTQAAKCTJWMAawAAoIglAAFlb38ShxJx4D0A5SD1IWl2AOBhIuUgdAAAoBAjAAJwdHd4kRKVEpsSnxJmAADgNdhT3XSgpSJvAG0AAKClIvQhaWUAoMgiAAZESFVWYmRobXB0dXayEsES0RLgEvcS+xIKExoTHxMjEygTNxMAAkxSbHK5ErsSvRK/EgCgVyUAoFQlAKBWJQCgUyUAolAlRFVkdckSyxLNEs8SAKBmJQCgaSUAoGQlAKBnJQACTFJsctgS2hLcEt4SAKBdJQCgWiUAoFwlAKBZJQCjUSVITFJobHLrEu0S7xLxEvMS9RIAoGwlAKBjJQCgYCUAoGslAKBiJQCgXyVvAHgAAKDJKQACTFJscgITBBMGEwgTAKBVJQCgUiUAoBAlAKAMJQCiACVEVWR1EhMUExYTGBMAoGUlAKBoJQCgLCUAoDQlaSJudXMAAKCfIuwhdXMAoJ4iaSJtZXMAAKCgIgACTFJsci8TMRMzEzUTAKBbJQCgWCUAoBglAKAUJQCjAiVITFJobHJCE0QTRhNIE0oTTBMAoGolAKBhJQCgXiUAoDwlAKAkJQCgHCUAAWV2UhNVE3YA5QD5AGIAYQByADuApgCmQAACY2Vpb2ITZhNqE24TcgAA4DXYt9xtAGkAAKBPIG0A5aA9IogRbAAAoVwAYmh0E3YTAKDFKfMhdWIAoMgnbAF+E4QTbABloCIgdAAAoCIgcAAAoU4iRWWJE4sTAKCuKvGgTyI8BeEMqRMAAN8TABQDFB8UAAAjFDQUAAAAAIUUAAAAAI0UAAAAANcU4xT3FPsUAACIFQAAlhWAAWNwcgCuE7ET1RP1IXRlB2GAoikiYWJjZHMAuxO/E8QTzhPSE24AZAAAoEQqciJjdXAAAKBJKgABYXXIE8sTcAAAoEsqcAAAoEcqbwB0AACgQCoA4CkiAP4AAWVv2RPcE3QAAKBBIO4ABAUAAmFlaXXlE+8T9RP4E/AB6hMAAO0TcwAAoE0qbwBuAA1hZABpAGwAO4DnAOdAcgBjAAlhcABzAHOgTCptAACgUCpvAHQAC2GAAWRtbgAIFA0UEhRpAGwAO4C4ALhAcCJ0eXYAAKCyKXQAAIGiADtlGBQZFKJAcgBkAG8A9ABiAXIAAOA12CDdgAFjZWkAKBQqFDIUeQBHZGMAawBtoBMn4SFyawCgEyfHY3IAAKPLJUVjZWZtcz8UQRRHFHcUfBSAFACgwykAocYCZWxGFEkUcQAAoFciZQBhAlAUAAAAAGAUciJyb3cAAAFsclYUWhTlIWZ0AKC6IWkiZ2h0AACguyGAAlJTYWNkAGgUaRRrFG8UcxSuYACgyCRzAHQAAKCbIukhcmMAoJoi4SFzaACgnSJuImludAAAoBAqaQBkAACg7yrjIWlyAKDCKfUhYnN1oGMmaQB0AACgYybsApMUmhS2FAAAwxRvAG4AZaA6APGgVCKrAG0CnxQAAAAAoxRhAHSgLABAYAChASJmbKcUqRTuABMNZQAAAW14rhSyFOUhbnQAoAEiZQDzANIB5wG6FAAAwBRkoEUibwB0AACgbSpuAPQAzAGAAWZyeQDIFMsUzhQA4DXYVN1vAOQA1wEAgakAO3MeAdMUcgAAoBchAAFhb9oU3hRyAHIAAKC1IXMAcwAAoBcnAAFjdeYU6hRyAADgNdi43AABYnDuFPIUZaDPKgCg0SploNAqAKDSKuQhb3QAoO8igANkZWxwcnZ3AAYVEBUbFSEVRBVlFYQV4SFycgABbHIMFQ4VAKA4KQCgNSlwAhYVAAAAABkVcgAAoN4iYwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWlsN2E6ZHIAAOA12CjdciJlZW4AOGFjAHkARWRjAHkAXGRwAGYAAOA12FzdYwByAADgNdjA3IALQUJFSGFiY2RlZmdoamxtbm9wcnN0dXYAXhxtHHEcdRx5HN8cBx0dHTwd3B3tHfEdAR4EHh0eLB5FHrwewx7hHgkfPR9LH4ABYXJ0AGQcZxxpHHIA8gBvB/IAxQLhIWlsAKAbKeEhcnIAoA4pZ6BmIgCgiyphAHIAAKBiKWMJjRwAAJAcAACVHAAAAAAAAAAAAACZHJwcAACmHKgcrRwAANIc9SF0ZTph7SJwdHl2AKC0KXIAYQDuAFoG4iFkYbtjZwAAoegnZGyhHKMcAKCRKeUAiwYAoIUqdQBvADuAqwCrQHIAgKOQIWJmaGxwc3QAuhy/HMIcxBzHHMoczhxmoOQhcwAAoB8pcwAAoB0p6wCyGnAAAKCrIWwAAKA5KWkAbQAAoHMpbAAAoKIhAKGrKmFl1hzaHGkAbAAAoBkpc6CtKgDgrSoA/oABYWJyAOUc6RztHHIAcgAAoAwpcgBrAACgcicAAWFr8Rz4HGMAAAFla/Yc9xx7YFtgAAFlc/wc/hwAoIspbAAAAWR1Ax0FHQCgjykAoI0pAAJhZXV5Dh0RHRodHB3yIW9uPmEAAWRpFR0YHWkAbAA8YewAowbiAPccO2QAAmNxcnMkHScdLB05HWEAAKA2KXUAbwDyoBwgqhEAAWR1MB00HeghYXIAoGcpcyJoYXIAAKBLKWgAAKCyIQCiZCJmZ3FzRB1FB5Qdnh10AIACYWhscnQATh1WHWUdbB2NHXIicm93AHSgkCFhAOkAzxxhI3Jwb29uAAABZHVeHWId7yF3bgCgvSFwAACgvCHlJGZ0YXJyb3dzAKDHIWkiZ2h0AIABYWhzAHUdex2DHXIicm93APOglCGdBmEAcgBwAG8AbwBuAPMAzgtxAHUAaQBnAGEAcgByAG8A9wBlGugkcmVldGltZXMAoMsi8aFkIk0HAACaHWwAYQBuAPQAXgcAon0qY2Rnc6YdqR2xHbcdYwAAoKgqbwB0AG+gfypyoIEqAKCDKmXg2iIA/nMAAKCTKoACYWRlZ3MAwB3GHcod1h3ZHXAAcAByAG8A+ACmHG8AdAAAoNYicQAAAWdxzx3SHXQA8gBGB2cAdADyAHQcdADyAFMHaQDtAGMHgAFpbHIA4h3mHeod8yFodACgfClvAG8A8gDKBgDgNdgp3UWgdiIAoJEqYQH1Hf4dcgAAAWR1YB35HWygvCEAoGopbABrAACghCVjAHkAWWQAomoiYWNodAweDx4VHhkecgDyAGsdbwByAG4AZQDyAGAW4SFyZACgaylyAGkAAKD6JQABaW8hHiQe5CFvdEBh9SFzdGGgsCPjIWhlAKCwIwACRWFlczMeNR48HkEeAKBoInAAcKCJKvIhb3gAoIkqcaCHKvGghyo0HmkAbQAAoOYiAARhYm5vcHR3elIeXB5fHoUelh6mHqsetB4AAW5yVh5ZHmcAAKDsJ3IAAKD9IXIA6wCwBmcAgAFsbXIAZh52Hnse5SFmdAABYXKIB2weaQBnAGgAdABhAHIAcgBvAPcAkwfhInBzdG8AoPwnaQBnAGgAdABhAHIAcgBvAPcAmgdwI2Fycm93AAABbHKNHpEeZQBmAPQAxhxpImdodAAAoKwhgAFhZmwAnB6fHqIecgAAoIUpAOA12F3ddQBzAACgLSppIm1lcwAAoDQqYQGvHrMecwB0AACgFyLhAIoOZaHKJbkeRhLuIWdlAKDKJWEAcgBsoCgAdAAAoJMpgAJhY2htdADMHs8e1R7bHt0ecgDyAJ0GbwByAG4AZQDyANYWYQByAGSgyyEAoG0pAKAOIHIAaQAAoL8iAANhY2hpcXTrHu8e1QfzHv0eBh/xIXVvAKA5IHIAAOA12MHcbQDloXIi+h4AAPweAKCNKgCgjyoAAWJ19xwBH28AcqAYIACgGiDyIW9rQmEAhDwAO2NkaGlscXJCBhcfxh0gHyQfKB8sHzEfAAFjaRsfHR8AoKYqcgAAoHkqcgBlAOUAkx3tIWVzAKDJIuEhcnIAoHYpdSJlc3QAAKB7KgABUGk1HzkfYQByAACglillocMlAgdfEnIAAAFkdUIfRx9zImhhcgAAoEop6CFhcgCgZikAAWVuTx9WH3IjdG5lcXEAAOBoIgD+xQBUHwAHRGFjZGVmaGlsbm9wc3VuH3Ifoh+rH68ftx+7H74f5h/uH/MfBwj/HwsgxCFvdACgOiIAAmNscHJ5H30fiR+eH3IAO4CvAK9AAAFldIEfgx8AoEImZaAgJ3MAZQAAoCAnc6CmIXQAbwCAoaYhZGx1AJQfmB+cH28AdwDuAHkDZQBmAPQA6gbwAOkO6yFlcgCgriUAAW95ph+qH+0hbWEAoCkqPGThIXNoAKAUIOElc3VyZWRhbmdsZQCgISJyAADgNdgq3W8AAKAnIYABY2RuAMQfyR/bH3IAbwA7gLUAtUBhoiMi0B8AANMf1x9zAPQAKxFpAHIAAKDwKm8AdAA7gLcAt0B1AHMA4qESIh4TAADjH3WgOCIAoCoqYwHqH+0fcAAAoNsq8gB+GnAAbAB1APMACAgAAWRw9x/7H+UhbHMAoKciZgAA4DXYXt0AAWN0AyAHIHIAAOA12MLc8CFvcwCgPiJsobwDECAVIPQiaW1hcACguCJhAPAAEyAADEdMUlZhYmNkZWZnaGlqbG1vcHJzdHV2dzwgRyBmIG0geSCqILgg2iDeIBEhFSEyIUMhTSFQIZwhnyHSIQAiIyKLIrEivyIUIwABZ3RAIEMgAODZIjgD9uBrItIgBwmAAWVsdABNIF8gYiBmAHQAAAFhclMgWCByInJvdwAAoM0h6SRnaHRhcnJvdwCgziEA4NgiOAP24Goi0iBfCekkZ2h0YXJyb3cAoM8hAAFEZHEgdSDhIXNoAKCvIuEhc2gAoK4igAJiY25wdACCIIYgiSCNIKIgbABhAACgByL1IXRlRGFnAADgICLSIACiSSJFaW9wlSCYIJwgniAA4HAqOANkAADgSyI4A3MASWFyAG8A+AAyCnUAcgBhoG4mbADzoG4mmwjzAa8gAACzIHAAO4CgAKBAbQBwAOXgTiI4AyoJgAJhZW91eQDBIMogzSDWINkg8AHGIAAAyCAAoEMqbwBuAEhh5CFpbEZhbgBnAGSgRyJvAHQAAOBtKjgDcAAAoEIqPWThIXNoAKATIACjYCJBYWRxc3jpIO0g+SD+IAIhDCFyAHIAAKDXIXIAAAFocvIg9SBrAACgJClvoJch9wAGD28AdAAA4FAiOAN1AGkA9gC7CAABZWkGIQohYQByAACgKCntAN8I6SFzdPOgBCLlCHIAAOA12CvdAAJFZXN0/wgcISshLiHxoXEiIiEAABMJ8aFxIgAJAAAnIWwAYQBuAPQAEwlpAO0AGQlyoG8iAKBvIoABQWFwADghOyE/IXIA8gBeIHIAcgAAoK4hYQByAACg8ipzogsiSiEAAAAAxwtkoPwiAKD6ImMAeQBaZIADQUVhZGVzdABcIV8hYiFmIWkhkyGWIXIA8gBXIADgZiI4A3IAcgAAoJohcgAAoCUggKFwImZxcwBwIYQhjiF0AAABYXJ1IXohcgByAG8A9wBlIWkAZwBoAHQAYQByAHIAbwD3AD4h8aFwImAhAACKIWwAYQBuAPQAZwlz4H0qOAMAoG4iaQDtAG0JcqBuImkA5aDqIkUJaQDkADoKAAFwdKMhpyFmAADgNdhf3YCBrAA7aW4AriGvIcchrEBuAIChCSJFZHYAtyG6Ib8hAOD5IjgDbwB0AADg9SI4A+EB1gjEIcYhAKD3IgCg9iJpAHagDCLhAagJzyHRIQCg/iIAoP0igAFhb3IA2CHsIfEhcgCAoSYiYXN0AOAh5SHpIWwAbABlAOwAywhsAADg/SrlIADgAiI4A2wiaW50AACgFCrjoYAi9yEAAPohdQDlAJsJY+CvKjgDZaCAIvEAkwkAAkFhaXQHIgoiFyIeInIA8gBsIHIAcgAAoZshY3cRIhQiAOAzKTgDAOCdITgDZyRodGFycm93AACgmyFyAGkA5aDrIr4JgANjaGltcHF1AC8iPCJHIpwhTSJQIloigKGBImNlcgA2Iv0JOSJ1AOUABgoA4DXYw9zvIXJ0bQKdIQAAAABEImEAcgDhAOEhbQBloEEi8aBEIiYKYQDyAMsIcwB1AAABYnBWIlgi5QDUCeUA3wmAAWJjcABgInMieCKAoYQiRWVzAGci7glqIgDgxSo4A2UAdABl4IIi0iBxAPGgiCJoImMAZaCBIvEA/gmAoYUiRWVzAH8iFgqCIgDgxio4A2UAdABl4IMi0iBxAPGgiSKAIgACZ2lscpIilCKaIpwi7AAMCWwAZABlADuA8QDxQOcAWwlpI2FuZ2xlAAABbHKkIqoi5SFmdGWg6iLxAEUJaSJnaHQAZaDrIvEAvgltoL0DAKEjAGVzuCK8InIAbwAAoBYhcAAAoAcggARESGFkZ2lscnMAziLSItYi2iLeIugi7SICIw8j4SFzaACgrSLhIXJyAKAEKXAAAOBNItIg4SFzaACgrCIAAWV04iLlIgDgZSLSIADgPgDSIG4iZmluAACg3imAAUFldADzIvci+iJyAHIAAKACKQDgZCLSIHLgPADSIGkAZQAA4LQi0iAAAUF0BiMKI3IAcgAAoAMp8iFpZQDgtSLSIGkAbQAA4Dwi0iCAAUFhbgAaIx4jKiNyAHIAAKDWIXIAAAFociMjJiNrAACgIylvoJYh9wD/DuUhYXIAoCcpUxJqFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVCMAAF4jaSN/I4IjjSOeI8AUAAAAAKYjwCMAANoj3yMAAO8jHiQvJD8kRCQAAWNzVyNsFHUAdABlADuA8wDzQAABaXlhI2cjcgBjoJoiO4D0APRAPmSAAmFiaW9zAHEjdCN3I3EBeiNzAOgAdhTsIWFjUWF2AACgOCrvIWxkAKC8KewhaWdTYQABY3KFI4kjaQByAACgvykA4DXYLN1vA5QjAAAAAJYjAACcI24A22JhAHYAZQA7gPIA8kAAoMEpAAFibaEjjAphAHIAAKC1KQACYWNpdKwjryO6I70jcgDyAFkUAAFpcrMjtiNyAACgvinvIXNzAKC7KW4A5QDZCgCgwCmAAWFlaQDFI8gjyyNjAHIATWFnAGEAyWOAAWNkbgDRI9Qj1iPyIW9uv2MAoLYpdQDzAHgBcABmAADgNdhg3YABYWVsAOQj5yPrI3IAAKC3KXIAcAAAoLkpdQDzAHwBAKMoImFkaW9zdvkj/CMPJBMkFiQbJHIA8gBeFIChXSplZm0AAyQJJAwkcgBvoDQhZgAAoDQhO4CqAKpAO4C6ALpA5yFvZgCgtiJyAACgVipsIm9wZQAAoFcqAKBbKoABY2xvACMkJSQrJPIACCRhAHMAaAA7gPgA+EBsAACgmCJpAGwBMyQ4JGQAZQA7gPUA9UBlAHMAYaCXInMAAKA2Km0AbAA7gPYA9kDiIWFyAKA9I+EKXiQAAHokAAB8JJQkAACYJKkkAAAAALUkEQsAAPAkAAAAAAQleiUAAIMlcgCAoSUiYXN0AGUkbyQBCwCBtgA7bGokayS2QGwAZQDsABgDaQJ1JAAAAAB4JG0AAKDzKgCg/Sp5AD9kcgCAAmNpbXB0AIUkiCSLJJkSjyRuAHQAJWBvAGQALmBpAGwAAKAwIOUhbmsAoDEgcgAA4DXYLd2AAWltbwCdJKAkpCR2oMYD1WNtAGEA9AD+B24AZQAAoA4m9KHAA64kAAC0JGMjaGZvcmsAAKDUItZjAAFhdbgkxCRuAAABY2u9JMIkawBooA8hAKAOIfYAaRpzAACkKwBhYmNkZW1zdNMkIRPXJNsk4STjJOck6yTjIWlyAKAjKmkAcgAAoCIqAAFvdYsW3yQAoCUqAKByKm4AO4CxALFAaQBtAACgJip3AG8AAKAnKoABaXB1APUk+iT+JO4idGludACgFSpmAADgNdhh3W4AZAA7gKMAo0CApHoiRWFjZWlub3N1ABMlFSUYJRslTCVRJVklSSV1JQCgsypwAACgtyp1AOUAPwtjoK8qgKJ6ImFjZW5zACclLSU0JTYlSSVwAHAAcgBvAPgAFyV1AHIAbAB5AGUA8QA/C/EAOAuAAWFlcwA8JUElRSXwInByb3gAoLkqcQBxAACgtSppAG0AAKDoImkA7QBEC20AZQDzoDIgIguAAUVhcwBDJVclRSXwAEAlgAFkZnAATwtfJXElgAFhbHMAZSVpJW0l7CFhcgCgLiPpIW5lAKASI/UhcmYAoBMjdKAdIu8AWQvyIWVsAKCwIgABY2l9JYElcgAA4DXYxdzIY24iY3NwAACgCCAAA2Zpb3BzdZElKxuVJZolnyWkJXIAAOA12C7dcABmAADgNdhi3XIiaW1lAACgVyBjAHIAAOA12MbcgAFhZW8AqiW6JcAldAAAAWVpryW2JXIAbgBpAG8AbgDzABkFbgB0AACgFipzAHQAZaA/APEACRj0AG0LgApBQkhhYmNkZWZoaWxtbm9wcnN0dXgA4yXyJfYl+iVpJpAmpia9JtUm5ib4JlonaCdxJ3UnnietJ7EnyCfiJ+cngAFhcnQA6SXsJe4lcgDyAJkM8gD6AuEhaWwAoBwpYQByAPIA3BVhAHIAAKBkKYADY2RlbnFydAAGJhAmEyYYJiYmKyZaJgABZXUKJg0mAOA9IjEDdABlAFVhaQDjACAN7SJwdHl2AKCzKWcAgKHpJ2RlbAAgJiImJCYAoJIpAKClKeUA9wt1AG8AO4C7ALtAcgAApZIhYWJjZmhscHN0dz0mQCZFJkcmSiZMJk4mUSZVJlgmcAAAoHUpZqDlIXMAAKAgKQCgMylzAACgHinrALka8ACVHmwAAKBFKWkAbQAAoHQpbAAAoKMhAKCdIQABYWleJmImaQBsAACgGilvAG6gNiJhAGwA8wB2C4ABYWJyAG8mciZ2JnIA8gAvEnIAawAAoHMnAAFha3omgSZjAAABZWt/JoAmfWBdYAABZXOFJocmAKCMKWwAAAFkdYwmjiYAoI4pAKCQKQACYWV1eZcmmiajJqUm8iFvbllhAAFkaZ4moSZpAGwAV2HsAA8M4gCAJkBkAAJjbHFzrSawJrUmuiZhAACgNylkImhhcgAAoGkpdQBvAPKgHSCjAWgAAKCzIYABYWNnAMMm0iaUC2wAgKEcIWlwcwDLJs4migxuAOUAoAxhAHIA9ADaC3QAAKCtJYABaWxyANsm3ybjJvMhaHQAoH0pbwBvAPIANgwA4DXYL90AAWFv6ib1JnIAAAFkde8m8SYAoMEhbKDAIQCgbCl2oMED8WOAAWducwD+Jk4nUCdoAHQAAANhaGxyc3QKJxInISc1Jz0nRydyInJvdwB0oJIhYQDpAFYmYSNycG9vbgAAAWR1GiceJ28AdwDuAPAmcAAAoMAh5SFmdAABYWgnJy0ncgByAG8AdwDzAAkMYQByAHAAbwBvAG4A8wATBGklZ2h0YXJyb3dzAACgySFxAHUAaQBnAGEAcgByAG8A9wBZJugkcmVldGltZXMAoMwiZwDaYmkAbgBnAGQAbwB0AHMAZQDxABwYgAFhaG0AYCdjJ2YncgDyAAkMYQDyABMEAKAPIG8idXN0AGGgsSPjIWhlAKCxI+0haWQAoO4qAAJhYnB0fCeGJ4knmScAAW5ygCeDJ2cAAKDtJ3IAAKD+IXIA6wAcDIABYWZsAI8nkieVJ3IAAKCGKQDgNdhj3XUAcwAAoC4qaSJtZXMAAKA1KgABYXCiJ6gncgBnoCkAdAAAoJQp7yJsaW50AKASKmEAcgDyADwnAAJhY2hxuCe8J6EMwCfxIXVvAKA6IHIAAOA12MfcAAFidYAmxCdvAPKgGSCoAYABaGlyAM4n0ifWJ3IAZQDlAE0n7SFlcwCgyiJpAIChuSVlZmwAXAxjEt4n9CFyaQCgzinsInVoYXIAoGgpAKAeIWENBSgJKA0oSyhVKIYoAACLKLAoAAAAAOMo5ygAABApJCkxKW0pcSmHKaYpAACYKgAAAACxKmMidXRlAFthcQB1AO8ABR+ApHsiRWFjZWlucHN5ABwoHignKCooLygyKEEoRihJKACgtCrwASMoAAAlKACguCpvAG4AYWF1AOUAgw1koLAqaQBsAF9hcgBjAF1hgAFFYXMAOCg6KD0oAKC2KnAAAKC6KmkAbQAAoOki7yJsaW50AKATKmkA7QCIDUFkbwB0AGKixSKRFgAAAABTKACgZiqAA0FhY21zdHgAYChkKG8ocyh1KHkogihyAHIAAKDYIXIAAAFocmkoayjrAJAab6CYIfcAzAd0ADuApwCnQGkAO2D3IWFyAKApKW0AAAFpbn4ozQBuAHUA8wDOAHQAAKA2J3IA7+A12DDdIxkAAmFjb3mRKJUonSisKHIAcAAAoG8mAAFoeZkonChjAHkASWRIZHIAdABtAqUoAAAAAKgoaQDkAFsPYQByAGEA7ABsJDuArQCtQAABZ22zKLsobQBhAAChwwNmdroouijCY4CjPCJkZWdsbnByAMgozCjPKNMo1yjaKN4obwB0AACgairxoEMiCw5FoJ4qAKCgKkWgnSoAoJ8qZQAAoEYi7CF1cwCgJCrhIXJyAKByKWEAcgDyAPwMAAJhZWl07Sj8KAEpCCkAAWxz8Sj4KGwAcwBlAHQAbQDpAH8oaABwAACgMyrwImFyc2wAoOQpAAFkbFoPBSllAACgIyNloKoqc6CsKgDgrCoA/oABZmxwABUpGCkfKfQhY3lMZGKgLwBhoMQpcgAAoD8jZgAA4DXYZN1hAAABZHIoKRcDZQBzAHWgYCZpAHQAAKBgJoABY3N1ADYpRilhKQABYXU6KUApcABzoJMiAOCTIgD+cABzoJQiAOCUIgD+dQAAAWJwSylWKQChjyJlcz4NUCllAHQAZaCPIvEAPw0AoZAiZXNIDVspZQB0AGWgkCLxAEkNAKGhJWFmZilbBHIAZQFrKVwEAKChJWEAcgDyAAMNAAJjZW10dyl7KX8pgilyAADgNdjI3HQAbQDuAM4AaQDsAAYpYQByAOYAVw0AAWFyiimOKXIA5qAGJhESAAFhbpIpoylpImdodAAAAWVwmSmgKXAAcwBpAGwAbwDuANkXaADpAKAkcwCvYIACYmNtbnAArin8KY4NJSooKgCkgiJFZGVtbnByc7wpvinCKcgpzCnUKdgp3CkAoMUqbwB0AACgvSpkoIYibwB0AACgwyr1IWx0AKDBKgABRWXQKdIpAKDLKgCgiiLsIXVzAKC/KuEhcnIAoHkpgAFlaXUA4inxKfQpdAAAoYIiZW7oKewpcQDxoIYivSllAHEA8aCKItEpbQAAoMcqAAFicPgp+ikAoNUqAKDTKmMAgKJ7ImFjZW5zAAcqDSoUKhYqRihwAHAAcgBvAPgAIyh1AHIAbAB5AGUA8QCDDfEAfA2AAWFlcwAcKiIqPShwAHAAcgBvAPgAPChxAPEAOShnAACgaiYApoMiMTIzRWRlaGxtbnBzPCo/KkIqRSpHKlIqWCpjKmcqaypzKncqO4C5ALlAO4CyALJAO4CzALNAAKDGKgABb3NLKk4qdAAAoL4qdQBiAACg2CpkoIcibwB0AACgxCpzAAABb3VdKmAqbAAAoMknYgAAoNcq4SFycgCgeyn1IWx0AKDCKgABRWVvKnEqAKDMKgCgiyLsIXVzAKDAKoABZWl1AH0qjCqPKnQAAKGDImVugyqHKnEA8aCHIkYqZQBxAPGgiyJwKm0AAKDIKgABYnCTKpUqAKDUKgCg1iqAAUFhbgCdKqEqrCpyAHIAAKDZIXIAAAFocqYqqCrrAJUab6CZIfcAxQf3IWFyAKAqKWwAaQBnADuA3wDfQOELzyrZKtwq6SrsKvEqAAD1KjQrAAAAAAAAAAAAAEwrbCsAAHErvSsAAAAAAADRK3IC1CoAAAAA2CrnIWV0AKAWI8RjcgDrAOUKgAFhZXkA4SrkKucq8iFvbmVh5CFpbGNhQmRvAPQAIg5sInJlYwAAoBUjcgAA4DXYMd0AAmVpa2/7KhIrKCsuK/IBACsAAAkrZQAAATRm6g0EK28AcgDlAOsNYQBzorgDECsAAAAAEit5AG0A0WMAAWNuFislK2sAAAFhcxsrIStwAHAAcgBvAPgAFw5pAG0AAKA8InMA8AD9DQABYXMsKyEr8AAXDnIAbgA7gP4A/kDsATgrOyswG2QA5QBnAmUAcwCAgdcAO2JkAEMrRCtJK9dAYaCgInIAAKAxKgCgMCqAAWVwcwBRK1MraSvhAAkh4qKkIlsrXysAAAAAYytvAHQAAKA2I2kAcgAAoPEqb+A12GXdcgBrAACg2irhAHgociJpbWUAAKA0IIABYWlwAHYreSu3K2QA5QC+DYADYWRlbXBzdACFK6MrmiunK6wrsCuzK24iZ2xlAACitSVkbHFykCuUK5ornCvvIXduAKC/JeUhZnRloMMl8QACBwCgXCJpImdodABloLkl8QBdDG8AdAAAoOwlaSJudXMAAKA6KuwhdXMAoDkqYgAAoM0p6SFtZQCgOyrlInppdW0AoOIjgAFjaHQAwivKK80rAAFyecYrySsA4DXYydxGZGMAeQBbZPIhb2tnYQABaW/UK9creAD0ANERaCJlYWQAAAFsct4r5ytlAGYAdABhAHIAcgBvAPcAXQbpJGdodGFycm93AKCgIQAJQUhhYmNkZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg");var vi;(function(e){e[e.VALUE_LENGTH=49152]="VALUE_LENGTH",e[e.FLAG13=8192]="FLAG13",e[e.BRANCH_LENGTH=8064]="BRANCH_LENGTH",e[e.JUMP_TABLE=127]="JUMP_TABLE";})(vi||(vi={}));var Po;(function(e){e[e.NUM=35]="NUM",e[e.SEMI=59]="SEMI",e[e.EQUALS=61]="EQUALS",e[e.ZERO=48]="ZERO",e[e.NINE=57]="NINE",e[e.LOWER_A=97]="LOWER_A",e[e.LOWER_F=102]="LOWER_F",e[e.LOWER_X=120]="LOWER_X",e[e.LOWER_Z=122]="LOWER_Z",e[e.UPPER_A=65]="UPPER_A",e[e.UPPER_F=70]="UPPER_F",e[e.UPPER_Z=90]="UPPER_Z";})(Po||(Po={}));var yce=32;function TH(e){return e>=Po.ZERO&&e<=Po.NINE}function t4e(e){return e>=Po.UPPER_A&&e<=Po.UPPER_F||e>=Po.LOWER_A&&e<=Po.LOWER_F}function n4e(e){return e>=Po.UPPER_A&&e<=Po.UPPER_Z||e>=Po.LOWER_A&&e<=Po.LOWER_Z||TH(e)}function o4e(e){return e===Po.EQUALS||n4e(e)}var Ur;(function(e){e[e.EntityStart=0]="EntityStart",e[e.NumericStart=1]="NumericStart",e[e.NumericDecimal=2]="NumericDecimal",e[e.NumericHex=3]="NumericHex",e[e.NamedEntity=4]="NamedEntity";})(Ur||(Ur={}));var od;(function(e){e[e.Legacy=0]="Legacy",e[e.Strict=1]="Strict",e[e.Attribute=2]="Attribute";})(od||(od={}));var TP=class{decodeTree;emitCodePoint;errors;constructor(t,n,o){this.decodeTree=t,this.emitCodePoint=n,this.errors=o;}state=Ur.EntityStart;consumed=1;result=0;treeIndex=0;excess=1;decodeMode=od.Strict;runConsumed=0;startEntity(t){this.decodeMode=t,this.state=Ur.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0;}write(t,n){switch(this.state){case Ur.EntityStart:return t.charCodeAt(n)===Po.NUM?(this.state=Ur.NumericStart,this.consumed+=1,this.stateNumericStart(t,n+1)):(this.state=Ur.NamedEntity,this.stateNamedEntity(t,n));case Ur.NumericStart:return this.stateNumericStart(t,n);case Ur.NumericDecimal:return this.stateNumericDecimal(t,n);case Ur.NumericHex:return this.stateNumericHex(t,n);case Ur.NamedEntity:return this.stateNamedEntity(t,n)}}stateNumericStart(t,n){return n>=t.length?-1:(t.charCodeAt(n)|yce)===Po.LOWER_X?(this.state=Ur.NumericHex,this.consumed+=1,this.stateNumericHex(t,n+1)):(this.state=Ur.NumericDecimal,this.stateNumericDecimal(t,n))}stateNumericHex(t,n){for(;n<t.length;){let o=t.charCodeAt(n);if(TH(o)||t4e(o)){let r=o<=Po.NINE?o-Po.ZERO:(o|yce)-Po.LOWER_A+10;this.result=this.result*16+r,this.consumed++,n++;}else return this.emitNumericEntity(o,3)}return -1}stateNumericDecimal(t,n){for(;n<t.length;){let o=t.charCodeAt(n);if(TH(o))this.result=this.result*10+(o-Po.ZERO),this.consumed++,n++;else return this.emitNumericEntity(o,2)}return -1}emitNumericEntity(t,n){if(this.consumed<=n)return this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(t===Po.SEMI)this.consumed+=1;else if(this.decodeMode===od.Strict)return 0;return this.emitCodePoint(gce(this.result),this.consumed),this.errors&&(t!==Po.SEMI&&this.errors.missingSemicolonAfterCharacterReference(),this.errors.validateNumericCharacterReference(this.result)),this.consumed}stateNamedEntity(t,n){let{decodeTree:o}=this,r=o[this.treeIndex],i=(r&vi.VALUE_LENGTH)>>14;for(;n<t.length;){if(i===0&&r&vi.FLAG13){let a=(r&vi.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let l=r&vi.JUMP_TABLE;if(t.charCodeAt(n)!==l)return this.result===0?0:this.emitNotTerminatedNamedEntity();n++,this.excess++,this.runConsumed++;}for(;this.runConsumed<a;){if(n>=t.length)return -1;let l=this.runConsumed-1,c=o[this.treeIndex+1+(l>>1)],d=l%2===0?c&255:c>>8&255;if(t.charCodeAt(n)!==d)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();n++,this.excess++,this.runConsumed++;}this.runConsumed=0,this.treeIndex+=1+(a>>1),r=o[this.treeIndex],i=(r&vi.VALUE_LENGTH)>>14;}if(n>=t.length)break;let s=t.charCodeAt(n);if(s===Po.SEMI&&i!==0&&r&vi.FLAG13)return this.emitNamedEntityData(this.treeIndex,i,this.consumed+this.excess);if(this.treeIndex=r4e(o,r,this.treeIndex+Math.max(1,i),s),this.treeIndex<0)return this.result===0||this.decodeMode===od.Attribute&&(i===0||o4e(s))?0:this.emitNotTerminatedNamedEntity();if(r=o[this.treeIndex],i=(r&vi.VALUE_LENGTH)>>14,i!==0){if(s===Po.SEMI)return this.emitNamedEntityData(this.treeIndex,i,this.consumed+this.excess);this.decodeMode!==od.Strict&&!(r&vi.FLAG13)&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0);}n++,this.excess++;}return -1}emitNotTerminatedNamedEntity(){let{result:t,decodeTree:n}=this,o=(n[t]&vi.VALUE_LENGTH)>>14;return this.emitNamedEntityData(t,o,this.consumed),this.errors?.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(t,n,o){let{decodeTree:r}=this;return this.emitCodePoint(n===1?r[t]&~(vi.VALUE_LENGTH|vi.FLAG13):r[t+1],o),n===3&&this.emitCodePoint(r[t+2],o),o}end(){switch(this.state){case Ur.NamedEntity:return this.result!==0&&(this.decodeMode!==od.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case Ur.NumericDecimal:return this.emitNumericEntity(0,2);case Ur.NumericHex:return this.emitNumericEntity(0,3);case Ur.NumericStart:return this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case Ur.EntityStart:return 0}}};function r4e(e,t,n,o){let r=(t&vi.BRANCH_LENGTH)>>7,i=t&vi.JUMP_TABLE;if(r===0)return i!==0&&o===i?n:-1;if(i){let c=o-i;return c<0||c>=r?-1:e[n+c]-1}let s=r+1>>1,a=0,l=r-1;for(;a<=l;){let c=a+l>>>1,d=c>>1,p=e[n+d]>>(c&1)*8&255;if(p<o)a=c+1;else if(p>o)l=c-1;else return e[n+s+c]}return -1}var Te;(function(e){e.HTML="http://www.w3.org/1999/xhtml",e.MATHML="http://www.w3.org/1998/Math/MathML",e.SVG="http://www.w3.org/2000/svg",e.XLINK="http://www.w3.org/1999/xlink",e.XML="http://www.w3.org/XML/1998/namespace",e.XMLNS="http://www.w3.org/2000/xmlns/";})(Te||(Te={}));var Tu;(function(e){e.TYPE="type",e.ACTION="action",e.ENCODING="encoding",e.PROMPT="prompt",e.NAME="name",e.COLOR="color",e.FACE="face",e.SIZE="size";})(Tu||(Tu={}));var Zi;(function(e){e.NO_QUIRKS="no-quirks",e.QUIRKS="quirks",e.LIMITED_QUIRKS="limited-quirks";})(Zi||(Zi={}));var oe;(function(e){e.A="a",e.ADDRESS="address",e.ANNOTATION_XML="annotation-xml",e.APPLET="applet",e.AREA="area",e.ARTICLE="article",e.ASIDE="aside",e.B="b",e.BASE="base",e.BASEFONT="basefont",e.BGSOUND="bgsound",e.BIG="big",e.BLOCKQUOTE="blockquote",e.BODY="body",e.BR="br",e.BUTTON="button",e.CAPTION="caption",e.CENTER="center",e.CODE="code",e.COL="col",e.COLGROUP="colgroup",e.DD="dd",e.DESC="desc",e.DETAILS="details",e.DIALOG="dialog",e.DIR="dir",e.DIV="div",e.DL="dl",e.DT="dt",e.EM="em",e.EMBED="embed",e.FIELDSET="fieldset",e.FIGCAPTION="figcaption",e.FIGURE="figure",e.FONT="font",e.FOOTER="footer",e.FOREIGN_OBJECT="foreignObject",e.FORM="form",e.FRAME="frame",e.FRAMESET="frameset",e.H1="h1",e.H2="h2",e.H3="h3",e.H4="h4",e.H5="h5",e.H6="h6",e.HEAD="head",e.HEADER="header",e.HGROUP="hgroup",e.HR="hr",e.HTML="html",e.I="i",e.IMG="img",e.IMAGE="image",e.INPUT="input",e.IFRAME="iframe",e.KEYGEN="keygen",e.LABEL="label",e.LI="li",e.LINK="link",e.LISTING="listing",e.MAIN="main",e.MALIGNMARK="malignmark",e.MARQUEE="marquee",e.MATH="math",e.MENU="menu",e.META="meta",e.MGLYPH="mglyph",e.MI="mi",e.MO="mo",e.MN="mn",e.MS="ms",e.MTEXT="mtext",e.NAV="nav",e.NOBR="nobr",e.NOFRAMES="noframes",e.NOEMBED="noembed",e.NOSCRIPT="noscript",e.OBJECT="object",e.OL="ol",e.OPTGROUP="optgroup",e.OPTION="option",e.P="p",e.PARAM="param",e.PLAINTEXT="plaintext",e.PRE="pre",e.RB="rb",e.RP="rp",e.RT="rt",e.RTC="rtc",e.RUBY="ruby",e.S="s",e.SCRIPT="script",e.SEARCH="search",e.SECTION="section",e.SELECT="select",e.SOURCE="source",e.SMALL="small",e.SPAN="span",e.STRIKE="strike",e.STRONG="strong",e.STYLE="style",e.SUB="sub",e.SUMMARY="summary",e.SUP="sup",e.TABLE="table",e.TBODY="tbody",e.TEMPLATE="template",e.TEXTAREA="textarea",e.TFOOT="tfoot",e.TD="td",e.TH="th",e.THEAD="thead",e.TITLE="title",e.TR="tr",e.TRACK="track",e.TT="tt",e.U="u",e.UL="ul",e.SVG="svg",e.VAR="var",e.WBR="wbr",e.XMP="xmp";})(oe||(oe={}));var T;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.A=1]="A",e[e.ADDRESS=2]="ADDRESS",e[e.ANNOTATION_XML=3]="ANNOTATION_XML",e[e.APPLET=4]="APPLET",e[e.AREA=5]="AREA",e[e.ARTICLE=6]="ARTICLE",e[e.ASIDE=7]="ASIDE",e[e.B=8]="B",e[e.BASE=9]="BASE",e[e.BASEFONT=10]="BASEFONT",e[e.BGSOUND=11]="BGSOUND",e[e.BIG=12]="BIG",e[e.BLOCKQUOTE=13]="BLOCKQUOTE",e[e.BODY=14]="BODY",e[e.BR=15]="BR",e[e.BUTTON=16]="BUTTON",e[e.CAPTION=17]="CAPTION",e[e.CENTER=18]="CENTER",e[e.CODE=19]="CODE",e[e.COL=20]="COL",e[e.COLGROUP=21]="COLGROUP",e[e.DD=22]="DD",e[e.DESC=23]="DESC",e[e.DETAILS=24]="DETAILS",e[e.DIALOG=25]="DIALOG",e[e.DIR=26]="DIR",e[e.DIV=27]="DIV",e[e.DL=28]="DL",e[e.DT=29]="DT",e[e.EM=30]="EM",e[e.EMBED=31]="EMBED",e[e.FIELDSET=32]="FIELDSET",e[e.FIGCAPTION=33]="FIGCAPTION",e[e.FIGURE=34]="FIGURE",e[e.FONT=35]="FONT",e[e.FOOTER=36]="FOOTER",e[e.FOREIGN_OBJECT=37]="FOREIGN_OBJECT",e[e.FORM=38]="FORM",e[e.FRAME=39]="FRAME",e[e.FRAMESET=40]="FRAMESET",e[e.H1=41]="H1",e[e.H2=42]="H2",e[e.H3=43]="H3",e[e.H4=44]="H4",e[e.H5=45]="H5",e[e.H6=46]="H6",e[e.HEAD=47]="HEAD",e[e.HEADER=48]="HEADER",e[e.HGROUP=49]="HGROUP",e[e.HR=50]="HR",e[e.HTML=51]="HTML",e[e.I=52]="I",e[e.IMG=53]="IMG",e[e.IMAGE=54]="IMAGE",e[e.INPUT=55]="INPUT",e[e.IFRAME=56]="IFRAME",e[e.KEYGEN=57]="KEYGEN",e[e.LABEL=58]="LABEL",e[e.LI=59]="LI",e[e.LINK=60]="LINK",e[e.LISTING=61]="LISTING",e[e.MAIN=62]="MAIN",e[e.MALIGNMARK=63]="MALIGNMARK",e[e.MARQUEE=64]="MARQUEE",e[e.MATH=65]="MATH",e[e.MENU=66]="MENU",e[e.META=67]="META",e[e.MGLYPH=68]="MGLYPH",e[e.MI=69]="MI",e[e.MO=70]="MO",e[e.MN=71]="MN",e[e.MS=72]="MS",e[e.MTEXT=73]="MTEXT",e[e.NAV=74]="NAV",e[e.NOBR=75]="NOBR",e[e.NOFRAMES=76]="NOFRAMES",e[e.NOEMBED=77]="NOEMBED",e[e.NOSCRIPT=78]="NOSCRIPT",e[e.OBJECT=79]="OBJECT",e[e.OL=80]="OL",e[e.OPTGROUP=81]="OPTGROUP",e[e.OPTION=82]="OPTION",e[e.P=83]="P",e[e.PARAM=84]="PARAM",e[e.PLAINTEXT=85]="PLAINTEXT",e[e.PRE=86]="PRE",e[e.RB=87]="RB",e[e.RP=88]="RP",e[e.RT=89]="RT",e[e.RTC=90]="RTC",e[e.RUBY=91]="RUBY",e[e.S=92]="S",e[e.SCRIPT=93]="SCRIPT",e[e.SEARCH=94]="SEARCH",e[e.SECTION=95]="SECTION",e[e.SELECT=96]="SELECT",e[e.SOURCE=97]="SOURCE",e[e.SMALL=98]="SMALL",e[e.SPAN=99]="SPAN",e[e.STRIKE=100]="STRIKE",e[e.STRONG=101]="STRONG",e[e.STYLE=102]="STYLE",e[e.SUB=103]="SUB",e[e.SUMMARY=104]="SUMMARY",e[e.SUP=105]="SUP",e[e.TABLE=106]="TABLE",e[e.TBODY=107]="TBODY",e[e.TEMPLATE=108]="TEMPLATE",e[e.TEXTAREA=109]="TEXTAREA",e[e.TFOOT=110]="TFOOT",e[e.TD=111]="TD",e[e.TH=112]="TH",e[e.THEAD=113]="THEAD",e[e.TITLE=114]="TITLE",e[e.TR=115]="TR",e[e.TRACK=116]="TRACK",e[e.TT=117]="TT",e[e.U=118]="U",e[e.UL=119]="UL",e[e.SVG=120]="SVG",e[e.VAR=121]="VAR",e[e.WBR=122]="WBR",e[e.XMP=123]="XMP";})(T||(T={}));var i4e=new Map([[oe.A,T.A],[oe.ADDRESS,T.ADDRESS],[oe.ANNOTATION_XML,T.ANNOTATION_XML],[oe.APPLET,T.APPLET],[oe.AREA,T.AREA],[oe.ARTICLE,T.ARTICLE],[oe.ASIDE,T.ASIDE],[oe.B,T.B],[oe.BASE,T.BASE],[oe.BASEFONT,T.BASEFONT],[oe.BGSOUND,T.BGSOUND],[oe.BIG,T.BIG],[oe.BLOCKQUOTE,T.BLOCKQUOTE],[oe.BODY,T.BODY],[oe.BR,T.BR],[oe.BUTTON,T.BUTTON],[oe.CAPTION,T.CAPTION],[oe.CENTER,T.CENTER],[oe.CODE,T.CODE],[oe.COL,T.COL],[oe.COLGROUP,T.COLGROUP],[oe.DD,T.DD],[oe.DESC,T.DESC],[oe.DETAILS,T.DETAILS],[oe.DIALOG,T.DIALOG],[oe.DIR,T.DIR],[oe.DIV,T.DIV],[oe.DL,T.DL],[oe.DT,T.DT],[oe.EM,T.EM],[oe.EMBED,T.EMBED],[oe.FIELDSET,T.FIELDSET],[oe.FIGCAPTION,T.FIGCAPTION],[oe.FIGURE,T.FIGURE],[oe.FONT,T.FONT],[oe.FOOTER,T.FOOTER],[oe.FOREIGN_OBJECT,T.FOREIGN_OBJECT],[oe.FORM,T.FORM],[oe.FRAME,T.FRAME],[oe.FRAMESET,T.FRAMESET],[oe.H1,T.H1],[oe.H2,T.H2],[oe.H3,T.H3],[oe.H4,T.H4],[oe.H5,T.H5],[oe.H6,T.H6],[oe.HEAD,T.HEAD],[oe.HEADER,T.HEADER],[oe.HGROUP,T.HGROUP],[oe.HR,T.HR],[oe.HTML,T.HTML],[oe.I,T.I],[oe.IMG,T.IMG],[oe.IMAGE,T.IMAGE],[oe.INPUT,T.INPUT],[oe.IFRAME,T.IFRAME],[oe.KEYGEN,T.KEYGEN],[oe.LABEL,T.LABEL],[oe.LI,T.LI],[oe.LINK,T.LINK],[oe.LISTING,T.LISTING],[oe.MAIN,T.MAIN],[oe.MALIGNMARK,T.MALIGNMARK],[oe.MARQUEE,T.MARQUEE],[oe.MATH,T.MATH],[oe.MENU,T.MENU],[oe.META,T.META],[oe.MGLYPH,T.MGLYPH],[oe.MI,T.MI],[oe.MO,T.MO],[oe.MN,T.MN],[oe.MS,T.MS],[oe.MTEXT,T.MTEXT],[oe.NAV,T.NAV],[oe.NOBR,T.NOBR],[oe.NOFRAMES,T.NOFRAMES],[oe.NOEMBED,T.NOEMBED],[oe.NOSCRIPT,T.NOSCRIPT],[oe.OBJECT,T.OBJECT],[oe.OL,T.OL],[oe.OPTGROUP,T.OPTGROUP],[oe.OPTION,T.OPTION],[oe.P,T.P],[oe.PARAM,T.PARAM],[oe.PLAINTEXT,T.PLAINTEXT],[oe.PRE,T.PRE],[oe.RB,T.RB],[oe.RP,T.RP],[oe.RT,T.RT],[oe.RTC,T.RTC],[oe.RUBY,T.RUBY],[oe.S,T.S],[oe.SCRIPT,T.SCRIPT],[oe.SEARCH,T.SEARCH],[oe.SECTION,T.SECTION],[oe.SELECT,T.SELECT],[oe.SOURCE,T.SOURCE],[oe.SMALL,T.SMALL],[oe.SPAN,T.SPAN],[oe.STRIKE,T.STRIKE],[oe.STRONG,T.STRONG],[oe.STYLE,T.STYLE],[oe.SUB,T.SUB],[oe.SUMMARY,T.SUMMARY],[oe.SUP,T.SUP],[oe.TABLE,T.TABLE],[oe.TBODY,T.TBODY],[oe.TEMPLATE,T.TEMPLATE],[oe.TEXTAREA,T.TEXTAREA],[oe.TFOOT,T.TFOOT],[oe.TD,T.TD],[oe.TH,T.TH],[oe.THEAD,T.THEAD],[oe.TITLE,T.TITLE],[oe.TR,T.TR],[oe.TRACK,T.TRACK],[oe.TT,T.TT],[oe.U,T.U],[oe.UL,T.UL],[oe.SVG,T.SVG],[oe.VAR,T.VAR],[oe.WBR,T.WBR],[oe.XMP,T.XMP]]);function Lh(e){var t;return (t=i4e.get(e))!==null&&t!==void 0?t:T.UNKNOWN}var _e=T,Sce={[Te.HTML]:new Set([_e.ADDRESS,_e.APPLET,_e.AREA,_e.ARTICLE,_e.ASIDE,_e.BASE,_e.BASEFONT,_e.BGSOUND,_e.BLOCKQUOTE,_e.BODY,_e.BR,_e.BUTTON,_e.CAPTION,_e.CENTER,_e.COL,_e.COLGROUP,_e.DD,_e.DETAILS,_e.DIR,_e.DIV,_e.DL,_e.DT,_e.EMBED,_e.FIELDSET,_e.FIGCAPTION,_e.FIGURE,_e.FOOTER,_e.FORM,_e.FRAME,_e.FRAMESET,_e.H1,_e.H2,_e.H3,_e.H4,_e.H5,_e.H6,_e.HEAD,_e.HEADER,_e.HGROUP,_e.HR,_e.HTML,_e.IFRAME,_e.IMG,_e.INPUT,_e.LI,_e.LINK,_e.LISTING,_e.MAIN,_e.MARQUEE,_e.MENU,_e.META,_e.NAV,_e.NOEMBED,_e.NOFRAMES,_e.NOSCRIPT,_e.OBJECT,_e.OL,_e.P,_e.PARAM,_e.PLAINTEXT,_e.PRE,_e.SCRIPT,_e.SECTION,_e.SELECT,_e.SOURCE,_e.STYLE,_e.SUMMARY,_e.TABLE,_e.TBODY,_e.TD,_e.TEMPLATE,_e.TEXTAREA,_e.TFOOT,_e.TH,_e.THEAD,_e.TITLE,_e.TR,_e.TRACK,_e.UL,_e.WBR,_e.XMP]),[Te.MATHML]:new Set([_e.MI,_e.MO,_e.MN,_e.MS,_e.MTEXT,_e.ANNOTATION_XML]),[Te.SVG]:new Set([_e.TITLE,_e.FOREIGN_OBJECT,_e.DESC]),[Te.XLINK]:new Set,[Te.XML]:new Set,[Te.XMLNS]:new Set},gE=new Set([_e.H1,_e.H2,_e.H3,_e.H4,_e.H5,_e.H6]);new Set([oe.STYLE,oe.SCRIPT,oe.XMP,oe.IFRAME,oe.NOEMBED,oe.NOFRAMES,oe.PLAINTEXT]);var U;(function(e){e[e.DATA=0]="DATA",e[e.RCDATA=1]="RCDATA",e[e.RAWTEXT=2]="RAWTEXT",e[e.SCRIPT_DATA=3]="SCRIPT_DATA",e[e.PLAINTEXT=4]="PLAINTEXT",e[e.TAG_OPEN=5]="TAG_OPEN",e[e.END_TAG_OPEN=6]="END_TAG_OPEN",e[e.TAG_NAME=7]="TAG_NAME",e[e.RCDATA_LESS_THAN_SIGN=8]="RCDATA_LESS_THAN_SIGN",e[e.RCDATA_END_TAG_OPEN=9]="RCDATA_END_TAG_OPEN",e[e.RCDATA_END_TAG_NAME=10]="RCDATA_END_TAG_NAME",e[e.RAWTEXT_LESS_THAN_SIGN=11]="RAWTEXT_LESS_THAN_SIGN",e[e.RAWTEXT_END_TAG_OPEN=12]="RAWTEXT_END_TAG_OPEN",e[e.RAWTEXT_END_TAG_NAME=13]="RAWTEXT_END_TAG_NAME",e[e.SCRIPT_DATA_LESS_THAN_SIGN=14]="SCRIPT_DATA_LESS_THAN_SIGN",e[e.SCRIPT_DATA_END_TAG_OPEN=15]="SCRIPT_DATA_END_TAG_OPEN",e[e.SCRIPT_DATA_END_TAG_NAME=16]="SCRIPT_DATA_END_TAG_NAME",e[e.SCRIPT_DATA_ESCAPE_START=17]="SCRIPT_DATA_ESCAPE_START",e[e.SCRIPT_DATA_ESCAPE_START_DASH=18]="SCRIPT_DATA_ESCAPE_START_DASH",e[e.SCRIPT_DATA_ESCAPED=19]="SCRIPT_DATA_ESCAPED",e[e.SCRIPT_DATA_ESCAPED_DASH=20]="SCRIPT_DATA_ESCAPED_DASH",e[e.SCRIPT_DATA_ESCAPED_DASH_DASH=21]="SCRIPT_DATA_ESCAPED_DASH_DASH",e[e.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN=22]="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN",e[e.SCRIPT_DATA_ESCAPED_END_TAG_OPEN=23]="SCRIPT_DATA_ESCAPED_END_TAG_OPEN",e[e.SCRIPT_DATA_ESCAPED_END_TAG_NAME=24]="SCRIPT_DATA_ESCAPED_END_TAG_NAME",e[e.SCRIPT_DATA_DOUBLE_ESCAPE_START=25]="SCRIPT_DATA_DOUBLE_ESCAPE_START",e[e.SCRIPT_DATA_DOUBLE_ESCAPED=26]="SCRIPT_DATA_DOUBLE_ESCAPED",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH=27]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH=28]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN=29]="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN",e[e.SCRIPT_DATA_DOUBLE_ESCAPE_END=30]="SCRIPT_DATA_DOUBLE_ESCAPE_END",e[e.BEFORE_ATTRIBUTE_NAME=31]="BEFORE_ATTRIBUTE_NAME",e[e.ATTRIBUTE_NAME=32]="ATTRIBUTE_NAME",e[e.AFTER_ATTRIBUTE_NAME=33]="AFTER_ATTRIBUTE_NAME",e[e.BEFORE_ATTRIBUTE_VALUE=34]="BEFORE_ATTRIBUTE_VALUE",e[e.ATTRIBUTE_VALUE_DOUBLE_QUOTED=35]="ATTRIBUTE_VALUE_DOUBLE_QUOTED",e[e.ATTRIBUTE_VALUE_SINGLE_QUOTED=36]="ATTRIBUTE_VALUE_SINGLE_QUOTED",e[e.ATTRIBUTE_VALUE_UNQUOTED=37]="ATTRIBUTE_VALUE_UNQUOTED",e[e.AFTER_ATTRIBUTE_VALUE_QUOTED=38]="AFTER_ATTRIBUTE_VALUE_QUOTED",e[e.SELF_CLOSING_START_TAG=39]="SELF_CLOSING_START_TAG",e[e.BOGUS_COMMENT=40]="BOGUS_COMMENT",e[e.MARKUP_DECLARATION_OPEN=41]="MARKUP_DECLARATION_OPEN",e[e.COMMENT_START=42]="COMMENT_START",e[e.COMMENT_START_DASH=43]="COMMENT_START_DASH",e[e.COMMENT=44]="COMMENT",e[e.COMMENT_LESS_THAN_SIGN=45]="COMMENT_LESS_THAN_SIGN",e[e.COMMENT_LESS_THAN_SIGN_BANG=46]="COMMENT_LESS_THAN_SIGN_BANG",e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH=47]="COMMENT_LESS_THAN_SIGN_BANG_DASH",e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH=48]="COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH",e[e.COMMENT_END_DASH=49]="COMMENT_END_DASH",e[e.COMMENT_END=50]="COMMENT_END",e[e.COMMENT_END_BANG=51]="COMMENT_END_BANG",e[e.DOCTYPE=52]="DOCTYPE",e[e.BEFORE_DOCTYPE_NAME=53]="BEFORE_DOCTYPE_NAME",e[e.DOCTYPE_NAME=54]="DOCTYPE_NAME",e[e.AFTER_DOCTYPE_NAME=55]="AFTER_DOCTYPE_NAME",e[e.AFTER_DOCTYPE_PUBLIC_KEYWORD=56]="AFTER_DOCTYPE_PUBLIC_KEYWORD",e[e.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER=57]="BEFORE_DOCTYPE_PUBLIC_IDENTIFIER",e[e.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED=58]="DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED",e[e.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED=59]="DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED",e[e.AFTER_DOCTYPE_PUBLIC_IDENTIFIER=60]="AFTER_DOCTYPE_PUBLIC_IDENTIFIER",e[e.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS=61]="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS",e[e.AFTER_DOCTYPE_SYSTEM_KEYWORD=62]="AFTER_DOCTYPE_SYSTEM_KEYWORD",e[e.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER=63]="BEFORE_DOCTYPE_SYSTEM_IDENTIFIER",e[e.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED=64]="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED",e[e.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED=65]="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED",e[e.AFTER_DOCTYPE_SYSTEM_IDENTIFIER=66]="AFTER_DOCTYPE_SYSTEM_IDENTIFIER",e[e.BOGUS_DOCTYPE=67]="BOGUS_DOCTYPE",e[e.CDATA_SECTION=68]="CDATA_SECTION",e[e.CDATA_SECTION_BRACKET=69]="CDATA_SECTION_BRACKET",e[e.CDATA_SECTION_END=70]="CDATA_SECTION_END",e[e.CHARACTER_REFERENCE=71]="CHARACTER_REFERENCE",e[e.AMBIGUOUS_AMPERSAND=72]="AMBIGUOUS_AMPERSAND";})(U||(U={}));var Ri={DATA:U.DATA,RCDATA:U.RCDATA,RAWTEXT:U.RAWTEXT,SCRIPT_DATA:U.SCRIPT_DATA,PLAINTEXT:U.PLAINTEXT,CDATA_SECTION:U.CDATA_SECTION};function a4e(e){return e>=N.DIGIT_0&&e<=N.DIGIT_9}function fE(e){return e>=N.LATIN_CAPITAL_A&&e<=N.LATIN_CAPITAL_Z}function l4e(e){return e>=N.LATIN_SMALL_A&&e<=N.LATIN_SMALL_Z}function Zp(e){return l4e(e)||fE(e)}function bce(e){return Zp(e)||a4e(e)}function AP(e){return e+32}function Ace(e){return e===N.SPACE||e===N.LINE_FEED||e===N.TABULATION||e===N.FORM_FEED}function Tce(e){return Ace(e)||e===N.SOLIDUS||e===N.GREATER_THAN_SIGN}function c4e(e){return e===N.NULL?ce.nullCharacterReference:e>1114111?ce.characterReferenceOutsideUnicodeRange:gP(e)?ce.surrogateCharacterReference:yP(e)?ce.noncharacterCharacterReference:fP(e)||e===N.CARRIAGE_RETURN?ce.controlCharacterReference:null}var yE=class{constructor(t,n){this.options=t,this.handler=n,this.paused=false,this.inLoop=false,this.inForeignNode=false,this.lastStartTagName="",this.active=false,this.state=U.DATA,this.returnState=U.DATA,this.entityStartPos=0,this.consumedAfterSnapshot=-1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr={name:"",value:""},this.preprocessor=new SP(n),this.currentLocation=this.getCurrentLocation(-1),this.entityDecoder=new TP(bH,(o,r)=>{this.preprocessor.pos=this.entityStartPos+r-1,this._flushCodePointConsumedAsCharacterReference(o);},n.onParseError?{missingSemicolonAfterCharacterReference:()=>{this._err(ce.missingSemicolonAfterCharacterReference,1);},absenceOfDigitsInNumericCharacterReference:o=>{this._err(ce.absenceOfDigitsInNumericCharacterReference,this.entityStartPos-this.preprocessor.pos+o);},validateNumericCharacterReference:o=>{let r=c4e(o);r&&this._err(r,1);}}:void 0);}_err(t,n=0){var o,r;(r=(o=this.handler).onParseError)===null||r===void 0||r.call(o,this.preprocessor.getError(t,n));}getCurrentLocation(t){return this.options.sourceCodeLocationInfo?{startLine:this.preprocessor.line,startCol:this.preprocessor.col-t,startOffset:this.preprocessor.offset-t,endLine:-1,endCol:-1,endOffset:-1}:null}_runParsingLoop(){if(!this.inLoop){for(this.inLoop=true;this.active&&!this.paused;){this.consumedAfterSnapshot=0;let t=this._consume();this._ensureHibernation()||this._callState(t);}this.inLoop=false;}}pause(){this.paused=true;}resume(t){if(!this.paused)throw new Error("Parser was already resumed");this.paused=false,!this.inLoop&&(this._runParsingLoop(),this.paused||t?.());}write(t,n,o){this.active=true,this.preprocessor.write(t,n),this._runParsingLoop(),this.paused||o?.();}insertHtmlAtCurrentPos(t){this.active=true,this.preprocessor.insertHtmlAtCurrentPos(t),this._runParsingLoop();}_ensureHibernation(){return this.preprocessor.endOfChunkHit?(this.preprocessor.retreat(this.consumedAfterSnapshot),this.consumedAfterSnapshot=0,this.active=false,true):false}_consume(){return this.consumedAfterSnapshot++,this.preprocessor.advance()}_advanceBy(t){this.consumedAfterSnapshot+=t;for(let n=0;n<t;n++)this.preprocessor.advance();}_consumeSequenceIfMatch(t,n){return this.preprocessor.startsWith(t,n)?(this._advanceBy(t.length-1),true):false}_createStartTagToken(){this.currentToken={type:Kt.START_TAG,tagName:"",tagID:T.UNKNOWN,selfClosing:false,ackSelfClosing:false,attrs:[],location:this.getCurrentLocation(1)};}_createEndTagToken(){this.currentToken={type:Kt.END_TAG,tagName:"",tagID:T.UNKNOWN,selfClosing:false,ackSelfClosing:false,attrs:[],location:this.getCurrentLocation(2)};}_createCommentToken(t){this.currentToken={type:Kt.COMMENT,data:"",location:this.getCurrentLocation(t)};}_createDoctypeToken(t){this.currentToken={type:Kt.DOCTYPE,name:t,forceQuirks:false,publicId:null,systemId:null,location:this.currentLocation};}_createCharacterToken(t,n){this.currentCharacterToken={type:t,chars:n,location:this.currentLocation};}_createAttr(t){this.currentAttr={name:t,value:""},this.currentLocation=this.getCurrentLocation(0);}_leaveAttrName(){var t,n;let o=this.currentToken;if(bP(o,this.currentAttr.name)===null){if(o.attrs.push(this.currentAttr),o.location&&this.currentLocation){let r=(t=(n=o.location).attrs)!==null&&t!==void 0?t:n.attrs=Object.create(null);r[this.currentAttr.name]=this.currentLocation,this._leaveAttrValue();}}else this._err(ce.duplicateAttribute);}_leaveAttrValue(){this.currentLocation&&(this.currentLocation.endLine=this.preprocessor.line,this.currentLocation.endCol=this.preprocessor.col,this.currentLocation.endOffset=this.preprocessor.offset);}prepareToken(t){this._emitCurrentCharacterToken(t.location),this.currentToken=null,t.location&&(t.location.endLine=this.preprocessor.line,t.location.endCol=this.preprocessor.col+1,t.location.endOffset=this.preprocessor.offset+1),this.currentLocation=this.getCurrentLocation(-1);}emitCurrentTagToken(){let t=this.currentToken;this.prepareToken(t),t.tagID=Lh(t.tagName),t.type===Kt.START_TAG?(this.lastStartTagName=t.tagName,this.handler.onStartTag(t)):(t.attrs.length>0&&this._err(ce.endTagWithAttributes),t.selfClosing&&this._err(ce.endTagWithTrailingSolidus),this.handler.onEndTag(t)),this.preprocessor.dropParsedChunk();}emitCurrentComment(t){this.prepareToken(t),this.handler.onComment(t),this.preprocessor.dropParsedChunk();}emitCurrentDoctype(t){this.prepareToken(t),this.handler.onDoctype(t),this.preprocessor.dropParsedChunk();}_emitCurrentCharacterToken(t){if(this.currentCharacterToken){switch(t&&this.currentCharacterToken.location&&(this.currentCharacterToken.location.endLine=t.startLine,this.currentCharacterToken.location.endCol=t.startCol,this.currentCharacterToken.location.endOffset=t.startOffset),this.currentCharacterToken.type){case Kt.CHARACTER:{this.handler.onCharacter(this.currentCharacterToken);break}case Kt.NULL_CHARACTER:{this.handler.onNullCharacter(this.currentCharacterToken);break}case Kt.WHITESPACE_CHARACTER:{this.handler.onWhitespaceCharacter(this.currentCharacterToken);break}}this.currentCharacterToken=null;}}_emitEOFToken(){let t=this.getCurrentLocation(0);t&&(t.endLine=t.startLine,t.endCol=t.startCol,t.endOffset=t.startOffset),this._emitCurrentCharacterToken(t),this.handler.onEof({type:Kt.EOF,location:t}),this.active=false;}_appendCharToCurrentCharacterToken(t,n){if(this.currentCharacterToken)if(this.currentCharacterToken.type===t){this.currentCharacterToken.chars+=n;return}else this.currentLocation=this.getCurrentLocation(0),this._emitCurrentCharacterToken(this.currentLocation),this.preprocessor.dropParsedChunk();this._createCharacterToken(t,n);}_emitCodePoint(t){let n=Ace(t)?Kt.WHITESPACE_CHARACTER:t===N.NULL?Kt.NULL_CHARACTER:Kt.CHARACTER;this._appendCharToCurrentCharacterToken(n,t<65536?String.fromCharCode(t):String.fromCodePoint(t));}_emitChars(t){this._appendCharToCurrentCharacterToken(Kt.CHARACTER,t);}_startCharacterReference(){this.returnState=this.state,this.state=U.CHARACTER_REFERENCE,this.entityStartPos=this.preprocessor.pos,this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute()?od.Attribute:od.Legacy);}_isCharacterReferenceInAttribute(){return this.returnState===U.ATTRIBUTE_VALUE_DOUBLE_QUOTED||this.returnState===U.ATTRIBUTE_VALUE_SINGLE_QUOTED||this.returnState===U.ATTRIBUTE_VALUE_UNQUOTED}_flushCodePointConsumedAsCharacterReference(t){this._isCharacterReferenceInAttribute()?this.currentAttr.value+=String.fromCodePoint(t):this._emitCodePoint(t);}_callState(t){switch(this.state){case U.DATA:{this._stateData(t);break}case U.RCDATA:{this._stateRcdata(t);break}case U.RAWTEXT:{this._stateRawtext(t);break}case U.SCRIPT_DATA:{this._stateScriptData(t);break}case U.PLAINTEXT:{this._statePlaintext(t);break}case U.TAG_OPEN:{this._stateTagOpen(t);break}case U.END_TAG_OPEN:{this._stateEndTagOpen(t);break}case U.TAG_NAME:{this._stateTagName(t);break}case U.RCDATA_LESS_THAN_SIGN:{this._stateRcdataLessThanSign(t);break}case U.RCDATA_END_TAG_OPEN:{this._stateRcdataEndTagOpen(t);break}case U.RCDATA_END_TAG_NAME:{this._stateRcdataEndTagName(t);break}case U.RAWTEXT_LESS_THAN_SIGN:{this._stateRawtextLessThanSign(t);break}case U.RAWTEXT_END_TAG_OPEN:{this._stateRawtextEndTagOpen(t);break}case U.RAWTEXT_END_TAG_NAME:{this._stateRawtextEndTagName(t);break}case U.SCRIPT_DATA_LESS_THAN_SIGN:{this._stateScriptDataLessThanSign(t);break}case U.SCRIPT_DATA_END_TAG_OPEN:{this._stateScriptDataEndTagOpen(t);break}case U.SCRIPT_DATA_END_TAG_NAME:{this._stateScriptDataEndTagName(t);break}case U.SCRIPT_DATA_ESCAPE_START:{this._stateScriptDataEscapeStart(t);break}case U.SCRIPT_DATA_ESCAPE_START_DASH:{this._stateScriptDataEscapeStartDash(t);break}case U.SCRIPT_DATA_ESCAPED:{this._stateScriptDataEscaped(t);break}case U.SCRIPT_DATA_ESCAPED_DASH:{this._stateScriptDataEscapedDash(t);break}case U.SCRIPT_DATA_ESCAPED_DASH_DASH:{this._stateScriptDataEscapedDashDash(t);break}case U.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataEscapedLessThanSign(t);break}case U.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:{this._stateScriptDataEscapedEndTagOpen(t);break}case U.SCRIPT_DATA_ESCAPED_END_TAG_NAME:{this._stateScriptDataEscapedEndTagName(t);break}case U.SCRIPT_DATA_DOUBLE_ESCAPE_START:{this._stateScriptDataDoubleEscapeStart(t);break}case U.SCRIPT_DATA_DOUBLE_ESCAPED:{this._stateScriptDataDoubleEscaped(t);break}case U.SCRIPT_DATA_DOUBLE_ESCAPED_DASH:{this._stateScriptDataDoubleEscapedDash(t);break}case U.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH:{this._stateScriptDataDoubleEscapedDashDash(t);break}case U.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataDoubleEscapedLessThanSign(t);break}case U.SCRIPT_DATA_DOUBLE_ESCAPE_END:{this._stateScriptDataDoubleEscapeEnd(t);break}case U.BEFORE_ATTRIBUTE_NAME:{this._stateBeforeAttributeName(t);break}case U.ATTRIBUTE_NAME:{this._stateAttributeName(t);break}case U.AFTER_ATTRIBUTE_NAME:{this._stateAfterAttributeName(t);break}case U.BEFORE_ATTRIBUTE_VALUE:{this._stateBeforeAttributeValue(t);break}case U.ATTRIBUTE_VALUE_DOUBLE_QUOTED:{this._stateAttributeValueDoubleQuoted(t);break}case U.ATTRIBUTE_VALUE_SINGLE_QUOTED:{this._stateAttributeValueSingleQuoted(t);break}case U.ATTRIBUTE_VALUE_UNQUOTED:{this._stateAttributeValueUnquoted(t);break}case U.AFTER_ATTRIBUTE_VALUE_QUOTED:{this._stateAfterAttributeValueQuoted(t);break}case U.SELF_CLOSING_START_TAG:{this._stateSelfClosingStartTag(t);break}case U.BOGUS_COMMENT:{this._stateBogusComment(t);break}case U.MARKUP_DECLARATION_OPEN:{this._stateMarkupDeclarationOpen(t);break}case U.COMMENT_START:{this._stateCommentStart(t);break}case U.COMMENT_START_DASH:{this._stateCommentStartDash(t);break}case U.COMMENT:{this._stateComment(t);break}case U.COMMENT_LESS_THAN_SIGN:{this._stateCommentLessThanSign(t);break}case U.COMMENT_LESS_THAN_SIGN_BANG:{this._stateCommentLessThanSignBang(t);break}case U.COMMENT_LESS_THAN_SIGN_BANG_DASH:{this._stateCommentLessThanSignBangDash(t);break}case U.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH:{this._stateCommentLessThanSignBangDashDash(t);break}case U.COMMENT_END_DASH:{this._stateCommentEndDash(t);break}case U.COMMENT_END:{this._stateCommentEnd(t);break}case U.COMMENT_END_BANG:{this._stateCommentEndBang(t);break}case U.DOCTYPE:{this._stateDoctype(t);break}case U.BEFORE_DOCTYPE_NAME:{this._stateBeforeDoctypeName(t);break}case U.DOCTYPE_NAME:{this._stateDoctypeName(t);break}case U.AFTER_DOCTYPE_NAME:{this._stateAfterDoctypeName(t);break}case U.AFTER_DOCTYPE_PUBLIC_KEYWORD:{this._stateAfterDoctypePublicKeyword(t);break}case U.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateBeforeDoctypePublicIdentifier(t);break}case U.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypePublicIdentifierDoubleQuoted(t);break}case U.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypePublicIdentifierSingleQuoted(t);break}case U.AFTER_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateAfterDoctypePublicIdentifier(t);break}case U.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS:{this._stateBetweenDoctypePublicAndSystemIdentifiers(t);break}case U.AFTER_DOCTYPE_SYSTEM_KEYWORD:{this._stateAfterDoctypeSystemKeyword(t);break}case U.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateBeforeDoctypeSystemIdentifier(t);break}case U.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypeSystemIdentifierDoubleQuoted(t);break}case U.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypeSystemIdentifierSingleQuoted(t);break}case U.AFTER_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateAfterDoctypeSystemIdentifier(t);break}case U.BOGUS_DOCTYPE:{this._stateBogusDoctype(t);break}case U.CDATA_SECTION:{this._stateCdataSection(t);break}case U.CDATA_SECTION_BRACKET:{this._stateCdataSectionBracket(t);break}case U.CDATA_SECTION_END:{this._stateCdataSectionEnd(t);break}case U.CHARACTER_REFERENCE:{this._stateCharacterReference();break}case U.AMBIGUOUS_AMPERSAND:{this._stateAmbiguousAmpersand(t);break}default:throw new Error("Unknown state")}}_stateData(t){switch(t){case N.LESS_THAN_SIGN:{this.state=U.TAG_OPEN;break}case N.AMPERSAND:{this._startCharacterReference();break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this._emitCodePoint(t);break}case N.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t);}}_stateRcdata(t){switch(t){case N.AMPERSAND:{this._startCharacterReference();break}case N.LESS_THAN_SIGN:{this.state=U.RCDATA_LESS_THAN_SIGN;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this._emitChars(Hn);break}case N.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t);}}_stateRawtext(t){switch(t){case N.LESS_THAN_SIGN:{this.state=U.RAWTEXT_LESS_THAN_SIGN;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this._emitChars(Hn);break}case N.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t);}}_stateScriptData(t){switch(t){case N.LESS_THAN_SIGN:{this.state=U.SCRIPT_DATA_LESS_THAN_SIGN;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this._emitChars(Hn);break}case N.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t);}}_statePlaintext(t){switch(t){case N.NULL:{this._err(ce.unexpectedNullCharacter),this._emitChars(Hn);break}case N.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t);}}_stateTagOpen(t){if(Zp(t))this._createStartTagToken(),this.state=U.TAG_NAME,this._stateTagName(t);else switch(t){case N.EXCLAMATION_MARK:{this.state=U.MARKUP_DECLARATION_OPEN;break}case N.SOLIDUS:{this.state=U.END_TAG_OPEN;break}case N.QUESTION_MARK:{this._err(ce.unexpectedQuestionMarkInsteadOfTagName),this._createCommentToken(1),this.state=U.BOGUS_COMMENT,this._stateBogusComment(t);break}case N.EOF:{this._err(ce.eofBeforeTagName),this._emitChars("<"),this._emitEOFToken();break}default:this._err(ce.invalidFirstCharacterOfTagName),this._emitChars("<"),this.state=U.DATA,this._stateData(t);}}_stateEndTagOpen(t){if(Zp(t))this._createEndTagToken(),this.state=U.TAG_NAME,this._stateTagName(t);else switch(t){case N.GREATER_THAN_SIGN:{this._err(ce.missingEndTagName),this.state=U.DATA;break}case N.EOF:{this._err(ce.eofBeforeTagName),this._emitChars("</"),this._emitEOFToken();break}default:this._err(ce.invalidFirstCharacterOfTagName),this._createCommentToken(2),this.state=U.BOGUS_COMMENT,this._stateBogusComment(t);}}_stateTagName(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this.state=U.BEFORE_ATTRIBUTE_NAME;break}case N.SOLIDUS:{this.state=U.SELF_CLOSING_START_TAG;break}case N.GREATER_THAN_SIGN:{this.state=U.DATA,this.emitCurrentTagToken();break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.tagName+=Hn;break}case N.EOF:{this._err(ce.eofInTag),this._emitEOFToken();break}default:n.tagName+=String.fromCodePoint(fE(t)?AP(t):t);}}_stateRcdataLessThanSign(t){t===N.SOLIDUS?this.state=U.RCDATA_END_TAG_OPEN:(this._emitChars("<"),this.state=U.RCDATA,this._stateRcdata(t));}_stateRcdataEndTagOpen(t){Zp(t)?(this.state=U.RCDATA_END_TAG_NAME,this._stateRcdataEndTagName(t)):(this._emitChars("</"),this.state=U.RCDATA,this._stateRcdata(t));}handleSpecialEndTag(t){if(!this.preprocessor.startsWith(this.lastStartTagName,false))return !this._ensureHibernation();this._createEndTagToken();let n=this.currentToken;switch(n.tagName=this.lastStartTagName,this.preprocessor.peek(this.lastStartTagName.length)){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:return this._advanceBy(this.lastStartTagName.length),this.state=U.BEFORE_ATTRIBUTE_NAME,false;case N.SOLIDUS:return this._advanceBy(this.lastStartTagName.length),this.state=U.SELF_CLOSING_START_TAG,false;case N.GREATER_THAN_SIGN:return this._advanceBy(this.lastStartTagName.length),this.emitCurrentTagToken(),this.state=U.DATA,false;default:return !this._ensureHibernation()}}_stateRcdataEndTagName(t){this.handleSpecialEndTag(t)&&(this._emitChars("</"),this.state=U.RCDATA,this._stateRcdata(t));}_stateRawtextLessThanSign(t){t===N.SOLIDUS?this.state=U.RAWTEXT_END_TAG_OPEN:(this._emitChars("<"),this.state=U.RAWTEXT,this._stateRawtext(t));}_stateRawtextEndTagOpen(t){Zp(t)?(this.state=U.RAWTEXT_END_TAG_NAME,this._stateRawtextEndTagName(t)):(this._emitChars("</"),this.state=U.RAWTEXT,this._stateRawtext(t));}_stateRawtextEndTagName(t){this.handleSpecialEndTag(t)&&(this._emitChars("</"),this.state=U.RAWTEXT,this._stateRawtext(t));}_stateScriptDataLessThanSign(t){switch(t){case N.SOLIDUS:{this.state=U.SCRIPT_DATA_END_TAG_OPEN;break}case N.EXCLAMATION_MARK:{this.state=U.SCRIPT_DATA_ESCAPE_START,this._emitChars("<!");break}default:this._emitChars("<"),this.state=U.SCRIPT_DATA,this._stateScriptData(t);}}_stateScriptDataEndTagOpen(t){Zp(t)?(this.state=U.SCRIPT_DATA_END_TAG_NAME,this._stateScriptDataEndTagName(t)):(this._emitChars("</"),this.state=U.SCRIPT_DATA,this._stateScriptData(t));}_stateScriptDataEndTagName(t){this.handleSpecialEndTag(t)&&(this._emitChars("</"),this.state=U.SCRIPT_DATA,this._stateScriptData(t));}_stateScriptDataEscapeStart(t){t===N.HYPHEN_MINUS?(this.state=U.SCRIPT_DATA_ESCAPE_START_DASH,this._emitChars("-")):(this.state=U.SCRIPT_DATA,this._stateScriptData(t));}_stateScriptDataEscapeStartDash(t){t===N.HYPHEN_MINUS?(this.state=U.SCRIPT_DATA_ESCAPED_DASH_DASH,this._emitChars("-")):(this.state=U.SCRIPT_DATA,this._stateScriptData(t));}_stateScriptDataEscaped(t){switch(t){case N.HYPHEN_MINUS:{this.state=U.SCRIPT_DATA_ESCAPED_DASH,this._emitChars("-");break}case N.LESS_THAN_SIGN:{this.state=U.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this._emitChars(Hn);break}case N.EOF:{this._err(ce.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this._emitCodePoint(t);}}_stateScriptDataEscapedDash(t){switch(t){case N.HYPHEN_MINUS:{this.state=U.SCRIPT_DATA_ESCAPED_DASH_DASH,this._emitChars("-");break}case N.LESS_THAN_SIGN:{this.state=U.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.state=U.SCRIPT_DATA_ESCAPED,this._emitChars(Hn);break}case N.EOF:{this._err(ce.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=U.SCRIPT_DATA_ESCAPED,this._emitCodePoint(t);}}_stateScriptDataEscapedDashDash(t){switch(t){case N.HYPHEN_MINUS:{this._emitChars("-");break}case N.LESS_THAN_SIGN:{this.state=U.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case N.GREATER_THAN_SIGN:{this.state=U.SCRIPT_DATA,this._emitChars(">");break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.state=U.SCRIPT_DATA_ESCAPED,this._emitChars(Hn);break}case N.EOF:{this._err(ce.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=U.SCRIPT_DATA_ESCAPED,this._emitCodePoint(t);}}_stateScriptDataEscapedLessThanSign(t){t===N.SOLIDUS?this.state=U.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:Zp(t)?(this._emitChars("<"),this.state=U.SCRIPT_DATA_DOUBLE_ESCAPE_START,this._stateScriptDataDoubleEscapeStart(t)):(this._emitChars("<"),this.state=U.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(t));}_stateScriptDataEscapedEndTagOpen(t){Zp(t)?(this.state=U.SCRIPT_DATA_ESCAPED_END_TAG_NAME,this._stateScriptDataEscapedEndTagName(t)):(this._emitChars("</"),this.state=U.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(t));}_stateScriptDataEscapedEndTagName(t){this.handleSpecialEndTag(t)&&(this._emitChars("</"),this.state=U.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(t));}_stateScriptDataDoubleEscapeStart(t){if(this.preprocessor.startsWith(Qi.SCRIPT,false)&&Tce(this.preprocessor.peek(Qi.SCRIPT.length))){this._emitCodePoint(t);for(let n=0;n<Qi.SCRIPT.length;n++)this._emitCodePoint(this._consume());this.state=U.SCRIPT_DATA_DOUBLE_ESCAPED;}else this._ensureHibernation()||(this.state=U.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(t));}_stateScriptDataDoubleEscaped(t){switch(t){case N.HYPHEN_MINUS:{this.state=U.SCRIPT_DATA_DOUBLE_ESCAPED_DASH,this._emitChars("-");break}case N.LESS_THAN_SIGN:{this.state=U.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this._emitChars(Hn);break}case N.EOF:{this._err(ce.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this._emitCodePoint(t);}}_stateScriptDataDoubleEscapedDash(t){switch(t){case N.HYPHEN_MINUS:{this.state=U.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH,this._emitChars("-");break}case N.LESS_THAN_SIGN:{this.state=U.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.state=U.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(Hn);break}case N.EOF:{this._err(ce.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=U.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(t);}}_stateScriptDataDoubleEscapedDashDash(t){switch(t){case N.HYPHEN_MINUS:{this._emitChars("-");break}case N.LESS_THAN_SIGN:{this.state=U.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case N.GREATER_THAN_SIGN:{this.state=U.SCRIPT_DATA,this._emitChars(">");break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.state=U.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(Hn);break}case N.EOF:{this._err(ce.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=U.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(t);}}_stateScriptDataDoubleEscapedLessThanSign(t){t===N.SOLIDUS?(this.state=U.SCRIPT_DATA_DOUBLE_ESCAPE_END,this._emitChars("/")):(this.state=U.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(t));}_stateScriptDataDoubleEscapeEnd(t){if(this.preprocessor.startsWith(Qi.SCRIPT,false)&&Tce(this.preprocessor.peek(Qi.SCRIPT.length))){this._emitCodePoint(t);for(let n=0;n<Qi.SCRIPT.length;n++)this._emitCodePoint(this._consume());this.state=U.SCRIPT_DATA_ESCAPED;}else this._ensureHibernation()||(this.state=U.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(t));}_stateBeforeAttributeName(t){switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.SOLIDUS:case N.GREATER_THAN_SIGN:case N.EOF:{this.state=U.AFTER_ATTRIBUTE_NAME,this._stateAfterAttributeName(t);break}case N.EQUALS_SIGN:{this._err(ce.unexpectedEqualsSignBeforeAttributeName),this._createAttr("="),this.state=U.ATTRIBUTE_NAME;break}default:this._createAttr(""),this.state=U.ATTRIBUTE_NAME,this._stateAttributeName(t);}}_stateAttributeName(t){switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:case N.SOLIDUS:case N.GREATER_THAN_SIGN:case N.EOF:{this._leaveAttrName(),this.state=U.AFTER_ATTRIBUTE_NAME,this._stateAfterAttributeName(t);break}case N.EQUALS_SIGN:{this._leaveAttrName(),this.state=U.BEFORE_ATTRIBUTE_VALUE;break}case N.QUOTATION_MARK:case N.APOSTROPHE:case N.LESS_THAN_SIGN:{this._err(ce.unexpectedCharacterInAttributeName),this.currentAttr.name+=String.fromCodePoint(t);break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.currentAttr.name+=Hn;break}default:this.currentAttr.name+=String.fromCodePoint(fE(t)?AP(t):t);}}_stateAfterAttributeName(t){switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.SOLIDUS:{this.state=U.SELF_CLOSING_START_TAG;break}case N.EQUALS_SIGN:{this.state=U.BEFORE_ATTRIBUTE_VALUE;break}case N.GREATER_THAN_SIGN:{this.state=U.DATA,this.emitCurrentTagToken();break}case N.EOF:{this._err(ce.eofInTag),this._emitEOFToken();break}default:this._createAttr(""),this.state=U.ATTRIBUTE_NAME,this._stateAttributeName(t);}}_stateBeforeAttributeValue(t){switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.QUOTATION_MARK:{this.state=U.ATTRIBUTE_VALUE_DOUBLE_QUOTED;break}case N.APOSTROPHE:{this.state=U.ATTRIBUTE_VALUE_SINGLE_QUOTED;break}case N.GREATER_THAN_SIGN:{this._err(ce.missingAttributeValue),this.state=U.DATA,this.emitCurrentTagToken();break}default:this.state=U.ATTRIBUTE_VALUE_UNQUOTED,this._stateAttributeValueUnquoted(t);}}_stateAttributeValueDoubleQuoted(t){switch(t){case N.QUOTATION_MARK:{this.state=U.AFTER_ATTRIBUTE_VALUE_QUOTED;break}case N.AMPERSAND:{this._startCharacterReference();break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.currentAttr.value+=Hn;break}case N.EOF:{this._err(ce.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(t);}}_stateAttributeValueSingleQuoted(t){switch(t){case N.APOSTROPHE:{this.state=U.AFTER_ATTRIBUTE_VALUE_QUOTED;break}case N.AMPERSAND:{this._startCharacterReference();break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.currentAttr.value+=Hn;break}case N.EOF:{this._err(ce.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(t);}}_stateAttributeValueUnquoted(t){switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this._leaveAttrValue(),this.state=U.BEFORE_ATTRIBUTE_NAME;break}case N.AMPERSAND:{this._startCharacterReference();break}case N.GREATER_THAN_SIGN:{this._leaveAttrValue(),this.state=U.DATA,this.emitCurrentTagToken();break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.currentAttr.value+=Hn;break}case N.QUOTATION_MARK:case N.APOSTROPHE:case N.LESS_THAN_SIGN:case N.EQUALS_SIGN:case N.GRAVE_ACCENT:{this._err(ce.unexpectedCharacterInUnquotedAttributeValue),this.currentAttr.value+=String.fromCodePoint(t);break}case N.EOF:{this._err(ce.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(t);}}_stateAfterAttributeValueQuoted(t){switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this._leaveAttrValue(),this.state=U.BEFORE_ATTRIBUTE_NAME;break}case N.SOLIDUS:{this._leaveAttrValue(),this.state=U.SELF_CLOSING_START_TAG;break}case N.GREATER_THAN_SIGN:{this._leaveAttrValue(),this.state=U.DATA,this.emitCurrentTagToken();break}case N.EOF:{this._err(ce.eofInTag),this._emitEOFToken();break}default:this._err(ce.missingWhitespaceBetweenAttributes),this.state=U.BEFORE_ATTRIBUTE_NAME,this._stateBeforeAttributeName(t);}}_stateSelfClosingStartTag(t){switch(t){case N.GREATER_THAN_SIGN:{let n=this.currentToken;n.selfClosing=true,this.state=U.DATA,this.emitCurrentTagToken();break}case N.EOF:{this._err(ce.eofInTag),this._emitEOFToken();break}default:this._err(ce.unexpectedSolidusInTag),this.state=U.BEFORE_ATTRIBUTE_NAME,this._stateBeforeAttributeName(t);}}_stateBogusComment(t){let n=this.currentToken;switch(t){case N.GREATER_THAN_SIGN:{this.state=U.DATA,this.emitCurrentComment(n);break}case N.EOF:{this.emitCurrentComment(n),this._emitEOFToken();break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.data+=Hn;break}default:n.data+=String.fromCodePoint(t);}}_stateMarkupDeclarationOpen(t){this._consumeSequenceIfMatch(Qi.DASH_DASH,true)?(this._createCommentToken(Qi.DASH_DASH.length+1),this.state=U.COMMENT_START):this._consumeSequenceIfMatch(Qi.DOCTYPE,false)?(this.currentLocation=this.getCurrentLocation(Qi.DOCTYPE.length+1),this.state=U.DOCTYPE):this._consumeSequenceIfMatch(Qi.CDATA_START,true)?this.inForeignNode?this.state=U.CDATA_SECTION:(this._err(ce.cdataInHtmlContent),this._createCommentToken(Qi.CDATA_START.length+1),this.currentToken.data="[CDATA[",this.state=U.BOGUS_COMMENT):this._ensureHibernation()||(this._err(ce.incorrectlyOpenedComment),this._createCommentToken(2),this.state=U.BOGUS_COMMENT,this._stateBogusComment(t));}_stateCommentStart(t){switch(t){case N.HYPHEN_MINUS:{this.state=U.COMMENT_START_DASH;break}case N.GREATER_THAN_SIGN:{this._err(ce.abruptClosingOfEmptyComment),this.state=U.DATA;let n=this.currentToken;this.emitCurrentComment(n);break}default:this.state=U.COMMENT,this._stateComment(t);}}_stateCommentStartDash(t){let n=this.currentToken;switch(t){case N.HYPHEN_MINUS:{this.state=U.COMMENT_END;break}case N.GREATER_THAN_SIGN:{this._err(ce.abruptClosingOfEmptyComment),this.state=U.DATA,this.emitCurrentComment(n);break}case N.EOF:{this._err(ce.eofInComment),this.emitCurrentComment(n),this._emitEOFToken();break}default:n.data+="-",this.state=U.COMMENT,this._stateComment(t);}}_stateComment(t){let n=this.currentToken;switch(t){case N.HYPHEN_MINUS:{this.state=U.COMMENT_END_DASH;break}case N.LESS_THAN_SIGN:{n.data+="<",this.state=U.COMMENT_LESS_THAN_SIGN;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.data+=Hn;break}case N.EOF:{this._err(ce.eofInComment),this.emitCurrentComment(n),this._emitEOFToken();break}default:n.data+=String.fromCodePoint(t);}}_stateCommentLessThanSign(t){let n=this.currentToken;switch(t){case N.EXCLAMATION_MARK:{n.data+="!",this.state=U.COMMENT_LESS_THAN_SIGN_BANG;break}case N.LESS_THAN_SIGN:{n.data+="<";break}default:this.state=U.COMMENT,this._stateComment(t);}}_stateCommentLessThanSignBang(t){t===N.HYPHEN_MINUS?this.state=U.COMMENT_LESS_THAN_SIGN_BANG_DASH:(this.state=U.COMMENT,this._stateComment(t));}_stateCommentLessThanSignBangDash(t){t===N.HYPHEN_MINUS?this.state=U.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH:(this.state=U.COMMENT_END_DASH,this._stateCommentEndDash(t));}_stateCommentLessThanSignBangDashDash(t){t!==N.GREATER_THAN_SIGN&&t!==N.EOF&&this._err(ce.nestedComment),this.state=U.COMMENT_END,this._stateCommentEnd(t);}_stateCommentEndDash(t){let n=this.currentToken;switch(t){case N.HYPHEN_MINUS:{this.state=U.COMMENT_END;break}case N.EOF:{this._err(ce.eofInComment),this.emitCurrentComment(n),this._emitEOFToken();break}default:n.data+="-",this.state=U.COMMENT,this._stateComment(t);}}_stateCommentEnd(t){let n=this.currentToken;switch(t){case N.GREATER_THAN_SIGN:{this.state=U.DATA,this.emitCurrentComment(n);break}case N.EXCLAMATION_MARK:{this.state=U.COMMENT_END_BANG;break}case N.HYPHEN_MINUS:{n.data+="-";break}case N.EOF:{this._err(ce.eofInComment),this.emitCurrentComment(n),this._emitEOFToken();break}default:n.data+="--",this.state=U.COMMENT,this._stateComment(t);}}_stateCommentEndBang(t){let n=this.currentToken;switch(t){case N.HYPHEN_MINUS:{n.data+="--!",this.state=U.COMMENT_END_DASH;break}case N.GREATER_THAN_SIGN:{this._err(ce.incorrectlyClosedComment),this.state=U.DATA,this.emitCurrentComment(n);break}case N.EOF:{this._err(ce.eofInComment),this.emitCurrentComment(n),this._emitEOFToken();break}default:n.data+="--!",this.state=U.COMMENT,this._stateComment(t);}}_stateDoctype(t){switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this.state=U.BEFORE_DOCTYPE_NAME;break}case N.GREATER_THAN_SIGN:{this.state=U.BEFORE_DOCTYPE_NAME,this._stateBeforeDoctypeName(t);break}case N.EOF:{this._err(ce.eofInDoctype),this._createDoctypeToken(null);let n=this.currentToken;n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.missingWhitespaceBeforeDoctypeName),this.state=U.BEFORE_DOCTYPE_NAME,this._stateBeforeDoctypeName(t);}}_stateBeforeDoctypeName(t){if(fE(t))this._createDoctypeToken(String.fromCharCode(AP(t))),this.state=U.DOCTYPE_NAME;else switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.NULL:{this._err(ce.unexpectedNullCharacter),this._createDoctypeToken(Hn),this.state=U.DOCTYPE_NAME;break}case N.GREATER_THAN_SIGN:{this._err(ce.missingDoctypeName),this._createDoctypeToken(null);let n=this.currentToken;n.forceQuirks=true,this.emitCurrentDoctype(n),this.state=U.DATA;break}case N.EOF:{this._err(ce.eofInDoctype),this._createDoctypeToken(null);let n=this.currentToken;n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._createDoctypeToken(String.fromCodePoint(t)),this.state=U.DOCTYPE_NAME;}}_stateDoctypeName(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this.state=U.AFTER_DOCTYPE_NAME;break}case N.GREATER_THAN_SIGN:{this.state=U.DATA,this.emitCurrentDoctype(n);break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.name+=Hn;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:n.name+=String.fromCodePoint(fE(t)?AP(t):t);}}_stateAfterDoctypeName(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.GREATER_THAN_SIGN:{this.state=U.DATA,this.emitCurrentDoctype(n);break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._consumeSequenceIfMatch(Qi.PUBLIC,false)?this.state=U.AFTER_DOCTYPE_PUBLIC_KEYWORD:this._consumeSequenceIfMatch(Qi.SYSTEM,false)?this.state=U.AFTER_DOCTYPE_SYSTEM_KEYWORD:this._ensureHibernation()||(this._err(ce.invalidCharacterSequenceAfterDoctypeName),n.forceQuirks=true,this.state=U.BOGUS_DOCTYPE,this._stateBogusDoctype(t));}}_stateAfterDoctypePublicKeyword(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this.state=U.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;break}case N.QUOTATION_MARK:{this._err(ce.missingWhitespaceAfterDoctypePublicKeyword),n.publicId="",this.state=U.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;break}case N.APOSTROPHE:{this._err(ce.missingWhitespaceAfterDoctypePublicKeyword),n.publicId="",this.state=U.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;break}case N.GREATER_THAN_SIGN:{this._err(ce.missingDoctypePublicIdentifier),n.forceQuirks=true,this.state=U.DATA,this.emitCurrentDoctype(n);break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.missingQuoteBeforeDoctypePublicIdentifier),n.forceQuirks=true,this.state=U.BOGUS_DOCTYPE,this._stateBogusDoctype(t);}}_stateBeforeDoctypePublicIdentifier(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.QUOTATION_MARK:{n.publicId="",this.state=U.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;break}case N.APOSTROPHE:{n.publicId="",this.state=U.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;break}case N.GREATER_THAN_SIGN:{this._err(ce.missingDoctypePublicIdentifier),n.forceQuirks=true,this.state=U.DATA,this.emitCurrentDoctype(n);break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.missingQuoteBeforeDoctypePublicIdentifier),n.forceQuirks=true,this.state=U.BOGUS_DOCTYPE,this._stateBogusDoctype(t);}}_stateDoctypePublicIdentifierDoubleQuoted(t){let n=this.currentToken;switch(t){case N.QUOTATION_MARK:{this.state=U.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.publicId+=Hn;break}case N.GREATER_THAN_SIGN:{this._err(ce.abruptDoctypePublicIdentifier),n.forceQuirks=true,this.emitCurrentDoctype(n),this.state=U.DATA;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:n.publicId+=String.fromCodePoint(t);}}_stateDoctypePublicIdentifierSingleQuoted(t){let n=this.currentToken;switch(t){case N.APOSTROPHE:{this.state=U.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.publicId+=Hn;break}case N.GREATER_THAN_SIGN:{this._err(ce.abruptDoctypePublicIdentifier),n.forceQuirks=true,this.emitCurrentDoctype(n),this.state=U.DATA;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:n.publicId+=String.fromCodePoint(t);}}_stateAfterDoctypePublicIdentifier(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this.state=U.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;break}case N.GREATER_THAN_SIGN:{this.state=U.DATA,this.emitCurrentDoctype(n);break}case N.QUOTATION_MARK:{this._err(ce.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),n.systemId="",this.state=U.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case N.APOSTROPHE:{this._err(ce.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),n.systemId="",this.state=U.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.missingQuoteBeforeDoctypeSystemIdentifier),n.forceQuirks=true,this.state=U.BOGUS_DOCTYPE,this._stateBogusDoctype(t);}}_stateBetweenDoctypePublicAndSystemIdentifiers(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.GREATER_THAN_SIGN:{this.emitCurrentDoctype(n),this.state=U.DATA;break}case N.QUOTATION_MARK:{n.systemId="",this.state=U.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case N.APOSTROPHE:{n.systemId="",this.state=U.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.missingQuoteBeforeDoctypeSystemIdentifier),n.forceQuirks=true,this.state=U.BOGUS_DOCTYPE,this._stateBogusDoctype(t);}}_stateAfterDoctypeSystemKeyword(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this.state=U.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;break}case N.QUOTATION_MARK:{this._err(ce.missingWhitespaceAfterDoctypeSystemKeyword),n.systemId="",this.state=U.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case N.APOSTROPHE:{this._err(ce.missingWhitespaceAfterDoctypeSystemKeyword),n.systemId="",this.state=U.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case N.GREATER_THAN_SIGN:{this._err(ce.missingDoctypeSystemIdentifier),n.forceQuirks=true,this.state=U.DATA,this.emitCurrentDoctype(n);break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.missingQuoteBeforeDoctypeSystemIdentifier),n.forceQuirks=true,this.state=U.BOGUS_DOCTYPE,this._stateBogusDoctype(t);}}_stateBeforeDoctypeSystemIdentifier(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.QUOTATION_MARK:{n.systemId="",this.state=U.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case N.APOSTROPHE:{n.systemId="",this.state=U.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case N.GREATER_THAN_SIGN:{this._err(ce.missingDoctypeSystemIdentifier),n.forceQuirks=true,this.state=U.DATA,this.emitCurrentDoctype(n);break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.missingQuoteBeforeDoctypeSystemIdentifier),n.forceQuirks=true,this.state=U.BOGUS_DOCTYPE,this._stateBogusDoctype(t);}}_stateDoctypeSystemIdentifierDoubleQuoted(t){let n=this.currentToken;switch(t){case N.QUOTATION_MARK:{this.state=U.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.systemId+=Hn;break}case N.GREATER_THAN_SIGN:{this._err(ce.abruptDoctypeSystemIdentifier),n.forceQuirks=true,this.emitCurrentDoctype(n),this.state=U.DATA;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:n.systemId+=String.fromCodePoint(t);}}_stateDoctypeSystemIdentifierSingleQuoted(t){let n=this.currentToken;switch(t){case N.APOSTROPHE:{this.state=U.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.systemId+=Hn;break}case N.GREATER_THAN_SIGN:{this._err(ce.abruptDoctypeSystemIdentifier),n.forceQuirks=true,this.emitCurrentDoctype(n),this.state=U.DATA;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:n.systemId+=String.fromCodePoint(t);}}_stateAfterDoctypeSystemIdentifier(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.GREATER_THAN_SIGN:{this.emitCurrentDoctype(n),this.state=U.DATA;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.unexpectedCharacterAfterDoctypeSystemIdentifier),this.state=U.BOGUS_DOCTYPE,this._stateBogusDoctype(t);}}_stateBogusDoctype(t){let n=this.currentToken;switch(t){case N.GREATER_THAN_SIGN:{this.emitCurrentDoctype(n),this.state=U.DATA;break}case N.NULL:{this._err(ce.unexpectedNullCharacter);break}case N.EOF:{this.emitCurrentDoctype(n),this._emitEOFToken();break}}}_stateCdataSection(t){switch(t){case N.RIGHT_SQUARE_BRACKET:{this.state=U.CDATA_SECTION_BRACKET;break}case N.EOF:{this._err(ce.eofInCdata),this._emitEOFToken();break}default:this._emitCodePoint(t);}}_stateCdataSectionBracket(t){t===N.RIGHT_SQUARE_BRACKET?this.state=U.CDATA_SECTION_END:(this._emitChars("]"),this.state=U.CDATA_SECTION,this._stateCdataSection(t));}_stateCdataSectionEnd(t){switch(t){case N.GREATER_THAN_SIGN:{this.state=U.DATA;break}case N.RIGHT_SQUARE_BRACKET:{this._emitChars("]");break}default:this._emitChars("]]"),this.state=U.CDATA_SECTION,this._stateCdataSection(t);}}_stateCharacterReference(){let t=this.entityDecoder.write(this.preprocessor.html,this.preprocessor.pos);if(t<0)if(this.preprocessor.lastChunkWritten)t=this.entityDecoder.end();else {this.active=false,this.preprocessor.pos=this.preprocessor.html.length-1,this.consumedAfterSnapshot=0,this.preprocessor.endOfChunkHit=true;return}t===0?(this.preprocessor.pos=this.entityStartPos,this._flushCodePointConsumedAsCharacterReference(N.AMPERSAND),this.state=!this._isCharacterReferenceInAttribute()&&bce(this.preprocessor.peek(1))?U.AMBIGUOUS_AMPERSAND:this.returnState):this.state=this.returnState;}_stateAmbiguousAmpersand(t){bce(t)?this._flushCodePointConsumedAsCharacterReference(t):(t===N.SEMICOLON&&this._err(ce.unknownNamedCharacterReference),this.state=this.returnState,this._callState(t));}};var Rce=new Set([T.DD,T.DT,T.LI,T.OPTGROUP,T.OPTION,T.P,T.RB,T.RP,T.RT,T.RTC]),Ece=new Set([...Rce,T.CAPTION,T.COLGROUP,T.TBODY,T.TD,T.TFOOT,T.TH,T.THEAD,T.TR]),EP=new Set([T.APPLET,T.CAPTION,T.HTML,T.MARQUEE,T.OBJECT,T.TABLE,T.TD,T.TEMPLATE,T.TH]),d4e=new Set([...EP,T.OL,T.UL]),u4e=new Set([...EP,T.BUTTON]),Cce=new Set([T.ANNOTATION_XML,T.MI,T.MN,T.MO,T.MS,T.MTEXT]),vce=new Set([T.DESC,T.FOREIGN_OBJECT,T.TITLE]),p4e=new Set([T.TR,T.TEMPLATE,T.HTML]),m4e=new Set([T.TBODY,T.TFOOT,T.THEAD,T.TEMPLATE,T.HTML]),h4e=new Set([T.TABLE,T.TEMPLATE,T.HTML]),g4e=new Set([T.TD,T.TH]),CP=class{get currentTmplContentOrNode(){return this._isInTemplate()?this.treeAdapter.getTemplateContent(this.current):this.current}constructor(t,n,o){this.treeAdapter=n,this.handler=o,this.items=[],this.tagIDs=[],this.stackTop=-1,this.tmplCount=0,this.currentTagId=T.UNKNOWN,this.current=t;}_indexOf(t){return this.items.lastIndexOf(t,this.stackTop)}_isInTemplate(){return this.currentTagId===T.TEMPLATE&&this.treeAdapter.getNamespaceURI(this.current)===Te.HTML}_updateCurrentElement(){this.current=this.items[this.stackTop],this.currentTagId=this.tagIDs[this.stackTop];}push(t,n){this.stackTop++,this.items[this.stackTop]=t,this.current=t,this.tagIDs[this.stackTop]=n,this.currentTagId=n,this._isInTemplate()&&this.tmplCount++,this.handler.onItemPush(t,n,true);}pop(){let t=this.current;this.tmplCount>0&&this._isInTemplate()&&this.tmplCount--,this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(t,true);}replace(t,n){let o=this._indexOf(t);this.items[o]=n,o===this.stackTop&&(this.current=n);}insertAfter(t,n,o){let r=this._indexOf(t)+1;this.items.splice(r,0,n),this.tagIDs.splice(r,0,o),this.stackTop++,r===this.stackTop&&this._updateCurrentElement(),this.current&&this.currentTagId!==void 0&&this.handler.onItemPush(this.current,this.currentTagId,r===this.stackTop);}popUntilTagNamePopped(t){let n=this.stackTop+1;do n=this.tagIDs.lastIndexOf(t,n-1);while(n>0&&this.treeAdapter.getNamespaceURI(this.items[n])!==Te.HTML);this.shortenToLength(Math.max(n,0));}shortenToLength(t){for(;this.stackTop>=t;){let n=this.current;this.tmplCount>0&&this._isInTemplate()&&(this.tmplCount-=1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(n,this.stackTop<t);}}popUntilElementPopped(t){let n=this._indexOf(t);this.shortenToLength(Math.max(n,0));}popUntilPopped(t,n){let o=this._indexOfTagNames(t,n);this.shortenToLength(Math.max(o,0));}popUntilNumberedHeaderPopped(){this.popUntilPopped(gE,Te.HTML);}popUntilTableCellPopped(){this.popUntilPopped(g4e,Te.HTML);}popAllUpToHtmlElement(){this.tmplCount=0,this.shortenToLength(1);}_indexOfTagNames(t,n){for(let o=this.stackTop;o>=0;o--)if(t.has(this.tagIDs[o])&&this.treeAdapter.getNamespaceURI(this.items[o])===n)return o;return -1}clearBackTo(t,n){let o=this._indexOfTagNames(t,n);this.shortenToLength(o+1);}clearBackToTableContext(){this.clearBackTo(h4e,Te.HTML);}clearBackToTableBodyContext(){this.clearBackTo(m4e,Te.HTML);}clearBackToTableRowContext(){this.clearBackTo(p4e,Te.HTML);}remove(t){let n=this._indexOf(t);n>=0&&(n===this.stackTop?this.pop():(this.items.splice(n,1),this.tagIDs.splice(n,1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(t,false)));}tryPeekProperlyNestedBodyElement(){return this.stackTop>=1&&this.tagIDs[1]===T.BODY?this.items[1]:null}contains(t){return this._indexOf(t)>-1}getCommonAncestor(t){let n=this._indexOf(t)-1;return n>=0?this.items[n]:null}isRootHtmlElementCurrent(){return this.stackTop===0&&this.tagIDs[0]===T.HTML}hasInDynamicScope(t,n){for(let o=this.stackTop;o>=0;o--){let r=this.tagIDs[o];switch(this.treeAdapter.getNamespaceURI(this.items[o])){case Te.HTML:{if(r===t)return true;if(n.has(r))return false;break}case Te.SVG:{if(vce.has(r))return false;break}case Te.MATHML:{if(Cce.has(r))return false;break}}}return true}hasInScope(t){return this.hasInDynamicScope(t,EP)}hasInListItemScope(t){return this.hasInDynamicScope(t,d4e)}hasInButtonScope(t){return this.hasInDynamicScope(t,u4e)}hasNumberedHeaderInScope(){for(let t=this.stackTop;t>=0;t--){let n=this.tagIDs[t];switch(this.treeAdapter.getNamespaceURI(this.items[t])){case Te.HTML:{if(gE.has(n))return true;if(EP.has(n))return false;break}case Te.SVG:{if(vce.has(n))return false;break}case Te.MATHML:{if(Cce.has(n))return false;break}}}return true}hasInTableScope(t){for(let n=this.stackTop;n>=0;n--)if(this.treeAdapter.getNamespaceURI(this.items[n])===Te.HTML)switch(this.tagIDs[n]){case t:return true;case T.TABLE:case T.HTML:return false}return true}hasTableBodyContextInTableScope(){for(let t=this.stackTop;t>=0;t--)if(this.treeAdapter.getNamespaceURI(this.items[t])===Te.HTML)switch(this.tagIDs[t]){case T.TBODY:case T.THEAD:case T.TFOOT:return true;case T.TABLE:case T.HTML:return false}return true}hasInSelectScope(t){for(let n=this.stackTop;n>=0;n--)if(this.treeAdapter.getNamespaceURI(this.items[n])===Te.HTML)switch(this.tagIDs[n]){case t:return true;case T.OPTION:case T.OPTGROUP:break;default:return false}return true}generateImpliedEndTags(){for(;this.currentTagId!==void 0&&Rce.has(this.currentTagId);)this.pop();}generateImpliedEndTagsThoroughly(){for(;this.currentTagId!==void 0&&Ece.has(this.currentTagId);)this.pop();}generateImpliedEndTagsWithExclusion(t){for(;this.currentTagId!==void 0&&this.currentTagId!==t&&Ece.has(this.currentTagId);)this.pop();}};var kl;(function(e){e[e.Marker=0]="Marker",e[e.Element=1]="Element";})(kl||(kl={}));var wce={type:kl.Marker},vP=class{constructor(t){this.treeAdapter=t,this.entries=[],this.bookmark=null;}_getNoahArkConditionCandidates(t,n){let o=[],r=n.length,i=this.treeAdapter.getTagName(t),s=this.treeAdapter.getNamespaceURI(t);for(let a=0;a<this.entries.length;a++){let l=this.entries[a];if(l.type===kl.Marker)break;let{element:c}=l;if(this.treeAdapter.getTagName(c)===i&&this.treeAdapter.getNamespaceURI(c)===s){let d=this.treeAdapter.getAttrList(c);d.length===r&&o.push({idx:a,attrs:d});}}return o}_ensureNoahArkCondition(t){if(this.entries.length<3)return;let n=this.treeAdapter.getAttrList(t),o=this._getNoahArkConditionCandidates(t,n);if(o.length<3)return;let r=new Map(n.map(s=>[s.name,s.value])),i=0;for(let s=0;s<o.length;s++){let a=o[s];a.attrs.every(l=>r.get(l.name)===l.value)&&(i+=1,i>=3&&this.entries.splice(a.idx,1));}}insertMarker(){this.entries.unshift(wce);}pushElement(t,n){this._ensureNoahArkCondition(t),this.entries.unshift({type:kl.Element,element:t,token:n});}insertElementAfterBookmark(t,n){let o=this.entries.indexOf(this.bookmark);this.entries.splice(o,0,{type:kl.Element,element:t,token:n});}removeEntry(t){let n=this.entries.indexOf(t);n!==-1&&this.entries.splice(n,1);}clearToLastMarker(){let t=this.entries.indexOf(wce);t===-1?this.entries.length=0:this.entries.splice(0,t+1);}getElementEntryInScopeWithTagName(t){let n=this.entries.find(o=>o.type===kl.Marker||this.treeAdapter.getTagName(o.element)===t);return n&&n.type===kl.Element?n:null}getElementEntry(t){return this.entries.find(n=>n.type===kl.Element&&n.element===t)}};var Dl={createDocument(){return {nodeName:"#document",mode:Zi.NO_QUIRKS,childNodes:[]}},createDocumentFragment(){return {nodeName:"#document-fragment",childNodes:[]}},createElement(e,t,n){return {nodeName:e,tagName:e,attrs:n,namespaceURI:t,childNodes:[],parentNode:null}},createCommentNode(e){return {nodeName:"#comment",data:e,parentNode:null}},createTextNode(e){return {nodeName:"#text",value:e,parentNode:null}},appendChild(e,t){e.childNodes.push(t),t.parentNode=e;},insertBefore(e,t,n){let o=e.childNodes.indexOf(n);e.childNodes.splice(o,0,t),t.parentNode=e;},setTemplateContent(e,t){e.content=t;},getTemplateContent(e){return e.content},setDocumentType(e,t,n,o){let r=e.childNodes.find(i=>i.nodeName==="#documentType");if(r)r.name=t,r.publicId=n,r.systemId=o;else {let i={nodeName:"#documentType",name:t,publicId:n,systemId:o,parentNode:null};Dl.appendChild(e,i);}},setDocumentMode(e,t){e.mode=t;},getDocumentMode(e){return e.mode},detachNode(e){if(e.parentNode){let t=e.parentNode.childNodes.indexOf(e);e.parentNode.childNodes.splice(t,1),e.parentNode=null;}},insertText(e,t){if(e.childNodes.length>0){let n=e.childNodes[e.childNodes.length-1];if(Dl.isTextNode(n)){n.value+=t;return}}Dl.appendChild(e,Dl.createTextNode(t));},insertTextBefore(e,t,n){let o=e.childNodes[e.childNodes.indexOf(n)-1];o&&Dl.isTextNode(o)?o.value+=t:Dl.insertBefore(e,Dl.createTextNode(t),n);},adoptAttributes(e,t){let n=new Set(e.attrs.map(o=>o.name));for(let o=0;o<t.length;o++)n.has(t[o].name)||e.attrs.push(t[o]);},getFirstChild(e){return e.childNodes[0]},getChildNodes(e){return e.childNodes},getParentNode(e){return e.parentNode},getAttrList(e){return e.attrs},getTagName(e){return e.tagName},getNamespaceURI(e){return e.namespaceURI},getTextNodeContent(e){return e.value},getCommentNodeContent(e){return e.data},getDocumentTypeNodeName(e){return e.name},getDocumentTypeNodePublicId(e){return e.publicId},getDocumentTypeNodeSystemId(e){return e.systemId},isTextNode(e){return e.nodeName==="#text"},isCommentNode(e){return e.nodeName==="#comment"},isDocumentTypeNode(e){return e.nodeName==="#documentType"},isElementNode(e){return Object.prototype.hasOwnProperty.call(e,"tagName")},setNodeSourceCodeLocation(e,t){e.sourceCodeLocation=t;},getNodeSourceCodeLocation(e){return e.sourceCodeLocation},updateNodeSourceCodeLocation(e,t){e.sourceCodeLocation={...e.sourceCodeLocation,...t};}};var xce="html",f4e="about:legacy-compat",y4e="http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd",_ce=["+//silmaril//dtd html pro v0r11 19970101//","-//as//dtd html 3.0 aswedit + extensions//","-//advasoft ltd//dtd html 3.0 aswedit + extensions//","-//ietf//dtd html 2.0 level 1//","-//ietf//dtd html 2.0 level 2//","-//ietf//dtd html 2.0 strict level 1//","-//ietf//dtd html 2.0 strict level 2//","-//ietf//dtd html 2.0 strict//","-//ietf//dtd html 2.0//","-//ietf//dtd html 2.1e//","-//ietf//dtd html 3.0//","-//ietf//dtd html 3.2 final//","-//ietf//dtd html 3.2//","-//ietf//dtd html 3//","-//ietf//dtd html level 0//","-//ietf//dtd html level 1//","-//ietf//dtd html level 2//","-//ietf//dtd html level 3//","-//ietf//dtd html strict level 0//","-//ietf//dtd html strict level 1//","-//ietf//dtd html strict level 2//","-//ietf//dtd html strict level 3//","-//ietf//dtd html strict//","-//ietf//dtd html//","-//metrius//dtd metrius presentational//","-//microsoft//dtd internet explorer 2.0 html strict//","-//microsoft//dtd internet explorer 2.0 html//","-//microsoft//dtd internet explorer 2.0 tables//","-//microsoft//dtd internet explorer 3.0 html strict//","-//microsoft//dtd internet explorer 3.0 html//","-//microsoft//dtd internet explorer 3.0 tables//","-//netscape comm. corp.//dtd html//","-//netscape comm. corp.//dtd strict html//","-//o'reilly and associates//dtd html 2.0//","-//o'reilly and associates//dtd html extended 1.0//","-//o'reilly and associates//dtd html extended relaxed 1.0//","-//sq//dtd html 2.0 hotmetal + extensions//","-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//","-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//","-//spyglass//dtd html 2.0 extended//","-//sun microsystems corp.//dtd hotjava html//","-//sun microsystems corp.//dtd hotjava strict html//","-//w3c//dtd html 3 1995-03-24//","-//w3c//dtd html 3.2 draft//","-//w3c//dtd html 3.2 final//","-//w3c//dtd html 3.2//","-//w3c//dtd html 3.2s draft//","-//w3c//dtd html 4.0 frameset//","-//w3c//dtd html 4.0 transitional//","-//w3c//dtd html experimental 19960712//","-//w3c//dtd html experimental 970421//","-//w3c//dtd w3 html//","-//w3o//dtd w3 html 3.0//","-//webtechs//dtd mozilla html 2.0//","-//webtechs//dtd mozilla html//"],S4e=[..._ce,"-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"],b4e=new Set(["-//w3o//dtd w3 html strict 3.0//en//","-/w3c/dtd html 4.0 transitional/en","html"]),Pce=["-//w3c//dtd xhtml 1.0 frameset//","-//w3c//dtd xhtml 1.0 transitional//"],T4e=[...Pce,"-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"];function Ice(e,t){return t.some(n=>e.startsWith(n))}function Oce(e){return e.name===xce&&e.publicId===null&&(e.systemId===null||e.systemId===f4e)}function Mce(e){if(e.name!==xce)return Zi.QUIRKS;let{systemId:t}=e;if(t&&t.toLowerCase()===y4e)return Zi.QUIRKS;let{publicId:n}=e;if(n!==null){if(n=n.toLowerCase(),b4e.has(n))return Zi.QUIRKS;let o=t===null?S4e:_ce;if(Ice(n,o))return Zi.QUIRKS;if(o=t===null?Pce:T4e,Ice(n,o))return Zi.LIMITED_QUIRKS}return Zi.NO_QUIRKS}var Nce={TEXT_HTML:"text/html",APPLICATION_XML:"application/xhtml+xml"},E4e="definitionurl",C4e="definitionURL",v4e=new Map(["attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map(e=>[e.toLowerCase(),e])),R4e=new Map([["xlink:actuate",{prefix:"xlink",name:"actuate",namespace:Te.XLINK}],["xlink:arcrole",{prefix:"xlink",name:"arcrole",namespace:Te.XLINK}],["xlink:href",{prefix:"xlink",name:"href",namespace:Te.XLINK}],["xlink:role",{prefix:"xlink",name:"role",namespace:Te.XLINK}],["xlink:show",{prefix:"xlink",name:"show",namespace:Te.XLINK}],["xlink:title",{prefix:"xlink",name:"title",namespace:Te.XLINK}],["xlink:type",{prefix:"xlink",name:"type",namespace:Te.XLINK}],["xml:lang",{prefix:"xml",name:"lang",namespace:Te.XML}],["xml:space",{prefix:"xml",name:"space",namespace:Te.XML}],["xmlns",{prefix:"",name:"xmlns",namespace:Te.XMLNS}],["xmlns:xlink",{prefix:"xmlns",name:"xlink",namespace:Te.XMLNS}]]),w4e=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map(e=>[e.toLowerCase(),e])),I4e=new Set([T.B,T.BIG,T.BLOCKQUOTE,T.BODY,T.BR,T.CENTER,T.CODE,T.DD,T.DIV,T.DL,T.DT,T.EM,T.EMBED,T.H1,T.H2,T.H3,T.H4,T.H5,T.H6,T.HEAD,T.HR,T.I,T.IMG,T.LI,T.LISTING,T.MENU,T.META,T.NOBR,T.OL,T.P,T.PRE,T.RUBY,T.S,T.SMALL,T.SPAN,T.STRONG,T.STRIKE,T.SUB,T.SUP,T.TABLE,T.TT,T.U,T.UL,T.VAR]);function Lce(e){let t=e.tagID;return t===T.FONT&&e.attrs.some(({name:o})=>o===Tu.COLOR||o===Tu.SIZE||o===Tu.FACE)||I4e.has(t)}function AH(e){for(let t=0;t<e.attrs.length;t++)if(e.attrs[t].name===E4e){e.attrs[t].name=C4e;break}}function EH(e){for(let t=0;t<e.attrs.length;t++){let n=v4e.get(e.attrs[t].name);n!=null&&(e.attrs[t].name=n);}}function RP(e){for(let t=0;t<e.attrs.length;t++){let n=R4e.get(e.attrs[t].name);n&&(e.attrs[t].prefix=n.prefix,e.attrs[t].name=n.name,e.attrs[t].namespace=n.namespace);}}function kce(e){let t=w4e.get(e.tagName);t!=null&&(e.tagName=t,e.tagID=Lh(e.tagName));}function x4e(e,t){return t===Te.MATHML&&(e===T.MI||e===T.MO||e===T.MN||e===T.MS||e===T.MTEXT)}function _4e(e,t,n){if(t===Te.MATHML&&e===T.ANNOTATION_XML){for(let o=0;o<n.length;o++)if(n[o].name===Tu.ENCODING){let r=n[o].value.toLowerCase();return r===Nce.TEXT_HTML||r===Nce.APPLICATION_XML}}return t===Te.SVG&&(e===T.FOREIGN_OBJECT||e===T.DESC||e===T.TITLE)}function Dce(e,t,n,o){return (!o||o===Te.HTML)&&_4e(e,t,n)||(!o||o===Te.MATHML)&&x4e(e,t)}var P4e="hidden",O4e=8,M4e=3,$;(function(e){e[e.INITIAL=0]="INITIAL",e[e.BEFORE_HTML=1]="BEFORE_HTML",e[e.BEFORE_HEAD=2]="BEFORE_HEAD",e[e.IN_HEAD=3]="IN_HEAD",e[e.IN_HEAD_NO_SCRIPT=4]="IN_HEAD_NO_SCRIPT",e[e.AFTER_HEAD=5]="AFTER_HEAD",e[e.IN_BODY=6]="IN_BODY",e[e.TEXT=7]="TEXT",e[e.IN_TABLE=8]="IN_TABLE",e[e.IN_TABLE_TEXT=9]="IN_TABLE_TEXT",e[e.IN_CAPTION=10]="IN_CAPTION",e[e.IN_COLUMN_GROUP=11]="IN_COLUMN_GROUP",e[e.IN_TABLE_BODY=12]="IN_TABLE_BODY",e[e.IN_ROW=13]="IN_ROW",e[e.IN_CELL=14]="IN_CELL",e[e.IN_SELECT=15]="IN_SELECT",e[e.IN_SELECT_IN_TABLE=16]="IN_SELECT_IN_TABLE",e[e.IN_TEMPLATE=17]="IN_TEMPLATE",e[e.AFTER_BODY=18]="AFTER_BODY",e[e.IN_FRAMESET=19]="IN_FRAMESET",e[e.AFTER_FRAMESET=20]="AFTER_FRAMESET",e[e.AFTER_AFTER_BODY=21]="AFTER_AFTER_BODY",e[e.AFTER_AFTER_FRAMESET=22]="AFTER_AFTER_FRAMESET";})($||($={}));var N4e={startLine:-1,startCol:-1,startOffset:-1,endLine:-1,endCol:-1,endOffset:-1},Gce=new Set([T.TABLE,T.TBODY,T.TFOOT,T.THEAD,T.TR]),Bce={scriptingEnabled:true,sourceCodeLocationInfo:false,treeAdapter:Dl,onParseError:null},RE=class{constructor(t,n,o=null,r=null){this.fragmentContext=o,this.scriptHandler=r,this.currentToken=null,this.stopped=false,this.insertionMode=$.INITIAL,this.originalInsertionMode=$.INITIAL,this.headElement=null,this.formElement=null,this.currentNotInHTML=false,this.tmplInsertionModeStack=[],this.pendingCharacterTokens=[],this.hasNonWhitespacePendingCharacterToken=false,this.framesetOk=true,this.skipNextNewLine=false,this.fosterParentingEnabled=false,this.options={...Bce,...t},this.treeAdapter=this.options.treeAdapter,this.onParseError=this.options.onParseError,this.onParseError&&(this.options.sourceCodeLocationInfo=true),this.document=n??this.treeAdapter.createDocument(),this.tokenizer=new yE(this.options,this),this.activeFormattingElements=new vP(this.treeAdapter),this.fragmentContextID=o?Lh(this.treeAdapter.getTagName(o)):T.UNKNOWN,this._setContextModes(o??this.document,this.fragmentContextID),this.openElements=new CP(this.document,this.treeAdapter,this);}static parse(t,n){let o=new this(n);return o.tokenizer.write(t,true),o.document}static getFragmentParser(t,n){let o={...Bce,...n};t??(t=o.treeAdapter.createElement(oe.TEMPLATE,Te.HTML,[]));let r=o.treeAdapter.createElement("documentmock",Te.HTML,[]),i=new this(o,r,t);return i.fragmentContextID===T.TEMPLATE&&i.tmplInsertionModeStack.unshift($.IN_TEMPLATE),i._initTokenizerForFragmentParsing(),i._insertFakeRootElement(),i._resetInsertionMode(),i._findFormInFragmentContext(),i}getFragment(){let t=this.treeAdapter.getFirstChild(this.document),n=this.treeAdapter.createDocumentFragment();return this._adoptNodes(t,n),n}_err(t,n,o){var r;if(!this.onParseError)return;let i=(r=t.location)!==null&&r!==void 0?r:N4e,s={code:n,startLine:i.startLine,startCol:i.startCol,startOffset:i.startOffset,endLine:o?i.startLine:i.endLine,endCol:o?i.startCol:i.endCol,endOffset:o?i.startOffset:i.endOffset};this.onParseError(s);}onItemPush(t,n,o){var r,i;(i=(r=this.treeAdapter).onItemPush)===null||i===void 0||i.call(r,t),o&&this.openElements.stackTop>0&&this._setContextModes(t,n);}onItemPop(t,n){var o,r;if(this.options.sourceCodeLocationInfo&&this._setEndLocation(t,this.currentToken),(r=(o=this.treeAdapter).onItemPop)===null||r===void 0||r.call(o,t,this.openElements.current),n){let i,s;this.openElements.stackTop===0&&this.fragmentContext?(i=this.fragmentContext,s=this.fragmentContextID):{current:i,currentTagId:s}=this.openElements,this._setContextModes(i,s);}}_setContextModes(t,n){let o=t===this.document||t&&this.treeAdapter.getNamespaceURI(t)===Te.HTML;this.currentNotInHTML=!o,this.tokenizer.inForeignNode=!o&&t!==void 0&&n!==void 0&&!this._isIntegrationPoint(n,t);}_switchToTextParsing(t,n){this._insertElement(t,Te.HTML),this.tokenizer.state=n,this.originalInsertionMode=this.insertionMode,this.insertionMode=$.TEXT;}switchToPlaintextParsing(){this.insertionMode=$.TEXT,this.originalInsertionMode=$.IN_BODY,this.tokenizer.state=Ri.PLAINTEXT;}_getAdjustedCurrentElement(){return this.openElements.stackTop===0&&this.fragmentContext?this.fragmentContext:this.openElements.current}_findFormInFragmentContext(){let t=this.fragmentContext;for(;t;){if(this.treeAdapter.getTagName(t)===oe.FORM){this.formElement=t;break}t=this.treeAdapter.getParentNode(t);}}_initTokenizerForFragmentParsing(){if(!(!this.fragmentContext||this.treeAdapter.getNamespaceURI(this.fragmentContext)!==Te.HTML))switch(this.fragmentContextID){case T.TITLE:case T.TEXTAREA:{this.tokenizer.state=Ri.RCDATA;break}case T.STYLE:case T.XMP:case T.IFRAME:case T.NOEMBED:case T.NOFRAMES:case T.NOSCRIPT:{this.tokenizer.state=Ri.RAWTEXT;break}case T.SCRIPT:{this.tokenizer.state=Ri.SCRIPT_DATA;break}case T.PLAINTEXT:{this.tokenizer.state=Ri.PLAINTEXT;break}}}_setDocumentType(t){let n=t.name||"",o=t.publicId||"",r=t.systemId||"";if(this.treeAdapter.setDocumentType(this.document,n,o,r),t.location){let s=this.treeAdapter.getChildNodes(this.document).find(a=>this.treeAdapter.isDocumentTypeNode(a));s&&this.treeAdapter.setNodeSourceCodeLocation(s,t.location);}}_attachElementToTree(t,n){if(this.options.sourceCodeLocationInfo){let o=n&&{...n,startTag:n};this.treeAdapter.setNodeSourceCodeLocation(t,o);}if(this._shouldFosterParentOnInsertion())this._fosterParentElement(t);else {let o=this.openElements.currentTmplContentOrNode;this.treeAdapter.appendChild(o??this.document,t);}}_appendElement(t,n){let o=this.treeAdapter.createElement(t.tagName,n,t.attrs);this._attachElementToTree(o,t.location);}_insertElement(t,n){let o=this.treeAdapter.createElement(t.tagName,n,t.attrs);this._attachElementToTree(o,t.location),this.openElements.push(o,t.tagID);}_insertFakeElement(t,n){let o=this.treeAdapter.createElement(t,Te.HTML,[]);this._attachElementToTree(o,null),this.openElements.push(o,n);}_insertTemplate(t){let n=this.treeAdapter.createElement(t.tagName,Te.HTML,t.attrs),o=this.treeAdapter.createDocumentFragment();this.treeAdapter.setTemplateContent(n,o),this._attachElementToTree(n,t.location),this.openElements.push(n,t.tagID),this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(o,null);}_insertFakeRootElement(){let t=this.treeAdapter.createElement(oe.HTML,Te.HTML,[]);this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(t,null),this.treeAdapter.appendChild(this.openElements.current,t),this.openElements.push(t,T.HTML);}_appendCommentNode(t,n){let o=this.treeAdapter.createCommentNode(t.data);this.treeAdapter.appendChild(n,o),this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(o,t.location);}_insertCharacters(t){let n,o;if(this._shouldFosterParentOnInsertion()?({parent:n,beforeElement:o}=this._findFosterParentingLocation(),o?this.treeAdapter.insertTextBefore(n,t.chars,o):this.treeAdapter.insertText(n,t.chars)):(n=this.openElements.currentTmplContentOrNode,this.treeAdapter.insertText(n,t.chars)),!t.location)return;let r=this.treeAdapter.getChildNodes(n),i=o?r.lastIndexOf(o):r.length,s=r[i-1];if(this.treeAdapter.getNodeSourceCodeLocation(s)){let{endLine:l,endCol:c,endOffset:d}=t.location;this.treeAdapter.updateNodeSourceCodeLocation(s,{endLine:l,endCol:c,endOffset:d});}else this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(s,t.location);}_adoptNodes(t,n){for(let o=this.treeAdapter.getFirstChild(t);o;o=this.treeAdapter.getFirstChild(t))this.treeAdapter.detachNode(o),this.treeAdapter.appendChild(n,o);}_setEndLocation(t,n){if(this.treeAdapter.getNodeSourceCodeLocation(t)&&n.location){let o=n.location,r=this.treeAdapter.getTagName(t),i=n.type===Kt.END_TAG&&r===n.tagName?{endTag:{...o},endLine:o.endLine,endCol:o.endCol,endOffset:o.endOffset}:{endLine:o.startLine,endCol:o.startCol,endOffset:o.startOffset};this.treeAdapter.updateNodeSourceCodeLocation(t,i);}}shouldProcessStartTagTokenInForeignContent(t){if(!this.currentNotInHTML)return false;let n,o;return this.openElements.stackTop===0&&this.fragmentContext?(n=this.fragmentContext,o=this.fragmentContextID):{current:n,currentTagId:o}=this.openElements,t.tagID===T.SVG&&this.treeAdapter.getTagName(n)===oe.ANNOTATION_XML&&this.treeAdapter.getNamespaceURI(n)===Te.MATHML?false:this.tokenizer.inForeignNode||(t.tagID===T.MGLYPH||t.tagID===T.MALIGNMARK)&&o!==void 0&&!this._isIntegrationPoint(o,n,Te.HTML)}_processToken(t){switch(t.type){case Kt.CHARACTER:{this.onCharacter(t);break}case Kt.NULL_CHARACTER:{this.onNullCharacter(t);break}case Kt.COMMENT:{this.onComment(t);break}case Kt.DOCTYPE:{this.onDoctype(t);break}case Kt.START_TAG:{this._processStartTag(t);break}case Kt.END_TAG:{this.onEndTag(t);break}case Kt.EOF:{this.onEof(t);break}case Kt.WHITESPACE_CHARACTER:{this.onWhitespaceCharacter(t);break}}}_isIntegrationPoint(t,n,o){let r=this.treeAdapter.getNamespaceURI(n),i=this.treeAdapter.getAttrList(n);return Dce(t,r,i,o)}_reconstructActiveFormattingElements(){let t=this.activeFormattingElements.entries.length;if(t){let n=this.activeFormattingElements.entries.findIndex(r=>r.type===kl.Marker||this.openElements.contains(r.element)),o=n===-1?t-1:n-1;for(let r=o;r>=0;r--){let i=this.activeFormattingElements.entries[r];this._insertElement(i.token,this.treeAdapter.getNamespaceURI(i.element)),i.element=this.openElements.current;}}}_closeTableCell(){this.openElements.generateImpliedEndTags(),this.openElements.popUntilTableCellPopped(),this.activeFormattingElements.clearToLastMarker(),this.insertionMode=$.IN_ROW;}_closePElement(){this.openElements.generateImpliedEndTagsWithExclusion(T.P),this.openElements.popUntilTagNamePopped(T.P);}_resetInsertionMode(){for(let t=this.openElements.stackTop;t>=0;t--)switch(t===0&&this.fragmentContext?this.fragmentContextID:this.openElements.tagIDs[t]){case T.TR:{this.insertionMode=$.IN_ROW;return}case T.TBODY:case T.THEAD:case T.TFOOT:{this.insertionMode=$.IN_TABLE_BODY;return}case T.CAPTION:{this.insertionMode=$.IN_CAPTION;return}case T.COLGROUP:{this.insertionMode=$.IN_COLUMN_GROUP;return}case T.TABLE:{this.insertionMode=$.IN_TABLE;return}case T.BODY:{this.insertionMode=$.IN_BODY;return}case T.FRAMESET:{this.insertionMode=$.IN_FRAMESET;return}case T.SELECT:{this._resetInsertionModeForSelect(t);return}case T.TEMPLATE:{this.insertionMode=this.tmplInsertionModeStack[0];return}case T.HTML:{this.insertionMode=this.headElement?$.AFTER_HEAD:$.BEFORE_HEAD;return}case T.TD:case T.TH:{if(t>0){this.insertionMode=$.IN_CELL;return}break}case T.HEAD:{if(t>0){this.insertionMode=$.IN_HEAD;return}break}}this.insertionMode=$.IN_BODY;}_resetInsertionModeForSelect(t){if(t>0)for(let n=t-1;n>0;n--){let o=this.openElements.tagIDs[n];if(o===T.TEMPLATE)break;if(o===T.TABLE){this.insertionMode=$.IN_SELECT_IN_TABLE;return}}this.insertionMode=$.IN_SELECT;}_isElementCausesFosterParenting(t){return Gce.has(t)}_shouldFosterParentOnInsertion(){return this.fosterParentingEnabled&&this.openElements.currentTagId!==void 0&&this._isElementCausesFosterParenting(this.openElements.currentTagId)}_findFosterParentingLocation(){for(let t=this.openElements.stackTop;t>=0;t--){let n=this.openElements.items[t];switch(this.openElements.tagIDs[t]){case T.TEMPLATE:{if(this.treeAdapter.getNamespaceURI(n)===Te.HTML)return {parent:this.treeAdapter.getTemplateContent(n),beforeElement:null};break}case T.TABLE:{let o=this.treeAdapter.getParentNode(n);return o?{parent:o,beforeElement:n}:{parent:this.openElements.items[t-1],beforeElement:null}}}}return {parent:this.openElements.items[0],beforeElement:null}}_fosterParentElement(t){let n=this._findFosterParentingLocation();n.beforeElement?this.treeAdapter.insertBefore(n.parent,t,n.beforeElement):this.treeAdapter.appendChild(n.parent,t);}_isSpecialElement(t,n){let o=this.treeAdapter.getNamespaceURI(t);return Sce[o].has(n)}onCharacter(t){if(this.skipNextNewLine=false,this.tokenizer.inForeignNode){c5e(this,t);return}switch(this.insertionMode){case $.INITIAL:{SE(this,t);break}case $.BEFORE_HTML:{TE(this,t);break}case $.BEFORE_HEAD:{AE(this,t);break}case $.IN_HEAD:{EE(this,t);break}case $.IN_HEAD_NO_SCRIPT:{CE(this,t);break}case $.AFTER_HEAD:{vE(this,t);break}case $.IN_BODY:case $.IN_CAPTION:case $.IN_CELL:case $.IN_TEMPLATE:{$ce(this,t);break}case $.TEXT:case $.IN_SELECT:case $.IN_SELECT_IN_TABLE:{this._insertCharacters(t);break}case $.IN_TABLE:case $.IN_TABLE_BODY:case $.IN_ROW:{CH(this,t);break}case $.IN_TABLE_TEXT:{Yce(this,t);break}case $.IN_COLUMN_GROUP:{IP(this,t);break}case $.AFTER_BODY:{xP(this,t);break}case $.AFTER_AFTER_BODY:{wP(this,t);break}}}onNullCharacter(t){if(this.skipNextNewLine=false,this.tokenizer.inForeignNode){l5e(this,t);return}switch(this.insertionMode){case $.INITIAL:{SE(this,t);break}case $.BEFORE_HTML:{TE(this,t);break}case $.BEFORE_HEAD:{AE(this,t);break}case $.IN_HEAD:{EE(this,t);break}case $.IN_HEAD_NO_SCRIPT:{CE(this,t);break}case $.AFTER_HEAD:{vE(this,t);break}case $.TEXT:{this._insertCharacters(t);break}case $.IN_TABLE:case $.IN_TABLE_BODY:case $.IN_ROW:{CH(this,t);break}case $.IN_COLUMN_GROUP:{IP(this,t);break}case $.AFTER_BODY:{xP(this,t);break}case $.AFTER_AFTER_BODY:{wP(this,t);break}}}onComment(t){if(this.skipNextNewLine=false,this.currentNotInHTML){vH(this,t);return}switch(this.insertionMode){case $.INITIAL:case $.BEFORE_HTML:case $.BEFORE_HEAD:case $.IN_HEAD:case $.IN_HEAD_NO_SCRIPT:case $.AFTER_HEAD:case $.IN_BODY:case $.IN_TABLE:case $.IN_CAPTION:case $.IN_COLUMN_GROUP:case $.IN_TABLE_BODY:case $.IN_ROW:case $.IN_CELL:case $.IN_SELECT:case $.IN_SELECT_IN_TABLE:case $.IN_TEMPLATE:case $.IN_FRAMESET:case $.AFTER_FRAMESET:{vH(this,t);break}case $.IN_TABLE_TEXT:{bE(this,t);break}case $.AFTER_BODY:{H4e(this,t);break}case $.AFTER_AFTER_BODY:case $.AFTER_AFTER_FRAMESET:{G4e(this,t);break}}}onDoctype(t){switch(this.skipNextNewLine=false,this.insertionMode){case $.INITIAL:{j4e(this,t);break}case $.BEFORE_HEAD:case $.IN_HEAD:case $.IN_HEAD_NO_SCRIPT:case $.AFTER_HEAD:{this._err(t,ce.misplacedDoctype);break}case $.IN_TABLE_TEXT:{bE(this,t);break}}}onStartTag(t){this.skipNextNewLine=false,this.currentToken=t,this._processStartTag(t),t.selfClosing&&!t.ackSelfClosing&&this._err(t,ce.nonVoidHtmlElementStartTagWithTrailingSolidus);}_processStartTag(t){this.shouldProcessStartTagTokenInForeignContent(t)?d5e(this,t):this._startTagOutsideForeignContent(t);}_startTagOutsideForeignContent(t){switch(this.insertionMode){case $.INITIAL:{SE(this,t);break}case $.BEFORE_HTML:{$4e(this,t);break}case $.BEFORE_HEAD:{z4e(this,t);break}case $.IN_HEAD:{Fl(this,t);break}case $.IN_HEAD_NO_SCRIPT:{K4e(this,t);break}case $.AFTER_HEAD:{J4e(this,t);break}case $.IN_BODY:{wi(this,t);break}case $.IN_TABLE:{oS(this,t);break}case $.IN_TABLE_TEXT:{bE(this,t);break}case $.IN_CAPTION:{WQe(this,t);break}case $.IN_COLUMN_GROUP:{xH(this,t);break}case $.IN_TABLE_BODY:{OP(this,t);break}case $.IN_ROW:{MP(this,t);break}case $.IN_CELL:{YQe(this,t);break}case $.IN_SELECT:{Qce(this,t);break}case $.IN_SELECT_IN_TABLE:{XQe(this,t);break}case $.IN_TEMPLATE:{ZQe(this,t);break}case $.AFTER_BODY:{t5e(this,t);break}case $.IN_FRAMESET:{n5e(this,t);break}case $.AFTER_FRAMESET:{r5e(this,t);break}case $.AFTER_AFTER_BODY:{s5e(this,t);break}case $.AFTER_AFTER_FRAMESET:{a5e(this,t);break}}}onEndTag(t){this.skipNextNewLine=false,this.currentToken=t,this.currentNotInHTML?u5e(this,t):this._endTagOutsideForeignContent(t);}_endTagOutsideForeignContent(t){switch(this.insertionMode){case $.INITIAL:{SE(this,t);break}case $.BEFORE_HTML:{V4e(this,t);break}case $.BEFORE_HEAD:{W4e(this,t);break}case $.IN_HEAD:{q4e(this,t);break}case $.IN_HEAD_NO_SCRIPT:{Y4e(this,t);break}case $.AFTER_HEAD:{X4e(this,t);break}case $.IN_BODY:{PP(this,t);break}case $.TEXT:{DQe(this,t);break}case $.IN_TABLE:{wE(this,t);break}case $.IN_TABLE_TEXT:{bE(this,t);break}case $.IN_CAPTION:{qQe(this,t);break}case $.IN_COLUMN_GROUP:{KQe(this,t);break}case $.IN_TABLE_BODY:{RH(this,t);break}case $.IN_ROW:{Xce(this,t);break}case $.IN_CELL:{JQe(this,t);break}case $.IN_SELECT:{Zce(this,t);break}case $.IN_SELECT_IN_TABLE:{QQe(this,t);break}case $.IN_TEMPLATE:{e5e(this,t);break}case $.AFTER_BODY:{tde(this,t);break}case $.IN_FRAMESET:{o5e(this,t);break}case $.AFTER_FRAMESET:{i5e(this,t);break}case $.AFTER_AFTER_BODY:{wP(this,t);break}}}onEof(t){switch(this.insertionMode){case $.INITIAL:{SE(this,t);break}case $.BEFORE_HTML:{TE(this,t);break}case $.BEFORE_HEAD:{AE(this,t);break}case $.IN_HEAD:{EE(this,t);break}case $.IN_HEAD_NO_SCRIPT:{CE(this,t);break}case $.AFTER_HEAD:{vE(this,t);break}case $.IN_BODY:case $.IN_TABLE:case $.IN_CAPTION:case $.IN_COLUMN_GROUP:case $.IN_TABLE_BODY:case $.IN_ROW:case $.IN_CELL:case $.IN_SELECT:case $.IN_SELECT_IN_TABLE:{qce(this,t);break}case $.TEXT:{FQe(this,t);break}case $.IN_TABLE_TEXT:{bE(this,t);break}case $.IN_TEMPLATE:{ede(this,t);break}case $.AFTER_BODY:case $.IN_FRAMESET:case $.AFTER_FRAMESET:case $.AFTER_AFTER_BODY:case $.AFTER_AFTER_FRAMESET:{IH(this,t);break}}}onWhitespaceCharacter(t){if(this.skipNextNewLine&&(this.skipNextNewLine=false,t.chars.charCodeAt(0)===N.LINE_FEED)){if(t.chars.length===1)return;t.chars=t.chars.substr(1);}if(this.tokenizer.inForeignNode){this._insertCharacters(t);return}switch(this.insertionMode){case $.IN_HEAD:case $.IN_HEAD_NO_SCRIPT:case $.AFTER_HEAD:case $.TEXT:case $.IN_COLUMN_GROUP:case $.IN_SELECT:case $.IN_SELECT_IN_TABLE:case $.IN_FRAMESET:case $.AFTER_FRAMESET:{this._insertCharacters(t);break}case $.IN_BODY:case $.IN_CAPTION:case $.IN_CELL:case $.IN_TEMPLATE:case $.AFTER_BODY:case $.AFTER_AFTER_BODY:case $.AFTER_AFTER_FRAMESET:{jce(this,t);break}case $.IN_TABLE:case $.IN_TABLE_BODY:case $.IN_ROW:{CH(this,t);break}case $.IN_TABLE_TEXT:{Kce(this,t);break}}}};function L4e(e,t){let n=e.activeFormattingElements.getElementEntryInScopeWithTagName(t.tagName);return n?e.openElements.contains(n.element)?e.openElements.hasInScope(t.tagID)||(n=null):(e.activeFormattingElements.removeEntry(n),n=null):Wce(e,t),n}function k4e(e,t){let n=null,o=e.openElements.stackTop;for(;o>=0;o--){let r=e.openElements.items[o];if(r===t.element)break;e._isSpecialElement(r,e.openElements.tagIDs[o])&&(n=r);}return n||(e.openElements.shortenToLength(Math.max(o,0)),e.activeFormattingElements.removeEntry(t)),n}function D4e(e,t,n){let o=t,r=e.openElements.getCommonAncestor(t);for(let i=0,s=r;s!==n;i++,s=r){r=e.openElements.getCommonAncestor(s);let a=e.activeFormattingElements.getElementEntry(s),l=a&&i>=M4e;!a||l?(l&&e.activeFormattingElements.removeEntry(a),e.openElements.remove(s)):(s=F4e(e,a),o===t&&(e.activeFormattingElements.bookmark=a),e.treeAdapter.detachNode(o),e.treeAdapter.appendChild(s,o),o=s);}return o}function F4e(e,t){let n=e.treeAdapter.getNamespaceURI(t.element),o=e.treeAdapter.createElement(t.token.tagName,n,t.token.attrs);return e.openElements.replace(t.element,o),t.element=o,o}function B4e(e,t,n){let o=e.treeAdapter.getTagName(t),r=Lh(o);if(e._isElementCausesFosterParenting(r))e._fosterParentElement(n);else {let i=e.treeAdapter.getNamespaceURI(t);r===T.TEMPLATE&&i===Te.HTML&&(t=e.treeAdapter.getTemplateContent(t)),e.treeAdapter.appendChild(t,n);}}function U4e(e,t,n){let o=e.treeAdapter.getNamespaceURI(n.element),{token:r}=n,i=e.treeAdapter.createElement(r.tagName,o,r.attrs);e._adoptNodes(t,i),e.treeAdapter.appendChild(t,i),e.activeFormattingElements.insertElementAfterBookmark(i,r),e.activeFormattingElements.removeEntry(n),e.openElements.remove(n.element),e.openElements.insertAfter(t,i,r.tagID);}function wH(e,t){for(let n=0;n<O4e;n++){let o=L4e(e,t);if(!o)break;let r=k4e(e,o);if(!r)break;e.activeFormattingElements.bookmark=o;let i=D4e(e,r,o.element),s=e.openElements.getCommonAncestor(o.element);e.treeAdapter.detachNode(i),s&&B4e(e,s,i),U4e(e,r,o);}}function vH(e,t){e._appendCommentNode(t,e.openElements.currentTmplContentOrNode);}function H4e(e,t){e._appendCommentNode(t,e.openElements.items[0]);}function G4e(e,t){e._appendCommentNode(t,e.document);}function IH(e,t){if(e.stopped=true,t.location){let n=e.fragmentContext?0:2;for(let o=e.openElements.stackTop;o>=n;o--)e._setEndLocation(e.openElements.items[o],t);if(!e.fragmentContext&&e.openElements.stackTop>=0){let o=e.openElements.items[0],r=e.treeAdapter.getNodeSourceCodeLocation(o);if(r&&!r.endTag&&(e._setEndLocation(o,t),e.openElements.stackTop>=1)){let i=e.openElements.items[1],s=e.treeAdapter.getNodeSourceCodeLocation(i);s&&!s.endTag&&e._setEndLocation(i,t);}}}}function j4e(e,t){e._setDocumentType(t);let n=t.forceQuirks?Zi.QUIRKS:Mce(t);Oce(t)||e._err(t,ce.nonConformingDoctype),e.treeAdapter.setDocumentMode(e.document,n),e.insertionMode=$.BEFORE_HTML;}function SE(e,t){e._err(t,ce.missingDoctype,true),e.treeAdapter.setDocumentMode(e.document,Zi.QUIRKS),e.insertionMode=$.BEFORE_HTML,e._processToken(t);}function $4e(e,t){t.tagID===T.HTML?(e._insertElement(t,Te.HTML),e.insertionMode=$.BEFORE_HEAD):TE(e,t);}function V4e(e,t){let n=t.tagID;(n===T.HTML||n===T.HEAD||n===T.BODY||n===T.BR)&&TE(e,t);}function TE(e,t){e._insertFakeRootElement(),e.insertionMode=$.BEFORE_HEAD,e._processToken(t);}function z4e(e,t){switch(t.tagID){case T.HTML:{wi(e,t);break}case T.HEAD:{e._insertElement(t,Te.HTML),e.headElement=e.openElements.current,e.insertionMode=$.IN_HEAD;break}default:AE(e,t);}}function W4e(e,t){let n=t.tagID;n===T.HEAD||n===T.BODY||n===T.HTML||n===T.BR?AE(e,t):e._err(t,ce.endTagWithoutMatchingOpenElement);}function AE(e,t){e._insertFakeElement(oe.HEAD,T.HEAD),e.headElement=e.openElements.current,e.insertionMode=$.IN_HEAD,e._processToken(t);}function Fl(e,t){switch(t.tagID){case T.HTML:{wi(e,t);break}case T.BASE:case T.BASEFONT:case T.BGSOUND:case T.LINK:case T.META:{e._appendElement(t,Te.HTML),t.ackSelfClosing=true;break}case T.TITLE:{e._switchToTextParsing(t,Ri.RCDATA);break}case T.NOSCRIPT:{e.options.scriptingEnabled?e._switchToTextParsing(t,Ri.RAWTEXT):(e._insertElement(t,Te.HTML),e.insertionMode=$.IN_HEAD_NO_SCRIPT);break}case T.NOFRAMES:case T.STYLE:{e._switchToTextParsing(t,Ri.RAWTEXT);break}case T.SCRIPT:{e._switchToTextParsing(t,Ri.SCRIPT_DATA);break}case T.TEMPLATE:{e._insertTemplate(t),e.activeFormattingElements.insertMarker(),e.framesetOk=false,e.insertionMode=$.IN_TEMPLATE,e.tmplInsertionModeStack.unshift($.IN_TEMPLATE);break}case T.HEAD:{e._err(t,ce.misplacedStartTagForHeadElement);break}default:EE(e,t);}}function q4e(e,t){switch(t.tagID){case T.HEAD:{e.openElements.pop(),e.insertionMode=$.AFTER_HEAD;break}case T.BODY:case T.BR:case T.HTML:{EE(e,t);break}case T.TEMPLATE:{kh(e,t);break}default:e._err(t,ce.endTagWithoutMatchingOpenElement);}}function kh(e,t){e.openElements.tmplCount>0?(e.openElements.generateImpliedEndTagsThoroughly(),e.openElements.currentTagId!==T.TEMPLATE&&e._err(t,ce.closingOfElementWithOpenChildElements),e.openElements.popUntilTagNamePopped(T.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e.tmplInsertionModeStack.shift(),e._resetInsertionMode()):e._err(t,ce.endTagWithoutMatchingOpenElement);}function EE(e,t){e.openElements.pop(),e.insertionMode=$.AFTER_HEAD,e._processToken(t);}function K4e(e,t){switch(t.tagID){case T.HTML:{wi(e,t);break}case T.BASEFONT:case T.BGSOUND:case T.HEAD:case T.LINK:case T.META:case T.NOFRAMES:case T.STYLE:{Fl(e,t);break}case T.NOSCRIPT:{e._err(t,ce.nestedNoscriptInHead);break}default:CE(e,t);}}function Y4e(e,t){switch(t.tagID){case T.NOSCRIPT:{e.openElements.pop(),e.insertionMode=$.IN_HEAD;break}case T.BR:{CE(e,t);break}default:e._err(t,ce.endTagWithoutMatchingOpenElement);}}function CE(e,t){let n=t.type===Kt.EOF?ce.openElementsLeftAfterEof:ce.disallowedContentInNoscriptInHead;e._err(t,n),e.openElements.pop(),e.insertionMode=$.IN_HEAD,e._processToken(t);}function J4e(e,t){switch(t.tagID){case T.HTML:{wi(e,t);break}case T.BODY:{e._insertElement(t,Te.HTML),e.framesetOk=false,e.insertionMode=$.IN_BODY;break}case T.FRAMESET:{e._insertElement(t,Te.HTML),e.insertionMode=$.IN_FRAMESET;break}case T.BASE:case T.BASEFONT:case T.BGSOUND:case T.LINK:case T.META:case T.NOFRAMES:case T.SCRIPT:case T.STYLE:case T.TEMPLATE:case T.TITLE:{e._err(t,ce.abandonedHeadElementChild),e.openElements.push(e.headElement,T.HEAD),Fl(e,t),e.openElements.remove(e.headElement);break}case T.HEAD:{e._err(t,ce.misplacedStartTagForHeadElement);break}default:vE(e,t);}}function X4e(e,t){switch(t.tagID){case T.BODY:case T.HTML:case T.BR:{vE(e,t);break}case T.TEMPLATE:{kh(e,t);break}default:e._err(t,ce.endTagWithoutMatchingOpenElement);}}function vE(e,t){e._insertFakeElement(oe.BODY,T.BODY),e.insertionMode=$.IN_BODY,_P(e,t);}function _P(e,t){switch(t.type){case Kt.CHARACTER:{$ce(e,t);break}case Kt.WHITESPACE_CHARACTER:{jce(e,t);break}case Kt.COMMENT:{vH(e,t);break}case Kt.START_TAG:{wi(e,t);break}case Kt.END_TAG:{PP(e,t);break}case Kt.EOF:{qce(e,t);break}}}function jce(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t);}function $ce(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t),e.framesetOk=false;}function Q4e(e,t){e.openElements.tmplCount===0&&e.treeAdapter.adoptAttributes(e.openElements.items[0],t.attrs);}function Z4e(e,t){let n=e.openElements.tryPeekProperlyNestedBodyElement();n&&e.openElements.tmplCount===0&&(e.framesetOk=false,e.treeAdapter.adoptAttributes(n,t.attrs));}function eQe(e,t){let n=e.openElements.tryPeekProperlyNestedBodyElement();e.framesetOk&&n&&(e.treeAdapter.detachNode(n),e.openElements.popAllUpToHtmlElement(),e._insertElement(t,Te.HTML),e.insertionMode=$.IN_FRAMESET);}function tQe(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,Te.HTML);}function nQe(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e.openElements.currentTagId!==void 0&&gE.has(e.openElements.currentTagId)&&e.openElements.pop(),e._insertElement(t,Te.HTML);}function oQe(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,Te.HTML),e.skipNextNewLine=true,e.framesetOk=false;}function rQe(e,t){let n=e.openElements.tmplCount>0;(!e.formElement||n)&&(e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,Te.HTML),n||(e.formElement=e.openElements.current));}function iQe(e,t){e.framesetOk=false;let n=t.tagID;for(let o=e.openElements.stackTop;o>=0;o--){let r=e.openElements.tagIDs[o];if(n===T.LI&&r===T.LI||(n===T.DD||n===T.DT)&&(r===T.DD||r===T.DT)){e.openElements.generateImpliedEndTagsWithExclusion(r),e.openElements.popUntilTagNamePopped(r);break}if(r!==T.ADDRESS&&r!==T.DIV&&r!==T.P&&e._isSpecialElement(e.openElements.items[o],r))break}e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,Te.HTML);}function sQe(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,Te.HTML),e.tokenizer.state=Ri.PLAINTEXT;}function aQe(e,t){e.openElements.hasInScope(T.BUTTON)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(T.BUTTON)),e._reconstructActiveFormattingElements(),e._insertElement(t,Te.HTML),e.framesetOk=false;}function lQe(e,t){let n=e.activeFormattingElements.getElementEntryInScopeWithTagName(oe.A);n&&(wH(e,t),e.openElements.remove(n.element),e.activeFormattingElements.removeEntry(n)),e._reconstructActiveFormattingElements(),e._insertElement(t,Te.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t);}function cQe(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Te.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t);}function dQe(e,t){e._reconstructActiveFormattingElements(),e.openElements.hasInScope(T.NOBR)&&(wH(e,t),e._reconstructActiveFormattingElements()),e._insertElement(t,Te.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t);}function uQe(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Te.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=false;}function pQe(e,t){e.treeAdapter.getDocumentMode(e.document)!==Zi.QUIRKS&&e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,Te.HTML),e.framesetOk=false,e.insertionMode=$.IN_TABLE;}function Vce(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,Te.HTML),e.framesetOk=false,t.ackSelfClosing=true;}function zce(e){let t=bP(e,Tu.TYPE);return t!=null&&t.toLowerCase()===P4e}function mQe(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,Te.HTML),zce(t)||(e.framesetOk=false),t.ackSelfClosing=true;}function hQe(e,t){e._appendElement(t,Te.HTML),t.ackSelfClosing=true;}function gQe(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._appendElement(t,Te.HTML),e.framesetOk=false,t.ackSelfClosing=true;}function fQe(e,t){t.tagName=oe.IMG,t.tagID=T.IMG,Vce(e,t);}function yQe(e,t){e._insertElement(t,Te.HTML),e.skipNextNewLine=true,e.tokenizer.state=Ri.RCDATA,e.originalInsertionMode=e.insertionMode,e.framesetOk=false,e.insertionMode=$.TEXT;}function SQe(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._reconstructActiveFormattingElements(),e.framesetOk=false,e._switchToTextParsing(t,Ri.RAWTEXT);}function bQe(e,t){e.framesetOk=false,e._switchToTextParsing(t,Ri.RAWTEXT);}function Uce(e,t){e._switchToTextParsing(t,Ri.RAWTEXT);}function TQe(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Te.HTML),e.framesetOk=false,e.insertionMode=e.insertionMode===$.IN_TABLE||e.insertionMode===$.IN_CAPTION||e.insertionMode===$.IN_TABLE_BODY||e.insertionMode===$.IN_ROW||e.insertionMode===$.IN_CELL?$.IN_SELECT_IN_TABLE:$.IN_SELECT;}function AQe(e,t){e.openElements.currentTagId===T.OPTION&&e.openElements.pop(),e._reconstructActiveFormattingElements(),e._insertElement(t,Te.HTML);}function EQe(e,t){e.openElements.hasInScope(T.RUBY)&&e.openElements.generateImpliedEndTags(),e._insertElement(t,Te.HTML);}function CQe(e,t){e.openElements.hasInScope(T.RUBY)&&e.openElements.generateImpliedEndTagsWithExclusion(T.RTC),e._insertElement(t,Te.HTML);}function vQe(e,t){e._reconstructActiveFormattingElements(),AH(t),RP(t),t.selfClosing?e._appendElement(t,Te.MATHML):e._insertElement(t,Te.MATHML),t.ackSelfClosing=true;}function RQe(e,t){e._reconstructActiveFormattingElements(),EH(t),RP(t),t.selfClosing?e._appendElement(t,Te.SVG):e._insertElement(t,Te.SVG),t.ackSelfClosing=true;}function Hce(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Te.HTML);}function wi(e,t){switch(t.tagID){case T.I:case T.S:case T.B:case T.U:case T.EM:case T.TT:case T.BIG:case T.CODE:case T.FONT:case T.SMALL:case T.STRIKE:case T.STRONG:{cQe(e,t);break}case T.A:{lQe(e,t);break}case T.H1:case T.H2:case T.H3:case T.H4:case T.H5:case T.H6:{nQe(e,t);break}case T.P:case T.DL:case T.OL:case T.UL:case T.DIV:case T.DIR:case T.NAV:case T.MAIN:case T.MENU:case T.ASIDE:case T.CENTER:case T.FIGURE:case T.FOOTER:case T.HEADER:case T.HGROUP:case T.DIALOG:case T.DETAILS:case T.ADDRESS:case T.ARTICLE:case T.SEARCH:case T.SECTION:case T.SUMMARY:case T.FIELDSET:case T.BLOCKQUOTE:case T.FIGCAPTION:{tQe(e,t);break}case T.LI:case T.DD:case T.DT:{iQe(e,t);break}case T.BR:case T.IMG:case T.WBR:case T.AREA:case T.EMBED:case T.KEYGEN:{Vce(e,t);break}case T.HR:{gQe(e,t);break}case T.RB:case T.RTC:{EQe(e,t);break}case T.RT:case T.RP:{CQe(e,t);break}case T.PRE:case T.LISTING:{oQe(e,t);break}case T.XMP:{SQe(e,t);break}case T.SVG:{RQe(e,t);break}case T.HTML:{Q4e(e,t);break}case T.BASE:case T.LINK:case T.META:case T.STYLE:case T.TITLE:case T.SCRIPT:case T.BGSOUND:case T.BASEFONT:case T.TEMPLATE:{Fl(e,t);break}case T.BODY:{Z4e(e,t);break}case T.FORM:{rQe(e,t);break}case T.NOBR:{dQe(e,t);break}case T.MATH:{vQe(e,t);break}case T.TABLE:{pQe(e,t);break}case T.INPUT:{mQe(e,t);break}case T.PARAM:case T.TRACK:case T.SOURCE:{hQe(e,t);break}case T.IMAGE:{fQe(e,t);break}case T.BUTTON:{aQe(e,t);break}case T.APPLET:case T.OBJECT:case T.MARQUEE:{uQe(e,t);break}case T.IFRAME:{bQe(e,t);break}case T.SELECT:{TQe(e,t);break}case T.OPTION:case T.OPTGROUP:{AQe(e,t);break}case T.NOEMBED:case T.NOFRAMES:{Uce(e,t);break}case T.FRAMESET:{eQe(e,t);break}case T.TEXTAREA:{yQe(e,t);break}case T.NOSCRIPT:{e.options.scriptingEnabled?Uce(e,t):Hce(e,t);break}case T.PLAINTEXT:{sQe(e,t);break}case T.COL:case T.TH:case T.TD:case T.TR:case T.HEAD:case T.FRAME:case T.TBODY:case T.TFOOT:case T.THEAD:case T.CAPTION:case T.COLGROUP:break;default:Hce(e,t);}}function wQe(e,t){if(e.openElements.hasInScope(T.BODY)&&(e.insertionMode=$.AFTER_BODY,e.options.sourceCodeLocationInfo)){let n=e.openElements.tryPeekProperlyNestedBodyElement();n&&e._setEndLocation(n,t);}}function IQe(e,t){e.openElements.hasInScope(T.BODY)&&(e.insertionMode=$.AFTER_BODY,tde(e,t));}function xQe(e,t){let n=t.tagID;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n));}function _Qe(e){let t=e.openElements.tmplCount>0,{formElement:n}=e;t||(e.formElement=null),(n||t)&&e.openElements.hasInScope(T.FORM)&&(e.openElements.generateImpliedEndTags(),t?e.openElements.popUntilTagNamePopped(T.FORM):n&&e.openElements.remove(n));}function PQe(e){e.openElements.hasInButtonScope(T.P)||e._insertFakeElement(oe.P,T.P),e._closePElement();}function OQe(e){e.openElements.hasInListItemScope(T.LI)&&(e.openElements.generateImpliedEndTagsWithExclusion(T.LI),e.openElements.popUntilTagNamePopped(T.LI));}function MQe(e,t){let n=t.tagID;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.popUntilTagNamePopped(n));}function NQe(e){e.openElements.hasNumberedHeaderInScope()&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilNumberedHeaderPopped());}function LQe(e,t){let n=t.tagID;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n),e.activeFormattingElements.clearToLastMarker());}function kQe(e){e._reconstructActiveFormattingElements(),e._insertFakeElement(oe.BR,T.BR),e.openElements.pop(),e.framesetOk=false;}function Wce(e,t){let n=t.tagName,o=t.tagID;for(let r=e.openElements.stackTop;r>0;r--){let i=e.openElements.items[r],s=e.openElements.tagIDs[r];if(o===s&&(o!==T.UNKNOWN||e.treeAdapter.getTagName(i)===n)){e.openElements.generateImpliedEndTagsWithExclusion(o),e.openElements.stackTop>=r&&e.openElements.shortenToLength(r);break}if(e._isSpecialElement(i,s))break}}function PP(e,t){switch(t.tagID){case T.A:case T.B:case T.I:case T.S:case T.U:case T.EM:case T.TT:case T.BIG:case T.CODE:case T.FONT:case T.NOBR:case T.SMALL:case T.STRIKE:case T.STRONG:{wH(e,t);break}case T.P:{PQe(e);break}case T.DL:case T.UL:case T.OL:case T.DIR:case T.DIV:case T.NAV:case T.PRE:case T.MAIN:case T.MENU:case T.ASIDE:case T.BUTTON:case T.CENTER:case T.FIGURE:case T.FOOTER:case T.HEADER:case T.HGROUP:case T.DIALOG:case T.ADDRESS:case T.ARTICLE:case T.DETAILS:case T.SEARCH:case T.SECTION:case T.SUMMARY:case T.LISTING:case T.FIELDSET:case T.BLOCKQUOTE:case T.FIGCAPTION:{xQe(e,t);break}case T.LI:{OQe(e);break}case T.DD:case T.DT:{MQe(e,t);break}case T.H1:case T.H2:case T.H3:case T.H4:case T.H5:case T.H6:{NQe(e);break}case T.BR:{kQe(e);break}case T.BODY:{wQe(e,t);break}case T.HTML:{IQe(e,t);break}case T.FORM:{_Qe(e);break}case T.APPLET:case T.OBJECT:case T.MARQUEE:{LQe(e,t);break}case T.TEMPLATE:{kh(e,t);break}default:Wce(e,t);}}function qce(e,t){e.tmplInsertionModeStack.length>0?ede(e,t):IH(e,t);}function DQe(e,t){var n;t.tagID===T.SCRIPT&&((n=e.scriptHandler)===null||n===void 0||n.call(e,e.openElements.current)),e.openElements.pop(),e.insertionMode=e.originalInsertionMode;}function FQe(e,t){e._err(t,ce.eofInElementThatCanContainOnlyText),e.openElements.pop(),e.insertionMode=e.originalInsertionMode,e.onEof(t);}function CH(e,t){if(e.openElements.currentTagId!==void 0&&Gce.has(e.openElements.currentTagId))switch(e.pendingCharacterTokens.length=0,e.hasNonWhitespacePendingCharacterToken=false,e.originalInsertionMode=e.insertionMode,e.insertionMode=$.IN_TABLE_TEXT,t.type){case Kt.CHARACTER:{Yce(e,t);break}case Kt.WHITESPACE_CHARACTER:{Kce(e,t);break}}else IE(e,t);}function BQe(e,t){e.openElements.clearBackToTableContext(),e.activeFormattingElements.insertMarker(),e._insertElement(t,Te.HTML),e.insertionMode=$.IN_CAPTION;}function UQe(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,Te.HTML),e.insertionMode=$.IN_COLUMN_GROUP;}function HQe(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(oe.COLGROUP,T.COLGROUP),e.insertionMode=$.IN_COLUMN_GROUP,xH(e,t);}function GQe(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,Te.HTML),e.insertionMode=$.IN_TABLE_BODY;}function jQe(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(oe.TBODY,T.TBODY),e.insertionMode=$.IN_TABLE_BODY,OP(e,t);}function $Qe(e,t){e.openElements.hasInTableScope(T.TABLE)&&(e.openElements.popUntilTagNamePopped(T.TABLE),e._resetInsertionMode(),e._processStartTag(t));}function VQe(e,t){zce(t)?e._appendElement(t,Te.HTML):IE(e,t),t.ackSelfClosing=true;}function zQe(e,t){!e.formElement&&e.openElements.tmplCount===0&&(e._insertElement(t,Te.HTML),e.formElement=e.openElements.current,e.openElements.pop());}function oS(e,t){switch(t.tagID){case T.TD:case T.TH:case T.TR:{jQe(e,t);break}case T.STYLE:case T.SCRIPT:case T.TEMPLATE:{Fl(e,t);break}case T.COL:{HQe(e,t);break}case T.FORM:{zQe(e,t);break}case T.TABLE:{$Qe(e,t);break}case T.TBODY:case T.TFOOT:case T.THEAD:{GQe(e,t);break}case T.INPUT:{VQe(e,t);break}case T.CAPTION:{BQe(e,t);break}case T.COLGROUP:{UQe(e,t);break}default:IE(e,t);}}function wE(e,t){switch(t.tagID){case T.TABLE:{e.openElements.hasInTableScope(T.TABLE)&&(e.openElements.popUntilTagNamePopped(T.TABLE),e._resetInsertionMode());break}case T.TEMPLATE:{kh(e,t);break}case T.BODY:case T.CAPTION:case T.COL:case T.COLGROUP:case T.HTML:case T.TBODY:case T.TD:case T.TFOOT:case T.TH:case T.THEAD:case T.TR:break;default:IE(e,t);}}function IE(e,t){let n=e.fosterParentingEnabled;e.fosterParentingEnabled=true,_P(e,t),e.fosterParentingEnabled=n;}function Kce(e,t){e.pendingCharacterTokens.push(t);}function Yce(e,t){e.pendingCharacterTokens.push(t),e.hasNonWhitespacePendingCharacterToken=true;}function bE(e,t){let n=0;if(e.hasNonWhitespacePendingCharacterToken)for(;n<e.pendingCharacterTokens.length;n++)IE(e,e.pendingCharacterTokens[n]);else for(;n<e.pendingCharacterTokens.length;n++)e._insertCharacters(e.pendingCharacterTokens[n]);e.insertionMode=e.originalInsertionMode,e._processToken(t);}var Jce=new Set([T.CAPTION,T.COL,T.COLGROUP,T.TBODY,T.TD,T.TFOOT,T.TH,T.THEAD,T.TR]);function WQe(e,t){let n=t.tagID;Jce.has(n)?e.openElements.hasInTableScope(T.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(T.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=$.IN_TABLE,oS(e,t)):wi(e,t);}function qQe(e,t){let n=t.tagID;switch(n){case T.CAPTION:case T.TABLE:{e.openElements.hasInTableScope(T.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(T.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=$.IN_TABLE,n===T.TABLE&&wE(e,t));break}case T.BODY:case T.COL:case T.COLGROUP:case T.HTML:case T.TBODY:case T.TD:case T.TFOOT:case T.TH:case T.THEAD:case T.TR:break;default:PP(e,t);}}function xH(e,t){switch(t.tagID){case T.HTML:{wi(e,t);break}case T.COL:{e._appendElement(t,Te.HTML),t.ackSelfClosing=true;break}case T.TEMPLATE:{Fl(e,t);break}default:IP(e,t);}}function KQe(e,t){switch(t.tagID){case T.COLGROUP:{e.openElements.currentTagId===T.COLGROUP&&(e.openElements.pop(),e.insertionMode=$.IN_TABLE);break}case T.TEMPLATE:{kh(e,t);break}case T.COL:break;default:IP(e,t);}}function IP(e,t){e.openElements.currentTagId===T.COLGROUP&&(e.openElements.pop(),e.insertionMode=$.IN_TABLE,e._processToken(t));}function OP(e,t){switch(t.tagID){case T.TR:{e.openElements.clearBackToTableBodyContext(),e._insertElement(t,Te.HTML),e.insertionMode=$.IN_ROW;break}case T.TH:case T.TD:{e.openElements.clearBackToTableBodyContext(),e._insertFakeElement(oe.TR,T.TR),e.insertionMode=$.IN_ROW,MP(e,t);break}case T.CAPTION:case T.COL:case T.COLGROUP:case T.TBODY:case T.TFOOT:case T.THEAD:{e.openElements.hasTableBodyContextInTableScope()&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=$.IN_TABLE,oS(e,t));break}default:oS(e,t);}}function RH(e,t){let n=t.tagID;switch(t.tagID){case T.TBODY:case T.TFOOT:case T.THEAD:{e.openElements.hasInTableScope(n)&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=$.IN_TABLE);break}case T.TABLE:{e.openElements.hasTableBodyContextInTableScope()&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=$.IN_TABLE,wE(e,t));break}case T.BODY:case T.CAPTION:case T.COL:case T.COLGROUP:case T.HTML:case T.TD:case T.TH:case T.TR:break;default:wE(e,t);}}function MP(e,t){switch(t.tagID){case T.TH:case T.TD:{e.openElements.clearBackToTableRowContext(),e._insertElement(t,Te.HTML),e.insertionMode=$.IN_CELL,e.activeFormattingElements.insertMarker();break}case T.CAPTION:case T.COL:case T.COLGROUP:case T.TBODY:case T.TFOOT:case T.THEAD:case T.TR:{e.openElements.hasInTableScope(T.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=$.IN_TABLE_BODY,OP(e,t));break}default:oS(e,t);}}function Xce(e,t){switch(t.tagID){case T.TR:{e.openElements.hasInTableScope(T.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=$.IN_TABLE_BODY);break}case T.TABLE:{e.openElements.hasInTableScope(T.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=$.IN_TABLE_BODY,RH(e,t));break}case T.TBODY:case T.TFOOT:case T.THEAD:{(e.openElements.hasInTableScope(t.tagID)||e.openElements.hasInTableScope(T.TR))&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=$.IN_TABLE_BODY,RH(e,t));break}case T.BODY:case T.CAPTION:case T.COL:case T.COLGROUP:case T.HTML:case T.TD:case T.TH:break;default:wE(e,t);}}function YQe(e,t){let n=t.tagID;Jce.has(n)?(e.openElements.hasInTableScope(T.TD)||e.openElements.hasInTableScope(T.TH))&&(e._closeTableCell(),MP(e,t)):wi(e,t);}function JQe(e,t){let n=t.tagID;switch(n){case T.TD:case T.TH:{e.openElements.hasInTableScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=$.IN_ROW);break}case T.TABLE:case T.TBODY:case T.TFOOT:case T.THEAD:case T.TR:{e.openElements.hasInTableScope(n)&&(e._closeTableCell(),Xce(e,t));break}case T.BODY:case T.CAPTION:case T.COL:case T.COLGROUP:case T.HTML:break;default:PP(e,t);}}function Qce(e,t){switch(t.tagID){case T.HTML:{wi(e,t);break}case T.OPTION:{e.openElements.currentTagId===T.OPTION&&e.openElements.pop(),e._insertElement(t,Te.HTML);break}case T.OPTGROUP:{e.openElements.currentTagId===T.OPTION&&e.openElements.pop(),e.openElements.currentTagId===T.OPTGROUP&&e.openElements.pop(),e._insertElement(t,Te.HTML);break}case T.HR:{e.openElements.currentTagId===T.OPTION&&e.openElements.pop(),e.openElements.currentTagId===T.OPTGROUP&&e.openElements.pop(),e._appendElement(t,Te.HTML),t.ackSelfClosing=true;break}case T.INPUT:case T.KEYGEN:case T.TEXTAREA:case T.SELECT:{e.openElements.hasInSelectScope(T.SELECT)&&(e.openElements.popUntilTagNamePopped(T.SELECT),e._resetInsertionMode(),t.tagID!==T.SELECT&&e._processStartTag(t));break}case T.SCRIPT:case T.TEMPLATE:{Fl(e,t);break}}}function Zce(e,t){switch(t.tagID){case T.OPTGROUP:{e.openElements.stackTop>0&&e.openElements.currentTagId===T.OPTION&&e.openElements.tagIDs[e.openElements.stackTop-1]===T.OPTGROUP&&e.openElements.pop(),e.openElements.currentTagId===T.OPTGROUP&&e.openElements.pop();break}case T.OPTION:{e.openElements.currentTagId===T.OPTION&&e.openElements.pop();break}case T.SELECT:{e.openElements.hasInSelectScope(T.SELECT)&&(e.openElements.popUntilTagNamePopped(T.SELECT),e._resetInsertionMode());break}case T.TEMPLATE:{kh(e,t);break}}}function XQe(e,t){let n=t.tagID;n===T.CAPTION||n===T.TABLE||n===T.TBODY||n===T.TFOOT||n===T.THEAD||n===T.TR||n===T.TD||n===T.TH?(e.openElements.popUntilTagNamePopped(T.SELECT),e._resetInsertionMode(),e._processStartTag(t)):Qce(e,t);}function QQe(e,t){let n=t.tagID;n===T.CAPTION||n===T.TABLE||n===T.TBODY||n===T.TFOOT||n===T.THEAD||n===T.TR||n===T.TD||n===T.TH?e.openElements.hasInTableScope(n)&&(e.openElements.popUntilTagNamePopped(T.SELECT),e._resetInsertionMode(),e.onEndTag(t)):Zce(e,t);}function ZQe(e,t){switch(t.tagID){case T.BASE:case T.BASEFONT:case T.BGSOUND:case T.LINK:case T.META:case T.NOFRAMES:case T.SCRIPT:case T.STYLE:case T.TEMPLATE:case T.TITLE:{Fl(e,t);break}case T.CAPTION:case T.COLGROUP:case T.TBODY:case T.TFOOT:case T.THEAD:{e.tmplInsertionModeStack[0]=$.IN_TABLE,e.insertionMode=$.IN_TABLE,oS(e,t);break}case T.COL:{e.tmplInsertionModeStack[0]=$.IN_COLUMN_GROUP,e.insertionMode=$.IN_COLUMN_GROUP,xH(e,t);break}case T.TR:{e.tmplInsertionModeStack[0]=$.IN_TABLE_BODY,e.insertionMode=$.IN_TABLE_BODY,OP(e,t);break}case T.TD:case T.TH:{e.tmplInsertionModeStack[0]=$.IN_ROW,e.insertionMode=$.IN_ROW,MP(e,t);break}default:e.tmplInsertionModeStack[0]=$.IN_BODY,e.insertionMode=$.IN_BODY,wi(e,t);}}function e5e(e,t){t.tagID===T.TEMPLATE&&kh(e,t);}function ede(e,t){e.openElements.tmplCount>0?(e.openElements.popUntilTagNamePopped(T.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e.tmplInsertionModeStack.shift(),e._resetInsertionMode(),e.onEof(t)):IH(e,t);}function t5e(e,t){t.tagID===T.HTML?wi(e,t):xP(e,t);}function tde(e,t){var n;if(t.tagID===T.HTML){if(e.fragmentContext||(e.insertionMode=$.AFTER_AFTER_BODY),e.options.sourceCodeLocationInfo&&e.openElements.tagIDs[0]===T.HTML){e._setEndLocation(e.openElements.items[0],t);let o=e.openElements.items[1];o&&!(!((n=e.treeAdapter.getNodeSourceCodeLocation(o))===null||n===void 0)&&n.endTag)&&e._setEndLocation(o,t);}}else xP(e,t);}function xP(e,t){e.insertionMode=$.IN_BODY,_P(e,t);}function n5e(e,t){switch(t.tagID){case T.HTML:{wi(e,t);break}case T.FRAMESET:{e._insertElement(t,Te.HTML);break}case T.FRAME:{e._appendElement(t,Te.HTML),t.ackSelfClosing=true;break}case T.NOFRAMES:{Fl(e,t);break}}}function o5e(e,t){t.tagID===T.FRAMESET&&!e.openElements.isRootHtmlElementCurrent()&&(e.openElements.pop(),!e.fragmentContext&&e.openElements.currentTagId!==T.FRAMESET&&(e.insertionMode=$.AFTER_FRAMESET));}function r5e(e,t){switch(t.tagID){case T.HTML:{wi(e,t);break}case T.NOFRAMES:{Fl(e,t);break}}}function i5e(e,t){t.tagID===T.HTML&&(e.insertionMode=$.AFTER_AFTER_FRAMESET);}function s5e(e,t){t.tagID===T.HTML?wi(e,t):wP(e,t);}function wP(e,t){e.insertionMode=$.IN_BODY,_P(e,t);}function a5e(e,t){switch(t.tagID){case T.HTML:{wi(e,t);break}case T.NOFRAMES:{Fl(e,t);break}}}function l5e(e,t){t.chars=Hn,e._insertCharacters(t);}function c5e(e,t){e._insertCharacters(t),e.framesetOk=false;}function nde(e){for(;e.treeAdapter.getNamespaceURI(e.openElements.current)!==Te.HTML&&e.openElements.currentTagId!==void 0&&!e._isIntegrationPoint(e.openElements.currentTagId,e.openElements.current);)e.openElements.pop();}function d5e(e,t){if(Lce(t))nde(e),e._startTagOutsideForeignContent(t);else {let n=e._getAdjustedCurrentElement(),o=e.treeAdapter.getNamespaceURI(n);o===Te.MATHML?AH(t):o===Te.SVG&&(kce(t),EH(t)),RP(t),t.selfClosing?e._appendElement(t,o):e._insertElement(t,o),t.ackSelfClosing=true;}}function u5e(e,t){if(t.tagID===T.P||t.tagID===T.BR){nde(e),e._endTagOutsideForeignContent(t);return}for(let n=e.openElements.stackTop;n>0;n--){let o=e.openElements.items[n];if(e.treeAdapter.getNamespaceURI(o)===Te.HTML){e._endTagOutsideForeignContent(t);break}let r=e.treeAdapter.getTagName(o);if(r.toLowerCase()===t.tagName){t.tagName=r,e.openElements.shortenToLength(n);break}}}new Set([oe.AREA,oe.BASE,oe.BASEFONT,oe.BGSOUND,oe.BR,oe.COL,oe.EMBED,oe.FRAME,oe.HR,oe.IMG,oe.INPUT,oe.KEYGEN,oe.LINK,oe.META,oe.PARAM,oe.SOURCE,oe.TRACK,oe.WBR]);function ode(e,t,n){typeof e=="string"&&(n=t,t=e,e=null);let o=RE.getFragmentParser(e,n);return o.tokenizer.write(t,true),o.getFragment()}var p5e=5e3,rde=1024;function _H(e){return typeof e.tagName=="string"&&Array.isArray(e.attrs)}function m5e(e){return e.nodeName==="#text"}function PH(e,t){if(t.nodesLeft<=0)return;t.nodesLeft-=1;let n=e.tagName.toLowerCase(),o,r;for(let{name:l,value:c}of e.attrs){let d=l.toLowerCase();if(d==="role"){r=c;continue}o===void 0&&(o={}),o[d]=c;}let i,s=[];for(let l of e.childNodes){if(t.nodesLeft<=0)break;if(m5e(l)){let c=l.value;if(c&&c.trim().length>0){let d=c.length>rde?c.slice(0,rde):c;i=i===void 0?d:`${i} ${d}`;}}else if(_H(l)){let c=PH(l,t);c!==void 0&&s.push(c);}}let a={tag:n};return r!==void 0&&(a.role=r),o!==void 0&&(a.attributes=o),i!==void 0&&(a.text=i),s.length>0&&(a.children=s),a}function OH(e){let t=ode(e),n={nodesLeft:p5e};for(let i of t.childNodes)if(_H(i)&&i.tagName.toLowerCase()==="body"){let s=PH(i,n);if(s!==void 0)return s}let o=[];for(let i of t.childNodes){if(n.nodesLeft<=0)break;if(_H(i)){let s=PH(i,n);s!==void 0&&o.push(s);}}let r={tag:"body"};return o.length>0&&(r.children=o),r}var h5e=new Set(["PRESET_ACTION","AI_ACTION_DYNAMIC"]),Dh=class{constructor(t,n,o,r,i,s){this.orgId=t;this.testId=n;this.testName=o;this.diskStorage=r;this.parentFlushResults=i;this.appGraphSink=s;}children=[];finished=false;stepFrequenciesByType={};currentResults=[];async getScreenshot(t,n){return this.diskStorage.readFile(`${zr}/${n}.jpeg`)}async getHtmlSnapshot(t,n){return this.diskStorage.readFile(`${zr}/${n}.html`)?.toString()}recordStepStat(t){t.type!=="PRESET_ACTION"?this.stepFrequenciesByType[t.type]=(this.stepFrequenciesByType[t.type]||0)+1:this.stepFrequenciesByType[t.command.type]=(this.stepFrequenciesByType[t.command.type]||0)+1;}sendFinalizedStepStats(){for(let[t,n]of Object.entries(this.stepFrequenciesByType))Tt.increment("test_step_execution",n,[`type:${t}`,"platform:browser","executor:cli",`orgId:${this.orgId}`]);}flushResults(t){this.currentResults=t,this.parentFlushResults(t);}async startStep(t,n){let{step:o,parentStepIdChain:r}=t;this.recordStepStat(o);let i={step:o,status:"RUNNING",startedAt:new Date},s=[...n];this.currentResults=s;let a=new MH(this.orgId,this.testId,this.testName,i,this.diskStorage,l=>{this.flushResults([...s,l]);},r??[],this.appGraphSink);return this.children.push(a),a}async finish(t){this.finished||(this.finished=true,await Promise.all(this.children.map(n=>n.finishInternal({status:RV(t.status),finishedAt:t.finishedAt}))),this.sendFinalizedStepStats());}};function g5e(e){switch(e){case "SUCCESS":return "PASSED";case "FAILED":return "FAILED";case "CANCELLED":return "CANCELLED";case "RUNNING":return "RUNNING";case "IDLE":return "PENDING";default:return tt(e)}}function NP(e){return e.some(t=>t.status==="FAILED")?"FAILED":e.some(t=>t.status==="CANCELLED")?"CANCELLED":"RUNNING"}var MH=class{constructor(t,n,o,r,i,s,a,l){this.orgId=t;this.testId=n;this.testName=o;this.metadata=r;this.diskStorage=i;this.parentFlushResults=s;this.parentStepIdChain=a;this.appGraphSink=l;this.interactionTracer=new Ep(void 0,c=>this.storeTraceAsset(c)),Ap.initializeRootTracerContext(this.interactionTracer);}children=[];finished=false;interactionTracer;attachBeforeScreenshot(t){let{snapshotId:n,screenshot:o}=t;this.metadata.beforeSnapshotId=n,this.diskStorage.storeFile({name:`${zr}/${n}.jpeg`,contents:o});}attachAfterScreenshot(t){let{snapshotId:n,screenshot:o}=t;this.metadata.afterSnapshotId=n,this.diskStorage.storeFile({name:`${zr}/${n}.jpeg`,contents:o});}attachBeforeHtmlSnapshot(t){let{snapshotId:n,html:o}=t;this.metadata.beforeSnapshotId=n,this.diskStorage.storeFile({name:`${zr}/${n}.html`,contents:o});}attachAfterHtmlSnapshot(t){let{snapshotId:n,html:o,url:r,logger:i}=t;this.metadata.afterSnapshotId=n,this.diskStorage.storeFile({name:`${zr}/${n}.html`,contents:o}),this.appGraphSink&&h5e.has(this.metadata.step.type)&&this.appGraphSink({html:o,url:r,stepId:this.metadata.step.id,parentStepIdChain:[...this.parentStepIdChain],logger:i});}recordTargetAutoHeal(t){let{healType:n}=t,o=n==="AI"?"ai-target-heal":"cache-heal";Tt.increment("test_event",1,[`name:${o}`,`orgId:${this.orgId}`]),this.metadata.healMetadata={healType:n,healedAt:new Date};}storeTraceAsset(t){this.diskStorage.storeFile({name:`${zr}/${t.snapshotId}.${t.extension??"jpeg"}`,contents:t.data});}async finishInternal(t){this.finished||(this.finished=true,this.interactionTracer.finish(),await Promise.all(this.children.map(n=>n.finish({status:g5e(t.status),finishedAt:t.finishedAt}))));}recordStepDuration(t,n){if(!_v(t))return;let o=xv(t);Tt.distribution("test_step_duration",n,[`type:${o}`,"platform:browser","executor:cli",`orgId:${this.orgId}`]);}async finish(t){!this.finished&&t.resolvedStep!==void 0&&t.durationMs!==void 0&&this.recordStepDuration(t.resolvedStep,t.durationMs),await this.finishInternal(t.step),t.step.trace=this.interactionTracer.getRootSpan();}getResultBuilderForCurrentStep(){let t=this.metadata.step;switch(t.type){case "RESOLVED_MODULE":return n=>({...t,status:NP(n),startedAt:this.metadata.startedAt,finishedAt:new Date,results:n,type:"MODULE"});case "CONDITIONAL":return n=>({...t,blocks:t.blocks.map(r=>({assertion:r.assertion,steps:Ld(r.steps)})),elseSteps:t.elseSteps?Ld(t.elseSteps):void 0,status:NP(n),startedAt:this.metadata.startedAt,finishedAt:new Date,results:n});case "WHILE_LOOP":return n=>({...t,steps:Ld(t.steps),status:NP(n),startedAt:this.metadata.startedAt,finishedAt:new Date,results:n});case "AI_ACTION":case "AI_ACTION_DYNAMIC":case "PRESET_ACTION":case "SECTION":return n=>({...t,status:NP(n),startedAt:this.metadata.startedAt,finishedAt:new Date,results:n});default:return tt(t)}}async startSubSteps(){let t=this.getResultBuilderForCurrentStep(),n=new Dh(this.orgId,this.testId,this.testName,this.diskStorage,o=>{let r=t(o);this.parentFlushResults(r);});return this.children.push(n),n}};var LP=class{constructor(t,n,o,r,i,s,a,l){this.orgId=t;this.testId=n;this.testName=o;this.runAttemptId=r;this.metadata=i;this.diskStorage=s;this.recordVideo=a;this.progressHandle=l;this.diskStorage.mkdir(zr),this.harPagesStream=this.diskStorage.createFileStream(`${zr}/har-pages.log`),this.inProgressHarEntries={},this.harEntriesStream=this.diskStorage.createFileStream(`${zr}/har-entries.log`),this.resourceUsageStream=this.diskStorage.createFileStream(`${zr}/resource-usage.ndjson`),this.resourceUsageSampler=nY({keepSamples:false,onSample:c=>{this.resourceUsageStream.write(`${JSON.stringify(c)}
|
|
8916
|
+
`)).digest("hex").slice(0,12),s=`${r.headSha}:${i}`,a=r.repoRoot,l=Jn__default.relative(a,e.repoRoot),c=l?e.candidateTests.map(p=>({...p,testPath:Jn__default.posix.join(l.split(Jn__default.sep).join("/"),p.testPath)})):e.candidateTests;if(e.dryRun){let p=await uH({apiClient:t,generator:e.generator,logger:e.logger,repository:e.repository,repoRoot:a,projectRoot:e.repoRoot,diff:r,candidateTests:c,allTestDefinitions:e.allTestDefinitions,importIndexCachePath:eP(a),agentOutputStream:e.agentOutputStream});return p.fallbackToRunAll?{kind:"run-all",reason:p.userSummary,diff:r}:{kind:"ready",plan:{version:2,userSummary:p.userSummary,toolCallCount:p.toolCallCount,selectedTests:p.selectedTests,anchorSegmentIds:p.anchorSegmentIds,budget:{source:e.budgetSource,cap:e.budgetCap??null},generatedAt:new Date().toISOString()},planId:`dry-run-${s}`,mode:"SELECTED",diff:r}}let d=await Fle({client:t,claim:{repository:e.repository,headSha:s,baseRef:r.baseRef,changedFiles:r.changedFiles.map(p=>p.path),diffSummary:null,budgetCap:e.budgetCap,dryRun:e.dryRun},logger:e.logger});if(d.kind==="ready")return e.logger.info({planId:d.planId,planSize:d.plan.selectedTests.length,suiteHash:i},"ai-select: reusing cached plan from server"),{kind:"ready",plan:d.plan,planId:d.planId,mode:"SELECTED",diff:r};let u=await uH({apiClient:t,generator:e.generator,logger:e.logger,repository:e.repository,repoRoot:a,projectRoot:e.repoRoot,diff:r,candidateTests:c,allTestDefinitions:e.allTestDefinitions,importIndexCachePath:eP(a),agentOutputStream:e.agentOutputStream});if(u.fallbackToRunAll)return await t.release(d.selectionPlanKey),{kind:"run-all",reason:u.userSummary,diff:r};try{e.logger.info({selectedCount:u.selectedTests.length,durationMs:u.totalDurationMs,suiteHash:i},"ai-select: computed fresh plan");let p=await t.finalize({selectionPlanKey:d.selectionPlanKey,repository:e.repository,headSha:s,mode:"SELECTED",userSummary:u.userSummary,toolCallCount:u.toolCallCount,selectedTests:u.selectedTests,anchorSegmentIds:u.anchorSegmentIds,budget:{source:e.budgetSource,cap:e.budgetCap}});return {kind:"ready",plan:p.plan,planId:p.planId,mode:"SELECTED",diff:r}}catch(p){return e.logger.error({err:p},"ai-select finalize failed; falling back to run-all"),await t.release(d.selectionPlanKey),{kind:"run-all",reason:`Could not record selection plan: ${Q(p)}.`,diff:r}}}function Mh(e){let t=e??m3e();return Ble()&&t===1&&R.warn("Running with --pixel-ratio=1 on a Retina screen. Viewport calculations may be incorrect; omit the flag to auto-detect."),t}function m3e(){let e=Ble(),t=e?2:1;return R.debug(`Auto-detected device pixel ratio ${t} (Mac OS Retina: ${e}).`),t}var Ble=once(()=>{if(platform()!=="darwin")return false;try{return execSync("system_profiler SPDisplaysDataType").toString().includes("Retina")}catch{return false}});async function lP(e,t=true,n=false){let o=y3e(e),r=await g3e.which(o[0],true),i=o.slice(1),s=h3e.exec(f3e(r),i,{delay:100,silent:n});if(t)return s}var Ule="the Momentic GitHub app is missing permission to create pull requests or write branches for this repository";function S3e(e,{context:t}){return e instanceof no?e.rawError.includes("Resource not accessible by integration")?`Cannot create ${t} because ${Ule}.`:e.status>=400&&e.status<500?e.rawError:`Could not create ${t} due to a GitHub error.`:`Could not create ${t}: ${Q(e)}`}function Hle(e){return e instanceof no?e.rawError.includes("Resource not accessible by integration")?Ule:e.status>=400&&e.status<500?e.rawError:"a GitHub error occurred":Q(e)}function Gle(e,t){R.error(S3e(e,t));}function cP(e){return jle(e,"runs","run")}function hH(e){return jle(e,"run-groups","run group")}function jle(e,t,n){let o=e.trim(),r=/^https?:\/\//i.test(o)?T3e(o,t,n):o;if(!z.guid().safeParse(r).success)throw new Error(`Invalid ${n} ID: ${e}. Expected a UUID or a URL like https://app.momentic.ai/${t}/<id>.`);return r}function T3e(e,t,n){let o;try{o=new URL(e);}catch{throw new Error(`Invalid ${n} URL: ${e}`)}let r=o.pathname.split("/").filter(i=>i.length>0);if(r.length!==2||r[0]!==t)throw new Error(`Could not extract ${n} ID from URL: ${e}. Expected a URL like https://app.momentic.ai/${t}/<id>.`);return r[1]}function dP(e){return new Promise((t,n)=>{let o=[];createReadStream(e).pipe(A3e()).on("data",r=>o.push(r)).on("end",()=>t(o)).on("error",r=>n(r));})}var an="3.12.1",{checkCLIVersion:Br,getLatestCLIVersion:$le}=d6({packageName:"momentic",currentVersion:an,changelogUrl:"https://github.com/momentic-ai/cli/releases",updateCommand:"npx momentic@latest upgrade"});mke("phc_WRWd8LYIv6rolgDsyCdrPpxtZhsu6qXAkEwPicl44bI","POSTHOG_WEB_WRITE_KEY is not set");var{captureEvent:bu,setAnalyticsIdentity:uP,shutdownAnalytics:Vle}=Mv({writeKey:"phc_WRWd8LYIv6rolgDsyCdrPpxtZhsu6qXAkEwPicl44bI",host:"https://p.momentic.ai",platform:"cli",identity:"stashed",flushImmediately:true,onIdentify:f6});async function lt(){try{await Ie(Promise.all([Pv(),Tt.flush(),Vle(),jv()]),{milliseconds:5e3});}catch{}}async function Nh({tests:e,momenticFiles:t,project:n,yes:o,include:r,exclude:i,labels:s,logger:a}){let l=new Set;if(e&&e.length>0){let d=e.some(p=>br__default.existsSync(p)),u=cwd();d?(u!==n.rootDir&&a.warn(`Test paths resolve against the current directory ('${u}'), not the project root ('${n.rootDir}'). Run from the project root or use substring filters to avoid surprises.`),e.forEach(p=>{if(!br__default.existsSync(p))throw new Error(`Path '${p}' does not exist.`);let m;try{m=br__default.statSync(p).isDirectory();}catch(g){a.warn({err:g},`Skipping path ${p} because it cannot be read`);return}let h=Jn__default.resolve(p);Object.values(t.tests).filter(g=>m?g.fullFilePath.startsWith(h):g.fullFilePath===h).forEach(g=>{l.add(g.fullFilePath);});})):Object.values(t.tests).forEach(p=>{e.some(m=>p.relativePath.includes(m))&&l.add(p.fullFilePath);});}else !o&&!await fr("No test paths or substrings were provided. Do you want to run all tests?")&&(a.error("Cancelled by user."),process.exit(1)),Object.values(t.tests).forEach(u=>{l.add(u.fullFilePath);});for(let d of l){let u=Jn__default.relative(n.rootDir,d);r&&!r.some(p=>new RegExp(p).test(u))&&l.delete(d),i&&i.some(p=>new RegExp(p).test(u))&&l.delete(d);}let c=Array.from(l).map(async d=>{try{let u=await ps(d,Ee,t);if(nu.gt(u.schemaVersion,at)&&a.warn(`Test ${d} has schema version ${u.schemaVersion}, which is greater than what is currently supported by this SDK. Please update your momentic package version to avoid unexpected behavior.`),s&&s.length>0){let p=u.labels||[];if(!s.some(h=>p.includes(h)))return null}return {...u,fullFilePath:d,relativeFilePath:Jn__default.relative(n.rootDir,d)}}catch(u){a.error(`Failed to read and resolve test at '${d}': ${Q(u)}`),process.exit(1);}});return compact(await Promise.all(c))}function Wle({testDefinitions:e,quarantinedTestsMetadata:t,onlyQuarantined:n=false,skipQuarantined:o=false}){let[r,i]=partition(e,l=>l.disabled),[s,a]=partition(i,l=>l.id in t);return {testsToSkip:r,quarantinedTestsToSkip:o?s:[],testsToRun:n?[]:a,quarantinedTestsToRun:o?[]:s}}function qle({testsToRun:e,quarantinedTestsToRun:t,quarantinedTestsMetadata:n,testInputMatrix:o}){let r=[],i=(s,a,l)=>{o?o.forEach((c,d)=>{r.push({inputs:c,inputIndex:d,testDefinition:s,quarantined:a,quarantinedMetadata:l});}):r.push({inputs:void 0,testDefinition:s,quarantined:a,quarantinedMetadata:l});};return e.forEach(s=>i(s,false)),t.forEach(s=>i(s,true,n[s.id])),r}var Kle=()=>process.exit(130),Yle=()=>process.exit(143);process.on("SIGINT",Kle);process.on("SIGTERM",Yle);function mE(){process.off("SIGINT",Kle),process.off("SIGTERM",Yle);}async function Jle({orgId:e,codeEvalTools:t,logger:n,outputDefinitions:o,testContext:r}){let i={};for(let s of o){let{name:a,value:l}=s;i[a]=await gi({orgId:e,s:l,localTools:t,logger:n,context:r});}return i}var Xle=new Set;async function Qle({baseUrl:e,envName:t,devicePixelRatio:n,apiClient:o,test:r,storageClient:i,codeEvalTools:s,generator:a,orgId:l,variables:c,logger:d,customHeaders:u,testInputs:p,localBrowserConfig:m,aiSettings:h,visualDiffScreenshotStorage:g,tracer:f,runId:y,browserTypeOverride:S,attemptedRemoteBrowserProviders:b}){let E={baseUrl:o.baseUrl,apiKey:o.apiKey,logger:Ee,mode:o.mode,runner:o.runner},{controller:C,context:w}=await $A({baseUrl:e,envName:t,test:r,variables:c,logger:d,orgId:l,localBrowserConfig:m,aiSettings:h,customHeaders:u,codeEvalTools:s,storage:i,enricher:new Kd(E,a),generator:a,visualDiffScreenshotStorage:g,devicePixelRatio:n,browserTypeOverride:S,callbacks:{onNetworkPage:I=>f.onNetworkPage(I),onNetworkLogs:I=>f.onNetworkLogs(I)},videoOptions:f.videoOutputPath?{videoOutputPath:f.videoOutputPath,onVideoPageChange:({videoName:I,timestamp:x})=>{f.setActiveVideo(I,x);}}:void 0,validateBrowserType:I=>{lT(I)||(Ee.warn({browserType:I,testName:r.name},"Browser required by test does not appear to be installed"),!Xle.has(I)&&(Xle.add(I),R.warn(`Browser ${I} does not appear to be installed. Run '${xu(I)}' if you hit launch errors.`)));},createRemoteBrowserConnection:m.remoteBrowser?async()=>{let I=await o.createRemoteBrowserConnection({runId:y,attemptedProviders:b});return I.provider&&b?.push(I.provider),I}:void 0});try{await Yx({orgId:l,test:r,testInputs:p,localTools:s,logger:d,context:w});}catch(I){try{await C.browser.cleanup();}catch(x){d.error({err:x},"Failed to clean up browser after test input resolution failed");}throw I instanceof VA&&(R.error(I.message),process.exit(1)),I}return {controller:C,context:w}}function Zle({testAdvancedSettings:e,orgSettings:t,logger:n}){if(e.failureRecovery===false||e.failureRecovery===void 0&&!t?.failureRecovery)return false;if(!_m){let o="This test is ineligible for failure recovery since this does not appear to be a CI environment";return n.warn(o),R.debug(o),false}return true}async function ece({attemptInputs:e,attemptFixtures:t,attemptMetadata:n,runFixtures:o,recordVideo:r,stepCallbacks:i}){let{orgId:s,userId:a,runId:l}=n,{runTracer:c,runGroupTracer:d,project:u,apiClient:p}=o,{controller:m,context:h,codeEvalTools:g,storageClient:f,logger:y,usageTracker:S,tracer:b}=t,{test:E,orgSettings:C}=e;y.info(`Running test '${E.name}' locally (run link: https://app.momentic.ai/runs/${l})`);let w={controller:m,storage:f,usageTracker:S,context:h,logger:y,codeEvalTools:g},I={orgId:s,userId:a,runId:l,testMetadata:E,steps:E.steps,beforeSteps:E.beforeSteps,afterSteps:E.afterSteps,orgSettings:C},x={collectDebugData:true,reinitializeBrowser:true,disableHealing:!await Zle({testAdvancedSettings:E.advanced,orgSettings:C.ai,logger:y})};return Goe({fixtures:w,inputs:I,options:x,callbacks:{step:i??{},test:{onTestComplete:async P=>{await m.browser.cleanup({saveRemoteVideos:r!=="on-fail"||P?.status!=="PASSED"}),await g.dispose();}}},testParams:{attemptTracer:b},runParams:{runTracer:c,runGroupTracer:d,project:u,apiClient:p,captureEvent:bu,abortSignal:o.abortSignal}})}async function tce(e){let{testDefinition:t,logger:n}=e,o=new Date;try{return await _3e(e)}catch(r){zu(r);let{customHeaders:i,envName:s,testInputs:a,urlOverride:l}=e,c={customHeaders:i,envName:s,testInputs:a,urlOverride:l},d="Fatal error running test";return n.error({err:r},d),R.error({err:r},d),nce({err:cm(r),parameters:c,test:t,failureReason:te.reasonFor(r,"UnknownError"),startedAt:o,lastAttemptStartedAt:o,attempts:0,quarantined:e.quarantined,quarantinedMetadata:e.quarantinedMetadata})}}async function _3e(e){let{testDefinition:t,snapshot:n,project:o,apiClient:r,orgId:i,userId:s,urlOverride:a,runGroupTracer:l,logger:c,gitMetadata:d,cacheOptions:u,runId:p,testInputs:m,quarantined:h,quarantinedMetadata:g,usageTracker:f}=e,y=n?{...o.config,...n.metadata.config}:o.config,S=new Kf(r,i),b=Xd({logger:c,orgId:i,client:r,gitMetadata:d,regenerateCache:u.regenerateCache,alwaysSaveCache:u.alwaysSaveCache,noCache:n?true:u.noCache,isolateCachesByEnvironment:o.config?.advanced?.isolateCachesByEnvironment,bustOldestCachePercentage:u.bustOldestCachePercentage}),E,C;n?(E={envName:n.metadata.environment.envName,resolvedEnv:n.metadata.environment.resolvedEnv,environmentVariables:{...n.metadata.environment.variables},baseUrl:n.metadata.environment.baseUrl},C={steps:t.steps,beforeSteps:t.beforeSteps,afterSteps:t.afterSteps}):(E=Yf({test:t,envNameOverride:e.envName,urlOverride:a,resolveEnv:re=>Gd(re,o,c)}),C=await Ec({cacheStorage:b,logger:c,schemaVersion:t.schemaVersion,stepLists:{steps:t.steps,beforeSteps:t.beforeSteps,afterSteps:t.afterSteps},testId:t.id,environment:E.envName,useSnapshotIdentityCache:o.config.fileFormat==="v2"}));let{envName:w,resolvedEnv:I,environmentVariables:x,baseUrl:v}=E,P=C.steps,_=C.beforeSteps??void 0,B=C.afterSteps??void 0,D=await l.startRun({logger:c,runId:p,originalSteps:{beforeSteps:t.beforeSteps,steps:t.steps,afterSteps:t.afterSteps},testId:t.id,testName:t.name,directory:dirname(t.relativeFilePath),testDescription:t.description??void 0,testLabels:t.labels,baseUrl:v,environmentName:w,schemaVersion:t.schemaVersion,resolvedInputs:m,quarantined:h,quarantinedReason:g?.quarantinedReason,aiSettings:y.ai}),V=c.child(D.loggerBindings||{});Object.entries(D.envVarBindings||{}).forEach(([re,H])=>{x[re]=H;});let ne=await P3e({...e,effectiveConfig:y,variables:x,envName:w,resolvedEnv:I,baseUrl:v,storageClient:S,tracer:D,runGroupTracer:l,logger:V,cacheStorage:b,stepsWithCaches:P,beforeStepsWithCaches:_,afterStepsWithCaches:B,usageTracker:f});return await D.finish({logger:c,status:ne.status,finishedAt:ne.finishedAt,failureDetails:ne.failureDetails,failureReason:ne.failureReason,isFlake:ne.isFlake,failureRecoveryDetails:ne.failureRecoveryDetails}),{runId:D.runId,...ne}}async function P3e(e){let{testDefinition:t,effectiveConfig:n,stepsWithCaches:o,beforeStepsWithCaches:r,afterStepsWithCaches:i,project:s,regenerateGoldenFiles:a,apiClient:l,generator:c,baseUrl:d,storageClient:u,orgId:p,userId:m,envName:h,urlOverride:g,customHeaders:f,testInputs:y,variables:S,resolvedEnv:b,retriesOverride:E,devicePixelRatio:C,logUpdate:w,tracer:I,runGroupTracer:x,logger:v,cacheStorage:P,gitMetadata:_,quarantined:B,quarantinedMetadata:D,usageTracker:V}=e,ne=n,re=ne.ai?.aiFailureAnalysis??false,H=new Date,z=new Df(s,l,a),M={envName:h,urlOverride:g,customHeaders:f,testInputs:y},K={...ne.browser||{},...b?.browser||{},...t.advanced||{},...e.remoteBrowserOverride?{remoteBrowser:true}:{}},j=K.remoteBrowser===true,F=[],J,X=Math.abs(E??t.retries??n.retries??1),ue=[];v.info({..._,labels:t.labels,name:t.name,cwd:process.cwd()},"Starting test run using CLI");for(let xe=0;xe<=X;xe++){let Oe=randomUUID(),Ye=await I.startAttempt(Oe),me=v.child(Ye.loggerBindings||{}),ie={...t,steps:cloneDeep(o),beforeSteps:cloneDeep(r),afterSteps:cloneDeep(i)};xe!==0&&w("RETRY",`attempt ${xe+1}/${X+1}`);let Re=new Date,Ke=new Jd({httpClient:new Wi({baseUrl:l.baseUrl,apiKey:l.apiKey,logger:me,mode:l.mode,runner:l.runner}),fakerSeed:ne.advanced?.fakerConstantSeed?xb:void 0});try{let{controller:$e,context:Ge}=await Qle({tracer:Ye,runId:I.runId,baseUrl:d,envName:h,apiClient:l,devicePixelRatio:C,logger:me,storageClient:u,codeEvalTools:Ke,test:ie,generator:c,orgId:p,variables:S,customHeaders:f,testInputs:y,localBrowserConfig:K,browserTypeOverride:e.browserTypeOverride,attemptedRemoteBrowserProviders:F,aiSettings:{...ne.ai||{},...ie.advanced||{}},visualDiffScreenshotStorage:z});e.abortSignal&&(e.abortSignal.aborted?$e.executeAbortController.abort():e.abortSignal.addEventListener("abort",()=>{$e.executeAbortController.abort();},{once:!0})),J=await ece({attemptMetadata:{attemptNumber:xe+1,orgId:p,userId:m,runId:I.runId},attemptFixtures:{logger:me,storageClient:u,usageTracker:V,codeEvalTools:Ke,context:Ge,controller:$e,tracer:Ye},attemptInputs:{test:ie,orgSettings:ne},runFixtures:{runTracer:I,runGroupTracer:x,project:s,apiClient:l,abortSignal:e.abortSignal},recordVideo:e.recordVideo??!1,stepCallbacks:{onStepStart:e.onStepStart}});let It=new Date,ln={logger:v,cacheStorage:P,orgId:p,testId:t.id,environment:h,originalStepsWithCaches:{steps:cloneDeep(o),beforeSteps:cloneDeep(r),afterSteps:cloneDeep(i)},updatedStepsWithCaches:{steps:ie.steps,beforeSteps:ie.beforeSteps,afterSteps:ie.afterSteps}};await Bm({logger:v,cacheStorage:P,orgId:p,testId:t.id,environment:h,stepLists:ln.updatedStepsWithCaches,useSnapshotIdentityCache:s.config.fileFormat==="v2"}),J?.status==="PASSED"?await Um(ln):J?.status==="FAILED"&&xe===X&&await mf(ln),await Ye.finish({logger:me,result:J}),ue.unshift(J.status);let So=await Jle({orgId:p,codeEvalTools:Ke,logger:me,outputDefinitions:t.outputs??[],testContext:Ge}),aa=pV(ue),Ii=xe+1;if(J.status!=="FAILED")return {...J,runAttemptId:Oe,parameters:M,test:ie,filePath:ie.relativeFilePath,startedAt:H,lastAttemptStartedAt:Re,finishedAt:It,attempts:Ii,baseUrl:d,outputs:So,isFlake:aa,quarantined:B,quarantinedMetadata:D,usedRemoteBrowser:j};let ts=J.failedStepResult,jo=ts?.message||"Unknown failure",Gn=ts?.failureReason??Vj(jo)??"UnknownError",xi=me.child({failureReason:Gn,errorMessage:jo,numAttempts:(X+1).toString(),name:ie.name});if(xe<X){xi.warn(`Retrying failed execution attempt for run: ${jo}`);continue}xi.error(`Test failed after all exhausting attempts: ${jo}`);let Xo=new Error(jo),vr={errorMessage:jo,errorStack:Xo.stack},_i;if(ne.ai?.classification?.enabled===!0){let jn=ts?.failureClassification;jn||(e.onStepStart?.(rm),jn=await Mx({runTracer:I,runGroupTracer:x,outputDir:e.outputDir,orgId:p,project:s,generator:c,apiClient:l,logger:v,testPlatform:"web",aiSettings:ne.ai,captureEvent:bu,abortSignal:e.abortSignal,failedStepMessage:ts?.message})),jn&&(_i=jn.classification.category,Gn=jn.classification.category,vr.classification={reason:jn.classification.category,secondaryCategories:jn.classification.secondaryCategories,summary:jn.classification.reasoning,recoverable:jn.classification.recoverable,confidence:jn.classification.confidence,action:jn.action,citations:jn.classification.citations,source:"v2"});}else if(re){let jn;try{if(J.results&&J.results.length>0){e.onStepStart?.(rm);let{classification:k,aiFailureReason:fe}=await D3({logger:me,browserStateStorage:Ye,generator:c,fullResults:J,failureReason:Gn,error:Xo,maxItemsFromEnd:void 0,numStepsWithScreenshots:void 0,disableCache:!1});jn=k,_i=fe;}}catch(k){me.warn({err:k},"Failed to classify test results");}jn&&(vr.classification=jn,Gn=_i??Gn,vr.classification.source="v1");}return {...J,runAttemptId:Oe,parameters:M,failureDetails:vr,failureReason:Gn,test:ie,filePath:ie.relativeFilePath,startedAt:H,lastAttemptStartedAt:Re,finishedAt:It,attempts:xe+1,baseUrl:d,outputs:So,quarantined:B,quarantinedMetadata:D,usedRemoteBrowser:j}}catch($e){let Ge=`Encountered fatal platform error while running test '${ie.name}'`;return me.error({err:$e},Ge),R.error({err:$e},Ge),await Ye.finish({logger:me,result:{status:"FAILED"}}),nce({err:cm($e),parameters:M,test:ie,failureReason:te.reasonFor($e,"InternalPlatformError"),startedAt:H,lastAttemptStartedAt:Re,attempts:xe+1,quarantined:B,quarantinedMetadata:D,runAttemptId:Oe,baseUrl:d,usedRemoteBrowser:j})}}throw new Error("This code should not be reachable")}function nce({err:e,parameters:t,test:n,failureReason:o,startedAt:r,lastAttemptStartedAt:i,attempts:s,quarantined:a,quarantinedMetadata:l,runAttemptId:c,baseUrl:d,usedRemoteBrowser:u}){return {status:"FAILED",results:[],parameters:t,test:n,filePath:n.relativeFilePath,failureReason:o,failureDetails:{errorMessage:e.message,errorStack:e.stack},startedAt:r,lastAttemptStartedAt:i,finishedAt:new Date,attempts:s,outputs:{},quarantined:a,quarantinedMetadata:l,runAttemptId:c,baseUrl:d,usedRemoteBrowser:u}}var oce=3e4;async function nS({timeoutMinutes:e,cancel:t,run:n}){let o=()=>void t("SIGINT received"),r=()=>void t("SIGTERM received");mE(),process.once("SIGINT",o),process.once("SIGTERM",r);let i;e!==void 0&&e>0&&(i=setTimeout(()=>void t(`Timeout of ${e} minute(s) reached`),e*60*1e3));try{return await n()}finally{process.off("SIGINT",o),process.off("SIGTERM",r),clearTimeout(i);}}var tS=class{constructor(t){this.params=t;}runQueue={};runResults=[];cancelledRunsById=new Map;cancelled=false;cancellationReason;async cancel(t,n=true){if(this.cancelled)return;this.cancelled=true,this.cancellationReason=t;for(let r of Object.values(this.runQueue))r.done||r.abortController.abort();n&&await Ie(Promise.allSettled(Object.values(this.runQueue).map(r=>r.promise)),{milliseconds:oce}).catch(()=>{this.params.runGroupLogger.warn(`Graceful shutdown timeout of ${oce}ms reached while waiting for running tests to settle.`);});let o=new Set(this.runResults.map(r=>r.runId).filter(r=>!!r));for(let r of Object.values(this.runQueue)){if(r.done||o.has(r.activeRun.runId))continue;let{activeRun:i}=r,s={results:[],beforeResults:[],afterResults:[],test:i.testDefinition,filePath:i.testDefinition.relativeFilePath,startedAt:i.startedAt,lastAttemptStartedAt:i.startedAt,finishedAt:new Date,status:"CANCELLED",attempts:0,runId:i.runId,cancellationReason:t,quarantined:i.quarantined,quarantinedMetadata:i.quarantinedMetadata,parameters:{testInputs:i.inputs,envName:this.params.envName,urlOverride:this.params.urlOverride,customHeaders:this.params.customHeaders},outputs:{}};this.cancelledRunsById.set(i.runId,s);}}resolveNext(){if(this.params.next)return this.params.next;let t=[...this.params.testsToRun??[]];return ()=>Promise.resolve(t.shift())}async run(){let t=this.resolveNext(),{parallel:n,reporter:o,runGroupTracer:r,runGroupLogger:i,logger:s,project:a,client:l,generator:c,orgId:d,userId:u,devicePixelRatio:p,outputDir:m,retriesOverride:h,urlOverride:g,envName:f,customHeaders:y,regenerateGoldenFiles:S,gitMetadata:b,cacheOptions:E,browserTypeOverride:C,remoteBrowserOverride:w,onResult:I,onFatal:x}=this.params,v=0,P=true;for(;P;){let _=Object.values(this.runQueue);if(_.length===n&&await Promise.race(_.map(re=>re.promise)),this.cancelled){P=false;continue}let B=await t();if(B===void 0){P=false;continue}let D=`test-${v++}`,V={...B,startedAt:new Date},ne=new AbortController;this.runQueue[D]={done:false,activeRun:V,abortController:ne,promise:(async({inputs:re,quarantined:H,quarantinedMetadata:z,testDefinition:M,snapshot:K,runId:j})=>{let F=M.relativeFilePath.includes("..")?M.fullFilePath:M.relativeFilePath;o.onTestBegin(F);let J=i.child({testId:M.id,runId:j}),X=new kd({logger:J,reporter:new qd(l),runType:"test-run",runId:j,testMetadata:M,suiteMetadata:void 0,runner:"test-runner"});try{let ue=await tce({testDefinition:M,snapshot:K,project:a,testInputs:re,quarantined:H,quarantinedMetadata:z,orgId:d,userId:u,runId:j,devicePixelRatio:p,apiClient:l,runGroupTracer:r,outputDir:m,generator:c,retriesOverride:h,urlOverride:g,envName:f,customHeaders:y,regenerateGoldenFiles:S,logUpdate:(xe,Oe)=>o.onTestStatus(F,xe,Oe),...KZ(o,F),logger:J,gitMetadata:b,cacheOptions:E,usageTracker:X,browserTypeOverride:C,remoteBrowserOverride:w,recordVideo:this.params.recordVideo,abortSignal:ne.signal});o.onTestEnd(F,ue.status,{recovered:ue.status==="PASSED"&&!!ue.failureRecoveryDetails?.attempts}),this.runResults.push(ue),I?.(ue);}catch(ue){let xe=`Encountered unexpected fatal error when running test '${M.name}'`;J.error({err:ue},xe),R.error({err:ue},xe),zu(ue),x?.(ue),await this.cancel("Fatal error occurred",false);}finally{let ue=this.runQueue[D];ue&&(ue.done=true),await X.flush(s),delete this.runQueue[D];}})(V)};}return await Promise.allSettled(Object.values(this.runQueue).map(_=>_.promise)),{runResults:this.runResults,cancelledRunsById:this.cancelledRunsById,cancelled:this.cancelled,cancellationReason:this.cancellationReason}}};var M3e=200,N3e=new Set(Fj),L3e=new Set(["PASSED","FAILED","CANCELLED"]);function ice(e){return e.length}function mP(e){return e.filter(t=>N3e.has(t.status)).length}var hE=class{constructor(t,n){this.sink=t;this.runId=n;}reportCompletedSteps(t){this.sink.updateRun(this.runId,{completedSteps:t});}setStatus(t){this.sink.updateRun(this.runId,{status:t});}},pP=class{constructor(t,n,o){this.runGroupId=n;this.logger=o;this.filePath=Jn__default.join(t,BK);}filePath;runs=new Map;startedAt=new Date;runGroupStatus="RUNNING";lastWriteMs=0;registerRun(t){let n=new Date;return this.runs.set(t.runId,{runId:t.runId,testId:t.testId,testName:t.testName,directory:t.directory,status:"RUNNING",completedSteps:0,totalSteps:t.totalSteps,startedAt:n,updatedAt:n}),this.write(true),new hE(this,t.runId)}updateRun(t,n){let o=this.runs.get(t);o&&(n.completedSteps!==void 0&&(o.completedSteps=n.completedSteps,o.completedSteps>o.totalSteps&&(o.totalSteps=o.completedSteps)),n.status!==void 0&&(o.status=n.status),o.updatedAt=new Date,this.write(n.status!==void 0));}finish(t){this.runGroupStatus=t,this.write(true);}write(t){let n=Date.now();if(!t&&n-this.lastWriteMs<M3e)return;this.lastWriteMs=n;let o=[...this.runs.values()],r={schemaVersion:UK,runGroupId:this.runGroupId,status:this.runGroupStatus,totalRuns:o.length,completedRuns:o.filter(s=>L3e.has(s.status)).length,completedSteps:o.reduce((s,a)=>s+a.completedSteps,0),totalSteps:o.reduce((s,a)=>s+a.totalSteps,0),startedAt:this.startedAt,updatedAt:new Date,runs:o},i=`${this.filePath}.tmp`;try{br__default.writeFileSync(i,JSON.stringify(r,null,2)),br__default.renameSync(i,this.filePath);}catch(s){this.logger.warn({err:s},"Failed to write run progress file");}}};function yH(e){return createHash("sha1").update(e).digest("hex")}var D3e=["tab","view","mode","step"],F3e=[/^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$/i,/^(?=.*\d)[A-Za-z0-9_-]{16,256}$/,/^\d{3,32}$/,/^[0-9A-HJKMNP-TV-Z]{26}$/];function B3e(e){return F3e.some(t=>t.test(e))}function sce(e,t={}){let n;try{n=new URL(e);}catch{return e}let o=new Set(t.queryAllowlist??D3e),i=n.pathname.split("/").map(c=>c.length>0&&B3e(c)?"{id}":c).join("/"),s=[],a=Array.from(n.searchParams.keys()).sort();for(let c of a){if(!o.has(c))continue;let d=n.searchParams.getAll(c).sort();for(let u of d)s.push(`${encodeURIComponent(c)}=${encodeURIComponent(u)}`);}let l=s.length>0?`?${s.join("&")}`:"";return `${n.protocol}//${n.host}${i}${l}`}var U3e=new Set(["id","name","role","type","href","for","placeholder","aria-label","data-testid"]),H3e=/^[A-Za-z0-9_-]{16,256}$|^:r[0-9a-z]{1,32}:$/,G3e=[/\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/gi,/\b[0-9a-f]{12,64}\b/gi,/\b[0-9A-HJKMNP-TV-Z]{26}\b/g,/\b\d{5,}\b/g,/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,16}\b/g],ace=new Set(["h1","h2","h3","h4","h5","h6"]),j3e=new Set(["input","select","textarea"]);function $3e(e){let t=e;for(let n of G3e)t=t.replace(n,"{id}");return t}function lce(e){return $3e(e).toLowerCase().replace(/\s+/g," ").trim().replace(/[.,:;!?]+$/u,"").replace(/\s*\d+\s*$/u,"").trim()}function V3e(e){let t=e.length;return t<=4?"txt:xs":t<=16?"txt:s":t<=64?"txt:m":t<=256?"txt:l":"txt:xl"}function z3e(e,t){return e==="href"?t.startsWith("#")?"href:hash":t.startsWith("/")?"href:rel":/^https?:\/\//.test(t)?"href:abs":/^(mailto|tel):/.test(t)?`href:${t.split(":")[0]}`:"href:other":H3e.test(t)?"@gen":lce(t)}function cce(e,t,n){let o=e.tag.toLowerCase(),r=(e.role??e.attributes?.role)?.toLowerCase(),i=Math.min(Math.floor(t/4),6),s=`<${o}@${i}`;if(r!==void 0&&(s+=` role=${r}`),e.attributes!==void 0){let l=Object.keys(e.attributes).filter(c=>U3e.has(c.toLowerCase())).sort();for(let c of l){let d=c.toLowerCase();if(d==="role")continue;let u=e.attributes[c];if(u===void 0)continue;let p=z3e(d,u);s+=` ${d}=${p}`;}}n.tokens.push(s);let a=e.text?.trim();a!==void 0&&a.length>0&&(r==="button"||r==="link"||r==="heading"||o==="button"||o==="a"||o==="label"||ace.has(o)?n.tokens.push(`label=${lce(a)}`):n.tokens.push(V3e(a))),(o==="button"||r==="button")&&(n.counts.buttons+=1),(o==="a"||r==="link")&&(n.counts.links+=1),(j3e.has(o)||r==="textbox"||r==="combobox")&&(n.counts.formFields+=1),(ace.has(o)||r==="heading")&&(n.counts.headings+=1);for(let l of e.children??[])cce(l,t+1,n);}function dce(e){let t={tokens:[],counts:{buttons:0,links:0,formFields:0,headings:0}};return cce(e,0,t),{tokens:t.tokens,counts:t.counts}}function uce(e,t){let n=new TextEncoder().encode(e),o=n.length,r=Math.floor(o/4),i=t>>>0,s=3432918353,a=461845907;for(let u=0;u<r;u++){let p=u*4,m=n[p]|n[p+1]<<8|n[p+2]<<16|n[p+3]<<24;m=Math.imul(m,s),m=m<<15|m>>>17,m=Math.imul(m,a),i^=m,i=i<<13|i>>>19,i=Math.imul(i,5)+3864292196;}let l=0,c=o&3,d=r*4;return c===3&&(l^=n[d+2]<<16),c>=2&&(l^=n[d+1]<<8),c>=1&&(l^=n[d],l=Math.imul(l,s),l=l<<15|l>>>17,l=Math.imul(l,a),i^=l),i^=o,i^=i>>>16,i=Math.imul(i,2246822507),i^=i>>>13,i=Math.imul(i,3266489909),i^=i>>>16,i>>>0}var hP=128,W3e=4294967295,q3e=(()=>{let e=[];for(let t=0;t<hP;t++)e.push(uce(`perm:${t}`,0));return e})();function pce(e){let t=new Uint32Array(hP);for(let o=0;o<hP;o++)t[o]=W3e;let n=new Set(e);for(let o of n)for(let r=0;r<hP;r++){let i=uce(o,q3e[r]);i<t[r]&&(t[r]=i);}return t}var Y3e=32;function SH(e){let t=sce(e.url,{queryAllowlist:e.queryAllowlist}),{tokens:n,counts:o}=dce(e.dom),r=[`url:${t}`,`counts:buttons=${o.buttons}`,`counts:links=${o.links}`,`counts:formFields=${o.formFields}`,`counts:headings=${o.headings}`,...n],i=pce(r),s=Buffer.from(i.buffer,i.byteOffset,i.byteLength);return {fingerprintHash:createHash$1("sha256").update(s).digest("hex").slice(0,Y3e),minhash:Array.from(i),canonicalUrl:t}}var J3e=new Set([65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111]),Hn="\uFFFD",N;(function(e){e[e.EOF=-1]="EOF",e[e.NULL=0]="NULL",e[e.TABULATION=9]="TABULATION",e[e.CARRIAGE_RETURN=13]="CARRIAGE_RETURN",e[e.LINE_FEED=10]="LINE_FEED",e[e.FORM_FEED=12]="FORM_FEED",e[e.SPACE=32]="SPACE",e[e.EXCLAMATION_MARK=33]="EXCLAMATION_MARK",e[e.QUOTATION_MARK=34]="QUOTATION_MARK",e[e.AMPERSAND=38]="AMPERSAND",e[e.APOSTROPHE=39]="APOSTROPHE",e[e.HYPHEN_MINUS=45]="HYPHEN_MINUS",e[e.SOLIDUS=47]="SOLIDUS",e[e.DIGIT_0=48]="DIGIT_0",e[e.DIGIT_9=57]="DIGIT_9",e[e.SEMICOLON=59]="SEMICOLON",e[e.LESS_THAN_SIGN=60]="LESS_THAN_SIGN",e[e.EQUALS_SIGN=61]="EQUALS_SIGN",e[e.GREATER_THAN_SIGN=62]="GREATER_THAN_SIGN",e[e.QUESTION_MARK=63]="QUESTION_MARK",e[e.LATIN_CAPITAL_A=65]="LATIN_CAPITAL_A",e[e.LATIN_CAPITAL_Z=90]="LATIN_CAPITAL_Z",e[e.RIGHT_SQUARE_BRACKET=93]="RIGHT_SQUARE_BRACKET",e[e.GRAVE_ACCENT=96]="GRAVE_ACCENT",e[e.LATIN_SMALL_A=97]="LATIN_SMALL_A",e[e.LATIN_SMALL_Z=122]="LATIN_SMALL_Z";})(N||(N={}));var Qi={DASH_DASH:"--",CDATA_START:"[CDATA[",DOCTYPE:"doctype",SCRIPT:"script",PUBLIC:"public",SYSTEM:"system"};function gP(e){return e>=55296&&e<=57343}function mce(e){return e>=56320&&e<=57343}function hce(e,t){return (e-55296)*1024+9216+t}function fP(e){return e!==32&&e!==10&&e!==13&&e!==9&&e!==12&&e>=1&&e<=31||e>=127&&e<=159}function yP(e){return e>=64976&&e<=65007||J3e.has(e)}var ce;(function(e){e.controlCharacterInInputStream="control-character-in-input-stream",e.noncharacterInInputStream="noncharacter-in-input-stream",e.surrogateInInputStream="surrogate-in-input-stream",e.nonVoidHtmlElementStartTagWithTrailingSolidus="non-void-html-element-start-tag-with-trailing-solidus",e.endTagWithAttributes="end-tag-with-attributes",e.endTagWithTrailingSolidus="end-tag-with-trailing-solidus",e.unexpectedSolidusInTag="unexpected-solidus-in-tag",e.unexpectedNullCharacter="unexpected-null-character",e.unexpectedQuestionMarkInsteadOfTagName="unexpected-question-mark-instead-of-tag-name",e.invalidFirstCharacterOfTagName="invalid-first-character-of-tag-name",e.unexpectedEqualsSignBeforeAttributeName="unexpected-equals-sign-before-attribute-name",e.missingEndTagName="missing-end-tag-name",e.unexpectedCharacterInAttributeName="unexpected-character-in-attribute-name",e.unknownNamedCharacterReference="unknown-named-character-reference",e.missingSemicolonAfterCharacterReference="missing-semicolon-after-character-reference",e.unexpectedCharacterAfterDoctypeSystemIdentifier="unexpected-character-after-doctype-system-identifier",e.unexpectedCharacterInUnquotedAttributeValue="unexpected-character-in-unquoted-attribute-value",e.eofBeforeTagName="eof-before-tag-name",e.eofInTag="eof-in-tag",e.missingAttributeValue="missing-attribute-value",e.missingWhitespaceBetweenAttributes="missing-whitespace-between-attributes",e.missingWhitespaceAfterDoctypePublicKeyword="missing-whitespace-after-doctype-public-keyword",e.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers="missing-whitespace-between-doctype-public-and-system-identifiers",e.missingWhitespaceAfterDoctypeSystemKeyword="missing-whitespace-after-doctype-system-keyword",e.missingQuoteBeforeDoctypePublicIdentifier="missing-quote-before-doctype-public-identifier",e.missingQuoteBeforeDoctypeSystemIdentifier="missing-quote-before-doctype-system-identifier",e.missingDoctypePublicIdentifier="missing-doctype-public-identifier",e.missingDoctypeSystemIdentifier="missing-doctype-system-identifier",e.abruptDoctypePublicIdentifier="abrupt-doctype-public-identifier",e.abruptDoctypeSystemIdentifier="abrupt-doctype-system-identifier",e.cdataInHtmlContent="cdata-in-html-content",e.incorrectlyOpenedComment="incorrectly-opened-comment",e.eofInScriptHtmlCommentLikeText="eof-in-script-html-comment-like-text",e.eofInDoctype="eof-in-doctype",e.nestedComment="nested-comment",e.abruptClosingOfEmptyComment="abrupt-closing-of-empty-comment",e.eofInComment="eof-in-comment",e.incorrectlyClosedComment="incorrectly-closed-comment",e.eofInCdata="eof-in-cdata",e.absenceOfDigitsInNumericCharacterReference="absence-of-digits-in-numeric-character-reference",e.nullCharacterReference="null-character-reference",e.surrogateCharacterReference="surrogate-character-reference",e.characterReferenceOutsideUnicodeRange="character-reference-outside-unicode-range",e.controlCharacterReference="control-character-reference",e.noncharacterCharacterReference="noncharacter-character-reference",e.missingWhitespaceBeforeDoctypeName="missing-whitespace-before-doctype-name",e.missingDoctypeName="missing-doctype-name",e.invalidCharacterSequenceAfterDoctypeName="invalid-character-sequence-after-doctype-name",e.duplicateAttribute="duplicate-attribute",e.nonConformingDoctype="non-conforming-doctype",e.missingDoctype="missing-doctype",e.misplacedDoctype="misplaced-doctype",e.endTagWithoutMatchingOpenElement="end-tag-without-matching-open-element",e.closingOfElementWithOpenChildElements="closing-of-element-with-open-child-elements",e.disallowedContentInNoscriptInHead="disallowed-content-in-noscript-in-head",e.openElementsLeftAfterEof="open-elements-left-after-eof",e.abandonedHeadElementChild="abandoned-head-element-child",e.misplacedStartTagForHeadElement="misplaced-start-tag-for-head-element",e.nestedNoscriptInHead="nested-noscript-in-head",e.eofInElementThatCanContainOnlyText="eof-in-element-that-can-contain-only-text";})(ce||(ce={}));var Q3e=65536,SP=class{constructor(t){this.handler=t,this.html="",this.pos=-1,this.lastGapPos=-2,this.gapStack=[],this.skipNextNewLine=false,this.lastChunkWritten=false,this.endOfChunkHit=false,this.bufferWaterline=Q3e,this.isEol=false,this.lineStartPos=0,this.droppedBufferSize=0,this.line=1,this.lastErrOffset=-1;}get col(){return this.pos-this.lineStartPos+ +(this.lastGapPos!==this.pos)}get offset(){return this.droppedBufferSize+this.pos}getError(t,n){let{line:o,col:r,offset:i}=this,s=r+n,a=i+n;return {code:t,startLine:o,endLine:o,startCol:s,endCol:s,startOffset:a,endOffset:a}}_err(t){this.handler.onParseError&&this.lastErrOffset!==this.offset&&(this.lastErrOffset=this.offset,this.handler.onParseError(this.getError(t,0)));}_addGap(){this.gapStack.push(this.lastGapPos),this.lastGapPos=this.pos;}_processSurrogate(t){if(this.pos!==this.html.length-1){let n=this.html.charCodeAt(this.pos+1);if(mce(n))return this.pos++,this._addGap(),hce(t,n)}else if(!this.lastChunkWritten)return this.endOfChunkHit=true,N.EOF;return this._err(ce.surrogateInInputStream),t}willDropParsedChunk(){return this.pos>this.bufferWaterline}dropParsedChunk(){this.willDropParsedChunk()&&(this.html=this.html.substring(this.pos),this.lineStartPos-=this.pos,this.droppedBufferSize+=this.pos,this.pos=0,this.lastGapPos=-2,this.gapStack.length=0);}write(t,n){this.html.length>0?this.html+=t:this.html=t,this.endOfChunkHit=false,this.lastChunkWritten=n;}insertHtmlAtCurrentPos(t){this.html=this.html.substring(0,this.pos+1)+t+this.html.substring(this.pos+1),this.endOfChunkHit=false;}startsWith(t,n){if(this.pos+t.length>this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,false;if(n)return this.html.startsWith(t,this.pos);for(let o=0;o<t.length;o++)if((this.html.charCodeAt(this.pos+o)|32)!==t.charCodeAt(o))return false;return true}peek(t){let n=this.pos+t;if(n>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,N.EOF;let o=this.html.charCodeAt(n);return o===N.CARRIAGE_RETURN?N.LINE_FEED:o}advance(){if(this.pos++,this.isEol&&(this.isEol=false,this.line++,this.lineStartPos=this.pos),this.pos>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,N.EOF;let t=this.html.charCodeAt(this.pos);return t===N.CARRIAGE_RETURN?(this.isEol=true,this.skipNextNewLine=true,N.LINE_FEED):t===N.LINE_FEED&&(this.isEol=true,this.skipNextNewLine)?(this.line--,this.skipNextNewLine=false,this._addGap(),this.advance()):(this.skipNextNewLine=false,gP(t)&&(t=this._processSurrogate(t)),this.handler.onParseError===null||t>31&&t<127||t===N.LINE_FEED||t===N.CARRIAGE_RETURN||t>159&&t<64976||this._checkForProblematicCharacters(t),t)}_checkForProblematicCharacters(t){fP(t)?this._err(ce.controlCharacterInInputStream):yP(t)&&this._err(ce.noncharacterInInputStream);}retreat(t){for(this.pos-=t;this.pos<this.lastGapPos;)this.lastGapPos=this.gapStack.pop(),this.pos--;this.isEol=false;}};var Kt;(function(e){e[e.CHARACTER=0]="CHARACTER",e[e.NULL_CHARACTER=1]="NULL_CHARACTER",e[e.WHITESPACE_CHARACTER=2]="WHITESPACE_CHARACTER",e[e.START_TAG=3]="START_TAG",e[e.END_TAG=4]="END_TAG",e[e.COMMENT=5]="COMMENT",e[e.DOCTYPE=6]="DOCTYPE",e[e.EOF=7]="EOF",e[e.HIBERNATION=8]="HIBERNATION";})(Kt||(Kt={}));function bP(e,t){for(let n=e.attrs.length-1;n>=0;n--)if(e.attrs[n].name===t)return e.attrs[n].value;return null}var e4e=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]);function gce(e){return e>=55296&&e<=57343||e>1114111?65533:e4e.get(e)??e}function fce(e){let t=atob(e),n=t.length&-2,o=new Uint16Array(n/2);for(let r=0,i=0;r<n;r+=2){let s=t.charCodeAt(r),a=t.charCodeAt(r+1);o[i++]=s|a<<8;}return o}var bH=fce("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IAAOA12J/c8iFvaxBhAAhOVGFjZGZnbG1vcHFzdHV4owOlA6kDsAO/A8IDxgPNA9ID8gP9AwEEFAQeBCAEJQRHAEphSAA7gNAA0EBjAHUAdABlADuAyQDJQIABYWl5ALYDuQO+A/Ihb24aYXIAYwA7gMoAykAtZG8AdAAWYXIAAOA12AjdcgBhAHYAZQA7gMgAyEDlIm1lbnQAoAgiAAFhcNYD2QNjAHIAEmF0AHkAUwLhAwAAAADpA20lYWxsU3F1YXJlAACg+yVlJ3J5U21hbGxTcXVhcmUAAKCrJQABZ3D2A/kDbwBuABhhZgAA4DXYPN3zImlsb26VY3UAAAFhaQYEDgRsAFSgdSppImxkZQAAoEIi7CNpYnJpdW0AoMwhAAFjaRgEGwRyAACgMCFtAACgcyphAJdjbQBsADuAywDLQAABaXApBC0E8yF0cwCgAyLvJG5lbnRpYWxFAKBHIYACY2Zpb3MAPQQ/BEMEXQRyBHkAJGRyAADgNdgJ3WwibGVkAFMCTAQAAAAAVARtJWFsbFNxdWFyZQAAoPwlZSdyeVNtYWxsU3F1YXJlAACgqiVwA2UEAABpBAAAAABtBGYAAOA12D3dwSFsbACgACLyI2llcnRyZgCgMSFjAPIAcQQABkpUYWJjZGZnb3JzdIgEiwSOBJMElwSkBKcEqwStBLIE5QTqBGMAeQADZDuAPgA+QO0hbWFkoJMD3GNyImV2ZQAeYYABZWl5AJ0EoASjBOQhaWwiYXIAYwAcYRNkbwB0ACBhcgAA4DXYCt0AoNkicABmAADgNdg+3eUiYXRlcgADRUZHTFNUvwTIBM8E1QTZBOAEcSJ1YWwATKBlIuUhc3MAoNsidSRsbEVxdWFsAACgZyJyI2VhdGVyAACgoirlIXNzAKB3IuwkYW50RXF1YWwAoH4qaSJsZGUAAKBzImMAcgAA4DXYotwAoGsiAARBYWNmaW9zdfkE/QQFBQgFCwUTBSIFKwVSIkRjeQAqZAABY3QBBQQFZQBrAMdiXmDpIXJjJGFyAACgDCFsJWJlcnRTcGFjZQAAoAsh8AEYBQAAGwVmAACgDSHpJXpvbnRhbExpbmUAoAAlAAFjdCYFKAXyABIF8iFvayZhbQBwAEQBMQU5BW8AdwBuAEgAdQBtAPAAAAFxInVhbAAAoE8iAAdFSk9hY2RmZ21ub3N0dVMFVgVZBVwFYwVtBXAFcwV6BZAFtgXFBckFzQVjAHkAFWTsIWlnMmFjAHkAAWRjAHUAdABlADuAzQDNQAABaXlnBWwFcgBjADuAzgDOQBhkbwB0ADBhcgAAoBEhcgBhAHYAZQA7gMwAzEAAoREhYXB/BYsFAAFjZ4MFhQVyACphaSNuYXJ5SQAAoEghbABpAGUA8wD6AvQBlQUAAKUFZaAsIgABZ3KaBZ4F8iFhbACgKyLzI2VjdGlvbgCgwiJpI3NpYmxlAAABQ1SsBbEFbyJtbWEAAKBjIGkibWVzAACgYiCAAWdwdAC8Bb8FwwVvAG4ALmFmAADgNdhA3WEAmWNjAHIAAKAQIWkibGRlAChh6wHSBQAA1QVjAHkABmRsADuAzwDPQIACY2Zvc3UA4QXpBe0F8gX9BQABaXnlBegFcgBjADRhGWRyAADgNdgN3XAAZgAA4DXYQd3jAfcFAAD7BXIAAOA12KXc8iFjeQhk6yFjeQRkgANISmFjZm9zAAwGDwYSBhUGHQYhBiYGYwB5ACVkYwB5AAxk8CFwYZpjAAFleRkGHAbkIWlsNmEaZHIAAOA12A7dcABmAADgNdhC3WMAcgAA4DXYptyABUpUYWNlZmxtb3N0AD0GQAZDBl4GawZkB2gHcAd0B80H2gdjAHkACWQ7gDwAPECAAmNtbnByAEwGTwZSBlUGWwb1IXRlOWHiIWRhm2NnAACg6ifsI2FjZXRyZgCgEiFyAACgniGAAWFleQBkBmcGagbyIW9uPWHkIWlsO2EbZAABZnNvBjQHdAAABUFDREZSVFVWYXKABp4GpAbGBssG3AYDByEHwQIqBwABbnKEBowGZyVsZUJyYWNrZXQAAKDoJ/Ihb3cAoZAhQlKTBpcGYQByAACg5CHpJGdodEFycm93AKDGIWUjaWxpbmcAAKAII28A9QGqBgAAsgZiJWxlQnJhY2tldAAAoOYnbgDUAbcGAAC+BmUkZVZlY3RvcgAAoGEp5SJjdG9yQqDDIWEAcgAAoFkpbCJvb3IAAKAKI2kiZ2h0AAABQVbSBtcGciJyb3cAAKCUIeUiY3RvcgCgTikAAWVy4AbwBmUAAKGjIkFW5gbrBnIicm93AACgpCHlImN0b3IAoFopaSNhbmdsZQBCorIi+wYAAAAA/wZhAHIAAKDPKXEidWFsAACgtCJwAIABRFRWAAoHEQcYB+8kd25WZWN0b3IAoFEpZSRlVmVjdG9yAACgYCnlImN0b3JCoL8hYQByAACgWCnlImN0b3JCoLwhYQByAACgUilpAGcAaAB0AGEAcgByAG8A9wDMAnMAAANFRkdMU1Q/B0cHTgdUB1gHXwfxJXVhbEdyZWF0ZXIAoNoidSRsbEVxdWFsAACgZiJyI2VhdGVyAACgdiLlIXNzAKChKuwkYW50RXF1YWwAoH0qaSJsZGUAAKByInIAAOA12A/dZaDYIuYjdGFycm93AKDaIWkiZG90AD9hgAFucHcAege1B7kHZwAAAkxSbHKCB5QHmwerB+UhZnQAAUFSiAeNB3Iicm93AACg9SfpJGdodEFycm93AKD3J+kkZ2h0QXJyb3cAoPYn5SFmdAABYXLcAqEHaQBnAGgAdABhAHIAcgBvAPcA5wJpAGcAaAB0AGEAcgByAG8A9wDuAmYAAOA12EPdZQByAAABTFK/B8YHZSRmdEFycm93AACgmSHpJGdodEFycm93AKCYIYABY2h0ANMH1QfXB/IAWgYAoLAh8iFva0FhAKBqIgAEYWNlZmlvc3XpB+wH7gf/BwMICQgOCBEIcAAAoAUpeQAcZAABZGzyB/kHaSR1bVNwYWNlAACgXyBsI2ludHJmAACgMyFyAADgNdgQ3e4jdXNQbHVzAKATInAAZgAA4DXYRN1jAPIA/gecY4AESmFjZWZvc3R1ACEIJAgoCDUIgQiFCDsKQApHCmMAeQAKZGMidXRlAENhgAFhZXkALggxCDQI8iFvbkdh5CFpbEVhHWSAAWdzdwA7CGEIfQjhInRpdmWAAU1UVgBECEwIWQhlJWRpdW1TcGFjZQAAoAsgaABpAAABY25SCFMIawBTAHAAYQBjAOUASwhlAHIAeQBUAGgAaQDuAFQI9CFlZAABR0xnCHUIcgBlAGEAdABlAHIARwByAGUAYQB0AGUA8gDrBGUAcwBzAEwAZQBzAPMA2wdMImluZQAKYHIAAOA12BHdAAJCbnB0jAiRCJkInAhyImVhawAAoGAgwiZyZWFraW5nU3BhY2WgYGYAAKAVIUOq7CqzCMIIzQgAAOcIGwkAAAAAAAAtCQAAbwkAAIcJAACdCcAJGQoAADQKAAFvdbYIvAjuI2dydWVudACgYiJwIkNhcAAAoG0ibyh1YmxlVmVydGljYWxCYXIAAKAmIoABbHF4ANII1wjhCOUibWVudACgCSL1IWFsVKBgImkibGRlAADgQiI4A2kic3RzAACgBCJyI2VhdGVyAACjbyJFRkdMU1T1CPoIAgkJCQ0JFQlxInVhbAAAoHEidSRsbEVxdWFsAADgZyI4A3IjZWF0ZXIAAOBrIjgD5SFzcwCgeSLsJGFudEVxdWFsAOB+KjgDaSJsZGUAAKB1IvUhbXBEASAJJwnvI3duSHVtcADgTiI4A3EidWFsAADgTyI4A2UAAAFmczEJRgn0JFRyaWFuZ2xlQqLqIj0JAAAAAEIJYQByAADgzyk4A3EidWFsAACg7CJzAICibiJFR0xTVABRCVYJXAlhCWkJcSJ1YWwAAKBwInIjZWF0ZXIAAKB4IuUhc3MA4GoiOAPsJGFudEVxdWFsAOB9KjgDaSJsZGUAAKB0IuUic3RlZAABR0x1CX8J8iZlYXRlckdyZWF0ZXIA4KIqOAPlI3NzTGVzcwDgoSo4A/IjZWNlZGVzAKGAIkVTjwmVCXEidWFsAADgryo4A+wkYW50RXF1YWwAoOAiAAFlaaAJqQl2JmVyc2VFbGVtZW50AACgDCLnJWh0VHJpYW5nbGVCousitgkAAAAAuwlhAHIAAODQKTgDcSJ1YWwAAKDtIgABcXXDCeAJdSNhcmVTdQAAAWJwywnVCfMhZXRF4I8iOANxInVhbAAAoOIi5SJyc2V0ReCQIjgDcSJ1YWwAAKDjIoABYmNwAOYJ8AkNCvMhZXRF4IIi0iBxInVhbAAAoIgi4yJlZWRzgKGBIkVTVAD6CQAKBwpxInVhbAAA4LAqOAPsJGFudEVxdWFsAKDhImkibGRlAADgfyI4A+UicnNldEXggyLSIHEidWFsAACgiSJpImxkZQCAoUEiRUZUACIKJwouCnEidWFsAACgRCJ1JGxsRXF1YWwAAKBHImkibGRlAACgSSJlJXJ0aWNhbEJhcgAAoCQiYwByAADgNdip3GkAbABkAGUAO4DRANFAnWMAB0VhY2RmZ21vcHJzdHV2XgphCmgKcgp2CnoKgQqRCpYKqwqtCrsKyArNCuwhaWdSYWMAdQB0AGUAO4DTANNAAAFpeWwKcQpyAGMAO4DUANRAHmRiImxhYwBQYXIAAOA12BLdcgBhAHYAZQA7gNIA0kCAAWFlaQCHCooKjQpjAHIATGFnAGEAqWNjInJvbgCfY3AAZgAA4DXYRt3lI25DdXJseQABRFGeCqYKbyV1YmxlUXVvdGUAAKAcIHUib3RlAACgGCAAoFQqAAFjbLEKtQpyAADgNdiq3GEAcwBoADuA2ADYQGkAbAHACsUKZABlADuA1QDVQGUAcwAAoDcqbQBsADuA1gDWQGUAcgAAAUJQ0wrmCgABYXLXCtoKcgAAoD4gYQBjAAABZWvgCuIKAKDeI2UAdAAAoLQjYSVyZW50aGVzaXMAAKDcI4AEYWNmaGlsb3JzAP0KAwsFCwkLCwsMCxELIwtaC3IjdGlhbEQAAKACInkAH2RyAADgNdgT3WkApmOgY/Ujc01pbnVzsWAAAWlwFQsgC24AYwBhAHIAZQBwAGwAYQBuAOUACgVmAACgGSGAobsqZWlvACoLRQtJC+MiZWRlc4CheiJFU1QANAs5C0ALcSJ1YWwAAKCvKuwkYW50RXF1YWwAoHwiaSJsZGUAAKB+Im0AZQAAoDMgAAFkcE0LUQv1IWN0AKAPIm8jcnRpb24AYaA3ImwAAKAdIgABY2leC2ILcgAA4DXYq9yoYwACVWZvc2oLbwtzC3cLTwBUADuAIgAiQHIAAOA12BTdcABmAACgGiFjAHIAAOA12KzcAAZCRWFjZWZoaW9yc3WPC5MLlwupC7YL2AvbC90LhQyTDJoMowzhIXJyAKAQKUcAO4CuAK5AgAFjbnIAnQugC6ML9SF0ZVRhZwAAoOsncgB0oKAhbAAAoBYpgAFhZXkArwuyC7UL8iFvblhh5CFpbFZhIGR2oBwhZSJyc2UAAAFFVb8LzwsAAWxxwwvIC+UibWVudACgCyL1JGlsaWJyaXVtAKDLIXAmRXF1aWxpYnJpdW0AAKBvKXIAAKAcIW8AoWPnIWh0AARBQ0RGVFVWYewLCgwQDDIMNwxeDHwM9gIAAW5y8Av4C2clbGVCcmFja2V0AACg6SfyIW93AKGSIUJM/wsDDGEAcgAAoOUhZSRmdEFycm93AACgxCFlI2lsaW5nAACgCSNvAPUBFgwAAB4MYiVsZUJyYWNrZXQAAKDnJ24A1AEjDAAAKgxlJGVWZWN0b3IAAKBdKeUiY3RvckKgwiFhAHIAAKBVKWwib29yAACgCyMAAWVyOwxLDGUAAKGiIkFWQQxGDHIicm93AACgpiHlImN0b3IAoFspaSNhbmdsZQBCorMiVgwAAAAAWgxhAHIAAKDQKXEidWFsAACgtSJwAIABRFRWAGUMbAxzDO8kd25WZWN0b3IAoE8pZSRlVmVjdG9yAACgXCnlImN0b3JCoL4hYQByAACgVCnlImN0b3JCoMAhYQByAACgUykAAXB1iQyMDGYAAKAdIe4kZEltcGxpZXMAoHAp6SRnaHRhcnJvdwCg2yEAAWNongyhDHIAAKAbIQCgsSHsJGVEZWxheWVkAKD0KYAGSE9hY2ZoaW1vcXN0dQC/DMgMzAzQDOIM5gwKDQ0NFA0ZDU8NVA1YDQABQ2PDDMYMyCFjeSlkeQAoZEYiVGN5ACxkYyJ1dGUAWmEAorwqYWVpedgM2wzeDOEM8iFvbmBh5CFpbF5hcgBjAFxhIWRyAADgNdgW3e8hcnQAAkRMUlXvDPYM/QwEDW8kd25BcnJvdwAAoJMhZSRmdEFycm93AACgkCHpJGdodEFycm93AKCSIXAjQXJyb3cAAKCRIechbWGjY+EkbGxDaXJjbGUAoBgicABmAADgNdhK3XICHw0AAAAAIg10AACgGiLhIXJlgKGhJUlTVQAqDTINSg3uJXRlcnNlY3Rpb24AoJMidQAAAWJwNw1ADfMhZXRFoI8icSJ1YWwAAKCRIuUicnNldEWgkCJxInVhbAAAoJIibiJpb24AAKCUImMAcgAA4DXYrtxhAHIAAKDGIgACYmNtcF8Nag2ODZANc6DQImUAdABFoNAicSJ1YWwAAKCGIgABY2huDYkNZSJlZHMAgKF7IkVTVAB4DX0NhA1xInVhbAAAoLAq7CRhbnRFcXVhbACgfSJpImxkZQAAoH8iVABoAGEA9ADHCwCgESIAodEiZXOVDZ8NciJzZXQARaCDInEidWFsAACghyJlAHQAAKDRIoAFSFJTYWNmaGlvcnMAtQ27Db8NyA3ODdsN3w3+DRgOHQ4jDk8AUgBOADuA3gDeQMEhREUAoCIhAAFIY8MNxg1jAHkAC2R5ACZkAAFidcwNzQ0JYKRjgAFhZXkA1A3XDdoN8iFvbmRh5CFpbGJhImRyAADgNdgX3QABZWnjDe4N8gHoDQAA7Q3lImZvcmUAoDQiYQCYYwABY27yDfkNayNTcGFjZQAA4F8gCiDTInBhY2UAoAkg7CFkZYChPCJFRlQABw4MDhMOcSJ1YWwAAKBDInUkbGxFcXVhbAAAoEUiaSJsZGUAAKBIInAAZgAA4DXYS93pI3BsZURvdACg2yAAAWN0Jw4rDnIAAOA12K/c8iFva2Zh4QpFDlYOYA5qDgAAbg5yDgAAAAAAAAAAAAB5DnwOqA6zDgAADg8RDxYPGg8AAWNySA5ODnUAdABlADuA2gDaQHIAb6CfIeMhaXIAoEkpcgDjAVsOAABdDnkADmR2AGUAbGEAAWl5Yw5oDnIAYwA7gNsA20AjZGIibGFjAHBhcgAA4DXYGN1yAGEAdgBlADuA2QDZQOEhY3JqYQABZGl/Dp8OZQByAAABQlCFDpcOAAFhcokOiw5yAF9gYQBjAAABZWuRDpMOAKDfI2UAdAAAoLUjYSVyZW50aGVzaXMAAKDdI28AbgBQoMMi7CF1cwCgjiIAAWdwqw6uDm8AbgByYWYAAOA12EzdAARBREVUYWRwc78O0g7ZDuEOBQPqDvMOBw9yInJvdwDCoZEhyA4AAMwOYQByAACgEilvJHduQXJyb3cAAKDFIW8kd25BcnJvdwAAoJUhcSV1aWxpYnJpdW0AAKBuKWUAZQBBoKUiciJyb3cAAKClIW8AdwBuAGEAcgByAG8A9wAQA2UAcgAAAUxS+Q4AD2UkZnRBcnJvdwAAoJYh6SRnaHRBcnJvdwCglyFpAGyg0gNvAG4ApWPpIW5nbmFjAHIAAOA12LDcaSJsZGUAaGFtAGwAO4DcANxAgAREYmNkZWZvc3YALQ8xDzUPNw89D3IPdg97D4AP4SFzaACgqyJhAHIAAKDrKnkAEmThIXNobKCpIgCg5ioAAWVyQQ9DDwCgwSKAAWJ0eQBJD00Paw9hAHIAAKAWIGmgFiDjIWFsAAJCTFNUWA9cD18PZg9hAHIAAKAjIukhbmV8YGUkcGFyYXRvcgAAoFgnaSJsZGUAAKBAItQkaGluU3BhY2UAoAogcgAA4DXYGd1wAGYAAOA12E3dYwByAADgNdix3GQiYXNoAACgqiKAAmNlZm9zAI4PkQ+VD5kPng/pIXJjdGHkIWdlAKDAInIAAOA12BrdcABmAADgNdhO3WMAcgAA4DXYstwAAmZpb3OqD64Prw+0D3IAAOA12BvdnmNwAGYAAOA12E/dYwByAADgNdiz3IAEQUlVYWNmb3N1AMgPyw/OD9EP2A/gD+QP6Q/uD2MAeQAvZGMAeQAHZGMAeQAuZGMAdQB0AGUAO4DdAN1AAAFpedwP3w9yAGMAdmErZHIAAOA12BzdcABmAADgNdhQ3WMAcgAA4DXYtNxtAGwAeGEABEhhY2RlZm9z/g8BEAUQDRAQEB0QIBAkEGMAeQAWZGMidXRlAHlhAAFheQkQDBDyIW9ufWEXZG8AdAB7YfIBFRAAABwQbwBXAGkAZAB0AOgAVAhhAJZjcgAAoCghcABmAACgJCFjAHIAAOA12LXc4QtCEEkQTRAAAGcQbRByEAAAAAAAAAAAeRCKEJcQ8hD9EAAAGxEhETIROREAAD4RYwB1AHQAZQA7gOEA4UByImV2ZQADYYCiPiJFZGl1eQBWEFkQWxBgEGUQAOA+IjMDAKA/InIAYwA7gOIA4kB0AGUAO4C0ALRAMGRsAGkAZwA7gOYA5kByoGEgAOA12B7dcgBhAHYAZQA7gOAA4EAAAWVwfBCGEAABZnCAEIQQ8yF5bQCgNSHoAIMQaABhALFjAAFhcI0QWwAAAWNskRCTEHIAAWFnAACgPypkApwQAAAAALEQAKInImFkc3ajEKcQqRCuEG4AZAAAoFUqAKBcKmwib3BlAACgWCoAoFoqAKMgImVsbXJzersQvRDAEN0Q5RDtEACgpCllAACgICJzAGQAYaAhImEEzhDQENIQ1BDWENgQ2hDcEACgqCkAoKkpAKCqKQCgqykAoKwpAKCtKQCgrikAoK8pdAB2oB8iYgBkoL4iAKCdKQABcHTpEOwQaAAAoCIixWDhIXJyAKB8IwABZ3D1EPgQbwBuAAVhZgAA4DXYUt0Ao0giRWFlaW9wBxEJEQ0RDxESERQRAKBwKuMhaXIAoG8qAKBKImQAAKBLInMAJ2DyIW94ZaBIIvEADhFpAG4AZwA7gOUA5UCAAWN0eQAmESoRKxFyAADgNdi23CpgbQBwAGWgSCLxAPgBaQBsAGQAZQA7gOMA40BtAGwAO4DkAORAAAFjaUERRxFvAG4AaQBuAPQA6AFuAHQAAKARKgAITmFiY2RlZmlrbG5vcHJzdWQRaBGXEZ8RpxGrEdIR1hErEjASexKKEn0RThNbE3oTbwB0AACg7SoAAWNybBGJEWsAAAJjZXBzdBF4EX0RghHvIW5nAKBMInAjc2lsb24A9mNyImltZQAAoDUgaQBtAGWgPSJxAACgzSJ2AY0RkRFlAGUAAKC9ImUAZABnoAUjZQAAoAUjcgBrAHSgtSPiIXJrAKC2IwABb3mjEaYRbgDnAHcRMWTxIXVvAKAeIIACY21wcnQAtBG5Eb4RwRHFEeEhdXPloDUi5ABwInR5dgAAoLApcwDpAH0RbgBvAPUA6gCAAWFodwDLEcwRzhGyYwCgNiHlIWVuAKBsInIAAOA12B/dZwCAA2Nvc3R1dncA4xHyEQUSEhIhEiYSKRKAAWFpdQDpEesR7xHwAKMFcgBjAACg7yVwAACgwyKAAWRwdAD4EfwRABJvAHQAAKAAKuwhdXMAoAEqaSJtZXMAAKACKnECCxIAAAAADxLjIXVwAKAGKmEAcgAAoAUm8iNpYW5nbGUAAWR1GhIeEu8hd24AoL0lcAAAoLMlcCJsdXMAAKAEKmUA5QBCD+UAkg9hInJvdwAAoA0pgAFha28ANhJoEncSAAFjbjoSZRJrAIABbHN0AEESRxJNEm8jemVuZ2UAAKDrKXEAdQBhAHIA5QBcBPIjaWFuZ2xlgKG0JWRscgBYElwSYBLvIXduAKC+JeUhZnQAoMIlaSJnaHQAAKC4JWsAAKAjJLEBbRIAAHUSsgFxEgAAcxIAoJIlAKCRJTQAAKCTJWMAawAAoIglAAFlb38ShxJx4D0A5SD1IWl2AOBhIuUgdAAAoBAjAAJwdHd4kRKVEpsSnxJmAADgNdhT3XSgpSJvAG0AAKClIvQhaWUAoMgiAAZESFVWYmRobXB0dXayEsES0RLgEvcS+xIKExoTHxMjEygTNxMAAkxSbHK5ErsSvRK/EgCgVyUAoFQlAKBWJQCgUyUAolAlRFVkdckSyxLNEs8SAKBmJQCgaSUAoGQlAKBnJQACTFJsctgS2hLcEt4SAKBdJQCgWiUAoFwlAKBZJQCjUSVITFJobHLrEu0S7xLxEvMS9RIAoGwlAKBjJQCgYCUAoGslAKBiJQCgXyVvAHgAAKDJKQACTFJscgITBBMGEwgTAKBVJQCgUiUAoBAlAKAMJQCiACVEVWR1EhMUExYTGBMAoGUlAKBoJQCgLCUAoDQlaSJudXMAAKCfIuwhdXMAoJ4iaSJtZXMAAKCgIgACTFJsci8TMRMzEzUTAKBbJQCgWCUAoBglAKAUJQCjAiVITFJobHJCE0QTRhNIE0oTTBMAoGolAKBhJQCgXiUAoDwlAKAkJQCgHCUAAWV2UhNVE3YA5QD5AGIAYQByADuApgCmQAACY2Vpb2ITZhNqE24TcgAA4DXYt9xtAGkAAKBPIG0A5aA9IogRbAAAoVwAYmh0E3YTAKDFKfMhdWIAoMgnbAF+E4QTbABloCIgdAAAoCIgcAAAoU4iRWWJE4sTAKCuKvGgTyI8BeEMqRMAAN8TABQDFB8UAAAjFDQUAAAAAIUUAAAAAI0UAAAAANcU4xT3FPsUAACIFQAAlhWAAWNwcgCuE7ET1RP1IXRlB2GAoikiYWJjZHMAuxO/E8QTzhPSE24AZAAAoEQqciJjdXAAAKBJKgABYXXIE8sTcAAAoEsqcAAAoEcqbwB0AACgQCoA4CkiAP4AAWVv2RPcE3QAAKBBIO4ABAUAAmFlaXXlE+8T9RP4E/AB6hMAAO0TcwAAoE0qbwBuAA1hZABpAGwAO4DnAOdAcgBjAAlhcABzAHOgTCptAACgUCpvAHQAC2GAAWRtbgAIFA0UEhRpAGwAO4C4ALhAcCJ0eXYAAKCyKXQAAIGiADtlGBQZFKJAcgBkAG8A9ABiAXIAAOA12CDdgAFjZWkAKBQqFDIUeQBHZGMAawBtoBMn4SFyawCgEyfHY3IAAKPLJUVjZWZtcz8UQRRHFHcUfBSAFACgwykAocYCZWxGFEkUcQAAoFciZQBhAlAUAAAAAGAUciJyb3cAAAFsclYUWhTlIWZ0AKC6IWkiZ2h0AACguyGAAlJTYWNkAGgUaRRrFG8UcxSuYACgyCRzAHQAAKCbIukhcmMAoJoi4SFzaACgnSJuImludAAAoBAqaQBkAACg7yrjIWlyAKDCKfUhYnN1oGMmaQB0AACgYybsApMUmhS2FAAAwxRvAG4AZaA6APGgVCKrAG0CnxQAAAAAoxRhAHSgLABAYAChASJmbKcUqRTuABMNZQAAAW14rhSyFOUhbnQAoAEiZQDzANIB5wG6FAAAwBRkoEUibwB0AACgbSpuAPQAzAGAAWZyeQDIFMsUzhQA4DXYVN1vAOQA1wEAgakAO3MeAdMUcgAAoBchAAFhb9oU3hRyAHIAAKC1IXMAcwAAoBcnAAFjdeYU6hRyAADgNdi43AABYnDuFPIUZaDPKgCg0SploNAqAKDSKuQhb3QAoO8igANkZWxwcnZ3AAYVEBUbFSEVRBVlFYQV4SFycgABbHIMFQ4VAKA4KQCgNSlwAhYVAAAAABkVcgAAoN4iYwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWlsN2E6ZHIAAOA12CjdciJlZW4AOGFjAHkARWRjAHkAXGRwAGYAAOA12FzdYwByAADgNdjA3IALQUJFSGFiY2RlZmdoamxtbm9wcnN0dXYAXhxtHHEcdRx5HN8cBx0dHTwd3B3tHfEdAR4EHh0eLB5FHrwewx7hHgkfPR9LH4ABYXJ0AGQcZxxpHHIA8gBvB/IAxQLhIWlsAKAbKeEhcnIAoA4pZ6BmIgCgiyphAHIAAKBiKWMJjRwAAJAcAACVHAAAAAAAAAAAAACZHJwcAACmHKgcrRwAANIc9SF0ZTph7SJwdHl2AKC0KXIAYQDuAFoG4iFkYbtjZwAAoegnZGyhHKMcAKCRKeUAiwYAoIUqdQBvADuAqwCrQHIAgKOQIWJmaGxwc3QAuhy/HMIcxBzHHMoczhxmoOQhcwAAoB8pcwAAoB0p6wCyGnAAAKCrIWwAAKA5KWkAbQAAoHMpbAAAoKIhAKGrKmFl1hzaHGkAbAAAoBkpc6CtKgDgrSoA/oABYWJyAOUc6RztHHIAcgAAoAwpcgBrAACgcicAAWFr8Rz4HGMAAAFla/Yc9xx7YFtgAAFlc/wc/hwAoIspbAAAAWR1Ax0FHQCgjykAoI0pAAJhZXV5Dh0RHRodHB3yIW9uPmEAAWRpFR0YHWkAbAA8YewAowbiAPccO2QAAmNxcnMkHScdLB05HWEAAKA2KXUAbwDyoBwgqhEAAWR1MB00HeghYXIAoGcpcyJoYXIAAKBLKWgAAKCyIQCiZCJmZ3FzRB1FB5Qdnh10AIACYWhscnQATh1WHWUdbB2NHXIicm93AHSgkCFhAOkAzxxhI3Jwb29uAAABZHVeHWId7yF3bgCgvSFwAACgvCHlJGZ0YXJyb3dzAKDHIWkiZ2h0AIABYWhzAHUdex2DHXIicm93APOglCGdBmEAcgBwAG8AbwBuAPMAzgtxAHUAaQBnAGEAcgByAG8A9wBlGugkcmVldGltZXMAoMsi8aFkIk0HAACaHWwAYQBuAPQAXgcAon0qY2Rnc6YdqR2xHbcdYwAAoKgqbwB0AG+gfypyoIEqAKCDKmXg2iIA/nMAAKCTKoACYWRlZ3MAwB3GHcod1h3ZHXAAcAByAG8A+ACmHG8AdAAAoNYicQAAAWdxzx3SHXQA8gBGB2cAdADyAHQcdADyAFMHaQDtAGMHgAFpbHIA4h3mHeod8yFodACgfClvAG8A8gDKBgDgNdgp3UWgdiIAoJEqYQH1Hf4dcgAAAWR1YB35HWygvCEAoGopbABrAACghCVjAHkAWWQAomoiYWNodAweDx4VHhkecgDyAGsdbwByAG4AZQDyAGAW4SFyZACgaylyAGkAAKD6JQABaW8hHiQe5CFvdEBh9SFzdGGgsCPjIWhlAKCwIwACRWFlczMeNR48HkEeAKBoInAAcKCJKvIhb3gAoIkqcaCHKvGghyo0HmkAbQAAoOYiAARhYm5vcHR3elIeXB5fHoUelh6mHqsetB4AAW5yVh5ZHmcAAKDsJ3IAAKD9IXIA6wCwBmcAgAFsbXIAZh52Hnse5SFmdAABYXKIB2weaQBnAGgAdABhAHIAcgBvAPcAkwfhInBzdG8AoPwnaQBnAGgAdABhAHIAcgBvAPcAmgdwI2Fycm93AAABbHKNHpEeZQBmAPQAxhxpImdodAAAoKwhgAFhZmwAnB6fHqIecgAAoIUpAOA12F3ddQBzAACgLSppIm1lcwAAoDQqYQGvHrMecwB0AACgFyLhAIoOZaHKJbkeRhLuIWdlAKDKJWEAcgBsoCgAdAAAoJMpgAJhY2htdADMHs8e1R7bHt0ecgDyAJ0GbwByAG4AZQDyANYWYQByAGSgyyEAoG0pAKAOIHIAaQAAoL8iAANhY2hpcXTrHu8e1QfzHv0eBh/xIXVvAKA5IHIAAOA12MHcbQDloXIi+h4AAPweAKCNKgCgjyoAAWJ19xwBH28AcqAYIACgGiDyIW9rQmEAhDwAO2NkaGlscXJCBhcfxh0gHyQfKB8sHzEfAAFjaRsfHR8AoKYqcgAAoHkqcgBlAOUAkx3tIWVzAKDJIuEhcnIAoHYpdSJlc3QAAKB7KgABUGk1HzkfYQByAACglillocMlAgdfEnIAAAFkdUIfRx9zImhhcgAAoEop6CFhcgCgZikAAWVuTx9WH3IjdG5lcXEAAOBoIgD+xQBUHwAHRGFjZGVmaGlsbm9wc3VuH3Ifoh+rH68ftx+7H74f5h/uH/MfBwj/HwsgxCFvdACgOiIAAmNscHJ5H30fiR+eH3IAO4CvAK9AAAFldIEfgx8AoEImZaAgJ3MAZQAAoCAnc6CmIXQAbwCAoaYhZGx1AJQfmB+cH28AdwDuAHkDZQBmAPQA6gbwAOkO6yFlcgCgriUAAW95ph+qH+0hbWEAoCkqPGThIXNoAKAUIOElc3VyZWRhbmdsZQCgISJyAADgNdgq3W8AAKAnIYABY2RuAMQfyR/bH3IAbwA7gLUAtUBhoiMi0B8AANMf1x9zAPQAKxFpAHIAAKDwKm8AdAA7gLcAt0B1AHMA4qESIh4TAADjH3WgOCIAoCoqYwHqH+0fcAAAoNsq8gB+GnAAbAB1APMACAgAAWRw9x/7H+UhbHMAoKciZgAA4DXYXt0AAWN0AyAHIHIAAOA12MLc8CFvcwCgPiJsobwDECAVIPQiaW1hcACguCJhAPAAEyAADEdMUlZhYmNkZWZnaGlqbG1vcHJzdHV2dzwgRyBmIG0geSCqILgg2iDeIBEhFSEyIUMhTSFQIZwhnyHSIQAiIyKLIrEivyIUIwABZ3RAIEMgAODZIjgD9uBrItIgBwmAAWVsdABNIF8gYiBmAHQAAAFhclMgWCByInJvdwAAoM0h6SRnaHRhcnJvdwCgziEA4NgiOAP24Goi0iBfCekkZ2h0YXJyb3cAoM8hAAFEZHEgdSDhIXNoAKCvIuEhc2gAoK4igAJiY25wdACCIIYgiSCNIKIgbABhAACgByL1IXRlRGFnAADgICLSIACiSSJFaW9wlSCYIJwgniAA4HAqOANkAADgSyI4A3MASWFyAG8A+AAyCnUAcgBhoG4mbADzoG4mmwjzAa8gAACzIHAAO4CgAKBAbQBwAOXgTiI4AyoJgAJhZW91eQDBIMogzSDWINkg8AHGIAAAyCAAoEMqbwBuAEhh5CFpbEZhbgBnAGSgRyJvAHQAAOBtKjgDcAAAoEIqPWThIXNoAKATIACjYCJBYWRxc3jpIO0g+SD+IAIhDCFyAHIAAKDXIXIAAAFocvIg9SBrAACgJClvoJch9wAGD28AdAAA4FAiOAN1AGkA9gC7CAABZWkGIQohYQByAACgKCntAN8I6SFzdPOgBCLlCHIAAOA12CvdAAJFZXN0/wgcISshLiHxoXEiIiEAABMJ8aFxIgAJAAAnIWwAYQBuAPQAEwlpAO0AGQlyoG8iAKBvIoABQWFwADghOyE/IXIA8gBeIHIAcgAAoK4hYQByAACg8ipzogsiSiEAAAAAxwtkoPwiAKD6ImMAeQBaZIADQUVhZGVzdABcIV8hYiFmIWkhkyGWIXIA8gBXIADgZiI4A3IAcgAAoJohcgAAoCUggKFwImZxcwBwIYQhjiF0AAABYXJ1IXohcgByAG8A9wBlIWkAZwBoAHQAYQByAHIAbwD3AD4h8aFwImAhAACKIWwAYQBuAPQAZwlz4H0qOAMAoG4iaQDtAG0JcqBuImkA5aDqIkUJaQDkADoKAAFwdKMhpyFmAADgNdhf3YCBrAA7aW4AriGvIcchrEBuAIChCSJFZHYAtyG6Ib8hAOD5IjgDbwB0AADg9SI4A+EB1gjEIcYhAKD3IgCg9iJpAHagDCLhAagJzyHRIQCg/iIAoP0igAFhb3IA2CHsIfEhcgCAoSYiYXN0AOAh5SHpIWwAbABlAOwAywhsAADg/SrlIADgAiI4A2wiaW50AACgFCrjoYAi9yEAAPohdQDlAJsJY+CvKjgDZaCAIvEAkwkAAkFhaXQHIgoiFyIeInIA8gBsIHIAcgAAoZshY3cRIhQiAOAzKTgDAOCdITgDZyRodGFycm93AACgmyFyAGkA5aDrIr4JgANjaGltcHF1AC8iPCJHIpwhTSJQIloigKGBImNlcgA2Iv0JOSJ1AOUABgoA4DXYw9zvIXJ0bQKdIQAAAABEImEAcgDhAOEhbQBloEEi8aBEIiYKYQDyAMsIcwB1AAABYnBWIlgi5QDUCeUA3wmAAWJjcABgInMieCKAoYQiRWVzAGci7glqIgDgxSo4A2UAdABl4IIi0iBxAPGgiCJoImMAZaCBIvEA/gmAoYUiRWVzAH8iFgqCIgDgxio4A2UAdABl4IMi0iBxAPGgiSKAIgACZ2lscpIilCKaIpwi7AAMCWwAZABlADuA8QDxQOcAWwlpI2FuZ2xlAAABbHKkIqoi5SFmdGWg6iLxAEUJaSJnaHQAZaDrIvEAvgltoL0DAKEjAGVzuCK8InIAbwAAoBYhcAAAoAcggARESGFkZ2lscnMAziLSItYi2iLeIugi7SICIw8j4SFzaACgrSLhIXJyAKAEKXAAAOBNItIg4SFzaACgrCIAAWV04iLlIgDgZSLSIADgPgDSIG4iZmluAACg3imAAUFldADzIvci+iJyAHIAAKACKQDgZCLSIHLgPADSIGkAZQAA4LQi0iAAAUF0BiMKI3IAcgAAoAMp8iFpZQDgtSLSIGkAbQAA4Dwi0iCAAUFhbgAaIx4jKiNyAHIAAKDWIXIAAAFociMjJiNrAACgIylvoJYh9wD/DuUhYXIAoCcpUxJqFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVCMAAF4jaSN/I4IjjSOeI8AUAAAAAKYjwCMAANoj3yMAAO8jHiQvJD8kRCQAAWNzVyNsFHUAdABlADuA8wDzQAABaXlhI2cjcgBjoJoiO4D0APRAPmSAAmFiaW9zAHEjdCN3I3EBeiNzAOgAdhTsIWFjUWF2AACgOCrvIWxkAKC8KewhaWdTYQABY3KFI4kjaQByAACgvykA4DXYLN1vA5QjAAAAAJYjAACcI24A22JhAHYAZQA7gPIA8kAAoMEpAAFibaEjjAphAHIAAKC1KQACYWNpdKwjryO6I70jcgDyAFkUAAFpcrMjtiNyAACgvinvIXNzAKC7KW4A5QDZCgCgwCmAAWFlaQDFI8gjyyNjAHIATWFnAGEAyWOAAWNkbgDRI9Qj1iPyIW9uv2MAoLYpdQDzAHgBcABmAADgNdhg3YABYWVsAOQj5yPrI3IAAKC3KXIAcAAAoLkpdQDzAHwBAKMoImFkaW9zdvkj/CMPJBMkFiQbJHIA8gBeFIChXSplZm0AAyQJJAwkcgBvoDQhZgAAoDQhO4CqAKpAO4C6ALpA5yFvZgCgtiJyAACgVipsIm9wZQAAoFcqAKBbKoABY2xvACMkJSQrJPIACCRhAHMAaAA7gPgA+EBsAACgmCJpAGwBMyQ4JGQAZQA7gPUA9UBlAHMAYaCXInMAAKA2Km0AbAA7gPYA9kDiIWFyAKA9I+EKXiQAAHokAAB8JJQkAACYJKkkAAAAALUkEQsAAPAkAAAAAAQleiUAAIMlcgCAoSUiYXN0AGUkbyQBCwCBtgA7bGokayS2QGwAZQDsABgDaQJ1JAAAAAB4JG0AAKDzKgCg/Sp5AD9kcgCAAmNpbXB0AIUkiCSLJJkSjyRuAHQAJWBvAGQALmBpAGwAAKAwIOUhbmsAoDEgcgAA4DXYLd2AAWltbwCdJKAkpCR2oMYD1WNtAGEA9AD+B24AZQAAoA4m9KHAA64kAAC0JGMjaGZvcmsAAKDUItZjAAFhdbgkxCRuAAABY2u9JMIkawBooA8hAKAOIfYAaRpzAACkKwBhYmNkZW1zdNMkIRPXJNsk4STjJOck6yTjIWlyAKAjKmkAcgAAoCIqAAFvdYsW3yQAoCUqAKByKm4AO4CxALFAaQBtAACgJip3AG8AAKAnKoABaXB1APUk+iT+JO4idGludACgFSpmAADgNdhh3W4AZAA7gKMAo0CApHoiRWFjZWlub3N1ABMlFSUYJRslTCVRJVklSSV1JQCgsypwAACgtyp1AOUAPwtjoK8qgKJ6ImFjZW5zACclLSU0JTYlSSVwAHAAcgBvAPgAFyV1AHIAbAB5AGUA8QA/C/EAOAuAAWFlcwA8JUElRSXwInByb3gAoLkqcQBxAACgtSppAG0AAKDoImkA7QBEC20AZQDzoDIgIguAAUVhcwBDJVclRSXwAEAlgAFkZnAATwtfJXElgAFhbHMAZSVpJW0l7CFhcgCgLiPpIW5lAKASI/UhcmYAoBMjdKAdIu8AWQvyIWVsAKCwIgABY2l9JYElcgAA4DXYxdzIY24iY3NwAACgCCAAA2Zpb3BzdZElKxuVJZolnyWkJXIAAOA12C7dcABmAADgNdhi3XIiaW1lAACgVyBjAHIAAOA12MbcgAFhZW8AqiW6JcAldAAAAWVpryW2JXIAbgBpAG8AbgDzABkFbgB0AACgFipzAHQAZaA/APEACRj0AG0LgApBQkhhYmNkZWZoaWxtbm9wcnN0dXgA4yXyJfYl+iVpJpAmpia9JtUm5ib4JlonaCdxJ3UnnietJ7EnyCfiJ+cngAFhcnQA6SXsJe4lcgDyAJkM8gD6AuEhaWwAoBwpYQByAPIA3BVhAHIAAKBkKYADY2RlbnFydAAGJhAmEyYYJiYmKyZaJgABZXUKJg0mAOA9IjEDdABlAFVhaQDjACAN7SJwdHl2AKCzKWcAgKHpJ2RlbAAgJiImJCYAoJIpAKClKeUA9wt1AG8AO4C7ALtAcgAApZIhYWJjZmhscHN0dz0mQCZFJkcmSiZMJk4mUSZVJlgmcAAAoHUpZqDlIXMAAKAgKQCgMylzAACgHinrALka8ACVHmwAAKBFKWkAbQAAoHQpbAAAoKMhAKCdIQABYWleJmImaQBsAACgGilvAG6gNiJhAGwA8wB2C4ABYWJyAG8mciZ2JnIA8gAvEnIAawAAoHMnAAFha3omgSZjAAABZWt/JoAmfWBdYAABZXOFJocmAKCMKWwAAAFkdYwmjiYAoI4pAKCQKQACYWV1eZcmmiajJqUm8iFvbllhAAFkaZ4moSZpAGwAV2HsAA8M4gCAJkBkAAJjbHFzrSawJrUmuiZhAACgNylkImhhcgAAoGkpdQBvAPKgHSCjAWgAAKCzIYABYWNnAMMm0iaUC2wAgKEcIWlwcwDLJs4migxuAOUAoAxhAHIA9ADaC3QAAKCtJYABaWxyANsm3ybjJvMhaHQAoH0pbwBvAPIANgwA4DXYL90AAWFv6ib1JnIAAAFkde8m8SYAoMEhbKDAIQCgbCl2oMED8WOAAWducwD+Jk4nUCdoAHQAAANhaGxyc3QKJxInISc1Jz0nRydyInJvdwB0oJIhYQDpAFYmYSNycG9vbgAAAWR1GiceJ28AdwDuAPAmcAAAoMAh5SFmdAABYWgnJy0ncgByAG8AdwDzAAkMYQByAHAAbwBvAG4A8wATBGklZ2h0YXJyb3dzAACgySFxAHUAaQBnAGEAcgByAG8A9wBZJugkcmVldGltZXMAoMwiZwDaYmkAbgBnAGQAbwB0AHMAZQDxABwYgAFhaG0AYCdjJ2YncgDyAAkMYQDyABMEAKAPIG8idXN0AGGgsSPjIWhlAKCxI+0haWQAoO4qAAJhYnB0fCeGJ4knmScAAW5ygCeDJ2cAAKDtJ3IAAKD+IXIA6wAcDIABYWZsAI8nkieVJ3IAAKCGKQDgNdhj3XUAcwAAoC4qaSJtZXMAAKA1KgABYXCiJ6gncgBnoCkAdAAAoJQp7yJsaW50AKASKmEAcgDyADwnAAJhY2hxuCe8J6EMwCfxIXVvAKA6IHIAAOA12MfcAAFidYAmxCdvAPKgGSCoAYABaGlyAM4n0ifWJ3IAZQDlAE0n7SFlcwCgyiJpAIChuSVlZmwAXAxjEt4n9CFyaQCgzinsInVoYXIAoGgpAKAeIWENBSgJKA0oSyhVKIYoAACLKLAoAAAAAOMo5ygAABApJCkxKW0pcSmHKaYpAACYKgAAAACxKmMidXRlAFthcQB1AO8ABR+ApHsiRWFjZWlucHN5ABwoHignKCooLygyKEEoRihJKACgtCrwASMoAAAlKACguCpvAG4AYWF1AOUAgw1koLAqaQBsAF9hcgBjAF1hgAFFYXMAOCg6KD0oAKC2KnAAAKC6KmkAbQAAoOki7yJsaW50AKATKmkA7QCIDUFkbwB0AGKixSKRFgAAAABTKACgZiqAA0FhY21zdHgAYChkKG8ocyh1KHkogihyAHIAAKDYIXIAAAFocmkoayjrAJAab6CYIfcAzAd0ADuApwCnQGkAO2D3IWFyAKApKW0AAAFpbn4ozQBuAHUA8wDOAHQAAKA2J3IA7+A12DDdIxkAAmFjb3mRKJUonSisKHIAcAAAoG8mAAFoeZkonChjAHkASWRIZHIAdABtAqUoAAAAAKgoaQDkAFsPYQByAGEA7ABsJDuArQCtQAABZ22zKLsobQBhAAChwwNmdroouijCY4CjPCJkZWdsbnByAMgozCjPKNMo1yjaKN4obwB0AACgairxoEMiCw5FoJ4qAKCgKkWgnSoAoJ8qZQAAoEYi7CF1cwCgJCrhIXJyAKByKWEAcgDyAPwMAAJhZWl07Sj8KAEpCCkAAWxz8Sj4KGwAcwBlAHQAbQDpAH8oaABwAACgMyrwImFyc2wAoOQpAAFkbFoPBSllAACgIyNloKoqc6CsKgDgrCoA/oABZmxwABUpGCkfKfQhY3lMZGKgLwBhoMQpcgAAoD8jZgAA4DXYZN1hAAABZHIoKRcDZQBzAHWgYCZpAHQAAKBgJoABY3N1ADYpRilhKQABYXU6KUApcABzoJMiAOCTIgD+cABzoJQiAOCUIgD+dQAAAWJwSylWKQChjyJlcz4NUCllAHQAZaCPIvEAPw0AoZAiZXNIDVspZQB0AGWgkCLxAEkNAKGhJWFmZilbBHIAZQFrKVwEAKChJWEAcgDyAAMNAAJjZW10dyl7KX8pgilyAADgNdjI3HQAbQDuAM4AaQDsAAYpYQByAOYAVw0AAWFyiimOKXIA5qAGJhESAAFhbpIpoylpImdodAAAAWVwmSmgKXAAcwBpAGwAbwDuANkXaADpAKAkcwCvYIACYmNtbnAArin8KY4NJSooKgCkgiJFZGVtbnByc7wpvinCKcgpzCnUKdgp3CkAoMUqbwB0AACgvSpkoIYibwB0AACgwyr1IWx0AKDBKgABRWXQKdIpAKDLKgCgiiLsIXVzAKC/KuEhcnIAoHkpgAFlaXUA4inxKfQpdAAAoYIiZW7oKewpcQDxoIYivSllAHEA8aCKItEpbQAAoMcqAAFicPgp+ikAoNUqAKDTKmMAgKJ7ImFjZW5zAAcqDSoUKhYqRihwAHAAcgBvAPgAIyh1AHIAbAB5AGUA8QCDDfEAfA2AAWFlcwAcKiIqPShwAHAAcgBvAPgAPChxAPEAOShnAACgaiYApoMiMTIzRWRlaGxtbnBzPCo/KkIqRSpHKlIqWCpjKmcqaypzKncqO4C5ALlAO4CyALJAO4CzALNAAKDGKgABb3NLKk4qdAAAoL4qdQBiAACg2CpkoIcibwB0AACgxCpzAAABb3VdKmAqbAAAoMknYgAAoNcq4SFycgCgeyn1IWx0AKDCKgABRWVvKnEqAKDMKgCgiyLsIXVzAKDAKoABZWl1AH0qjCqPKnQAAKGDImVugyqHKnEA8aCHIkYqZQBxAPGgiyJwKm0AAKDIKgABYnCTKpUqAKDUKgCg1iqAAUFhbgCdKqEqrCpyAHIAAKDZIXIAAAFocqYqqCrrAJUab6CZIfcAxQf3IWFyAKAqKWwAaQBnADuA3wDfQOELzyrZKtwq6SrsKvEqAAD1KjQrAAAAAAAAAAAAAEwrbCsAAHErvSsAAAAAAADRK3IC1CoAAAAA2CrnIWV0AKAWI8RjcgDrAOUKgAFhZXkA4SrkKucq8iFvbmVh5CFpbGNhQmRvAPQAIg5sInJlYwAAoBUjcgAA4DXYMd0AAmVpa2/7KhIrKCsuK/IBACsAAAkrZQAAATRm6g0EK28AcgDlAOsNYQBzorgDECsAAAAAEit5AG0A0WMAAWNuFislK2sAAAFhcxsrIStwAHAAcgBvAPgAFw5pAG0AAKA8InMA8AD9DQABYXMsKyEr8AAXDnIAbgA7gP4A/kDsATgrOyswG2QA5QBnAmUAcwCAgdcAO2JkAEMrRCtJK9dAYaCgInIAAKAxKgCgMCqAAWVwcwBRK1MraSvhAAkh4qKkIlsrXysAAAAAYytvAHQAAKA2I2kAcgAAoPEqb+A12GXdcgBrAACg2irhAHgociJpbWUAAKA0IIABYWlwAHYreSu3K2QA5QC+DYADYWRlbXBzdACFK6MrmiunK6wrsCuzK24iZ2xlAACitSVkbHFykCuUK5ornCvvIXduAKC/JeUhZnRloMMl8QACBwCgXCJpImdodABloLkl8QBdDG8AdAAAoOwlaSJudXMAAKA6KuwhdXMAoDkqYgAAoM0p6SFtZQCgOyrlInppdW0AoOIjgAFjaHQAwivKK80rAAFyecYrySsA4DXYydxGZGMAeQBbZPIhb2tnYQABaW/UK9creAD0ANERaCJlYWQAAAFsct4r5ytlAGYAdABhAHIAcgBvAPcAXQbpJGdodGFycm93AKCgIQAJQUhhYmNkZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg");var vi;(function(e){e[e.VALUE_LENGTH=49152]="VALUE_LENGTH",e[e.FLAG13=8192]="FLAG13",e[e.BRANCH_LENGTH=8064]="BRANCH_LENGTH",e[e.JUMP_TABLE=127]="JUMP_TABLE";})(vi||(vi={}));var Po;(function(e){e[e.NUM=35]="NUM",e[e.SEMI=59]="SEMI",e[e.EQUALS=61]="EQUALS",e[e.ZERO=48]="ZERO",e[e.NINE=57]="NINE",e[e.LOWER_A=97]="LOWER_A",e[e.LOWER_F=102]="LOWER_F",e[e.LOWER_X=120]="LOWER_X",e[e.LOWER_Z=122]="LOWER_Z",e[e.UPPER_A=65]="UPPER_A",e[e.UPPER_F=70]="UPPER_F",e[e.UPPER_Z=90]="UPPER_Z";})(Po||(Po={}));var yce=32;function TH(e){return e>=Po.ZERO&&e<=Po.NINE}function t4e(e){return e>=Po.UPPER_A&&e<=Po.UPPER_F||e>=Po.LOWER_A&&e<=Po.LOWER_F}function n4e(e){return e>=Po.UPPER_A&&e<=Po.UPPER_Z||e>=Po.LOWER_A&&e<=Po.LOWER_Z||TH(e)}function o4e(e){return e===Po.EQUALS||n4e(e)}var Ur;(function(e){e[e.EntityStart=0]="EntityStart",e[e.NumericStart=1]="NumericStart",e[e.NumericDecimal=2]="NumericDecimal",e[e.NumericHex=3]="NumericHex",e[e.NamedEntity=4]="NamedEntity";})(Ur||(Ur={}));var od;(function(e){e[e.Legacy=0]="Legacy",e[e.Strict=1]="Strict",e[e.Attribute=2]="Attribute";})(od||(od={}));var TP=class{decodeTree;emitCodePoint;errors;constructor(t,n,o){this.decodeTree=t,this.emitCodePoint=n,this.errors=o;}state=Ur.EntityStart;consumed=1;result=0;treeIndex=0;excess=1;decodeMode=od.Strict;runConsumed=0;startEntity(t){this.decodeMode=t,this.state=Ur.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0;}write(t,n){switch(this.state){case Ur.EntityStart:return t.charCodeAt(n)===Po.NUM?(this.state=Ur.NumericStart,this.consumed+=1,this.stateNumericStart(t,n+1)):(this.state=Ur.NamedEntity,this.stateNamedEntity(t,n));case Ur.NumericStart:return this.stateNumericStart(t,n);case Ur.NumericDecimal:return this.stateNumericDecimal(t,n);case Ur.NumericHex:return this.stateNumericHex(t,n);case Ur.NamedEntity:return this.stateNamedEntity(t,n)}}stateNumericStart(t,n){return n>=t.length?-1:(t.charCodeAt(n)|yce)===Po.LOWER_X?(this.state=Ur.NumericHex,this.consumed+=1,this.stateNumericHex(t,n+1)):(this.state=Ur.NumericDecimal,this.stateNumericDecimal(t,n))}stateNumericHex(t,n){for(;n<t.length;){let o=t.charCodeAt(n);if(TH(o)||t4e(o)){let r=o<=Po.NINE?o-Po.ZERO:(o|yce)-Po.LOWER_A+10;this.result=this.result*16+r,this.consumed++,n++;}else return this.emitNumericEntity(o,3)}return -1}stateNumericDecimal(t,n){for(;n<t.length;){let o=t.charCodeAt(n);if(TH(o))this.result=this.result*10+(o-Po.ZERO),this.consumed++,n++;else return this.emitNumericEntity(o,2)}return -1}emitNumericEntity(t,n){if(this.consumed<=n)return this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(t===Po.SEMI)this.consumed+=1;else if(this.decodeMode===od.Strict)return 0;return this.emitCodePoint(gce(this.result),this.consumed),this.errors&&(t!==Po.SEMI&&this.errors.missingSemicolonAfterCharacterReference(),this.errors.validateNumericCharacterReference(this.result)),this.consumed}stateNamedEntity(t,n){let{decodeTree:o}=this,r=o[this.treeIndex],i=(r&vi.VALUE_LENGTH)>>14;for(;n<t.length;){if(i===0&&r&vi.FLAG13){let a=(r&vi.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let l=r&vi.JUMP_TABLE;if(t.charCodeAt(n)!==l)return this.result===0?0:this.emitNotTerminatedNamedEntity();n++,this.excess++,this.runConsumed++;}for(;this.runConsumed<a;){if(n>=t.length)return -1;let l=this.runConsumed-1,c=o[this.treeIndex+1+(l>>1)],d=l%2===0?c&255:c>>8&255;if(t.charCodeAt(n)!==d)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();n++,this.excess++,this.runConsumed++;}this.runConsumed=0,this.treeIndex+=1+(a>>1),r=o[this.treeIndex],i=(r&vi.VALUE_LENGTH)>>14;}if(n>=t.length)break;let s=t.charCodeAt(n);if(s===Po.SEMI&&i!==0&&r&vi.FLAG13)return this.emitNamedEntityData(this.treeIndex,i,this.consumed+this.excess);if(this.treeIndex=r4e(o,r,this.treeIndex+Math.max(1,i),s),this.treeIndex<0)return this.result===0||this.decodeMode===od.Attribute&&(i===0||o4e(s))?0:this.emitNotTerminatedNamedEntity();if(r=o[this.treeIndex],i=(r&vi.VALUE_LENGTH)>>14,i!==0){if(s===Po.SEMI)return this.emitNamedEntityData(this.treeIndex,i,this.consumed+this.excess);this.decodeMode!==od.Strict&&!(r&vi.FLAG13)&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0);}n++,this.excess++;}return -1}emitNotTerminatedNamedEntity(){let{result:t,decodeTree:n}=this,o=(n[t]&vi.VALUE_LENGTH)>>14;return this.emitNamedEntityData(t,o,this.consumed),this.errors?.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(t,n,o){let{decodeTree:r}=this;return this.emitCodePoint(n===1?r[t]&~(vi.VALUE_LENGTH|vi.FLAG13):r[t+1],o),n===3&&this.emitCodePoint(r[t+2],o),o}end(){switch(this.state){case Ur.NamedEntity:return this.result!==0&&(this.decodeMode!==od.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case Ur.NumericDecimal:return this.emitNumericEntity(0,2);case Ur.NumericHex:return this.emitNumericEntity(0,3);case Ur.NumericStart:return this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case Ur.EntityStart:return 0}}};function r4e(e,t,n,o){let r=(t&vi.BRANCH_LENGTH)>>7,i=t&vi.JUMP_TABLE;if(r===0)return i!==0&&o===i?n:-1;if(i){let c=o-i;return c<0||c>=r?-1:e[n+c]-1}let s=r+1>>1,a=0,l=r-1;for(;a<=l;){let c=a+l>>>1,d=c>>1,p=e[n+d]>>(c&1)*8&255;if(p<o)a=c+1;else if(p>o)l=c-1;else return e[n+s+c]}return -1}var Te;(function(e){e.HTML="http://www.w3.org/1999/xhtml",e.MATHML="http://www.w3.org/1998/Math/MathML",e.SVG="http://www.w3.org/2000/svg",e.XLINK="http://www.w3.org/1999/xlink",e.XML="http://www.w3.org/XML/1998/namespace",e.XMLNS="http://www.w3.org/2000/xmlns/";})(Te||(Te={}));var Tu;(function(e){e.TYPE="type",e.ACTION="action",e.ENCODING="encoding",e.PROMPT="prompt",e.NAME="name",e.COLOR="color",e.FACE="face",e.SIZE="size";})(Tu||(Tu={}));var Zi;(function(e){e.NO_QUIRKS="no-quirks",e.QUIRKS="quirks",e.LIMITED_QUIRKS="limited-quirks";})(Zi||(Zi={}));var oe;(function(e){e.A="a",e.ADDRESS="address",e.ANNOTATION_XML="annotation-xml",e.APPLET="applet",e.AREA="area",e.ARTICLE="article",e.ASIDE="aside",e.B="b",e.BASE="base",e.BASEFONT="basefont",e.BGSOUND="bgsound",e.BIG="big",e.BLOCKQUOTE="blockquote",e.BODY="body",e.BR="br",e.BUTTON="button",e.CAPTION="caption",e.CENTER="center",e.CODE="code",e.COL="col",e.COLGROUP="colgroup",e.DD="dd",e.DESC="desc",e.DETAILS="details",e.DIALOG="dialog",e.DIR="dir",e.DIV="div",e.DL="dl",e.DT="dt",e.EM="em",e.EMBED="embed",e.FIELDSET="fieldset",e.FIGCAPTION="figcaption",e.FIGURE="figure",e.FONT="font",e.FOOTER="footer",e.FOREIGN_OBJECT="foreignObject",e.FORM="form",e.FRAME="frame",e.FRAMESET="frameset",e.H1="h1",e.H2="h2",e.H3="h3",e.H4="h4",e.H5="h5",e.H6="h6",e.HEAD="head",e.HEADER="header",e.HGROUP="hgroup",e.HR="hr",e.HTML="html",e.I="i",e.IMG="img",e.IMAGE="image",e.INPUT="input",e.IFRAME="iframe",e.KEYGEN="keygen",e.LABEL="label",e.LI="li",e.LINK="link",e.LISTING="listing",e.MAIN="main",e.MALIGNMARK="malignmark",e.MARQUEE="marquee",e.MATH="math",e.MENU="menu",e.META="meta",e.MGLYPH="mglyph",e.MI="mi",e.MO="mo",e.MN="mn",e.MS="ms",e.MTEXT="mtext",e.NAV="nav",e.NOBR="nobr",e.NOFRAMES="noframes",e.NOEMBED="noembed",e.NOSCRIPT="noscript",e.OBJECT="object",e.OL="ol",e.OPTGROUP="optgroup",e.OPTION="option",e.P="p",e.PARAM="param",e.PLAINTEXT="plaintext",e.PRE="pre",e.RB="rb",e.RP="rp",e.RT="rt",e.RTC="rtc",e.RUBY="ruby",e.S="s",e.SCRIPT="script",e.SEARCH="search",e.SECTION="section",e.SELECT="select",e.SOURCE="source",e.SMALL="small",e.SPAN="span",e.STRIKE="strike",e.STRONG="strong",e.STYLE="style",e.SUB="sub",e.SUMMARY="summary",e.SUP="sup",e.TABLE="table",e.TBODY="tbody",e.TEMPLATE="template",e.TEXTAREA="textarea",e.TFOOT="tfoot",e.TD="td",e.TH="th",e.THEAD="thead",e.TITLE="title",e.TR="tr",e.TRACK="track",e.TT="tt",e.U="u",e.UL="ul",e.SVG="svg",e.VAR="var",e.WBR="wbr",e.XMP="xmp";})(oe||(oe={}));var T;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.A=1]="A",e[e.ADDRESS=2]="ADDRESS",e[e.ANNOTATION_XML=3]="ANNOTATION_XML",e[e.APPLET=4]="APPLET",e[e.AREA=5]="AREA",e[e.ARTICLE=6]="ARTICLE",e[e.ASIDE=7]="ASIDE",e[e.B=8]="B",e[e.BASE=9]="BASE",e[e.BASEFONT=10]="BASEFONT",e[e.BGSOUND=11]="BGSOUND",e[e.BIG=12]="BIG",e[e.BLOCKQUOTE=13]="BLOCKQUOTE",e[e.BODY=14]="BODY",e[e.BR=15]="BR",e[e.BUTTON=16]="BUTTON",e[e.CAPTION=17]="CAPTION",e[e.CENTER=18]="CENTER",e[e.CODE=19]="CODE",e[e.COL=20]="COL",e[e.COLGROUP=21]="COLGROUP",e[e.DD=22]="DD",e[e.DESC=23]="DESC",e[e.DETAILS=24]="DETAILS",e[e.DIALOG=25]="DIALOG",e[e.DIR=26]="DIR",e[e.DIV=27]="DIV",e[e.DL=28]="DL",e[e.DT=29]="DT",e[e.EM=30]="EM",e[e.EMBED=31]="EMBED",e[e.FIELDSET=32]="FIELDSET",e[e.FIGCAPTION=33]="FIGCAPTION",e[e.FIGURE=34]="FIGURE",e[e.FONT=35]="FONT",e[e.FOOTER=36]="FOOTER",e[e.FOREIGN_OBJECT=37]="FOREIGN_OBJECT",e[e.FORM=38]="FORM",e[e.FRAME=39]="FRAME",e[e.FRAMESET=40]="FRAMESET",e[e.H1=41]="H1",e[e.H2=42]="H2",e[e.H3=43]="H3",e[e.H4=44]="H4",e[e.H5=45]="H5",e[e.H6=46]="H6",e[e.HEAD=47]="HEAD",e[e.HEADER=48]="HEADER",e[e.HGROUP=49]="HGROUP",e[e.HR=50]="HR",e[e.HTML=51]="HTML",e[e.I=52]="I",e[e.IMG=53]="IMG",e[e.IMAGE=54]="IMAGE",e[e.INPUT=55]="INPUT",e[e.IFRAME=56]="IFRAME",e[e.KEYGEN=57]="KEYGEN",e[e.LABEL=58]="LABEL",e[e.LI=59]="LI",e[e.LINK=60]="LINK",e[e.LISTING=61]="LISTING",e[e.MAIN=62]="MAIN",e[e.MALIGNMARK=63]="MALIGNMARK",e[e.MARQUEE=64]="MARQUEE",e[e.MATH=65]="MATH",e[e.MENU=66]="MENU",e[e.META=67]="META",e[e.MGLYPH=68]="MGLYPH",e[e.MI=69]="MI",e[e.MO=70]="MO",e[e.MN=71]="MN",e[e.MS=72]="MS",e[e.MTEXT=73]="MTEXT",e[e.NAV=74]="NAV",e[e.NOBR=75]="NOBR",e[e.NOFRAMES=76]="NOFRAMES",e[e.NOEMBED=77]="NOEMBED",e[e.NOSCRIPT=78]="NOSCRIPT",e[e.OBJECT=79]="OBJECT",e[e.OL=80]="OL",e[e.OPTGROUP=81]="OPTGROUP",e[e.OPTION=82]="OPTION",e[e.P=83]="P",e[e.PARAM=84]="PARAM",e[e.PLAINTEXT=85]="PLAINTEXT",e[e.PRE=86]="PRE",e[e.RB=87]="RB",e[e.RP=88]="RP",e[e.RT=89]="RT",e[e.RTC=90]="RTC",e[e.RUBY=91]="RUBY",e[e.S=92]="S",e[e.SCRIPT=93]="SCRIPT",e[e.SEARCH=94]="SEARCH",e[e.SECTION=95]="SECTION",e[e.SELECT=96]="SELECT",e[e.SOURCE=97]="SOURCE",e[e.SMALL=98]="SMALL",e[e.SPAN=99]="SPAN",e[e.STRIKE=100]="STRIKE",e[e.STRONG=101]="STRONG",e[e.STYLE=102]="STYLE",e[e.SUB=103]="SUB",e[e.SUMMARY=104]="SUMMARY",e[e.SUP=105]="SUP",e[e.TABLE=106]="TABLE",e[e.TBODY=107]="TBODY",e[e.TEMPLATE=108]="TEMPLATE",e[e.TEXTAREA=109]="TEXTAREA",e[e.TFOOT=110]="TFOOT",e[e.TD=111]="TD",e[e.TH=112]="TH",e[e.THEAD=113]="THEAD",e[e.TITLE=114]="TITLE",e[e.TR=115]="TR",e[e.TRACK=116]="TRACK",e[e.TT=117]="TT",e[e.U=118]="U",e[e.UL=119]="UL",e[e.SVG=120]="SVG",e[e.VAR=121]="VAR",e[e.WBR=122]="WBR",e[e.XMP=123]="XMP";})(T||(T={}));var i4e=new Map([[oe.A,T.A],[oe.ADDRESS,T.ADDRESS],[oe.ANNOTATION_XML,T.ANNOTATION_XML],[oe.APPLET,T.APPLET],[oe.AREA,T.AREA],[oe.ARTICLE,T.ARTICLE],[oe.ASIDE,T.ASIDE],[oe.B,T.B],[oe.BASE,T.BASE],[oe.BASEFONT,T.BASEFONT],[oe.BGSOUND,T.BGSOUND],[oe.BIG,T.BIG],[oe.BLOCKQUOTE,T.BLOCKQUOTE],[oe.BODY,T.BODY],[oe.BR,T.BR],[oe.BUTTON,T.BUTTON],[oe.CAPTION,T.CAPTION],[oe.CENTER,T.CENTER],[oe.CODE,T.CODE],[oe.COL,T.COL],[oe.COLGROUP,T.COLGROUP],[oe.DD,T.DD],[oe.DESC,T.DESC],[oe.DETAILS,T.DETAILS],[oe.DIALOG,T.DIALOG],[oe.DIR,T.DIR],[oe.DIV,T.DIV],[oe.DL,T.DL],[oe.DT,T.DT],[oe.EM,T.EM],[oe.EMBED,T.EMBED],[oe.FIELDSET,T.FIELDSET],[oe.FIGCAPTION,T.FIGCAPTION],[oe.FIGURE,T.FIGURE],[oe.FONT,T.FONT],[oe.FOOTER,T.FOOTER],[oe.FOREIGN_OBJECT,T.FOREIGN_OBJECT],[oe.FORM,T.FORM],[oe.FRAME,T.FRAME],[oe.FRAMESET,T.FRAMESET],[oe.H1,T.H1],[oe.H2,T.H2],[oe.H3,T.H3],[oe.H4,T.H4],[oe.H5,T.H5],[oe.H6,T.H6],[oe.HEAD,T.HEAD],[oe.HEADER,T.HEADER],[oe.HGROUP,T.HGROUP],[oe.HR,T.HR],[oe.HTML,T.HTML],[oe.I,T.I],[oe.IMG,T.IMG],[oe.IMAGE,T.IMAGE],[oe.INPUT,T.INPUT],[oe.IFRAME,T.IFRAME],[oe.KEYGEN,T.KEYGEN],[oe.LABEL,T.LABEL],[oe.LI,T.LI],[oe.LINK,T.LINK],[oe.LISTING,T.LISTING],[oe.MAIN,T.MAIN],[oe.MALIGNMARK,T.MALIGNMARK],[oe.MARQUEE,T.MARQUEE],[oe.MATH,T.MATH],[oe.MENU,T.MENU],[oe.META,T.META],[oe.MGLYPH,T.MGLYPH],[oe.MI,T.MI],[oe.MO,T.MO],[oe.MN,T.MN],[oe.MS,T.MS],[oe.MTEXT,T.MTEXT],[oe.NAV,T.NAV],[oe.NOBR,T.NOBR],[oe.NOFRAMES,T.NOFRAMES],[oe.NOEMBED,T.NOEMBED],[oe.NOSCRIPT,T.NOSCRIPT],[oe.OBJECT,T.OBJECT],[oe.OL,T.OL],[oe.OPTGROUP,T.OPTGROUP],[oe.OPTION,T.OPTION],[oe.P,T.P],[oe.PARAM,T.PARAM],[oe.PLAINTEXT,T.PLAINTEXT],[oe.PRE,T.PRE],[oe.RB,T.RB],[oe.RP,T.RP],[oe.RT,T.RT],[oe.RTC,T.RTC],[oe.RUBY,T.RUBY],[oe.S,T.S],[oe.SCRIPT,T.SCRIPT],[oe.SEARCH,T.SEARCH],[oe.SECTION,T.SECTION],[oe.SELECT,T.SELECT],[oe.SOURCE,T.SOURCE],[oe.SMALL,T.SMALL],[oe.SPAN,T.SPAN],[oe.STRIKE,T.STRIKE],[oe.STRONG,T.STRONG],[oe.STYLE,T.STYLE],[oe.SUB,T.SUB],[oe.SUMMARY,T.SUMMARY],[oe.SUP,T.SUP],[oe.TABLE,T.TABLE],[oe.TBODY,T.TBODY],[oe.TEMPLATE,T.TEMPLATE],[oe.TEXTAREA,T.TEXTAREA],[oe.TFOOT,T.TFOOT],[oe.TD,T.TD],[oe.TH,T.TH],[oe.THEAD,T.THEAD],[oe.TITLE,T.TITLE],[oe.TR,T.TR],[oe.TRACK,T.TRACK],[oe.TT,T.TT],[oe.U,T.U],[oe.UL,T.UL],[oe.SVG,T.SVG],[oe.VAR,T.VAR],[oe.WBR,T.WBR],[oe.XMP,T.XMP]]);function Lh(e){var t;return (t=i4e.get(e))!==null&&t!==void 0?t:T.UNKNOWN}var _e=T,Sce={[Te.HTML]:new Set([_e.ADDRESS,_e.APPLET,_e.AREA,_e.ARTICLE,_e.ASIDE,_e.BASE,_e.BASEFONT,_e.BGSOUND,_e.BLOCKQUOTE,_e.BODY,_e.BR,_e.BUTTON,_e.CAPTION,_e.CENTER,_e.COL,_e.COLGROUP,_e.DD,_e.DETAILS,_e.DIR,_e.DIV,_e.DL,_e.DT,_e.EMBED,_e.FIELDSET,_e.FIGCAPTION,_e.FIGURE,_e.FOOTER,_e.FORM,_e.FRAME,_e.FRAMESET,_e.H1,_e.H2,_e.H3,_e.H4,_e.H5,_e.H6,_e.HEAD,_e.HEADER,_e.HGROUP,_e.HR,_e.HTML,_e.IFRAME,_e.IMG,_e.INPUT,_e.LI,_e.LINK,_e.LISTING,_e.MAIN,_e.MARQUEE,_e.MENU,_e.META,_e.NAV,_e.NOEMBED,_e.NOFRAMES,_e.NOSCRIPT,_e.OBJECT,_e.OL,_e.P,_e.PARAM,_e.PLAINTEXT,_e.PRE,_e.SCRIPT,_e.SECTION,_e.SELECT,_e.SOURCE,_e.STYLE,_e.SUMMARY,_e.TABLE,_e.TBODY,_e.TD,_e.TEMPLATE,_e.TEXTAREA,_e.TFOOT,_e.TH,_e.THEAD,_e.TITLE,_e.TR,_e.TRACK,_e.UL,_e.WBR,_e.XMP]),[Te.MATHML]:new Set([_e.MI,_e.MO,_e.MN,_e.MS,_e.MTEXT,_e.ANNOTATION_XML]),[Te.SVG]:new Set([_e.TITLE,_e.FOREIGN_OBJECT,_e.DESC]),[Te.XLINK]:new Set,[Te.XML]:new Set,[Te.XMLNS]:new Set},gE=new Set([_e.H1,_e.H2,_e.H3,_e.H4,_e.H5,_e.H6]);new Set([oe.STYLE,oe.SCRIPT,oe.XMP,oe.IFRAME,oe.NOEMBED,oe.NOFRAMES,oe.PLAINTEXT]);var U;(function(e){e[e.DATA=0]="DATA",e[e.RCDATA=1]="RCDATA",e[e.RAWTEXT=2]="RAWTEXT",e[e.SCRIPT_DATA=3]="SCRIPT_DATA",e[e.PLAINTEXT=4]="PLAINTEXT",e[e.TAG_OPEN=5]="TAG_OPEN",e[e.END_TAG_OPEN=6]="END_TAG_OPEN",e[e.TAG_NAME=7]="TAG_NAME",e[e.RCDATA_LESS_THAN_SIGN=8]="RCDATA_LESS_THAN_SIGN",e[e.RCDATA_END_TAG_OPEN=9]="RCDATA_END_TAG_OPEN",e[e.RCDATA_END_TAG_NAME=10]="RCDATA_END_TAG_NAME",e[e.RAWTEXT_LESS_THAN_SIGN=11]="RAWTEXT_LESS_THAN_SIGN",e[e.RAWTEXT_END_TAG_OPEN=12]="RAWTEXT_END_TAG_OPEN",e[e.RAWTEXT_END_TAG_NAME=13]="RAWTEXT_END_TAG_NAME",e[e.SCRIPT_DATA_LESS_THAN_SIGN=14]="SCRIPT_DATA_LESS_THAN_SIGN",e[e.SCRIPT_DATA_END_TAG_OPEN=15]="SCRIPT_DATA_END_TAG_OPEN",e[e.SCRIPT_DATA_END_TAG_NAME=16]="SCRIPT_DATA_END_TAG_NAME",e[e.SCRIPT_DATA_ESCAPE_START=17]="SCRIPT_DATA_ESCAPE_START",e[e.SCRIPT_DATA_ESCAPE_START_DASH=18]="SCRIPT_DATA_ESCAPE_START_DASH",e[e.SCRIPT_DATA_ESCAPED=19]="SCRIPT_DATA_ESCAPED",e[e.SCRIPT_DATA_ESCAPED_DASH=20]="SCRIPT_DATA_ESCAPED_DASH",e[e.SCRIPT_DATA_ESCAPED_DASH_DASH=21]="SCRIPT_DATA_ESCAPED_DASH_DASH",e[e.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN=22]="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN",e[e.SCRIPT_DATA_ESCAPED_END_TAG_OPEN=23]="SCRIPT_DATA_ESCAPED_END_TAG_OPEN",e[e.SCRIPT_DATA_ESCAPED_END_TAG_NAME=24]="SCRIPT_DATA_ESCAPED_END_TAG_NAME",e[e.SCRIPT_DATA_DOUBLE_ESCAPE_START=25]="SCRIPT_DATA_DOUBLE_ESCAPE_START",e[e.SCRIPT_DATA_DOUBLE_ESCAPED=26]="SCRIPT_DATA_DOUBLE_ESCAPED",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH=27]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH=28]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN=29]="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN",e[e.SCRIPT_DATA_DOUBLE_ESCAPE_END=30]="SCRIPT_DATA_DOUBLE_ESCAPE_END",e[e.BEFORE_ATTRIBUTE_NAME=31]="BEFORE_ATTRIBUTE_NAME",e[e.ATTRIBUTE_NAME=32]="ATTRIBUTE_NAME",e[e.AFTER_ATTRIBUTE_NAME=33]="AFTER_ATTRIBUTE_NAME",e[e.BEFORE_ATTRIBUTE_VALUE=34]="BEFORE_ATTRIBUTE_VALUE",e[e.ATTRIBUTE_VALUE_DOUBLE_QUOTED=35]="ATTRIBUTE_VALUE_DOUBLE_QUOTED",e[e.ATTRIBUTE_VALUE_SINGLE_QUOTED=36]="ATTRIBUTE_VALUE_SINGLE_QUOTED",e[e.ATTRIBUTE_VALUE_UNQUOTED=37]="ATTRIBUTE_VALUE_UNQUOTED",e[e.AFTER_ATTRIBUTE_VALUE_QUOTED=38]="AFTER_ATTRIBUTE_VALUE_QUOTED",e[e.SELF_CLOSING_START_TAG=39]="SELF_CLOSING_START_TAG",e[e.BOGUS_COMMENT=40]="BOGUS_COMMENT",e[e.MARKUP_DECLARATION_OPEN=41]="MARKUP_DECLARATION_OPEN",e[e.COMMENT_START=42]="COMMENT_START",e[e.COMMENT_START_DASH=43]="COMMENT_START_DASH",e[e.COMMENT=44]="COMMENT",e[e.COMMENT_LESS_THAN_SIGN=45]="COMMENT_LESS_THAN_SIGN",e[e.COMMENT_LESS_THAN_SIGN_BANG=46]="COMMENT_LESS_THAN_SIGN_BANG",e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH=47]="COMMENT_LESS_THAN_SIGN_BANG_DASH",e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH=48]="COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH",e[e.COMMENT_END_DASH=49]="COMMENT_END_DASH",e[e.COMMENT_END=50]="COMMENT_END",e[e.COMMENT_END_BANG=51]="COMMENT_END_BANG",e[e.DOCTYPE=52]="DOCTYPE",e[e.BEFORE_DOCTYPE_NAME=53]="BEFORE_DOCTYPE_NAME",e[e.DOCTYPE_NAME=54]="DOCTYPE_NAME",e[e.AFTER_DOCTYPE_NAME=55]="AFTER_DOCTYPE_NAME",e[e.AFTER_DOCTYPE_PUBLIC_KEYWORD=56]="AFTER_DOCTYPE_PUBLIC_KEYWORD",e[e.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER=57]="BEFORE_DOCTYPE_PUBLIC_IDENTIFIER",e[e.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED=58]="DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED",e[e.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED=59]="DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED",e[e.AFTER_DOCTYPE_PUBLIC_IDENTIFIER=60]="AFTER_DOCTYPE_PUBLIC_IDENTIFIER",e[e.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS=61]="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS",e[e.AFTER_DOCTYPE_SYSTEM_KEYWORD=62]="AFTER_DOCTYPE_SYSTEM_KEYWORD",e[e.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER=63]="BEFORE_DOCTYPE_SYSTEM_IDENTIFIER",e[e.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED=64]="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED",e[e.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED=65]="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED",e[e.AFTER_DOCTYPE_SYSTEM_IDENTIFIER=66]="AFTER_DOCTYPE_SYSTEM_IDENTIFIER",e[e.BOGUS_DOCTYPE=67]="BOGUS_DOCTYPE",e[e.CDATA_SECTION=68]="CDATA_SECTION",e[e.CDATA_SECTION_BRACKET=69]="CDATA_SECTION_BRACKET",e[e.CDATA_SECTION_END=70]="CDATA_SECTION_END",e[e.CHARACTER_REFERENCE=71]="CHARACTER_REFERENCE",e[e.AMBIGUOUS_AMPERSAND=72]="AMBIGUOUS_AMPERSAND";})(U||(U={}));var Ri={DATA:U.DATA,RCDATA:U.RCDATA,RAWTEXT:U.RAWTEXT,SCRIPT_DATA:U.SCRIPT_DATA,PLAINTEXT:U.PLAINTEXT,CDATA_SECTION:U.CDATA_SECTION};function a4e(e){return e>=N.DIGIT_0&&e<=N.DIGIT_9}function fE(e){return e>=N.LATIN_CAPITAL_A&&e<=N.LATIN_CAPITAL_Z}function l4e(e){return e>=N.LATIN_SMALL_A&&e<=N.LATIN_SMALL_Z}function Zp(e){return l4e(e)||fE(e)}function bce(e){return Zp(e)||a4e(e)}function AP(e){return e+32}function Ace(e){return e===N.SPACE||e===N.LINE_FEED||e===N.TABULATION||e===N.FORM_FEED}function Tce(e){return Ace(e)||e===N.SOLIDUS||e===N.GREATER_THAN_SIGN}function c4e(e){return e===N.NULL?ce.nullCharacterReference:e>1114111?ce.characterReferenceOutsideUnicodeRange:gP(e)?ce.surrogateCharacterReference:yP(e)?ce.noncharacterCharacterReference:fP(e)||e===N.CARRIAGE_RETURN?ce.controlCharacterReference:null}var yE=class{constructor(t,n){this.options=t,this.handler=n,this.paused=false,this.inLoop=false,this.inForeignNode=false,this.lastStartTagName="",this.active=false,this.state=U.DATA,this.returnState=U.DATA,this.entityStartPos=0,this.consumedAfterSnapshot=-1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr={name:"",value:""},this.preprocessor=new SP(n),this.currentLocation=this.getCurrentLocation(-1),this.entityDecoder=new TP(bH,(o,r)=>{this.preprocessor.pos=this.entityStartPos+r-1,this._flushCodePointConsumedAsCharacterReference(o);},n.onParseError?{missingSemicolonAfterCharacterReference:()=>{this._err(ce.missingSemicolonAfterCharacterReference,1);},absenceOfDigitsInNumericCharacterReference:o=>{this._err(ce.absenceOfDigitsInNumericCharacterReference,this.entityStartPos-this.preprocessor.pos+o);},validateNumericCharacterReference:o=>{let r=c4e(o);r&&this._err(r,1);}}:void 0);}_err(t,n=0){var o,r;(r=(o=this.handler).onParseError)===null||r===void 0||r.call(o,this.preprocessor.getError(t,n));}getCurrentLocation(t){return this.options.sourceCodeLocationInfo?{startLine:this.preprocessor.line,startCol:this.preprocessor.col-t,startOffset:this.preprocessor.offset-t,endLine:-1,endCol:-1,endOffset:-1}:null}_runParsingLoop(){if(!this.inLoop){for(this.inLoop=true;this.active&&!this.paused;){this.consumedAfterSnapshot=0;let t=this._consume();this._ensureHibernation()||this._callState(t);}this.inLoop=false;}}pause(){this.paused=true;}resume(t){if(!this.paused)throw new Error("Parser was already resumed");this.paused=false,!this.inLoop&&(this._runParsingLoop(),this.paused||t?.());}write(t,n,o){this.active=true,this.preprocessor.write(t,n),this._runParsingLoop(),this.paused||o?.();}insertHtmlAtCurrentPos(t){this.active=true,this.preprocessor.insertHtmlAtCurrentPos(t),this._runParsingLoop();}_ensureHibernation(){return this.preprocessor.endOfChunkHit?(this.preprocessor.retreat(this.consumedAfterSnapshot),this.consumedAfterSnapshot=0,this.active=false,true):false}_consume(){return this.consumedAfterSnapshot++,this.preprocessor.advance()}_advanceBy(t){this.consumedAfterSnapshot+=t;for(let n=0;n<t;n++)this.preprocessor.advance();}_consumeSequenceIfMatch(t,n){return this.preprocessor.startsWith(t,n)?(this._advanceBy(t.length-1),true):false}_createStartTagToken(){this.currentToken={type:Kt.START_TAG,tagName:"",tagID:T.UNKNOWN,selfClosing:false,ackSelfClosing:false,attrs:[],location:this.getCurrentLocation(1)};}_createEndTagToken(){this.currentToken={type:Kt.END_TAG,tagName:"",tagID:T.UNKNOWN,selfClosing:false,ackSelfClosing:false,attrs:[],location:this.getCurrentLocation(2)};}_createCommentToken(t){this.currentToken={type:Kt.COMMENT,data:"",location:this.getCurrentLocation(t)};}_createDoctypeToken(t){this.currentToken={type:Kt.DOCTYPE,name:t,forceQuirks:false,publicId:null,systemId:null,location:this.currentLocation};}_createCharacterToken(t,n){this.currentCharacterToken={type:t,chars:n,location:this.currentLocation};}_createAttr(t){this.currentAttr={name:t,value:""},this.currentLocation=this.getCurrentLocation(0);}_leaveAttrName(){var t,n;let o=this.currentToken;if(bP(o,this.currentAttr.name)===null){if(o.attrs.push(this.currentAttr),o.location&&this.currentLocation){let r=(t=(n=o.location).attrs)!==null&&t!==void 0?t:n.attrs=Object.create(null);r[this.currentAttr.name]=this.currentLocation,this._leaveAttrValue();}}else this._err(ce.duplicateAttribute);}_leaveAttrValue(){this.currentLocation&&(this.currentLocation.endLine=this.preprocessor.line,this.currentLocation.endCol=this.preprocessor.col,this.currentLocation.endOffset=this.preprocessor.offset);}prepareToken(t){this._emitCurrentCharacterToken(t.location),this.currentToken=null,t.location&&(t.location.endLine=this.preprocessor.line,t.location.endCol=this.preprocessor.col+1,t.location.endOffset=this.preprocessor.offset+1),this.currentLocation=this.getCurrentLocation(-1);}emitCurrentTagToken(){let t=this.currentToken;this.prepareToken(t),t.tagID=Lh(t.tagName),t.type===Kt.START_TAG?(this.lastStartTagName=t.tagName,this.handler.onStartTag(t)):(t.attrs.length>0&&this._err(ce.endTagWithAttributes),t.selfClosing&&this._err(ce.endTagWithTrailingSolidus),this.handler.onEndTag(t)),this.preprocessor.dropParsedChunk();}emitCurrentComment(t){this.prepareToken(t),this.handler.onComment(t),this.preprocessor.dropParsedChunk();}emitCurrentDoctype(t){this.prepareToken(t),this.handler.onDoctype(t),this.preprocessor.dropParsedChunk();}_emitCurrentCharacterToken(t){if(this.currentCharacterToken){switch(t&&this.currentCharacterToken.location&&(this.currentCharacterToken.location.endLine=t.startLine,this.currentCharacterToken.location.endCol=t.startCol,this.currentCharacterToken.location.endOffset=t.startOffset),this.currentCharacterToken.type){case Kt.CHARACTER:{this.handler.onCharacter(this.currentCharacterToken);break}case Kt.NULL_CHARACTER:{this.handler.onNullCharacter(this.currentCharacterToken);break}case Kt.WHITESPACE_CHARACTER:{this.handler.onWhitespaceCharacter(this.currentCharacterToken);break}}this.currentCharacterToken=null;}}_emitEOFToken(){let t=this.getCurrentLocation(0);t&&(t.endLine=t.startLine,t.endCol=t.startCol,t.endOffset=t.startOffset),this._emitCurrentCharacterToken(t),this.handler.onEof({type:Kt.EOF,location:t}),this.active=false;}_appendCharToCurrentCharacterToken(t,n){if(this.currentCharacterToken)if(this.currentCharacterToken.type===t){this.currentCharacterToken.chars+=n;return}else this.currentLocation=this.getCurrentLocation(0),this._emitCurrentCharacterToken(this.currentLocation),this.preprocessor.dropParsedChunk();this._createCharacterToken(t,n);}_emitCodePoint(t){let n=Ace(t)?Kt.WHITESPACE_CHARACTER:t===N.NULL?Kt.NULL_CHARACTER:Kt.CHARACTER;this._appendCharToCurrentCharacterToken(n,t<65536?String.fromCharCode(t):String.fromCodePoint(t));}_emitChars(t){this._appendCharToCurrentCharacterToken(Kt.CHARACTER,t);}_startCharacterReference(){this.returnState=this.state,this.state=U.CHARACTER_REFERENCE,this.entityStartPos=this.preprocessor.pos,this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute()?od.Attribute:od.Legacy);}_isCharacterReferenceInAttribute(){return this.returnState===U.ATTRIBUTE_VALUE_DOUBLE_QUOTED||this.returnState===U.ATTRIBUTE_VALUE_SINGLE_QUOTED||this.returnState===U.ATTRIBUTE_VALUE_UNQUOTED}_flushCodePointConsumedAsCharacterReference(t){this._isCharacterReferenceInAttribute()?this.currentAttr.value+=String.fromCodePoint(t):this._emitCodePoint(t);}_callState(t){switch(this.state){case U.DATA:{this._stateData(t);break}case U.RCDATA:{this._stateRcdata(t);break}case U.RAWTEXT:{this._stateRawtext(t);break}case U.SCRIPT_DATA:{this._stateScriptData(t);break}case U.PLAINTEXT:{this._statePlaintext(t);break}case U.TAG_OPEN:{this._stateTagOpen(t);break}case U.END_TAG_OPEN:{this._stateEndTagOpen(t);break}case U.TAG_NAME:{this._stateTagName(t);break}case U.RCDATA_LESS_THAN_SIGN:{this._stateRcdataLessThanSign(t);break}case U.RCDATA_END_TAG_OPEN:{this._stateRcdataEndTagOpen(t);break}case U.RCDATA_END_TAG_NAME:{this._stateRcdataEndTagName(t);break}case U.RAWTEXT_LESS_THAN_SIGN:{this._stateRawtextLessThanSign(t);break}case U.RAWTEXT_END_TAG_OPEN:{this._stateRawtextEndTagOpen(t);break}case U.RAWTEXT_END_TAG_NAME:{this._stateRawtextEndTagName(t);break}case U.SCRIPT_DATA_LESS_THAN_SIGN:{this._stateScriptDataLessThanSign(t);break}case U.SCRIPT_DATA_END_TAG_OPEN:{this._stateScriptDataEndTagOpen(t);break}case U.SCRIPT_DATA_END_TAG_NAME:{this._stateScriptDataEndTagName(t);break}case U.SCRIPT_DATA_ESCAPE_START:{this._stateScriptDataEscapeStart(t);break}case U.SCRIPT_DATA_ESCAPE_START_DASH:{this._stateScriptDataEscapeStartDash(t);break}case U.SCRIPT_DATA_ESCAPED:{this._stateScriptDataEscaped(t);break}case U.SCRIPT_DATA_ESCAPED_DASH:{this._stateScriptDataEscapedDash(t);break}case U.SCRIPT_DATA_ESCAPED_DASH_DASH:{this._stateScriptDataEscapedDashDash(t);break}case U.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataEscapedLessThanSign(t);break}case U.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:{this._stateScriptDataEscapedEndTagOpen(t);break}case U.SCRIPT_DATA_ESCAPED_END_TAG_NAME:{this._stateScriptDataEscapedEndTagName(t);break}case U.SCRIPT_DATA_DOUBLE_ESCAPE_START:{this._stateScriptDataDoubleEscapeStart(t);break}case U.SCRIPT_DATA_DOUBLE_ESCAPED:{this._stateScriptDataDoubleEscaped(t);break}case U.SCRIPT_DATA_DOUBLE_ESCAPED_DASH:{this._stateScriptDataDoubleEscapedDash(t);break}case U.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH:{this._stateScriptDataDoubleEscapedDashDash(t);break}case U.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataDoubleEscapedLessThanSign(t);break}case U.SCRIPT_DATA_DOUBLE_ESCAPE_END:{this._stateScriptDataDoubleEscapeEnd(t);break}case U.BEFORE_ATTRIBUTE_NAME:{this._stateBeforeAttributeName(t);break}case U.ATTRIBUTE_NAME:{this._stateAttributeName(t);break}case U.AFTER_ATTRIBUTE_NAME:{this._stateAfterAttributeName(t);break}case U.BEFORE_ATTRIBUTE_VALUE:{this._stateBeforeAttributeValue(t);break}case U.ATTRIBUTE_VALUE_DOUBLE_QUOTED:{this._stateAttributeValueDoubleQuoted(t);break}case U.ATTRIBUTE_VALUE_SINGLE_QUOTED:{this._stateAttributeValueSingleQuoted(t);break}case U.ATTRIBUTE_VALUE_UNQUOTED:{this._stateAttributeValueUnquoted(t);break}case U.AFTER_ATTRIBUTE_VALUE_QUOTED:{this._stateAfterAttributeValueQuoted(t);break}case U.SELF_CLOSING_START_TAG:{this._stateSelfClosingStartTag(t);break}case U.BOGUS_COMMENT:{this._stateBogusComment(t);break}case U.MARKUP_DECLARATION_OPEN:{this._stateMarkupDeclarationOpen(t);break}case U.COMMENT_START:{this._stateCommentStart(t);break}case U.COMMENT_START_DASH:{this._stateCommentStartDash(t);break}case U.COMMENT:{this._stateComment(t);break}case U.COMMENT_LESS_THAN_SIGN:{this._stateCommentLessThanSign(t);break}case U.COMMENT_LESS_THAN_SIGN_BANG:{this._stateCommentLessThanSignBang(t);break}case U.COMMENT_LESS_THAN_SIGN_BANG_DASH:{this._stateCommentLessThanSignBangDash(t);break}case U.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH:{this._stateCommentLessThanSignBangDashDash(t);break}case U.COMMENT_END_DASH:{this._stateCommentEndDash(t);break}case U.COMMENT_END:{this._stateCommentEnd(t);break}case U.COMMENT_END_BANG:{this._stateCommentEndBang(t);break}case U.DOCTYPE:{this._stateDoctype(t);break}case U.BEFORE_DOCTYPE_NAME:{this._stateBeforeDoctypeName(t);break}case U.DOCTYPE_NAME:{this._stateDoctypeName(t);break}case U.AFTER_DOCTYPE_NAME:{this._stateAfterDoctypeName(t);break}case U.AFTER_DOCTYPE_PUBLIC_KEYWORD:{this._stateAfterDoctypePublicKeyword(t);break}case U.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateBeforeDoctypePublicIdentifier(t);break}case U.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypePublicIdentifierDoubleQuoted(t);break}case U.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypePublicIdentifierSingleQuoted(t);break}case U.AFTER_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateAfterDoctypePublicIdentifier(t);break}case U.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS:{this._stateBetweenDoctypePublicAndSystemIdentifiers(t);break}case U.AFTER_DOCTYPE_SYSTEM_KEYWORD:{this._stateAfterDoctypeSystemKeyword(t);break}case U.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateBeforeDoctypeSystemIdentifier(t);break}case U.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypeSystemIdentifierDoubleQuoted(t);break}case U.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypeSystemIdentifierSingleQuoted(t);break}case U.AFTER_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateAfterDoctypeSystemIdentifier(t);break}case U.BOGUS_DOCTYPE:{this._stateBogusDoctype(t);break}case U.CDATA_SECTION:{this._stateCdataSection(t);break}case U.CDATA_SECTION_BRACKET:{this._stateCdataSectionBracket(t);break}case U.CDATA_SECTION_END:{this._stateCdataSectionEnd(t);break}case U.CHARACTER_REFERENCE:{this._stateCharacterReference();break}case U.AMBIGUOUS_AMPERSAND:{this._stateAmbiguousAmpersand(t);break}default:throw new Error("Unknown state")}}_stateData(t){switch(t){case N.LESS_THAN_SIGN:{this.state=U.TAG_OPEN;break}case N.AMPERSAND:{this._startCharacterReference();break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this._emitCodePoint(t);break}case N.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t);}}_stateRcdata(t){switch(t){case N.AMPERSAND:{this._startCharacterReference();break}case N.LESS_THAN_SIGN:{this.state=U.RCDATA_LESS_THAN_SIGN;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this._emitChars(Hn);break}case N.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t);}}_stateRawtext(t){switch(t){case N.LESS_THAN_SIGN:{this.state=U.RAWTEXT_LESS_THAN_SIGN;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this._emitChars(Hn);break}case N.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t);}}_stateScriptData(t){switch(t){case N.LESS_THAN_SIGN:{this.state=U.SCRIPT_DATA_LESS_THAN_SIGN;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this._emitChars(Hn);break}case N.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t);}}_statePlaintext(t){switch(t){case N.NULL:{this._err(ce.unexpectedNullCharacter),this._emitChars(Hn);break}case N.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t);}}_stateTagOpen(t){if(Zp(t))this._createStartTagToken(),this.state=U.TAG_NAME,this._stateTagName(t);else switch(t){case N.EXCLAMATION_MARK:{this.state=U.MARKUP_DECLARATION_OPEN;break}case N.SOLIDUS:{this.state=U.END_TAG_OPEN;break}case N.QUESTION_MARK:{this._err(ce.unexpectedQuestionMarkInsteadOfTagName),this._createCommentToken(1),this.state=U.BOGUS_COMMENT,this._stateBogusComment(t);break}case N.EOF:{this._err(ce.eofBeforeTagName),this._emitChars("<"),this._emitEOFToken();break}default:this._err(ce.invalidFirstCharacterOfTagName),this._emitChars("<"),this.state=U.DATA,this._stateData(t);}}_stateEndTagOpen(t){if(Zp(t))this._createEndTagToken(),this.state=U.TAG_NAME,this._stateTagName(t);else switch(t){case N.GREATER_THAN_SIGN:{this._err(ce.missingEndTagName),this.state=U.DATA;break}case N.EOF:{this._err(ce.eofBeforeTagName),this._emitChars("</"),this._emitEOFToken();break}default:this._err(ce.invalidFirstCharacterOfTagName),this._createCommentToken(2),this.state=U.BOGUS_COMMENT,this._stateBogusComment(t);}}_stateTagName(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this.state=U.BEFORE_ATTRIBUTE_NAME;break}case N.SOLIDUS:{this.state=U.SELF_CLOSING_START_TAG;break}case N.GREATER_THAN_SIGN:{this.state=U.DATA,this.emitCurrentTagToken();break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.tagName+=Hn;break}case N.EOF:{this._err(ce.eofInTag),this._emitEOFToken();break}default:n.tagName+=String.fromCodePoint(fE(t)?AP(t):t);}}_stateRcdataLessThanSign(t){t===N.SOLIDUS?this.state=U.RCDATA_END_TAG_OPEN:(this._emitChars("<"),this.state=U.RCDATA,this._stateRcdata(t));}_stateRcdataEndTagOpen(t){Zp(t)?(this.state=U.RCDATA_END_TAG_NAME,this._stateRcdataEndTagName(t)):(this._emitChars("</"),this.state=U.RCDATA,this._stateRcdata(t));}handleSpecialEndTag(t){if(!this.preprocessor.startsWith(this.lastStartTagName,false))return !this._ensureHibernation();this._createEndTagToken();let n=this.currentToken;switch(n.tagName=this.lastStartTagName,this.preprocessor.peek(this.lastStartTagName.length)){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:return this._advanceBy(this.lastStartTagName.length),this.state=U.BEFORE_ATTRIBUTE_NAME,false;case N.SOLIDUS:return this._advanceBy(this.lastStartTagName.length),this.state=U.SELF_CLOSING_START_TAG,false;case N.GREATER_THAN_SIGN:return this._advanceBy(this.lastStartTagName.length),this.emitCurrentTagToken(),this.state=U.DATA,false;default:return !this._ensureHibernation()}}_stateRcdataEndTagName(t){this.handleSpecialEndTag(t)&&(this._emitChars("</"),this.state=U.RCDATA,this._stateRcdata(t));}_stateRawtextLessThanSign(t){t===N.SOLIDUS?this.state=U.RAWTEXT_END_TAG_OPEN:(this._emitChars("<"),this.state=U.RAWTEXT,this._stateRawtext(t));}_stateRawtextEndTagOpen(t){Zp(t)?(this.state=U.RAWTEXT_END_TAG_NAME,this._stateRawtextEndTagName(t)):(this._emitChars("</"),this.state=U.RAWTEXT,this._stateRawtext(t));}_stateRawtextEndTagName(t){this.handleSpecialEndTag(t)&&(this._emitChars("</"),this.state=U.RAWTEXT,this._stateRawtext(t));}_stateScriptDataLessThanSign(t){switch(t){case N.SOLIDUS:{this.state=U.SCRIPT_DATA_END_TAG_OPEN;break}case N.EXCLAMATION_MARK:{this.state=U.SCRIPT_DATA_ESCAPE_START,this._emitChars("<!");break}default:this._emitChars("<"),this.state=U.SCRIPT_DATA,this._stateScriptData(t);}}_stateScriptDataEndTagOpen(t){Zp(t)?(this.state=U.SCRIPT_DATA_END_TAG_NAME,this._stateScriptDataEndTagName(t)):(this._emitChars("</"),this.state=U.SCRIPT_DATA,this._stateScriptData(t));}_stateScriptDataEndTagName(t){this.handleSpecialEndTag(t)&&(this._emitChars("</"),this.state=U.SCRIPT_DATA,this._stateScriptData(t));}_stateScriptDataEscapeStart(t){t===N.HYPHEN_MINUS?(this.state=U.SCRIPT_DATA_ESCAPE_START_DASH,this._emitChars("-")):(this.state=U.SCRIPT_DATA,this._stateScriptData(t));}_stateScriptDataEscapeStartDash(t){t===N.HYPHEN_MINUS?(this.state=U.SCRIPT_DATA_ESCAPED_DASH_DASH,this._emitChars("-")):(this.state=U.SCRIPT_DATA,this._stateScriptData(t));}_stateScriptDataEscaped(t){switch(t){case N.HYPHEN_MINUS:{this.state=U.SCRIPT_DATA_ESCAPED_DASH,this._emitChars("-");break}case N.LESS_THAN_SIGN:{this.state=U.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this._emitChars(Hn);break}case N.EOF:{this._err(ce.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this._emitCodePoint(t);}}_stateScriptDataEscapedDash(t){switch(t){case N.HYPHEN_MINUS:{this.state=U.SCRIPT_DATA_ESCAPED_DASH_DASH,this._emitChars("-");break}case N.LESS_THAN_SIGN:{this.state=U.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.state=U.SCRIPT_DATA_ESCAPED,this._emitChars(Hn);break}case N.EOF:{this._err(ce.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=U.SCRIPT_DATA_ESCAPED,this._emitCodePoint(t);}}_stateScriptDataEscapedDashDash(t){switch(t){case N.HYPHEN_MINUS:{this._emitChars("-");break}case N.LESS_THAN_SIGN:{this.state=U.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case N.GREATER_THAN_SIGN:{this.state=U.SCRIPT_DATA,this._emitChars(">");break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.state=U.SCRIPT_DATA_ESCAPED,this._emitChars(Hn);break}case N.EOF:{this._err(ce.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=U.SCRIPT_DATA_ESCAPED,this._emitCodePoint(t);}}_stateScriptDataEscapedLessThanSign(t){t===N.SOLIDUS?this.state=U.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:Zp(t)?(this._emitChars("<"),this.state=U.SCRIPT_DATA_DOUBLE_ESCAPE_START,this._stateScriptDataDoubleEscapeStart(t)):(this._emitChars("<"),this.state=U.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(t));}_stateScriptDataEscapedEndTagOpen(t){Zp(t)?(this.state=U.SCRIPT_DATA_ESCAPED_END_TAG_NAME,this._stateScriptDataEscapedEndTagName(t)):(this._emitChars("</"),this.state=U.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(t));}_stateScriptDataEscapedEndTagName(t){this.handleSpecialEndTag(t)&&(this._emitChars("</"),this.state=U.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(t));}_stateScriptDataDoubleEscapeStart(t){if(this.preprocessor.startsWith(Qi.SCRIPT,false)&&Tce(this.preprocessor.peek(Qi.SCRIPT.length))){this._emitCodePoint(t);for(let n=0;n<Qi.SCRIPT.length;n++)this._emitCodePoint(this._consume());this.state=U.SCRIPT_DATA_DOUBLE_ESCAPED;}else this._ensureHibernation()||(this.state=U.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(t));}_stateScriptDataDoubleEscaped(t){switch(t){case N.HYPHEN_MINUS:{this.state=U.SCRIPT_DATA_DOUBLE_ESCAPED_DASH,this._emitChars("-");break}case N.LESS_THAN_SIGN:{this.state=U.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this._emitChars(Hn);break}case N.EOF:{this._err(ce.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this._emitCodePoint(t);}}_stateScriptDataDoubleEscapedDash(t){switch(t){case N.HYPHEN_MINUS:{this.state=U.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH,this._emitChars("-");break}case N.LESS_THAN_SIGN:{this.state=U.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.state=U.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(Hn);break}case N.EOF:{this._err(ce.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=U.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(t);}}_stateScriptDataDoubleEscapedDashDash(t){switch(t){case N.HYPHEN_MINUS:{this._emitChars("-");break}case N.LESS_THAN_SIGN:{this.state=U.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case N.GREATER_THAN_SIGN:{this.state=U.SCRIPT_DATA,this._emitChars(">");break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.state=U.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(Hn);break}case N.EOF:{this._err(ce.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=U.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(t);}}_stateScriptDataDoubleEscapedLessThanSign(t){t===N.SOLIDUS?(this.state=U.SCRIPT_DATA_DOUBLE_ESCAPE_END,this._emitChars("/")):(this.state=U.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(t));}_stateScriptDataDoubleEscapeEnd(t){if(this.preprocessor.startsWith(Qi.SCRIPT,false)&&Tce(this.preprocessor.peek(Qi.SCRIPT.length))){this._emitCodePoint(t);for(let n=0;n<Qi.SCRIPT.length;n++)this._emitCodePoint(this._consume());this.state=U.SCRIPT_DATA_ESCAPED;}else this._ensureHibernation()||(this.state=U.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(t));}_stateBeforeAttributeName(t){switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.SOLIDUS:case N.GREATER_THAN_SIGN:case N.EOF:{this.state=U.AFTER_ATTRIBUTE_NAME,this._stateAfterAttributeName(t);break}case N.EQUALS_SIGN:{this._err(ce.unexpectedEqualsSignBeforeAttributeName),this._createAttr("="),this.state=U.ATTRIBUTE_NAME;break}default:this._createAttr(""),this.state=U.ATTRIBUTE_NAME,this._stateAttributeName(t);}}_stateAttributeName(t){switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:case N.SOLIDUS:case N.GREATER_THAN_SIGN:case N.EOF:{this._leaveAttrName(),this.state=U.AFTER_ATTRIBUTE_NAME,this._stateAfterAttributeName(t);break}case N.EQUALS_SIGN:{this._leaveAttrName(),this.state=U.BEFORE_ATTRIBUTE_VALUE;break}case N.QUOTATION_MARK:case N.APOSTROPHE:case N.LESS_THAN_SIGN:{this._err(ce.unexpectedCharacterInAttributeName),this.currentAttr.name+=String.fromCodePoint(t);break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.currentAttr.name+=Hn;break}default:this.currentAttr.name+=String.fromCodePoint(fE(t)?AP(t):t);}}_stateAfterAttributeName(t){switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.SOLIDUS:{this.state=U.SELF_CLOSING_START_TAG;break}case N.EQUALS_SIGN:{this.state=U.BEFORE_ATTRIBUTE_VALUE;break}case N.GREATER_THAN_SIGN:{this.state=U.DATA,this.emitCurrentTagToken();break}case N.EOF:{this._err(ce.eofInTag),this._emitEOFToken();break}default:this._createAttr(""),this.state=U.ATTRIBUTE_NAME,this._stateAttributeName(t);}}_stateBeforeAttributeValue(t){switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.QUOTATION_MARK:{this.state=U.ATTRIBUTE_VALUE_DOUBLE_QUOTED;break}case N.APOSTROPHE:{this.state=U.ATTRIBUTE_VALUE_SINGLE_QUOTED;break}case N.GREATER_THAN_SIGN:{this._err(ce.missingAttributeValue),this.state=U.DATA,this.emitCurrentTagToken();break}default:this.state=U.ATTRIBUTE_VALUE_UNQUOTED,this._stateAttributeValueUnquoted(t);}}_stateAttributeValueDoubleQuoted(t){switch(t){case N.QUOTATION_MARK:{this.state=U.AFTER_ATTRIBUTE_VALUE_QUOTED;break}case N.AMPERSAND:{this._startCharacterReference();break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.currentAttr.value+=Hn;break}case N.EOF:{this._err(ce.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(t);}}_stateAttributeValueSingleQuoted(t){switch(t){case N.APOSTROPHE:{this.state=U.AFTER_ATTRIBUTE_VALUE_QUOTED;break}case N.AMPERSAND:{this._startCharacterReference();break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.currentAttr.value+=Hn;break}case N.EOF:{this._err(ce.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(t);}}_stateAttributeValueUnquoted(t){switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this._leaveAttrValue(),this.state=U.BEFORE_ATTRIBUTE_NAME;break}case N.AMPERSAND:{this._startCharacterReference();break}case N.GREATER_THAN_SIGN:{this._leaveAttrValue(),this.state=U.DATA,this.emitCurrentTagToken();break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.currentAttr.value+=Hn;break}case N.QUOTATION_MARK:case N.APOSTROPHE:case N.LESS_THAN_SIGN:case N.EQUALS_SIGN:case N.GRAVE_ACCENT:{this._err(ce.unexpectedCharacterInUnquotedAttributeValue),this.currentAttr.value+=String.fromCodePoint(t);break}case N.EOF:{this._err(ce.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(t);}}_stateAfterAttributeValueQuoted(t){switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this._leaveAttrValue(),this.state=U.BEFORE_ATTRIBUTE_NAME;break}case N.SOLIDUS:{this._leaveAttrValue(),this.state=U.SELF_CLOSING_START_TAG;break}case N.GREATER_THAN_SIGN:{this._leaveAttrValue(),this.state=U.DATA,this.emitCurrentTagToken();break}case N.EOF:{this._err(ce.eofInTag),this._emitEOFToken();break}default:this._err(ce.missingWhitespaceBetweenAttributes),this.state=U.BEFORE_ATTRIBUTE_NAME,this._stateBeforeAttributeName(t);}}_stateSelfClosingStartTag(t){switch(t){case N.GREATER_THAN_SIGN:{let n=this.currentToken;n.selfClosing=true,this.state=U.DATA,this.emitCurrentTagToken();break}case N.EOF:{this._err(ce.eofInTag),this._emitEOFToken();break}default:this._err(ce.unexpectedSolidusInTag),this.state=U.BEFORE_ATTRIBUTE_NAME,this._stateBeforeAttributeName(t);}}_stateBogusComment(t){let n=this.currentToken;switch(t){case N.GREATER_THAN_SIGN:{this.state=U.DATA,this.emitCurrentComment(n);break}case N.EOF:{this.emitCurrentComment(n),this._emitEOFToken();break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.data+=Hn;break}default:n.data+=String.fromCodePoint(t);}}_stateMarkupDeclarationOpen(t){this._consumeSequenceIfMatch(Qi.DASH_DASH,true)?(this._createCommentToken(Qi.DASH_DASH.length+1),this.state=U.COMMENT_START):this._consumeSequenceIfMatch(Qi.DOCTYPE,false)?(this.currentLocation=this.getCurrentLocation(Qi.DOCTYPE.length+1),this.state=U.DOCTYPE):this._consumeSequenceIfMatch(Qi.CDATA_START,true)?this.inForeignNode?this.state=U.CDATA_SECTION:(this._err(ce.cdataInHtmlContent),this._createCommentToken(Qi.CDATA_START.length+1),this.currentToken.data="[CDATA[",this.state=U.BOGUS_COMMENT):this._ensureHibernation()||(this._err(ce.incorrectlyOpenedComment),this._createCommentToken(2),this.state=U.BOGUS_COMMENT,this._stateBogusComment(t));}_stateCommentStart(t){switch(t){case N.HYPHEN_MINUS:{this.state=U.COMMENT_START_DASH;break}case N.GREATER_THAN_SIGN:{this._err(ce.abruptClosingOfEmptyComment),this.state=U.DATA;let n=this.currentToken;this.emitCurrentComment(n);break}default:this.state=U.COMMENT,this._stateComment(t);}}_stateCommentStartDash(t){let n=this.currentToken;switch(t){case N.HYPHEN_MINUS:{this.state=U.COMMENT_END;break}case N.GREATER_THAN_SIGN:{this._err(ce.abruptClosingOfEmptyComment),this.state=U.DATA,this.emitCurrentComment(n);break}case N.EOF:{this._err(ce.eofInComment),this.emitCurrentComment(n),this._emitEOFToken();break}default:n.data+="-",this.state=U.COMMENT,this._stateComment(t);}}_stateComment(t){let n=this.currentToken;switch(t){case N.HYPHEN_MINUS:{this.state=U.COMMENT_END_DASH;break}case N.LESS_THAN_SIGN:{n.data+="<",this.state=U.COMMENT_LESS_THAN_SIGN;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.data+=Hn;break}case N.EOF:{this._err(ce.eofInComment),this.emitCurrentComment(n),this._emitEOFToken();break}default:n.data+=String.fromCodePoint(t);}}_stateCommentLessThanSign(t){let n=this.currentToken;switch(t){case N.EXCLAMATION_MARK:{n.data+="!",this.state=U.COMMENT_LESS_THAN_SIGN_BANG;break}case N.LESS_THAN_SIGN:{n.data+="<";break}default:this.state=U.COMMENT,this._stateComment(t);}}_stateCommentLessThanSignBang(t){t===N.HYPHEN_MINUS?this.state=U.COMMENT_LESS_THAN_SIGN_BANG_DASH:(this.state=U.COMMENT,this._stateComment(t));}_stateCommentLessThanSignBangDash(t){t===N.HYPHEN_MINUS?this.state=U.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH:(this.state=U.COMMENT_END_DASH,this._stateCommentEndDash(t));}_stateCommentLessThanSignBangDashDash(t){t!==N.GREATER_THAN_SIGN&&t!==N.EOF&&this._err(ce.nestedComment),this.state=U.COMMENT_END,this._stateCommentEnd(t);}_stateCommentEndDash(t){let n=this.currentToken;switch(t){case N.HYPHEN_MINUS:{this.state=U.COMMENT_END;break}case N.EOF:{this._err(ce.eofInComment),this.emitCurrentComment(n),this._emitEOFToken();break}default:n.data+="-",this.state=U.COMMENT,this._stateComment(t);}}_stateCommentEnd(t){let n=this.currentToken;switch(t){case N.GREATER_THAN_SIGN:{this.state=U.DATA,this.emitCurrentComment(n);break}case N.EXCLAMATION_MARK:{this.state=U.COMMENT_END_BANG;break}case N.HYPHEN_MINUS:{n.data+="-";break}case N.EOF:{this._err(ce.eofInComment),this.emitCurrentComment(n),this._emitEOFToken();break}default:n.data+="--",this.state=U.COMMENT,this._stateComment(t);}}_stateCommentEndBang(t){let n=this.currentToken;switch(t){case N.HYPHEN_MINUS:{n.data+="--!",this.state=U.COMMENT_END_DASH;break}case N.GREATER_THAN_SIGN:{this._err(ce.incorrectlyClosedComment),this.state=U.DATA,this.emitCurrentComment(n);break}case N.EOF:{this._err(ce.eofInComment),this.emitCurrentComment(n),this._emitEOFToken();break}default:n.data+="--!",this.state=U.COMMENT,this._stateComment(t);}}_stateDoctype(t){switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this.state=U.BEFORE_DOCTYPE_NAME;break}case N.GREATER_THAN_SIGN:{this.state=U.BEFORE_DOCTYPE_NAME,this._stateBeforeDoctypeName(t);break}case N.EOF:{this._err(ce.eofInDoctype),this._createDoctypeToken(null);let n=this.currentToken;n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.missingWhitespaceBeforeDoctypeName),this.state=U.BEFORE_DOCTYPE_NAME,this._stateBeforeDoctypeName(t);}}_stateBeforeDoctypeName(t){if(fE(t))this._createDoctypeToken(String.fromCharCode(AP(t))),this.state=U.DOCTYPE_NAME;else switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.NULL:{this._err(ce.unexpectedNullCharacter),this._createDoctypeToken(Hn),this.state=U.DOCTYPE_NAME;break}case N.GREATER_THAN_SIGN:{this._err(ce.missingDoctypeName),this._createDoctypeToken(null);let n=this.currentToken;n.forceQuirks=true,this.emitCurrentDoctype(n),this.state=U.DATA;break}case N.EOF:{this._err(ce.eofInDoctype),this._createDoctypeToken(null);let n=this.currentToken;n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._createDoctypeToken(String.fromCodePoint(t)),this.state=U.DOCTYPE_NAME;}}_stateDoctypeName(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this.state=U.AFTER_DOCTYPE_NAME;break}case N.GREATER_THAN_SIGN:{this.state=U.DATA,this.emitCurrentDoctype(n);break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.name+=Hn;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:n.name+=String.fromCodePoint(fE(t)?AP(t):t);}}_stateAfterDoctypeName(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.GREATER_THAN_SIGN:{this.state=U.DATA,this.emitCurrentDoctype(n);break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._consumeSequenceIfMatch(Qi.PUBLIC,false)?this.state=U.AFTER_DOCTYPE_PUBLIC_KEYWORD:this._consumeSequenceIfMatch(Qi.SYSTEM,false)?this.state=U.AFTER_DOCTYPE_SYSTEM_KEYWORD:this._ensureHibernation()||(this._err(ce.invalidCharacterSequenceAfterDoctypeName),n.forceQuirks=true,this.state=U.BOGUS_DOCTYPE,this._stateBogusDoctype(t));}}_stateAfterDoctypePublicKeyword(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this.state=U.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;break}case N.QUOTATION_MARK:{this._err(ce.missingWhitespaceAfterDoctypePublicKeyword),n.publicId="",this.state=U.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;break}case N.APOSTROPHE:{this._err(ce.missingWhitespaceAfterDoctypePublicKeyword),n.publicId="",this.state=U.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;break}case N.GREATER_THAN_SIGN:{this._err(ce.missingDoctypePublicIdentifier),n.forceQuirks=true,this.state=U.DATA,this.emitCurrentDoctype(n);break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.missingQuoteBeforeDoctypePublicIdentifier),n.forceQuirks=true,this.state=U.BOGUS_DOCTYPE,this._stateBogusDoctype(t);}}_stateBeforeDoctypePublicIdentifier(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.QUOTATION_MARK:{n.publicId="",this.state=U.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;break}case N.APOSTROPHE:{n.publicId="",this.state=U.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;break}case N.GREATER_THAN_SIGN:{this._err(ce.missingDoctypePublicIdentifier),n.forceQuirks=true,this.state=U.DATA,this.emitCurrentDoctype(n);break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.missingQuoteBeforeDoctypePublicIdentifier),n.forceQuirks=true,this.state=U.BOGUS_DOCTYPE,this._stateBogusDoctype(t);}}_stateDoctypePublicIdentifierDoubleQuoted(t){let n=this.currentToken;switch(t){case N.QUOTATION_MARK:{this.state=U.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.publicId+=Hn;break}case N.GREATER_THAN_SIGN:{this._err(ce.abruptDoctypePublicIdentifier),n.forceQuirks=true,this.emitCurrentDoctype(n),this.state=U.DATA;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:n.publicId+=String.fromCodePoint(t);}}_stateDoctypePublicIdentifierSingleQuoted(t){let n=this.currentToken;switch(t){case N.APOSTROPHE:{this.state=U.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.publicId+=Hn;break}case N.GREATER_THAN_SIGN:{this._err(ce.abruptDoctypePublicIdentifier),n.forceQuirks=true,this.emitCurrentDoctype(n),this.state=U.DATA;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:n.publicId+=String.fromCodePoint(t);}}_stateAfterDoctypePublicIdentifier(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this.state=U.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;break}case N.GREATER_THAN_SIGN:{this.state=U.DATA,this.emitCurrentDoctype(n);break}case N.QUOTATION_MARK:{this._err(ce.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),n.systemId="",this.state=U.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case N.APOSTROPHE:{this._err(ce.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),n.systemId="",this.state=U.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.missingQuoteBeforeDoctypeSystemIdentifier),n.forceQuirks=true,this.state=U.BOGUS_DOCTYPE,this._stateBogusDoctype(t);}}_stateBetweenDoctypePublicAndSystemIdentifiers(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.GREATER_THAN_SIGN:{this.emitCurrentDoctype(n),this.state=U.DATA;break}case N.QUOTATION_MARK:{n.systemId="",this.state=U.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case N.APOSTROPHE:{n.systemId="",this.state=U.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.missingQuoteBeforeDoctypeSystemIdentifier),n.forceQuirks=true,this.state=U.BOGUS_DOCTYPE,this._stateBogusDoctype(t);}}_stateAfterDoctypeSystemKeyword(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this.state=U.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;break}case N.QUOTATION_MARK:{this._err(ce.missingWhitespaceAfterDoctypeSystemKeyword),n.systemId="",this.state=U.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case N.APOSTROPHE:{this._err(ce.missingWhitespaceAfterDoctypeSystemKeyword),n.systemId="",this.state=U.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case N.GREATER_THAN_SIGN:{this._err(ce.missingDoctypeSystemIdentifier),n.forceQuirks=true,this.state=U.DATA,this.emitCurrentDoctype(n);break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.missingQuoteBeforeDoctypeSystemIdentifier),n.forceQuirks=true,this.state=U.BOGUS_DOCTYPE,this._stateBogusDoctype(t);}}_stateBeforeDoctypeSystemIdentifier(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.QUOTATION_MARK:{n.systemId="",this.state=U.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case N.APOSTROPHE:{n.systemId="",this.state=U.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case N.GREATER_THAN_SIGN:{this._err(ce.missingDoctypeSystemIdentifier),n.forceQuirks=true,this.state=U.DATA,this.emitCurrentDoctype(n);break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.missingQuoteBeforeDoctypeSystemIdentifier),n.forceQuirks=true,this.state=U.BOGUS_DOCTYPE,this._stateBogusDoctype(t);}}_stateDoctypeSystemIdentifierDoubleQuoted(t){let n=this.currentToken;switch(t){case N.QUOTATION_MARK:{this.state=U.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.systemId+=Hn;break}case N.GREATER_THAN_SIGN:{this._err(ce.abruptDoctypeSystemIdentifier),n.forceQuirks=true,this.emitCurrentDoctype(n),this.state=U.DATA;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:n.systemId+=String.fromCodePoint(t);}}_stateDoctypeSystemIdentifierSingleQuoted(t){let n=this.currentToken;switch(t){case N.APOSTROPHE:{this.state=U.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.systemId+=Hn;break}case N.GREATER_THAN_SIGN:{this._err(ce.abruptDoctypeSystemIdentifier),n.forceQuirks=true,this.emitCurrentDoctype(n),this.state=U.DATA;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:n.systemId+=String.fromCodePoint(t);}}_stateAfterDoctypeSystemIdentifier(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.GREATER_THAN_SIGN:{this.emitCurrentDoctype(n),this.state=U.DATA;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.unexpectedCharacterAfterDoctypeSystemIdentifier),this.state=U.BOGUS_DOCTYPE,this._stateBogusDoctype(t);}}_stateBogusDoctype(t){let n=this.currentToken;switch(t){case N.GREATER_THAN_SIGN:{this.emitCurrentDoctype(n),this.state=U.DATA;break}case N.NULL:{this._err(ce.unexpectedNullCharacter);break}case N.EOF:{this.emitCurrentDoctype(n),this._emitEOFToken();break}}}_stateCdataSection(t){switch(t){case N.RIGHT_SQUARE_BRACKET:{this.state=U.CDATA_SECTION_BRACKET;break}case N.EOF:{this._err(ce.eofInCdata),this._emitEOFToken();break}default:this._emitCodePoint(t);}}_stateCdataSectionBracket(t){t===N.RIGHT_SQUARE_BRACKET?this.state=U.CDATA_SECTION_END:(this._emitChars("]"),this.state=U.CDATA_SECTION,this._stateCdataSection(t));}_stateCdataSectionEnd(t){switch(t){case N.GREATER_THAN_SIGN:{this.state=U.DATA;break}case N.RIGHT_SQUARE_BRACKET:{this._emitChars("]");break}default:this._emitChars("]]"),this.state=U.CDATA_SECTION,this._stateCdataSection(t);}}_stateCharacterReference(){let t=this.entityDecoder.write(this.preprocessor.html,this.preprocessor.pos);if(t<0)if(this.preprocessor.lastChunkWritten)t=this.entityDecoder.end();else {this.active=false,this.preprocessor.pos=this.preprocessor.html.length-1,this.consumedAfterSnapshot=0,this.preprocessor.endOfChunkHit=true;return}t===0?(this.preprocessor.pos=this.entityStartPos,this._flushCodePointConsumedAsCharacterReference(N.AMPERSAND),this.state=!this._isCharacterReferenceInAttribute()&&bce(this.preprocessor.peek(1))?U.AMBIGUOUS_AMPERSAND:this.returnState):this.state=this.returnState;}_stateAmbiguousAmpersand(t){bce(t)?this._flushCodePointConsumedAsCharacterReference(t):(t===N.SEMICOLON&&this._err(ce.unknownNamedCharacterReference),this.state=this.returnState,this._callState(t));}};var Rce=new Set([T.DD,T.DT,T.LI,T.OPTGROUP,T.OPTION,T.P,T.RB,T.RP,T.RT,T.RTC]),Ece=new Set([...Rce,T.CAPTION,T.COLGROUP,T.TBODY,T.TD,T.TFOOT,T.TH,T.THEAD,T.TR]),EP=new Set([T.APPLET,T.CAPTION,T.HTML,T.MARQUEE,T.OBJECT,T.TABLE,T.TD,T.TEMPLATE,T.TH]),d4e=new Set([...EP,T.OL,T.UL]),u4e=new Set([...EP,T.BUTTON]),Cce=new Set([T.ANNOTATION_XML,T.MI,T.MN,T.MO,T.MS,T.MTEXT]),vce=new Set([T.DESC,T.FOREIGN_OBJECT,T.TITLE]),p4e=new Set([T.TR,T.TEMPLATE,T.HTML]),m4e=new Set([T.TBODY,T.TFOOT,T.THEAD,T.TEMPLATE,T.HTML]),h4e=new Set([T.TABLE,T.TEMPLATE,T.HTML]),g4e=new Set([T.TD,T.TH]),CP=class{get currentTmplContentOrNode(){return this._isInTemplate()?this.treeAdapter.getTemplateContent(this.current):this.current}constructor(t,n,o){this.treeAdapter=n,this.handler=o,this.items=[],this.tagIDs=[],this.stackTop=-1,this.tmplCount=0,this.currentTagId=T.UNKNOWN,this.current=t;}_indexOf(t){return this.items.lastIndexOf(t,this.stackTop)}_isInTemplate(){return this.currentTagId===T.TEMPLATE&&this.treeAdapter.getNamespaceURI(this.current)===Te.HTML}_updateCurrentElement(){this.current=this.items[this.stackTop],this.currentTagId=this.tagIDs[this.stackTop];}push(t,n){this.stackTop++,this.items[this.stackTop]=t,this.current=t,this.tagIDs[this.stackTop]=n,this.currentTagId=n,this._isInTemplate()&&this.tmplCount++,this.handler.onItemPush(t,n,true);}pop(){let t=this.current;this.tmplCount>0&&this._isInTemplate()&&this.tmplCount--,this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(t,true);}replace(t,n){let o=this._indexOf(t);this.items[o]=n,o===this.stackTop&&(this.current=n);}insertAfter(t,n,o){let r=this._indexOf(t)+1;this.items.splice(r,0,n),this.tagIDs.splice(r,0,o),this.stackTop++,r===this.stackTop&&this._updateCurrentElement(),this.current&&this.currentTagId!==void 0&&this.handler.onItemPush(this.current,this.currentTagId,r===this.stackTop);}popUntilTagNamePopped(t){let n=this.stackTop+1;do n=this.tagIDs.lastIndexOf(t,n-1);while(n>0&&this.treeAdapter.getNamespaceURI(this.items[n])!==Te.HTML);this.shortenToLength(Math.max(n,0));}shortenToLength(t){for(;this.stackTop>=t;){let n=this.current;this.tmplCount>0&&this._isInTemplate()&&(this.tmplCount-=1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(n,this.stackTop<t);}}popUntilElementPopped(t){let n=this._indexOf(t);this.shortenToLength(Math.max(n,0));}popUntilPopped(t,n){let o=this._indexOfTagNames(t,n);this.shortenToLength(Math.max(o,0));}popUntilNumberedHeaderPopped(){this.popUntilPopped(gE,Te.HTML);}popUntilTableCellPopped(){this.popUntilPopped(g4e,Te.HTML);}popAllUpToHtmlElement(){this.tmplCount=0,this.shortenToLength(1);}_indexOfTagNames(t,n){for(let o=this.stackTop;o>=0;o--)if(t.has(this.tagIDs[o])&&this.treeAdapter.getNamespaceURI(this.items[o])===n)return o;return -1}clearBackTo(t,n){let o=this._indexOfTagNames(t,n);this.shortenToLength(o+1);}clearBackToTableContext(){this.clearBackTo(h4e,Te.HTML);}clearBackToTableBodyContext(){this.clearBackTo(m4e,Te.HTML);}clearBackToTableRowContext(){this.clearBackTo(p4e,Te.HTML);}remove(t){let n=this._indexOf(t);n>=0&&(n===this.stackTop?this.pop():(this.items.splice(n,1),this.tagIDs.splice(n,1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(t,false)));}tryPeekProperlyNestedBodyElement(){return this.stackTop>=1&&this.tagIDs[1]===T.BODY?this.items[1]:null}contains(t){return this._indexOf(t)>-1}getCommonAncestor(t){let n=this._indexOf(t)-1;return n>=0?this.items[n]:null}isRootHtmlElementCurrent(){return this.stackTop===0&&this.tagIDs[0]===T.HTML}hasInDynamicScope(t,n){for(let o=this.stackTop;o>=0;o--){let r=this.tagIDs[o];switch(this.treeAdapter.getNamespaceURI(this.items[o])){case Te.HTML:{if(r===t)return true;if(n.has(r))return false;break}case Te.SVG:{if(vce.has(r))return false;break}case Te.MATHML:{if(Cce.has(r))return false;break}}}return true}hasInScope(t){return this.hasInDynamicScope(t,EP)}hasInListItemScope(t){return this.hasInDynamicScope(t,d4e)}hasInButtonScope(t){return this.hasInDynamicScope(t,u4e)}hasNumberedHeaderInScope(){for(let t=this.stackTop;t>=0;t--){let n=this.tagIDs[t];switch(this.treeAdapter.getNamespaceURI(this.items[t])){case Te.HTML:{if(gE.has(n))return true;if(EP.has(n))return false;break}case Te.SVG:{if(vce.has(n))return false;break}case Te.MATHML:{if(Cce.has(n))return false;break}}}return true}hasInTableScope(t){for(let n=this.stackTop;n>=0;n--)if(this.treeAdapter.getNamespaceURI(this.items[n])===Te.HTML)switch(this.tagIDs[n]){case t:return true;case T.TABLE:case T.HTML:return false}return true}hasTableBodyContextInTableScope(){for(let t=this.stackTop;t>=0;t--)if(this.treeAdapter.getNamespaceURI(this.items[t])===Te.HTML)switch(this.tagIDs[t]){case T.TBODY:case T.THEAD:case T.TFOOT:return true;case T.TABLE:case T.HTML:return false}return true}hasInSelectScope(t){for(let n=this.stackTop;n>=0;n--)if(this.treeAdapter.getNamespaceURI(this.items[n])===Te.HTML)switch(this.tagIDs[n]){case t:return true;case T.OPTION:case T.OPTGROUP:break;default:return false}return true}generateImpliedEndTags(){for(;this.currentTagId!==void 0&&Rce.has(this.currentTagId);)this.pop();}generateImpliedEndTagsThoroughly(){for(;this.currentTagId!==void 0&&Ece.has(this.currentTagId);)this.pop();}generateImpliedEndTagsWithExclusion(t){for(;this.currentTagId!==void 0&&this.currentTagId!==t&&Ece.has(this.currentTagId);)this.pop();}};var kl;(function(e){e[e.Marker=0]="Marker",e[e.Element=1]="Element";})(kl||(kl={}));var wce={type:kl.Marker},vP=class{constructor(t){this.treeAdapter=t,this.entries=[],this.bookmark=null;}_getNoahArkConditionCandidates(t,n){let o=[],r=n.length,i=this.treeAdapter.getTagName(t),s=this.treeAdapter.getNamespaceURI(t);for(let a=0;a<this.entries.length;a++){let l=this.entries[a];if(l.type===kl.Marker)break;let{element:c}=l;if(this.treeAdapter.getTagName(c)===i&&this.treeAdapter.getNamespaceURI(c)===s){let d=this.treeAdapter.getAttrList(c);d.length===r&&o.push({idx:a,attrs:d});}}return o}_ensureNoahArkCondition(t){if(this.entries.length<3)return;let n=this.treeAdapter.getAttrList(t),o=this._getNoahArkConditionCandidates(t,n);if(o.length<3)return;let r=new Map(n.map(s=>[s.name,s.value])),i=0;for(let s=0;s<o.length;s++){let a=o[s];a.attrs.every(l=>r.get(l.name)===l.value)&&(i+=1,i>=3&&this.entries.splice(a.idx,1));}}insertMarker(){this.entries.unshift(wce);}pushElement(t,n){this._ensureNoahArkCondition(t),this.entries.unshift({type:kl.Element,element:t,token:n});}insertElementAfterBookmark(t,n){let o=this.entries.indexOf(this.bookmark);this.entries.splice(o,0,{type:kl.Element,element:t,token:n});}removeEntry(t){let n=this.entries.indexOf(t);n!==-1&&this.entries.splice(n,1);}clearToLastMarker(){let t=this.entries.indexOf(wce);t===-1?this.entries.length=0:this.entries.splice(0,t+1);}getElementEntryInScopeWithTagName(t){let n=this.entries.find(o=>o.type===kl.Marker||this.treeAdapter.getTagName(o.element)===t);return n&&n.type===kl.Element?n:null}getElementEntry(t){return this.entries.find(n=>n.type===kl.Element&&n.element===t)}};var Dl={createDocument(){return {nodeName:"#document",mode:Zi.NO_QUIRKS,childNodes:[]}},createDocumentFragment(){return {nodeName:"#document-fragment",childNodes:[]}},createElement(e,t,n){return {nodeName:e,tagName:e,attrs:n,namespaceURI:t,childNodes:[],parentNode:null}},createCommentNode(e){return {nodeName:"#comment",data:e,parentNode:null}},createTextNode(e){return {nodeName:"#text",value:e,parentNode:null}},appendChild(e,t){e.childNodes.push(t),t.parentNode=e;},insertBefore(e,t,n){let o=e.childNodes.indexOf(n);e.childNodes.splice(o,0,t),t.parentNode=e;},setTemplateContent(e,t){e.content=t;},getTemplateContent(e){return e.content},setDocumentType(e,t,n,o){let r=e.childNodes.find(i=>i.nodeName==="#documentType");if(r)r.name=t,r.publicId=n,r.systemId=o;else {let i={nodeName:"#documentType",name:t,publicId:n,systemId:o,parentNode:null};Dl.appendChild(e,i);}},setDocumentMode(e,t){e.mode=t;},getDocumentMode(e){return e.mode},detachNode(e){if(e.parentNode){let t=e.parentNode.childNodes.indexOf(e);e.parentNode.childNodes.splice(t,1),e.parentNode=null;}},insertText(e,t){if(e.childNodes.length>0){let n=e.childNodes[e.childNodes.length-1];if(Dl.isTextNode(n)){n.value+=t;return}}Dl.appendChild(e,Dl.createTextNode(t));},insertTextBefore(e,t,n){let o=e.childNodes[e.childNodes.indexOf(n)-1];o&&Dl.isTextNode(o)?o.value+=t:Dl.insertBefore(e,Dl.createTextNode(t),n);},adoptAttributes(e,t){let n=new Set(e.attrs.map(o=>o.name));for(let o=0;o<t.length;o++)n.has(t[o].name)||e.attrs.push(t[o]);},getFirstChild(e){return e.childNodes[0]},getChildNodes(e){return e.childNodes},getParentNode(e){return e.parentNode},getAttrList(e){return e.attrs},getTagName(e){return e.tagName},getNamespaceURI(e){return e.namespaceURI},getTextNodeContent(e){return e.value},getCommentNodeContent(e){return e.data},getDocumentTypeNodeName(e){return e.name},getDocumentTypeNodePublicId(e){return e.publicId},getDocumentTypeNodeSystemId(e){return e.systemId},isTextNode(e){return e.nodeName==="#text"},isCommentNode(e){return e.nodeName==="#comment"},isDocumentTypeNode(e){return e.nodeName==="#documentType"},isElementNode(e){return Object.prototype.hasOwnProperty.call(e,"tagName")},setNodeSourceCodeLocation(e,t){e.sourceCodeLocation=t;},getNodeSourceCodeLocation(e){return e.sourceCodeLocation},updateNodeSourceCodeLocation(e,t){e.sourceCodeLocation={...e.sourceCodeLocation,...t};}};var xce="html",f4e="about:legacy-compat",y4e="http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd",_ce=["+//silmaril//dtd html pro v0r11 19970101//","-//as//dtd html 3.0 aswedit + extensions//","-//advasoft ltd//dtd html 3.0 aswedit + extensions//","-//ietf//dtd html 2.0 level 1//","-//ietf//dtd html 2.0 level 2//","-//ietf//dtd html 2.0 strict level 1//","-//ietf//dtd html 2.0 strict level 2//","-//ietf//dtd html 2.0 strict//","-//ietf//dtd html 2.0//","-//ietf//dtd html 2.1e//","-//ietf//dtd html 3.0//","-//ietf//dtd html 3.2 final//","-//ietf//dtd html 3.2//","-//ietf//dtd html 3//","-//ietf//dtd html level 0//","-//ietf//dtd html level 1//","-//ietf//dtd html level 2//","-//ietf//dtd html level 3//","-//ietf//dtd html strict level 0//","-//ietf//dtd html strict level 1//","-//ietf//dtd html strict level 2//","-//ietf//dtd html strict level 3//","-//ietf//dtd html strict//","-//ietf//dtd html//","-//metrius//dtd metrius presentational//","-//microsoft//dtd internet explorer 2.0 html strict//","-//microsoft//dtd internet explorer 2.0 html//","-//microsoft//dtd internet explorer 2.0 tables//","-//microsoft//dtd internet explorer 3.0 html strict//","-//microsoft//dtd internet explorer 3.0 html//","-//microsoft//dtd internet explorer 3.0 tables//","-//netscape comm. corp.//dtd html//","-//netscape comm. corp.//dtd strict html//","-//o'reilly and associates//dtd html 2.0//","-//o'reilly and associates//dtd html extended 1.0//","-//o'reilly and associates//dtd html extended relaxed 1.0//","-//sq//dtd html 2.0 hotmetal + extensions//","-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//","-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//","-//spyglass//dtd html 2.0 extended//","-//sun microsystems corp.//dtd hotjava html//","-//sun microsystems corp.//dtd hotjava strict html//","-//w3c//dtd html 3 1995-03-24//","-//w3c//dtd html 3.2 draft//","-//w3c//dtd html 3.2 final//","-//w3c//dtd html 3.2//","-//w3c//dtd html 3.2s draft//","-//w3c//dtd html 4.0 frameset//","-//w3c//dtd html 4.0 transitional//","-//w3c//dtd html experimental 19960712//","-//w3c//dtd html experimental 970421//","-//w3c//dtd w3 html//","-//w3o//dtd w3 html 3.0//","-//webtechs//dtd mozilla html 2.0//","-//webtechs//dtd mozilla html//"],S4e=[..._ce,"-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"],b4e=new Set(["-//w3o//dtd w3 html strict 3.0//en//","-/w3c/dtd html 4.0 transitional/en","html"]),Pce=["-//w3c//dtd xhtml 1.0 frameset//","-//w3c//dtd xhtml 1.0 transitional//"],T4e=[...Pce,"-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"];function Ice(e,t){return t.some(n=>e.startsWith(n))}function Oce(e){return e.name===xce&&e.publicId===null&&(e.systemId===null||e.systemId===f4e)}function Mce(e){if(e.name!==xce)return Zi.QUIRKS;let{systemId:t}=e;if(t&&t.toLowerCase()===y4e)return Zi.QUIRKS;let{publicId:n}=e;if(n!==null){if(n=n.toLowerCase(),b4e.has(n))return Zi.QUIRKS;let o=t===null?S4e:_ce;if(Ice(n,o))return Zi.QUIRKS;if(o=t===null?Pce:T4e,Ice(n,o))return Zi.LIMITED_QUIRKS}return Zi.NO_QUIRKS}var Nce={TEXT_HTML:"text/html",APPLICATION_XML:"application/xhtml+xml"},E4e="definitionurl",C4e="definitionURL",v4e=new Map(["attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map(e=>[e.toLowerCase(),e])),R4e=new Map([["xlink:actuate",{prefix:"xlink",name:"actuate",namespace:Te.XLINK}],["xlink:arcrole",{prefix:"xlink",name:"arcrole",namespace:Te.XLINK}],["xlink:href",{prefix:"xlink",name:"href",namespace:Te.XLINK}],["xlink:role",{prefix:"xlink",name:"role",namespace:Te.XLINK}],["xlink:show",{prefix:"xlink",name:"show",namespace:Te.XLINK}],["xlink:title",{prefix:"xlink",name:"title",namespace:Te.XLINK}],["xlink:type",{prefix:"xlink",name:"type",namespace:Te.XLINK}],["xml:lang",{prefix:"xml",name:"lang",namespace:Te.XML}],["xml:space",{prefix:"xml",name:"space",namespace:Te.XML}],["xmlns",{prefix:"",name:"xmlns",namespace:Te.XMLNS}],["xmlns:xlink",{prefix:"xmlns",name:"xlink",namespace:Te.XMLNS}]]),w4e=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map(e=>[e.toLowerCase(),e])),I4e=new Set([T.B,T.BIG,T.BLOCKQUOTE,T.BODY,T.BR,T.CENTER,T.CODE,T.DD,T.DIV,T.DL,T.DT,T.EM,T.EMBED,T.H1,T.H2,T.H3,T.H4,T.H5,T.H6,T.HEAD,T.HR,T.I,T.IMG,T.LI,T.LISTING,T.MENU,T.META,T.NOBR,T.OL,T.P,T.PRE,T.RUBY,T.S,T.SMALL,T.SPAN,T.STRONG,T.STRIKE,T.SUB,T.SUP,T.TABLE,T.TT,T.U,T.UL,T.VAR]);function Lce(e){let t=e.tagID;return t===T.FONT&&e.attrs.some(({name:o})=>o===Tu.COLOR||o===Tu.SIZE||o===Tu.FACE)||I4e.has(t)}function AH(e){for(let t=0;t<e.attrs.length;t++)if(e.attrs[t].name===E4e){e.attrs[t].name=C4e;break}}function EH(e){for(let t=0;t<e.attrs.length;t++){let n=v4e.get(e.attrs[t].name);n!=null&&(e.attrs[t].name=n);}}function RP(e){for(let t=0;t<e.attrs.length;t++){let n=R4e.get(e.attrs[t].name);n&&(e.attrs[t].prefix=n.prefix,e.attrs[t].name=n.name,e.attrs[t].namespace=n.namespace);}}function kce(e){let t=w4e.get(e.tagName);t!=null&&(e.tagName=t,e.tagID=Lh(e.tagName));}function x4e(e,t){return t===Te.MATHML&&(e===T.MI||e===T.MO||e===T.MN||e===T.MS||e===T.MTEXT)}function _4e(e,t,n){if(t===Te.MATHML&&e===T.ANNOTATION_XML){for(let o=0;o<n.length;o++)if(n[o].name===Tu.ENCODING){let r=n[o].value.toLowerCase();return r===Nce.TEXT_HTML||r===Nce.APPLICATION_XML}}return t===Te.SVG&&(e===T.FOREIGN_OBJECT||e===T.DESC||e===T.TITLE)}function Dce(e,t,n,o){return (!o||o===Te.HTML)&&_4e(e,t,n)||(!o||o===Te.MATHML)&&x4e(e,t)}var P4e="hidden",O4e=8,M4e=3,$;(function(e){e[e.INITIAL=0]="INITIAL",e[e.BEFORE_HTML=1]="BEFORE_HTML",e[e.BEFORE_HEAD=2]="BEFORE_HEAD",e[e.IN_HEAD=3]="IN_HEAD",e[e.IN_HEAD_NO_SCRIPT=4]="IN_HEAD_NO_SCRIPT",e[e.AFTER_HEAD=5]="AFTER_HEAD",e[e.IN_BODY=6]="IN_BODY",e[e.TEXT=7]="TEXT",e[e.IN_TABLE=8]="IN_TABLE",e[e.IN_TABLE_TEXT=9]="IN_TABLE_TEXT",e[e.IN_CAPTION=10]="IN_CAPTION",e[e.IN_COLUMN_GROUP=11]="IN_COLUMN_GROUP",e[e.IN_TABLE_BODY=12]="IN_TABLE_BODY",e[e.IN_ROW=13]="IN_ROW",e[e.IN_CELL=14]="IN_CELL",e[e.IN_SELECT=15]="IN_SELECT",e[e.IN_SELECT_IN_TABLE=16]="IN_SELECT_IN_TABLE",e[e.IN_TEMPLATE=17]="IN_TEMPLATE",e[e.AFTER_BODY=18]="AFTER_BODY",e[e.IN_FRAMESET=19]="IN_FRAMESET",e[e.AFTER_FRAMESET=20]="AFTER_FRAMESET",e[e.AFTER_AFTER_BODY=21]="AFTER_AFTER_BODY",e[e.AFTER_AFTER_FRAMESET=22]="AFTER_AFTER_FRAMESET";})($||($={}));var N4e={startLine:-1,startCol:-1,startOffset:-1,endLine:-1,endCol:-1,endOffset:-1},Gce=new Set([T.TABLE,T.TBODY,T.TFOOT,T.THEAD,T.TR]),Bce={scriptingEnabled:true,sourceCodeLocationInfo:false,treeAdapter:Dl,onParseError:null},RE=class{constructor(t,n,o=null,r=null){this.fragmentContext=o,this.scriptHandler=r,this.currentToken=null,this.stopped=false,this.insertionMode=$.INITIAL,this.originalInsertionMode=$.INITIAL,this.headElement=null,this.formElement=null,this.currentNotInHTML=false,this.tmplInsertionModeStack=[],this.pendingCharacterTokens=[],this.hasNonWhitespacePendingCharacterToken=false,this.framesetOk=true,this.skipNextNewLine=false,this.fosterParentingEnabled=false,this.options={...Bce,...t},this.treeAdapter=this.options.treeAdapter,this.onParseError=this.options.onParseError,this.onParseError&&(this.options.sourceCodeLocationInfo=true),this.document=n??this.treeAdapter.createDocument(),this.tokenizer=new yE(this.options,this),this.activeFormattingElements=new vP(this.treeAdapter),this.fragmentContextID=o?Lh(this.treeAdapter.getTagName(o)):T.UNKNOWN,this._setContextModes(o??this.document,this.fragmentContextID),this.openElements=new CP(this.document,this.treeAdapter,this);}static parse(t,n){let o=new this(n);return o.tokenizer.write(t,true),o.document}static getFragmentParser(t,n){let o={...Bce,...n};t??(t=o.treeAdapter.createElement(oe.TEMPLATE,Te.HTML,[]));let r=o.treeAdapter.createElement("documentmock",Te.HTML,[]),i=new this(o,r,t);return i.fragmentContextID===T.TEMPLATE&&i.tmplInsertionModeStack.unshift($.IN_TEMPLATE),i._initTokenizerForFragmentParsing(),i._insertFakeRootElement(),i._resetInsertionMode(),i._findFormInFragmentContext(),i}getFragment(){let t=this.treeAdapter.getFirstChild(this.document),n=this.treeAdapter.createDocumentFragment();return this._adoptNodes(t,n),n}_err(t,n,o){var r;if(!this.onParseError)return;let i=(r=t.location)!==null&&r!==void 0?r:N4e,s={code:n,startLine:i.startLine,startCol:i.startCol,startOffset:i.startOffset,endLine:o?i.startLine:i.endLine,endCol:o?i.startCol:i.endCol,endOffset:o?i.startOffset:i.endOffset};this.onParseError(s);}onItemPush(t,n,o){var r,i;(i=(r=this.treeAdapter).onItemPush)===null||i===void 0||i.call(r,t),o&&this.openElements.stackTop>0&&this._setContextModes(t,n);}onItemPop(t,n){var o,r;if(this.options.sourceCodeLocationInfo&&this._setEndLocation(t,this.currentToken),(r=(o=this.treeAdapter).onItemPop)===null||r===void 0||r.call(o,t,this.openElements.current),n){let i,s;this.openElements.stackTop===0&&this.fragmentContext?(i=this.fragmentContext,s=this.fragmentContextID):{current:i,currentTagId:s}=this.openElements,this._setContextModes(i,s);}}_setContextModes(t,n){let o=t===this.document||t&&this.treeAdapter.getNamespaceURI(t)===Te.HTML;this.currentNotInHTML=!o,this.tokenizer.inForeignNode=!o&&t!==void 0&&n!==void 0&&!this._isIntegrationPoint(n,t);}_switchToTextParsing(t,n){this._insertElement(t,Te.HTML),this.tokenizer.state=n,this.originalInsertionMode=this.insertionMode,this.insertionMode=$.TEXT;}switchToPlaintextParsing(){this.insertionMode=$.TEXT,this.originalInsertionMode=$.IN_BODY,this.tokenizer.state=Ri.PLAINTEXT;}_getAdjustedCurrentElement(){return this.openElements.stackTop===0&&this.fragmentContext?this.fragmentContext:this.openElements.current}_findFormInFragmentContext(){let t=this.fragmentContext;for(;t;){if(this.treeAdapter.getTagName(t)===oe.FORM){this.formElement=t;break}t=this.treeAdapter.getParentNode(t);}}_initTokenizerForFragmentParsing(){if(!(!this.fragmentContext||this.treeAdapter.getNamespaceURI(this.fragmentContext)!==Te.HTML))switch(this.fragmentContextID){case T.TITLE:case T.TEXTAREA:{this.tokenizer.state=Ri.RCDATA;break}case T.STYLE:case T.XMP:case T.IFRAME:case T.NOEMBED:case T.NOFRAMES:case T.NOSCRIPT:{this.tokenizer.state=Ri.RAWTEXT;break}case T.SCRIPT:{this.tokenizer.state=Ri.SCRIPT_DATA;break}case T.PLAINTEXT:{this.tokenizer.state=Ri.PLAINTEXT;break}}}_setDocumentType(t){let n=t.name||"",o=t.publicId||"",r=t.systemId||"";if(this.treeAdapter.setDocumentType(this.document,n,o,r),t.location){let s=this.treeAdapter.getChildNodes(this.document).find(a=>this.treeAdapter.isDocumentTypeNode(a));s&&this.treeAdapter.setNodeSourceCodeLocation(s,t.location);}}_attachElementToTree(t,n){if(this.options.sourceCodeLocationInfo){let o=n&&{...n,startTag:n};this.treeAdapter.setNodeSourceCodeLocation(t,o);}if(this._shouldFosterParentOnInsertion())this._fosterParentElement(t);else {let o=this.openElements.currentTmplContentOrNode;this.treeAdapter.appendChild(o??this.document,t);}}_appendElement(t,n){let o=this.treeAdapter.createElement(t.tagName,n,t.attrs);this._attachElementToTree(o,t.location);}_insertElement(t,n){let o=this.treeAdapter.createElement(t.tagName,n,t.attrs);this._attachElementToTree(o,t.location),this.openElements.push(o,t.tagID);}_insertFakeElement(t,n){let o=this.treeAdapter.createElement(t,Te.HTML,[]);this._attachElementToTree(o,null),this.openElements.push(o,n);}_insertTemplate(t){let n=this.treeAdapter.createElement(t.tagName,Te.HTML,t.attrs),o=this.treeAdapter.createDocumentFragment();this.treeAdapter.setTemplateContent(n,o),this._attachElementToTree(n,t.location),this.openElements.push(n,t.tagID),this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(o,null);}_insertFakeRootElement(){let t=this.treeAdapter.createElement(oe.HTML,Te.HTML,[]);this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(t,null),this.treeAdapter.appendChild(this.openElements.current,t),this.openElements.push(t,T.HTML);}_appendCommentNode(t,n){let o=this.treeAdapter.createCommentNode(t.data);this.treeAdapter.appendChild(n,o),this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(o,t.location);}_insertCharacters(t){let n,o;if(this._shouldFosterParentOnInsertion()?({parent:n,beforeElement:o}=this._findFosterParentingLocation(),o?this.treeAdapter.insertTextBefore(n,t.chars,o):this.treeAdapter.insertText(n,t.chars)):(n=this.openElements.currentTmplContentOrNode,this.treeAdapter.insertText(n,t.chars)),!t.location)return;let r=this.treeAdapter.getChildNodes(n),i=o?r.lastIndexOf(o):r.length,s=r[i-1];if(this.treeAdapter.getNodeSourceCodeLocation(s)){let{endLine:l,endCol:c,endOffset:d}=t.location;this.treeAdapter.updateNodeSourceCodeLocation(s,{endLine:l,endCol:c,endOffset:d});}else this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(s,t.location);}_adoptNodes(t,n){for(let o=this.treeAdapter.getFirstChild(t);o;o=this.treeAdapter.getFirstChild(t))this.treeAdapter.detachNode(o),this.treeAdapter.appendChild(n,o);}_setEndLocation(t,n){if(this.treeAdapter.getNodeSourceCodeLocation(t)&&n.location){let o=n.location,r=this.treeAdapter.getTagName(t),i=n.type===Kt.END_TAG&&r===n.tagName?{endTag:{...o},endLine:o.endLine,endCol:o.endCol,endOffset:o.endOffset}:{endLine:o.startLine,endCol:o.startCol,endOffset:o.startOffset};this.treeAdapter.updateNodeSourceCodeLocation(t,i);}}shouldProcessStartTagTokenInForeignContent(t){if(!this.currentNotInHTML)return false;let n,o;return this.openElements.stackTop===0&&this.fragmentContext?(n=this.fragmentContext,o=this.fragmentContextID):{current:n,currentTagId:o}=this.openElements,t.tagID===T.SVG&&this.treeAdapter.getTagName(n)===oe.ANNOTATION_XML&&this.treeAdapter.getNamespaceURI(n)===Te.MATHML?false:this.tokenizer.inForeignNode||(t.tagID===T.MGLYPH||t.tagID===T.MALIGNMARK)&&o!==void 0&&!this._isIntegrationPoint(o,n,Te.HTML)}_processToken(t){switch(t.type){case Kt.CHARACTER:{this.onCharacter(t);break}case Kt.NULL_CHARACTER:{this.onNullCharacter(t);break}case Kt.COMMENT:{this.onComment(t);break}case Kt.DOCTYPE:{this.onDoctype(t);break}case Kt.START_TAG:{this._processStartTag(t);break}case Kt.END_TAG:{this.onEndTag(t);break}case Kt.EOF:{this.onEof(t);break}case Kt.WHITESPACE_CHARACTER:{this.onWhitespaceCharacter(t);break}}}_isIntegrationPoint(t,n,o){let r=this.treeAdapter.getNamespaceURI(n),i=this.treeAdapter.getAttrList(n);return Dce(t,r,i,o)}_reconstructActiveFormattingElements(){let t=this.activeFormattingElements.entries.length;if(t){let n=this.activeFormattingElements.entries.findIndex(r=>r.type===kl.Marker||this.openElements.contains(r.element)),o=n===-1?t-1:n-1;for(let r=o;r>=0;r--){let i=this.activeFormattingElements.entries[r];this._insertElement(i.token,this.treeAdapter.getNamespaceURI(i.element)),i.element=this.openElements.current;}}}_closeTableCell(){this.openElements.generateImpliedEndTags(),this.openElements.popUntilTableCellPopped(),this.activeFormattingElements.clearToLastMarker(),this.insertionMode=$.IN_ROW;}_closePElement(){this.openElements.generateImpliedEndTagsWithExclusion(T.P),this.openElements.popUntilTagNamePopped(T.P);}_resetInsertionMode(){for(let t=this.openElements.stackTop;t>=0;t--)switch(t===0&&this.fragmentContext?this.fragmentContextID:this.openElements.tagIDs[t]){case T.TR:{this.insertionMode=$.IN_ROW;return}case T.TBODY:case T.THEAD:case T.TFOOT:{this.insertionMode=$.IN_TABLE_BODY;return}case T.CAPTION:{this.insertionMode=$.IN_CAPTION;return}case T.COLGROUP:{this.insertionMode=$.IN_COLUMN_GROUP;return}case T.TABLE:{this.insertionMode=$.IN_TABLE;return}case T.BODY:{this.insertionMode=$.IN_BODY;return}case T.FRAMESET:{this.insertionMode=$.IN_FRAMESET;return}case T.SELECT:{this._resetInsertionModeForSelect(t);return}case T.TEMPLATE:{this.insertionMode=this.tmplInsertionModeStack[0];return}case T.HTML:{this.insertionMode=this.headElement?$.AFTER_HEAD:$.BEFORE_HEAD;return}case T.TD:case T.TH:{if(t>0){this.insertionMode=$.IN_CELL;return}break}case T.HEAD:{if(t>0){this.insertionMode=$.IN_HEAD;return}break}}this.insertionMode=$.IN_BODY;}_resetInsertionModeForSelect(t){if(t>0)for(let n=t-1;n>0;n--){let o=this.openElements.tagIDs[n];if(o===T.TEMPLATE)break;if(o===T.TABLE){this.insertionMode=$.IN_SELECT_IN_TABLE;return}}this.insertionMode=$.IN_SELECT;}_isElementCausesFosterParenting(t){return Gce.has(t)}_shouldFosterParentOnInsertion(){return this.fosterParentingEnabled&&this.openElements.currentTagId!==void 0&&this._isElementCausesFosterParenting(this.openElements.currentTagId)}_findFosterParentingLocation(){for(let t=this.openElements.stackTop;t>=0;t--){let n=this.openElements.items[t];switch(this.openElements.tagIDs[t]){case T.TEMPLATE:{if(this.treeAdapter.getNamespaceURI(n)===Te.HTML)return {parent:this.treeAdapter.getTemplateContent(n),beforeElement:null};break}case T.TABLE:{let o=this.treeAdapter.getParentNode(n);return o?{parent:o,beforeElement:n}:{parent:this.openElements.items[t-1],beforeElement:null}}}}return {parent:this.openElements.items[0],beforeElement:null}}_fosterParentElement(t){let n=this._findFosterParentingLocation();n.beforeElement?this.treeAdapter.insertBefore(n.parent,t,n.beforeElement):this.treeAdapter.appendChild(n.parent,t);}_isSpecialElement(t,n){let o=this.treeAdapter.getNamespaceURI(t);return Sce[o].has(n)}onCharacter(t){if(this.skipNextNewLine=false,this.tokenizer.inForeignNode){c5e(this,t);return}switch(this.insertionMode){case $.INITIAL:{SE(this,t);break}case $.BEFORE_HTML:{TE(this,t);break}case $.BEFORE_HEAD:{AE(this,t);break}case $.IN_HEAD:{EE(this,t);break}case $.IN_HEAD_NO_SCRIPT:{CE(this,t);break}case $.AFTER_HEAD:{vE(this,t);break}case $.IN_BODY:case $.IN_CAPTION:case $.IN_CELL:case $.IN_TEMPLATE:{$ce(this,t);break}case $.TEXT:case $.IN_SELECT:case $.IN_SELECT_IN_TABLE:{this._insertCharacters(t);break}case $.IN_TABLE:case $.IN_TABLE_BODY:case $.IN_ROW:{CH(this,t);break}case $.IN_TABLE_TEXT:{Yce(this,t);break}case $.IN_COLUMN_GROUP:{IP(this,t);break}case $.AFTER_BODY:{xP(this,t);break}case $.AFTER_AFTER_BODY:{wP(this,t);break}}}onNullCharacter(t){if(this.skipNextNewLine=false,this.tokenizer.inForeignNode){l5e(this,t);return}switch(this.insertionMode){case $.INITIAL:{SE(this,t);break}case $.BEFORE_HTML:{TE(this,t);break}case $.BEFORE_HEAD:{AE(this,t);break}case $.IN_HEAD:{EE(this,t);break}case $.IN_HEAD_NO_SCRIPT:{CE(this,t);break}case $.AFTER_HEAD:{vE(this,t);break}case $.TEXT:{this._insertCharacters(t);break}case $.IN_TABLE:case $.IN_TABLE_BODY:case $.IN_ROW:{CH(this,t);break}case $.IN_COLUMN_GROUP:{IP(this,t);break}case $.AFTER_BODY:{xP(this,t);break}case $.AFTER_AFTER_BODY:{wP(this,t);break}}}onComment(t){if(this.skipNextNewLine=false,this.currentNotInHTML){vH(this,t);return}switch(this.insertionMode){case $.INITIAL:case $.BEFORE_HTML:case $.BEFORE_HEAD:case $.IN_HEAD:case $.IN_HEAD_NO_SCRIPT:case $.AFTER_HEAD:case $.IN_BODY:case $.IN_TABLE:case $.IN_CAPTION:case $.IN_COLUMN_GROUP:case $.IN_TABLE_BODY:case $.IN_ROW:case $.IN_CELL:case $.IN_SELECT:case $.IN_SELECT_IN_TABLE:case $.IN_TEMPLATE:case $.IN_FRAMESET:case $.AFTER_FRAMESET:{vH(this,t);break}case $.IN_TABLE_TEXT:{bE(this,t);break}case $.AFTER_BODY:{H4e(this,t);break}case $.AFTER_AFTER_BODY:case $.AFTER_AFTER_FRAMESET:{G4e(this,t);break}}}onDoctype(t){switch(this.skipNextNewLine=false,this.insertionMode){case $.INITIAL:{j4e(this,t);break}case $.BEFORE_HEAD:case $.IN_HEAD:case $.IN_HEAD_NO_SCRIPT:case $.AFTER_HEAD:{this._err(t,ce.misplacedDoctype);break}case $.IN_TABLE_TEXT:{bE(this,t);break}}}onStartTag(t){this.skipNextNewLine=false,this.currentToken=t,this._processStartTag(t),t.selfClosing&&!t.ackSelfClosing&&this._err(t,ce.nonVoidHtmlElementStartTagWithTrailingSolidus);}_processStartTag(t){this.shouldProcessStartTagTokenInForeignContent(t)?d5e(this,t):this._startTagOutsideForeignContent(t);}_startTagOutsideForeignContent(t){switch(this.insertionMode){case $.INITIAL:{SE(this,t);break}case $.BEFORE_HTML:{$4e(this,t);break}case $.BEFORE_HEAD:{z4e(this,t);break}case $.IN_HEAD:{Fl(this,t);break}case $.IN_HEAD_NO_SCRIPT:{K4e(this,t);break}case $.AFTER_HEAD:{J4e(this,t);break}case $.IN_BODY:{wi(this,t);break}case $.IN_TABLE:{oS(this,t);break}case $.IN_TABLE_TEXT:{bE(this,t);break}case $.IN_CAPTION:{WQe(this,t);break}case $.IN_COLUMN_GROUP:{xH(this,t);break}case $.IN_TABLE_BODY:{OP(this,t);break}case $.IN_ROW:{MP(this,t);break}case $.IN_CELL:{YQe(this,t);break}case $.IN_SELECT:{Qce(this,t);break}case $.IN_SELECT_IN_TABLE:{XQe(this,t);break}case $.IN_TEMPLATE:{ZQe(this,t);break}case $.AFTER_BODY:{t5e(this,t);break}case $.IN_FRAMESET:{n5e(this,t);break}case $.AFTER_FRAMESET:{r5e(this,t);break}case $.AFTER_AFTER_BODY:{s5e(this,t);break}case $.AFTER_AFTER_FRAMESET:{a5e(this,t);break}}}onEndTag(t){this.skipNextNewLine=false,this.currentToken=t,this.currentNotInHTML?u5e(this,t):this._endTagOutsideForeignContent(t);}_endTagOutsideForeignContent(t){switch(this.insertionMode){case $.INITIAL:{SE(this,t);break}case $.BEFORE_HTML:{V4e(this,t);break}case $.BEFORE_HEAD:{W4e(this,t);break}case $.IN_HEAD:{q4e(this,t);break}case $.IN_HEAD_NO_SCRIPT:{Y4e(this,t);break}case $.AFTER_HEAD:{X4e(this,t);break}case $.IN_BODY:{PP(this,t);break}case $.TEXT:{DQe(this,t);break}case $.IN_TABLE:{wE(this,t);break}case $.IN_TABLE_TEXT:{bE(this,t);break}case $.IN_CAPTION:{qQe(this,t);break}case $.IN_COLUMN_GROUP:{KQe(this,t);break}case $.IN_TABLE_BODY:{RH(this,t);break}case $.IN_ROW:{Xce(this,t);break}case $.IN_CELL:{JQe(this,t);break}case $.IN_SELECT:{Zce(this,t);break}case $.IN_SELECT_IN_TABLE:{QQe(this,t);break}case $.IN_TEMPLATE:{e5e(this,t);break}case $.AFTER_BODY:{tde(this,t);break}case $.IN_FRAMESET:{o5e(this,t);break}case $.AFTER_FRAMESET:{i5e(this,t);break}case $.AFTER_AFTER_BODY:{wP(this,t);break}}}onEof(t){switch(this.insertionMode){case $.INITIAL:{SE(this,t);break}case $.BEFORE_HTML:{TE(this,t);break}case $.BEFORE_HEAD:{AE(this,t);break}case $.IN_HEAD:{EE(this,t);break}case $.IN_HEAD_NO_SCRIPT:{CE(this,t);break}case $.AFTER_HEAD:{vE(this,t);break}case $.IN_BODY:case $.IN_TABLE:case $.IN_CAPTION:case $.IN_COLUMN_GROUP:case $.IN_TABLE_BODY:case $.IN_ROW:case $.IN_CELL:case $.IN_SELECT:case $.IN_SELECT_IN_TABLE:{qce(this,t);break}case $.TEXT:{FQe(this,t);break}case $.IN_TABLE_TEXT:{bE(this,t);break}case $.IN_TEMPLATE:{ede(this,t);break}case $.AFTER_BODY:case $.IN_FRAMESET:case $.AFTER_FRAMESET:case $.AFTER_AFTER_BODY:case $.AFTER_AFTER_FRAMESET:{IH(this,t);break}}}onWhitespaceCharacter(t){if(this.skipNextNewLine&&(this.skipNextNewLine=false,t.chars.charCodeAt(0)===N.LINE_FEED)){if(t.chars.length===1)return;t.chars=t.chars.substr(1);}if(this.tokenizer.inForeignNode){this._insertCharacters(t);return}switch(this.insertionMode){case $.IN_HEAD:case $.IN_HEAD_NO_SCRIPT:case $.AFTER_HEAD:case $.TEXT:case $.IN_COLUMN_GROUP:case $.IN_SELECT:case $.IN_SELECT_IN_TABLE:case $.IN_FRAMESET:case $.AFTER_FRAMESET:{this._insertCharacters(t);break}case $.IN_BODY:case $.IN_CAPTION:case $.IN_CELL:case $.IN_TEMPLATE:case $.AFTER_BODY:case $.AFTER_AFTER_BODY:case $.AFTER_AFTER_FRAMESET:{jce(this,t);break}case $.IN_TABLE:case $.IN_TABLE_BODY:case $.IN_ROW:{CH(this,t);break}case $.IN_TABLE_TEXT:{Kce(this,t);break}}}};function L4e(e,t){let n=e.activeFormattingElements.getElementEntryInScopeWithTagName(t.tagName);return n?e.openElements.contains(n.element)?e.openElements.hasInScope(t.tagID)||(n=null):(e.activeFormattingElements.removeEntry(n),n=null):Wce(e,t),n}function k4e(e,t){let n=null,o=e.openElements.stackTop;for(;o>=0;o--){let r=e.openElements.items[o];if(r===t.element)break;e._isSpecialElement(r,e.openElements.tagIDs[o])&&(n=r);}return n||(e.openElements.shortenToLength(Math.max(o,0)),e.activeFormattingElements.removeEntry(t)),n}function D4e(e,t,n){let o=t,r=e.openElements.getCommonAncestor(t);for(let i=0,s=r;s!==n;i++,s=r){r=e.openElements.getCommonAncestor(s);let a=e.activeFormattingElements.getElementEntry(s),l=a&&i>=M4e;!a||l?(l&&e.activeFormattingElements.removeEntry(a),e.openElements.remove(s)):(s=F4e(e,a),o===t&&(e.activeFormattingElements.bookmark=a),e.treeAdapter.detachNode(o),e.treeAdapter.appendChild(s,o),o=s);}return o}function F4e(e,t){let n=e.treeAdapter.getNamespaceURI(t.element),o=e.treeAdapter.createElement(t.token.tagName,n,t.token.attrs);return e.openElements.replace(t.element,o),t.element=o,o}function B4e(e,t,n){let o=e.treeAdapter.getTagName(t),r=Lh(o);if(e._isElementCausesFosterParenting(r))e._fosterParentElement(n);else {let i=e.treeAdapter.getNamespaceURI(t);r===T.TEMPLATE&&i===Te.HTML&&(t=e.treeAdapter.getTemplateContent(t)),e.treeAdapter.appendChild(t,n);}}function U4e(e,t,n){let o=e.treeAdapter.getNamespaceURI(n.element),{token:r}=n,i=e.treeAdapter.createElement(r.tagName,o,r.attrs);e._adoptNodes(t,i),e.treeAdapter.appendChild(t,i),e.activeFormattingElements.insertElementAfterBookmark(i,r),e.activeFormattingElements.removeEntry(n),e.openElements.remove(n.element),e.openElements.insertAfter(t,i,r.tagID);}function wH(e,t){for(let n=0;n<O4e;n++){let o=L4e(e,t);if(!o)break;let r=k4e(e,o);if(!r)break;e.activeFormattingElements.bookmark=o;let i=D4e(e,r,o.element),s=e.openElements.getCommonAncestor(o.element);e.treeAdapter.detachNode(i),s&&B4e(e,s,i),U4e(e,r,o);}}function vH(e,t){e._appendCommentNode(t,e.openElements.currentTmplContentOrNode);}function H4e(e,t){e._appendCommentNode(t,e.openElements.items[0]);}function G4e(e,t){e._appendCommentNode(t,e.document);}function IH(e,t){if(e.stopped=true,t.location){let n=e.fragmentContext?0:2;for(let o=e.openElements.stackTop;o>=n;o--)e._setEndLocation(e.openElements.items[o],t);if(!e.fragmentContext&&e.openElements.stackTop>=0){let o=e.openElements.items[0],r=e.treeAdapter.getNodeSourceCodeLocation(o);if(r&&!r.endTag&&(e._setEndLocation(o,t),e.openElements.stackTop>=1)){let i=e.openElements.items[1],s=e.treeAdapter.getNodeSourceCodeLocation(i);s&&!s.endTag&&e._setEndLocation(i,t);}}}}function j4e(e,t){e._setDocumentType(t);let n=t.forceQuirks?Zi.QUIRKS:Mce(t);Oce(t)||e._err(t,ce.nonConformingDoctype),e.treeAdapter.setDocumentMode(e.document,n),e.insertionMode=$.BEFORE_HTML;}function SE(e,t){e._err(t,ce.missingDoctype,true),e.treeAdapter.setDocumentMode(e.document,Zi.QUIRKS),e.insertionMode=$.BEFORE_HTML,e._processToken(t);}function $4e(e,t){t.tagID===T.HTML?(e._insertElement(t,Te.HTML),e.insertionMode=$.BEFORE_HEAD):TE(e,t);}function V4e(e,t){let n=t.tagID;(n===T.HTML||n===T.HEAD||n===T.BODY||n===T.BR)&&TE(e,t);}function TE(e,t){e._insertFakeRootElement(),e.insertionMode=$.BEFORE_HEAD,e._processToken(t);}function z4e(e,t){switch(t.tagID){case T.HTML:{wi(e,t);break}case T.HEAD:{e._insertElement(t,Te.HTML),e.headElement=e.openElements.current,e.insertionMode=$.IN_HEAD;break}default:AE(e,t);}}function W4e(e,t){let n=t.tagID;n===T.HEAD||n===T.BODY||n===T.HTML||n===T.BR?AE(e,t):e._err(t,ce.endTagWithoutMatchingOpenElement);}function AE(e,t){e._insertFakeElement(oe.HEAD,T.HEAD),e.headElement=e.openElements.current,e.insertionMode=$.IN_HEAD,e._processToken(t);}function Fl(e,t){switch(t.tagID){case T.HTML:{wi(e,t);break}case T.BASE:case T.BASEFONT:case T.BGSOUND:case T.LINK:case T.META:{e._appendElement(t,Te.HTML),t.ackSelfClosing=true;break}case T.TITLE:{e._switchToTextParsing(t,Ri.RCDATA);break}case T.NOSCRIPT:{e.options.scriptingEnabled?e._switchToTextParsing(t,Ri.RAWTEXT):(e._insertElement(t,Te.HTML),e.insertionMode=$.IN_HEAD_NO_SCRIPT);break}case T.NOFRAMES:case T.STYLE:{e._switchToTextParsing(t,Ri.RAWTEXT);break}case T.SCRIPT:{e._switchToTextParsing(t,Ri.SCRIPT_DATA);break}case T.TEMPLATE:{e._insertTemplate(t),e.activeFormattingElements.insertMarker(),e.framesetOk=false,e.insertionMode=$.IN_TEMPLATE,e.tmplInsertionModeStack.unshift($.IN_TEMPLATE);break}case T.HEAD:{e._err(t,ce.misplacedStartTagForHeadElement);break}default:EE(e,t);}}function q4e(e,t){switch(t.tagID){case T.HEAD:{e.openElements.pop(),e.insertionMode=$.AFTER_HEAD;break}case T.BODY:case T.BR:case T.HTML:{EE(e,t);break}case T.TEMPLATE:{kh(e,t);break}default:e._err(t,ce.endTagWithoutMatchingOpenElement);}}function kh(e,t){e.openElements.tmplCount>0?(e.openElements.generateImpliedEndTagsThoroughly(),e.openElements.currentTagId!==T.TEMPLATE&&e._err(t,ce.closingOfElementWithOpenChildElements),e.openElements.popUntilTagNamePopped(T.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e.tmplInsertionModeStack.shift(),e._resetInsertionMode()):e._err(t,ce.endTagWithoutMatchingOpenElement);}function EE(e,t){e.openElements.pop(),e.insertionMode=$.AFTER_HEAD,e._processToken(t);}function K4e(e,t){switch(t.tagID){case T.HTML:{wi(e,t);break}case T.BASEFONT:case T.BGSOUND:case T.HEAD:case T.LINK:case T.META:case T.NOFRAMES:case T.STYLE:{Fl(e,t);break}case T.NOSCRIPT:{e._err(t,ce.nestedNoscriptInHead);break}default:CE(e,t);}}function Y4e(e,t){switch(t.tagID){case T.NOSCRIPT:{e.openElements.pop(),e.insertionMode=$.IN_HEAD;break}case T.BR:{CE(e,t);break}default:e._err(t,ce.endTagWithoutMatchingOpenElement);}}function CE(e,t){let n=t.type===Kt.EOF?ce.openElementsLeftAfterEof:ce.disallowedContentInNoscriptInHead;e._err(t,n),e.openElements.pop(),e.insertionMode=$.IN_HEAD,e._processToken(t);}function J4e(e,t){switch(t.tagID){case T.HTML:{wi(e,t);break}case T.BODY:{e._insertElement(t,Te.HTML),e.framesetOk=false,e.insertionMode=$.IN_BODY;break}case T.FRAMESET:{e._insertElement(t,Te.HTML),e.insertionMode=$.IN_FRAMESET;break}case T.BASE:case T.BASEFONT:case T.BGSOUND:case T.LINK:case T.META:case T.NOFRAMES:case T.SCRIPT:case T.STYLE:case T.TEMPLATE:case T.TITLE:{e._err(t,ce.abandonedHeadElementChild),e.openElements.push(e.headElement,T.HEAD),Fl(e,t),e.openElements.remove(e.headElement);break}case T.HEAD:{e._err(t,ce.misplacedStartTagForHeadElement);break}default:vE(e,t);}}function X4e(e,t){switch(t.tagID){case T.BODY:case T.HTML:case T.BR:{vE(e,t);break}case T.TEMPLATE:{kh(e,t);break}default:e._err(t,ce.endTagWithoutMatchingOpenElement);}}function vE(e,t){e._insertFakeElement(oe.BODY,T.BODY),e.insertionMode=$.IN_BODY,_P(e,t);}function _P(e,t){switch(t.type){case Kt.CHARACTER:{$ce(e,t);break}case Kt.WHITESPACE_CHARACTER:{jce(e,t);break}case Kt.COMMENT:{vH(e,t);break}case Kt.START_TAG:{wi(e,t);break}case Kt.END_TAG:{PP(e,t);break}case Kt.EOF:{qce(e,t);break}}}function jce(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t);}function $ce(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t),e.framesetOk=false;}function Q4e(e,t){e.openElements.tmplCount===0&&e.treeAdapter.adoptAttributes(e.openElements.items[0],t.attrs);}function Z4e(e,t){let n=e.openElements.tryPeekProperlyNestedBodyElement();n&&e.openElements.tmplCount===0&&(e.framesetOk=false,e.treeAdapter.adoptAttributes(n,t.attrs));}function eQe(e,t){let n=e.openElements.tryPeekProperlyNestedBodyElement();e.framesetOk&&n&&(e.treeAdapter.detachNode(n),e.openElements.popAllUpToHtmlElement(),e._insertElement(t,Te.HTML),e.insertionMode=$.IN_FRAMESET);}function tQe(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,Te.HTML);}function nQe(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e.openElements.currentTagId!==void 0&&gE.has(e.openElements.currentTagId)&&e.openElements.pop(),e._insertElement(t,Te.HTML);}function oQe(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,Te.HTML),e.skipNextNewLine=true,e.framesetOk=false;}function rQe(e,t){let n=e.openElements.tmplCount>0;(!e.formElement||n)&&(e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,Te.HTML),n||(e.formElement=e.openElements.current));}function iQe(e,t){e.framesetOk=false;let n=t.tagID;for(let o=e.openElements.stackTop;o>=0;o--){let r=e.openElements.tagIDs[o];if(n===T.LI&&r===T.LI||(n===T.DD||n===T.DT)&&(r===T.DD||r===T.DT)){e.openElements.generateImpliedEndTagsWithExclusion(r),e.openElements.popUntilTagNamePopped(r);break}if(r!==T.ADDRESS&&r!==T.DIV&&r!==T.P&&e._isSpecialElement(e.openElements.items[o],r))break}e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,Te.HTML);}function sQe(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,Te.HTML),e.tokenizer.state=Ri.PLAINTEXT;}function aQe(e,t){e.openElements.hasInScope(T.BUTTON)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(T.BUTTON)),e._reconstructActiveFormattingElements(),e._insertElement(t,Te.HTML),e.framesetOk=false;}function lQe(e,t){let n=e.activeFormattingElements.getElementEntryInScopeWithTagName(oe.A);n&&(wH(e,t),e.openElements.remove(n.element),e.activeFormattingElements.removeEntry(n)),e._reconstructActiveFormattingElements(),e._insertElement(t,Te.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t);}function cQe(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Te.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t);}function dQe(e,t){e._reconstructActiveFormattingElements(),e.openElements.hasInScope(T.NOBR)&&(wH(e,t),e._reconstructActiveFormattingElements()),e._insertElement(t,Te.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t);}function uQe(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Te.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=false;}function pQe(e,t){e.treeAdapter.getDocumentMode(e.document)!==Zi.QUIRKS&&e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,Te.HTML),e.framesetOk=false,e.insertionMode=$.IN_TABLE;}function Vce(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,Te.HTML),e.framesetOk=false,t.ackSelfClosing=true;}function zce(e){let t=bP(e,Tu.TYPE);return t!=null&&t.toLowerCase()===P4e}function mQe(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,Te.HTML),zce(t)||(e.framesetOk=false),t.ackSelfClosing=true;}function hQe(e,t){e._appendElement(t,Te.HTML),t.ackSelfClosing=true;}function gQe(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._appendElement(t,Te.HTML),e.framesetOk=false,t.ackSelfClosing=true;}function fQe(e,t){t.tagName=oe.IMG,t.tagID=T.IMG,Vce(e,t);}function yQe(e,t){e._insertElement(t,Te.HTML),e.skipNextNewLine=true,e.tokenizer.state=Ri.RCDATA,e.originalInsertionMode=e.insertionMode,e.framesetOk=false,e.insertionMode=$.TEXT;}function SQe(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._reconstructActiveFormattingElements(),e.framesetOk=false,e._switchToTextParsing(t,Ri.RAWTEXT);}function bQe(e,t){e.framesetOk=false,e._switchToTextParsing(t,Ri.RAWTEXT);}function Uce(e,t){e._switchToTextParsing(t,Ri.RAWTEXT);}function TQe(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Te.HTML),e.framesetOk=false,e.insertionMode=e.insertionMode===$.IN_TABLE||e.insertionMode===$.IN_CAPTION||e.insertionMode===$.IN_TABLE_BODY||e.insertionMode===$.IN_ROW||e.insertionMode===$.IN_CELL?$.IN_SELECT_IN_TABLE:$.IN_SELECT;}function AQe(e,t){e.openElements.currentTagId===T.OPTION&&e.openElements.pop(),e._reconstructActiveFormattingElements(),e._insertElement(t,Te.HTML);}function EQe(e,t){e.openElements.hasInScope(T.RUBY)&&e.openElements.generateImpliedEndTags(),e._insertElement(t,Te.HTML);}function CQe(e,t){e.openElements.hasInScope(T.RUBY)&&e.openElements.generateImpliedEndTagsWithExclusion(T.RTC),e._insertElement(t,Te.HTML);}function vQe(e,t){e._reconstructActiveFormattingElements(),AH(t),RP(t),t.selfClosing?e._appendElement(t,Te.MATHML):e._insertElement(t,Te.MATHML),t.ackSelfClosing=true;}function RQe(e,t){e._reconstructActiveFormattingElements(),EH(t),RP(t),t.selfClosing?e._appendElement(t,Te.SVG):e._insertElement(t,Te.SVG),t.ackSelfClosing=true;}function Hce(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Te.HTML);}function wi(e,t){switch(t.tagID){case T.I:case T.S:case T.B:case T.U:case T.EM:case T.TT:case T.BIG:case T.CODE:case T.FONT:case T.SMALL:case T.STRIKE:case T.STRONG:{cQe(e,t);break}case T.A:{lQe(e,t);break}case T.H1:case T.H2:case T.H3:case T.H4:case T.H5:case T.H6:{nQe(e,t);break}case T.P:case T.DL:case T.OL:case T.UL:case T.DIV:case T.DIR:case T.NAV:case T.MAIN:case T.MENU:case T.ASIDE:case T.CENTER:case T.FIGURE:case T.FOOTER:case T.HEADER:case T.HGROUP:case T.DIALOG:case T.DETAILS:case T.ADDRESS:case T.ARTICLE:case T.SEARCH:case T.SECTION:case T.SUMMARY:case T.FIELDSET:case T.BLOCKQUOTE:case T.FIGCAPTION:{tQe(e,t);break}case T.LI:case T.DD:case T.DT:{iQe(e,t);break}case T.BR:case T.IMG:case T.WBR:case T.AREA:case T.EMBED:case T.KEYGEN:{Vce(e,t);break}case T.HR:{gQe(e,t);break}case T.RB:case T.RTC:{EQe(e,t);break}case T.RT:case T.RP:{CQe(e,t);break}case T.PRE:case T.LISTING:{oQe(e,t);break}case T.XMP:{SQe(e,t);break}case T.SVG:{RQe(e,t);break}case T.HTML:{Q4e(e,t);break}case T.BASE:case T.LINK:case T.META:case T.STYLE:case T.TITLE:case T.SCRIPT:case T.BGSOUND:case T.BASEFONT:case T.TEMPLATE:{Fl(e,t);break}case T.BODY:{Z4e(e,t);break}case T.FORM:{rQe(e,t);break}case T.NOBR:{dQe(e,t);break}case T.MATH:{vQe(e,t);break}case T.TABLE:{pQe(e,t);break}case T.INPUT:{mQe(e,t);break}case T.PARAM:case T.TRACK:case T.SOURCE:{hQe(e,t);break}case T.IMAGE:{fQe(e,t);break}case T.BUTTON:{aQe(e,t);break}case T.APPLET:case T.OBJECT:case T.MARQUEE:{uQe(e,t);break}case T.IFRAME:{bQe(e,t);break}case T.SELECT:{TQe(e,t);break}case T.OPTION:case T.OPTGROUP:{AQe(e,t);break}case T.NOEMBED:case T.NOFRAMES:{Uce(e,t);break}case T.FRAMESET:{eQe(e,t);break}case T.TEXTAREA:{yQe(e,t);break}case T.NOSCRIPT:{e.options.scriptingEnabled?Uce(e,t):Hce(e,t);break}case T.PLAINTEXT:{sQe(e,t);break}case T.COL:case T.TH:case T.TD:case T.TR:case T.HEAD:case T.FRAME:case T.TBODY:case T.TFOOT:case T.THEAD:case T.CAPTION:case T.COLGROUP:break;default:Hce(e,t);}}function wQe(e,t){if(e.openElements.hasInScope(T.BODY)&&(e.insertionMode=$.AFTER_BODY,e.options.sourceCodeLocationInfo)){let n=e.openElements.tryPeekProperlyNestedBodyElement();n&&e._setEndLocation(n,t);}}function IQe(e,t){e.openElements.hasInScope(T.BODY)&&(e.insertionMode=$.AFTER_BODY,tde(e,t));}function xQe(e,t){let n=t.tagID;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n));}function _Qe(e){let t=e.openElements.tmplCount>0,{formElement:n}=e;t||(e.formElement=null),(n||t)&&e.openElements.hasInScope(T.FORM)&&(e.openElements.generateImpliedEndTags(),t?e.openElements.popUntilTagNamePopped(T.FORM):n&&e.openElements.remove(n));}function PQe(e){e.openElements.hasInButtonScope(T.P)||e._insertFakeElement(oe.P,T.P),e._closePElement();}function OQe(e){e.openElements.hasInListItemScope(T.LI)&&(e.openElements.generateImpliedEndTagsWithExclusion(T.LI),e.openElements.popUntilTagNamePopped(T.LI));}function MQe(e,t){let n=t.tagID;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.popUntilTagNamePopped(n));}function NQe(e){e.openElements.hasNumberedHeaderInScope()&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilNumberedHeaderPopped());}function LQe(e,t){let n=t.tagID;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n),e.activeFormattingElements.clearToLastMarker());}function kQe(e){e._reconstructActiveFormattingElements(),e._insertFakeElement(oe.BR,T.BR),e.openElements.pop(),e.framesetOk=false;}function Wce(e,t){let n=t.tagName,o=t.tagID;for(let r=e.openElements.stackTop;r>0;r--){let i=e.openElements.items[r],s=e.openElements.tagIDs[r];if(o===s&&(o!==T.UNKNOWN||e.treeAdapter.getTagName(i)===n)){e.openElements.generateImpliedEndTagsWithExclusion(o),e.openElements.stackTop>=r&&e.openElements.shortenToLength(r);break}if(e._isSpecialElement(i,s))break}}function PP(e,t){switch(t.tagID){case T.A:case T.B:case T.I:case T.S:case T.U:case T.EM:case T.TT:case T.BIG:case T.CODE:case T.FONT:case T.NOBR:case T.SMALL:case T.STRIKE:case T.STRONG:{wH(e,t);break}case T.P:{PQe(e);break}case T.DL:case T.UL:case T.OL:case T.DIR:case T.DIV:case T.NAV:case T.PRE:case T.MAIN:case T.MENU:case T.ASIDE:case T.BUTTON:case T.CENTER:case T.FIGURE:case T.FOOTER:case T.HEADER:case T.HGROUP:case T.DIALOG:case T.ADDRESS:case T.ARTICLE:case T.DETAILS:case T.SEARCH:case T.SECTION:case T.SUMMARY:case T.LISTING:case T.FIELDSET:case T.BLOCKQUOTE:case T.FIGCAPTION:{xQe(e,t);break}case T.LI:{OQe(e);break}case T.DD:case T.DT:{MQe(e,t);break}case T.H1:case T.H2:case T.H3:case T.H4:case T.H5:case T.H6:{NQe(e);break}case T.BR:{kQe(e);break}case T.BODY:{wQe(e,t);break}case T.HTML:{IQe(e,t);break}case T.FORM:{_Qe(e);break}case T.APPLET:case T.OBJECT:case T.MARQUEE:{LQe(e,t);break}case T.TEMPLATE:{kh(e,t);break}default:Wce(e,t);}}function qce(e,t){e.tmplInsertionModeStack.length>0?ede(e,t):IH(e,t);}function DQe(e,t){var n;t.tagID===T.SCRIPT&&((n=e.scriptHandler)===null||n===void 0||n.call(e,e.openElements.current)),e.openElements.pop(),e.insertionMode=e.originalInsertionMode;}function FQe(e,t){e._err(t,ce.eofInElementThatCanContainOnlyText),e.openElements.pop(),e.insertionMode=e.originalInsertionMode,e.onEof(t);}function CH(e,t){if(e.openElements.currentTagId!==void 0&&Gce.has(e.openElements.currentTagId))switch(e.pendingCharacterTokens.length=0,e.hasNonWhitespacePendingCharacterToken=false,e.originalInsertionMode=e.insertionMode,e.insertionMode=$.IN_TABLE_TEXT,t.type){case Kt.CHARACTER:{Yce(e,t);break}case Kt.WHITESPACE_CHARACTER:{Kce(e,t);break}}else IE(e,t);}function BQe(e,t){e.openElements.clearBackToTableContext(),e.activeFormattingElements.insertMarker(),e._insertElement(t,Te.HTML),e.insertionMode=$.IN_CAPTION;}function UQe(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,Te.HTML),e.insertionMode=$.IN_COLUMN_GROUP;}function HQe(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(oe.COLGROUP,T.COLGROUP),e.insertionMode=$.IN_COLUMN_GROUP,xH(e,t);}function GQe(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,Te.HTML),e.insertionMode=$.IN_TABLE_BODY;}function jQe(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(oe.TBODY,T.TBODY),e.insertionMode=$.IN_TABLE_BODY,OP(e,t);}function $Qe(e,t){e.openElements.hasInTableScope(T.TABLE)&&(e.openElements.popUntilTagNamePopped(T.TABLE),e._resetInsertionMode(),e._processStartTag(t));}function VQe(e,t){zce(t)?e._appendElement(t,Te.HTML):IE(e,t),t.ackSelfClosing=true;}function zQe(e,t){!e.formElement&&e.openElements.tmplCount===0&&(e._insertElement(t,Te.HTML),e.formElement=e.openElements.current,e.openElements.pop());}function oS(e,t){switch(t.tagID){case T.TD:case T.TH:case T.TR:{jQe(e,t);break}case T.STYLE:case T.SCRIPT:case T.TEMPLATE:{Fl(e,t);break}case T.COL:{HQe(e,t);break}case T.FORM:{zQe(e,t);break}case T.TABLE:{$Qe(e,t);break}case T.TBODY:case T.TFOOT:case T.THEAD:{GQe(e,t);break}case T.INPUT:{VQe(e,t);break}case T.CAPTION:{BQe(e,t);break}case T.COLGROUP:{UQe(e,t);break}default:IE(e,t);}}function wE(e,t){switch(t.tagID){case T.TABLE:{e.openElements.hasInTableScope(T.TABLE)&&(e.openElements.popUntilTagNamePopped(T.TABLE),e._resetInsertionMode());break}case T.TEMPLATE:{kh(e,t);break}case T.BODY:case T.CAPTION:case T.COL:case T.COLGROUP:case T.HTML:case T.TBODY:case T.TD:case T.TFOOT:case T.TH:case T.THEAD:case T.TR:break;default:IE(e,t);}}function IE(e,t){let n=e.fosterParentingEnabled;e.fosterParentingEnabled=true,_P(e,t),e.fosterParentingEnabled=n;}function Kce(e,t){e.pendingCharacterTokens.push(t);}function Yce(e,t){e.pendingCharacterTokens.push(t),e.hasNonWhitespacePendingCharacterToken=true;}function bE(e,t){let n=0;if(e.hasNonWhitespacePendingCharacterToken)for(;n<e.pendingCharacterTokens.length;n++)IE(e,e.pendingCharacterTokens[n]);else for(;n<e.pendingCharacterTokens.length;n++)e._insertCharacters(e.pendingCharacterTokens[n]);e.insertionMode=e.originalInsertionMode,e._processToken(t);}var Jce=new Set([T.CAPTION,T.COL,T.COLGROUP,T.TBODY,T.TD,T.TFOOT,T.TH,T.THEAD,T.TR]);function WQe(e,t){let n=t.tagID;Jce.has(n)?e.openElements.hasInTableScope(T.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(T.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=$.IN_TABLE,oS(e,t)):wi(e,t);}function qQe(e,t){let n=t.tagID;switch(n){case T.CAPTION:case T.TABLE:{e.openElements.hasInTableScope(T.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(T.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=$.IN_TABLE,n===T.TABLE&&wE(e,t));break}case T.BODY:case T.COL:case T.COLGROUP:case T.HTML:case T.TBODY:case T.TD:case T.TFOOT:case T.TH:case T.THEAD:case T.TR:break;default:PP(e,t);}}function xH(e,t){switch(t.tagID){case T.HTML:{wi(e,t);break}case T.COL:{e._appendElement(t,Te.HTML),t.ackSelfClosing=true;break}case T.TEMPLATE:{Fl(e,t);break}default:IP(e,t);}}function KQe(e,t){switch(t.tagID){case T.COLGROUP:{e.openElements.currentTagId===T.COLGROUP&&(e.openElements.pop(),e.insertionMode=$.IN_TABLE);break}case T.TEMPLATE:{kh(e,t);break}case T.COL:break;default:IP(e,t);}}function IP(e,t){e.openElements.currentTagId===T.COLGROUP&&(e.openElements.pop(),e.insertionMode=$.IN_TABLE,e._processToken(t));}function OP(e,t){switch(t.tagID){case T.TR:{e.openElements.clearBackToTableBodyContext(),e._insertElement(t,Te.HTML),e.insertionMode=$.IN_ROW;break}case T.TH:case T.TD:{e.openElements.clearBackToTableBodyContext(),e._insertFakeElement(oe.TR,T.TR),e.insertionMode=$.IN_ROW,MP(e,t);break}case T.CAPTION:case T.COL:case T.COLGROUP:case T.TBODY:case T.TFOOT:case T.THEAD:{e.openElements.hasTableBodyContextInTableScope()&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=$.IN_TABLE,oS(e,t));break}default:oS(e,t);}}function RH(e,t){let n=t.tagID;switch(t.tagID){case T.TBODY:case T.TFOOT:case T.THEAD:{e.openElements.hasInTableScope(n)&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=$.IN_TABLE);break}case T.TABLE:{e.openElements.hasTableBodyContextInTableScope()&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=$.IN_TABLE,wE(e,t));break}case T.BODY:case T.CAPTION:case T.COL:case T.COLGROUP:case T.HTML:case T.TD:case T.TH:case T.TR:break;default:wE(e,t);}}function MP(e,t){switch(t.tagID){case T.TH:case T.TD:{e.openElements.clearBackToTableRowContext(),e._insertElement(t,Te.HTML),e.insertionMode=$.IN_CELL,e.activeFormattingElements.insertMarker();break}case T.CAPTION:case T.COL:case T.COLGROUP:case T.TBODY:case T.TFOOT:case T.THEAD:case T.TR:{e.openElements.hasInTableScope(T.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=$.IN_TABLE_BODY,OP(e,t));break}default:oS(e,t);}}function Xce(e,t){switch(t.tagID){case T.TR:{e.openElements.hasInTableScope(T.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=$.IN_TABLE_BODY);break}case T.TABLE:{e.openElements.hasInTableScope(T.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=$.IN_TABLE_BODY,RH(e,t));break}case T.TBODY:case T.TFOOT:case T.THEAD:{(e.openElements.hasInTableScope(t.tagID)||e.openElements.hasInTableScope(T.TR))&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=$.IN_TABLE_BODY,RH(e,t));break}case T.BODY:case T.CAPTION:case T.COL:case T.COLGROUP:case T.HTML:case T.TD:case T.TH:break;default:wE(e,t);}}function YQe(e,t){let n=t.tagID;Jce.has(n)?(e.openElements.hasInTableScope(T.TD)||e.openElements.hasInTableScope(T.TH))&&(e._closeTableCell(),MP(e,t)):wi(e,t);}function JQe(e,t){let n=t.tagID;switch(n){case T.TD:case T.TH:{e.openElements.hasInTableScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=$.IN_ROW);break}case T.TABLE:case T.TBODY:case T.TFOOT:case T.THEAD:case T.TR:{e.openElements.hasInTableScope(n)&&(e._closeTableCell(),Xce(e,t));break}case T.BODY:case T.CAPTION:case T.COL:case T.COLGROUP:case T.HTML:break;default:PP(e,t);}}function Qce(e,t){switch(t.tagID){case T.HTML:{wi(e,t);break}case T.OPTION:{e.openElements.currentTagId===T.OPTION&&e.openElements.pop(),e._insertElement(t,Te.HTML);break}case T.OPTGROUP:{e.openElements.currentTagId===T.OPTION&&e.openElements.pop(),e.openElements.currentTagId===T.OPTGROUP&&e.openElements.pop(),e._insertElement(t,Te.HTML);break}case T.HR:{e.openElements.currentTagId===T.OPTION&&e.openElements.pop(),e.openElements.currentTagId===T.OPTGROUP&&e.openElements.pop(),e._appendElement(t,Te.HTML),t.ackSelfClosing=true;break}case T.INPUT:case T.KEYGEN:case T.TEXTAREA:case T.SELECT:{e.openElements.hasInSelectScope(T.SELECT)&&(e.openElements.popUntilTagNamePopped(T.SELECT),e._resetInsertionMode(),t.tagID!==T.SELECT&&e._processStartTag(t));break}case T.SCRIPT:case T.TEMPLATE:{Fl(e,t);break}}}function Zce(e,t){switch(t.tagID){case T.OPTGROUP:{e.openElements.stackTop>0&&e.openElements.currentTagId===T.OPTION&&e.openElements.tagIDs[e.openElements.stackTop-1]===T.OPTGROUP&&e.openElements.pop(),e.openElements.currentTagId===T.OPTGROUP&&e.openElements.pop();break}case T.OPTION:{e.openElements.currentTagId===T.OPTION&&e.openElements.pop();break}case T.SELECT:{e.openElements.hasInSelectScope(T.SELECT)&&(e.openElements.popUntilTagNamePopped(T.SELECT),e._resetInsertionMode());break}case T.TEMPLATE:{kh(e,t);break}}}function XQe(e,t){let n=t.tagID;n===T.CAPTION||n===T.TABLE||n===T.TBODY||n===T.TFOOT||n===T.THEAD||n===T.TR||n===T.TD||n===T.TH?(e.openElements.popUntilTagNamePopped(T.SELECT),e._resetInsertionMode(),e._processStartTag(t)):Qce(e,t);}function QQe(e,t){let n=t.tagID;n===T.CAPTION||n===T.TABLE||n===T.TBODY||n===T.TFOOT||n===T.THEAD||n===T.TR||n===T.TD||n===T.TH?e.openElements.hasInTableScope(n)&&(e.openElements.popUntilTagNamePopped(T.SELECT),e._resetInsertionMode(),e.onEndTag(t)):Zce(e,t);}function ZQe(e,t){switch(t.tagID){case T.BASE:case T.BASEFONT:case T.BGSOUND:case T.LINK:case T.META:case T.NOFRAMES:case T.SCRIPT:case T.STYLE:case T.TEMPLATE:case T.TITLE:{Fl(e,t);break}case T.CAPTION:case T.COLGROUP:case T.TBODY:case T.TFOOT:case T.THEAD:{e.tmplInsertionModeStack[0]=$.IN_TABLE,e.insertionMode=$.IN_TABLE,oS(e,t);break}case T.COL:{e.tmplInsertionModeStack[0]=$.IN_COLUMN_GROUP,e.insertionMode=$.IN_COLUMN_GROUP,xH(e,t);break}case T.TR:{e.tmplInsertionModeStack[0]=$.IN_TABLE_BODY,e.insertionMode=$.IN_TABLE_BODY,OP(e,t);break}case T.TD:case T.TH:{e.tmplInsertionModeStack[0]=$.IN_ROW,e.insertionMode=$.IN_ROW,MP(e,t);break}default:e.tmplInsertionModeStack[0]=$.IN_BODY,e.insertionMode=$.IN_BODY,wi(e,t);}}function e5e(e,t){t.tagID===T.TEMPLATE&&kh(e,t);}function ede(e,t){e.openElements.tmplCount>0?(e.openElements.popUntilTagNamePopped(T.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e.tmplInsertionModeStack.shift(),e._resetInsertionMode(),e.onEof(t)):IH(e,t);}function t5e(e,t){t.tagID===T.HTML?wi(e,t):xP(e,t);}function tde(e,t){var n;if(t.tagID===T.HTML){if(e.fragmentContext||(e.insertionMode=$.AFTER_AFTER_BODY),e.options.sourceCodeLocationInfo&&e.openElements.tagIDs[0]===T.HTML){e._setEndLocation(e.openElements.items[0],t);let o=e.openElements.items[1];o&&!(!((n=e.treeAdapter.getNodeSourceCodeLocation(o))===null||n===void 0)&&n.endTag)&&e._setEndLocation(o,t);}}else xP(e,t);}function xP(e,t){e.insertionMode=$.IN_BODY,_P(e,t);}function n5e(e,t){switch(t.tagID){case T.HTML:{wi(e,t);break}case T.FRAMESET:{e._insertElement(t,Te.HTML);break}case T.FRAME:{e._appendElement(t,Te.HTML),t.ackSelfClosing=true;break}case T.NOFRAMES:{Fl(e,t);break}}}function o5e(e,t){t.tagID===T.FRAMESET&&!e.openElements.isRootHtmlElementCurrent()&&(e.openElements.pop(),!e.fragmentContext&&e.openElements.currentTagId!==T.FRAMESET&&(e.insertionMode=$.AFTER_FRAMESET));}function r5e(e,t){switch(t.tagID){case T.HTML:{wi(e,t);break}case T.NOFRAMES:{Fl(e,t);break}}}function i5e(e,t){t.tagID===T.HTML&&(e.insertionMode=$.AFTER_AFTER_FRAMESET);}function s5e(e,t){t.tagID===T.HTML?wi(e,t):wP(e,t);}function wP(e,t){e.insertionMode=$.IN_BODY,_P(e,t);}function a5e(e,t){switch(t.tagID){case T.HTML:{wi(e,t);break}case T.NOFRAMES:{Fl(e,t);break}}}function l5e(e,t){t.chars=Hn,e._insertCharacters(t);}function c5e(e,t){e._insertCharacters(t),e.framesetOk=false;}function nde(e){for(;e.treeAdapter.getNamespaceURI(e.openElements.current)!==Te.HTML&&e.openElements.currentTagId!==void 0&&!e._isIntegrationPoint(e.openElements.currentTagId,e.openElements.current);)e.openElements.pop();}function d5e(e,t){if(Lce(t))nde(e),e._startTagOutsideForeignContent(t);else {let n=e._getAdjustedCurrentElement(),o=e.treeAdapter.getNamespaceURI(n);o===Te.MATHML?AH(t):o===Te.SVG&&(kce(t),EH(t)),RP(t),t.selfClosing?e._appendElement(t,o):e._insertElement(t,o),t.ackSelfClosing=true;}}function u5e(e,t){if(t.tagID===T.P||t.tagID===T.BR){nde(e),e._endTagOutsideForeignContent(t);return}for(let n=e.openElements.stackTop;n>0;n--){let o=e.openElements.items[n];if(e.treeAdapter.getNamespaceURI(o)===Te.HTML){e._endTagOutsideForeignContent(t);break}let r=e.treeAdapter.getTagName(o);if(r.toLowerCase()===t.tagName){t.tagName=r,e.openElements.shortenToLength(n);break}}}new Set([oe.AREA,oe.BASE,oe.BASEFONT,oe.BGSOUND,oe.BR,oe.COL,oe.EMBED,oe.FRAME,oe.HR,oe.IMG,oe.INPUT,oe.KEYGEN,oe.LINK,oe.META,oe.PARAM,oe.SOURCE,oe.TRACK,oe.WBR]);function ode(e,t,n){typeof e=="string"&&(n=t,t=e,e=null);let o=RE.getFragmentParser(e,n);return o.tokenizer.write(t,true),o.getFragment()}var p5e=5e3,rde=1024;function _H(e){return typeof e.tagName=="string"&&Array.isArray(e.attrs)}function m5e(e){return e.nodeName==="#text"}function PH(e,t){if(t.nodesLeft<=0)return;t.nodesLeft-=1;let n=e.tagName.toLowerCase(),o,r;for(let{name:l,value:c}of e.attrs){let d=l.toLowerCase();if(d==="role"){r=c;continue}o===void 0&&(o={}),o[d]=c;}let i,s=[];for(let l of e.childNodes){if(t.nodesLeft<=0)break;if(m5e(l)){let c=l.value;if(c&&c.trim().length>0){let d=c.length>rde?c.slice(0,rde):c;i=i===void 0?d:`${i} ${d}`;}}else if(_H(l)){let c=PH(l,t);c!==void 0&&s.push(c);}}let a={tag:n};return r!==void 0&&(a.role=r),o!==void 0&&(a.attributes=o),i!==void 0&&(a.text=i),s.length>0&&(a.children=s),a}function OH(e){let t=ode(e),n={nodesLeft:p5e};for(let i of t.childNodes)if(_H(i)&&i.tagName.toLowerCase()==="body"){let s=PH(i,n);if(s!==void 0)return s}let o=[];for(let i of t.childNodes){if(n.nodesLeft<=0)break;if(_H(i)){let s=PH(i,n);s!==void 0&&o.push(s);}}let r={tag:"body"};return o.length>0&&(r.children=o),r}var h5e=new Set(["PRESET_ACTION","AI_ACTION_DYNAMIC"]),Dh=class{constructor(t,n,o,r,i,s){this.orgId=t;this.testId=n;this.testName=o;this.diskStorage=r;this.parentFlushResults=i;this.appGraphSink=s;}children=[];finished=false;stepFrequenciesByType={};currentResults=[];async getScreenshot(t,n){return this.diskStorage.readFile(`${zr}/${n}.jpeg`)}async getHtmlSnapshot(t,n){return this.diskStorage.readFile(`${zr}/${n}.html`)?.toString()}recordStepStat(t){t.type!=="PRESET_ACTION"?this.stepFrequenciesByType[t.type]=(this.stepFrequenciesByType[t.type]||0)+1:this.stepFrequenciesByType[t.command.type]=(this.stepFrequenciesByType[t.command.type]||0)+1;}sendFinalizedStepStats(){for(let[t,n]of Object.entries(this.stepFrequenciesByType))Tt.increment("test_step_execution",n,[`type:${t}`,"platform:browser","executor:cli",`orgId:${this.orgId}`]);}flushResults(t){this.currentResults=t,this.parentFlushResults(t);}async startStep(t,n){let{step:o,parentStepIdChain:r}=t;this.recordStepStat(o);let i={step:o,status:"RUNNING",startedAt:new Date},s=[...n];this.currentResults=s;let a=new MH(this.orgId,this.testId,this.testName,i,this.diskStorage,l=>{this.flushResults([...s,l]);},r??[],this.appGraphSink);return this.children.push(a),a}async finish(t){this.finished||(this.finished=true,await Promise.all(this.children.map(n=>n.finishInternal({status:RV(t.status),finishedAt:t.finishedAt}))),this.sendFinalizedStepStats());}};function g5e(e){switch(e){case "SUCCESS":return "PASSED";case "FAILED":return "FAILED";case "CANCELLED":return "CANCELLED";case "RUNNING":return "RUNNING";case "IDLE":return "PENDING";default:return tt(e)}}function NP(e){return e.some(t=>t.status==="FAILED")?"FAILED":e.some(t=>t.status==="CANCELLED")?"CANCELLED":"RUNNING"}var MH=class{constructor(t,n,o,r,i,s,a,l){this.orgId=t;this.testId=n;this.testName=o;this.metadata=r;this.diskStorage=i;this.parentFlushResults=s;this.parentStepIdChain=a;this.appGraphSink=l;this.interactionTracer=new Ep(void 0,c=>this.storeTraceAsset(c)),Ap.initializeRootTracerContext(this.interactionTracer);}children=[];finished=false;interactionTracer;attachBeforeScreenshot(t){let{snapshotId:n,screenshot:o}=t;this.metadata.beforeSnapshotId=n,this.diskStorage.storeFile({name:`${zr}/${n}.jpeg`,contents:o});}attachAfterScreenshot(t){let{snapshotId:n,screenshot:o}=t;this.metadata.afterSnapshotId=n,this.diskStorage.storeFile({name:`${zr}/${n}.jpeg`,contents:o});}attachBeforeHtmlSnapshot(t){let{snapshotId:n,html:o}=t;this.metadata.beforeSnapshotId=n,this.diskStorage.storeFile({name:`${zr}/${n}.html`,contents:o});}attachAfterHtmlSnapshot(t){let{snapshotId:n,html:o,url:r,logger:i}=t;this.metadata.afterSnapshotId=n,this.diskStorage.storeFile({name:`${zr}/${n}.html`,contents:o}),this.appGraphSink&&h5e.has(this.metadata.step.type)&&this.appGraphSink({html:o,url:r,stepId:this.metadata.step.id,parentStepIdChain:[...this.parentStepIdChain],logger:i});}recordTargetAutoHeal(t){let{healType:n}=t,o=n==="AI"?"ai-target-heal":"cache-heal";Tt.increment("test_event",1,[`name:${o}`,`orgId:${this.orgId}`]),this.metadata.healMetadata={healType:n,healedAt:new Date};}storeTraceAsset(t){this.diskStorage.storeFile({name:`${zr}/${t.snapshotId}.${t.extension??"jpeg"}`,contents:t.data});}async finishInternal(t){this.finished||(this.finished=true,this.interactionTracer.finish(),await Promise.all(this.children.map(n=>n.finish({status:g5e(t.status),finishedAt:t.finishedAt}))));}recordStepDuration(t,n){if(!_v(t))return;let o=xv(t);Tt.distribution("test_step_duration",n,[`type:${o}`,"platform:browser","executor:cli",`orgId:${this.orgId}`]);}async finish(t){!this.finished&&t.resolvedStep!==void 0&&t.durationMs!==void 0&&this.recordStepDuration(t.resolvedStep,t.durationMs),await this.finishInternal(t.step),t.step.trace=this.interactionTracer.getRootSpan();}getResultBuilderForCurrentStep(){let t=this.metadata.step;switch(t.type){case "RESOLVED_MODULE":return n=>({...t,status:NP(n),startedAt:this.metadata.startedAt,finishedAt:new Date,results:n,type:"MODULE"});case "CONDITIONAL":return n=>({...t,blocks:t.blocks.map(r=>({assertion:r.assertion,steps:Ld(r.steps)})),elseSteps:t.elseSteps?Ld(t.elseSteps):void 0,status:NP(n),startedAt:this.metadata.startedAt,finishedAt:new Date,results:n});case "WHILE_LOOP":return n=>({...t,steps:Ld(t.steps),status:NP(n),startedAt:this.metadata.startedAt,finishedAt:new Date,results:n});case "AI_ACTION":case "AI_ACTION_DYNAMIC":case "PRESET_ACTION":case "SECTION":return n=>({...t,status:NP(n),startedAt:this.metadata.startedAt,finishedAt:new Date,results:n});default:return tt(t)}}async startSubSteps(){let t=this.getResultBuilderForCurrentStep(),n=new Dh(this.orgId,this.testId,this.testName,this.diskStorage,o=>{let r=t(o);this.parentFlushResults(r);});return this.children.push(n),n}};var LP=class{constructor(t,n,o,r,i,s,a,l){this.orgId=t;this.testId=n;this.testName=o;this.runAttemptId=r;this.metadata=i;this.diskStorage=s;this.recordVideo=a;this.progressHandle=l;this.diskStorage.mkdir(zr),this.harPagesStream=this.diskStorage.createFileStream(`${zr}/har-pages.log`),this.inProgressHarEntries={},this.harEntriesStream=this.diskStorage.createFileStream(`${zr}/har-entries.log`),this.resourceUsageStream=this.diskStorage.createFileStream(`${zr}/resource-usage.ndjson`),this.resourceUsageSampler=nY({keepSamples:false,onSample:c=>{this.resourceUsageStream.write(`${JSON.stringify(c)}
|
|
8917
8917
|
`),c.system.cpu&&(this.cpuUsageSum+=c.system.cpu.total,this.cpuSampleCount++);let d=c.system.memory.total-c.system.memory.free;this.memoryUsageSum+=d,this.memorySampleCount++;}});}finished=false;children=[];beforeResults;mainResults=[];afterResults;harPagesStream;inProgressHarEntries;harEntriesStream;resourceUsageStream;resourceUsageSampler;uiStatesStream;previousHtmlByteHash;previousFingerprint;cpuUsageSum=0;cpuSampleCount=0;memoryUsageSum=0;memorySampleCount=0;get loggerBindings(){return {runAttemptId:this.runAttemptId}}getResourceUsageAverages(){return {avgCpuUsage:this.cpuSampleCount>0?this.cpuUsageSum/this.cpuSampleCount:0,avgMemoryUsage:this.memorySampleCount>0?this.memoryUsageSum/this.memorySampleCount:0}}get videoOutputPath(){if(this.recordVideo)return Jn__default.resolve(this.diskStorage.cwd(),zr)}setActiveVideo(t,n){this.recordVideo&&(this.metadata.activeVideos=this.metadata.activeVideos||[],this.metadata.activeVideos.push({videoName:t,timestamp:n}));}setViewport(t){this.metadata.viewport=t;}onNetworkPage(t){this.finished||this.harPagesStream.write(`${JSON.stringify(t)}
|
|
8918
8918
|
`);}appendUiState(t){this.finished||(this.uiStatesStream||(this.uiStatesStream=this.diskStorage.createFileStream(Yz)),this.uiStatesStream.write(`${JSON.stringify(t)}
|
|
8919
8919
|
`));}buildAppGraphSink(){return ({html:t,url:n,stepId:o,parentStepIdChain:r,logger:i})=>{let s=yH(t),a=s===this.previousHtmlByteHash?this.previousFingerprint:void 0;if(!a){try{a=SH({url:n,dom:OH(t)});}catch(l){i.debug({err:l,stepId:o},"Failed to compute app-graph UIState fingerprint");return}this.previousHtmlByteHash=s,this.previousFingerprint=a;}this.appendUiState({stepId:o,parentStepIdChain:r,fingerprintHash:a.fingerprintHash,minhash:Array.from(a.minhash),canonicalUrl:a.canonicalUrl,capturedAt:Date.now()});}}onNetworkLogs(t){if(!this.finished)for(let[n,o]of Object.entries(t))o.response?(delete this.inProgressHarEntries[n],this.harEntriesStream.write(`${JSON.stringify(o)}
|