@shiplightai/mcp 0.1.57 → 0.1.59
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +9237 -4
- package/package.json +1 -1
- package/dist/agentHelpers-BWIZZVR4-6SA75OLH.js +0 -4
- package/dist/agentLogin-LDQHQBLK-H5M326VA.js +0 -4
- package/dist/chunk-2BZVD336.js +0 -59
- package/dist/chunk-3KLJZX63.js +0 -34
- package/dist/chunk-5YN4X7LV.js +0 -31
- package/dist/chunk-67R4GP2H.js +0 -4
- package/dist/chunk-7W6YLS2E.js +0 -22
- package/dist/chunk-B7PRQ6ZM.js +0 -4
- package/dist/chunk-ETDHHU35.js +0 -4
- package/dist/chunk-F2VF6EGN.js +0 -192
- package/dist/chunk-FUPXB4VL.js +0 -9
- package/dist/chunk-GTYDC5DF.js +0 -201
- package/dist/chunk-HBXQFJ2K.js +0 -4
- package/dist/chunk-HHCLRZRA.js +0 -15
- package/dist/chunk-JTLVXRYI.js +0 -4131
- package/dist/chunk-K7YTTSET.js +0 -4
- package/dist/chunk-KG3IU2VV.js +0 -4009
- package/dist/chunk-LM633YUO.js +0 -4
- package/dist/chunk-PWGR4MG7.js +0 -4
- package/dist/chunk-R4J6G5GI.js +0 -200
- package/dist/chunk-RONU7WUE.js +0 -38
- package/dist/chunk-UBUBM7F7.js +0 -17
- package/dist/chunk-VBI4DDSS.js +0 -4
- package/dist/chunk-X5NUVPAF.js +0 -6
- package/dist/dist-CBGK26LV-CIQ64GXB.js +0 -15
- package/dist/dist-CT5TSYOS.js +0 -4
- package/dist/dist-I44QS3SL.js +0 -4
- package/dist/dist-N7YI5OTM.js +0 -4
- package/dist/esm-7LSQY7YM.js +0 -153
- package/dist/fileFromPath-7DXRMRQU.js +0 -19
- package/dist/handler-7JPASJ4Y-KWA27ONH.js +0 -4
- package/dist/import-meta-resolve-GTPXFCVK.js +0 -6
- package/dist/lib-ZSSBUTBS.js +0 -588
- package/dist/magic-string.es-LGBSB5S5.js +0 -16
- package/dist/multipart-parser-JC2L5VJI.js +0 -5
- package/dist/multipart-parser-TJWXZEMW-OF3QE73Z.js +0 -5
- package/dist/relayBrowserCache-QL6LD4JJ-7EUDH6YT.js +0 -4
- package/dist/server-HRQ65FLP.js +0 -22
- package/dist/src-B7EYCIZ4-XWOBV3GQ.js +0 -6
- package/dist/src-SYQHKG2Q.js +0 -6
- package/dist/task-TMX75KZR-MX73VAM2.js +0 -193
- package/dist/token-AWIWOSVF.js +0 -4
- package/dist/token-QK7JKAKS.js +0 -4
- package/dist/token-util-GL5PN7CJ.js +0 -4
- package/dist/token-util-TEE5GKZ2.js +0 -4
package/dist/chunk-F2VF6EGN.js
DELETED
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { createRequire as __createRequire } from "module";
|
|
3
|
-
const require = __createRequire(import.meta.url);
|
|
4
|
-
import{a as cu,b as lu,c as Et,d as hu,e as du,f as pu,g as fu,h as gu,i as mu,l as xu,m as Au,p as ee,s as Eu}from"./chunk-R4J6G5GI.js";import{a as ru,b as nu,d as au,g as su,h as Xt}from"./chunk-2BZVD336.js";import{a as Tt,c as Zu,d as Qu,e as Xu,f as ne,g as ae,h as se}from"./chunk-GTYDC5DF.js";import{a as ue,b as H,c as ie,d as Bu,l as re,n as Cu,o as St}from"./chunk-KG3IU2VV.js";import{a as k}from"./chunk-UBUBM7F7.js";import{A as Ku,B as Ju,E as Yu,a as Du,b as bu,c as wu,d as yu,e as Fu,f as vu,g as ku,h as Su,i as Tu,j as Lu,k as Iu,l as _u,m as Nu,n as $u,o as Ru,p as Pu,q as qu,r as Ou,s as Mu,t as Uu,u as Hu,v as ju,w as Vu,x as Wu,y as Gu,z as zu}from"./chunk-RONU7WUE.js";import{b as iu,d as c}from"./chunk-HBXQFJ2K.js";import{a as ou,c as Z,d as te}from"./chunk-ETDHHU35.js";import{c as Qt,e as Ir}from"./chunk-LM633YUO.js";var ei=Qt((_o,ti)=>{"use strict";function V(t,e){typeof e=="boolean"&&(e={forever:e}),this._originalTimeouts=JSON.parse(JSON.stringify(t)),this._timeouts=t,this._options=e||{},this._maxRetryTime=e&&e.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._timer=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}ti.exports=V;V.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts.slice(0)};V.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timer&&clearTimeout(this._timer),this._timeouts=[],this._cachedTimeouts=null};V.prototype.retry=function(t){if(this._timeout&&clearTimeout(this._timeout),!t)return!1;var e=new Date().getTime();if(t&&e-this._operationStart>=this._maxRetryTime)return this._errors.push(t),this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(t);var u=this._timeouts.shift();if(u===void 0)if(this._cachedTimeouts)this._errors.splice(0,this._errors.length-1),u=this._cachedTimeouts.slice(-1);else return!1;var i=this;return this._timer=setTimeout(function(){i._attempts++,i._operationTimeoutCb&&(i._timeout=setTimeout(function(){i._operationTimeoutCb(i._attempts)},i._operationTimeout),i._options.unref&&i._timeout.unref()),i._fn(i._attempts)},u),this._options.unref&&this._timer.unref(),!0};V.prototype.attempt=function(t,e){this._fn=t,e&&(e.timeout&&(this._operationTimeout=e.timeout),e.cb&&(this._operationTimeoutCb=e.cb));var u=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){u._operationTimeoutCb()},u._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};V.prototype.try=function(t){console.log("Using RetryOperation.try() is deprecated"),this.attempt(t)};V.prototype.start=function(t){console.log("Using RetryOperation.start() is deprecated"),this.attempt(t)};V.prototype.start=V.prototype.try;V.prototype.errors=function(){return this._errors};V.prototype.attempts=function(){return this._attempts};V.prototype.mainError=function(){if(this._errors.length===0)return null;for(var t={},e=null,u=0,i=0;i<this._errors.length;i++){var r=this._errors[i],n=r.message,a=(t[n]||0)+1;t[n]=a,a>=u&&(e=r,u=a)}return e}});var ui=Qt(ut=>{"use strict";var _r=ei();ut.operation=function(t){var e=ut.timeouts(t);return new _r(e,{forever:t&&(t.forever||t.retries===1/0),unref:t&&t.unref,maxRetryTime:t&&t.maxRetryTime})};ut.timeouts=function(t){if(t instanceof Array)return[].concat(t);var e={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var u in t)e[u]=t[u];if(e.minTimeout>e.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var i=[],r=0;r<e.retries;r++)i.push(this.createTimeout(r,e));return t&&t.forever&&!i.length&&i.push(this.createTimeout(r,e)),i.sort(function(n,a){return n-a}),i};ut.createTimeout=function(t,e){var u=e.randomize?Math.random()+1:1,i=Math.round(u*Math.max(e.minTimeout,1)*Math.pow(e.factor,t));return i=Math.min(i,e.maxTimeout),i};ut.wrap=function(t,e,u){if(e instanceof Array&&(u=e,e=null),!u){u=[];for(var i in t)typeof t[i]=="function"&&u.push(i)}for(var r=0;r<u.length;r++){var n=u[r],a=t[n];t[n]=function(o){var l=ut.operation(e),d=Array.prototype.slice.call(arguments,1),E=d.pop();d.push(function(B){l.retry(B)||(B&&(arguments[0]=l.mainError()),E.apply(this,arguments))}),l.attempt(function(){o.apply(t,d)})}.bind(t,a),t[n].options=e}}});var ri=Qt(($o,ii)=>{"use strict";ii.exports=ui()});import{createRequire as Pr}from"module";import*as ji from"fs/promises";import*as xt from"vm";import*as be from"fs/promises";import{z as si}from"zod";import{z as Q}from"zod";import rt from"fs";import ao from"os";import Bt from"path";import{chromium as Pi,firefox as so,webkit as oo}from"playwright";import*as Tr from"fs";import*as bt from"path";import*as P from"fs";import*as M from"path";import{z as qi}from"zod";import*as Wt from"fs";var ai=Ir(ri(),1);var Nr=Object.prototype.toString,$r=t=>Nr.call(t)==="[object Error]",Rr=new Set(["network error","Failed to fetch","NetworkError when attempting to fetch resource.","The Internet connection appears to be offline.","Load failed","Network request failed","fetch failed","terminated"]);function oe(t){return t&&$r(t)&&t.name==="TypeError"&&typeof t.message=="string"?t.message==="Load failed"?t.stack===void 0:Rr.has(t.message):!1}var ce=class extends Error{constructor(e){super(),e instanceof Error?(this.originalError=e,{message:e}=e):(this.originalError=new Error(e),this.originalError.stack=this.stack),this.name="AbortError",this.message=e}},ni=(t,e,u)=>{let i=u.retries-(e-1);return t.attemptNumber=e,t.retriesLeft=i,t};async function le(t,e){return new Promise((u,i)=>{e={...e},e.onFailedAttempt??=()=>{},e.shouldRetry??=()=>!0,e.retries??=10;let r=ai.default.operation(e),n=()=>{r.stop(),i(e.signal?.reason)};e.signal&&!e.signal.aborted&&e.signal.addEventListener("abort",n,{once:!0});let a=()=>{e.signal?.removeEventListener("abort",n),r.stop()};r.attempt(async s=>{try{let o=await t(s);a(),u(o)}catch(o){try{if(!(o instanceof Error))throw new TypeError(`Non-error was thrown: "${o}". You should only throw errors.`);if(o instanceof ce)throw o.originalError;if(o instanceof TypeError&&!oe(o))throw o;if(ni(o,s,e),await e.shouldRetry(o)||(r.stop(),i(o)),await e.onFailedAttempt(o),!r.retry(o))throw r.mainError()}catch(l){ni(l,s,e),a(),i(l)}}})})}import{z as Rt}from"zod";var c0=Pr(import.meta.url),qr=Z((t,e)=>{"use strict";var u=function(A){return i(A)&&!r(A)};function i(A){return!!A&&typeof A=="object"}function r(A){var C=Object.prototype.toString.call(A);return C==="[object RegExp]"||C==="[object Date]"||s(A)}var n=typeof Symbol=="function"&&Symbol.for,a=n?Symbol.for("react.element"):60103;function s(A){return A.$$typeof===a}function o(A){return Array.isArray(A)?[]:{}}function l(A,C){return C.clone!==!1&&C.isMergeableObject(A)?y(o(A),A,C):A}function d(A,C,w){return A.concat(C).map(function(S){return l(S,w)})}function E(A,C){if(!C.customMerge)return y;var w=C.customMerge(A);return typeof w=="function"?w:y}function B(A){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(A).filter(function(C){return Object.propertyIsEnumerable.call(A,C)}):[]}function m(A){return Object.keys(A).concat(B(A))}function x(A,C){try{return C in A}catch{return!1}}function F(A,C){return x(A,C)&&!(Object.hasOwnProperty.call(A,C)&&Object.propertyIsEnumerable.call(A,C))}function b(A,C,w){var S={};return w.isMergeableObject(A)&&m(A).forEach(function($){S[$]=l(A[$],w)}),m(C).forEach(function($){F(A,$)||(x(A,$)&&w.isMergeableObject(C[$])?S[$]=E($,w)(A[$],C[$],w):S[$]=l(C[$],w))}),S}function y(A,C,w){w=w||{},w.arrayMerge=w.arrayMerge||d,w.isMergeableObject=w.isMergeableObject||u,w.cloneUnlessOtherwiseSpecified=l;var S=Array.isArray(C),$=Array.isArray(A),Y=S===$;return Y?S?w.arrayMerge(A,C,w):b(A,C,w):l(C,w)}y.all=function(A,C){if(!Array.isArray(A))throw new Error("first argument should be an array");return A.reduce(function(w,S){return y(w,S,C)},{})};var _=y;e.exports=_}),Or=Z(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});function e(n){return n&&typeof n=="object"&&"default"in n?n.default:n}var u=e(ou("crypto")),i=(n,a,s)=>u.createHmac(n,Buffer.from(a,"hex")).update(Buffer.from(s,"hex")).digest().toString("hex"),r=(n,a)=>u.randomBytes(n).toString(a);t.createDigest=i,t.createRandomBytes=r}),Mr=Z(t=>{"use strict";var e="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",u=[255,255,26,27,28,29,30,31,255,255,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,255,255,255,255,255];function i(r){var n=Math.floor(r.length/5);return r.length%5===0?n:n+1}t.encode=function(r){Buffer.isBuffer(r)||(r=new Buffer(r));for(var n=0,a=0,s=0,o=0,l=new Buffer(i(r)*8);n<r.length;){var d=r[n];s>3?(o=d&255>>s,s=(s+5)%8,o=o<<s|(n+1<r.length?r[n+1]:0)>>8-s,n++):(o=d>>8-(s+5)&31,s=(s+5)%8,s===0&&n++),l[a]=e.charCodeAt(o),a++}for(n=a;n<l.length;n++)l[n]=61;return l},t.decode=function(r){var n=0,a=0,s,o=0;Buffer.isBuffer(r)||(r=new Buffer(r));for(var l=new Buffer(Math.ceil(r.length*5/8)),d=0;d<r.length&&r[d]!==61;d++){var E=r[d]-48;if(E<u.length)a=u[E],n<=3?(n=(n+5)%8,n===0?(s|=a,l[o]=s,o++,s=0):s|=255&a<<8-n):(n=(n+5)%8,s|=255&a>>>n,l[o]=s,o++,s=255&a<<8-n);else throw new Error("Invalid input - it is not base32 encoded string")}return l.slice(0,o)}}),Ur=Z(t=>{"use strict";var e=Mr();t.encode=e.encode,t.decode=e.decode}),Hr=Z(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});function e(n){return n&&typeof n=="object"&&"default"in n?n.default:n}var u=e(Ur()),i=(n,a)=>u.decode(n).toString(a),r=(n,a)=>u.encode(Buffer.from(n,a).toString("ascii")).toString().replace(/=/g,"");t.keyDecoder=i,t.keyEncoder=r}),jr=Z(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});function e(p){return Object.keys(p).map(h=>p[h])}(function(p){p.SHA1="sha1",p.SHA256="sha256",p.SHA512="sha512"})(t.HashAlgorithms||(t.HashAlgorithms={}));var u=e(t.HashAlgorithms);(function(p){p.ASCII="ascii",p.BASE64="base64",p.HEX="hex",p.LATIN1="latin1",p.UTF8="utf8"})(t.KeyEncodings||(t.KeyEncodings={}));var i=e(t.KeyEncodings);(function(p){p.HOTP="hotp",p.TOTP="totp"})(t.Strategy||(t.Strategy={}));var r=e(t.Strategy),n=()=>{throw new Error("Please provide an options.createDigest implementation.")};function a(p){return/^(\d+)$/.test(p)}function s(p,h,g){return p.length>=h?p:`${Array(h+1).join(g)}${p}`.slice(-1*h)}function o(p){let h=`otpauth://${p.type}/{labelPrefix}:{accountName}?secret={secret}{query}`,g=[];if(r.indexOf(p.type)<0)throw new Error(`Expecting options.type to be one of ${r.join(", ")}. Received ${p.type}.`);if(p.type==="hotp"){if(p.counter==null||typeof p.counter!="number")throw new Error('Expecting options.counter to be a number when options.type is "hotp".');g.push(`&counter=${p.counter}`)}return p.type==="totp"&&p.step&&g.push(`&period=${p.step}`),p.digits&&g.push(`&digits=${p.digits}`),p.algorithm&&g.push(`&algorithm=${p.algorithm.toUpperCase()}`),p.issuer&&g.push(`&issuer=${encodeURIComponent(p.issuer)}`),h.replace("{labelPrefix}",encodeURIComponent(p.issuer||p.accountName)).replace("{accountName}",encodeURIComponent(p.accountName)).replace("{secret}",p.secret).replace("{query}",g.join(""))}var l=class Oi{constructor(h={}){this._defaultOptions=Object.freeze({...h}),this._options=Object.freeze({})}create(h={}){return new Oi(h)}clone(h={}){let g=this.create({...this._defaultOptions,...h});return g.options=this._options,g}get options(){return Object.freeze({...this._defaultOptions,...this._options})}set options(h){this._options=Object.freeze({...this._options,...h})}allOptions(){return this.options}resetOptions(){this._options=Object.freeze({})}};function d(p){if(typeof p.createDigest!="function")throw new Error("Expecting options.createDigest to be a function.");if(typeof p.createHmacKey!="function")throw new Error("Expecting options.createHmacKey to be a function.");if(typeof p.digits!="number")throw new Error("Expecting options.digits to be a number.");if(!p.algorithm||u.indexOf(p.algorithm)<0)throw new Error(`Expecting options.algorithm to be one of ${u.join(", ")}. Received ${p.algorithm}.`);if(!p.encoding||i.indexOf(p.encoding)<0)throw new Error(`Expecting options.encoding to be one of ${i.join(", ")}. Received ${p.encoding}.`)}var E=(p,h,g)=>Buffer.from(h,g).toString("hex");function B(){return{algorithm:t.HashAlgorithms.SHA1,createHmacKey:E,createDigest:n,digits:6,encoding:t.KeyEncodings.ASCII}}function m(p){let h={...B(),...p};return d(h),Object.freeze(h)}function x(p){let h=p.toString(16);return s(h,16,"0")}function F(p,h){let g=Buffer.from(p,"hex"),v=g[g.length-1]&15,I=((g[v]&127)<<24|(g[v+1]&255)<<16|(g[v+2]&255)<<8|g[v+3]&255)%Math.pow(10,h);return s(String(I),h,"0")}function b(p,h,g){let v=x(h),I=g.createHmacKey(g.algorithm,p,g.encoding);return g.createDigest(g.algorithm,I,v)}function y(p,h,g){let v=g.digest||b(p,h,g);return F(v,g.digits)}function _(p,h,g,v){if(!a(p))return!1;let I=y(h,g,v);return p===I}function A(p,h,g,v,I){return o({algorithm:I.algorithm,digits:I.digits,type:t.Strategy.HOTP,accountName:p,counter:v,issuer:h,secret:g})}var C=class Mi extends l{create(h={}){return new Mi(h)}allOptions(){return m(this.options)}generate(h,g){return y(h,g,this.allOptions())}check(h,g,v){return _(h,g,v,this.allOptions())}verify(h){if(typeof h!="object")throw new Error("Expecting argument 0 of verify to be an object");return this.check(h.token,h.secret,h.counter)}keyuri(h,g,v,I){return A(h,g,v,I,this.allOptions())}};function w(p){if(typeof p=="number")return[Math.abs(p),Math.abs(p)];if(Array.isArray(p)){let[h,g]=p;if(typeof h=="number"&&typeof g=="number")return[Math.abs(h),Math.abs(g)]}throw new Error("Expecting options.window to be an number or [number, number].")}function S(p){if(d(p),w(p.window),typeof p.epoch!="number")throw new Error("Expecting options.epoch to be a number.");if(typeof p.step!="number")throw new Error("Expecting options.step to be a number.")}var $=(p,h,g)=>{let v=p.length,I=Buffer.from(p,h).toString("hex");if(v<g){let et=new Array(g-v+1).join(I);return Buffer.from(et,"hex").slice(0,g).toString("hex")}return I},Y=(p,h,g)=>{switch(p){case t.HashAlgorithms.SHA1:return $(h,g,20);case t.HashAlgorithms.SHA256:return $(h,g,32);case t.HashAlgorithms.SHA512:return $(h,g,64);default:throw new Error(`Expecting algorithm to be one of ${u.join(", ")}. Received ${p}.`)}};function ct(){return{algorithm:t.HashAlgorithms.SHA1,createDigest:n,createHmacKey:Y,digits:6,encoding:t.KeyEncodings.ASCII,epoch:Date.now(),step:30,window:0}}function lt(p){let h={...ct(),...p};return S(h),Object.freeze(h)}function ht(p,h){return Math.floor(p/h/1e3)}function vt(p,h){let g=ht(h.epoch,h.step);return y(p,g,h)}function Ge(p,h,g,v){let I=[];if(v===0)return I;for(let et=1;et<=v;et++){let Zt=h*et*g;I.push(p+Zt)}return I}function ze(p,h,g){let v=w(g),I=h*1e3;return{current:p,past:Ge(p,-1,I,v[0]),future:Ge(p,1,I,v[1])}}function Gt(p,h,g){if(!a(p))return!1;let v=vt(h,g);return p===v}function zt(p,h,g,v){let I=null;return p.some((et,Zt)=>Gt(h,g,{...v,epoch:et})?(I=Zt+1,!0):!1),I}function Kt(p,h,g){if(Gt(p,h,g))return 0;let v=ze(g.epoch,g.step,g.window),I=zt(v.past,p,h,g);return I!==null?I*-1:zt(v.future,p,h,g)}function Jt(p,h){return Math.floor(p/1e3)%h}function Ke(p,h){return h-Jt(p,h)}function Je(p,h,g,v){return o({algorithm:v.algorithm,digits:v.digits,step:v.step,type:t.Strategy.TOTP,accountName:p,issuer:h,secret:g})}var Ye=class Ui extends C{create(h={}){return new Ui(h)}allOptions(){return lt(this.options)}generate(h){return vt(h,this.allOptions())}checkDelta(h,g){return Kt(h,g,this.allOptions())}check(h,g){return typeof this.checkDelta(h,g)=="number"}verify(h){if(typeof h!="object")throw new Error("Expecting argument 0 of verify to be an object");return this.check(h.token,h.secret)}timeRemaining(){let h=this.allOptions();return Ke(h.epoch,h.step)}timeUsed(){let h=this.allOptions();return Jt(h.epoch,h.step)}keyuri(h,g,v){return Je(h,g,v,this.allOptions())}};function Ze(p){if(S(p),typeof p.keyDecoder!="function")throw new Error("Expecting options.keyDecoder to be a function.");if(p.keyEncoder&&typeof p.keyEncoder!="function")throw new Error("Expecting options.keyEncoder to be a function.")}function Qe(){return{algorithm:t.HashAlgorithms.SHA1,createDigest:n,createHmacKey:Y,digits:6,encoding:t.KeyEncodings.HEX,epoch:Date.now(),step:30,window:0}}function Xe(p){let h={...Qe(),...p};return Ze(h),Object.freeze(h)}function Yt(p,h){return h.keyEncoder(p,h.encoding)}function kt(p,h){return h.keyDecoder(p,h.encoding)}function tu(p,h){let g=h.createRandomBytes(p,h.encoding);return Yt(g,h)}function eu(p,h){return vt(kt(p,h),h)}function uu(p,h,g){return Kt(p,kt(h,g),g)}var Lr=class Hi extends Ye{create(h={}){return new Hi(h)}allOptions(){return Xe(this.options)}generate(h){return eu(h,this.allOptions())}checkDelta(h,g){return uu(h,g,this.allOptions())}encode(h){return Yt(h,this.allOptions())}decode(h){return kt(h,this.allOptions())}generateSecret(h=10){return tu(h,this.allOptions())}};t.Authenticator=Lr,t.HASH_ALGORITHMS=u,t.HOTP=C,t.KEY_ENCODINGS=i,t.OTP=l,t.STRATEGY=r,t.TOTP=Ye,t.authenticatorCheckWithWindow=uu,t.authenticatorDecoder=kt,t.authenticatorDefaultOptions=Qe,t.authenticatorEncoder=Yt,t.authenticatorGenerateSecret=tu,t.authenticatorOptionValidator=Ze,t.authenticatorOptions=Xe,t.authenticatorToken=eu,t.createDigestPlaceholder=n,t.hotpCheck=_,t.hotpCounter=x,t.hotpCreateHmacKey=E,t.hotpDefaultOptions=B,t.hotpDigestToToken=F,t.hotpKeyuri=A,t.hotpOptions=m,t.hotpOptionsValidator=d,t.hotpToken=y,t.isTokenValid=a,t.keyuri=o,t.objectValues=e,t.padStart=s,t.totpCheck=Gt,t.totpCheckByEpoch=zt,t.totpCheckWithWindow=Kt,t.totpCounter=ht,t.totpCreateHmacKey=Y,t.totpDefaultOptions=ct,t.totpEpochAvailable=ze,t.totpKeyuri=Je,t.totpOptions=lt,t.totpOptionsValidator=S,t.totpPadSecret=$,t.totpTimeRemaining=Ke,t.totpTimeUsed=Jt,t.totpToken=vt}),Vr=Z(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var e=Or(),u=Hr(),i=jr(),r=new i.HOTP({createDigest:e.createDigest}),n=new i.TOTP({createDigest:e.createDigest}),a=new i.Authenticator({createDigest:e.createDigest,createRandomBytes:e.createRandomBytes,keyDecoder:u.keyDecoder,keyEncoder:u.keyEncoder});t.authenticator=a,t.hotp=r,t.totp=n}),Wr=Z(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var e=Vr();Object.keys(e).forEach(function(u){u!=="default"&&Object.defineProperty(t,u,{enumerable:!0,get:function(){return e[u]}})})});async function Gr(t,e){let u=await import(t),i=Object.keys(u),r=new xt.SyntheticModule(i,function(){for(let n of i)this.setExport(n,u[n])},{context:e});return await r.link(()=>{throw new Error("Nested imports not supported in VM context")}),await r.evaluate(),r}function zr(t,e,u,i=!1){if(t[e])if(i)c.info(`Overriding existing function: ${e}`),delete t[e];else{c.error(`The name ${e} is already defined in the global scope`);return}try{let r;if(xt.isContext(t)?r=new xt.Script(u,{importModuleDynamically:async n=>Gr(n,t)}).runInContext(t):r=(0,eval)(u),typeof r!="function")throw new Error("The injected code must be a function");t[e]=r}catch(r){c.error(`Error injecting user function ${e}: ${r.message}`)}}async function E0(t,e,u=!1){try{let i=await ji.readFile(e,"utf8"),r=JSON.parse(i);c.info(`Loading ${Object.keys(r).length} user functions...`);for(let[n,a]of Object.entries(r))zr(t,n,a,u)}catch(i){throw c.error("Failed to load user functions:",i),i}}async function B0(t){try{let e=await be.readFile(t,"utf8"),u=JSON.parse(e);return c.info(`Loaded ${u.length} knowledges from file`),u}catch(e){if(e.code==="ENOENT")return c.debug("No knowledges file found"),[];throw c.error("Failed to load knowledges:",e),e}}async function C0(t){try{let e=await be.readFile(t,"utf8"),u=JSON.parse(e);return c.info(`Loaded ${u.length} knowledge mappings from file`),u}catch(e){if(e.code==="ENOENT")return c.debug("No knowledge mappings file found"),[];throw c.error("Failed to load knowledge mappings:",e),e}}async function D0(t,e){if(!t.body)throw new Error("Response body is null");let u=t.body.getReader(),i=new TextDecoder,r="";try{for(;;){let{done:n,value:a}=await u.read();if(n)break;r+=i.decode(a,{stream:!0});let s=r.split(`
|
|
5
|
-
`);r=s.pop()||"";for(let o of s){let l=null;if(o.startsWith("data: "))try{let d=o.slice(6);d.trim()&&(l=JSON.parse(d))}catch(d){console.error(`Failed to parse SSE event: ${o}`,d);continue}l&&e(l)}}}finally{u.releaseLock()}}var Kr=si.object({instruction:si.string().describe('The instruction of the operation to perform. Can only include one operation. Do not inlcude element indexes just describe the element, e.g. "select the text "Hello, world!" in "Hello, world!""')});function Jr(t){t.register({name:"perform_accurate_operation",description:"Perform an operation that requires accurate interaction like dragging or interacting with a specific area of an element. Only use this action when neccecary.",schema:Kr,usesElementIndex:!1,async execute(e,u){let{instruction:i}=e,r={page:u.page,agentServices:u.agentServices,domService:u.domService},n=await Zu(i,r,{});if(n.status==="error"||!n.actionEntity)return{success:!1,actionEntity:{action_description:i,action_data:{action_name:"perform_accurate_operation",kwargs:{instruction:i}}},error:n.error||"Failed to generate action"};let{actionEntity:a}=n,s=await Qu(a,r);return{success:s.success,actionEntity:a,message:s.success?`Successfully executed action: ${a.action_data?.action_name}`:void 0,error:s.error}}})}var T;(function(t){t.Root="root",t.Text="text",t.Directive="directive",t.Comment="comment",t.Script="script",t.Style="style",t.Tag="tag",t.CDATA="cdata",t.Doctype="doctype"})(T||(T={}));function Yr(t){return t.type===T.Tag||t.type===T.Script||t.type===T.Style}var Zr=T.Root,Qr=T.Text,Xr=T.Directive,tn=T.Comment,en=T.Script,un=T.Style,rn=T.Tag,nn=T.CDATA,an=T.Doctype,Vi=class{constructor(){this.parent=null,this.prev=null,this.next=null,this.startIndex=null,this.endIndex=null}get parentNode(){return this.parent}set parentNode(t){this.parent=t}get previousSibling(){return this.prev}set previousSibling(t){this.prev=t}get nextSibling(){return this.next}set nextSibling(t){this.next=t}cloneNode(t=!1){return Ji(this,t)}},we=class extends Vi{constructor(t){super(),this.data=t}get nodeValue(){return this.data}set nodeValue(t){this.data=t}},fe=class extends we{constructor(){super(...arguments),this.type=T.Text}get nodeType(){return 3}},Wi=class extends we{constructor(){super(...arguments),this.type=T.Comment}get nodeType(){return 8}},Gi=class extends we{constructor(t,e){super(e),this.name=t,this.type=T.Directive}get nodeType(){return 1}},ye=class extends Vi{constructor(t){super(),this.children=t}get firstChild(){var t;return(t=this.children[0])!==null&&t!==void 0?t:null}get lastChild(){return this.children.length>0?this.children[this.children.length-1]:null}get childNodes(){return this.children}set childNodes(t){this.children=t}},zi=class extends ye{constructor(){super(...arguments),this.type=T.CDATA}get nodeType(){return 4}},ge=class extends ye{constructor(){super(...arguments),this.type=T.Root}get nodeType(){return 9}},Ki=class extends ye{constructor(t,e,u=[],i=t==="script"?T.Script:t==="style"?T.Style:T.Tag){super(u),this.name=t,this.attribs=e,this.type=i}get nodeType(){return 1}get tagName(){return this.name}set tagName(t){this.name=t}get attributes(){return Object.keys(this.attribs).map(t=>{var e,u;return{name:t,value:this.attribs[t],namespace:(e=this["x-attribsNamespace"])===null||e===void 0?void 0:e[t],prefix:(u=this["x-attribsPrefix"])===null||u===void 0?void 0:u[t]}})}};function Fe(t){return Yr(t)}function sn(t){return t.type===T.CDATA}function on(t){return t.type===T.Text}function cn(t){return t.type===T.Comment}function ln(t){return t.type===T.Directive}function hn(t){return t.type===T.Root}function Ji(t,e=!1){let u;if(on(t))u=new fe(t.data);else if(cn(t))u=new Wi(t.data);else if(Fe(t)){let i=e?he(t.children):[],r=new Ki(t.name,{...t.attribs},i);i.forEach(n=>n.parent=r),t.namespace!=null&&(r.namespace=t.namespace),t["x-attribsNamespace"]&&(r["x-attribsNamespace"]={...t["x-attribsNamespace"]}),t["x-attribsPrefix"]&&(r["x-attribsPrefix"]={...t["x-attribsPrefix"]}),u=r}else if(sn(t)){let i=e?he(t.children):[],r=new zi(i);i.forEach(n=>n.parent=r),u=r}else if(hn(t)){let i=e?he(t.children):[],r=new ge(i);i.forEach(n=>n.parent=r),t["x-mode"]&&(r["x-mode"]=t["x-mode"]),u=r}else if(ln(t)){let i=new Gi(t.name,t.data);t["x-name"]!=null&&(i["x-name"]=t["x-name"],i["x-publicId"]=t["x-publicId"],i["x-systemId"]=t["x-systemId"]),u=i}else throw new Error(`Not implemented yet: ${t.type}`);return u.startIndex=t.startIndex,u.endIndex=t.endIndex,t.sourceCodeLocation!=null&&(u.sourceCodeLocation=t.sourceCodeLocation),u}function he(t){let e=t.map(u=>Ji(u,!0));for(let u=1;u<e.length;u++)e[u].prev=e[u-1],e[u-1].next=e[u];return e}var oi={withStartIndices:!1,withEndIndices:!1,xmlMode:!1},dn=class{constructor(t,e,u){this.dom=[],this.root=new ge(this.dom),this.done=!1,this.tagStack=[this.root],this.lastNode=null,this.parser=null,typeof e=="function"&&(u=e,e=oi),typeof t=="object"&&(e=t,t=void 0),this.callback=t??null,this.options=e??oi,this.elementCB=u??null}onparserinit(t){this.parser=t}onreset(){this.dom=[],this.root=new ge(this.dom),this.done=!1,this.tagStack=[this.root],this.lastNode=null,this.parser=null}onend(){this.done||(this.done=!0,this.parser=null,this.handleCallback(null))}onerror(t){this.handleCallback(t)}onclosetag(){this.lastNode=null;let t=this.tagStack.pop();this.options.withEndIndices&&(t.endIndex=this.parser.endIndex),this.elementCB&&this.elementCB(t)}onopentag(t,e){let u=this.options.xmlMode?T.Tag:void 0,i=new Ki(t,e,void 0,u);this.addNode(i),this.tagStack.push(i)}ontext(t){let{lastNode:e}=this;if(e&&e.type===T.Text)e.data+=t,this.options.withEndIndices&&(e.endIndex=this.parser.endIndex);else{let u=new fe(t);this.addNode(u),this.lastNode=u}}oncomment(t){if(this.lastNode&&this.lastNode.type===T.Comment){this.lastNode.data+=t;return}let e=new Wi(t);this.addNode(e),this.lastNode=e}oncommentend(){this.lastNode=null}oncdatastart(){let t=new fe(""),e=new zi([t]);this.addNode(e),t.parent=e,this.lastNode=t}oncdataend(){this.lastNode=null}onprocessinginstruction(t,e){let u=new Gi(t,e);this.addNode(u)}handleCallback(t){if(typeof this.callback=="function")this.callback(t,this.dom);else if(t)throw t}addNode(t){let e=this.tagStack[this.tagStack.length-1],u=e.children[e.children.length-1];this.options.withStartIndices&&(t.startIndex=this.parser.startIndex),this.options.withEndIndices&&(t.endIndex=this.parser.endIndex),e.children.push(t),u&&(t.prev=u,u.next=t),t.parent=e,this.lastNode=null}},pn=/\n/g;function fn(t){let e=[...t.matchAll(pn)].map(i=>i.index||0);e.unshift(-1);let u=me(e,0,e.length);return i=>Yi(u,i)}function me(t,e,u){if(u-e==1)return{offset:t[e],index:e+1};let i=Math.ceil((e+u)/2),r=me(t,e,i),n=me(t,i,u);return{offset:r.offset,low:r,high:n}}function Yi(t,e){return function(u){return Object.prototype.hasOwnProperty.call(u,"index")}(t)?{line:t.index,column:e-t.offset}:Yi(t.high.offset<e?t.high:t.low,e)}function Zi(t,e="",u={}){let i=typeof e!="string"?e:u,r=typeof e=="string"?e:"",n=t.map(gn),a=!!i.lineNumbers;return function(s,o=0){let l=a?fn(s):()=>({line:0,column:0}),d=o,E=[];t:for(;d<s.length;){let B=!1;for(let m of n){m.regex.lastIndex=d;let x=m.regex.exec(s);if(x&&x[0].length>0){if(!m.discard){let F=l(d),b=typeof m.replace=="string"?x[0].replace(new RegExp(m.regex.source,m.regex.flags),m.replace):x[0];E.push({state:r,name:m.name,text:b,offset:d,len:x[0].length,line:F.line,column:F.column})}if(d=m.regex.lastIndex,B=!0,m.push){let F=m.push(s,d);E.push(...F.tokens),d=F.offset}if(m.pop)break t;break}}if(!B)break}return{tokens:E,offset:d,complete:s.length<=d}}}function gn(t,e){return{...t,regex:mn(t,e)}}function mn(t,e){if(t.name.length===0)throw new Error(`Rule #${e} has empty name, which is not allowed.`);if(function(u){return Object.prototype.hasOwnProperty.call(u,"regex")}(t))return function(u){if(u.global)throw new Error(`Regular expression /${u.source}/${u.flags} contains the global flag, which is not allowed.`);return u.sticky?u:new RegExp(u.source,u.flags+"y")}(t.regex);if(function(u){return Object.prototype.hasOwnProperty.call(u,"str")}(t)){if(t.str.length===0)throw new Error(`Rule #${e} ("${t.name}") has empty "str" property, which is not allowed.`);return new RegExp(ci(t.str),"y")}return new RegExp(ci(t.name),"y")}function ci(t){return t.replace(/[-[\]{}()*+!<=:?./\\^$|#\s,]/g,"\\$&")}function tt(t,e){return(u,i)=>{let r=i,n;return i<u.tokens.length?(n=t(u.tokens[i],u,i),n!==void 0&&r++):e?.(u,i),n===void 0?{matched:!1}:{matched:!0,position:r,value:n}}}function ve(t,e){return t.matched?{matched:!0,position:t.position,value:e(t.value,t.position)}:t}function Ot(t,e){return t.matched?e(t):t}function O(t,e){return(u,i)=>ve(t(u,i),(r,n)=>e(r,u,i,n))}function Mt(t,e){return(u,i)=>{let r=t(u,i);return r.matched?r:{matched:!0,position:i,value:e}}}function Ht(...t){return(e,u)=>{for(let i of t){let r=i(e,u);if(r.matched)return r}return{matched:!1}}}function ot(t,e){return(u,i)=>{let r=t(u,i);return r.matched?r:e(u,i)}}function xn(t,e){return(u,i)=>{let r=[],n=!0;do{let a=t(u,i);a.matched&&e(a.value,r.length+1,u,i,a.position)?(r.push(a.value),i=a.position):n=!1}while(n);return{matched:!0,position:i,value:r}}}function ke(t){return xn(t,()=>!0)}function An(t){return U(t,ke(t),(e,u)=>[e,...u])}function U(t,e,u){return(i,r)=>Ot(t(i,r),n=>ve(e(i,n.position),(a,s)=>u(n.value,a,i,r,s)))}function En(t,e){return U(t,e,u=>u)}function li(t,e){return U(t,e,(u,i)=>i)}function Se(t,e,u,i){return(r,n)=>Ot(t(r,n),a=>Ot(e(r,a.position),s=>ve(u(r,s.position),(o,l)=>i(a.value,s.value,o,r,n,l))))}function Qi(t,e,u){return Se(t,e,u,(i,r)=>r)}function Bn(...t){return(e,u)=>{let i=[],r=u;for(let n of t){let a=n(e,r);if(a.matched)i.push(a.value),r=a.position;else return{matched:!1}}return{matched:!0,position:r,value:i}}}function Cn(...t){return Dn(Bn(...t))}function Dn(t){return O(t,e=>e.flatMap(u=>u))}function bn(t,e){return(u,i)=>{let r=!0,n=t,a=i;do{let s=e(n,u,a)(u,a);s.matched?(n=s.value,a=s.position):r=!1}while(r);return{matched:!0,position:a,value:n}}}function wn(t,e,u){return bn(t,i=>O(e,(r,n,a,s)=>u(i,r,n,a,s)))}function Xi(t,e,u){return yn(t,i=>wn(i,U(e,u,(r,n)=>[r,n]),(r,[n,a])=>n(r,a)))}function yn(t,e){return(u,i)=>Ot(t(u,i),r=>e(r.value,u,i,r.position)(u,r.position))}var Fn="(?:[ \\t\\r\\n\\f]*)",tr="(?:\\n|\\r\\n|\\r|\\f)",jt="[^\\x00-\\x7F]",wt="(?:\\\\[0-9a-f]{1,6}(?:\\r\\n|[ \\n\\r\\t\\f])?)",yt="(?:\\\\[^\\n\\r\\f0-9a-f])",vn=`(?:[_a-z]|${jt}|${wt}|${yt})`,er=`(?:[_a-z0-9-]|${jt}|${wt}|${yt})`,kn=`(?:${er}+)`,Sn=`(?:[-]?${vn}${er}*)`,Tn=`'([^\\n\\r\\f\\\\']|\\\\${tr}|${jt}|${wt}|${yt})*'`,Ln=`"([^\\n\\r\\f\\\\"]|\\\\${tr}|${jt}|${wt}|${yt})*"`,In=Zi([{name:"ws",regex:new RegExp(Fn)},{name:"hash",regex:new RegExp(`#${kn}`,"i")},{name:"ident",regex:new RegExp(Sn,"i")},{name:"str1",regex:new RegExp(Tn,"i")},{name:"str2",regex:new RegExp(Ln,"i")},{name:"*"},{name:"."},{name:","},{name:"["},{name:"]"},{name:"="},{name:">"},{name:"|"},{name:"+"},{name:"~"},{name:"^"},{name:"$"}]),_n=Zi([{name:"unicode",regex:new RegExp(wt,"i")},{name:"escape",regex:new RegExp(yt,"i")},{name:"any",regex:new RegExp("[\\s\\S]","i")}]);function ur([t,e,u],[i,r,n]){return[t+i,e+r,u+n]}function Nn(t){return t.reduce(ur,[0,0,0])}var $n=tt(t=>t.name==="unicode"?String.fromCodePoint(parseInt(t.text.slice(1),16)):void 0),Rn=tt(t=>t.name==="escape"?t.text.slice(1):void 0),Pn=tt(t=>t.name==="any"?t.text:void 0),qn=O(ke(Ht($n,Rn,Pn)),t=>t.join(""));function Te(t){let e=_n(t);return qn({tokens:e.tokens,options:void 0},0).value}function N(t){return tt(e=>e.name===t?!0:void 0)}var Le=tt(t=>t.name==="ws"?null:void 0),xe=Mt(Le,null);function ft(t){return Qi(xe,t,xe)}var Dt=tt(t=>t.name==="ident"?Te(t.text):void 0),On=tt(t=>t.name==="hash"?Te(t.text.slice(1)):void 0),Mn=tt(t=>t.name.startsWith("str")?Te(t.text.slice(1,-1)):void 0),ir=En(Mt(Dt,""),N("|")),Ie=ot(U(ir,Dt,(t,e)=>({name:e,namespace:t})),O(Dt,t=>({name:t,namespace:null}))),Un=ot(U(ir,N("*"),t=>({type:"universal",namespace:t,specificity:[0,0,0]})),O(N("*"),()=>({type:"universal",namespace:null,specificity:[0,0,0]}))),Hn=O(Ie,({name:t,namespace:e})=>({type:"tag",name:t,namespace:e,specificity:[0,0,1]})),jn=U(N("."),Dt,(t,e)=>({type:"class",name:e,specificity:[0,1,0]})),Vn=O(On,t=>({type:"id",name:t,specificity:[1,0,0]})),hi=tt(t=>{if(t.name==="ident"){if(t.text==="i"||t.text==="I")return"i";if(t.text==="s"||t.text==="S")return"s"}}),Wn=ot(U(Mn,Mt(li(xe,hi),null),(t,e)=>({value:t,modifier:e})),U(Dt,Mt(li(Le,hi),null),(t,e)=>({value:t,modifier:e}))),Gn=Ht(O(N("="),()=>"="),U(N("~"),N("="),()=>"~="),U(N("|"),N("="),()=>"|="),U(N("^"),N("="),()=>"^="),U(N("$"),N("="),()=>"$="),U(N("*"),N("="),()=>"*=")),zn=Se(N("["),ft(Ie),N("]"),(t,{name:e,namespace:u})=>({type:"attrPresence",name:e,namespace:u,specificity:[0,1,0]})),Kn=Qi(N("["),Se(ft(Ie),Gn,ft(Wn),({name:t,namespace:e},u,{value:i,modifier:r})=>({type:"attrValue",name:t,namespace:e,matcher:u,value:i,modifier:r,specificity:[0,1,0]})),N("]")),Jn=ot(zn,Kn),Yn=ot(Un,Hn),di=Ht(Vn,jn,Jn),pi=O(ot(Cn(Yn,ke(di)),An(di)),t=>({type:"compound",list:t,specificity:Nn(t.map(e=>e.specificity))})),Zn=Ht(O(N(">"),()=>">"),O(N("+"),()=>"+"),O(N("~"),()=>"~"),U(N("|"),N("|"),()=>"||")),Qn=ot(ft(Zn),O(Le,()=>" ")),Ae=Xi(pi,O(Qn,t=>(e,u)=>({type:"compound",list:[...u.list,{type:"combinator",combinator:t,left:e,specificity:e.specificity}],specificity:ur(e.specificity,u.specificity)})),pi),y0=Xi(O(Ae,t=>({type:"list",list:[t]})),O(ft(N(",")),()=>(t,e)=>({type:"list",list:[...t.list,e]})),Ae);function Xn(t,e){if(!(typeof e=="string"||e instanceof String))throw new Error("Expected a selector string. Actual input is not a string!");let u=In(e);if(!u.complete)throw new Error(`The input "${e}" was only partially tokenized, stopped at offset ${u.offset}!
|
|
6
|
-
`+fi(e,u.offset));let i=ft(t)({tokens:u.tokens,options:void 0},0);if(!i.matched)throw new Error(`No match for "${e}" input!`);if(i.position<u.tokens.length){let r=u.tokens[i.position];throw new Error(`The input "${e}" was only partially parsed, stopped at offset ${r.offset}!
|
|
7
|
-
`+fi(e,r.offset,r.len))}return i.value}function fi(t,e,u=1){return`${t.replace(/(\t)|(\r)|(\n)/g,(i,r,n)=>r?"\u2409":n?"\u240D":"\u240A")}
|
|
8
|
-
${"".padEnd(e)}${"^".repeat(u)}`}function ta(t){return Xn(Ae,t)}function K(t){if(!t.type)throw new Error("This is not an AST node.");switch(t.type){case"universal":return Lt(t.namespace)+"*";case"tag":return Lt(t.namespace)+pt(t.name);case"class":return"."+pt(t.name);case"id":return"#"+pt(t.name);case"attrPresence":return`[${Lt(t.namespace)}${pt(t.name)}]`;case"attrValue":return`[${Lt(t.namespace)}${pt(t.name)}${t.matcher}"${ea(t.value)}"${t.modifier?t.modifier:""}]`;case"combinator":return K(t.left)+t.combinator;case"compound":return t.list.reduce((e,u)=>u.type==="combinator"?K(u)+e:e+K(u),"");case"list":return t.list.map(K).join(",")}}function Lt(t){return t||t===""?pt(t)+"|":""}function Pt(t){return`\\${t.codePointAt(0).toString(16)} `}function pt(t){return t.replace(/(^[0-9])|(^-[0-9])|(^-$)|([-0-9a-zA-Z_]|[^\x00-\x7F])|(\x00)|([\x01-\x1f]|\x7f)|([\s\S])/g,(e,u,i,r,n,a,s,o)=>u?Pt(u):i?"-"+Pt(i.slice(1)):r?"\\-":n||(a?"\uFFFD":s?Pt(s):"\\"+o))}function ea(t){return t.replace(/(")|(\\)|(\x00)|([\x01-\x1f]|\x7f)/g,(e,u,i,r,n)=>u?'\\"':i?"\\\\":r?"\uFFFD":Pt(n))}function qt(t){if(!t.type)throw new Error("This is not an AST node.");switch(t.type){case"compound":{t.list.forEach(qt),t.list.sort((e,u)=>nr(gi(e),gi(u)));break}case"combinator":{qt(t.left);break}case"list":{t.list.forEach(qt),t.list.sort((e,u)=>K(e)<K(u)?-1:1);break}}return t}function gi(t){switch(t.type){case"universal":return[1];case"tag":return[1];case"id":return[2];case"class":return[3,t.name];case"attrPresence":return[4,K(t)];case"attrValue":return[5,K(t)];case"combinator":return[15,K(t)]}}function rr(t,e){return nr(t,e)}function nr(t,e){if(!Array.isArray(t)||!Array.isArray(e))throw new Error("Arguments must be arrays.");let u=t.length<e.length?t.length:e.length;for(let i=0;i<u;i++)if(t[i]!==e[i])return t[i]<e[i]?-1:1;return t.length-e.length}var mi=class{constructor(t){this.branches=gt(ua(t))}build(t){return t(this.branches)}};function ua(t){let e=t.length,u=new Array(e);for(let i=0;i<e;i++){let[r,n]=t[i],a=ia(ta(r));u[i]={ast:a,terminal:{type:"terminal",valueContainer:{index:i,value:n,specificity:a.specificity}}}}return u}function ia(t){return ar(t),qt(t),t}function ar(t){let e=[];t.list.forEach(u=>{switch(u.type){case"class":e.push({matcher:"~=",modifier:null,name:"class",namespace:null,specificity:u.specificity,type:"attrValue",value:u.name});break;case"id":e.push({matcher:"=",modifier:null,name:"id",namespace:null,specificity:u.specificity,type:"attrValue",value:u.name});break;case"combinator":ar(u.left),e.push(u);break;case"universal":break;default:e.push(u);break}}),t.list=e}function gt(t){let e=[];for(;t.length;){let u=cr(t,a=>!0,sr),{matches:i,nonmatches:r,empty:n}=na(t,u);t=r,i.length&&e.push(aa(u,i)),n.length&&e.push(...ra(n))}return e}function ra(t){let e=[];for(let u of t){let i=u.terminal;if(i.type==="terminal")e.push(i);else{let{matches:r,rest:n}=ha(i.cont,a=>a.type==="terminal");r.forEach(a=>e.push(a)),n.length&&(i.cont=n,e.push(i))}}return e}function na(t,e){let u=[],i=[],r=[];for(let n of t){let a=n.ast.list;a.length?(a.some(s=>sr(s)===e)?u:i).push(n):r.push(n)}return{matches:u,nonmatches:i,empty:r}}function sr(t){switch(t.type){case"attrPresence":return`attrPresence ${t.name}`;case"attrValue":return`attrValue ${t.name}`;case"combinator":return`combinator ${t.combinator}`;default:return t.type}}function aa(t,e){if(t==="tag")return sa(e);if(t.startsWith("attrValue "))return ca(t.substring(10),e);if(t.startsWith("attrPresence "))return oa(t.substring(13),e);if(t==="combinator >")return xi(">",e);if(t==="combinator +")return xi("+",e);throw new Error(`Unsupported selector kind: ${t}`)}function sa(t){let e=_e(t,u=>u.type==="tag",u=>u.name);return{type:"tagName",variants:Object.entries(e).map(([u,i])=>({type:"variant",value:u,cont:gt(i.items)}))}}function oa(t,e){for(let u of e)or(u,i=>i.type==="attrPresence"&&i.name===t);return{type:"attrPresence",name:t,cont:gt(e)}}function ca(t,e){let u=_e(e,r=>r.type==="attrValue"&&r.name===t,r=>`${r.matcher} ${r.modifier||""} ${r.value}`),i=[];for(let r of Object.values(u)){let n=r.oneSimpleSelector,a=la(n),s=gt(r.items);i.push({type:"matcher",matcher:n.matcher,modifier:n.modifier,value:n.value,predicate:a,cont:s})}return{type:"attrValue",name:t,matchers:i}}function la(t){if(t.modifier==="i"){let e=t.value.toLowerCase();switch(t.matcher){case"=":return u=>e===u.toLowerCase();case"~=":return u=>u.toLowerCase().split(/[ \t]+/).includes(e);case"^=":return u=>u.toLowerCase().startsWith(e);case"$=":return u=>u.toLowerCase().endsWith(e);case"*=":return u=>u.toLowerCase().includes(e);case"|=":return u=>{let i=u.toLowerCase();return e===i||i.startsWith(e)&&i[e.length]==="-"}}}else{let e=t.value;switch(t.matcher){case"=":return u=>e===u;case"~=":return u=>u.split(/[ \t]+/).includes(e);case"^=":return u=>u.startsWith(e);case"$=":return u=>u.endsWith(e);case"*=":return u=>u.includes(e);case"|=":return u=>e===u||u.startsWith(e)&&u[e.length]==="-"}}}function xi(t,e){let u=_e(e,r=>r.type==="combinator"&&r.combinator===t,r=>K(r.left)),i=[];for(let r of Object.values(u)){let n=gt(r.items),a=r.oneSimpleSelector.left;i.push({ast:a,terminal:{type:"popElement",cont:n}})}return{type:"pushElement",combinator:t,cont:gt(i)}}function _e(t,e,u){let i={};for(;t.length;){let r=cr(t,e,u),n=d=>e(d)&&u(d)===r,a=d=>d.ast.list.some(n),{matches:s,rest:o}=da(t,a),l=null;for(let d of s){let E=or(d,n);l||(l=E)}if(l==null)throw new Error("No simple selector is found.");i[r]={oneSimpleSelector:l,items:s},t=o}return i}function or(t,e){let u=t.ast.list,i=new Array(u.length),r=-1;for(let a=u.length;a-- >0;)e(u[a])&&(i[a]=!0,r=a);if(r==-1)throw new Error("Couldn't find the required simple selector.");let n=u[r];return t.ast.list=u.filter((a,s)=>!i[s]),n}function cr(t,e,u){let i={};for(let a of t){let s={};for(let o of a.ast.list.filter(e))s[u(o)]=!0;for(let o of Object.keys(s))i[o]?i[o]++:i[o]=1}let r="",n=0;for(let a of Object.entries(i))a[1]>n&&(r=a[0],n=a[1]);return r}function ha(t,e){let u=[],i=[];for(let r of t)e(r)?u.push(r):i.push(r);return{matches:u,rest:i}}function da(t,e){let u=[],i=[];for(let r of t)e(r)?u.push(r):i.push(r);return{matches:u,rest:i}}var pa=class{constructor(t){this.f=t}pickAll(t){return this.f(t)}pick1(t,e=!1){let u=this.f(t),i=u.length;if(i===0)return null;if(i===1)return u[0].value;let r=e?fa:ga,n=u[0];for(let a=1;a<i;a++){let s=u[a];r(n,s)&&(n=s)}return n.value}};function fa(t,e){let u=rr(e.specificity,t.specificity);return u>0||u===0&&e.index<t.index}function ga(t,e){let u=rr(e.specificity,t.specificity);return u>0||u===0&&e.index>t.index}function Ai(t){return new pa(At(t))}function At(t){let e=t.map(ma);return(u,...i)=>e.flatMap(r=>r(u,...i))}function ma(t){switch(t.type){case"terminal":{let e=[t.valueContainer];return(u,...i)=>e}case"tagName":return xa(t);case"attrValue":return Ea(t);case"attrPresence":return Aa(t);case"pushElement":return Ba(t);case"popElement":return Da(t)}}function xa(t){let e={};for(let u of t.variants)e[u.value]=At(u.cont);return(u,...i)=>{let r=e[u.name];return r?r(u,...i):[]}}function Aa(t){let e=t.name,u=At(t.cont);return(i,...r)=>Object.prototype.hasOwnProperty.call(i.attribs,e)?u(i,...r):[]}function Ea(t){let e=[];for(let i of t.matchers){let r=i.predicate,n=At(i.cont);e.push((a,s,...o)=>r(a)?n(s,...o):[])}let u=t.name;return(i,...r)=>{let n=i.attribs[u];return n||n===""?e.flatMap(a=>a(n,i,...r)):[]}}function Ba(t){let e=At(t.cont),u=t.combinator==="+"?lr:Ca;return(i,...r)=>{let n=u(i);return n===null?[]:e(n,i,...r)}}var lr=t=>{let e=t.prev;return e===null?null:Fe(e)?e:lr(e)},Ca=t=>{let e=t.parent;return e&&Fe(e)?e:null};function Da(t){let e=At(t.cont);return(u,i,...r)=>e(i,...r)}var hr=new Uint16Array('\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\u{1D504}rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\u{1D538}plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\u{1D49C}ign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\u{1D505}pf;\uC000\u{1D539}eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\u{1D49E}p\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\u{1D507}\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\u{1D53B}\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\u{1D49F}rok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\u{1D508}rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\u{1D53C}silon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\u{1D509}lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\u{1D53D}All;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\u{1D50A};\u62D9pf;\uC000\u{1D53E}eater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\u{1D4A2};\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\u{1D540}a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\u{1D50D}pf;\uC000\u{1D541}\u01E3\u07C7\0\u07CCr;\uC000\u{1D4A5}rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\u{1D50E}pf;\uC000\u{1D542}cr;\uC000\u{1D4A6}\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\u{1D50F}\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\u{1D543}er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\u{1D510}nusPlus;\u6213pf;\uC000\u{1D544}c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\u{1D511}\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\u{1D4A9}ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\u{1D512}rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\u{1D546}enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\u{1D4AA}ash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\u{1D513}i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\u{1D4AB};\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\u{1D514}pf;\u611Acr;\uC000\u{1D4AC}\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\u{1D516}ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\u{1D54A}\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\u{1D4AE}ar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\u{1D517}\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\u{1D54B}ipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\u{1D4AF}rok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\u{1D518}rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\u{1D54C}\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\u{1D4B0}ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\u{1D519}pf;\uC000\u{1D54D}cr;\uC000\u{1D4B1}dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\u{1D51A}pf;\uC000\u{1D54E}cr;\uC000\u{1D4B2}\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\u{1D51B};\u439Epf;\uC000\u{1D54F}cr;\uC000\u{1D4B3}\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\u{1D51C}pf;\uC000\u{1D550}cr;\uC000\u{1D4B4}ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\u{1D4B5}\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\u{1D51E}rave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\u{1D552}\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\u{1D4B6};\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\u{1D51F}g\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\u{1D553}\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\u{1D4B7}mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\u{1D520}\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\u{1D554}o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\u{1D4B8}\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\u{1D521}ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\u{1D555}\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\u{1D4B9};\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\u{1D522}\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\u{1D556}\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\u{1D523}lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\u{1D557}\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\u{1D4BB}\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\u{1D524}\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\u{1D558}\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\u{1D525}s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\u{1D559}bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\u{1D4BD}as\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\u{1D526}rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\u{1D55A}a;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\u{1D4BE}n\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\u{1D527}ath;\u4237pf;\uC000\u{1D55B}\u01E3\u23EC\0\u23F1r;\uC000\u{1D4BF}rcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\u{1D528}reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\u{1D55C}cr;\uC000\u{1D4C0}\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\u{1D529}\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\u{1D55D}us;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\u{1D4C1}m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\u{1D52A}o;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\u{1D55E}\u0100ct\u28F8\u28FDr;\uC000\u{1D4C2}pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\u{1D52B}\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\u{1D55F}\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\u{1D4C3}ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\u{1D52C}\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\u{1D560}\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\u{1D52D}\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\u{1D561}nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\u{1D4C5};\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\u{1D52E}pf;\uC000\u{1D562}rime;\u6057cr;\uC000\u{1D4C6}\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\u{1D52F}\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\u{1D563}us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\u{1D4C7}\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\u{1D530}\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\u{1D564}a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\u{1D4C8}tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\u{1D531}\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\u{1D565}rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\u{1D4C9};\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\u{1D532}rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\u{1D566}\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\u{1D4CA}\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\u{1D533}tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\u{1D567}ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\u{1D4CB}\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\u{1D534}pf;\uC000\u{1D568}\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\u{1D4CC}\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\u{1D535}\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\u{1D569}im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\u{1D4CD}\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\u{1D536}cy;\u4457pf;\uC000\u{1D56A}cr;\uC000\u{1D4CE}\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\u{1D537}cy;\u4436grarr;\u61DDpf;\uC000\u{1D56B}cr;\uC000\u{1D4CF}\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map(t=>t.charCodeAt(0))),dr=new Uint16Array("\u0200aglq \x1B\u026D\0\0p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map(t=>t.charCodeAt(0))),de,ba=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]]),Ee=(de=String.fromCodePoint)!==null&&de!==void 0?de:function(t){let e="";return t>65535&&(t-=65536,e+=String.fromCharCode(t>>>10&1023|55296),t=56320|t&1023),e+=String.fromCharCode(t),e};function pr(t){var e;return t>=55296&&t<=57343||t>1114111?65533:(e=ba.get(t))!==null&&e!==void 0?e:t}var q;(function(t){t[t.NUM=35]="NUM",t[t.SEMI=59]="SEMI",t[t.EQUALS=61]="EQUALS",t[t.ZERO=48]="ZERO",t[t.NINE=57]="NINE",t[t.LOWER_A=97]="LOWER_A",t[t.LOWER_F=102]="LOWER_F",t[t.LOWER_X=120]="LOWER_X",t[t.LOWER_Z=122]="LOWER_Z",t[t.UPPER_A=65]="UPPER_A",t[t.UPPER_F=70]="UPPER_F",t[t.UPPER_Z=90]="UPPER_Z"})(q||(q={}));var wa=32,W;(function(t){t[t.VALUE_LENGTH=49152]="VALUE_LENGTH",t[t.BRANCH_LENGTH=16256]="BRANCH_LENGTH",t[t.JUMP_TABLE=127]="JUMP_TABLE"})(W||(W={}));function Be(t){return t>=q.ZERO&&t<=q.NINE}function ya(t){return t>=q.UPPER_A&&t<=q.UPPER_F||t>=q.LOWER_A&&t<=q.LOWER_F}function Fa(t){return t>=q.UPPER_A&&t<=q.UPPER_Z||t>=q.LOWER_A&&t<=q.LOWER_Z||Be(t)}function va(t){return t===q.EQUALS||Fa(t)}var R;(function(t){t[t.EntityStart=0]="EntityStart",t[t.NumericStart=1]="NumericStart",t[t.NumericDecimal=2]="NumericDecimal",t[t.NumericHex=3]="NumericHex",t[t.NamedEntity=4]="NamedEntity"})(R||(R={}));var nt;(function(t){t[t.Legacy=0]="Legacy",t[t.Strict=1]="Strict",t[t.Attribute=2]="Attribute"})(nt||(nt={}));var ka=class{constructor(t,e,u){this.decodeTree=t,this.emitCodePoint=e,this.errors=u,this.state=R.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=nt.Strict}startEntity(t){this.decodeMode=t,this.state=R.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1}write(t,e){switch(this.state){case R.EntityStart:return t.charCodeAt(e)===q.NUM?(this.state=R.NumericStart,this.consumed+=1,this.stateNumericStart(t,e+1)):(this.state=R.NamedEntity,this.stateNamedEntity(t,e));case R.NumericStart:return this.stateNumericStart(t,e);case R.NumericDecimal:return this.stateNumericDecimal(t,e);case R.NumericHex:return this.stateNumericHex(t,e);case R.NamedEntity:return this.stateNamedEntity(t,e)}}stateNumericStart(t,e){return e>=t.length?-1:(t.charCodeAt(e)|wa)===q.LOWER_X?(this.state=R.NumericHex,this.consumed+=1,this.stateNumericHex(t,e+1)):(this.state=R.NumericDecimal,this.stateNumericDecimal(t,e))}addToNumericResult(t,e,u,i){if(e!==u){let r=u-e;this.result=this.result*Math.pow(i,r)+parseInt(t.substr(e,r),i),this.consumed+=r}}stateNumericHex(t,e){let u=e;for(;e<t.length;){let i=t.charCodeAt(e);if(Be(i)||ya(i))e+=1;else return this.addToNumericResult(t,u,e,16),this.emitNumericEntity(i,3)}return this.addToNumericResult(t,u,e,16),-1}stateNumericDecimal(t,e){let u=e;for(;e<t.length;){let i=t.charCodeAt(e);if(Be(i))e+=1;else return this.addToNumericResult(t,u,e,10),this.emitNumericEntity(i,2)}return this.addToNumericResult(t,u,e,10),-1}emitNumericEntity(t,e){var u;if(this.consumed<=e)return(u=this.errors)===null||u===void 0||u.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(t===q.SEMI)this.consumed+=1;else if(this.decodeMode===nt.Strict)return 0;return this.emitCodePoint(pr(this.result),this.consumed),this.errors&&(t!==q.SEMI&&this.errors.missingSemicolonAfterCharacterReference(),this.errors.validateNumericCharacterReference(this.result)),this.consumed}stateNamedEntity(t,e){let{decodeTree:u}=this,i=u[this.treeIndex],r=(i&W.VALUE_LENGTH)>>14;for(;e<t.length;e++,this.excess++){let n=t.charCodeAt(e);if(this.treeIndex=gr(u,i,this.treeIndex+Math.max(1,r),n),this.treeIndex<0)return this.result===0||this.decodeMode===nt.Attribute&&(r===0||va(n))?0:this.emitNotTerminatedNamedEntity();if(i=u[this.treeIndex],r=(i&W.VALUE_LENGTH)>>14,r!==0){if(n===q.SEMI)return this.emitNamedEntityData(this.treeIndex,r,this.consumed+this.excess);this.decodeMode!==nt.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return-1}emitNotTerminatedNamedEntity(){var t;let{result:e,decodeTree:u}=this,i=(u[e]&W.VALUE_LENGTH)>>14;return this.emitNamedEntityData(e,i,this.consumed),(t=this.errors)===null||t===void 0||t.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(t,e,u){let{decodeTree:i}=this;return this.emitCodePoint(e===1?i[t]&~W.VALUE_LENGTH:i[t+1],u),e===3&&this.emitCodePoint(i[t+2],u),u}end(){var t;switch(this.state){case R.NamedEntity:return this.result!==0&&(this.decodeMode!==nt.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case R.NumericDecimal:return this.emitNumericEntity(0,2);case R.NumericHex:return this.emitNumericEntity(0,3);case R.NumericStart:return(t=this.errors)===null||t===void 0||t.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case R.EntityStart:return 0}}};function fr(t){let e="",u=new ka(t,i=>e+=Ee(i));return function(i,r){let n=0,a=0;for(;(a=i.indexOf("&",a))>=0;){e+=i.slice(n,a),u.startEntity(r);let o=u.write(i,a+1);if(o<0){n=a+u.end();break}n=a+o,a=o===0?n+1:n}let s=e+i.slice(n);return e="",s}}function gr(t,e,u,i){let r=(e&W.BRANCH_LENGTH)>>7,n=e&W.JUMP_TABLE;if(r===0)return n!==0&&i===n?u:-1;if(n){let o=i-n;return o<0||o>=r?-1:t[u+o]-1}let a=u,s=a+r-1;for(;a<=s;){let o=a+s>>>1,l=t[o];if(l<i)a=o+1;else if(l>i)s=o-1;else return t[o+r]}return-1}var F0=fr(hr),v0=fr(dr),D;(function(t){t[t.Tab=9]="Tab",t[t.NewLine=10]="NewLine",t[t.FormFeed=12]="FormFeed",t[t.CarriageReturn=13]="CarriageReturn",t[t.Space=32]="Space",t[t.ExclamationMark=33]="ExclamationMark",t[t.Number=35]="Number",t[t.Amp=38]="Amp",t[t.SingleQuote=39]="SingleQuote",t[t.DoubleQuote=34]="DoubleQuote",t[t.Dash=45]="Dash",t[t.Slash=47]="Slash",t[t.Zero=48]="Zero",t[t.Nine=57]="Nine",t[t.Semi=59]="Semi",t[t.Lt=60]="Lt",t[t.Eq=61]="Eq",t[t.Gt=62]="Gt",t[t.Questionmark=63]="Questionmark",t[t.UpperA=65]="UpperA",t[t.LowerA=97]="LowerA",t[t.UpperF=70]="UpperF",t[t.LowerF=102]="LowerF",t[t.UpperZ=90]="UpperZ",t[t.LowerZ=122]="LowerZ",t[t.LowerX=120]="LowerX",t[t.OpeningSquareBracket=91]="OpeningSquareBracket"})(D||(D={}));var f;(function(t){t[t.Text=1]="Text",t[t.BeforeTagName=2]="BeforeTagName",t[t.InTagName=3]="InTagName",t[t.InSelfClosingTag=4]="InSelfClosingTag",t[t.BeforeClosingTagName=5]="BeforeClosingTagName",t[t.InClosingTagName=6]="InClosingTagName",t[t.AfterClosingTagName=7]="AfterClosingTagName",t[t.BeforeAttributeName=8]="BeforeAttributeName",t[t.InAttributeName=9]="InAttributeName",t[t.AfterAttributeName=10]="AfterAttributeName",t[t.BeforeAttributeValue=11]="BeforeAttributeValue",t[t.InAttributeValueDq=12]="InAttributeValueDq",t[t.InAttributeValueSq=13]="InAttributeValueSq",t[t.InAttributeValueNq=14]="InAttributeValueNq",t[t.BeforeDeclaration=15]="BeforeDeclaration",t[t.InDeclaration=16]="InDeclaration",t[t.InProcessingInstruction=17]="InProcessingInstruction",t[t.BeforeComment=18]="BeforeComment",t[t.CDATASequence=19]="CDATASequence",t[t.InSpecialComment=20]="InSpecialComment",t[t.InCommentLike=21]="InCommentLike",t[t.BeforeSpecialS=22]="BeforeSpecialS",t[t.SpecialStartSequence=23]="SpecialStartSequence",t[t.InSpecialTag=24]="InSpecialTag",t[t.BeforeEntity=25]="BeforeEntity",t[t.BeforeNumericEntity=26]="BeforeNumericEntity",t[t.InNamedEntity=27]="InNamedEntity",t[t.InNumericEntity=28]="InNumericEntity",t[t.InHexEntity=29]="InHexEntity"})(f||(f={}));function X(t){return t===D.Space||t===D.NewLine||t===D.Tab||t===D.FormFeed||t===D.CarriageReturn}function It(t){return t===D.Slash||t===D.Gt||X(t)}function Ei(t){return t>=D.Zero&&t<=D.Nine}function Sa(t){return t>=D.LowerA&&t<=D.LowerZ||t>=D.UpperA&&t<=D.UpperZ}function Ta(t){return t>=D.UpperA&&t<=D.UpperF||t>=D.LowerA&&t<=D.LowerF}var z;(function(t){t[t.NoValue=0]="NoValue",t[t.Unquoted=1]="Unquoted",t[t.Single=2]="Single",t[t.Double=3]="Double"})(z||(z={}));var j={Cdata:new Uint8Array([67,68,65,84,65,91]),CdataEnd:new Uint8Array([93,93,62]),CommentEnd:new Uint8Array([45,45,62]),ScriptEnd:new Uint8Array([60,47,115,99,114,105,112,116]),StyleEnd:new Uint8Array([60,47,115,116,121,108,101]),TitleEnd:new Uint8Array([60,47,116,105,116,108,101])},La=class{constructor({xmlMode:t=!1,decodeEntities:e=!0},u){this.cbs=u,this.state=f.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=f.Text,this.isSpecial=!1,this.running=!0,this.offset=0,this.currentSequence=void 0,this.sequenceIndex=0,this.trieIndex=0,this.trieCurrent=0,this.entityResult=0,this.entityExcess=0,this.xmlMode=t,this.decodeEntities=e,this.entityTrie=t?dr:hr}reset(){this.state=f.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=f.Text,this.currentSequence=void 0,this.running=!0,this.offset=0}write(t){this.offset+=this.buffer.length,this.buffer=t,this.parse()}end(){this.running&&this.finish()}pause(){this.running=!1}resume(){this.running=!0,this.index<this.buffer.length+this.offset&&this.parse()}getIndex(){return this.index}getSectionStart(){return this.sectionStart}stateText(t){t===D.Lt||!this.decodeEntities&&this.fastForwardTo(D.Lt)?(this.index>this.sectionStart&&this.cbs.ontext(this.sectionStart,this.index),this.state=f.BeforeTagName,this.sectionStart=this.index):this.decodeEntities&&t===D.Amp&&(this.state=f.BeforeEntity)}stateSpecialStartSequence(t){let e=this.sequenceIndex===this.currentSequence.length;if(!(e?It(t):(t|32)===this.currentSequence[this.sequenceIndex]))this.isSpecial=!1;else if(!e){this.sequenceIndex++;return}this.sequenceIndex=0,this.state=f.InTagName,this.stateInTagName(t)}stateInSpecialTag(t){if(this.sequenceIndex===this.currentSequence.length){if(t===D.Gt||X(t)){let e=this.index-this.currentSequence.length;if(this.sectionStart<e){let u=this.index;this.index=e,this.cbs.ontext(this.sectionStart,e),this.index=u}this.isSpecial=!1,this.sectionStart=e+2,this.stateInClosingTagName(t);return}this.sequenceIndex=0}(t|32)===this.currentSequence[this.sequenceIndex]?this.sequenceIndex+=1:this.sequenceIndex===0?this.currentSequence===j.TitleEnd?this.decodeEntities&&t===D.Amp&&(this.state=f.BeforeEntity):this.fastForwardTo(D.Lt)&&(this.sequenceIndex=1):this.sequenceIndex=+(t===D.Lt)}stateCDATASequence(t){t===j.Cdata[this.sequenceIndex]?++this.sequenceIndex===j.Cdata.length&&(this.state=f.InCommentLike,this.currentSequence=j.CdataEnd,this.sequenceIndex=0,this.sectionStart=this.index+1):(this.sequenceIndex=0,this.state=f.InDeclaration,this.stateInDeclaration(t))}fastForwardTo(t){for(;++this.index<this.buffer.length+this.offset;)if(this.buffer.charCodeAt(this.index-this.offset)===t)return!0;return this.index=this.buffer.length+this.offset-1,!1}stateInCommentLike(t){t===this.currentSequence[this.sequenceIndex]?++this.sequenceIndex===this.currentSequence.length&&(this.currentSequence===j.CdataEnd?this.cbs.oncdata(this.sectionStart,this.index,2):this.cbs.oncomment(this.sectionStart,this.index,2),this.sequenceIndex=0,this.sectionStart=this.index+1,this.state=f.Text):this.sequenceIndex===0?this.fastForwardTo(this.currentSequence[0])&&(this.sequenceIndex=1):t!==this.currentSequence[this.sequenceIndex-1]&&(this.sequenceIndex=0)}isTagStartChar(t){return this.xmlMode?!It(t):Sa(t)}startSpecial(t,e){this.isSpecial=!0,this.currentSequence=t,this.sequenceIndex=e,this.state=f.SpecialStartSequence}stateBeforeTagName(t){if(t===D.ExclamationMark)this.state=f.BeforeDeclaration,this.sectionStart=this.index+1;else if(t===D.Questionmark)this.state=f.InProcessingInstruction,this.sectionStart=this.index+1;else if(this.isTagStartChar(t)){let e=t|32;this.sectionStart=this.index,!this.xmlMode&&e===j.TitleEnd[2]?this.startSpecial(j.TitleEnd,3):this.state=!this.xmlMode&&e===j.ScriptEnd[2]?f.BeforeSpecialS:f.InTagName}else t===D.Slash?this.state=f.BeforeClosingTagName:(this.state=f.Text,this.stateText(t))}stateInTagName(t){It(t)&&(this.cbs.onopentagname(this.sectionStart,this.index),this.sectionStart=-1,this.state=f.BeforeAttributeName,this.stateBeforeAttributeName(t))}stateBeforeClosingTagName(t){X(t)||(t===D.Gt?this.state=f.Text:(this.state=this.isTagStartChar(t)?f.InClosingTagName:f.InSpecialComment,this.sectionStart=this.index))}stateInClosingTagName(t){(t===D.Gt||X(t))&&(this.cbs.onclosetag(this.sectionStart,this.index),this.sectionStart=-1,this.state=f.AfterClosingTagName,this.stateAfterClosingTagName(t))}stateAfterClosingTagName(t){(t===D.Gt||this.fastForwardTo(D.Gt))&&(this.state=f.Text,this.baseState=f.Text,this.sectionStart=this.index+1)}stateBeforeAttributeName(t){t===D.Gt?(this.cbs.onopentagend(this.index),this.isSpecial?(this.state=f.InSpecialTag,this.sequenceIndex=0):this.state=f.Text,this.baseState=this.state,this.sectionStart=this.index+1):t===D.Slash?this.state=f.InSelfClosingTag:X(t)||(this.state=f.InAttributeName,this.sectionStart=this.index)}stateInSelfClosingTag(t){t===D.Gt?(this.cbs.onselfclosingtag(this.index),this.state=f.Text,this.baseState=f.Text,this.sectionStart=this.index+1,this.isSpecial=!1):X(t)||(this.state=f.BeforeAttributeName,this.stateBeforeAttributeName(t))}stateInAttributeName(t){(t===D.Eq||It(t))&&(this.cbs.onattribname(this.sectionStart,this.index),this.sectionStart=-1,this.state=f.AfterAttributeName,this.stateAfterAttributeName(t))}stateAfterAttributeName(t){t===D.Eq?this.state=f.BeforeAttributeValue:t===D.Slash||t===D.Gt?(this.cbs.onattribend(z.NoValue,this.index),this.state=f.BeforeAttributeName,this.stateBeforeAttributeName(t)):X(t)||(this.cbs.onattribend(z.NoValue,this.index),this.state=f.InAttributeName,this.sectionStart=this.index)}stateBeforeAttributeValue(t){t===D.DoubleQuote?(this.state=f.InAttributeValueDq,this.sectionStart=this.index+1):t===D.SingleQuote?(this.state=f.InAttributeValueSq,this.sectionStart=this.index+1):X(t)||(this.sectionStart=this.index,this.state=f.InAttributeValueNq,this.stateInAttributeValueNoQuotes(t))}handleInAttributeValue(t,e){t===e||!this.decodeEntities&&this.fastForwardTo(e)?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(e===D.DoubleQuote?z.Double:z.Single,this.index),this.state=f.BeforeAttributeName):this.decodeEntities&&t===D.Amp&&(this.baseState=this.state,this.state=f.BeforeEntity)}stateInAttributeValueDoubleQuotes(t){this.handleInAttributeValue(t,D.DoubleQuote)}stateInAttributeValueSingleQuotes(t){this.handleInAttributeValue(t,D.SingleQuote)}stateInAttributeValueNoQuotes(t){X(t)||t===D.Gt?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(z.Unquoted,this.index),this.state=f.BeforeAttributeName,this.stateBeforeAttributeName(t)):this.decodeEntities&&t===D.Amp&&(this.baseState=this.state,this.state=f.BeforeEntity)}stateBeforeDeclaration(t){t===D.OpeningSquareBracket?(this.state=f.CDATASequence,this.sequenceIndex=0):this.state=t===D.Dash?f.BeforeComment:f.InDeclaration}stateInDeclaration(t){(t===D.Gt||this.fastForwardTo(D.Gt))&&(this.cbs.ondeclaration(this.sectionStart,this.index),this.state=f.Text,this.sectionStart=this.index+1)}stateInProcessingInstruction(t){(t===D.Gt||this.fastForwardTo(D.Gt))&&(this.cbs.onprocessinginstruction(this.sectionStart,this.index),this.state=f.Text,this.sectionStart=this.index+1)}stateBeforeComment(t){t===D.Dash?(this.state=f.InCommentLike,this.currentSequence=j.CommentEnd,this.sequenceIndex=2,this.sectionStart=this.index+1):this.state=f.InDeclaration}stateInSpecialComment(t){(t===D.Gt||this.fastForwardTo(D.Gt))&&(this.cbs.oncomment(this.sectionStart,this.index,0),this.state=f.Text,this.sectionStart=this.index+1)}stateBeforeSpecialS(t){let e=t|32;e===j.ScriptEnd[3]?this.startSpecial(j.ScriptEnd,4):e===j.StyleEnd[3]?this.startSpecial(j.StyleEnd,4):(this.state=f.InTagName,this.stateInTagName(t))}stateBeforeEntity(t){this.entityExcess=1,this.entityResult=0,t===D.Number?this.state=f.BeforeNumericEntity:t===D.Amp||(this.trieIndex=0,this.trieCurrent=this.entityTrie[0],this.state=f.InNamedEntity,this.stateInNamedEntity(t))}stateInNamedEntity(t){if(this.entityExcess+=1,this.trieIndex=gr(this.entityTrie,this.trieCurrent,this.trieIndex+1,t),this.trieIndex<0){this.emitNamedEntity(),this.index--;return}this.trieCurrent=this.entityTrie[this.trieIndex];let e=this.trieCurrent&W.VALUE_LENGTH;if(e){let u=(e>>14)-1;if(!this.allowLegacyEntity()&&t!==D.Semi)this.trieIndex+=u;else{let i=this.index-this.entityExcess+1;i>this.sectionStart&&this.emitPartial(this.sectionStart,i),this.entityResult=this.trieIndex,this.trieIndex+=u,this.entityExcess=0,this.sectionStart=this.index+1,u===0&&this.emitNamedEntity()}}}emitNamedEntity(){if(this.state=this.baseState,this.entityResult!==0)switch((this.entityTrie[this.entityResult]&W.VALUE_LENGTH)>>14){case 1:{this.emitCodePoint(this.entityTrie[this.entityResult]&~W.VALUE_LENGTH);break}case 2:{this.emitCodePoint(this.entityTrie[this.entityResult+1]);break}case 3:this.emitCodePoint(this.entityTrie[this.entityResult+1]),this.emitCodePoint(this.entityTrie[this.entityResult+2])}}stateBeforeNumericEntity(t){(t|32)===D.LowerX?(this.entityExcess++,this.state=f.InHexEntity):(this.state=f.InNumericEntity,this.stateInNumericEntity(t))}emitNumericEntity(t){let e=this.index-this.entityExcess-1;e+2+ +(this.state===f.InHexEntity)!==this.index&&(e>this.sectionStart&&this.emitPartial(this.sectionStart,e),this.sectionStart=this.index+Number(t),this.emitCodePoint(pr(this.entityResult))),this.state=this.baseState}stateInNumericEntity(t){t===D.Semi?this.emitNumericEntity(!0):Ei(t)?(this.entityResult=this.entityResult*10+(t-D.Zero),this.entityExcess++):(this.allowLegacyEntity()?this.emitNumericEntity(!1):this.state=this.baseState,this.index--)}stateInHexEntity(t){t===D.Semi?this.emitNumericEntity(!0):Ei(t)?(this.entityResult=this.entityResult*16+(t-D.Zero),this.entityExcess++):Ta(t)?(this.entityResult=this.entityResult*16+((t|32)-D.LowerA+10),this.entityExcess++):(this.allowLegacyEntity()?this.emitNumericEntity(!1):this.state=this.baseState,this.index--)}allowLegacyEntity(){return!this.xmlMode&&(this.baseState===f.Text||this.baseState===f.InSpecialTag)}cleanup(){this.running&&this.sectionStart!==this.index&&(this.state===f.Text||this.state===f.InSpecialTag&&this.sequenceIndex===0?(this.cbs.ontext(this.sectionStart,this.index),this.sectionStart=this.index):(this.state===f.InAttributeValueDq||this.state===f.InAttributeValueSq||this.state===f.InAttributeValueNq)&&(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=this.index))}shouldContinue(){return this.index<this.buffer.length+this.offset&&this.running}parse(){for(;this.shouldContinue();){let t=this.buffer.charCodeAt(this.index-this.offset);switch(this.state){case f.Text:{this.stateText(t);break}case f.SpecialStartSequence:{this.stateSpecialStartSequence(t);break}case f.InSpecialTag:{this.stateInSpecialTag(t);break}case f.CDATASequence:{this.stateCDATASequence(t);break}case f.InAttributeValueDq:{this.stateInAttributeValueDoubleQuotes(t);break}case f.InAttributeName:{this.stateInAttributeName(t);break}case f.InCommentLike:{this.stateInCommentLike(t);break}case f.InSpecialComment:{this.stateInSpecialComment(t);break}case f.BeforeAttributeName:{this.stateBeforeAttributeName(t);break}case f.InTagName:{this.stateInTagName(t);break}case f.InClosingTagName:{this.stateInClosingTagName(t);break}case f.BeforeTagName:{this.stateBeforeTagName(t);break}case f.AfterAttributeName:{this.stateAfterAttributeName(t);break}case f.InAttributeValueSq:{this.stateInAttributeValueSingleQuotes(t);break}case f.BeforeAttributeValue:{this.stateBeforeAttributeValue(t);break}case f.BeforeClosingTagName:{this.stateBeforeClosingTagName(t);break}case f.AfterClosingTagName:{this.stateAfterClosingTagName(t);break}case f.BeforeSpecialS:{this.stateBeforeSpecialS(t);break}case f.InAttributeValueNq:{this.stateInAttributeValueNoQuotes(t);break}case f.InSelfClosingTag:{this.stateInSelfClosingTag(t);break}case f.InDeclaration:{this.stateInDeclaration(t);break}case f.BeforeDeclaration:{this.stateBeforeDeclaration(t);break}case f.BeforeComment:{this.stateBeforeComment(t);break}case f.InProcessingInstruction:{this.stateInProcessingInstruction(t);break}case f.InNamedEntity:{this.stateInNamedEntity(t);break}case f.BeforeEntity:{this.stateBeforeEntity(t);break}case f.InHexEntity:{this.stateInHexEntity(t);break}case f.InNumericEntity:{this.stateInNumericEntity(t);break}default:this.stateBeforeNumericEntity(t)}this.index++}this.cleanup()}finish(){this.state===f.InNamedEntity&&this.emitNamedEntity(),this.sectionStart<this.index&&this.handleTrailingData(),this.cbs.onend()}handleTrailingData(){let t=this.buffer.length+this.offset;this.state===f.InCommentLike?this.currentSequence===j.CdataEnd?this.cbs.oncdata(this.sectionStart,t,0):this.cbs.oncomment(this.sectionStart,t,0):this.state===f.InNumericEntity&&this.allowLegacyEntity()?this.emitNumericEntity(!1):this.state===f.InHexEntity&&this.allowLegacyEntity()?this.emitNumericEntity(!1):this.state===f.InTagName||this.state===f.BeforeAttributeName||this.state===f.BeforeAttributeValue||this.state===f.AfterAttributeName||this.state===f.InAttributeName||this.state===f.InAttributeValueSq||this.state===f.InAttributeValueDq||this.state===f.InAttributeValueNq||this.state===f.InClosingTagName||this.cbs.ontext(this.sectionStart,t)}emitPartial(t,e){this.baseState!==f.Text&&this.baseState!==f.InSpecialTag?this.cbs.onattribdata(t,e):this.cbs.ontext(t,e)}emitCodePoint(t){this.baseState!==f.Text&&this.baseState!==f.InSpecialTag?this.cbs.onattribentity(t):this.cbs.ontextentity(t)}},dt=new Set(["input","option","optgroup","select","button","datalist","textarea"]),L=new Set(["p"]),Bi=new Set(["thead","tbody"]),Ci=new Set(["dd","dt"]),Di=new Set(["rt","rp"]),Ia=new Map([["tr",new Set(["tr","th","td"])],["th",new Set(["th"])],["td",new Set(["thead","th","td"])],["body",new Set(["head","link","script"])],["li",new Set(["li"])],["p",L],["h1",L],["h2",L],["h3",L],["h4",L],["h5",L],["h6",L],["select",dt],["input",dt],["output",dt],["button",dt],["datalist",dt],["textarea",dt],["option",new Set(["option"])],["optgroup",new Set(["optgroup","option"])],["dd",Ci],["dt",Ci],["address",L],["article",L],["aside",L],["blockquote",L],["details",L],["div",L],["dl",L],["fieldset",L],["figcaption",L],["figure",L],["footer",L],["form",L],["header",L],["hr",L],["main",L],["nav",L],["ol",L],["pre",L],["section",L],["table",L],["ul",L],["rt",Di],["rp",Di],["tbody",Bi],["tfoot",Bi]]),_a=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]),bi=new Set(["math","svg"]),wi=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignobject","desc","title"]),Na=/\s|\//,$a=class{constructor(t,e={}){var u,i,r,n,a;this.options=e,this.startIndex=0,this.endIndex=0,this.openTagStart=0,this.tagname="",this.attribname="",this.attribvalue="",this.attribs=null,this.stack=[],this.foreignContext=[],this.buffers=[],this.bufferOffset=0,this.writeIndex=0,this.ended=!1,this.cbs=t??{},this.lowerCaseTagNames=(u=e.lowerCaseTags)!==null&&u!==void 0?u:!e.xmlMode,this.lowerCaseAttributeNames=(i=e.lowerCaseAttributeNames)!==null&&i!==void 0?i:!e.xmlMode,this.tokenizer=new((r=e.Tokenizer)!==null&&r!==void 0?r:La)(this.options,this),(a=(n=this.cbs).onparserinit)===null||a===void 0||a.call(n,this)}ontext(t,e){var u,i;let r=this.getSlice(t,e);this.endIndex=e-1,(i=(u=this.cbs).ontext)===null||i===void 0||i.call(u,r),this.startIndex=e}ontextentity(t){var e,u;let i=this.tokenizer.getSectionStart();this.endIndex=i-1,(u=(e=this.cbs).ontext)===null||u===void 0||u.call(e,Ee(t)),this.startIndex=i}isVoidElement(t){return!this.options.xmlMode&&_a.has(t)}onopentagname(t,e){this.endIndex=e;let u=this.getSlice(t,e);this.lowerCaseTagNames&&(u=u.toLowerCase()),this.emitOpenTag(u)}emitOpenTag(t){var e,u,i,r;this.openTagStart=this.startIndex,this.tagname=t;let n=!this.options.xmlMode&&Ia.get(t);if(n)for(;this.stack.length>0&&n.has(this.stack[this.stack.length-1]);){let a=this.stack.pop();(u=(e=this.cbs).onclosetag)===null||u===void 0||u.call(e,a,!0)}this.isVoidElement(t)||(this.stack.push(t),bi.has(t)?this.foreignContext.push(!0):wi.has(t)&&this.foreignContext.push(!1)),(r=(i=this.cbs).onopentagname)===null||r===void 0||r.call(i,t),this.cbs.onopentag&&(this.attribs={})}endOpenTag(t){var e,u;this.startIndex=this.openTagStart,this.attribs&&((u=(e=this.cbs).onopentag)===null||u===void 0||u.call(e,this.tagname,this.attribs,t),this.attribs=null),this.cbs.onclosetag&&this.isVoidElement(this.tagname)&&this.cbs.onclosetag(this.tagname,!0),this.tagname=""}onopentagend(t){this.endIndex=t,this.endOpenTag(!1),this.startIndex=t+1}onclosetag(t,e){var u,i,r,n,a,s;this.endIndex=e;let o=this.getSlice(t,e);if(this.lowerCaseTagNames&&(o=o.toLowerCase()),(bi.has(o)||wi.has(o))&&this.foreignContext.pop(),this.isVoidElement(o))!this.options.xmlMode&&o==="br"&&((i=(u=this.cbs).onopentagname)===null||i===void 0||i.call(u,"br"),(n=(r=this.cbs).onopentag)===null||n===void 0||n.call(r,"br",{},!0),(s=(a=this.cbs).onclosetag)===null||s===void 0||s.call(a,"br",!1));else{let l=this.stack.lastIndexOf(o);if(l!==-1)if(this.cbs.onclosetag){let d=this.stack.length-l;for(;d--;)this.cbs.onclosetag(this.stack.pop(),d!==0)}else this.stack.length=l;else!this.options.xmlMode&&o==="p"&&(this.emitOpenTag("p"),this.closeCurrentTag(!0))}this.startIndex=e+1}onselfclosingtag(t){this.endIndex=t,this.options.xmlMode||this.options.recognizeSelfClosing||this.foreignContext[this.foreignContext.length-1]?(this.closeCurrentTag(!1),this.startIndex=t+1):this.onopentagend(t)}closeCurrentTag(t){var e,u;let i=this.tagname;this.endOpenTag(t),this.stack[this.stack.length-1]===i&&((u=(e=this.cbs).onclosetag)===null||u===void 0||u.call(e,i,!t),this.stack.pop())}onattribname(t,e){this.startIndex=t;let u=this.getSlice(t,e);this.attribname=this.lowerCaseAttributeNames?u.toLowerCase():u}onattribdata(t,e){this.attribvalue+=this.getSlice(t,e)}onattribentity(t){this.attribvalue+=Ee(t)}onattribend(t,e){var u,i;this.endIndex=e,(i=(u=this.cbs).onattribute)===null||i===void 0||i.call(u,this.attribname,this.attribvalue,t===z.Double?'"':t===z.Single?"'":t===z.NoValue?void 0:null),this.attribs&&!Object.prototype.hasOwnProperty.call(this.attribs,this.attribname)&&(this.attribs[this.attribname]=this.attribvalue),this.attribvalue=""}getInstructionName(t){let e=t.search(Na),u=e<0?t:t.substr(0,e);return this.lowerCaseTagNames&&(u=u.toLowerCase()),u}ondeclaration(t,e){this.endIndex=e;let u=this.getSlice(t,e);if(this.cbs.onprocessinginstruction){let i=this.getInstructionName(u);this.cbs.onprocessinginstruction(`!${i}`,`!${u}`)}this.startIndex=e+1}onprocessinginstruction(t,e){this.endIndex=e;let u=this.getSlice(t,e);if(this.cbs.onprocessinginstruction){let i=this.getInstructionName(u);this.cbs.onprocessinginstruction(`?${i}`,`?${u}`)}this.startIndex=e+1}oncomment(t,e,u){var i,r,n,a;this.endIndex=e,(r=(i=this.cbs).oncomment)===null||r===void 0||r.call(i,this.getSlice(t,e-u)),(a=(n=this.cbs).oncommentend)===null||a===void 0||a.call(n),this.startIndex=e+1}oncdata(t,e,u){var i,r,n,a,s,o,l,d,E,B;this.endIndex=e;let m=this.getSlice(t,e-u);this.options.xmlMode||this.options.recognizeCDATA?((r=(i=this.cbs).oncdatastart)===null||r===void 0||r.call(i),(a=(n=this.cbs).ontext)===null||a===void 0||a.call(n,m),(o=(s=this.cbs).oncdataend)===null||o===void 0||o.call(s)):((d=(l=this.cbs).oncomment)===null||d===void 0||d.call(l,`[CDATA[${m}]]`),(B=(E=this.cbs).oncommentend)===null||B===void 0||B.call(E)),this.startIndex=e+1}onend(){var t,e;if(this.cbs.onclosetag){this.endIndex=this.startIndex;for(let u=this.stack.length;u>0;this.cbs.onclosetag(this.stack[--u],!0));}(e=(t=this.cbs).onend)===null||e===void 0||e.call(t)}reset(){var t,e,u,i;(e=(t=this.cbs).onreset)===null||e===void 0||e.call(t),this.tokenizer.reset(),this.tagname="",this.attribname="",this.attribs=null,this.stack.length=0,this.startIndex=0,this.endIndex=0,(i=(u=this.cbs).onparserinit)===null||i===void 0||i.call(u,this),this.buffers.length=0,this.bufferOffset=0,this.writeIndex=0,this.ended=!1}parseComplete(t){this.reset(),this.end(t)}getSlice(t,e){for(;t-this.bufferOffset>=this.buffers[0].length;)this.shiftBuffer();let u=this.buffers[0].slice(t-this.bufferOffset,e-this.bufferOffset);for(;e-this.bufferOffset>this.buffers[0].length;)this.shiftBuffer(),u+=this.buffers[0].slice(0,e-this.bufferOffset);return u}shiftBuffer(){this.bufferOffset+=this.buffers[0].length,this.writeIndex--,this.buffers.shift()}write(t){var e,u;if(this.ended){(u=(e=this.cbs).onerror)===null||u===void 0||u.call(e,new Error(".write() after done!"));return}this.buffers.push(t),this.tokenizer.running&&(this.tokenizer.write(t),this.writeIndex++)}end(t){var e,u;if(this.ended){(u=(e=this.cbs).onerror)===null||u===void 0||u.call(e,new Error(".end() after done!"));return}t&&this.write(t),this.ended=!0,this.tokenizer.end()}pause(){this.tokenizer.pause()}resume(){for(this.tokenizer.resume();this.tokenizer.running&&this.writeIndex<this.buffers.length;)this.tokenizer.write(this.buffers[this.writeIndex++]);this.ended&&this.tokenizer.end()}parseChunk(t){this.write(t)}done(t){this.end(t)}};function _t(t){for(let e=1;e<t.length;e++)t[e][0]+=t[e-1][0]+1;return t}var k0=new Map(_t([[9,"	"],[0,"
"],[22,"!"],[0,"""],[0,"#"],[0,"$"],[0,"%"],[0,"&"],[0,"'"],[0,"("],[0,")"],[0,"*"],[0,"+"],[0,","],[1,"."],[0,"/"],[10,":"],[0,";"],[0,{v:"<",n:8402,o:"<⃒"}],[0,{v:"=",n:8421,o:"=⃥"}],[0,{v:">",n:8402,o:">⃒"}],[0,"?"],[0,"@"],[26,"["],[0,"\"],[0,"]"],[0,"^"],[0,"_"],[0,"`"],[5,{n:106,o:"fj"}],[20,"{"],[0,"|"],[0,"}"],[34," "],[0,"¡"],[0,"¢"],[0,"£"],[0,"¤"],[0,"¥"],[0,"¦"],[0,"§"],[0,"¨"],[0,"©"],[0,"ª"],[0,"«"],[0,"¬"],[0,"­"],[0,"®"],[0,"¯"],[0,"°"],[0,"±"],[0,"²"],[0,"³"],[0,"´"],[0,"µ"],[0,"¶"],[0,"·"],[0,"¸"],[0,"¹"],[0,"º"],[0,"»"],[0,"¼"],[0,"½"],[0,"¾"],[0,"¿"],[0,"À"],[0,"Á"],[0,"Â"],[0,"Ã"],[0,"Ä"],[0,"Å"],[0,"Æ"],[0,"Ç"],[0,"È"],[0,"É"],[0,"Ê"],[0,"Ë"],[0,"Ì"],[0,"Í"],[0,"Î"],[0,"Ï"],[0,"Ð"],[0,"Ñ"],[0,"Ò"],[0,"Ó"],[0,"Ô"],[0,"Õ"],[0,"Ö"],[0,"×"],[0,"Ø"],[0,"Ù"],[0,"Ú"],[0,"Û"],[0,"Ü"],[0,"Ý"],[0,"Þ"],[0,"ß"],[0,"à"],[0,"á"],[0,"â"],[0,"ã"],[0,"ä"],[0,"å"],[0,"æ"],[0,"ç"],[0,"è"],[0,"é"],[0,"ê"],[0,"ë"],[0,"ì"],[0,"í"],[0,"î"],[0,"ï"],[0,"ð"],[0,"ñ"],[0,"ò"],[0,"ó"],[0,"ô"],[0,"õ"],[0,"ö"],[0,"÷"],[0,"ø"],[0,"ù"],[0,"ú"],[0,"û"],[0,"ü"],[0,"ý"],[0,"þ"],[0,"ÿ"],[0,"Ā"],[0,"ā"],[0,"Ă"],[0,"ă"],[0,"Ą"],[0,"ą"],[0,"Ć"],[0,"ć"],[0,"Ĉ"],[0,"ĉ"],[0,"Ċ"],[0,"ċ"],[0,"Č"],[0,"č"],[0,"Ď"],[0,"ď"],[0,"Đ"],[0,"đ"],[0,"Ē"],[0,"ē"],[2,"Ė"],[0,"ė"],[0,"Ę"],[0,"ę"],[0,"Ě"],[0,"ě"],[0,"Ĝ"],[0,"ĝ"],[0,"Ğ"],[0,"ğ"],[0,"Ġ"],[0,"ġ"],[0,"Ģ"],[1,"Ĥ"],[0,"ĥ"],[0,"Ħ"],[0,"ħ"],[0,"Ĩ"],[0,"ĩ"],[0,"Ī"],[0,"ī"],[2,"Į"],[0,"į"],[0,"İ"],[0,"ı"],[0,"IJ"],[0,"ij"],[0,"Ĵ"],[0,"ĵ"],[0,"Ķ"],[0,"ķ"],[0,"ĸ"],[0,"Ĺ"],[0,"ĺ"],[0,"Ļ"],[0,"ļ"],[0,"Ľ"],[0,"ľ"],[0,"Ŀ"],[0,"ŀ"],[0,"Ł"],[0,"ł"],[0,"Ń"],[0,"ń"],[0,"Ņ"],[0,"ņ"],[0,"Ň"],[0,"ň"],[0,"ʼn"],[0,"Ŋ"],[0,"ŋ"],[0,"Ō"],[0,"ō"],[2,"Ő"],[0,"ő"],[0,"Œ"],[0,"œ"],[0,"Ŕ"],[0,"ŕ"],[0,"Ŗ"],[0,"ŗ"],[0,"Ř"],[0,"ř"],[0,"Ś"],[0,"ś"],[0,"Ŝ"],[0,"ŝ"],[0,"Ş"],[0,"ş"],[0,"Š"],[0,"š"],[0,"Ţ"],[0,"ţ"],[0,"Ť"],[0,"ť"],[0,"Ŧ"],[0,"ŧ"],[0,"Ũ"],[0,"ũ"],[0,"Ū"],[0,"ū"],[0,"Ŭ"],[0,"ŭ"],[0,"Ů"],[0,"ů"],[0,"Ű"],[0,"ű"],[0,"Ų"],[0,"ų"],[0,"Ŵ"],[0,"ŵ"],[0,"Ŷ"],[0,"ŷ"],[0,"Ÿ"],[0,"Ź"],[0,"ź"],[0,"Ż"],[0,"ż"],[0,"Ž"],[0,"ž"],[19,"ƒ"],[34,"Ƶ"],[63,"ǵ"],[65,"ȷ"],[142,"ˆ"],[0,"ˇ"],[16,"˘"],[0,"˙"],[0,"˚"],[0,"˛"],[0,"˜"],[0,"˝"],[51,"̑"],[127,"Α"],[0,"Β"],[0,"Γ"],[0,"Δ"],[0,"Ε"],[0,"Ζ"],[0,"Η"],[0,"Θ"],[0,"Ι"],[0,"Κ"],[0,"Λ"],[0,"Μ"],[0,"Ν"],[0,"Ξ"],[0,"Ο"],[0,"Π"],[0,"Ρ"],[1,"Σ"],[0,"Τ"],[0,"Υ"],[0,"Φ"],[0,"Χ"],[0,"Ψ"],[0,"Ω"],[7,"α"],[0,"β"],[0,"γ"],[0,"δ"],[0,"ε"],[0,"ζ"],[0,"η"],[0,"θ"],[0,"ι"],[0,"κ"],[0,"λ"],[0,"μ"],[0,"ν"],[0,"ξ"],[0,"ο"],[0,"π"],[0,"ρ"],[0,"ς"],[0,"σ"],[0,"τ"],[0,"υ"],[0,"φ"],[0,"χ"],[0,"ψ"],[0,"ω"],[7,"ϑ"],[0,"ϒ"],[2,"ϕ"],[0,"ϖ"],[5,"Ϝ"],[0,"ϝ"],[18,"ϰ"],[0,"ϱ"],[3,"ϵ"],[0,"϶"],[10,"Ё"],[0,"Ђ"],[0,"Ѓ"],[0,"Є"],[0,"Ѕ"],[0,"І"],[0,"Ї"],[0,"Ј"],[0,"Љ"],[0,"Њ"],[0,"Ћ"],[0,"Ќ"],[1,"Ў"],[0,"Џ"],[0,"А"],[0,"Б"],[0,"В"],[0,"Г"],[0,"Д"],[0,"Е"],[0,"Ж"],[0,"З"],[0,"И"],[0,"Й"],[0,"К"],[0,"Л"],[0,"М"],[0,"Н"],[0,"О"],[0,"П"],[0,"Р"],[0,"С"],[0,"Т"],[0,"У"],[0,"Ф"],[0,"Х"],[0,"Ц"],[0,"Ч"],[0,"Ш"],[0,"Щ"],[0,"Ъ"],[0,"Ы"],[0,"Ь"],[0,"Э"],[0,"Ю"],[0,"Я"],[0,"а"],[0,"б"],[0,"в"],[0,"г"],[0,"д"],[0,"е"],[0,"ж"],[0,"з"],[0,"и"],[0,"й"],[0,"к"],[0,"л"],[0,"м"],[0,"н"],[0,"о"],[0,"п"],[0,"р"],[0,"с"],[0,"т"],[0,"у"],[0,"ф"],[0,"х"],[0,"ц"],[0,"ч"],[0,"ш"],[0,"щ"],[0,"ъ"],[0,"ы"],[0,"ь"],[0,"э"],[0,"ю"],[0,"я"],[1,"ё"],[0,"ђ"],[0,"ѓ"],[0,"є"],[0,"ѕ"],[0,"і"],[0,"ї"],[0,"ј"],[0,"љ"],[0,"њ"],[0,"ћ"],[0,"ќ"],[1,"ў"],[0,"џ"],[7074," "],[0," "],[0," "],[0," "],[1," "],[0," "],[0," "],[0," "],[0,"​"],[0,"‌"],[0,"‍"],[0,"‎"],[0,"‏"],[0,"‐"],[2,"–"],[0,"—"],[0,"―"],[0,"‖"],[1,"‘"],[0,"’"],[0,"‚"],[1,"“"],[0,"”"],[0,"„"],[1,"†"],[0,"‡"],[0,"•"],[2,"‥"],[0,"…"],[9,"‰"],[0,"‱"],[0,"′"],[0,"″"],[0,"‴"],[0,"‵"],[3,"‹"],[0,"›"],[3,"‾"],[2,"⁁"],[1,"⁃"],[0,"⁄"],[10,"⁏"],[7,"⁗"],[7,{v:" ",n:8202,o:"  "}],[0,"⁠"],[0,"⁡"],[0,"⁢"],[0,"⁣"],[72,"€"],[46,"⃛"],[0,"⃜"],[37,"ℂ"],[2,"℅"],[4,"ℊ"],[0,"ℋ"],[0,"ℌ"],[0,"ℍ"],[0,"ℎ"],[0,"ℏ"],[0,"ℐ"],[0,"ℑ"],[0,"ℒ"],[0,"ℓ"],[1,"ℕ"],[0,"№"],[0,"℗"],[0,"℘"],[0,"ℙ"],[0,"ℚ"],[0,"ℛ"],[0,"ℜ"],[0,"ℝ"],[0,"℞"],[3,"™"],[1,"ℤ"],[2,"℧"],[0,"ℨ"],[0,"℩"],[2,"ℬ"],[0,"ℭ"],[1,"ℯ"],[0,"ℰ"],[0,"ℱ"],[1,"ℳ"],[0,"ℴ"],[0,"ℵ"],[0,"ℶ"],[0,"ℷ"],[0,"ℸ"],[12,"ⅅ"],[0,"ⅆ"],[0,"ⅇ"],[0,"ⅈ"],[10,"⅓"],[0,"⅔"],[0,"⅕"],[0,"⅖"],[0,"⅗"],[0,"⅘"],[0,"⅙"],[0,"⅚"],[0,"⅛"],[0,"⅜"],[0,"⅝"],[0,"⅞"],[49,"←"],[0,"↑"],[0,"→"],[0,"↓"],[0,"↔"],[0,"↕"],[0,"↖"],[0,"↗"],[0,"↘"],[0,"↙"],[0,"↚"],[0,"↛"],[1,{v:"↝",n:824,o:"↝̸"}],[0,"↞"],[0,"↟"],[0,"↠"],[0,"↡"],[0,"↢"],[0,"↣"],[0,"↤"],[0,"↥"],[0,"↦"],[0,"↧"],[1,"↩"],[0,"↪"],[0,"↫"],[0,"↬"],[0,"↭"],[0,"↮"],[1,"↰"],[0,"↱"],[0,"↲"],[0,"↳"],[1,"↵"],[0,"↶"],[0,"↷"],[2,"↺"],[0,"↻"],[0,"↼"],[0,"↽"],[0,"↾"],[0,"↿"],[0,"⇀"],[0,"⇁"],[0,"⇂"],[0,"⇃"],[0,"⇄"],[0,"⇅"],[0,"⇆"],[0,"⇇"],[0,"⇈"],[0,"⇉"],[0,"⇊"],[0,"⇋"],[0,"⇌"],[0,"⇍"],[0,"⇎"],[0,"⇏"],[0,"⇐"],[0,"⇑"],[0,"⇒"],[0,"⇓"],[0,"⇔"],[0,"⇕"],[0,"⇖"],[0,"⇗"],[0,"⇘"],[0,"⇙"],[0,"⇚"],[0,"⇛"],[1,"⇝"],[6,"⇤"],[0,"⇥"],[15,"⇵"],[7,"⇽"],[0,"⇾"],[0,"⇿"],[0,"∀"],[0,"∁"],[0,{v:"∂",n:824,o:"∂̸"}],[0,"∃"],[0,"∄"],[0,"∅"],[1,"∇"],[0,"∈"],[0,"∉"],[1,"∋"],[0,"∌"],[2,"∏"],[0,"∐"],[0,"∑"],[0,"−"],[0,"∓"],[0,"∔"],[1,"∖"],[0,"∗"],[0,"∘"],[1,"√"],[2,"∝"],[0,"∞"],[0,"∟"],[0,{v:"∠",n:8402,o:"∠⃒"}],[0,"∡"],[0,"∢"],[0,"∣"],[0,"∤"],[0,"∥"],[0,"∦"],[0,"∧"],[0,"∨"],[0,{v:"∩",n:65024,o:"∩︀"}],[0,{v:"∪",n:65024,o:"∪︀"}],[0,"∫"],[0,"∬"],[0,"∭"],[0,"∮"],[0,"∯"],[0,"∰"],[0,"∱"],[0,"∲"],[0,"∳"],[0,"∴"],[0,"∵"],[0,"∶"],[0,"∷"],[0,"∸"],[1,"∺"],[0,"∻"],[0,{v:"∼",n:8402,o:"∼⃒"}],[0,{v:"∽",n:817,o:"∽̱"}],[0,{v:"∾",n:819,o:"∾̳"}],[0,"∿"],[0,"≀"],[0,"≁"],[0,{v:"≂",n:824,o:"≂̸"}],[0,"≃"],[0,"≄"],[0,"≅"],[0,"≆"],[0,"≇"],[0,"≈"],[0,"≉"],[0,"≊"],[0,{v:"≋",n:824,o:"≋̸"}],[0,"≌"],[0,{v:"≍",n:8402,o:"≍⃒"}],[0,{v:"≎",n:824,o:"≎̸"}],[0,{v:"≏",n:824,o:"≏̸"}],[0,{v:"≐",n:824,o:"≐̸"}],[0,"≑"],[0,"≒"],[0,"≓"],[0,"≔"],[0,"≕"],[0,"≖"],[0,"≗"],[1,"≙"],[0,"≚"],[1,"≜"],[2,"≟"],[0,"≠"],[0,{v:"≡",n:8421,o:"≡⃥"}],[0,"≢"],[1,{v:"≤",n:8402,o:"≤⃒"}],[0,{v:"≥",n:8402,o:"≥⃒"}],[0,{v:"≦",n:824,o:"≦̸"}],[0,{v:"≧",n:824,o:"≧̸"}],[0,{v:"≨",n:65024,o:"≨︀"}],[0,{v:"≩",n:65024,o:"≩︀"}],[0,{v:"≪",n:new Map(_t([[824,"≪̸"],[7577,"≪⃒"]]))}],[0,{v:"≫",n:new Map(_t([[824,"≫̸"],[7577,"≫⃒"]]))}],[0,"≬"],[0,"≭"],[0,"≮"],[0,"≯"],[0,"≰"],[0,"≱"],[0,"≲"],[0,"≳"],[0,"≴"],[0,"≵"],[0,"≶"],[0,"≷"],[0,"≸"],[0,"≹"],[0,"≺"],[0,"≻"],[0,"≼"],[0,"≽"],[0,"≾"],[0,{v:"≿",n:824,o:"≿̸"}],[0,"⊀"],[0,"⊁"],[0,{v:"⊂",n:8402,o:"⊂⃒"}],[0,{v:"⊃",n:8402,o:"⊃⃒"}],[0,"⊄"],[0,"⊅"],[0,"⊆"],[0,"⊇"],[0,"⊈"],[0,"⊉"],[0,{v:"⊊",n:65024,o:"⊊︀"}],[0,{v:"⊋",n:65024,o:"⊋︀"}],[1,"⊍"],[0,"⊎"],[0,{v:"⊏",n:824,o:"⊏̸"}],[0,{v:"⊐",n:824,o:"⊐̸"}],[0,"⊑"],[0,"⊒"],[0,{v:"⊓",n:65024,o:"⊓︀"}],[0,{v:"⊔",n:65024,o:"⊔︀"}],[0,"⊕"],[0,"⊖"],[0,"⊗"],[0,"⊘"],[0,"⊙"],[0,"⊚"],[0,"⊛"],[1,"⊝"],[0,"⊞"],[0,"⊟"],[0,"⊠"],[0,"⊡"],[0,"⊢"],[0,"⊣"],[0,"⊤"],[0,"⊥"],[1,"⊧"],[0,"⊨"],[0,"⊩"],[0,"⊪"],[0,"⊫"],[0,"⊬"],[0,"⊭"],[0,"⊮"],[0,"⊯"],[0,"⊰"],[1,"⊲"],[0,"⊳"],[0,{v:"⊴",n:8402,o:"⊴⃒"}],[0,{v:"⊵",n:8402,o:"⊵⃒"}],[0,"⊶"],[0,"⊷"],[0,"⊸"],[0,"⊹"],[0,"⊺"],[0,"⊻"],[1,"⊽"],[0,"⊾"],[0,"⊿"],[0,"⋀"],[0,"⋁"],[0,"⋂"],[0,"⋃"],[0,"⋄"],[0,"⋅"],[0,"⋆"],[0,"⋇"],[0,"⋈"],[0,"⋉"],[0,"⋊"],[0,"⋋"],[0,"⋌"],[0,"⋍"],[0,"⋎"],[0,"⋏"],[0,"⋐"],[0,"⋑"],[0,"⋒"],[0,"⋓"],[0,"⋔"],[0,"⋕"],[0,"⋖"],[0,"⋗"],[0,{v:"⋘",n:824,o:"⋘̸"}],[0,{v:"⋙",n:824,o:"⋙̸"}],[0,{v:"⋚",n:65024,o:"⋚︀"}],[0,{v:"⋛",n:65024,o:"⋛︀"}],[2,"⋞"],[0,"⋟"],[0,"⋠"],[0,"⋡"],[0,"⋢"],[0,"⋣"],[2,"⋦"],[0,"⋧"],[0,"⋨"],[0,"⋩"],[0,"⋪"],[0,"⋫"],[0,"⋬"],[0,"⋭"],[0,"⋮"],[0,"⋯"],[0,"⋰"],[0,"⋱"],[0,"⋲"],[0,"⋳"],[0,"⋴"],[0,{v:"⋵",n:824,o:"⋵̸"}],[0,"⋶"],[0,"⋷"],[1,{v:"⋹",n:824,o:"⋹̸"}],[0,"⋺"],[0,"⋻"],[0,"⋼"],[0,"⋽"],[0,"⋾"],[6,"⌅"],[0,"⌆"],[1,"⌈"],[0,"⌉"],[0,"⌊"],[0,"⌋"],[0,"⌌"],[0,"⌍"],[0,"⌎"],[0,"⌏"],[0,"⌐"],[1,"⌒"],[0,"⌓"],[1,"⌕"],[0,"⌖"],[5,"⌜"],[0,"⌝"],[0,"⌞"],[0,"⌟"],[2,"⌢"],[0,"⌣"],[9,"⌭"],[0,"⌮"],[7,"⌶"],[6,"⌽"],[1,"⌿"],[60,"⍼"],[51,"⎰"],[0,"⎱"],[2,"⎴"],[0,"⎵"],[0,"⎶"],[37,"⏜"],[0,"⏝"],[0,"⏞"],[0,"⏟"],[2,"⏢"],[4,"⏧"],[59,"␣"],[164,"Ⓢ"],[55,"─"],[1,"│"],[9,"┌"],[3,"┐"],[3,"└"],[3,"┘"],[3,"├"],[7,"┤"],[7,"┬"],[7,"┴"],[7,"┼"],[19,"═"],[0,"║"],[0,"╒"],[0,"╓"],[0,"╔"],[0,"╕"],[0,"╖"],[0,"╗"],[0,"╘"],[0,"╙"],[0,"╚"],[0,"╛"],[0,"╜"],[0,"╝"],[0,"╞"],[0,"╟"],[0,"╠"],[0,"╡"],[0,"╢"],[0,"╣"],[0,"╤"],[0,"╥"],[0,"╦"],[0,"╧"],[0,"╨"],[0,"╩"],[0,"╪"],[0,"╫"],[0,"╬"],[19,"▀"],[3,"▄"],[3,"█"],[8,"░"],[0,"▒"],[0,"▓"],[13,"□"],[8,"▪"],[0,"▫"],[1,"▭"],[0,"▮"],[2,"▱"],[1,"△"],[0,"▴"],[0,"▵"],[2,"▸"],[0,"▹"],[3,"▽"],[0,"▾"],[0,"▿"],[2,"◂"],[0,"◃"],[6,"◊"],[0,"○"],[32,"◬"],[2,"◯"],[8,"◸"],[0,"◹"],[0,"◺"],[0,"◻"],[0,"◼"],[8,"★"],[0,"☆"],[7,"☎"],[49,"♀"],[1,"♂"],[29,"♠"],[2,"♣"],[1,"♥"],[0,"♦"],[3,"♪"],[2,"♭"],[0,"♮"],[0,"♯"],[163,"✓"],[3,"✗"],[8,"✠"],[21,"✶"],[33,"❘"],[25,"❲"],[0,"❳"],[84,"⟈"],[0,"⟉"],[28,"⟦"],[0,"⟧"],[0,"⟨"],[0,"⟩"],[0,"⟪"],[0,"⟫"],[0,"⟬"],[0,"⟭"],[7,"⟵"],[0,"⟶"],[0,"⟷"],[0,"⟸"],[0,"⟹"],[0,"⟺"],[1,"⟼"],[2,"⟿"],[258,"⤂"],[0,"⤃"],[0,"⤄"],[0,"⤅"],[6,"⤌"],[0,"⤍"],[0,"⤎"],[0,"⤏"],[0,"⤐"],[0,"⤑"],[0,"⤒"],[0,"⤓"],[2,"⤖"],[2,"⤙"],[0,"⤚"],[0,"⤛"],[0,"⤜"],[0,"⤝"],[0,"⤞"],[0,"⤟"],[0,"⤠"],[2,"⤣"],[0,"⤤"],[0,"⤥"],[0,"⤦"],[0,"⤧"],[0,"⤨"],[0,"⤩"],[0,"⤪"],[8,{v:"⤳",n:824,o:"⤳̸"}],[1,"⤵"],[0,"⤶"],[0,"⤷"],[0,"⤸"],[0,"⤹"],[2,"⤼"],[0,"⤽"],[7,"⥅"],[2,"⥈"],[0,"⥉"],[0,"⥊"],[0,"⥋"],[2,"⥎"],[0,"⥏"],[0,"⥐"],[0,"⥑"],[0,"⥒"],[0,"⥓"],[0,"⥔"],[0,"⥕"],[0,"⥖"],[0,"⥗"],[0,"⥘"],[0,"⥙"],[0,"⥚"],[0,"⥛"],[0,"⥜"],[0,"⥝"],[0,"⥞"],[0,"⥟"],[0,"⥠"],[0,"⥡"],[0,"⥢"],[0,"⥣"],[0,"⥤"],[0,"⥥"],[0,"⥦"],[0,"⥧"],[0,"⥨"],[0,"⥩"],[0,"⥪"],[0,"⥫"],[0,"⥬"],[0,"⥭"],[0,"⥮"],[0,"⥯"],[0,"⥰"],[0,"⥱"],[0,"⥲"],[0,"⥳"],[0,"⥴"],[0,"⥵"],[0,"⥶"],[1,"⥸"],[0,"⥹"],[1,"⥻"],[0,"⥼"],[0,"⥽"],[0,"⥾"],[0,"⥿"],[5,"⦅"],[0,"⦆"],[4,"⦋"],[0,"⦌"],[0,"⦍"],[0,"⦎"],[0,"⦏"],[0,"⦐"],[0,"⦑"],[0,"⦒"],[0,"⦓"],[0,"⦔"],[0,"⦕"],[0,"⦖"],[3,"⦚"],[1,"⦜"],[0,"⦝"],[6,"⦤"],[0,"⦥"],[0,"⦦"],[0,"⦧"],[0,"⦨"],[0,"⦩"],[0,"⦪"],[0,"⦫"],[0,"⦬"],[0,"⦭"],[0,"⦮"],[0,"⦯"],[0,"⦰"],[0,"⦱"],[0,"⦲"],[0,"⦳"],[0,"⦴"],[0,"⦵"],[0,"⦶"],[0,"⦷"],[1,"⦹"],[1,"⦻"],[0,"⦼"],[1,"⦾"],[0,"⦿"],[0,"⧀"],[0,"⧁"],[0,"⧂"],[0,"⧃"],[0,"⧄"],[0,"⧅"],[3,"⧉"],[3,"⧍"],[0,"⧎"],[0,{v:"⧏",n:824,o:"⧏̸"}],[0,{v:"⧐",n:824,o:"⧐̸"}],[11,"⧜"],[0,"⧝"],[0,"⧞"],[4,"⧣"],[0,"⧤"],[0,"⧥"],[5,"⧫"],[8,"⧴"],[1,"⧶"],[9,"⨀"],[0,"⨁"],[0,"⨂"],[1,"⨄"],[1,"⨆"],[5,"⨌"],[0,"⨍"],[2,"⨐"],[0,"⨑"],[0,"⨒"],[0,"⨓"],[0,"⨔"],[0,"⨕"],[0,"⨖"],[0,"⨗"],[10,"⨢"],[0,"⨣"],[0,"⨤"],[0,"⨥"],[0,"⨦"],[0,"⨧"],[1,"⨩"],[0,"⨪"],[2,"⨭"],[0,"⨮"],[0,"⨯"],[0,"⨰"],[0,"⨱"],[1,"⨳"],[0,"⨴"],[0,"⨵"],[0,"⨶"],[0,"⨷"],[0,"⨸"],[0,"⨹"],[0,"⨺"],[0,"⨻"],[0,"⨼"],[2,"⨿"],[0,"⩀"],[1,"⩂"],[0,"⩃"],[0,"⩄"],[0,"⩅"],[0,"⩆"],[0,"⩇"],[0,"⩈"],[0,"⩉"],[0,"⩊"],[0,"⩋"],[0,"⩌"],[0,"⩍"],[2,"⩐"],[2,"⩓"],[0,"⩔"],[0,"⩕"],[0,"⩖"],[0,"⩗"],[0,"⩘"],[1,"⩚"],[0,"⩛"],[0,"⩜"],[0,"⩝"],[1,"⩟"],[6,"⩦"],[3,"⩪"],[2,{v:"⩭",n:824,o:"⩭̸"}],[0,"⩮"],[0,"⩯"],[0,{v:"⩰",n:824,o:"⩰̸"}],[0,"⩱"],[0,"⩲"],[0,"⩳"],[0,"⩴"],[0,"⩵"],[1,"⩷"],[0,"⩸"],[0,"⩹"],[0,"⩺"],[0,"⩻"],[0,"⩼"],[0,{v:"⩽",n:824,o:"⩽̸"}],[0,{v:"⩾",n:824,o:"⩾̸"}],[0,"⩿"],[0,"⪀"],[0,"⪁"],[0,"⪂"],[0,"⪃"],[0,"⪄"],[0,"⪅"],[0,"⪆"],[0,"⪇"],[0,"⪈"],[0,"⪉"],[0,"⪊"],[0,"⪋"],[0,"⪌"],[0,"⪍"],[0,"⪎"],[0,"⪏"],[0,"⪐"],[0,"⪑"],[0,"⪒"],[0,"⪓"],[0,"⪔"],[0,"⪕"],[0,"⪖"],[0,"⪗"],[0,"⪘"],[0,"⪙"],[0,"⪚"],[2,"⪝"],[0,"⪞"],[0,"⪟"],[0,"⪠"],[0,{v:"⪡",n:824,o:"⪡̸"}],[0,{v:"⪢",n:824,o:"⪢̸"}],[1,"⪤"],[0,"⪥"],[0,"⪦"],[0,"⪧"],[0,"⪨"],[0,"⪩"],[0,"⪪"],[0,"⪫"],[0,{v:"⪬",n:65024,o:"⪬︀"}],[0,{v:"⪭",n:65024,o:"⪭︀"}],[0,"⪮"],[0,{v:"⪯",n:824,o:"⪯̸"}],[0,{v:"⪰",n:824,o:"⪰̸"}],[2,"⪳"],[0,"⪴"],[0,"⪵"],[0,"⪶"],[0,"⪷"],[0,"⪸"],[0,"⪹"],[0,"⪺"],[0,"⪻"],[0,"⪼"],[0,"⪽"],[0,"⪾"],[0,"⪿"],[0,"⫀"],[0,"⫁"],[0,"⫂"],[0,"⫃"],[0,"⫄"],[0,{v:"⫅",n:824,o:"⫅̸"}],[0,{v:"⫆",n:824,o:"⫆̸"}],[0,"⫇"],[0,"⫈"],[2,{v:"⫋",n:65024,o:"⫋︀"}],[0,{v:"⫌",n:65024,o:"⫌︀"}],[2,"⫏"],[0,"⫐"],[0,"⫑"],[0,"⫒"],[0,"⫓"],[0,"⫔"],[0,"⫕"],[0,"⫖"],[0,"⫗"],[0,"⫘"],[0,"⫙"],[0,"⫚"],[0,"⫛"],[8,"⫤"],[1,"⫦"],[0,"⫧"],[0,"⫨"],[0,"⫩"],[1,"⫫"],[0,"⫬"],[0,"⫭"],[0,"⫮"],[0,"⫯"],[0,"⫰"],[0,"⫱"],[0,"⫲"],[0,"⫳"],[9,{v:"⫽",n:8421,o:"⫽⃥"}],[44343,{n:new Map(_t([[56476,"𝒜"],[1,"𝒞"],[0,"𝒟"],[2,"𝒢"],[2,"𝒥"],[0,"𝒦"],[2,"𝒩"],[0,"𝒪"],[0,"𝒫"],[0,"𝒬"],[1,"𝒮"],[0,"𝒯"],[0,"𝒰"],[0,"𝒱"],[0,"𝒲"],[0,"𝒳"],[0,"𝒴"],[0,"𝒵"],[0,"𝒶"],[0,"𝒷"],[0,"𝒸"],[0,"𝒹"],[1,"𝒻"],[1,"𝒽"],[0,"𝒾"],[0,"𝒿"],[0,"𝓀"],[0,"𝓁"],[0,"𝓂"],[0,"𝓃"],[1,"𝓅"],[0,"𝓆"],[0,"𝓇"],[0,"𝓈"],[0,"𝓉"],[0,"𝓊"],[0,"𝓋"],[0,"𝓌"],[0,"𝓍"],[0,"𝓎"],[0,"𝓏"],[52,"𝔄"],[0,"𝔅"],[1,"𝔇"],[0,"𝔈"],[0,"𝔉"],[0,"𝔊"],[2,"𝔍"],[0,"𝔎"],[0,"𝔏"],[0,"𝔐"],[0,"𝔑"],[0,"𝔒"],[0,"𝔓"],[0,"𝔔"],[1,"𝔖"],[0,"𝔗"],[0,"𝔘"],[0,"𝔙"],[0,"𝔚"],[0,"𝔛"],[0,"𝔜"],[1,"𝔞"],[0,"𝔟"],[0,"𝔠"],[0,"𝔡"],[0,"𝔢"],[0,"𝔣"],[0,"𝔤"],[0,"𝔥"],[0,"𝔦"],[0,"𝔧"],[0,"𝔨"],[0,"𝔩"],[0,"𝔪"],[0,"𝔫"],[0,"𝔬"],[0,"𝔭"],[0,"𝔮"],[0,"𝔯"],[0,"𝔰"],[0,"𝔱"],[0,"𝔲"],[0,"𝔳"],[0,"𝔴"],[0,"𝔵"],[0,"𝔶"],[0,"𝔷"],[0,"𝔸"],[0,"𝔹"],[1,"𝔻"],[0,"𝔼"],[0,"𝔽"],[0,"𝔾"],[1,"𝕀"],[0,"𝕁"],[0,"𝕂"],[0,"𝕃"],[0,"𝕄"],[1,"𝕆"],[3,"𝕊"],[0,"𝕋"],[0,"𝕌"],[0,"𝕍"],[0,"𝕎"],[0,"𝕏"],[0,"𝕐"],[1,"𝕒"],[0,"𝕓"],[0,"𝕔"],[0,"𝕕"],[0,"𝕖"],[0,"𝕗"],[0,"𝕘"],[0,"𝕙"],[0,"𝕚"],[0,"𝕛"],[0,"𝕜"],[0,"𝕝"],[0,"𝕞"],[0,"𝕟"],[0,"𝕠"],[0,"𝕡"],[0,"𝕢"],[0,"𝕣"],[0,"𝕤"],[0,"𝕥"],[0,"𝕦"],[0,"𝕧"],[0,"𝕨"],[0,"𝕩"],[0,"𝕪"],[0,"𝕫"]]))}],[8906,"ff"],[0,"fi"],[0,"fl"],[0,"ffi"],[0,"ffl"]])),yi=/["&'<>$\x80-\uFFFF]/g,mr=new Map([[34,"""],[38,"&"],[39,"'"],[60,"<"],[62,">"]]),Ra=String.prototype.codePointAt!=null?(t,e)=>t.codePointAt(e):(t,e)=>(t.charCodeAt(e)&64512)===55296?(t.charCodeAt(e)-55296)*1024+t.charCodeAt(e+1)-56320+65536:t.charCodeAt(e);function xr(t){let e="",u=0,i;for(;(i=yi.exec(t))!==null;){let r=i.index,n=t.charCodeAt(r),a=mr.get(n);a!==void 0?(e+=t.substring(u,r)+a,u=r+1):(e+=`${t.substring(u,r)}&#x${Ra(t,r).toString(16)};`,u=yi.lastIndex+=+((n&64512)===55296))}return e+t.substr(u)}function Ne(t,e){return function(u){let i,r=0,n="";for(;i=t.exec(u);)r!==i.index&&(n+=u.substring(r,i.index)),n+=e.get(i[0].charCodeAt(0)),r=i.index+1;return n+u.substring(r)}}var S0=Ne(/[&<>'"]/g,mr),Pa=Ne(/["&\u00A0]/g,new Map([[34,"""],[38,"&"],[160," "]])),qa=Ne(/[&<>\u00A0]/g,new Map([[38,"&"],[60,"<"],[62,">"],[160," "]])),Fi;(function(t){t[t.XML=0]="XML",t[t.HTML=1]="HTML"})(Fi||(Fi={}));var vi;(function(t){t[t.UTF8=0]="UTF8",t[t.ASCII=1]="ASCII",t[t.Extensive=2]="Extensive",t[t.Attribute=3]="Attribute",t[t.Text=4]="Text"})(vi||(vi={}));var Oa=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map(t=>[t.toLowerCase(),t])),Ma=new Map(["definitionURL","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(t=>[t.toLowerCase(),t])),Ua=new Set(["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"]);function Ha(t){return t.replace(/"/g,""")}function ja(t,e){var u;if(!t)return;let i=((u=e.encodeEntities)!==null&&u!==void 0?u:e.decodeEntities)===!1?Ha:e.xmlMode||e.encodeEntities!=="utf8"?xr:Pa;return Object.keys(t).map(r=>{var n,a;let s=(n=t[r])!==null&&n!==void 0?n:"";return e.xmlMode==="foreign"&&(r=(a=Ma.get(r))!==null&&a!==void 0?a:r),!e.emptyAttrs&&!e.xmlMode&&s===""?r:`${r}="${i(s)}"`}).join(" ")}var ki=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]);function Vt(t,e={}){let u="length"in t?t:[t],i="";for(let r=0;r<u.length;r++)i+=Va(u[r],e);return i}function Va(t,e){switch(t.type){case Zr:return Vt(t.children,e);case an:case Xr:return Ka(t);case tn:return Za(t);case nn:return Ya(t);case en:case un:case rn:return za(t,e);case Qr:return Ja(t,e)}}var Wa=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignObject","desc","title"]),Ga=new Set(["svg","math"]);function za(t,e){var u;e.xmlMode==="foreign"&&(t.name=(u=Oa.get(t.name))!==null&&u!==void 0?u:t.name,t.parent&&Wa.has(t.parent.name)&&(e={...e,xmlMode:!1})),!e.xmlMode&&Ga.has(t.name)&&(e={...e,xmlMode:"foreign"});let i=`<${t.name}`,r=ja(t.attribs,e);return r&&(i+=` ${r}`),t.children.length===0&&(e.xmlMode?e.selfClosingTags!==!1:e.selfClosingTags&&ki.has(t.name))?(e.xmlMode||(i+=" "),i+="/>"):(i+=">",t.children.length>0&&(i+=Vt(t.children,e)),(e.xmlMode||!ki.has(t.name))&&(i+=`</${t.name}>`)),i}function Ka(t){return`<${t.data}>`}function Ja(t,e){var u;let i=t.data||"";return((u=e.encodeEntities)!==null&&u!==void 0?u:e.decodeEntities)!==!1&&!(!e.xmlMode&&t.parent&&Ua.has(t.parent.name))&&(i=e.xmlMode||e.encodeEntities!=="utf8"?xr(i):qa(i)),i}function Ya(t){return`<![CDATA[${t.children[0].data}]]>`}function Za(t){return`<!--${t.data}-->`}var Si;(function(t){t[t.DISCONNECTED=1]="DISCONNECTED",t[t.PRECEDING=2]="PRECEDING",t[t.FOLLOWING=4]="FOLLOWING",t[t.CONTAINS=8]="CONTAINS",t[t.CONTAINED_BY=16]="CONTAINED_BY"})(Si||(Si={}));function Qa(t,e){let u=new dn(void 0,e);return new $a(u,e).end(t),u.root}var Ar=te(qr(),1);function $e(t,e,u=()=>{}){if(t===void 0){let i=function(...r){return e(i,...r)};return i}return t>=0?function(...i){return e($e(t-1,e,u),...i)}:u}function Er(t,e){let u=0,i=t.length;for(;u<i&&t[u]===e;)++u;for(;i>u&&t[i-1]===e;)--i;return u>0||i<t.length?t.substring(u,i):t}function Xa(t,e){let u=t.length;for(;u>0&&t[u-1]===e;)--u;return u<t.length?t.substring(0,u):t}function ts(t){return t.replace(/[\s\S]/g,e=>"\\u"+e.charCodeAt().toString(16).padStart(4,"0"))}function Br(t,e){let u=new Map;for(let i=t.length;i-- >0;){let r=t[i],n=e(r);u.set(n,u.has(n)?(0,Ar.default)(r,u.get(n),{arrayMerge:es}):r)}return[...u.values()].reverse()}var es=(t,e,u)=>[...e];function mt(t,e){for(let u of e){if(!t)return;t=t[u]}return t}function Ti(t,e="a",u=26){let i=[];do t-=1,i.push(t%u),t=t/u>>0;while(t>0);let r=e.charCodeAt(0);return i.reverse().map(n=>String.fromCharCode(r+n)).join("")}var pe=["I","X","C","M"],Li=["V","L","D"];function Ii(t){return[...t+""].map(e=>+e).reverse().map((e,u)=>e%5<4?(e<5?"":Li[u])+pe[u].repeat(e%5):pe[u]+(e<5?Li[u]:pe[u+1])).reverse().join("")}var Cr=class{constructor(t,e=void 0){this.lines=[],this.nextLineWords=[],this.maxLineLength=e||t.wordwrap||Number.MAX_VALUE,this.nextLineAvailableChars=this.maxLineLength,this.wrapCharacters=mt(t,["longWordSplit","wrapCharacters"])||[],this.forceWrapOnLimit=mt(t,["longWordSplit","forceWrapOnLimit"])||!1,this.stashedSpace=!1,this.wordBreakOpportunity=!1}pushWord(t,e=!1){this.nextLineAvailableChars<=0&&!e&&this.startNewLine();let u=this.nextLineWords.length===0,i=t.length+(u?0:1);if(i<=this.nextLineAvailableChars||e)this.nextLineWords.push(t),this.nextLineAvailableChars-=i;else{let[r,...n]=this.splitLongWord(t);u||this.startNewLine(),this.nextLineWords.push(r),this.nextLineAvailableChars-=r.length;for(let a of n)this.startNewLine(),this.nextLineWords.push(a),this.nextLineAvailableChars-=a.length}}popWord(){let t=this.nextLineWords.pop();if(t!==void 0){let e=this.nextLineWords.length===0,u=t.length+(e?0:1);this.nextLineAvailableChars+=u}return t}concatWord(t,e=!1){if(this.wordBreakOpportunity&&t.length>this.nextLineAvailableChars)this.pushWord(t,e),this.wordBreakOpportunity=!1;else{let u=this.popWord();this.pushWord(u?u.concat(t):t,e)}}startNewLine(t=1){this.lines.push(this.nextLineWords),t>1&&this.lines.push(...Array.from({length:t-1},()=>[])),this.nextLineWords=[],this.nextLineAvailableChars=this.maxLineLength}isEmpty(){return this.lines.length===0&&this.nextLineWords.length===0}clear(){this.lines.length=0,this.nextLineWords.length=0,this.nextLineAvailableChars=this.maxLineLength}toString(){return[...this.lines,this.nextLineWords].map(t=>t.join(" ")).join(`
|
|
9
|
-
`)}splitLongWord(t){let e=[],u=0;for(;t.length>this.maxLineLength;){let i=t.substring(0,this.maxLineLength),r=t.substring(this.maxLineLength),n=i.lastIndexOf(this.wrapCharacters[u]);if(n>-1)t=i.substring(n+1)+r,e.push(i.substring(0,n+1));else if(u++,u<this.wrapCharacters.length)t=i+r;else{if(this.forceWrapOnLimit){if(e.push(i),t=r,t.length>this.maxLineLength)continue}else t=i+r;break}}return e.push(t),e}},Ft=class{constructor(t=null){this.next=t}getRoot(){return this.next?this.next:this}},G=class extends Ft{constructor(t,e=null,u=1,i=void 0){super(e),this.leadingLineBreaks=u,this.inlineTextBuilder=new Cr(t,i),this.rawText="",this.stashedLineBreaks=0,this.isPre=e&&e.isPre,this.isNoWrap=e&&e.isNoWrap}},_i=class extends G{constructor(t,e=null,{interRowLineBreaks:u=1,leadingLineBreaks:i=2,maxLineLength:r=void 0,maxPrefixLength:n=0,prefixAlign:a="left"}={}){super(t,e,i,r),this.maxPrefixLength=n,this.prefixAlign=a,this.interRowLineBreaks=u}},at=class extends G{constructor(t,e=null,{leadingLineBreaks:u=1,maxLineLength:i=void 0,prefix:r=""}={}){super(t,e,u,i),this.prefix=r}},Ni=class extends Ft{constructor(t=null){super(t),this.rows=[],this.isPre=t&&t.isPre,this.isNoWrap=t&&t.isNoWrap}},$i=class extends Ft{constructor(t=null){super(t),this.cells=[],this.isPre=t&&t.isPre,this.isNoWrap=t&&t.isNoWrap}},st=class extends Ft{constructor(t,e=null,u=void 0){super(e),this.inlineTextBuilder=new Cr(t,u),this.rawText="",this.stashedLineBreaks=0,this.isPre=e&&e.isPre,this.isNoWrap=e&&e.isNoWrap}},us=class extends Ft{constructor(t=null,e){super(t),this.transform=e}};function is(t){return[...t].map(e=>"\\u"+e.charCodeAt(0).toString(16).padStart(4,"0")).join("")}var rs=class{constructor(t){this.whitespaceChars=t.preserveNewlines?t.whitespaceCharacters.replace(/\n/g,""):t.whitespaceCharacters;let e=is(this.whitespaceChars);if(this.leadingWhitespaceRe=new RegExp(`^[${e}]`),this.trailingWhitespaceRe=new RegExp(`[${e}]$`),this.allWhitespaceOrEmptyRe=new RegExp(`^[${e}]*$`),this.newlineOrNonWhitespaceRe=new RegExp(`(\\n|[^\\n${e}])`,"g"),this.newlineOrNonNewlineStringRe=new RegExp("(\\n|[^\\n]+)","g"),t.preserveNewlines){let u=new RegExp(`\\n|[^\\n${e}]+`,"gm");this.shrinkWrapAdd=function(i,r,n=s=>s,a=!1){if(!i)return;let s=r.stashedSpace,o=!1,l=u.exec(i);if(l)for(o=!0,l[0]===`
|
|
10
|
-
`?r.startNewLine():s||this.testLeadingWhitespace(i)?r.pushWord(n(l[0]),a):r.concatWord(n(l[0]),a);(l=u.exec(i))!==null;)l[0]===`
|
|
11
|
-
`?r.startNewLine():r.pushWord(n(l[0]),a);r.stashedSpace=s&&!o||this.testTrailingWhitespace(i)}}else{let u=new RegExp(`[^${e}]+`,"g");this.shrinkWrapAdd=function(i,r,n=s=>s,a=!1){if(!i)return;let s=r.stashedSpace,o=!1,l=u.exec(i);if(l)for(o=!0,s||this.testLeadingWhitespace(i)?r.pushWord(n(l[0]),a):r.concatWord(n(l[0]),a);(l=u.exec(i))!==null;)r.pushWord(n(l[0]),a);r.stashedSpace=s&&!o||this.testTrailingWhitespace(i)}}}addLiteral(t,e,u=!0){if(!t)return;let i=e.stashedSpace,r=!1,n=this.newlineOrNonNewlineStringRe.exec(t);if(n)for(r=!0,n[0]===`
|
|
12
|
-
`?e.startNewLine():i?e.pushWord(n[0],u):e.concatWord(n[0],u);(n=this.newlineOrNonNewlineStringRe.exec(t))!==null;)n[0]===`
|
|
13
|
-
`?e.startNewLine():e.pushWord(n[0],u);e.stashedSpace=i&&!r}testLeadingWhitespace(t){return this.leadingWhitespaceRe.test(t)}testTrailingWhitespace(t){return this.trailingWhitespaceRe.test(t)}testContainsWords(t){return!this.allWhitespaceOrEmptyRe.test(t)}countNewlinesNoWords(t){this.newlineOrNonWhitespaceRe.lastIndex=0;let e=0,u;for(;(u=this.newlineOrNonWhitespaceRe.exec(t))!==null;)if(u[0]===`
|
|
14
|
-
`)e++;else return 0;return e}},ns=class{constructor(t,e,u=void 0){this.options=t,this.picker=e,this.metadata=u,this.whitespaceProcessor=new rs(t),this._stackItem=new G(t),this._wordTransformer=void 0}pushWordTransform(t){this._wordTransformer=new us(this._wordTransformer,t)}popWordTransform(){if(!this._wordTransformer)return;let t=this._wordTransformer.transform;return this._wordTransformer=this._wordTransformer.next,t}startNoWrap(){this._stackItem.isNoWrap=!0}stopNoWrap(){this._stackItem.isNoWrap=!1}_getCombinedWordTransformer(){let t=this._wordTransformer?u=>Dr(u,this._wordTransformer):void 0,e=this.options.encodeCharacters;return t?e?u=>e(t(u)):t:e}_popStackItem(){let t=this._stackItem;return this._stackItem=t.next,t}addLineBreak(){(this._stackItem instanceof G||this._stackItem instanceof at||this._stackItem instanceof st)&&(this._stackItem.isPre?this._stackItem.rawText+=`
|
|
15
|
-
`:this._stackItem.inlineTextBuilder.startNewLine())}addWordBreakOpportunity(){(this._stackItem instanceof G||this._stackItem instanceof at||this._stackItem instanceof st)&&(this._stackItem.inlineTextBuilder.wordBreakOpportunity=!0)}addInline(t,{noWordTransform:e=!1}={}){if(this._stackItem instanceof G||this._stackItem instanceof at||this._stackItem instanceof st){if(this._stackItem.isPre){this._stackItem.rawText+=t;return}if(!(t.length===0||this._stackItem.stashedLineBreaks&&!this.whitespaceProcessor.testContainsWords(t))){if(this.options.preserveNewlines){let u=this.whitespaceProcessor.countNewlinesNoWords(t);if(u>0){this._stackItem.inlineTextBuilder.startNewLine(u);return}}this._stackItem.stashedLineBreaks&&this._stackItem.inlineTextBuilder.startNewLine(this._stackItem.stashedLineBreaks),this.whitespaceProcessor.shrinkWrapAdd(t,this._stackItem.inlineTextBuilder,e?void 0:this._getCombinedWordTransformer(),this._stackItem.isNoWrap),this._stackItem.stashedLineBreaks=0}}}addLiteral(t){if((this._stackItem instanceof G||this._stackItem instanceof at||this._stackItem instanceof st)&&t.length!==0){if(this._stackItem.isPre){this._stackItem.rawText+=t;return}this._stackItem.stashedLineBreaks&&this._stackItem.inlineTextBuilder.startNewLine(this._stackItem.stashedLineBreaks),this.whitespaceProcessor.addLiteral(t,this._stackItem.inlineTextBuilder,this._stackItem.isNoWrap),this._stackItem.stashedLineBreaks=0}}openBlock({leadingLineBreaks:t=1,reservedLineLength:e=0,isPre:u=!1}={}){let i=Math.max(20,this._stackItem.inlineTextBuilder.maxLineLength-e);this._stackItem=new G(this.options,this._stackItem,t,i),u&&(this._stackItem.isPre=!0)}closeBlock({trailingLineBreaks:t=1,blockTransform:e=void 0}={}){let u=this._popStackItem(),i=e?e(it(u)):it(u);Nt(this._stackItem,i,u.leadingLineBreaks,Math.max(u.stashedLineBreaks,t))}openList({maxPrefixLength:t=0,prefixAlign:e="left",interRowLineBreaks:u=1,leadingLineBreaks:i=2}={}){this._stackItem=new _i(this.options,this._stackItem,{interRowLineBreaks:u,leadingLineBreaks:i,maxLineLength:this._stackItem.inlineTextBuilder.maxLineLength,maxPrefixLength:t,prefixAlign:e})}openListItem({prefix:t=""}={}){if(!(this._stackItem instanceof _i))throw new Error("Can't add a list item to something that is not a list! Check the formatter.");let e=this._stackItem,u=Math.max(t.length,e.maxPrefixLength),i=Math.max(20,e.inlineTextBuilder.maxLineLength-u);this._stackItem=new at(this.options,e,{prefix:t,maxLineLength:i,leadingLineBreaks:e.interRowLineBreaks})}closeListItem(){let t=this._popStackItem(),e=t.next,u=Math.max(t.prefix.length,e.maxPrefixLength),i=`
|
|
16
|
-
`+" ".repeat(u),r=(e.prefixAlign==="right"?t.prefix.padStart(u):t.prefix.padEnd(u))+it(t).replace(/\n/g,i);Nt(e,r,t.leadingLineBreaks,Math.max(t.stashedLineBreaks,e.interRowLineBreaks))}closeList({trailingLineBreaks:t=2}={}){let e=this._popStackItem(),u=it(e);u&&Nt(this._stackItem,u,e.leadingLineBreaks,t)}openTable(){this._stackItem=new Ni(this._stackItem)}openTableRow(){if(!(this._stackItem instanceof Ni))throw new Error("Can't add a table row to something that is not a table! Check the formatter.");this._stackItem=new $i(this._stackItem)}openTableCell({maxColumnWidth:t=void 0}={}){if(!(this._stackItem instanceof $i))throw new Error("Can't add a table cell to something that is not a table row! Check the formatter.");this._stackItem=new st(this.options,this._stackItem,t)}closeTableCell({colspan:t=1,rowspan:e=1}={}){let u=this._popStackItem(),i=Er(it(u),`
|
|
17
|
-
`);u.next.cells.push({colspan:t,rowspan:e,text:i})}closeTableRow(){let t=this._popStackItem();t.next.rows.push(t.cells)}closeTable({tableToString:t,leadingLineBreaks:e=2,trailingLineBreaks:u=2}){let i=this._popStackItem(),r=t(i.rows);r&&Nt(this._stackItem,r,e,u)}toString(){return it(this._stackItem.getRoot())}};function it(t){if(!(t instanceof G||t instanceof at||t instanceof st))throw new Error("Only blocks, list items and table cells can be requested for text contents.");return t.inlineTextBuilder.isEmpty()?t.rawText:t.rawText+t.inlineTextBuilder.toString()}function Nt(t,e,u,i){if(!(t instanceof G||t instanceof at||t instanceof st))throw new Error("Only blocks, list items and table cells can contain text.");let r=it(t),n=Math.max(t.stashedLineBreaks,u);t.inlineTextBuilder.clear(),r?t.rawText=r+`
|
|
18
|
-
`.repeat(n)+e:(t.rawText=e,t.leadingLineBreaks=n),t.stashedLineBreaks=i}function Dr(t,e){return e?Dr(e.transform(t),e.next):t}function as(t={}){let e=t.selectors.filter(a=>!a.format);if(e.length)throw new Error("Following selectors have no specified format: "+e.map(a=>`\`${a.selector}\``).join(", "));let u=new mi(t.selectors.map(a=>[a.selector,a])).build(Ai);typeof t.encodeCharacters!="function"&&(t.encodeCharacters=ls(t.encodeCharacters));let i=new mi(t.baseElements.selectors.map((a,s)=>[a,s+1])).build(Ai);function r(a){return os(a,t,i)}let n=$e(t.limits.maxDepth,cs,function(a,s){s.addInline(t.limits.ellipsis||"")});return function(a,s=void 0){return ss(a,s,t,u,r,n)}}function ss(t,e,u,i,r,n){let a=u.limits.maxInputLength;a&&t&&t.length>a&&(console.warn(`Input length ${t.length} is above allowed limit of ${a}. Truncating without ellipsis.`),t=t.substring(0,a));let s=Qa(t,{decodeEntities:u.decodeEntities}),o=r(s.children),l=new ns(u,i,e);return n(o,l),l.toString()}function os(t,e,u){let i=[];function r(n,a){a=a.slice(0,e.limits.maxChildNodes);for(let s of a){if(s.type!=="tag")continue;let o=u.pick1(s);if(o>0?i.push({selectorIndex:o,element:s}):s.children&&n(s.children),i.length>=e.limits.maxBaseElements)return}}return $e(e.limits.maxDepth,r)(t),e.baseElements.orderBy!=="occurrence"&&i.sort((n,a)=>n.selectorIndex-a.selectorIndex),e.baseElements.returnDomByDefault&&i.length===0?t:i.map(n=>n.element)}function cs(t,e,u){if(!e)return;let i=u.options;e.length>i.limits.maxChildNodes&&(e=e.slice(0,i.limits.maxChildNodes),e.push({data:i.limits.ellipsis,type:"text"}));for(let r of e)switch(r.type){case"text":{u.addInline(r.data);break}case"tag":{let n=u.picker.pick1(r),a=i.formatters[n.format];a(r,t,u,n.options||{});break}}}function ls(t){if(!t||Object.keys(t).length===0)return;let e=Object.entries(t).filter(([,n])=>n!==!1),u=new RegExp(e.map(([n])=>`(${ts([...n][0])})`).join("|"),"g"),i=e.map(([,n])=>n),r=(n,...a)=>i[a.findIndex(s=>s)];return n=>n.replace(u,r)}function hs(t,e,u,i){}function ds(t,e,u,i){u.addLiteral(i.string||"")}function ps(t,e,u,i){u.openBlock({leadingLineBreaks:i.leadingLineBreaks||2}),u.addLiteral(i.string||""),u.closeBlock({trailingLineBreaks:i.trailingLineBreaks||2})}function fs(t,e,u,i){e(t.children,u)}function gs(t,e,u,i){u.openBlock({leadingLineBreaks:i.leadingLineBreaks||2}),e(t.children,u),u.closeBlock({trailingLineBreaks:i.trailingLineBreaks||2})}function br(t){let e=t.attribs&&t.attribs.length?" "+Object.entries(t.attribs).map(([u,i])=>i===""?u:`${u}=${i.replace(/"/g,""")}`).join(" "):"";return`<${t.name}${e}>`}function wr(t){return`</${t.name}>`}function ms(t,e,u,i){u.startNoWrap(),u.addLiteral(br(t)),u.stopNoWrap(),e(t.children,u),u.startNoWrap(),u.addLiteral(wr(t)),u.stopNoWrap()}function xs(t,e,u,i){u.openBlock({leadingLineBreaks:i.leadingLineBreaks||2}),u.startNoWrap(),u.addLiteral(br(t)),u.stopNoWrap(),e(t.children,u),u.startNoWrap(),u.addLiteral(wr(t)),u.stopNoWrap(),u.closeBlock({trailingLineBreaks:i.trailingLineBreaks||2})}function As(t,e,u,i){u.startNoWrap(),u.addLiteral(Vt(t,{decodeEntities:u.options.decodeEntities})),u.stopNoWrap()}function Es(t,e,u,i){u.openBlock({leadingLineBreaks:i.leadingLineBreaks||2}),u.startNoWrap(),u.addLiteral(Vt(t,{decodeEntities:u.options.decodeEntities})),u.stopNoWrap(),u.closeBlock({trailingLineBreaks:i.trailingLineBreaks||2})}function Bs(t,e,u,i){u.addLiteral(i.prefix||""),e(t.children,u),u.addLiteral(i.suffix||"")}var Cs=Object.freeze({__proto__:null,block:gs,blockHtml:Es,blockString:ps,blockTag:xs,inline:fs,inlineHtml:As,inlineString:ds,inlineSurround:Bs,inlineTag:ms,skip:hs});function Ut(t,e){return t[e]||(t[e]=[]),t[e]}function Ds(t,e=0){for(;t[e];)e++;return e}function bs(t,e){for(let u=0;u<e;u++){let i=Ut(t,u);for(let r=0;r<u;r++){let n=Ut(t,r);if(i[r]||n[u]){let a=i[r];i[r]=n[u],n[u]=a}}}}function ws(t,e,u,i){for(let r=0;r<t.rowspan;r++){let n=Ut(e,u+r);for(let a=0;a<t.colspan;a++)n[i+a]=t}}function Ce(t,e){return t[e]===void 0&&(t[e]=e===0?0:1+Ce(t,e-1)),t[e]}function Ri(t,e,u,i){t[e+u]=Math.max(Ce(t,e+u),Ce(t,e)+i)}function ys(t,e,u){let i=[],r=0,n=t.length,a=[0];for(let l=0;l<n;l++){let d=Ut(i,l),E=t[l],B=0;for(let m=0;m<E.length;m++){let x=E[m];B=Ds(d,B),ws(x,i,l,B),B+=x.colspan,x.lines=x.text.split(`
|
|
19
|
-
`);let F=x.lines.length;Ri(a,l,x.rowspan,F+e)}r=d.length>r?d.length:r}bs(i,n>r?n:r);let s=[],o=[0];for(let l=0;l<r;l++){let d=0,E,B=Math.min(n,i[l].length);for(;d<B;)if(E=i[l][d],E){if(!E.rendered){let m=0;for(let x=0;x<E.lines.length;x++){let F=E.lines[x],b=a[d]+x;s[b]=(s[b]||"").padEnd(o[l])+F,m=F.length>m?F.length:m}Ri(o,l,E.colspan,m+u),E.rendered=!0}d+=E.rowspan}else{let m=a[d];s[m]=s[m]||"",d++}}return s.join(`
|
|
20
|
-
`)}function Fs(t,e,u,i){u.addLineBreak()}function vs(t,e,u,i){u.addWordBreakOpportunity()}function ks(t,e,u,i){u.openBlock({leadingLineBreaks:i.leadingLineBreaks||2}),u.addInline("-".repeat(i.length||u.options.wordwrap||40)),u.closeBlock({trailingLineBreaks:i.trailingLineBreaks||2})}function Ss(t,e,u,i){u.openBlock({leadingLineBreaks:i.leadingLineBreaks||2}),e(t.children,u),u.closeBlock({trailingLineBreaks:i.trailingLineBreaks||2})}function Ts(t,e,u,i){u.openBlock({isPre:!0,leadingLineBreaks:i.leadingLineBreaks||2}),e(t.children,u),u.closeBlock({trailingLineBreaks:i.trailingLineBreaks||2})}function Ls(t,e,u,i){u.openBlock({leadingLineBreaks:i.leadingLineBreaks||2}),i.uppercase!==!1?(u.pushWordTransform(r=>r.toUpperCase()),e(t.children,u),u.popWordTransform()):e(t.children,u),u.closeBlock({trailingLineBreaks:i.trailingLineBreaks||2})}function Is(t,e,u,i){u.openBlock({leadingLineBreaks:i.leadingLineBreaks||2,reservedLineLength:2}),e(t.children,u),u.closeBlock({trailingLineBreaks:i.trailingLineBreaks||2,blockTransform:r=>(i.trimEmptyLines!==!1?Er(r,`
|
|
21
|
-
`):r).split(`
|
|
22
|
-
`).map(n=>"> "+n).join(`
|
|
23
|
-
`)})}function De(t,e){if(!e)return t;let u=typeof e[0]=="string"?e[0]:"[",i=typeof e[1]=="string"?e[1]:"]";return u+t+i}function yr(t,e,u,i,r){let n=typeof e=="function"?e(t,i,r):t;return n[0]==="/"&&u?Xa(u,"/")+n:n}function _s(t,e,u,i){let r=t.attribs||{},n=r.alt?r.alt:"",a=r.src?yr(r.src,i.pathRewrite,i.baseUrl,u.metadata,t):"",s=a?n?n+" "+De(a,i.linkBrackets):De(a,i.linkBrackets):n;u.addInline(s,{noWordTransform:!0})}function Ns(t,e,u,i){function r(){if(i.ignoreHref||!t.attribs||!t.attribs.href)return"";let a=t.attribs.href.replace(/^mailto:/,"");return i.noAnchorUrl&&a[0]==="#"?"":(a=yr(a,i.pathRewrite,i.baseUrl,u.metadata,t),a)}let n=r();if(!n)e(t.children,u);else{let a="";u.pushWordTransform(s=>(s&&(a+=s),s)),e(t.children,u),u.popWordTransform(),i.hideLinkHrefIfSameAsText&&n===a||u.addInline(a?" "+De(n,i.linkBrackets):n,{noWordTransform:!0})}}function Fr(t,e,u,i,r){let n=mt(t,["parent","name"])==="li",a=0,s=(t.children||[]).filter(o=>o.type!=="text"||!/^\s*$/.test(o.data)).map(function(o){if(o.name!=="li")return{node:o,prefix:""};let l=n?r().trimStart():r();return l.length>a&&(a=l.length),{node:o,prefix:l}});if(s.length){u.openList({interRowLineBreaks:1,leadingLineBreaks:n?1:i.leadingLineBreaks||2,maxPrefixLength:a,prefixAlign:"left"});for(let{node:o,prefix:l}of s)u.openListItem({prefix:l}),e([o],u),u.closeListItem();u.closeList({trailingLineBreaks:n?1:i.trailingLineBreaks||2})}}function $s(t,e,u,i){let r=i.itemPrefix||" * ";return Fr(t,e,u,i,()=>r)}function Rs(t,e,u,i){let r=Number(t.attribs.start||"1"),n=Ps(t.attribs.type);return Fr(t,e,u,i,()=>" "+n(r++)+". ")}function Ps(t="1"){switch(t){case"a":return e=>Ti(e,"a");case"A":return e=>Ti(e,"A");case"i":return e=>Ii(e).toLowerCase();case"I":return e=>Ii(e);case"1":default:return e=>e.toString()}}function qs(t){let e=[],u=[];for(let i of t)i.startsWith(".")?e.push(i.substring(1)):i.startsWith("#")&&u.push(i.substring(1));return{classes:e,ids:u}}function Os(t,e){if(e===!0)return!0;if(!t)return!1;let{classes:u,ids:i}=qs(e),r=(t.class||"").split(" "),n=(t.id||"").split(" ");return r.some(a=>u.includes(a))||n.some(a=>i.includes(a))}function Ms(t,e,u,i){return Os(t.attribs,u.options.tables)?vr(t,e,u,i):Us(t,e,u,i)}function Us(t,e,u,i){u.openBlock({leadingLineBreaks:i.leadingLineBreaks}),e(t.children,u),u.closeBlock({trailingLineBreaks:i.trailingLineBreaks})}function vr(t,e,u,i){u.openTable(),t.children.forEach(n),u.closeTable({tableToString:a=>ys(a,i.rowSpacing??0,i.colSpacing??3),leadingLineBreaks:i.leadingLineBreaks,trailingLineBreaks:i.trailingLineBreaks});function r(a){let s=+mt(a,["attribs","colspan"])||1,o=+mt(a,["attribs","rowspan"])||1;u.openTableCell({maxColumnWidth:i.maxColumnWidth}),e(a.children,u),u.closeTableCell({colspan:s,rowspan:o})}function n(a){if(a.type!=="tag")return;let s=i.uppercaseHeaderCells!==!1?o=>{u.pushWordTransform(l=>l.toUpperCase()),r(o),u.popWordTransform()}:r;switch(a.name){case"thead":case"tbody":case"tfoot":case"center":a.children.forEach(n);return;case"tr":{u.openTableRow();for(let o of a.children)if(o.type==="tag")switch(o.name){case"th":{s(o);break}case"td":{r(o);break}}u.closeTableRow();break}}}}var Hs=Object.freeze({__proto__:null,anchor:Ns,blockquote:Is,dataTable:vr,heading:Ls,horizontalLine:ks,image:_s,lineBreak:Fs,orderedList:Rs,paragraph:Ss,pre:Ts,table:Ms,unorderedList:$s,wbr:vs}),js={baseElements:{selectors:["body"],orderBy:"selectors",returnDomByDefault:!0},decodeEntities:!0,encodeCharacters:{},formatters:{},limits:{ellipsis:"...",maxBaseElements:void 0,maxChildNodes:void 0,maxDepth:void 0,maxInputLength:1<<24},longWordSplit:{forceWrapOnLimit:!1,wrapCharacters:[]},preserveNewlines:!1,selectors:[{selector:"*",format:"inline"},{selector:"a",format:"anchor",options:{baseUrl:null,hideLinkHrefIfSameAsText:!1,ignoreHref:!1,linkBrackets:["[","]"],noAnchorUrl:!0}},{selector:"article",format:"block",options:{leadingLineBreaks:1,trailingLineBreaks:1}},{selector:"aside",format:"block",options:{leadingLineBreaks:1,trailingLineBreaks:1}},{selector:"blockquote",format:"blockquote",options:{leadingLineBreaks:2,trailingLineBreaks:2,trimEmptyLines:!0}},{selector:"br",format:"lineBreak"},{selector:"div",format:"block",options:{leadingLineBreaks:1,trailingLineBreaks:1}},{selector:"footer",format:"block",options:{leadingLineBreaks:1,trailingLineBreaks:1}},{selector:"form",format:"block",options:{leadingLineBreaks:1,trailingLineBreaks:1}},{selector:"h1",format:"heading",options:{leadingLineBreaks:3,trailingLineBreaks:2,uppercase:!0}},{selector:"h2",format:"heading",options:{leadingLineBreaks:3,trailingLineBreaks:2,uppercase:!0}},{selector:"h3",format:"heading",options:{leadingLineBreaks:3,trailingLineBreaks:2,uppercase:!0}},{selector:"h4",format:"heading",options:{leadingLineBreaks:2,trailingLineBreaks:2,uppercase:!0}},{selector:"h5",format:"heading",options:{leadingLineBreaks:2,trailingLineBreaks:2,uppercase:!0}},{selector:"h6",format:"heading",options:{leadingLineBreaks:2,trailingLineBreaks:2,uppercase:!0}},{selector:"header",format:"block",options:{leadingLineBreaks:1,trailingLineBreaks:1}},{selector:"hr",format:"horizontalLine",options:{leadingLineBreaks:2,length:void 0,trailingLineBreaks:2}},{selector:"img",format:"image",options:{baseUrl:null,linkBrackets:["[","]"]}},{selector:"main",format:"block",options:{leadingLineBreaks:1,trailingLineBreaks:1}},{selector:"nav",format:"block",options:{leadingLineBreaks:1,trailingLineBreaks:1}},{selector:"ol",format:"orderedList",options:{leadingLineBreaks:2,trailingLineBreaks:2}},{selector:"p",format:"paragraph",options:{leadingLineBreaks:2,trailingLineBreaks:2}},{selector:"pre",format:"pre",options:{leadingLineBreaks:2,trailingLineBreaks:2}},{selector:"section",format:"block",options:{leadingLineBreaks:1,trailingLineBreaks:1}},{selector:"table",format:"table",options:{colSpacing:3,leadingLineBreaks:2,maxColumnWidth:60,rowSpacing:0,trailingLineBreaks:2,uppercaseHeaderCells:!0}},{selector:"ul",format:"unorderedList",options:{itemPrefix:" * ",leadingLineBreaks:2,trailingLineBreaks:2}},{selector:"wbr",format:"wbr"}],tables:[],whitespaceCharacters:` \r
|
|
24
|
-
\f\u200B`,wordwrap:80},Vs=(t,e,u)=>[...t,...e],kr=(t,e,u)=>[...e],Ws=(t,e,u)=>t.some(i=>typeof i=="object")?Vs(t,e):kr(t,e);function Gs(t={}){return t=(0,Ar.default)(js,t,{arrayMerge:kr,customMerge:e=>e==="selectors"?Ws:void 0}),t.formatters=Object.assign({},Cs,Hs,t.formatters),t.selectors=Br(t.selectors,e=>e.selector),Ks(t),as(t)}function zs(t,e={},u=void 0){return Gs(e)(t,u)}function Ks(t){if(t.tags){let u=Object.entries(t.tags).map(([i,r])=>({...r,selector:i||"*"}));t.selectors.push(...u),t.selectors=Br(t.selectors,i=>i.selector)}function e(u,i,r){let n=i.pop();for(let a of i){let s=u[a];s||(s={},u[a]=s),u=s}u[n]=r}if(t.baseElement){let u=t.baseElement;e(t,["baseElements","selectors"],Array.isArray(u)?u:[u])}t.returnDomByDefault!==void 0&&e(t,["baseElements","returnDomByDefault"],t.returnDomByDefault);for(let u of t.selectors)u.format==="anchor"&&mt(u,["options","noLinkBrackets"])&&e(u,["options","linkBrackets"],!1)}async function Js(t,e,u){let{apiKey:i,domain:r}=t;if(!i||!r)throw new Error("Mailgun configuration missing. Please provide apiKey and domain");let n=[];try{let a=`https://api.mailgun.net/v3/${r}/events`,s={event:"accepted",limit:"10",ascending:"yes",recipient:e};if(u.from_email&&(s.from=u.from_email),u.since)s.begin=Math.floor(u.since/1e3).toString();else{let d=new Date(Date.now()-6e5);s.begin=Math.floor(d.getTime()/1e3).toString()}c.info(`Mailgun params: ${JSON.stringify(s)}`);let o=await fetch(a+"?"+new URLSearchParams(s),{method:"GET",headers:{Authorization:`Basic ${Buffer.from(`api:${i}`).toString("base64")}`}});if(!o.ok){let d=await o.text();throw new Error(`Mailgun events API error: ${d}`)}let l=(await o.json()).items||[];for(let d of l.slice(0,10)){if(d.event!=="accepted")continue;let E=(d.storage||{}).url;if(c.info(`message_url: ${E}`),!E){let x=(d.message||{}).headers||{},F=x.subject||"",b=x.from||"",y=x.to||"";if(u.from_email&&!b.toLowerCase().includes(u.from_email.toLowerCase())||u.to_email&&!y.toLowerCase().includes(u.to_email.toLowerCase())||u.subject&&!F.toLowerCase().includes(u.subject.toLowerCase()))continue;n.push({subject:F,from:b,to:y,date:new Date(d.timestamp*1e3).toUTCString(),body:"Message body not available (Mailgun storage disabled)",message_id:x["message-id"]||""});continue}let B=E.split("/"),m=B[B.length-1];if(c.info(`Storage key: ${m}`),m){let x=`https://api.mailgun.net/v3/domains/${r}/messages/${m}`;try{let F=await fetch(x,{method:"GET",headers:{Authorization:`Basic ${Buffer.from(`api:${i}`).toString("base64")}`,Accept:"application/json"}});if(F.ok){let b=await F.json(),y=b.Subject||"",_=b.From||"",A=b.To||"",C=b.Date||"",w=b["Message-Id"]||"";c.info(`subject: ${y}`),c.info(`from_addr: ${_}`),c.info(`to_addr: ${A}`),c.info(`date: ${C}`),c.info(`message_id: ${w}`);let S=b["body-html"]||b["body-plain"]||"";if(S&&S.includes("<")&&(S=zs(S)),c.info(`Body: ${S.substring(0,200)}...`),u.subject&&!y.toLowerCase().includes(u.subject.toLowerCase())||u.body_contains&&!S.toLowerCase().includes(u.body_contains.toLowerCase()))continue;n.push({subject:y,from:_,to:A,date:C,body:S,message_id:w});continue}else c.warn(`Messages API returned ${F.status}`)}catch(F){c.warn(`Failed to parse JSON response: ${F}`)}}try{let x=await fetch(E,{method:"GET",headers:{Authorization:`Basic ${Buffer.from(`api:${i}`).toString("base64")}`}});if(!x.ok){c.warn(`Could not fetch stored message: ${x.status}`);continue}let F=await x.text();c.info(`Fallback: Raw email length: ${F.length}`);let b=F.split(`
|
|
25
|
-
`),y=!0,_={},A="";for(let ct=0;ct<b.length;ct++){let lt=b[ct];if(lt.trim()===""&&y){y=!1;continue}if(y){let ht=lt.match(/^([^:]+):\s*(.+)$/);ht&&(_[ht[1].toLowerCase()]=ht[2])}else A+=lt+`
|
|
26
|
-
`}let C=_.subject||"",w=_.from||"",S=_.to||"",$=_.date||"",Y=_["message-id"]||"";if(u.subject&&!C.toLowerCase().includes(u.subject.toLowerCase())||u.body_contains&&!A.toLowerCase().includes(u.body_contains.toLowerCase()))continue;n.push({subject:C,from:w,to:S,date:$,body:A.trim(),message_id:Y})}catch(x){c.warn(`Error fetching raw message: ${x}`)}}if(n.length>0){try{n.sort((E,B)=>{let m=new Date(E.date).getTime();return new Date(B.date).getTime()-m})}catch{}let d=n[0];return c.info(`Returning most recent email: ${d.subject}`),[d]}return n}catch(a){throw c.error(`Error fetching emails from Mailgun: ${a.message}`),new Error(`Error fetching emails from Mailgun: ${a.message}`)}}function Ys(t,e){if(t==="verification_code")return`You are analyzing an email to extract an OTP (One-Time Password) or verification code.
|
|
27
|
-
|
|
28
|
-
Please carefully examine the email content and look for:
|
|
29
|
-
1. Numeric codes (usually 4-8 digits)
|
|
30
|
-
2. Alphanumeric codes
|
|
31
|
-
3. Verification codes, OTP codes, authentication codes
|
|
32
|
-
4. Text like "Your code is", "Verification code:", "Enter this code", etc.
|
|
33
|
-
|
|
34
|
-
Extract the code exactly as shown in the email.
|
|
35
|
-
If you find a code, return just the code.
|
|
36
|
-
If you cannot find a code, return "NOT_FOUND".
|
|
37
|
-
|
|
38
|
-
Examples of what to extract:
|
|
39
|
-
- From: "Your verification code is: 123456"
|
|
40
|
-
Extract: 123456
|
|
41
|
-
|
|
42
|
-
- From: "Enter code: ABC123XYZ"
|
|
43
|
-
Extract: ABC123XYZ
|
|
44
|
-
|
|
45
|
-
- From: "OTP: 789012 (valid for 10 minutes)"
|
|
46
|
-
Extract: 789012
|
|
47
|
-
|
|
48
|
-
- From: "Use this code to verify: AB12-CD34-EF56"
|
|
49
|
-
Extract: AB12-CD34-EF56
|
|
50
|
-
|
|
51
|
-
Return ONLY the extracted code or "NOT_FOUND".`;if(t==="activation_link")return`You are analyzing an email to extract a magic link or verification link.
|
|
52
|
-
|
|
53
|
-
Please carefully examine the email content and look for:
|
|
54
|
-
1. URLs that contain terms like "verify", "confirm", "activate", "login", "auth"
|
|
55
|
-
2. Button links with text like "Verify Email", "Confirm Account", "Click Here"
|
|
56
|
-
3. Links that appear to be for authentication or verification purposes
|
|
57
|
-
|
|
58
|
-
CRITICAL INSTRUCTIONS:
|
|
59
|
-
- Extract the COMPLETE URL from start to finish
|
|
60
|
-
- Include the ENTIRE URL starting with http:// or https://
|
|
61
|
-
- Include ALL query parameters, tokens, and path segments
|
|
62
|
-
- Do NOT truncate, shorten, or cut off any part of the URL
|
|
63
|
-
- Do NOT add ellipsis (...) or any other modifications
|
|
64
|
-
- Return the URL exactly as it appears in the email
|
|
65
|
-
|
|
66
|
-
If you find a magic link, return ONLY the complete URL with nothing else.
|
|
67
|
-
If you cannot find a magic link, return "NOT_FOUND".
|
|
68
|
-
|
|
69
|
-
Examples of what to extract:
|
|
70
|
-
- From: "Click here to verify: https://example.com/verify?token=abc123def456ghi789"
|
|
71
|
-
Extract: https://example.com/verify?token=abc123def456ghi789
|
|
72
|
-
|
|
73
|
-
- From: "Confirm your account: https://app.example.com/auth/confirm/xyz789?user_id=12345&redirect=/dashboard"
|
|
74
|
-
Extract: https://app.example.com/auth/confirm/xyz789?user_id=12345&redirect=/dashboard
|
|
75
|
-
|
|
76
|
-
- From: "[Verify Email](https://service.com/v/longtoken123456789abcdefghijklmnopqrstuvwxyz?param1=value1¶m2=value2)"
|
|
77
|
-
Extract: https://service.com/v/longtoken123456789abcdefghijklmnopqrstuvwxyz?param1=value1¶m2=value2
|
|
78
|
-
|
|
79
|
-
- From: "Verify Email [https://service.com/v/longtoken123456789abcdefghijklmnopqrstuvwxyz?param1=value1¶m2=value2]"
|
|
80
|
-
Extract: https://service.com/v/longtoken123456789abcdefghijklmnopqrstuvwxyz?param1=value1¶m2=value2
|
|
81
|
-
|
|
82
|
-
Return ONLY the complete extracted URL or "NOT_FOUND".`;if(t==="custom"){if(!e)throw new Error("Custom prompt is required when extraction_type is custom");return e+`
|
|
83
|
-
Return only the required content or 'NOT_FOUND'.`}else throw new Error(`Unsupported extraction type: ${t}`)}async function Zs(t,e,u){try{let i=`${e}
|
|
84
|
-
---
|
|
85
|
-
Email Content:
|
|
86
|
-
---
|
|
87
|
-
${t}
|
|
88
|
-
---
|
|
89
|
-
`,r=ie(u);return(await St({model:r,messages:[{role:"user",content:i}],temperature:0,providerOptions:Bu(u,0)})).text.trim()||"NOT_FOUND"}catch(i){throw c.error(`Error in LLM extraction: ${i.message}`),new Error(`Error in LLM extraction: ${i.message}`)}}async function Qs(t,e){c.info(`extract_email_content:
|
|
90
|
-
forward_email: ${e.forward_email}
|
|
91
|
-
extraction_type: ${e.extraction_type}
|
|
92
|
-
filters: ${JSON.stringify(e.filters||{})}
|
|
93
|
-
timeout: ${e.timeout||60}
|
|
94
|
-
polling_interval: 10`);let u=e.timeout||60,i=10;try{if(e.extraction_type==="custom"&&!e.prompt)return{data:void 0,status:"error",message:"Custom prompt is required when extraction_type is custom"};let r=Ys(e.extraction_type,e.prompt),n=new Date,a=new Date(n.getTime()+u*1e3),s=0;for(c.info(`Starting email polling for ${u} seconds with ${i}s intervals`);new Date<a;){s++,c.info(`Polling attempt ${s}`);try{let l=e.filters||{},d=await Js(t,e.forward_email,l);if(d.length>0){c.info(`Found ${d.length} emails matching criteria`);let E=[];for(let B of d){let m=`Subject: ${B.subject}
|
|
95
|
-
From: ${B.from}
|
|
96
|
-
To: ${B.to}
|
|
97
|
-
Date: ${B.date}
|
|
98
|
-
|
|
99
|
-
Body:
|
|
100
|
-
${B.body}`,x=await Zs(m,r,e.model);c.info(`Extracted content: ${x}`),x&&x!=="NOT_FOUND"&&E.push({content:x,email_subject:B.subject,email_from:B.from,email_date:B.date})}if(E.length>0){let B=E[0],m=`$email_${e.extraction_type}`;e.extraction_type==="custom"?m="$email_extracted_content":e.extraction_type==="activation_link"?m="$email_magic_link":e.extraction_type==="verification_code"&&(m="$email_otp_code");let x=(new Date().getTime()-n.getTime())/1e3;return c.info(`Successfully extracted content after ${s} attempts in ${x.toFixed(1)} seconds`),{data:B.content,result_variable:m,status:"success",message:`Successfully extracted content from email: ${B.email_subject.substring(0,50)}... (attempts: ${s})`}}else c.info(`Found emails but no extractable content in attempt ${s}`)}else c.info(`No emails found in attempt ${s}`)}catch(l){c.warn(`Error in polling attempt ${s}: ${l.message}`)}if(new Date(Date.now()+i*1e3)>=a){c.info("Not enough time for another polling attempt");break}c.info(`Waiting ${i} seconds before next attempt...`),await new Promise(l=>setTimeout(l,i*1e3))}let o=(new Date().getTime()-n.getTime())/1e3;return{data:void 0,status:"error",message:`No emails with extractable content found after ${s} attempts over ${o.toFixed(1)} seconds`}}catch(r){return c.error(`Error extracting email content: ${r.message}`),{data:void 0,status:"error",message:`Error extracting email content: ${r.message}`}}}function Sr(t){switch(t){case"verification_code":return"email_otp_code";case"activation_link":return"email_magic_link";case"custom":return"email_extracted_content";default:return"email_content"}}var Xs=class{getMailgunConfig(){let t=iu().env||{};if(t.MAILGUN_API_KEY)return{apiKey:t.MAILGUN_API_KEY,domain:t.MAILGUN_DOMAIN||""}}async execute(t,e,u){let i=e.action_data;if(!i)throw new Error("Action data not found");let r=this.getMailgunConfig();if(!r)throw new Error("Mailgun configuration not provided. Please configure MAILGUN_API_KEY and MAILGUN_DOMAIN in SDK config.");let n=i.kwargs,a=u.getModel?.()||"gemini-2.5-pro",s=await Qs(r,{model:a,forward_email:n.forward_email,extraction_type:n.extraction_type,prompt:n.prompt,filters:{from_email:n.filter_from_email,to_email:n.filter_to_email,subject:n.filter_subject,body_contains:n.filter_body_contains},timeout:n.timeout});if(s.status==="success"&&s.data){let o=s.result_variable?.replace(/^\$/,"")||Sr(n.extraction_type);u.variableStore.set(o,s.data),c.info(`[extract_email_content] Extracted and saved to ${o}`)}else throw new Error(s.message||"Failed to extract email content")}transpile(t){let e=t.action_data?.kwargs||{};return['await agent.execAction("extract_email_content", page, {',` action_data: { kwargs: ${JSON.stringify(e)} },`,"});"]}},to=Q.object({forward_email:Q.string().describe("Email address where emails are forwarded to (Mailgun inbox)"),extraction_type:Q.enum(["verification_code","activation_link","custom"]).describe("Type of content to extract: verification_code for OTP codes, activation_link for magic links, custom for custom prompts"),prompt:Q.string().optional().describe("Custom extraction prompt (required when extraction_type is custom)"),filter_from_email:Q.string().optional().describe("Filter emails by sender address"),filter_to_email:Q.string().optional().describe("Filter emails by recipient address"),filter_subject:Q.string().optional().describe("Filter emails by subject (partial match)"),filter_body_contains:Q.string().optional().describe("Filter emails by body content (partial match)"),timeout:Q.number().optional().describe("Timeout in seconds for polling (default: 60)")});function eo(t,e){t.register({name:"extract_email_content",description:"Extract verification codes, magic links, or custom content from emails received via Mailgun. Polls the Mailgun inbox for matching emails and uses AI to extract the requested content.",schema:to,async execute(u,i){let{forward_email:r,extraction_type:n,prompt:a,filter_from_email:s,filter_to_email:o,filter_subject:l,filter_body_contains:d,timeout:E}=u,{page:B,agentServices:m}=i;c.info(`[extract_email_content] Extracting ${n} from ${r}`);try{let x={action_description:`Extract ${n} from email`,action_data:{action_name:"extract_email_content",kwargs:{forward_email:r,extraction_type:n,prompt:a,filter_from_email:s,filter_to_email:o,filter_subject:l,filter_body_contains:d,timeout:E}}};await e.execute(B,x,m);let F=Sr(n);return{success:!0,actionEntity:x,message:`Extracted ${n} and saved to $${F}`}}catch(x){return{success:!1,error:x.message,actionEntity:{action_description:`Extract ${n} from email (failed)`,action_data:{action_name:"extract_email_content",kwargs:{forward_email:r,extraction_type:n,prompt:a,filter_from_email:s,filter_to_email:o,filter_subject:l,filter_body_contains:d,timeout:E}},feedback:x.message}}}}})}var $t=null;async function J(){if($t)return $t;let t=(await import("./handler-7JPASJ4Y-KWA27ONH.js")).default;return $t=new t,$t}async function Re(t){let e=await J(),u=e.getAction("click"),i=e.getAction("hover"),r=e.getAction("right_click"),n=e.getAction("double_click");return Ju(t,u),Mu(t,i),Iu(t,r),Vu(t,n),"Click, hover, double-click, right-click, or drag elements"}async function Pe(t){let e=await J(),u=e.getAction("go_to_url"),i=e.getAction("go_back"),r=e.getAction("reload_page");return Ou(t,u),qu(t,i),Lu(t,r),"Navigate to URLs, go back, or reload the page"}async function qe(t){let e=await J(),u=e.getAction("clear_input"),i=e.getAction("input_text"),r=e.getAction("press");return Ku(t,u),Uu(t,i),Tu(t,r),"Type text into inputs, clear input values, or press keyboard keys"}async function Oe(t){let e=await J(),u=e.getAction("scroll_on_element"),i=e.getAction("scroll_to_text"),r=e.getAction("scroll");return $u(t,u),Ru(t,i),Nu(t,r),"Scroll the page or scroll to specific text/elements"}async function Me(t){let e=await J(),u=e.getAction("close_tab"),i=e.getAction("switch_tab");return Hu(t,u),yu(t,i),"Switch between browser tabs or close tabs"}async function Ue(t){let e=await J(),u=e.getAction("upload_file"),i=e.getAction("wait_for_download_complete");return vu(t,u),Su(t,i),"Upload files or wait for downloads to complete"}async function He(t){let e=await J(),u=e.getAction("get_dropdown_options"),i=e.getAction("select_dropdown_option"),r=e.getAction("set_date_for_native_date_picker");return Pu(t,u),bu(t,i),wu(t,r),"Get dropdown options, select dropdown values, or set date for native date picker input"}async function je(t){let e=await J(),u=e.getAction("wait"),i=e.getAction("save_variable"),r=e.getAction("done");return ku(t,u),_u(t,i),ju(t,r),Jr(t),"Wait for conditions, save variables, or complete tasks"}async function Ve(t){let e=(await J()).getAction("generate_2fa_code");Wu(t,e);let u=new Xs;return(await import("./handler-7JPASJ4Y-KWA27ONH.js")).default.registerAction("extract_email_content",u),eo(t,u),"Generate 2FA codes or extract email/activation codes"}async function We(t){let e=await J(),u=e.getAction("verify"),i=e.getAction("ai_extract"),r=e.getAction("ai_wait_until");return Gu(t,u),zu(t,i),Du(t,r),"Perform AI-powered assertions, extractions, or wait conditions"}async function uo(t){let[e,u,i,r,n,a,s,o,l,d]=await Promise.all([Re(t),Pe(t),qe(t),Oe(t),Me(t),Ue(t),He(t),je(t),Ve(t),We(t)]);return{mouse:e,navigation:u,input:i,scroll:r,tabs:n,files:a,forms:s,utility:o,auth:l,ai:d}}function io(t){return[`- Mouse: ${t.mouse}`,`- Navigation: ${t.navigation}`,`- Input: ${t.input}`,`- Scroll: ${t.scroll}`,`- Tabs: ${t.tabs}`,`- Files: ${t.files}`,`- Forms: ${t.forms}`,`- Utility: ${t.utility}`,`- Auth: ${t.auth}`,`- AI: ${t.ai}`].join(`
|
|
101
|
-
`)}var ro=[Re(H),Pe(H),qe(H),Oe(H),Me(H),Ue(H),He(H),je(H),We(H),Ve(H)],no=Promise.all(ro);async function L0(){await no}function I0(){return H}function _0(t=!0){let e=new ue;return t&&(Re(e),Pe(e),qe(e),Oe(e),Me(e),Ue(e),He(e),Ve(e),je(e),We(e)),e}async function N0(){let t=new ue,e=await uo(t),u=io(e);return{registry:t,capabilities:e,summary:u}}function $0(){return["- Mouse: Click, hover, double-click, right-click or drag on elements","- Navigation: Navigate to URLs, go back, or reload the page","- Input: Type text into inputs, clear input fields, or press keyboard keys","- Scroll: Scroll the page or scroll to specific text/elements","- Tabs: Switch between browser tabs or close tabs","- Files: Upload files or wait for downloads to complete","- Forms: Get dropdown options or select dropdown values","- Utility: Wait for conditions, save variables, or complete tasks","- Auth: Generate 2FA codes or extract email/activation codes","- AI: Perform AI-powered verifications, extractions, or wait conditions"].join(`
|
|
102
|
-
`)}var R0=class{constructor(t,e){this.registry=t,this.getContext=e}getToolDefinitions(){return this.registry.getTools().filter(t=>t.availability.mcp).map(t=>({name:t.name,description:t.description,inputSchema:Tt(t.schema)}))}getToolDefinitionsFiltered(t){let e=new Set(t);return this.registry.getTools().filter(u=>e.has(u.name)&&u.availability.mcp).map(u=>({name:u.name,description:u.description,inputSchema:Tt(u.schema)}))}async createServer(t="web-sdk-tools"){throw new Error("MCP server creation not yet implemented. Install and configure an MCP SDK like @modelcontextprotocol/sdk")}async executeTool(t,e){let u=await this.getContext(),i=await this.registry.execute(t,e,u);return{content:[{type:"text",text:i.success?i.message||"Tool executed successfully":i.error||"Tool execution failed"}]}}getToolCount(){return this.registry.size()}getToolNames(){return this.registry.getToolNames()}};function P0(t){return t.getTools().map(e=>({name:e.name,description:e.description,inputSchema:Tt(e.schema)}))}async function co(t,e){let u=JSON.parse(rt.readFileSync(e,"utf-8"));u.cookies?.length&&await t.addCookies(u.cookies)}var H0=class{constructor(t={}){t.testDir&&(this.testDir=t.testDir,this.videoBasePath=Bt.join(t.testDir,"videos"),this.statesBasePath=Bt.join(t.testDir,"states"),this.downloadsBasePath=Bt.join(t.testDir,"downloads"),rt.mkdirSync(this.videoBasePath,{recursive:!0}),rt.mkdirSync(this.statesBasePath,{recursive:!0}),rt.mkdirSync(this.downloadsBasePath,{recursive:!0})),this.terminationTimeout=t.terminationTimeout??null,this.defaultHeadless=t.headless??!1,this.additionalArgs=t.additionalArgs??[]}async launchBrowser(t={}){let e=t.debugPort,u=t.headless??this.defaultHeadless,i=mu(t.deviceName),r=gu(t.deviceName),n=i===Et.Chromium,a=!!t.extensionPath;c.info(`[BrowserManager] Launching ${i} browser for device: ${t.deviceName||"default"}${e?` on port ${e}`:""}`);let s={headless:u};if(n){a&&u&&(c.warn("[BrowserManager] Extension requested in headless mode; forcing headed mode to load extension."),u=!1,s.headless=!1);let C=[];(t.enableCamera||t.enableMicrophone)&&(C.push("--use-fake-device-for-media-stream","--use-fake-ui-for-media-stream"),t.enableMicrophone&&t.fakeAudioCapturePath&&(C.push(`--use-file-for-fake-audio-capture=${t.fakeAudioCapturePath}`),c.info(`[BrowserManager] Using fake audio capture file: ${t.fakeAudioCapturePath}`)));let w=a&&t.extensionPath?[`--disable-extensions-except=${t.extensionPath}`,`--load-extension=${t.extensionPath}`]:[];s.args=[...nu(e,t.disableSecurity??!0,u),...C,...w,...this.additionalArgs],r&&(s.channel=r,c.debug(`[BrowserManager] Launching browser with channel: ${r}`))}let o=du(t.deviceName),l=fu(t.deviceName),d={acceptDownloads:!0,...o,timezoneId:t.timezoneId||"America/Los_Angeles",locale:t.locale||"en-US"};t.viewport&&(d.viewport=t.viewport,d.screen=t.viewport),t.isMobile!==void 0&&(d.isMobile=t.isMobile),t.hasTouch!==void 0&&(d.hasTouch=t.hasTouch),t.userAgent&&(d.userAgent=t.userAgent),t.colorScheme&&(d.colorScheme=t.colorScheme),t.geolocation&&(d.geolocation=t.geolocation,d.permissions=[...d.permissions||[],"geolocation"]);let E=a&&n?t.localStorageStatePath:void 0;t.localStorageStatePath&&!E&&(d.storageState=t.localStorageStatePath),t.recordVideo&&this.videoBasePath&&(d.recordVideo={dir:this.videoBasePath,size:{width:l.width,height:l.height}}),t.proxy&&(d.proxy=t.proxy);let B,m,x,F=!1;if(n&&(a||t.userDataDir)){if(t.userDataDir)x=t.userDataDir;else{let w=this.testDir||rt.mkdtempSync(Bt.join(ao.tmpdir(),"shiplight-"));x=Bt.join(w,`ext-profile-${Date.now()}`),rt.mkdirSync(x,{recursive:!0}),F=!0}let C={...s,...d};m=await Pi.launchPersistentContext(x,C),E&&(await co(m,E),c.info(`[BrowserManager] Loaded storage state into persistent context from ${E}`)),B=m.browser(),c.info(`[BrowserManager] Launched persistent context${t.extensionPath?` for extension at ${t.extensionPath}`:` with profile at ${x}`}`)}else{switch(i){case Et.Firefox:B=await so.launch(s);break;case Et.Webkit:B=await oo.launch(s);break;case Et.Chromium:default:B=await Pi.launch(s);break}m=await B.newContext(d)}if(m.addInitScript(ru),n){let C=["clipboard-read","clipboard-write"];t.enableCamera&&C.push("camera"),t.enableMicrophone&&C.push("microphone");try{await m.grantPermissions(C),c.info(`[BrowserManager] Granted permissions: ${C.join(", ")}`)}catch(w){c.warn("[BrowserManager] Failed to grant permissions:",w)}}else(t.enableCamera||t.enableMicrophone)&&c.warn("[BrowserManager] Camera/microphone enabled but browser is not Chromium; ignoring.");if(t.cookies&&t.cookies.length>0){let C=(Date.now()+31536e6)/1e3,w=t.cookies.map(S=>({...S,expires:C}));await m.addCookies(w),c.info(`[BrowserManager] Added ${t.cookies.length} cookies to browser context with expires=${C}`)}let b=t.viewport,y=b?{width:b.width,height:b.height+cu}:pu(t.deviceName);if(c.info(`[BrowserManager] windowSize=${JSON.stringify(y)}`),n){let C=async w=>{try{await su(w,y.width,y.height),b&&await w.setViewportSize(b)}catch(S){c.warn("[BrowserManager] Failed to set window bounds via CDP:",S)}};for(let w of m.pages())await C(w);m.on("page",C)}let _="";if(n&&e!==void 0)try{_=await au(e)}catch(C){c.warn("[BrowserManager] Failed to get CDP WebSocket URL:",C)}let A={debugPort:e,browser:B,context:m,startTime:new Date,timeout:null,browserWsUrl:_,downloadsBasePath:this.downloadsBasePath,browserType:i,userDataDir:x,isTempUserDataDir:F};if(this.terminationTimeout!==null){let C=setTimeout(()=>{c.info(`[BrowserManager] Browser auto-terminated after ${this.terminationTimeout}ms`),this.terminateBrowser(A).catch(w=>c.error("[BrowserManager] Error terminating browser:",w))},this.terminationTimeout);A.timeout=C}return A}async terminateBrowser(t){if(t.timeout&&clearTimeout(t.timeout),await t.context.close(),await t.browser.close(),t.isTempUserDataDir&&t.userDataDir)try{rt.rmSync(t.userDataDir,{recursive:!0,force:!0})}catch(e){c.warn("[BrowserManager] Failed to clean up temp user data dir:",t.userDataDir,e)}}getVideoBasePath(){return this.videoBasePath}getStatesBasePath(){return this.statesBasePath}getDownloadsBasePath(){return this.downloadsBasePath}},j0=t=>{if(!t||t===lu)return"desktop";let e=hu(t);return e&&e.isMobile?"mobile":"desktop"},lo=(t=>(t.Desktop="desktop",t.Mobile="mobile",t))(lo||{}),ho=class{constructor(t){this.currentPage=null,this.currentIndex=-1,this.context=t,this.initialize()}initialize(){this.context.on("page",async e=>{await this.handleNewPage(e)});let t=this.context.pages();t.length>0&&(this.currentPage=t[0],this.currentIndex=0);for(let e of t)this.setupPageListeners(e)}async handleNewPage(t){try{this.setupPageListeners(t);let e=this.context.pages().indexOf(t);await this.setCurrentPage(t,e)}catch{}}setupPageListeners(t){t.on("close",async()=>{await this.handlePageClose(t)})}async handlePageClose(t){try{if(this.currentPage===t){let e=this.context.pages(),u=e.slice().reverse().find(i=>!i.isClosed());u&&await this.setCurrentPage(u,e.indexOf(u))}}catch{}}async setCurrentPage(t,e){let u=this.currentPage!==t;this.currentPage=t,this.currentIndex=e,u&&await t.bringToFront()}async switchToPage(t){let e=this.context.pages();if(t<0||t>=e.length)throw new Error(`Invalid page index: ${t}. Available pages: 0-${e.length-1}`);let u=e[t];if(u.isClosed())throw new Error(`Page at index ${t} is closed`);return await this.setCurrentPage(u,t),u}async closePage(t){let e=this.context.pages();if(t<0||t>=e.length)throw new Error(`Invalid page index: ${t}. Available pages: 0-${e.length-1}`);let u=e[t];if(u.isClosed())throw new Error(`Page at index ${t} is already closed`);await u.close()}getCurrentPage(){return this.currentPage}getCurrentIndex(){return this.currentIndex}getAllPages(){return this.context.pages()}getPageCount(){return this.context.pages().length}};async function po(t,e=3e3,u=1e3){try{await Xt(t,e,u)}catch{}}async function fo(t,e,u){let i=u*1e3,r=100,n=Date.now();for(;!e.downloadStatus||e.downloadStatus.status==="inProgress";){if(Date.now()-n>i){let a;throw e.downloadStatus?a=`Timed out after ${i}ms waiting for download to complete`:a="No download in progress or completed",c.error(a),new Error(a)}await t.waitForTimeout(r)}if(e.downloadStatus.status==="failed"){let a=`Download failed: ${e.downloadStatus.error||"Unknown error"}`;throw c.error(a),new Error(a)}e.agentNote=`Download completed: ${e.downloadStatus.filename}`}async function go(t,e,u,i=60,r){let n=Math.min(i,280),a=Math.max(10,n/10)*1e3,s=Date.now()+n*1e3;for(c.info(`Waiting for condition: "${e}" (timeout: ${n}s)`);;){let o=Date.now();try{if(await u(t,e,r))return c.info(`Condition met: "${e}"`),!0}catch(d){c.warn(`Error evaluating condition: ${d.message}`)}if(Date.now()>s)return c.warn(`Timeout waiting for condition: "${e}"`),!1;let l=a-(Date.now()-o);l>0&&await t.waitForTimeout(l)}}var mo=te(Wr(),1);function xo(t){return t.url()===":"}var Ao=class{constructor(t){this.context=t,this.testDataFileNames=[],this.extensionEnabled=!1}setTestDataDownloader(t,e){this.testDataDownloader=t,this.testDataFileNames=e??[]}setupPageTracking(t){this.tabManager=new ho(t)}async switchTab(t){if(!this.tabManager)throw new Error("Tab manager not initialized");return await this.tabManager.switchToPage(t)}async closeTab(t){if(!this.tabManager)throw new Error("Tab manager not initialized");await this.tabManager.closePage(t)}getCurrentPage(){return this.tabManager?this.tabManager.getCurrentPage():null}validatePage(t){let e=this.getCurrentPage();if(e&&e!==t&&!e.isClosed())return c.info(`[validatePage] Page changed, switching to ${e.url()}`),e;if(t.isClosed()){let u=t.context().pages().filter(i=>!i.isClosed());if(u.length>0){let i=u[u.length-1];return c.info(`[validatePage] Page closed, switching to ${i.url()}`),i}c.error("[validatePage] No valid pages found")}return t}replaceVariables(t){return xu(t,this.context.variableStore.getAll())}getTestDataFileNames(){return this.testDataFileNames}getTestDataFilePath(t){let e=this.context.testDataDir||process.cwd();return bt.join(e,t)}async downloadTestDataFiles(t){if(t.length===0){c.debug("[AgentServices] No file paths provided for download");return}let e=this.context.testDataDir||process.cwd(),u=t.filter(i=>{let r=bt.basename(i),n=bt.join(e,r),a=Tr.existsSync(n);return a&&c.debug(`[AgentServices] File already exists locally: ${r}`),!a});if(u.length===0){c.debug("[AgentServices] All files exist locally, no download needed");return}if(!this.testDataDownloader){c.debug("[AgentServices] No test data downloader configured, assuming files are pre-populated");return}c.info(`[AgentServices] Downloading ${u.length} test data files: ${u.join(", ")}`),await this.testDataDownloader(u,e)}async waitForDownloadComplete(t,e){return fo(t,this.context,e)}getRecentDownloadedFilePath(){return this.context.downloadStatus?this.context.downloadStatus.status!=="completed"?(c.debug(`Download is ${this.context.downloadStatus.status}, not completed`),null):this.context.downloadStatus.filePath?(c.info(`Retrieved recent download path: ${this.context.downloadStatus.filePath}`),this.context.downloadStatus.filePath):(c.warn("Download completed but file path is missing"),null):(c.debug("No download found"),null)}addSensitive(t,e){this.context.variableStore.set(t,e,!0)}saveVariable(t,e){let u=t.startsWith("$")?t.slice(1):t;this.context.variableStore.set(u,e),c.debug(`Saved variable: ${u} = ${JSON.stringify(e)}`),this.context.agentNote=`A new value is saved to the variable "${u}".`}addNote(t){!t||t.trim()===""||(this.context.agentNote?this.context.agentNote+=`
|
|
103
|
-
${t.trim()}`:this.context.agentNote=t.trim())}readVariable(t){let e=t.startsWith("$")?t.slice(1):t,u=this.context.variableStore.get(e);return c.debug(`Read variable: ${e} = ${JSON.stringify(u)}`),u}async generate2faCode(t){try{let e=mo.authenticator.generate(t);return c.info(`Generated 2FA code: ${e}`),e}catch(e){throw c.error(`Failed to generate 2FA code: ${e.message}`),new Error(`Failed to generate 2FA code: ${e.message}`)}}async getDOMText(t){return await t.evaluate(()=>document.body.innerText)}async waitUntilStable(t,e){return Xt(t,e)}setPage(t){this.context.setPage?(c.info("[AgentServices] Calling setPage callback"),this.context.setPage(t)):c.debug("[AgentServices] setPage callback not configured")}getModel(){if(!this.context.model)throw new Error("No LLM model configured. An LLM model is required for AI-powered actions (login, verify, ai_extract, ai_wait_until, etc.). Set GOOGLE_API_KEY or ANTHROPIC_API_KEY in your MCP server configuration.");return this.context.model}get variableStore(){return this.context.variableStore}getDownloadDir(){return this.context.downloadDir}getActionSettings(){return this.context.organizationSettings?.action_code_conversion_settings||{}}getInteractiveClassNames(){return this.context.organizationSettings?.agent_settings?.interactive_class_names||[]}getIframeFallbackDomains(){return this.context.organizationSettings?.agent_settings?.iframe_fallback_domains||[]}isUseCleanScreenshotForAssertion(){return this.context.organizationSettings?.use_clean_screenshot_for_assertion||!1}isKnowledgeImagesEnabled(){return this.context.organizationSettings?.agent_settings?.enable_knowledge_images||!1}isSlicedScreenshotsEnabled(){return this.context.organizationSettings?.agent_settings?.use_sliced_screenshots||!1}isResizeSlicedScreenshotsEnabled(){return this.context.organizationSettings?.agent_settings?.resize_sliced_screenshots||!1}isAccessibilityTreeEnabled(){return this.context.organizationSettings?.agent_settings?.use_accessibility_tree||!1}isActionIntentFilteringEnabled(){return this.context.organizationSettings?.agent_settings?.use_action_intent_filtering||!1}isDomTreeTsEnabled(){let t=process.env.USE_DOM_TREE_TS;return t!==void 0?t==="true"||t==="1":this.context.organizationSettings?.agent_settings?.use_dom_tree_ts||!1}setExtensionEnabled(t){this.extensionEnabled=t}getDomServiceOptions(){return{useDomTreeTs:this.isDomTreeTsEnabled(),domTreeRoot:this.extensionEnabled?"document":"body"}}setKnowledgeRetriever(t){this.knowledgeRetriever=t}hasKnowledgeRetriever(){return this.knowledgeRetriever!==void 0}async retrieveKnowledges(t,e,u,i){if(!this.knowledgeRetriever)return c.debug("[AgentServices] No knowledge retriever configured"),[];try{let r=await this.knowledgeRetriever(t,e,u,i);return c.debug(`[AgentServices] Retrieved ${r.length} knowledges for statement`),r}catch(r){return c.warn(`[AgentServices] Failed to retrieve knowledges: ${r.message}`),[]}}},Eo=(t=>(t.Started="started",t.Action="action",t.Completion="completion",t.Error="error",t.Aborted="aborted",t.Keepalive="keepalive",t))(Eo||{}),Bo=class extends Error{constructor(t){super(t),this.name="AgentTaskFailedError",this.details=t}},Co=1,Do=3,bo=40;function Ct(t,e){let u={};for(let[i,r]of Object.entries(t))u[i]=e.has(i)?"*****":r;return u}var wo=class{constructor(t){this.context=t,this._newActionEntities=new Map,this.agentServices=new Ao(t),this.agentServices.agent=this,this.context.tokenUsages||(this.context.tokenUsages=[])}getNewActionEntities(){return this._newActionEntities}async getActionHandler(){if(!this._actionHandler){let{default:t}=await import("./handler-7JPASJ4Y-KWA27ONH.js");this._actionHandler=new t}return this._actionHandler}async execAction(t,e,u){let i=(await this.getActionHandler()).getAction(t);if(!i)throw new Error(`Unknown action: ${t}`);await i.execute(e,u,this.agentServices)}async dismissModalIfPresent(t,e){try{let u=await this.execute(t,`TASK: Check if there is an INTRUSIVE POPUP blocking the page, and dismiss it if present.
|
|
104
|
-
|
|
105
|
-
ONLY dismiss intrusive popups such as:
|
|
106
|
-
- Cookie/GDPR consent banners
|
|
107
|
-
- Newsletter or email signup popups
|
|
108
|
-
- Promotional discount or upsell popups
|
|
109
|
-
- "Rate our app" or feedback request popups
|
|
110
|
-
- Push notification permission requests
|
|
111
|
-
- Age verification popups
|
|
112
|
-
- Or similar unwanted popups that interrupt the user experience
|
|
113
|
-
|
|
114
|
-
DO NOT dismiss or interact with:
|
|
115
|
-
- Normal UI elements, buttons, or controls on the page
|
|
116
|
-
- Dialogs that are part of the user's workflow (confirmations, form submissions, etc.)
|
|
117
|
-
- Dropdown menus, filters, or date pickers
|
|
118
|
-
${e?`- Anything related to: "${e}"`:""}
|
|
119
|
-
|
|
120
|
-
If you find an intrusive popup, dismiss it by clicking its close/X button or "No thanks"/"Decline" button.
|
|
121
|
-
|
|
122
|
-
IMPORTANT: Only act with HIGH CONFIDENCE. If unsure whether something is an intrusive popup, do nothing.
|
|
123
|
-
It's better to miss a popup than to accidentally interact with normal page elements.
|
|
124
|
-
|
|
125
|
-
If NO intrusive popup is present, do nothing and report that no intrusive popup was found.`,void 0,!1,Do),i=!!(u.actions&&u.actions.length>0);return{success:u.success,modalDismissed:i,details:u.details||(i?"Modal dismissed":"No modal found")}}catch(u){return{success:!1,modalDismissed:!1,details:u.message||"Modal dismissal failed"}}}_getContext(){return this.context}setupDownloadTracking(t){if(c.info(`[Download Tracking] Setting up download tracking for page: ${t.url()}`),xo(t)){c.info(`[Download Tracking] Skipping download tracking for blank tab: ${t.url()}`),t.close();return}t.on("download",async e=>{let u=e.suggestedFilename();c.info(`[Download Tracking] Download event detected! File: ${u}`),this.context.downloadStatus={filename:u,status:"inProgress",startTime:Date.now()},c.info(`[Download Tracking] Download status set to inProgress: ${JSON.stringify(this.context.downloadStatus)}`);try{let i=this.context.downloadDir||M.join(process.cwd(),"downloads");P.existsSync(i)||P.mkdirSync(i,{recursive:!0});let r=M.join(i,u);c.info(`[Download Tracking] Downloading file to: ${r}`),await e.saveAs(r),this.context.downloadStatus={filename:u,status:"completed",startTime:this.context.downloadStatus.startTime,filePath:r,timestamp:Date.now()},c.info(`[Download Tracking] Download completed: ${r}`),c.info(`[Download Tracking] Download status set to completed: ${JSON.stringify(this.context.downloadStatus)}`)}catch(i){this.context.downloadStatus={filename:u,status:"failed",startTime:this.context.downloadStatus.startTime,error:i.message,timestamp:Date.now()},c.error(`[Download Tracking] Download failed for ${u}: ${i.message}`)}})}setupDialogHandling(t){if(c.debug(`[Dialog Handling] setupDialogHandling called, isClosed=${t.isClosed()}, url=${t.url()}`),t.isClosed()){c.debug("[Dialog Handling] Skipping - page is closed");return}c.info(`[Dialog Handling] Setting up dialog handling for page: ${t.url()}`),t.on("dialog",async e=>{let u=e.type(),i=e.message();c.info(`[Dialog Handling] Dialog detected - type: ${u}, message: "${i}"`);let r=u==="beforeunload";try{r?await e.dismiss():await e.accept(),this.context.dialogStatus={type:u,message:i,response:r?"dismiss":"accept",timestamp:Date.now()},c.info(`[Dialog Handling] Dialog ${r?"dismissed":"accepted"} - type: ${u}, message: "${i}"`)}catch(n){c.warn(`[Dialog Handling] Failed to handle dialog (already dismissed?): ${n}`)}})}getRecentDownloadedFilePath(){return this.agentServices.getRecentDownloadedFilePath()}addNote(t){this.agentServices.addNote(t)}collectTokenUsages(t){let e;Array.isArray(t)?e=t:t?.tokenUsages&&(e=t.tokenUsages),e&&e.length>0?(this.context.tokenUsages||(this.context.tokenUsages=[]),this.context.tokenUsages.push(...e),c.debug(`[collectTokenUsages] Added ${e.length} token usage(s), total: ${this.context.tokenUsages.length}`)):c.debug("[collectTokenUsages] No token usages to collect (undefined or empty)")}trackAIAction(t,e,u,i=1,r,n){if(!t)return;let a=u?.tokenUsages||[];this.context.aiActionDetails||(this.context.aiActionDetails=[]);let s=this.context.aiActionDetails.find(o=>o.stepId===t&&o.actionType===e);s?(s.count+=i,a.length>0&&s.tokenUsages.push(...a),u?.userPrompt&&(s.userPrompt=u.userPrompt),u?.rawLlmResponse&&(s.rawLlmResponse=u.rawLlmResponse),u?.reasoningContent&&(s.reasoningContent=u.reasoningContent),u?.elementTree&&(s.elementTree=u.elementTree),u?.screenshotWithSom&&(s.screenshotWithSom=u.screenshotWithSom),n&&(s.explanation=n)):this.context.aiActionDetails.push({stepId:t,actionType:e,count:i,tokenUsages:[...a],statement:r,userPrompt:u?.userPrompt,rawLlmResponse:u?.rawLlmResponse,reasoningContent:u?.reasoningContent,explanation:n,elementTree:u?.elementTree,screenshotWithSom:u?.screenshotWithSom}),c.debug(`[trackAIAction] Tracked ${e} for step ${t}, count: ${i}`)}async assert(t,e,u){c.info(`Asserting statement: ${e}`),u&&this.context.stepTracking&&await this.createStepResult(t,u,e),await this.agentServices.waitUntilStable(t);try{let i=this.getCompletedExecutionHistory(),r=await ae(e,t,this.agentServices,{executionHistory:i,useCleanScreenshotForAssertion:!0,variables:this.context.variableStore.getAll(),sensitiveKeys:this.context.variableStore.getAllSensitiveKeys()});this.collectTokenUsages(r.debugInfo),this.context.lastActionDebugInfo=r.debugInfo;let n=r.explanation||r.error||"No explanation";if(u&&this.trackAIAction(u,"assert",r.debugInfo,1,e,n),this.context.agentNote=n,u&&this.context.stepTracking&&await this.updateStepResult(u,r.success?"success":"failure",n,void 0,r.debugInfo),!r.success)throw this.addToExecutionHistory(`Assert: "${e}"`,`Failed: ${n}`),new Error(`Assertion failed: ${n}`);return this.addToExecutionHistory(`Assert: "${e}"`,`Passed: ${n}`),!0}catch(i){throw u&&this.context.stepTracking&&await this.updateStepResult(u,"failure",i.message),i}}async evaluate(t,e,u){c.info(`Evaluating condition: ${e}`),u&&this.context.stepTracking&&await this.createStepResult(t,u,e),await this.agentServices.waitUntilStable(t);try{let i=this.getCompletedExecutionHistory(),r=await ae(e,t,this.agentServices,{executionHistory:i,variables:this.context.variableStore.getAll(),sensitiveKeys:this.context.variableStore.getAllSensitiveKeys()});this.collectTokenUsages(r.debugInfo),this.context.lastActionDebugInfo=r.debugInfo;let n=r.explanation||r.error||"No explanation";return u&&this.trackAIAction(u,"evaluate",r.debugInfo,1,e,n),this.context.agentNote=n,u&&this.context.stepTracking&&await this.updateStepResult(u,"success",n,void 0,r.debugInfo),r.success?(this.addToExecutionHistory(`Evaluate: "${e}"`,`Result: true - ${n}`),!0):(c.warn(`AI evaluation returned false/unknown: ${n}`),this.addToExecutionHistory(`Evaluate: "${e}"`,`Unknown/False: ${n}`),!1)}catch(i){throw u&&this.context.stepTracking&&await this.updateStepResult(u,"failure",i.message),i}}async performAction(t,e){c.info(`Act: ${e}`);let u=this.getCompletedExecutionHistory(),i=await ne(e,t,this.agentServices,{executionHistory:u,variables:this.context.variableStore.getAll(),sensitiveKeys:this.context.variableStore.getAllSensitiveKeys()});if(this.collectTokenUsages(i.debugInfo),i.status!=="success"||i.actionEntities.length===0)return{success:!1,details:i.explanation||i.error||"Action failed"};let r=i.actionEntities[0]?.action_description||e;return this.addToExecutionHistory(e,r),{success:!0,details:i.explanation}}async execute(t,e,u,i,r){if(r!==void 0&&r<=0)throw new Error(`maxSteps must be >= 1, got ${r}`);let n=r!==void 0&&r>1;c.info(`Executing statement: ${e} (${n?`multi, maxSteps: ${r}`:"single"})`),u&&this.context.stepTracking&&await this.createStepResult(t,u,e),t=this.agentServices.validatePage(t),await this.agentServices.waitUntilStable(t);try{let a=this.getCompletedExecutionHistory();this.context.agentNote="";let s,o;if(n){let d=u&&this.context.stepTracking?.artifactsDir?E=>{if(E.type==="action"&&E.debugInfo){let B=`${u}-step${E.step}`;this.saveDebugInfoToFiles(B,E.debugInfo,this.context.model)}}:void 0;if(s=await se(e,t,this.agentServices,d,{executionHistory:a,variables:this.context.variableStore.getAll(),sensitiveKeys:this.context.variableStore.getAllSensitiveKeys(),maxSteps:r??bo}),o=s.completed,this.collectTokenUsages(s.tokenUsages),u&&s.tokenUsages){let E={tokenUsages:s.tokenUsages};this.trackAIAction(u,"execute",E,s.actionEntities?.length||1,e,s.explanation||"Multi-step execution completed")}}else if(t=this.agentServices.validatePage(t),s=await ne(e,t,this.agentServices,{executionHistory:a,variables:this.context.variableStore.getAll(),sensitiveKeys:this.context.variableStore.getAllSensitiveKeys(),usePureVision:i}),o=s.completed,this.collectTokenUsages(s.debugInfo),this.context.lastActionDebugInfo=s.debugInfo,u){let d=s.explanation||s.error||"No explanation";this.trackAIAction(u,"execute",s.debugInfo,1,e,d)}if(s.status!=="success"||s.actionEntities.length===0||!o){let d=s.explanation||s.error||"Goal not completed";throw u&&this.context.stepTracking&&await this.updateStepResult(u,"failure",d,void 0,s.debugInfo),new Error(`Action failed: ${d}`)}let l=this.context.agentNote||s.explanation||"Action executed successfully";return u&&this.context.stepTracking&&await this.updateStepResult(u,"success",l,void 0,s.debugInfo),this.addToExecutionHistory(`Execute: "${e}"`,l),{success:!0,details:l,actions:s.actionEntities,debugInfo:s.debugInfo}}catch(a){throw u&&this.context.stepTracking&&await this.updateStepResult(u,"failure",a.message),this.addToExecutionHistory(`Execute: "${e}"`,`Failed: ${a.message}`),a}}async generate(t,e,u,i){u&&this.context.stepTracking&&await this.createStepResult(t,u,e);try{let r=this.getCompletedExecutionHistory(),n=await Xu(e,t,this.agentServices,{executionHistory:r,variables:this.context.variableStore.getAll(),sensitiveKeys:this.context.variableStore.getAllSensitiveKeys(),usePureVision:i});if(this.collectTokenUsages(n.debugInfo),n.status!=="success"||n.actionEntities.length===0){let o=n.explanation||n.error||"No explanation";throw u&&this.trackAIAction(u,"generate",n.debugInfo,1,e,o),u&&this.context.stepTracking&&await this.updateStepResult(u,"failure",o,void 0,n.debugInfo),new Error(o)}let a=n.completed,s=n.explanation||"Action generated successfully";return u&&this.trackAIAction(u,"generate",n.debugInfo,1,e,s),u&&this.context.stepTracking&&await this.updateStepResult(u,"success",s,void 0,n.debugInfo),c.info(`[generate] Generated action for "${e}": ${s}, goalAccomplished: ${n.completed}`),{success:a,details:s,actions:n.actionEntities,debugInfo:n.debugInfo}}catch(r){throw u&&this.context.stepTracking&&await this.updateStepResult(u,"failure",r.message),r}}async run(t,e,u,i){u&&this.context.stepTracking&&await this.createStepResult(t,u,e);try{let r=this.getCompletedExecutionHistory();this.context.agentNote="";let n=u&&this.context.stepTracking?.artifactsDir,a=i?.onAction||n?d=>{if(d.type==="action"&&d.action_entity&&(i?.onAction?.(d.action_entity),n&&d.debugInfo)){let E=`${u}-step${d.step}`;this.saveDebugInfoToFiles(E,d.debugInfo,this.context.model)}}:void 0,s=await se(e,t,this.agentServices,a,{executionHistory:r,variables:this.context.variableStore.getAll(),sensitiveKeys:this.context.variableStore.getAllSensitiveKeys(),abortSignal:i?.abortSignal,maxSteps:i?.maxSteps});k.log(`Run task result: status=${s.status}, completed=${s.completed}, actions=${s.actionEntities?.length||0}`),this.collectTokenUsages(s.tokenUsages);let o=s.status==="success"&&s.completed,l=this.context.agentNote?.trim()||s.explanation||s.error||(o?"Step completed":"Step failed");if(u&&s.tokenUsages){let d={tokenUsages:s.tokenUsages};this.trackAIAction(u,"run",d,s.actionEntities?.length||1,e,l)}if(!o)throw new Bo(l);if(i?.stmtUid&&s.actionEntities?.length){let d=s.actionEntities.at(-1);d&&(this._newActionEntities.set(i.stmtUid,d),k.log(`Stored resolved action entity for DRAFT stmtUid: ${i.stmtUid}`))}return u&&this.context.stepTracking&&await this.updateStepResult(u,"success",l,void 0,void 0),this.addToExecutionHistory(`Run: "${e}"`,l),k.log(`Run result: success=${o}, details=${l}`),{success:o,details:l,actions:s.actionEntities}}catch(r){throw u&&this.context.stepTracking&&await this.updateStepResult(u,"failure",r.message),this.addToExecutionHistory(`Run: "${e}"`,`Failed: ${r.message}`),r}}async step(t,e,u,i,r,n=!0,a){let s=Date.now();this.context.stepTracking&&await this.createStepResult(t,i,u),t=this.agentServices.validatePage(t),await this.agentServices.waitUntilStable(t),this.context.stepTracking&&(this.context.stepTracking.currentStepId=i),t=this.agentServices.validatePage(t);let o=t.url(),l=await this.captureDOMSnapshot(t),d=this.context.stepTracking?.captureVariables?Ct(this.context.variableStore.getAll(),this.context.variableStore.getAllSensitiveKeys()):{},E=this.context.stepTracking?.results[i]?.screenshot;try{c.info(`Executing step ${i}: ${u}`),this.addToExecutionHistory(u,""),this.context.agentNote="",t=this.agentServices.validatePage(t);let B=await e();t=this.agentServices.validatePage(t);let m=t.url(),x=await this.captureDOMSnapshot(t),F=this.context.stepTracking?.captureVariables?Ct(this.context.variableStore.getAll(),this.context.variableStore.getAllSensitiveKeys()):{};if(this.context.stepTracking&&await this.updateStepResult(i,"success",""),this.context.stepTracking?.captureStateTransitions&&this.context.stepTracking.stateTransitions){let y=Date.now()-s,_=this.context.stepTracking.results[i]?.screenshot,A=Date.now();this.context.stepTracking.stateTransitions.length===0&&this.context.stepTracking.stateTransitions.push({type:"state",url:o,domSnapshot:l||void 0,variables:d,screenshotPath:E,timestamp:s}),this.context.stepTracking.stateTransitions.push({type:"action",stepId:i,description:u,action:{playwrightCode:[e.toString()]},consoleLogs:this.getConsoleLogsForStep(i),durationMs:y,status:"success"}),this.context.stepTracking.stateTransitions.push({type:"state",url:m,domSnapshot:x||void 0,variables:F,screenshotPath:_,timestamp:A})}let b=this.context.agentNote;return(!b||b.trim()==="")&&(b="Execution successful"),this.context.executionHistory&&this.context.executionHistory.length>0&&(this.context.executionHistory[this.context.executionHistory.length-1][1]=b),this.context.stepTracking&&(this.context.stepTracking.currentStepId=void 0),B}catch(B){t=this.agentServices.validatePage(t);let m=n&&!this.context.isSelfHealing;if(m&&(this.context.stepTracking&&await this.updateStepResult(i,"failure",B.message),this.context.executionHistory&&this.context.executionHistory.length>0&&(this.context.executionHistory[this.context.executionHistory.length-1][1]=B.message)),!u||u.trim()==="")throw c.error("No description provided for self-healing"),this.context.stepTracking&&(this.context.stepTracking.currentStepId=void 0),B;if(!m){if(c.info(`Failed to heal at step ${i}. ${u}`),this.context.isSelfHealing=!1,this.context.stepTracking?.captureStateTransitions&&this.context.stepTracking.stateTransitions){let b=t.url(),y=await this.captureDOMSnapshot(t),_=this.context.stepTracking.captureVariables?Ct(this.context.variableStore.getAll(),this.context.variableStore.getAllSensitiveKeys()):{},A=Date.now()-s,C=Date.now();this.context.stepTracking.stateTransitions.length===0&&this.context.stepTracking.stateTransitions.push({type:"state",url:o,domSnapshot:l||void 0,variables:d,screenshotPath:E,timestamp:s}),this.context.stepTracking.stateTransitions.push({type:"action",stepId:i,description:u,action:{playwrightCode:[e.toString()]},consoleLogs:this.getConsoleLogsForStep(i),durationMs:A,status:"failure",errorMessage:B.message}),this.context.stepTracking.stateTransitions.push({type:"state",url:b,domSnapshot:y||void 0,variables:_,timestamp:C})}throw this.context.stepTracking&&(await this.updateStepResult(i,void 0,void 0),this.context.stepTracking.currentStepId=void 0),B}this.context.isSelfHealing=!0,c.info(`Action failed at step ${i}. ${u}`),c.info(`with error: ${B.message}`);let x;if(this.context.autoDisableModal){c.info("Attempting modal dismissal before self-healing...");let b=await this.dismissModalIfPresent(t,u);if(c.info(`Modal dismissal result: ${b.details}`),b.modalDismissed){x=`[Auto-dismissed modal: ${b.details}]`,c.info(`Modal dismissed, retrying original action for step ${i}`);try{let y=await e();return this.context.isSelfHealing=!1,this.context.executionHistory&&this.context.executionHistory.length>0&&(this.context.executionHistory[this.context.executionHistory.length-1][1]=x+" Retry successful"),this.context.stepTracking&&(await this.updateStepResult(i,"success",x),this.context.stepTracking.currentStepId=void 0),y}catch(y){c.info(`Retry after modal dismissal failed: ${y.message}, falling back to self-healing`)}}}let F=a??Co;c.info(`Calling execute() to self-heal (maxSteps: ${F})`);try{let b=await this.execute(t,u,i,!1,F);if(this.context.isSelfHealing=!1,!b.success)throw new Error(`Self-healing failed: ${b.details}`);let y=b.actions?.at(-1);r&&y&&(this._newActionEntities.set(r,y),c.info(`Stored new action entity for stmtUid: ${r} (last of ${b.actions?.length} actions)`));let _=t.url(),A=await this.captureDOMSnapshot(t),C=this.context.stepTracking?.captureVariables?Ct(this.context.variableStore.getAll(),this.context.variableStore.getAllSensitiveKeys()):{};if(this.context.stepTracking){this.context.stepTracking.results[i].autoHealed=!0,this.context.stepTracking.results[i].healedAction=y;let w=x||"";await this.updateStepResult(i,"success",w)}if(this.context.stepTracking?.captureStateTransitions&&this.context.stepTracking.stateTransitions){let w=Date.now()-s,S=this.context.stepTracking.results[i]?.screenshot,$=Date.now();this.context.stepTracking.stateTransitions.length===0&&this.context.stepTracking.stateTransitions.push({type:"state",url:o,domSnapshot:l||void 0,variables:d,screenshotPath:E,timestamp:s}),this.context.stepTracking.stateTransitions.push({type:"action",stepId:i,description:u,action:{actionEntity:y,playwrightCode:b.actions?.map(Y=>Y.locator||""),llmPrompt:b.debugInfo?.userPrompt,llmResponse:b.debugInfo?.rawLlmResponse,llmReasoning:b.debugInfo?.reasoningContent},consoleLogs:this.getConsoleLogsForStep(i),durationMs:w,status:"success"}),this.context.stepTracking.stateTransitions.push({type:"state",url:_,domSnapshot:A||void 0,variables:C,screenshotPath:S,timestamp:$})}return this.context.stepTracking&&(this.context.stepTracking.currentStepId=void 0),b}catch(b){if(this.context.isSelfHealing=!1,this.context.stepTracking?.captureStateTransitions&&this.context.stepTracking.stateTransitions){let y=t.url(),_=await this.captureDOMSnapshot(t),A=this.context.stepTracking.captureVariables?Ct(this.context.variableStore.getAll(),this.context.variableStore.getAllSensitiveKeys()):{},C=Date.now()-s,w=Date.now();this.context.stepTracking.stateTransitions.length===0&&this.context.stepTracking.stateTransitions.push({type:"state",url:o,domSnapshot:l||void 0,variables:d,screenshotPath:E,timestamp:s}),this.context.stepTracking.stateTransitions.push({type:"action",stepId:i,description:u,action:{playwrightCode:[e.toString()]},consoleLogs:this.getConsoleLogsForStep(i),durationMs:C,status:"failure",errorMessage:b.message}),this.context.stepTracking.stateTransitions.push({type:"state",url:y,domSnapshot:_||void 0,variables:A,timestamp:w})}throw this.context.stepTracking&&(this.context.stepTracking.currentStepId=void 0),b}}}async extract(t,e,u,i){i&&this.context.stepTracking&&await this.createStepResult(t,i,`Extract ${e} into ${u}`);try{let r=`Extract ${e} and save to ${u}`,n=await this.execute(t,r,i);if(!n.success)throw new Error(`AI extraction failed: ${n.details}`);i&&this.context.stepTracking&&await this.updateStepResult(i,"success",`Extracted ${e} to ${u}`)}catch(r){throw i&&this.context.stepTracking&&await this.updateStepResult(i,"failure",r.message),r}}async getDOMText(t){let e=new re(this.agentServices.getDomServiceOptions()),u=this.agentServices.getInteractiveClassNames(),i=this.agentServices.getIframeFallbackDomains();return(await e.getClickableElements(t,{interactiveClassNames:u,playwrightFrameFallbackDomains:i})).elementTree.clickableElementsToString()}async captureDOMSnapshot(t){if(!this.context.stepTracking?.captureStateTransitions||!this.context.stepTracking?.captureDom)return null;try{let e=new re(this.agentServices.getDomServiceOptions()),u=this.agentServices.getInteractiveClassNames(),i=this.agentServices.getIframeFallbackDomains(),r=await e.getClickableElements(t,{interactiveClassNames:u,playwrightFrameFallbackDomains:i,highlightElements:!1,viewportExpansion:0});return{elementTreeText:r.elementTree.clickableElementsToString(),elementCount:r.selectorMap.size,timestamp:Date.now()}}catch(e){return c.warn("Failed to capture DOM snapshot:",e),null}}getConsoleLogsForStep(t){return this.context.stepTracking?.consoleLogs?this.context.stepTracking.consoleLogs.filter(e=>e.stepId===t).map(e=>({type:e.type,message:e.message,timestamp:e.timestamp})):[]}async waitUntilStable(t,e=3e3,u=1e3){return po(t,e,u)}async waitUntilCondition(t,e,u=60,i){return go(t,e,(r,n,a)=>this.evaluate(r,n,a),u,i)}async uploadFile(t,e,u={},i){return Fu(t,e,u,this.context,(r,n,a)=>this.execute(r,n,a),i)}async loginPage(t,e,u){let{LoginType:i}=await import("./agentLogin-LDQHQBLK-H5M326VA.js");if(c.info("Start login"),k.section("Login Flow"),k.log(`Site URL: ${e.site_url}`),k.log(`Account type: ${e.account.type}`),k.log(`Has cached actions: ${!!u?.cached_actions?.length}`),k.log(`Has validation exprs: ${!!u?.validation_exprs?.length}`),e.skip_verification)return c.info("Skipping login verification (skip_verification=true)"),{success:!0,page:t};if((e.account.type===i.PASSWORD||e.account.type===i.OAUTH2)&&(this.context.variableStore.set("username",e.account.username,!0),this.context.variableStore.set("password",e.account.password,!0)),e.account.two_factor_auth_config?.type==="totp"&&this.context.variableStore.set("otp_secret_key",e.account.two_factor_auth_config.data,!0),c.info(`Navigating to: ${e.site_url}`),await t.goto(e.site_url),await this.waitUntilStable(t,1e4,3e3),u?.validation_exprs&&u.validation_exprs.length>0){if(k.log("Level 1: Checking if already logged in via storage state..."),k.log(`Validation expressions: ${JSON.stringify(u.validation_exprs)}`),await ee(t,u.validation_exprs))return k.log("Level 1 SUCCESS: Already logged in via storage state"),c.info("Login: Already logged in via storage state"),{success:!0,page:t,storage_state:null,cached_actions:u.cached_actions,validation_exprs:u.validation_exprs,alreadyLoggedIn:!0};k.log("Level 1 FAILED: Storage state validation failed, trying Level 2")}if(u?.cached_actions&&u.cached_actions.length>0&&u?.validation_exprs&&u.validation_exprs.length>0){k.log(`Level 2: Attempting cached login with ${u.cached_actions.length} actions`);try{if((await this.executeCachedLogin(t,u.cached_actions,u.validation_exprs)).success){k.log("Level 2 SUCCESS: Cached login succeeded"),c.info("Login: Cached login succeeded");let n=await t.context().storageState();return{success:!0,page:t,storage_state:n,cached_actions:u.cached_actions,validation_exprs:u.validation_exprs}}k.log("Level 2 FAILED: Cached login failed, trying Level 3")}catch(n){k.log(`Level 2 ERROR: ${n.message}, trying Level 3`)}}else u?.cached_actions&&u.cached_actions.length>0&&k.log("Level 2 SKIPPED: Cached actions exist but no validation expressions, going to Level 3");let r=`First check if the page is already signed in. If it is, do nothing.
|
|
126
|
-
Use your best judgement to determine if the page is signed in.
|
|
127
|
-
`;if(e.verification_hint&&(r+=`
|
|
128
|
-
Signed in verification hint: ${e.verification_hint}
|
|
129
|
-
`),e.account.type===i.PASSWORD)r+=`
|
|
130
|
-
If the page is not signed in, sign in using provided credentials ($username, $password, etc).
|
|
131
|
-
`;else{let n=e.account;r+=`
|
|
132
|
-
If the page is not signed in, sign in with the OAuth provider "${n.provider_name}" using provided credentials
|
|
133
|
-
($username, $password), and use $otp_secret_key to generate $otp_code for two-factor authentication. If you can't login with the provided credentials, just stop and report the failure.
|
|
134
|
-
`}e.additional_prompt&&(r+=`
|
|
135
|
-
Additional instructions: ${e.additional_prompt}
|
|
136
|
-
`);try{k.log("Level 3: Attempting agent-based login"),k.log(`Login prompt:
|
|
137
|
-
${r}`);let n=this.agentServices.knowledgeRetriever,a=!1;this.agentServices.hasKnowledgeRetriever()&&n&&(k.log("Setting up login knowledge retriever..."),this.agentServices.setKnowledgeRetriever(async(B,m,x,F)=>await n(B,m,x,"login")),a=!0,k.log("Login knowledge retriever configured"));let s;try{if(s=await this.run(t,r,"login"),!s.success)return k.log("Level 3 FAILED: Agent login failed"),c.info("Login: Failed"),{success:!1,page:t}}finally{a&&n&&(this.agentServices.setKnowledgeRetriever(n),k.log("Restored original knowledge retriever"))}let o=await t.context().storageState(),l;if(e.num_verification_exprs!==0)try{k.log("Generating validation locators for future login verification...");let B=await Eu(t,e.site_url,{verification_hint:e.verification_hint,num_verification_exprs:e.num_verification_exprs},async(m,x)=>this.run(m,x),async m=>this.getDOMText(m));B?(l=B,k.log(`Generated ${l.length} validation locator(s): ${JSON.stringify(l)}`)):k.log("Failed to generate validation locators, login will still succeed")}catch(B){k.log(`Error generating validation locators: ${B.message}`)}else k.log("Skipping validation locator generation (num_verification_exprs=0)");k.log("Level 3 SUCCESS: Agent login succeeded"),c.info("Login: Agent login succeeded");let d=s.actions||[],E=d.length>0?d:u?.cached_actions;return{success:!0,page:t,storage_state:o,cached_actions:E,validation_exprs:l}}catch(n){return k.error(`Agent login failed: ${n.message}`),c.info("Login: Failed"),{success:!1,page:t}}}async executeCachedLogin(t,e,u){let i=(await import("./handler-7JPASJ4Y-KWA27ONH.js")).default,r=new i;for(let n=0;n<e.length;n++){let a=e[n];k.log(`Executing cached action ${n+1}/${e.length}: ${a.action_description||a.action_data?.action_name}`);try{if(!a.action_data){k.log(`Action ${n+1} missing action_data, skipping`);continue}await r.execute(t,a,this.agentServices),await this.waitUntilStable(t,5e3)}catch(s){return k.error(`Cached action ${n+1} failed: ${s.message}`),{success:!1}}}return u&&u.length>0&&!await ee(t,u)?{success:!1}:{success:!0}}getCompletedExecutionHistory(){if(!this.context.executionHistory||this.context.executionHistory.length===0)return[];let t=this.context.executionHistory[this.context.executionHistory.length-1];return!t[1]||t[1].trim()===""?this.context.executionHistory.slice(0,-1):this.context.executionHistory}addToExecutionHistory(t,e){this.context.executionHistory||(this.context.executionHistory=[]),this.context.executionHistory.push([t,e])}async createStepResult(t,e,u){if(!this.context.stepTracking||this.context.stepTracking.results[e])return;this.context.stepTracking.currentStepId=e,this.context.stepTracking.onStepChange&&this.context.stepTracking.onStepChange(e),t=this.agentServices.validatePage(t),await this.waitUntilStable(t);let i={description:u,startTime:Date.now(),artifacts:[]};if(this.context.stepTracking.artifactsDir){let r=M.join(this.context.stepTracking.artifactsDir,e.replace(/\./g,"-"));P.mkdirSync(r,{recursive:!0});let n=M.join(r,"screenshot.png");t=this.agentServices.validatePage(t),await t.screenshot({type:"png",path:n}),i.screenshot=n}this.context.stepTracking.results[e]=i}saveDebugInfoToFiles(t,e,u,i=0){let r={};if(!this.context.stepTracking?.artifactsDir)return c.debug("[saveDebugInfoToFiles] No artifacts directory configured, skipping debug info save"),r;let n=M.join(this.context.stepTracking.artifactsDir,t.replace(/\./g,"-"));try{if(P.mkdirSync(n,{recursive:!0}),e.systemPrompt){let a=M.join(n,`system_prompt_${i}.txt`);P.writeFileSync(a,e.systemPrompt),r.system_prompt_path=a,c.debug(`[saveDebugInfoToFiles] Saved system prompt to: ${a}`)}if(e.userPrompt)if(typeof e.userPrompt=="string"){let a=M.join(n,`user_prompt_${i}.txt`);P.writeFileSync(a,e.userPrompt),r.user_prompt_path=a,c.debug(`[saveDebugInfoToFiles] Saved user prompt to: ${a}`)}else{let a=e.userPrompt.map(l=>Array.isArray(l.content)?{...l,content:l.content.map(d=>d.type==="image"&&d.file?.startsWith("data:")?{...d,file:"[base64 image data stripped]"}:d)}:l),s=M.join(n,`messages_${i}.json`),o={system:e.systemPrompt,messages:a};P.writeFileSync(s,JSON.stringify(o,null,2)),r.messages_path=s,c.debug(`[saveDebugInfoToFiles] Saved messages to: ${s}`)}if(e.rawLlmResponse){let a=u?u.replace(/[\/\\:]/g,"-"):"llm",s=M.join(n,`${a}_response_${i}.txt`);P.writeFileSync(s,e.rawLlmResponse),r.response_path=s,c.debug(`[saveDebugInfoToFiles] Saved LLM response to: ${s}`)}if(e.screenshotWithSom){let a=M.join(n,`screenshot_${i}.png`);P.writeFileSync(a,Buffer.from(e.screenshotWithSom,"base64")),r.screenshot_path=a,c.debug(`[saveDebugInfoToFiles] Saved SOM screenshot to: ${a}`)}if(e.reasoningContent){let a=M.join(n,`reasoning_${i}.txt`);P.writeFileSync(a,e.reasoningContent),r.reasoning_path=a,c.debug(`[saveDebugInfoToFiles] Saved reasoning to: ${a}`)}c.debug(`[saveDebugInfoToFiles] Saved ${Object.keys(r).length} artifacts for step ${t}`)}catch(a){c.error(`[saveDebugInfoToFiles] Failed to save debug info for step ${t}:`,a)}return r}async updateStepResult(t,e,u,i,r){if(!this.context.stepTracking)return;let n=this.context.stepTracking.results[t];if(n){if(e&&(n.status=e,this.context.stepTracking.currentStepId=void 0,this.context.stepTracking.onStepChange&&this.context.stepTracking.onStepChange(void 0)),u!==void 0&&(n.message=u),i&&n.artifacts.push(i),r){let a=r.tokenUsages?.[0]?.model,s=n.artifacts.length,o=this.saveDebugInfoToFiles(t,r,a,s);Object.keys(o).length>0&&n.artifacts.push(o)}n.duration=Date.now()-n.startTime,this.context.stepTracking.onStepComplete&&this.context.stepTracking.onStepComplete(t,n)}}async writeExecutionResults(t,e){try{if(await P.promises.mkdir(t,{recursive:!0}),this.context.stepTracking?.results&&Object.keys(this.context.stepTracking.results).length>0){let u=M.join(t,"test-results.json");await P.promises.writeFile(u,JSON.stringify(this.context.stepTracking.results,null,2)),c.debug(`Test results written to: ${u}`)}if(e?.tokenUsages&&this.context.tokenUsages&&this.context.tokenUsages.length>0){let u=M.join(t,"token-usages.json");await P.promises.writeFile(u,JSON.stringify(this.context.tokenUsages,null,2)),c.debug(`Token usages written to: ${u}`)}if(this.context.aiActionDetails&&this.context.aiActionDetails.length>0){let u=M.join(t,"ai-actions.json");await P.promises.writeFile(u,JSON.stringify(this.context.aiActionDetails,null,2)),c.debug(`AI action details written to: ${u}`)}}catch(u){throw c.error("Failed to write execution results:",u),u}}};function yo(){let t=new Date,e=new Intl.DateTimeFormat("en-US",{timeZone:"America/Los_Angeles",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}).formatToParts(t),u=e.find(y=>y.type==="year").value,i=e.find(y=>y.type==="month").value,r=e.find(y=>y.type==="day").value,n=e.find(y=>y.type==="hour").value,a=e.find(y=>y.type==="minute").value,s=e.find(y=>y.type==="second").value,o=String(t.getMilliseconds()).padStart(3,"0"),l=`${u}-${i}-${r}T${n}:${a}:${s}.${o}`,d=t.toISOString().slice(0,-1),E=Date.parse(l+"Z"),B=Date.parse(d+"Z"),m=Math.round((B-E)/(1e3*60)),x=String(Math.floor(Math.abs(m)/60)).padStart(2,"0"),F=String(Math.abs(m)%60).padStart(2,"0"),b=m<=0?"+":"-";return`${u}-${i}-${r}T${n}:${a}:${s}.${o}${b}${x}:${F}`}function Fo(t){let e=t.variableStore;return e.has("currentTime")||e.set("currentTime",yo()),{model:t.model,variableStore:e,organizationId:t.organizationId,organizationSettings:t.organizationSettings,executionHistory:t.executionHistory||[],testDataDir:t.testDataDir,downloadDir:t.downloadDir,useNativeGenerator:t.useNativeGenerator,autoDisableModal:t.autoDisableModal,tokenUsages:[],aiActionDetails:[]}}function V0(t){let e=new Au,u=new Set(t.sensitiveKeys||[]);if(t.variables)for(let[r,n]of Object.entries(t.variables))e.set(r,n,u.has(r));let i=Fo({model:t.model,variableStore:e,testDataDir:t.testDataDir,downloadDir:t.downloadDir});return new wo(i)}var W0="1.0.0",vo=Rt.object({found:Rt.boolean().describe("Whether an activation code was found in the document"),activation_code:Rt.string().nullable().describe("The extracted activation code, or null if not found"),explanation:Rt.string().describe("Brief explanation of what was found or why nothing was found")});async function ko(t,e,u){c.info(`Extracting activation code from file: ${t}`);let i=`${e}/${t}`;if(!Wt.existsSync(i))throw new Error(`PDF file not found: ${i}`);let r=Wt.readFileSync(i).toString("base64"),n=`You are analyzing a PDF document to extract an activation code.
|
|
138
|
-
|
|
139
|
-
Please carefully examine the PDF and look for:
|
|
140
|
-
1. The activation code on the first page top right corner
|
|
141
|
-
2. It might be labeled as "Activation Code", etc.
|
|
142
|
-
3. The code is typically numeric
|
|
143
|
-
|
|
144
|
-
If you find an activation code, extract it exactly as shown.
|
|
145
|
-
If you cannot find an activation code, explain what you found instead.`,a=[{role:"user",content:[{type:"text",text:"Please examine this PDF document and extract the activation code."},{type:"file",data:r,mediaType:"application/pdf"}]}],s=await le(async()=>(await St({model:ie(u),system:n,messages:a,output:Cu.object({schema:vo}),temperature:.1})).output,{retries:3,onFailedAttempt:o=>{c.warn(`Activation code extraction attempt ${o.attemptNumber} failed. ${o.retriesLeft} retries left. Error: ${o.message}`)}});if(s.found&&s.activation_code)return c.info(`Activation code extracted: ${s.activation_code.substring(0,10)}...`),s.activation_code;{let o=s.explanation||"Activation code not found in PDF";throw c.error(`Activation code extraction failed: ${o}`),new Error(o)}}var So=class{async execute(t,e,u){let i=e.action_data;if(!i)throw new Error("Action data not found");let r=i.kwargs,n=u.getDownloadDir?.();if(!n)throw new Error("Download directory not configured. Please set downloadDir when creating the agent.");let a=u.getModel?.()||"gemini-2.5-pro",s=await ko(r.file_name,n,a);u.variableStore.set("activation_code",s,!0),c.info("[extract_activation_code] Extracted and saved to $activation_code")}transpile(t){let e=t.action_data?.kwargs||{};return['await agent.execAction("extract_activation_code", page, {',` action_data: { kwargs: ${JSON.stringify(e)} },`,"});"]}},To=qi.object({file_name:qi.string().describe("Name of the PDF file to extract activation code from (must be in the download directory)")});function Lo(t,e){t.register({name:"extract_activation_code",description:"Extract activation code from a downloaded PDF file. The PDF should contain an activation code, typically in the top right corner of the first page. The extracted code will be saved to the $activation_code variable.",schema:To,async execute(u,i){let{file_name:r}=u,{page:n,agentServices:a}=i;c.info(`[extract_activation_code] Extracting activation code from file: ${r}`);try{let s={action_description:"Extract activation code from PDF",action_data:{action_name:"extract_activation_code",kwargs:{file_name:r}}};return await e.execute(n,s,a),{success:!0,actionEntity:s,message:"Extracted activation code and saved to $activation_code"}}catch(s){return{success:!1,error:s.message,actionEntity:{action_description:"Extract activation code from PDF (failed)",action_data:{action_name:"extract_activation_code",kwargs:{file_name:r}},feedback:s.message}}}}})}function Io(){if(c.debug("[sdk-internal] Registering internal tools..."),H.has("extract_activation_code")){c.debug("[sdk-internal] Internal tools already registered, skipping");return}let t=new So;Yu.registerAction("extract_activation_code",t),Lo(H,t),c.debug("[sdk-internal] Registered tool: extract_activation_code"),c.debug("[sdk-internal] Internal tools registered successfully")}Io();export{zr as a,E0 as b,B0 as c,C0 as d,D0 as e,L0 as f,I0 as g,_0 as h,N0 as i,$0 as j,R0 as k,P0 as l,H0 as m,j0 as n,Ao as o,Eo as p,Bo as q,wo as r,Fo as s,V0 as t,W0 as u};
|
|
146
|
-
/*! Bundled license information:
|
|
147
|
-
|
|
148
|
-
@otplib/plugin-crypto/index.js:
|
|
149
|
-
(**
|
|
150
|
-
* @otplib/plugin-crypto
|
|
151
|
-
*
|
|
152
|
-
* @author Gerald Yeo <contact@fusedthought.com>
|
|
153
|
-
* @version: 12.0.1
|
|
154
|
-
* @license: MIT
|
|
155
|
-
**)
|
|
156
|
-
|
|
157
|
-
@otplib/plugin-thirty-two/index.js:
|
|
158
|
-
(**
|
|
159
|
-
* @otplib/plugin-thirty-two
|
|
160
|
-
*
|
|
161
|
-
* @author Gerald Yeo <contact@fusedthought.com>
|
|
162
|
-
* @version: 12.0.1
|
|
163
|
-
* @license: MIT
|
|
164
|
-
**)
|
|
165
|
-
|
|
166
|
-
@otplib/core/index.js:
|
|
167
|
-
(**
|
|
168
|
-
* @otplib/core
|
|
169
|
-
*
|
|
170
|
-
* @author Gerald Yeo <contact@fusedthought.com>
|
|
171
|
-
* @version: 12.0.1
|
|
172
|
-
* @license: MIT
|
|
173
|
-
**)
|
|
174
|
-
|
|
175
|
-
@otplib/preset-default/index.js:
|
|
176
|
-
(**
|
|
177
|
-
* @otplib/preset-default
|
|
178
|
-
*
|
|
179
|
-
* @author Gerald Yeo <contact@fusedthought.com>
|
|
180
|
-
* @version: 12.0.1
|
|
181
|
-
* @license: MIT
|
|
182
|
-
**)
|
|
183
|
-
|
|
184
|
-
otplib/index.js:
|
|
185
|
-
(**
|
|
186
|
-
* otplib
|
|
187
|
-
*
|
|
188
|
-
* @author Gerald Yeo <contact@fusedthought.com>
|
|
189
|
-
* @version: 12.0.1
|
|
190
|
-
* @license: MIT
|
|
191
|
-
**)
|
|
192
|
-
*/
|