@tslite/checker 1.6.0 → 1.9.0
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/chunk-NXZILQOD.js +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +348 -138
- package/dist/index.d.ts +348 -138
- package/dist/index.js +1 -1
- package/dist/types/index.cjs +1 -1
- package/dist/types/index.d.cts +98 -35
- package/dist/types/index.d.ts +98 -35
- package/dist/types/index.js +1 -1
- package/package.json +6 -6
- package/dist/chunk-RDCPWO2E.js +0 -1
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var ast=require('@tslite/ast'),capability=require('@tslite/capability'),json=require('@tslite/json'),nn=require('@tslite/ast/builders'),languageService=require('@tslite/language-service');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var nn__namespace=/*#__PURE__*/_interopNamespace(nn);var Hi=100,Zi=50,el=5e6,Rt={maxTypeDepth:100,maxInstantiationDepth:50,maxInstantiationCount:5e6,maxUnionMembers:1e3,maxOverloadSignatures:200},on=Rt;function xr(e){on={...Rt,...e};}function Tr(){on=Rt;}function be(){return on}var Le=class extends Error{constructor(n=on.maxTypeDepth){super(`excessive stack depth comparing types (limit ${n}) \u2014 the comparison is excessively deep or possibly infinite`),this.name="TypeEvalLimitError";}},Ln=class extends Error{constructor(t,r=t==="depth"?on.maxInstantiationDepth:on.maxInstantiationCount){super(`type instantiation is excessively deep and possibly infinite (${t} limit ${r})`);this.kind=t;this.name="InstantiationLimitError";}};function Ar(){Er=0;}var Er=0;function ea(){if(Er>=on.maxInstantiationCount)throw new Ln("count");Er++;}var Ve=class extends Error{constructor(n,t=on.maxUnionMembers){super(`union type is too complex to represent (${n} members exceeds limit ${t})`),this.name="UnionTooComplexError";}};var na=Object.prototype.hasOwnProperty,pe=(e,n)=>na.call(e,n),v=(e,n)=>na.call(e,n)?e[n]:void 0;function b(e,n,t){n==="__proto__"?Object.defineProperty(e,n,{value:t,enumerable:true,writable:true,configurable:true}):e[n]=t;}var Cr=()=>({active:new Set,byScope:new Map});function It(e,n,t){let r=new Map(e);for(let o of n)r.set(o.name,t(o));return r}function Mr(e,n,t){let r=It(n,e,()=>{}),o=false,a=e.map(s=>{let i=s.bound&&Ee(s.bound,r,t),l=s.default&&Ee(s.default,r,t);return i===s.bound&&l===s.default?s:(o=true,{...s,...i?{bound:i}:{},...l?{default:l}:{}})});return o?a:e}function Or(e,n,t){let r=e.typeParams?.length?Mr(e.typeParams,n,t):void 0,o=r?It(n,r,l=>l.bound):n,a=nt(e.params,l=>{let u=Ee(l.type,o,t);return u===l.type?l:{...l,type:u}}),s=Ee(e.returns,o,t),i=e.guard&&Ee(e.guard.type,o,t);return a===e.params&&s===e.returns&&i===e.guard?.type&&r===e.typeParams?e:{...e,params:a,returns:s,...e.guard&&i?{guard:{...e.guard,type:i}}:{},...r?{typeParams:r}:{}}}function nt(e,n){let t=false,r=e.map(o=>{let a=n(o);return a!==o&&(t=true),a});return t?r:e}function Ee(e,n,t){if(n.size===0)return e;let r=t.byScope.get(n);r||t.byScope.set(n,r=new Map);let o=r.get(e);if(o)return o;if(t.active.has(e))return e;t.active.add(e);let a=ia(e,n,t);return t.active.delete(e),r.set(e,a),a}function ia(e,n,t){let r=o=>Ee(o,n,t);switch(e.t){case "var":{if(!n.has(e.name))return e;let o=n.get(e.name);return o===e.bound&&e.default===void 0?e:o?{t:"var",name:e.name,bound:o}:{t:"var",name:e.name}}case "array":{let o=r(e.items);return o===e.items?e:{...e,items:o}}case "tuple":{let o=nt(e.elements,r);return o===e.elements?e:{...e,elements:o}}case "union":case "intersection":{let o=nt(e.of,r);return o===e.of?e:{...e,of:o}}case "object":{let o=false,a={};for(let l of Object.keys(e.props)){let u=e.props[l],c=r(u.type);c!==u.type&&(o=true),b(a,l,c===u.type?u:{...u,type:c});}let s=e.index&&r(e.index.value),i=!!e.index&&s!==e.index.value;return !o&&!i?e:{...e,props:o?a:e.props,...e.index&&s&&i?{index:{...e.index,value:s}}:{}}}case "fn":return Or(e,n,t);case "overload":{let o=nt(e.signatures,a=>Or(a,n,t));return o===e.signatures?e:{...e,signatures:o}}case "keyof":{let o=r(e.of);return o===e.of?e:{...e,of:o}}case "index":{let o=r(e.obj),a=r(e.key);return o===e.obj&&a===e.key?e:{...e,obj:o,key:a}}case "mapped":{let o=r(e.over),a=new Map(n);a.set(e.key,void 0);let s=Ee(e.body,a,t);return o===e.over&&s===e.body?e:{...e,over:o,body:s}}case "conditional":{let o=e.infer?.length?Mr(e.infer,n,t):void 0,a=o?It(n,o,c=>c.bound):n,s=r(e.check),i=Ee(e.extends,a,t),l=Ee(e.then,a,t),u=Ee(e.else,a,t);return s===e.check&&i===e.extends&&l===e.then&&u===e.else&&o===e.infer?e:{...e,check:s,extends:i,then:l,else:u,...o?{infer:o}:{}}}case "returnType":case "parameters":{let o=r(e.fn);return o===e.fn?e:{...e,fn:o}}case "apply":{let o=nt(e.args,r);return o===e.args?e:{...e,args:o}}default:return e}}function ta(e){return e.typeParams?.length?Or(e,new Map,Cr()):e}function nl(e){return e.infer?.length?ia(e,new Map,Cr()):e}function tl(e){if(!e.params.length)return e;let n=Cr(),t=Mr(e.params,new Map,n),r=Ee(e.body,It(new Map,t,o=>o.bound),n);return t===e.params&&r===e.body?e:{params:t,body:r}}var Ue=e=>Object.freeze(e),p={any:Ue({t:"any"}),unknown:Ue({t:"unknown"}),string:Ue({t:"string"}),number:Ue({t:"number"}),boolean:Ue({t:"boolean"}),null:Ue({t:"null"}),undefined:Ue({t:"undefined"}),void:Ue({t:"void"}),nonPrimitive:Ue({t:"nonPrimitive"}),literal:e=>({t:"literal",value:e}),object:(e,n)=>({t:"object",props:e,...n?{index:n}:{}}),record:(e,n="string")=>({t:"object",props:{},index:{key:n,value:e}}),array:(e,n)=>({t:"array",items:e,...n?{readonly:true}:{}}),tuple:(e,n,t)=>({t:"tuple",elements:n?e.map((r,o)=>n[o]==="optional"?ie(r):r):e,...n&&n.some(r=>r!=="req")?{flags:n}:{},...t?{readonly:true}:{}}),fn:(e,n,t)=>ta({t:"fn",params:e,returns:n,...t?.length?{typeParams:t}:{}}),guard:(e,n,t=0)=>({t:"fn",params:e,returns:{t:"boolean"},guard:{param:t,type:n}}),overload:e=>({t:"overload",signatures:e.map(ta)}),keyof:e=>({t:"keyof",of:e}),index:(e,n)=>({t:"index",obj:e,key:n}),mapped:(e,n,t,r={})=>({t:"mapped",key:e,over:n,body:t,...r.optional?{optional:true}:{},...r.readonly?{readonly:true}:{},...r.excludeOptional?{excludeOptional:true}:{},...r.excludeReadonly?{excludeReadonly:true}:{}}),conditional:(e,n,t,r,o)=>nl({t:"conditional",check:e,extends:n,then:t,else:r,...o&&o.length?{infer:o}:{}}),scheme:(e,n)=>tl({params:e,body:n}),intersection:e=>de({of:e}),and:(e,n)=>de({of:[e,n]}),returnType:e=>({t:"returnType",fn:e}),parameters:e=>({t:"parameters",fn:e}),var:(e,n)=>({t:"var",name:e,...n?{bound:n}:{}}),typeParam:(e,n={})=>({t:"var",name:e,...n.bound?{bound:n.bound}:{},...n.default?{default:n.default}:{}}),typeQuery:e=>({t:"typeQuery",path:e}),apply:(e,n=[])=>({t:"apply",name:e,args:n}),promise:e=>({t:"apply",name:"Promise",args:[e]}),union:e=>{let n=[],t=o=>{o.t==="union"?o.of.forEach(t):n.push(o);};if(e.forEach(t),n.some(o=>o.t==="any"))return {t:"any"};if(n.some(o=>o.t==="unknown"))return {t:"unknown"};let r=ol(n);return r.length===1?r[0]:{t:"union",of:r}}};function rl(e){switch(e.t){case "string":case "number":case "boolean":case "null":case "undefined":case "void":return e.t;case "literal":return `#${typeof e.value}:${String(e.value)}`;default:return null}}function ol(e){let n=[],t=new Map;for(let i of e){let l=rl(i);if(l===null){n.includes(i)||n.push(i);continue}let u=t.get(l);u===void 0?(t.set(l,n.length),n.push(i)):i.t==="literal"&&!i.fresh&&(n[u]=i);}let r=i=>i.t==="literal"&&t.has(typeof i.value),o=!t.has("boolean")&&t.has("#boolean:true")&&t.has("#boolean:false"),a=false,s=[];for(let i of n)if(!r(i)){if(o&&i.t==="literal"&&typeof i.value=="boolean"){a||s.push({t:"boolean"}),a=true;continue}s.push(i);}return s}function L(e){return e.t==="keyof"?Rr(e.of)??e:e.t==="index"?Mt(e.obj,e.key)??e:e.t==="returnType"?al(e.fn)??e:e.t==="parameters"?sl(e.fn)??e:e}var Ct={t:"union",of:[]},Pr=e=>e.t==="union"&&e.of.length===0;function al(e){return e.t==="fn"?e.returns:e.t==="overload"&&e.signatures.length>0?e.signatures[e.signatures.length-1].returns:null}function ie(e){if(e.t==="undefined"||e.t==="any"||e.t==="unknown")return e;let n=e.t==="union"?e.of:[e];return n.some(t=>t.t==="undefined")?e:p.union([...n,{t:"undefined"}])}function sl(e){let n=e.t==="fn"?e:e.t==="overload"&&e.signatures.length>0?e.signatures[e.signatures.length-1]:null;return n?yn(n,0):null}function Vn(e){let n=[],t=[],r;for(let o of e.params){if(!o.variadic){n.push(o.optional?ie(o.type):o.type),t.push(o.optional?"optional":"req");continue}let a=o.type;a.t==="tuple"?a.elements.forEach((s,i)=>{let l=a.flags?.[i]??"req";l==="rest"&&(r=p.array(s)),n.push(l==="optional"?ie(s):s),t.push(l);}):(r=a,n.push(a.t==="array"?a.items:a.t==="any"?a:p.index(a,p.number)),t.push("rest"));}return {types:n,flags:t,rest:r}}function yn(e,n){let{types:t,flags:r,rest:o}=Vn(e),a=t.length-(o?1:0);if(o&&n===a)return o;let s=r.findIndex(d=>d!=="req"),i=s<0?t.length:s,l=i<n?0:i-n,u=[],c=[];for(let d=n;d<t.length;d++)u.push(t[d]),c.push(o&&d===a?"rest":d-n<l?"req":"optional");return p.tuple(u,c)}var jr=e=>e.t==="literal"?typeof e.value:e.t==="string"||e.t==="number"||e.t==="boolean"?e.t:null;function ra(e,n){return e.t==="literal"&&n.t==="literal"?e.value===n.value:e.t==="literal"&&(n.t==="string"||n.t==="number"||n.t==="boolean")?typeof e.value===n.t:e.t===n.t&&(e.t==="string"||e.t==="number"||e.t==="boolean")}function oa(e){return e.t==="null"||e.t==="undefined"?e.t:e.t==="nonPrimitive"?"nonPrimitive":jr(e)?"scalar":e.t==="object"||e.t==="array"||e.t==="tuple"||e.t==="fn"||e.t==="overload"?"object":null}var aa=e=>e.t==="object"&&!e.index&&Object.keys(e.props).length===0;function de(e){let n=[],t=s=>{let i=L(s);i.t==="intersection"?i.of.forEach(t):n.push(i);};if(e.of.forEach(t),n.some(s=>s.t==="any"))return p.any;if(n.some(Pr))return Ct;let r=s=>n.some(i=>oa(i)===s);if(r("null")&&(r("undefined")||r("scalar")||r("object")||r("nonPrimitive"))||r("undefined")&&(r("scalar")||r("object")||r("nonPrimitive"))||r("nonPrimitive")&&r("scalar"))return Ct;if(n.some(s=>oa(s)==="object"&&!aa(s)))for(let s=n.length-1;s>=0;s--)aa(n[s])&&n.splice(s,1);let o=n.findIndex(s=>s.t==="union");if(o>=0){let s=n.reduce((i,l)=>i*(l.t==="union"?l.of.length:1),1);if(s>be().maxUnionMembers)throw new Ve(s);return p.union(n[o].of.map(i=>de({of:n.map((l,u)=>u===o?i:l)})))}let a=[];for(let s of n){if(s.t==="any")return p.any;if(Pr(s))return Ct;if(s.t!=="unknown"){if(jr(s)){let i=false;for(let l=a.length-1;l>=0;l--){let u=a[l];if(jr(u)){if(ra(u,s)){i=true;break}if(ra(s,u))a.splice(l,1);else return Ct}}if(i)continue}else if(a.some(i=>i===s))continue;a.push(s);}}return a.length===0?p.unknown:a.length===1?a[0]:{t:"intersection",of:a}}function Rr(e){if(e.t==="union"&&e.of.length>0){let t=e.of.map(Rr);return t.some(r=>r===null)?null:il(t)}if(e.t==="intersection"){let t=e.of.map(Rr);return t.some(r=>r===null)?null:p.union(t)}if(e.t==="unknown")return {t:"union",of:[]};if(e.t==="any"||e.t==="union"&&e.of.length===0)return {t:"union",of:[p.string,p.number]};if(e.t==="nonPrimitive")return {t:"union",of:[]};if(e.t==="array"||e.t==="tuple")return p.number;if(e.t==="fn"||e.t==="overload")return {t:"union",of:[]};if(e.t!=="object")return null;if(e.index?.key==="string")return p.union([p.string,p.number]);let n=Object.keys(e.props).map(t=>p.literal(t));return e.index?.key==="number"?p.union([p.number,...n]):n.length===0?{t:"union",of:[]}:p.union(n)}function il(e){let n=a=>a.t==="literal"&&typeof a.value=="string"?[a.value]:a.t==="union"?a.of.flatMap(n):[],t=e.filter(a=>a.t!=="string"&&a.t!=="number").map(n);if(t.length===0)return e[0];let r=t[0].filter(a=>t.every(s=>s.includes(a))),o=[...new Set(r)].map(a=>p.literal(a));return o.length===0?{t:"union",of:[]}:p.union(o)}var mn=Object.freeze({t:"unknown"}),Ce=e=>e===mn,sa=e=>e.t==="var"||e.t==="apply"||e.t==="mapped"||e.t==="conditional"||e.t==="keyof"||e.t==="index"||e.t==="returnType"||e.t==="parameters"||e.t==="typeQuery";function Mt(e,n){if(e=L(e),n=L(n),n.t==="union"){let t=[],r=false;for(let o of n.of){let a=Mt(e,o);if(a===null)return null;Ce(a)?r=true:t.push(a);}return r?mn:p.union(t)}if(sa(n))return null;if(e.t==="any"||Pr(e))return e;if(e.t==="intersection"){let t=[];for(let r of e.of){let o=Mt(L(r),n);if(o===null)return null;Ce(o)||t.push(o);}return t.length===0?mn:t.length===1?t[0]:de({of:t})}if(e.t==="union"){let t=[];for(let r of e.of){let o=L(r);if(o.t==="any")return o;let a=Mt(o,n);if(a===null)return null;if(Ce(a))return mn;t.push(a);}return p.union(t)}if(e.t==="object"){if(n.t==="literal"&&(typeof n.value=="string"||typeof n.value=="number")){let t=te(e.props,String(n.value));return t?t.optional?ie(t.type):t.type:typeof n.value=="number"&&e.index?.key==="number"||e.index?.key==="string"?e.index.value:mn}if(n.t==="string"||n.t==="number"){let r=n.t==="number"&&e.index?.key==="number"||false||e.index?.key==="string"?e.index:void 0;if(r)return r.value}}if(e.t==="tuple"){let t=e.flags?.findIndex(o=>o==="rest")??-1,r=t>=0?t:e.elements.length;if(n.t==="literal"&&typeof n.value=="string"&&an(n.value)&&+n.value>=0){let o=+n.value;return Number.isInteger(o)&&o<r?e.elements[o]:t>=0?e.elements[t]:p.undefined}if(n.t==="literal"&&typeof n.value=="number")return n.value<r?e.elements[n.value]:t>=0?e.elements[t]:p.undefined;if(n.t==="number")return e.elements.length?p.union([...e.elements]):p.undefined}return e.t==="array"&&(n.t==="number"||n.t==="literal"&&typeof n.value=="number")?e.items:sa(e)?null:mn}var Dt=e=>(e.t==="object"||e.t==="array"||e.t==="tuple")&&!!e.fromLiteral,Ft=e=>e.t==="object"||e.t==="array"||e.t==="tuple"?e.fromLiteral?e:{...e,fromLiteral:true}:e,te=(e,n)=>v(e,n);function re(e){if(e.t==="undefined")return {type:{t:"union",of:[]},hadUndefined:true};if(e.t==="union"&&e.of.some(n=>n.t==="undefined")){let n=e.of.filter(t=>t.t!=="undefined");return {type:p.union(n),hadUndefined:true}}return {type:e,hadUndefined:false}}var an=e=>(+e).toString()===e;var la=(e,n)=>e.flags?.[n]??"req",hn=(e,n)=>la(e,n)==="optional"?ie(e.elements[n]):e.elements[n],Ir=e=>e.elements.map((n,t)=>hn(e,t)),ua=e=>e.flags?.[e.elements.length-1]==="rest",ke=e=>ua(e)?e.elements.length-1:-1,tt=e=>{if(!e.flags)return e.elements.length;let n=e.flags.findIndex(t=>t!=="req");return n<0?e.elements.length:n};function ca(e,n,t,r=false){let o=ke(e),a=ke(n);if(!r&&tt(e)<tt(n))return false;if(a<0){if(o>=0)return false;let u=tt(n);return e.elements.length<u||e.elements.length>n.elements.length?false:e.elements.every((c,d)=>t(hn(e,d),hn(n,d)))}let s=n.elements[a],i=u=>u<a?hn(n,u):s;if(o<0)return e.elements.length<tt(n)?false:e.elements.every((u,c)=>t(hn(e,c),i(c)));if(o===0&&a!==0||o<tt(n))return false;let l=e.elements[o];for(let u=0;u<o;u++)if(!t(hn(e,u),i(u)))return false;for(let u=o;u<a;u++)if(!t(l,hn(n,u)))return false;return t(l,s)}function B(e,n,t=new WeakSet){return ea(),ll(e,n,t)}function ll(e,n,t){if(e.t!=="keyof"&&e.t!=="index"&&e.t!=="mapped"&&e.t!=="intersection"&&e.t!=="returnType"&&e.t!=="parameters"&&!cl(K(e),n))return e;switch(e.t){case "var":{let r=v(n,e.name);return r||Fr(e,n,t)}case "array":return {...e,items:B(e.items,n,t)};case "tuple":{let r=e.elements.map(o=>B(o,n,t));return {...e,elements:r}}case "union":return p.union(e.of.map(r=>B(r,n,t)));case "object":{if(t.has(e))return e;t.add(e);let r={};for(let a in e.props){let s=e.props[a];b(r,a,{type:B(s.type,n,t),optional:s.optional,...s.readonly?{readonly:true}:{}});}let o=e.index?{key:e.index.key,value:B(e.index.value,n,t),...e.index.readonly?{readonly:true}:{}}:void 0;return t.delete(e),o?{t:"object",props:r,index:o}:{t:"object",props:r}}case "fn":{if(t.has(e))return e;t.add(e);let r=$r(e,n,t);return t.delete(e),r}case "overload":return {t:"overload",signatures:e.signatures.map(r=>$r(r,n,t))};case "apply":return {t:"apply",name:e.name,args:e.args.map(r=>B(r,n,t))};case "keyof":return L({t:"keyof",of:B(e.of,n,t)});case "index":return L({t:"index",obj:B(e.obj,n,t),key:B(e.key,n,t)});case "mapped":{let r=Lr([p.typeParam(e.key)],n,K(e),t),o=e.over.t==="keyof"?{t:"keyof",of:B(e.over.of,n,t)}:B(e.over,n,t),a=e.modifiers??(e.over.t==="var"&&e.over.bound?.t==="keyof"?e.over.bound.of:void 0),s=e.typeVariable||e.over.t==="keyof"&&e.over.of.t==="var",i={t:"mapped",key:r.decls[0].name,over:o,body:B(e.body,r.inner,t),...dl(e),...a?{modifiers:B(a,n,t)}:{},...s?{typeVariable:true}:{}};return rt(i)??i}case "conditional":{if(e.check.t==="var"){let a=e.check.name,s=v(n,a),i=s?L(s):void 0,l=i?.t==="union"?i.of:i?.t==="boolean"?[p.literal(true),p.literal(false)]:null;if(l)return {t:"union",of:l.map(u=>B(e,{...n,[a]:u},t))}}let r=e.distributive||e.check.t==="var"&&pe(n,e.check.name)&&v(n,e.check.name)?.t!=="var",o=e.infer?.length?Lr(e.infer,n,K(e),t):{inner:n,decls:void 0};return {t:"conditional",check:B(e.check,n,t),extends:B(e.extends,o.inner,t),then:B(e.then,o.inner,t),else:B(e.else,o.inner,t),...o.decls?{infer:o.decls}:{},...r?{distributive:true}:{}}}case "intersection":return de({of:e.of.map(r=>B(r,n,t))});case "returnType":return L({t:"returnType",fn:B(e.fn,n,t)});case "parameters":return L({t:"parameters",fn:B(e.fn,n,t)});default:return e}}function Fr(e,n,t,r=e.name){return !e.bound&&!e.default&&r===e.name?e:{...e,name:r,...e.bound?{bound:B(e.bound,n,t)}:{},...e.default?{default:B(e.default,n,t)}:{}}}function $r(e,n,t,r){let o=e.typeParams?.length?Lr(e.typeParams,n,K(e),t,r):{inner:n,decls:void 0},a=o.inner;return {...e,params:e.params.map(s=>({...s,type:B(s.type,a,t)})),returns:B(e.returns,a,t),...e.guard?{guard:{...e.guard,type:B(e.guard.type,a,t)}}:{},...o.decls?{typeParams:o.decls}:{}}}function Ur(e,n){return e.typeParams?.some(t=>n.has(t.name))?$r(e,{},new WeakSet,n):e}function Lr(e,n,t,r,o=new Set){let a=new Set(e.map(y=>y.name)),s={},i=new Set;for(let y in n)if(!a.has(y)&&(b(s,y,n[y]),t.has(y)))for(let m of K(n[y]))i.add(m);let l=e.filter(y=>i.has(y.name)||o.has(y.name));if(l.length===0)return {inner:s,decls:e.map(y=>Fr(y,s,r))};let u=new Set([...a,...t,...i,...o]),c=new Map;for(let y of l){let m=1;for(;u.has(`${y.name}_${m}`);)m++;let h=`${y.name}_${m}`;u.add(h),c.set(y.name,h);}let d={};for(let[y,m]of c)b(d,y,{t:"var",name:m});let f={...s};for(let y of l){let m=c.get(y.name);b(f,y.name,{t:"var",name:m,...y.bound?{bound:B(y.bound,{...s,...d},r)}:{}});}return {inner:f,decls:e.map(y=>Fr(y,f,r,c.get(y.name)??y.name))}}var ul=new Set,pa=new WeakMap;function K(e){let n=pa.get(e);if(n)return n;let t=new Set;U(e,t,new WeakSet);let r=t.size===0?ul:t;return pa.set(e,r),r}function Vr(e,n,t){let r=new Set;t(r);for(let o of r)e.includes(o)||n.add(o);}function da(e,n,t){let r=e.typeParams??[];Vr(r.map(o=>o.name),n,o=>{for(let a of r)U(a,o,t);for(let a of e.params)U(a.type,o,t);U(e.returns,o,t),e.guard&&U(e.guard.type,o,t);});}function U(e,n,t){switch(e.t){case "var":n.add(e.name),e.bound&&U(e.bound,n,t),e.default&&U(e.default,n,t);return;case "array":U(e.items,n,t);return;case "tuple":for(let r of e.elements)U(r,n,t);return;case "union":for(let r of e.of)U(r,n,t);return;case "object":if(t.has(e))return;t.add(e);for(let r in e.props)U(e.props[r].type,n,t);e.index&&U(e.index.value,n,t);return;case "fn":if(t.has(e))return;t.add(e),da(e,n,t);return;case "overload":for(let r of e.signatures)da(r,n,t);return;case "apply":for(let r of e.args)U(r,n,t);return;case "keyof":U(e.of,n,t);return;case "index":U(e.obj,n,t),U(e.key,n,t);return;case "mapped":U(e.over,n,t),e.modifiers&&U(e.modifiers,n,t),Vr([e.key],n,r=>U(e.body,r,t));return;case "conditional":{U(e.check,n,t);let r=e.infer??[];Vr(r.map(o=>o.name),n,o=>{for(let a of r)U(a,o,t);U(e.extends,o,t),U(e.then,o,t),U(e.else,o,t);});return}case "intersection":for(let r of e.of)U(r,n,t);return;case "returnType":case "parameters":U(e.fn,n,t);return;default:return}}function cl(e,n){if(e.size===0)return false;for(let t of e)if(pe(n,t))return true;return false}function $t(e){let n=[];for(let a of e){let s=L(a);if(s.t!=="object")return null;n.push(s);}let t=new Set;for(let a of n)for(let s in a.props)t.add(s);let r={};for(let a of t){let s=[],i=true,l=false;for(let u of n){let c=v(u.props,a);c&&(s.push(c.type),c.optional||(i=false),c.readonly&&(l=true));}b(r,a,{type:de({of:s}),optional:i,...l?{readonly:true}:{}});}let o;for(let a of n)a.index&&(o=o?{key:o.key,value:de({of:[o.value,a.index.value]}),...o.readonly&&a.index.readonly?{readonly:true}:{}}:a.index);return o?{t:"object",props:r,index:o}:{t:"object",props:r}}function rt(e,n=L,t=L){if(e.typeVariable&&e.over.t==="keyof"&&e.over.of.t!=="var"){let s=fl(e,n(e.over.of),n,t);if(s!==void 0)return s}if(e.over.t==="keyof"){let s=n(e.over.of),i=s.t==="intersection"?$t(s.of)??s:s;if(i.t==="object")return Dr(e,i,Object.keys(i.props),i.index?.key,t);if(i.t==="any")return Dr(e,void 0,[],"string",t)}let r=pl(L(e.over));if(r===null)return null;let o=e.modifiers?n(e.modifiers):void 0,a=o?.t==="intersection"?$t(o.of)??o:o;return Dr(e,a?.t==="object"?a:void 0,r.names,r.index,t)}function pl(e){let n=[],t;for(let r of e.t==="union"?e.of:[e])switch(r.t){case "literal":(typeof r.value=="string"||typeof r.value=="number")&&n.push(r.value);continue;case "string":case "any":t="string";continue;case "number":t!=="string"&&(t="number");continue;case "var":case "apply":case "keyof":case "index":case "mapped":case "conditional":case "returnType":case "parameters":case "typeQuery":return null;case "intersection":if(K(r).size>0)return null;continue;default:continue}return {names:n,index:t}}function Dr(e,n,t,r,o){let a={};for(let i of t){let l=String(i),u=n?v(n.props,l):void 0,c=!!e.optional||!e.excludeOptional&&!!u?.optional,d=!!e.readonly||!e.excludeReadonly&&!!u?.readonly,f=B(e.body,{[e.key]:p.literal(i)});if(!c&&u?.optional){let y=o(f);if(ma(y))return null;f=re(y).type;}b(a,l,{type:f,...c?{optional:true}:{},...d?{readonly:true}:{}});}if(r===void 0)return {t:"object",props:a};let s=B(e.body,{[e.key]:r==="number"?p.number:p.string});return {t:"object",props:a,index:{key:r,value:e.optional?ie(s):s,...e.readonly?{readonly:true}:{}}}}var ma=e=>e.t==="index"||e.t==="keyof"||e.t==="mapped"||e.t==="conditional"||e.t==="returnType"||e.t==="parameters"||e.t==="apply"||e.t==="typeQuery",dl=e=>({...e.optional?{optional:true}:{},...e.readonly?{readonly:true}:{},...e.excludeOptional?{excludeOptional:true}:{},...e.excludeReadonly?{excludeReadonly:true}:{}});function fl(e,n,t,r){let o=a=>e.readonly?true:e.excludeReadonly?false:!!a;switch(n.t){case "union":{let a=e.over.of;return p.union(n.of.map(s=>{let i={...e,over:{t:"keyof",of:s},body:ot(e.body,a,s)};return rt(i,t,r)??i}))}case "array":{let a=fa(e,p.number,true,r);return a===null?null:p.array(a,o(n.readonly))}case "tuple":{let a=n.flags??n.elements.map(()=>"req"),s=[];for(let l=0;l<n.elements.length;l++){let u=fa(e,p.literal(String(l)),a[l]==="optional",r);if(u===null)return null;s.push(u);}let i=a.map(l=>l==="rest"?"rest":e.optional?"optional":e.excludeOptional?"req":l);return p.tuple(s,i,o(n.readonly))}case "string":case "number":case "boolean":case "literal":case "null":case "undefined":case "void":case "nonPrimitive":return n;default:return}}function ot(e,n,t){let r=new Map,o=a=>{if(a===n)return t;if(a===null||typeof a!="object")return a;let s=r.get(a);if(s!==void 0)return s;r.set(a,a);let i=false,l;if(Array.isArray(a)){let u=a.map(c=>{let d=o(c);return d!==c&&(i=true),d});l=i?u:a;}else {let u={};for(let c of Object.keys(a)){let d=v(a,c),f=o(d);f!==d&&(i=true),b(u,c,f);}l=i?u:a;}return r.set(a,l),l};return o(e)}function fa(e,n,t,r){let o=B(e.body,{[e.key]:n});if(e.optional)return ie(o);if(e.excludeOptional&&t){let a=r(o);return ma(a)?null:re(a).type}return o}function sn(e){let n=e.length;for(;n>0&&e[n-1].default;)n--;return {min:n,max:e.length}}var ya=(e,n)=>{let{min:t,max:r}=sn(e);return n>=t&&n<=r};function Sn(e,n){let t={};return e.forEach((r,o)=>{o<n.length?b(t,r.name,n[o]):r.default&&b(t,r.name,B(r.default,t));}),t}function H(e,n){if(e.t!=="apply")return false;let t=v(n,e.name);return t!==void 0&&ya(t.params,e.args.length)}function q(e,n){if(e.t!=="apply")return e;let t=v(n,e.name);return !t||!ya(t.params,e.args.length)?e:B(t.body,Sn(t.params,e.args))}function Q(e){switch(e.t){case "literal":return `#${typeof e.value}:${String(e.value)}`;case "object":{let n=Object.keys(e.props).sort().map(r=>`${r}${e.props[r].optional?"?":""}:${Q(e.props[r].type)}`).join(","),t=e.index?`,[${e.index.key}]:${Q(e.index.value)}`:"";return `{${n}${t}}`}case "array":return `[${Q(e.items)}]`;case "tuple":return `#tuple(${e.elements.map(Q).join(",")})`;case "union":return `(${e.of.map(Q).sort().join("|")})`;case "fn":return `${e.typeParams?.length?`<${e.typeParams.map(t=>t.name).join(",")}>`:""}(${e.params.map(t=>Q(t.type)).join(",")})=>${e.guard?`is${e.guard.param}:${Q(e.guard.type)}`:Q(e.returns)}`;case "var":return `v:${e.name}`;case "apply":return `${e.name}<${e.args.map(Q).join(",")}>`;case "intersection":return `&(${e.of.map(Q).sort().join("&")})`;case "returnType":return `RT<${Q(e.fn)}>`;default:return e.t}}var Wr=()=>be().maxInstantiationDepth;function j(e,n={},t=0){if(t>Wr())return e;if(e.t==="var")return e.bound?j(e.bound,n,t+1):e;if(H(e,n))return j(q(e,n),n,t+1);if(e.t==="mapped"){let r=Kr(e,n,t+1);if(r)return j(r,n,t+1)}if(e.t==="intersection")return de(e);if(e.t==="union"){let r=e.of.flatMap(a=>{let s=j(a,n,t+1);return s.t==="union"?s.of:[s]});return r.length===e.of.length&&r.every((a,s)=>a===e.of[s])?e:{t:"union",of:r}}return e}function Kr(e,n,t=0){let r=a=>j(a,n,t),o=a=>gn(a,n,t);return rt(e,r,o)??rt({...e,over:at(e.over,n,t)},r,o)}function at(e,n,t=0){if(t>Wr())return e;let r=le(e,n);if(r!==e)return at(r,n,t+1);if(e.t==="conditional"){let o=he(e,n);if(o)return at(o,n,t+1)}return H(e,n)?at(q(e,n),n,t+1):e.t==="union"?E(e.of.map(o=>at(o,n,t+1))):e}function gn(e,n,t=0){if(t>Wr())return e;let r=le(e,n);if(r!==e)return gn(r,n,t+1);let o=j(e,n,t);return o===e?e:gn(o,n,t+1)}function le(e,n={}){let t=L(e);if(t!==e)return t;switch(e.t){case "keyof":{let r=gn(e.of,n);return r===e.of?e:L({...e,of:r})}case "index":{let r=gn(e.obj,n),o=gn(e.key,n);return r===e.obj&&o===e.key?e:L({...e,obj:r,key:o})}case "returnType":{let r=gn(e.fn,n);return r===e.fn?e:L({...e,fn:r})}default:return e}}var Lt=e=>typeof e=="string"?p.string:typeof e=="number"?p.number:p.boolean;function xe(e){return e.t==="literal"&&e.fresh?Lt(e.value):e}function kn(e){if(e.t==="literal")return e.fresh?Lt(e.value):e;if(e.t==="union"){let n=e.of.map(kn);return n.some((t,r)=>t!==e.of[r])?E(n):e}return e}function We(e){if(e.t==="literal")return Lt(e.value);if(e.t==="union"){let n=e.of.map(We);return n.some((t,r)=>t!==e.of[r])?E(n):e}return e}function vn(e){return Se(e,new WeakSet)}function _r(e){switch(e.t){case "array":return {t:"array",items:Se(e.items,new WeakSet),...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "tuple":return {t:"tuple",elements:e.elements.map(n=>Se(n,new WeakSet)),...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "object":return ga(e,new WeakSet);case "fn":case "overload":return Se(e,new WeakSet);default:return e}}function Se(e,n){if(e.t==="literal")return e.fresh?Lt(e.value):e;if(n.has(e))return e;switch(e.t){case "array":return n.add(e),{t:"array",items:Se(e.items,n),...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "tuple":return n.add(e),{t:"tuple",elements:e.elements.map(t=>Se(t,n)),...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "object":return n.add(e),ga(e,n);case "apply":return n.add(e),{t:"apply",name:e.name,args:e.args.map(t=>Se(t,n))};case "fn":return n.add(e),{...e,params:e.params.map(t=>({...t,type:Se(t.type,n)})),returns:Se(e.returns,n),...e.guard?{guard:{param:e.guard.param,type:Se(e.guard.type,n)}}:{}};case "overload":return n.add(e),{t:"overload",signatures:e.signatures.map(t=>Se(t,n))};default:return e}}function ga(e,n){let t={};for(let s in e.props)b(t,s,{type:Se(e.props[s].type,n),optional:e.props[s].optional,...e.props[s].readonly?{readonly:true}:{}});let r=e.index?{key:e.index.key,value:Se(e.index.value,n),...e.index.readonly?{readonly:true}:{}}:void 0,o=e.fromLiteral?{fromLiteral:true}:{},a=e.hasSpread?{hasSpread:true}:{};return r?{t:"object",props:t,index:r,...o,...a}:{t:"object",props:t,...o,...a}}function ba(e){if(!e.siblings){let n=[];for(let t of ba(e.parent)){if(t.t!=="object"||!t.fromLiteral)continue;let r=te(t.props,e.propertyName);r&&(r.type.t==="union"?n.push(...r.type.of):n.push(r.type));}e.siblings=n;}return e.siblings}function ml(e){if(!e.propNames){let n=new Set;for(let t of ba(e))if(t.t==="object"&&t.fromLiteral&&!t.hasSpread)for(let r in t.props)n.add(r);e.propNames=[...n];}return e.propNames}var yl=e=>e.t==="object"&&!e.index&&Object.keys(e.props).length===0;function hl(e,n,t){let r={};for(let a in e.props){let s=e.props[a],i=bn(s.type,n&&{parent:n,propertyName:a},t);b(r,a,i===s.type?s:{...s,type:i});}if(n)for(let a of ml(n))te(r,a)||b(r,a,{type:p.undefined,optional:true});let o=e.index?{key:e.index.key,value:bn(e.index.value,void 0,t),...e.index.readonly?{readonly:true}:{}}:void 0;return o?{t:"object",props:r,index:o}:{t:"object",props:r}}var ha=new WeakMap;function Un(e,n){let t=ha.get(e);if(t!==void 0)return t;if(n.has(e))return false;n.add(e);let r=false;switch(e.t){case "object":r=!!e.fromLiteral||Object.values(e.props).some(o=>Un(o.type,n))||!!e.index&&Un(e.index.value,n);break;case "array":r=!!e.fromLiteral||Un(e.items,n);break;case "tuple":r=!!e.fromLiteral||e.elements.some(o=>Un(o,n));break;case "union":case "intersection":r=e.of.some(o=>Un(o,n));break}return n.delete(e),ha.set(e,r),r}var Sa=new WeakMap;function bn(e,n,t){if(!Un(e,new WeakSet))return e;if(!n){let o=Sa.get(e);if(o)return o}if(t.has(e))return e;t.add(e);let r=Sl(e,n,t);return t.delete(e),n||Sa.set(e,r),r}function Sl(e,n,t){switch(e.t){case "object":return e.fromLiteral?hl(e,n,t):e;case "union":{let r=n??{siblings:e.of},o=e.of.map(a=>a.t==="null"||a.t==="undefined"?a:bn(a,r,t));return o.some(yl)?E(o):o.every((a,s)=>a===e.of[s])?e:p.union(o)}case "intersection":{let r=false,o=e.of.map(a=>{let s=bn(a,void 0,t);return s!==a&&(r=true),s});return r?p.intersection(o):e}case "array":{let r=bn(e.items,void 0,t);return r===e.items&&!e.fromLiteral?e:{t:"array",items:r,...e.readonly?{readonly:true}:{}}}case "tuple":{let r=false,o=e.elements.map(a=>{let s=bn(a,void 0,t);return s!==a&&(r=true),s});return !r&&!e.fromLiteral?e:{t:"tuple",elements:o,...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{}}}default:return e}}function Me(e){return bn(e,void 0,new WeakSet)}var Ke=Object.freeze({t:"union",of:Object.freeze([])});function Nn(e){if(e===Ke)return true;switch(e.t){case "array":return Nn(e.items);case "tuple":return e.elements.some(Nn);case "union":case "intersection":return e.of.some(Nn);case "apply":return e.args.some(Nn);case "object":return !!e.fromLiteral&&(Object.values(e.props).some(n=>Nn(n.type))||!!e.index&&Nn(e.index.value));default:return false}}var ka=e=>e.t==="literal"?typeof e.value:e.t==="string"||e.t==="number"||e.t==="boolean"?e.t:null;function gl(e,n){if(x(n,e))return e;if(x(e,n))return n;let t=ka(e),r=ka(n);return !t||!r||t===r?E([e,n]):null}var Wn,ln=false;function va(e){ln=!ln;try{return e()}finally{ln=!ln;}}function Ba(e){let n=Wn,t=ln,r=new Map;Wn=r,ln=false;try{return {result:e(),candidates:r}}finally{Wn=n,ln=t;}}var Na=(e,n)=>{if(!Wn)return;let t=Wn.get(e);t||(t={co:[],contra:[]},Wn.set(e,t)),(ln?t.contra:t.co).push(n);};function bl(e){if(e.length<=1)return [...e];let n=e.filter(Dt);return n.length?[...e.filter(t=>!Dt(t)),E(n)]:[...e]}function kl(e){let n;for(let t of e){if(t.t!=="literal")return false;let r=typeof t.value;if(n===void 0)n=r;else if(r!==n)return false}return true}function vl(e,n){if(e.length)return kl(e)?E([...e]):e.reduce((t,r)=>x(t,r,n)?r:t)}function wa(e,n={}){let t=bl(e),r=t.filter(s=>s.t==="null"||s.t==="undefined"),o=t.filter(s=>s.t!=="null"&&s.t!=="undefined");if(!o.length)return Me(E(t));let a=vl(o,n);if(a!==void 0)return Me(r.length?E([a,...r]):a)}function Ea(e,n={}){if(e.length)return e.reduce((t,r)=>x(r,t,n)?r:t)}function xa(e,n={}){let t=e.co.length?wa(e.co,n):void 0;if(!e.contra.length)return t;let r=Ea(e.contra,n);if(r===void 0)return t;let o=t!==void 0&&t.t==="union"&&t.of.length===0;return t!==void 0&&!o&&x(t,r,n)?t:r}function zr(e,n){let{typeParams:t,...r}=e;return {...r,params:e.params.map(o=>({...o,type:B(o.type,n)})),returns:B(e.returns,n),...e.guard?{guard:{...e.guard,type:B(e.guard.type,n)}}:{}}}function Kn(e){return e.typeParams?.length?zr(e,Object.fromEntries(e.typeParams.map(n=>[n.name,p.any]))):e}function Ta(e){let n=e.typeParams;if(!n?.length)return e;let t=Object.fromEntries(n.map(a=>[a.name,a.bound??p.unknown])),r=n.map(a=>a.bound??p.unknown);for(let a=0;a<n.length-1;a++)r=r.map(s=>B(s,t));let o=Object.fromEntries(n.map(a=>[a.name,p.any]));return r=r.map(a=>B(a,o)),zr(e,Object.fromEntries(n.map((a,s)=>[a.name,r[s]])))}function Vt(e,n,t={}){if(!e.some(o=>!v(n,o.name)||o.bound))return n;let r={...n};for(let o of e){let a=v(r,o.name)??(o.default?B(o.default,r):p.unknown);if(o.bound){let s=B(o.bound,r);x(a,s,t)||(a=s);}b(r,o.name,a);}return r}function qr(e,n,t={}){let r=e.typeParams??[],o=new Set(r.map(c=>c.name)),a=c=>Object.fromEntries(Object.entries(c??{}).filter(([d])=>o.has(d))),s={},i=Math.max(e.params.length,n.params.length);for(let c=0;c<i;c++){let d=De(e,c),f=De(n,c);d&&f&&(s=W(d,f,s)??s);}let u={...a(e.guard&&n.guard&&e.guard.param===n.guard.param?W(e.guard.type,n.guard.type,{}):W(e.returns,n.returns,{}))};for(let[c,d]of Object.entries(a(s)))b(u,c,d);return zr(e,Vt(r,u,t))}function W(e,n,t={}){if(n===Ke)return t;if(e.t==="var"){if(Nn(n))return t;let r=v(t,e.name);if(!r)return Na(e.name,n),{...t,[e.name]:n};if(n.t==="any"||n.t==="unknown")return t;Na(e.name,n);let o=gl(r,n);return o?{...t,[e.name]:o}:t}if(n.t==="any"||n.t==="unknown")return t;switch(e.t){case "array":return n.t==="array"?W(e.items,n.items,t):null;case "tuple":{let r=e,o=ke(r);if(o<0){if(n.t!=="tuple"||n.elements.length!==r.elements.length)return null;let i=t;for(let l=0;l<r.elements.length;l++)i=W(r.elements[l],n.elements[l],i)??i;return i}let a=t,s=(i,l)=>{a=W(i,l,a)??a;};if(n.t==="tuple"){if(n.elements.length<o)return null;for(let l=0;l<o;l++)s(r.elements[l],n.elements[l]);let i=n.elements.slice(o);return a=W(r.elements[o],i.length?E(i):p.unknown,a)??a,a}if(n.t==="array"){for(let i=0;i<o;i++)s(r.elements[i],n.items);return a=W(r.elements[o],n.items,a)??a,a}return null}case "object":{if(n.t!=="object")return null;let r=t;for(let o in e.props){let a=e.props[o],s=v(n.props,o);if(!s){if(a.optional)continue;return null}r=W(a.type,s.type,r)??r;}return r}case "fn":{let r=n.t==="fn"?n:n.t==="overload"&&n.signatures.length?n.signatures[n.signatures.length-1]:null;if(!r)return null;let o=Kn(e),a=Ta(r),s=W(o.returns,a.returns,t)??t,i=Vn(a),l=Vn(o),u=l.types.length-(l.rest?1:0),c=i.rest?u:Math.min(i.types.length,u);for(let f=0;f<c;f++){let y=ja(i,f),m=Ra(o,f);y&&m&&(s=va(()=>W(m,y,s))??s);}let d=l.rest;return d&&(s=va(()=>W(d,yn(a,c),s))??s),o.guard&&a.guard&&(s=W(o.guard.type,a.guard.type,s)??s),s}case "union":{if(!e.of.some(l=>K(l).size>0))return x(n,e)?t:null;let r=e.of.filter(l=>l.t==="var"),o=n.t==="union"?n.of:[n],a=o.map(()=>false),s=t;for(let l of e.of)if(l.t!=="var")for(let u=0;u<o.length;u++){let c=W(l,o[u],s);c!==null&&(s=c,a[u]=true);}if(r.length!==1)return s;let i=o.filter((l,u)=>!a[u]);return i.length?W(r[0],E(i),s)??s:s}case "overload":{let r=n.t==="fn"?[n]:n.t==="overload"?n.signatures:[];if(!r.length)return x(n,e)?t:null;let o=e.signatures,a=Math.min(r.length,o.length),s=t;for(let i=0;i<a;i++)s=W(o[o.length-a+i],r[r.length-a+i],s)??s;return s}case "apply":{if(n.t!=="apply"||n.name!==e.name||n.args.length!==e.args.length)return null;let r=t;for(let o=0;o<e.args.length;o++)r=W(e.args[o],n.args[o],r)??r;return r}default:return x(n,e)?t:null}}var Aa="@rev",Gr=e=>e.t==="mapped"&&e.over.t==="keyof"&&e.over.of.t==="var";function Ie(e,n,t){if(e.t==="index"&&e.obj.t==="var"&&e.obj.name===n&&e.key.t==="var"&&e.key.name===t)return p.var(Aa);switch(e.t){case "array":return {t:"array",items:Ie(e.items,n,t)};case "tuple":return {t:"tuple",elements:e.elements.map(r=>Ie(r,n,t)),...e.flags?{flags:e.flags}:{}};case "union":return p.union(e.of.map(r=>Ie(r,n,t)));case "fn":return {...e,params:e.params.map(r=>({...r,type:Ie(r.type,n,t)})),returns:Ie(e.returns,n,t)};case "apply":return {t:"apply",name:e.name,args:e.args.map(r=>Ie(r,n,t))};case "returnType":return {t:"returnType",fn:Ie(e.fn,n,t)};case "object":{let r={};for(let o in e.props)b(r,o,{type:Ie(e.props[o].type,n,t),optional:e.props[o].optional,...e.props[o].readonly?{readonly:true}:{}});return e.index?{t:"object",props:r,index:{key:e.index.key,value:Ie(e.index.value,n,t),...e.index.readonly?{readonly:true}:{}}}:{t:"object",props:r}}default:return e}}function Nl(e,n,t){if(e.over.t!=="keyof"||e.over.of.t!=="var")return null;let r=e.over.of.name;if(v(t,r))return null;let o={};for(let a in n.props){let s=Ie(e.body,r,e.key),i=W(s,n.props[a].type,{}),l=i?v(i,Aa):void 0,u=n.props[a];b(o,a,{type:l?xe(l):p.unknown,...u.optional&&!e.optional?{optional:true}:{},...u.readonly&&!e.readonly?{readonly:true}:{}});}return {...t,[r]:{t:"object",props:o}}}function Oa(e,n,t){let r=t;for(let o=0;o<e.length&&o<n.length;o++){let a=e[o].type,s=n[o];if(Gr(a)&&s.t==="object"){let i=Nl(a,s,r);i&&(r=i);}}return r}function Bl(e,n,t={}){let{result:r,candidates:o}=Ba(()=>{let s={};for(let i=0;i<e.params.length;i++){let l=e.params[i];if(l.variadic){for(let u=i;u<n.length;u++)if(s=W(l.type,n[u],s),s===null)return null;break}if(i>=n.length){if(l.optional)continue;return null}if(!Gr(l.type)&&(s=W(l.type,n[i],s),s===null))return null}return Oa(e.params,n,s)});if(r===null)return null;let a=Pa(r,o,t);return {returns:B(e.returns,a),bindings:a}}function Pa(e,n,t){let r;for(let[o,a]of n){if(a.co.length<2&&!a.contra.length)continue;let s=xa(a,t);s===void 0||s===v(e,o)||(r??(r={...e}),b(r,o,s));}return r??e}function st(e,n,t={}){let{result:r,candidates:o}=Ba(()=>{let s={};for(let i=0;i<e.params.length&&i<n.length;i++){let l=e.params[i];if(Gr(l.type))continue;let u=W(l.type,n[i],s);u!==null&&(s=u);}return Oa(e.params,n,s)}),a=Pa(r,o,t);return {returns:B(e.returns,a),bindings:a}}var wl=(e,n)=>({vars:new Set((e??[]).map(t=>t.name)),slots:new Map,schemes:n,visited:new WeakMap,expansions:0}),El=e=>e.t==="array"?e.items:e.t==="tuple"?p.union([...e.elements]):void 0;function ue(e,n,t,r){if(e.t==="var"&&r.vars.has(e.name)){let a=r.slots.get(e.name);a||r.slots.set(e.name,a={co:[],contra:[]}),(t?a.contra:a.co).push(n);return}if(n.t==="any"||n.t==="unknown")return;if(!(e.t==="apply"&&n.t==="apply"&&e.name===n.name&&n.args.length>0)){let a=H(n,r.schemes)?"actual":H(e,r.schemes)?"pattern":void 0;if(a){let s=r.visited.get(e);if(s?.has(n)||(s||r.visited.set(e,s=new WeakSet),s.add(n),r.expansions>=be().maxInstantiationDepth))return;r.expansions++;try{a==="actual"?ue(e,q(n,r.schemes),t,r):ue(q(e,r.schemes),n,t,r);}finally{r.expansions--;}return}}if(n.t==="union"&&e.t!=="union"){for(let a of n.of)ue(e,a,t,r);return}switch(e.t){case "array":{let a=El(n);a&&ue(e.items,a,t,r);return}case "tuple":{let a=e,s=ke(a);if(s<0){n.t==="tuple"&&n.elements.length===a.elements.length&&a.elements.forEach((l,u)=>ue(l,n.elements[u],t,r));return}let i=a.elements[s];if(n.t==="tuple"){let l=n;if(l.elements.length<s)return;for(let u=0;u<l.elements.length;u++)ue(u<s?a.elements[u]:i,l.elements[u],t,r);}else if(n.t==="array"){for(let l=0;l<s;l++)ue(a.elements[l],n.items,t,r);ue(i,n.items,t,r);}return}case "fn":case "overload":{let a=e.t==="fn"?[e]:e.signatures,s=n.t==="fn"?[n]:n.t==="overload"?n.signatures:[],i=Math.min(s.length,a.length);for(let l=0;l<i;l++)xl(Ta(s[s.length-i+l]),Kn(a[a.length-i+l]),t,r);return}case "object":if(n.t==="object")for(let a in e.props){let s=v(n.props,a);s&&ue(e.props[a].type,s.type,t,r);}return;case "apply":n.t==="apply"&&n.name===e.name&&n.args.length===e.args.length&&e.args.forEach((a,s)=>ue(a,n.args[s],t,r));return;default:return}}function xl(e,n,t,r){let o=Vn(e),a=Vn(n),s=a.types.length-(a.rest?1:0),i=o.rest?s:Math.min(o.types.length,s);for(let l=0;l<i;l++){let u=ja(o,l),c=Ra(n,l);u&&c&&ue(c,u,!t,r);}a.rest&&ue(a.rest,yn(e,i),!t,r),e.guard&&n.guard?ue(n.guard.type,e.guard.type,t,r):ue(n.returns,e.returns,t,r);}var ja=(e,n)=>n<e.types.length?e.types[n]:e.rest?e.types[e.types.length-1]:void 0,Ra=(e,n)=>{let t=e.params[n];return t&&!t.variadic?t.type:De(e,n)};function Tl(e,n,t){let r=new Map,o=(l,u)=>r.set(l,[...r.get(l)??[],u]),a=l=>l?.t==="var"&&n.has(l.name),s=l=>{if(Array.isArray(l))return l.forEach(s);if(!l||typeof l!="object")return;let u=l;if(u.t==="fn")for(let c of u.params)c.variadic&&a(c.type)&&o(c.type.name,p.array(p.unknown));if(u.t==="apply"){let c=v(t,u.name);c&&u.args.forEach((d,f)=>{let y=c.params[f]?.bound;if(!a(d)||!y)return;let m=B(y,Sn(c.params,u.args));m.t==="var"&&m.name===d.name||o(d.name,m);});}for(let c of Object.keys(u))s(v(u,c));};s(e);let i=new Map;for(let[l,u]of r)i.set(l,u.length===1?u[0]:p.intersection(u));return i}function Jr(e,n={}){let t=wl(e.infer,n);ue(e.extends,e.check,false,t);let r=Tl(e.extends,t.vars,n),o={};for(let a of e.infer??[]){let s=t.slots.get(a.name),i=s?.co.length?E(s.co):s?.contra.length?p.intersection(s.contra):void 0,l=a.bound??r.get(a.name);l&&(!i||!x(i,l,n))&&(i=l),b(o,a.name,i??p.unknown);}return o}function Ca(e,n={},t=0){if(!e.infer?.length)return null;let r=Xr(e,n,i=>Ca(i,n,t));if(r!==void 0)return r;if(K(e.check).size>0)return null;let o=Jr(e,n),a=new WeakSet,s=Bn(B(e.extends,o),n,a,t);return Wt(Ut(e.check,s,n),()=>Bn(B(e.then,o),n,a,t),()=>Bn(B(e.else,o),n,a,t))}function Bn(e,n={},t=new WeakSet,r=0,o=new Set){let a=r,s=be().maxTypeDepth,i=new Set,l=(f,y)=>y?.length?new Set([...f,...y.map(m=>m.name)]):f,u=(f,y)=>({...f,...f.bound?{bound:d(f.bound,y)}:{},...f.default?{default:d(f.default,y)}:{}}),c=(f,y)=>{let m=l(y,f.typeParams);return {...f,params:f.params.map(h=>({...h,type:d(h.type,m)})),returns:d(f.returns,m),...f.guard?{guard:{...f.guard,type:d(f.guard.type,m)}}:{},...f.typeParams?{typeParams:f.typeParams.map(h=>u(h,m))}:{}}},d=(f,y=i)=>{switch(f.t){case "var":return y.has(f.name)?u(f,y):p.unknown;case "array":return {...f,items:d(f.items,y)};case "tuple":return {...f,elements:f.elements.map(m=>d(m,y))};case "union":return p.union(f.of.map(m=>d(m,y)));case "object":{if(t.has(f))return f;t.add(f);let m={};for(let S in f.props){let k=f.props[S];b(m,S,{type:d(k.type,y),optional:k.optional,...k.readonly?{readonly:true}:{}});}let h=f.index?{key:f.index.key,value:d(f.index.value,y),...f.index.readonly?{readonly:true}:{}}:void 0;return t.delete(f),h?{t:"object",props:m,index:h}:{t:"object",props:m}}case "fn":{if(t.has(f))return f;t.add(f);let m=c(f,y);return t.delete(f),m}case "overload":return {t:"overload",signatures:f.signatures.map(m=>c(m,y))};case "apply":{if(H(f,n)){let m=q(f,n);if(m.t==="conditional"){if(a>=s)throw new Le;a++;try{let h=d(m,y);if(h.t!=="conditional")return h}finally{a--;}}}return {t:"apply",name:f.name,args:f.args.map(m=>d(m,y))}}case "conditional":{let m=f.infer?.length?Ca(f,n,a):he(f,n);if(m)return d(m,y);let h=l(y,f.infer);return {t:"conditional",check:d(f.check,y),extends:d(f.extends,h),then:d(f.then,h),else:d(f.else,h),...f.infer?{infer:f.infer.map(S=>u(S,h))}:{},...f.distributive?{distributive:true}:{}}}case "intersection":return de({of:f.of.map(m=>d(m,y))});case "returnType":return L({t:"returnType",fn:d(f.fn,y)});default:return f}};return d(e,o)}var Al=p.object({}),Qr=(e,n,t="assignable")=>({seen:new WeakMap,exp:new Set,schemes:e,relation:t,assumed:0,explain:n,sourceStack:[],targetStack:[]}),Yr=0;function z(e,n,t){return e.explain?.out.push({path:[...e.explain.path],actual:n,expected:t,kind:"type"}),false}function Hr(e,n,t=0){if(t>be().maxInstantiationDepth)return e;if(H(e,n)){let r=q(e,n);if(r.t!=="conditional")return e;let o=he(r,n);return o?Hr(o,n,t+1):e}if(e.t==="conditional"){let r=he(e,n);return r?Hr(r,n,t+1):e}return e}function lt(e,n,t={}){let r=[];return !A(e,n,Qr(t,{path:[],out:r}))&&r.length===0&&r.push({path:[],actual:e,expected:n,kind:"type"}),r}var Ol=new WeakMap,Pl=new WeakMap;function Wa(e,n,t,r,o){if(e===n)return true;if(Object.keys(t).length>0)return A(e,n,Qr(t,void 0,r));let a=o.get(e)?.get(n);if(a!==void 0)return a;let s=A(e,n,Qr(t,void 0,r)),i=o.get(e);return i||o.set(e,i=new WeakMap),i.set(n,s),s}function x(e,n,t={}){return Wa(e,n,t,"assignable",Ol)}function zt(e,n,t={}){return Wa(e,n,t,"comparable",Pl)}function _e(e,n,t={}){return x(e,n,t)&&x(n,e,t)}function he(e,n){let t=Xr(e,n,r=>he(r,n));if(t!==void 0)return t;if(e.infer?.length){if(K(e.check).size>0)return null;let r=Hr(e.check,n),o=Jr({...e,check:r},n);return Wt(Ut(r,B(e.extends,o),n),()=>B(e.then,o),()=>B(e.else,o))}return K(e.check).size>0||K(e.extends).size>0?null:Wt(Ut(e.check,e.extends,n),()=>e.then,()=>e.else)}function Ut(e,n,t){let r=j(n,t);return r.t==="any"||r.t==="unknown"?"then":j(e,t).t==="any"?"both":x(e,n,t)?"then":"else"}var Wt=(e,n,t)=>e==="then"?n():e==="else"?t():p.union([n(),t()]);function Xr(e,n,t){if(!e.distributive)return;let r=j(e.check,n),o=r.t==="union"?r.of:r.t==="boolean"?[p.literal(true),p.literal(false)]:void 0;if(!o)return;let a=[];for(let s of o){let i=t({t:"conditional",check:s,extends:ot(e.extends,e.check,s),then:ot(e.then,e.check,s),else:ot(e.else,e.check,s),...e.infer?{infer:e.infer}:{}});if(i===null)return null;a.push(i);}return p.union(a)}var Ma=(e,n)=>Kr(e,n.schemes);function _t(e,n,t,r){if(!t.explain)return A(e,n,t);t.explain.path.push(r);try{return A(e,n,t)}finally{t.explain.path.pop();}}function A(e,n,t){if(Yr>=be().maxTypeDepth)throw new Le;Yr++;try{if(e.t==="any"||n.t==="any"||n.t==="unknown")return !0;if(e.t==="unknown")return t.relation==="comparable"?!0:z(t,e,n);let r=le(e,t.schemes);if(r!==e)return A(r,n,t);let o=le(n,t.schemes);if(o!==n)return A(e,o,t);if(n.t==="mapped"&&it(n))return Il(e,n,t);if(e.t==="mapped"&&it(e)&&n.t==="var")return Dl(e,n,t);if(e.t==="mapped"){let s=Ma(e,t);if(s)return A(s,n,t)}if(n.t==="mapped"){let s=Ma(n,t);if(s)return A(e,s,t)}if(e.t==="conditional"){let s=he(e,t.schemes);if(s)return A(s,n,t)}if(n.t==="conditional"){let s=he(n,t.schemes);if(s)return A(e,s,t)}if(t.relation==="comparable"&&Ul(n,e))return !0;if(n.t==="intersection")return n.of.every(s=>A(e,s,t));if(e.t==="intersection"&&n.t!=="union"){if(Rl(e.of,n,t))return !0;if(n.t==="object"){let s=$t(e.of);if(s)return A(s,n,t)}return !1}if(!(e.t==="apply"&&n.t==="apply"&&e.name===n.name&&e.args.length===n.args.length)&&(H(e,t.schemes)||H(n,t.schemes))){let s=`${Q(e)}\u2264${Q(n)}`;if(t.exp.has(s))return !0;if(Da(e,t.sourceStack)&&Da(n,t.targetStack))return t.assumed++,!0;t.exp.add(s),t.sourceStack.push(e),t.targetStack.push(n);let i=A(q(e,t.schemes),q(n,t.schemes),t);return t.sourceStack.pop(),t.targetStack.pop(),t.exp.delete(s),i}return jl(e,n,t)}finally{Yr--;}}var Ia=5;function Da(e,n){if(n.length<Ia||e.t!=="apply")return false;let t=0;for(let r of n)if(r.t==="apply"&&r.name===e.name&&++t>=Ia)return true;return false}function jl(e,n,t){let r=t.seen.get(e);if(r?.has(n))return t.assumed++,true;r||(r=new WeakSet,t.seen.set(e,r)),r.add(n);let o=t.assumed,a=Cl(e,n,t);return (!a||t.assumed!==o)&&r.delete(n),a}function Rl(e,n,t){let r=t.intersectionSource,o=t.explain;t.intersectionSource=true,t.explain=void 0;try{return e.some(a=>A(a,n,t))}finally{t.intersectionSource=r,t.explain=o;}}function Cl(e,n,t){if(e.t==="union")return t.relation==="comparable"?e.of.length===0||e.of.some(r=>A(r,n,t)):e.of.every(r=>A(r,n,t));if(e.t==="boolean"&&n.t==="union")return t.relation==="comparable"?A(p.literal(true),n,t)||A(p.literal(false),n,t):A(p.literal(true),n,t)&&A(p.literal(false),n,t);if(e.t==="conditional")return Ml(e,n,t);if(n.t==="union")return Wl(e,n,t);if(e.t==="var"&&!(n.t==="var"&&n.name===e.name))return e.bound?A(e.bound,n,t):z(t,e,n);if(e.t==="nonPrimitive"&&n.t!=="nonPrimitive")return n.t==="object"&&n.index?z(t,e,n):A(Al,n,t);if(Va(e)&&Va(n))return Gl(e,n,t);if(n.t==="overload")return n.signatures.every(r=>A(e,r,t));switch(n.t){case "literal":return e.t==="literal"&&e.value===n.value?true:z(t,e,n);case "string":case "number":case "boolean":case "null":case "undefined":return e.t===n.t||e.t==="literal"&&Ka(e.value)===n.t?true:z(t,e,n);case "void":return e.t==="void"||e.t==="undefined"?true:z(t,e,n);case "nonPrimitive":return e.t==="object"||e.t==="array"||e.t==="tuple"||e.t==="fn"||e.t==="overload"||e.t==="apply"||e.t==="nonPrimitive"?true:z(t,e,n);case "array":return e.t==="array"?e.readonly&&!n.readonly?z(t,e,n):A(e.items,n.items,t):e.t==="tuple"?e.readonly&&!n.readonly?z(t,e,n):Ir(e).every((r,o)=>_t(r,n.items,t,o)):z(t,e,n);case "tuple":{if(e.t!=="tuple"||e.readonly&&!n.readonly)return z(t,e,n);if(!e.flags&&!n.flags){if(e.elements.length!==n.elements.length)return z(t,e,n);for(let r=0;r<e.elements.length;r++)if(!_t(e.elements[r],n.elements[r],t,r))return false;return true}return ca(e,n,(r,o)=>A(r,o,t),t.relation==="comparable")}case "object":if(e.t==="object")return _l(e,n,t);if(Object.keys(n.props).length===0&&!n.index)return e.t!=="null"&&e.t!=="undefined"&&e.t!=="void"?true:z(t,e,n);if((e.t==="array"||e.t==="tuple")&&n.index){let r=e.t==="array"?[e.items]:Ir(e);return n.index.key==="number"&&Object.values(n.props).every(o=>o.optional)&&r.every(o=>A(o,n.index.value,t))?true:z(t,e,n)}return z(t,e,n);case "fn":return e.t==="fn"?Kt(e,n,t):z(t,e,n);case "var":return e.t==="var"&&e.name===n.name;case "typeQuery":return e.t==="typeQuery"&&e.path.length===n.path.length&&e.path.every((r,o)=>r===n.path[o]);case "keyof":return e.t==="keyof"&&A(e.of,n.of,t)&&A(n.of,e.of,t);case "index":return e.t==="index"&&A(e.obj,n.obj,t)&&A(n.obj,e.obj,t)&&A(e.key,n.key,t)&&A(n.key,e.key,t);case "mapped":return e.t==="mapped"&&e.key===n.key&&!!e.optional==!!n.optional&&A(e.over,n.over,t)&&A(n.over,e.over,t)&&A(e.body,n.body,t)&&A(n.body,e.body,t);case "conditional":return z(t,e,n);case "apply":return e.t==="apply"&&e.name===n.name&&e.args.length===n.args.length&&e.args.every((r,o)=>A(r,n.args[o],t));case "returnType":return e.t==="returnType"&&A(e.fn,n.fn,t)&&A(n.fn,e.fn,t);case "parameters":return e.t==="parameters"&&A(e.fn,n.fn,t)&&A(n.fn,e.fn,t)}}var Ka=e=>typeof e;function Ml(e,n,t){return n.t==="conditional"&&A(e.check,n.check,t)&&A(n.check,e.check,t)&&A(e.extends,n.extends,t)&&A(n.extends,e.extends,t)&&A(e.then,n.then,t)&&A(e.else,n.else,t)?true:A(Vl(e),n,t)}var it=e=>K(e.over).size>0;function Il(e,n,t){if(e.t==="mapped"&&it(e)&&Fl(e,n,t)||n.optional&&$l(e))return true;if(!n.excludeOptional){let r=n.body;if(r.t==="index"&&r.key.t==="var"&&r.key.name===n.key&&_e(r.obj,e,t.schemes))return true;if(!(e.t==="mapped"&&it(e))){let o=p.keyof(e),a=n.optional?p.intersection([n.over,o]):A(n.over,o,t)?n.over:null;if(a!==null&&!Ll(a)&&A(p.index(e,a),B(r,{[n.key]:a}),t))return true}}return z(t,e,n)}function Dl(e,n,t){return !e.optional&&A(p.keyof(n),e.over,t)&&A(e.body,p.index(n,p.var(e.key)),t)?true:z(t,e,n)}function Fl(e,n,t){return t.relation!=="comparable"&&$a(e)>$a(n)?false:A(n.over,e.over,t)&&A(B(e.body,{[e.key]:p.var(n.key)}),n.body,t)}var Fa=e=>e.excludeOptional?-1:e.optional?1:0;function $a(e){let n=Fa(e);if(n!==0)return n;let t=e.over.t==="keyof"?e.over.of:e.modifiers;return t?.t==="mapped"&&it(t)?Fa(t):0}var $l=e=>e.t==="object"&&Object.keys(e.props).length===0&&!e.index,Ll=e=>e.t==="union"&&e.of.length===0,Vl=e=>e.then.t==="any"?e.else:e.else.t==="any"?e.then:p.union([e.then,e.else]);function Ul(e,n){switch(n.t){case "string":case "number":case "boolean":case "null":case "undefined":return e.t===n.t||e.t==="literal"&&Ka(e.value)===n.t;case "literal":return e.t==="literal"&&e.value===n.value;case "void":return e.t==="void"||e.t==="undefined";default:return false}}function Wl(e,n,t){let r=t.explain;if(!r)return n.of.some(s=>A(e,s,t));t.explain=void 0;let o;try{o=n.of.some(s=>A(e,s,t));}finally{t.explain=r;}if(o)return true;let a=Kl(e,n,t);return a?A(e,a,t):z(t,e,n)}function Kl(e,n,t){if(e.t!=="object")return null;let r=n.of.map(o=>j(o,t.schemes));for(let o in e.props){let a=e.props[o].type;if(a.t!=="literal")continue;let s=t.explain;t.explain=void 0;let i;try{i=n.of.filter((l,u)=>{let c=r[u];if(c.t!=="object")return !1;let d=te(c.props,o);return !!d&&A(a,d.type,t)});}finally{t.explain=s;}if(i.length===1)return i[0]}return null}function _l(e,n,t){let r=false;for(let o in n.props)if(!(n.props[o].optional||te(e.props,o))){if(!t.explain)return false;t.explain.out.push({path:[...t.explain.path,o],expected:n.props[o].type,kind:"missing"}),r=true;}if(r)return false;for(let o in n.props){let a=n.props[o],s=te(e.props,o);if(!s)continue;if(s.optional&&!a.optional&&t.relation==="assignable")return false;let i=a.optional?re(s.type).type:s.optional?E([s.type,p.undefined]):s.type;if(!_t(i,a.type,t,o))return false}return !(n.index&&!zl(e,n.index,t))}function zl(e,n,t){if(t.intersectionSource){if(!e.index)return false}else {let r=n.key==="number";for(let o in e.props){if(r&&!an(o))continue;let a=e.props[o],s=a.optional?ie(a.type):a.type;if(!_t(s,n.value,t,o))return false}}return !e.index||A(e.index.value,n.value,t)}var _a=e=>{let n=e.params[e.params.length-1];return n?.variadic?n:void 0},ql=e=>{let n=e.params.findIndex(t=>t.optional||t.variadic);return n<0?e.params.length:n};function De(e,n){let t=_a(e),r=t?e.params.length-1:e.params.length;if(n<r)return e.params[n].type;if(!t)return;let o=t.type;if(o.t==="array")return o.items;if(o.t==="tuple"&&!o.flags)return o.elements[n-r]}var La=(e,n)=>{let t=De(e,n);return t===void 0?t:e.params[n]?.optional?ie(t):t},Va=e=>e.t==="fn"||e.t==="overload";function Gl(e,n,t){let r=e.t==="overload"?e.signatures:[e],o=n.t==="overload"?n.signatures:[n];return r.length===1&&o.length===1?Ua(r[0],o[0],t,t.relation==="comparable"):o.every(a=>r.some(s=>Ua(s,a,t,true)))}function Ua(e,n,t,r){if(r)return Kt(Kn(e),Kn(n),t);let o=Ur(n,K(e));return e.typeParams?.length?Kt(qr(e,o,t.schemes),o,t):Kt(e,o,t)}function Kt(e,n,t){if(n.returns.t!=="void"&&n.returns.t!=="any"&&!A(e.returns,n.returns,t)||!_a(n)&&ql(e)>n.params.length)return false;let r=Math.max(e.params.length,n.params.length);for(let o=0;o<r;o++){let a=La(e,o),s=La(n,o);if(a&&s&&!A(s,a,t))return false}return !(n.guard&&(!e.guard||e.guard.param!==n.guard.param||!A(e.guard.type,n.guard.type,t)))}var Jl=e=>e.t==="object"&&!e.index&&Object.values(e.props).every(n=>n.optional);function E(e){let n=[];for(let o of e)o.t==="union"?n.push(...o.of):n.push(o);let t=be().maxUnionMembers;if(n.length>t)throw new Ve(n.length,t);if(n.some(o=>o.t==="any"))return p.any;let r=[...n];for(let o=r.length-1;o>=0;o--){let a=r[o];r.some((i,l)=>l!==o&&!Jl(i)&&x(a,i)&&(l<o||!x(i,a)))&&r.splice(o,1);}if(r.some(o=>o.t==="literal"&&o.value===true)&&r.some(o=>o.t==="literal"&&o.value===false)){let o=r.filter(a=>!(a.t==="boolean"||a.t==="literal"&&typeof a.value=="boolean"));o.push(p.boolean),r.length=0,r.push(...o);}return r.length===1?r[0]:{t:"union",of:r}}function Zr(e,n){let t=new Set,r=new WeakSet,o=a=>{if(!r.has(a))switch(r.add(a),a.t){case "keyof":t.add("keyof"),o(a.of);break;case "index":t.add("indexed"),o(a.obj),o(a.key);break;case "mapped":t.add("mapped"),o(a.over),o(a.body);break;case "conditional":t.add("conditional"),a.infer?.length&&t.add("infer"),a.infer?.forEach(o),o(a.check),o(a.extends),o(a.then),o(a.else);break;case "returnType":case "parameters":o(a.fn);break;case "tuple":t.add("tuple"),a.elements.forEach(o);break;case "intersection":t.add("intersection"),a.of.forEach(o);break;case "overload":t.add("overload");for(let s of a.signatures){s.typeParams?.forEach(o);for(let i of s.params)o(i.type);o(s.returns),s.guard&&o(s.guard.type);}break;case "object":for(let s in a.props)o(a.props[s].type);a.index&&o(a.index.value);break;case "array":o(a.items);break;case "union":a.of.forEach(o);break;case "fn":a.typeParams?.forEach(o);for(let s of a.params)o(s.type);o(a.returns),a.guard&&o(a.guard.type);break;case "var":a.bound&&o(a.bound),a.default&&o(a.default);break;case "apply":n&&a.name===n&&t.add("recursion"),a.args.forEach(o);break}};return o(e),t}var Xl=p.union([]);function za(e,n){return qt(e,n,new WeakMap)}function Yl(e){return e.reduce(za,Xl)}function qt(e,n,t){if(e.t==="any"||n.t==="any")return p.any;if(e===n)return e;let r=t.get(e)?.get(n);if(r)return r;if(e.t==="object"&&n.t==="object")return Ql(e,n,t);if(e.t==="array"&&n.t==="array"){let o={t:"array",items:p.unknown};return qa(t,e,n,o),o.items=qt(e.items,n.items,t),o}return E([e,n])}function Ql(e,n,t){let r={t:"object",props:{}};qa(t,e,n,r);for(let o in e.props){let a=e.props[o],s=v(n.props,o);if(s){let i=qt(a.type,s.type,t);b(r.props,o,{type:i,...a.optional||s.optional?{optional:true}:{},...a.readonly||s.readonly?{readonly:true}:{}});}else b(r.props,o,{type:a.type,optional:true,...a.readonly?{readonly:true}:{}});}for(let o in n.props){if(pe(e.props,o))continue;let a=n.props[o];b(r.props,o,{type:a.type,optional:true,...a.readonly?{readonly:true}:{}});}return e.index&&n.index&&e.index.key===n.index.key&&(r.index={key:e.index.key,value:qt(e.index.value,n.index.value,t),...e.index.readonly||n.index.readonly?{readonly:true}:{}}),r}function qa(e,n,t,r){let o=e.get(n);o||(o=new WeakMap,e.set(n,o)),o.set(t,r);}var Hl=4;function Zl(e,n={}){return ut(e,n,0)}function ut(e,n,t){let r=j(le(e,n),n);switch(r.t){case "string":return "";case "number":return 0;case "boolean":return false;case "null":return null;case "literal":return r.value;case "array":return [];case "tuple":{let o=[];for(let a=0;a<r.elements.length&&(r.flags?.[a]??"req")==="req";a++)o.push(ut(r.elements[a],n,t));return o}case "object":{if(t>=Hl)return {};let o={};for(let a of Object.keys(r.props)){let s=r.props[a];s.optional||b(o,a,ut(s.type,n,t+1));}return o}case "nonPrimitive":return {};case "union":{if(r.of.some(a=>a.t==="null"))return null;let o=r.of.find(a=>a.t!=="undefined");return o===void 0?null:ut(o,n,t)}case "intersection":{let o=r.of.map(s=>ut(s,n,t));if(!o.every(eu))return null;let a={};for(let s of o)for(let i of Object.keys(s))b(a,i,s[i]);return a}default:return null}}var eu=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);var nu=e=>/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e),tu={check:new Set(["function","conditional"]),extends:new Set(["conditional"]),union:new Set(["function","conditional","union","intersection"]),intersection:new Set(["function","conditional","union","intersection"]),operand:new Set(["function","conditional","union","intersection"]),postfix:new Set(["function","conditional","union","intersection","operator","query"])},Ga=(e,n)=>tu[e].has(n);function C(e,n=new WeakSet){return G(e,{seen:n,infer:new Map})}function ru(e){return Gt(e,{seen:new WeakSet,infer:new Map})}function no(e,n){switch(e.t){case "fn":return "function";case "overload":return e.signatures.length===1?"function":"primary";case "conditional":return "conditional";case "union":return e.of.length===0?"primary":e.of.length===1?no(e.of[0],n):"union";case "intersection":return e.of.length===1?no(e.of[0],n):"intersection";case "keyof":return "operator";case "array":case "tuple":return e.readonly?"operator":"primary";case "typeQuery":return "query";case "var":{let t=n.infer.get(e.name);return t?t.bound?"conditional":"operator":"primary"}default:return "primary"}}function ze(e,n,t){let r=G(n,t);return Ga(e,no(n,t))?`(${r})`:r}function Gt(e,n){return e.map((t,r)=>{let o=G(t,n);return r===0&&ou(t)?`(${o})`:o}).join(", ")}var ou=e=>e.t==="fn"&&!!e.typeParams?.length||e.t==="overload"&&e.signatures.length===1&&!!e.signatures[0].typeParams?.length;function au(e,n){return e?.length?`<${e.map(t=>su(t,n)).join(", ")}>`:""}function su(e,n){let t=e.bound?` extends ${G(e.bound,n)}`:"",r=e.default?` = ${G(e.default,n)}`:"";return `${e.name}${t}${r}`}function Jt(e,n){if(!n.some(r=>e.infer.has(r)))return e;let t=new Map(e.infer);for(let r of n)t.delete(r);return {...e,infer:t}}function eo(e,n,t){let r=Jt(t,(e.typeParams??[]).map(i=>i.name)),o=e.params.map(i=>{let l=i.variadic?"...":"",u=i.optional&&!i.variadic?"?":"";return `${l}${i.name}${u}: ${G(i.type,r)}`}).join(", "),a=e.guard?`${e.params[e.guard.param]?.name??`arg${e.guard.param}`} is ${G(e.guard.type,r)}`:G(e.returns,r),s=au(e.typeParams,r);return n==="=>"?`${s}(${o}) => ${a}`:`${s}(${o}): ${a}`}function G(e,n){let{seen:t}=n;switch(e.t){case "any":case "unknown":case "string":case "number":case "boolean":case "null":case "undefined":case "void":return e.t;case "nonPrimitive":return "object";case "var":{let r=n.infer.get(e.name);return r?r.bound?`infer ${e.name} extends ${G(r.bound,Jt(n,[e.name]))}`:`infer ${e.name}`:e.name}case "typeQuery":return `typeof ${e.path.join(".")}`;case "literal":return typeof e.value=="string"?JSON.stringify(e.value):String(e.value);case "array":{let r=`${ze("postfix",e.items,n)}[]`;return e.readonly?`readonly ${r}`:r}case "tuple":{let o=`[${e.elements.map((a,s)=>{let i=e.flags?.[s]??"req";return i==="rest"?`...${ze("postfix",a,n)}[]`:i==="optional"?`${ze("postfix",a,n)}?`:G(a,n)}).join(", ")}]`;return e.readonly?`readonly ${o}`:o}case "union":{if(e.of.length===0)return "never";if(e.of.length===1)return G(e.of[0],n);if(t.has(e))return "\u2026";t.add(e);let r=e.of.map(o=>ze("union",o,n)).join(" | ");return t.delete(e),r}case "intersection":{if(e.of.length===1)return G(e.of[0],n);if(t.has(e))return "\u2026";t.add(e);let r=e.of.map(o=>ze("intersection",o,n)).join(" & ");return t.delete(e),r}case "object":{if(t.has(e))return "\u2026";t.add(e);let r=Object.entries(e.props).map(([o,a])=>{let s=nu(o)?o:JSON.stringify(o);return `${a.readonly?"readonly ":""}${s}${a.optional?"?":""}: ${G(a.type,n)}`});return e.index&&r.push(`${e.index.readonly?"readonly ":""}[k: ${e.index.key}]: ${G(e.index.value,n)}`),t.delete(e),r.length===0?"{}":`{ ${r.join("; ")} }`}case "fn":{if(t.has(e))return "\u2026";t.add(e);let r=eo(e,"=>",n);return t.delete(e),r}case "overload":{if(e.signatures.length===1)return eo(e.signatures[0],"=>",n);if(t.has(e))return "\u2026";t.add(e);let r=e.signatures.map(o=>eo(o,":",n));return t.delete(e),`{ ${r.join("; ")} }`}case "apply":{if(e.args.length===0)return e.name;if(t.has(e))return "\u2026";t.add(e);let r=`${e.name}<${Gt(e.args,n)}>`;return t.delete(e),r}case "keyof":return `keyof ${ze("operand",e.of,n)}`;case "index":return `${ze("postfix",e.obj,n)}[${G(e.key,n)}]`;case "mapped":{if(t.has(e))return "\u2026";t.add(e);let r=e.readonly?"readonly ":e.excludeReadonly?"-readonly ":"",o=e.optional?"?":e.excludeOptional?"-?":"",a=Jt(n,[e.key]),s=`{ ${r}[${e.key} in ${G(e.over,n)}]${o}: ${G(e.body,a)} }`;return t.delete(e),s}case "conditional":{if(t.has(e))return "\u2026";t.add(e);let r=e.infer??[],o=r.length?{...n,infer:new Map([...n.infer,...r.map(i=>[i.name,i])])}:n,a=Jt(n,r.map(i=>i.name)),s=`${ze("check",e.check,n)} extends ${ze("extends",e.extends,o)} ? ${G(e.then,a)} : ${G(e.else,a)}`;return t.delete(e),s}case "returnType":return `ReturnType<${Gt([e.fn],n)}>`;case "parameters":return `Parameters<${Gt([e.fn],n)}>`}}function Ja(e){if(e.length===0)return "value";let n=e[e.length-1];if(typeof n=="number"){let t=e.slice(0,-1);return t.length?`property '${t.join(".")}' at position ${n}`:`position ${n}`}return `property '${e.join(".")}'`}function ct(e){let n=e.filter(t=>t.kind==="missing");if(n.length&&n.length===e.length){let t=n.map(r=>`'${r.path.join(".")}'`).join(", ");return n.length===1?`property ${t} is missing`:`properties ${t} are missing`}return e.map(t=>t.actual===void 0?`${Ja(t.path)} is missing`:`${Ja(t.path)}: expected '${C(t.expected)}', got '${C(t.actual)}'`).join("; ")}function wn(e,n=new WeakSet){switch(e.t){case "string":case "number":case "boolean":case "null":case "literal":return true;case "array":return n.has(e)?true:(n.add(e),wn(re(e.items).type,n));case "tuple":return n.has(e)?true:(n.add(e),e.elements.every(t=>wn(re(t).type,n)));case "object":{if(n.has(e))return true;n.add(e);let t=Object.values(e.props).every(o=>wn(re(o.type).type,n)),r=!e.index||wn(re(e.index.value).type,n);return t&&r}case "union":return n.has(e)?true:(n.add(e),e.of.every(t=>wn(t,n)));case "intersection":return n.has(e)?true:(n.add(e),e.of.every(t=>wn(t,n)));case "undefined":case "void":case "fn":case "overload":case "keyof":case "index":case "mapped":case "conditional":case "returnType":case "parameters":case "var":case "typeQuery":case "apply":case "any":case "unknown":case "nonPrimitive":return false}}function fe(e,n,t={}){let r=e;for(let o of n){let a=En(r,o,t);if(a===null)return null;r=a;}return {type:r,completions:pt(r,t)}}var iu=e=>e==="[]"||/^\d+$/.test(e);function En(e,n,t,r=new Set){if(e.t==="var")return e.bound?En(j(e,t),n,t,r):null;if(e.t==="mapped"){let a=j(e,t);return a===e?null:En(a,n,t,r)}if(H(e,t)){let a=Q(e);if(r.has(a))return null;r.add(a);let s=En(q(e,t),n,t,r);return r.delete(a),s}let o=L(e);if(o!==e)return En(o,n,t,r);switch(e.t){case "any":return e;case "object":{let a=te(e.props,n);return a?a.optional?E([a.type,{t:"undefined"}]):a.type:e.index?.key==="string"?e.index.value:null}case "array":return iu(n)?e.items:null;case "tuple":{let a=e.flags?.findIndex(l=>l!=="req")??-1,s=Number(n);if(!(Number.isInteger(s)&&s>=0))return null;if(a<0)return s<e.elements.length?e.elements[s]:null;if(s<a)return e.elements[s];let i=e.elements.slice(a);return i.length?E(i):null}case "union":{let a=[];for(let s of e.of){let i=En(s,n,t,r);if(i===null)return null;a.push(i);}return a.length?E(a):null}case "intersection":{let a=e.of.map(s=>En(s,n,t,r)).filter(s=>s!==null);return a.length?de({of:a}):null}default:return null}}function to(e,n,t={}){let r=xn(e,n,t,new Set);return r?.readonly?r.via:null}var lu=e=>e!==""&&String(Number(e))===e;function xn(e,n,t,r){if(e.t==="var")return e.bound?xn(j(e,t),n,t,r):null;if(e.t==="mapped"){let i=j(e,t);return i===e?null:xn(i,n,t,r)}if(H(e,t)){let i=Q(e);if(r.has(i))return null;r.add(i);let l=xn(q(e,t),n,t,r);return r.delete(i),l}let o=L(e);if(o!==e)return xn(o,n,t,r);let a="name"in n?n.name:null,s="base"in n?n.base==="number":n.element&&lu(n.name);switch(e.t){case "object":{let i=a===null?void 0:te(e.props,a);if(i)return {via:"property",readonly:!!i.readonly};let l=e.index;return l&&(l.key==="string"||s)?{via:"index",readonly:!!l.readonly}:null}case "array":return s?{via:"index",readonly:!!e.readonly}:null;case "tuple":{if(!s)return null;let l=(e.flags??[]).indexOf("rest"),u=l<0?e.elements.length:l,c=a===null?-1:Number(a);return Number.isInteger(c)&&c>=0&&c<u?{via:"property",readonly:!!e.readonly}:l>=0||a===null?{via:"index",readonly:!!e.readonly}:null}case "union":{let i=[];for(let u of e.of){let c=xn(u,n,t,r);if(c===null)return null;i.push(c);}let l=i.some(u=>u.readonly);return i.some(u=>u.via==="property")?{via:"property",readonly:l}:{via:"index",readonly:l}}case "intersection":{let i=e.of.map(u=>xn(u,n,t,r)).filter(u=>u!==null),l=i.filter(u=>u.via==="property");return l.length?{via:"property",readonly:l.some(u=>u.readonly)}:i.length?{via:"index",readonly:i.every(u=>u.readonly)}:null}default:return null}}function pt(e,n,t=new WeakSet,r=new Set){if(e.t==="var")return e.bound?pt(j(e,n),n,t,r):[];if(H(e,n)){let a=Q(e);if(r.has(a))return [];r.add(a);let s=pt(q(e,n),n,t,r);return r.delete(a),s}let o=L(e);if(o!==e)return pt(o,n,t,r);switch(e.t){case "object":return Object.entries(e.props).map(([a,s])=>({key:a,type:s.type,optional:!!s.optional}));case "array":return [{key:"[]",type:e.items,optional:false}];case "tuple":return e.elements.map((a,s)=>({key:String(s),type:a,optional:false}));case "union":case "intersection":{if(t.has(e))return [];t.add(e);let a=[],s=new Set;for(let i of e.of)for(let l of pt(i,n,t,r))s.has(l.key)||(s.add(l.key),a.push(l));return t.delete(e),a}default:return []}}var uu="1.6.0";var Xa={Partial:{params:[{t:"var",name:"T"}],body:{t:"mapped",key:"P",over:{t:"keyof",of:{t:"var",name:"T"}},body:{t:"index",obj:{t:"var",name:"T"},key:{t:"var",name:"P"}},optional:true}},Required:{params:[{t:"var",name:"T"}],body:{t:"mapped",key:"P",over:{t:"keyof",of:{t:"var",name:"T"}},body:{t:"index",obj:{t:"var",name:"T"},key:{t:"var",name:"P"}},excludeOptional:true}},Readonly:{params:[{t:"var",name:"T"}],body:{t:"mapped",key:"P",over:{t:"keyof",of:{t:"var",name:"T"}},body:{t:"index",obj:{t:"var",name:"T"},key:{t:"var",name:"P"}},readonly:true}},Pick:{params:[{t:"var",name:"T"},{t:"var",name:"K",bound:{t:"keyof",of:{t:"var",name:"T"}}}],body:{t:"mapped",key:"P",over:{t:"var",name:"K",bound:{t:"keyof",of:{t:"var",name:"T"}}},body:{t:"index",obj:{t:"var",name:"T"},key:{t:"var",name:"P"}}}},Record:{params:[{t:"var",name:"K",bound:{t:"keyof",of:{t:"any"}}},{t:"var",name:"T"}],body:{t:"mapped",key:"P",over:{t:"var",name:"K",bound:{t:"keyof",of:{t:"any"}}},body:{t:"var",name:"T"}}},Exclude:{params:[{t:"var",name:"T"},{t:"var",name:"U"}],body:{t:"conditional",check:{t:"var",name:"T"},extends:{t:"var",name:"U"},then:{t:"union",of:[]},else:{t:"var",name:"T"}}},Extract:{params:[{t:"var",name:"T"},{t:"var",name:"U"}],body:{t:"conditional",check:{t:"var",name:"T"},extends:{t:"var",name:"U"},then:{t:"var",name:"T"},else:{t:"union",of:[]}}},Omit:{params:[{t:"var",name:"T"},{t:"var",name:"K",bound:{t:"keyof",of:{t:"any"}}}],body:{t:"apply",name:"Pick",args:[{t:"var",name:"T"},{t:"apply",name:"Exclude",args:[{t:"keyof",of:{t:"var",name:"T"}},{t:"var",name:"K",bound:{t:"keyof",of:{t:"any"}}}]}]}},NonNullable:{params:[{t:"var",name:"T"}],body:{t:"conditional",check:{t:"var",name:"T"},extends:{t:"union",of:[{t:"null"},{t:"undefined"}]},then:{t:"union",of:[]},else:{t:"var",name:"T"}}},Parameters:{params:[{t:"var",name:"T",bound:{t:"fn",params:[{name:"args",type:{t:"any"},variadic:true}],returns:{t:"any"}}}],body:{t:"conditional",check:{t:"var",name:"T",bound:{t:"fn",params:[{name:"args",type:{t:"any"},variadic:true}],returns:{t:"any"}}},extends:{t:"fn",params:[{name:"args",type:{t:"var",name:"P"},variadic:true}],returns:{t:"any"}},then:{t:"var",name:"P"},else:{t:"union",of:[]},infer:[{t:"var",name:"P"}]}},ReturnType:{params:[{t:"var",name:"T",bound:{t:"fn",params:[{name:"args",type:{t:"any"},variadic:true}],returns:{t:"any"}}}],body:{t:"conditional",check:{t:"var",name:"T",bound:{t:"fn",params:[{name:"args",type:{t:"any"},variadic:true}],returns:{t:"any"}}},extends:{t:"fn",params:[{name:"args",type:{t:"any"},variadic:true}],returns:{t:"var",name:"R"}},then:{t:"var",name:"R"},else:{t:"any"},infer:[{t:"var",name:"R"}]}},PropertyKey:{params:[],body:{t:"union",of:[{t:"string"},{t:"number"}]}}};var ro=[p.typeParam("T")],Xt=Object.freeze({Array:ro,ReadonlyArray:ro,Promise:ro});var Qa=(e={})=>ast.rootScope(e),un=(e,n)=>ast.childScope(e,n),oe=(e,n)=>ast.lookup(e,n),oo=e=>{let n=ast.visibleNames(e);for(let t of n.keys())(t.includes(".")||t.endsWith("#"))&&n.delete(t);return n},Ya=new Set(["types","schemes","accessors","asserters","matchers","modules","nominals","noLib"]),yu=(e={},n)=>{let t=n??{},r=Object.keys(t).filter(o=>!Ya.has(o));if(r.length>0)throw new ast.TSLiteError("invalid-env-options",`createEnv: unknown option(s) ${r.map(o=>`'${o}'`).join(", ")} \u2014 expected ${[...Ya].join(", ")}. Named types go under 'types'.`,{unknown:r});return {scope:Qa(e),types:t.types??{},schemes:hu(t.schemes??{}),accessors:t.accessors??{},asserters:t.asserters??new Set,matchers:t.matchers??new Set,modules:t.modules??{},lib:t.noLib?{}:Xa,nominals:t.noLib?t.nominals??{}:{...Xt,...t.nominals}}};function hu(e){let n=false,t=Object.entries(e).map(([r,o])=>{let a=p.scheme(o.params,o.body),s=a.params===o.params&&a.body===o.body;return s||(n=true),[r,s?o:a]});return n?Object.fromEntries(t):e}var Su=(e,n)=>v(e.types,n),gu=(e,n)=>v(e.schemes,n);var Ha={"unknown-name":"semantic","const-needs-init":"semantic","cannot-redeclare":"semantic","circular-type-alias":"semantic","circular-type-annotation":"semantic","unknown-module":"semantic","not-a-schema":"semantic","type-as-value":"semantic","asserter-needs-name":"semantic","shadows-schema":"semantic",unsupported:"semantic","unused-name":"semantic","assign-to-const":"semantic","for-in-destructuring":"semantic","readonly-write":"type","not-assignable":"type","not-callable":"type","no-such-member":"type","not-object":"type","possibly-nullish":"type","unknown-value":"type","missing-argument":"type","excess-argument":"type","excess-property":"type","spread-argument":"type","required-after-optional":"type","not-iterable":"type","not-spreadable":"type","overwritten-property":"type","implicit-any":"semantic","props-mismatch":"type","no-matching-overload":"type","constraint-violation":"type","wrong-type-argument-count":"type","cast-unsound":"type","unprovable-value":"type","not-arithmetic-operand":"type","operator-not-applicable":"type","implicit-coercion":"type","too-deep":"type","too-complex-union":"type","node-not-allowed":"capability","name-not-allowed":"capability","type-feature-not-allowed":"capability","any-not-allowed":"capability","narrowing-cast-not-allowed":"capability","too-large":"capability","wrong-result-type":"capability"},O=(e,n,t)=>({code:e,kind:Ha[e],severity:"error",node:n,message:t}),Z=(e,n,t,r="error")=>({code:e,kind:Ha[e],severity:r,node:n,message:t}),g={notAssignable:(e,n,t,r={})=>{let o=lt(n,t,r),a=o.filter(u=>u.path.length>0),s=a.length?` ${ct(a)}.`:"",i=O("not-assignable",e,`Type '${C(n)}' is not assignable to type '${C(t)}'.${s}`),l=o.flatMap(u=>{let[c]=u.path;return u.kind==="missing"&&u.path.length===1&&typeof c=="string"?[{name:c,type:u.expected}]:[]});return l.length?{...i,data:{kind:"missing-properties",properties:l}}:i},unknownName:(e,n)=>O("unknown-name",e,`Cannot find name '${n}'.`),notCallable:(e,n)=>O("not-callable",e,`Type '${C(n)}' is not callable.`),noSuchMember:(e,n,t)=>O("no-such-member",e,`Property '${t}' does not exist on type '${C(n)}'.`),notObject:(e,n)=>O("not-object",e,`Type '${C(n)}' has no members to access.`),possiblyNullish:(e,n,t=false)=>{let r=n.null&&n.undefined?"'null' or 'undefined'":n.null?"'null'":"'undefined'";return O("possibly-nullish",e,t?`Cannot invoke an object which is possibly ${r}.`:`Object is possibly ${r}.`)},unknownValue:e=>O("unknown-value",e,"Object is of type 'unknown'."),constNeedsInit:e=>O("const-needs-init",e,"'const' declarations must be initialized."),missingArgument:(e,n,t)=>O("missing-argument",e,`Missing argument '${n}' of type '${C(t)}'.`),notASchema:(e,n)=>O("not-a-schema",e,`'${n}' refers to a value, but no type named '${n}' is declared. An asserter needs a schema that is both a value in scope and a declared type.`),typeAsValue:(e,n)=>O("type-as-value",e,`'${n}' only refers to a type, but is being used as a value here. Types are erased at runtime: register '${n}' as a value in scope for the asserter to prove it.`),asserterNeedsName:(e,n)=>O("asserter-needs-name",e,`The first argument of '${n}' must be the name of a schema, not a ${e.type}.`),shadowsSchema:(e,n)=>O("shadows-schema",e,`'${n}' shadows the schema of the same name: an asserter would type against the declared schema but prove against this value at runtime. Rename the binding.`),unknownModule:(e,n)=>O("unknown-module",e,`Cannot find module '${n}' or its corresponding type declarations.`),cannotRedeclare:(e,n)=>O("cannot-redeclare",e,`Cannot redeclare block-scoped variable '${n}'.`),circularTypeAlias:(e,n)=>O("circular-type-alias",e,`Type alias '${n}' circularly references itself.`),circularTypeAnnotation:(e,n)=>O("circular-type-annotation",e,`'${n}' is referenced directly or indirectly in its own type annotation.`),excessArgument:(e,n,t)=>O("excess-argument",e,`Expected ${n} argument${n===1?"":"s"}, but got ${t}.`),argumentArity:(e,n,t,r,o=false)=>O(r==="missing"?"missing-argument":"excess-argument",e,o?`Expected at least ${n} arguments, but got ${t}.`:`Expected ${n} arguments, but got ${t}.`),excessProperty:(e,n,t)=>O("excess-property",e,`Object literal may only specify known properties, and '${n}' does not exist in type '${C(t)}'.`),spreadArgument:e=>O("spread-argument",e,"A spread argument must either have a tuple type or be passed to a rest parameter."),requiredAfterOptional:e=>O("required-after-optional",e,"A required parameter cannot follow an optional parameter."),notIterable:(e,n)=>O("not-iterable",e,`Type '${C(n)}' must have a '[Symbol.iterator]()' method that returns an iterator.`),notSpreadable:{rest:e=>O("not-spreadable",e,"Rest types may only be created from object types."),spread:e=>O("not-spreadable",e,"Spread types may only be created from object types.")},duplicateKey:{strict:e=>O("cannot-redeclare",e,"An object literal cannot have multiple properties with the same name in strict mode."),identifier:(e,n)=>O("cannot-redeclare",e,`Duplicate identifier '${n}'.`),lateBound:(e,n)=>O("cannot-redeclare",e,`Duplicate property '${n}'.`),alsoDeclared:(e,n)=>O("cannot-redeclare",e,`Property '${n}' was also declared here.`)},overwrittenProperty:(e,n,t)=>({...O("overwritten-property",e,`'${n}' is specified more than once, so this usage will be overwritten.`),relatedInformation:[{node:t,message:"This spread always overwrites this property."}]}),implicitAny:{parameter:(e,n)=>O("implicit-any",e,`Parameter '${n}' implicitly has an 'any' type.`),rest:(e,n)=>O("implicit-any",e,`Rest parameter '${n}' implicitly has an 'any[]' type.`),bindingElement:(e,n)=>O("implicit-any",e,`Binding element '${n}' implicitly has an 'any' type.`),evolving:(e,n)=>O("implicit-any",e,`Variable '${n}' implicitly has type 'any' in some locations where its type cannot be determined.`),variable:(e,n)=>O("implicit-any",e,`Variable '${n}' implicitly has an 'any' type.`),index:(e,n,t)=>O("implicit-any",e,`Element implicitly has an 'any' type because expression of type '${C(n)}' can't be used to index type '${C(t)}'.`),indexNotNumber:e=>O("implicit-any",e,"Element implicitly has an 'any' type because index expression is not of type 'number'.")},tupleIndexOutOfRange:(e,n,t,r)=>O("no-such-member",e,`Tuple type '${C(n)}' of length '${t}' has no element at index '${r}'.`),propsMismatch:(e,n,t)=>O("props-mismatch",e,`Payload is not compatible with the component props '${C(n)}': ${t}.`),noMatchingOverload:(e,n,t)=>O("no-matching-overload",e,`No overload of '${C(n)}' matches the arguments (${t.map(r=>C(r)).join(", ")}).`),constraintViolation:(e,n,t)=>O("constraint-violation",e,`Type '${C(n)}' does not satisfy the constraint '${C(t)}'.`),unsupported:(e,n)=>O("unsupported",e,`${n} is not supported in this language.`),wrongTypeArgumentCount:(e,n,t)=>O("wrong-type-argument-count",e,`Expected ${n} type arguments, but got ${t}.`),noOverloadTypeArgumentCount:(e,n,t,r)=>O("wrong-type-argument-count",e,`No overload expects ${n} type arguments, but overloads do exist that expect either ${t} or ${r} type arguments.`),genericTypeArity:(e,n,t,r)=>O("wrong-type-argument-count",e,r===0?`Type '${n}' is not generic.`:t===r?`Generic type '${n}' requires ${r} type argument${r===1?"":"s"}.`:`Generic type '${n}' requires between ${t} and ${r} type arguments.`),unusedName:(e,n)=>Z("unused-name",e,`'${n}' is declared but its value is never read.`,"warning"),assignToConst:(e,n,t)=>O("assign-to-const",e,t==="import"?`Cannot assign to '${n}' because it is an import.`:`Cannot assign to '${n}' because it is a constant.`),forInTarget:e=>O("not-assignable",e,"The left-hand side of a 'for...in' statement must be of type 'string' or 'any'."),forInDestructuring:e=>O("for-in-destructuring",e,"The left-hand side of a 'for...in' statement cannot be a destructuring pattern."),readonlyWrite:(e,n)=>O("readonly-write",e,`Index signature in type '${C(n)}' only permits reading.`),readonlyProperty:(e,n)=>O("readonly-write",e,`Cannot assign to '${n}' because it is a read-only property.`),readonlyDelete:e=>O("readonly-write",e,"The operand of a 'delete' operator cannot be a read-only property."),castUnsound:(e,n,t)=>O("cast-unsound",e,`Conversion of type '${C(n)}' to type '${C(t)}' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.`),unprovableValue:(e,n,t,r)=>O("unprovable-value",e,`A value of type '${C(n)}' can never satisfy '${r}' (${C(t)}): the types do not overlap, so this proof can only fail at runtime.`),arithmeticOperand:(e,n)=>O("not-arithmetic-operand",e,n==="operand"?"An arithmetic operand must be of type 'any' or 'number'.":`The ${n==="left"?"left":"right"}-hand side of an arithmetic operation must be of type 'any' or 'number'.`),operatorNotApplicable:(e,n,t,r)=>O("operator-not-applicable",e,`Operator '${n}' cannot be applied to types '${C(t)}' and '${C(r)}'.`),implicitCoercion:(e,n,t,r)=>({...O("implicit-coercion",e,`Operator '+' does not convert to text: cannot mix '${C(n)}' and '${C(t)}'. `+(r?"Use a template literal or 'asString(\u2026)'.":"Use 'stringify(\u2026)' to serialize a structure.")),data:{kind:"implicit-coercion",textConvertible:r}}),notTextConvertible:(e,n)=>({...O("implicit-coercion",e,`Cannot convert '${C(n)}' to text: only string, number, boolean, null and undefined convert. Use 'stringify(\u2026)' to serialize a structure.`),data:{kind:"implicit-coercion",textConvertible:false}})};function J(){let e=[],n=new WeakMap,t=0;return {all:e,get reported(){return t},report(r){t++;let o=n.get(r.node);o||n.set(r.node,o=[]),!o.some(a=>bu(a,r))&&(o.push(r),e.push(r));},hasErrors(){return e.some(r=>r.severity==="error")}}}function bu(e,n){if(e.code!==n.code||e.message!==n.message)return false;let t=e.relatedInformation??[],r=n.relatedInformation??[];return t.length===r.length&&t.every((o,a)=>o.node===r[a].node&&o.message===r[a].message)}function dt(e,n,t){let r=We(e);return zt(n,vn(r),t)||zt(r,n,t)}function Za(e,n,t){return x(e,n,t)}function so(e,n,t={}){return n.flatMap(r=>r(e,t))}function Tn(e,n){let t=r=>{n(r);for(let o of ast.childrenOf(r))t(o);};t(e);}var Nu=e=>Array.isArray(e)?e:[e],es=["ArrowFunctionExpression","FunctionExpression","FunctionDeclaration"];function io(e,n="error"){return t=>{let r=[];return Tn(t,o=>{let a=capability.nodeViolation(o,e);a&&r.push(Z("node-not-allowed",o,`'${a}' is not allowed by the capability profile.`,n));}),r}}function ns(e,n="error"){let t=e.typeTier;return r=>{if(t==="author")return [];let o=[];return Tn(r,a=>{let s=a,i=s.type==="TSTypeAliasDeclaration"?s.id?.name:void 0;for(let l of [s.typeAnnotation,s.returnType]){if(!l)continue;let u=capability.typeFeatureViolations(Zr(l,i),t);u.length&&o.push(Z("type-feature-not-allowed",a,`authoring type feature${u.length>1?"s":""} '${u.join("', '")}' requires capability tier 'author'.`,n));}}),o}}function _(e,n=new WeakSet){if(!e||typeof e!="object"||n.has(e))return false;switch(n.add(e),e.t){case "any":return true;case "object":return Object.values(e.props).some(t=>_(t.type,n))||!!e.index&&_(e.index.value,n);case "array":return _(e.items,n);case "tuple":return e.elements.some(t=>_(t,n));case "union":case "intersection":return e.of.some(t=>_(t,n));case "fn":return e.params.some(t=>_(t.type,n))||_(e.returns,n);case "overload":return e.signatures.some(t=>t.params.some(r=>_(r.type,n))||_(t.returns,n));case "keyof":return _(e.of,n);case "index":return _(e.obj,n)||_(e.key,n);case "mapped":return _(e.over,n)||_(e.body,n);case "conditional":return _(e.check,n)||_(e.extends,n)||_(e.then,n)||_(e.else,n);case "returnType":case "parameters":return _(e.fn,n);case "apply":return e.args.some(t=>_(t,n));default:return false}}function ts(e,n="error"){return t=>{if(!e.typeStrict)return [];let r=[];return Tn(t,o=>{let a=o;for(let s of [a.typeAnnotation,a.returnType])if(s&&_(s)){r.push(Z("any-not-allowed",o,"'any' is not allowed under 'strict' \u2014 use 'unknown' + validated narrowing (assert/parse).",n));break}}),r}}function rs(e,n="error"){return (t,r)=>{let o=r.overlay;if(!e.typeStrict||!o)return [];let a=r.schemes??{},s=[];return Tn(t,i=>{if(i.type!=="TSAsExpression")return;let{expression:l}=i,u=o.get(l)?.type,c=o.get(i)?.type;!u||!c||_(c)||!dt(u,c,a)||Za(u,c,a)||s.push(Z("narrowing-cast-not-allowed",i,`A cast may only widen under 'strict': '${C(u)}' is not assignable to '${C(c)}'. Narrow with a type guard, or prove the value with an asserter.`,n));}),s}}function lo(e,n="error"){let t=new Set(e);return r=>{let o=[];return Tn(r,a=>{if(a.type!=="CallExpression")return;let s=a.callee;if(s.type!=="Identifier")o.push(Z("name-not-allowed",s,"Only direct calls to allowed functions are permitted.",n));else {let i=s.name;t.has(i)||o.push(Z("name-not-allowed",s,`Function '${i}' is not allowed here.`,n));}}),o}}function Yt(e,n,t={}){let r=new Set(Nu(e)),o=t.severity??"error",a=[...r].join("/");return s=>{let i=[],l=(u,c)=>{let d=r.has(u.type),f=d?c+1:c;d&&f>n&&i.push(Z("too-deep",u,`Nesting of ${a} exceeds ${n}${t.hint?` \u2014 ${t.hint}`:""}.`,o));for(let y of ast.childrenOf(u))l(y,f);};return l(s,0),i}}var uo=(e=3,n="error")=>Yt(es,e,{hint:"use a pipe instead of nesting functions",severity:n}),co=(e,n="error")=>Yt("CallExpression",e,{hint:"use a pipe instead of nesting calls",severity:n}),po=(e,n="error")=>Yt("MemberExpression",e,{severity:n});function fo(e,n="error"){return t=>{let r=[],o=(a,s)=>{if(s>e){r.push(Z("too-deep",a,`Expression nesting exceeds ${e}.`,n));return}for(let i of ast.childrenOf(a))o(i,s+1);};return o(t,0),r}}function mo(e,n="error"){return t=>{let r=0;return Tn(t,()=>{r++;}),r>e?[Z("too-large",t,`Expression has ${r} nodes (max ${e}).`,n)]:[]}}function yo(e,n="error"){return t=>{let r=[];return Tn(t,o=>{if(o.type==="CallExpression"){let a=o.arguments;a&&a.length>e&&r.push(Z("too-large",o,`Call has ${a.length} arguments (max ${e}).`,n));}}),r}}function ho(e,n={},t="error"){return (r,o)=>{let a=o.overlay?.get(r)?.type;return a?x(a,e,n)?[]:[Z("wrong-result-type",r,`Result type '${C(a)}' is not assignable to the required '${C(e)}'.`,t)]:[]}}function Qt(e){let n=[io(e),ns(e),ts(e),rs(e)];return e.hostAllow!=="*"&&n.push(lo([...e.hostAllow])),n}function wu(e){return Qt(capability.compileProfile(e))}var So=[{op:"+",category:"additive",result:"additive"},{op:"-",category:"arithmetic",result:"number"},{op:"*",category:"arithmetic",result:"number"},{op:"/",category:"arithmetic",result:"number"},{op:"%",category:"arithmetic",result:"number"},{op:"**",category:"arithmetic",result:"number"},{op:"&",category:"bitwise",result:"number"},{op:"|",category:"bitwise",result:"number"},{op:"^",category:"bitwise",result:"number"},{op:"<<",category:"bitwise",result:"number"},{op:">>",category:"bitwise",result:"number"},{op:">>>",category:"bitwise",result:"number"},{op:"<",category:"relational",result:"boolean"},{op:">",category:"relational",result:"boolean"},{op:"<=",category:"relational",result:"boolean"},{op:">=",category:"relational",result:"boolean"},{op:"===",category:"equality",result:"boolean"},{op:"!==",category:"equality",result:"boolean"},{op:"==",category:"equality",result:"boolean"},{op:"!=",category:"equality",result:"boolean"}],ft=new Map(So.map(e=>[e.op,e])),os={number:p.number,boolean:p.boolean,string:p.string},go=e=>os[e],as=[{op:"!",result:"boolean"},{op:"-",result:"number"},{op:"+",result:"number"},{op:"~",result:"number"},{op:"typeof",result:"string"},{op:"void",result:"undefined"},{op:"delete",result:"boolean"}],Eu={number:p.number,boolean:p.boolean,string:p.string,undefined:p.undefined},xu=[{op:"&&"},{op:"||"},{op:"??"}];function Tu(e,n={}){return So.filter(t=>t.result==="additive"?x(p.string,e,n)||x(p.number,e,n):x(os[t.result],e,n))}function Au(e,n={}){return as.filter(t=>x(Eu[t.result],e,n))}var An=e=>({bindings:new Map,parent:e}),is=e=>e.charCodeAt(0)===95;function Ht(e,n,t,r,o,a){let s=e.bindings.get(t);s&&(s.exempt=true);let i={name:t,node:r,kind:o,exempt:a,used:false};e.bindings.set(t,i),n.all.push(i);}function yt(e,n){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let r of e)yt(r,n);return}let t=e;if(t.t==="typeQuery"&&Array.isArray(t.path)){let r=t.path[0];typeof r=="string"&&Zt(n,r);return}for(let r of Object.keys(t))yt(t[r],n);}function ls(e,n){let t=e;yt(t.typeAnnotation,n),yt(t.returnType,n);}function Zt(e,n){for(let t=e;t;t=t.parent){let r=t.bindings.get(n);if(r){r.used=true;return}}}function qe(e,n,t,r,o,a){if(e)switch(e.type){case "Identifier":{let s=e.name;ls(e,n),Ht(n,t,s,e,r,o||a&&is(s));return}case "ObjectPattern":{let s=e.properties,i=s[s.length-1],l=!!i&&i.type==="RestElement";s.forEach((u,c)=>{let d=l&&c<s.length-1;if(u.type==="RestElement")qe(u.argument,n,t,r,o,false);else {let f=u;f.computed&&V(f.key,n,t),qe(f.value,n,t,r,o||d,!f.shorthand);}});return}case "ArrayPattern":{for(let s of e.elements){if(!s)continue;let i=s;qe(i.type==="RestElement"?i.argument:i,n,t,r,o,true);}return}case "AssignmentPattern":qe(e.left,n,t,r,o,a);return;case "RestElement":qe(e.argument,n,t,r,o,true);return;default:return}}function mt(e,n,t){if(e)switch(e.type){case "AssignmentPattern":V(e.right,n,t),mt(e.left,n,t);return;case "ObjectPattern":for(let r of e.properties)mt(r.type==="RestElement"?r.argument:r.value,n,t);return;case "ArrayPattern":for(let r of e.elements)r&&mt(r,n,t);return;case "RestElement":mt(e.argument,n,t);return;default:return}}function ss(e,n,t,r){for(let o of e.declarations)qe(o.id,n,t,"local",r,false),V(o.init,n,t);}function bo(e,n,t){let r=e,o=An(n),a=r.params??[];for(let s of a)qe(s,o,t,"parameter",false,true);for(let s of a)mt(s,o,t);V(r.body,o,t);}function V(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(ls(e,n),e.type){case "Identifier":Zt(n,e.name);return;case "MemberExpression":{let r=e;V(r.object,n,t),r.computed&&V(r.property,n,t);return}case "Property":{let r=e;r.computed&&V(r.key,n,t),V(r.value,n,t);return}case "Program":case "BlockStatement":{let r=An(n);for(let o of e.body??[])V(o,r,t);return}case "ArrowFunctionExpression":case "FunctionExpression":bo(e,n,t);return;case "FunctionDeclaration":{let r=e.id;r&&Ht(n,t,r.name,r,"local",false),bo(e,n,t);return}case "CatchClause":{let r=e,o=An(n);qe(r.param,o,t,"local",true,false),V(r.body,o,t);return}case "SwitchStatement":{let r=e;V(r.discriminant,n,t);let o=An(n);for(let a of r.cases){V(a.test,o,t);for(let s of a.consequent??[])V(s,o,t);}return}case "ForStatement":{let r=e,o=An(n);V(r.init,o,t),V(r.test,o,t),V(r.update,o,t),V(r.body,o,t);return}case "ForOfStatement":case "ForInStatement":{let r=e;V(r.right,n,t);let o=An(n),a=r.left;if(a.type==="VariableDeclaration")for(let s of a.declarations)qe(s.id,o,t,"local",false,true);else V(a,o,t);V(r.body,o,t);return}case "VariableDeclaration":ss(e,n,t,false);return;case "ImportDeclaration":{for(let r of e.specifiers){let o=r.local;o&&Ht(n,t,o.name,o,"import",is(o.name));}return}case "ExportNamedDeclaration":{let r=e;if(r.declaration){let o=r.declaration;if(o.type==="VariableDeclaration")ss(o,n,t,true);else if(o.type==="FunctionDeclaration"){let a=o.id;a&&Ht(n,t,a.name,a,"local",true),bo(o,n,t);}else V(o,n,t);}else for(let o of r.specifiers)Zt(n,o.local.name);return}case "TSAsExpression":V(e.expression,n,t);return;case "TSTypeAliasDeclaration":yt(e.typeAnnotation,n);return;case "JsonExpression":ko(e.body,n,t);return;case "JSXOpeningElement":{let r=e;us(r.name,n);for(let o of r.attributes??[])V(o,n,t);return}case "JSXClosingElement":return;case "JSXAttribute":V(e.value,n,t);return;default:{let r=v(ast.VisitorKeys,e.type);if(!r)return;let o=e;for(let a of r){let s=v(o,a);if(Array.isArray(s))for(let i of s)V(i,n,t);else V(s,n,t);}return}}}function us(e,n,t){e&&(e.type==="JSXIdentifier"?Zt(n,e.name):e.type==="JSXMemberExpression"&&us(e.object,n));}function ko(e,n,t){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let o of e)ko(o,n,t);return}let r=e;if(ast.isExprMarker(r)){try{V(json.fromJson(r),n,t);}catch{}return}for(let o of Object.keys(r))ko(r[o],n,t);}function vo(e,n){if(!n.locals&&!n.parameters)return [];let t={all:[]};V(e,An(void 0),t);let r=[];for(let o of t.all)o.used||o.exempt||(o.kind==="parameter"?n.parameters:n.locals)&&r.push(g.unusedName(o.node,o.name));return r}var Cu=new Set(["const","import"]),ht=e=>({binds:new Map,parent:e});function Mu(e,n){for(let t=e;t;t=t.parent){let r=t.binds.get(n);if(r)return r}}function On(e){if(!e)return [];switch(e.type){case "Identifier":return [e];case "ObjectPattern":return e.properties.flatMap(n=>n.type==="RestElement"?On(n.argument):On(n.value));case "ArrayPattern":return e.elements.flatMap(n=>n?On(n):[]);case "AssignmentPattern":return On(e.left);case "RestElement":return On(e.argument);default:return []}}function St(e){switch(e.type){case "ArrayExpression":return e.elements.flatMap(n=>n?St(n):[]);case "ObjectExpression":return e.properties.flatMap(n=>St(n.type==="SpreadElement"?n.argument:n.value));case "SpreadElement":return St(e.argument);case "AssignmentExpression":return St(e.left);default:return [e]}}var er=(e,n,t)=>{for(let r of On(n))e.binds.set(r.name,t);};function gt(e,n,t){if(!e)return;if(e.type!=="Identifier"){if(e.type==="ArrayExpression"||e.type==="ObjectExpression")for(let a of St(e))gt(a,n,t);else for(let a of On(e))gt(a,n,t);return}let r=e.name,o=Mu(n,r);o&&Cu.has(o)&&(t.invalid.add(e),t.out.push(g.assignToConst(e,r,o==="import"?"import":"const")));}function ae(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(e.type){case "AssignmentExpression":{let r=e;gt(r.left,n,t),ae(r.right,n,t);return}case "UpdateExpression":{gt(e.argument,n,t);return}case "Program":case "BlockStatement":{let r=ht(n);for(let o of e.body??[])ae(o,r,t);return}case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":{let r=e,o=ht(n);for(let a of r.params??[])er(o,a,"param");ae(r.body,o,t);return}case "CatchClause":{let r=e,o=ht(n);er(o,r.param,"param"),ae(r.body,o,t);return}case "ForStatement":case "ForOfStatement":case "ForInStatement":{let r=e,o=ht(n),a=r.left??r.init;if(a?.type==="VariableDeclaration")for(let s of a.declarations)er(o,s.id,a.kind);else a&&r.left?(gt(a,o,t),ae(a,o,t)):a&&ae(a,o,t);ae(r.right,n,t),ae(r.test,o,t),ae(r.update,o,t),ae(r.body,o,t);return}case "VariableDeclaration":{let r=e;for(let o of r.declarations)ae(o.init,n,t),er(n,o.id,r.kind);return}case "ImportDeclaration":{for(let r of e.specifiers){let o=r.local;o&&n.binds.set(o.name,"import");}return}case "ExportNamedDeclaration":{let r=e;r.declaration&&ae(r.declaration,n,t);return}case "TSTypeAliasDeclaration":return;case "TSAsExpression":ae(e.expression,n,t);return;default:{let r=v(ast.VisitorKeys,e.type);if(!r)return;let o=e;for(let a of r){let s=v(o,a);if(Array.isArray(s))for(let i of s)ae(i,n,t);else ae(s,n,t);}return}}}function No(e){let n={out:[],invalid:new WeakSet};return ae(e,ht(void 0),n),{diagnostics:n.out,invalidTargets:n.invalid}}var bt=e=>({decls:new Map,parent:e});function Du(e,n){for(let t=e;t;t=t.parent){let r=t.decls.get(n);if(r)return r}}function _n(e){if(!e)return [];switch(e.type){case "Identifier":return [e];case "ObjectPattern":return e.properties.flatMap(n=>n.type==="RestElement"?_n(n.argument):_n(n.value));case "ArrayPattern":return e.elements.flatMap(n=>n?_n(n):[]);case "AssignmentPattern":return _n(e.left);case "RestElement":return _n(e.argument);default:return []}}var nr=(e,n)=>{for(let t of _n(n))e.decls.set(t.name,t);};function ee(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(e.type){case "Identifier":{let r=Du(n,e.name);r&&r!==e&&t.set(e,r);return}case "MemberExpression":{let r=e;ee(r.object,n,t),r.computed&&ee(r.property,n,t);return}case "Property":{let r=e;r.computed&&ee(r.key,n,t),ee(r.value,n,t);return}case "Program":case "BlockStatement":{let r=bt(n);for(let o of e.body??[])ee(o,r,t);return}case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":{let r=e,o=e.id;o&&n.decls.set(o.name,o);let a=bt(n);for(let s of r.params??[])nr(a,s);ee(r.body,a,t);return}case "CatchClause":{let r=e,o=bt(n);nr(o,r.param),ee(r.body,o,t);return}case "ForStatement":case "ForOfStatement":case "ForInStatement":{let r=e,o=bt(n),a=r.left??r.init;if(a?.type==="VariableDeclaration")for(let s of a.declarations)nr(o,s.id);else a&&ee(a,o,t);ee(r.right,n,t),ee(r.test,o,t),ee(r.update,o,t),ee(r.body,o,t);return}case "VariableDeclaration":{for(let r of e.declarations)nr(n,r.id),ee(r.init,n,t);return}case "ImportDeclaration":{for(let r of e.specifiers){let o=r.local;o&&n.decls.set(o.name,o);}return}case "TSTypeAliasDeclaration":{let r=e.id;r&&n.decls.set(r.name,r);return}case "TSAsExpression":ee(e.expression,n,t);return;default:{let r=v(ast.VisitorKeys,e.type);if(!r)return;let o=e;for(let a of r){let s=v(o,a);if(Array.isArray(s))for(let i of s)ee(i,n,t);else ee(s,n,t);}return}}}function Fu(e){let n=new WeakMap;return ee(e,bt(void 0),n),n}function Vu(e,n){return e.kind==="local"?n.kind==="local"&&e.declaration===n.declaration:n.kind==="environment"&&e.path.length===n.path.length&&e.path.every((t,r)=>t===n.path[r])}var kt=e=>({decls:new Map,parent:e});function ps(e,n){for(let t=e;t;t=t.parent){let r=t.decls.get(n);if(r)return r}}var Uu=e=>e?.type==="Literal"&&typeof e.value=="string";function rr(e,n){if(!n&&e.type==="Identifier")return e.name;if(Uu(e))return e.value}function qn(e,n,t){if(e)switch(e.type){case "Identifier":{let r=e.name,o=ps(n,r);return o?t.aliases.get(o):[r]}case "MemberExpression":{let r=e,o=qn(r.object,n,t),a=rr(r.property,r.computed);return o&&a!==void 0?[...o,a]:void 0}case "ChainExpression":return qn(e.expression,n,t);default:return}}var ds=(e,n)=>{let t=ps(n,e);return t?{kind:"local",declaration:t}:{kind:"environment",path:[e]}};function tr(e,n,t,r,o){r.out.push({site:"node",node:e,symbol:ds(n,t),...o?{shorthand:o}:{}});}function vt(e,n,t,r){n.decls.set(e.name,e),t.out.push({site:"node",node:e,symbol:{kind:"local",declaration:e},isDeclaration:true,...r?{shorthand:r}:{}});}function Ge(e,n,t,r,o,a){if(e)switch(e.type){case "Identifier":vt(e,n,t),Gn(e,n,t),o&&r&&t.aliases.set(e,r);return;case "ObjectPattern":for(let s of e.properties){if(s.type==="RestElement"){Ge(s.argument,n,t,void 0,false,a);continue}let i=s,l=i.key;i.computed&&I(l,a,t);let u=rr(l,i.computed),c=r&&u!==void 0?[...r,u]:void 0,d=i.value,f=d.type==="AssignmentPattern"?d.left:d,y=!!i.shorthand&&f.type==="Identifier";c&&t.out.push({site:"node",node:l,symbol:{kind:"environment",path:c},...y?{shorthand:"binding"}:{}}),y?(vt(f,n,t,"property"),Gn(f,n,t),o&&c&&t.aliases.set(f,c),d.type==="AssignmentPattern"&&I(d.right,a,t)):Ge(d,n,t,c,o,a);}return;case "ArrayPattern":for(let s of e.elements)Ge(s,n,t,void 0,false,a);return;case "AssignmentPattern":{let s=e;Ge(s.left,n,t,r,o,a),I(s.right,a,t);return}case "RestElement":Ge(e.argument,n,t,void 0,false,a);return;default:I(e,n,t);}}function Gn(e,n,t){let r=e;for(let a of ast.ERASABLE_TYPE_NODE_KEYS)Bo(v(r,a),n,t);let o=r.typeParameters;if(Array.isArray(o))for(let a of o)Gn(a,n,t);}function Bo(e,n,t){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let o of e)Bo(o,n,t);return}let r=e;if(r.type==="TSTypeQuery"){let o=r.exprName,a=ds(o[0],n);t.out.push({site:"typeQuery",node:e,segment:0,symbol:a});let s=a.kind==="environment"?a.path:t.aliases.get(a.declaration);s&&o.slice(1).forEach((i,l)=>t.out.push({site:"typeQuery",node:e,segment:l+1,symbol:{kind:"environment",path:[...s,...o.slice(1,l+2)]}}));return}for(let[o,a]of Object.entries(r))o!=="loc"&&o!=="range"&&Bo(a,n,t);}function fs(e,n,t){if(e){if(e.type==="JSXIdentifier"){let r=e.name;/^[A-Z_$]/.test(r)&&tr(e,r,n,t);return}if(e.type==="JSXMemberExpression"){let r=e;fs(r.object,n,t);let o=r.object,a=o.type==="JSXIdentifier"?qn({type:"Identifier",name:o.name},n,t):void 0;a&&t.out.push({site:"node",node:r.property,symbol:{kind:"environment",path:[...a,r.property.name]}});}}}function I(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(e.type){case "Identifier":tr(e,e.name,n,t);return;case "MemberExpression":{let r=e;I(r.object,n,t);let o=qn(r.object,n,t),a=rr(r.property,r.computed);o&&a!==void 0?t.out.push({site:"node",node:r.property,symbol:{kind:"environment",path:[...o,a]}}):r.computed&&I(r.property,n,t);return}case "Property":{let r=e;if(r.computed&&I(r.key,n,t),r.shorthand&&r.value.type==="Identifier"){let o=r.value;tr(r.value,o.name,n,t,"property");return}I(r.value,n,t);return}case "Program":case "BlockStatement":{let r=kt(n);for(let o of e.body??[])I(o,r,t);return}case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":{let r=e,o=e.id;o&&vt(o,n,t);let a=kt(n);for(let s of r.params??[])Ge(s,a,t,void 0,false,a);Gn(e,a,t),I(r.body,a,t);return}case "CatchClause":{let r=e,o=kt(n);Ge(r.param,o,t,void 0,false,o),I(r.body,o,t);return}case "ForStatement":case "ForOfStatement":case "ForInStatement":{let r=e,o=kt(n),a=r.left??r.init;if(a?.type==="VariableDeclaration")for(let s of a.declarations)Ge(s.id,o,t,void 0,false,o),I(s.init,o,t);else a&&I(a,o,t);I(r.right,n,t),I(r.test,o,t),I(r.update,o,t),I(r.body,o,t);return}case "VariableDeclaration":{let r=e;for(let o of r.declarations){let a=qn(o.init,n,t);Ge(o.id,n,t,a,r.kind==="const",n),I(o.init,n,t);}return}case "AssignmentExpression":{let r=e,o=r.left;r.operator==="="&&["ObjectPattern","ArrayPattern","ObjectExpression","ArrayExpression"].includes(o.type)?zn(o,qn(r.right,n,t),n,t):I(o,n,t),I(r.right,n,t);return}case "ImportDeclaration":{for(let r of e.specifiers){let o=r,a=o.type==="ImportSpecifier"&&(o.imported===o.local||o.imported?.name===o.local.name);vt(o.local,n,t,a?"import":void 0);}return}case "TSTypeAliasDeclaration":{let r=e.id;vt(r,n,t),t.typeAliases.has(r.name)||t.typeAliases.set(r.name,r),Gn(e,n,t);return}case "TSAsExpression":I(e.expression,n,t),Gn(e,n,t);return;case "JSXOpeningElement":case "JSXClosingElement":{let r=e;if(fs(r.name,n,t),e.type==="JSXOpeningElement")for(let o of r.attributes)o.type==="JSXSpreadAttribute"?I(o.argument,n,t):I(o.value,n,t);return}default:{let r=v(ast.VisitorKeys,e.type);if(!r)return;let o=e;for(let a of r){let s=v(o,a);if(Array.isArray(s))for(let i of s)I(i,n,t);else I(s,n,t);}return}}}function cs(e){if(e.type==="AssignmentPattern"){let n=e;return {target:n.left,value:n.right}}if(e.type==="AssignmentExpression"&&e.operator==="="){let n=e;return {target:n.left,value:n.right}}}function zn(e,n,t,r){switch(e.type){case "ObjectPattern":case "ObjectExpression":for(let o of e.properties){if(o.type==="RestElement"||o.type==="SpreadElement"){zn(o.argument,void 0,t,r);continue}let a=o,s=a.key;a.computed&&I(s,t,r);let i=rr(s,a.computed),l=n&&i!==void 0?[...n,i]:void 0,u=a.value,c=cs(u),d=c?.target??u,f=!!a.shorthand&&d.type==="Identifier";l&&r.out.push({site:"node",node:s,symbol:{kind:"environment",path:l},...f?{shorthand:"binding"}:{}}),f?tr(d,d.name,t,r,"property"):zn(d,l,t,r),c&&I(c.value,t,r);}return;case "ArrayPattern":case "ArrayExpression":for(let o of e.elements)o&&zn(o.type==="SpreadElement"?o.argument:o,void 0,t,r);return;case "AssignmentPattern":case "AssignmentExpression":{let o=cs(e);if(!o)return I(e,t,r);zn(o.target,n,t,r),I(o.value,t,r);return}case "RestElement":zn(e.argument,void 0,t,r);return;default:I(e,t,r);}}function Wu(e,n){let t=e.typeRefs;if(t?.length)for(let r of t){let o=r.name?n.typeAliases.get(r.name):void 0;o&&n.out.push({site:"typeRef",ref:r,symbol:{kind:"local",declaration:o}});}}function Ku(e){let n={out:[],aliases:new WeakMap,typeAliases:new Map};return I(e,kt(void 0),n),Wu(e,n),n.out}function Te(e,n,t,r){switch(e.t){case "apply":if(n.has(e.name)&&r.add(e.name),t.has(e.name))for(let o of e.args)Te(o,n,t,r);return;case "union":case "intersection":for(let o of e.of)Te(o,n,t,r);return;case "conditional":Te(e.check,n,t,r),Te(e.extends,n,t,r),Te(e.then,n,t,r),Te(e.else,n,t,r);return;case "keyof":Te(e.of,n,t,r);return;case "index":Te(e.obj,n,t,r),Te(e.key,n,t,r);return;case "returnType":case "parameters":Te(e.fn,n,t,r);return;default:return}}function ys(e,n){let t=new Set(Object.keys(e)),r=new Set(Object.keys(n)),o=new Map;for(let[s,i]of Object.entries(e)){let l=new Set;Te(i.body,t,r,l),o.set(s,l);}let a=new Set;for(let s of t){let i=new Set,l=[...o.get(s)];for(;l.length;){let u=l.pop();if(u===s){a.add(s);break}i.has(u)||(i.add(u),l.push(...o.get(u)));}}return a}var wo=e=>`a\0${e}`,ms=(e,n)=>`p\0${e}\0${n}`;function hs(e,n){let t=new Set(Object.keys(e)),r=new Set(Object.keys(n)),o=new Map,a=new Map;for(let[m,h]of Object.entries(e))a.set(m,_u(h.body));let s=m=>a.get(m),i=(m,h)=>{switch(m.t){case "literal":return h.has(String(m.value))?[String(m.value)]:[];case "union":return m.of.flatMap(S=>i(S,h));case "keyof":{let S=m.of.t==="apply"?v(e,m.of.name):void 0,k=S?Eo(S.body):void 0;return k?[...k].filter(P=>h.has(P)):[]}default:return []}},l=(m,h,S)=>{switch(m.t){case "apply":if(t.has(m.name)&&S.add(wo(m.name)),r.has(m.name)||h==="annotation")for(let k of m.args)l(k,h,S);return;case "index":{if(m.obj.t==="apply"){let k=s(m.obj.name);if(k)for(let P of i(m.key,k))S.add(ms(m.obj.name,P));}l(m.obj,h,S),l(m.key,h,S);return}case "union":case "intersection":for(let k of m.of)l(k,h,S);return;case "conditional":l(m.check,h,S),l(m.extends,h,S),l(m.then,h,S),l(m.else,h,S);return;case "keyof":l(m.of,h,S);return;case "returnType":case "parameters":l(m.fn,h,S);return;case "array":h==="annotation"&&l(m.items,h,S);return;case "tuple":if(h==="annotation")for(let k of m.elements)l(k,h,S);return;default:return}};for(let m of Object.keys(e)){let h=new Set;l(e[m].body,"aliasBody",h),o.set(wo(m),h);for(let[S,k]of s(m)??[]){let P=new Set;for(let R of k)l(R,"annotation",P);o.set(ms(m,S),P);}}let u=new Map,c=m=>{let h=u.get(m);if(h)return h;let S=new Set;u.set(m,S);let k=[...o.get(m)??[]];for(;k.length;){let P=k.pop();S.has(P)||(S.add(P),k.push(...o.get(P)??[]));}return S},d=new Map,f=[];for(let m of o.keys()){if(!m.startsWith("p\0")||!c(m).has(m))continue;f.push(m);let[,h,S]=m.split("\0");d.has(h)||d.set(h,new Set),d.get(h).add(S);}let y=new Set;for(let m of Object.keys(e)){let h=wo(m),S=c(h);f.some(k=>S.has(k)&&c(k).has(h))&&y.add(m);}return {properties:d,aliases:y}}function _u(e){let n=new Map,t=r=>{if(r.t==="union"||r.t==="intersection")r.of.forEach(t);else if(r.t==="object")for(let[o,a]of Object.entries(r.props))n.has(o)||n.set(o,[]),n.get(o).push(a.type);};return t(e),n}function xo(e,n){if(e.t==="union"||e.t==="intersection")return {...e,of:e.of.map(r=>xo(r,n))};if(e.t!=="object")return e;let t={...e.props};for(let r of Object.keys(t))n.has(r)&&b(t,r,{...t[r],type:{t:"any"}});return {...e,props:t}}function Eo(e){switch(e.t){case "object":return new Set(Object.keys(e.props));case "intersection":return new Set(e.of.flatMap(n=>[...Eo(n)]));case "union":{let[n,...t]=e.of.map(Eo);return new Set([...n??[]].filter(r=>t.every(o=>o.has(r))))}default:return new Set}}var or=e=>e.typeAnnotation,ar=e=>e.returnType;function sr(e){let n=e.typeParameters;if(n?.length)return n.map(t=>p.typeParam(t.name,{bound:t.bound,default:t.default}))}var ve=e=>e.type==="Identifier"?e.name:null,Ss=e=>{if(e.type==="VariableDeclaration"){let n=e.declarations[0];return n?ve(n.id):null}return ve(e)},gs=e=>{if(e.type==="VariableDeclaration"){let n=e.declarations[0];return n?n.id:e}return e},Je=e=>{if(e.computed)return null;let n=e.key;return n.type==="Identifier"?n.name:n.type==="Literal"?String(n.value??""):null};function bs(e){let n=r=>r&&r.type==="Literal"&&typeof r.value=="string"?r.value:null;if(e.length===1&&e[0].type==="ArrayExpression"){let r=[];for(let o of e[0].elements){let a=n(o);if(a===null)return null;r.push(a);}return r}let t=[];for(let r of e){let o=n(r);if(o===null)return null;t.push(o);}return t.length?t:null}function To(e){if(e.type==="Identifier")return e.name;if(e.type==="MemberExpression"){let n=e;if(n.computed||n.property.type!=="Identifier")return null;let t=To(n.object);return t===null?null:`${t}.${n.property.name}`}return null}var cn=e=>{if(e.type!=="TemplateLiteral")return null;let n=e;if(n.expressions.length!==0||n.quasis.length!==1)return null;let{cooked:t,raw:r}=n.quasis[0].value;return t??r},Xe=e=>e.type==="Literal"||cn(e)!==null;function Pn(e){let n=cn(e);if(n!==null)return {t:"literal",value:n,fresh:true};let t=e;if(t.regex||t.bigint)return p.unknown;let r=t.value;return r===null?p.null:r===void 0?p.undefined:typeof r=="string"||typeof r=="number"||typeof r=="boolean"?{t:"literal",value:r,fresh:true}:p.unknown}var pn=e=>{let n=cn(e);if(n!==null)return p.literal(n);let t=e.value;return t===null?p.null:typeof t=="string"||typeof t=="number"||typeof t=="boolean"?p.literal(t):Pn(e)},ks=e=>e.type==="ArrowFunctionExpression";function me(e){switch(e.type){case "ArrowFunctionExpression":{let n=e;return e.typeParameters?.length?false:n.params.some(t=>!Ao(t))?true:ar(e)===void 0&&n.body.type!=="BlockStatement"&&me(n.body)}case "ObjectExpression":return e.properties.some(n=>n.type==="Property"&&me(n.value));case "ArrayExpression":return e.elements.some(n=>!!n&&me(n));case "ConditionalExpression":{let n=e;return me(n.consequent)||me(n.alternate)}case "LogicalExpression":{let n=e;return (n.operator==="||"||n.operator==="??")&&(me(n.left)||me(n.right))}default:return false}}var Ao=e=>{let n=e.type==="RestElement"?e.argument:e.type==="AssignmentPattern"?e.left:e;return or(n)!==void 0},vs=e=>e.t==="apply"&&e.name==="Promise"&&e.args.length===1,wt=e=>vs(e)?e.args[0]:e,Et=e=>vs(e)?e:p.promise(e);function Bt(e){return e.t==="tuple"?true:e.t==="array"?Bt(e.items):e.t==="union"?e.of.some(Bt):false}var zu=e=>e?.t==="literal"?typeof e.value:void 0,Nt=(e,n)=>e.t===n||n==="boolean"&&e.t==="literal"&&typeof e.value=="boolean"||(e.t==="union"||e.t==="intersection")&&e.of.some(t=>Nt(t,n));function Jn(e,n){let t=zu(n);switch(e.t){case "literal":return t===void 0||typeof e.value===t;case "boolean":return t==="boolean";case "keyof":return t===void 0||t==="string";case "union":case "intersection":return e.of.some(r=>Jn(r,n));case "var":{let r=e.bound??p.unknown;return t!==void 0&&Nt(r,t)||t===void 0&&qu(r)?true:Jn(r,n)}default:return false}}var qu=e=>Nt(e,"string")||Nt(e,"number")||Nt(e,"boolean"),ce=(e,n)=>{let t=e;for(let r=0;r<50&&t.t==="apply";r++){let o=q(t,n);if(o===t||o.t==="apply"&&o.name===t.name)break;t=o;}return t};function Ns(e){let n=ar(e);if(!n)return null;let t=e.params.map((o,a)=>({name:ve(o)??`arg${a}`,type:or(o)??p.unknown})),r=sr(e);return {t:"fn",params:t,returns:e.async?Et(n):n,...r?{typeParams:r}:{}}}var Ye={then:{},else:{}};function ge(e){if(e.type==="Identifier")return e.name;if(e.type!=="MemberExpression")return null;let n=e;if(n.optional)return null;let t=ge(n.object);return t===null?null:!n.computed&&n.property.type==="Identifier"?`${t}.${n.property.name}`:n.computed&&n.property.type==="Literal"&&typeof n.property.value=="string"?`${t}.${n.property.value}`:null}var Pe=e=>e.includes("."),Rn=e=>`${e}#`,lr=e=>e.endsWith("#");function Cn(e,n,t){let r=oe(e,n);return r!==void 0?r:js(e,n,t)}var He=(e,n,t)=>{let r=Cn(e,n,t);return r===void 0?void 0:j(r,t)};function js(e,n,t){let r=n.lastIndexOf(".");if(r<0)return;let o=Cn(e,n.slice(0,r),t);if(o!==void 0)return fe(o,[n.slice(r+1)],t)?.type}function Gu(e,n){let t=n+".",r=new Set;for(let o=e;o;o=o.parent)for(let a of Object.keys(o.vars))(a.startsWith(t)||a===n)&&Pe(a)&&r.add(a);return [...r].sort((o,a)=>o.length-a.length)}function Oo(e,n,t){let r=Gu(e,n);if(!r.length)return e;let o={};for(let a of r)b(o,a,js(un(e,o),a,t)??p.unknown);return un(e,o)}var Rs=new Set(["string","number","boolean","undefined","function","object"]),Ju={string:p.string,number:p.number,boolean:p.boolean,undefined:p.undefined,object:p.union([p.nonPrimitive,p.null])};function Cs(e,n){switch(n){case "string":return e.t==="string"||e.t==="literal"&&typeof e.value=="string";case "number":return e.t==="number"||e.t==="literal"&&typeof e.value=="number";case "boolean":return e.t==="boolean"||e.t==="literal"&&typeof e.value=="boolean";case "undefined":return e.t==="undefined";case "function":return e.t==="fn"||e.t==="overload";case "object":return e.t==="object"||e.t==="array"||e.t==="tuple"||e.t==="null"||e.t==="nonPrimitive";default:return false}}var Xu=p.literal(true),Yu=p.literal(false),Fe=e=>(e.t==="union"?[...e.of]:[e]).flatMap(n=>n.t==="boolean"?[Xu,Yu]:[n]),Xn=(e,n)=>{let t=e.filter(r=>ir(r)||n(r));return t.length===e.length?null:E(t)},ir=e=>e.t==="unknown"||e.t==="any";function Bs(e,n){let t=e,r=n;if(e.type==="UnaryExpression"&&t.operator==="typeof"&&n.type==="Literal"&&typeof r.value=="string"){let o=ge(t.argument);if(o!==null)return {name:o,tag:r.value}}return null}function Qu(e,n,t){if(e.t==="unknown"||e.t==="any")return n;let o=Fe(e).filter(a=>x(a,n,t));return E(o)}function Hu(e,n,t){return e.t==="unknown"||e.t==="any"?null:Xn(Fe(e),r=>!x(r,n,t))}function Zu(e,n){if(!Rs.has(n))return null;let t=v(Ju,n),r=Fe(e),a=r.flatMap(s=>t&&ir(s)?Fe(t):[s]).filter(s=>Cs(s,n)||ir(s));return a.length===r.length&&a.every((s,i)=>s===r[i])?null:E(a)}function ec(e,n){if(!Rs.has(n))return null;let t=Fe(e),r=t.filter(o=>ir(o)||!Cs(o,n));return r.length===t.length?null:E(r)}function ws(e,n){let t=ge(e);if(t!==null&&Xe(n)){let r=pn(n);if(r.t==="literal"||r.t==="null")return {name:t,lit:r}}return null}function Es(e,n){if(e.type==="MemberExpression"&&!e.computed&&!e.optional&&e.property.type==="Identifier"&&Xe(n)){let t=ge(e.object),r=pn(n);if(t!==null&&(r.t==="literal"||r.t==="null"))return {name:t,prop:e.property.name,lit:r}}return null}function xs(e,n,t,r,o){let a=Fe(e),s=i=>i.t==="object"?te(i.props,n)?.type:void 0;return Xn(a,i=>{let l=s(i);return r?!!l&&x(t,l,o):!(l&&x(l,t,o))})}function Ts(e,n,t){let r=Fe(e),o=a=>a.t==="object"&&(pe(a.props,n)||!!a.index);return Xn(r,a=>t?o(a):!o(a))}function nc(e,n,t){return e.t==="unknown"||e.t==="any"||x(n,e,t)?n:null}function tc(e,n,t){return Xn(Fe(e),r=>!_e(r,n,t))}var Qe=1,jn=2,rc=e=>e.t==="object"&&!Object.keys(e.props).length&&!e.index;function xt(e,n){switch(e.t){case "string":case "number":case "boolean":case "any":case "unknown":return Qe|jn;case "literal":return e.value?Qe:jn;case "null":case "undefined":case "void":return jn;case "array":case "tuple":case "fn":case "overload":return Qe;case "object":return rc(e)?Qe|jn:Qe;case "nonPrimitive":return Qe;case "union":case "intersection":return e.of.reduce((t,r)=>t|xt(r,n),0);default:{let t=j(e,n);return t===e?Qe|jn:xt(t,n)}}}var Ms=(e,n)=>(xt(e,n)&jn)!==0,Is=(e,n)=>(xt(e,n)&Qe)!==0,As=(e,n,t)=>{let r=Fe(e),o=r.filter(a=>xt(a,t)&n);return o.length===r.length?null:E(o)},Os=e=>e.type==="Literal"&&e.value===null?"null":e.type==="Identifier"&&e.name==="undefined"?"undefined":null,Ae=(e,n,t)=>({then:n?{[e]:n}:{},else:t?{[e]:t}:{}}),oc=e=>e==="==="||e==="=="||e==="!=="||e==="!=";function Ne(e,n,t){if(e.type==="BinaryExpression"){let o=e;if(o.operator==="in"){let h=o.left,S=o.right,k=ge(S);if(h.type==="Literal"&&typeof h.value=="string"&&k!==null){let P=He(n,k,t);if(!P)return Ye;let R=String(h.value);return Ae(k,Ts(P,R,true),Ts(P,R,false))}return Ye}if(!oc(o.operator))return Ye;let a=o.operator==="!=="||o.operator==="!=",s=o.left,i=o.right,l=Bs(s,i)??Bs(i,s);if(l){let h=He(n,l.name,t);if(!h)return Ye;let S=Zu(h,l.tag),k=ec(h,l.tag);return a?Ae(l.name,k,S):Ae(l.name,S,k)}let u=Os(s),c=Os(i),d=u?i:c?s:null,f=d?ge(d):null;if((u||c)&&f!==null){let h=f,S=He(n,h,t);if(!S)return Ye;let P=o.operator==="=="||o.operator==="!="?["null","undefined"]:[u??c],R=Fe(S),D=Xn(R,M=>P.includes(M.t)),Y=Xn(R,M=>!P.includes(M.t));return a?Ae(h,Y,D):Ae(h,D,Y)}let y=ws(s,i)??ws(i,s),m=Es(s,i)??Es(i,s);if(y||m){let h=Ye;if(y){let S=He(n,y.name,t);if(S){let k=nc(S,y.lit,t),P=tc(S,y.lit,t);h=a?Ae(y.name,P,k):Ae(y.name,k,P);}}if(m){let S=He(n,m.name,t);if(S){let k=xs(S,m.prop,m.lit,true,t),P=xs(S,m.prop,m.lit,false,t),R=a?Ae(m.name,P,k):Ae(m.name,k,P);h={then:{...h.then,...R.then},else:{...h.else,...R.else}};}}return h}return Ye}if(e.type==="UnaryExpression"&&e.operator==="!"){let o=Ne(e.argument,n,t);return {then:o.else,else:o.then}}if(e.type==="CallExpression"){let o=sc(e,n,t);if(o)return o}if(e.type==="LogicalExpression"){let o=e;if(o.operator==="&&"){let a=Ne(o.left,n,t),s=Ne(o.right,X(n,a.then),t);return {then:{...a.then,...s.then},else:Ps(a.else,{...a.then,...s.else},n,t)}}if(o.operator==="||"){let a=Ne(o.left,n,t),s=Ne(o.right,X(n,a.else),t);return {then:Ps(a.then,{...a.else,...s.then},n,t),else:{...a.else,...s.else}}}return Ye}let r=ge(e);if(r!==null){let o=He(n,r,t);if(o)return Ae(r,As(o,Qe,t),As(o,jn,t))}return Ye}function Ps(e,n,t,r){let o={};for(let a of Object.keys(e)){let s=e[a],i=v(n,a)??He(t,a,r);if(!i)continue;let l=E([s,i]),u=He(t,a,r);u&&_e(l,u)||b(o,a,l);}return o}function ac(e,n){if(e.t==="fn")return e.guard??null;if(e.t==="overload"){for(let t of e.signatures)if(t.guard&&t.params.length===n)return t.guard}return null}function sc(e,n,t){let r=e.callee;if(r.type!=="Identifier")return null;let o=oe(n,r.name);if(!o)return null;let a=ac(o,e.arguments.length);if(!a)return null;let s=e.arguments[a.param],i=s?ge(s):null;if(i===null)return null;let l=He(n,i,t);return l?Ae(i,Qu(l,a.type,t),Hu(l,a.type,t)):null}var X=(e,n)=>Object.keys(n).length?un(e,n):e;function Oe(e){switch(e.type){case "ReturnStatement":case "ThrowStatement":return true;case "BlockStatement":return e.body.some(t=>Oe(t));case "IfStatement":{let n=e;return !!n.alternate&&Oe(n.consequent)&&Oe(n.alternate)}case "TryStatement":{let n=e;if(n.finalizer&&Oe(n.finalizer))return true;let t=!n.handler||Oe(n.handler.body);return Oe(n.block)&&t}default:return false}}function Zs(e,n){let t=J(),r=n({...e,sink:t});for(let o of t.all)e.sink.report(o);return {value:r,reported:t.all}}var pc=e=>{let n={};for(let t of Object.keys(e))b(n,t,{params:[],body:e[t]});return n};function dc(e){let n=[];return e.maxDepth!==void 0&&n.push(fo(e.maxDepth)),e.maxNodes!==void 0&&n.push(mo(e.maxNodes)),e.maxArgs!==void 0&&n.push(yo(e.maxArgs)),e.maxFunctionNesting!==void 0&&n.push(uo(e.maxFunctionNesting)),e.maxCallNesting!==void 0&&n.push(co(e.maxCallNesting)),e.memberDepth!==void 0&&n.push(po(e.memberDepth)),n}function fc(e,n){let{min:t,max:r}=sn(e);return n.length<t||n.length>r}var ei=(e,n,t)=>v(n,e)?.params??v(t,e);function jo(e){if(Array.isArray(e))return e.some(jo);if(!e||typeof e!="object")return false;let n=e;return n.t==="typeQuery"||Object.values(n).some(jo)}function ni(e,n,t){if(!e.some(a=>a.bound))return [];let r=Sn(e,n),o=[];return e.forEach((a,s)=>{if(!a.bound||s>=n.length)return;let i=B(a.bound,r);x(n[s],i,t)||o.push({param:a,arg:n[s],expected:i});}),o}function mc(e,n,t,r){let o=e.typeRefs;if(!o?.length)return [];let a=[];for(let s of o){let i={type:"Identifier",name:s.name,loc:s.loc},l=ei(s.name,n,t);if(!l){a.push(Z("unknown-name",i,`Cannot find name '${s.name}'.`));continue}if(!s.args)continue;let{min:u,max:c}=sn(l);if(s.args.length<u||s.args.length>c){a.push(g.genericTypeArity(i,s.name,u,c));continue}let d=r.get(s.args)??s.args;if(!jo(d))for(let f of ni(l,d,n))a.push(g.constraintViolation(i,f.arg,f.expected));}return a}function ti(e,n,t={}){let r=bc(e),o={...n.lib,...pc(n.types),...n.schemes,...r.schemes},{schemes:a,diagnostics:s}=Sc(r,o),{schemes:i,diagnostics:l}=gc(r,a),u=No(e),c={overlay:new WeakMap,sink:J(),env:n,schemes:i,nominals:hc(n.nominals??{},i),resolvedTypeArgs:new WeakMap,importNames:new Set,resolvedSchemes:new Set,invalidTargets:u.invalidTargets,evolving:new Set,fnDepth:{value:0},flow:new Map,stmtFlow:new WeakMap,invoked:new WeakSet,shadowed:null,shortCircuits:new WeakSet},d=t.profile?capability.compileProfile(t.profile):void 0;d&&xr(d.typeLimits);try{let f,y=kc(e,c);try{f=N(e,y,c);}catch(S){if(S instanceof Le||S instanceof Ln)c.sink.report(Z("too-deep",e,S.message));else if(S instanceof Ve)c.sink.report(Z("too-complex-union",e,S.message));else throw S;f=p.unknown;}let m=[];d&&m.push(...Qt(d)),t.limits&&m.push(...dc(t.limits)),t.resultType&&m.push(ho(t.resultType,i));let h=[...s,...l,...c.sink.all,...u.diagnostics,...mc(e,i,c.nominals,c.resolvedTypeArgs),...t.unused?vo(e,t.unused):[],...m.length?so(e,m,{overlay:c.overlay,schemes:i}):[]];return {type:f,overlay:c.overlay,diagnostics:h,schemes:c.schemes,nominals:c.nominals}}finally{d&&Tr();}}function yc(e,n,t={}){let r=ti(e,n,t),o={},a=new Map,s,i=u=>{let c=[];if(u.type==="VariableDeclaration")for(let d of u.declarations){let f=ve(d.id),y=r.overlay.get(d);f&&y&&(b(o,f,y.type),c.push(f));}else if(u.type==="FunctionDeclaration"){let d=u.id?.name,f=r.overlay.get(u);d&&f&&(b(o,d,f.type),c.push(d));}return c};for(let u of e.body??[])if(u.type==="VariableDeclaration"||u.type==="FunctionDeclaration")i(u);else if(u.type==="ExportNamedDeclaration"){let c=u;if(c.declaration)for(let d of i(c.declaration))a.set(d,d);else for(let d of c.specifiers)a.set(d.exported.name,d.local.name);}else if(u.type==="ExportDefaultDeclaration"){let c=r.overlay.get(u.declaration);s=c?c.type:p.unknown;}let l={};if(a.size||s!==void 0){for(let[u,c]of a){let d=v(o,c);d&&b(l,u,{type:d});}s!==void 0&&(l.default={type:s});}else for(let u in o)b(l,u,{type:o[u]});return {type:{t:"object",props:l},diagnostics:r.diagnostics}}function hc(e,n){let t=Object.keys(e);if(!t.some(o=>pe(n,o)))return e;let r={};for(let o of t){let a=v(e,o);a&&!pe(n,o)&&b(r,o,a);}return r}function Sc(e,n){let t=ys(e.schemes,n),r=Object.fromEntries(Object.entries(e.schemes).filter(([u])=>!t.has(u))),o=hs(r,n),a=new Set([...t,...o.aliases]);if(!a.size&&!o.properties.size)return {schemes:n,diagnostics:[]};let s={...n};for(let u of a){let c=v(e.schemes,u);c&&b(s,u,{params:c.params,body:p.any});}for(let[u,c]of o.properties){let d=v(e.schemes,u);a.has(u)||!d||b(s,u,{params:d.params,body:xo(d.body,c)});}let i=[],l=u=>{let c=v(e.ids,u);c&&i.push(g.circularTypeAlias(c,u));};for(let u of t)l(u);for(let[u,c]of o.properties){let d=v(e.props,u);for(let f of c){let y=(d&&v(d,f))??v(e.ids,u);y&&i.push(g.circularTypeAnnotation(y,f));}}for(let u of o.aliases)l(u);return {schemes:s,diagnostics:i}}var ri=(e,n)=>e.t==="index"&&Ce(le(e,n));function Fs(e,n,t,r){let o=a=>{if(Array.isArray(a)){let u=false,c=a.map(d=>{let f=o(d);return f!==d&&(u=true),f});return u?c:a}if(!a||typeof a!="object")return a;let s=a;if(ri(s,n)){let u=s;return r.push(g.noSuchMember(t,u.obj,oi(u.key))),p.any}let i=false,l={};for(let u of Object.keys(s)){let c=o(s[u]);c!==s[u]&&(i=true),b(l,u,c);}return i?l:s};return o(e)}var oi=e=>e.t==="literal"?String(e.value):C(e);function gc(e,n){let t=[],r={...n},o=false;for(let a of Object.keys(e.schemes)){let s=v(n,a),i=v(e.ids,a);if(!s||!i)continue;let l=v(e.props,a),u=(d,f)=>{if(l&&(d.t==="union"||d.t==="intersection")){let y=d.of.map(m=>u(m,f));return y.every((m,h)=>m===d.of[h])?d:{...d,of:y}}if(l&&d.t==="object"){let y={},m=false;for(let[h,S]of Object.entries(d.props)){let k=Fs(S.type,n,v(l,h)??f,t);k!==S.type&&(m=true),b(y,h,k===S.type?S:{...S,type:k});}return m?{...d,props:y}:d}return Fs(d,n,f,t)},c=u(s.body,i);c!==s.body&&(b(r,a,{...s,body:c}),o=true);}return {schemes:o?r:n,diagnostics:t}}var bc=e=>{let n={},t={},r={};return ast.walk(e,{TSTypeAliasDeclaration(o){let a=o;if(!(!a.id?.name||!a.typeAnnotation)&&(b(n,a.id.name,{params:sr(o)??[],body:a.typeAnnotation}),b(t,a.id.name,a.id),a.typeNode)){let s={};ai(a.typeNode,s),b(r,a.id.name,s);}}}),{schemes:n,ids:t,props:r}};function ai(e,n){if(e.type==="TSUnionType"||e.type==="TSIntersectionType")for(let t of e.types??[])ai(t,n);else if(e.type==="TSTypeLiteral")for(let t of e.members??[]){let r=t.key;t.type==="TSPropertySignature"&&typeof r=="string"&&!pe(n,r)&&b(n,r,t);}}function kc(e,n){let t=n.env.modules,r={};ast.walk(e,{ImportDeclaration(o){let a=o;if(a.importKind==="type")return;let s=a.source.value,i=typeof s=="string"&&t?v(t,s):void 0;if(!i){n.sink.report(g.unknownModule(a.source,String(s)));for(let l of a.specifiers)b(r,l.local.name,p.unknown);return}for(let l of a.specifiers){if(l.importKind==="type")continue;let u=l.local.name;if(fn(u,l.local,n),pe(r,u)){n.sink.report(g.cannotRedeclare(l.local,u));continue}if(l.type==="ImportNamespaceSpecifier"){b(r,u,i);continue}let c=l.type==="ImportSpecifier"?l.imported.name:"default",d=fe(i,[c],n.schemes);d?b(r,u,d.type):(n.sink.report(g.noSuchMember(l,i,c)),b(r,u,p.unknown));}}});for(let o in r)n.importNames.add(o);return Object.keys(r).length?un(n.env.scope,r):n.env.scope}var w=(e,n,t,r)=>(e.overlay.set(n,{type:t,scope:r}),t);function N(e,n,t,r){switch(Ar(),e.type){case ci:return e.schema;case "JSXElement":case "JSXFragment":return w(t,e,N(ast.desugarJSX(e,{emptyPropsAsObject:true}),n,t),n);case "Literal":return w(t,e,Pn(e),n);case "Placeholder":return w(t,e,p.any,n);case "Identifier":{let o=e.name,a=_o(o,t)??oe(n,o);return a!==void 0&&t.evolving.has(o)&&tp(e,o,n,t)?w(t,e,p.any,n):a===void 0?o==="undefined"?w(t,e,p.undefined,n):(t.sink.report(g.unknownName(e,o)),w(t,e,p.any,n)):w(t,e,a,n)}case "MemberExpression":return w(t,e,si(e,n,t),n);case "CallExpression":return w(t,e,Pc(e,n,t,r),n);case "ArrowFunctionExpression":return Wo(e,n,t);case "FunctionDeclaration":return t.sink.report(g.unsupported(e,"function declaration (use 'const fn = () => \u2026')")),w(t,e,p.unknown,n);case "FunctionExpression":return t.sink.report(g.unsupported(e,"anonymous function (use an arrow)")),w(t,e,p.unknown,n);case "ThisExpression":return t.sink.report(g.unsupported(e,"'this'")),w(t,e,p.unknown,n);case "BlockStatement":return w(t,e,xi(e,n,t),n);case "ReturnStatement":{let o=e.argument;return w(t,e,o?N(o,n,t):p.unknown,n)}case "IfStatement":return je(e,n,t),t.overlay.get(e)?.type??p.unknown;case "ForStatement":case "WhileStatement":case "DoWhileStatement":case "ForOfStatement":case "ForInStatement":case "BreakStatement":case "ContinueStatement":case "ThrowStatement":case "TryStatement":case "SwitchStatement":return je(e,n,t),t.overlay.get(e)?.type??p.unknown;case "AssignmentExpression":{let o=e,a=o.left;if(o.operator==="="&&(a.type==="ArrayExpression"||a.type==="ObjectExpression")){let y=N(o.right,n,t);return Mn(a,y,n,t),w(t,e,y,n)}let s=o.operator!=="=",i=s?Gs(a,n,t):zo(a,n,t);s&&a.type==="MemberExpression"&&mr(a,t,"write")&&t.invalidTargets.add(a);let l=ge(a),u=t.invalidTargets.has(a);if(!s){let y=l!==null&&t.evolving.has(l),m=o.right,h=y||u?N(m,n,t):ye(m,i,n,t,true),S=Xe(m)?w(t,m,Pn(m),n):h;return l!==null&&pr(l,n,t)?Re(l,dr(l,false,S,i,n,t),t):l!==null&&Pe(l)&&Re(l,i,t),w(t,e,S,n)}let c=t.sink.reported,d=sp(o,u?p.any:i,n,t),f=t.sink.reported>c;return !u&&!f&&!x(d,i,t.schemes)&&t.sink.report(g.notAssignable(e,d,i,t.schemes)),l!==null&&pr(l,n,t)?Re(l,dr(l,true,d,i,n,t),t):l!==null&&Pe(l)&&Re(l,We(i),t),w(t,e,d,n)}case "UpdateExpression":{let a=e.argument,s=Gs(a,n,t);if(a.type==="MemberExpression"&&mr(a,t,"write")&&t.invalidTargets.add(a),!t.invalidTargets.has(a)){let l=Qn(s,a,t);Tt(l.type,t.schemes)||t.sink.report(g.arithmeticOperand(a,"operand"));}let i=ge(a);return i!==null&&pr(i,n,t)?Re(i,dr(i,true,s,s,n,t),t):i!==null&&Pe(i)&&Re(i,We(s),t),w(t,e,p.number,n)}case "ExpressionStatement":return w(t,e,N(e.expression,n,t),n);case "VariableDeclaration":return Sr(e,n,t),w(t,e,p.unknown,n);case "TSTypeAliasDeclaration":{let o=e.id?.name,a=o?v(t.schemes,o):void 0;return w(t,e,a?Vc(a.body,n,t,e,a.params.length>0):p.unknown,n)}case "BinaryExpression":return w(t,e,Sp(e,n,t),n);case "LogicalExpression":{let o=e,a=N(o.left,n,t),s=o.operator==="??"?void 0:Ne(o.left,n,t.schemes),i=X(n,s?o.operator==="&&"?s.then:s.else:{}),{value:l,effect:u}=Po(t,()=>N(o.right,i,t));return u.size&&qs([{effect:u,scope:i},{scope:X(n,s?o.operator==="&&"?s.else:s.then:{})}],t),w(t,e,kp(o.operator,a,l,t.schemes),n)}case "UnaryExpression":return w(t,e,Np(e,n,t),n);case "ConditionalExpression":{let o=e;N(o.test,n,t);let a=Ne(o.test,n,t.schemes),s=X(n,a.then),i=X(n,a.else),l=Po(t,()=>N(o.consequent,s,t)),u=Po(t,()=>N(o.alternate,i,t));return (l.effect.size||u.effect.size)&&qs([{effect:l.effect,scope:s},{effect:u.effect,scope:i}],t),w(t,e,l.value===Ke&&u.value===Ke?Ke:E([l.value,u.value]),n)}case "ObjectExpression":return w(t,e,Bp(e,n,t),n);case "ArrayExpression":return w(t,e,Gi(e,n,t),n);case "TemplateLiteral":{if(cn(e)!==null)return w(t,e,Pn(e),n);for(let o of e.expressions){let a=N(o,n,t);qi(a,t.schemes)||t.sink.report(g.notTextConvertible(o,a));}return w(t,e,p.string,n)}case "AwaitExpression":{let o=e.argument,a=o?N(o,n,t):p.unknown;return w(t,e,wt(a),n)}case "Program":{let o=yr(e.body,n,t,new Set(t.importNames)).scope;return w(t,e,p.unknown,o)}case "JsonExpression":return w(t,e,Do(e.body,n,t,e),n);case "ChainExpression":{let o=e.expression,a=N(o,n,t);return w(t,e,vc(o,t)?E([a,p.undefined]):a,n)}case "TSAsExpression":{let o=e,a=N(o.expression,n,t),s=et(o.typeAnnotation,n,t,e);return dt(a,s,t.schemes)||t.sink.report(g.castUnsound(e,a,s)),w(t,e,s,n)}default:return t.sink.report(g.unsupported(e,`'${e.type}'`)),w(t,e,p.unknown,n)}}function si(e,n,t,r=false){let o=N(e.object,n,t),a=Bc(e,o,n,t),s=r?null:ge(e);if(s!==null&&Pe(s)){let i=_o(s,t)??oe(n,s);if(i!==void 0&&x(i,a,t.schemes))return i}return a}function vc(e,n){for(let t=e;t;){if(n.shortCircuits.has(t))return true;if(t.type==="MemberExpression")t=t.object;else if(t.type==="CallExpression")t=t.callee;else return false}return false}var Nc=e=>e.t==="unknown";function gr(e,n,t){return Nc(e)?(t.sink.report(g.unknownValue(n)),true):false}function Ot(e){let n=Zn(e),t=n.some(o=>o.t==="null"),r=n.some(o=>o.t==="undefined");return t||r?{null:t,undefined:r}:null}function br(e){let n=Zn(e).filter(t=>t.t!=="null"&&t.t!=="undefined");return n.length===Zn(e).length||n.length===0?e:E(n)}function Qn(e,n,t){if(gr(e,n,t))return {type:p.any,error:true};let r=Ot(e);return r?(t.sink.report(g.possiblyNullish(n,r)),Zn(e).filter(a=>a.t!=="null"&&a.t!=="undefined").length===0?{type:p.any,error:true}:{type:br(e),error:false}):{type:e,error:false}}var ii=e=>e.t==="var"||e.t==="keyof"||(e.t==="union"||e.t==="intersection")&&e.of.some(ii);function Bc(e,n,t,r){if(!e.optional&&gr(n,e.object,r))return w(r,e,p.any,t);let o=e.optional?null:Ot(n);o&&r.sink.report(g.possiblyNullish(e.object,o)),e.optional&&Ot(n)&&r.shortCircuits.add(e);let a=e.optional||o?br(n):n;if(e.computed){let l=N(e.property,t,r);if(l.t==="literal"&&typeof l.value!="boolean"){let c=String(l.value),d=fe(a,[c],r.schemes);return d?d.type:($s(e,a,c,r),p.any)}let u=le(p.index(a,l),r.schemes);if(ii(l)||u.t!=="index"&&!Ce(u)&&l.t!=="any")return u;if(l.t==="any"){let c=le(p.index(a,p.string),r.schemes);if(c.t!=="index"&&!Ce(c))return c}return li(l)?(wc(e,a,l,r),p.any):p.unknown}let s=e.property.name,i=fe(a,[s],r.schemes);return i?i.type:($s(e,a,s,r),p.any)}var li=e=>e.t==="any"||e.t==="string"||e.t==="number"||e.t==="literal"&&typeof e.value!="boolean"||e.t==="union"&&e.of.length>0&&e.of.every(li);function wc(e,n,t,r){let o=j(n,r.schemes),a=o.t==="array"||o.t==="tuple"||o.t==="object"&&o.index?.key==="number";r.sink.report(a?g.implicitAny.indexNotNumber(e.property):g.implicitAny.index(e,t,o.t==="var"&&!o.bound?p.unknown:n));}function $s(e,n,t,r){let o=H(n,r.schemes)?q(n,r.schemes):n;o.t==="object"||o.t==="array"||o.t==="tuple"||o.t==="union"?r.sink.report(g.noSuchMember(e,n,t)):o.t!=="any"&&o.t!=="unknown"&&r.sink.report(g.notObject(e,n));}function Ec(e,n,t,r){let o=e.arguments[0];if(!o){r.sink.report(g.missingArgument(e,"schema",p.unknown));return}if(o.type!=="Identifier"){r.sink.report(g.asserterNeedsName(o,n));return}let a=o.name,s=oe(t,a),i=v(r.schemes,a);if(s===void 0){r.sink.report(i?g.typeAsValue(o,a):g.unknownName(o,a));return}if(!i||i.params.length>0){r.sink.report(g.notASchema(o,a));return}if(!(ui(a,r)&&!xc(t,a)))return r.overlay.set(o,{type:i.body,scope:t}),i.body}function ui(e,n){if(!n.env.asserters?.size)return false;let t=v(n.schemes,e);return t!==void 0&&t.params.length===0&&oe(n.env.scope,e)!==void 0}function xc(e,n){for(let t=e;t;t=t.parent)if(Object.prototype.hasOwnProperty.call(t.vars,n))return t.parent===null;return false}function fn(e,n,t){ui(e,t)&&t.sink.report(g.shadowsSchema(n,e));}function Fo(e,n){let t=ce(e,n);return (t.t==="fn"?t:t.t==="overload"?t.signatures[0]:void 0)?.params[0]?.type}function Tc(e,n){let t=oe(e.scope,n);if(!t)return;let r=Fo(t,e.schemes);return r?ce(r,e.schemes):void 0}function Ac(e,n,t,r){let o=Fo(N(n[0],t,r),r.schemes),a=n.length>1?N(n[1],t,r):p.undefined;if(o){let s=lt(a,o,r.schemes);s.length&&r.sink.report(g.propsMismatch(n[1]??e,o,ct(s)));}return w(r,e,p.boolean,t)}var ci="TSLiteSyntheticArg",Oc=e=>({type:ci,schema:e});function pi(e,n,t){if(!e.some(a=>a.type==="SpreadElement"))return {nodes:[...e],spread:null};let r=[],o=null;for(let a of e){if(a.type!=="SpreadElement"){r.push(a);continue}let s=a.argument;if(s.type==="ArrayExpression"&&s.elements.every(l=>l&&l.type!=="SpreadElement")){for(let l of s.elements)r.push(l);continue}let i=ce(N(s,n,t),t.schemes);if(i.t==="tuple")for(let l of i.elements)r.push(Oc(l));else o={elem:Go(i,s,t),node:a};}return {nodes:r,spread:o}}function Pc(e,n,t,r){let o=t.inference||t.skipContextSensitive?{...t,inference:void 0,skipContextSensitive:void 0}:t,a=e.arguments,s=To(e.callee);if(s){let m=o.env.accessors?v(o.env.accessors,s):void 0;if(m){let h=bs(a);if(h){let S=fe(m,h,o.schemes);return S?S.type:(o.sink.report(g.noSuchMember(e,m,h.join("."))),p.unknown)}return a.forEach(S=>N(S,n,o)),p.unknown}}if(s&&o.env.asserters?.has(s)){let m=Ec(e,s,n,o);a.length<2&&a.length>0&&o.sink.report(g.missingArgument(e,"value",p.unknown));for(let h=1;h<a.length;h++){let S=N(a[h],n,o);h===1&&m&&K(S).size===0&&!dt(S,m,o.schemes)&&o.sink.report(g.unprovableValue(a[h],S,m,e.arguments[0].name));}return m??p.unknown}if(s&&o.env.matchers?.has(s))return Ac(e,a,n,o);e.callee.type==="ArrowFunctionExpression"&&o.invoked.add(e.callee);let i=j(N(e.callee,n,o),o.schemes);if(!e.optional&&gr(i,e.callee,o))return w(o,e,p.any,n);let l=Ot(i);l&&(e.optional?o.shortCircuits.add(e):o.sink.report(g.possiblyNullish(e.callee,l,true)));let u=l?j(br(i),o.schemes):i;if(u.t==="any")return a.forEach(m=>N(m,n,o)),p.any;if(u.t==="overload")return Cc(e,u,n,o,r);if(u.t!=="fn")return a.forEach(m=>N(m,n,o)),o.sink.report(g.notCallable(e,u)),p.unknown;let c=pi(a,n,o),d=c.nodes.map(m=>di(m,n,o)),f=mi(e),y=!f||yi(u,f.length);return y||o.sink.report(hi(e,[u],f.length)),Hn(e,u,c.nodes,d,n,o,c.spread,r,y?f:void 0)}function di(e,n,t){if(me(e))return N(e,n,{...t,skipContextSensitive:true});if(e.type!=="CallExpression")return N(e,n,t);let r=J(),o=N(e,n,{...t,sink:r});return r.hasErrors()?p.any:(r.all.forEach(a=>t.sink.report(a)),o)}function Hn(e,n,t,r,o,a,s=null,i,l){let u=T=>{if(!i)return T;let F=B(n.returns,T);if(F.t==="fn"&&i.t==="fn"){let $=T,se=Math.min(F.params.length,i.params.length);for(let Be=0;Be<se;Be++)$=W(F.params[Be].type,i.params[Be].type,$)??$;return W(F.returns,i.returns,$)??$}return W(F,i,T)??T},c,d=a.sink;if(!s){let T=gi(e,n,r.length,t);T&&(a.sink.report(T),c=J(),a={...a,sink:c});}let f=l?Wc(e,n,l,a):void 0,y=f??cr(n,u(st(n,r).bindings)),m=f||!i?{}:cr(n,u({})),h=T=>vn(B(T,jc(n,T,y,a.schemes))),S={returnMapper:m,nonFixing:y,outer:Ls(n,y),fixing:h},k=new Set((n.typeParams??[]).map(T=>T.name)),P=T=>[...K(T)].some(F=>k.has(F)),R=new Set,D=[];t.forEach((T,F)=>{if(ks(T)){let $=n.params[F]?.type??p.any,se=Ko($.t==="var"?B($,y):$,T,a.schemes);r[F]=Wo(T,o,a,se&&h(se));}else if(T.type==="CallExpression"&&r[F].t==="any")r[F]=N(T,o,a,B(n.params[F]?.type??p.unknown,Ls(n,y)));else if(Xe(T)){let $=n.params[F]?.type??p.unknown,se=pn(T);Jn(B($,m),se)&&(r[F]=w(a,T,se,o));}else if(T.type==="ArrayExpression"||T.type==="ObjectExpression"||T.type==="ConditionalExpression"||T.type==="LogicalExpression"&&me(T)){let $=n.params[F]?.type??p.unknown,se=me(T),Be=B($,m);if(T.type==="ArrayExpression"&&Bt(Be)){r[F]=Xo(T,Be,o,{...a,inference:S}),D.push(F);return}let tn=$.t==="var"&&!$.bound;if(se?tn||!n.params[F]:tn||!Xi(Be,a.schemes)){se&&(r[F]=N(T,o,a));return}R.add(F),P($)&&(r[F]=ye(T,$,o,{...a,sink:J(),inference:S},true)),D.push(F);}});let Y=f||Ro(n,cr(n,u(st(n,r).bindings)),a.schemes);f&&Rc(e,n,Y,a);for(let T of D)r[T]=Ep(t[T],B(n.params[T].type,Y),o,a,false);_c(e,n,r,Y,a,t,s),t.forEach((T,F)=>{let $=n.params[F];T.type==="ObjectExpression"&&$&&!$.variadic&&!R.has(F)&&Io(T,B($.type,Y),a);});let M=B(n.returns,Ro(n,Y,a.schemes)),ne=M.t==="union"?E(M.of):M;if(c)for(let T of c.all)T.kind!=="type"&&d.report(T);return _r(Bn(ne,a.schemes,void 0,0,K(ne)))}function cr(e,n){let t=e.typeParams;if(!t?.length)return {};let r={};for(let o of t){let a=v(n,o.name);a&&b(r,o.name,a);}return r}var Ro=(e,n,t)=>Vt(e.typeParams??[],n,t);function jc(e,n,t,r){if(n.t!=="fn"||!e.typeParams?.some(i=>!v(t,i.name)))return t;let o=new Set;for(let i of n.params)for(let l of K(i.type))o.add(l);let a=Ro(e,t,r),s={...t};for(let i of e.typeParams){if(v(t,i.name)||!o.has(i.name))continue;let l=v(a,i.name);l&&b(s,i.name,l);}return s}function Ls(e,n){if(!e.typeParams?.some(r=>!v(n,r.name)))return n;let t={...n};for(let r of e.typeParams)v(n,r.name)||b(t,r.name,Ke);return t}function Rc(e,n,t,r){for(let o of n.typeParams??[]){let a=v(t,o.name);if(!o.bound||!a)continue;let s=B(o.bound,t);x(a,s,r.schemes)||r.sink.report(g.constraintViolation(e,a,s));}}function Cc(e,n,t,r,o){let a=pi(e.arguments,t,r),s=a.nodes,i=s.map(c=>di(c,t,r)),l=mi(e),u=l?n.signatures.filter(c=>yi(c,l.length)):n.signatures;return l&&!u.length?(r.sink.report(hi(e,n.signatures,l.length)),Us(e,n.signatures,a,s,i,t,r,o,void 0)):Us(e,u,a,s,i,t,r,o,l)}function Mc(e,n,t,r,o,a,s){if(!n.length)return e;let l=n.map(d=>{let f=J();return Hn(e,d,t,[...r],o,{...a,sink:f},s),f.all.filter(y=>y.kind==="type"&&y.severity==="error")}).filter(d=>d.length>0);if(!l.length)return e;let u=l.length===1||l.length>3?l[l.length-1]:l.some(d=>d.length>1)?l.reduce((d,f)=>f.length<=d.length?f:d):l.flat(),c=u[0].node;return u.every(d=>d.node===c)?c:e}function Vs(e,n,t,r,o,a){if(!n.length)return p.unknown;let s=fi(n,t.length);return s.combined?s.sig.returns:Hn(e,s.sig,t,[...r],o,{...a,sink:J()},null)}function fi(e,n){if(e.length===1||e.some(l=>l.typeParams?.length))return {sig:Dc(e,n),combined:false};let t=l=>l.params.length-(l.params[l.params.length-1]?.variadic?1:0),r=l=>{let u=l.params.findIndex(c=>c.optional||c.variadic);return u<0?l.params.length:u},o=Math.min(...e.map(r)),a=Math.max(...e.map(t)),s=[];for(let l=0;l<a;l++){let u=e.map(d=>De(d,l)).filter(d=>d!==void 0),c=e.find(d=>l<t(d))?.params[l].name??`arg${l}`;s.push({name:c,type:E(u),...l>=o?{optional:true}:{}});}let i=e.filter(l=>l.params[l.params.length-1]?.variadic).map(l=>De(l,t(l))).filter(l=>l!==void 0);return i.length&&s.push({name:"args",type:p.array(E(i)),variadic:true}),{sig:p.fn(s,p.intersection(e.map(l=>l.returns))),combined:true}}function Ic(e,n,t,r,o,a,s){if(!t.some(me))return {types:r,inner:[]};let i=J(),l=[...r];return Hn(e,n,t,l,o,{...a,sink:i},s),{types:l,inner:i.all.filter(u=>u.kind!=="type")}}function Dc(e,n){let t=e[0],r=-1;for(let o of e){let a=o.params.length;if(o.params.some(s=>s.variadic)||a>=n)return o;a>r&&(r=a,t=o);}return t}function Us(e,n,t,r,o,a,s,i,l){let u={t:"overload",signatures:n},c=S=>t.spread?Kc(S,r.length):Si(S,r.length),d=u.signatures.filter(c);if(d.length>1)for(let S of d){let k=J(),P=Hn(e,S,r,[...o],a,{...s,sink:k},t.spread,i,l);if(!k.all.some(R=>R.kind==="type"&&R.severity==="error"))return k.all.forEach(R=>s.sink.report(R)),P}let f=d.length>1?void 0:u.signatures.find(S=>c(S)&&Ws(S,o,s));if(f||(d.length===1?f=d[0]:u.signatures.length===1&&(f=u.signatures[0])),!f){let S=t.spread?null:gi(e,u.signatures,r.length,r),k=d.length===1||d.length>3?d[d.length-1]:d[0],P=Ic(e,S||!k?fi(u.signatures,r.length).sig:d.find(R=>Ws(R,o,s))??k,r,o,a,s,t.spread);s.sink.report(S??g.noMatchingOverload(Mc(e,d,r,o,a,s,t.spread),u,P.types));for(let R of P.inner)s.sink.report(R);return Vs(e,u.signatures,r,o,a,s)}let{value:y,reported:m}=Zs(s,S=>Hn(e,f,r,o,a,S,t.spread,i,l)),h=m.some(S=>S.kind==="type"&&S.severity==="error");return u.signatures.length>1&&h?Vs(e,u.signatures,r,o,a,s):y}function Fc(e,n,t,r){let o=oe(n,e[0]);if(o===void 0)return t.sink.report(g.unknownName(r,e[0])),p.any;let a=e.slice(1),s=a.length?fe(o,a,t.schemes)?.type:o;return s?s.t==="literal"?p.literal(s.value):s:(t.sink.report(g.noSuchMember(r,o,a.join("."))),p.any)}function et(e,n,t,r){let o=a=>{if(Array.isArray(a)){let u=false,c=a.map(d=>{let f=o(d);return f!==d&&(u=true),f});return u?c:a}if(!a||typeof a!="object")return a;let s=a;if(s.t==="typeQuery")return Fc(s.path,n,t,r);if(s.t==="apply"&&typeof s.name=="string"){let u=Array.isArray(s.args)?s.args:void 0,c=u&&o(u);u&&c&&t.resolvedTypeArgs.set(u,c),Lc(s.name,n,t,r);let d=ei(s.name,t.schemes,t.nominals);if(!d)return p.any;if(c&&fc(d,c))return p.any;if(c?.length===1&&$c(s.name,t.nominals))return p.array(c[0],s.name==="ReadonlyArray");if(c&&c!==u){let f={};for(let y of Object.keys(s))b(f,y,y==="args"?c:s[y]);return f}return s}if(ri(s,t.schemes)){let u=s;return t.sink.report(g.noSuchMember(r,u.obj,oi(u.key))),p.any}if(s.t==="union"&&Array.isArray(s.of)){let u=s.of,c=u.map(y=>o(y)),d=p.union(c);return d.t==="union"&&d.of.length===u.length&&d.of.every((y,m)=>y===u[m])?s:d}if(s.t==="intersection"&&Array.isArray(s.of)){let u=s.of,c=u.map(y=>o(y)),d=p.intersection(c);return d.t==="intersection"&&d.of.length===u.length&&d.of.every((y,m)=>y===u[m])?s:d}if(s.t==="tuple"&&Array.isArray(s.elements)){let u=s.elements,c=u.map(y=>o(y)),d=p.tuple(c,s.flags,s.readonly);return c.every((y,m)=>y===u[m])&&d.elements.every((y,m)=>y===c[m])?s:d}let i=false,l={};for(let u of Object.keys(s)){let c=o(s[u]);c!==s[u]&&(i=true),b(l,u,c);}return i?l:s};return o(e)}var $c=(e,n)=>(e==="Array"||e==="ReadonlyArray")&&v(n,e)===v(Xt,e);function Lc(e,n,t,r){if(t.resolvedSchemes.has(e))return;let o=v(t.schemes,e);if(!o)return;t.resolvedSchemes.add(e);let a=et(o.body,n,t,r);a!==o.body&&b(t.schemes,e,{...o,body:a});}function Vc(e,n,t,r,o){let a={...t,sink:J(),resolvedTypeArgs:new WeakMap,resolvedSchemes:new Set(Object.keys(t.schemes))},s=et(e,n,a,r);return a.sink.hasErrors()?e:o?s:Bn(s,t.schemes)}var At=(e,n,t)=>{let r=or(e);return r===void 0?r:et(r,n,t,e)},Uc=(e,n,t)=>{let r=ar(e);return r===void 0?r:et(r,n,t,e)},mi=e=>{let n=e.typeArguments;return n?.length?n:void 0},yi=(e,n)=>{let{min:t,max:r}=sn(e.typeParams??[]);return n>=t&&n<=r};function hi(e,n,t){if(n.length===1){let{min:a,max:s}=sn(n[0].typeParams??[]);return g.wrongTypeArgumentCount(e,a<s?`${a}-${s}`:a,t)}let r=-1/0,o=1/0;for(let a of n){let{min:s,max:i}=sn(a.typeParams??[]);s>t?o=Math.min(o,s):i<t&&(r=Math.max(r,i));}return r!==-1/0&&o!==1/0?g.noOverloadTypeArgumentCount(e,t,r,o):g.wrongTypeArgumentCount(e,r===-1/0?o:r,t)}function Wc(e,n,t,r){let o=n.typeParams??[],a=Sn(o,t.slice(0,o.length));for(let s of ni(o,t,r.schemes))r.sink.report(g.constraintViolation(e,s.arg,s.expected));return a}function Kc(e,n){let t=0,r=false;for(let o of e.params)o.variadic?r=true:o.optional||t++;return n>=t&&(r||n<e.params.length)}function Si(e,n){let t=0;for(let r of e.params){if(r.variadic)return n>=t;r.optional||t++;}return n>=t&&n<=e.params.length}function gi(e,n,t,r){let o=Array.isArray(n)?n:[n];if(!o.length||o.some(u=>Si(u,t)))return null;let a=o.some(u=>u.params.some(c=>c.variadic)),s=Math.min(...o.map(u=>u.params.filter(c=>!c.optional&&!c.variadic).length)),i=Math.max(...o.map(u=>u.params.length)),l=a?`${s}`:s<i?`${s}-${i}`:`${s}`;return t<s?g.argumentArity(e,l,t,"missing",a):g.argumentArity(r[i]??e,l,t,"excess",a)}function Ws(e,n,t){let r=cr(e,st(e,n).bindings);for(let o=0;o<e.params.length;o++){let a=e.params[o];if(a.variadic){let s=B(a.type,r),i=s.t==="array"?s.items:p.unknown;for(let l=o;l<n.length;l++)if(!x(n[l],i,t.schemes))return false;return true}if(o>=n.length){if(!a.optional)return false;continue}if(!x(n[o],B(a.type,r),t.schemes))return false}return true}function _c(e,n,t,r,o,a=e.arguments??[],s=null){let i=u=>a[u]??e;for(let u=0;u<n.params.length;u++){let c=n.params[u];if(c.variadic){let f=B(c.type,r),y=f.t==="array"?f.items:p.unknown;for(let m=u;m<t.length;m++)x(t[m],y,o.schemes)||o.sink.report(g.notAssignable(i(m),t[m],y,o.schemes));break}let d=B(c.type,r);u>=t.length||x(t[u],d,o.schemes)||o.sink.report(g.notAssignable(i(u),t[u],d,o.schemes));}let l=n.params.find(u=>u.variadic);if(s){let u=t.length,c=n.params.filter(d=>!d.optional&&!d.variadic).length;if(!(u>=c&&(l||u<n.params.length))){o.sink.report(g.spreadArgument(s.node));return}if(l){let d=B(l.type,r),f=d.t==="array"?d.items:p.unknown;x(s.elem,f,o.schemes)||o.sink.report(g.notAssignable(s.node,s.elem,f,o.schemes));}return}}function Pt(e,n,t){if(e.t==="object"){let r=te(e.props,n);return r?r.optional?ie(r.type):r.type:e.index?.key==="string"?e.index.value:void 0}if(e.t==="intersection"){let r=e.of.map(o=>Pt(j(o,t),n,t)).filter(o=>o!==void 0);return r.length===0?void 0:r.length===1?r[0]:L({t:"intersection",of:r})}if(e.t==="union")return bi(e.of,n,t);if($o(e)){let r=e.over.t==="keyof"?p.union([p.string,p.number]):j(e.over,t);if(!x(p.literal(n),r,t))return;let o={};return b(o,e.key,p.literal(n)),B(e.body,o)}}var $o=e=>e.t==="mapped"&&K(e.over).size>0;function bi(e,n,t){let r=e.map(o=>Pt(j(o,t),n,t)).filter(o=>o!==void 0);return r.length?E(r):void 0}function Co(e,n,t){let r=j(e,t);if(r.t==="object")return n&&r.index?.key==="number"||r.index?.key==="string"?r.index.value:void 0;if(r.t==="union"||r.t==="intersection"){let o=r.of.map(a=>Co(a,n,t)).filter(a=>a!==void 0);return o.length?r.t==="union"?E(o):p.intersection(o):void 0}}function zc(e,n,t){if(!e.computed){let l=Je(e);return {name:l,bindable:l!==null,numeric:l!==null&&an(l)}}let r=e.key,o=ce(N(r,n,t),t.schemes),a=o.t==="literal"&&(typeof o.value=="string"||typeof o.value=="number")?String(o.value):null,s=o.t==="number"||o.t==="literal"&&typeof o.value=="number",i=a!==null&&(Lo(r)||Vo(r));return {name:a,bindable:i,numeric:s}}function kr(e){if(!e.computed)return Je(e);let n=e.key;if(!Lo(n))return null;let t=cn(n);if(t!==null)return t;if(n.type==="Literal")return String(n.value);let r=n;return `${r.operator}${String(r.argument.value)}`}function ki(e,n){let t=new Set,r=new Set;for(let o of e.properties){if(o.type==="SpreadElement")continue;let a=o,s=a.key;if(!a.computed&&s.type==="Identifier"){let l=s.name;t.has(l)?n.sink.report(g.duplicateKey.strict(s)):t.add(l);}let i=qc(a);i!==null&&(r.has(i)?n.sink.report(g.duplicateKey.identifier(a.computed?a:s,Gc(a))):r.add(i));}}function vi(e,n,t,r){let o=n.key;if(t===null||!n.computed||Lo(o)||!Vo(o))return;let a=e.properties.find(s=>s.type==="Property"&&kr(s)===t);a&&(r.sink.report(g.duplicateKey.alsoDeclared(a.computed?a:a.key,t)),r.sink.report(g.duplicateKey.lateBound(n,t)));}function qc(e){return e.computed?e.key.type==="UnaryExpression"?null:kr(e):Je(e)}function Gc(e){let n=e.key;if(e.computed)return _i(n,kr(e)??"");if(n.type==="Identifier")return n.name;let t=n.value;return typeof t=="string"?JSON.stringify(t):String(t)}var Lo=e=>{if(cn(e)!==null)return true;if(e.type==="Literal"){let n=e.value;return typeof n=="string"||typeof n=="number"}if(e.type==="UnaryExpression"){let n=e;return (n.operator==="-"||n.operator==="+")&&n.argument.type==="Literal"&&typeof n.argument.value=="number"}return false},Vo=e=>e.type==="Identifier"||e.type==="MemberExpression"&&!e.computed&&!e.optional&&Vo(e.object),Uo=e=>e.t==="literal"||e.t==="null"||e.t==="undefined"||e.t==="boolean"||e.t==="union"&&e.of.every(Uo),Ks=new WeakMap;function Jc(e,n,t){let r=Ks.get(t);if(r)return r;let o=new Set;for(let s of e)if(s.t==="object")for(let i of Object.keys(s.props))o.add(i);let a=new Set;for(let s of o){let l=e.map(c=>Pt(c,s,n)).filter(c=>c!==void 0);if(!l.some(Uo))continue;l.length===e.length&&l.every(c=>_e(c,l[0]))||a.add(s);}return Ks.set(t,a),a}var Ni=e=>e.type==="Literal"||e.type==="Identifier"||e.type==="TemplateLiteral"||e.type==="MemberExpression"&&!e.computed&&Ni(e.object);function Bi(e,n,t,r,o){let a=Jc(n,r,o),s=new Set;if(!a.size)return {chosen:n,ignored:s};let i=[];for(let c of e.properties){if(c.type!=="Property")continue;let d=c,f=kr(d);if(f===null||!a.has(f)||!Ni(d.value))continue;let y=t(d);y&&Uo(y)&&i.push([f,y]);}let l=n.map(()=>1);for(let[c,d]of i){let f=false;n.forEach((y,m)=>{if(l[m]!==1)return;let h=Pt(y,c,r);h!==void 0&&(x(d,h,r)?f=true:l[m]=2);}),n.forEach((y,m)=>{l[m]===2&&(l[m]=f?0:1);}),f||s.add(c);}let u=n.filter((c,d)=>l[d]===1);return {chosen:u.length?u:n,ignored:s}}function _s(e,n,t,r,o,a,s=false){let i={},l={};ki(e,o);let u=new Map;for(let[c,d]of e.properties.entries()){let f=d;if(f.type==="SpreadElement"){let R=N(f.argument,r,o);if(Fi(e,c,R,r,o))return {checked:i,narrowed:l,refused:true};$i(u,R,f,o);let D=j(R,o.schemes);if(D.t==="object")for(let[Y,M]of Object.entries(D.props))b(i,Y,M),b(l,Y,M);continue}let y=f,{name:m,bindable:h,numeric:S}=zc(y,r,o);vi(e,y,m,o);let k=h?n(m):t(S),P=k?ye(y.value,k,r,o,a):xe(N(y.value,r,o));m!==null&&(b(i,m,{type:s?P:k??P}),b(l,m,{type:P}),u.set(m,f)),w(o,f,P,r);}return {checked:i,narrowed:l,refused:false}}function Mo(e,n){let t=j(e,n);if(t.t==="conditional"){let r=he(t,n);return r?Mo(r,n):t}if(t.t==="union"&&t.of.some(r=>r.t==="conditional")){let r=t.of.map(o=>{if(o.t!=="conditional")return o;let a=he(o,n);return a?Mo(a,n):o});return j(p.union(r),n)}return t}function ye(e,n,t,r,o=false){let a=r.inference,s=a?B(n,a.returnMapper):n,i=c=>a?B(c,a.nonFixing):c,l=Mo(s,r.schemes);switch(Xe(e)?"Literal":e.type){case "Literal":{let c=pn(e);return x(c,n,r.schemes)||r.sink.report(g.notAssignable(e,c,n,r.schemes)),w(r,e,Pn(e),t),o?Jn(s,c)?c:xe(Pn(e)):n}case "ArrayExpression":{if(Bt(l)){let c=Xo(e,l,t,r);return x(c,n,r.schemes)||wp(e,c,l,t,r)||r.sink.report(g.notAssignable(e,c,n,r.schemes)),w(r,e,c,t)}if(l.t==="array"){let c=[];for(let f of e.elements){if(!f)continue;let y=f;if(y.type==="SpreadElement"){let m=ye(y.argument,n,t,r,o);m.t==="array"&&c.push(m.items);}else c.push(ye(y,l.items,t,r,o));}let d=o&&c.length>0?p.array(E(c)):i(n);return w(r,e,d,t)}break}case "ObjectExpression":{if(l.t==="object"||l.t==="intersection"||$o(l)){let{value:{checked:c,narrowed:d,refused:f},reported:y}=Zs(r,k=>_s(e,P=>Pt(l,P,r.schemes),P=>Co(l,P,r.schemes),t,k,o));if(f)return w(r,e,p.any,t);let m=y.some(k=>k.kind==="type"&&k.severity==="error"),h=Io(e,n,r),S={t:"object",props:c};return !h&&!m&&!x(S,n,r.schemes)&&r.sink.report(g.notAssignable(e,S,n,r.schemes)),w(r,e,o?{t:"object",props:d}:n,t)}if(l.t==="union"){let c=l.of.filter(D=>D.t==="object"||D.t==="intersection");if(!c.length)break;let d=e,{chosen:f,ignored:y}=Bi(d,c,D=>N(D.value,t,{...r,sink:J()}),r.schemes,n),m=r.sink.reported,{checked:h,narrowed:S,refused:k}=_s(d,D=>bi(y.has(D)?c:f,D,r.schemes),D=>Co({t:"union",of:f},D,r.schemes),t,r,o,true);if(k)return w(r,e,p.any,t);let P=Io(d,n,r),R={t:"object",props:h};return !P&&r.sink.reported===m&&!x(R,n,r.schemes)&&r.sink.report(g.notAssignable(e,R,n,r.schemes)),w(r,e,o?{t:"object",props:S}:n,t)}break}case "ArrowFunctionExpression":{let c=Ko(a?n.t==="var"?B(n,a.nonFixing):n:l,e,r.schemes),d=c&&a?a.fixing(c):c;if(d){let f=Wo(e,t,r,d);return x(f,n,r.schemes)||r.sink.report(g.notAssignable(e,f,n,r.schemes)),w(r,e,f,t),o?f:i(n)}break}case "ConditionalExpression":{let c=e;N(c.test,t,r);let d=Ne(c.test,t,r.schemes),f=ye(c.consequent,n,X(t,d.then),r,o),y=ye(c.alternate,n,X(t,d.else),r,o);return w(r,e,o?E([f,y]):n,t)}case "Placeholder":return w(r,e,i(n),t)}let u=N(e,t,r,a?B(n,a.outer):n);return x(u,n,r.schemes)||r.sink.report(g.notAssignable(e,u,n,r.schemes)),w(r,e,u,t)}function Wo(e,n,t,r){if(t.skipContextSensitive){if(me(e))return Ke;t={...t,skipContextSensitive:void 0};}let o=!e.async&&t.invoked.has(e),a=t.flow.size?new Map(t.flow):null,s=a?X(n,Object.fromEntries(a)):n;a&&t.flow.clear();let i=t.shadowed;o&&(t.shadowed=new Set);let l=!t.invoked.has(e);l&&t.fnDepth.value++;try{return Hc(e,s,t,r)}finally{l&&t.fnDepth.value--;let u=o?Xc(e,s,t):null,c=t.shadowed;if(t.shadowed=i,t.flow.clear(),a)for(let[d,f]of a)t.flow.set(d,f);if(u)for(let[d,f]of u){let y=d.slice(0,Pe(d)?d.indexOf("."):d.length);!c?.has(y)&&Cn(n,d,t.schemes)!==void 0&&Re(d,f,t);}}}function Xc(e,n,t){let r=e.body;return r.type!=="BlockStatement"?new Map(t.flow):en(r,n,t).types}function Ko(e,n,t){let r=s=>{let i=j(s,t);return i.t==="fn"&&!Yc(i,n)?i:void 0},o=j(e,t);if(o.t!=="union")return r(o);let a;for(let s of o.of){let i=r(s);if(i)if(!a)a=[i];else if(Qc(a[0],i,t))a.push(i);else return}if(a)return a.length===1?a[0]:p.fn([...a[0].params],E(a.map(s=>s.returns)),a[0].typeParams)}function Yc(e,n){let t=0;for(let r of n.params){if(r.type==="AssignmentPattern"||r.type==="RestElement"||r.optional)break;t++;}return !e.params.some(r=>r.variadic)&&e.params.length<t}function Qc(e,n,t){return e.params.length!==n.params.length||(e.typeParams?.length??0)!==(n.typeParams?.length??0)?false:e.params.every((r,o)=>{let a=n.params[o];return !!r.optional==!!a.optional&&!!r.variadic==!!a.variadic&&_e(r.type,a.type,t)})}function Hc(e,n,t,r){let o=r?Ko(r,e,t.schemes):void 0,a=o?.typeParams?.length&&e.params.some(M=>!Ao(M))?o.typeParams:void 0,s=sr(e)??a,i=M=>s?{...M,typeParams:s}:M,l={},u=t.invoked.has(e),c=e.params.map((M,ne)=>{let T=M,F=o?De(o,ne):void 0;if(T.type==="RestElement"){let rn=T.argument,$n=At(rn,n,t),$e=ve(rn);!$n&&!o&&!u&&$e&&t.sink.report(g.implicitAny.rest(T,$e));let we=$n??(o?yn(o,ne):p.array(p.any));return $e?(fn($e,rn,t),b(l,$e,we)):Ze(rn,we,l,n,t,{annotated:$n!==void 0,mutable:true}),t.overlay.set(rn,{type:we,scope:n}),t.overlay.set(T,{type:we,scope:n}),{name:$e??`arg${ne}`,type:we,variadic:true}}if(T.type==="AssignmentPattern"){let rn=T.left,$n=At(rn,n,t),$e=$n??F;hp(T,$e??p.unknown,l,n,t,{annotated:$n!==void 0,mutable:true});let we=ve(rn),Br=we?v(l,we):void 0,wr=$e??Br??p.unknown,Zo=wr.t==="unknown"?wr:E([wr,p.undefined]);return we&&Br&&b(l,Rn(we),Br),t.overlay.set(T,{type:Zo,scope:n}),{name:we??`arg${ne}`,type:Zo,optional:true}}let $=ve(T),se=At(T,n,t),Be=se===void 0&&F===void 0&&!u;Be&&$&&t.sink.report(g.implicitAny.parameter(T,$));let tn=se??F??(Be&&T.type!=="Identifier"?Wi(T,n,t):p.any),Ho=T.type==="Identifier"&&(!!T.optional||se===void 0&&!!o?.params[ne]?.optional),jt=Ho&&tn.t!=="unknown"?E([tn,p.undefined]):tn;return $?(fn($,T,t),b(l,$,jt),b(l,Rn($),jt)):T.type!=="Identifier"&&Ze(T,tn,l,n,t,{annotated:se!==void 0,mutable:true}),t.overlay.set(T,{type:jt,scope:n}),Ho?{name:$??`arg${ne}`,type:jt,optional:true}:{name:$??`arg${ne}`,type:tn}}),d=false;c.forEach((M,ne)=>{M.optional?d=true:!M.variadic&&d&&t.sink.report(g.requiredAfterOptional(e.params[ne]));});let f=Fn(n,l,t),y=e.body,m=Uc(e,n,t),h=e.returnGuard,S=h?{param:h.param,type:et(h.type,n,t,e)}:void 0;if(S){let M=c[S.param];M&&!x(S.type,M.type,t.schemes)&&t.sink.report(g.notAssignable(e,S.type,M.type,t.schemes));}let k=M=>S?{...M,guard:S}:M;if(y.type!=="BlockStatement"&&m){let M=e.async?wt(m):m;ye(y,M,f,t);let ne=e.async?Et(m):m;return w(t,e,k(i({t:"fn",params:c,returns:ne})),n)}let P=m??o?.returns,R=P&&e.async?wt(P):P,D=y.type==="BlockStatement"?w(t,y,xi(y,f,t,new Set(Object.keys(l).filter(M=>!lr(M))),R),f):N(y,f,t),Y=e.async?Et(D):D;if(m){let M=e.async?wt(m):m,ne=e.async?D:Y;x(ne,M,t.schemes)||t.sink.report(g.notAssignable(y,Y,m,t.schemes));let T=e.async?Et(m):m;return w(t,e,k(i({t:"fn",params:c,returns:T})),n)}return w(t,e,i({t:"fn",params:c,returns:Me(vn(Y))}),n)}function Yn(e){switch(e.type){case "Identifier":return [e];case "ObjectPattern":return e.properties.flatMap(n=>n.type==="RestElement"?Yn(n.argument):Yn(n.value));case "ArrayPattern":return e.elements.flatMap(n=>n?n.type==="RestElement"?Yn(n.argument):Yn(n):[]);case "AssignmentPattern":return Yn(e.left);default:return []}}function wi(e){if(e.type==="VariableDeclaration")return e.declarations.flatMap(n=>Yn(n.id));if(e.type==="FunctionDeclaration"){let n=e.id;return n?[n]:[]}return e.type==="ExportNamedDeclaration"&&e.declaration?wi(e.declaration):[]}var Ei=Object.freeze({t:"undefined"}),zs=e=>e===Ei;function xi(e,n,t,r=new Set,o){let{returns:a}=yr(e.body,n,t,r,o),s=!Oe(e)||a.some(zs),i=a.filter(l=>!zs(l));return i.length===0?s?p.void:p.union([]):E(s?[...i,p.undefined]:i)}var Zc=[p.literal(true),p.literal(false)];function Zn(e){return e.t==="union"?e.of:e.t==="boolean"?Zc:[e]}function Ti(e,n,t){let r=Zn(e);if(r.length<=1)return e;let o=r.filter(s=>x(n,s,t));if(o.length===0)return e;let a=E(o);return x(n,a,t)?a:e}var Ai=(e,n)=>Pe(e)?void 0:oe(n,Rn(e)),fr=e=>`${e}~#`,Oi=new WeakMap,ep=Object.freeze({t:"undefined"}),np=(e,n)=>{let t=Object.freeze({t:"undefined"});return Oi.set(t,{node:e,depth:n.fnDepth.value}),t};function tp(e,n,t,r){let o=oe(t,fr(n)),a=o&&Oi.get(o);return !a||a.depth>=r.fnDepth.value?false:(r.sink.report(g.implicitAny.evolving(a.node,n)),r.sink.report(g.implicitAny.variable(e,n)),true)}var pr=(e,n,t)=>!Pe(e)&&(t.evolving.has(e)||oe(n,Rn(e))!==void 0);function dr(e,n,t,r,o,a){if(n)return We(r);if(a.evolving.has(e))return kn(t);let s=Ai(e,o);return s===void 0?t:s.t==="union"||s.t==="boolean"?Ti(s,t,a.schemes):s}function Re(e,n,t){let r=e+".";for(let o of t.flow.keys())o.startsWith(r)&&t.flow.delete(o);t.flow.set(e,n);}var _o=(e,n)=>n.flow.size?n.flow.get(e):void 0;function Po(e,n){let t=new Map(e.flow),r=n(),o=new Map;for(let[a,s]of e.flow)t.get(a)!==s&&o.set(a,s);e.flow.clear();for(let[a,s]of t)e.flow.set(a,s);return {value:r,effect:o}}function qs(e,n){let t=new Set;for(let r of e)if(r.effect)for(let o of r.effect.keys())t.add(o);for(let r of t){let o=[];for(let a of e){let s=a.effect?.get(r)??n.flow.get(r)??Cn(a.scope,r,n.schemes);s!==void 0&&o.push(s);}o.length&&Re(r,E(o),n);}}function zo(e,n,t){if(e.type==="MemberExpression"){let r=w(t,e,si(e,n,t,true),n);return mr(e,t,"write")&&t.invalidTargets.add(e),r}if(e.type==="Identifier"){let r=e.name,o=Ai(r,n);if(o!==void 0)return w(t,e,o,n);if(t.evolving.has(r)){let a=_o(r,t)??oe(n,r);if(a!==void 0)return w(t,e,a,n)}}return N(e,n,t)}function mr(e,n,t){let r=n.overlay.get(e.object)?.type;if(!r)return false;let o=rp(e,n);if(!o)return false;let a=false,s=false;for(let i of o){let l=to(r,i,n.schemes);if(l==="property"){if(a=true,t==="delete"){n.sink.report(g.readonlyDelete(e));break}n.sink.report(g.readonlyProperty(e.property,"name"in i?i.name:""));}else l==="index"&&!s&&(s=true,n.sink.report(g.readonlyWrite(e,r)));}return a&&t==="write"}function rp(e,n){let t=e.property;if(!e.computed)return [{name:t.name,element:false}];let r=n.overlay.get(t)?.type;if(!r)return null;let o=r.t==="union"?r.of:[r],a=[];for(let s of o)if(s.t==="literal"&&typeof s.value!="boolean")a.push({name:String(s.value),element:true});else if(s.t==="string"||s.t==="number")a.push({base:s.t});else return null;return a}function Gs(e,n,t){let r=N(e,n,t),o=We(r);return o===r?r:w(t,e,o,n)}function Mn(e,n,t,r){switch(e.type){case "ArrayExpression":{let o=qo(n,r);o===null&&(r.sink.report(g.notIterable(e,n)),o=p.any);let a=o;e.elements.forEach((s,i)=>{if(!s)return;let l=s;if(l.type==="SpreadElement")Mn(l.argument,Ui(n,i,a,r.schemes),t,r);else {let u=Js(l),c=Di(n,i,u?l.left:l,u,a,r);Mn(l,u?re(c).type:c,t,r);}});return}case "ObjectExpression":{let o=[];for(let a of e.properties){let s=a;if(s.type==="SpreadElement"){Mn(s.argument,n.t==="any"?p.any:Jo(n,o,r.schemes),t,r);continue}let i=Je(s);i!=null&&o.push(i),Mn(s.value,i!=null?Mi(n,i,s.key,r):p.any,t,r);}return}default:{if(Js(e)){N(e,t,r),Mn(e.left,n,t,r);return}let o=zo(e,t,r);!r.invalidTargets.has(e)&&!Pi(e,r)&&!x(n,o,r.schemes)&&r.sink.report(g.notAssignable(e,n,o,r.schemes)),ji(e,n,o,t,r);}}}var Js=e=>e.type==="AssignmentExpression"&&e.operator==="=",Pi=(e,n)=>e.type==="Identifier"&&n.evolving.has(e.name);function ji(e,n,t,r,o){let a=ge(e);a!==null&&pr(a,r,o)?Re(a,dr(a,false,n,t,r,o),o):a!==null&&Pe(a)&&Re(a,t,o);}function op(e,n,t,r,o){if(e==="ForOfStatement"){Mn(n,t,r,o);return}if(n.type==="ArrayExpression"||n.type==="ObjectExpression"){o.sink.report(g.forInDestructuring(n));return}let a=zo(n,r,o);!o.invalidTargets.has(n)&&!Pi(n,o)&&!x(ap(t,o),a,o.schemes)&&o.sink.report(g.forInTarget(n)),ji(n,p.string,a,r,o);}function ap(e,n){let t=le(p.keyof(e),n.schemes),o=(t.t==="union"?t.of:[t]).filter(a=>a.t==="string"||a.t==="literal"&&typeof a.value=="string");return o.length?p.union(o):p.string}function sp(e,n,t,r){let o=e.right,a=N(o,t,r);return zi(e.operator.slice(0,-1),n,a,e,e.left,o,r)}var Dn=new Map;function en(e,n,t){switch(e.type){case "BlockStatement":{let r=Dn,o=n;for(let a of e.body){let s=en(a,o,t);if(s.types.size){let i=new Map(r);for(let[l,u]of s.types)i.set(l,u);r=i,o=X(o,Object.fromEntries(s.types));}if(s.exits)return {types:r,exits:true}}return {types:r,exits:false}}case "IfStatement":return {types:Ci(e,n,t),exits:Oe(e)};case "ReturnStatement":case "ThrowStatement":return {types:Dn,exits:true};case "TryStatement":{let r=e,o=[],a=en(r.block,n,t);if(a.exits||o.push(a),r.handler){let i=en(r.handler.body,n,t);i.exits||o.push(i);}let s=Ri(o,n,t);if(r.finalizer){let i=s.size?X(n,Object.fromEntries(s)):n,l=en(r.finalizer,i,t);if(l.types.size){let u=new Map(s);for(let[c,d]of l.types)u.set(c,d);s=u;}}return {types:s,exits:Oe(e)}}default:return {types:t.stmtFlow.get(e)??Dn,exits:false}}}function Ri(e,n,t){let r=new Set;for(let a of e)for(let s of a.types.keys())r.add(s);if(!r.size)return Dn;let o=new Map;for(let a of r){let s=Cn(n,a,t.schemes),i=[];for(let l of e){let u=l.types.get(a)??s;u!==void 0&&i.push(u);}i.length&&s!==void 0&&o.set(a,E(i));}return o}function Ci(e,n,t){let r=en(e.consequent,n,t),o=e.alternate?en(e.alternate,n,t):{types:Dn,exits:false};if(!r.types.size&&!o.types.size)return Dn;let a=[r,o].filter(s=>!s.exits);return a.length?Ri(a,n,t):Dn}var ip=5;function Xs(e,n,t,r){let o=new Map(t.flow),a=new Map,s=n,i=null;for(let u=0;u<ip;u++){let c=J(),d={...t,sink:c},f=r(s,d),y=new Map(en(e,s,d).types);for(let[h,S]of t.flow)o.get(h)!==S&&y.set(h,S);if(Ys(o,t),!y.size){for(let h of c.all)t.sink.report(h);return {returns:f,head:s}}let m={};for(let[h,S]of y){let k=Cn(s,h,t.schemes);if(k===void 0||S===k)continue;let P=E([k,S]);_e(P,k)||(b(m,h,P),a.set(h,P));}if(!Object.keys(m).length){for(let h of c.all)t.sink.report(h);i=f;break}s=X(s,m);}let l=i??r(s,t);Ys(o,t);for(let[u,c]of a)Re(u,c,t);return {returns:l,head:s}}function Ys(e,n){n.flow.clear();for(let[t,r]of e)n.flow.set(t,r);}function lp(e,n,t){let r=en(e,n,t);return r.exits||!r.types.size?n:X(n,Object.fromEntries(r.types))}function yr(e,n,t,r=new Set,o){if(!up(e))return Qs(e,n,t,r,o);let a=new Set(t.evolving);try{return Qs(e,n,t,r,o)}finally{t.evolving.clear();for(let s of a)t.evolving.add(s);}}function up(e){for(let n of e){let t=n;if(t.type==="VariableDeclaration"&&t.kind!=="const")return true;if(t.type==="ExportNamedDeclaration"){let r=t.declaration;if(r?.type==="VariableDeclaration"&&r.kind!=="const")return true}}return false}function Qs(e,n,t,r,o){let a=n,s=[];for(let i of e){let l=i;for(let u of wi(l))r.has(u.name)?t.sink.report(g.cannotRedeclare(u,u.name)):r.add(u.name);if(l.type==="VariableDeclaration")a=Sr(l,a,t);else if(l.type!=="ImportDeclaration")if(l.type==="ExportNamedDeclaration"){let u=l;if(u.declaration?.type==="VariableDeclaration")a=Sr(u.declaration,a,t);else if(u.declaration?.type==="FunctionDeclaration"){let c=N(u.declaration,a,t),d=ve(u.declaration.id);d&&(a=Fn(a,{[d]:c},t));}else for(let c of u.specifiers)oe(a,c.local.name)===void 0&&t.sink.report(g.unknownName(c.local,c.local.name));}else if(l.type==="ExportDefaultDeclaration")N(l.declaration,a,t);else if(l.type==="FunctionDeclaration"){let u=N(l,a,t),c=ve(l.id);c&&(a=Fn(a,{[c]:u},t));}else if(l.type==="IfStatement"){let u=l;s.push(...je(l,a,t,o));let c=Ci(u,a,t);c.size&&(a=X(a,Object.fromEntries(c))),!u.alternate&&Oe(u.consequent)&&(a=X(a,Ne(u.test,a,t.schemes).else));}else s.push(...je(l,a,t,o)),(l.type==="BlockStatement"||l.type==="TryStatement")&&(a=lp(l,a,t));a=cp(l,a,t);}return {scope:a,returns:s}}function cp(e,n,t){if(!t.flow.size)return n;let r=new Map(t.flow);t.flow.clear(),t.stmtFlow.set(e,r);let o=X(n,Object.fromEntries(r));for(let a of r.keys())Pe(a)||(o=Oo(o,a,t.schemes));return o}function je(e,n,t,r){switch(e.type){case "ReturnStatement":{let o=e.argument,a=o?r?(ye(o,r,n,t),r):N(o,n,t):Ei;return w(t,e,o?a:p.undefined,n),[a]}case "IfStatement":{let o=e;N(o.test,n,t);let a=Ne(o.test,n,t.schemes),s=je(o.consequent,X(n,a.then),t,r);return o.alternate&&s.push(...je(o.alternate,X(n,a.else),t,r)),w(t,e,p.unknown,n),s}case "BlockStatement":{let{returns:o}=yr(e.body,n,t,void 0,r);return w(t,e,o.length?E(o):p.void,n),o}case "ForStatement":case "WhileStatement":case "DoWhileStatement":{let o=e,a=n;o.init&&(o.init.type==="VariableDeclaration"?a=Sr(o.init,a,t):N(o.init,a,t));let{returns:s}=Xs(o.body,a,t,(i,l)=>(o.test&&N(o.test,i,l),o.update&&N(o.update,i,l),je(o.body,i,l,r)));return w(t,e,p.unknown,n),s}case "ForOfStatement":case "ForInStatement":{let o=e,a=N(o.right,n,t),s=gr(a,o.right,t)?null:Ot(a);s&&t.sink.report(g.possiblyNullish(o.right,s));let i=s?br(a):a,l=e.type==="ForOfStatement"?Go(i,o.right,t):p.string,u=o.left.type==="VariableDeclaration",c=u?Ss(o.left):null;c&&fn(c,gs(o.left),t);let d=c?Fn(n,{[c]:l},t):n,{returns:f}=Xs(o.body,d,t,(y,m)=>(u||op(e.type,o.left,e.type==="ForOfStatement"?l:i,y,m),je(o.body,y,m,r)));return w(t,e,p.unknown,n),f}case "BreakStatement":case "ContinueStatement":return w(t,e,p.unknown,n),[];case "ThrowStatement":{let o=e.argument;return o&&N(o,n,t),w(t,e,p.unknown,n),[]}case "TryStatement":{let o=e,a=je(o.block,n,t,r);if(o.handler){let s=o.handler.param,i=s?ve(s):null;i&&s&&fn(i,s,t);let l=i?Fn(n,{[i]:p.any},t):n;a.push(...je(o.handler.body,l,t,r));}return o.finalizer&&a.push(...je(o.finalizer,n,t,r)),w(t,e,p.unknown,n),a}case "SwitchStatement":{let o=e;N(o.discriminant,n,t);let a=n,s=[];for(let i of o.cases){i.test&&N(i.test,a,t);let l=yr(i.consequent,a,t,void 0,r);a=l.scope,s.push(...l.returns);}return w(t,e,p.unknown,n),s}default:return N(e,n,t),[]}}function Mi(e,n,t,r){if(e.t==="any")return p.any;let o=fe(e,[n],r.schemes);return o?o.type:(r.sink.report(g.noSuchMember(t,e,n)),p.any)}function qo(e,n){let t=j(e,n.schemes);switch(t.t){case "any":return p.any;case "array":return t.items;case "tuple":return E([...t.elements]);case "string":return p.string;case "literal":return typeof t.value=="string"?p.string:null;case "union":{if(!t.of.length)return null;let r=t.of.map(o=>qo(o,n));return r.every(o=>o!==null)?E(r):null}default:return null}}var Ii=e=>e.t==="array"||e.t==="tuple"||e.t==="union"&&e.of.length>0&&e.of.every(Ii);function Di(e,n,t,r,o,a){if(e.t==="any")return p.any;let s=j(e,a.schemes);if(s.t==="tuple"&&ke(s)<0&&n>=s.elements.length)return r||a.sink.report(g.tupleIndexOutOfRange(t,e,s.elements.length,n)),p.undefined;if(!Ii(s))return o;let i=le(p.index(s,p.literal(n)),a.schemes);return i.t==="index"||Ce(i)?o:i}function Go(e,n,t){let r=ce(e,t.schemes);switch(r.t){case "array":return r.items;case "tuple":return r.elements.length?E([...r.elements]):p.unknown;case "string":return p.string;case "literal":if(typeof r.value=="string")return p.string;break;case "unknown":case "any":return p.unknown;case "union":return E(r.of.map(o=>Go(o,n,t)));}return t.sink.report(g.notIterable(n,e)),p.any}function Jo(e,n,t){let r=ce(e,t),o=(r.t==="union"?r.of:[r]).filter(i=>i.t!=="null"&&i.t!=="undefined");if(!o.length)return p.object({});if(o.length>1)return p.union(o.map(i=>Jo(i,n,t)));let a=o[0];if(a.t!=="object")return a;let s={};for(let i in a.props)n.includes(i)||b(s,i,Vi(a.props[i]));return p.object(s,a.index)}function hr(e,n){let t=j(e,n);switch(t.t){case "any":case "nonPrimitive":case "object":case "array":case "tuple":case "fn":case "overload":case "apply":case "var":case "mapped":case "conditional":case "index":return true;case "intersection":return t.of.every(r=>hr(r,n));case "union":{let r=t.of.filter(o=>!fp(o));return r.length>0&&r.every(o=>hr(o,n))}default:return false}}function Fi(e,n,t,r,o){if(hr(t,o.schemes))return false;o.sink.report(g.notSpreadable.spread(e.properties[n]));let a={...o,sink:J()};for(let s of e.properties.slice(n+1)){let i=s;if(i.type==="SpreadElement"){N(i.argument,r,a);continue}let l=i;l.computed&&N(l.key,r,a),w(a,i,N(l.value,r,a),r);}return true}function $i(e,n,t,r){if(e.size!==0)for(let[o,a]of vr(n,r.schemes)){let s=e.get(o);!s||a.optional||Li(a.type,r.schemes)||r.sink.report(g.overwrittenProperty(s,o,t));}}function vr(e,n){let t=new Map,r=j(e,n);if(r.t==="object"){for(let[s,i]of Object.entries(r.props))t.set(s,{type:i.type,optional:!!i.optional});return t}if(r.t!=="union"&&r.t!=="intersection")return t;let o=r.of.map(s=>j(s,n)).filter(s=>!(s.t==="union"&&s.of.length===0)),a=[];for(let s of o){for(let i of vr(s,n).keys())a.includes(i)||a.push(i);if(r.t==="union"&&!(s.t==="object"&&s.index))break}for(let s of a){let i=r.t==="union"?pp(o,s,n):dp(o,s,n);i&&t.set(s,i);}return t}function pp(e,n,t){let r=[],o=false,a=false;for(let s of e){let i=vr(s,t).get(n);if(i){a=true,o||(o=i.optional),r.push(i.type);continue}let l=an(n),u=s.t==="object"&&s.index?s.index.key==="string"||s.index.key==="number"&&l?s.index.value:void 0:s.t==="array"&&l?s.items:void 0;if(u)r.push(u);else if(s.t==="object"&&s.fromLiteral)r.push(p.undefined);else return null}return a?{type:E(r),optional:o}:null}function dp(e,n,t){let r=[],o=true;for(let a of e){let s=vr(a,t).get(n);s&&(o&&(o=s.optional),r.push(s.type));}return r.length?{type:r.length===1?r[0]:p.intersection(r),optional:o}:null}function Li(e,n){let t=ce(e,n);return t.t==="null"||t.t==="undefined"?true:t.t==="union"||t.t==="intersection"?t.of.some(r=>Li(r,n)):false}var fp=e=>e.t==="null"||e.t==="undefined"||e.t==="void"||e.t==="literal"&&!e.value,Vi=e=>{if(!e.readonly)return e;let{readonly:n,...t}=e;return t};function Ui(e,n,t,r){if(e.t==="any")return p.any;let o=j(e,r),a=o.t==="union"?o.of:[o];return a.length&&a.every(s=>s.t==="tuple")?p.union(a.map(s=>mp(s,n))):p.array(t)}function mp(e,n){let t=ke(e);return t>=0&&n>t?p.tuple([e.elements[t]],["rest"],e.readonly):p.tuple(e.elements.slice(n),e.flags?.slice(n),e.readonly)}function Wi(e,n,t){let r={...t,sink:J()},o=a=>{if(a.type==="AssignmentPattern"){let s=N(a.right,n,r);return {type:Me(kn(s)),optional:true}}return a.type==="ObjectPattern"||a.type==="ArrayPattern"?{type:Wi(a,n,t),optional:false}:(a.type==="Identifier"&&t.sink.report(g.implicitAny.bindingElement(a,a.name)),{type:p.any,optional:false})};if(e.type==="ObjectPattern"){let a={},s;for(let i of e.properties){if(i.type==="RestElement"){s={key:"string",value:p.any};continue}let l=Je(i),{type:u,optional:c}=o(i.value);l!==null&&b(a,l,c?{type:u,optional:c}:{type:u});}return p.object(a,s)}if(e.type==="ArrayPattern"){let a=e.elements,i=a[a.length-1]?.type==="RestElement",l=[],u=[];return a.forEach((c,d)=>{if(!c){l.push(p.any),u.push("req");return}let f=c;if(f.type==="RestElement"){l.push(o(f.argument).type),u.push("rest");return}let{type:y,optional:m}=o(f);l.push(y),u.push(m&&d>=yp(a)?"optional":"req");}),!l.length||l.length===1&&i?p.array(p.any):p.tuple(l,u)}return p.any}function yp(e){let n=0;return e.forEach((t,r)=>{let o=t;o&&o.type!=="RestElement"&&o.type!=="AssignmentPattern"&&(n=r+1);}),n}function hp(e,n,t,r,o,a){let s=N(e.right,r,o);n.t!=="unknown"&&!x(s,n,o.schemes)&&o.sink.report(g.notAssignable(e.right,s,n,o.schemes));let i=Me(vn(s)),{type:l}=re(n),u=l.t==="unknown"?i:E([l,i]),c=e.left;if(c.type==="Identifier"){let d=c.name;fn(d,c,o),b(t,d,u),o.overlay.set(c,{type:u,scope:r});}else Ze(c,u,t,r,o,a);}function Ze(e,n,t,r,o,a){switch(e.type){case "Identifier":{let s=At(e,r,o)??n;fn(e.name,e,o),b(t,e.name,s),o.overlay.set(e,{type:s,scope:r});return}case "AssignmentPattern":{let s=e,i=s.right,l;if(n.t==="any")N(i,r,o),l=p.any;else if(a.annotated){let u=N(i,r,{...o,sink:J()});l=Zn(u).some(c=>c.t==="undefined")?n:re(n).type,ye(i,l,r,o);}else {let u=N(i,r,o),c=E([re(n).type,u]);l=Me(a.mutable?kn(c):c);}Ze(s.left,l,t,r,o,a);return}case "ObjectPattern":{let s=[];for(let i of e.properties){if(i.type==="RestElement"){let d;n.t==="any"?d=p.any:hr(n,o.schemes)?d=Jo(n,s,o.schemes):(o.sink.report(g.notSpreadable.rest(i.argument)),d=p.any),Ze(i.argument,d,t,r,o,a);continue}let l=i,u=Je(l);u!=null&&s.push(u);let c=u!=null?Mi(n,u,l.key,o):p.any;Ze(l.value,c,t,r,o,a);}return}case "ArrayPattern":{let s=qo(n,o);s===null&&(o.sink.report(g.notIterable(e,n)),s=p.any);let i=s;e.elements.forEach((l,u)=>{if(!l)return;let c=l;if(c.type==="RestElement")Ze(c.argument,Ui(n,u,i,o.schemes),t,r,o,a);else {let d=c.type==="AssignmentPattern",f=d?c.left:c;Ze(c,Di(n,u,f,d,i,o),t,r,o,a);}});return}}}function Io(e,n,t){let r=c=>{let d=ce(c,t.schemes);return d.t==="mapped"?j(d,t.schemes):d},o=r(n),a=o.t==="union"?j(o,t.schemes):o,s=a.t==="union"?a.of.map(r):[a],l=(o.t==="union"?Bi(e,s.filter(c=>c.t==="object"||c.t==="intersection"),c=>t.overlay.get(c.value)?.type,t.schemes,n).chosen:s).filter(c=>c.t==="object"&&(!c.index||c.index.key==="number"));if(!l.length||l.some(c=>Object.keys(c.props).length===0&&!c.index))return false;let u=false;for(let c of e.properties){if(c.type==="SpreadElement")continue;let d=c,f=d.computed?Ki(t.overlay.get(d.key)?.type,t):Je(d);if(f===null)continue;l.filter(m=>pe(m.props,f)||m.index?.key==="number"&&an(f)).length||(t.sink.report(d.computed?g.excessProperty(d,_i(d.key,f),n):g.excessProperty(d.key,f,n)),u=true);}return u}var Ki=(e,n)=>{let t=e&&ce(e,n.schemes);return t?.t==="literal"&&(typeof t.value=="string"||typeof t.value=="number")?String(t.value):null};function _i(e,n){let t=r=>{if(r.type==="Identifier")return r.name;if(r.type==="MemberExpression"){let a=r,s=t(a.object);return s!==null&&!a.computed?`${s}.${a.property.name}`:null}if(r.type==="UnaryExpression"){let a=r,s=t(a.argument);return s!==null?`${a.operator}${s}`:null}if(r.type==="Literal"){let a=r.value;return typeof a=="string"?JSON.stringify(a):typeof a=="number"?String(a):null}let o=cn(r);return o!==null?`\`${o}\``:null};return `[${t(e)??JSON.stringify(n)}]`}function Sr(e,n,t){let r={};for(let o of e.declarations){let a=o.id,s=ve(a);s&&fn(s,a,t);let i=At(a,n,t);if(!o.init){if(s&&e.kind!=="const"){i?(b(r,s,i),b(r,Rn(s),i)):(b(r,s,p.undefined),t.evolving.add(s),b(r,fr(s),np(a,t)));continue}t.sink.report(g.constNeedsInit(o)),s&&b(r,s,i??p.unknown);continue}let l=i??(o.init.type==="ArrowFunctionExpression"?Ns(o.init):null),u=s&&l?Fn(n,{[s]:l},t):n,c,d=null;i?(ye(o.init,i,u,t),c=i,d=i,(i.t==="union"||i.t==="boolean")&&Xe(o.init)&&(c=Ti(i,pn(o.init),t.schemes))):(c=N(o.init,u,t),e.kind!=="const"&&(c=kn(c)),c=Me(c),d=c),w(t,o,c,n),s?(b(r,s,c),e.kind!=="const"&&d&&b(r,Rn(s),d)):Ze(a,c,r,n,t,{annotated:i!==void 0,mutable:e.kind!=="const"});}return w(t,e,p.unknown,n),Fn(n,r,t)}function Fn(e,n,t){let r=n;for(let a of t.evolving.size?Object.keys(n):[])lr(a)||!t.evolving.has(a)||pe(n,fr(a))||(r===n&&(r={...n}),b(r,fr(a),ep));let o=un(e,r);for(let a of Object.keys(n))lr(a)||(t.shadowed?.add(a),o=Oo(o,a,t.schemes));return o}function Sp(e,n,t){let r=N(e.left,n,t),o=N(e.right,n,t);return zi(e.operator,r,o,e,e.left,e.right,t)}function zi(e,n,t,r,o,a,s){e==="in"&&(Qn(n,o,s),Qn(t,a,s));let i=ft.get(e);if(!i)return p.boolean;if(i.category==="arithmetic"||i.category==="bitwise"||i.category==="relational"||i.category==="additive"&&!x(n,p.string,s.schemes)&&!x(t,p.string,s.schemes)){let u=Qn(n,o,s),c=Qn(t,a,s);if(i.category==="additive"&&(u.error||c.error)){let d=u.error?c.error?null:c.type:u.type;return d&&dn(d,s.schemes)?p.string:p.any}n=u.type,t=c.type;}if(i.category==="additive"){if(In(n)||In(t))return dn(n,s.schemes)||dn(t,s.schemes)?p.string:p.number;if(dn(n,s.schemes)&&dn(t,s.schemes))return p.string;if(Tt(n,s.schemes)&&Tt(t,s.schemes))return p.number;if(dn(n,s.schemes)||dn(t,s.schemes)){let c=dn(n,s.schemes)?t:n;return s.sink.report(g.implicitCoercion(r,n,t,qi(c,s.schemes))),p.string}return s.sink.report(g.operatorNotApplicable(r,"+",n,t)),p.number}if(i.category==="arithmetic"||i.category==="bitwise")Tt(n,s.schemes)||s.sink.report(g.arithmeticOperand(o,"left")),Tt(t,s.schemes)||s.sink.report(g.arithmeticOperand(a,"right"));else if(i.category==="relational"&&!In(n)&&!In(t)){let u=j(n,s.schemes),c=j(t,s.schemes),d=x(u,p.number,s.schemes),f=x(c,p.number,s.schemes);d&&f||!d&&!f&&(x(u,c,s.schemes)||x(c,u,s.schemes))||s.sink.report(g.operatorNotApplicable(r,e,n,t));}return go(i.result)}var In=e=>e.t==="any"||e.t==="unknown",Tt=(e,n)=>In(e)||x(j(e,n),p.number,n),dn=(e,n)=>!In(e)&&x(j(e,n),p.string,n),gp=p.union([p.string,p.number,p.boolean,p.null,p.undefined]),qi=(e,n)=>In(e)||x(j(e,n),gp,n),bp={string:p.literal(""),number:p.literal(0),boolean:p.literal(false)},ur=e=>e.t==="null"||e.t==="undefined";function kp(e,n,t,r){if(n.t==="any"||n.t==="unknown")return E([n,t]);let o=(n.t==="union"?[...n.of]:[n]).flatMap(s=>s.t==="boolean"?[p.literal(true),p.literal(false)]:[s]);if(e==="??")return o.some(ur)?E([...o.filter(s=>!ur(s)),t]):n;if(e==="||")return Ms(n,r)?E([...o.filter(s=>!ur(s)&&!(s.t==="literal"&&!s.value)),t]):n;if(!Is(n,r))return n;let a=o.flatMap(s=>{if(ur(s))return [s];if(s.t==="literal")return s.value?[]:[s];let i=v(bp,s.t);return i?[i]:[]});return E([...a,t])}var vp=p.union(["string","number","bigint","boolean","symbol","undefined","object","function"].map(e=>p.literal(e)));function Np(e,n,t){let r=N(e.argument,n,t);switch(e.operator){case "!":return r.t==="literal"?{t:"literal",value:!r.value,fresh:true}:p.boolean;case "-":case "+":case "~":return Qn(r,e.argument,t),e.operator==="-"&&r.t==="literal"&&typeof r.value=="number"?{t:"literal",value:-r.value,fresh:true}:p.number;case "typeof":return vp;case "delete":{let o=e.argument,a=o.type==="ChainExpression"?o.expression:o;a.type==="MemberExpression"&&mr(a,t,"delete");}return p.boolean;case "void":return p.undefined;default:return p.unknown}}function Bp(e,n,t){let r={},o,a=[],s=[],i=false,l=false,u=false;ki(e,t);let c=new Map;for(let[f,y]of e.properties.entries()){let m=y;if(m.type==="SpreadElement"){u=true;let R=N(m.argument,n,t);if(Fi(e,f,R,n,t))return p.any;$i(c,R,m,t);let D=ce(R,t.schemes);if(D.t==="object"){for(let Y in D.props)b(r,Y,Vi(D.props[Y]));D.index&&(o={key:D.index.key,type:D.index.value});}continue}let h=m,S=N(h.value,n,t),k=xe(S);if(w(t,m,S,n),h.computed){let R=ce(N(h.key,n,t),t.schemes);vi(e,h,Ki(R,t),t),R.t==="literal"&&typeof R.value=="string"?(b(r,R.value,{type:k}),c.set(R.value,m),a.push(k)):R.t==="literal"&&typeof R.value=="number"?(b(r,String(R.value),{type:k}),c.set(String(R.value),m),a.push(k),s.push(k)):R.t==="string"?(i=true,a.push(k)):R.t==="number"&&(l=true,a.push(k),s.push(k));continue}let P=Je(h);P!==null&&(b(r,P,{type:k}),c.set(P,m),a.push(k),/^\d+$/.test(P)&&s.push(k));}i?o={key:"string",type:E(a)}:l&&(o={key:"number",type:E(s)});let d=u?{fromLiteral:true,hasSpread:true}:{fromLiteral:true};return o?{t:"object",props:r,index:{key:o.key,value:o.type},...d}:{t:"object",props:r,...d}}function Gi(e,n,t){let r=[];for(let o of e.elements){if(!o)continue;let a=o;if(a.type==="SpreadElement"){let s=ce(N(a.argument,n,t),t.schemes);s.t==="array"?r.push(s.items):s.t==="tuple"&&r.push(...s.elements);continue}r.push(xe(N(a,n,t)));}return Ft(p.array(r.length?E(r):p.unknown))}function Xo(e,n,t,r){let o=ce(n,r.schemes),a=e.elements,s=a.every(l=>l&&l.type!=="SpreadElement"),i=(l,u)=>l.type==="ArrayExpression"?Xo(l,u,t,r):me(l)?ye(l,u,t,r.inference?{...r,sink:J()}:r,true):Jn(u,Xe(l)?pn(l):void 0)?N(l,t,r):xe(N(l,t,r));if(o.t==="tuple"&&s){let l=ke(o),u=d=>l<0||d<l?o.elements[d]:o.elements[l],c=a.map((d,f)=>{let y=u(f);return y?i(d,y):xe(N(d,t,r))});return w(r,e,{t:"tuple",elements:c,fromLiteral:true},t)}if(o.t==="union"&&s){let l=o.of.map(u=>ce(u,r.schemes));if(l.some(u=>u.t==="tuple")){let u=(d,f)=>{if(d.t==="array")return d.items;if(d.t!=="tuple")return;let y=ke(d);return y<0||f<y?d.elements[f]:d.elements[y]},c=a.map((d,f)=>{let y=l.map(m=>u(m,f)).filter(m=>m!==void 0);return y.length?i(d,E(y)):xe(N(d,t,r))});return w(r,e,{t:"tuple",elements:c,fromLiteral:true},t)}}if(o.t==="array"){let l=[];for(let u of a){if(!u)continue;let c=u;if(c.type==="SpreadElement"){N(c.argument,t,r);continue}l.push(i(c,o.items));}return w(r,e,Ft(p.array(l.length?E(l):p.unknown)),t)}return Gi(e,t,r)}function Ji(e,n,t){let r=j(e,t);if(r.t==="array")return r.items;if(r.t==="tuple"){let o=ke(r);if(n>=r.elements.length||o>=0&&n>=o)return;let a=le(p.index(r,p.literal(n)),t);return Ce(a)?void 0:a}if(r.t==="union"){let o=r.of.map(a=>Ji(a,n,t));return o.some(a=>a===void 0)?void 0:E(o)}}function wp(e,n,t,r,o){let a=j(t,o.schemes);if(a.t!=="array"&&a.t!=="tuple"&&a.t!=="union")return false;let s=(l,u)=>l.t==="tuple"?l.elements[u]:l.t==="array"?l.items:void 0,i=false;return e.elements.forEach((l,u)=>{if(!l)return;let c=l;if(c.type==="SpreadElement")return;let d=Ji(a,u,o.schemes);if(!d)return;let f=s(n,u);if(!f||x(f,d,o.schemes))return;let y=o.sink.reported;ye(c,d,r,o,false),o.sink.reported>y&&(i=true);}),i}function Do(e,n,t,r){if(e===null)return p.null;switch(typeof e){case "string":return p.string;case "number":return p.number;case "boolean":return p.boolean;case "object":break;default:return p.unknown}if(Array.isArray(e)){let s=e.map(i=>Do(i,n,t,r));return p.array(s.length?E(s):p.unknown)}let o=e;if(ast.isExprMarker(o)){let s;try{s=json.fromJson(o);}catch{return t.sink.report(g.unsupported(r,`'${ast.EXPR_MARKER}: ${String(v(o,ast.EXPR_MARKER))}'`)),p.unknown}return N(s,n,t)}let a={};for(let s of Object.keys(o))b(a,s,{type:Do(o[s],n,t,r)});return {t:"object",props:a}}function Xi(e,n){let t=j(e,n);return t.t==="object"?Object.keys(t.props).length>0||t.index!==void 0:t.t==="intersection"||$o(t)?true:t.t==="array"?t.items.t!=="any"&&t.items.t!=="unknown":t.t==="union"?t.of.some(r=>Xi(r,n)):false}function Ep(e,n,t,r,o){let a=J(),s=ye(e,n,t,{...r,sink:a},true);if(!(a.hasErrors()&&o)){for(let i of a.all)r.sink.report(i);return a.hasErrors()?n:s}}var xp=(e,n)=>({...e,typeAnnotation:n}),Tp=(e,n)=>({...e,returnType:n}),Ap=(e,n)=>({type:"TSAsExpression",expression:e,typeAnnotation:n});function Yo(e,n){return e.get(n)?.type}function Op(e,n){return e.get(n)?.scope}function Pp(e,n){let t=e.get(n)?.type;return t?fe(t,[])?.completions??[]:[]}function jp(e,n){let t=e.get(n)?.scope;return t?[...oo(t)].map(([r,o])=>({key:r,type:o,optional:false})):[]}var Rp=e=>e.type==="ArrowFunctionExpression"||e.type==="FunctionExpression"||e.type==="FunctionDeclaration";function Cp(e){if(!e||e.computed)return;let n=e.key;if(n?.type==="Identifier")return n.name;if(n?.type==="Literal"&&typeof n.value=="string")return n.value}function Nr(e,n,t,r={}){let o=e[n],a=e[n+1];if(!(!o||!a))switch(a.type){case "ArrowFunctionExpression":case "FunctionExpression":return a.body===o?a.returnType:void 0;case "VariableDeclarator":return a.init===o?a.id?.typeAnnotation:void 0;case "TSAsExpression":return a.typeAnnotation;case "ReturnStatement":return e.slice(n+1).find(Rp)?.returnType;case "CallExpression":{let s=(a.arguments??[]).indexOf(o);if(s<0)return;let i=Yo(t,a.callee);return i?.t==="fn"?i.params?.[s]?.type:void 0}case "Property":{if(a.value!==o||e[n+2]?.type!=="ObjectExpression")return;let i=Nr(e,n+2,t,r),l=Cp(a);return !i||!l?void 0:fe(i,[l],r)?.type}case "ArrayExpression":{let s=Nr(e,n+1,t,r);return s?fe(s,["[]"],r)?.type:void 0}case "BinaryExpression":{let s=ft.get(a.operator);if(!s)return;if(s.category==="arithmetic"||s.category==="bitwise")return p.number;let i=a.left===o?a.right:a.left,l=Yo(t,i);return l&&l.t!=="any"&&l.t!=="unknown"?l:void 0}case "LogicalExpression":return Nr(e,n+1,t,r);case "UnaryExpression":{let s=a.operator;return s==="-"||s==="+"||s==="~"?p.number:void 0}default:return}}function Mp(e,n){return e.filter(t=>t.node===n)}function $p(){let e=new WeakMap;return {stamp:(n,t)=>(e.set(n,t),n),get:n=>e.get(n)}}var Lp=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);function Qo(e,n,t,r){if(ast.isExprMarker(e)){let o=r.island?r.island(e,n):ast.fromExprMarker(e);return t.stamp(o,n)}return Array.isArray(e)?t.stamp(nn__namespace.arrayExpression(e.map((o,a)=>Qo(o,r.child(n,a),t,r))),n):Lp(e)?t.stamp(nn__namespace.objectExpression(Object.entries(e).map(([o,a])=>{let s=r.child(n,o),i=t.stamp(nn__namespace.literal(o),s);return t.stamp(nn__namespace.property(i,Qo(a,s,t,r),false,false),s)})),n):t.stamp(nn__namespace.literal(e),n)}function Vp(e){let n=new WeakMap,t=[e];for(;t.length>0;){let r=t.pop();ast.forEachChild(r,o=>{n.set(o,r),t.push(o);});}return n}function Up(e,n,t,r){let o=Vp(e),a=new Map,s=l=>{let u=a.get(l);return u===void 0&&(u=languageService.createPositionMap(l),a.set(l,u)),u},i=l=>{let u=l;for(;u!==void 0;){let c=t.get(u);if(c!==void 0)return c;u=o.get(u);}return r.fallback};return n.map(l=>{let u=i(l.node),c=r.textOf?.(u),d=c===void 0?void 0:Qi(s(c),l.node.loc);return {diagnostic:l,anchor:u,...d?{span:d}:{}}})}function Qi(e,n){if(!n?.start)return;let t=a=>e.offsetAt({line:a.line-1,column:a.column}),r=t(n.start),o=n.end?t(n.end):r;return {from:r,to:o<r?r:o}}function Wp(e,n){return Qi(languageService.createPositionMap(e),n)}exports.BINARY_OP=ft;exports.BINARY_OPS=So;exports.DEFAULT_TYPE_LIMITS=Rt;exports.FUNCTION_KINDS=es;exports.INSTANTIATION_COUNT_LIMIT=el;exports.INSTANTIATION_DEPTH_LIMIT=Zi;exports.InstantiationLimitError=Ln;exports.LOGICAL_OPS=xu;exports.TYPE_EVAL_DEPTH_LIMIT=Hi;exports.TypeEvalLimitError=Le;exports.UNARY_OPS=as;exports.UnionTooComplexError=Ve;exports.anchorDiagnostics=Up;exports.annotate=xp;exports.annotateReturn=Tp;exports.apparentType=j;exports.asExpression=Ap;exports.asLiteralOrigin=Ft;exports.baseLiteralType=We;exports.binaryOpsProducing=Tu;exports.bindTypeParams=Sn;exports.calleeAllowlist=lo;exports.capabilityNodes=io;exports.check=ti;exports.childScope=un;exports.collectBindings=Fu;exports.collectMutations=No;exports.collectReferences=Ku;exports.collectUnused=vo;exports.comparable=zt;exports.componentProps=Tc;exports.componentPropsOf=Fo;exports.configureTypeLimits=xr;exports.contextualTypeAt=Nr;exports.contravariantInference=Ea;exports.covariantInference=wa;exports.createAnchors=$p;exports.createEnv=yu;exports.createSink=J;exports.diag=g;exports.diagnosticsAt=Mp;exports.discover=fe;exports.equals=_e;exports.erasedSignature=Kn;exports.expand1=q;exports.extractModuleType=yc;exports.flagAt=la;exports.format=C;exports.formatTypeArgs=ru;exports.formatTypeDiff=ct;exports.freeVars=K;exports.fromCapability=wu;exports.groundVars=Bn;exports.guard=so;exports.guardsFromCompiled=Qt;exports.inferFromCandidates=xa;exports.inferredTypes=Vt;exports.instantiate=Bl;exports.instantiateInContextOf=qr;exports.instantiateLoose=st;exports.isMissingType=Ce;exports.isNumericLiteralName=an;exports.isObjectOrArrayLiteral=Dt;exports.isScheme=H;exports.isSerializable=wn;exports.isVariadicTuple=ua;exports.join=za;exports.joinAll=Yl;exports.lookup=oe;exports.lowerValue=Qo;exports.makeDiagnostic=Z;exports.maxArgs=yo;exports.maxCallNesting=co;exports.maxDepth=fo;exports.maxFunctionNesting=uo;exports.maxNestingOf=Yt;exports.maxNodes=mo;exports.memberCompletions=Pp;exports.memberDepth=po;exports.missingType=mn;exports.normalizeUnion=E;exports.opResultSchema=go;exports.ownProp=te;exports.readonlyMember=to;exports.renameTypeParams=Ur;exports.resetInstantiationCount=Ar;exports.resetTypeLimits=Tr;exports.resolveConditional=he;exports.resolveNamed=Su;exports.resolveOp=le;exports.resolveScheme=gu;exports.resolveTypeOp=L;exports.restIndex=ke;exports.restTypeAtPosition=yn;exports.resultType=ho;exports.rootScope=Qa;exports.s=p;exports.sameSymbol=Vu;exports.sampleValue=Zl;exports.scopeAt=Op;exports.scopeCompletions=jp;exports.silentNever=Ke;exports.spanOf=Wp;exports.substitute=B;exports.subtype=x;exports.typeAt=Yo;exports.typeAtPosition=De;exports.typeDiff=lt;exports.typeFeatures=Zr;exports.typeLimits=be;exports.typeNeedsParens=Ga;exports.typeParamArity=sn;exports.unaryOpsProducing=Au;exports.unify=W;exports.version=uu;exports.visibleNames=oo;exports.widen=xe;exports.widenInferred=_r;exports.widenLiteral=kn;exports.widenOrigin=Me;exports.widenType=vn;exports.withUndefined=ie;exports.withoutUndefined=re;
|
|
1
|
+
'use strict';var ast=require('@tslite/ast'),capability=require('@tslite/capability'),json=require('@tslite/json'),Vn=require('@tslite/ast/builders'),languageService=require('@tslite/language-service');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var Vn__namespace=/*#__PURE__*/_interopNamespace(Vn);var Wu=100,Uu=50,Ku=5e6,Fr={maxTypeDepth:100,maxInstantiationDepth:50,maxInstantiationCount:5e6,maxUnionMembers:1e3,maxOverloadSignatures:200},Ln=Fr;function Wa(e){Ln={...Fr,...e};}function Ua(){Ln=Fr;}function We(){return Ln}var ln=class extends Error{constructor(n=Ln.maxTypeDepth){super(`excessive stack depth comparing types (limit ${n}) \u2014 the comparison is excessively deep or possibly infinite`),this.name="TypeEvalLimitError";}},Jn=class extends Error{constructor(t,r=t==="depth"?Ln.maxInstantiationDepth:Ln.maxInstantiationCount){super(`type instantiation is excessively deep and possibly infinite (${t} limit ${r})`);this.kind=t;this.name="InstantiationLimitError";}};function Ka(){La=0;}var La=0;function qs(){if(La>=Ln.maxInstantiationCount)throw new Jn("count");La++;}var cn=class extends Error{constructor(n,t=Ln.maxUnionMembers){super(`union type is too complex to represent (${n} members exceeds limit ${t})`),this.name="UnionTooComplexError";}};var Gs=Object.prototype.hasOwnProperty,pe=(e,n)=>Gs.call(e,n),w=(e,n)=>Gs.call(e,n)?e[n]:void 0;function v(e,n,t){n==="__proto__"?Object.defineProperty(e,n,{value:t,enumerable:true,writable:true,configurable:true}):e[n]=t;}var Ja=()=>({active:new Set,byScope:new Map});function Lr(e,n,t){let r=new Map(e);for(let a of n)r.set(a.name,t(a));return r}function Xa(e,n,t){let r=Lr(n,e,()=>{}),a=false,o=e.map(s=>{let i=s.bound&&Xe(s.bound,r,t),l=s.default&&Xe(s.default,r,t);return i===s.bound&&l===s.default?s:(a=true,{...s,...i?{bound:i}:{},...l?{default:l}:{}})});return a?o:e}function za(e,n,t){let r=e.typeParams?.length?Xa(e.typeParams,n,t):void 0,a=r?Lr(n,r,l=>l.bound):n,o=_t(e.params,l=>{let c=Xe(l.type,a,t);return c===l.type?l:{...l,type:c}}),s=Xe(e.returns,a,t),i=e.guard&&Xe(e.guard.type,a,t);return o===e.params&&s===e.returns&&i===e.guard?.type&&r===e.typeParams?e:{...e,params:o,returns:s,...e.guard&&i?{guard:{...e.guard,type:i}}:{},...r?{typeParams:r}:{}}}function _t(e,n){let t=false,r=e.map(a=>{let o=n(a);return o!==a&&(t=true),o});return t?r:e}function Xe(e,n,t){if(n.size===0)return e;let r=t.byScope.get(n);r||t.byScope.set(n,r=new Map);let a=r.get(e);if(a)return a;if(t.active.has(e))return e;t.active.add(e);let o=Zs(e,n,t);return t.active.delete(e),r.set(e,o),o}function Zs(e,n,t){let r=a=>Xe(a,n,t);switch(e.t){case "var":{if(!n.has(e.name))return e;let a=n.get(e.name);return a===e.bound&&e.default===void 0?e:a?{t:"var",name:e.name,bound:a}:{t:"var",name:e.name}}case "array":{let a=r(e.items);return a===e.items?e:{...e,items:a}}case "tuple":{let a=_t(e.elements,r);return a===e.elements?e:{...e,elements:a}}case "union":case "intersection":{let a=_t(e.of,r);return a===e.of?e:{...e,of:a}}case "object":{let a=false,o={};for(let l of Object.keys(e.props)){let c=e.props[l],u=r(c.type);u!==c.type&&(a=true),v(o,l,u===c.type?c:{...c,type:u});}let s=e.index&&r(e.index.value),i=!!e.index&&s!==e.index.value;return !a&&!i?e:{...e,props:a?o:e.props,...e.index&&s&&i?{index:{...e.index,value:s}}:{}}}case "fn":return za(e,n,t);case "overload":{let a=_t(e.signatures,o=>za(o,n,t));return a===e.signatures?e:{...e,signatures:a}}case "keyof":{let a=r(e.of);return a===e.of?e:{...e,of:a}}case "index":{let a=r(e.obj),o=r(e.key);return a===e.obj&&o===e.key?e:{...e,obj:a,key:o}}case "mapped":{let a=r(e.over),o=new Map(n);o.set(e.key,void 0);let s=Xe(e.body,o,t);return a===e.over&&s===e.body?e:{...e,over:a,body:s}}case "conditional":{let a=e.infer?.length?Xa(e.infer,n,t):void 0,o=a?Lr(n,a,u=>u.bound):n,s=r(e.check),i=Xe(e.extends,o,t),l=Xe(e.then,o,t),c=Xe(e.else,o,t);return s===e.check&&i===e.extends&&l===e.then&&c===e.else&&a===e.infer?e:{...e,check:s,extends:i,then:l,else:c,...a?{infer:a}:{}}}case "returnType":case "parameters":{let a=r(e.fn);return a===e.fn?e:{...e,fn:a}}case "apply":{let a=_t(e.args,r);return a===e.args?e:{...e,args:a}}default:return e}}function Js(e){return e.typeParams?.length?za(e,new Map,Ja()):e}function zu(e){return e.infer?.length?Zs(e,new Map,Ja()):e}function _u(e){if(!e.params.length)return e;let n=Ja(),t=Xa(e.params,new Map,n),r=Xe(e.body,Lr(new Map,t,a=>a.bound),n);return t===e.params&&r===e.body?e:{params:t,body:r}}var Tn=e=>Object.freeze(e),f={any:Tn({t:"any"}),unknown:Tn({t:"unknown"}),string:Tn({t:"string"}),number:Tn({t:"number"}),boolean:Tn({t:"boolean"}),null:Tn({t:"null"}),undefined:Tn({t:"undefined"}),void:Tn({t:"void"}),nonPrimitive:Tn({t:"nonPrimitive"}),literal:e=>({t:"literal",value:e}),object:(e,n)=>({t:"object",props:e,...n?{index:n}:{}}),record:(e,n="string")=>({t:"object",props:{},index:{key:n,value:e}}),array:(e,n)=>({t:"array",items:e,...n?{readonly:true}:{}}),tuple:(e,n,t)=>({t:"tuple",elements:n?e.map((r,a)=>n[a]==="optional"?Ne(r):r):e,...n&&n.some(r=>r!=="req")?{flags:n}:{},...t?{readonly:true}:{}}),fn:(e,n,t)=>Js({t:"fn",params:e,returns:n,...t?.length?{typeParams:t}:{}}),guard:(e,n,t=0)=>({t:"fn",params:e,returns:{t:"boolean"},guard:{param:t,type:n}}),overload:e=>({t:"overload",signatures:e.map(Js)}),keyof:e=>({t:"keyof",of:e}),index:(e,n)=>({t:"index",obj:e,key:n}),mapped:(e,n,t,r={})=>({t:"mapped",key:e,over:n,body:t,...r.optional?{optional:true}:{},...r.readonly?{readonly:true}:{},...r.excludeOptional?{excludeOptional:true}:{},...r.excludeReadonly?{excludeReadonly:true}:{}}),conditional:(e,n,t,r,a)=>zu({t:"conditional",check:e,extends:n,then:t,else:r,...a&&a.length?{infer:a}:{}}),scheme:(e,n)=>_u({params:e,body:n}),intersection:e=>xe({of:e}),and:(e,n)=>xe({of:[e,n]}),returnType:e=>({t:"returnType",fn:e}),parameters:e=>({t:"parameters",fn:e}),var:(e,n)=>({t:"var",name:e,...n?{bound:n}:{}}),typeParam:(e,n={})=>({t:"var",name:e,...n.bound?{bound:n.bound}:{},...n.default?{default:n.default}:{}}),typeQuery:e=>({t:"typeQuery",path:e}),apply:(e,n=[])=>({t:"apply",name:e,args:n}),promise:e=>({t:"apply",name:"Promise",args:[e]}),union:e=>{let n=[],t=a=>{a.t==="union"?a.of.forEach(t):n.push(a);};if(e.forEach(t),n.some(a=>a.t==="any"))return {t:"any"};if(n.some(a=>a.t==="unknown"))return {t:"unknown"};let r=qu(n);return r.length===1?r[0]:{t:"union",of:r}}};function Hn(e){switch(e.t){case "string":case "number":case "boolean":case "null":case "undefined":case "void":return e.t;case "literal":return `#${typeof e.value}:${String(e.value)}`;default:return null}}function qu(e){let n=[],t=new Map;for(let i of e){let l=Hn(i);if(l===null){n.includes(i)||n.push(i);continue}let c=t.get(l);c===void 0?(t.set(l,n.length),n.push(i)):i.t==="literal"&&!i.fresh&&(n[c]=i);}let r=i=>i.t==="literal"&&t.has(typeof i.value),a=!t.has("boolean")&&t.has("#boolean:true")&&t.has("#boolean:false"),o=false,s=[];for(let i of n)if(!r(i)){if(a&&i.t==="literal"&&typeof i.value=="boolean"){o||s.push({t:"boolean"}),o=true;continue}s.push(i);}return s}function Y(e){return e.t==="keyof"?Ga(e.of)??e:e.t==="index"?Vr(e.obj,e.key)??e:e.t==="returnType"?Gu(e.fn)??e:e.t==="parameters"?Ju(e.fn)??e:e}var $r={t:"union",of:[]},_a=e=>e.t==="union"&&e.of.length===0;function Gu(e){return e.t==="fn"?e.returns:e.t==="overload"&&e.signatures.length>0?e.signatures[e.signatures.length-1].returns:null}function Ne(e){if(e.t==="undefined"||e.t==="any"||e.t==="unknown")return e;let n=e.t==="union"?e.of:[e];return n.some(t=>t.t==="undefined")?e:f.union([...n,{t:"undefined"}])}function Ju(e){let n=e.t==="fn"?e:e.t==="overload"&&e.signatures.length>0?e.signatures[e.signatures.length-1]:null;return n?Bt(n,0):null}function qt(e){let n=[],t=[],r;for(let a of e.params){if(!a.variadic){n.push(a.optional?Ne(a.type):a.type),t.push(a.optional?"optional":"req");continue}let o=a.type;o.t==="tuple"?o.elements.forEach((s,i)=>{let l=o.flags?.[i]??"req";l==="rest"&&(r=f.array(s)),n.push(l==="optional"?Ne(s):s),t.push(l);}):(r=o,n.push(o.t==="array"?o.items:o.t==="any"?o:f.index(o,f.number)),t.push("rest"));}return {types:n,flags:t,rest:r}}function Bt(e,n){let{types:t,flags:r,rest:a}=qt(e),o=t.length-(a?1:0);if(a&&n===o)return a;let s=r.findIndex(p=>p!=="req"),i=s<0?t.length:s,l=i<n?0:i-n,c=[],u=[];for(let p=n;p<t.length;p++)c.push(t[p]),u.push(a&&p===o?"rest":p-n<l?"req":"optional");return f.tuple(c,u)}var qa=e=>e.t==="literal"?typeof e.value:e.t==="string"||e.t==="number"||e.t==="boolean"?e.t:null;function Xs(e,n){return e.t==="literal"&&n.t==="literal"?e.value===n.value:e.t==="literal"&&(n.t==="string"||n.t==="number"||n.t==="boolean")?typeof e.value===n.t:e.t===n.t&&(e.t==="string"||e.t==="number"||e.t==="boolean")}function Hs(e){return e.t==="null"||e.t==="undefined"?e.t:e.t==="nonPrimitive"?"nonPrimitive":qa(e)?"scalar":e.t==="object"||e.t==="array"||e.t==="tuple"||e.t==="fn"||e.t==="overload"?"object":null}var Qs=e=>e.t==="object"&&!e.index&&Object.keys(e.props).length===0;function xe(e){let n=[],t=s=>{let i=Y(s);i.t==="intersection"?i.of.forEach(t):n.push(i);};if(e.of.forEach(t),n.some(s=>s.t==="any"))return f.any;if(n.some(_a))return $r;let r=s=>n.some(i=>Hs(i)===s);if(r("null")&&(r("undefined")||r("scalar")||r("object")||r("nonPrimitive"))||r("undefined")&&(r("scalar")||r("object")||r("nonPrimitive"))||r("nonPrimitive")&&r("scalar"))return $r;if(n.some(s=>Hs(s)==="object"&&!Qs(s)))for(let s=n.length-1;s>=0;s--)Qs(n[s])&&n.splice(s,1);let a=n.findIndex(s=>s.t==="union");if(a>=0){let s=n.reduce((i,l)=>i*(l.t==="union"?l.of.length:1),1);if(s>We().maxUnionMembers)throw new cn(s);return f.union(n[a].of.map(i=>xe({of:n.map((l,c)=>c===a?i:l)})))}let o=[];for(let s of n){if(s.t==="any")return f.any;if(_a(s))return $r;if(s.t!=="unknown"){if(qa(s)){let i=false;for(let l=o.length-1;l>=0;l--){let c=o[l];if(qa(c)){if(Xs(c,s)){i=true;break}if(Xs(s,c))o.splice(l,1);else return $r}}if(i)continue}else if(o.some(i=>i===s))continue;o.push(s);}}return o.length===0?f.unknown:o.length===1?o[0]:{t:"intersection",of:o}}function Ga(e){if(e.t==="union"&&e.of.length>0){let t=e.of.map(Ga);return t.some(r=>r===null)?null:Xu(t)}if(e.t==="intersection"){let t=e.of.map(Ga);return t.some(r=>r===null)?null:f.union(t)}if(e.t==="unknown")return {t:"union",of:[]};if(e.t==="any"||e.t==="union"&&e.of.length===0)return {t:"union",of:[f.string,f.number]};if(e.t==="nonPrimitive")return {t:"union",of:[]};if(e.t==="array"||e.t==="tuple")return f.number;if(e.t==="fn"||e.t==="overload")return {t:"union",of:[]};if(e.t!=="object")return null;if(e.index?.key==="string")return f.union([f.string,f.number]);let n=Object.keys(e.props).map(t=>f.literal(t));return e.index?.key==="number"?f.union([f.number,...n]):n.length===0?{t:"union",of:[]}:f.union(n)}function Xu(e){let n=o=>o.t==="literal"&&typeof o.value=="string"?[o.value]:o.t==="union"?o.of.flatMap(n):[],t=e.filter(o=>o.t!=="string"&&o.t!=="number").map(n);if(t.length===0)return e[0];let r=t[0].filter(o=>t.every(s=>s.includes(o))),a=[...new Set(r)].map(o=>f.literal(o));return a.length===0?{t:"union",of:[]}:f.union(a)}var Xn=Object.freeze({t:"unknown"}),un=e=>e===Xn,Ys=e=>e.t==="var"||e.t==="apply"||e.t==="mapped"||e.t==="conditional"||e.t==="keyof"||e.t==="index"||e.t==="returnType"||e.t==="parameters"||e.t==="typeQuery";function Vr(e,n){if(e=Y(e),n=Y(n),n.t==="union"){let t=[],r=false;for(let a of n.of){let o=Vr(e,a);if(o===null)return null;un(o)?r=true:t.push(o);}return r?Xn:f.union(t)}if(Ys(n))return null;if(e.t==="any"||_a(e))return e;if(e.t==="intersection"){let t=[];for(let r of e.of){let a=Vr(Y(r),n);if(a===null)return null;un(a)||t.push(a);}return t.length===0?Xn:t.length===1?t[0]:xe({of:t})}if(e.t==="union"){let t=[];for(let r of e.of){let a=Y(r);if(a.t==="any")return a;let o=Vr(a,n);if(o===null)return null;if(un(o))return Xn;t.push(o);}return f.union(t)}if(e.t==="object"){if(n.t==="literal"&&(typeof n.value=="string"||typeof n.value=="number")){let t=Be(e.props,String(n.value));return t?t.optional?Ne(t.type):t.type:typeof n.value=="number"&&e.index?.key==="number"||e.index?.key==="string"?e.index.value:Xn}if(n.t==="string"||n.t==="number"){let r=n.t==="number"&&e.index?.key==="number"||false||e.index?.key==="string"?e.index:void 0;if(r)return r.value}}if(e.t==="tuple"){let t=e.flags?.findIndex(a=>a==="rest")??-1,r=t>=0?t:e.elements.length;if(n.t==="literal"&&typeof n.value=="string"&&Wn(n.value)&&+n.value>=0){let a=+n.value;return Number.isInteger(a)&&a<r?e.elements[a]:t>=0?e.elements[t]:f.undefined}if(n.t==="literal"&&typeof n.value=="number")return n.value<r?e.elements[n.value]:t>=0?e.elements[t]:f.undefined;if(n.t==="number")return e.elements.length?f.union([...e.elements]):f.undefined}return e.t==="array"&&(n.t==="number"||n.t==="literal"&&typeof n.value=="number")?e.items:Ys(e)?null:Xn}var Wr=e=>(e.t==="object"||e.t==="array"||e.t==="tuple")&&!!e.fromLiteral,Ur=e=>e.t==="object"||e.t==="array"||e.t==="tuple"?e.fromLiteral?e:{...e,fromLiteral:true}:e,Be=(e,n)=>w(e,n);function Oe(e){if(e.t==="undefined")return {type:{t:"union",of:[]},hadUndefined:true};if(e.t==="union"&&e.of.some(n=>n.t==="undefined")){let n=e.of.filter(t=>t.t!=="undefined");return {type:f.union(n),hadUndefined:true}}return {type:e,hadUndefined:false}}var Wn=e=>(+e).toString()===e;var ei=(e,n)=>e.flags?.[n]??"req",Qn=(e,n)=>ei(e,n)==="optional"?Ne(e.elements[n]):e.elements[n],Ha=e=>e.elements.map((n,t)=>Qn(e,t)),ni=e=>e.flags?.[e.elements.length-1]==="rest",Ue=e=>ni(e)?e.elements.length-1:-1,Gt=e=>{if(!e.flags)return e.elements.length;let n=e.flags.findIndex(t=>t!=="req");return n<0?e.elements.length:n};function ti(e,n,t,r=false){let a=Ue(e),o=Ue(n);if(!r&&Gt(e)<Gt(n))return false;if(o<0){if(a>=0)return false;let c=Gt(n);return e.elements.length<c||e.elements.length>n.elements.length?false:e.elements.every((u,p)=>t(Qn(e,p),Qn(n,p)))}let s=n.elements[o],i=c=>c<o?Qn(n,c):s;if(a<0)return e.elements.length<Gt(n)?false:e.elements.every((c,u)=>t(Qn(e,u),i(u)));if(a===0&&o!==0||a<Gt(n))return false;let l=e.elements[a];for(let c=0;c<a;c++)if(!t(Qn(e,c),i(c)))return false;for(let c=a;c<o;c++)if(!t(l,Qn(n,c)))return false;return t(l,s)}function j(e,n,t=new WeakSet){return qs(),Hu(e,n,t)}function Hu(e,n,t){if(e.t!=="keyof"&&e.t!=="index"&&e.t!=="mapped"&&e.t!=="intersection"&&e.t!=="returnType"&&e.t!=="parameters"&&!Yu(se(e),n))return e;switch(e.t){case "var":{let r=w(n,e.name);return r||Ya(e,n,t)}case "array":return {...e,items:j(e.items,n,t)};case "tuple":{let r=e.elements.map(a=>j(a,n,t));return {...e,elements:r}}case "union":return f.union(e.of.map(r=>j(r,n,t)));case "object":{if(t.has(e))return e;t.add(e);let r={};for(let o in e.props){let s=e.props[o];v(r,o,{type:j(s.type,n,t),optional:s.optional,...s.readonly?{readonly:true}:{}});}let a=e.index?{key:e.index.key,value:j(e.index.value,n,t),...e.index.readonly?{readonly:true}:{}}:void 0;return t.delete(e),a?{t:"object",props:r,index:a}:{t:"object",props:r}}case "fn":{if(t.has(e))return e;t.add(e);let r=Za(e,n,t);return t.delete(e),r}case "overload":return {t:"overload",signatures:e.signatures.map(r=>Za(r,n,t))};case "apply":return {t:"apply",name:e.name,args:e.args.map(r=>j(r,n,t))};case "keyof":return Y({t:"keyof",of:j(e.of,n,t)});case "index":return Y({t:"index",obj:j(e.obj,n,t),key:j(e.key,n,t)});case "mapped":{let r=eo([f.typeParam(e.key)],n,se(e),t),a=e.over.t==="keyof"?{t:"keyof",of:j(e.over.of,n,t)}:j(e.over,n,t),o=e.modifiers??(e.over.t==="var"&&e.over.bound?.t==="keyof"?e.over.bound.of:void 0),s=e.typeVariable||e.over.t==="keyof"&&e.over.of.t==="var",i={t:"mapped",key:r.decls[0].name,over:a,body:j(e.body,r.inner,t),...ep(e),...o?{modifiers:j(o,n,t)}:{},...s?{typeVariable:true}:{}};return Jt(i)??i}case "conditional":{if(e.check.t==="var"){let o=e.check.name,s=w(n,o),i=s?Y(s):void 0,l=i?.t==="union"?i.of:i?.t==="boolean"?[f.literal(true),f.literal(false)]:null;if(l)return {t:"union",of:l.map(c=>j(e,{...n,[o]:c},t))}}let r=e.distributive||e.check.t==="var"&&pe(n,e.check.name)&&w(n,e.check.name)?.t!=="var",a=e.infer?.length?eo(e.infer,n,se(e),t):{inner:n,decls:void 0};return {t:"conditional",check:j(e.check,n,t),extends:j(e.extends,a.inner,t),then:j(e.then,a.inner,t),else:j(e.else,a.inner,t),...a.decls?{infer:a.decls}:{},...r?{distributive:true}:{}}}case "intersection":return xe({of:e.of.map(r=>j(r,n,t))});case "returnType":return Y({t:"returnType",fn:j(e.fn,n,t)});case "parameters":return Y({t:"parameters",fn:j(e.fn,n,t)});default:return e}}function Ya(e,n,t,r=e.name){return !e.bound&&!e.default&&r===e.name?e:{...e,name:r,...e.bound?{bound:j(e.bound,n,t)}:{},...e.default?{default:j(e.default,n,t)}:{}}}function Za(e,n,t,r){let a=e.typeParams?.length?eo(e.typeParams,n,se(e),t,r):{inner:n,decls:void 0},o=a.inner;return {...e,params:e.params.map(s=>({...s,type:j(s.type,o,t)})),returns:j(e.returns,o,t),...e.guard?{guard:{...e.guard,type:j(e.guard.type,o,t)}}:{},...a.decls?{typeParams:a.decls}:{}}}function to(e,n){return e.typeParams?.some(t=>n.has(t.name))?Za(e,{},new WeakSet,n):e}function eo(e,n,t,r,a=new Set){let o=new Set(e.map(y=>y.name)),s={},i=new Set;for(let y in n)if(!o.has(y)&&(v(s,y,n[y]),t.has(y)))for(let m of se(n[y]))i.add(m);let l=e.filter(y=>i.has(y.name)||a.has(y.name));if(l.length===0)return {inner:s,decls:e.map(y=>Ya(y,s,r))};let c=new Set([...o,...t,...i,...a]),u=new Map;for(let y of l){let m=1;for(;c.has(`${y.name}_${m}`);)m++;let h=`${y.name}_${m}`;c.add(h),u.set(y.name,h);}let p={};for(let[y,m]of u)v(p,y,{t:"var",name:m});let d={...s};for(let y of l){let m=u.get(y.name);v(d,y.name,{t:"var",name:m,...y.bound?{bound:j(y.bound,{...s,...p},r)}:{}});}return {inner:d,decls:e.map(y=>Ya(y,d,r,u.get(y.name)??y.name))}}var Qu=new Set,ri=new WeakMap;function se(e){let n=ri.get(e);if(n)return n;let t=new Set;ee(e,t,new WeakSet);let r=t.size===0?Qu:t;return ri.set(e,r),r}function no(e,n,t){let r=new Set;t(r);for(let a of r)e.includes(a)||n.add(a);}function ai(e,n,t){let r=e.typeParams??[];no(r.map(a=>a.name),n,a=>{for(let o of r)ee(o,a,t);for(let o of e.params)ee(o.type,a,t);ee(e.returns,a,t),e.guard&&ee(e.guard.type,a,t);});}function ee(e,n,t){switch(e.t){case "var":n.add(e.name),e.bound&&ee(e.bound,n,t),e.default&&ee(e.default,n,t);return;case "array":ee(e.items,n,t);return;case "tuple":for(let r of e.elements)ee(r,n,t);return;case "union":for(let r of e.of)ee(r,n,t);return;case "object":if(t.has(e))return;t.add(e);for(let r in e.props)ee(e.props[r].type,n,t);e.index&&ee(e.index.value,n,t);return;case "fn":if(t.has(e))return;t.add(e),ai(e,n,t);return;case "overload":for(let r of e.signatures)ai(r,n,t);return;case "apply":for(let r of e.args)ee(r,n,t);return;case "keyof":ee(e.of,n,t);return;case "index":ee(e.obj,n,t),ee(e.key,n,t);return;case "mapped":ee(e.over,n,t),e.modifiers&&ee(e.modifiers,n,t),no([e.key],n,r=>ee(e.body,r,t));return;case "conditional":{ee(e.check,n,t);let r=e.infer??[];no(r.map(a=>a.name),n,a=>{for(let o of r)ee(o,a,t);ee(e.extends,a,t),ee(e.then,a,t),ee(e.else,a,t);});return}case "intersection":for(let r of e.of)ee(r,n,t);return;case "returnType":case "parameters":ee(e.fn,n,t);return;default:return}}function Yu(e,n){if(e.size===0)return false;for(let t of e)if(pe(n,t))return true;return false}function Kr(e){let n=[];for(let o of e){let s=Y(o);if(s.t!=="object")return null;n.push(s);}let t=new Set;for(let o of n)for(let s in o.props)t.add(s);let r={};for(let o of t){let s=[],i=true,l=false;for(let c of n){let u=w(c.props,o);u&&(s.push(u.type),u.optional||(i=false),u.readonly&&(l=true));}v(r,o,{type:xe({of:s}),optional:i,...l?{readonly:true}:{}});}let a;for(let o of n)o.index&&(a=a?{key:a.key,value:xe({of:[a.value,o.index.value]}),...a.readonly&&o.index.readonly?{readonly:true}:{}}:o.index);return a?{t:"object",props:r,index:a}:{t:"object",props:r}}function Jt(e,n=Y,t=Y){if(e.typeVariable&&e.over.t==="keyof"&&e.over.of.t!=="var"){let s=np(e,n(e.over.of),n,t);if(s!==void 0)return s}if(e.over.t==="keyof"){let s=n(e.over.of),i=s.t==="intersection"?Kr(s.of)??s:s;if(i.t==="object")return Qa(e,i,Object.keys(i.props),i.index?.key,t);if(i.t==="any")return Qa(e,void 0,[],"string",t)}let r=Zu(Y(e.over));if(r===null)return null;let a=e.modifiers?n(e.modifiers):void 0,o=a?.t==="intersection"?Kr(a.of)??a:a;return Qa(e,o?.t==="object"?o:void 0,r.names,r.index,t)}function Zu(e){let n=[],t;for(let r of e.t==="union"?e.of:[e])switch(r.t){case "literal":(typeof r.value=="string"||typeof r.value=="number")&&n.push(r.value);continue;case "string":case "any":t="string";continue;case "number":t!=="string"&&(t="number");continue;case "var":case "apply":case "keyof":case "index":case "mapped":case "conditional":case "returnType":case "parameters":case "typeQuery":return null;case "intersection":if(se(r).size>0)return null;continue;default:continue}return {names:n,index:t}}function Qa(e,n,t,r,a){let o={};for(let i of t){let l=String(i),c=n?w(n.props,l):void 0,u=!!e.optional||!e.excludeOptional&&!!c?.optional,p=!!e.readonly||!e.excludeReadonly&&!!c?.readonly,d=j(e.body,{[e.key]:f.literal(i)});if(!u&&c?.optional){let y=a(d);if(si(y))return null;d=Oe(y).type;}v(o,l,{type:d,...u?{optional:true}:{},...p?{readonly:true}:{}});}if(r===void 0)return {t:"object",props:o};let s=j(e.body,{[e.key]:r==="number"?f.number:f.string});return {t:"object",props:o,index:{key:r,value:e.optional?Ne(s):s,...e.readonly?{readonly:true}:{}}}}var si=e=>e.t==="index"||e.t==="keyof"||e.t==="mapped"||e.t==="conditional"||e.t==="returnType"||e.t==="parameters"||e.t==="apply"||e.t==="typeQuery",ep=e=>({...e.optional?{optional:true}:{},...e.readonly?{readonly:true}:{},...e.excludeOptional?{excludeOptional:true}:{},...e.excludeReadonly?{excludeReadonly:true}:{}});function np(e,n,t,r){let a=o=>e.readonly?true:e.excludeReadonly?false:!!o;switch(n.t){case "union":{let o=e.over.of;return f.union(n.of.map(s=>{let i={...e,over:{t:"keyof",of:s},body:Xt(e.body,o,s)};return Jt(i,t,r)??i}))}case "array":{let o=oi(e,f.number,true,r);return o===null?null:f.array(o,a(n.readonly))}case "tuple":{let o=n.flags??n.elements.map(()=>"req"),s=[];for(let l=0;l<n.elements.length;l++){let c=oi(e,f.literal(String(l)),o[l]==="optional",r);if(c===null)return null;s.push(c);}let i=o.map(l=>l==="rest"?"rest":e.optional?"optional":e.excludeOptional?"req":l);return f.tuple(s,i,a(n.readonly))}case "string":case "number":case "boolean":case "literal":case "null":case "undefined":case "void":case "nonPrimitive":return n;default:return}}function Xt(e,n,t){let r=new Map,a=o=>{if(o===n)return t;if(o===null||typeof o!="object")return o;let s=r.get(o);if(s!==void 0)return s;r.set(o,o);let i=false,l;if(Array.isArray(o)){let c=o.map(u=>{let p=a(u);return p!==u&&(i=true),p});l=i?c:o;}else {let c={};for(let u of Object.keys(o)){let p=w(o,u),d=a(p);d!==p&&(i=true),v(c,u,d);}l=i?c:o;}return r.set(o,l),l};return a(e)}function oi(e,n,t,r){let a=j(e.body,{[e.key]:n});if(e.optional)return Ne(a);if(e.excludeOptional&&t){let o=r(a);return si(o)?null:Oe(o).type}return a}function pn(e){let n=e.length;for(;n>0&&e[n-1].default;)n--;return {min:n,max:e.length}}var ii=(e,n)=>{let{min:t,max:r}=pn(e);return n>=t&&n<=r};function Yn(e,n){let t={};return e.forEach((r,a)=>{a<n.length?v(t,r.name,n[a]):r.default&&v(t,r.name,j(r.default,t));}),t}function de(e,n){if(e.t!=="apply")return false;let t=w(n,e.name);return t!==void 0&&ii(t.params,e.args.length)}function fe(e,n){if(e.t!=="apply")return e;let t=w(n,e.name);return !t||!ii(t.params,e.args.length)?e:j(t.body,Yn(t.params,e.args))}function be(e){switch(e.t){case "literal":return `#${typeof e.value}:${String(e.value)}`;case "object":{let n=Object.keys(e.props).sort().map(r=>`${r}${e.props[r].optional?"?":""}:${be(e.props[r].type)}`).join(","),t=e.index?`,[${e.index.key}]:${be(e.index.value)}`:"";return `{${n}${t}}`}case "array":return `[${be(e.items)}]`;case "tuple":return `#tuple(${e.elements.map(be).join(",")})`;case "union":return `(${e.of.map(be).sort().join("|")})`;case "fn":return `${e.typeParams?.length?`<${e.typeParams.map(t=>t.name).join(",")}>`:""}(${e.params.map(t=>be(t.type)).join(",")})=>${e.guard?`is${e.guard.param}:${be(e.guard.type)}`:be(e.returns)}`;case "var":return `v:${e.name}`;case "apply":return `${e.name}<${e.args.map(be).join(",")}>`;case "intersection":return `&(${e.of.map(be).sort().join("&")})`;case "returnType":return `RT<${be(e.fn)}>`;default:return e.t}}var ro=()=>We().maxInstantiationDepth;function I(e,n={},t=0){if(t>ro())return e;if(e.t==="var")return e.bound?I(e.bound,n,t+1):e;if(de(e,n))return I(fe(e,n),n,t+1);if(e.t==="mapped"){let r=Qt(e,n,t+1);if(r)return I(r,n,t+1)}if(e.t==="intersection")return xe(e);if(e.t==="union"){let r=e.of.flatMap(o=>{let s=I(o,n,t+1);return s.t==="union"?s.of:[s]});return r.length===e.of.length&&r.every((o,s)=>o===e.of[s])?e:{t:"union",of:r}}return e}function Qt(e,n,t=0){let r=o=>I(o,n,t),a=o=>Zn(o,n,t);return Jt(e,r,a)??Jt({...e,over:Ht(e.over,n,t)},r,a)}function Ht(e,n,t=0){if(t>ro())return e;let r=ke(e,n);if(r!==e)return Ht(r,n,t+1);if(e.t==="conditional"){let a=Ie(e,n);if(a)return Ht(a,n,t+1)}return de(e,n)?Ht(fe(e,n),n,t+1):e.t==="union"?C(e.of.map(a=>Ht(a,n,t+1))):e}function Zn(e,n,t=0){if(t>ro())return e;let r=ke(e,n);if(r!==e)return Zn(r,n,t+1);let a=I(e,n,t);return a===e?e:Zn(a,n,t+1)}function ke(e,n={}){let t=Y(e);if(t!==e)return t;switch(e.t){case "keyof":{let r=Zn(e.of,n);return r===e.of?e:Y({...e,of:r})}case "index":{let r=Zn(e.obj,n),a=Zn(e.key,n);return r===e.obj&&a===e.key?e:Y({...e,obj:r,key:a})}case "returnType":{let r=Zn(e.fn,n);return r===e.fn?e:Y({...e,fn:r})}default:return e}}var zr=e=>typeof e=="string"?f.string:typeof e=="number"?f.number:f.boolean;function He(e){return e.t==="literal"&&e.fresh?zr(e.value):e}function En(e){if(e.t==="literal")return e.fresh?zr(e.value):e;if(e.t==="union"){let n=e.of.map(En);return n.some((t,r)=>t!==e.of[r])?C(n):e}return e}function $e(e){if(e.t==="literal")return zr(e.value);if(e.t==="union"){let n=e.of.map($e);return n.some((t,r)=>t!==e.of[r])?C(n):e}return e}function nt(e){return Fe(e,new WeakSet)}function ao(e){switch(e.t){case "array":return {t:"array",items:Fe(e.items,new WeakSet),...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "tuple":return {t:"tuple",elements:e.elements.map(n=>Fe(n,new WeakSet)),...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "object":return ui(e,new WeakSet);case "fn":case "overload":return Fe(e,new WeakSet);default:return e}}function Fe(e,n){if(e.t==="literal")return e.fresh?zr(e.value):e;if(n.has(e))return e;switch(e.t){case "array":return n.add(e),{t:"array",items:Fe(e.items,n),...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "tuple":return n.add(e),{t:"tuple",elements:e.elements.map(t=>Fe(t,n)),...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{},...e.fromLiteral?{fromLiteral:true}:{}};case "object":return n.add(e),ui(e,n);case "apply":return n.add(e),{t:"apply",name:e.name,args:e.args.map(t=>Fe(t,n))};case "fn":return n.add(e),{...e,params:e.params.map(t=>({...t,type:Fe(t.type,n)})),returns:Fe(e.returns,n),...e.guard?{guard:{param:e.guard.param,type:Fe(e.guard.type,n)}}:{}};case "overload":return n.add(e),{t:"overload",signatures:e.signatures.map(t=>Fe(t,n))};default:return e}}function ui(e,n){let t={};for(let s in e.props)v(t,s,{type:Fe(e.props[s].type,n),optional:e.props[s].optional,...e.props[s].readonly?{readonly:true}:{}});let r=e.index?{key:e.index.key,value:Fe(e.index.value,n),...e.index.readonly?{readonly:true}:{}}:void 0,a=e.fromLiteral?{fromLiteral:true}:{},o=e.hasSpread?{hasSpread:true}:{};return r?{t:"object",props:t,index:r,...a,...o}:{t:"object",props:t,...a,...o}}function pi(e){if(!e.siblings){let n=[];for(let t of pi(e.parent)){if(t.t!=="object"||!t.fromLiteral)continue;let r=Be(t.props,e.propertyName);r&&(r.type.t==="union"?n.push(...r.type.of):n.push(r.type));}e.siblings=n;}return e.siblings}function tp(e){if(!e.propNames){let n=new Set;for(let t of pi(e))if(t.t==="object"&&t.fromLiteral&&!t.hasSpread)for(let r in t.props)n.add(r);e.propNames=[...n];}return e.propNames}var rp=e=>e.t==="object"&&!e.index&&Object.keys(e.props).length===0;function ap(e,n,t){let r={};for(let o in e.props){let s=e.props[o],i=et(s.type,n&&{parent:n,propertyName:o},t);v(r,o,i===s.type?s:{...s,type:i});}if(n)for(let o of tp(n))Be(r,o)||v(r,o,{type:f.undefined,optional:true});let a=e.index?{key:e.index.key,value:et(e.index.value,void 0,t),...e.index.readonly?{readonly:true}:{}}:void 0;return a?{t:"object",props:r,index:a}:{t:"object",props:r}}var li=new WeakMap;function kt(e,n){let t=li.get(e);if(t!==void 0)return t;if(n.has(e))return false;n.add(e);let r=false;switch(e.t){case "object":r=!!e.fromLiteral||Object.values(e.props).some(a=>kt(a.type,n))||!!e.index&&kt(e.index.value,n);break;case "array":r=!!e.fromLiteral||kt(e.items,n);break;case "tuple":r=!!e.fromLiteral||e.elements.some(a=>kt(a,n));break;case "union":case "intersection":r=e.of.some(a=>kt(a,n));break}return n.delete(e),li.set(e,r),r}var ci=new WeakMap;function et(e,n,t){if(!kt(e,new WeakSet))return e;if(!n){let a=ci.get(e);if(a)return a}if(t.has(e))return e;t.add(e);let r=op(e,n,t);return t.delete(e),n||ci.set(e,r),r}function op(e,n,t){switch(e.t){case "object":return e.fromLiteral?ap(e,n,t):e;case "union":{let r=n??{siblings:e.of},a=e.of.map(o=>o.t==="null"||o.t==="undefined"?o:et(o,r,t));return a.some(rp)?C(a):a.every((o,s)=>o===e.of[s])?e:f.union(a)}case "intersection":{let r=false,a=e.of.map(o=>{let s=et(o,void 0,t);return s!==o&&(r=true),s});return r?f.intersection(a):e}case "array":{let r=et(e.items,void 0,t);return r===e.items&&!e.fromLiteral?e:{t:"array",items:r,...e.readonly?{readonly:true}:{}}}case "tuple":{let r=false,a=e.elements.map(o=>{let s=et(o,void 0,t);return s!==o&&(r=true),s});return !r&&!e.fromLiteral?e:{t:"tuple",elements:a,...e.flags?{flags:e.flags}:{},...e.readonly?{readonly:true}:{}}}default:return e}}function Qe(e){return et(e,void 0,new WeakSet)}var Un=Object.freeze({t:"union",of:Object.freeze([])});function An(e){if(e===Un)return true;switch(e.t){case "array":return An(e.items);case "tuple":return e.elements.some(An);case "union":case "intersection":return e.of.some(An);case "apply":return e.args.some(An);case "object":return !!e.fromLiteral&&(Object.values(e.props).some(n=>An(n.type))||!!e.index&&An(e.index.value));default:return false}}var me={NakedTypeVariable:1,HomomorphicMappedType:2,PartialHomomorphicMappedType:4,MappedTypeConstraint:8,ContravariantConditional:16,ReturnType:32,LiteralKeyof:64,NoConstraints:128,AlwaysStrict:256,MaxValue:512,PriorityImpliesCombination:104,Circularity:-1};function wt(e){let n=new Map;for(let t of e??[])n.set(t.name,{co:[],contra:[]});return n}function sp(e){if(e.length<=1)return [...e];let n=e.filter(Wr);return n.length?[...e.filter(t=>!Wr(t)),C(n)]:[...e]}function ip(e){let n;for(let t of e){if(t.t!=="literal")return false;let r=typeof t.value;if(n===void 0)n=r;else if(r!==n)return false}return true}function lp(e,n){if(e.length)return ip(e)?C([...e]):e.reduce((t,r)=>L(t,r,n)?r:t)}function yi(e,n={},t=false){let r=sp(e);if(t)return r.length?Qe(C(r)):void 0;let a=r.filter(i=>i.t==="null"||i.t==="undefined"),o=r.filter(i=>i.t!=="null"&&i.t!=="undefined");if(!o.length)return Qe(C(r));let s=lp(o,n);if(s!==void 0)return Qe(a.length?C([s,...a]):s)}function hi(e,n={},t=false){if(e.length)return t?f.intersection(e):e.reduce((r,a)=>L(a,r,n)?a:r)}var cp=e=>e.priority!==void 0&&(e.priority&me.PriorityImpliesCombination)!==0;function Si(e,n={}){let t=cp(e),r=e.co.length?yi(e.co,n,t):void 0;if(!e.contra.length)return r;let a=hi(e.contra,n,t);if(a===void 0)return r;let o=r!==void 0&&r.t==="union"&&r.of.length===0;return r!==void 0&&!o&&L(r,a,n)?r:a}function fo(e,n){let{typeParams:t,...r}=e;return {...r,params:e.params.map(a=>({...a,type:j(a.type,n)})),returns:j(e.returns,n),...e.guard?{guard:{...e.guard,type:j(e.guard.type,n)}}:{}}}function Yt(e){return e.typeParams?.length?fo(e,Object.fromEntries(e.typeParams.map(n=>[n.name,f.any]))):e}function up(e){let n=e.typeParams;if(!n?.length)return e;let t=Object.fromEntries(n.map(o=>[o.name,o.bound??f.unknown])),r=n.map(o=>o.bound??f.unknown);for(let o=0;o<n.length-1;o++)r=r.map(s=>j(s,t));let a=Object.fromEntries(n.map(o=>[o.name,f.any]));return r=r.map(o=>j(o,a)),fo(e,Object.fromEntries(n.map((o,s)=>[o.name,r[s]])))}function Gr(e,n,t={}){if(!e.some(a=>!w(n,a.name)||a.bound))return n;let r={...n};for(let a of e){let o=w(r,a.name)??(a.default?j(a.default,r):f.unknown);if(a.bound){let s=j(a.bound,r);L(o,s,t)||(o=s);}v(r,a.name,o);}return r}var io=(e,n)=>n<e.types.length?e.types[n]:e.rest?e.types[e.types.length-1]:void 0;function gi(e,n,t){let r=qt(e),a=qt(n),o=a.types.length-(a.rest?1:0),s=r.rest?o:Math.min(r.types.length,o);for(let i=0;i<s;i++){let l=io(r,i),c=io(a,i);l&&c&&t(l,c);}a.rest&&t(Bt(e,s),a.rest);}function bi(e,n,t){e.guard&&n.guard&&e.guard.param===n.guard.param?t(e.guard.type,n.guard.type):t(e.returns,n.returns);}var lo=e=>e.t==="fn"?[e]:e.t==="overload"?e.signatures:[],Ni=e=>se(e).size>0,tt=e=>e.t==="union"&&e.of.length>0,co=e=>tt(e)?e.of:[e];function uo(e,n){if(e===n)return true;if(e.t==="var"&&n.t==="var")return e.name===n.name;let t=Hn(e);return t!==null&&t===Hn(n)}var pp=(e,n)=>uo(e,n)||e.t==="literal"&&(n.t==="string"&&typeof e.value=="string"||n.t==="number"&&typeof e.value=="number"),dp=(e,n,t)=>e.t==="apply"&&n.t==="apply"&&e.name===n.name&&(e.args.length>0||!de(e,t)),di=e=>e.t==="object"||e.t==="array"||e.t==="tuple"||e.t==="fn"||e.t==="overload"||e.t==="mapped"||e.t==="intersection",fp=e=>e.t==="var"||e.t==="keyof"||e.t==="index"||e.t==="conditional",oo=e=>e.t==="mapped"&&Ni(e.over);function vt(e){let n=new Map,t=r=>{if(r.t==="intersection")return r.of.forEach(t);if(r.t==="object")for(let a in r.props){let o=r.props[a],s=n.get(a);n.set(a,s?{type:f.intersection([s.type,o.type]),optional:s.optional&&o.optional}:o);}};return t(e),n}var _r=e=>e.optional?Ne(e.type):e.type;function On(e,n){if(n==="number"){if(e.t==="array")return e.items;if(e.t==="tuple")return f.union([...e.elements])}if(e.t==="object"&&e.index?.key===n)return e.index.value}function fi(e,n){if(e.t!=="object"&&e.t!=="intersection")return;let t=[];for(let[r,a]of vt(e))(n==="string"||mp(r))&&t.push(_r(a));if(n==="string"){let r=On(e,"number");r&&t.push(r);}return t.length?f.union(t):void 0}var mp=e=>String(Number(e))===e;function yp(e,n){return e.t==="tuple"&&n.t==="tuple"?hp(e,n):mi(e,n)&&mi(n,e)}function hp(e,n){let t=qr(e),r=qr(n);return r.minLength>t.minLength||!r.rest&&(!!t.rest||r.length<t.length)}function qr(e){let n=Ue(e),t=n<0?e.elements.length:n,r=(e.flags??[]).findIndex(o=>o!=="req"),a=r<0?t:Math.min(r,t);return n<0?{length:t,minLength:a}:{length:t,minLength:a,rest:e.elements[n]}}function mi(e,n){let t=vt(e);for(let[r,a]of vt(n)){if(a.optional)continue;let o=t.get(r);if(!o)return true;let s=Hn(a.type);if(s!==null&&(a.type.t==="literal"||a.type.t==="null"||a.type.t==="undefined")&&o.type.t!=="any"&&Hn(o.type)!==s)return true}return false}function Sp(e){let n={};for(let t of co(e))t.t==="literal"&&typeof t.value=="string"&&v(n,t.value,{type:f.any,optional:false});return e.t==="string"?f.object(n,{key:"string",value:f.object({})}):f.object(n)}var Bi=e=>!An(e)||e.t==="object"&&!!e.fromLiteral&&Object.values(e.props).some(n=>Bi(n.type));function fn(e,n,t,r={},a=0,o=false){let s=a,i=o,l=me.MaxValue,c=true,u=new WeakMap,p=0;d(n,t);function d(g,k){if(Ni(k)){if(g.t==="apply"&&k.t==="apply"&&g.name===k.name&&g.args.length>0){M(g.args,k.args);return}if(de(g,r)||de(k,r)){S(g,k,(T,V)=>{if(!(p>=We().maxInstantiationDepth)){p++;try{de(T,r)?d(fe(T,r),V):d(T,fe(V,r));}finally{p--;}}});return}if(g===k&&(g.t==="union"||g.t==="intersection")){for(let T of g.of)d(T,T);return}if(tt(k)){let[T,V]=B(co(g),k.of,pp),[K,_]=B(T,V,(H,le)=>dp(H,le,r));if(!_.length)return;if(k=f.union(_),!K.length){h(g,k,me.NakedTypeVariable);return}g=f.union(K);}else if(k.t==="intersection"&&k.of.some(T=>m(T)||oo(T)&&T.over.t==="keyof"&&!!m(T.over.of))&&!tt(g)){let[T,V]=B(g.t==="intersection"?g.of:[g],k.of,uo);if(!T.length||!V.length)return;g=f.intersection(T),k=f.intersection(V);}if(k.t==="var"){if(An(g))return;let T=m(k);if(T){if((T.priority===void 0||s<T.priority)&&(T.co.length=0,T.contra.length=0,T.priority=s),s===T.priority){let V=i?T.contra:T.co;V.includes(g)||V.push(g);}l=Math.min(l,s);return}}if(g.t==="array"&&k.t==="array")d(g.items,k.items);else if(g.t==="apply"&&k.t==="apply"&&g.name===k.name)M(g.args,k.args);else if(g.t==="keyof"&&k.t==="keyof")i=!i,d(g.of,k.of),i=!i;else if((g.t==="literal"||g.t==="string"||y(g))&&k.t==="keyof"){let T=Sp(g);i=!i,h(T,k.of,me.LiteralKeyof),i=!i;}else if(g.t==="index"&&k.t==="index")d(g.obj,k.obj),d(g.key,k.key);else if(g.t==="conditional"&&k.t==="conditional")d(g.check,k.check),d(g.extends,k.extends),d(g.then,k.then),d(g.else,k.else);else if(k.t==="conditional"){let T=s;s|=i?me.ContravariantConditional:0,$(g,[k.then,k.else],"conditional"),s=T;}else if(tt(k)||k.t==="intersection")$(g,k.of,k.t==="intersection"?"intersection":"union");else if(tt(g))for(let T of g.of)d(T,k);else {if(!(s&me.NoConstraints&&(g.t==="intersection"||fp(g)))){let T=I(g,r);if(T!==g&&c&&!di(T))return c=false,d(T,k);g=T;}di(g)&&S(g,k,x);}}}function y(g){return tt(g)&&g.of.every(k=>Hn(k)!==null)}function m(g){return g.t==="var"?e.get(g.name):void 0}function h(g,k,T){let V=s;s|=T,d(g,k),s=V;}function S(g,k,T){let V=u.get(g),K=V?.get(k);if(K!==void 0){l=Math.min(l,K);return}V||u.set(g,V=new Map),V.set(k,me.Circularity);let _=l;l=me.MaxValue,T(g,k),V.set(k,l),l=Math.min(l,_);}function B(g,k,T){let V=new Set,K=new Set;for(let _ of k)for(let H of g)T(H,_)&&(d(H,_),V.add(H),K.add(_));return [g.filter(_=>!V.has(_)),k.filter(_=>!K.has(_))]}function M(g,k){let T=Math.min(g.length,k.length);for(let V=0;V<T;V++)d(g[V],k[V]);}function O(g,k){i=!i,d(g,k),i=!i;}function F(g){let k;for(let T of g){let V=T.t==="intersection"?T.of.find(K=>!!m(K)):void 0;if(!V||k&&!uo(V,k))return;k=V;}return k}function $(g,k,T){let V=0;if(T==="union"){let K,_=co(g),H=_.map(()=>false),le=false;for(let ae of k)if(m(ae))K=ae,V++;else for(let Le=0;Le<_.length;Le++){let N=l;l=me.MaxValue,d(_[Le],ae),l===s&&(H[Le]=true),le||(le=l===me.Circularity),l=Math.min(l,N);}if(V===0){let ae=F(k);ae&&h(g,ae,me.NakedTypeVariable);return}if(V===1&&!le){let ae=_.filter((Le,N)=>!H[N]);if(ae.length){d(f.union(ae),K);return}}}else for(let K of k)m(K)?V++:d(g,K);if(T==="intersection"?V===1:V>0)for(let K of k)m(K)&&h(g,K,me.NakedTypeVariable);}function E(g,k,T){if(tt(T)){let V=false;for(let K of T.of)V=E(g,k,K)||V;return V}if(T.t==="keyof"){if(m(T.of)&&T.of.t==="var"){let K=gp(g,k,T.of.name,r);K&&h(K,T.of,An(g)?me.PartialHomomorphicMappedType:me.HomomorphicMappedType);}return true}if(T.t==="var"){if(h(ke(f.keyof(g),r),T,me.MappedTypeConstraint),T.bound&&E(g,k,T.bound))return true;let V=[...vt(g).values()].map(_r),K=On(g,"string"),_=On(g,"number");return K&&V.push(K),_&&V.push(_),d(f.union(V),k.body),true}return false}function x(g,k){if(g.t==="array"&&k.t==="array"){d(g.items,k.items);return}if(oo(g)&&oo(k)&&(d(g.over,k.over),d(g.body,k.body)),k.t==="mapped"){if(E(g,k,k.over))return;let T=Qt(k,r);if(!T)return;k=T;}if(!yp(g,k)){if(g.t==="array"||g.t==="tuple"){if(k.t==="tuple"){R(g,k);return}if(k.t==="array"){let T=On(g,"number");T&&d(T,k.items);return}}J(g,k),re(g,k),ne(g,k);}}function R(g,k){let T=g.t==="tuple"?qr(g):g.t==="array"?{length:0,rest:g.items}:void 0;if(!T)return;let V=qr(k),K=g.t==="tuple"?g.elements:[],_=V.length<T.length||T.rest?V.length:T.length;for(let H=0;H<_;H++)d(H<T.length?K[H]:T.rest,k.elements[H]);if(V.rest){let H=_<T.length?K.slice(_,T.length):[];T.rest&&H.push(T.rest),H.length&&d(f.union(H),V.rest);}}function J(g,k){let T=vt(g);for(let[V,K]of vt(k)){let _=T.get(V);_&&d(_r(_),_r(K));}}function re(g,k){let T=lo(g),V=lo(k),K=Math.min(T.length,V.length);for(let _=0;_<K;_++){let H=up(T[T.length-K+_]),le=Yt(V[V.length-K+_]);gi(H,le,O),bi(H,le,d);}}function ne(g,k){let T=On(k,"string");if(T){let K=On(g,"string")??fi(g,"string");K&&d(K,T);}let V=On(k,"number");if(V){let K=On(g,"number")??On(g,"string")??fi(g,"number");K&&d(K,V);}}}function Zt(e,n={}){let t={};for(let[r,a]of e){if(!a.co.length&&!a.contra.length)continue;let o=Si(a,n);o&&v(t,r,o);}return t}function mo(e,n,t={}){let r=e.typeParams??[],a=wt(r);return gi(n,e,(o,s)=>fn(a,o,s,t)),bi(n,e,(o,s)=>fn(a,o,s,t,me.ReturnType)),fo(e,Gr(r,Zt(a,t),t))}var po="@rev";function dn(e,n,t){if(e.t==="index"&&e.obj.t==="var"&&e.obj.name===n&&e.key.t==="var"&&e.key.name===t)return f.var(po);switch(e.t){case "array":return {t:"array",items:dn(e.items,n,t)};case "tuple":return {t:"tuple",elements:e.elements.map(r=>dn(r,n,t)),...e.flags?{flags:e.flags}:{}};case "union":return f.union(e.of.map(r=>dn(r,n,t)));case "fn":return {...e,params:e.params.map(r=>({...r,type:dn(r.type,n,t)})),returns:dn(e.returns,n,t)};case "apply":return {t:"apply",name:e.name,args:e.args.map(r=>dn(r,n,t))};case "returnType":return {t:"returnType",fn:dn(e.fn,n,t)};case "object":{let r={};for(let a in e.props)v(r,a,{type:dn(e.props[a].type,n,t),optional:e.props[a].optional,...e.props[a].readonly?{readonly:true}:{}});return e.index?{t:"object",props:r,index:{key:e.index.key,value:dn(e.index.value,n,t),...e.index.readonly?{readonly:true}:{}}}:{t:"object",props:r}}default:return e}}function so(e,n,t,r){let a=new Map([[po,{co:[],contra:[]}]]);fn(a,e,dn(n.body,t,n.key),r);let o=a.get(po),s=o.co.length?C(o.co):o.contra.length?f.intersection(o.contra):void 0;return s?He(s):f.unknown}function gp(e,n,t,r){if(!Bi(e))return;if(e.t==="array")return f.array(so(e.items,n,t,r));if(e.t==="tuple"){let s=e.elements.map(l=>so(l,n,t,r)),i=e.elements.map((l,c)=>{let u=e.flags?.[c]??"req";return n.optional&&u!=="rest"?"req":u});return {...f.tuple(s,i),...e.readonly?{readonly:true}:{}}}if(e.t!=="object")return;let a=Object.keys(e.props);if(!a.length&&e.index?.key!=="string")return;let o={};for(let s of a){let i=w(e.props,s);v(o,s,{type:so(i.type,n,t,r),...i.optional&&!n.optional?{optional:true}:{},...i.readonly&&!n.readonly?{readonly:true}:{}});}return {t:"object",props:o}}function bp(e){if(e.t!=="tuple")return e;let n=Ue(e);return n<0?void 0:f.array(e.elements[n])}function Np(e,n,t,r){let a=qt(n),o=n.params[n.params.length-1],s=o?.variadic?bp(o.type):void 0,i=s&&s.t!=="array"&&s.t!=="any"&&!(s.t==="union"&&s.of.length===0)?s:void 0,l=i?Math.min(a.types.length-1,t.length):t.length;for(let c=0;c<l;c++){let u=io(a,c);u&&fn(e,t[c],u,r);}i&&fn(e,f.tuple(t.slice(l).map(En)),i,r);}var Bp=e=>{let n=lo(e);return n.length===1?n[0]:void 0};function er(e,n,t={},r){let a=wt(e.typeParams);if(!a.size)return {returns:e.returns,bindings:{}};if(r){let s=Bp(r),i=s?.typeParams?.length?(({typeParams:l,...c})=>c)(s):r;fn(a,i,e.returns,t,me.ReturnType);}Np(a,e,n,t);let o=Zt(a,t);return {returns:j(e.returns,o),bindings:o}}function kp(e,n,t){let r=new Map,a=(l,c)=>r.set(l,[...r.get(l)??[],c]),o=l=>l?.t==="var"&&n.has(l.name),s=l=>{if(Array.isArray(l))return l.forEach(s);if(!l||typeof l!="object")return;let c=l;if(c.t==="fn")for(let u of c.params)u.variadic&&o(u.type)&&a(u.type.name,f.array(f.unknown));if(c.t==="apply"){let u=w(t,c.name);u&&c.args.forEach((p,d)=>{let y=u.params[d]?.bound;if(!o(p)||!y)return;let m=j(y,Yn(u.params,c.args));m.t==="var"&&m.name===p.name||a(p.name,m);});}for(let u of Object.keys(c))s(w(c,u));};s(e);let i=new Map;for(let[l,c]of r)i.set(l,c.length===1?c[0]:f.intersection(c));return i}function yo(e,n={}){let t=wt(e.infer);fn(t,e.check,e.extends,n,me.NoConstraints|me.AlwaysStrict);let r=kp(e.extends,new Set(t.keys()),n),a={};for(let o of e.infer??[]){let s=t.get(o.name),i=s?.co.length?C(s.co):s?.contra.length?f.intersection(s.contra):void 0,l=o.bound??r.get(o.name);l&&(!i||!L(i,l,n))&&(i=l),v(a,o.name,i??f.unknown);}return a}function ki(e,n={},t=0){if(!e.infer?.length)return null;let r=ho(e,n,i=>ki(i,n,t));if(r!==void 0)return r;if(se(e.check).size>0)return null;let a=yo(e,n),o=new WeakSet,s=rt(j(e.extends,a),n,o,t);return Xr(Jr(e.check,s,n),()=>rt(j(e.then,a),n,o,t),()=>rt(j(e.else,a),n,o,t))}function rt(e,n={},t=new WeakSet,r=0,a=new Set){let o=r,s=We().maxTypeDepth,i=new Set,l=(d,y)=>y?.length?new Set([...d,...y.map(m=>m.name)]):d,c=(d,y)=>({...d,...d.bound?{bound:p(d.bound,y)}:{},...d.default?{default:p(d.default,y)}:{}}),u=(d,y)=>{let m=l(y,d.typeParams);return {...d,params:d.params.map(h=>({...h,type:p(h.type,m)})),returns:p(d.returns,m),...d.guard?{guard:{...d.guard,type:p(d.guard.type,m)}}:{},...d.typeParams?{typeParams:d.typeParams.map(h=>c(h,m))}:{}}},p=(d,y=i)=>{switch(d.t){case "var":return y.has(d.name)?c(d,y):f.unknown;case "array":return {...d,items:p(d.items,y)};case "tuple":return {...d,elements:d.elements.map(m=>p(m,y))};case "union":return f.union(d.of.map(m=>p(m,y)));case "object":{if(t.has(d))return d;t.add(d);let m={};for(let S in d.props){let B=d.props[S];v(m,S,{type:p(B.type,y),optional:B.optional,...B.readonly?{readonly:true}:{}});}let h=d.index?{key:d.index.key,value:p(d.index.value,y),...d.index.readonly?{readonly:true}:{}}:void 0;return t.delete(d),h?{t:"object",props:m,index:h}:{t:"object",props:m}}case "fn":{if(t.has(d))return d;t.add(d);let m=u(d,y);return t.delete(d),m}case "overload":return {t:"overload",signatures:d.signatures.map(m=>u(m,y))};case "apply":{if(de(d,n)){let m=fe(d,n);if(m.t==="conditional"){if(o>=s)throw new ln;o++;try{let h=p(m,y);if(h.t!=="conditional")return h}finally{o--;}}}return {t:"apply",name:d.name,args:d.args.map(m=>p(m,y))}}case "conditional":{let m=d.infer?.length?ki(d,n,o):Ie(d,n);if(m)return p(m,y);let h=l(y,d.infer);return {t:"conditional",check:p(d.check,y),extends:p(d.extends,h),then:p(d.then,h),else:p(d.else,h),...d.infer?{infer:d.infer.map(S=>c(S,h))}:{},...d.distributive?{distributive:true}:{}}}case "intersection":return xe({of:d.of.map(m=>p(m,y))});case "returnType":return Y({t:"returnType",fn:p(d.fn,y)});default:return d}};return p(e,a)}var vp=f.object({}),go=(e,n,t="assignable")=>({seen:new WeakMap,exp:new Set,schemes:e,relation:t,assumed:0,explain:n,sourceStack:[],targetStack:[]}),So=0;function ue(e,n,t){return e.explain?.out.push({path:[...e.explain.path],actual:n,expected:t,kind:"type"}),false}function bo(e,n,t=0){if(t>We().maxInstantiationDepth)return e;if(de(e,n)){let r=fe(e,n);if(r.t!=="conditional")return e;let a=Ie(r,n);return a?bo(a,n,t+1):e}if(e.t==="conditional"){let r=Ie(e,n);return r?bo(r,n,t+1):e}return e}function tr(e,n,t={}){let r=[];return !U(e,n,go(t,{path:[],out:r}))&&r.length===0&&r.push({path:[],actual:e,expected:n,kind:"type"}),r}var wp=new WeakMap,Tp=new WeakMap;function Pi(e,n,t,r,a){if(e===n)return true;if(Object.keys(t).length>0)return U(e,n,go(t,void 0,r));let o=a.get(e)?.get(n);if(o!==void 0)return o;let s=U(e,n,go(t,void 0,r)),i=a.get(e);return i||a.set(e,i=new WeakMap),i.set(n,s),s}function L(e,n,t={}){return Pi(e,n,t,"assignable",wp)}function Ye(e,n,t={}){return Pi(e,n,t,"comparable",Tp)}function Ze(e,n,t={}){return L(e,n,t)&&L(n,e,t)}function Ie(e,n){let t=ho(e,n,r=>Ie(r,n));if(t!==void 0)return t;if(e.infer?.length){if(se(e.check).size>0)return null;let r=bo(e.check,n),a=yo({...e,check:r},n);return Xr(Jr(r,j(e.extends,a),n),()=>j(e.then,a),()=>j(e.else,a))}return se(e.check).size>0||se(e.extends).size>0?null:Xr(Jr(e.check,e.extends,n),()=>e.then,()=>e.else)}function Jr(e,n,t){let r=I(n,t);return r.t==="any"||r.t==="unknown"?"then":I(e,t).t==="any"?"both":L(e,n,t)?"then":"else"}var Xr=(e,n,t)=>e==="then"?n():e==="else"?t():f.union([n(),t()]);function ho(e,n,t){if(!e.distributive)return;let r=I(e.check,n),a=r.t==="union"?r.of:r.t==="boolean"?[f.literal(true),f.literal(false)]:void 0;if(!a)return;let o=[];for(let s of a){let i=t({t:"conditional",check:s,extends:Xt(e.extends,e.check,s),then:Xt(e.then,e.check,s),else:Xt(e.else,e.check,s),...e.infer?{infer:e.infer}:{}});if(i===null)return null;o.push(i);}return f.union(o)}var vi=(e,n)=>Qt(e,n.schemes);function Qr(e,n,t,r){if(!t.explain)return U(e,n,t);t.explain.path.push(r);try{return U(e,n,t)}finally{t.explain.path.pop();}}function U(e,n,t){if(So>=We().maxTypeDepth)throw new ln;So++;try{if(e.t==="any"||n.t==="any"||n.t==="unknown")return !0;if(e.t==="unknown")return t.relation==="comparable"?!0:ue(t,e,n);let r=ke(e,t.schemes);if(r!==e)return U(r,n,t);let a=ke(n,t.schemes);if(a!==n)return U(e,a,t);if(n.t==="mapped"&&nr(n))return xp(e,n,t);if(e.t==="mapped"&&nr(e)&&n.t==="var")return Pp(e,n,t);if(e.t==="mapped"){let s=vi(e,t);if(s)return U(s,n,t)}if(n.t==="mapped"){let s=vi(n,t);if(s)return U(e,s,t)}if(e.t==="conditional"){let s=Ie(e,t.schemes);if(s)return U(s,n,t)}if(n.t==="conditional"){let s=Ie(n,t.schemes);if(s)return U(e,s,t)}if(t.relation==="comparable"&&Ip(n,e))return !0;if(n.t==="intersection")return n.of.every(s=>U(e,s,t));if(e.t==="intersection"&&n.t!=="union"){if(Op(e.of,n,t))return !0;if(n.t==="object"){let s=Kr(e.of);if(s)return U(s,n,t)}return !1}if(!(e.t==="apply"&&n.t==="apply"&&e.name===n.name&&e.args.length===n.args.length)&&(de(e,t.schemes)||de(n,t.schemes))){let s=`${be(e)}\u2264${be(n)}`;if(t.exp.has(s))return !0;if(Ti(e,t.sourceStack)&&Ti(n,t.targetStack))return t.assumed++,!0;t.exp.add(s),t.sourceStack.push(e),t.targetStack.push(n);let i=U(fe(e,t.schemes),fe(n,t.schemes),t);return t.sourceStack.pop(),t.targetStack.pop(),t.exp.delete(s),i}return Ep(e,n,t)}finally{So--;}}var wi=5;function Ti(e,n){if(n.length<wi||e.t!=="apply")return false;let t=0;for(let r of n)if(r.t==="apply"&&r.name===e.name&&++t>=wi)return true;return false}function Ep(e,n,t){let r=t.seen.get(e);if(r?.has(n))return t.assumed++,true;r||(r=new WeakSet,t.seen.set(e,r)),r.add(n);let a=t.assumed,o=Ap(e,n,t);return (!o||t.assumed!==a)&&r.delete(n),o}function Op(e,n,t){let r=t.intersectionSource,a=t.explain;t.intersectionSource=true,t.explain=void 0;try{return e.some(o=>U(o,n,t))}finally{t.intersectionSource=r,t.explain=a;}}function Ap(e,n,t){if(e.t==="union")return t.relation==="comparable"?e.of.length===0||e.of.some(r=>U(r,n,t)):e.of.every(r=>U(r,n,t));if(e.t==="boolean"&&n.t==="union")return t.relation==="comparable"?U(f.literal(true),n,t)||U(f.literal(false),n,t):U(f.literal(true),n,t)&&U(f.literal(false),n,t);if(e.t==="conditional")return Mp(e,n,t);if(n.t==="union")return Fp(e,n,t);if(e.t==="var"&&!(n.t==="var"&&n.name===e.name))return e.bound?U(e.bound,n,t):ue(t,e,n);if(e.t==="nonPrimitive"&&n.t!=="nonPrimitive")return n.t==="object"&&n.index?ue(t,e,n):U(vp,n,t);if(Mi(e)&&Mi(n))return Up(e,n,t);if(n.t==="overload")return n.signatures.every(r=>U(e,r,t));switch(n.t){case "literal":return e.t==="literal"&&e.value===n.value?true:ue(t,e,n);case "string":case "number":case "boolean":case "null":case "undefined":return e.t===n.t||e.t==="literal"&&Di(e.value)===n.t?true:ue(t,e,n);case "void":return e.t==="void"||e.t==="undefined"?true:ue(t,e,n);case "nonPrimitive":return e.t==="object"||e.t==="array"||e.t==="tuple"||e.t==="fn"||e.t==="overload"||e.t==="apply"||e.t==="nonPrimitive"?true:ue(t,e,n);case "array":return e.t==="array"?e.readonly&&!n.readonly?ue(t,e,n):U(e.items,n.items,t):e.t==="tuple"?e.readonly&&!n.readonly?ue(t,e,n):Ha(e).every((r,a)=>Qr(r,n.items,t,a)):ue(t,e,n);case "tuple":{if(e.t!=="tuple"||e.readonly&&!n.readonly)return ue(t,e,n);if(!e.flags&&!n.flags){if(e.elements.length!==n.elements.length)return ue(t,e,n);for(let r=0;r<e.elements.length;r++)if(!Qr(e.elements[r],n.elements[r],t,r))return false;return true}return ti(e,n,(r,a)=>U(r,a,t),t.relation==="comparable")}case "object":if(e.t==="object")return Vp(e,n,t);if(Object.keys(n.props).length===0&&!n.index)return e.t!=="null"&&e.t!=="undefined"&&e.t!=="void"?true:ue(t,e,n);if((e.t==="array"||e.t==="tuple")&&n.index){let r=e.t==="array"?[e.items]:Ha(e);return n.index.key==="number"&&Object.values(n.props).every(a=>a.optional)&&r.every(a=>U(a,n.index.value,t))?true:ue(t,e,n)}return ue(t,e,n);case "fn":return e.t==="fn"?Hr(e,n,t):ue(t,e,n);case "var":return e.t==="var"&&e.name===n.name;case "typeQuery":return e.t==="typeQuery"&&e.path.length===n.path.length&&e.path.every((r,a)=>r===n.path[a]);case "keyof":return e.t==="keyof"&&U(e.of,n.of,t)&&U(n.of,e.of,t);case "index":return e.t==="index"&&U(e.obj,n.obj,t)&&U(n.obj,e.obj,t)&&U(e.key,n.key,t)&&U(n.key,e.key,t);case "mapped":return e.t==="mapped"&&e.key===n.key&&!!e.optional==!!n.optional&&U(e.over,n.over,t)&&U(n.over,e.over,t)&&U(e.body,n.body,t)&&U(n.body,e.body,t);case "conditional":return ue(t,e,n);case "apply":return e.t==="apply"&&e.name===n.name&&e.args.length===n.args.length&&e.args.every((r,a)=>U(r,n.args[a],t));case "returnType":return e.t==="returnType"&&U(e.fn,n.fn,t)&&U(n.fn,e.fn,t);case "parameters":return e.t==="parameters"&&U(e.fn,n.fn,t)&&U(n.fn,e.fn,t)}}var Di=e=>typeof e;function Mp(e,n,t){return n.t==="conditional"&&U(e.check,n.check,t)&&U(n.check,e.check,t)&&U(e.extends,n.extends,t)&&U(n.extends,e.extends,t)&&U(e.then,n.then,t)&&U(e.else,n.else,t)?true:U(jp(e),n,t)}var nr=e=>se(e.over).size>0;function xp(e,n,t){if(e.t==="mapped"&&nr(e)&&Dp(e,n,t)||n.optional&&Cp(e))return true;if(!n.excludeOptional){let r=n.body;if(r.t==="index"&&r.key.t==="var"&&r.key.name===n.key&&Ze(r.obj,e,t.schemes))return true;if(!(e.t==="mapped"&&nr(e))){let a=f.keyof(e),o=n.optional?f.intersection([n.over,a]):U(n.over,a,t)?n.over:null;if(o!==null&&!Rp(o)&&U(f.index(e,o),j(r,{[n.key]:o}),t))return true}}return ue(t,e,n)}function Pp(e,n,t){return !e.optional&&U(f.keyof(n),e.over,t)&&U(e.body,f.index(n,f.var(e.key)),t)?true:ue(t,e,n)}function Dp(e,n,t){return t.relation!=="comparable"&&Oi(e)>Oi(n)?false:U(n.over,e.over,t)&&U(j(e.body,{[e.key]:f.var(n.key)}),n.body,t)}var Ei=e=>e.excludeOptional?-1:e.optional?1:0;function Oi(e){let n=Ei(e);if(n!==0)return n;let t=e.over.t==="keyof"?e.over.of:e.modifiers;return t?.t==="mapped"&&nr(t)?Ei(t):0}var Cp=e=>e.t==="object"&&Object.keys(e.props).length===0&&!e.index,Rp=e=>e.t==="union"&&e.of.length===0,jp=e=>e.then.t==="any"?e.else:e.else.t==="any"?e.then:f.union([e.then,e.else]);function Ip(e,n){switch(n.t){case "string":case "number":case "boolean":case "null":case "undefined":return e.t===n.t||e.t==="literal"&&Di(e.value)===n.t;case "literal":return e.t==="literal"&&e.value===n.value;case "void":return e.t==="void"||e.t==="undefined";default:return false}}function Fp(e,n,t){let r=t.explain;if(!r)return n.of.some(s=>U(e,s,t));t.explain=void 0;let a;try{a=n.of.some(s=>U(e,s,t));}finally{t.explain=r;}if(a)return true;let o=$p(e,n,t);return o?U(e,o,t):ue(t,e,n)}function $p(e,n,t){if(e.t!=="object")return null;let r=n.of.map(a=>I(a,t.schemes));for(let a in e.props){let o=e.props[a].type;if(o.t!=="literal")continue;let s=t.explain;t.explain=void 0;let i;try{i=n.of.filter((l,c)=>{let u=r[c];if(u.t!=="object")return !1;let p=Be(u.props,a);return !!p&&U(o,p.type,t)});}finally{t.explain=s;}if(i.length===1)return i[0]}return null}function Vp(e,n,t){let r=false;for(let a in n.props)if(!(n.props[a].optional||Be(e.props,a))){if(!t.explain)return false;t.explain.out.push({path:[...t.explain.path,a],expected:n.props[a].type,kind:"missing"}),r=true;}if(r)return false;for(let a in n.props){let o=n.props[a],s=Be(e.props,a);if(!s)continue;if(s.optional&&!o.optional&&t.relation==="assignable")return false;let i=o.optional?Oe(s.type).type:s.optional?C([s.type,f.undefined]):s.type;if(!Qr(i,o.type,t,a))return false}return !(n.index&&!Lp(e,n.index,t))}function Lp(e,n,t){if(t.intersectionSource){if(!e.index)return false}else {let r=n.key==="number";for(let a in e.props){if(r&&!Wn(a))continue;let o=e.props[a],s=o.optional?Ne(o.type):o.type;if(!Qr(s,n.value,t,a))return false}}return !e.index||U(e.index.value,n.value,t)}var Ci=e=>{let n=e.params[e.params.length-1];return n?.variadic?n:void 0},Wp=e=>{let n=e.params.findIndex(t=>t.optional||t.variadic);return n<0?e.params.length:n};function Tt(e,n){let t=Ci(e),r=t?e.params.length-1:e.params.length;if(n<r)return e.params[n].type;if(!t)return;let a=t.type;if(a.t==="array")return a.items;if(a.t==="tuple"&&!a.flags)return a.elements[n-r]}var Ai=(e,n)=>{let t=Tt(e,n);return t===void 0?t:e.params[n]?.optional?Ne(t):t},Mi=e=>e.t==="fn"||e.t==="overload";function Up(e,n,t){let r=e.t==="overload"?e.signatures:[e],a=n.t==="overload"?n.signatures:[n];return r.length===1&&a.length===1?xi(r[0],a[0],t,t.relation==="comparable"):a.every(o=>r.some(s=>xi(s,o,t,true)))}function xi(e,n,t,r){if(r)return Hr(Yt(e),Yt(n),t);let a=to(n,se(e));return e.typeParams?.length?Hr(mo(e,a,t.schemes),a,t):Hr(e,a,t)}function Hr(e,n,t){if(n.returns.t!=="void"&&n.returns.t!=="any"&&!U(e.returns,n.returns,t)||!Ci(n)&&Wp(e)>n.params.length)return false;let r=Math.max(e.params.length,n.params.length);for(let a=0;a<r;a++){let o=Ai(e,a),s=Ai(n,a);if(o&&s&&!U(s,o,t))return false}return !(n.guard&&(!e.guard||e.guard.param!==n.guard.param||!U(e.guard.type,n.guard.type,t)))}var Kp=e=>e.t==="object"&&!e.index&&Object.values(e.props).every(n=>n.optional);function C(e){let n=[];for(let a of e)a.t==="union"?n.push(...a.of):n.push(a);let t=We().maxUnionMembers;if(n.length>t)throw new cn(n.length,t);if(n.some(a=>a.t==="any"))return f.any;let r=[...n];for(let a=r.length-1;a>=0;a--){let o=r[a];r.some((i,l)=>l!==a&&!Kp(i)&&L(o,i)&&(l<a||!L(i,o)))&&r.splice(a,1);}if(r.some(a=>a.t==="literal"&&a.value===true)&&r.some(a=>a.t==="literal"&&a.value===false)){let a=r.filter(o=>!(o.t==="boolean"||o.t==="literal"&&typeof o.value=="boolean"));a.push(f.boolean),r.length=0,r.push(...a);}return r.length===1?r[0]:{t:"union",of:r}}function No(e,n){let t=new Set,r=new WeakSet,a=o=>{if(!r.has(o))switch(r.add(o),o.t){case "keyof":t.add("keyof"),a(o.of);break;case "index":t.add("indexed"),a(o.obj),a(o.key);break;case "mapped":t.add("mapped"),a(o.over),a(o.body);break;case "conditional":t.add("conditional"),o.infer?.length&&t.add("infer"),o.infer?.forEach(a),a(o.check),a(o.extends),a(o.then),a(o.else);break;case "returnType":case "parameters":a(o.fn);break;case "tuple":t.add("tuple"),o.elements.forEach(a);break;case "intersection":t.add("intersection"),o.of.forEach(a);break;case "overload":t.add("overload");for(let s of o.signatures){s.typeParams?.forEach(a);for(let i of s.params)a(i.type);a(s.returns),s.guard&&a(s.guard.type);}break;case "object":for(let s in o.props)a(o.props[s].type);o.index&&a(o.index.value);break;case "array":a(o.items);break;case "union":o.of.forEach(a);break;case "fn":o.typeParams?.forEach(a);for(let s of o.params)a(s.type);a(o.returns),o.guard&&a(o.guard.type);break;case "var":o.bound&&a(o.bound),o.default&&a(o.default);break;case "apply":n&&o.name===n&&t.add("recursion"),o.args.forEach(a);break}};return a(e),t}var zp=f.union([]);function Ri(e,n){return Yr(e,n,new WeakMap)}function _p(e){return e.reduce(Ri,zp)}function Yr(e,n,t){if(e.t==="any"||n.t==="any")return f.any;if(e===n)return e;let r=t.get(e)?.get(n);if(r)return r;if(e.t==="object"&&n.t==="object")return qp(e,n,t);if(e.t==="array"&&n.t==="array"){let a={t:"array",items:f.unknown};return ji(t,e,n,a),a.items=Yr(e.items,n.items,t),a}return C([e,n])}function qp(e,n,t){let r={t:"object",props:{}};ji(t,e,n,r);for(let a in e.props){let o=e.props[a],s=w(n.props,a);if(s){let i=Yr(o.type,s.type,t);v(r.props,a,{type:i,...o.optional||s.optional?{optional:true}:{},...o.readonly||s.readonly?{readonly:true}:{}});}else v(r.props,a,{type:o.type,optional:true,...o.readonly?{readonly:true}:{}});}for(let a in n.props){if(pe(e.props,a))continue;let o=n.props[a];v(r.props,a,{type:o.type,optional:true,...o.readonly?{readonly:true}:{}});}return e.index&&n.index&&e.index.key===n.index.key&&(r.index={key:e.index.key,value:Yr(e.index.value,n.index.value,t),...e.index.readonly||n.index.readonly?{readonly:true}:{}}),r}function ji(e,n,t,r){let a=e.get(n);a||(a=new WeakMap,e.set(n,a)),a.set(t,r);}var Gp=4;function Jp(e,n={}){return rr(e,n,0)}function rr(e,n,t){let r=I(ke(e,n),n);switch(r.t){case "string":return "";case "number":return 0;case "boolean":return false;case "null":return null;case "literal":return r.value;case "array":return [];case "tuple":{let a=[];for(let o=0;o<r.elements.length&&(r.flags?.[o]??"req")==="req";o++)a.push(rr(r.elements[o],n,t));return a}case "object":{if(t>=Gp)return {};let a={};for(let o of Object.keys(r.props)){let s=r.props[o];s.optional||v(a,o,rr(s.type,n,t+1));}return a}case "nonPrimitive":return {};case "union":{if(r.of.some(o=>o.t==="null"))return null;let a=r.of.find(o=>o.t!=="undefined");return a===void 0?null:rr(a,n,t)}case "intersection":{let a=r.of.map(s=>rr(s,n,t));if(!a.every(Xp))return null;let o={};for(let s of a)for(let i of Object.keys(s))v(o,i,s[i]);return o}default:return null}}var Xp=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);var Hp=e=>/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e),Ii=e=>{let n=e.indexOf("@");return n<0?e:e.slice(0,n)},Qp={check:new Set(["function","conditional"]),extends:new Set(["conditional"]),union:new Set(["function","conditional","union","intersection"]),intersection:new Set(["function","conditional","union","intersection"]),operand:new Set(["function","conditional","union","intersection"]),postfix:new Set(["function","conditional","union","intersection","operator","query"])},Fi=(e,n)=>Qp[e].has(n);function q(e,n=new WeakSet){return ye(e,{seen:n,infer:new Map})}function Yp(e){return Zr(e,{seen:new WeakSet,infer:new Map})}function ko(e,n){switch(e.t){case "fn":return "function";case "overload":return e.signatures.length===1?"function":"primary";case "conditional":return "conditional";case "union":return e.of.length===0?"primary":e.of.length===1?ko(e.of[0],n):"union";case "intersection":return e.of.length===1?ko(e.of[0],n):"intersection";case "keyof":return "operator";case "array":case "tuple":return e.readonly?"operator":"primary";case "typeQuery":return "query";case "var":{let t=n.infer.get(e.name);return t?t.bound?"conditional":"operator":"primary"}default:return "primary"}}function Mn(e,n,t){let r=ye(n,t);return Fi(e,ko(n,t))?`(${r})`:r}function Zr(e,n){return e.map((t,r)=>{let a=ye(t,n);return r===0&&Zp(t)?`(${a})`:a}).join(", ")}var Zp=e=>e.t==="fn"&&!!e.typeParams?.length||e.t==="overload"&&e.signatures.length===1&&!!e.signatures[0].typeParams?.length;function ed(e,n){return e?.length?`<${e.map(t=>nd(t,n)).join(", ")}>`:""}function nd(e,n){let t=e.bound?` extends ${ye(e.bound,n)}`:"",r=e.default?` = ${ye(e.default,n)}`:"";return `${e.name}${t}${r}`}function ea(e,n){if(!n.some(r=>e.infer.has(r)))return e;let t=new Map(e.infer);for(let r of n)t.delete(r);return {...e,infer:t}}function Bo(e,n,t){let r=ea(t,(e.typeParams??[]).map(i=>i.name)),a=e.params.map(i=>{let l=i.variadic?"...":"",c=i.optional&&!i.variadic?"?":"";return `${l}${i.name}${c}: ${ye(i.type,r)}`}).join(", "),o=e.guard?`${e.params[e.guard.param]?.name??`arg${e.guard.param}`} is ${ye(e.guard.type,r)}`:ye(e.returns,r),s=ed(e.typeParams,r);return n==="=>"?`${s}(${a}) => ${o}`:`${s}(${a}): ${o}`}function ye(e,n){let{seen:t}=n;switch(e.t){case "any":case "unknown":case "string":case "number":case "boolean":case "null":case "undefined":case "void":return e.t;case "nonPrimitive":return "object";case "var":{let r=n.infer.get(e.name);return r?r.bound?`infer ${e.name} extends ${ye(r.bound,ea(n,[e.name]))}`:`infer ${e.name}`:e.name}case "typeQuery":return `typeof ${e.path.join(".")}`;case "literal":return typeof e.value=="string"?JSON.stringify(e.value):String(e.value);case "array":{let r=`${Mn("postfix",e.items,n)}[]`;return e.readonly?`readonly ${r}`:r}case "tuple":{let a=`[${e.elements.map((o,s)=>{let i=e.flags?.[s]??"req";return i==="rest"?`...${Mn("postfix",o,n)}[]`:i==="optional"?`${Mn("postfix",o,n)}?`:ye(o,n)}).join(", ")}]`;return e.readonly?`readonly ${a}`:a}case "union":{if(e.of.length===0)return "never";if(e.of.length===1)return ye(e.of[0],n);if(t.has(e))return "\u2026";t.add(e);let r=e.of.map(a=>Mn("union",a,n)).join(" | ");return t.delete(e),r}case "intersection":{if(e.of.length===1)return ye(e.of[0],n);if(t.has(e))return "\u2026";t.add(e);let r=e.of.map(a=>Mn("intersection",a,n)).join(" & ");return t.delete(e),r}case "object":{if(t.has(e))return "\u2026";t.add(e);let r=Object.entries(e.props).map(([a,o])=>{let s=Hp(a)?a:JSON.stringify(a);return `${o.readonly?"readonly ":""}${s}${o.optional?"?":""}: ${ye(o.type,n)}`});return e.index&&r.push(`${e.index.readonly?"readonly ":""}[k: ${e.index.key}]: ${ye(e.index.value,n)}`),t.delete(e),r.length===0?"{}":`{ ${r.join("; ")} }`}case "fn":{if(t.has(e))return "\u2026";t.add(e);let r=Bo(e,"=>",n);return t.delete(e),r}case "overload":{if(e.signatures.length===1)return Bo(e.signatures[0],"=>",n);if(t.has(e))return "\u2026";t.add(e);let r=e.signatures.map(a=>Bo(a,":",n));return t.delete(e),`{ ${r.join("; ")} }`}case "apply":{let r=Ii(e.name);if(e.args.length===0)return r;if(t.has(e))return "\u2026";t.add(e);let a=`${r}<${Zr(e.args,n)}>`;return t.delete(e),a}case "keyof":return `keyof ${Mn("operand",e.of,n)}`;case "index":return `${Mn("postfix",e.obj,n)}[${ye(e.key,n)}]`;case "mapped":{if(t.has(e))return "\u2026";t.add(e);let r=e.readonly?"readonly ":e.excludeReadonly?"-readonly ":"",a=e.optional?"?":e.excludeOptional?"-?":"",o=ea(n,[e.key]),s=`{ ${r}[${e.key} in ${ye(e.over,n)}]${a}: ${ye(e.body,o)} }`;return t.delete(e),s}case "conditional":{if(t.has(e))return "\u2026";t.add(e);let r=e.infer??[],a=r.length?{...n,infer:new Map([...n.infer,...r.map(i=>[i.name,i])])}:n,o=ea(n,r.map(i=>i.name)),s=`${Mn("check",e.check,n)} extends ${Mn("extends",e.extends,a)} ? ${ye(e.then,o)} : ${ye(e.else,o)}`;return t.delete(e),s}case "returnType":return `ReturnType<${Zr([e.fn],n)}>`;case "parameters":return `Parameters<${Zr([e.fn],n)}>`}}function $i(e){if(e.length===0)return "value";let n=e[e.length-1];if(typeof n=="number"){let t=e.slice(0,-1);return t.length?`property '${t.join(".")}' at position ${n}`:`position ${n}`}return `property '${e.join(".")}'`}function ar(e){let n=e.filter(t=>t.kind==="missing");if(n.length&&n.length===e.length){let t=n.map(r=>`'${r.path.join(".")}'`).join(", ");return n.length===1?`property ${t} is missing`:`properties ${t} are missing`}return e.map(t=>t.actual===void 0?`${$i(t.path)} is missing`:`${$i(t.path)}: expected '${q(t.expected)}', got '${q(t.actual)}'`).join("; ")}function at(e,n=new WeakSet){switch(e.t){case "string":case "number":case "boolean":case "null":case "literal":return true;case "array":return n.has(e)?true:(n.add(e),at(Oe(e.items).type,n));case "tuple":return n.has(e)?true:(n.add(e),e.elements.every(t=>at(Oe(t).type,n)));case "object":{if(n.has(e))return true;n.add(e);let t=Object.values(e.props).every(a=>at(Oe(a.type).type,n)),r=!e.index||at(Oe(e.index.value).type,n);return t&&r}case "union":return n.has(e)?true:(n.add(e),e.of.every(t=>at(t,n)));case "intersection":return n.has(e)?true:(n.add(e),e.of.every(t=>at(t,n)));case "undefined":case "void":case "fn":case "overload":case "keyof":case "index":case "mapped":case "conditional":case "returnType":case "parameters":case "var":case "typeQuery":case "apply":case "any":case "unknown":case "nonPrimitive":return false}}function Pe(e,n,t={}){let r=e;for(let a of n){let o=ot(r,a,t);if(o===null)return null;r=o;}return {type:r,completions:or(r,t)}}var td=e=>e==="[]"||/^\d+$/.test(e);function ot(e,n,t,r=new Set){if(e.t==="var")return e.bound?ot(I(e,t),n,t,r):null;if(e.t==="mapped"){let o=I(e,t);return o===e?null:ot(o,n,t,r)}if(de(e,t)){let o=be(e);if(r.has(o))return null;r.add(o);let s=ot(fe(e,t),n,t,r);return r.delete(o),s}let a=Y(e);if(a!==e)return ot(a,n,t,r);switch(e.t){case "any":return e;case "object":{let o=Be(e.props,n);return o?o.optional?C([o.type,{t:"undefined"}]):o.type:e.index?.key==="string"?e.index.value:null}case "array":return td(n)?e.items:null;case "tuple":{let o=e.flags?.findIndex(l=>l!=="req")??-1,s=Number(n);if(!(Number.isInteger(s)&&s>=0))return null;if(o<0)return s<e.elements.length?e.elements[s]:null;if(s<o)return e.elements[s];let i=e.elements.slice(o);return i.length?C(i):null}case "union":{let o=[];for(let s of e.of){let i=ot(s,n,t,r);if(i===null)return null;o.push(i);}return o.length?C(o):null}case "intersection":{let o=e.of.map(s=>ot(s,n,t,r)).filter(s=>s!==null);return o.length?xe({of:o}):null}default:return null}}function vo(e,n,t={}){let r=st(e,n,t,new Set);return r?.readonly?r.via:null}var rd=e=>e!==""&&String(Number(e))===e;function st(e,n,t,r){if(e.t==="var")return e.bound?st(I(e,t),n,t,r):null;if(e.t==="mapped"){let i=I(e,t);return i===e?null:st(i,n,t,r)}if(de(e,t)){let i=be(e);if(r.has(i))return null;r.add(i);let l=st(fe(e,t),n,t,r);return r.delete(i),l}let a=Y(e);if(a!==e)return st(a,n,t,r);let o="name"in n?n.name:null,s="base"in n?n.base==="number":n.element&&rd(n.name);switch(e.t){case "object":{let i=o===null?void 0:Be(e.props,o);if(i)return {via:"property",readonly:!!i.readonly};let l=e.index;return l&&(l.key==="string"||s)?{via:"index",readonly:!!l.readonly}:null}case "array":return s?{via:"index",readonly:!!e.readonly}:null;case "tuple":{if(!s)return null;let l=(e.flags??[]).indexOf("rest"),c=l<0?e.elements.length:l,u=o===null?-1:Number(o);return Number.isInteger(u)&&u>=0&&u<c?{via:"property",readonly:!!e.readonly}:l>=0||o===null?{via:"index",readonly:!!e.readonly}:null}case "union":{let i=[];for(let c of e.of){let u=st(c,n,t,r);if(u===null)return null;i.push(u);}let l=i.some(c=>c.readonly);return i.some(c=>c.via==="property")?{via:"property",readonly:l}:{via:"index",readonly:l}}case "intersection":{let i=e.of.map(c=>st(c,n,t,r)).filter(c=>c!==null),l=i.filter(c=>c.via==="property");return l.length?{via:"property",readonly:l.some(c=>c.readonly)}:i.length?{via:"index",readonly:i.every(c=>c.readonly)}:null}default:return null}}function or(e,n,t=new WeakSet,r=new Set){if(e.t==="var")return e.bound?or(I(e,n),n,t,r):[];if(de(e,n)){let o=be(e);if(r.has(o))return [];r.add(o);let s=or(fe(e,n),n,t,r);return r.delete(o),s}let a=Y(e);if(a!==e)return or(a,n,t,r);switch(e.t){case "object":return Object.entries(e.props).map(([o,s])=>({key:o,type:s.type,optional:!!s.optional}));case "array":return [{key:"[]",type:e.items,optional:false}];case "tuple":return e.elements.map((o,s)=>({key:String(s),type:o,optional:false}));case "union":case "intersection":{if(t.has(e))return [];t.add(e);let o=[],s=new Set;for(let i of e.of)for(let l of or(i,n,t,r))s.has(l.key)||(s.add(l.key),o.push(l));return t.delete(e),o}default:return []}}var ad="1.9.0";var wo={"unknown-name":"semantic","const-needs-init":"semantic","cannot-redeclare":"semantic","circular-type-alias":"semantic","circular-type-annotation":"semantic","unknown-module":"semantic","not-a-schema":"semantic","type-as-value":"semantic","asserter-needs-name":"semantic","shadows-schema":"semantic",unsupported:"semantic","unused-name":"semantic","assign-to-const":"semantic","for-in-destructuring":"semantic","misplaced-namespace":"semantic","misplaced-modifier":"semantic","ambient-initializer":"semantic","ambient-statement":"semantic","used-before-assigned":"semantic","used-before-declaration":"semantic","for-in-not-object":"type","readonly-write":"type","not-assignable":"type","not-callable":"type","no-such-member":"type","not-object":"type","possibly-nullish":"type","unknown-value":"type","missing-argument":"type","excess-argument":"type","excess-property":"type","spread-argument":"type","required-after-optional":"type","not-iterable":"type","not-spreadable":"type","overwritten-property":"type","implicit-any":"semantic","props-mismatch":"type","no-matching-overload":"type","constraint-violation":"type","wrong-type-argument-count":"type","cast-unsound":"type","unprovable-value":"type","not-arithmetic-operand":"type","operator-not-applicable":"type","no-overlap":"type","uncalled-function-check":"type","not-comparable":"type","implicit-coercion":"type","too-deep":"type","too-complex-union":"type","node-not-allowed":"capability","name-not-allowed":"capability","type-feature-not-allowed":"capability","any-not-allowed":"capability","narrowing-cast-not-allowed":"capability","too-large":"capability","wrong-result-type":"capability"},P=(e,n,t)=>({code:e,kind:wo[e],severity:"error",node:n,message:t}),ve=(e,n,t,r="error")=>({code:e,kind:wo[e],severity:r,node:n,message:t}),mn={cannotFindName:e=>`Cannot find name '${e}'.`,cannotFindNamespace:e=>`Cannot find namespace '${e}'.`,noExportedMember:(e,n)=>`Namespace '${e}' has no exported member '${n}'.`,redeclareBlockScoped:e=>`Cannot redeclare block-scoped variable '${e}'.`,genericTypeArity:(e,n,t)=>t===0?`Type '${e}' is not generic.`:n===t?`Generic type '${e}' requires ${t} type argument${t===1?"":"s"}.`:`Generic type '${e}' requires between ${n} and ${t} type arguments.`},sr=(e,n,t)=>({code:e,kind:wo[e],severity:"error",message:t,path:n}),it={unknownName:(e,n)=>sr("unknown-name",e,mn.cannotFindName(n)),namespaceNotFound:(e,n)=>sr("unknown-name",e,mn.cannotFindNamespace(n)),noExportedMember:(e,n,t)=>sr("no-such-member",e,mn.noExportedMember(n,t)),redeclaration:(e,n)=>sr("cannot-redeclare",e,mn.redeclareBlockScoped(n)),genericTypeArity:(e,n,t,r)=>sr("wrong-type-argument-count",e,mn.genericTypeArity(n,t,r))},b={notAssignable:(e,n,t,r={})=>{let a=tr(n,t,r),o=a.filter(d=>d.path.length>0),s=o.length?` ${ar(o)}.`:"",i=q(n),l=q(t),c=i===l?`Type '${i}' is not assignable to type '${l}'. Two different types with this name exist, but they are unrelated.`:`Type '${i}' is not assignable to type '${l}'.`,u=P("not-assignable",e,`${c}${s}`),p=a.flatMap(d=>{let[y]=d.path;return d.kind==="missing"&&d.path.length===1&&typeof y=="string"?[{name:y,type:d.expected}]:[]});return p.length?{...u,data:{kind:"missing-properties",properties:p}}:u},unknownName:(e,n)=>P("unknown-name",e,mn.cannotFindName(n)),notCallable:(e,n)=>P("not-callable",e,`Type '${q(n)}' is not callable.`),noSuchMember:(e,n,t)=>P("no-such-member",e,`Property '${t}' does not exist on type '${q(n)}'.`),notObject:(e,n)=>P("not-object",e,`Type '${q(n)}' has no members to access.`),possiblyNullish:(e,n,t=false)=>{let r=n.null&&n.undefined?"'null' or 'undefined'":n.null?"'null'":"'undefined'";return P("possibly-nullish",e,t?`Cannot invoke an object which is possibly ${r}.`:`Object is possibly ${r}.`)},unknownValue:e=>P("unknown-value",e,"Object is of type 'unknown'."),constNeedsInit:e=>P("const-needs-init",e,"'const' declarations must be initialized."),destructuringNeedsInit:e=>P("const-needs-init",e,"A destructuring declaration must have an initializer."),missingArgument:(e,n,t)=>P("missing-argument",e,`Missing argument '${n}' of type '${q(t)}'.`),notASchema:(e,n)=>P("not-a-schema",e,`'${n}' refers to a value, but no type named '${n}' is declared. An asserter needs a schema that is both a value in scope and a declared type.`),typeAsValue:(e,n)=>P("type-as-value",e,`'${n}' only refers to a type, but is being used as a value here. Types are erased at runtime: register '${n}' as a value in scope for the asserter to prove it.`),asserterNeedsName:(e,n)=>P("asserter-needs-name",e,`The first argument of '${n}' must be the name of a schema, not a ${e.type}.`),shadowsSchema:(e,n)=>P("shadows-schema",e,`'${n}' shadows the schema of the same name: an asserter would type against the declared schema but prove against this value at runtime. Rename the binding.`),unknownModule:(e,n)=>P("unknown-module",e,`Cannot find module '${n}' or its corresponding type declarations.`),redeclaration:{blockScoped:(e,n)=>P("cannot-redeclare",e,mn.redeclareBlockScoped(n)),duplicate:(e,n)=>P("cannot-redeclare",e,`Duplicate identifier '${n}'.`),importConflict:(e,n)=>P("cannot-redeclare",e,`Import declaration conflicts with local declaration of '${n}'.`),catchClause:(e,n)=>P("cannot-redeclare",e,`Cannot redeclare identifier '${n}' in catch clause.`),mixedExport:(e,n)=>P("cannot-redeclare",e,`Individual declarations in merged declaration '${n}' must be all exported or all local.`)},circularTypeAlias:(e,n)=>P("circular-type-alias",e,`Type alias '${n}' circularly references itself.`),circularTypeAnnotation:(e,n)=>P("circular-type-annotation",e,`'${n}' is referenced directly or indirectly in its own type annotation.`),excessArgument:(e,n,t)=>P("excess-argument",e,`Expected ${n} argument${n===1?"":"s"}, but got ${t}.`),argumentArity:(e,n,t,r,a=false)=>P(r==="missing"?"missing-argument":"excess-argument",e,a?`Expected at least ${n} arguments, but got ${t}.`:`Expected ${n} arguments, but got ${t}.`),excessProperty:(e,n,t)=>P("excess-property",e,`Object literal may only specify known properties, and '${n}' does not exist in type '${q(t)}'.`),spreadArgument:e=>P("spread-argument",e,"A spread argument must either have a tuple type or be passed to a rest parameter."),requiredAfterOptional:e=>P("required-after-optional",e,"A required parameter cannot follow an optional parameter."),notIterable:(e,n)=>P("not-iterable",e,`Type '${q(n)}' must have a '[Symbol.iterator]()' method that returns an iterator.`),notSpreadable:{rest:e=>P("not-spreadable",e,"Rest types may only be created from object types."),spread:e=>P("not-spreadable",e,"Spread types may only be created from object types.")},duplicateKey:{strict:e=>P("cannot-redeclare",e,"An object literal cannot have multiple properties with the same name in strict mode."),identifier:(e,n)=>P("cannot-redeclare",e,`Duplicate identifier '${n}'.`),lateBound:(e,n)=>P("cannot-redeclare",e,`Duplicate property '${n}'.`),alsoDeclared:(e,n)=>P("cannot-redeclare",e,`Property '${n}' was also declared here.`)},overwrittenProperty:(e,n,t)=>({...P("overwritten-property",e,`'${n}' is specified more than once, so this usage will be overwritten.`),relatedInformation:[{node:t,message:"This spread always overwrites this property."}]}),implicitAny:{parameter:(e,n)=>P("implicit-any",e,`Parameter '${n}' implicitly has an 'any' type.`),rest:(e,n)=>P("implicit-any",e,`Rest parameter '${n}' implicitly has an 'any[]' type.`),bindingElement:(e,n)=>P("implicit-any",e,`Binding element '${n}' implicitly has an 'any' type.`),evolving:(e,n)=>P("implicit-any",e,`Variable '${n}' implicitly has type 'any' in some locations where its type cannot be determined.`),variable:(e,n)=>P("implicit-any",e,`Variable '${n}' implicitly has an 'any' type.`),index:(e,n,t)=>P("implicit-any",e,`Element implicitly has an 'any' type because expression of type '${q(n)}' can't be used to index type '${q(t)}'.`),indexNotNumber:e=>P("implicit-any",e,"Element implicitly has an 'any' type because index expression is not of type 'number'.")},tupleIndexOutOfRange:(e,n,t,r)=>P("no-such-member",e,`Tuple type '${q(n)}' of length '${t}' has no element at index '${r}'.`),propsMismatch:(e,n,t)=>P("props-mismatch",e,`Payload is not compatible with the component props '${q(n)}': ${t}.`),noMatchingOverload:(e,n,t)=>P("no-matching-overload",e,`No overload of '${q(n)}' matches the arguments (${t.map(r=>q(r)).join(", ")}).`),constraintViolation:(e,n,t)=>P("constraint-violation",e,`Type '${q(n)}' does not satisfy the constraint '${q(t)}'.`),unsupported:(e,n)=>P("unsupported",e,`${n} is not supported in this language.`),usedBeforeDeclaration:{blockScoped:(e,n,t)=>({...P("used-before-declaration",e,`Block-scoped variable '${n}' used before its declaration.`),relatedInformation:[{node:t,message:`'${n}' is declared here.`}]}),parameterSelf:(e,n)=>P("used-before-declaration",e,`Parameter '${n}' cannot reference itself.`),parameterAfter:(e,n,t)=>P("used-before-declaration",e,`Parameter '${n}' cannot reference identifier '${t}' declared after it.`)},usedBeforeAssigned:(e,n)=>P("used-before-assigned",e,`Variable '${n}' is used before being assigned.`),namespace:{notFound:(e,n)=>P("unknown-name",e,mn.cannotFindNamespace(n)),noExportedMember:(e,n,t)=>P("no-such-member",e,mn.noExportedMember(n,t)),asValue:(e,n)=>P("type-as-value",e,`Cannot use namespace '${n}' as a value.`),misplaced:e=>P("misplaced-namespace",e,"A namespace declaration is only allowed in a namespace or module.")},modifier:{cannotAppearHere:e=>P("misplaced-modifier",e,"Modifiers cannot appear here."),alreadyAmbient:e=>P("misplaced-modifier",e,"A 'declare' modifier cannot be used in an already ambient context.")},ambient:{initializer:e=>P("ambient-initializer",e,"Initializers are not allowed in ambient contexts."),constInitializer:e=>P("ambient-initializer",e,"A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference."),statement:e=>P("ambient-statement",e,"Statements are not allowed in ambient contexts.")},wrongTypeArgumentCount:(e,n,t)=>P("wrong-type-argument-count",e,`Expected ${n} type arguments, but got ${t}.`),noOverloadTypeArgumentCount:(e,n,t,r)=>P("wrong-type-argument-count",e,`No overload expects ${n} type arguments, but overloads do exist that expect either ${t} or ${r} type arguments.`),genericTypeArity:(e,n,t,r)=>P("wrong-type-argument-count",e,mn.genericTypeArity(n,t,r)),unusedName:(e,n)=>ve("unused-name",e,`'${n}' is declared but its value is never read.`,"warning"),assignToConst:(e,n,t)=>P("assign-to-const",e,t==="import"?`Cannot assign to '${n}' because it is an import.`:t==="not-a-variable"?`Cannot assign to '${n}' because it is not a variable.`:`Cannot assign to '${n}' because it is a constant.`),forInTarget:e=>P("not-assignable",e,"The left-hand side of a 'for...in' statement must be of type 'string' or 'any'."),forInDestructuring:e=>P("for-in-destructuring",e,"The left-hand side of a 'for...in' statement cannot be a destructuring pattern."),forInNotObject:(e,n)=>P("for-in-not-object",e,`The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter, but here has type '${q(n)}'.`),readonlyWrite:(e,n)=>P("readonly-write",e,`Index signature in type '${q(n)}' only permits reading.`),readonlyProperty:(e,n)=>P("readonly-write",e,`Cannot assign to '${n}' because it is a read-only property.`),readonlyDelete:e=>P("readonly-write",e,"The operand of a 'delete' operator cannot be a read-only property."),castUnsound:(e,n,t)=>P("cast-unsound",e,`Conversion of type '${q(n)}' to type '${q(t)}' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.`),unprovableValue:(e,n,t,r)=>P("unprovable-value",e,`A value of type '${q(n)}' can never satisfy '${r}' (${q(t)}): the types do not overlap, so this proof can only fail at runtime.`),arithmeticOperand:(e,n)=>P("not-arithmetic-operand",e,n==="operand"?"An arithmetic operand must be of type 'any' or 'number'.":`The ${n==="left"?"left":"right"}-hand side of an arithmetic operation must be of type 'any' or 'number'.`),operatorNotApplicable:(e,n,t,r)=>P("operator-not-applicable",e,`Operator '${n}' cannot be applied to types '${q(t)}' and '${q(r)}'.`),notComparable:(e,n,t)=>P("not-comparable",e,`Type '${q(n)}' is not comparable to type '${q(t)}'.`),uncalledFunctionCheck:e=>P("uncalled-function-check",e,"This condition will always return true since the function is always defined. Did you mean to call it instead?"),noOverlap:(e,n,t,r,a)=>({...P("no-overlap",e,`This condition will always return '${n==="==="||n==="=="?"false":"true"}' since the types '${q(t)}' and '${q(r)}' have no overlap.`),...a?{relatedInformation:[{node:e,message:"Did you forget to use 'await'?"}]}:{}}),implicitCoercion:(e,n,t,r)=>({...P("implicit-coercion",e,`Operator '+' does not convert to text: cannot mix '${q(n)}' and '${q(t)}'. `+(r?"Use a template literal or 'asString(\u2026)'.":"Use 'stringify(\u2026)' to serialize a structure.")),data:{kind:"implicit-coercion",textConvertible:r}}),notTextConvertible:(e,n)=>({...P("implicit-coercion",e,`Cannot convert '${q(n)}' to text: only string, number, boolean, null and undefined convert. Use 'stringify(\u2026)' to serialize a structure.`),data:{kind:"implicit-coercion",textConvertible:false}})};function he(){let e=[],n=new WeakMap,t=0;return {all:e,get reported(){return t},report(r){t++;let a=n.get(r.node);a||n.set(r.node,a=[]),!a.some(o=>od(o,r))&&(a.push(r),e.push(r));},hasErrors(){return e.some(r=>r.severity==="error")}}}function od(e,n){if(e.code!==n.code||e.message!==n.message)return false;let t=e.relatedInformation??[],r=n.relatedInformation??[];return t.length===r.length&&t.every((a,o)=>a.node===r[o].node&&a.message===r[o].message)}var Pn={None:0,FunctionScopedVariable:1,BlockScopedVariable:2,Function:16,ValueModule:512,NamespaceModule:1024,TypeAlias:1<<19,ExportValue:1<<20,Alias:1<<21},X=Pn,Oo=X.FunctionScopedVariable|X.BlockScopedVariable,xn=Oo|X.Function|X.ValueModule,Ui=X.TypeAlias,Ao=X.ValueModule|X.NamespaceModule,ld=Oo|X.Function|Ao|X.TypeAlias|X.Alias,ir={Value:xn,Type:Ui},yn={BlockScopedVariable:xn,FunctionScopedVariable:xn&-2,Parameter:xn,Function:xn&-529,ValueModule:xn&-529,NamespaceModule:0,TypeAlias:Ui,Alias:X.Alias},Ki=e=>`${e.name}@${e.id}`,zi=e=>{let n=e.indexOf("@");return n<0?e:e.slice(0,n)},Et=e=>e.includes("@"),cd=new Set(["ArrowFunctionExpression","FunctionExpression","FunctionDeclaration"]),Ke=e=>!!e&&cd.has(e.type),lt={None:0,WithLocals:1,BlockScoped:2};function ud(e,n){switch(e.type){case "Program":case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":case "TSModuleDeclaration":return lt.WithLocals;case "CatchClause":case "ForStatement":case "ForInStatement":case "ForOfStatement":case "SwitchStatement":return lt.BlockScoped;case "BlockStatement":return Ke(n)?lt.None:lt.BlockScoped;default:return lt.None}}function en(e,n,t){switch(e.type){case "Identifier":t.push({name:e,element:n});return;case "AssignmentPattern":en(e.left,n,t);return;case "RestElement":en(e.argument,n,t);return;case "ArrayPattern":for(let r of e.elements)r&&en(r,r,t);return;case "ObjectPattern":for(let r of e.properties)en(r.type==="RestElement"?r:r.value,r,t);return;default:return}}function Mo(e){let n=[];switch(e.type){case "VariableDeclaration":for(let t of e.declarations)en(t.id,t,n);break;case "VariableDeclarator":en(e.id,e,n);break;case "FunctionDeclaration":{let t=e.id;return t?[t]:[]}default:if(Ke(e))for(let t of e.params)en(t,t,n);else en(e,e,n);}return n.map(t=>t.name)}var pd=1;function xo(e,n){let t=new WeakMap,r=new WeakMap,a=new WeakMap,o=new WeakMap,s=new WeakMap,i=new WeakMap,l=new WeakMap,c=new WeakSet,u=new WeakSet,p=[],d=[],y=new WeakSet,m=N=>{y.has(N)||(y.add(N),d.push(N));},h=[],S=[],B=0,M=e,O=e,F=(N,W)=>{let z={id:pd++,name:W,flags:N,declarations:[]};return S.push(z),z},$=N=>{let W=a.get(N);return W||a.set(N,W=new Map),W},E=N=>{if(N.type==="TSModuleDeclaration"){let z=s.get(N.id);return z.exports||(z.exports=new Map),z}let W=o.get(N);return W||(W=F(X.None,N.type),W.exports=new Map,o.set(N,W)),W},x=(N,W,z)=>{N.flags|=z,s.set(W.name,N),N.declarations.includes(W)||N.declarations.push(W),z&Ao&&!N.exports&&(N.exports=new Map),z&xn&&!N.valueDeclaration&&(N.valueDeclaration=W);},R=(N,W,z,G,ge)=>{let oe=z.name.name,ce=N.get(oe);if(!ce)N.set(oe,ce=F(X.None,oe));else if(ce.flags&ge){let wn=ce.flags&X.BlockScopedVariable?b.redeclaration.blockScoped:b.redeclaration.duplicate;for(let Va of ce.declarations)p.push(wn(Va.name,oe));p.push(wn(z.name,oe)),ce=F(X.None,oe);}return x(ce,z,G),ce.parent||(ce.parent=W),ce},J=(N,W,z,G)=>{let ge=$(N);if(z&X.Alias){if(W.kind==="export-specifier"){let oe=E(N);return R(oe.exports,oe,W,z,G)}return R(ge,void 0,W,z,G)}if(W.exported||u.has(N)){let oe=E(N),ce=R(ge,void 0,W,z&xn?X.ExportValue:0,G);return ce.exportSymbol=R(oe.exports,oe,W,z,G),i.set(W.name,ce),ce}return R(ge,void 0,W,z,G)},re=N=>N.type==="Program"||N.type==="TSModuleDeclaration",ne=(N,W,z)=>{re(M)?J(M,N,W,z):R($(M),void 0,N,W,z);},g=(N,W,z)=>{re(O)?J(O,N,W,z):R($(O),void 0,N,W,z);},k=N=>(c.add(N.name),l.set(N.name,N),N),T=(N,W)=>{let z=N.kind;for(let G of N.declarations){let ge=[],oe=G.id;en(oe,G,ge);for(let ce of ge){let wn=k({name:ce.name,node:ce.element===oe?G:ce.element,kind:z,exported:W});z==="var"?ne(wn,X.FunctionScopedVariable,yn.FunctionScopedVariable):g(wn,X.BlockScopedVariable,yn.BlockScopedVariable);}}},V=N=>{for(let W of N.params){let z=[];en(W,W,z);for(let G of z)R($(N),void 0,k({name:G.name,node:G.element,kind:"parameter",exported:false}),X.FunctionScopedVariable,yn.Parameter);}},K=(N,W)=>{let z=W?.type==="ExportNamedDeclaration";switch(N.type){case "VariableDeclaration":T(N,z);return;case "FunctionDeclaration":{let G=N.id;G&&g(k({name:G,node:N,kind:"function",exported:z}),X.Function,yn.Function);return}case "TSTypeAliasDeclaration":g(k({name:N.id,node:N,kind:"type-alias",exported:z}),X.TypeAlias,yn.TypeAlias);return;case "TSModuleDeclaration":{let G=N,ge=W?.type==="TSModuleDeclaration",oe=ast.isInstantiatedNamespace(G);ne(k({name:G.id,node:N,kind:"namespace",exported:z||ge}),oe?X.ValueModule:X.NamespaceModule,oe?yn.ValueModule:yn.NamespaceModule);return}case "ImportDeclaration":for(let G of N.specifiers)ne(k({name:G.local,node:G,kind:"import",exported:false}),X.Alias,yn.Alias);return;case "ExportNamedDeclaration":{let G=N;if(!G.declaration&&!G.source)for(let ge of G.specifiers)ne(k({name:ge.exported,node:ge,kind:"export-specifier",exported:true}),X.Alias,yn.Alias);return}case "CatchClause":{let G=N.param;if(!G)return;h.push(N);let ge=[];en(G,G,ge);for(let oe of ge)R($(N),void 0,k({name:oe.name,node:oe.element,kind:"catch",exported:false}),X.BlockScopedVariable,yn.BlockScopedVariable);return}default:return}},_=(N,W)=>{if(!W)return;if(N.body.type==="TSModuleDeclaration"){u.add(N);return}N.body.body.some(G=>G.type==="ExportNamedDeclaration"&&!G.declaration)||u.add(N);},H=(N,W,z)=>{if(c.has(N)||!W)return false;switch(W.type){case "MemberExpression":return z!=="property"||!!W.computed;case "Property":{let G=W;return z==="key"?!!G.computed||!!G.shorthand&&G.value===G.key:true}case "ImportSpecifier":case "ImportDefaultSpecifier":case "ImportNamespaceSpecifier":return false;case "ExportSpecifier":return z==="local";case "FunctionExpression":return z!=="id";case "LabeledStatement":case "BreakStatement":case "ContinueStatement":case "MetaProperty":return false;default:return true}},le=0,ae=N=>{for(let W=n;W;W=W.bound.outer)if(W.bound.has(N))return true;return false},Le=(N,W,z)=>{if(W&&ae(N))return;if(r.has(N)){N.type==="Identifier"&&H(N,W,z)&&m(N);return}if(r.set(N,B++),W&&t.set(N,W),N.type==="Identifier"){H(N,W,z)&&m(N);return}K(N,W);let G=ud(N,W),ge=M,oe=O,ce=N.type==="TSModuleDeclaration",wn=ce&&(le>0||N.declare===true);G===lt.WithLocals?(M=O=N,$(N),ce&&_(N,wn),Ke(N)&&V(N)):G===lt.BlockScoped&&(O=N),wn&&le++,ast.forEachChild(N,(Va,Lu)=>Le(Va,N,Lu)),wn&&le--,M=ge,O=oe;};return Le(e,void 0,""),{root:e,diagnostics:p,references:d,catchClauses:h,symbols:S,symbolOf:N=>s.get(N),localSymbolOf:N=>i.get(N),declarationOf:N=>l.get(N),localsOf:N=>a.get(N)??n?.bound.localsOf(N),containerSymbolOf:N=>(N.type==="TSModuleDeclaration"?s.get(N.id):o.get(N))??n?.bound.containerSymbolOf(N),parentOf:N=>N===e?n?.parent:t.get(N)??n?.bound.parentOf(N),orderOf:N=>r.get(N)??n?.bound.orderOf(N)??-1,resolved:new WeakMap,has:N=>r.has(N),outer:n}}function Vi(e,n,t){let r=e.get(n);if(!(!r||!t)&&(r.flags&t||r.flags&X.Alias))return r}var Kn=(e,n,t)=>{for(let r=n;r;r=e.parentOf(r)){let a=t(r);if(a==="quit")return;if(a)return r}},dd=(e,n,t)=>!!Kn(e,n,r=>r===t),Po=(e,n)=>!!n&&e.params.includes(n),fd=(e,n,t,r)=>{let a=n.valueDeclaration,o=t.body;return Po(t,r)&&!!a&&dd(e,a.node,o)};function na(e,n,t,r){let a=n,o;for(;a;){let s=e.localsOf(a),i=a.type==="SwitchStatement"&&o===a.discriminant;if(s&&!i){let l=Vi(s,t,r);if(l){let c=true;if(Ke(a)&&o&&o!==a.body&&r&l.flags&Oo&&(fd(e,l,a,o)?c=false:l.flags&X.FunctionScopedVariable&&(c=Po(a,o))),c)return l}}if(a.type==="Program"||a.type==="TSModuleDeclaration"){let l=e.containerSymbolOf(a)?.exports,c=l?.get(t),u=c?.flags===X.Alias&&c.declarations.every(p=>p.kind==="export-specifier");if(l&&!u){let p=Vi(l,t,r&ld);if(p)return p}}o=a,a=e.parentOf(a);}}function Ot(e,n){let t=e.resolved.get(n);if(t!==void 0)return t??void 0;let r=na(e,n,n.name,xn|X.ExportValue);return e.resolved.set(n,r??null),r}var ta=e=>e.flags&X.ExportValue&&e.exportSymbol?e.exportSymbol:e,md=(e,n)=>{switch(e.type){case "Program":case "SwitchStatement":case "CatchClause":case "TSModuleDeclaration":case "ForStatement":case "ForInStatement":case "ForOfStatement":case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":return true;case "BlockStatement":return !Ke(n);default:return false}},Li=(e,n)=>{let t=e.parentOf(n);return t?t.type==="ArrayPattern"?true:n.type==="Property"||n.type==="RestElement"?t.type==="ObjectPattern":false:false};function ra(e,n,t,r){let a=n.node,o=Kn(e,e.parentOf(a),p=>md(p,e.parentOf(p))),s=e;for(;s&&!s.has(a);)s=s.outer?.bound;let i=s??e,l=p=>{let d=p;for(;d&&!i.has(d);)d=e.parentOf(d);return d??p},c=p=>i.orderOf(l(p));if(c(a)<=c(t)){if(Li(e,a)){let p=Kn(e,t,y=>Li(e,y));if(p)return p!==a||c(a)<c(p);let d=Kn(e,a,y=>y.type==="VariableDeclarator");return d?ra(e,{...n,node:d},t,r):true}return a.type==="VariableDeclarator"?!yd(e,a,t,o):true}return e.parentOf(t)?.type==="ExportSpecifier"?true:r.deferred?hd(e,t,o):false}function yd(e,n,t,r){let a=e.parentOf(n),o=a&&e.parentOf(a);if(o?.type!=="ForInStatement"&&Kn(e,t,i=>i===r||Ke(i)?"quit":i===n))return true;if(o&&(o.type==="ForInStatement"||o.type==="ForOfStatement")){let s=o.right;return !!Kn(e,t,i=>i===r||Ke(i)?"quit":i===s)}return false}function hd(e,n,t){return !!Kn(e,n,r=>r===t?"quit":Ke(r))}function aa(e,n){let t=e.parentOf(n);return t?.type==="CallExpression"&&t.callee===n}function Do(e,n){return Kn(e,e.parentOf(n),t=>Ke(t)&&!aa(e,t)||t.type==="TSModuleBlock"||t.type==="Program")}var Sd=(e,n,t)=>!Ke(n)||n.id===t?false:n.async?true:!aa(e,n),To=e=>e.type==="ObjectPattern"||e.type==="ArrayPattern",Eo=(e,n)=>{let t=e.parentOf(n);return Ke(t)&&Po(t,n)},gd=(e,n)=>{for(let t=n;t;t=e.parentOf(t)){if(Eo(e,t))return true;let r=e.parentOf(t);if(!(!!r&&(To(r)||r.type==="Property"||r.type==="AssignmentPattern"||r.type==="RestElement")))return false}return false};function _i(e,n,t){let r,a=false,o=n;for(let s=e.parentOf(n);s;s=e.parentOf(s)){if(e.localsOf(s)?.get(t.name)===t){if(!r||a||!Ke(s))return;let i=t.valueDeclaration;return i?i.node===r.node?{kind:"self",...Wi(r)}:e.orderOf(i.node)>e.orderOf(r.node)?{kind:"after",...Wi(r)}:void 0:void 0}a||(a=Sd(e,s,o)),r||(r=bd(e,s,o)),o=s;}}var Wi=e=>({associated:e.node,name:e.name});function bd(e,n,t){if(n.type==="AssignmentPattern"){let r=n,a=r.left,o=t===r.right,s=t===a&&To(a);if(!o&&!s)return;if(Eo(e,n))return {node:n,name:a};let i=e.parentOf(n),l=i?.type==="Property"?i:n;return gd(e,l)?{node:l,name:a}:void 0}if(To(n)&&Eo(e,n))return {node:n,name:n}}var qi={Partial:{params:[{t:"var",name:"T"}],body:{t:"mapped",key:"P",over:{t:"keyof",of:{t:"var",name:"T"}},body:{t:"index",obj:{t:"var",name:"T"},key:{t:"var",name:"P"}},optional:true}},Required:{params:[{t:"var",name:"T"}],body:{t:"mapped",key:"P",over:{t:"keyof",of:{t:"var",name:"T"}},body:{t:"index",obj:{t:"var",name:"T"},key:{t:"var",name:"P"}},excludeOptional:true}},Readonly:{params:[{t:"var",name:"T"}],body:{t:"mapped",key:"P",over:{t:"keyof",of:{t:"var",name:"T"}},body:{t:"index",obj:{t:"var",name:"T"},key:{t:"var",name:"P"}},readonly:true}},Pick:{params:[{t:"var",name:"T"},{t:"var",name:"K",bound:{t:"keyof",of:{t:"var",name:"T"}}}],body:{t:"mapped",key:"P",over:{t:"var",name:"K",bound:{t:"keyof",of:{t:"var",name:"T"}}},body:{t:"index",obj:{t:"var",name:"T"},key:{t:"var",name:"P"}}}},Record:{params:[{t:"var",name:"K",bound:{t:"keyof",of:{t:"any"}}},{t:"var",name:"T"}],body:{t:"mapped",key:"P",over:{t:"var",name:"K",bound:{t:"keyof",of:{t:"any"}}},body:{t:"var",name:"T"}}},Exclude:{params:[{t:"var",name:"T"},{t:"var",name:"U"}],body:{t:"conditional",check:{t:"var",name:"T"},extends:{t:"var",name:"U"},then:{t:"union",of:[]},else:{t:"var",name:"T"}}},Extract:{params:[{t:"var",name:"T"},{t:"var",name:"U"}],body:{t:"conditional",check:{t:"var",name:"T"},extends:{t:"var",name:"U"},then:{t:"var",name:"T"},else:{t:"union",of:[]}}},Omit:{params:[{t:"var",name:"T"},{t:"var",name:"K",bound:{t:"keyof",of:{t:"any"}}}],body:{t:"apply",name:"Pick",args:[{t:"var",name:"T"},{t:"apply",name:"Exclude",args:[{t:"keyof",of:{t:"var",name:"T"}},{t:"var",name:"K",bound:{t:"keyof",of:{t:"any"}}}]}]}},NonNullable:{params:[{t:"var",name:"T"}],body:{t:"conditional",check:{t:"var",name:"T"},extends:{t:"union",of:[{t:"null"},{t:"undefined"}]},then:{t:"union",of:[]},else:{t:"var",name:"T"}}},Parameters:{params:[{t:"var",name:"T",bound:{t:"fn",params:[{name:"args",type:{t:"any"},variadic:true}],returns:{t:"any"}}}],body:{t:"conditional",check:{t:"var",name:"T",bound:{t:"fn",params:[{name:"args",type:{t:"any"},variadic:true}],returns:{t:"any"}}},extends:{t:"fn",params:[{name:"args",type:{t:"var",name:"P"},variadic:true}],returns:{t:"any"}},then:{t:"var",name:"P"},else:{t:"union",of:[]},infer:[{t:"var",name:"P"}]}},ReturnType:{params:[{t:"var",name:"T",bound:{t:"fn",params:[{name:"args",type:{t:"any"},variadic:true}],returns:{t:"any"}}}],body:{t:"conditional",check:{t:"var",name:"T",bound:{t:"fn",params:[{name:"args",type:{t:"any"},variadic:true}],returns:{t:"any"}}},extends:{t:"fn",params:[{name:"args",type:{t:"any"},variadic:true}],returns:{t:"var",name:"R"}},then:{t:"var",name:"R"},else:{t:"any"},infer:[{t:"var",name:"R"}]}},PropertyKey:{params:[],body:{t:"union",of:[{t:"string"},{t:"number"}]}}};var Co=[f.typeParam("T")],lr=Object.freeze({Array:Co,ReadonlyArray:Co,Promise:Co});var Dn={byPath:new Map,byNode:new WeakMap,aliasOwner:new WeakMap};function Ro(e){if(e.type!=="ExportNamedDeclaration")return {decl:e,exported:false};let n=e.declaration;return n?{decl:n,exported:true}:{decl:e,exported:false}}function kd(e){let n=e.id;return n?.name?{name:n.name,id:n}:null}var vd=e=>e.body.type==="TSModuleBlock"?e.body.body:[],wd=(e,n)=>e&&!n.some(t=>t.type==="ExportNamedDeclaration"&&!t.declaration);function Ji(e,n,t=new Set){if(e.type!=="Program")return Dn;let r=e.body;if(!r.some(l=>Ro(l).decl.type==="TSModuleDeclaration"))return Dn;let a=new Map,o=new WeakMap,s=new WeakMap,i=(l,c,u)=>{let p=c?`${c.path}.${l.id.name}`:l.id.name,d=new Map,y=new Map,m={node:l,path:p,parent:c,ambient:u,instantiated:ast.isInstantiatedNamespace(l),types:d,namespaces:y};o.set(l,m);let h=a.get(p);if(h?h.push(m):a.set(p,[m]),l.body.type==="TSModuleDeclaration"){y.set(l.body.id.name,{exported:true,id:l.body.id}),i(l.body,m,u);return}let S=vd(l),B=wd(u,S);for(let M of S){let{decl:O,exported:F}=Ro(M),$=kd(O);if(!$)continue;let E=F||B;O.type==="TSTypeAliasDeclaration"?(s.set(O,m),d.has($.name)||d.set($.name,{exported:E,id:$.id})):O.type==="TSModuleDeclaration"&&(y.has($.name)||y.set($.name,{exported:E,id:$.id}),i(O,m,u));}};for(let l of r){let{decl:c}=Ro(l);c.type==="TSModuleDeclaration"&&i(c,null,c.declare===true);}for(let[l,c]of a){Td(l,c,n);for(let u of c)for(let[p,d]of u.types)!d.key&&d.id&&t.has(`${l}.${p}`)&&u.types.set(p,{...d,key:`${l}.${p}@${n(d.id)}`});}return {byPath:a,byNode:o,aliasOwner:s}}function Td(e,n,t){let r=new Map;for(let a of n)for(let[o,s]of a.types){let i=r.get(o);i?i.push({decl:a,member:s}):r.set(o,[{decl:a,member:s}]);}for(let[a,o]of r){if(o.length<2)continue;let s=o.find(i=>i.member.exported)??o[0];for(let{decl:i,member:l}of o)l!==s.member&&l.id&&i.types.set(a,{...l,key:`${e}.${a}@${t(l.id)}`});}}function Xi(e,n){let t=[];return ast.walk(e,{TSModuleDeclaration(r){if(!n.byNode.has(r))return t.push(r),false}}),t}function Hi(e,n=[]){let t=new Map,r=a=>{let o=t.get(a);if(o)return o[0];let s=a.lastIndexOf("."),i=s<0?null:r(a.slice(0,s)),l={node:null,path:a,parent:i,ambient:true,instantiated:false,types:new Map,namespaces:new Map,values:new Map};return t.set(a,[l]),i&&i.namespaces.set(a.slice(s+1),{exported:true,id:null}),l};for(let a of e){let o=a.lastIndexOf(".");if(o<=0||o===a.length-1)continue;r(a.slice(0,o)).types.set(a.slice(o+1),{exported:true,id:null});}for(let a of n){let o=a.lastIndexOf(".");if(o<=0||o===a.length-1)continue;let s=r(a.slice(0,o));s.values.set(a.slice(o+1),{exported:true,id:null});for(let i=s;i&&!i.instantiated;i=i.parent)i.instantiated=true;}return t.size?{byPath:t,byNode:new WeakMap,aliasOwner:new WeakMap}:Dn}function jo(e,n,t,r){for(let a of e.byPath.get(n)??[]){let o=a[r].get(t);if(o?.exported)return o}}var Gi=(e,n,t,r)=>n[r].get(t)??jo(e,n.path,t,r);function ct(e,n,t,r=[]){let a=(u,p)=>({key:u.key??p}),o=e.split(".");if(o.length===1){for(let u=n;u;u=u.parent){let p=Gi(t,u,e,"types");if(p)return a(p,`${u.path}.${e}`)}return {key:e}}let s=null,i="";for(let u=n;u&&!s;u=u.parent)Gi(t,u,o[0],"namespaces")&&(s=t,i=`${u.path}.${o[0]}`);for(let u of [t,...r])!s&&u.byPath.has(o[0])&&(s=u,i=o[0]);if(!s)return {error:"namespace",segment:0};for(let u=1;u<o.length-1;u++){if(!jo(s,i,o[u],"namespaces"))return {error:"member",segment:u,namespace:i};i=`${i}.${o[u]}`;}let l=o.length-1,c=jo(s,i,o[l],"types");return c?a(c,`${i}.${o[l]}`):{error:"member",segment:l,namespace:i}}function Qi(e,n,t,r=[]){return cr(e,a=>ct(a,n,t,r))}function cr(e,n,t,r){let a=[],o=s=>{if(Array.isArray(s)){let p=false,d=s.map((y,m)=>{a.push(m);let h=o(y);return a.pop(),h!==y&&(p=true),h});return p?d:s}if(!s||typeof s!="object")return s;let i=s;if(r&&i.t==="typeQuery"&&Array.isArray(i.path)){let p=i.path,d=r(p,a);return d?d.length===p.length&&d.every((y,m)=>y===p[m])?i:{...i,path:d}:f.any}let l=i.t==="apply"&&typeof i.name=="string"?n(i.name,a,Array.isArray(i.args)?i.args:[]):void 0;if(l&&!("key"in l))return f.any;let c=false,u={};for(let p of Object.keys(i)){a.push(p);let d=o(i[p]);a.pop(),d!==i[p]&&(c=true),v(u,p,d);}return l&&l.key!==i.name&&(c=true,v(u,"name",l.key)),l&&t&&Array.isArray(i.args)&&t(i.args,l.key,c?u.args:i.args),c?u:i};return o(e)}var el=(e={})=>ast.rootScope(e),hn=(e,n)=>ast.childScope(e,n),we=(e,n)=>ast.lookup(e,n),Fo=e=>{let n=new Map;for(let[t,r]of ast.visibleNames(e)){if(nl(t))continue;let a=zi(t);n.has(a)||n.set(a,r);}return n},nl=e=>e.includes(".")||e.endsWith("#");function Pd(e,n){let t=n+"@";for(let r=e;r;r=r.parent){if(pe(r.vars,n))return true;for(let a of Object.keys(r.vars))if(a.startsWith(t)&&!nl(a))return false}return false}var Yi=new Set(["types","schemes","accessors","asserters","matchers","modules","nominals","noLib"]),Dd=(e={},n)=>{let t=n??{},r=Object.keys(t).filter(d=>!Yi.has(d));if(r.length>0)throw new ast.TSLiteError("invalid-env-options",`createEnv: unknown option(s) ${r.map(d=>`'${d}'`).join(", ")} \u2014 expected ${[...Yi].join(", ")}. Named types go under 'types'.`,{unknown:r});let a=t.types??{},o=Fd(t.schemes??{}),s=Hi([...Object.keys(a),...Object.keys(o)],Object.keys(e).filter(tl)),i=t.noLib?{}:qi,l=t.nominals??{},c=[],u=al(rl(a,o,i,t.noLib?l:{...lr,...l}),s,d=>pe(e,d)||!!s.byPath.get(d)?.some(y=>y.instantiated),c),p=At(e,(d,y)=>u.resolve(y,Io(d,s),["vars",d]));return {scope:el(Id(p,c)),types:At(a,(d,y)=>u.resolve(y,Io(d,s),["types",d])),schemes:At(o,(d,y)=>jd(y,u,Io(d,s),["schemes",d])),namespaces:s,accessors:At(t.accessors??{},(d,y)=>u.resolve(y,null,["accessors",d])),asserters:t.asserters??new Set,matchers:t.matchers??new Set,modules:At(t.modules??{},(d,y)=>u.resolve(y,null,["modules",d])),lib:i,nominals:{...t.noLib?{}:lr,...At(l,(d,y)=>ol(y,u,null,["nominals",d]))},diagnostics:c}},tl=e=>e.includes(".");function rl(e,n,t,r){let a=new Map;for(let o of Object.keys(r))a.set(o,w(r,o));for(let o of Object.keys(t))a.set(o,w(t,o).params);for(let o of Object.keys(e))a.set(o,[]);for(let o of Object.keys(n))a.set(o,w(n,o).params);return a}var Zi=new WeakMap;function Cd(e){let n=Zi.get(e);if(n)return n;let t=rl(e.types,e.schemes,e.lib??{},e.nominals??{});return Zi.set(e,t),t}function Rd(e,n,t){let r=e.namespaces??Dn,a=null;for(let i=n??"";i&&!a;){a=r.byPath.get(i)?.[0]??null;let l=i.lastIndexOf(".");i=l<0?"":i.slice(0,l);}let o=[];return {type:al(Cd(e),r,i=>pe(e.scope.vars,i),o).resolve(t,a,[]),diagnostics:o}}function At(e,n){let t=false,r={};for(let a of Object.keys(e)){let o=w(e,a),s=n(a,o);s!==o&&(t=true),v(r,a,s);}return t?r:e}function al(e,n,t,r){let a=(o,s)=>!!o.values?.has(s)||!!n.byPath.get(`${o.path}.${s}`)?.some(i=>i.instantiated);return {resolve:(o,s,i)=>cr(o,(l,c,u)=>{let p=ct(l,s,n);if("error"in p){let h=l.split(".");return r.push(p.error==="namespace"?it.namespaceNotFound([...i,...c],h[0]):it.noExportedMember([...i,...c],p.namespace,h[p.segment])),p}let d=e.get(p.key);if(!d)return r.push(it.unknownName([...i,...c],l)),{error:"error-type"};let{min:y,max:m}=pn(d);return u.length<y||u.length>m?(r.push(it.genericTypeArity([...i,...c],l,y,m)),{error:"error-type"}):p},void 0,(l,c)=>{let[u]=l;for(let p=s;p;p=p.parent)if(a(p,u))return [...p.path.split("."),...l];return t(u)?l:(r.push(it.unknownName([...i,...c],u)),null)})}}function ol(e,n,t,r){let a=false,o=e.map((s,i)=>{let l=n.resolve(s,t,[...r,i]);return l!==s&&(a=true),l});return a?o:e}function jd(e,n,t,r){let a=ol(e.params,n,t,[...r,"params"]),o=n.resolve(e.body,t,[...r,"body"]);return a===e.params&&o===e.body?e:{...e,params:a,body:o}}function Id(e,n){if(!Object.keys(e).some(tl))return e;let t={children:new Map};for(let s of Object.keys(e)){let i=t;for(let l of s.split(".")){let c=i.children.get(l);c||i.children.set(l,c={children:new Map}),i=c;}i.leaf={key:s,type:w(e,s)};}let r=s=>[...s.leaf?[s.leaf.key]:[],...[...s.children.values()].flatMap(r)],a=(s,i)=>{if(s.leaf){if(s.children.size)for(let c of r(s))n.push(it.redeclaration(["vars",c],i));return s.leaf.type}let l={};for(let[c,u]of s.children)v(l,c,{type:a(u,c)});return f.object(l)},o={};for(let[s,i]of t.children)v(o,s,a(i,s));return o}function Fd(e){let n=false,t=Object.entries(e).map(([r,a])=>{let o=f.scheme(a.params,a.body),s=o.params===a.params&&o.body===a.body;return s||(n=true),[r,s?a:o]});return n?Object.fromEntries(t):e}var Io=(e,n)=>{let t=e.lastIndexOf(".");return t<0?null:n.byPath.get(e.slice(0,t))?.[0]??null},$d=(e,n)=>w(e.types,n),Vd=(e,n)=>w(e.schemes,n);function ur(e,n,t){let r=$e(e);return Ye(n,nt(r),t)||Ye(r,n,t)}function sl(e,n,t){return L(e,n,t)}function Vo(e,n,t={}){return n.flatMap(r=>r(e,t))}function ut(e,n){let t=(r,a)=>{if(n(r,a)!==false)for(let o of ast.childrenOf(r))t(o,r);};t(e,null);}var Kd=e=>e.type==="TSModuleDeclaration"&&(e.declare===true||!ast.isInstantiatedNamespace(e)),zd=e=>(e.type==="VariableDeclaration"||e.type==="TSTypeAliasDeclaration")&&e.declare===true,_d=e=>Array.isArray(e)?e:[e],il=["ArrowFunctionExpression","FunctionExpression","FunctionDeclaration"];function Lo(e,n="error"){return t=>{let r=[];return ut(t,(a,o)=>{if(zd(a))return false;let s=capability.nodeViolation(a,e,o);if(s&&r.push(ve("node-not-allowed",a,`'${s}' is not allowed by the capability profile.`,n)),Kd(a))return false}),r}}function ll(e,n="error"){let t=e.typeTier;return r=>{if(t==="author")return [];let a=[];return ut(r,o=>{let s=o,i=s.type==="TSTypeAliasDeclaration"?s.id?.name:void 0;for(let l of [s.typeAnnotation,s.returnType]){if(!l)continue;let c=capability.typeFeatureViolations(No(l,i),t);c.length&&a.push(ve("type-feature-not-allowed",o,`authoring type feature${c.length>1?"s":""} '${c.join("', '")}' requires capability tier 'author'.`,n));}}),a}}function ie(e,n=new WeakSet){if(!e||typeof e!="object"||n.has(e))return false;switch(n.add(e),e.t){case "any":return true;case "object":return Object.values(e.props).some(t=>ie(t.type,n))||!!e.index&&ie(e.index.value,n);case "array":return ie(e.items,n);case "tuple":return e.elements.some(t=>ie(t,n));case "union":case "intersection":return e.of.some(t=>ie(t,n));case "fn":return e.params.some(t=>ie(t.type,n))||ie(e.returns,n);case "overload":return e.signatures.some(t=>t.params.some(r=>ie(r.type,n))||ie(t.returns,n));case "keyof":return ie(e.of,n);case "index":return ie(e.obj,n)||ie(e.key,n);case "mapped":return ie(e.over,n)||ie(e.body,n);case "conditional":return ie(e.check,n)||ie(e.extends,n)||ie(e.then,n)||ie(e.else,n);case "returnType":case "parameters":return ie(e.fn,n);case "apply":return e.args.some(t=>ie(t,n));default:return false}}function cl(e,n="error"){return t=>{if(!e.typeStrict)return [];let r=[];return ut(t,a=>{let o=a;for(let s of [o.typeAnnotation,o.returnType])if(s&&ie(s)){r.push(ve("any-not-allowed",a,"'any' is not allowed under 'strict' \u2014 use 'unknown' + validated narrowing (assert/parse).",n));break}}),r}}function ul(e,n="error"){return (t,r)=>{let a=r.overlay;if(!e.typeStrict||!a)return [];let o=r.schemes??{},s=[];return ut(t,i=>{if(i.type!=="TSAsExpression")return;let{expression:l}=i,c=a.get(l)?.type,u=a.get(i)?.type;!c||!u||ie(u)||!ur(c,u,o)||sl(c,u,o)||s.push(ve("narrowing-cast-not-allowed",i,`A cast may only widen under 'strict': '${q(c)}' is not assignable to '${q(u)}'. Narrow with a type guard, or prove the value with an asserter.`,n));}),s}}function Wo(e,n="error"){let t=new Set(e);return r=>{let a=[];return ut(r,o=>{if(o.type!=="CallExpression")return;let s=o.callee;if(s.type!=="Identifier")a.push(ve("name-not-allowed",s,"Only direct calls to allowed functions are permitted.",n));else {let i=s.name;t.has(i)||a.push(ve("name-not-allowed",s,`Function '${i}' is not allowed here.`,n));}}),a}}function oa(e,n,t={}){let r=new Set(_d(e)),a=t.severity??"error",o=[...r].join("/");return s=>{let i=[],l=(c,u)=>{let p=r.has(c.type),d=p?u+1:u;p&&d>n&&i.push(ve("too-deep",c,`Nesting of ${o} exceeds ${n}${t.hint?` \u2014 ${t.hint}`:""}.`,a));for(let y of ast.childrenOf(c))l(y,d);};return l(s,0),i}}var Uo=(e=3,n="error")=>oa(il,e,{hint:"use a pipe instead of nesting functions",severity:n}),Ko=(e,n="error")=>oa("CallExpression",e,{hint:"use a pipe instead of nesting calls",severity:n}),zo=(e,n="error")=>oa("MemberExpression",e,{severity:n});function _o(e,n="error"){return t=>{let r=[],a=(o,s)=>{if(s>e){r.push(ve("too-deep",o,`Expression nesting exceeds ${e}.`,n));return}for(let i of ast.childrenOf(o))a(i,s+1);};return a(t,0),r}}function qo(e,n="error"){return t=>{let r=0;return ut(t,()=>{r++;}),r>e?[ve("too-large",t,`Expression has ${r} nodes (max ${e}).`,n)]:[]}}function Go(e,n="error"){return t=>{let r=[];return ut(t,a=>{if(a.type==="CallExpression"){let o=a.arguments;o&&o.length>e&&r.push(ve("too-large",a,`Call has ${o.length} arguments (max ${e}).`,n));}}),r}}function Jo(e,n={},t="error"){return (r,a)=>{let o=a.overlay?.get(r)?.type;return o?L(o,e,n)?[]:[ve("wrong-result-type",r,`Result type '${q(o)}' is not assignable to the required '${q(e)}'.`,t)]:[]}}function sa(e){let n=[Lo(e),ll(e),cl(e),ul(e)];return e.hostAllow!=="*"&&n.push(Wo([...e.hostAllow])),n}function Gd(e){return sa(capability.compileProfile(e))}var Xo=[{op:"+",category:"additive",result:"additive"},{op:"-",category:"arithmetic",result:"number"},{op:"*",category:"arithmetic",result:"number"},{op:"/",category:"arithmetic",result:"number"},{op:"%",category:"arithmetic",result:"number"},{op:"**",category:"arithmetic",result:"number"},{op:"&",category:"bitwise",result:"number"},{op:"|",category:"bitwise",result:"number"},{op:"^",category:"bitwise",result:"number"},{op:"<<",category:"bitwise",result:"number"},{op:">>",category:"bitwise",result:"number"},{op:">>>",category:"bitwise",result:"number"},{op:"<",category:"relational",result:"boolean"},{op:">",category:"relational",result:"boolean"},{op:"<=",category:"relational",result:"boolean"},{op:">=",category:"relational",result:"boolean"},{op:"===",category:"equality",result:"boolean"},{op:"!==",category:"equality",result:"boolean"},{op:"==",category:"equality",result:"boolean"},{op:"!=",category:"equality",result:"boolean"}],pr=new Map(Xo.map(e=>[e.op,e])),pl={number:f.number,boolean:f.boolean,string:f.string},Ho=e=>pl[e],dl=[{op:"!",result:"boolean"},{op:"-",result:"number"},{op:"+",result:"number"},{op:"~",result:"number"},{op:"typeof",result:"string"},{op:"void",result:"undefined"},{op:"delete",result:"boolean"}],Jd={number:f.number,boolean:f.boolean,string:f.string,undefined:f.undefined},Xd=[{op:"&&"},{op:"||"},{op:"??"}];function Hd(e,n={}){return Xo.filter(t=>t.result==="additive"?L(f.string,e,n)||L(f.number,e,n):L(pl[t.result],e,n))}function Qd(e,n={}){return dl.filter(t=>L(Jd[t.result],e,n))}var pt=e=>({bindings:new Map,parent:e}),ml=e=>e.charCodeAt(0)===95;function ia(e,n,t,r,a,o){let s=e.bindings.get(t);s&&(s.exempt=true);let i={name:t,node:r,kind:a,exempt:o,used:false};e.bindings.set(t,i),n.all.push(i);}function fr(e,n){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let r of e)fr(r,n);return}let t=e;if(t.t==="typeQuery"&&Array.isArray(t.path)){let r=t.path[0];typeof r=="string"&&la(n,r);return}for(let r of Object.keys(t))fr(t[r],n);}function yl(e,n){let t=e;fr(t.typeAnnotation,n),fr(t.returnType,n);}function la(e,n){for(let t=e;t;t=t.parent){let r=t.bindings.get(n);if(r){r.used=true;return}}}function Cn(e,n,t,r,a,o){if(e)switch(e.type){case "Identifier":{let s=e.name;yl(e,n),ia(n,t,s,e,r,a||o&&ml(s));return}case "ObjectPattern":{let s=e.properties,i=s[s.length-1],l=!!i&&i.type==="RestElement";s.forEach((c,u)=>{let p=l&&u<s.length-1;if(c.type==="RestElement")Cn(c.argument,n,t,r,a,false);else {let d=c;d.computed&&Z(d.key,n,t),Cn(d.value,n,t,r,a||p,!d.shorthand);}});return}case "ArrayPattern":{for(let s of e.elements){if(!s)continue;let i=s;Cn(i.type==="RestElement"?i.argument:i,n,t,r,a,true);}return}case "AssignmentPattern":Cn(e.left,n,t,r,a,o);return;case "RestElement":Cn(e.argument,n,t,r,a,true);return;default:return}}function dr(e,n,t){if(e)switch(e.type){case "AssignmentPattern":Z(e.right,n,t),dr(e.left,n,t);return;case "ObjectPattern":for(let r of e.properties)dr(r.type==="RestElement"?r.argument:r.value,n,t);return;case "ArrayPattern":for(let r of e.elements)r&&dr(r,n,t);return;case "RestElement":dr(e.argument,n,t);return;default:return}}function fl(e,n,t,r){for(let a of e.declarations)Cn(a.id,n,t,"local",r,false),Z(a.init,n,t);}function Qo(e,n,t){let r=e,a=pt(n),o=r.params??[];for(let s of o)Cn(s,a,t,"parameter",false,true);for(let s of o)dr(s,a,t);Z(r.body,a,t);}function Z(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(yl(e,n),e.type){case "Identifier":la(n,e.name);return;case "MemberExpression":{let r=e;Z(r.object,n,t),r.computed&&Z(r.property,n,t);return}case "Property":{let r=e;r.computed&&Z(r.key,n,t),Z(r.value,n,t);return}case "Program":case "BlockStatement":{let r=pt(n);for(let a of e.body??[])Z(a,r,t);return}case "ArrowFunctionExpression":case "FunctionExpression":Qo(e,n,t);return;case "FunctionDeclaration":{let r=e.id;r&&ia(n,t,r.name,r,"local",false),Qo(e,n,t);return}case "CatchClause":{let r=e,a=pt(n);Cn(r.param,a,t,"local",true,false),Z(r.body,a,t);return}case "SwitchStatement":{let r=e;Z(r.discriminant,n,t);let a=pt(n);for(let o of r.cases){Z(o.test,a,t);for(let s of o.consequent??[])Z(s,a,t);}return}case "ForStatement":{let r=e,a=pt(n);Z(r.init,a,t),Z(r.test,a,t),Z(r.update,a,t),Z(r.body,a,t);return}case "ForOfStatement":case "ForInStatement":{let r=e;Z(r.right,n,t);let a=pt(n),o=r.left;if(o.type==="VariableDeclaration")for(let s of o.declarations)Cn(s.id,a,t,"local",false,true);else Z(o,a,t);Z(r.body,a,t);return}case "VariableDeclaration":fl(e,n,t,false);return;case "ImportDeclaration":{for(let r of e.specifiers){let a=r.local;a&&ia(n,t,a.name,a,"import",ml(a.name));}return}case "ExportNamedDeclaration":{let r=e;if(r.declaration){let a=r.declaration;if(a.type==="VariableDeclaration")fl(a,n,t,true);else if(a.type==="FunctionDeclaration"){let o=a.id;o&&ia(n,t,o.name,o,"local",true),Qo(a,n,t);}else Z(a,n,t);}else for(let a of r.specifiers)la(n,a.local.name);return}case "TSAsExpression":Z(e.expression,n,t);return;case "TSTypeAliasDeclaration":fr(e.typeAnnotation,n);return;case "JsonExpression":Yo(e.body,n,t);return;case "JSXOpeningElement":{let r=e;hl(r.name,n);for(let a of r.attributes??[])Z(a,n,t);return}case "JSXClosingElement":return;case "JSXAttribute":Z(e.value,n,t);return;default:{let r=w(ast.VisitorKeys,e.type);if(!r)return;let a=e;for(let o of r){let s=w(a,o);if(Array.isArray(s))for(let i of s)Z(i,n,t);else Z(s,n,t);}return}}}function hl(e,n,t){e&&(e.type==="JSXIdentifier"?la(n,e.name):e.type==="JSXMemberExpression"&&hl(e.object,n));}function Yo(e,n,t){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let a of e)Yo(a,n,t);return}let r=e;if(ast.isExprMarker(r)){try{Z(json.fromJson(r),n,t);}catch{}return}for(let a of Object.keys(r))Yo(r[a],n,t);}function Zo(e,n){if(!n.locals&&!n.parameters)return [];let t={all:[]};Z(e,pt(void 0),t);let r=[];for(let a of t.all)a.used||a.exempt||(a.kind==="parameter"?n.parameters:n.locals)&&r.push(b.unusedName(a.node,a.name));return r}var tf=new Set(["const","import"]),mr=e=>({binds:new Map,parent:e});function rf(e,n){for(let t=e;t;t=t.parent){let r=t.binds.get(n);if(r)return r}}function dt(e){if(!e)return [];switch(e.type){case "Identifier":return [e];case "ObjectPattern":return e.properties.flatMap(n=>n.type==="RestElement"?dt(n.argument):dt(n.value));case "ArrayPattern":return e.elements.flatMap(n=>n?dt(n):[]);case "AssignmentPattern":return dt(e.left);case "RestElement":return dt(e.argument);default:return []}}function yr(e){switch(e.type){case "ArrayExpression":return e.elements.flatMap(n=>n?yr(n):[]);case "ObjectExpression":return e.properties.flatMap(n=>yr(n.type==="SpreadElement"?n.argument:n.value));case "SpreadElement":return yr(e.argument);case "AssignmentExpression":return yr(e.left);default:return [e]}}var ca=(e,n,t)=>{for(let r of dt(n))e.binds.set(r.name,t);};function hr(e,n,t){if(!e)return;if(e.type!=="Identifier"){if(e.type==="ArrayExpression"||e.type==="ObjectExpression")for(let o of yr(e))hr(o,n,t);else for(let o of dt(e))hr(o,n,t);return}let r=e.name,a=rf(n,r);a&&tf.has(a)&&(t.invalid.add(e),t.out.push(b.assignToConst(e,r,a==="import"?"import":"const")));}function Ae(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(e.type){case "AssignmentExpression":{let r=e;hr(r.left,n,t),Ae(r.right,n,t);return}case "UpdateExpression":{hr(e.argument,n,t);return}case "Program":case "BlockStatement":{let r=mr(n);for(let a of e.body??[])Ae(a,r,t);return}case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":{let r=e,a=mr(n);for(let o of r.params??[])ca(a,o,"param");Ae(r.body,a,t);return}case "CatchClause":{let r=e,a=mr(n);ca(a,r.param,"param"),Ae(r.body,a,t);return}case "ForStatement":case "ForOfStatement":case "ForInStatement":{let r=e,a=mr(n),o=r.left??r.init;if(o?.type==="VariableDeclaration")for(let s of o.declarations)ca(a,s.id,o.kind);else o&&r.left?(hr(o,a,t),Ae(o,a,t)):o&&Ae(o,a,t);Ae(r.right,n,t),Ae(r.test,a,t),Ae(r.update,a,t),Ae(r.body,a,t);return}case "VariableDeclaration":{let r=e;for(let a of r.declarations)Ae(a.init,n,t),ca(n,a.id,r.kind);return}case "ImportDeclaration":{for(let r of e.specifiers){let a=r.local;a&&n.binds.set(a.name,"import");}return}case "ExportNamedDeclaration":{let r=e;r.declaration&&Ae(r.declaration,n,t);return}case "TSTypeAliasDeclaration":return;case "TSAsExpression":Ae(e.expression,n,t);return;default:{let r=w(ast.VisitorKeys,e.type);if(!r)return;let a=e;for(let o of r){let s=w(a,o);if(Array.isArray(s))for(let i of s)Ae(i,n,t);else Ae(s,n,t);}return}}}function es(e){let n={out:[],invalid:new WeakSet};return Ae(e,mr(void 0),n),{diagnostics:n.out,invalidTargets:n.invalid}}var Sr=e=>({decls:new Map,parent:e});function of(e,n){for(let t=e;t;t=t.parent){let r=t.decls.get(n);if(r)return r}}function Mt(e){if(!e)return [];switch(e.type){case "Identifier":return [e];case "ObjectPattern":return e.properties.flatMap(n=>n.type==="RestElement"?Mt(n.argument):Mt(n.value));case "ArrayPattern":return e.elements.flatMap(n=>n?Mt(n):[]);case "AssignmentPattern":return Mt(e.left);case "RestElement":return Mt(e.argument);default:return []}}var ua=(e,n)=>{for(let t of Mt(n))e.decls.set(t.name,t);};function Te(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(e.type){case "Identifier":{let r=of(n,e.name);r&&r!==e&&t.set(e,r);return}case "MemberExpression":{let r=e;Te(r.object,n,t),r.computed&&Te(r.property,n,t);return}case "Property":{let r=e;r.computed&&Te(r.key,n,t),Te(r.value,n,t);return}case "Program":case "BlockStatement":{let r=Sr(n);for(let a of e.body??[])Te(a,r,t);return}case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":{let r=e,a=e.id;a&&n.decls.set(a.name,a);let o=Sr(n);for(let s of r.params??[])ua(o,s);Te(r.body,o,t);return}case "CatchClause":{let r=e,a=Sr(n);ua(a,r.param),Te(r.body,a,t);return}case "ForStatement":case "ForOfStatement":case "ForInStatement":{let r=e,a=Sr(n),o=r.left??r.init;if(o?.type==="VariableDeclaration")for(let s of o.declarations)ua(a,s.id);else o&&Te(o,a,t);Te(r.right,n,t),Te(r.test,a,t),Te(r.update,a,t),Te(r.body,a,t);return}case "VariableDeclaration":{for(let r of e.declarations)ua(n,r.id),Te(r.init,n,t);return}case "ImportDeclaration":{for(let r of e.specifiers){let a=r.local;a&&n.decls.set(a.name,a);}return}case "TSTypeAliasDeclaration":{let r=e.id;r&&n.decls.set(r.name,r);return}case "TSAsExpression":Te(e.expression,n,t);return;default:{let r=w(ast.VisitorKeys,e.type);if(!r)return;let a=e;for(let o of r){let s=w(a,o);if(Array.isArray(s))for(let i of s)Te(i,n,t);else Te(s,n,t);}return}}}function sf(e){let n=new WeakMap;return Te(e,Sr(void 0),n),n}function ts(e,n){return e.kind==="local"?n.kind==="local"&&e.declaration===n.declaration:n.kind==="environment"&&e.path.length===n.path.length&&e.path.every((t,r)=>t===n.path[r])}var gr=e=>({decls:new Map,parent:e});function gl(e,n){for(let t=e;t;t=t.parent){let r=t.decls.get(n);if(r)return r}}var uf=e=>e?.type==="Literal"&&typeof e.value=="string";function da(e,n){if(!n&&e.type==="Identifier")return e.name;if(uf(e))return e.value}function Pt(e,n,t){if(e)switch(e.type){case "Identifier":{let r=e.name,a=gl(n,r);return a?t.aliases.get(a):[r]}case "MemberExpression":{let r=e,a=Pt(r.object,n,t),o=da(r.property,r.computed);return a&&o!==void 0?[...a,o]:void 0}case "ChainExpression":return Pt(e.expression,n,t);default:return}}var bl=(e,n)=>{let t=gl(n,e);return t?{kind:"local",declaration:t}:{kind:"environment",path:[e]}};function pa(e,n,t,r,a){r.out.push({site:"node",node:e,symbol:bl(n,t),...a?{shorthand:a}:{}});}function br(e,n,t,r){n.decls.set(e.name,e),t.out.push({site:"node",node:e,symbol:{kind:"local",declaration:e},isDeclaration:true,...r?{shorthand:r}:{}});}function Rn(e,n,t,r,a,o){if(e)switch(e.type){case "Identifier":br(e,n,t),Dt(e,n,t),a&&r&&t.aliases.set(e,r);return;case "ObjectPattern":for(let s of e.properties){if(s.type==="RestElement"){Rn(s.argument,n,t,void 0,false,o);continue}let i=s,l=i.key;i.computed&&Q(l,o,t);let c=da(l,i.computed),u=r&&c!==void 0?[...r,c]:void 0,p=i.value,d=p.type==="AssignmentPattern"?p.left:p,y=!!i.shorthand&&d.type==="Identifier";u&&t.out.push({site:"node",node:l,symbol:{kind:"environment",path:u},...y?{shorthand:"binding"}:{}}),y?(br(d,n,t,"property"),Dt(d,n,t),a&&u&&t.aliases.set(d,u),p.type==="AssignmentPattern"&&Q(p.right,o,t)):Rn(p,n,t,u,a,o);}return;case "ArrayPattern":for(let s of e.elements)Rn(s,n,t,void 0,false,o);return;case "AssignmentPattern":{let s=e;Rn(s.left,n,t,r,a,o),Q(s.right,o,t);return}case "RestElement":Rn(e.argument,n,t,void 0,false,o);return;default:Q(e,n,t);}}function Dt(e,n,t){let r=e;for(let o of ast.ERASABLE_TYPE_NODE_KEYS)ns(w(r,o),n,t);let a=r.typeParameters;if(Array.isArray(a))for(let o of a)Dt(o,n,t);}function ns(e,n,t){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let a of e)ns(a,n,t);return}let r=e;if(r.type==="TSTypeQuery"){let a=r.exprName,o=bl(a[0],n);t.out.push({site:"typeQuery",node:e,segment:0,symbol:o});let s=o.kind==="environment"?o.path:t.aliases.get(o.declaration);s&&a.slice(1).forEach((i,l)=>t.out.push({site:"typeQuery",node:e,segment:l+1,symbol:{kind:"environment",path:[...s,...a.slice(1,l+2)]}}));return}for(let[a,o]of Object.entries(r))a!=="loc"&&a!=="range"&&ns(o,n,t);}function Nl(e,n,t){if(e){if(e.type==="JSXIdentifier"){let r=e.name;/^[A-Z_$]/.test(r)&&pa(e,r,n,t);return}if(e.type==="JSXMemberExpression"){let r=e;Nl(r.object,n,t);let a=r.object,o=a.type==="JSXIdentifier"?Pt({type:"Identifier",name:a.name},n,t):void 0;o&&t.out.push({site:"node",node:r.property,symbol:{kind:"environment",path:[...o,r.property.name]}});}}}function Q(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(e.type){case "Identifier":pa(e,e.name,n,t);return;case "MemberExpression":{let r=e;Q(r.object,n,t);let a=Pt(r.object,n,t),o=da(r.property,r.computed);a&&o!==void 0?t.out.push({site:"node",node:r.property,symbol:{kind:"environment",path:[...a,o]}}):r.computed&&Q(r.property,n,t);return}case "Property":{let r=e;if(r.computed&&Q(r.key,n,t),r.shorthand&&r.value.type==="Identifier"){let a=r.value;pa(r.value,a.name,n,t,"property");return}Q(r.value,n,t);return}case "Program":case "BlockStatement":{let r=gr(n);for(let a of e.body??[])Q(a,r,t);return}case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":{let r=e,a=e.id;a&&br(a,n,t);let o=gr(n);for(let s of r.params??[])Rn(s,o,t,void 0,false,o);Dt(e,o,t),Q(r.body,o,t);return}case "CatchClause":{let r=e,a=gr(n);Rn(r.param,a,t,void 0,false,a),Q(r.body,a,t);return}case "ForStatement":case "ForOfStatement":case "ForInStatement":{let r=e,a=gr(n),o=r.left??r.init;if(o?.type==="VariableDeclaration")for(let s of o.declarations)Rn(s.id,a,t,void 0,false,a),Q(s.init,a,t);else o&&Q(o,a,t);Q(r.right,n,t),Q(r.test,a,t),Q(r.update,a,t),Q(r.body,a,t);return}case "VariableDeclaration":{let r=e;for(let a of r.declarations){let o=Pt(a.init,n,t);Rn(a.id,n,t,o,r.kind==="const",n),Q(a.init,n,t);}return}case "AssignmentExpression":{let r=e,a=r.left;r.operator==="="&&["ObjectPattern","ArrayPattern","ObjectExpression","ArrayExpression"].includes(a.type)?xt(a,Pt(r.right,n,t),n,t):Q(a,n,t),Q(r.right,n,t);return}case "ImportDeclaration":{for(let r of e.specifiers){let a=r,o=a.type==="ImportSpecifier"&&(a.imported===a.local||a.imported?.name===a.local.name);br(a.local,n,t,o?"import":void 0);}return}case "TSTypeAliasDeclaration":{let r=e.id;br(r,n,t),t.typeAliases.has(r.name)||t.typeAliases.set(r.name,r),Dt(e,n,t);return}case "TSAsExpression":Q(e.expression,n,t),Dt(e,n,t);return;case "JSXOpeningElement":case "JSXClosingElement":{let r=e;if(Nl(r.name,n,t),e.type==="JSXOpeningElement")for(let a of r.attributes)a.type==="JSXSpreadAttribute"?Q(a.argument,n,t):Q(a.value,n,t);return}default:{let r=w(ast.VisitorKeys,e.type);if(!r)return;let a=e;for(let o of r){let s=w(a,o);if(Array.isArray(s))for(let i of s)Q(i,n,t);else Q(s,n,t);}return}}}function Sl(e){if(e.type==="AssignmentPattern"){let n=e;return {target:n.left,value:n.right}}if(e.type==="AssignmentExpression"&&e.operator==="="){let n=e;return {target:n.left,value:n.right}}}function xt(e,n,t,r){switch(e.type){case "ObjectPattern":case "ObjectExpression":for(let a of e.properties){if(a.type==="RestElement"||a.type==="SpreadElement"){xt(a.argument,void 0,t,r);continue}let o=a,s=o.key;o.computed&&Q(s,t,r);let i=da(s,o.computed),l=n&&i!==void 0?[...n,i]:void 0,c=o.value,u=Sl(c),p=u?.target??c,d=!!o.shorthand&&p.type==="Identifier";l&&r.out.push({site:"node",node:s,symbol:{kind:"environment",path:l},...d?{shorthand:"binding"}:{}}),d?pa(p,p.name,t,r,"property"):xt(p,l,t,r),u&&Q(u.value,t,r);}return;case "ArrayPattern":case "ArrayExpression":for(let a of e.elements)a&&xt(a.type==="SpreadElement"?a.argument:a,void 0,t,r);return;case "AssignmentPattern":case "AssignmentExpression":{let a=Sl(e);if(!a)return Q(e,t,r);xt(a.target,n,t,r),Q(a.value,t,r);return}case "RestElement":xt(e.argument,void 0,t,r);return;default:Q(e,t,r);}}function pf(e,n){let t=e.typeRefs;if(t?.length)for(let r of t){let a=r.name?n.typeAliases.get(r.name):void 0;a&&n.out.push({site:"typeRef",ref:r,symbol:{kind:"local",declaration:a}});}}function rs(e){let n={out:[],aliases:new WeakMap,typeAliases:new Map};return Q(e,gr(void 0),n),pf(e,n),n.out}function nn(e,n,t,r){switch(e.t){case "apply":if(n.has(e.name)&&r.add(e.name),t.has(e.name))for(let a of e.args)nn(a,n,t,r);return;case "union":case "intersection":for(let a of e.of)nn(a,n,t,r);return;case "conditional":nn(e.check,n,t,r),nn(e.extends,n,t,r),nn(e.then,n,t,r),nn(e.else,n,t,r);return;case "keyof":nn(e.of,n,t,r);return;case "index":nn(e.obj,n,t,r),nn(e.key,n,t,r);return;case "returnType":case "parameters":nn(e.fn,n,t,r);return;default:return}}function kl(e,n){let t=new Set(Object.keys(e)),r=new Set(Object.keys(n)),a=new Map;for(let[s,i]of Object.entries(e)){let l=new Set;nn(i.body,t,r,l),a.set(s,l);}let o=new Set;for(let s of t){let i=new Set,l=[...a.get(s)];for(;l.length;){let c=l.pop();if(c===s){o.add(s);break}i.has(c)||(i.add(c),l.push(...a.get(c)));}}return o}var as=e=>`a\0${e}`,Bl=(e,n)=>`p\0${e}\0${n}`;function vl(e,n){let t=new Set(Object.keys(e)),r=new Set(Object.keys(n)),a=new Map,o=new Map;for(let[m,h]of Object.entries(e))o.set(m,df(h.body));let s=m=>o.get(m),i=(m,h)=>{switch(m.t){case "literal":return h.has(String(m.value))?[String(m.value)]:[];case "union":return m.of.flatMap(S=>i(S,h));case "keyof":{let S=m.of.t==="apply"?w(e,m.of.name):void 0,B=S?os(S.body):void 0;return B?[...B].filter(M=>h.has(M)):[]}default:return []}},l=(m,h,S)=>{switch(m.t){case "apply":if(t.has(m.name)&&S.add(as(m.name)),r.has(m.name)||h==="annotation")for(let B of m.args)l(B,h,S);return;case "index":{if(m.obj.t==="apply"){let B=s(m.obj.name);if(B)for(let M of i(m.key,B))S.add(Bl(m.obj.name,M));}l(m.obj,h,S),l(m.key,h,S);return}case "union":case "intersection":for(let B of m.of)l(B,h,S);return;case "conditional":l(m.check,h,S),l(m.extends,h,S),l(m.then,h,S),l(m.else,h,S);return;case "keyof":l(m.of,h,S);return;case "returnType":case "parameters":l(m.fn,h,S);return;case "array":h==="annotation"&&l(m.items,h,S);return;case "tuple":if(h==="annotation")for(let B of m.elements)l(B,h,S);return;default:return}};for(let m of Object.keys(e)){let h=new Set;l(e[m].body,"aliasBody",h),a.set(as(m),h);for(let[S,B]of s(m)??[]){let M=new Set;for(let O of B)l(O,"annotation",M);a.set(Bl(m,S),M);}}let c=new Map,u=m=>{let h=c.get(m);if(h)return h;let S=new Set;c.set(m,S);let B=[...a.get(m)??[]];for(;B.length;){let M=B.pop();S.has(M)||(S.add(M),B.push(...a.get(M)??[]));}return S},p=new Map,d=[];for(let m of a.keys()){if(!m.startsWith("p\0")||!u(m).has(m))continue;d.push(m);let[,h,S]=m.split("\0");p.has(h)||p.set(h,new Set),p.get(h).add(S);}let y=new Set;for(let m of Object.keys(e)){let h=as(m),S=u(h);d.some(B=>S.has(B)&&u(B).has(h))&&y.add(m);}return {properties:p,aliases:y}}function df(e){let n=new Map,t=r=>{if(r.t==="union"||r.t==="intersection")r.of.forEach(t);else if(r.t==="object")for(let[a,o]of Object.entries(r.props))n.has(a)||n.set(a,[]),n.get(a).push(o.type);};return t(e),n}function ss(e,n){if(e.t==="union"||e.t==="intersection")return {...e,of:e.of.map(r=>ss(r,n))};if(e.t!=="object")return e;let t={...e.props};for(let r of Object.keys(t))n.has(r)&&v(t,r,{...t[r],type:{t:"any"}});return {...e,props:t}}function os(e){switch(e.t){case "object":return new Set(Object.keys(e.props));case "intersection":return new Set(e.of.flatMap(n=>[...os(n)]));case "union":{let[n,...t]=e.of.map(os);return new Set([...n??[]].filter(r=>t.every(a=>a.has(r))))}default:return new Set}}var Sn=Pn,wl=Sn.FunctionScopedVariable|Sn.BlockScopedVariable|Sn.Function|Sn.ValueModule,Tl=Sn.TypeAlias,El=Sn.ValueModule|Sn.NamespaceModule,Nr={Type:1,Value:2,Namespace:4};function is(e){switch(e.kind){case "type-alias":return Nr.Type;case "namespace":return ast.isInstantiatedNamespace(e.node)?Nr.Namespace|Nr.Value:Nr.Namespace;default:return Nr.Value}}function Ol(e,n){let t=[];for(let r of e.symbols){if(r.flags&Sn.Alias){let a=(r.flags&(wl|Sn.ExportValue)?wl:0)|(r.flags&Tl?Tl:0)|(r.flags&El?El:0);for(let o of r.declarations){if(o.kind!=="import")continue;let s=n(o.node);s!==void 0&&s&a&&t.push(b.redeclaration.importConflict(o.node,o.name.name));}}if(r.exportSymbol){let a=0,o=0;for(let i of r.declarations)i.exported?a|=is(i):o|=is(i);let s=a&o;if(s)for(let i of r.declarations)is(i)&s&&t.push(b.redeclaration.mixedExport(i.name,i.name.name));}}for(let r of e.catchClauses){let a=e.localsOf(r),o=e.localsOf(r.body);if(!(!a||!o))for(let s of a.keys()){let i=o.get(s);i&&i.flags&Sn.BlockScopedVariable&&i.valueDeclaration&&t.push(b.redeclaration.catchClause(i.valueDeclaration.name,s));}}return t}var fa=e=>e.typeAnnotation,ma=e=>e.returnType;function ya(e){let n=e.typeParameters;if(n?.length)return n.map(t=>f.typeParam(t.name,{bound:t.bound,default:t.default}))}var ze=e=>e.type==="Identifier"?e.name:null,Al=e=>{if(e.type==="VariableDeclaration"){let n=e.declarations[0];return n?ze(n.id):null}return ze(e)},ls=e=>{if(e.type==="VariableDeclaration"){let n=e.declarations[0];return n?n.id:e}return e},gn=e=>{if(e.computed)return null;let n=e.key;return n.type==="Identifier"?n.name:n.type==="Literal"?String(n.value??""):null};function Ml(e){let n=r=>r&&r.type==="Literal"&&typeof r.value=="string"?r.value:null;if(e.length===1&&e[0].type==="ArrayExpression"){let r=[];for(let a of e[0].elements){let o=n(a);if(o===null)return null;r.push(o);}return r}let t=[];for(let r of e){let a=n(r);if(a===null)return null;t.push(a);}return t.length?t:null}function cs(e){if(e.type==="Identifier")return e.name;if(e.type==="MemberExpression"){let n=e;if(n.computed||n.property.type!=="Identifier")return null;let t=cs(n.object);return t===null?null:`${t}.${n.property.name}`}return null}var tn=e=>{if(e.type!=="TemplateLiteral")return null;let n=e;if(n.expressions.length!==0||n.quasis.length!==1)return null;let{cooked:t,raw:r}=n.quasis[0].value;return t??r},jn=e=>e.type==="Literal"||tn(e)!==null;function ft(e){let n=tn(e);if(n!==null)return {t:"literal",value:n,fresh:true};let t=e;if(t.regex||t.bigint)return f.unknown;let r=t.value;return r===null?f.null:r===void 0?f.undefined:typeof r=="string"||typeof r=="number"||typeof r=="boolean"?{t:"literal",value:r,fresh:true}:f.unknown}var zn=e=>{let n=tn(e);if(n!==null)return f.literal(n);let t=e.value;return t===null?f.null:typeof t=="string"||typeof t=="number"||typeof t=="boolean"?f.literal(t):ft(e)},xl=e=>e.type==="ArrowFunctionExpression";function De(e){switch(e.type){case "ArrowFunctionExpression":{let n=e;return e.typeParameters?.length?false:n.params.some(t=>!us(t))?true:ma(e)===void 0&&n.body.type!=="BlockStatement"&&De(n.body)}case "ObjectExpression":return e.properties.some(n=>n.type==="Property"&&De(n.value));case "ArrayExpression":return e.elements.some(n=>!!n&&De(n));case "ConditionalExpression":{let n=e;return De(n.consequent)||De(n.alternate)}case "LogicalExpression":{let n=e;return (n.operator==="||"||n.operator==="??")&&(De(n.left)||De(n.right))}default:return false}}var us=e=>{let n=e.type==="RestElement"?e.argument:e.type==="AssignmentPattern"?e.left:e;return fa(n)!==void 0},Pl=e=>e.t==="apply"&&e.name==="Promise"&&e.args.length===1,mt=e=>Pl(e)?e.args[0]:e,vr=e=>Pl(e)?e:f.promise(e);function kr(e){return e.t==="tuple"?true:e.t==="array"?kr(e.items):e.t==="union"?e.of.some(kr):false}var mf=e=>e?.t==="literal"?typeof e.value:void 0,Br=(e,n)=>e.t===n||n==="boolean"&&e.t==="literal"&&typeof e.value=="boolean"||(e.t==="union"||e.t==="intersection")&&e.of.some(t=>Br(t,n));function Ct(e,n){let t=mf(n);switch(e.t){case "literal":return t===void 0||typeof e.value===t;case "boolean":return t==="boolean";case "keyof":return t===void 0||t==="string";case "union":case "intersection":return e.of.some(r=>Ct(r,n));case "var":{let r=e.bound??f.unknown;return t!==void 0&&Br(r,t)||t===void 0&&yf(r)?true:Ct(r,n)}default:return false}}var yf=e=>Br(e,"string")||Br(e,"number")||Br(e,"boolean"),Ce=(e,n)=>{let t=e;for(let r=0;r<50&&t.t==="apply";r++){let a=fe(t,n);if(a===t||a.t==="apply"&&a.name===t.name)break;t=a;}return t};function Dl(e){let n=ma(e);if(!n)return null;let t=e.params.map((a,o)=>({name:ze(a)??`arg${o}`,type:fa(a)??f.unknown})),r=ya(e);return {t:"fn",params:t,returns:e.async?vr(n):n,...r?{typeParams:r}:{}}}var In={then:{},else:{}};function Ee(e,n){if(e.type==="Identifier")return n(e);if(e.type!=="MemberExpression")return null;let t=e;if(t.optional)return null;let r=Ee(t.object,n);return r===null?null:!t.computed&&t.property.type==="Identifier"?`${r}.${t.property.name}`:t.computed&&t.property.type==="Literal"&&typeof t.property.value=="string"?`${r}.${t.property.value}`:null}var Ve=e=>e.includes("."),Nn=e=>`${e}#`,Tr=e=>`${e}~#`,ga=e=>`${e}?#`;function Ul(e,n,t){for(let r=e;r;r=r.parent)if(!($t.has(r)||!pe(r.vars,n)))return w(r.vars,t)}var $t=new WeakSet;function Kl(e,n,t){if(Ve(n))return Na(e,n,t);let r=zl(e,n);if(!r)return;let a=w(r.vars,Nn(n));if(a)return a;if(!w(r.vars,Tr(n)))return w(r.vars,n)}function zl(e,n){for(let t=e;t;t=t.parent)if(!$t.has(t)&&pe(t.vars,n))return t}function ba(e,n){let t=zl(e,n);if(!t)return;let r=w(t.vars,Nn(n));return r||(w(t.vars,Tr(n))?f.any:w(t.vars,n))}function ys(e,n){let t=new Set,r=new Set;for(let i=e;i;i=i.parent)for(let l of Object.keys(i.vars))l.endsWith("~#")||l.endsWith("?#")||(l.endsWith("#")?t.add(l.slice(0,-1)):$t.has(i)&&(Ve(l)?r:t).add(l));if(!t.size&&!r.size)return e;let a={};for(let i of t){let l=ba(e,i);l!==void 0&&v(a,i,l);}let o=te(e,a),s={};for(let i of r){let l=Na(o,i,n);l!==void 0&&v(s,i,l);}return o=te(o,s),o}var _l=e=>!(e.t==="null"||e.t==="undefined"||e.t==="void"||e.t==="union"&&e.of.length===0);function an(e,n,t){let r=we(e,n);return r!==void 0?r:Na(e,n,t)}var $n=(e,n,t)=>{let r=Kl(e,n,t);if(r&&!_l(I(r,t)))return;let a=an(e,n,t);return a===void 0?void 0:I(a,t)};function Na(e,n,t){let r=n.lastIndexOf(".");if(r<0)return;let a=an(e,n.slice(0,r),t);if(a!==void 0)return Pe(a,[n.slice(r+1)],t)?.type}function hf(e,n){let t=n+".",r=new Set;for(let a=e;a;a=a.parent){for(let o of Object.keys(a.vars))o.startsWith(t)&&r.add(o);if(!$t.has(a)&&pe(a.vars,n))break}return [...r].sort((a,o)=>a.length-o.length)}function hs(e,n,t){let r=hf(e,n);if(!r.length)return e;let a={};for(let o of r)v(a,o,Na(hn(e,a),o,t)??f.unknown);return hn(e,a)}var Ss=new Set(["string","number","boolean","undefined","function","object"]),ds={string:f.string,number:f.number,boolean:f.boolean,undefined:f.undefined,object:f.union([f.nonPrimitive,f.null])};function Ba(e,n){switch(n){case "string":return e.t==="string"||e.t==="literal"&&typeof e.value=="string";case "number":return e.t==="number"||e.t==="literal"&&typeof e.value=="number";case "boolean":return e.t==="boolean"||e.t==="literal"&&typeof e.value=="boolean";case "undefined":return e.t==="undefined";case "function":return e.t==="fn"||e.t==="overload";case "object":return e.t==="object"||e.t==="array"||e.t==="tuple"||e.t==="null"||e.t==="nonPrimitive";default:return false}}var ql=f.literal(true),Gl=f.literal(false),Se=e=>(e.t==="union"?[...e.of]:[e]).flatMap(n=>n.t==="boolean"?[ql,Gl]:[n]),Sf=[ql,Gl];function bn(e){return e.t==="union"?e.of:e.t==="boolean"?Sf:[e]}function ka(e,n,t){let r=bn(e);if(r.length<=1)return e;let a=bn(n),o=r.filter(i=>a.some(l=>L(l,i,t)));if(o.length===0)return e;let s=C(o);return L(n,s,t)?s:e}var It=(e,n)=>{let t=e.filter(r=>Ft(r)||n(r));return t.length===e.length?null:C(t)},Ft=e=>e.t==="unknown"||e.t==="any";function Cl(e,n,t){let r=e,a=n;if(e.type==="UnaryExpression"&&r.operator==="typeof"&&n.type==="Literal"&&typeof a.value=="string"){let o=Ee(r.argument,t);if(o!==null)return {name:o,tag:a.value}}return null}function gf(e,n,t){if(e.t==="unknown"||e.t==="any")return n;let a=Se(e).filter(o=>L(o,n,t));return C(a)}function bf(e,n,t){return e.t==="unknown"||e.t==="any"?null:It(Se(e),r=>!L(r,n,t))}function Nf(e,n){if(!Ss.has(n))return null;let t=w(ds,n),r=Se(e),o=r.flatMap(s=>t&&Ft(s)?Se(t):[s]).filter(s=>Ba(s,n)||Ft(s));return o.length===r.length&&o.every((s,i)=>s===r[i])?null:C(o)}function Bf(e,n){if(!Ss.has(n))return null;let t=Se(e),r=t.filter(a=>Ft(a)||!Ba(a,n));return r.length===t.length?null:C(r)}function Rl(e,n,t){let r=Ee(e,t);if(r!==null&&jn(n)){let a=zn(n);if(a.t==="literal"||a.t==="null")return {name:r,lit:a}}return null}function jl(e,n,t){if(e.type==="MemberExpression"&&!e.computed&&!e.optional&&e.property.type==="Identifier"&&jn(n)){let r=Ee(e.object,t),a=zn(n);if(r!==null&&(a.t==="literal"||a.t==="null"))return {name:r,prop:e.property.name,lit:a}}return null}function Il(e,n,t,r,a){let o=Se(e),s=i=>i.t==="object"?Be(i.props,n)?.type:void 0;return It(o,i=>{let l=s(i);return r?!!l&&L(t,l,a):!(l&&L(l,t,a))})}function Fl(e,n,t){let r=Se(e),a=o=>o.t==="object"&&(pe(o.props,n)||!!o.index);return It(r,o=>t?a(o):!a(o))}function kf(e,n,t){return e.t==="unknown"||e.t==="any"||L(n,e,t)?n:null}function vf(e,n,t){return It(Se(e),r=>!Ze(r,n,t))}var Fn=1,yt=2,wf=e=>e.t==="object"&&!Object.keys(e.props).length&&!e.index;function wr(e,n){switch(e.t){case "string":case "number":case "boolean":case "any":case "unknown":return Fn|yt;case "literal":return e.value?Fn:yt;case "null":case "undefined":case "void":return yt;case "array":case "tuple":case "fn":case "overload":return Fn;case "object":return wf(e)?Fn|yt:Fn;case "nonPrimitive":return Fn;case "union":case "intersection":return e.of.reduce((t,r)=>t|wr(r,n),0);default:{let t=I(e,n);return t===e?Fn|yt:wr(t,n)}}}var gs=(e,n)=>(wr(e,n)&yt)!==0,Jl=(e,n)=>(wr(e,n)&Fn)!==0,$l=(e,n,t)=>{let r=Se(e),a=r.filter(o=>wr(o,t)&n);return a.length===r.length?null:C(a)},Vl=e=>e.type==="Literal"&&e.value===null?"null":e.type==="Identifier"&&e.name==="undefined"?"undefined":null,rn=(e,n,t)=>({then:n?{[e]:n}:{},else:t?{[e]:t}:{}}),Tf=e=>e==="==="||e==="=="||e==="!=="||e==="!=";function _e(e,n,t,r){if(e.type==="BinaryExpression"){let o=e;if(o.operator==="in"){let S=o.left,B=o.right,M=Ee(B,r);if(S.type==="Literal"&&typeof S.value=="string"&&M!==null){let O=$n(n,M,t);if(!O)return In;let F=String(S.value);return rn(M,Fl(O,F,true),Fl(O,F,false))}return In}if(!Tf(o.operator))return In;let s=o.operator==="!=="||o.operator==="!=",i=o.left,l=o.right,c=Cl(i,l,r)??Cl(l,i,r);if(c){let S=$n(n,c.name,t);if(!S)return In;let B=Nf(S,c.tag),M=Bf(S,c.tag);return s?rn(c.name,M,B):rn(c.name,B,M)}let u=Vl(i),p=Vl(l),d=u?l:p?i:null,y=d?Ee(d,r):null;if((u||p)&&y!==null){let S=y,B=$n(n,S,t);if(!B)return In;let O=o.operator==="=="||o.operator==="!="?["null","undefined"]:[u??p],F=Se(B),$=It(F,x=>O.includes(x.t)),E=It(F,x=>!O.includes(x.t));return s?rn(S,E,$):rn(S,$,E)}let m=Rl(i,l,r)??Rl(l,i,r),h=jl(i,l,r)??jl(l,i,r);if(m||h){let S=In;if(m){let B=$n(n,m.name,t);if(B){let M=kf(B,m.lit,t),O=vf(B,m.lit,t);S=s?rn(m.name,O,M):rn(m.name,M,O);}}if(h){let B=$n(n,h.name,t);if(B){let M=Il(B,h.prop,h.lit,true,t),O=Il(B,h.prop,h.lit,false,t),F=s?rn(h.name,O,M):rn(h.name,M,O);S={then:{...S.then,...F.then},else:{...S.else,...F.else}};}}return S}return In}if(e.type==="UnaryExpression"&&e.operator==="!"){let o=_e(e.argument,n,t,r);return {then:o.else,else:o.then}}if(e.type==="CallExpression"){let o=If(e,n,t,r);if(o)return o}if(e.type==="LogicalExpression"){let o=e;if(o.operator==="&&"){let s=_e(o.left,n,t,r),i=_e(o.right,te(n,s.then),t,r);return {then:{...s.then,...i.then},else:Wl(s.else,{...s.then,...i.else},n,t)}}if(o.operator==="||"){let s=_e(o.left,n,t,r),i=_e(o.right,te(n,s.else),t,r);return {then:Wl(s.then,{...s.else,...i.then},n,t),else:{...s.else,...i.else}}}return In}let a=Ee(e,r);if(a!==null){let o=$n(n,a,t);if(o)return rn(a,$l(o,Fn,t),$l(o,yt,t))}return In}function bs(e,n,t,r,a,o,s){let i={},l=e.discriminant,c=Xl(l);if(c){let d=Ee(c,s),y=d===null?void 0:ps(a,d,o);return d!==null&&y&&v(i,d,Df(y,Hl(e,true),t,r,o)),i}let u=Ee(l,s);if(u!==null){let d=ps(a,u,o);d&&v(i,u,Ll(d,n,t,r,o));}let p=l;if(l.type==="MemberExpression"&&!p.computed&&!p.optional&&p.property.type==="Identifier"){let d=Ee(p.object,s),y=d===null?void 0:ps(a,d,o);if(d!==null&&y&&y.t==="union"){let m=p.property.name;v(i,d,Ef(y,m,h=>Ll(h,n,t,r,o),o));}}return i}function ps(e,n,t){let r=Kl(e,n,t);if(r&&!_l(I(r,t)))return;let a=an(e,n,t);if(a!==void 0)return a.t==="var"?a:I(a,t)}function Ll(e,n,t,r,a){if(!n.length)return e;let o=n.slice(t,r),s=t===r||o.includes(null),i=o.filter(y=>y!==null);if(e.t==="unknown"&&!s){let y=[];for(let m of i)if(Af(m))y.push(m);else if(Mf(m))y.push(f.nonPrimitive);else return e;return f.union(y)}let l=f.union(i),c=Se(e),u=jt(l)?l:Of(C(c.filter(y=>Ye(l,y,a)||Ye(y,l,a))),l);if(!s)return u;let p=n.filter(y=>y!==null),d=C(c.filter(y=>!(fs(y)&&p.some(m=>Ze(m,y,a)))));return jt(u)?d:C([u,d])}function Ef(e,n,t,r){let a=Se(e),o=l=>l.t==="object"?Be(l.props,n)?.type:void 0,s=a.map(o);if(s.some(l=>l===void 0))return e;let i=t(C(s));return C(a.filter((l,c)=>{let u=s[c];return !jt(u)&&Ye(u,i,r)}))}function Of(e,n){let t=Se(e),r=Se(n),a=s=>r.filter(i=>i.t===s||i.t==="literal"&&typeof i.value===s),o=s=>t.some(i=>i.t===s)&&r.some(i=>i.t==="literal"&&typeof i.value===s);return !o("string")&&!o("number")?e:C(t.flatMap(s=>s.t==="string"?a("string"):s.t==="number"?a("number"):[s]))}var jt=e=>e.t==="union"&&e.of.length===0,fs=e=>e.t==="literal"||e.t==="null"||e.t==="undefined",Af=e=>e.t==="string"||e.t==="number"||e.t==="boolean"||e.t==="literal"||e.t==="null"||e.t==="undefined"||e.t==="void"||e.t==="nonPrimitive",Mf=e=>e.t==="object"||e.t==="array"||e.t==="tuple"||e.t==="fn"||e.t==="overload";function Xl(e){let n=e;return e.type==="UnaryExpression"&&n.operator==="typeof"?n.argument:null}function Hl(e,n){let t=[];for(let r of e.cases){if(!r.test){n&&t.push(null);continue}let a=xf(r.test);if(a===null)return null;t.push(a);}return t}function xf(e){let n=tn(e);if(n!==null)return n;let t=e.value;return e.type==="Literal"&&typeof t=="string"?t:null}function ha(e,n,t){if(Ft(e))return true;if(e.t==="var"){let r=I(e,t);return r===e||ha(r,n,t)}return e.t==="union"||e.t==="intersection"?e.of.some(r=>ha(r,n,t)):Ba(e,n)}function ms(e,n,t){if(Ft(e)||!Ss.has(n))return true;if(e.t==="var"){let r=I(e,t);return r===e||ms(r,n,t)}return e.t==="union"||e.t==="intersection"?e.of.some(r=>ms(r,n,t)):e.t==="boolean"?n!=="boolean":!Ba(e,n)}var Ql=(e,n,t)=>C(Se(e).filter(r=>n.every(a=>ms(r,a,t))));function Pf(e,n){return n==="object"?e.t==="unknown"?ds.object:e:w(ds,n)??null}function Df(e,n,t,r,a){if(!n||!n.length)return e;let o=n.indexOf(null),s=t===r||o>=t&&o<r,i=n.filter(B=>B!==null),l=o>-1&&o<t?t-1:t,c=o>-1&&o<r?r-1:r,u=i.slice(l,c),p=i.slice(0,l);if(s){let B=[...i.slice(c).filter(M=>!u.includes(M)),...p];return Ql(e,B,a)}let d=new Set(p),y=u.filter(B=>!d.has(B)),m=C(u.map(B=>Pf(e,B)).filter(B=>B!==null).flatMap(Se).filter(B=>y.some(M=>ha(B,M,a)))),h=m.t==="union"&&m.of.length>1?ka(m,e.t==="var"?I(e,a):e,a):m,S=Se(e).flatMap(B=>Se(Cf(B,h,a)));return C(S.filter(B=>y.some(M=>ha(B,M,a))))}function Cf(e,n,t){if(L(n,e,t))return n;if(e.t==="var"){let r=I(e,t),a=r===e?f.any:r;if(L(n,a,t))return f.intersection([e,n])}return e}var Yl=()=>false;function Zl(e,n,t,r,a){if(Xl(e.discriminant)){if(!r)return false;let l=I(r,a),c=Hl(e,false);return jt(c?Ql(l,c,a):l)}let o=n.t==="var"?n:I(n,a);if(o.t==="var"||jt(o))return false;let s=Se(o);if(!s.every(fs))return false;let i=t.filter(l=>l!==null);return !i.length||i.some(l=>!fs(l)&&!jt(l))?false:s.every(l=>i.some(c=>Ze(c,l,a)))}function Rf(e,n){let t=e.cases;return !t.length||!t.some(a=>!a.test)&&!n(e)||!t[t.length-1].consequent.some(a=>_n(a,n))?true:t.some(a=>Sa(a.consequent,n))}function Sa(e,n){for(let t of e){if(Rt(t,n))return true;if(_n(t,n))return false}return false}function Rt(e,n){switch(e.type){case "BreakStatement":return true;case "BlockStatement":return Sa(e.body,n);case "IfStatement":{let t=e;return !on(t.test)&&Rt(t.consequent,n)||!Re(t.test)&&!!t.alternate&&Rt(t.alternate,n)}case "TryStatement":{let t=e;return t.finalizer&&Me(t.finalizer,n)?false:Rt(t.block,n)||!!t.handler&&Rt(t.handler.body,n)||!!t.finalizer&&Rt(t.finalizer,n)}default:return false}}var Re=e=>!e||e.type==="Literal"&&e.value===true,on=e=>!!e&&e.type==="Literal"&&e.value===false;function _n(e,n=Yl){switch(e.type){case "BreakStatement":case "ContinueStatement":return true;case "BlockStatement":return e.body.some(t=>_n(t,n));case "IfStatement":{let t=e;return (Re(t.test)||!!t.alternate&&_n(t.alternate,n))&&(on(t.test)||_n(t.consequent,n))}default:return Me(e,n)}}function ec(e,n){let t={};for(let r=e;r&&r!==n;r=r.parent)if(!$t.has(r))for(let a of Object.keys(r.vars))!Ve(a)&&!pe(t,a)&&v(t,a,w(r.vars,a));return t}function Wl(e,n,t,r){let a={};for(let o of Object.keys(e)){let s=e[o],i=w(n,o)??$n(t,o,r);if(!i)continue;let l=C([s,i]),c=$n(t,o,r);c&&Ze(l,c)||v(a,o,l);}return a}function jf(e,n){if(e.t==="fn")return e.guard??null;if(e.t==="overload"){for(let t of e.signatures)if(t.guard&&t.params.length===n)return t.guard}return null}function If(e,n,t,r){let a=e.callee;if(a.type!=="Identifier")return null;let o=we(n,r(a));if(!o)return null;let s=jf(o,e.arguments.length);if(!s)return null;let i=e.arguments[s.param],l=i?Ee(i,r):null;if(l===null)return null;let c=$n(n,l,t);return c?rn(l,gf(c,s.type,t),bf(c,s.type,t)):null}var te=(e,n)=>{if(!Object.keys(n).length)return e;let t=hn(e,n);return $t.add(t),t};function Me(e,n=Yl){switch(e.type){case "ReturnStatement":case "ThrowStatement":return true;case "BlockStatement":return e.body.some(r=>Me(r,n));case "IfStatement":{let t=e;return (Re(t.test)||!!t.alternate&&Me(t.alternate,n))&&(on(t.test)||Me(t.consequent,n))}case "SwitchStatement":return !Rf(e,n);case "WhileStatement":case "ForStatement":{let t=e;return Re(t.test)&&!Sa([t.body],n)}case "DoWhileStatement":{let t=e;return Me(t.body,n)||Re(t.test)&&!Sa([t.body],n)}case "TryStatement":{let t=e;if(t.finalizer&&Me(t.finalizer,n))return true;let r=!t.handler||Me(t.handler.body,n);return Me(t.block,n)&&r}default:return false}}var Ff=new Set(["VariableDeclaration","TSTypeAliasDeclaration","TSModuleDeclaration"]);function tc(e,n){let t=[],r=(a,o)=>{if(Ff.has(a.type)&&a.declare===true&&(o==="ambient-namespace"?t.push({node:a,reason:"ambient"}):o==="elsewhere"&&a.type!=="TSModuleDeclaration"&&t.push({node:a,reason:"here"})),a.type==="TSModuleDeclaration"){let i=n.byNode.get(a);if(!i)return;let l=a.body;if(l.type!=="TSModuleBlock")return r(l,"elsewhere");let c=i.ambient?"ambient-namespace":"namespace";for(let u of ast.childrenOf(l))r(u,c);return}let s=a.type==="Program"?"top":a.type==="ExportNamedDeclaration"?o:"elsewhere";for(let i of ast.childrenOf(a))r(i,s);};return r(e,"elsewhere"),t}function Ac(e,n){let t=he(),r=n({...e,sink:t});for(let a of t.all)e.sink.report(a);return {value:r,reported:t.all}}var Uf=e=>{let n={};for(let t of Object.keys(e))v(n,t,{params:[],body:e[t]});return n},ac=new WeakMap,Kf=e=>e instanceof ln||e instanceof Jn||e instanceof cn,oc=Object.freeze({type:"Program",body:[]});function zf(e){let n=ac.get(e);if(n)return n;let t={...e.lib,...Uf(e.types),...e.schemes},r=Cc(e.nominals??{},t),a=Mc({env:e,schemes:t,nominals:r,programAliases:new Set(Object.keys(t)),globalKeys:new Set,namespaces:Dn,root:oc,bounds:[],invalidTargets:new WeakSet,writtenTypeRefs:new WeakMap});for(let s of Object.keys(t))try{jr(s,e.scope,a,oc);}catch(i){if(!Kf(i))throw i}let o={schemes:Object.freeze(t),nominals:r,globalKeys:new Set([...Object.keys(t),...Object.keys(e.nominals??{})])};return ac.set(e,o),o}function Mc(e){return {overlay:new WeakMap,sink:he(),env:e.env,schemes:e.schemes,nominals:e.nominals,resolvedTypeArgs:new WeakMap,resolvedSchemes:new Set,programAliases:e.programAliases,globalKeys:e.globalKeys,namespaces:e.namespaces,envNamespaces:e.env.namespaces??Dn,root:e.root,symbols:{},bounds:e.bounds,keyOf:tm(e.bounds),writtenTypeRefs:e.writtenTypeRefs,usedBeforeDeclaration:new WeakMap,invalidTargets:e.invalidTargets,evolving:new Set,fnDepth:{value:0},unreachable:{value:false},jumps:[],ambient:{value:false},namespaceMembers:new Map,flow:new Map,stmtFlow:new WeakMap,switches:new WeakMap,shortCircuits:new WeakSet}}function _f(e){let n=[];return e.maxDepth!==void 0&&n.push(_o(e.maxDepth)),e.maxNodes!==void 0&&n.push(qo(e.maxNodes)),e.maxArgs!==void 0&&n.push(Go(e.maxArgs)),e.maxFunctionNesting!==void 0&&n.push(Uo(e.maxFunctionNesting)),e.maxCallNesting!==void 0&&n.push(Ko(e.maxCallNesting)),e.memberDepth!==void 0&&n.push(zo(e.memberDepth)),n}function qf(e,n){let{min:t,max:r}=pn(e);return n.length<t||n.length>r}var xc=(e,n,t)=>w(n,e)?.params??w(t,e);function ks(e){if(Array.isArray(e))return e.some(ks);if(!e||typeof e!="object")return false;let n=e;return n.t==="typeQuery"||Object.values(n).some(ks)}function Pc(e,n,t){if(!e.some(o=>o.bound))return [];let r=Yn(e,n),a=[];return e.forEach((o,s)=>{if(!o.bound||s>=n.length)return;let i=j(o.bound,r);L(n[s],i,t)||a.push({param:o,arg:n[s],expected:i});}),a}var sc=(e,n)=>e.line<n.line||e.line===n.line&&e.column<=n.column;function Gf(e,n,t){return (e.byPath.get(n)??[]).find(r=>{let a=r.node?.loc;return !!a&&sc(a.start,t.start)&&sc(t.end,a.end)})}function Jf(e,n,t,r,a,o,s){let i=e.typeRefs;if(!i?.length)return [];let l=[];for(let c of i){let u=(O,F)=>({type:"Identifier",name:O,loc:F}),p=u(c.name,c.loc),d=c.namespace===void 0?null:Gf(o,c.namespace,c.loc);if(d===void 0)continue;let y=ct(c.name,d,o,[s]);if("error"in y){let O=c.segments?.[y.segment],F=O?u(O.name,O.loc):p;l.push(y.error==="namespace"?b.namespace.notFound(F,O?.name??c.name):b.namespace.noExportedMember(F,y.namespace,O?.name??c.name));continue}let m=c.args&&a.get(c.args),h=xc(m?.key??y.key,n,t);if(!h){l.push(b.unknownName(p,c.name));continue}if(!c.args)continue;let{min:S,max:B}=pn(h);if(c.args.length<S||c.args.length>B){l.push(b.genericTypeArity(p,c.name,S,B));continue}let M=r.get(c.args)??(m&&(r.get(m.args)??m.args))??c.args;if(!ks(M))for(let O of Pc(h,M,n))l.push(b.constraintViolation(p,O.arg,O.expected));}return l}function Dc(e,n,t={}){let r=xo(e),a=[r],o=zf(n),s=Ji(e,M=>r.orderOf(M),o.globalKeys),i=n.namespaces??Dn,l=new WeakMap,c=Yf(e,s,[i],r,l,o.globalKeys),u=Object.keys(c.schemes).length?{...o.schemes,...c.schemes}:o.schemes,{schemes:p,diagnostics:d}=Hf(c,u),{schemes:y,diagnostics:m}=Qf(c,p),h=es(e),S=Mc({env:n,schemes:y,nominals:y===o.schemes?o.nominals:Cc(n.nominals??{},y),programAliases:new Set(Object.keys(c.schemes)),globalKeys:o.globalKeys,namespaces:s,root:e,bounds:a,invalidTargets:h.invalidTargets,writtenTypeRefs:l}),B=t.profile?capability.compileProfile(t.profile):void 0;B&&Wa(B.typeLimits);try{let M,O=om(e,S);try{M=D(e,O,S);for(let E of S.programAliases)S.resolvedSchemes.has(E)||jr(E,O,S,w(c.ids,E)??e);}catch(E){if(E instanceof ln||E instanceof Jn)S.sink.report(ve("too-deep",e,E.message));else if(E instanceof cn)S.sink.report(ve("too-complex-union",e,E.message));else throw E;M=f.unknown;}let F=[];B&&F.push(...sa(B)),t.limits&&F.push(..._f(t.limits)),t.resultType&&F.push(Jo(t.resultType,y));let $=[...Uc(r,n),...Zf(e,s),...em(e,s),...d,...m,...S.sink.all,...h.diagnostics,...Jf(e,y,S.nominals,S.resolvedTypeArgs,S.writtenTypeRefs,s,i),...t.unused?Zo(e,t.unused):[],...F.length?Vo(e,F,{overlay:S.overlay,schemes:y}):[]];return {type:M,overlay:S.overlay,diagnostics:$,schemes:S.schemes,nominals:S.nominals}}finally{B&&Ua();}}function Xf(e,n,t={}){let r=Dc(e,n,t),a={},o=new Map,s,i=c=>{let u=[];if(c.type==="VariableDeclaration")for(let p of c.declarations){let d=ze(p.id),y=r.overlay.get(p);d&&y&&(v(a,d,y.type),u.push(d));}else if(c.type==="FunctionDeclaration"){let p=c.id?.name,d=r.overlay.get(c);p&&d&&(v(a,p,d.type),u.push(p));}return u};for(let c of e.body??[])if(c.type==="VariableDeclaration"||c.type==="FunctionDeclaration")i(c);else if(c.type==="ExportNamedDeclaration"){let u=c;if(u.declaration)for(let p of i(u.declaration))o.set(p,p);else for(let p of u.specifiers)o.set(p.exported.name,p.local.name);}else if(c.type==="ExportDefaultDeclaration"){let u=r.overlay.get(c.declaration);s=u?u.type:f.unknown;}let l={};if(o.size||s!==void 0){for(let[c,u]of o){let p=w(a,u);p&&v(l,c,{type:p});}s!==void 0&&(l.default={type:s});}else for(let c in a)v(l,c,{type:a[c]});return {type:{t:"object",props:l},diagnostics:r.diagnostics}}function Cc(e,n){let t=Object.keys(e);if(!t.some(a=>pe(n,a)))return e;let r={};for(let a of t){let o=w(e,a);o&&!pe(n,a)&&v(r,a,o);}return r}function Hf(e,n){if(!Object.keys(e.schemes).length)return {schemes:n,diagnostics:[]};let t=kl(e.schemes,n),r=Object.fromEntries(Object.entries(e.schemes).filter(([c])=>!t.has(c))),a=vl(r,n),o=new Set([...t,...a.aliases]);if(!o.size&&!a.properties.size)return {schemes:n,diagnostics:[]};let s={...n};for(let c of o){let u=w(e.schemes,c);u&&v(s,c,{params:u.params,body:f.any});}for(let[c,u]of a.properties){let p=w(e.schemes,c);o.has(c)||!p||v(s,c,{params:p.params,body:ss(p.body,u)});}let i=[],l=c=>{let u=w(e.ids,c);u&&i.push(b.circularTypeAlias(u,c));};for(let c of t)l(c);for(let[c,u]of a.properties){let p=w(e.props,c);for(let d of u){let y=(p&&w(p,d))??w(e.ids,c);y&&i.push(b.circularTypeAnnotation(y,d));}}for(let c of a.aliases)l(c);return {schemes:s,diagnostics:i}}var Rc=(e,n)=>e.t==="index"&&un(ke(e,n));function ic(e,n,t,r){let a=o=>{if(Array.isArray(o)){let c=false,u=o.map(p=>{let d=a(p);return d!==p&&(c=true),d});return c?u:o}if(!o||typeof o!="object")return o;let s=o;if(Rc(s,n)){let c=s;return r.push(b.noSuchMember(t,c.obj,jc(c.key))),f.any}let i=false,l={};for(let c of Object.keys(s)){let u=a(s[c]);u!==s[c]&&(i=true),v(l,c,u);}return i?l:s};return a(e)}var jc=e=>e.t==="literal"?String(e.value):q(e);function Qf(e,n){if(!Object.keys(e.schemes).length)return {schemes:n,diagnostics:[]};let t=[],r={...n},a=false;for(let o of Object.keys(e.schemes)){let s=w(n,o),i=w(e.ids,o);if(!s||!i)continue;let l=w(e.props,o),c=(p,d)=>{if(l&&(p.t==="union"||p.t==="intersection")){let y=p.of.map(m=>c(m,d));return y.every((m,h)=>m===p.of[h])?p:{...p,of:y}}if(l&&p.t==="object"){let y={},m=false;for(let[h,S]of Object.entries(p.props)){let B=ic(S.type,n,w(l,h)??d,t);B!==S.type&&(m=true),v(y,h,B===S.type?S:{...S,type:B});}return m?{...p,props:y}:p}return ic(p,n,d,t)},u=c(s.body,i);u!==s.body&&(v(r,o,{...s,body:u}),a=true);}return {schemes:a?r:n,diagnostics:t}}var Yf=(e,n,t,r,a,o)=>{let s={},i={},l={};return ast.walk(e,{TSModuleDeclaration:c=>n.byNode.has(c)?void 0:false,TSTypeAliasDeclaration(c){let u=c;if(!u.id?.name||!u.typeAnnotation)return;let p=Ps(c,r,n,o);if(!p)return;let d=n.aliasOwner.get(c)??null,y=d?Qi(u.typeAnnotation,d,n,t):cr(u.typeAnnotation,m=>{let h=Fc(r,c,m,n,o);return h?{key:h}:n.byPath.size>0?ct(m,null,n,t):{key:m}},(m,h,S)=>a.set(m,{key:h,args:S}));if(v(s,p,{params:ya(c)??[],body:y}),v(i,p,u.id),u.typeNode){let m={};$c(u.typeNode,m),v(l,p,m);}}}),{schemes:s,ids:i,props:l}};function Ic(e,n){return Ps(e,Je(n.bounds,e),n.namespaces,n.globalKeys)}function Ps(e,n,t,r){let a=e.id,o=a?.name;if(!a||!o)return;let s=t.aliasOwner.get(e);if(s){let u=s.types.get(o);return u&&u.id!==a&&n?`${s.path}.${o}@${n.orderOf(e)}`:u?.key??`${s.path}.${o}`}if(!n)return o;let i=n.symbolOf(a),l=n.localsOf(n.root)?.get(o);return !!i&&(l===i||l?.exportSymbol===i)&&!r.has(o)?o:`${o}@${n.orderOf(e)}`}function Fc(e,n,t,r,a){if(!e||t.includes("."))return;let s=na(e,n,t,ir.Type)?.declarations.find(i=>i.kind==="type-alias");return s&&Ps(s.node,e,r,a)}function Zf(e,n){return Xi(e,n).map(t=>b.namespace.misplaced(t))}function em(e,n){return tc(e,n).map(({node:t,reason:r})=>r==="ambient"?b.modifier.alreadyAmbient(t):b.modifier.cannotAppearHere(t))}function $c(e,n){if(e.type==="TSUnionType"||e.type==="TSIntersectionType")for(let t of e.types??[])$c(t,n);else if(e.type==="TSTypeLiteral")for(let t of e.members??[]){let r=t.key;t.type==="TSPropertySignature"&&typeof r=="string"&&!pe(n,r)&&v(n,r,t);}}var nm=(e,n)=>t=>{let r=n.parentOf(t);if(!r)return;let a=r.source.value;return typeof a=="string"&&e.modules&&w(e.modules,a)?ir.Value:void 0};function Je(e,n){for(let t=e.length-1;t>=0;t--)if(e[t].has(n))return e[t]}function vs(e,n){let t=Je(n.bounds,e);return !!t&&aa(t,e)}var xr=e=>Ki(ta(e)),tm=e=>n=>{let t=Je(e,n),r=t&&Ot(t,n);return r?xr(r):n.name};function Da(e,n,t){let r=Je(e.bounds,n),a=Mo(n).find(s=>s.name===t),o=r&&a&&r.symbolOf(a);return o?xr(o):t}function Vc(e,n,t){let r=Je(e.bounds,n),a=r&&na(r,n,t,ir.Value|Pn.ExportValue);return a?xr(a):t}function Lc(e,n){let t=n.usedBeforeDeclaration.get(e);t||(t=rm(e,n),n.usedBeforeDeclaration.set(e,t));for(let r of t)n.sink.report(r);return t.length>0}function rm(e,n){let t=Je(n.bounds,e),r=t&&Ot(t,e);if(!t||!r)return [];let a=[],o=e.name,s=ta(r),i=s.flags&Pn.BlockScopedVariable?s.declarations.find(c=>ws(c)):void 0;i&&!ra(t,i,e,{deferred:true})&&a.push(b.usedBeforeDeclaration.blockScoped(e,o,i.name));let l=_i(t,e,r);if(l){let c=Vt(l.name);a.push(l.kind==="self"?b.usedBeforeDeclaration.parameterSelf(e,c):b.usedBeforeDeclaration.parameterAfter(e,c,o));}return a}var ws=e=>e.kind==="const"||e.kind==="let"||e.kind==="catch";function am(e,n){let t=Je(n.bounds,e),r=t&&Ot(t,e),a=r?.valueDeclaration;if(!t||!r||!a||ra(t,a,e,{deferred:false}))return false;let o=e.name;return Do(t,e)===Do(t,a.node)&&(ws(a)||a.kind==="var")?(n.sink.report(b.usedBeforeAssigned(e,o)),true):ws(a)?(n.sink.report(b.usedBeforeDeclaration.blockScoped(e,o,a.name)),true):false}function Vt(e){switch(e.type){case "Identifier":return e.name;case "AssignmentPattern":return Vt(e.left);case "RestElement":return `...${Vt(e.argument)}`;case "ArrayPattern":return `[${e.elements.map(n=>n?Vt(n):"").join(", ")}]`;case "ObjectPattern":return `{ ${e.properties.map(n=>{if(n.type==="RestElement")return Vt(n);let t=n,r=Vt(t.value),a=gn(t);return t.shorthand||a===null?r:`${a}: ${r}`}).join(", ")} }`;default:return ""}}function Wc(e,n,t,r){let a=Je(t.bounds,n),o=xo(e,a&&{bound:a,parent:n});for(let s of Uc(o,t.env))t.sink.report(s);t.bounds.push(o);try{return r()}finally{t.bounds.pop();}}var Uc=(e,n)=>[...e.diagnostics,...Ol(e,nm(n,e))];function om(e,n){let t=n.env.modules,r={};return ast.walk(e,{ImportDeclaration(a){let o=a;if(o.importKind==="type")return;let s=o.source.value,i=typeof s=="string"&&t?w(t,s):void 0;if(!i){n.sink.report(b.unknownModule(o.source,String(s)));for(let l of o.specifiers)v(r,lc(l,n),f.unknown);return}for(let l of o.specifiers){if(l.importKind==="type")continue;let c=l.local.name;Gn(c,l.local,n);let u=lc(l,n);if(l.type==="ImportNamespaceSpecifier"){v(r,u,i);continue}let p=l.type==="ImportSpecifier"?l.imported.name:"default",d=Pe(i,[p],n.schemes);d?v(r,u,d.type):(n.sink.report(b.noSuchMember(l,i,p)),v(r,u,f.unknown));}}}),Object.keys(r).length?hn(n.env.scope,r):n.env.scope}var lc=(e,n)=>Da(n,e.local,e.local.name),A=(e,n,t,r)=>(e.overlay.set(n,{type:t,scope:r}),t);function D(e,n,t,r){switch(Ka(),e.type){case Gc:return e.schema;case "JSXElement":case "JSXFragment":{let a=ast.desugarJSX(e,{emptyPropsAsObject:true});return A(t,e,Wc(a,e,t,()=>D(a,n,t)),n)}case "Literal":return A(t,e,ft(e),n);case "Placeholder":return A(t,e,f.any,n);case "Identifier":{let a=e.name,o=t.keyOf(e);if(Et(o)&&Lc(e,t))return A(t,e,f.any,n);if(t.unreachable.value){let l=ba(n,o);if(l!==void 0)return A(t,e,l,n)}let s=ja(o,t)??we(n,o);if(s!==void 0&&t.evolving.has(o)&&Vm(e,o,n,t))return A(t,e,f.any,n);let i=s!==void 0&&$m(o,s,n);if(i)return i.depth===t.fnDepth.value&&t.sink.report(b.usedBeforeAssigned(e,a)),A(t,e,i.declared,n);if(s===void 0){if(a==="undefined")return A(t,e,f.undefined,n);if(Et(o)&&am(e,t))return A(t,e,f.any,n);let l=t.namespaces.byPath.get(a)??t.envNamespaces.byPath.get(a);return t.sink.report(l&&!l.some(c=>c.instantiated)?b.namespace.asValue(e,a):b.unknownName(e,a)),A(t,e,f.any,n)}return A(t,e,s,n)}case "MemberExpression":return A(t,e,Kc(e,n,t),n);case "CallExpression":return A(t,e,mm(e,n,t,r),n);case "ArrowFunctionExpression":return Fs(e,n,t);case "FunctionDeclaration":return t.sink.report(b.unsupported(e,"function declaration (use 'const fn = () => \u2026')")),A(t,e,f.unknown,n);case "FunctionExpression":return t.sink.report(b.unsupported(e,"anonymous function (use an arrow)")),A(t,e,f.unknown,n);case "ThisExpression":return t.sink.report(b.unsupported(e,"'this'")),A(t,e,f.unknown,n);case "BlockStatement":return A(t,e,cu(e,n,t),n);case "ReturnStatement":{let a=e.argument;return A(t,e,a?D(a,n,t):f.unknown,n)}case "IfStatement":return qe(e,n,t),t.overlay.get(e)?.type??f.unknown;case "ForStatement":case "WhileStatement":case "DoWhileStatement":case "ForOfStatement":case "ForInStatement":case "BreakStatement":case "ContinueStatement":case "ThrowStatement":case "TryStatement":case "SwitchStatement":return qe(e,n,t),t.overlay.get(e)?.type??f.unknown;case "AssignmentExpression":{let a=e,o=a.left;if(a.operator==="="&&(o.type==="ArrayExpression"||o.type==="ObjectExpression")){let y=D(a.right,n,t);return St(o,y,n,t),A(t,e,y,n)}let s=a.operator!=="=",i=s?bc(o,n,t):Vs(o,n,t);s&&o.type==="MemberExpression"&&Oa(o,t,"write")&&t.invalidTargets.add(o);let l=Ee(o,t.keyOf),c=t.invalidTargets.has(o);if(!s){let y=l!==null&&t.evolving.has(l),m=a.right,h=y||c?D(m,n,t):je(m,i,n,t,true),S=jn(m)?A(t,m,ft(m),n):h;return l!==null&&wa(l,n,t)?sn(l,Ta(l,false,S,i,n,t),t):l!==null&&Ve(l)&&sn(l,i,t),A(t,e,S,n)}let u=t.sink.reported,p=_m(a,c?f.any:i,n,t),d=t.sink.reported>u;return !c&&!d&&!L(p,i,t.schemes)&&t.sink.report(b.notAssignable(e,p,i,t.schemes)),l!==null&&wa(l,n,t)?sn(l,Ta(l,true,p,Sc(l,n,t)??i,n,t),t):l!==null&&Ve(l)&&sn(l,$e(i),t),A(t,e,p,n)}case "UpdateExpression":{let o=e.argument,s=bc(o,n,t);if(o.type==="MemberExpression"&&Oa(o,t,"write")&&t.invalidTargets.add(o),!t.invalidTargets.has(o)){let l=Wt(s,o,t);Or(l.type,t.schemes)||t.sink.report(b.arithmeticOperand(o,"operand"));}let i=Ee(o,t.keyOf);return i!==null&&wa(i,n,t)?sn(i,Ta(i,true,s,Sc(i,n,t)??s,n,t),t):i!==null&&Ve(i)&&sn(i,$e(s),t),A(t,e,f.number,n)}case "ExpressionStatement":return A(t,e,D(e.expression,n,t),n);case "VariableDeclaration":return xa(e,n,t),A(t,e,f.unknown,n);case "TSTypeAliasDeclaration":{let a=Ic(e,t),o=a?w(t.schemes,a):void 0;return A(t,e,o?wm(o.body,n,t,e,o.params.length>0):f.unknown,n)}case "BinaryExpression":return A(t,e,Sy(e,n,t),n);case "LogicalExpression":{let a=e,o=D(a.left,n,t),s=a.operator==="??"?void 0:_e(a.left,n,t.schemes,t.keyOf),i=te(n,s?a.operator==="&&"?s.then:s.else:{}),l=t.unreachable.value;t.unreachable.value=l||a.operator==="&&"&&on(a.left)||a.operator==="||"&&Re(a.left);let{value:c,effect:u}=Ea(t,()=>D(a.right,i,t));return t.unreachable.value=l,u.size&&gc([{effect:u,scope:i},{scope:te(n,s?a.operator==="&&"?s.else:s.then:{})}],t),A(t,e,wy(a.operator,o,c,t.schemes),n)}case "UnaryExpression":return A(t,e,Ey(e,n,t),n);case "ConditionalExpression":{let a=e;Us(a.test,a.consequent,D(a.test,n,t),t);let o=_e(a.test,n,t.schemes,t.keyOf),s=te(n,o.then),i=te(n,o.else),l=t.unreachable.value;t.unreachable.value=l||on(a.test);let c=Ea(t,()=>D(a.consequent,s,t));t.unreachable.value=l||Re(a.test);let u=Ea(t,()=>D(a.alternate,i,t));return t.unreachable.value=l,(c.effect.size||u.effect.size)&&gc([{effect:c.effect,scope:s},{effect:u.effect,scope:i}],t),A(t,e,c.value===Un&&u.value===Un?Un:C([c.value,u.value]),n)}case "ObjectExpression":return A(t,e,Oy(e,n,t),n);case "ArrayExpression":return A(t,e,ju(e,n,t),n);case "TemplateLiteral":{if(tn(e)!==null)return A(t,e,ft(e),n);for(let a of e.expressions){let o=D(a,n,t);Ru(o,t.schemes)||t.sink.report(b.notTextConvertible(a,o));}return A(t,e,f.string,n)}case "AwaitExpression":{let a=e.argument,o=a?D(a,n,t):f.unknown;return A(t,e,mt(o),n)}case "Program":{let a=Cr(e.body,n,t).scope;return A(t,e,f.unknown,a)}case "JsonExpression":return A(t,e,xs(e.body,n,t,e),n);case "ChainExpression":{let a=e.expression,o=D(a,n,t);return A(t,e,sm(a,t)?C([o,f.undefined]):o,n)}case "TSAsExpression":{let a=e,o=D(a.expression,n,t),s=zt(a.typeAnnotation,n,t,e,true);return ur(o,s,t.schemes)||t.sink.report(b.castUnsound(e,o,s)),A(t,e,s,n)}default:return t.sink.report(b.unsupported(e,`'${e.type}'`)),A(t,e,f.unknown,n)}}function Kc(e,n,t,r=false){let a=D(e.object,n,t),o=lm(e,a,n,t),s=r||t.unreachable.value?null:Ee(e,t.keyOf);if(s!==null&&Ve(s)){let i=ja(s,t)??we(n,s);if(i!==void 0&&L(i,o,t.schemes))return i}return o}function sm(e,n){for(let t=e;t;){if(n.shortCircuits.has(t))return true;if(t.type==="MemberExpression")t=t.object;else if(t.type==="CallExpression")t=t.callee;else return false}return false}var im=e=>e.t==="unknown";function Ca(e,n,t){return im(e)?(t.sink.report(b.unknownValue(n)),true):false}function bt(e){let n=bn(e),t=n.some(a=>a.t==="null"),r=n.some(a=>a.t==="undefined");return t||r?{null:t,undefined:r}:null}function Pr(e){let n=bn(e).filter(t=>t.t!=="null"&&t.t!=="undefined");return n.length===bn(e).length||n.length===0?e:C(n)}function Wt(e,n,t){if(Ca(e,n,t))return {type:f.any,error:true};let r=bt(e);return r?(t.sink.report(b.possiblyNullish(n,r)),bn(e).filter(o=>o.t!=="null"&&o.t!=="undefined").length===0?{type:f.any,error:true}:{type:Pr(e),error:false}):{type:e,error:false}}var zc=e=>e.t==="var"||e.t==="keyof"||(e.t==="union"||e.t==="intersection")&&e.of.some(zc);function lm(e,n,t,r){if(Ca(n,e.object,r))return A(r,e,f.any,t);let a=e.optional?null:bt(n);a&&r.sink.report(b.possiblyNullish(e.object,a)),e.optional&&bt(n)&&r.shortCircuits.add(e);let o=e.optional||a?Pr(n):n;if(e.computed){let l=D(e.property,t,r);if(l.t==="literal"&&typeof l.value!="boolean"){let u=String(l.value),p=Pe(o,[u],r.schemes);return p?p.type:(cc(e,o,u,r),f.any)}let c=ke(f.index(o,l),r.schemes);if(zc(l)||c.t!=="index"&&!un(c)&&l.t!=="any")return c;if(l.t==="any"){let u=ke(f.index(o,f.string),r.schemes);if(u.t!=="index"&&!un(u))return u}return _c(l)?(cm(e,o,l,r),f.any):f.unknown}let s=e.property.name,i=Pe(o,[s],r.schemes);return i?i.type:(cc(e,o,s,r),f.any)}var _c=e=>e.t==="any"||e.t==="string"||e.t==="number"||e.t==="literal"&&typeof e.value!="boolean"||e.t==="union"&&e.of.length>0&&e.of.every(_c);function cm(e,n,t,r){let a=I(n,r.schemes),o=a.t==="array"||a.t==="tuple"||a.t==="object"&&a.index?.key==="number";r.sink.report(o?b.implicitAny.indexNotNumber(e.property):b.implicitAny.index(e,t,a.t==="var"&&!a.bound?f.unknown:n));}function cc(e,n,t,r){let a=de(n,r.schemes)?fe(n,r.schemes):n;a.t==="object"||a.t==="array"||a.t==="tuple"||a.t==="union"?r.sink.report(b.noSuchMember(e,n,t)):a.t!=="any"&&a.t!=="unknown"&&r.sink.report(b.notObject(e,n));}function um(e,n,t,r){let a=e.arguments[0];if(!a){r.sink.report(b.missingArgument(e,"schema",f.unknown));return}if(a.type!=="Identifier"){r.sink.report(b.asserterNeedsName(a,n));return}let o=a.name,s=r.keyOf(a),i=we(t,s),l=w(r.schemes,o);if(i===void 0){r.sink.report(l?b.typeAsValue(a,o):b.unknownName(a,o));return}if(!l||l.params.length>0){r.sink.report(b.notASchema(a,o));return}if(!(qc(o,r)&&Et(s)))return r.overlay.set(a,{type:l.body,scope:t}),l.body}function qc(e,n){if(!n.env.asserters?.size)return false;let t=w(n.schemes,e);return t!==void 0&&t.params.length===0&&we(n.env.scope,e)!==void 0}function Gn(e,n,t){qc(e,t)&&t.sink.report(b.shadowsSchema(n,e));}function Ds(e,n){let t=Ce(e,n);return (t.t==="fn"?t:t.t==="overload"?t.signatures[0]:void 0)?.params[0]?.type}function pm(e,n){let t=we(e.scope,n);if(!t)return;let r=Ds(t,e.schemes);return r?Ce(r,e.schemes):void 0}function dm(e,n,t,r){let a=Ds(D(n[0],t,r),r.schemes),o=n.length>1?D(n[1],t,r):f.undefined;if(a){let s=tr(o,a,r.schemes);s.length&&r.sink.report(b.propsMismatch(n[1]??e,a,ar(s)));}return A(r,e,f.boolean,t)}var Gc="TSLiteSyntheticArg",fm=e=>({type:Gc,schema:e});function Jc(e,n,t){if(!e.some(o=>o.type==="SpreadElement"))return {nodes:[...e],spread:null};let r=[],a=null;for(let o of e){if(o.type!=="SpreadElement"){r.push(o);continue}let s=o.argument;if(s.type==="ArrayExpression"&&s.elements.every(l=>l&&l.type!=="SpreadElement")){for(let l of s.elements)r.push(l);continue}let i=Ce(D(s,n,t),t.schemes);if(i.t==="tuple")for(let l of i.elements)r.push(fm(l));else a={elem:Ia(i,s,t),node:o};}return {nodes:r,spread:a}}function mm(e,n,t,r){let a=t.inference||t.skipContextSensitive?{...t,inference:void 0,skipContextSensitive:void 0}:t,o=e.arguments,s=cs(e.callee);if(s){let m=a.env.accessors?w(a.env.accessors,s):void 0;if(m){let h=Ml(o);if(h){let S=Pe(m,h,a.schemes);return S?S.type:(a.sink.report(b.noSuchMember(e,m,h.join("."))),f.unknown)}return o.forEach(S=>D(S,n,a)),f.unknown}}if(s&&a.env.asserters?.has(s)){let m=um(e,s,n,a);o.length<2&&o.length>0&&a.sink.report(b.missingArgument(e,"value",f.unknown));for(let h=1;h<o.length;h++){let S=D(o[h],n,a);h===1&&m&&se(S).size===0&&!ur(S,m,a.schemes)&&a.sink.report(b.unprovableValue(o[h],S,m,e.arguments[0].name));}return m??f.unknown}if(s&&a.env.matchers?.has(s))return dm(e,o,n,a);let i=I(D(e.callee,n,a),a.schemes);if(Ca(i,e.callee,a))return A(a,e,f.any,n);let l=bt(i);l&&(e.optional?a.shortCircuits.add(e):a.sink.report(b.possiblyNullish(e.callee,l,true)));let c=l?I(Pr(i),a.schemes):i;if(c.t==="any")return o.forEach(m=>D(m,n,a)),f.any;if(c.t==="overload")return gm(e,c,n,a,r);if(c.t!=="fn")return o.forEach(m=>D(m,n,a)),a.sink.report(b.notCallable(e,c)),f.unknown;let u=Jc(o,n,a),p=u.nodes.map(m=>Xc(m,n,a)),d=Qc(e),y=!d||Yc(c,d.length);return y||a.sink.report(Zc(e,[c],d.length)),Ut(e,c,u.nodes,p,n,a,u.spread,r,y?d:void 0)}function Xc(e,n,t){if(De(e))return D(e,n,{...t,skipContextSensitive:true});if(e.type!=="CallExpression")return D(e,n,t);let r=he(),a=D(e,n,{...t,sink:r});return r.hasErrors()?f.any:(r.all.forEach(o=>t.sink.report(o)),a)}function Ut(e,n,t,r,a,o,s=null,i,l){let c,u=o.sink;if(!s){let x=nu(e,n,r.length,t);x&&(o.sink.report(x),c=he(),o={...o,sink:c});}let p=l?Em(e,n,l,o):void 0,d=p??er(n,r,o.schemes,i).bindings,y=p||!i?{}:ym(n,i,o.schemes),m=x=>nt(j(x,hm(n,x,d,o.schemes))),h={returnMapper:y,nonFixing:d,outer:uc(n,d),fixing:m},S=new Set((n.typeParams??[]).map(x=>x.name)),B=x=>[...se(x)].some(R=>S.has(R)),M=new Set,O=[];t.forEach((x,R)=>{if(xl(x)){let J=n.params[R]?.type??f.any,re=$s(J.t==="var"?j(J,d):J,x,o.schemes);r[R]=Fs(x,a,o,re&&m(re));}else if(x.type==="CallExpression"&&r[R].t==="any")r[R]=D(x,a,o,j(n.params[R]?.type??f.unknown,uc(n,d)));else if(jn(x)){let J=n.params[R]?.type??f.unknown,re=zn(x);Ct(j(J,y),re)&&(r[R]=A(o,x,re,a));}else if(x.type==="ArrayExpression"||x.type==="ObjectExpression"||x.type==="ConditionalExpression"||x.type==="LogicalExpression"&&De(x)){let J=n.params[R]?.type??f.unknown,re=De(x),ne=j(J,y);if(x.type==="ArrayExpression"&&kr(ne)){r[R]=Ks(x,ne,a,{...o,inference:h}),O.push(R);return}let g=J.t==="var"&&!J.bound;if(re?g||!n.params[R]:g||!Fu(ne,o.schemes)){re&&(r[R]=D(x,a,o));return}M.add(R),B(J)&&(r[R]=je(x,J,a,{...o,sink:he(),inference:h},true)),O.push(R);}});let F=p||Ts(n,er(n,r,o.schemes,i).bindings,o.schemes);p&&Sm(e,n,F,o);for(let x of O)r[x]=My(t[x],j(n.params[x].type,F),a,o,false);Am(e,n,r,F,o,t,s),t.forEach((x,R)=>{let J=n.params[R];x.type==="ObjectExpression"&&J&&!J.variadic&&!M.has(R)&&As(x,j(J.type,F),o);});let $=j(n.returns,Ts(n,F,o.schemes)),E=$.t==="union"?C($.of):$;if(c)for(let x of c.all)x.kind!=="type"&&u.report(x);return ao(rt(E,o.schemes,void 0,0,se(E)))}function ym(e,n,t){let r=wt(e.typeParams);return r.size?(fn(r,n,e.returns,t),Zt(r,t)):{}}var Ts=(e,n,t)=>Gr(e.typeParams??[],n,t);function hm(e,n,t,r){if(n.t!=="fn"||!e.typeParams?.some(i=>!w(t,i.name)))return t;let a=new Set;for(let i of n.params)for(let l of se(i.type))a.add(l);let o=Ts(e,t,r),s={...t};for(let i of e.typeParams){if(w(t,i.name)||!a.has(i.name))continue;let l=w(o,i.name);l&&v(s,i.name,l);}return s}function uc(e,n){if(!e.typeParams?.some(r=>!w(n,r.name)))return n;let t={...n};for(let r of e.typeParams)w(n,r.name)||v(t,r.name,Un);return t}function Sm(e,n,t,r){for(let a of n.typeParams??[]){let o=w(t,a.name);if(!a.bound||!o)continue;let s=j(a.bound,t);L(o,s,r.schemes)||r.sink.report(b.constraintViolation(e,o,s));}}function gm(e,n,t,r,a){let o=Jc(e.arguments,t,r),s=o.nodes,i=s.map(u=>Xc(u,t,r)),l=Qc(e),c=l?n.signatures.filter(u=>Yc(u,l.length)):n.signatures;return l&&!c.length?(r.sink.report(Zc(e,n.signatures,l.length)),dc(e,n.signatures,o,s,i,t,r,a,void 0)):dc(e,c,o,s,i,t,r,a,l)}function bm(e,n,t,r,a,o,s){if(!n.length)return e;let l=n.map(p=>{let d=he();return Ut(e,p,t,[...r],a,{...o,sink:d},s),d.all.filter(y=>y.kind==="type"&&y.severity==="error")}).filter(p=>p.length>0);if(!l.length)return e;let c=l.length===1||l.length>3?l[l.length-1]:l.some(p=>p.length>1)?l.reduce((p,d)=>d.length<=p.length?d:p):l.flat(),u=c[0].node;return c.every(p=>p.node===u)?u:e}function pc(e,n,t,r,a,o){if(!n.length)return f.unknown;let s=Hc(n,t.length);return s.combined?s.sig.returns:Ut(e,s.sig,t,[...r],a,{...o,sink:he()},null)}function Hc(e,n){if(e.length===1||e.some(l=>l.typeParams?.length))return {sig:Bm(e,n),combined:false};let t=l=>l.params.length-(l.params[l.params.length-1]?.variadic?1:0),r=l=>{let c=l.params.findIndex(u=>u.optional||u.variadic);return c<0?l.params.length:c},a=Math.min(...e.map(r)),o=Math.max(...e.map(t)),s=[];for(let l=0;l<o;l++){let c=e.map(p=>Tt(p,l)).filter(p=>p!==void 0),u=e.find(p=>l<t(p))?.params[l].name??`arg${l}`;s.push({name:u,type:C(c),...l>=a?{optional:true}:{}});}let i=e.filter(l=>l.params[l.params.length-1]?.variadic).map(l=>Tt(l,t(l))).filter(l=>l!==void 0);return i.length&&s.push({name:"args",type:f.array(C(i)),variadic:true}),{sig:f.fn(s,f.intersection(e.map(l=>l.returns))),combined:true}}function Nm(e,n,t,r,a,o,s){if(!t.some(De))return {types:r,inner:[]};let i=he(),l=[...r];return Ut(e,n,t,l,a,{...o,sink:i},s),{types:l,inner:i.all.filter(c=>c.kind!=="type")}}function Bm(e,n){let t=e[0],r=-1;for(let a of e){let o=a.params.length;if(a.params.some(s=>s.variadic)||o>=n)return a;o>r&&(r=o,t=a);}return t}function dc(e,n,t,r,a,o,s,i,l){let c={t:"overload",signatures:n},u=S=>t.spread?Om(S,r.length):eu(S,r.length),p=c.signatures.filter(u);if(p.length>1)for(let S of p){let B=he(),M=Ut(e,S,r,[...a],o,{...s,sink:B},t.spread,i,l);if(!B.all.some(O=>O.kind==="type"&&O.severity==="error"))return B.all.forEach(O=>s.sink.report(O)),M}let d=p.length>1?void 0:c.signatures.find(S=>u(S)&&fc(S,a,s));if(d||(p.length===1?d=p[0]:c.signatures.length===1&&(d=c.signatures[0])),!d){let S=t.spread?null:nu(e,c.signatures,r.length,r),B=p.length===1||p.length>3?p[p.length-1]:p[0],M=Nm(e,S||!B?Hc(c.signatures,r.length).sig:p.find(O=>fc(O,a,s))??B,r,a,o,s,t.spread);s.sink.report(S??b.noMatchingOverload(bm(e,p,r,a,o,s,t.spread),c,M.types));for(let O of M.inner)s.sink.report(O);return pc(e,c.signatures,r,a,o,s)}let{value:y,reported:m}=Ac(s,S=>Ut(e,d,r,a,o,S,t.spread,i,l)),h=m.some(S=>S.kind==="type"&&S.severity==="error");return c.signatures.length>1&&h?pc(e,c.signatures,r,a,o,s):y}function km(e,n,t,r){let a=we(n,Vc(t,r,e[0]));if(a===void 0)return t.sink.report(b.unknownName(r,e[0])),f.any;let o=e.slice(1),s=o.length?Pe(a,o,t.schemes)?.type:a;return s?s.t==="literal"?f.literal(s.value):s:(t.sink.report(b.noSuchMember(r,a,o.join("."))),f.any)}function zt(e,n,t,r,a){let o=s=>{if(Array.isArray(s)){let u=false,p=s.map(d=>{let y=o(d);return y!==d&&(u=true),y});return u?p:s}if(!s||typeof s!="object")return s;let i=s;if(i.t==="typeQuery")return km(i.path,n,t,r);if(i.t==="apply"&&typeof i.name=="string"){if(a&&t.namespaces.byPath.size>0&&i.name.includes(".")&&!("key"in ct(i.name,null,t.namespaces,[t.envNamespaces])))return f.any;let u=Array.isArray(i.args)?i.args:void 0,p=u&&o(u);u&&p&&t.resolvedTypeArgs.set(u,p);let d=a&&Fc(Je(t.bounds,r),r,i.name,t.namespaces,t.globalKeys)||i.name;u&&d!==i.name&&t.writtenTypeRefs.set(u,{key:d,args:p??u}),jr(d,n,t,r);let y=xc(d,t.schemes,t.nominals);if(!y)return f.any;if(p&&qf(y,p))return f.any;if(p?.length===1&&vm(d,t.nominals))return f.array(p[0],d==="ReadonlyArray");if(p&&p!==u||d!==i.name){let m={};for(let h of Object.keys(i))v(m,h,h==="args"&&p?p:h==="name"?d:i[h]);return m}return i}if(Rc(i,t.schemes)){let u=i;return t.sink.report(b.noSuchMember(r,u.obj,jc(u.key))),f.any}if(i.t==="union"&&Array.isArray(i.of)){let u=i.of,p=u.map(m=>o(m)),d=f.union(p);return d.t==="union"&&d.of.length===u.length&&d.of.every((m,h)=>m===u[h])?i:d}if(i.t==="intersection"&&Array.isArray(i.of)){let u=i.of,p=u.map(m=>o(m)),d=f.intersection(p);return d.t==="intersection"&&d.of.length===u.length&&d.of.every((m,h)=>m===u[h])?i:d}if(i.t==="tuple"&&Array.isArray(i.elements)){let u=i.elements,p=u.map(m=>o(m)),d=f.tuple(p,i.flags,i.readonly);return p.every((m,h)=>m===u[h])&&d.elements.every((m,h)=>m===p[h])?i:d}let l=false,c={};for(let u of Object.keys(i)){let p=o(i[u]);p!==i[u]&&(l=true),v(c,u,p);}return l?c:i};return o(e)}var vm=(e,n)=>(e==="Array"||e==="ReadonlyArray")&&w(n,e)===w(lr,e);function jr(e,n,t,r){if(t.resolvedSchemes.has(e)||!t.programAliases.has(e))return;let a=w(t.schemes,e);if(!a)return;t.resolvedSchemes.add(e);let o=zt(a.body,n,t,r,false);o!==a.body&&v(t.schemes,e,{...a,body:o});}function wm(e,n,t,r,a){let o={...t,sink:he(),resolvedTypeArgs:new WeakMap,resolvedSchemes:new Set(Object.keys(t.schemes))},s=zt(e,n,o,r,false);return o.sink.hasErrors()?e:a?s:rt(s,t.schemes)}var Ar=(e,n,t)=>{let r=fa(e);return r===void 0?r:zt(r,n,t,e,true)},Tm=(e,n,t)=>{let r=ma(e);return r===void 0?r:zt(r,n,t,e,true)},Qc=e=>{let n=e.typeArguments;return n?.length?n:void 0},Yc=(e,n)=>{let{min:t,max:r}=pn(e.typeParams??[]);return n>=t&&n<=r};function Zc(e,n,t){if(n.length===1){let{min:o,max:s}=pn(n[0].typeParams??[]);return b.wrongTypeArgumentCount(e,o<s?`${o}-${s}`:o,t)}let r=-1/0,a=1/0;for(let o of n){let{min:s,max:i}=pn(o.typeParams??[]);s>t?a=Math.min(a,s):i<t&&(r=Math.max(r,i));}return r!==-1/0&&a!==1/0?b.noOverloadTypeArgumentCount(e,t,r,a):b.wrongTypeArgumentCount(e,r===-1/0?a:r,t)}function Em(e,n,t,r){let a=n.typeParams??[],o=Yn(a,t.slice(0,a.length));for(let s of Pc(a,t,r.schemes))r.sink.report(b.constraintViolation(e,s.arg,s.expected));return o}function Om(e,n){let t=0,r=false;for(let a of e.params)a.variadic?r=true:a.optional||t++;return n>=t&&(r||n<e.params.length)}function eu(e,n){let t=0;for(let r of e.params){if(r.variadic)return n>=t;r.optional||t++;}return n>=t&&n<=e.params.length}function nu(e,n,t,r){let a=Array.isArray(n)?n:[n];if(!a.length||a.some(c=>eu(c,t)))return null;let o=a.some(c=>c.params.some(u=>u.variadic)),s=Math.min(...a.map(c=>c.params.filter(u=>!u.optional&&!u.variadic).length)),i=Math.max(...a.map(c=>c.params.length)),l=o?`${s}`:s<i?`${s}-${i}`:`${s}`;return t<s?b.argumentArity(e,l,t,"missing",o):b.argumentArity(r[i]??e,l,t,"excess",o)}function fc(e,n,t){let r=er(e,n,t.schemes).bindings;for(let a=0;a<e.params.length;a++){let o=e.params[a];if(o.variadic){let s=j(o.type,r),i=s.t==="array"?s.items:f.unknown;for(let l=a;l<n.length;l++)if(!L(n[l],i,t.schemes))return false;return true}if(a>=n.length){if(!o.optional)return false;continue}if(!L(n[a],j(o.type,r),t.schemes))return false}return true}function Am(e,n,t,r,a,o=e.arguments??[],s=null){let i=c=>o[c]??e;for(let c=0;c<n.params.length;c++){let u=n.params[c];if(u.variadic){let d=j(u.type,r),y=d.t==="array"?d.items:f.unknown;for(let m=c;m<t.length;m++)L(t[m],y,a.schemes)||a.sink.report(b.notAssignable(i(m),t[m],y,a.schemes));break}let p=j(u.type,r);c>=t.length||L(t[c],p,a.schemes)||a.sink.report(b.notAssignable(i(c),t[c],p,a.schemes));}let l=n.params.find(c=>c.variadic);if(s){let c=t.length,u=n.params.filter(p=>!p.optional&&!p.variadic).length;if(!(c>=u&&(l||c<n.params.length))){a.sink.report(b.spreadArgument(s.node));return}if(l){let p=j(l.type,r),d=p.t==="array"?p.items:f.unknown;L(s.elem,d,a.schemes)||a.sink.report(b.notAssignable(s.node,s.elem,d,a.schemes));}return}}function Ir(e,n,t){if(e.t==="object"){let r=Be(e.props,n);return r?r.optional?Ne(r.type):r.type:e.index?.key==="string"?e.index.value:void 0}if(e.t==="intersection"){let r=e.of.map(a=>Ir(I(a,t),n,t)).filter(a=>a!==void 0);return r.length===0?void 0:r.length===1?r[0]:Y({t:"intersection",of:r})}if(e.t==="union")return tu(e.of,n,t);if(Cs(e)){let r=e.over.t==="keyof"?f.union([f.string,f.number]):I(e.over,t);if(!L(f.literal(n),r,t))return;let a={};return v(a,e.key,f.literal(n)),j(e.body,a)}}var Cs=e=>e.t==="mapped"&&se(e.over).size>0;function tu(e,n,t){let r=e.map(a=>Ir(I(a,t),n,t)).filter(a=>a!==void 0);return r.length?C(r):void 0}function Es(e,n,t){let r=I(e,t);if(r.t==="object")return n&&r.index?.key==="number"||r.index?.key==="string"?r.index.value:void 0;if(r.t==="union"||r.t==="intersection"){let a=r.of.map(o=>Es(o,n,t)).filter(o=>o!==void 0);return a.length?r.t==="union"?C(a):f.intersection(a):void 0}}function Mm(e,n,t){if(!e.computed){let l=gn(e);return {name:l,bindable:l!==null,numeric:l!==null&&Wn(l)}}let r=e.key,a=Ce(D(r,n,t),t.schemes),o=a.t==="literal"&&(typeof a.value=="string"||typeof a.value=="number")?String(a.value):null,s=a.t==="number"||a.t==="literal"&&typeof a.value=="number",i=o!==null&&(Rs(r)||js(r));return {name:o,bindable:i,numeric:s}}function Ra(e){if(!e.computed)return gn(e);let n=e.key;if(!Rs(n))return null;let t=tn(n);if(t!==null)return t;if(n.type==="Literal")return String(n.value);let r=n;return `${r.operator}${String(r.argument.value)}`}function ru(e,n){let t=new Set,r=new Set;for(let a of e.properties){if(a.type==="SpreadElement")continue;let o=a,s=o.key;if(!o.computed&&s.type==="Identifier"){let l=s.name;t.has(l)?n.sink.report(b.duplicateKey.strict(s)):t.add(l);}let i=xm(o);i!==null&&(r.has(i)?n.sink.report(b.duplicateKey.identifier(o.computed?o:s,Pm(o))):r.add(i));}}function au(e,n,t,r){let a=n.key;if(t===null||!n.computed||Rs(a)||!js(a))return;let o=e.properties.find(s=>s.type==="Property"&&Ra(s)===t);o&&(r.sink.report(b.duplicateKey.alsoDeclared(o.computed?o:o.key,t)),r.sink.report(b.duplicateKey.lateBound(n,t)));}function xm(e){return e.computed?e.key.type==="UnaryExpression"?null:Ra(e):gn(e)}function Pm(e){let n=e.key;if(e.computed)return Pu(n,Ra(e)??"");if(n.type==="Identifier")return n.name;let t=n.value;return typeof t=="string"?JSON.stringify(t):String(t)}var Rs=e=>{if(tn(e)!==null)return true;if(e.type==="Literal"){let n=e.value;return typeof n=="string"||typeof n=="number"}if(e.type==="UnaryExpression"){let n=e;return (n.operator==="-"||n.operator==="+")&&n.argument.type==="Literal"&&typeof n.argument.value=="number"}return false},js=e=>e.type==="Identifier"||e.type==="MemberExpression"&&!e.computed&&!e.optional&&js(e.object),Is=e=>e.t==="literal"||e.t==="null"||e.t==="undefined"||e.t==="boolean"||e.t==="union"&&e.of.every(Is),mc=new WeakMap;function Dm(e,n,t){let r=mc.get(t);if(r)return r;let a=new Set;for(let s of e)if(s.t==="object")for(let i of Object.keys(s.props))a.add(i);let o=new Set;for(let s of a){let l=e.map(u=>Ir(u,s,n)).filter(u=>u!==void 0);if(!l.some(Is))continue;l.length===e.length&&l.every(u=>Ze(u,l[0]))||o.add(s);}return mc.set(t,o),o}var ou=e=>e.type==="Literal"||e.type==="Identifier"||e.type==="TemplateLiteral"||e.type==="MemberExpression"&&!e.computed&&ou(e.object);function su(e,n,t,r,a){let o=Dm(n,r,a),s=new Set;if(!o.size)return {chosen:n,ignored:s};let i=[];for(let u of e.properties){if(u.type!=="Property")continue;let p=u,d=Ra(p);if(d===null||!o.has(d)||!ou(p.value))continue;let y=t(p);y&&Is(y)&&i.push([d,y]);}let l=n.map(()=>1);for(let[u,p]of i){let d=false;n.forEach((y,m)=>{if(l[m]!==1)return;let h=Ir(y,u,r);h!==void 0&&(L(p,h,r)?d=true:l[m]=2);}),n.forEach((y,m)=>{l[m]===2&&(l[m]=d?0:1);}),d||s.add(u);}let c=n.filter((u,p)=>l[p]===1);return {chosen:c.length?c:n,ignored:s}}function yc(e,n,t,r,a,o,s=false){let i={},l={};ru(e,a);let c=new Map;for(let[u,p]of e.properties.entries()){let d=p;if(d.type==="SpreadElement"){let O=D(d.argument,r,a);if(Tu(e,u,O,r,a))return {checked:i,narrowed:l,refused:true};Eu(c,O,d,a);let F=I(O,a.schemes);if(F.t==="object")for(let[$,E]of Object.entries(F.props))v(i,$,E),v(l,$,E);continue}let y=d,{name:m,bindable:h,numeric:S}=Mm(y,r,a);au(e,y,m,a);let B=h?n(m):t(S),M=B?je(y.value,B,r,a,o):He(D(y.value,r,a));m!==null&&(v(i,m,{type:s?M:B??M}),v(l,m,{type:M}),c.set(m,d)),A(a,d,M,r);}return {checked:i,narrowed:l,refused:false}}function Os(e,n){let t=I(e,n);if(t.t==="conditional"){let r=Ie(t,n);return r?Os(r,n):t}if(t.t==="union"&&t.of.some(r=>r.t==="conditional")){let r=t.of.map(a=>{if(a.t!=="conditional")return a;let o=Ie(a,n);return o?Os(o,n):a});return I(f.union(r),n)}return t}function je(e,n,t,r,a=false){let o=r.inference,s=o?j(n,o.returnMapper):n,i=u=>o?j(u,o.nonFixing):u,l=Os(s,r.schemes);switch(jn(e)?"Literal":e.type){case "Literal":{let u=zn(e);return L(u,n,r.schemes)||r.sink.report(b.notAssignable(e,u,n,r.schemes)),A(r,e,ft(e),t),a?Ct(s,u)?u:He(ft(e)):n}case "ArrayExpression":{if(kr(l)){let u=Ks(e,l,t,r);return L(u,n,r.schemes)||Ay(e,u,l,t,r)||r.sink.report(b.notAssignable(e,u,n,r.schemes)),A(r,e,u,t)}if(l.t==="array"){let u=[];for(let d of e.elements){if(!d)continue;let y=d;if(y.type==="SpreadElement"){let m=je(y.argument,n,t,r,a);m.t==="array"&&u.push(m.items);}else u.push(je(y,l.items,t,r,a));}let p=a&&u.length>0?f.array(C(u)):i(n);return A(r,e,p,t)}break}case "ObjectExpression":{if(l.t==="object"||l.t==="intersection"||Cs(l)){let{value:{checked:u,narrowed:p,refused:d},reported:y}=Ac(r,B=>yc(e,M=>Ir(l,M,r.schemes),M=>Es(l,M,r.schemes),t,B,a));if(d)return A(r,e,f.any,t);let m=y.some(B=>B.kind==="type"&&B.severity==="error"),h=As(e,n,r),S={t:"object",props:u};return !h&&!m&&!L(S,n,r.schemes)&&r.sink.report(b.notAssignable(e,S,n,r.schemes)),A(r,e,a?{t:"object",props:p}:n,t)}if(l.t==="union"){let u=l.of.filter(F=>F.t==="object"||F.t==="intersection");if(!u.length)break;let p=e,{chosen:d,ignored:y}=su(p,u,F=>D(F.value,t,{...r,sink:he()}),r.schemes,n),m=r.sink.reported,{checked:h,narrowed:S,refused:B}=yc(p,F=>tu(y.has(F)?u:d,F,r.schemes),F=>Es({t:"union",of:d},F,r.schemes),t,r,a,true);if(B)return A(r,e,f.any,t);let M=As(p,n,r),O={t:"object",props:h};return !M&&r.sink.reported===m&&!L(O,n,r.schemes)&&r.sink.report(b.notAssignable(e,O,n,r.schemes)),A(r,e,a?{t:"object",props:S}:n,t)}break}case "ArrowFunctionExpression":{let u=$s(o?n.t==="var"?j(n,o.nonFixing):n:l,e,r.schemes),p=u&&o?o.fixing(u):u;if(p){let d=Fs(e,t,r,p);return L(d,n,r.schemes)||r.sink.report(b.notAssignable(e,d,n,r.schemes)),A(r,e,d,t),a?d:i(n)}break}case "ConditionalExpression":{let u=e;Us(u.test,u.consequent,D(u.test,t,r),r);let p=_e(u.test,t,r.schemes,r.keyOf),d=r.unreachable.value;r.unreachable.value=d||on(u.test);let y=je(u.consequent,n,te(t,p.then),r,a);r.unreachable.value=d||Re(u.test);let m=je(u.alternate,n,te(t,p.else),r,a);return r.unreachable.value=d,A(r,e,a?C([y,m]):n,t)}case "Placeholder":return A(r,e,i(n),t)}let c=D(e,t,r,o?j(n,o.outer):n);return L(c,n,r.schemes)||r.sink.report(b.notAssignable(e,c,n,r.schemes)),A(r,e,c,t)}function Fs(e,n,t,r){if(t.skipContextSensitive){if(De(e))return Un;t={...t,skipContextSensitive:void 0};}let a=!e.async&&vs(e,t),o=t.flow.size?new Map(t.flow):null,s=o?te(n,Object.fromEntries(o)):n;o&&t.flow.clear();let i=!vs(e,t);i&&t.fnDepth.value++;let l=t.unreachable.value,c=l&&!a?ys(s,t.schemes):s;a||(t.unreachable.value=false),t.jumps.push(null);try{return Im(e,c,t,r)}finally{t.jumps.pop(),t.unreachable.value=l,i&&t.fnDepth.value--;let u=a?Cm(e,s,t):null;if(t.flow.clear(),o)for(let[p,d]of o)t.flow.set(p,d);if(u)for(let[p,d]of u)an(n,p,t.schemes)!==void 0&&sn(p,d,t);}}function Cm(e,n,t){let r=e.body;return r.type!=="BlockStatement"?new Map(t.flow):kn(r,n,t).types}function $s(e,n,t){let r=s=>{let i=I(s,t);return i.t==="fn"&&!Rm(i,n)?i:void 0},a=I(e,t);if(a.t!=="union")return r(a);let o;for(let s of a.of){let i=r(s);if(i)if(!o)o=[i];else if(jm(o[0],i,t))o.push(i);else return}if(o)return o.length===1?o[0]:f.fn([...o[0].params],C(o.map(s=>s.returns)),o[0].typeParams)}function Rm(e,n){let t=0;for(let r of n.params){if(r.type==="AssignmentPattern"||r.type==="RestElement"||r.optional)break;t++;}return !e.params.some(r=>r.variadic)&&e.params.length<t}function jm(e,n,t){return e.params.length!==n.params.length||(e.typeParams?.length??0)!==(n.typeParams?.length??0)?false:e.params.every((r,a)=>{let o=n.params[a];return !!r.optional==!!o.optional&&!!r.variadic==!!o.variadic&&Ze(r.type,o.type,t)})}function Im(e,n,t,r){let a=r?$s(r,e,t.schemes):void 0,o=a?.typeParams?.length&&e.params.some(E=>!us(E))?a.typeParams:void 0,s=ya(e)??o,i=E=>s?{...E,typeParams:s}:E,l={},c=vs(e,t),u=e.params.map((E,x)=>{let R=E,J=Object.keys(l).length?vn(n,l,t,e):n,re=a?Tt(a,x):void 0;if(R.type==="RestElement"){let _=R.argument,H=Ar(_,J,t),le=ze(_);!H&&!a&&!c&&le&&t.sink.report(b.implicitAny.rest(R,le));let ae=H??(a?Bt(a,x):f.array(f.any));return le?(Gn(le,_,t),v(l,le,ae)):Bn(_,ae,l,J,t,{annotated:H!==void 0,mutable:true,declaration:e}),t.overlay.set(_,{type:ae,scope:J}),t.overlay.set(R,{type:ae,scope:J}),{name:le??`arg${x}`,type:ae,variadic:true}}if(R.type==="AssignmentPattern"){let _=R.left,H=Ar(_,J,t),le=H??re;dy(R,le??f.unknown,l,J,t,{annotated:H!==void 0,mutable:true,declaration:e});let ae=ze(_),Le=ae?w(l,ae):void 0,N=le??Le??f.unknown,W=N.t==="unknown"?N:C([N,f.undefined]);return ae&&Le&&v(l,Nn(ae),Le),t.overlay.set(R,{type:W,scope:J}),{name:ae??`arg${x}`,type:W,optional:true}}let ne=ze(R),g=Ar(R,J,t),k=g===void 0&&re===void 0&&!c;k&&ne&&t.sink.report(b.implicitAny.parameter(R,ne));let T=g??re??(k&&R.type!=="Identifier"?Ws(R,J,t):f.any),V=R.type==="Identifier"&&(!!R.optional||g===void 0&&!!a?.params[x]?.optional),K=V&&T.t!=="unknown"?C([T,f.undefined]):T;return ne?(Gn(ne,R,t),v(l,ne,K),v(l,Nn(ne),K)):R.type!=="Identifier"&&Bn(R,T,l,J,t,{annotated:g!==void 0,mutable:true,declaration:e}),t.overlay.set(R,{type:K,scope:J}),V?{name:ne??`arg${x}`,type:K,optional:true}:{name:ne??`arg${x}`,type:T}}),p=false;u.forEach((E,x)=>{E.optional?p=true:!E.variadic&&p&&t.sink.report(b.requiredAfterOptional(e.params[x]));});let d=vn(n,l,t,e),y=e.body,m=Tm(e,n,t),h=e.returnGuard,S=h?{param:h.param,type:zt(h.type,n,t,e,true)}:void 0;if(S){let E=u[S.param];E&&!L(S.type,E.type,t.schemes)&&t.sink.report(b.notAssignable(e,S.type,E.type,t.schemes));}let B=E=>S?{...E,guard:S}:E;if(y.type!=="BlockStatement"&&m){let E=e.async?mt(m):m;je(y,E,d,t);let x=e.async?vr(m):m;return A(t,e,B(i({t:"fn",params:u,returns:x})),n)}let M=m??a?.returns,O=M&&e.async?mt(M):M,F=y.type==="BlockStatement"?A(t,y,cu(y,d,t,O),d):D(y,d,t),$=e.async?vr(F):F;if(m){let E=e.async?mt(m):m,x=e.async?F:$;L(x,E,t.schemes)||t.sink.report(b.notAssignable(y,$,m,t.schemes));let R=e.async?vr(m):m;return A(t,e,B(i({t:"fn",params:u,returns:R})),n)}return A(t,e,i({t:"fn",params:u,returns:Qe(nt($))}),n)}function Lt(e){switch(e.type){case "Identifier":return [e];case "ObjectPattern":return e.properties.flatMap(n=>n.type==="RestElement"?Lt(n.argument):Lt(n.value));case "ArrayPattern":return e.elements.flatMap(n=>n?n.type==="RestElement"?Lt(n.argument):Lt(n):[]);case "AssignmentPattern":return Lt(e.left);default:return []}}function iu(e){if(e.type==="VariableDeclaration")return e.declarations.flatMap(n=>Lt(n.id));if(e.type==="FunctionDeclaration"){let n=e.id;return n?[n]:[]}return e.type==="ExportNamedDeclaration"&&e.declaration?iu(e.declaration):[]}var lu=Object.freeze({t:"undefined"}),hc=e=>e===lu;function cu(e,n,t,r){let{returns:a}=Cr(e.body,n,t,r),o=!Me(e,Nt(t))||a.some(hc),s=a.filter(i=>!hc(i));return s.length===0?o?f.void:f.union([]):C(o?[...s,f.undefined]:s)}var uu=(e,n)=>Ve(e)?void 0:we(n,Nn(e)),pu=new WeakMap,Fm=(e,n)=>{let t=Object.freeze({t:"undefined"});return pu.set(t,{node:e,depth:n.fnDepth.value}),t},du=new WeakMap,fu=(e,n)=>{let t=Object.freeze({t:"undefined"});return du.set(t,{declared:e,depth:n.fnDepth.value}),t};function mu(e,n){let t=I(e,n.schemes);return t.t==="any"||t.t==="unknown"||t.t==="void"?false:!bn(t).some(r=>r.t==="undefined")}function $m(e,n,t){let r=Ul(t,e,ga(e)),a=r&&du.get(r);if(a)return bn(n).some(o=>o.t==="undefined")?a:void 0}function Vm(e,n,t,r){let a=we(t,Tr(n)),o=a&&pu.get(a);if(!o||o.depth>=r.fnDepth.value)return false;let s=e.name;return r.sink.report(b.implicitAny.evolving(o.node,s)),r.sink.report(b.implicitAny.variable(e,s)),true}var wa=(e,n,t)=>!Ve(e)&&(t.evolving.has(e)||we(n,Nn(e))!==void 0);function Ta(e,n,t,r,a,o){if(n)return $e(r);if(o.evolving.has(e))return En(t);let s=uu(e,a);return s===void 0?t:s.t==="union"||s.t==="boolean"?ka(s,t,o.schemes):s}function sn(e,n,t){if(t.unreachable.value)return;let r=e+".";for(let a of t.flow.keys())a.startsWith(r)&&t.flow.delete(a);t.flow.set(e,n);}var ja=(e,n)=>n.flow.size?n.flow.get(e):void 0;function Lm(e,n){let t={...e};for(let r of Object.keys(e)){if(r.endsWith("#"))continue;let a=w(e,Nn(r))??w(e,r);mu(a,n)&&(v(t,r,C([w(e,r),f.undefined])),v(t,ga(r),fu(a,n)));}return t}var Sc=(e,n,t)=>ja(e,t)??an(n,e,t.schemes);function Wm(e,n){for(let t=e.jumps.length-1;t>=0;t--){let r=e.jumps[t];if(r===null)return;if(!n||r.loop)return r}}function Ns(e,n,t){e.jumps.push(n);try{return t()}finally{e.jumps.pop();}}function Ea(e,n){let t=new Map(e.flow),r=n(),a=new Map;for(let[o,s]of e.flow)t.get(o)!==s&&a.set(o,s);e.flow.clear();for(let[o,s]of t)e.flow.set(o,s);return {value:r,effect:a}}function gc(e,n){let t=new Set;for(let r of e)if(r.effect)for(let a of r.effect.keys())t.add(a);for(let r of t){let a=[];for(let o of e){let s=o.effect?.get(r)??n.flow.get(r)??an(o.scope,r,n.schemes);s!==void 0&&a.push(s);}a.length&&sn(r,C(a),n);}}function yu(e,n){if(e.type!=="Identifier")return false;let t=Je(n.bounds,e),r=t&&Ot(t,e);if(!r){let s=e.name;return n.envNamespaces.byPath.get(s)?.some(i=>i.instantiated)?(n.sink.report(b.assignToConst(e,s,"not-a-variable")),n.invalidTargets.add(e),true):false}let a=r&&ta(r);if(!a||a.flags&(Pn.FunctionScopedVariable|Pn.BlockScopedVariable|Pn.Alias))return false;let o=e.name;return n.sink.report(b.assignToConst(e,o,"not-a-variable")),n.invalidTargets.add(e),true}function Vs(e,n,t){if(e.type==="MemberExpression"){let r=A(t,e,Kc(e,n,t,true),n);return Oa(e,t,"write")&&t.invalidTargets.add(e),r}if(e.type==="Identifier"){let r=t.keyOf(e);if(Et(r)&&Lc(e,t))return A(t,e,f.any,n);if(yu(e,t))return A(t,e,f.any,n);let a=uu(r,n);if(a!==void 0)return A(t,e,a,n);if(t.evolving.has(r)){let o=ja(r,t)??we(n,r);if(o!==void 0)return A(t,e,o,n)}}return D(e,n,t)}function Oa(e,n,t){let r=n.overlay.get(e.object)?.type;if(!r)return false;let a=Um(e,n);if(!a)return false;let o=false,s=false;for(let i of a){let l=vo(r,i,n.schemes);if(l==="property"){if(o=true,t==="delete"){n.sink.report(b.readonlyDelete(e));break}n.sink.report(b.readonlyProperty(e.property,"name"in i?i.name:""));}else l==="index"&&!s&&(s=true,n.sink.report(b.readonlyWrite(e,r)));}return o&&t==="write"}function Um(e,n){let t=e.property;if(!e.computed)return [{name:t.name,element:false}];let r=n.overlay.get(t)?.type;if(!r)return null;let a=r.t==="union"?r.of:[r],o=[];for(let s of a)if(s.t==="literal"&&typeof s.value!="boolean")o.push({name:String(s.value),element:true});else if(s.t==="string"||s.t==="number")o.push({base:s.t});else return null;return o}function bc(e,n,t){if(yu(e,t))return A(t,e,f.any,n);let r=D(e,n,t),a=$e(r);return a===r?r:A(t,e,a,n)}function St(e,n,t,r){switch(e.type){case "ArrayExpression":{let a=Ia(n,e,r);e.elements.forEach((o,s)=>{if(!o)return;let i=o;if(i.type==="SpreadElement")St(i.argument,Mu(n,s,a,r.schemes),t,r);else {let l=Nc(i),c=wu(n,s,l?i.left:i,l,a,r);St(i,l?Oe(c).type:c,t,r);}});return}case "ObjectExpression":{let a=[];for(let o of e.properties){let s=o;if(s.type==="SpreadElement"){St(s.argument,n.t==="any"?f.any:Ls(n,a,r.schemes),t,r);continue}let i=gn(s);i!=null&&a.push(i),St(s.value,i!=null?ku(n,i,s.key,r):f.any,t,r);}return}default:{if(Nc(e)){D(e,t,r),St(e.left,n,t,r);return}let a=Vs(e,t,r);!r.invalidTargets.has(e)&&!hu(e,r)&&!L(n,a,r.schemes)&&r.sink.report(b.notAssignable(e,n,a,r.schemes)),Su(e,n,a,t,r);}}}var Nc=e=>e.type==="AssignmentExpression"&&e.operator==="=",hu=(e,n)=>e.type==="Identifier"&&n.evolving.has(n.keyOf(e));function Su(e,n,t,r,a){let o=Ee(e,a.keyOf);o!==null&&wa(o,r,a)?sn(o,Ta(o,false,n,t,r,a),a):o!==null&&Ve(o)&&sn(o,t,a);}function Km(e,n,t,r,a){if(e==="ForOfStatement"){St(n,t,r,a);return}if(n.type==="ArrayExpression"||n.type==="ObjectExpression"){a.sink.report(b.forInDestructuring(n));return}let o=Vs(n,r,a);!a.invalidTargets.has(n)&&!hu(n,a)&&!L(zm(t,a),o,a.schemes)&&a.sink.report(b.forInTarget(n)),Su(n,f.string,o,r,a);}function zm(e,n){let t=ke(f.keyof(e),n.schemes),a=(t.t==="union"?t.of:[t]).filter(o=>o.t==="string"||o.t==="literal"&&typeof o.value=="string");return a.length?f.union(a):f.string}function _m(e,n,t,r){let a=e.right,o=D(a,t,r);return Du(e.operator.slice(0,-1),n,o,e,e.left,a,r)}var Ge=new Map,Bc={types:Ge,exits:true},Nt=e=>n=>e.switches.get(n)?.exhaustive===true,ht={breaks:[],continues:[]},Aa=(e,n)=>n.size?te(e,Object.fromEntries(n)):e;function Kt(e,n,t){if(e.length===1)return e[0];let r=new Set;for(let o of e)for(let s of o.keys())r.add(s);let a=new Map;for(let o of r){let s=an(n,o,t.schemes),i=[];for(let l of e){let c=l.get(o)??s;if(c===void 0)break;i.push(c);}i.length===e.length&&a.set(o,C(i));}return a}function qm(e,n,t,r){let a=new Map(Object.entries(e));if(!n)return a;for(let o of new Set([...a.keys(),...n.keys()])){let s=an(t,o,r.schemes),i=a.get(o)??s,l=n.get(o)??s;i&&l?a.set(o,C([i,l])):l&&a.set(o,l);}return a}function Dr(e,n,t,r){let a=n,o=[],s=[];for(let i of e){let l=Er(i,a,t,r);if(o.push(...l.breaks),s.push(...l.continues),a=l.end,!a)break}return {end:a,breaks:o,continues:s}}function Er(e,n,t,r){switch(e.type){case "BreakStatement":return {end:null,breaks:[n],continues:[]};case "ContinueStatement":return {end:null,breaks:[],continues:[n]};case "BlockStatement":return Dr(e.body,n,t,r);case "IfStatement":{let a=e,o=on(a.test)?{end:null,...ht}:Er(a.consequent,n,t,r),s=Re(a.test)?{end:null,...ht}:a.alternate?Er(a.alternate,n,t,r):{end:n,...ht},i=[o.end,s.end].filter(l=>l!==null);return {end:i.length?Kt(i,t,r):null,breaks:[...o.breaks,...s.breaks],continues:[...o.continues,...s.continues]}}case "TryStatement":{let a=e,o=[Er(a.block,n,t,r)];a.handler&&o.push(Er(a.handler.body,n,t,r));let s=o.map(c=>c.end).filter(c=>c!==null),i=o.flatMap(c=>c.breaks),l=o.flatMap(c=>c.continues);if(a.finalizer){let c=kn(a.finalizer,Aa(t,n),r);if(c.exits)return {end:null,...ht};let u=p=>{if(!c.types.size)return p;let d=new Map(p);for(let[y,m]of c.types)d.set(y,m);return d};s=s.map(u),i=i.map(u),l=l.map(u);}return {end:s.length?Kt(s,t,r):null,breaks:i,continues:l}}case "SwitchStatement":{let a=r.switches.get(e),o=s=>{if(!s.size)return n;let i=new Map(n);for(let[l,c]of s)i.set(l,c);return i};return {end:Me(e,Nt(r))?null:o(a?.after??Ge),breaks:[],continues:(a?.continues??[]).map(o)}}default:{let a=kn(e,Aa(t,n),r);if(a.exits)return {end:null,...ht};if(!a.types.size)return {end:n,...ht};let o=new Map(n);for(let[s,i]of a.types)o.set(s,i);return {end:o,...ht}}}}function Gm(e,n,t){let r=t.switches.get(e);if(!r||!r.after.size||Me(e,Nt(t)))return n;let a=te(n,Object.fromEntries(r.after));for(let o of r.after.keys())Ve(o)||(a=hs(a,o,t.schemes));return a}function kn(e,n,t){switch(e.type){case "BlockStatement":{let r=Ge,a=n;for(let o of e.body){let s=kn(o,a,t);if(s.types.size){let i=new Map(r);for(let[l,c]of s.types)i.set(l,c);r=i,a=te(a,Object.fromEntries(s.types));}if(s.exits)return {types:r,exits:true}}return {types:r,exits:false}}case "IfStatement":return {types:bu(e,n,t),exits:_n(e,Nt(t))};case "BreakStatement":case "ContinueStatement":return {types:Ge,exits:true};case "SwitchStatement":return {types:t.switches.get(e)?.after??Ge,exits:Me(e,Nt(t))};case "ReturnStatement":case "ThrowStatement":return {types:Ge,exits:true};case "TryStatement":{let r=e,a=[],o=kn(r.block,n,t);if(o.exits||a.push(o),r.handler){let i=kn(r.handler.body,n,t);i.exits||a.push(i);}let s=gu(a,n,t);if(r.finalizer){let i=s.size?te(n,Object.fromEntries(s)):n,l=kn(r.finalizer,i,t);if(l.types.size){let c=new Map(s);for(let[u,p]of l.types)c.set(u,p);s=c;}}return {types:s,exits:Me(e,Nt(t))}}default:return {types:t.stmtFlow.get(e)??Ge,exits:false}}}function gu(e,n,t){let r=new Set;for(let o of e)for(let s of o.types.keys())r.add(s);if(!r.size)return Ge;let a=new Map;for(let o of r){let s=an(n,o,t.schemes),i=[];for(let l of e){let c=l.types.get(o)??s;c!==void 0&&i.push(c);}i.length&&s!==void 0&&a.set(o,C(i));}return a}function bu(e,n,t){let r=on(e.test)?Bc:kn(e.consequent,n,t),a=Re(e.test)?Bc:e.alternate?kn(e.alternate,n,t):{types:Ge,exits:false};if(!r.types.size&&!a.types.size)return Ge;let o=[r,a].filter(s=>!s.exits);return o.length?gu(o,n,t):Ge}var Jm=5;function kc(e,n,t,r,a){let o=new Map(t.flow),s=new Map,i=n,l=null;for(let y=0;y<Jm;y++){let m=he(),h={...t,sink:m},S=a(i,h);vc(e,o,t);let B=Dr([e],new Map,i,h),M=B.end?[B.end,...B.continues]:B.continues,O=new Map(M.length?Kt(M,i,h):Ge);for(let[$,E]of t.flow)o.get($)!==E&&O.set($,E);if(wc(o,t),!O.size){for(let $ of m.all)t.sink.report($);l=S;break}let F={};for(let[$,E]of O){let x=an(i,$,t.schemes);if(x===void 0||E===x)continue;let R=C([x,E]);Ze(R,x)||(v(F,$,R),s.set($,R));}if(!Object.keys(F).length){for(let $ of m.all)t.sink.report($);l=S;break}i=te(i,F);}let c=l??a(i,t);vc(e,o,t),wc(o,t);let u=Dr([e],new Map,i,t),p=[...u.breaks];if(r==="head"?p.push(new Map):r==="body-end"&&(u.end&&p.push(u.end),p.push(...u.continues)),!p.length)return {returns:c,head:i};let d=new Map(s);for(let[y,m]of Kt(p,i,t))d.set(y,m);for(let[y,m]of d)sn(y,m,t);return {returns:c,head:i}}function vc(e,n,t){if(e.type==="BlockStatement")return;let r=new Map;for(let[a,o]of t.flow)n.get(a)!==o&&r.set(a,o);r.size&&t.stmtFlow.set(e,r);}function wc(e,n){n.flow.clear();for(let[t,r]of e)n.flow.set(t,r);}function Xm(e,n,t){let r=kn(e,n,t);return r.exits||!r.types.size?n:te(n,Object.fromEntries(r.types))}function Cr(e,n,t,r,a){if(!Hm(e))return Tc(e,n,t,r,a);let o=new Set(t.evolving);try{return Tc(e,n,t,r,a)}finally{t.evolving.clear();for(let s of o)t.evolving.add(s);}}function Hm(e){for(let n of e){let t=n;if(t.type==="VariableDeclaration"&&t.kind!=="const")return true;if(t.type==="ExportNamedDeclaration"){let r=t.declaration;if(r?.type==="VariableDeclaration"&&r.kind!=="const")return true}}return false}function Tc(e,n,t,r,a){let o=n,s=[],i=a?.aliases??[],l=false;for(let c of e){let u=c;t.ambient.value&&!l&&!Zm(u)&&(t.sink.report(b.ambient.statement(u)),l=true);let p=u.type==="ExportNamedDeclaration"?u.declaration:u;if(p?.type==="TSTypeAliasDeclaration"&&Nu(p,o,t,i),u.type==="VariableDeclaration")o=xa(u,o,t);else if(u.type!=="ImportDeclaration")if(u.type==="TSModuleDeclaration")o=Rr(u,o,t,i);else if(u.type==="ExportNamedDeclaration"&&u.declaration?.type==="TSModuleDeclaration")o=Rr(u.declaration,o,t,i);else if(u.type==="ExportNamedDeclaration"){let d=u;if(d.declaration?.type==="VariableDeclaration")o=xa(d.declaration,o,t);else if(d.declaration?.type==="FunctionDeclaration"){let y=D(d.declaration,o,t),m=d.declaration.id,h=ze(m);h&&(o=vn(o,{[h]:y},t,m));}else for(let y of d.specifiers){let m=t.keyOf(y.local);!Et(m)&&we(o,m)===void 0&&t.sink.report(b.unknownName(y.local,y.local.name));}}else if(u.type==="ExportDefaultDeclaration")D(u.declaration,o,t);else if(u.type==="FunctionDeclaration"){let d=D(u,o,t),y=u.id,m=ze(y);m&&(o=vn(o,{[m]:d},t,y));}else if(u.type==="IfStatement"){let d=u;s.push(...qe(u,o,t,r));let y=bu(d,o,t);y.size&&(o=te(o,Object.fromEntries(y))),!d.alternate&&_n(d.consequent,Nt(t))&&(o=te(o,_e(d.test,o,t.schemes,t.keyOf).else));}else s.push(...qe(u,o,t,r)),u.type==="BlockStatement"||u.type==="TryStatement"?o=Xm(u,o,t):u.type==="SwitchStatement"&&(o=Gm(u,o,t));o=ry(u,o,t),a&&(o=a.declared(u,o)),i.length&&Ec(i,o,t,false);}return !a&&i.length&&Ec(i,o,t,true),{scope:o,returns:s}}function Rr(e,n,t,r){A(t,e,f.unknown,n);let a=t.namespaces.byNode.get(e);if(!a)return n;if(a.instantiated)return Qm(e,a,n,t,r);let o=e.body;if(o.type==="TSModuleDeclaration")return Rr(o,n,t,r);A(t,o,f.unknown,n);for(let s of o.body){let i=s.type==="ExportNamedDeclaration"?s.declaration:s;i!==s&&A(t,s,f.unknown,n),i.type==="TSTypeAliasDeclaration"?(Nu(i,n,t,r),D(i,n,t)):i.type==="TSModuleDeclaration"&&Rr(i,n,t,r);}return n}function Qm(e,n,t,r,a){let o=e,s=Je(r.bounds,e),i=s?.symbolOf(o.id);if(!s||!i)return t;let l=xr(i),c=r.namespaceMembers.get(l)??new Map;r.namespaceMembers.set(l,c);let u=o.id.name,p=$=>{let E={};for(let[x,R]of c)v(E,x,{type:R.type,...R.readonly?{readonly:true}:{}});return vn($,{[u]:f.object(E)},r,o.id)},d=o.body.type==="TSModuleBlock"?o.body.body:[],y=ey(s,i,u,o.body),m=new Map;d.forEach(($,E)=>{E+1<d.length&&m.set($,d[E+1]);});let h=false,S=($,E)=>{for(let R of Ym($)){let J=s.localSymbolOf(R)&&s.symbolOf(R);if(!J||!(J.flags&ir.Value))continue;let re=R.name,ne=xr(J),g=ba(E,ne);g===void 0||c.has(re)||(c.set(re,{key:ne,type:g,readonly:s.declarationOf(R)?.kind==="const"}),h=true);}let x=m.get($);return !h||!x||!y.has(x)?E:(h=false,p(E))},B=r.flow.size?new Map(r.flow):null,M=B?te(t,Object.fromEntries(B)):t;B&&r.flow.clear();let O=r.unreachable.value,F=r.ambient.value;r.unreachable.value=false,n.ambient&&(r.ambient.value=true),r.fnDepth.value++,r.jumps.push(null);try{let $=ys(M,r.schemes);if(c.size){let E={};for(let x of c.values())v(E,x.key,x.type);$=hn($,E);}$=p($),o.body.type==="TSModuleDeclaration"?S(o.body,Rr(o.body,$,r,a)):(A(r,o.body,f.unknown,$),Cr(o.body.body,$,r,void 0,{aliases:a,declared:S}));}finally{if(r.jumps.pop(),r.fnDepth.value--,r.ambient.value=F,r.unreachable.value=O,r.flow.clear(),B)for(let[$,E]of B)r.flow.set($,E);}return p(t)}function Ym(e){let n=e.type==="ExportNamedDeclaration"?e.declaration??e:e;return n.type==="VariableDeclaration"?Mo(n):n.type==="TSModuleDeclaration"?[n.id]:[]}var Zm=e=>e.type==="VariableDeclaration"||e.type==="TSTypeAliasDeclaration"||e.type==="TSModuleDeclaration"||e.type==="ExportNamedDeclaration"||e.type==="ImportDeclaration"||e.type==="FunctionDeclaration";function ey(e,n,t,r){let a=new Set;if(r.type!=="TSModuleBlock")return a;for(let o of e.references){if(o.name!==t||Ot(e,o)!==n)continue;let s=o,i=e.parentOf(s);for(;i&&i!==r;)s=i,i=e.parentOf(s);i===r&&a.add(s);}for(let o of r.body)!a.has(o)&&ny(o,t)&&a.add(o);return a}function ny(e,n){let t=a=>{if(Array.isArray(a))return a.some(t);if(!a||typeof a!="object")return false;let o=a;return o.t==="typeQuery"&&Array.isArray(o.path)&&o.path[0]===n?true:Object.keys(o).some(s=>t(w(o,s)))},r=false;return ast.walk(e,{"*":a=>{let o=a;return r=t(w(o,"typeAnnotation"))||t(w(o,"returnType"))||t(w(o,"typeArguments")),r?"break":void 0}}),r}function Nu(e,n,t,r){let a=e.id,o=Ic(e,t);if(!a||!o||!t.programAliases.has(o)||t.resolvedSchemes.has(o))return;let s=ty(o,t.schemes,t.programAliases),i={name:o,roots:s,at:a};Bu(s,n,t,i.at)?jr(o,n,t,i.at):r.push(i);}function Ec(e,n,t,r){for(let a=e.length-1;a>=0;a--){let o=e[a];t.resolvedSchemes.has(o.name)?e.splice(a,1):(r||Bu(o.roots,n,t,o.at))&&(e.splice(a,1),jr(o.name,n,t,o.at));}}var Bu=(e,n,t,r)=>{for(let a of e)if(we(n,Vc(t,r,a))===void 0)return false;return true};function ty(e,n,t){let r=new Set,a=new Set,o=i=>{if(Array.isArray(i)){for(let c of i)o(c);return}if(!i||typeof i!="object")return;let l=i;if(l.t==="typeQuery"){let c=l.path;c.length&&r.add(c[0]);return}l.t==="apply"&&typeof l.name=="string"&&t.has(l.name)&&s(l.name);for(let c of Object.values(l))o(c);},s=i=>{if(a.has(i))return;a.add(i);let l=w(n,i);l&&o(l.body);};return s(e),r}function ry(e,n,t){if(!t.flow.size)return n;let r=new Map(t.flow);t.flow.clear(),t.stmtFlow.set(e,r);let a=te(n,Object.fromEntries(r));for(let o of r.keys())Ve(o)||(a=hs(a,o,t.schemes));return a}function qe(e,n,t,r){switch(e.type){case "ReturnStatement":{let a=e.argument,o=a?r?(je(a,r,n,t),r):D(a,n,t):lu;return A(t,e,a?o:f.undefined,n),t.unreachable.value=true,[o]}case "IfStatement":{let a=e;Us(a.test,a.consequent,D(a.test,n,t),t);let o=_e(a.test,n,t.schemes,t.keyOf),s=(u,p)=>{if(u.type==="BlockStatement")return qe(u,p,t,r);let{value:d,effect:y}=Ea(t,()=>qe(u,p,t,r));return y.size&&t.stmtFlow.set(u,y),d},i=t.unreachable.value;t.unreachable.value=i||on(a.test);let l=s(a.consequent,te(n,o.then)),c=t.unreachable.value;return t.unreachable.value=i||Re(a.test),a.alternate&&l.push(...s(a.alternate,te(n,o.else))),t.unreachable.value=c&&t.unreachable.value,A(t,e,f.unknown,n),l}case "BlockStatement":{let{returns:a}=Cr(e.body,n,t,r);return A(t,e,a.length?C(a):f.void,n),a}case "ForStatement":case "WhileStatement":case "DoWhileStatement":{let a=e,o=n;a.init&&(a.init.type==="VariableDeclaration"?o=xa(a.init,o,t):D(a.init,o,t));let s=Re(a.test)?"breaks":e.type==="DoWhileStatement"?"body-end":"head",i=t.unreachable.value,l={loop:true,breaks:false,continues:false},c=i,{returns:u}=Ns(t,l,()=>kc(a.body,o,t,s,(d,y)=>{if(l.breaks=l.continues=!1,y.unreachable.value=i,e.type==="DoWhileStatement"){let m=qe(a.body,d,y,r),h=Dr([a.body],new Map,d,y),S=h.end?[h.end,...h.continues]:h.continues;return c=i||y.unreachable.value&&!l.continues,y.unreachable.value=c,a.test&&D(a.test,S.length?Aa(d,Kt(S,d,y)):d,y),m}return a.test&&D(a.test,d,y),y.unreachable.value=i||on(a.test),a.update&&D(a.update,d,y),qe(a.body,d,y,r)})),p=!Re(a.test)&&!c;return t.unreachable.value=i||!(p||l.breaks),A(t,e,f.unknown,n),u}case "ForOfStatement":case "ForInStatement":{let a=e,o=D(a.right,n,t),s,i;if(e.type==="ForOfStatement"){if(Ca(o,a.right,t))s=f.any;else {let h=bt(o);h&&t.sink.report(b.possiblyNullish(a.right,h)),s=h?Pr(o):o;}i=Ia(s,a.right,t);}else s=bt(o)?Pr(o):o,ay(s,t.schemes)||t.sink.report(b.forInNotObject(a.right,s)),i=f.string;let l=a.left.type==="VariableDeclaration",c=l?Al(a.left):null;c&&Gn(c,ls(a.left),t);let u=e.type==="ForInStatement"&&l?Ee(a.right,t.keyOf):null,p=u!==null&&bt(o)?te(n,{[u]:s}):n,d=c?vn(p,{[c]:i},t,ls(a.left)):p,y=t.unreachable.value,{returns:m}=Ns(t,{loop:true,breaks:false,continues:false},()=>kc(a.body,d,t,"head",(h,S)=>(S.unreachable.value=y,l||Km(e.type,a.left,e.type==="ForOfStatement"?i:s,h,S),qe(a.body,h,S,r))));return t.unreachable.value=y,A(t,e,f.unknown,n),m}case "BreakStatement":case "ContinueStatement":{if(A(t,e,f.unknown,n),!t.unreachable.value){let a=Wm(t,e.type==="ContinueStatement");a&&(e.type==="BreakStatement"?a.breaks=true:a.continues=true);}return t.unreachable.value=true,[]}case "ThrowStatement":{let a=e.argument;return a&&D(a,n,t),A(t,e,f.unknown,n),t.unreachable.value=true,[]}case "TryStatement":{let a=e,o=t.unreachable.value,s=qe(a.block,n,t,r),i=!t.unreachable.value;if(a.handler){t.unreachable.value=o;let l=a.handler.param,c=l?ze(l):null;c&&l&&Gn(c,l,t);let u=c&&l?vn(n,{[c]:f.any},t,l):n;s.push(...qe(a.handler.body,u,t,r)),i||(i=!t.unreachable.value);}return a.finalizer&&(t.unreachable.value=o,s.push(...qe(a.finalizer,n,t,r)),i&&(i=!t.unreachable.value)),t.unreachable.value=o||!i,A(t,e,f.unknown,n),s}case "SwitchStatement":{let a=e,o=D(a.discriminant,n,t),s=a.cases.map(E=>E.test?D(E.test,n,t):null);a.cases.forEach((E,x)=>{let R=s[x];E.test&&R&&By(o,R,E.test,t);});let i=a.cases.some(E=>!E.test),l=a.discriminant,c=!i&&Zl(a,o,s,l.type==="UnaryExpression"&&l.operator==="typeof"?t.overlay.get(l.argument)?.type:void 0,t.schemes),u=n,p=null,d=[],y=[],m=[],h=new Set(a.cases.flatMap(E=>E.consequent.flatMap(x=>iu(x).map(R=>Da(t,R,R.name))))),S=t.unreachable.value,B={loop:false,breaks:false,continues:false};Ns(t,B,()=>{for(let E=0;E<a.cases.length;E++){t.unreachable.value=S;let x=E;for(;!a.cases[E].consequent.length&&E+1<a.cases.length;)E++;let R=bs(a,s,x,E+1,n,t.schemes,t.keyOf),J=qm(R,p,n,t),re=Cr(a.cases[E].consequent,Aa(u,J),t,r);m.push(...re.returns);let ne=ec(re.scope,n);u=Object.keys(ne).length?hn(n,Lm(ne,t)):n;let g=Dr(a.cases[E].consequent,J,n,t);d.push(...g.breaks),y.push(...g.continues),p=g.end;}});let M=a.cases.length>0&&t.unreachable.value;t.unreachable.value=S||i&&M&&!B.breaks;let O=[...d];p&&O.push(p),!i&&!c&&O.push(new Map(Object.entries(bs(a,s,0,0,n,t.schemes,t.keyOf))));let F=new Map;if(O.length)for(let[E,x]of Kt(O,n,t))h.has(E.split(".")[0])||F.set(E,x);let $=E=>new Map([...E].filter(([x])=>!h.has(x.split(".")[0])));return t.switches.set(e,{exhaustive:c,after:F,continues:y.map($)}),A(t,e,f.unknown,n),m}default:return D(e,n,t),[]}}function ku(e,n,t,r){if(e.t==="any")return f.any;let a=Pe(e,[n],r.schemes);return a?a.type:(r.sink.report(b.noSuchMember(t,e,n)),f.any)}function ay(e,n){return e.t==="union"&&!e.of.length?false:e.t==="var"||e.t==="nonPrimitive"?true:L(e,f.nonPrimitive,n)}function oy(e,n){let t=I(e,n);if(t.t==="any")return {elem:f.any,failed:false};let r=t.t==="union"?t.of:[t];if(!r.length)return {elem:null,failed:true};let a=[],o=false;for(let s of r){let i=sy(I(s,n));i===null?o=true:a.push(i);}return {elem:a.length?C(a):null,failed:o}}function sy(e){switch(e.t){case "any":return f.any;case "array":return e.items;case "tuple":return C([...e.elements]);case "string":return f.string;case "literal":return typeof e.value=="string"?f.string:null;default:return null}}var vu=e=>e.t==="array"||e.t==="tuple"||e.t==="union"&&e.of.length>0&&e.of.every(vu);function wu(e,n,t,r,a,o){if(e.t==="any")return f.any;let s=I(e,o.schemes);if(s.t==="tuple"&&Ue(s)<0&&n>=s.elements.length)return r||o.sink.report(b.tupleIndexOutOfRange(t,e,s.elements.length,n)),f.undefined;if(!vu(s))return a;let i=ke(f.index(s,f.literal(n)),o.schemes);return i.t==="index"||un(i)?a:i}function Ia(e,n,t){let r=oy(e,t.schemes);return r.failed&&t.sink.report(b.notIterable(n,e)),r.elem??f.any}function Ls(e,n,t){let r=Ce(e,t),a=(r.t==="union"?r.of:[r]).filter(i=>i.t!=="null"&&i.t!=="undefined");if(!a.length)return f.object({});if(a.length>1)return f.union(a.map(i=>Ls(i,n,t)));let o=a[0];if(o.t!=="object")return o;let s={};for(let i in o.props)n.includes(i)||v(s,i,Au(o.props[i]));return f.object(s,o.index)}function Ma(e,n){let t=I(e,n);switch(t.t){case "any":case "nonPrimitive":case "object":case "array":case "tuple":case "fn":case "overload":case "apply":case "var":case "mapped":case "conditional":case "index":return true;case "intersection":return t.of.every(r=>Ma(r,n));case "union":{let r=t.of.filter(a=>!cy(a));return r.length>0&&r.every(a=>Ma(a,n))}default:return false}}function Tu(e,n,t,r,a){if(Ma(t,a.schemes))return false;a.sink.report(b.notSpreadable.spread(e.properties[n]));let o={...a,sink:he()};for(let s of e.properties.slice(n+1)){let i=s;if(i.type==="SpreadElement"){D(i.argument,r,o);continue}let l=i;l.computed&&D(l.key,r,o),A(o,i,D(l.value,r,o),r);}return true}function Eu(e,n,t,r){if(e.size!==0)for(let[a,o]of Fa(n,r.schemes)){let s=e.get(a);!s||o.optional||Ou(o.type,r.schemes)||r.sink.report(b.overwrittenProperty(s,a,t));}}function Fa(e,n){let t=new Map,r=I(e,n);if(r.t==="object"){for(let[s,i]of Object.entries(r.props))t.set(s,{type:i.type,optional:!!i.optional});return t}if(r.t!=="union"&&r.t!=="intersection")return t;let a=r.of.map(s=>I(s,n)).filter(s=>!(s.t==="union"&&s.of.length===0)),o=[];for(let s of a){for(let i of Fa(s,n).keys())o.includes(i)||o.push(i);if(r.t==="union"&&!(s.t==="object"&&s.index))break}for(let s of o){let i=r.t==="union"?iy(a,s,n):ly(a,s,n);i&&t.set(s,i);}return t}function iy(e,n,t){let r=[],a=false,o=false;for(let s of e){let i=Fa(s,t).get(n);if(i){o=true,a||(a=i.optional),r.push(i.type);continue}let l=Wn(n),c=s.t==="object"&&s.index?s.index.key==="string"||s.index.key==="number"&&l?s.index.value:void 0:s.t==="array"&&l?s.items:void 0;if(c)r.push(c);else if(s.t==="object"&&s.fromLiteral)r.push(f.undefined);else return null}return o?{type:C(r),optional:a}:null}function ly(e,n,t){let r=[],a=true;for(let o of e){let s=Fa(o,t).get(n);s&&(a&&(a=s.optional),r.push(s.type));}return r.length?{type:r.length===1?r[0]:f.intersection(r),optional:a}:null}function Ou(e,n){let t=Ce(e,n);return t.t==="null"||t.t==="undefined"?true:t.t==="union"||t.t==="intersection"?t.of.some(r=>Ou(r,n)):false}var cy=e=>e.t==="null"||e.t==="undefined"||e.t==="void"||e.t==="literal"&&!e.value,Au=e=>{if(!e.readonly)return e;let{readonly:n,...t}=e;return t};function Mu(e,n,t,r){if(e.t==="any")return f.any;let a=I(e,r),o=a.t==="union"?a.of:[a];return o.length&&o.every(s=>s.t==="tuple")?f.union(o.map(s=>uy(s,n))):f.array(t)}function uy(e,n){let t=Ue(e);return t>=0&&n>t?f.tuple([e.elements[t]],["rest"],e.readonly):f.tuple(e.elements.slice(n),e.flags?.slice(n),e.readonly)}function Ws(e,n,t){let r={...t,sink:he()},a=o=>{if(o.type==="AssignmentPattern"){let s=D(o.right,n,r);return {type:Qe(En(s)),optional:true}}return o.type==="ObjectPattern"||o.type==="ArrayPattern"?{type:Ws(o,n,t),optional:false}:(o.type==="Identifier"&&t.sink.report(b.implicitAny.bindingElement(o,o.name)),{type:f.any,optional:false})};if(e.type==="ObjectPattern"){let o={},s;for(let i of e.properties){if(i.type==="RestElement"){s={key:"string",value:f.any};continue}let l=gn(i),{type:c,optional:u}=a(i.value);l!==null&&v(o,l,u?{type:c,optional:u}:{type:c});}return f.object(o,s)}if(e.type==="ArrayPattern"){let o=e.elements,i=o[o.length-1]?.type==="RestElement",l=[],c=[];return o.forEach((u,p)=>{if(!u){l.push(f.any),c.push("req");return}let d=u;if(d.type==="RestElement"){l.push(a(d.argument).type),c.push("rest");return}let{type:y,optional:m}=a(d);l.push(y),c.push(m&&p>=py(o)?"optional":"req");}),!l.length||l.length===1&&i?f.array(f.any):f.tuple(l,c)}return f.any}function py(e){let n=0;return e.forEach((t,r)=>{let a=t;a&&a.type!=="RestElement"&&a.type!=="AssignmentPattern"&&(n=r+1);}),n}function dy(e,n,t,r,a,o){let s=D(e.right,r,a);n.t!=="unknown"&&!L(s,n,a.schemes)&&a.sink.report(b.notAssignable(e.right,s,n,a.schemes));let i=Qe(nt(s)),{type:l}=Oe(n),c=l.t==="unknown"?i:C([l,i]),u=e.left;if(u.type==="Identifier"){let p=u.name;Gn(p,u,a),v(t,p,c),a.overlay.set(u,{type:c,scope:r});}else Bn(u,c,t,r,a,o);}function Bn(e,n,t,r,a,o){switch(e.type){case "Identifier":{let s=Ar(e,r,a)??n;Gn(e.name,e,a),v(t,e.name,s),a.overlay.set(e,{type:s,scope:r});return}case "AssignmentPattern":{let s=e,i=s.right,l=Object.keys(t).length?vn(r,t,a,o.declaration):r,c;if(n.t==="any")D(i,l,a),c=f.any;else if(o.annotated){let u=D(i,l,{...a,sink:he()});c=bn(u).some(p=>p.t==="undefined")?n:Oe(n).type,je(i,c,l,a);}else {let u=D(i,l,a),p=C([Oe(n).type,u]);c=Qe(o.mutable?En(p):p);}Bn(s.left,c,t,r,a,o);return}case "ObjectPattern":{let s=[];for(let i of e.properties){if(i.type==="RestElement"){let p;n.t==="any"?p=f.any:Ma(n,a.schemes)?p=Ls(n,s,a.schemes):(a.sink.report(b.notSpreadable.rest(i.argument)),p=f.any),Bn(i.argument,p,t,r,a,o);continue}let l=i,c=gn(l);c!=null&&s.push(c);let u=c!=null?ku(n,c,l.key,a):f.any;Bn(l.value,u,t,r,a,o);}return}case "ArrayPattern":{let s=Ia(n,e,a);e.elements.forEach((i,l)=>{if(!i)return;let c=i;if(c.type==="RestElement")Bn(c.argument,Mu(n,l,s,a.schemes),t,r,a,o);else {let u=c.type==="AssignmentPattern",p=u?c.left:c;Bn(c,wu(n,l,p,u,s,a),t,r,a,o);}});return}}}function As(e,n,t){let r=u=>{let p=Ce(u,t.schemes);return p.t==="mapped"?I(p,t.schemes):p},a=r(n),o=a.t==="union"?I(a,t.schemes):a,s=o.t==="union"?o.of.map(r):[o],l=(a.t==="union"?su(e,s.filter(u=>u.t==="object"||u.t==="intersection"),u=>t.overlay.get(u.value)?.type,t.schemes,n).chosen:s).filter(u=>u.t==="object"&&(!u.index||u.index.key==="number"));if(!l.length||l.some(u=>Object.keys(u.props).length===0&&!u.index))return false;let c=false;for(let u of e.properties){if(u.type==="SpreadElement")continue;let p=u,d=p.computed?xu(t.overlay.get(p.key)?.type,t):gn(p);if(d===null)continue;l.filter(m=>pe(m.props,d)||m.index?.key==="number"&&Wn(d)).length||(t.sink.report(p.computed?b.excessProperty(p,Pu(p.key,d),n):b.excessProperty(p.key,d,n)),c=true);}return c}var xu=(e,n)=>{let t=e&&Ce(e,n.schemes);return t?.t==="literal"&&(typeof t.value=="string"||typeof t.value=="number")?String(t.value):null};function Pu(e,n){let t=r=>{if(r.type==="Identifier")return r.name;if(r.type==="MemberExpression"){let o=r,s=t(o.object);return s!==null&&!o.computed?`${s}.${o.property.name}`:null}if(r.type==="UnaryExpression"){let o=r,s=t(o.argument);return s!==null?`${o.operator}${s}`:null}if(r.type==="Literal"){let o=r.value;return typeof o=="string"?JSON.stringify(o):typeof o=="number"?String(o):null}let a=tn(r);return a!==null?`\`${a}\``:null};return `[${t(e)??JSON.stringify(n)}]`}function xa(e,n,t){let r=t.ambient.value;e.declare&&(t.ambient.value=true);try{let a=n;for(let o of e.declarations){let s=my(o,e,a,t);Object.keys(s).length&&(a=vn(a,s,t,o));}return A(t,e,f.unknown,n),a}finally{t.ambient.value=r;}}function fy(e,n,t,r){let a=e.init;if(n.kind!=="const"||t){r.sink.report(b.ambient.initializer(a));return}(i=>i.type==="Literal"&&["string","number","boolean"].includes(typeof i.value)||tn(i)!==null)(a)||a.type==="UnaryExpression"&&a.operator==="-"&&a.argument.type==="Literal"&&typeof a.argument.value=="number"||r.sink.report(b.ambient.constInitializer(a));}function my(e,n,t,r){let a={},o=e.id,s=ze(o);s&&Gn(s,o,r);let i=Ar(o,t,r),l=r.ambient.value;if(l&&e.init&&fy(e,n,i,r),!e.init){if(s&&(n.kind!=="const"||l)){let y=Je(r.bounds,o)?.declarationOf(o)?.exported;return !i&&(l||y)?(r.sink.report(b.implicitAny.variable(o,s)),v(a,s,f.any)):i&&l?v(a,s,i):i?(v(a,Nn(s),i),mu(i,r)?(v(a,s,C([i,f.undefined])),v(a,ga(s),fu(i,r))):v(a,s,i)):(v(a,s,f.undefined),r.evolving.add(Da(r,o,s)),v(a,Tr(s),Fm(o,r))),a}return !s&&l?(Bn(o,i??Ws(o,t,r),a,t,r,{annotated:i!==void 0,mutable:n.kind!=="const",declaration:e}),a):(r.sink.report(s?b.constNeedsInit(e):b.destructuringNeedsInit(e)),s&&v(a,s,i??f.unknown),a)}let c=i??(e.init.type==="ArrowFunctionExpression"?Dl(e.init):null),u=s&&c?vn(t,{[s]:c},r,o):t,p,d=null;return i?(je(e.init,i,u,r),p=i,d=i,(i.t==="union"||i.t==="boolean")&&jn(e.init)&&(p=ka(i,zn(e.init),r.schemes))):(p=D(e.init,u,r),n.kind!=="const"&&(p=En(p)),p=Qe(p),d=p),A(r,e,p,t),s?(v(a,s,p),d&&(n.kind!=="const"||p!==d)&&v(a,Nn(s),d)):Bn(o,p,a,t,r,{annotated:i!==void 0,mutable:n.kind!=="const",declaration:e}),a}var yy=["~#","?#","#"];function hy(e,n,t){let r={};for(let a of Object.keys(e)){let o=yy.find(i=>a.endsWith(i))??"",s=a.slice(0,a.length-o.length);v(r,Da(t,n,s)+o,w(e,a));}return r}function vn(e,n,t,r){return hn(e,hy(n,r,t))}function Sy(e,n,t){let r=D(e.left,n,t),a=D(e.right,n,t);return Du(e.operator,r,a,e,e.left,e.right,t)}function Du(e,n,t,r,a,o,s){e==="in"&&(Wt(n,a,s),Wt(t,o,s));let i=pr.get(e);if(!i)return f.boolean;if(i.category==="arithmetic"||i.category==="bitwise"||i.category==="relational"||i.category==="additive"&&!L(n,f.string,s.schemes)&&!L(t,f.string,s.schemes)){let c=Wt(n,a,s),u=Wt(t,o,s);if(i.category==="additive"&&(c.error||u.error)){let p=c.error?u.error?null:u.type:c.type;return p&&qn(p,s.schemes)?f.string:f.any}n=c.type,t=u.type;}if(i.category==="additive"){if(gt(n)||gt(t))return qn(n,s.schemes)||qn(t,s.schemes)?f.string:f.number;if(qn(n,s.schemes)&&qn(t,s.schemes))return f.string;if(Or(n,s.schemes)&&Or(t,s.schemes))return f.number;if(qn(n,s.schemes)||qn(t,s.schemes)){let u=qn(n,s.schemes)?t:n;return s.sink.report(b.implicitCoercion(r,n,t,Ru(u,s.schemes))),f.string}return s.sink.report(b.operatorNotApplicable(r,"+",n,t)),f.number}if(i.category==="arithmetic"||i.category==="bitwise")Or(n,s.schemes)||s.sink.report(b.arithmeticOperand(a,"left")),Or(t,s.schemes)||s.sink.report(b.arithmeticOperand(o,"right"));else if(i.category==="relational"){if(!gt(n)&&!gt(t)){let c=I(n,s.schemes),u=I(t,s.schemes),p=L(c,f.number,s.schemes),d=L(u,f.number,s.schemes);p&&d||!p&&!d&&(L(c,u,s.schemes)||L(u,c,s.schemes))||s.sink.report(b.operatorNotApplicable(r,e,n,t));}}else i.category==="equality"&&gy(e,n,t,r,s);return Ho(i.result)}function gy(e,n,t,r,a){let o=(p,d)=>Ms(p,d,a.schemes)||Ms(d,p,a.schemes);if(o(n,t))return;let s=mt(n),i=mt(t),l=(s!==n||i!==t)&&o(s,i),c=n,u=t;if(!l){let p=$e(n),d=$e(t);o(p,d)||(c=p,u=d);}a.sink.report(b.noOverlap(r,e,c,u,l));}function Us(e,n,t,r){let a=Mr(e)??e;if(a.type!=="Identifier"&&!Mr(a)||gs(t,r.schemes)||!Cu(t,r.schemes))return;let o=Ny(r);if(a.type==="Identifier"&&!o.get(a))return;let s=false;ast.walk(n,{"*":i=>{if(i!==n&&by(a,i,o))return s=true,"break"}}),s||r.sink.report(b.uncalledFunctionCheck(e));}function Mr(e){let n=e.type==="ChainExpression"?e.expression:e;return n.type==="MemberExpression"&&!n.computed?n:void 0}function by(e,n,t){let r=(s,i)=>{let l=t.get(s),c=t.get(i);return !!l&&!!c&&ts(l,c)};if(e.type==="Identifier")return n.type==="Identifier"&&r(e,n);let a=e,o=Mr(n);if(!o)return false;for(;a&&o;){if(a.type==="Identifier"&&o.type==="Identifier")return r(a,o);let s=Mr(a),i=Mr(o);if(!s||!i||s.property.name!==i.property.name)return false;a=s.object,o=i.object;}return false}function Ny(e){if(!e.symbols.map){let n=new WeakMap;for(let t of rs(e.root))t.site==="node"&&n.set(t.node,t.symbol);e.symbols.map=n;}return e.symbols.map}function Cu(e,n){let t=I(e,n);return t.t==="fn"||t.t==="overload"?true:t.t==="union"?t.of.length>0&&t.of.every(r=>I(r,n).t==="fn"):t.t==="intersection"?t.of.some(r=>Cu(r,n)):false}function By(e,n,t,r){let a=c=>c.t==="var"?c:I(c,r.schemes),o=a(e),s=a(n),i=s,l=o;(!Bs(s)||!Bs(o))&&(i=Bs(s)?$e(s):s,l=$e(o)),!Ms(l,i,r.schemes)&&!Ye(i,l,r.schemes)&&r.sink.report(b.notComparable(t,i===s?n:i,l===o?e:l));}var Bs=e=>e.t==="boolean"||Oc(e)||e.t==="union"&&e.of.length>0&&e.of.every(Oc),Oc=e=>e.t==="literal"||e.t==="null"||e.t==="undefined",Ms=(e,n,t)=>n.t==="null"||n.t==="undefined"||Ye(e,n,t),gt=e=>e.t==="any"||e.t==="unknown",Or=(e,n)=>gt(e)||L(I(e,n),f.number,n),qn=(e,n)=>!gt(e)&&L(I(e,n),f.string,n),ky=f.union([f.string,f.number,f.boolean,f.null,f.undefined]),Ru=(e,n)=>gt(e)||L(I(e,n),ky,n),vy={string:f.literal(""),number:f.literal(0),boolean:f.literal(false)},va=e=>e.t==="null"||e.t==="undefined";function wy(e,n,t,r){if(n.t==="any"||n.t==="unknown")return C([n,t]);let a=(n.t==="union"?[...n.of]:[n]).flatMap(s=>s.t==="boolean"?[f.literal(true),f.literal(false)]:[s]);if(e==="??")return a.some(va)?C([...a.filter(s=>!va(s)),t]):n;if(e==="||")return gs(n,r)?C([...a.filter(s=>!va(s)&&!(s.t==="literal"&&!s.value)),t]):n;if(!Jl(n,r))return n;let o=a.flatMap(s=>{if(va(s))return [s];if(s.t==="literal")return s.value?[]:[s];let i=w(vy,s.t);return i?[i]:[]});return C([...o,t])}var Ty=f.union(["string","number","bigint","boolean","symbol","undefined","object","function"].map(e=>f.literal(e)));function Ey(e,n,t){let r=D(e.argument,n,t);switch(e.operator){case "!":return r.t==="literal"?{t:"literal",value:!r.value,fresh:true}:f.boolean;case "-":case "+":case "~":return Wt(r,e.argument,t),e.operator==="-"&&r.t==="literal"&&typeof r.value=="number"?{t:"literal",value:-r.value,fresh:true}:f.number;case "typeof":return Ty;case "delete":{let a=e.argument,o=a.type==="ChainExpression"?a.expression:a;o.type==="MemberExpression"&&Oa(o,t,"delete");}return f.boolean;case "void":return f.undefined;default:return f.unknown}}function Oy(e,n,t){let r={},a,o=[],s=[],i=false,l=false,c=false;ru(e,t);let u=new Map;for(let[d,y]of e.properties.entries()){let m=y;if(m.type==="SpreadElement"){c=true;let O=D(m.argument,n,t);if(Tu(e,d,O,n,t))return f.any;Eu(u,O,m,t);let F=Ce(O,t.schemes);if(F.t==="object"){for(let $ in F.props)v(r,$,Au(F.props[$]));F.index&&(a={key:F.index.key,type:F.index.value});}continue}let h=m,S=D(h.value,n,t),B=He(S);if(A(t,m,S,n),h.computed){let O=Ce(D(h.key,n,t),t.schemes);au(e,h,xu(O,t),t),O.t==="literal"&&typeof O.value=="string"?(v(r,O.value,{type:B}),u.set(O.value,m),o.push(B)):O.t==="literal"&&typeof O.value=="number"?(v(r,String(O.value),{type:B}),u.set(String(O.value),m),o.push(B),s.push(B)):O.t==="string"?(i=true,o.push(B)):O.t==="number"&&(l=true,o.push(B),s.push(B));continue}let M=gn(h);M!==null&&(v(r,M,{type:B}),u.set(M,m),o.push(B),/^\d+$/.test(M)&&s.push(B));}i?a={key:"string",type:C(o)}:l&&(a={key:"number",type:C(s)});let p=c?{fromLiteral:true,hasSpread:true}:{fromLiteral:true};return a?{t:"object",props:r,index:{key:a.key,value:a.type},...p}:{t:"object",props:r,...p}}function ju(e,n,t){let r=[];for(let a of e.elements){if(!a)continue;let o=a;if(o.type==="SpreadElement"){let s=Ce(D(o.argument,n,t),t.schemes);s.t==="array"?r.push(s.items):s.t==="tuple"&&r.push(...s.elements);continue}r.push(He(D(o,n,t)));}return Ur(f.array(r.length?C(r):f.unknown))}function Ks(e,n,t,r){let a=Ce(n,r.schemes),o=e.elements,s=o.every(l=>l&&l.type!=="SpreadElement"),i=(l,c)=>l.type==="ArrayExpression"?Ks(l,c,t,r):De(l)?je(l,c,t,r.inference?{...r,sink:he()}:r,true):Ct(c,jn(l)?zn(l):void 0)?D(l,t,r):He(D(l,t,r));if(a.t==="tuple"&&s){let l=Ue(a),c=p=>l<0||p<l?a.elements[p]:a.elements[l],u=o.map((p,d)=>{let y=c(d);return y?i(p,y):He(D(p,t,r))});return A(r,e,{t:"tuple",elements:u,fromLiteral:true},t)}if(a.t==="union"&&s){let l=a.of.map(c=>Ce(c,r.schemes));if(l.some(c=>c.t==="tuple")){let c=(p,d)=>{if(p.t==="array")return p.items;if(p.t!=="tuple")return;let y=Ue(p);return y<0||d<y?p.elements[d]:p.elements[y]},u=o.map((p,d)=>{let y=l.map(m=>c(m,d)).filter(m=>m!==void 0);return y.length?i(p,C(y)):He(D(p,t,r))});return A(r,e,{t:"tuple",elements:u,fromLiteral:true},t)}}if(a.t==="array"){let l=[];for(let c of o){if(!c)continue;let u=c;if(u.type==="SpreadElement"){D(u.argument,t,r);continue}l.push(i(u,a.items));}return A(r,e,Ur(f.array(l.length?C(l):f.unknown)),t)}return ju(e,t,r)}function Iu(e,n,t){let r=I(e,t);if(r.t==="array")return r.items;if(r.t==="tuple"){let a=Ue(r);if(n>=r.elements.length||a>=0&&n>=a)return;let o=ke(f.index(r,f.literal(n)),t);return un(o)?void 0:o}if(r.t==="union"){let a=r.of.map(o=>Iu(o,n,t));return a.some(o=>o===void 0)?void 0:C(a)}}function Ay(e,n,t,r,a){let o=I(t,a.schemes);if(o.t!=="array"&&o.t!=="tuple"&&o.t!=="union")return false;let s=(l,c)=>l.t==="tuple"?l.elements[c]:l.t==="array"?l.items:void 0,i=false;return e.elements.forEach((l,c)=>{if(!l)return;let u=l;if(u.type==="SpreadElement")return;let p=Iu(o,c,a.schemes);if(!p)return;let d=s(n,c);if(!d||L(d,p,a.schemes))return;let y=a.sink.reported;je(u,p,r,a,false),a.sink.reported>y&&(i=true);}),i}function xs(e,n,t,r){if(e===null)return f.null;switch(typeof e){case "string":return f.string;case "number":return f.number;case "boolean":return f.boolean;case "object":break;default:return f.unknown}if(Array.isArray(e)){let s=e.map(i=>xs(i,n,t,r));return f.array(s.length?C(s):f.unknown)}let a=e;if(ast.isExprMarker(a)){let s;try{s=json.fromJson(a);}catch{return t.sink.report(b.unsupported(r,`'${ast.EXPR_MARKER}: ${String(w(a,ast.EXPR_MARKER))}'`)),f.unknown}let i=s;return Wc(i,r,t,()=>D(i,n,t))}let o={};for(let s of Object.keys(a))v(o,s,{type:xs(a[s],n,t,r)});return {t:"object",props:o}}function Fu(e,n){let t=I(e,n);return t.t==="object"?Object.keys(t.props).length>0||t.index!==void 0:t.t==="intersection"||Cs(t)?true:t.t==="array"?t.items.t!=="any"&&t.items.t!=="unknown":t.t==="union"?t.of.some(r=>Fu(r,n)):false}function My(e,n,t,r,a){let o=he(),s=je(e,n,t,{...r,sink:o},true);if(!(o.hasErrors()&&a)){for(let i of o.all)r.sink.report(i);return o.hasErrors()?n:s}}var xy=(e,n)=>({...e,typeAnnotation:n}),Py=(e,n)=>({...e,returnType:n}),Dy=(e,n)=>({type:"TSAsExpression",expression:e,typeAnnotation:n});function zs(e,n){return e.get(n)?.type}function Cy(e,n){return e.get(n)?.scope}function Ry(e,n){let t=e.get(n)?.type;return t?Pe(t,[])?.completions??[]:[]}function jy(e,n){let t=e.get(n)?.scope;return t?[...Fo(t)].map(([r,a])=>({key:r,type:a,optional:false})):[]}var Iy=e=>e.type==="ArrowFunctionExpression"||e.type==="FunctionExpression"||e.type==="FunctionDeclaration";function Fy(e){if(!e||e.computed)return;let n=e.key;if(n?.type==="Identifier")return n.name;if(n?.type==="Literal"&&typeof n.value=="string")return n.value}function $a(e,n,t,r={}){let a=e[n],o=e[n+1];if(!(!a||!o))switch(o.type){case "ArrowFunctionExpression":case "FunctionExpression":return o.body===a?o.returnType:void 0;case "VariableDeclarator":return o.init===a?o.id?.typeAnnotation:void 0;case "TSAsExpression":return o.typeAnnotation;case "ReturnStatement":return e.slice(n+1).find(Iy)?.returnType;case "CallExpression":{let s=(o.arguments??[]).indexOf(a);if(s<0)return;let i=zs(t,o.callee);return i?.t==="fn"?i.params?.[s]?.type:void 0}case "Property":{if(o.value!==a||e[n+2]?.type!=="ObjectExpression")return;let i=$a(e,n+2,t,r),l=Fy(o);return !i||!l?void 0:Pe(i,[l],r)?.type}case "ArrayExpression":{let s=$a(e,n+1,t,r);return s?Pe(s,["[]"],r)?.type:void 0}case "BinaryExpression":{let s=pr.get(o.operator);if(!s)return;if(s.category==="arithmetic"||s.category==="bitwise")return f.number;let i=o.left===a?o.right:o.left,l=zs(t,i);return l&&l.t!=="any"&&l.t!=="unknown"?l:void 0}case "LogicalExpression":return $a(e,n+1,t,r);case "UnaryExpression":{let s=o.operator;return s==="-"||s==="+"||s==="~"?f.number:void 0}default:return}}function $y(e,n){return e.filter(t=>t.node===n)}function Uy(){let e=new WeakMap;return {stamp:(n,t)=>(e.set(n,t),n),get:n=>e.get(n)}}var Ky=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);function _s(e,n,t,r){if(ast.isExprMarker(e)){let a=r.island?r.island(e,n):ast.fromExprMarker(e);return t.stamp(a,n)}return Array.isArray(e)?t.stamp(Vn__namespace.arrayExpression(e.map((a,o)=>_s(a,r.child(n,o),t,r))),n):Ky(e)?t.stamp(Vn__namespace.objectExpression(Object.entries(e).map(([a,o])=>{let s=r.child(n,a),i=t.stamp(Vn__namespace.literal(a),s);return t.stamp(Vn__namespace.property(i,_s(o,s,t,r),false,false),s)})),n):t.stamp(Vn__namespace.literal(e),n)}function zy(e){let n=new WeakMap,t=[e];for(;t.length>0;){let r=t.pop();ast.forEachChild(r,a=>{n.set(a,r),t.push(a);});}return n}function _y(e,n,t,r){let a=zy(e),o=new Map,s=l=>{let c=o.get(l);return c===void 0&&(c=languageService.createPositionMap(l),o.set(l,c)),c},i=l=>{let c=l;for(;c!==void 0;){let u=t.get(c);if(u!==void 0)return u;c=a.get(c);}return r.fallback};return n.map(l=>{let c=i(l.node),u=r.textOf?.(c),p=u===void 0?void 0:Vu(s(u),l.node.loc);return {diagnostic:l,anchor:c,...p?{span:p}:{}}})}function Vu(e,n){if(!n?.start)return;let t=o=>e.offsetAt({line:o.line-1,column:o.column}),r=t(n.start),a=n.end?t(n.end):r;return {from:r,to:a<r?r:a}}function qy(e,n){return Vu(languageService.createPositionMap(e),n)}exports.BINARY_OP=pr;exports.BINARY_OPS=Xo;exports.DEFAULT_TYPE_LIMITS=Fr;exports.FUNCTION_KINDS=il;exports.INSTANTIATION_COUNT_LIMIT=Ku;exports.INSTANTIATION_DEPTH_LIMIT=Uu;exports.InferencePriority=me;exports.InstantiationLimitError=Jn;exports.LOGICAL_OPS=Xd;exports.TYPE_EVAL_DEPTH_LIMIT=Wu;exports.TypeEvalLimitError=ln;exports.UNARY_OPS=dl;exports.UnionTooComplexError=cn;exports.anchorDiagnostics=_y;exports.annotate=xy;exports.annotateReturn=Py;exports.apparentType=I;exports.asExpression=Dy;exports.asLiteralOrigin=Ur;exports.baseLiteralType=$e;exports.binaryOpsProducing=Hd;exports.bindTypeParams=Yn;exports.calleeAllowlist=Wo;exports.capabilityNodes=Lo;exports.check=Dc;exports.childScope=hn;exports.collectBindings=sf;exports.collectMutations=es;exports.collectReferences=rs;exports.collectUnused=Zo;exports.comparable=Ye;exports.componentProps=pm;exports.componentPropsOf=Ds;exports.configureTypeLimits=Wa;exports.contextualTypeAt=$a;exports.contravariantInference=hi;exports.covariantInference=yi;exports.createAnchors=Uy;exports.createEnv=Dd;exports.createInferences=wt;exports.createSink=he;exports.diag=b;exports.diagnosticsAt=$y;exports.discover=Pe;exports.equals=Ze;exports.erasedSignature=Yt;exports.expand1=fe;exports.extractModuleType=Xf;exports.flagAt=ei;exports.format=q;exports.formatTypeArgs=Yp;exports.formatTypeDiff=ar;exports.freeVars=se;exports.fromCapability=Gd;exports.groundVars=rt;exports.guard=Vo;exports.guardsFromCompiled=sa;exports.inferFromCandidates=Si;exports.inferTypes=fn;exports.inferredBindings=Zt;exports.inferredTypes=Gr;exports.instantiateInContextOf=mo;exports.instantiateLoose=er;exports.isMissingType=un;exports.isNumericLiteralName=Wn;exports.isObjectOrArrayLiteral=Wr;exports.isScheme=de;exports.isSerializable=at;exports.isVariadicTuple=ni;exports.join=Ri;exports.joinAll=_p;exports.lookup=we;exports.lowerValue=_s;exports.makeDiagnostic=ve;exports.maxArgs=Go;exports.maxCallNesting=Ko;exports.maxDepth=_o;exports.maxFunctionNesting=Uo;exports.maxNestingOf=oa;exports.maxNodes=qo;exports.memberCompletions=Ry;exports.memberDepth=zo;exports.missingType=Xn;exports.normalizeUnion=C;exports.opResultSchema=Ho;exports.ownProp=Be;exports.readonlyMember=vo;exports.renameTypeParams=to;exports.resetInstantiationCount=Ka;exports.resetTypeLimits=Ua;exports.resolveConditional=Ie;exports.resolveNamed=$d;exports.resolveOp=ke;exports.resolveScheme=Vd;exports.resolveTypeNamesIn=Rd;exports.resolveTypeOp=Y;exports.resolvesToEnvironment=Pd;exports.restIndex=Ue;exports.restTypeAtPosition=Bt;exports.resultType=Jo;exports.rootScope=el;exports.s=f;exports.sameSymbol=ts;exports.sampleValue=Jp;exports.scopeAt=Cy;exports.scopeCompletions=jy;exports.silentNever=Un;exports.spanOf=qy;exports.substitute=j;exports.subtype=L;exports.typeAt=zs;exports.typeAtPosition=Tt;exports.typeDiff=tr;exports.typeFeatures=No;exports.typeLimits=We;exports.typeNameOf=Ii;exports.typeNeedsParens=Fi;exports.typeParamArity=pn;exports.unaryOpsProducing=Qd;exports.version=ad;exports.visibleNames=Fo;exports.widen=He;exports.widenInferred=ao;exports.widenLiteral=En;exports.widenOrigin=Qe;exports.widenType=nt;exports.withUndefined=Ne;exports.withoutUndefined=Oe;
|